{"_id":"@eddacraft/kindling-core","_rev":"4-4a370bd7434781909af684d1519a25b1","name":"@eddacraft/kindling-core","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@eddacraft/kindling-core","version":"0.1.0","keywords":["kindling","ai","memory","context","llm","agent","observations","capsules","retrieval"],"author":{"name":"EddaCraft","email":"hello@eddacraft.ai"},"license":"Apache-2.0","_id":"@eddacraft/kindling-core@0.1.0","maintainers":[{"name":"joshuaboys","email":"josh@arkahna.io"}],"homepage":"https://github.com/EddaCraft/kindling/tree/main/packages/kindling-core#readme","bugs":{"url":"https://github.com/EddaCraft/kindling/issues"},"dist":{"shasum":"b4ef1602c5d0cd4c1938333e6ba741dd19b382c2","tarball":"https://registry.npmjs.org/@eddacraft/kindling-core/-/kindling-core-0.1.0.tgz","fileCount":103,"integrity":"sha512-dh0ceoVQz3sM5uwSzJ0eXyKtWBXesp8x42KEpVZKpNQjFI5aoe0cn3fvpz90OcHafjJVWzuiPN2UBCrgmCsuDQ==","signatures":[{"sig":"MEUCIEPp2DXlHEvqHxY5xn17LLZ4I2pKvLR0C5/7zBd9foRnAiEAieLKPMJmtDiPlV7R6a/vp40GozuNY/wsDT7GREDoOYI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eddacraft%2fkindling-core@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":168302},"main":"./dist/index.js","type":"module","_from":"file:eddacraft-kindling-core-0.1.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"lint":"eslint src","test":"vitest run","build":"tsc --build","clean":"rm -rf dist","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"joshuaboys","email":"josh@arkahna.io"},"_resolved":"/tmp/8cc49f1dde658cc89979c29bd0e482fa/eddacraft-kindling-core-0.1.0.tgz","_integrity":"sha512-dh0ceoVQz3sM5uwSzJ0eXyKtWBXesp8x42KEpVZKpNQjFI5aoe0cn3fvpz90OcHafjJVWzuiPN2UBCrgmCsuDQ==","repository":{"url":"git+https://github.com/EddaCraft/kindling.git","type":"git","directory":"packages/kindling-core"},"_npmVersion":"10.8.2","description":"Core domain model and orchestration for Kindling - local memory engine for AI-assisted development","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","typescript":"^5.3.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/kindling-core_0.1.0_1770862694975_0.11990270136165226","host":"s3://npm-registry-packages-npm-production"},"deprecated":"DEPRECATED: this package is deprecated and will be removed at v1.0.0. kindling is now a Rust daemon; use @eddacraft/kindling (thin client) or the `kindling` binary. See https://github.com/eddacraft/kindling."},"0.1.1":{"name":"@eddacraft/kindling-core","version":"0.1.1","keywords":["kindling","ai","memory","context","llm","agent","observations","capsules","retrieval"],"author":{"name":"EddaCraft","email":"hello@eddacraft.ai"},"license":"Apache-2.0","_id":"@eddacraft/kindling-core@0.1.1","maintainers":[{"name":"joshuaboys","email":"josh@arkahna.io"}],"homepage":"https://github.com/EddaCraft/kindling/tree/main/packages/kindling-core#readme","bugs":{"url":"https://github.com/EddaCraft/kindling/issues"},"dist":{"shasum":"c578d6236c48c0480b65be1fc400538f96c295ee","tarball":"https://registry.npmjs.org/@eddacraft/kindling-core/-/kindling-core-0.1.1.tgz","fileCount":103,"integrity":"sha512-quWVFvgdUJIJiPqSpRM9Sb7UkX+HmQrvmCPd4Vf2/RvgscUwWnfY74+Np7l19MWsIy75NtRuLtaYdWFeTdaDcw==","signatures":[{"sig":"MEUCIGwMYvn5nl+G+m8Ksu5QriYFarcI5jgWOnUpC0P5QVnpAiEA33aMYS/dJPUvSxxyRo8eOmRV2FuRSJg1JUfEnt4tFXE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eddacraft%2fkindling-core@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":168302},"main":"./dist/index.js","type":"module","_from":"file:eddacraft-kindling-core-0.1.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"lint":"eslint src","test":"vitest run","build":"tsc --build","clean":"rm -rf dist","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"joshuaboys","email":"josh@arkahna.io"},"_resolved":"/tmp/543626bf6aae7f8d192a87bee78311a3/eddacraft-kindling-core-0.1.1.tgz","_integrity":"sha512-quWVFvgdUJIJiPqSpRM9Sb7UkX+HmQrvmCPd4Vf2/RvgscUwWnfY74+Np7l19MWsIy75NtRuLtaYdWFeTdaDcw==","repository":{"url":"git+https://github.com/EddaCraft/kindling.git","type":"git","directory":"packages/kindling-core"},"_npmVersion":"10.8.2","description":"Core domain model and orchestration for Kindling - local memory engine for AI-assisted development","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","typescript":"^5.3.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/kindling-core_0.1.1_1770960572501_0.9203184221865399","host":"s3://npm-registry-packages-npm-production"},"deprecated":"DEPRECATED: this package is deprecated and will be removed at v1.0.0. kindling is now a Rust daemon; use @eddacraft/kindling (thin client) or the `kindling` binary. See https://github.com/eddacraft/kindling."},"0.1.2":{"name":"@eddacraft/kindling-core","version":"0.1.2","keywords":["kindling","ai","memory","context","llm","agent","observations","capsules","retrieval"],"author":{"name":"EddaCraft","email":"hello@eddacraft.ai"},"license":"Apache-2.0","_id":"@eddacraft/kindling-core@0.1.2","maintainers":[{"name":"joshuaboys","email":"josh@arkahna.io"}],"homepage":"https://github.com/EddaCraft/kindling/tree/main/packages/kindling-core#readme","bugs":{"url":"https://github.com/EddaCraft/kindling/issues"},"dist":{"shasum":"d1463e64a98b957cdbf420330aabf45031bc53f0","tarball":"https://registry.npmjs.org/@eddacraft/kindling-core/-/kindling-core-0.1.2.tgz","fileCount":103,"integrity":"sha512-K3BDH9eylDRgZARquDyrhAeE/Ht6VsJaZ09t9jk6NmFQj+3pNjGhU8mCYVg+BiSy482oGXEK2U6Vg+Kh3T9XqA==","signatures":[{"sig":"MEQCIF7liOgwbZblmHSBbwSDvKF2GtlEf5Ud1V5rm1HRR4QKAiBagRFfoVPKC1a1L9d5Vgbetf3iemNrL8Z4xfd52UiLgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@eddacraft%2fkindling-core@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":168302},"main":"./dist/index.js","type":"module","_from":"file:eddacraft-kindling-core-0.1.2.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"lint":"eslint src","test":"vitest run","build":"tsc --build","clean":"rm -rf dist","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"joshuaboys","email":"josh@arkahna.io"},"_resolved":"/tmp/b4a22ac70a7bbe2de5532557817576ea/eddacraft-kindling-core-0.1.2.tgz","_integrity":"sha512-K3BDH9eylDRgZARquDyrhAeE/Ht6VsJaZ09t9jk6NmFQj+3pNjGhU8mCYVg+BiSy482oGXEK2U6Vg+Kh3T9XqA==","repository":{"url":"git+https://github.com/EddaCraft/kindling.git","type":"git","directory":"packages/kindling-core"},"_npmVersion":"10.8.2","description":"Core domain model and orchestration for Kindling - local memory engine for AI-assisted development","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","typescript":"^5.3.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/kindling-core_0.1.2_1771253698913_0.9007338408641701","host":"s3://npm-registry-packages-npm-production"},"deprecated":"DEPRECATED: this package is deprecated and will be removed at v1.0.0. kindling is now a Rust daemon; use @eddacraft/kindling (thin client) or the `kindling` binary. See https://github.com/eddacraft/kindling."}},"time":{"created":"2026-02-12T02:18:14.883Z","modified":"2026-06-22T06:08:49.108Z","0.1.0":"2026-02-12T02:18:15.129Z","0.1.1":"2026-02-13T05:29:32.646Z","0.1.2":"2026-02-16T14:54:59.143Z"},"bugs":{"url":"https://github.com/EddaCraft/kindling/issues"},"author":{"name":"EddaCraft","email":"hello@eddacraft.ai"},"license":"Apache-2.0","homepage":"https://github.com/EddaCraft/kindling/tree/main/packages/kindling-core#readme","keywords":["kindling","ai","memory","context","llm","agent","observations","capsules","retrieval"],"repository":{"url":"git+https://github.com/EddaCraft/kindling.git","type":"git","directory":"packages/kindling-core"},"description":"Core domain model and orchestration for Kindling - local memory engine for AI-assisted development","maintainers":[{"name":"joshuaboys","email":"josh@arkahna.io"}],"readme":"# @eddacraft/kindling-core\n\nCore domain model and orchestration for Kindling - local memory engine for AI-assisted development.\n\n[![npm version](https://img.shields.io/npm/v/@eddacraft/kindling-core.svg)](https://www.npmjs.com/package/@eddacraft/kindling-core)\n[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](../../LICENSE)\n\n## Installation\n\n```bash\nnpm install @eddacraft/kindling-core\n```\n\n## Overview\n\n`@eddacraft/kindling-core` provides the domain types, capsule lifecycle management, and retrieval orchestration for Kindling. It defines the core abstractions that other packages implement:\n\n- **Observations** - Atomic records of captured events\n- **Capsules** - Bounded units of meaning that group observations\n- **Summaries** - High-level descriptions of capsule content\n- **Pins** - User-marked important items\n- **Retrieval** - Deterministic, scoped search across all entities\n\n## Usage\n\n```typescript\nimport {\n  // Types\n  Observation,\n  ObservationKind,\n  Capsule,\n  CapsuleType,\n  CapsuleStatus,\n  Summary,\n  Pin,\n  ScopeIds,\n\n  // Capsule lifecycle\n  CapsuleManager,\n  openCapsule,\n  closeCapsule,\n\n  // Retrieval\n  RetrieveOptions,\n  RetrieveResult,\n  RetrievalProvider,\n\n  // Utilities\n  ok,\n  err,\n} from '@eddacraft/kindling-core';\n```\n\n## Core Types\n\n### Observation\n\nAn atomic, immutable record of an event:\n\n```typescript\ninterface Observation {\n  id: string;\n  kind: ObservationKind;\n  content: string;\n  provenance: Record<string, unknown>;\n  ts: number;\n  scopeIds: ScopeIds;\n  redacted: boolean;\n}\n\ntype ObservationKind =\n  | 'tool_call'\n  | 'command'\n  | 'file_diff'\n  | 'error'\n  | 'message'\n  | 'node_start'\n  | 'node_end'\n  | 'node_output'\n  | 'node_error';\n```\n\n### Capsule\n\nA bounded unit that groups related observations:\n\n```typescript\ninterface Capsule {\n  id: string;\n  type: CapsuleType;\n  intent: string;\n  status: CapsuleStatus;\n  openedAt: number;\n  closedAt?: number;\n  scopeIds: ScopeIds;\n  observationIds: string[];\n  summaryId?: string;\n}\n\ntype CapsuleType = 'session' | 'pocketflow_node';\ntype CapsuleStatus = 'open' | 'closed';\n```\n\n### ScopeIds\n\nMulti-dimensional isolation for queries:\n\n```typescript\ninterface ScopeIds {\n  sessionId?: string;\n  repoId?: string;\n  agentId?: string;\n  userId?: string;\n}\n```\n\n## Capsule Lifecycle\n\n```typescript\nimport { CapsuleManager } from '@eddacraft/kindling-core';\nimport { SqliteKindlingStore } from '@eddacraft/kindling-store-sqlite';\n\nconst manager = new CapsuleManager(store);\n\n// Open a capsule\nconst capsule = manager.open({\n  type: 'session',\n  intent: 'Fix authentication bug',\n  scopeIds: { sessionId: 's1', repoId: '/repo' },\n});\n\n// Attach observations\nmanager.attach(capsule.id, observation);\n\n// Close with summary\nmanager.close(capsule.id, {\n  content: 'Fixed JWT validation',\n  confidence: 0.9,\n});\n```\n\n## Retrieval\n\n```typescript\nimport { RetrieveOptions, RetrieveResult } from '@eddacraft/kindling-core';\n\nconst options: RetrieveOptions = {\n  query: 'authentication',\n  scopeIds: { repoId: '/repo' },\n  tokenBudget: 8000,\n  maxCandidates: 50,\n};\n\n// Results are tiered: pins -> summary -> candidates\nconst result: RetrieveResult = {\n  pins: [...],           // Non-evictable, user-pinned\n  currentSummary: {...}, // Active capsule summary\n  candidates: [...],     // FTS-ranked results\n  provenance: {...},     // Explains how results were generated\n};\n```\n\n## Result Type\n\nKindling uses a Result type for validation:\n\n```typescript\nimport { Result, ok, err } from '@eddacraft/kindling-core';\n\nfunction validate(input: unknown): Result<Observation> {\n  if (!isValid(input)) {\n    return err({ field: 'content', message: 'Content is required' });\n  }\n  return ok(input as Observation);\n}\n```\n\n## Related Packages\n\n- [`@eddacraft/kindling-store-sqlite`](../kindling-store-sqlite) - SQLite persistence\n- [`@eddacraft/kindling-provider-local`](../kindling-provider-local) - FTS retrieval\n- [`@eddacraft/kindling-adapter-opencode`](../kindling-adapter-opencode) - OpenCode integration\n- [`@eddacraft/kindling-adapter-pocketflow`](../kindling-adapter-pocketflow) - PocketFlow integration\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}