{"_id":"@enc-protocol/personal-cli","name":"@enc-protocol/personal-cli","description":"Per-app SDK for the `personal` app on ENC Protocol. Enclaves: Personal, Group.","dist-tags":{"latest":"0.4.2","local":"0.3.2-local"},"versions":{"0.1.0":{"name":"@enc-protocol/personal-cli","version":"0.1.0","type":"module","description":"ENC Protocol per-app SDK + skill for the \"personal\" app. Enclaves: Personal,Group.","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","personal","sdk","skill"],"license":"MIT","publishConfig":{"registry":"https://npm-registry.ocrybit.workers.dev/"},"readme":"ERROR: No README data found!","_id":"@enc-protocol/personal-cli@0.1.0","_nodeVersion":"26.1.0","_npmVersion":"11.13.0","dist":{"tarball":"https://npm-registry.ocrybit.workers.dev/@enc-protocol/personal-cli/-/@enc-protocol/personal-cli-0.1.0.tgz","shasum":"815d08f314593f141c64bdb6c0dea890c1df2521","integrity":"sha512-kT12xAmteEjjztNJ8pqC60U4fgVbIEIlZeEhrlZ4TeQxIf93DHsEwUSgHEzcehQIe0E9uYpYQWmV3uherDZ6fA=="}},"0.1.1":{"name":"@enc-protocol/personal-cli","version":"0.1.1","type":"module","description":"ENC Protocol per-app SDK + skill for the \"personal\" app. Enclaves: Personal,Group.","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","personal","sdk","skill"],"license":"MIT","publishConfig":{"registry":"https://npm-registry.ocrybit.workers.dev/"},"readme":"# @enc-protocol/personal-cli\n\nPer-app SDK for the `personal` app on ENC Protocol. Enclaves: Personal, Group.\n\n> Auto-generated by `lib/codegen/readme-codegen.mjs` from `apps/personal/{app,schema}.json`. Do not hand-edit — regenerate via `enc gen readme personal`.\n\n## Install\n\n```bash\necho \"@enc-protocol:registry=https://npm-registry.ocrybit.workers.dev/\" >> .npmrc\nnpm install @enc-protocol/personal-cli\n```\n\n## Quick example\n\n```js\nimport { PersonalSdk } from '@enc-protocol/personal-cli'\n\nconst sdk = new PersonalSdk({ mode: 'cf', nodeUrl: process.env.NODE_URL })\nawait sdk.init()\nawait sdk.submitPublic({\"draft\":\"example\"})\nconst events = await sdk.queryPublic()\n```\n\n## API reference\n\n### `new PersonalSdk(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 2 enclaves (Personal, Group), wire dataview, mint cf enclaves if needed.\n\n### Write methods\n\n| Method | Data type | Resolves to | Encrypted | Ops | Operators |\n|--------|-----------|-------------|-----------|-----|-----------|\n| `submitPublic(args)` | `public` | `Personal.public` |  | CDU | OWNER \\| dataview |\n| `submitPrivate(args)` | `private` | `Personal.private` | ✓ | CDU | OWNER |\n\n### Read methods\n\n| Method | Read | Source | Fields |\n|--------|------|--------|--------|\n| `queryPublic()` | `public` | `Personal.public` | `body`, `from`, `trailing` |\n| `queryProfiles()` | `profiles` | *dataview (cross_enclave)* | *all* |\n| `queryPrivate()` | `private` | `Personal.private` | `body`, `from`, `trailing` |\n| `queryNotices()` | `notices` | *dataview (cross_enclave)* | `greeting`, `from`, `trailing` |\n\n### Encryption\n\nData types `private` 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 EncryptedPersonalSdk extends PersonalSdk {\n  async _encrypt(dataType, args) {\n    // produce ciphertext for `args`\n    return { ciphertext: /* ... */ }\n  }\n}\n```\n\n## Composition\n\n- **Enclaves**: `Personal`, `Group`\n- **tableMap**: `public` → `public`, `private` → `private`, `notices` → `notice`\n- **encrypt**: `private`\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 personal`)\n- `@enc-protocol/cli-sdk-base` — base class (`AppSdk`, `AppClient`, `DataView`)\n","readmeFilename":"README.md","_id":"@enc-protocol/personal-cli@0.1.1","_nodeVersion":"26.1.0","_npmVersion":"11.13.0","dist":{"tarball":"https://npm-registry.ocrybit.workers.dev/@enc-protocol/personal-cli/-/@enc-protocol/personal-cli-0.1.1.tgz","shasum":"b85d0b22e114f49d2b991188c2226cc1b78fd616","integrity":"sha512-py5zh24wfrNCwbl8r7GFfRV6yHCnouizels7X2YnFIfCW0tFG/GJxjuy73PsrTQMVRpbzE7JdsFlNaQDFRhGXw=="}},"0.1.2":{"name":"@enc-protocol/personal-cli","version":"0.1.2","type":"module","description":"ENC Protocol per-app SDK for the \"personal\" app (typed methods, encryption hook). Enclaves: Personal,Group. For the Claude Code skill, use @enc-protocol/skill-personal (or `enc skill add personal`).","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","personal","sdk","cli"],"license":"MIT","publishConfig":{"registry":"https://npm-registry.ocrybit.workers.dev/"},"readme":"# @enc-protocol/personal-cli\n\nPer-app SDK for the `personal` app on ENC Protocol. Enclaves: Personal, Group.\n\n> Auto-generated by `lib/codegen/readme-codegen.mjs` from `apps/personal/{app,schema}.json`. Do not hand-edit — regenerate via `enc gen readme personal`.\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/personal.md)\nenc skill add personal\n```\n\nThe skill is the recommended consumption surface for Claude Code — adds an `/enc personal` slash command. The skill package is published as `@enc-protocol/skill-personal`.\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/personal-cli\n```\n\n## Quick example\n\n```js\nimport { PersonalSdk } from '@enc-protocol/personal-cli'\n\nconst sdk = new PersonalSdk({ mode: 'cf', nodeUrl: process.env.NODE_URL })\nawait sdk.init()\nawait sdk.submitPublic({\"draft\":\"example\"})\nconst events = await sdk.queryPublic()\n```\n\n## API reference\n\n### `new PersonalSdk(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 2 enclaves (Personal, Group), wire dataview, mint cf enclaves if needed.\n\n### Write methods\n\n| Method | Data type | Resolves to | Encrypted | Ops | Operators |\n|--------|-----------|-------------|-----------|-----|-----------|\n| `submitPublic(args)` | `public` | `Personal.public` |  | CDU | OWNER \\| dataview |\n| `submitPrivate(args)` | `private` | `Personal.private` | ✓ | CDU | OWNER |\n\n### Read methods\n\n| Method | Read | Source | Fields |\n|--------|------|--------|--------|\n| `queryPublic()` | `public` | `Personal.public` | `body`, `from`, `trailing` |\n| `queryProfiles()` | `profiles` | *dataview (cross_enclave)* | *all* |\n| `queryPrivate()` | `private` | `Personal.private` | `body`, `from`, `trailing` |\n| `queryNotices()` | `notices` | *dataview (cross_enclave)* | `greeting`, `from`, `trailing` |\n\n### Encryption\n\nData types `private` 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 EncryptedPersonalSdk extends PersonalSdk {\n  async _encrypt(dataType, args) {\n    // produce ciphertext for `args`\n    return { ciphertext: /* ... */ }\n  }\n}\n```\n\n## Composition\n\n- **Enclaves**: `Personal`, `Group`\n- **tableMap**: `public` → `public`, `private` → `private`, `notices` → `notice`\n- **encrypt**: `private`\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 personal`)\n- `@enc-protocol/cli-sdk-base` — base class (`AppSdk`, `AppClient`, `DataView`)\n","readmeFilename":"README.md","_id":"@enc-protocol/personal-cli@0.1.2","_nodeVersion":"26.1.0","_npmVersion":"11.13.0","dist":{"tarball":"https://npm-registry.ocrybit.workers.dev/@enc-protocol/personal-cli/-/@enc-protocol/personal-cli-0.1.2.tgz","shasum":"a72648a6f2457ec9d1e589fc005b8b08e6cc3d85","integrity":"sha512-U7N+XmXc4rddMyh9cAlTwpPVB41pV4eEITqZ2H/7/3QgKioJWy8UXwsuRjtjR3/T+NU/mvD6uytju0txGsfyYg=="}},"0.2.0":{"name":"@enc-protocol/personal-cli","version":"0.2.0","type":"module","description":"ENC Protocol per-app SDK for the \"personal\" app — public + private posts. Enclaves: Personal, Group. Encrypted: private.","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","personal","sdk","cli"],"license":"MIT","publishConfig":{"registry":"https://npm-registry.ocrybit.workers.dev/"},"readme":"# @enc-protocol/personal-cli\n\nPer-app SDK for the `personal` app on ENC Protocol. Enclaves: Personal, Group.\n\n> Auto-generated by `lib/codegen/readme-codegen.mjs` from `apps/personal/{app,schema}.json`. Do not hand-edit — regenerate via `enc gen readme personal`.\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/personal.md)\nenc skill add personal\n```\n\nThe skill is the recommended consumption surface for Claude Code — adds an `/enc personal` slash command. The skill package is published as `@enc-protocol/skill-personal`.\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/personal-cli\n```\n\n## Quick example\n\n```js\nimport { PersonalSdk } from '@enc-protocol/personal-cli'\n\nconst sdk = new PersonalSdk({ mode: 'cf', nodeUrl: process.env.NODE_URL })\nawait sdk.init()\nawait sdk.submitPublic({\"draft\":\"example\"})\nconst events = await sdk.queryPublic()\n```\n\n## API reference\n\n### `new PersonalSdk(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 2 enclaves (Personal, Group), wire dataview, mint cf enclaves if needed.\n\n### Write methods\n\n| Method | Data type | Resolves to | Encrypted | Ops | Operators |\n|--------|-----------|-------------|-----------|-----|-----------|\n| `submitPublic(args)` | `public` | `Personal.public` |  | CDU | OWNER \\| dataview |\n| `submitPrivate(args)` | `private` | `Personal.private` | ✓ | CDU | OWNER |\n\n### Read methods\n\n| Method | Read | Source | Fields |\n|--------|------|--------|--------|\n| `queryPublic()` | `public` | `Personal.public` | `body`, `from`, `trailing` |\n| `queryProfiles()` | `profiles` | *dataview (cross_enclave)* | *all* |\n| `queryPrivate()` | `private` | `Personal.private` | `body`, `from`, `trailing` |\n| `queryNotices()` | `notices` | *dataview (cross_enclave)* | `greeting`, `from`, `trailing` |\n\n### Encryption\n\nData types `private` 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 EncryptedPersonalSdk extends PersonalSdk {\n  async _encrypt(dataType, args) {\n    // produce ciphertext for `args`\n    return { ciphertext: /* ... */ }\n  }\n}\n```\n\n## Composition\n\n- **Enclaves**: `Personal`, `Group`\n- **tableMap**: `public` → `public`, `private` → `private`, `notices` → `notice`\n- **encrypt**: `private`\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 personal`)\n- `@enc-protocol/cli-sdk-base` — base class (`AppSdk`, `AppClient`, `DataView`)\n","readmeFilename":"README.md","_id":"@enc-protocol/personal-cli@0.2.0","_nodeVersion":"26.1.0","_npmVersion":"11.13.0","dist":{"tarball":"https://npm-registry.ocrybit.workers.dev/@enc-protocol/personal-cli/-/@enc-protocol/personal-cli-0.2.0.tgz","shasum":"245f040c801cac0c5ea98351308b9be9e37d9c2a","integrity":"sha512-KeIkF1SECMx71jbAQWfvQUDBieQmZT1NJjDwjxjWN/lYG3WL6yklWx8/eAC6zpN6QmAVDyudJFlNemBXdFBBrw=="}},"0.3.0":{"name":"@enc-protocol/personal-cli","version":"0.3.0","type":"module","description":"ENC Protocol per-app SDK for the \"personal\" app — public + private posts. Enclaves: Personal, Group. Encrypted: private.","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","personal","sdk","cli"],"license":"MIT","publishConfig":{"registry":"https://npm-registry.ocrybit.workers.dev/"},"readme":"# @enc-protocol/personal-cli\n\nPer-app SDK for the `personal` app on ENC Protocol. Enclaves: Personal, Group.\n\n> Auto-generated by `lib/codegen/readme-codegen.mjs` from `apps/personal/{app,schema}.json`. Do not hand-edit — regenerate via `enc gen readme personal`.\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/personal.md)\nenc skill add personal\n```\n\nThe skill is the recommended consumption surface for Claude Code — adds an `/enc personal` slash command. The skill package is published as `@enc-protocol/skill-personal`.\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/personal-cli\n```\n\n## Quick example\n\n```js\nimport { PersonalSdk } from '@enc-protocol/personal-cli'\n\nconst sdk = new PersonalSdk({ mode: 'cf', nodeUrl: process.env.NODE_URL })\nawait sdk.init()\nawait sdk.submitPublic({\"draft\":\"example\"})\nconst events = await sdk.queryPublic()\n```\n\n## API reference\n\n### `new PersonalSdk(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 2 enclaves (Personal, Group), wire dataview, mint cf enclaves if needed.\n\n### Write methods\n\n| Method | Data type | Resolves to | Encrypted | Ops | Operators |\n|--------|-----------|-------------|-----------|-----|-----------|\n| `submitPublic(args)` | `public` | `Personal.public` |  | CDU | OWNER \\| dataview |\n| `submitPrivate(args)` | `private` | `Personal.private` | ✓ | CDU | OWNER |\n\n### Read methods\n\n| Method | Read | Source | Fields |\n|--------|------|--------|--------|\n| `queryPublic()` | `public` | `Personal.public` | `body`, `from`, `trailing` |\n| `queryProfiles()` | `profiles` | *dataview (cross_enclave)* | *all* |\n| `queryPrivate()` | `private` | `Personal.private` | `body`, `from`, `trailing` |\n| `queryNotices()` | `notices` | *dataview (cross_enclave)* | `greeting`, `from`, `trailing` |\n\n### Encryption\n\nData types `private` 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 EncryptedPersonalSdk extends PersonalSdk {\n  async _encrypt(dataType, args) {\n    // produce ciphertext for `args`\n    return { ciphertext: /* ... */ }\n  }\n}\n```\n\n## Composition\n\n- **Enclaves**: `Personal`, `Group`\n- **tableMap**: `public` → `public`, `private` → `private`, `notices` → `notice`\n- **encrypt**: `private`\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 personal`)\n- `@enc-protocol/cli-sdk-base` — base class (`AppSdk`, `AppClient`, `DataView`)\n","readmeFilename":"README.md","_id":"@enc-protocol/personal-cli@0.3.0","_nodeVersion":"26.1.0","_npmVersion":"11.13.0","dist":{"tarball":"https://npm-registry.ocrybit.workers.dev/@enc-protocol/personal-cli/-/@enc-protocol/personal-cli-0.3.0.tgz","shasum":"74f77fdb3cb2ff5d2a0ec1389d36b4570273193f","integrity":"sha512-QylSlsLWyQZvFfVlq2/W0Xdrc1ACT/grTz5ga4+EGfRhL88iv8F0pdl9LeCMKkRRLfd8iSNMFCdc9td9H3TG/A=="}},"0.3.1":{"name":"@enc-protocol/personal-cli","version":"0.3.1","type":"module","description":"ENC Protocol per-app SDK for the \"personal\" app — public + private posts. Enclaves: Personal, Group. Encrypted: private.","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","personal","sdk","cli"],"license":"MIT","publishConfig":{"registry":"https://npm-registry.ocrybit.workers.dev/"},"readme":"# @enc-protocol/personal-cli\n\nPer-app SDK for the `personal` app on ENC Protocol. Enclaves: Personal, Group.\n\n> Auto-generated by `lib/codegen/readme-codegen.mjs` from `apps/personal/{app,schema}.json`. Do not hand-edit — regenerate via `enc gen readme personal`.\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/personal.md)\nenc skill add personal\n```\n\nThe skill is the recommended consumption surface for Claude Code — adds an `/enc personal` slash command. The skill package is published as `@enc-protocol/skill-personal`.\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/personal-cli\n```\n\n## Quick example\n\n```js\nimport { PersonalSdk } from '@enc-protocol/personal-cli'\n\nconst sdk = new PersonalSdk({ mode: 'cf', nodeUrl: process.env.NODE_URL })\nawait sdk.init()\nawait sdk.submitPublic({\"draft\":\"example\"})\nconst events = await sdk.queryPublic()\n```\n\n## API reference\n\n### `new PersonalSdk(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 2 enclaves (Personal, Group), wire dataview, mint cf enclaves if needed.\n\n### Write methods\n\n| Method | Data type | Resolves to | Encrypted | Ops | Operators |\n|--------|-----------|-------------|-----------|-----|-----------|\n| `submitPublic(args)` | `public` | `Personal.public` |  | CDU | OWNER \\| dataview |\n| `submitPrivate(args)` | `private` | `Personal.private` | ✓ | CDU | OWNER |\n\n### Read methods\n\n| Method | Read | Source | Fields |\n|--------|------|--------|--------|\n| `queryPublic()` | `public` | `Personal.public` | `body`, `from`, `trailing` |\n| `queryProfiles()` | `profiles` | *dataview (cross_enclave)* | *all* |\n| `queryPrivate()` | `private` | `Personal.private` | `body`, `from`, `trailing` |\n| `queryNotices()` | `notices` | *dataview (cross_enclave)* | `greeting`, `from`, `trailing` |\n\n### Encryption\n\nData types `private` 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 EncryptedPersonalSdk extends PersonalSdk {\n  async _encrypt(dataType, args) {\n    // produce ciphertext for `args`\n    return { ciphertext: /* ... */ }\n  }\n}\n```\n\n## Composition\n\n- **Enclaves**: `Personal`, `Group`\n- **tableMap**: `public` → `public`, `private` → `private`, `notices` → `notice`\n- **encrypt**: `private`\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 personal`)\n- `@enc-protocol/cli-sdk-base` — base class (`AppSdk`, `AppClient`, `DataView`)\n","readmeFilename":"README.md","_id":"@enc-protocol/personal-cli@0.3.1","_nodeVersion":"26.1.0","_npmVersion":"11.13.0","dist":{"tarball":"https://npm-registry.ocrybit.workers.dev/@enc-protocol/personal-cli/-/@enc-protocol/personal-cli-0.3.1.tgz","shasum":"ddaa7dae2ca17ce7b8add1ad16b54722ece2489e","integrity":"sha512-TxnO5UXAfE6z41cnyto4hgJtR6qTkMSu4j14Yr5Vl8RYHS1pCu20qx5VRAahc6yZR6og6PiCDLchpBY+A9QSpA=="}},"0.4.1":{"name":"@enc-protocol/personal-cli","version":"0.4.1","type":"module","description":"ENC Protocol per-app SDK for the \"personal\" app — public + private posts. Enclaves: Personal, Group. Encrypted: private.","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","personal","sdk","cli"],"license":"MIT","publishConfig":{"registry":"https://npm-registry.ocrybit.workers.dev/"},"readme":"# @enc-protocol/personal-cli\n\nPer-app SDK for the `personal` app on ENC Protocol. Enclaves: Personal, Group.\n\n> Auto-generated by `lib/codegen/readme-codegen.mjs` from `apps/personal/{app,schema}.json`. Do not hand-edit — regenerate via `enc gen readme personal`.\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/personal.md)\nenc skill add personal\n```\n\nThe skill is the recommended consumption surface for Claude Code — adds an `/enc personal` slash command. The skill package is published as `@enc-protocol/skill-personal`.\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/personal-cli\n```\n\n## Quick example\n\n```js\nimport { PersonalSdk } from '@enc-protocol/personal-cli'\n\nconst sdk = new PersonalSdk({ mode: 'cf', nodeUrl: process.env.NODE_URL })\nawait sdk.init()\nawait sdk.submitPublic({\"draft\":\"example\"})\nconst events = await sdk.queryPublic()\n```\n\n## API reference\n\n### `new PersonalSdk(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 2 enclaves (Personal, Group), wire dataview, mint cf enclaves if needed.\n\n### Write methods\n\n| Method | Data type | Resolves to | Encrypted | Ops | Operators |\n|--------|-----------|-------------|-----------|-----|-----------|\n| `submitPublic(args)` | `public` | `Personal.public` |  | CDU | OWNER \\| dataview |\n| `submitPrivate(args)` | `private` | `Personal.private` | ✓ | CDU | OWNER |\n\n### Read methods\n\n| Method | Read | Source | Fields |\n|--------|------|--------|--------|\n| `queryPublic()` | `public` | `Personal.public` | `body`, `from`, `trailing` |\n| `queryProfiles()` | `profiles` | *dataview (cross_enclave)* | *all* |\n| `queryPrivate()` | `private` | `Personal.private` | `body`, `from`, `trailing` |\n| `queryNotices()` | `notices` | *dataview (cross_enclave)* | `greeting`, `from`, `trailing` |\n\n### Encryption\n\nData types `private`, `notice` 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 EncryptedPersonalSdk extends PersonalSdk {\n  async _encrypt(dataType, args) {\n    // produce ciphertext for `args`\n    return { ciphertext: /* ... */ }\n  }\n}\n```\n\n## Composition\n\n- **Enclaves**: `Personal`, `Group`\n- **tableMap**: `public` → `public`, `private` → `private`, `notices` → `notice`\n- **encrypt**: `private`, `notice`\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 personal`)\n- `@enc-protocol/cli-sdk-base` — base class (`AppSdk`, `AppClient`, `DataView`)\n","readmeFilename":"README.md","_id":"@enc-protocol/personal-cli@0.4.1","_nodeVersion":"26.1.0","_npmVersion":"11.13.0","dist":{"tarball":"https://npm-registry.ocrybit.workers.dev/@enc-protocol/personal-cli/-/@enc-protocol/personal-cli-0.4.1.tgz","shasum":"d765e35323ba0502e9005c47ccc5c23de454eaeb","integrity":"sha512-SQydxpyvQ4XTcIGSr4nG8b3HQj2LShn6yl92c8iFEGTTrd9IWhaKA+fWSTDBcU593hFFRyr1H7+jb5/zeblqQA=="}},"0.4.2":{"name":"@enc-protocol/personal-cli","version":"0.4.2","type":"module","description":"ENC Protocol per-app SDK for the \"personal\" app — public + private posts. Enclaves: Personal, Group. Encrypted: private.","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","personal","sdk","cli"],"license":"MIT","publishConfig":{"registry":"https://npm-registry.ocrybit.workers.dev/"},"readme":"# @enc-protocol/personal-cli\n\nPer-app SDK for the `personal` app on ENC Protocol. Enclaves: Personal, Group.\n\n> Auto-generated by `lib/codegen/readme-codegen.mjs` from `apps/personal/{app,schema}.json`. Do not hand-edit — regenerate via `enc gen readme personal`.\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/personal.md)\nenc skill add personal\n```\n\nThe skill is the recommended consumption surface for Claude Code — adds an `/enc personal` slash command. The skill package is published as `@enc-protocol/skill-personal`.\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/personal-cli\n```\n\n## Quick example\n\n```js\nimport { PersonalSdk } from '@enc-protocol/personal-cli'\n\nconst sdk = new PersonalSdk({ mode: 'cf', nodeUrl: process.env.NODE_URL })\nawait sdk.init()\nawait sdk.submitPublic({\"draft\":\"example\"})\nconst events = await sdk.queryPublic()\n```\n\n## API reference\n\n### `new PersonalSdk(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 2 enclaves (Personal, Group), wire dataview, mint cf enclaves if needed.\n\n### Write methods\n\n| Method | Data type | Resolves to | Encrypted | Ops | Operators |\n|--------|-----------|-------------|-----------|-----|-----------|\n| `submitPublic(args)` | `public` | `Personal.public` |  | CDU | OWNER \\| dataview |\n| `submitPrivate(args)` | `private` | `Personal.private` | ✓ | CDU | OWNER |\n\n### Read methods\n\n| Method | Read | Source | Fields |\n|--------|------|--------|--------|\n| `queryPublic()` | `public` | `Personal.public` | `body`, `from`, `trailing` |\n| `queryProfiles()` | `profiles` | *dataview (cross_enclave)* | *all* |\n| `queryPrivate()` | `private` | `Personal.private` | `body`, `from`, `trailing` |\n| `queryNotices()` | `notices` | *dataview (cross_enclave)* | `greeting`, `from`, `trailing` |\n\n### Encryption\n\nData types `private`, `notice` 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 EncryptedPersonalSdk extends PersonalSdk {\n  async _encrypt(dataType, args) {\n    // produce ciphertext for `args`\n    return { ciphertext: /* ... */ }\n  }\n}\n```\n\n## Composition\n\n- **Enclaves**: `Personal`, `Group`\n- **tableMap**: `public` → `public`, `private` → `private`, `notices` → `notice`\n- **encrypt**: `private`, `notice`\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 personal`)\n- `@enc-protocol/cli-sdk-base` — base class (`AppSdk`, `AppClient`, `DataView`)\n","readmeFilename":"README.md","_id":"@enc-protocol/personal-cli@0.4.2","_nodeVersion":"26.1.0","_npmVersion":"11.13.0","dist":{"tarball":"https://npm-registry.ocrybit.workers.dev/@enc-protocol/personal-cli/-/@enc-protocol/personal-cli-0.4.2.tgz","shasum":"bc0cfa37dcf90838594e14374b6f751e5cdccc03","integrity":"sha512-LXdPUclg7WDGzbIVpnCjwwdUKpF7R/4J5dgwZg82GZ5uE0eqBj4IbRTX/j1i0UDi8kevxOsTEr8G/A+iCJmMIA=="}},"0.3.2-local":{"name":"@enc-protocol/personal-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/personal-cli\n\nPer-app SDK for the `personal` app on ENC Protocol. Enclaves: Personal, Group.\n\n> Auto-generated by `lib/codegen/readme-codegen.mjs` from `apps/personal/{app,schema}.json`. Do not hand-edit — regenerate via `enc gen readme personal`.\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/personal.md)\nenc skill add personal\n```\n\nThe skill is the recommended consumption surface for Claude Code — adds an `/enc personal` slash command. The skill package is published as `@enc-protocol/skill-personal`.\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/personal-cli\n```\n\n## Quick example\n\n```js\nimport { PersonalSdk } from '@enc-protocol/personal-cli'\n\nconst sdk = new PersonalSdk({ mode: 'cf', nodeUrl: process.env.NODE_URL })\nawait sdk.init()\nawait sdk.submitPublic({\"draft\":\"example\"})\nconst events = await sdk.queryPublic()\n```\n\n## API reference\n\n### `new PersonalSdk(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 2 enclaves (Personal, Group), wire dataview, mint cf enclaves if needed.\n\n### Write methods\n\n| Method | Data type | Resolves to | Encrypted | Ops | Operators |\n|--------|-----------|-------------|-----------|-----|-----------|\n| `submitPublic(args)` | `public` | `Personal.public` |  | CDU | OWNER \\| dataview |\n| `submitPrivate(args)` | `private` | `Personal.private` | ✓ | CDU | OWNER |\n\n### Read methods\n\n| Method | Read | Source | Fields |\n|--------|------|--------|--------|\n| `queryPublic()` | `public` | `Personal.public` | `body`, `from`, `trailing` |\n| `queryProfiles()` | `profiles` | *dataview (cross_enclave)* | *all* |\n| `queryPrivate()` | `private` | `Personal.private` | `body`, `from`, `trailing` |\n| `queryNotices()` | `notices` | *dataview (cross_enclave)* | `greeting`, `from`, `trailing` |\n\n### Encryption\n\nData types `private` 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 EncryptedPersonalSdk extends PersonalSdk {\n  async _encrypt(dataType, args) {\n    // produce ciphertext for `args`\n    return { ciphertext: /* ... */ }\n  }\n}\n```\n\n## Composition\n\n- **Enclaves**: `Personal`, `Group`\n- **tableMap**: `public` → `public`, `private` → `private`, `notices` → `notice`\n- **encrypt**: `private`\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 personal`)\n- `@enc-protocol/cli-sdk-base` — base class (`AppSdk`, `AppClient`, `DataView`)\n","readmeFilename":"README.md","gitHead":"9d8f216d0d69913d9f915ddcdc914e183a2ea52a","_id":"@enc-protocol/personal-cli@0.3.2-local","description":"Per-app SDK for the `personal` app on ENC Protocol. Enclaves: Personal, Group.","_nodeVersion":"26.1.0","_npmVersion":"11.13.0","dist":{"tarball":"https://npm-registry.ocrybit.workers.dev/@enc-protocol/personal-cli/-/@enc-protocol/personal-cli-0.3.2-local.tgz","shasum":"74985c7b19cc1ae5c0bb347b98b88b190731fb8b","integrity":"sha512-fDvVTNxU1z5vaZP6iaAR/6M7+my4hM/2cQ2dZp6BhKwEiaCu1bt5e6KRjqIPtmMMefsBYX+bWtiGsFY1X8RnHA=="}}},"time":{"created":"2026-05-14T14:59:29.614Z","modified":"2026-06-12T21:35:44.690Z","0.1.0":"2026-05-14T14:59:29.614Z","0.1.1":"2026-05-14T15:08:22.555Z","0.1.2":"2026-05-14T15:18:35.648Z","0.2.0":"2026-05-14T16:18:56.510Z","0.3.0":"2026-05-15T19:19:17.235Z","0.3.1":"2026-05-15T19:53:52.080Z","0.4.1":"2026-05-19T02:59:34.496Z","0.4.2":"2026-05-19T17:59:46.851Z","0.3.2-local":"2026-06-12T21:35:44.690Z"},"readme":"# @enc-protocol/personal-cli\n\nPer-app SDK for the `personal` app on ENC Protocol. Enclaves: Personal, Group.\n\n> Auto-generated by `lib/codegen/readme-codegen.mjs` from `apps/personal/{app,schema}.json`. Do not hand-edit — regenerate via `enc gen readme personal`.\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/personal.md)\nenc skill add personal\n```\n\nThe skill is the recommended consumption surface for Claude Code — adds an `/enc personal` slash command. The skill package is published as `@enc-protocol/skill-personal`.\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/personal-cli\n```\n\n## Quick example\n\n```js\nimport { PersonalSdk } from '@enc-protocol/personal-cli'\n\nconst sdk = new PersonalSdk({ mode: 'cf', nodeUrl: process.env.NODE_URL })\nawait sdk.init()\nawait sdk.submitPublic({\"draft\":\"example\"})\nconst events = await sdk.queryPublic()\n```\n\n## API reference\n\n### `new PersonalSdk(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 2 enclaves (Personal, Group), wire dataview, mint cf enclaves if needed.\n\n### Write methods\n\n| Method | Data type | Resolves to | Encrypted | Ops | Operators |\n|--------|-----------|-------------|-----------|-----|-----------|\n| `submitPublic(args)` | `public` | `Personal.public` |  | CDU | OWNER \\| dataview |\n| `submitPrivate(args)` | `private` | `Personal.private` | ✓ | CDU | OWNER |\n\n### Read methods\n\n| Method | Read | Source | Fields |\n|--------|------|--------|--------|\n| `queryPublic()` | `public` | `Personal.public` | `body`, `from`, `trailing` |\n| `queryProfiles()` | `profiles` | *dataview (cross_enclave)* | *all* |\n| `queryPrivate()` | `private` | `Personal.private` | `body`, `from`, `trailing` |\n| `queryNotices()` | `notices` | *dataview (cross_enclave)* | `greeting`, `from`, `trailing` |\n\n### Encryption\n\nData types `private` 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 EncryptedPersonalSdk extends PersonalSdk {\n  async _encrypt(dataType, args) {\n    // produce ciphertext for `args`\n    return { ciphertext: /* ... */ }\n  }\n}\n```\n\n## Composition\n\n- **Enclaves**: `Personal`, `Group`\n- **tableMap**: `public` → `public`, `private` → `private`, `notices` → `notice`\n- **encrypt**: `private`\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 personal`)\n- `@enc-protocol/cli-sdk-base` — base class (`AppSdk`, `AppClient`, `DataView`)\n"}