{"_id":"@1kbirds/chidori-mock-salesforce","name":"@1kbirds/chidori-mock-salesforce","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@1kbirds/chidori-mock-salesforce","version":"0.1.0","description":"Salesforce mock app and tools for Chidori TypeScript agents.","license":"Apache-2.0","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./ui":{"types":"./dist/ui/index.d.ts","import":"./dist/ui/index.js"},"./ui/styles.css":"./dist/ui/styles.css"},"scripts":{"build":"tsc -p tsconfig.json && cp src/ui/styles.css dist/ui/styles.css","test":"vitest run","dev":"vite --host 127.0.0.1 --port 5174"},"peerDependencies":{"react":">=18","react-dom":">=18"},"devDependencies":{"@types/react":"^19.1.0","@types/react-dom":"^19.1.0","@vitejs/plugin-react":"^5.0.0","react":"^19.1.0","react-dom":"^19.1.0","typescript":"^5.8.0","vite":"^7.0.0","vitest":"^3.2.0"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/ThousandBirdsInc/chidori-mock.git","directory":"packages/salesforce"},"homepage":"https://github.com/ThousandBirdsInc/chidori-mock/tree/main/packages/salesforce","bugs":{"url":"https://github.com/ThousandBirdsInc/chidori-mock/issues"},"gitHead":"8372363edcf88d9d62d9d55902f88e9c14c0d030","_id":"@1kbirds/chidori-mock-salesforce@0.1.0","_nodeVersion":"26.3.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-ZBc0Ht+IqCskYN8d1GwlexLfYVC/5l9xzS/Ao60v86gvTQYQ+flmMl9vGRu5MYPVEDJkXmG3kNlrxVuUq472ug==","shasum":"16362fc244bcaa2956be0882ac1c517c6e54a0ba","tarball":"https://registry.npmjs.org/@1kbirds/chidori-mock-salesforce/-/chidori-mock-salesforce-0.1.0.tgz","fileCount":49,"unpackedSize":111408,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCja1neMgTRwafP0GuwGeq2+hM/fYT4iORUSKBHgZ1S5AIhAI7uQ8vTq2bGbtQTbJWvQl+mIQ92EVUZJhSQlAhFMms5"}]},"_npmUser":{"name":"thousandbirds","email":"colton@thousandbirds.ai"},"directories":{},"maintainers":[{"name":"thousandbirds","email":"colton@thousandbirds.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/chidori-mock-salesforce_0.1.0_1781924288124_0.039233308119987376"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-20T02:58:07.996Z","0.1.0":"2026-06-20T02:58:08.288Z","modified":"2026-06-20T02:58:08.459Z"},"maintainers":[{"name":"thousandbirds","email":"colton@thousandbirds.ai"}],"description":"Salesforce mock app and tools for Chidori TypeScript agents.","homepage":"https://github.com/ThousandBirdsInc/chidori-mock/tree/main/packages/salesforce","repository":{"type":"git","url":"git+https://github.com/ThousandBirdsInc/chidori-mock.git","directory":"packages/salesforce"},"bugs":{"url":"https://github.com/ThousandBirdsInc/chidori-mock/issues"},"license":"Apache-2.0","readme":"# @1kbirds/chidori-mock-salesforce\n\nIn-memory Salesforce-style CRM mock for agent testing. The package provides:\n\n- A deterministic in-memory CRM service.\n- A JSforce-like SDK facade.\n- A REST-style Salesforce API adapter.\n- A React sales console for inspecting and editing mock state.\n- Seed/reset utilities for repeatable tests.\n\n## Supported Objects\n\n- `Account`\n- `Contact`\n- `Lead`\n- `Opportunity`\n- `Task`\n- `Note`\n\n## Usage\n\n```ts\nimport {\n  createSalesforceClient,\n  createSalesforceMock,\n  demoSeed,\n} from \"@1kbirds/chidori-mock-salesforce\";\n\nconst mock = createSalesforceMock({\n  now: \"2026-06-01T15:00:00.000Z\",\n  seed: demoSeed,\n});\n\nconst client = createSalesforceClient(mock);\n\nconst account = await client.sobject(\"Account\").create({\n  Name: \"Example Corp\",\n  Industry: \"Technology\",\n});\n\nawait client.sobject(\"Opportunity\").create({\n  Name: \"Example Expansion\",\n  AccountId: account.id,\n  StageName: \"Prospecting\",\n  CloseDate: \"2026-07-01\",\n});\n```\n\n## Supported Surface\n\nSDK-style methods:\n\n- `client.sobject(type).find()`\n- `client.sobject(type).retrieve(id)`\n- `client.sobject(type).create(record)`\n- `client.sobject(type).update(id, record)`\n- `client.sobject(type).destroy(id)`\n- `client.query(soql)`\n- `client.lead.convert(leadId, options)`\n\nREST-style paths:\n\n- `GET /services/data/v61.0/query?q=SELECT...`\n- `GET /services/data/v61.0/sobjects/:type`\n- `POST /services/data/v61.0/sobjects/:type`\n- `GET /services/data/v61.0/sobjects/:type/:id`\n- `PATCH /services/data/v61.0/sobjects/:type/:id`\n- `DELETE /services/data/v61.0/sobjects/:type/:id`\n- `POST /services/data/v61.0/lead/convert`\n\n## SOQL Support\n\nThe first implementation supports a small deterministic SOQL subset:\n\n```sql\nSELECT Id, Name FROM Account WHERE Industry = 'Technology' ORDER BY Name LIMIT 10\n```\n\nSupported clauses:\n\n- `SELECT field, field`\n- `SELECT FIELDS(ALL)`\n- `FROM Object`\n- `WHERE field = 'value'`\n- `ORDER BY field ASC|DESC`\n- `LIMIT n`\n\n## Review\n\nRun verification:\n\n```sh\nnpm run build\nnpm test\n```\n\nStart the React review app:\n\n```sh\nnpm run dev:salesforce\n```\n\nThen open `http://127.0.0.1:5174/`.\n\nManual review should confirm:\n\n- Seeded accounts, contacts, leads, opportunities, tasks, and notes render.\n- UI-created and UI-updated records are visible through the service/client state.\n- API/client-created records render in the UI.\n- Lead conversion creates related account/contact/opportunity records.\n- Delete hides records from normal list/query results.\n- Reset restores deterministic seeded state.\n\n## Fidelity Notes\n\nThe mock intentionally keeps state in memory only. It focuses on common CRM workflows agents need to rehearse: account/contact management, lead triage and conversion, opportunity updates, tasks, notes, and simple SOQL queries. Full Salesforce metadata, authentication, validation rules, triggers, sharing rules, bulk API, composite API, and Apex behavior are not implemented yet.\n","readmeFilename":"README.md","_rev":"1-224ed27108e87f0f0cd27bfe409e8a97"}