{"_id":"@ai-operations/ops-storage","name":"@ai-operations/ops-storage","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@ai-operations/ops-storage","version":"0.1.0","description":"SQLite persistence layer for AI Operations OS — tasks, workflows, receipts, SPARK learning data (WAL mode)","private":false,"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","test":"jest","clean":"rm -rf dist"},"dependencies":{"@ai-operations/shared-types":"*","better-sqlite3":"^11.0.0"},"devDependencies":{"typescript":"^5.7.0","@types/better-sqlite3":"^7.6.0"},"repository":{"type":"git","url":"git+https://github.com/zanderone1980/ai-operations-os.git","directory":"packages/ops-storage"},"bugs":{"url":"https://github.com/zanderone1980/ai-operations-os/issues"},"author":{"name":"Alex Pinkevich","email":"alex@zanderpinkdesign.com"},"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org","access":"public"},"keywords":["ai-ops","ai-agents","workflow","automation","safety"],"_id":"@ai-operations/ops-storage@0.1.0","gitHead":"5479e60c372e0d4d5269e3fd1f87915563e9a87d","homepage":"https://github.com/zanderone1980/ai-operations-os#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-OuAGQp5+7ajqblTxH/Cyy98fpbieGBODVBZL9gmZeLUppBFm/jelqaF1QdqKDnw2T/+IhhHnI+DNYTzZAiCUaQ==","shasum":"4b0439b369b17840159bf5042d3ef3eea4e7ae4d","tarball":"https://registry.npmjs.org/@ai-operations/ops-storage/-/ops-storage-0.1.0.tgz","fileCount":34,"unpackedSize":165983,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCC3NDwppttT17+Mfuc0rNxSrK3tDvz3ry8lQQl/REhiwIhAO53pqarTza9Qxv4WuOc7C2WnDTiZwhJEk6lURfmmDXW"}]},"_npmUser":{"name":"alexpinkone","email":"pinkevich1980@gmail.com"},"directories":{},"maintainers":[{"name":"alexpinkone","email":"pinkevich1980@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ops-storage_0.1.0_1773153573871_0.9667139235798279"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-10T14:39:33.786Z","0.1.0":"2026-03-10T14:39:34.023Z","modified":"2026-03-10T14:39:34.279Z"},"maintainers":[{"name":"alexpinkone","email":"pinkevich1980@gmail.com"}],"description":"SQLite persistence layer for AI Operations OS — tasks, workflows, receipts, SPARK learning data (WAL mode)","homepage":"https://github.com/zanderone1980/ai-operations-os#readme","keywords":["ai-ops","ai-agents","workflow","automation","safety"],"repository":{"type":"git","url":"git+https://github.com/zanderone1980/ai-operations-os.git","directory":"packages/ops-storage"},"author":{"name":"Alex Pinkevich","email":"alex@zanderpinkdesign.com"},"bugs":{"url":"https://github.com/zanderone1980/ai-operations-os/issues"},"license":"MIT","readme":"# @ai-operations/ops-storage\n\n> SQLite persistence layer for tasks, workflows, approvals, and users in AI Operations OS.\n\nPart of [AI Operations OS](https://github.com/zanderone1980/ai-operations-os) — autonomous business workflow orchestration with safety enforcement.\n\n## Install\n\n```\nnpm install @ai-operations/ops-storage\n```\n\nRequires `better-sqlite3` as a peer dependency.\n\n## Quick Start\n\n```ts\nimport { createStores } from '@ai-operations/ops-storage';\nimport { createTask } from '@ai-operations/shared-types';\n\nconst { tasks, workflows, approvals, users, db } = createStores();\n\nconst task = createTask({ source: 'email', title: 'Reply to John' });\ntasks.save(task);\n\nconst found = tasks.get(task.id);\nconst pending = tasks.list({ status: 'pending', limit: 20 });\n```\n\n## API\n\n### `createStores(dbPath?): Stores`\n\nConvenience factory that creates a Database and all stores in one call. Defaults to `~/.ai-ops/data.db`.\n\n```ts\ninterface Stores {\n  tasks: TaskStore;\n  workflows: WorkflowStore;\n  approvals: ApprovalStore;\n  users: UserStore;\n  db: Database;\n}\n```\n\n### `Database`\n\nOpens/creates a SQLite database, creates all required tables on first run, and uses WAL mode for concurrency.\n\n```ts\nconstructor(dbPath?: string)  // defaults to ~/.ai-ops/data.db\nclose(): void\n```\n\n### `TaskStore`\n\nCRUD operations for Task records with filtering and pagination.\n\n```ts\nsave(task: Task): void\nget(id: string): Task | undefined\nlist(filter?: TaskFilter): Task[]\nupdate(id: string, updates: Partial<Task>): Task | undefined\ncount(filter?: TaskFilter): number\ndelete(id: string): boolean\n```\n\n- `TaskFilter` — `{ status?, source?, intent?, priority?, limit?, offset? }`\n\n### `WorkflowStore`\n\nPersistence for WorkflowRun and WorkflowStep records.\n\n- `WorkflowRunFilter` — `{ taskId?, state?, limit?, offset? }`\n\n### `ApprovalStore`\n\nPersistence for Approval records with filtering by risk level and decision.\n\n- `ApprovalFilter` — Filter by decision status, risk level, task ID.\n\n### `UserStore`\n\nUser account management with typed input/output.\n\n- `User` / `CreateUserInput` — User record types for the users table.\n\n## Related Packages\n\n- [`@ai-operations/shared-types`](../shared-types) — Task, WorkflowRun, Approval types stored here\n- [`@ai-operations/ops-core`](../ops-core) — Workflow engine that drives stored workflow runs\n- [`@ai-operations/cord-adapter`](../cord-adapter) — ForensicEngine reads from these stores\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-8ea024f6bd14a7350799b256f62023b1"}