{"_id":"@aletheia-labs/dynamics","_rev":"3-274779e1f5fca6c7dec43733bfc8e59e","name":"@aletheia-labs/dynamics","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@aletheia-labs/dynamics","version":"0.1.0","keywords":["aletheia","llm","memory","dynamics","agents"],"license":"Apache-2.0","_id":"@aletheia-labs/dynamics@0.1.0","maintainers":[{"name":"penagabriel22","email":"penagabriel22@gmail.com"}],"dist":{"shasum":"93016c089d481a3342211afbe2cc7cfbf27093e6","tarball":"https://registry.npmjs.org/@aletheia-labs/dynamics/-/dynamics-0.1.0.tgz","fileCount":35,"integrity":"sha512-uq6feENrivwAFM23Q3DXtX0nzR8pY10kUO1lW2h/j5Q3YQjedMBUWjze6jgbvv3o9GjlGWWkIg03DqNm1t7mew==","signatures":[{"sig":"MEUCICDCKekzgmjroXI7tQGEgxl64k4ra6s5ul6UbqJnFcxjAiEAmTLc50WwatyQUxoLCCAPrGrrYgYnqFQYUCMDiMMyXv8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97338},"main":"./dist/index.js","type":"module","_from":"file:aletheia-labs-dynamics-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"penagabriel22","email":"penagabriel22@gmail.com"},"_resolved":"/private/var/folders/9c/lly_9vqs1gv40hnyxgytthg00000gn/T/5e32b8b0a699fed49979e56509aa8b1e/aletheia-labs-dynamics-0.1.0.tgz","_integrity":"sha512-uq6feENrivwAFM23Q3DXtX0nzR8pY10kUO1lW2h/j5Q3YQjedMBUWjze6jgbvv3o9GjlGWWkIg03DqNm1t7mew==","_npmVersion":"11.7.0","description":"Deterministic memory dynamics for Aletheia: decay, promotion, and conflict revisits.","directories":{},"_nodeVersion":"25.4.0","dependencies":{"@aletheia-labs/core":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","typescript":"^5.6.3","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/dynamics_0.1.0_1779044000550_0.6313239807179651","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aletheia-labs/dynamics","version":"0.1.1","keywords":["aletheia","llm","memory","dynamics","agents"],"license":"Apache-2.0","_id":"@aletheia-labs/dynamics@0.1.1","maintainers":[{"name":"penagabriel22","email":"penagabriel22@gmail.com"}],"dist":{"shasum":"fe127a5485d999cd1238da60b0bb2e949ede1409","tarball":"https://registry.npmjs.org/@aletheia-labs/dynamics/-/dynamics-0.1.1.tgz","fileCount":35,"integrity":"sha512-KL15P8O1RNkJmL9hfnPH0X2J0ykbcpc2G/tazE8M/IRsYf+fMJtVL7uVa0J4RjT4HZTn0+Mkb7SnA/jP+NPGnw==","signatures":[{"sig":"MEUCIH/dSgnZ3TlyIIPBCB4X4Xyez0t9WTNStmdttLXavppIAiEAgNjybjbuqvyGKQlhhmHHT9dAfv9SrPhaeBfDlu8dlzU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97784},"main":"./dist/index.js","type":"module","_from":"file:aletheia-labs-dynamics-0.1.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"penagabriel22","email":"penagabriel22@gmail.com"},"_resolved":"/private/var/folders/9c/lly_9vqs1gv40hnyxgytthg00000gn/T/acc70f1fe5820fe25c9df805b2c4fa69/aletheia-labs-dynamics-0.1.1.tgz","_integrity":"sha512-KL15P8O1RNkJmL9hfnPH0X2J0ykbcpc2G/tazE8M/IRsYf+fMJtVL7uVa0J4RjT4HZTn0+Mkb7SnA/jP+NPGnw==","_npmVersion":"11.7.0","description":"Deterministic memory dynamics for Aletheia: decay, promotion, and conflict revisits.","directories":{},"_nodeVersion":"25.4.0","dependencies":{"@aletheia-labs/core":"0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.8","typescript":"^5.6.3","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/dynamics_0.1.1_1779046318263_0.7584587544292574","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aletheia-labs/dynamics","version":"0.1.2","description":"Deterministic memory dynamics for Aletheia: decay, promotion, and conflict revisits.","license":"Apache-2.0","type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"dependencies":{"@aletheia-labs/core":"0.2.1"},"devDependencies":{"@types/node":"^22.10.0","typescript":"^5.6.3","vitest":"^2.1.8"},"publishConfig":{"access":"public"},"keywords":["aletheia","llm","memory","dynamics","agents"],"repository":{"type":"git","url":"git+https://github.com/lechuit/synaptic-mesh.git","directory":"packages/dynamics"},"homepage":"https://github.com/lechuit/synaptic-mesh/tree/main/packages/dynamics#readme","bugs":{"url":"https://github.com/lechuit/synaptic-mesh/issues"},"scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test":"vitest run","test:watch":"vitest"},"_id":"@aletheia-labs/dynamics@0.1.2","_integrity":"sha512-809tCE8+3vu/Bmdjcwjqq775Wi/peYmbrmkOStMXotLRlm5uWJVkvkshGhFVBiQjFwrmsQkiApfhRXo7hnLMmQ==","_resolved":"/private/var/folders/9c/lly_9vqs1gv40hnyxgytthg00000gn/T/2fcc1ed8db8832dea33c72bafa1bf96b/aletheia-labs-dynamics-0.1.2.tgz","_from":"file:aletheia-labs-dynamics-0.1.2.tgz","_nodeVersion":"25.4.0","_npmVersion":"11.7.0","dist":{"integrity":"sha512-809tCE8+3vu/Bmdjcwjqq775Wi/peYmbrmkOStMXotLRlm5uWJVkvkshGhFVBiQjFwrmsQkiApfhRXo7hnLMmQ==","shasum":"18991456a0e52335bccd338f5406e1d3b1ded7e2","tarball":"https://registry.npmjs.org/@aletheia-labs/dynamics/-/dynamics-0.1.2.tgz","fileCount":35,"unpackedSize":98097,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDOVoqO8SMsKdnpnSDsVWUEToKv4yVYYDxdRlnBamF2+AIhAPjd81c7CUxLjZ6cPsBF8ydeGzgoOJe5jLavU2UBtt9e"}]},"_npmUser":{"name":"penagabriel22","email":"penagabriel22@gmail.com"},"directories":{},"maintainers":[{"name":"penagabriel22","email":"penagabriel22@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dynamics_0.1.2_1779475330909_0.2120368089337017"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-17T18:53:20.472Z","modified":"2026-05-22T18:42:11.155Z","0.1.0":"2026-05-17T18:53:20.697Z","0.1.1":"2026-05-17T19:31:58.421Z","0.1.2":"2026-05-22T18:42:11.040Z"},"license":"Apache-2.0","keywords":["aletheia","llm","memory","dynamics","agents"],"description":"Deterministic memory dynamics for Aletheia: decay, promotion, and conflict revisits.","maintainers":[{"name":"penagabriel22","email":"penagabriel22@gmail.com"}],"readme":"# @aletheia-labs/dynamics\n\nDeterministic memory dynamics for Aletheia.\n\n> **Status**: `0.1.0` public baseline. Dynamics engine, deterministic sleep-cycle reports, explicit multi-cycle runs, and human-confirmed reconsolidation apply are live.\n\n## Requirements\n\n- Node 20+.\n- ESM-only. Add `\"type\": \"module\"` to your `package.json`, use `.mjs`, or use\n  a build tool/runtime that handles ESM. CommonJS `require()` is not shipped in\n  `0.1.x`.\n\n## Quickstart\n\n```bash\npnpm add @aletheia-labs/core @aletheia-labs/store-sqlite @aletheia-labs/dynamics\n```\n\n```ts\nimport { AgentIdSchema, IsoTimestampSchema } from '@aletheia-labs/core';\nimport { createDynamicsPolicy, DynamicsEngine, SleepCycleRunner } from '@aletheia-labs/dynamics';\nimport { openSqliteStores } from '@aletheia-labs/store-sqlite';\n\nconst stores = openSqliteStores('./aletheia.sqlite');\nconst engine = new DynamicsEngine({\n  stores,\n  policy: createDynamicsPolicy(AgentIdSchema.parse('agent-dynamics')),\n});\nconst runner = new SleepCycleRunner(engine);\n\nconst report = await runner.run({\n  cycleId: 'sleep:demo:1',\n  now: IsoTimestampSchema.parse('2026-05-17T12:00:00Z'),\n  scope: { kind: 'project', projectId: 'demo' },\n  permittedVisibilities: [{ kind: 'private:user' }],\n  applyTransitions: false,\n});\n\nconsole.log(report.outcome, report.plannedCount, report.appliedCount);\nstores.close();\n```\n\nUse `applyTransitions: true` only when the host wants audited status transitions written through `MemoryStore.transitionStatus()`.\n\n## What this package does\n\n- Computes pure decayed authority scores for recall ranking without mutating memory status.\n- Walks visible memory atoms in a caller-provided scope.\n- Scans lifecycle candidates without `validAt` filtering so expired or corrupt validity windows can be decommissioned.\n- Plans status transitions from explicit policy and evidence.\n- Applies transitions only through `MemoryStore.transitionStatus`.\n- Treats unresolved or human-required conflicts that touch an atom as authority blockers.\n- Counts source-consistent recall evidence from an append-only `EventLedger`.\n- Provides `SleepCycleRunner` for deterministic dry-run/apply reports over a host-provided store.\n- Runs explicit multi-cycle sleep sequences when the host provides each cycle input; no hidden scheduler is started.\n- Provides `ReconsolidationPlanner` for successor drafts with `supersedes` lineage and planned transitions.\n- Provides `ReconsolidationApplier` for explicit human-confirmed successor insertion plus audited prior-atom deprecation.\n- Provides `LineageTracer` for permission-guarded reconstruction of `supersedes` chains.\n- Keeps `@aletheia-labs/core` SDK-free and free of background scheduling.\n\n## Decayed Recall Ranking\n\nMemory ages. `decayedAuthority(atom, now)` returns an effective authority score\nfor ranking atoms that have already passed core visibility, scope, status, and\nfreshness filters. It is not a permission check and it never mutates status.\n\n```ts\nimport { AletheiaAuthority } from '@aletheia-labs/core';\nimport { decayedAuthority } from '@aletheia-labs/dynamics';\n\nconst authority = new AletheiaAuthority({\n  eventLedger,\n  memoryStore,\n  conflictRegistry,\n  visibilityPolicy,\n  clock,\n  authorityScorer: (atom, now) => decayedAuthority(atom, now),\n});\n```\n\nDefaults decay candidates fastest, verified memories over weeks, and trusted\nmemories over months. Sealed memory does not decay; rejected, deprecated, and\nhuman-required memory scores zero.\n\n## Recall Evidence\n\n`LedgerRecallEvidenceProvider` turns host-recorded recall events into lifecycle\nevidence. It queries the ledger by scope and visibility before inspecting\npayloads, then counts only events whose payload cites the target atom and all of\nits `sourceEventIds`.\n\n```ts\nimport {\n  LedgerRecallEvidenceProvider,\n  sourceConsistentRecallPayload,\n} from '@aletheia-labs/dynamics';\n\nawait eventLedger.append({\n  eventId,\n  kind: 'decision',\n  agentId,\n  occurredAt,\n  scope: atom.scope,\n  visibility: atom.visibility,\n  payload: sourceConsistentRecallPayload(atom),\n});\n\nconst engine = new DynamicsEngine({\n  stores,\n  policy,\n  evidenceProvider: new LedgerRecallEvidenceProvider({ eventLedger }),\n});\n```\n\nThe event is evidence that a host used a memory with its original sources still\npresent. It is not permission, not semantic relevance, and not model confidence.\n\n## Lineage\n\nReconsolidation never overwrites an atom. A successor carries a `supersedes`\nlink to the prior atom, and the prior atom is deprecated through audited status\nhistory. `LineageTracer` reconstructs that chain only through visible atoms:\n\n```ts\nimport { LineageTracer } from '@aletheia-labs/dynamics';\n\nconst lineage = await new LineageTracer({ memoryStore }).traceBack({\n  memoryId: successorId,\n  permittedVisibilities,\n});\n```\n\nIf an ancestor is missing, invisible, cyclic, or too deep, the tracer returns\n`fetch_abstain` with the partial chain instead of inventing continuity.\n\n## What this package does NOT do\n\n- No hidden daemon.\n- No semantic ranking.\n- No automatic use of `confidence` or `consensus` as authority.\n- No automatic background mutation: hosts must explicitly call `tick({ applyTransitions: true })` or `ReconsolidationApplier.apply({ humanConfirmation })`.\n- No reconsolidation authority upgrade: successors start as `candidate`.\n- No silent reconsolidation partial success: if successor insertion succeeds but a prior-atom transition rejects, the applier returns `partial_applied`.\n- No direct mutation of atom content, scores, visibility, scope, or links.\n\n## Stability\n\nPublic surface for the initial library cycle:\n\n- `createDynamicsPolicy`\n- `decayedAuthority`\n- `DEFAULT_AUTHORITY_DECAY_POLICY`\n- `AuthorityDecayPolicy` and `AuthorityDecayPolicyOverrides`\n- `DynamicsEngine`\n- `SleepCycleRunner`\n- `LedgerRecallEvidenceProvider`\n- `sourceConsistentRecallPayload`\n- `SOURCE_CONSISTENT_RECALL_EVENT`\n- `ReconsolidationPlanner`\n- `ReconsolidationApplier`\n- `LineageTracer`\n- policy, decision, report, and evidence-provider types\n\nEverything else is lifecycle plumbing and may change during the `0.x` line. Dynamics can change persisted memory status, so hosts should treat policy changes as operationally significant even when TypeScript signatures stay stable.\n\n## Development\n\nFrom the repo root:\n\n```bash\npnpm install\npnpm -F @aletheia-labs/dynamics typecheck\npnpm -F @aletheia-labs/dynamics test\npnpm -F @aletheia-labs/dynamics build\n```\n\n## Specs\n\nThis package implements:\n\n- `specs/memory-dynamics-v0.md` — lifecycle dynamics, decay, recall evidence, sleep-cycle, and reconsolidation.\n- `specs/aletheia-memory-authority-v0.md` — how dynamics fits the broader authority protocol.\n","readmeFilename":"README.md","homepage":"https://github.com/lechuit/synaptic-mesh/tree/main/packages/dynamics#readme","repository":{"type":"git","url":"git+https://github.com/lechuit/synaptic-mesh.git","directory":"packages/dynamics"},"bugs":{"url":"https://github.com/lechuit/synaptic-mesh/issues"}}