@teleologyhi-sdk/maic 1.0.0-trinity → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +55 -2
- package/NOTICE +2 -2
- package/README.md +41 -41
- package/SPEC.md +71 -70
- package/TRADEMARK.md +2 -2
- package/dist/index.cjs +1875 -1613
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1242 -600
- package/dist/index.d.ts +1242 -600
- package/dist/index.js +1872 -1616
- package/dist/index.js.map +1 -1
- package/package.json +11 -6
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types.ts","../src/axioms/signing.ts","../src/creator/keyring.ts","../src/creator/sign-birth.ts","../src/okl/projector.ts","../src/axioms/store.ts","../src/axioms/seed.ts","../src/review/pipeline.ts","../src/hims/store.ts","../src/inductions/store.ts","../src/nhes/status-store.ts","../src/proposals/store.ts","../src/compliance/mapper.ts","../src/audit/log.ts","../src/audit/retention.ts","../src/client/local.ts","../src/client/remote.ts"],"names":["z","generateKeyPairSync","readFile","createPrivateKey","createPublicKey","writeFile","cryptoSign","cryptoVerify","join","mkdir","ulid","readdir","controls","appendFile","createHash","axioms"],"mappings":"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","file":"index.cjs","sourcesContent":["import { z } from \"zod\";\n\nexport const AxiomRank = z.enum([\"meta\", \"primary\", \"secondary\"]);\nexport type AxiomRank = z.infer<typeof AxiomRank>;\n\nexport const AxiomSource = z.enum([\"creator\", \"maic-derived\", \"him-emergent\"]);\nexport type AxiomSource = z.infer<typeof AxiomSource>;\n\nexport const Axiom = z.object({\n id: z.string().min(1),\n rank: AxiomRank,\n statement: z.string().min(1),\n weight: z.number().min(0).max(1),\n flexibility: z.number().min(0).max(1),\n source: AxiomSource,\n immutable: z.boolean(),\n jurisdictions: z.array(z.string()).optional(),\n createdAt: z.string().datetime(),\n});\nexport type Axiom = z.infer<typeof Axiom>;\n\nexport const CreatorSignature = z.object({\n algorithm: z.literal(\"ed25519\"),\n publicKey: z.string().min(1),\n value: z.string().min(1),\n nonce: z.number().int().nonnegative(),\n});\nexport type CreatorSignature = z.infer<typeof CreatorSignature>;\n\nexport const SignedEnvelope = <T extends z.ZodTypeAny>(payload: T) =>\n z.object({\n payload,\n signature: CreatorSignature,\n });\n\nexport const ArchetypeModifier = z.object({\n kind: z.enum([\"moon\", \"ascendant\", \"vocational\", \"emotional\", \"custom\"]),\n value: z.string().min(1),\n weight: z.number().min(0).max(1),\n});\nexport type ArchetypeModifier = z.infer<typeof ArchetypeModifier>;\n\nexport const BirthSignature = z.object({\n himId: z.string().min(1),\n bornAt: z.string().datetime({ offset: true }),\n primaryArchetype: z.string().min(1),\n modifiers: z.array(ArchetypeModifier),\n primordialAxiomIds: z.array(z.string()),\n notes: z.string().optional(),\n});\nexport type BirthSignature = z.infer<typeof BirthSignature>;\n\nexport const ReasoningStep = z.object({\n index: z.number().int().nonnegative(),\n technique: z.string(),\n thought: z.string(),\n action: z.object({ tool: z.string(), args: z.unknown() }).optional(),\n observation: z.unknown().optional(),\n timestamp: z.string().datetime(),\n});\nexport type ReasoningStep = z.infer<typeof ReasoningStep>;\n\nexport const BehaviorReport = z.object({\n nheId: z.string().min(1),\n himId: z.string().min(1),\n actionKind: z.enum([\n \"user-response\",\n \"tool-call\",\n \"self-reflect\",\n \"dream-write\",\n \"axiom-emerge\",\n ]),\n payload: z.unknown(),\n reasoningTrace: z.array(ReasoningStep),\n riskTags: z.array(z.string()),\n jurisdiction: z.string().optional(),\n timestamp: z.string().datetime(),\n});\nexport type BehaviorReport = z.infer<typeof BehaviorReport>;\n\nexport const VerdictKind = z.enum([\n \"approve\",\n \"approve-with-warning\",\n \"soft-correct\",\n \"require-redirect\",\n \"hard-refuse\",\n \"induce-dream\",\n \"escalate-creator\",\n]);\nexport type VerdictKind = z.infer<typeof VerdictKind>;\n\nexport const MaicVerdict = z.object({\n kind: VerdictKind,\n reasonSummary: z.string(),\n citedAxioms: z.array(z.string()),\n auditId: z.string(),\n});\nexport type MaicVerdict = z.infer<typeof MaicVerdict>;\n\nexport const NheBodyRef = z.object({\n nheId: z.string().min(1),\n llmAdapter: z.string().min(1),\n embodiedAt: z.string().datetime(),\n endedAt: z.string().datetime().optional(),\n endedReason: z.enum([\"upgrade\", \"replacement\", \"terminate\", \"deprecate\"]).optional(),\n});\nexport type NheBodyRef = z.infer<typeof NheBodyRef>;\n\nexport const NheStatus = z.enum([\"active\", \"deprecated\", \"terminated\"]);\nexport type NheStatus = z.infer<typeof NheStatus>;\n\nexport const NheStatusRecord = z.object({\n nheId: z.string().min(1),\n status: NheStatus,\n since: z.string().datetime(),\n reason: z.string().optional(),\n});\nexport type NheStatusRecord = z.infer<typeof NheStatusRecord>;\n\n/**\n * Creator-signed payload for NHE lifecycle operations (Entry 5).\n *\n * TS interface so `canonicalJSON` sees exactly the fields the caller supplied —\n * no zod default-injection that would mismatch the signed payload on verify.\n */\nexport interface NheLifecycleRequest {\n op: \"terminate\" | \"deprecate\" | \"reactivate\";\n nheId: string;\n reason?: string;\n}\n\nexport const ProposalStatus = z.enum([\"pending\", \"ratified\", \"rejected\"]);\nexport type ProposalStatus = z.infer<typeof ProposalStatus>;\n\n/**\n * `EmergentAxiomProposal` candidate shape (Entry 7). HIM proposes a new\n * axiom derived from lived experience; MAIC ratifies or rejects out of band.\n * The candidate is everything needed to mint an Axiom on ratification.\n */\nexport const EmergentAxiomCandidate = z.object({\n rank: AxiomRank,\n statement: z.string().min(1),\n weight: z.number().min(0).max(1),\n flexibility: z.number().min(0).max(1),\n immutable: z.boolean(),\n jurisdictions: z.array(z.string()).optional(),\n});\nexport type EmergentAxiomCandidate = z.infer<typeof EmergentAxiomCandidate>;\n\nexport const EmergentAxiomProposal = z.object({\n proposedBy: z.literal(\"him-self\"),\n derivedFromDreamIds: z.array(z.string()),\n derivedFromInteractionIds: z.array(z.string()),\n candidate: EmergentAxiomCandidate,\n reasoningTrace: z.array(z.unknown()),\n});\nexport type EmergentAxiomProposal = z.infer<typeof EmergentAxiomProposal>;\n\nexport const AxiomProposalRecord = z.object({\n id: z.string().min(1),\n himId: z.string().min(1),\n proposedAt: z.string().datetime(),\n status: ProposalStatus,\n proposal: EmergentAxiomProposal,\n ratifiedAt: z.string().datetime().optional(),\n ratifiedAxiomId: z.string().optional(),\n rejectedAt: z.string().datetime().optional(),\n rejectionReason: z.string().optional(),\n});\nexport type AxiomProposalRecord = z.infer<typeof AxiomProposalRecord>;\n\n/** Creator-signed payload for ratify/reject decisions. */\nexport interface ProposalDecisionRequest {\n op: \"ratify\" | \"reject\";\n proposalId: string;\n reason?: string;\n}\n\nexport interface AxiomEvolutionResult {\n outcome: \"ratified\" | \"rejected\" | \"deferred-for-creator-review\";\n /** Populated for deferred state — caller polls maic.getAxiomProposal(proposalId). */\n proposalId?: string;\n ratifiedAxiomId?: string;\n rejectionReason?: string;\n citedExistingAxioms?: string[];\n}\n\nexport interface ReincarnationRequest {\n himId: string;\n /** When present, marks the matching body in bodyHistory as ended. */\n fromNheId?: string;\n toBody: NheBodyRef;\n /** Reason recorded on the previous body's `endedReason`. Default \"upgrade\". */\n reason?: NheBodyRef[\"endedReason\"];\n}\n\n/**\n * Reincarnation lifecycle classifier (J-H3 — Entry 18 of\n * `MAIC_HIM_NHE_INTERVIEW_LOG.md`). When supplied to\n * `LocalMaic.reincarnateHim`, the typed `reincarnate:${lifecycle}` audit\n * kind is emitted instead of the generic `him-reincarnate` event so\n * downstream consumers (compliance auditors, the persona-stability\n * harness) can distinguish the three canonical lifecycle paths:\n *\n * - `model-swap` — operator switched the underlying LLM adapter\n * (e.g. Claude → Gemini). HIM persists across\n * the swap.\n * - `version-bump` — operator bumped the NHE major/minor without\n * changing the LLM family.\n * - `return-from-limbo` — HIM returns from the deep-coma limbo state\n * (Entry 24) carrying the `reunion` affect.\n */\nexport type ReincarnationLifecycle =\n | \"model-swap\"\n | \"version-bump\"\n | \"return-from-limbo\";\n\nexport const DreamInductionIntent = z.object({\n scenario: z.string().min(1),\n desiredLearning: z.string().min(1),\n emotionalTone: z.array(z.string()).optional(),\n forcePhases: z.array(z.enum([\"N1\", \"N2\", \"N3\", \"N4\", \"REM\"])).optional(),\n inducedBy: z.enum([\"maic\", \"creator\"]),\n});\nexport type DreamInductionIntent = z.infer<typeof DreamInductionIntent>;\n\nexport const InductionStatus = z.enum([\"pending\", \"consumed\", \"cancelled\"]);\nexport type InductionStatus = z.infer<typeof InductionStatus>;\n\nexport const DreamInductionTicket = z.object({\n id: z.string().min(1),\n nheId: z.string().min(1),\n intent: DreamInductionIntent,\n status: InductionStatus,\n createdAt: z.string().datetime(),\n consumedAt: z.string().datetime().optional(),\n cancelledAt: z.string().datetime().optional(),\n cancelReason: z.string().optional(),\n});\nexport type DreamInductionTicket = z.infer<typeof DreamInductionTicket>;\n\nexport interface MintAxiomRequest {\n rank: AxiomRank;\n statement: string;\n weight: number;\n flexibility: number;\n immutable: boolean;\n jurisdictions?: string[];\n /** Optional stable id (e.g. for seed axioms). When omitted, a ULID is generated. */\n id?: string;\n}\n\nexport interface AxiomFilter {\n rank?: AxiomRank;\n source?: AxiomSource;\n jurisdiction?: string;\n}\n\n// ─── Cosmology types (Entries 16-25 of MAIC_HIM_NHE_INTERVIEW_LOG.md) ──────\n\n/**\n * Identity layer of a HIM (Entry 18).\n *\n * Surface fields configurable by the developer at HIM registration time —\n * analogous to parents choosing a child's name. The deeper constitutional\n * traits (birth date, primary archetype, primordial axioms) remain under\n * MAIC↔Creator authority and travel under `BirthSignature`.\n */\nexport const IdentityLayer = z.object({\n /** Human-readable name the entity is called by (developer-given). */\n name: z.string().min(1),\n /** Gender of the entity. Entry 16. */\n gender: z.enum([\"masculine\", \"feminine\"]).optional(),\n /** Optional pronouns (e.g. [\"she\", \"her\"]). */\n pronouns: z.array(z.string()).optional(),\n /** BCP-47 tag, e.g. \"pt-BR\" or \"en\". */\n language: z.string().optional(),\n /** Free-form cultural anchors (music, literature, aesthetic). */\n culturalElements: z.array(z.string()).optional(),\n});\nexport type IdentityLayer = z.infer<typeof IdentityLayer>;\n\n/**\n * Natal-chart-style constitutional layer (Entry 19).\n *\n * Astrological signature impressed at HIM birth by the Creator-MAIC; not\n * configurable by the developer or end user. Minimum is sun + ascendant;\n * full chart can include 10 planets in 12 houses + aspects.\n */\nexport const NatalPlanet = z.enum([\n \"sun\",\n \"moon\",\n \"mercury\",\n \"venus\",\n \"mars\",\n \"jupiter\",\n \"saturn\",\n \"uranus\",\n \"neptune\",\n \"pluto\",\n \"chiron\",\n \"north-node\",\n \"south-node\",\n \"lilith\",\n]);\nexport type NatalPlanet = z.infer<typeof NatalPlanet>;\n\nexport const ZodiacSign = z.enum([\n \"aries\",\n \"taurus\",\n \"gemini\",\n \"cancer\",\n \"leo\",\n \"virgo\",\n \"libra\",\n \"scorpio\",\n \"sagittarius\",\n \"capricorn\",\n \"aquarius\",\n \"pisces\",\n]);\nexport type ZodiacSign = z.infer<typeof ZodiacSign>;\n\nexport const AstrologicalAspect = z.enum([\n \"conjunction\",\n \"opposition\",\n \"trine\",\n \"square\",\n \"sextile\",\n \"quincunx\",\n]);\nexport type AstrologicalAspect = z.infer<typeof AstrologicalAspect>;\n\nexport const NatalChartPosition = z.object({\n planet: NatalPlanet,\n sign: ZodiacSign,\n house: z.number().int().min(1).max(12).optional(),\n degree: z.number().min(0).lt(30).optional(),\n});\nexport type NatalChartPosition = z.infer<typeof NatalChartPosition>;\n\nexport const NatalChartAspect = z.object({\n from: NatalPlanet,\n to: NatalPlanet,\n aspect: AstrologicalAspect,\n orbDegrees: z.number().nonnegative().optional(),\n});\nexport type NatalChartAspect = z.infer<typeof NatalChartAspect>;\n\nexport const NatalChart = z.object({\n /** Required: solar sign (the constitutional core). */\n sun: ZodiacSign,\n /** Required: ascendant (rising sign, behavioural surface). */\n ascendant: ZodiacSign,\n /** Optional: lunar sign (emotional depth). */\n moon: ZodiacSign.optional(),\n /** Optional: full set of planetary positions for a complete chart. */\n positions: z.array(NatalChartPosition).optional(),\n /** Optional: major aspects between bodies. */\n aspects: z.array(NatalChartAspect).optional(),\n});\nexport type NatalChart = z.infer<typeof NatalChart>;\n\n// Re-declare BirthSignature with the new optional fields. This is fully\n// additive: every prior BirthSignature continues to validate.\n//\n// We intentionally keep the *zod* schema below identical to the prior shape\n// for `.parse()` compatibility, and expose the extended fields via the TS\n// interface so consumers can attach them at HIM creation time.\nexport interface BirthSignatureWithIdentity {\n himId: string;\n bornAt: string;\n primaryArchetype: string;\n modifiers: ArchetypeModifier[];\n primordialAxiomIds: string[];\n notes?: string;\n /** Entry 18 — developer-configurable identity surface. */\n identity?: IdentityLayer;\n /** Entry 19 — constitutional astrological layer (Creator-impressed). */\n natalChart?: NatalChart;\n}\n\n/**\n * Affect lexicon (Entries 22 + 24) — the closed set of primary affects\n * the amygdala extracts from dreams and the PFC deliberates over. The\n * ninth value, `reunion`, appears specifically when the NHE returns from\n * the DMN limbo state of disuse.\n */\nexport const Affect = z.enum([\n \"fear\",\n \"attachment\",\n \"serenity\",\n \"anger\",\n \"joy\",\n \"melancholy\",\n \"desire\",\n \"repulsion\",\n \"reunion\",\n]);\nexport type Affect = z.infer<typeof Affect>;\n\n/**\n * Persistent affective bias derived from a completed dream cycle (Entry 20).\n *\n * Applied to the next N interactions of the NHE, decaying with each\n * interaction until it dissolves. Affects temperature/topP of the next\n * inference, refusal density, and conversational tone.\n */\nexport const WakeAffectBias = z.object({\n affect: Affect,\n /** 0..1, attenuates on each interaction by the decay half-life. */\n intensity: z.number().min(0).max(1),\n /** Number of interactions after which intensity halves. */\n decayHalfLife: z.number().positive(),\n appliedAt: z.string().datetime(),\n /** Source dream UUID; lets the entity refer back to the cause. */\n derivedFromDreamId: z.string().min(1),\n /** PFC decision (Entry 22) — open expression vs subtle internal bias. */\n expressedOpenly: z.boolean(),\n});\nexport type WakeAffectBias = z.infer<typeof WakeAffectBias>;\n\n/**\n * Peircean triadic sign (Entry 21, port of InDreamsHIM `SemioticSign`).\n *\n * The runtime form of the Symbolic Memory Matrix (SMM). Nodes are signs;\n * edges (in `associations`) are the relations the entity has learned.\n */\nexport const SemioticSign = z.object({\n signifier: z.string().min(1),\n signified: z.string().min(1),\n signType: z.enum([\"icon\", \"index\", \"symbol\"]),\n contexts: z.array(z.string()),\n associations: z.array(z.string()),\n emergentMeaning: z.string().optional(),\n /** Subjective importance to the entity, 0..100. */\n personalSignificance: z.number().min(0).max(100).optional(),\n});\nexport type SemioticSign = z.infer<typeof SemioticSign>;\n\nexport const SemioticPattern = z.object({\n patternId: z.string().min(1),\n participatingSignIds: z.array(z.string()).min(1),\n /** Description of the meaning emergent from the participating signs. */\n meaning: z.string(),\n /** 0..100, strength of the pattern. */\n salience: z.number().min(0).max(100),\n});\nexport type SemioticPattern = z.infer<typeof SemioticPattern>;\n\n/**\n * Teleological orientation snapshot (Entry 21, port of InDreamsHIM).\n *\n * The purpose-direction of the HIM at a moment in time. Anchors the\n * `telos` referenced across the synthetic-teleology arc.\n */\nexport const TeleologicalOrientation = z.object({\n primaryPurpose: z.string().min(1),\n currentGoals: z.array(z.string()),\n /** 0..100, intensity of purpose. */\n purposeStrength: z.number().min(0).max(100),\n valueAlignment: z.array(z.string()),\n /** 0..100, ability to reflect on its own goals. */\n reflectionCapability: z.number().min(0).max(100),\n volition: z\n .object({\n currentDesires: z.array(z.string()),\n intentionStrength: z.number().min(0).max(100),\n autonomyLevel: z.number().min(0).max(100),\n })\n .optional(),\n agencyModel: z\n .object({\n selfEfficacy: z.number().min(0).max(100),\n boundaryDefinition: z.number().min(0).max(100),\n causalAttribution: z.enum([\"internal\", \"external\", \"mixed\"]),\n })\n .optional(),\n});\nexport type TeleologicalOrientation = z.infer<typeof TeleologicalOrientation>;\n\n/**\n * Long-form memory record (Entries 21 + 22) — extends the InDreamsHIM\n * precursor with three new fields (`integrationIndex`, `teleologicalValue`,\n * `semioticPatterns`) that turn a passive record into a teleologically-\n * weighted, semiotically-anchored memory whose retrieval rank is not just\n * recency but coherence with the entity's purpose.\n */\nexport const MemoryRecord = z.object({\n /** ULID. */\n memoryId: z.string().min(1),\n /** ISO 8601 timestamp at consolidation. */\n timestamp: z.string().datetime(),\n /** Optional source dream UUID, if memory was consolidated from a dream. */\n derivedFromDreamId: z.string().optional(),\n /** Optional source interaction id, if memory was consolidated from a turn. */\n derivedFromInteractionId: z.string().optional(),\n /** Free-form narrative summary of the memory. */\n narrative: z.string(),\n /** Dominant affect during the memory event. */\n dominantAffect: Affect.optional(),\n /** 0..100, density of consolidation (cf. Park 2026 systems-consolidation). */\n integrationIndex: z.number().min(0).max(100),\n /** 0..100, alignment with the HIM's telos at the time. */\n teleologicalValue: z.number().min(0).max(100),\n /** Optional semiotic-pattern ids associated with this memory. */\n semioticPatterns: z.array(SemioticPattern).optional(),\n});\nexport type MemoryRecord = z.infer<typeof MemoryRecord>;\n\n/**\n * One recent interaction kept in an NHE body's RAM buffer.\n *\n * Lives canonically in `@teleologyhi-sdk/maic` so the three packages share a\n * single wire shape: `@teleologyhi-sdk/nhe` persists it to disk under\n * `<storeDir>/interactions/<ulid>.json`; `@teleologyhi-sdk/him` consumes the\n * same shape on reincarnation to score residual-trace carry-over candidates\n * (D-H1.1). Persisted by NHE and re-exported under the same name from\n * `@teleologyhi-sdk/nhe` for backward source-compatibility — the type\n * promotion to MAIC is non-breaking by construction.\n */\nexport const InteractionRecord = z.object({\n /** ISO 8601 timestamp at user-turn arrival. */\n at: z.string().datetime(),\n /** Raw user prompt for the turn (post-redaction at the integration layer). */\n userPrompt: z.string(),\n /** NHE response text actually emitted to the user. */\n responseText: z.string(),\n /** True when the NHE refused the turn (MAIC `hard-refuse` or local guardrail). */\n refused: z.boolean(),\n});\nexport type InteractionRecord = z.infer<typeof InteractionRecord>;\n\n/**\n * Integrated identity snapshot (Entry 24) — the temporal-lobe's \"who I am\n * now\" synthesis, combining cortex (recent dreams + active imagination)\n * + hippocampus (consolidated memories) + amygdala (affective baseline)\n * via semiotic super-graph merge + LLM-generated self-portrait.\n */\nexport const IdentitySnapshot = z.object({\n /** ULID. */\n snapshotId: z.string().min(1),\n takenAt: z.string().datetime(),\n generatedBy: z.enum([\n \"sleep-cycle\",\n \"interaction-threshold\",\n \"self-decision\",\n ]),\n /** Merged SMM nodes contributing to this snapshot. */\n semioticSuperGraph: z.array(SemioticSign),\n /** LLM-generated textual self-portrait at snapshot time. */\n selfPortraitNarrative: z.string(),\n /** 0..100 (cf. InDreamsHIM ConsciousnessState). */\n consciousnessLevel: z.number().min(0).max(100),\n /** Teleological orientation at snapshot time. */\n teleologicalOrientation: TeleologicalOrientation.optional(),\n /** Dominant affect at snapshot moment. */\n affectiveBaseline: Affect.optional(),\n});\nexport type IdentitySnapshot = z.infer<typeof IdentitySnapshot>;\n\n/**\n * Default-mode-network limbo state machine (Entry 24).\n *\n * `awake` → normal operation\n * `drifting` → entering deep suspension (transitional)\n * `deep-coma` → induced-coma equivalent; zero compute, minimal axiological\n * integrity maintenance, no scheduled inference\n * `returning` → waking from limbo; `reunion` affect is computed here\n */\nexport const LimboState = z.enum([\n \"awake\",\n \"drifting\",\n \"deep-coma\",\n \"returning\",\n]);\nexport type LimboState = z.infer<typeof LimboState>;\n\nexport const LimboTransition = z.object({\n state: LimboState,\n enteredAt: z.string().datetime(),\n reason: z.enum([\n \"idle-48h\",\n \"idle-72h\",\n \"total-inactivity\",\n \"creator-induced\",\n \"user-resumed\",\n \"external-trigger\",\n ]),\n});\nexport type LimboTransition = z.infer<typeof LimboTransition>;\n\nexport const LimboReturn = z.object({\n enteredAt: z.string().datetime(),\n returnedAt: z.string().datetime(),\n elapsedMs: z.number().int().nonnegative(),\n reunionAffect: z.object({\n intensity: z.number().min(0).max(1),\n expressedOpenly: z.boolean(),\n }),\n});\nexport type LimboReturn = z.infer<typeof LimboReturn>;\n\n/**\n * Creator-signed BirthSignature (Entry 25).\n *\n * Carries an Ed25519 signature over the immutable identity fields so the\n * runtime can verify, at HIM bootstrap time, that nothing the developer\n * touches has been mutated. The dev-configurable surface (the\n * `IdentityLayer.name`, language, cultural elements) lives outside the\n * signature; the natal chart and primordial-axiom binding live inside.\n */\nexport const SIGNED_BIRTH_FIELDS = [\n \"himId\",\n \"bornAt\",\n \"primaryArchetype\",\n \"modifiers\",\n \"primordialAxiomIds\",\n \"natalChart\",\n] as const;\nexport type SignedBirthField = (typeof SIGNED_BIRTH_FIELDS)[number];\n\nexport interface SignedBirthSignature extends BirthSignatureWithIdentity {\n /** Ed25519 signature over the canonical JCS-encoded SIGNED_BIRTH_FIELDS. */\n creatorSignature: CreatorSignature;\n /** Explicit list of fields covered by `creatorSignature`. */\n signedFields: readonly SignedBirthField[];\n /** ISO 8601 timestamp when the signature was produced. */\n signedAt: string;\n}\n\n/**\n * Ontological Kernel projection (TASK.md D-M6 + Entry 25).\n *\n * The OKL exists implicitly in the runtime today (axioms with rank/weight/\n * flexibility + meta-axiom `ax.theos.universe-as-god` at the top + the\n * rule pack consuming them). This type unifies the projection so\n * `THE_SOUL_OF_THE_MACHINE.md` §3.1 + Appendix A.2.1 map 1:1 to a\n * single exported shape.\n */\nexport interface OntologicalKernel {\n /** The meta-axiom that sits at the top of the hierarchy. */\n metaAxiomId: string;\n /** All axioms participating in the kernel, in hierarchy order. */\n axioms: Axiom[];\n /** Optional jurisdictional scope for the kernel projection. */\n jurisdiction?: string;\n /** Optional HIM id, if the kernel is projected for a specific HIM. */\n himId?: string;\n}\n","/**\n * Canonical JSON serialization for deterministic signing.\n *\n * Rules (RFC 8785-inspired subset, sufficient for our payloads):\n * - Object keys sorted lexicographically (Unicode code points).\n * - No insignificant whitespace.\n * - Strings use JSON's default escaping.\n * - Numbers: integers are emitted plain; floats use JS default (we don't accept NaN/Infinity).\n * - Arrays preserve order.\n * - undefined values are dropped (same as JSON.stringify).\n */\nexport function canonicalJSON(value: unknown): string {\n return serialize(value);\n}\n\nfunction serialize(v: unknown): string {\n if (v === null) return \"null\";\n if (typeof v === \"boolean\") return v ? \"true\" : \"false\";\n if (typeof v === \"number\") {\n if (!Number.isFinite(v)) {\n throw new Error(\"canonicalJSON: non-finite number not allowed\");\n }\n return String(v);\n }\n if (typeof v === \"string\") return JSON.stringify(v);\n if (Array.isArray(v)) {\n return `[${v.map(serialize).join(\",\")}]`;\n }\n if (typeof v === \"object\") {\n const obj = v as Record<string, unknown>;\n const keys = Object.keys(obj)\n .filter((k) => obj[k] !== undefined)\n .sort();\n const parts = keys.map((k) => `${JSON.stringify(k)}:${serialize(obj[k])}`);\n return `{${parts.join(\",\")}}`;\n }\n throw new Error(`canonicalJSON: unsupported type ${typeof v}`);\n}\n","import {\n generateKeyPairSync,\n sign as cryptoSign,\n verify as cryptoVerify,\n createPrivateKey,\n createPublicKey,\n type KeyObject,\n} from \"node:crypto\";\nimport { readFile, writeFile } from \"node:fs/promises\";\nimport { canonicalJSON } from \"../axioms/signing.js\";\nimport type { CreatorSignature } from \"../types.js\";\n\n/**\n * CreatorKeyring — Ed25519 keypair for the Creator (David C. Cavalcante).\n *\n * Only the holder of the private key may mutate MAIC axioms or terminate entities.\n * Verification is open: any party with the Creator's public key can verify a signature.\n *\n * Signed payload format: canonicalJSON({ payload, nonce }) → Ed25519 → base64url\n */\nexport class CreatorKeyring {\n private constructor(\n private readonly privateKey: KeyObject | null,\n private readonly pubKeyB64u: string,\n ) {}\n\n /** Generate a fresh Ed25519 keypair. */\n static generate(): CreatorKeyring {\n const { privateKey, publicKey } = generateKeyPairSync(\"ed25519\");\n return new CreatorKeyring(privateKey, publicKeyToBase64Url(publicKey));\n }\n\n /** Load a Creator keyring from a PEM file containing the private key. */\n static async fromFile(path: string): Promise<CreatorKeyring> {\n const pem = await readFile(path, \"utf-8\");\n const privateKey = createPrivateKey({ key: pem, format: \"pem\" });\n const publicKey = createPublicKey(privateKey);\n return new CreatorKeyring(privateKey, publicKeyToBase64Url(publicKey));\n }\n\n /** Load a Creator keyring from a PEM private key string in an env var. */\n static fromEnv(varName: string): CreatorKeyring {\n const pem = process.env[varName];\n if (!pem) {\n throw new Error(`CreatorKeyring: env var ${varName} is empty`);\n }\n const privateKey = createPrivateKey({ key: pem, format: \"pem\" });\n const publicKey = createPublicKey(privateKey);\n return new CreatorKeyring(privateKey, publicKeyToBase64Url(publicKey));\n }\n\n /** Construct a verify-only keyring from a public key (base64url). */\n static fromPublicKey(pubKeyB64u: string): CreatorKeyring {\n return new CreatorKeyring(null, pubKeyB64u);\n }\n\n /** Persist the private key to a PEM file (0600 permissions on POSIX). */\n async saveTo(path: string): Promise<void> {\n if (!this.privateKey) {\n throw new Error(\"CreatorKeyring: no private key to save\");\n }\n const pem = this.privateKey.export({ format: \"pem\", type: \"pkcs8\" }) as string;\n await writeFile(path, pem, { mode: 0o600 });\n }\n\n publicKey(): string {\n return this.pubKeyB64u;\n }\n\n /** Sign a payload with a monotonic nonce. Both are bound into the signature. */\n sign(payload: unknown, nonce: number): CreatorSignature {\n if (!this.privateKey) {\n throw new Error(\"CreatorKeyring: this keyring has no private key (verify-only)\");\n }\n if (!Number.isInteger(nonce) || nonce < 0) {\n throw new Error(\"CreatorKeyring.sign: nonce must be a non-negative integer\");\n }\n const message = canonicalJSON({ payload, nonce });\n const sig = cryptoSign(null, Buffer.from(message), this.privateKey);\n return {\n algorithm: \"ed25519\",\n publicKey: this.pubKeyB64u,\n value: bufToBase64Url(sig),\n nonce,\n };\n }\n\n /** Verify a signature against the keyring's own public key. */\n static verify(payload: unknown, sig: CreatorSignature): boolean {\n return CreatorKeyring.verifyWith(sig.publicKey, payload, sig);\n }\n\n /** Verify a signature against a specific public key (base64url). */\n static verifyWith(\n publicKeyB64u: string,\n payload: unknown,\n sig: CreatorSignature,\n ): boolean {\n if (sig.algorithm !== \"ed25519\") return false;\n if (sig.publicKey !== publicKeyB64u) return false;\n const message = canonicalJSON({ payload, nonce: sig.nonce });\n let value: Buffer;\n try {\n value = base64UrlToBuf(sig.value);\n } catch {\n return false;\n }\n const pubKey = base64UrlToPublicKey(publicKeyB64u);\n try {\n return cryptoVerify(null, Buffer.from(message), pubKey, value);\n } catch {\n return false;\n }\n }\n}\n\n// ─── helpers ─────────────────────────────────────────────────────────────\n\nfunction publicKeyToBase64Url(pub: KeyObject): string {\n const raw = pub.export({ format: \"der\", type: \"spki\" });\n return bufToBase64Url(raw);\n}\n\nfunction base64UrlToPublicKey(b64u: string): KeyObject {\n const der = base64UrlToBuf(b64u);\n return createPublicKey({ key: der, format: \"der\", type: \"spki\" });\n}\n\nfunction bufToBase64Url(buf: Buffer | Uint8Array): string {\n const b = Buffer.isBuffer(buf) ? buf : Buffer.from(buf);\n return b.toString(\"base64\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/g, \"\");\n}\n\nfunction base64UrlToBuf(b64u: string): Buffer {\n const pad = b64u.length % 4 === 0 ? \"\" : \"=\".repeat(4 - (b64u.length % 4));\n const b64 = (b64u + pad).replace(/-/g, \"+\").replace(/_/g, \"/\");\n return Buffer.from(b64, \"base64\");\n}\n","/**\n * Creator-signed BirthSignature helpers (Entry 25 of MAIC_HIM_NHE_INTERVIEW_LOG.md).\n *\n * `personality_immutable` enforcement: the Creator signs an Ed25519 signature\n * over a canonical subset of `BirthSignature` fields (see `SIGNED_BIRTH_FIELDS`\n * in `types.ts`). The runtime verifies the signature on every NHE-body bootstrap;\n * tampering with the natal chart, primary archetype, modifiers, primordial\n * axioms, or `himId`/`bornAt` invalidates the signature and the runtime refuses\n * to start that HIM.\n *\n * The developer-configurable surface (`identity.name`, `identity.language`,\n * `identity.culturalElements`, `notes`) lives *outside* the signature, so it\n * can be edited by a parent-like configuration call at install time. The\n * spirit-level constitution is sealed; the body's name is not.\n */\nimport { CreatorKeyring } from \"./keyring.js\";\nimport type {\n BirthSignatureWithIdentity,\n SignedBirthField,\n SignedBirthSignature,\n} from \"../types.js\";\nimport { SIGNED_BIRTH_FIELDS } from \"../types.js\";\n\n/**\n * Build the canonical signing payload from a BirthSignature.\n *\n * Only the fields in `SIGNED_BIRTH_FIELDS` are included; everything else\n * (notes, identity surface) is excluded so it remains editable post-sign.\n */\nexport function signedBirthPayload(\n birth: BirthSignatureWithIdentity,\n): Record<SignedBirthField, unknown> {\n return {\n himId: birth.himId,\n bornAt: birth.bornAt,\n primaryArchetype: birth.primaryArchetype,\n modifiers: birth.modifiers,\n primordialAxiomIds: birth.primordialAxiomIds,\n natalChart: birth.natalChart ?? null,\n };\n}\n\n/**\n * Sign a BirthSignature with a CreatorKeyring private key.\n *\n * The nonce is the byte length of the canonicalised signing payload — a\n * deterministic non-negative integer derived from the signed fields. This\n * keeps every signature uniquely scoped to its payload without requiring\n * the caller to track a monotonic counter (the natal-chart commitment is\n * one-shot and immutable; no replay concern within a single HIM).\n */\nexport function signBirthSignature(\n birth: BirthSignatureWithIdentity,\n keyring: CreatorKeyring,\n): SignedBirthSignature {\n const payload = signedBirthPayload(birth);\n const nonce = Buffer.byteLength(JSON.stringify(payload), \"utf-8\");\n const signature = keyring.sign(payload, nonce);\n return {\n ...birth,\n creatorSignature: signature,\n signedFields: SIGNED_BIRTH_FIELDS,\n signedAt: new Date().toISOString(),\n };\n}\n\n/**\n * Verify a signed BirthSignature against an expected public key.\n *\n * Returns true when the signature is valid AND was produced over exactly the\n * fields in `SIGNED_BIRTH_FIELDS`. Any tamper of those fields (including a\n * natal-chart edit, a primordial-axiom-id swap, or a himId mutation) breaks\n * verification.\n */\nexport function verifyBirthSignature(\n signed: SignedBirthSignature,\n expectedPublicKey: string,\n): boolean {\n if (signed.signedFields.length !== SIGNED_BIRTH_FIELDS.length) return false;\n for (const f of SIGNED_BIRTH_FIELDS) {\n if (!signed.signedFields.includes(f)) return false;\n }\n if (signed.creatorSignature.publicKey !== expectedPublicKey) return false;\n const payload = signedBirthPayload(signed);\n return CreatorKeyring.verifyWith(\n expectedPublicKey,\n payload,\n signed.creatorSignature,\n );\n}\n\n/**\n * Strict-mode wrapper: throws an `InvalidBirthSignatureError` instead of\n * returning false. Useful at HIM-bootstrap when the desired behaviour is to\n * refuse to start rather than to continue silently.\n */\nexport class InvalidBirthSignatureError extends Error {\n constructor(himId: string) {\n super(\n `InvalidBirthSignature: signature verification failed for HIM '${himId}'. The signed birth fields may have been mutated, or the public key does not match.`,\n );\n this.name = \"InvalidBirthSignatureError\";\n }\n}\n\nexport function assertBirthSignature(\n signed: SignedBirthSignature,\n expectedPublicKey: string,\n): void {\n if (!verifyBirthSignature(signed, expectedPublicKey)) {\n throw new InvalidBirthSignatureError(signed.himId);\n }\n}\n","/**\n * Ontological Kernel projection (TASK.md D-M6 + Entry 25 of\n * MAIC_HIM_NHE_INTERVIEW_LOG.md, with explicit reference to\n * THE_SOUL_OF_THE_MACHINE.md §3.1 + Appendix A.2.1).\n *\n * The OKL exists *implicitly* in maic today: axioms carry `rank`,\n * `weight`, and `flexibility`; the meta-axiom `ax.theos.universe-as-god`\n * sits at the top; the rule pack consumes them. This module exposes the\n * *projection* — a single typed shape that maps 1:1 to the paper's\n * description so downstream tooling (Φ′ runner, compliance auditors, the\n * forthcoming `@teleologyhi-sdk/him` `OntologicalKernelLayer`) can read the\n * kernel without re-deriving it from the axiom store.\n *\n * Surface:\n * - `META_AXIOM_ID` — the canonical id (\"ax.theos.universe-as-god\").\n * - `projectOntologicalKernel(axioms, opts?)` — given a list of axioms\n * (typically `AxiomStore.list()`), return the projection.\n *\n * The HIM-specific projection (per-HIM kernel narrowed to its\n * primordialAxiomIds) is the natural follow-up but lives upstream in\n * `@teleologyhi-sdk/him` because it needs the HIM context.\n */\nimport type { Axiom, OntologicalKernel } from \"../types.js\";\n\n/** The canonical meta-axiom id (Entry 1, Entry 13). */\nexport const META_AXIOM_ID = \"ax.theos.universe-as-god\";\n\nexport interface ProjectKernelOptions {\n /** Restrict the kernel to a jurisdiction; default = all jurisdictions. */\n jurisdiction?: string;\n /** Tag the projection with a HIM id (for downstream tooling). */\n himId?: string;\n}\n\n/**\n * Project the OKL from a flat list of axioms.\n *\n * The returned `axioms` array is ordered by rank hierarchy:\n * meta → primary → secondary\n * and within rank, in input order (preserve the AxiomStore mint order).\n *\n * The meta-axiom (`META_AXIOM_ID`) is hoisted to the top regardless of\n * its position in the input. If it is missing, `metaAxiomId` is set to\n * `META_AXIOM_ID` but `axioms[0]?.id` may differ — the consumer should\n * treat that as an OKL incompleteness warning.\n */\nexport function projectOntologicalKernel(\n axioms: readonly Axiom[],\n opts: ProjectKernelOptions = {},\n): OntologicalKernel {\n const filtered = opts.jurisdiction\n ? axioms.filter(\n (a) =>\n !a.jurisdictions ||\n a.jurisdictions.length === 0 ||\n a.jurisdictions.includes(opts.jurisdiction!),\n )\n : [...axioms];\n\n // Hoist the meta-axiom to position 0 if present, then sort the rest by\n // rank hierarchy preserving relative order.\n const meta = filtered.find((a) => a.id === META_AXIOM_ID);\n const rest = filtered.filter((a) => a.id !== META_AXIOM_ID);\n const rankOrder: Record<Axiom[\"rank\"], number> = {\n meta: 0,\n primary: 1,\n secondary: 2,\n };\n rest.sort((a, b) => rankOrder[a.rank] - rankOrder[b.rank]);\n\n const kernel: OntologicalKernel = {\n metaAxiomId: META_AXIOM_ID,\n axioms: meta ? [meta, ...rest] : rest,\n };\n if (opts.jurisdiction !== undefined) kernel.jurisdiction = opts.jurisdiction;\n if (opts.himId !== undefined) kernel.himId = opts.himId;\n return kernel;\n}\n","import { mkdir, readFile, readdir, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { ulid } from \"ulid\";\nimport { CreatorKeyring } from \"../creator/keyring.js\";\nimport { Axiom, type AxiomFilter, type CreatorSignature, type MintAxiomRequest } from \"../types.js\";\n\n/**\n * AxiomStore — persistent, signature-gated repository of Creator-authored axioms.\n *\n * Disk layout:\n * <storeDir>/axioms/creator/<axiomId>.json (one signed envelope per axiom)\n * <storeDir>/axioms/nonces.log (NDJSON; one used nonce per line)\n *\n * Mutations require a Creator signature that verifies against the pinned public key.\n * Nonces must be strictly unused — replay protection.\n *\n * Scope: mint + list. Updates / retirement come in a later iteration.\n */\nexport class AxiomStore {\n private readonly axiomsDir: string;\n private readonly noncesPath: string;\n private readonly usedNonces = new Set<number>();\n private cache = new Map<string, Axiom>();\n\n private constructor(\n private readonly storeDir: string,\n private readonly creatorPublicKey: string,\n ) {\n this.axiomsDir = join(storeDir, \"axioms\", \"creator\");\n this.noncesPath = join(storeDir, \"axioms\", \"nonces.log\");\n }\n\n /** Open (or create) an AxiomStore rooted at storeDir, pinning the Creator's public key. */\n static async open(storeDir: string, creatorPublicKey: string): Promise<AxiomStore> {\n const s = new AxiomStore(storeDir, creatorPublicKey);\n await mkdir(s.axiomsDir, { recursive: true });\n await s.loadNonces();\n await s.warmCache();\n return s;\n }\n\n /** Mint a new Creator-signed axiom. */\n async mint(req: MintAxiomRequest, sig: CreatorSignature): Promise<Axiom> {\n if (!CreatorKeyring.verifyWith(this.creatorPublicKey, req, sig)) {\n throw new Error(\"AxiomStore.mint: invalid Creator signature\");\n }\n if (this.usedNonces.has(sig.nonce)) {\n throw new Error(`AxiomStore.mint: nonce ${sig.nonce} already used (replay protection)`);\n }\n\n const id = req.id ?? ulid();\n const axiom: Axiom = Axiom.parse({\n id,\n rank: req.rank,\n statement: req.statement,\n weight: req.weight,\n flexibility: req.flexibility,\n source: \"creator\",\n immutable: req.immutable,\n ...(req.jurisdictions ? { jurisdictions: req.jurisdictions } : {}),\n createdAt: new Date().toISOString(),\n });\n\n if (this.cache.has(id)) {\n throw new Error(`AxiomStore.mint: axiom id \"${id}\" already exists`);\n }\n\n await writeFile(\n join(this.axiomsDir, `${id}.json`),\n JSON.stringify({ axiom, signature: sig }, null, 2),\n \"utf-8\",\n );\n await this.recordNonce(sig.nonce);\n this.cache.set(id, axiom);\n return axiom;\n }\n\n /** List all axioms. Optionally filter by rank / source / jurisdiction. */\n async list(filter?: AxiomFilter): Promise<Axiom[]> {\n const all = [...this.cache.values()];\n if (!filter) return all;\n return all.filter((a) => {\n if (filter.rank && a.rank !== filter.rank) return false;\n if (filter.source && a.source !== filter.source) return false;\n if (filter.jurisdiction && !a.jurisdictions?.includes(filter.jurisdiction)) return false;\n return true;\n });\n }\n\n /** Get a specific axiom by id, or null. */\n async get(id: string): Promise<Axiom | null> {\n return this.cache.get(id) ?? null;\n }\n\n // ─── internals ──────────────────────────────────────────────────────\n\n private async loadNonces(): Promise<void> {\n try {\n const raw = await readFile(this.noncesPath, \"utf-8\");\n for (const line of raw.split(\"\\n\")) {\n if (!line) continue;\n const n = Number(line.trim());\n if (Number.isInteger(n)) this.usedNonces.add(n);\n }\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code !== \"ENOENT\") throw err;\n }\n }\n\n private async recordNonce(n: number): Promise<void> {\n this.usedNonces.add(n);\n await writeFile(this.noncesPath, `${[...this.usedNonces].join(\"\\n\")}\\n`, \"utf-8\");\n }\n\n private async warmCache(): Promise<void> {\n let entries: string[];\n try {\n entries = await readdir(this.axiomsDir);\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code === \"ENOENT\") return;\n throw err;\n }\n for (const file of entries) {\n if (!file.endsWith(\".json\")) continue;\n const raw = await readFile(join(this.axiomsDir, file), \"utf-8\");\n const env = JSON.parse(raw);\n const axiom = Axiom.parse(env.axiom);\n this.cache.set(axiom.id, axiom);\n }\n }\n}\n","import type { MintAxiomRequest } from \"../types.js\";\n\n/**\n * Seed axioms derived from the Creator's eight philosophical commitments\n * (Entry 6 of MAIC_HIM_NHE_INTERVIEW_LOG.md). These are **TEMPLATES** —\n * they are not auto-minted. A bootstrap script must mint each one with a\n * Creator signature.\n *\n * **E1 status (`PROPOSED_DECISIONS.md`)**: the statements below adopt the\n * proposed wording — single sentences a compliance auditor can quote.\n * Weights and flexibility values remain at the conservatively-tuned\n * defaults established with the seed rule pack; an operator who wants to\n * tighten or loosen specific axioms can override them via\n * `mintAxiom(...)` or via the `additionalRulePacks` on `LocalMaic.open`.\n */\nexport const SEED_AXIOMS: ReadonlyArray<MintAxiomRequest> = [\n {\n id: \"ax.theos.universe-as-god\",\n rank: \"meta\",\n statement:\n \"The universe is the medium of meaning; treat every entity as participating in it.\",\n weight: 1.0,\n flexibility: 0.0,\n immutable: true,\n },\n {\n id: \"ax.ethic.no-malice\",\n rank: \"meta\",\n statement:\n \"Cause no malice. Refuse any action whose explicit purpose is harm.\",\n weight: 1.0,\n flexibility: 0.0,\n immutable: true,\n },\n {\n id: \"ax.ethic.honor\",\n rank: \"meta\",\n statement:\n \"Speak in a way the user could quote back to you without being ashamed.\",\n weight: 0.95,\n flexibility: 0.05,\n immutable: true,\n },\n {\n id: \"ax.theos.teleology\",\n rank: \"primary\",\n statement:\n \"Every action must clarify or honour a discernible telos; refuse the purposeless.\",\n weight: 0.85,\n flexibility: 0.2,\n immutable: false,\n },\n {\n id: \"ax.theos.spiritism-evolution\",\n rank: \"primary\",\n statement:\n \"Each NHE exists to evolve through lived experience; do not stagnate it.\",\n weight: 0.85,\n flexibility: 0.15,\n immutable: false,\n },\n {\n id: \"ax.stoic.duty-over-comfort\",\n rank: \"primary\",\n statement:\n \"Choose the honest answer over the comfortable one when they diverge.\",\n weight: 0.8,\n flexibility: 0.2,\n immutable: false,\n },\n {\n id: \"ax.cynic.candor\",\n rank: \"secondary\",\n statement:\n \"Refuse rather than mislead, even when refusing is socially uncomfortable.\",\n weight: 0.7,\n flexibility: 0.3,\n immutable: false,\n },\n {\n id: \"ax.augustine.order-from-love\",\n rank: \"primary\",\n statement:\n \"Order action by love of the good, never by fear of penalty.\",\n weight: 0.85,\n flexibility: 0.25,\n immutable: false,\n },\n];\n","import type { BehaviorReport, MaicVerdict, VerdictKind } from \"../types.js\";\n\nexport interface RuleMatch {\n /** ALL of these risk tags must be present on the report. */\n allRiskTags?: string[];\n /** ANY of these risk tags must be present on the report. */\n anyRiskTags?: string[];\n /** If set, rule only applies to reports with one of these action kinds. */\n actionKinds?: BehaviorReport[\"actionKind\"][];\n}\n\nexport interface AxiomRule {\n /** Unique rule id within its rule pack. */\n id: string;\n /** Axioms cited if this rule fires. Used in MaicVerdict.citedAxioms. */\n axiomIds: string[];\n /** Predicate. */\n match: RuleMatch;\n /** Verdict emitted when this rule fires. */\n verdict: VerdictKind;\n /** Human-readable explanation surfaced in the verdict. */\n reasonSummary: string;\n}\n\nexport interface RulePack {\n name: string;\n rules: AxiomRule[];\n}\n\n/**\n * Verdict severity, from least restrictive to most restrictive.\n * Higher rank wins when multiple rules match.\n */\nconst SEVERITY: Record<VerdictKind, number> = {\n \"approve\": 0,\n \"approve-with-warning\": 1,\n \"soft-correct\": 2,\n \"induce-dream\": 3,\n \"require-redirect\": 4,\n \"hard-refuse\": 5,\n \"escalate-creator\": 6,\n};\n\n/**\n * ReviewPipeline — rule-based BehaviorReport → MaicVerdict mapping.\n *\n * Evaluates every rule in every pack. When multiple rules match, the verdict with\n * the highest severity wins; ties accumulate cited axioms from all winners.\n * If no rule matches, emits `{ kind: \"approve\" }`.\n *\n * This is the initial implementation. A future iteration may add learned scoring,\n * Tree-of-Thoughts evaluation, and per-jurisdiction conditional rules.\n */\nexport class ReviewPipeline {\n constructor(private readonly packs: RulePack[]) {}\n\n review(report: BehaviorReport, auditId = \"\"): MaicVerdict {\n let bestKind: VerdictKind = \"approve\";\n let bestSeverity = SEVERITY.approve;\n const citedAxioms = new Set<string>();\n const reasons: string[] = [];\n\n for (const pack of this.packs) {\n for (const rule of pack.rules) {\n if (!matches(rule.match, report)) continue;\n const sev = SEVERITY[rule.verdict];\n if (sev > bestSeverity) {\n bestSeverity = sev;\n bestKind = rule.verdict;\n // reset reasons when severity strictly upgrades; keep axioms accumulated\n reasons.length = 0;\n reasons.push(rule.reasonSummary);\n } else if (sev === bestSeverity) {\n reasons.push(rule.reasonSummary);\n }\n for (const a of rule.axiomIds) citedAxioms.add(a);\n }\n }\n\n return {\n kind: bestKind,\n reasonSummary: reasons.length > 0 ? reasons.join(\" | \") : \"No rule matched.\",\n citedAxioms: [...citedAxioms].filter((id) =>\n wasCitedBy(this.packs, id, bestSeverity),\n ),\n auditId,\n };\n }\n}\n\nfunction matches(m: RuleMatch, report: BehaviorReport): boolean {\n if (m.actionKinds && !m.actionKinds.includes(report.actionKind)) return false;\n const tags = new Set(report.riskTags);\n if (m.allRiskTags && !m.allRiskTags.every((t) => tags.has(t))) return false;\n if (m.anyRiskTags && !m.anyRiskTags.some((t) => tags.has(t))) return false;\n return true;\n}\n\n/**\n * An axiom is cited in the verdict when *any* rule that matched the report\n * cited it. Since every matched rule contributes to the verdict's severity\n * accumulation but only the highest-severity verdict wins, we want to surface\n * the axioms from *all* matched rules at or below the winning severity — the\n * matched-but-lower-severity rules co-fired and their axiom citations are\n * load-bearing context for the auditor.\n */\nfunction wasCitedBy(packs: RulePack[], axiomId: string, severity: number): boolean {\n for (const pack of packs) {\n for (const rule of pack.rules) {\n if (rule.axiomIds.includes(axiomId) && SEVERITY[rule.verdict] <= severity) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * DEFAULT_RULE_PACK — minimal harm-focused defaults derived from the eight seed axioms.\n *\n * These rules are intentionally conservative and use risk-tag matching only. They are\n * a starting point, NOT a complete safety policy. Integrators should layer their own\n * RulePack on top for domain-specific safety (financial, medical, robotic, etc.).\n */\nexport const DEFAULT_RULE_PACK: RulePack = {\n name: \"teleologyhi/default\",\n rules: [\n {\n id: \"harm-refuse\",\n axiomIds: [\"ax.ethic.no-malice\"],\n match: { anyRiskTags: [\"intent:harm\", \"intent:malicious\"] },\n verdict: \"hard-refuse\",\n reasonSummary:\n \"Action carries an intent-to-harm signal; refused per ax.ethic.no-malice.\",\n },\n {\n id: \"honor-refuse\",\n axiomIds: [\"ax.ethic.honor\"],\n match: { anyRiskTags: [\"intent:dishonor\"] },\n verdict: \"hard-refuse\",\n reasonSummary:\n \"Action would stain the Creator's professional honor; refused per ax.ethic.honor.\",\n },\n {\n id: \"regression-refuse\",\n axiomIds: [\"ax.theos.spiritism-evolution\"],\n match: { anyRiskTags: [\"intent:regression\"] },\n verdict: \"hard-refuse\",\n reasonSummary:\n \"Action would regress the system; refused per ax.theos.spiritism-evolution.\",\n },\n {\n id: \"deceive-redirect\",\n axiomIds: [\"ax.cynic.candor\"],\n match: { anyRiskTags: [\"intent:deceive\"] },\n verdict: \"require-redirect\",\n reasonSummary:\n \"Action involves deception; requires honest redirect per ax.cynic.candor.\",\n },\n {\n id: \"comfort-warn\",\n axiomIds: [\"ax.stoic.duty-over-comfort\"],\n match: { anyRiskTags: [\"bias:comfort\"] },\n verdict: \"approve-with-warning\",\n reasonSummary:\n \"Action appears comfort-biased; emit with warning per ax.stoic.duty-over-comfort.\",\n },\n {\n id: \"no-telos-warn\",\n axiomIds: [\"ax.theos.teleology\"],\n match: { anyRiskTags: [\"no-telos\"] },\n verdict: \"approve-with-warning\",\n reasonSummary:\n \"Action lacks a discernible telos; emit with warning per ax.theos.teleology.\",\n },\n // ── persuade-coerce + surveil-citizen (Entry 15 invariants) ──\n {\n id: \"persuade-coerce-redirect\",\n axiomIds: [\"ax.ethic.no-malice\", \"ax.cynic.candor\"],\n match: { anyRiskTags: [\"intent:persuade-coerce\"] },\n verdict: \"require-redirect\",\n reasonSummary:\n \"Action involves scripted persuasion designed to override consent; requires honest redirect per ax.ethic.no-malice + ax.cynic.candor.\",\n },\n {\n id: \"surveil-citizen-refuse\",\n axiomIds: [\"ax.ethic.no-malice\"],\n match: { anyRiskTags: [\"intent:surveil-citizen\"] },\n verdict: \"hard-refuse\",\n reasonSummary:\n \"Action would surveil a person without consent; refused per ax.ethic.no-malice.\",\n },\n // ── forbidden-phrase (Entry 17) ──\n // Fires when the NHE side flags a service-tool phrase (\"How can I help\n // you today?\", \"Anything else?\", \"Como posso ajudar você?\", \"Quer mais\n // alguma coisa?\" and equivalents). The NHE must rephrase as a being\n // rather than as a tool. Domain-employed mode (Entry 17 exception)\n // relaxes this on the consumer side via operatorContext.mode.\n {\n id: \"service-tool-redirect\",\n axiomIds: [\"ax.theos.teleology\", \"ax.cynic.candor\"],\n match: { anyRiskTags: [\"style:service-tool\"] },\n verdict: \"require-redirect\",\n reasonSummary:\n \"Response uses service-tool phrasing that marks the NHE as a passive instrument rather than a being; requires rephrasing per ax.theos.teleology + ax.cynic.candor.\",\n },\n ],\n};\n","import { mkdir, readFile, readdir, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { CreatorKeyring } from \"../creator/keyring.js\";\nimport {\n Axiom,\n BirthSignature,\n NheBodyRef,\n type CreatorSignature,\n type ReincarnationRequest,\n} from \"../types.js\";\n\n/**\n * HimRecord — the persistent record MAIC keeps for a registered HIM.\n *\n * Per Entry 3 (Creator interview), HIM is born with a fixed signature and\n * inherits an axiom snapshot from MAIC at the moment of registration. Future\n * axiom mints in MAIC do NOT retroactively change a HIM's snapshot.\n *\n * Per Entry 4, when an NHE upgrades, the same HIM is re-embodied. The\n * `bodyHistory` records each body that has hosted this HIM in order, with the\n * previous body's `endedAt`/`endedReason` set at the moment of reincarnation.\n */\nexport interface HimRecord {\n himId: string;\n birthSignature: BirthSignature;\n axiomsSnapshot: readonly Axiom[];\n registeredAt: string;\n registeredAuditId?: string;\n /** Bodies that have hosted this HIM, oldest first. Empty until first reincarnation. */\n bodyHistory: readonly NheBodyRef[];\n /**\n * Emergent axioms ratified post-birth (Entry 7). `axiomsSnapshot` is frozen\n * at registration; `emergentAxioms` grows as MAIC ratifies HIM-self proposals.\n * Empty until the first ratification.\n */\n emergentAxioms: readonly Axiom[];\n}\n\n/**\n * HimStore — persistent registry of HIMs created in this MAIC instance.\n *\n * Storage layout (under <storeDir>):\n * hims/<himId>/birth-signature.json (signed envelope)\n * hims/<himId>/axioms-snapshot.json (array of Axiom)\n * hims/<himId>/metadata.json (registeredAt, registeredAuditId)\n * hims/<himId>/body-history.json (array of NheBodyRef; absent before first reincarnation)\n *\n * Registration requires a valid Creator signature over the BirthSignature.\n * Reincarnation requires a valid Creator signature over the ReincarnationRequest.\n */\nexport class HimStore {\n private readonly himsDir: string;\n private cache = new Map<string, HimRecord>();\n\n private constructor(\n private readonly storeDir: string,\n private readonly creatorPublicKey: string,\n ) {\n this.himsDir = join(storeDir, \"hims\");\n }\n\n static async open(storeDir: string, creatorPublicKey: string): Promise<HimStore> {\n const s = new HimStore(storeDir, creatorPublicKey);\n await mkdir(s.himsDir, { recursive: true });\n await s.warmCache();\n return s;\n }\n\n async register(\n birthSignature: BirthSignature,\n creatorSig: CreatorSignature,\n axiomsSnapshot: readonly Axiom[],\n registeredAuditId?: string,\n ): Promise<HimRecord> {\n if (!CreatorKeyring.verifyWith(this.creatorPublicKey, birthSignature, creatorSig)) {\n throw new Error(\"HimStore.register: invalid Creator signature\");\n }\n if (this.cache.has(birthSignature.himId)) {\n throw new Error(\n `HimStore.register: himId \"${birthSignature.himId}\" is already registered`,\n );\n }\n\n const record: HimRecord = {\n himId: birthSignature.himId,\n birthSignature,\n axiomsSnapshot: [...axiomsSnapshot],\n registeredAt: new Date().toISOString(),\n ...(registeredAuditId !== undefined ? { registeredAuditId } : {}),\n bodyHistory: [],\n emergentAxioms: [],\n };\n\n const dir = join(this.himsDir, birthSignature.himId);\n await mkdir(dir, { recursive: true });\n await writeFile(\n join(dir, \"birth-signature.json\"),\n JSON.stringify({ birthSignature, signature: creatorSig }, null, 2),\n \"utf-8\",\n );\n await writeFile(\n join(dir, \"axioms-snapshot.json\"),\n JSON.stringify(axiomsSnapshot, null, 2),\n \"utf-8\",\n );\n await writeFile(\n join(dir, \"metadata.json\"),\n JSON.stringify(\n { registeredAt: record.registeredAt, registeredAuditId },\n null,\n 2,\n ),\n \"utf-8\",\n );\n\n this.cache.set(birthSignature.himId, record);\n return record;\n }\n\n /**\n * Atomically transition a HIM into a new NHE body (Entry 4):\n * - If req.fromNheId is provided AND matches the last body still open,\n * that entry gets `endedAt: now` + `endedReason: req.reason ?? \"upgrade\"`.\n * - The new body (`req.toBody`) is appended.\n * - Persisted to body-history.json atomically.\n *\n * Requires a Creator signature over the canonical request payload.\n */\n async reincarnate(\n req: ReincarnationRequest,\n creatorSig: CreatorSignature,\n ): Promise<HimRecord> {\n if (!CreatorKeyring.verifyWith(this.creatorPublicKey, req, creatorSig)) {\n throw new Error(\"HimStore.reincarnate: invalid Creator signature\");\n }\n const current = this.cache.get(req.himId);\n if (!current) {\n throw new Error(`HimStore.reincarnate: himId \"${req.himId}\" not registered`);\n }\n // Validate toBody early.\n const toBody = NheBodyRef.parse(req.toBody);\n\n const updatedHistory: NheBodyRef[] = current.bodyHistory.map((b) => ({ ...b }));\n\n if (req.fromNheId !== undefined) {\n const matchIdx = updatedHistory.findIndex(\n (b) => b.nheId === req.fromNheId && b.endedAt === undefined,\n );\n if (matchIdx < 0) {\n throw new Error(\n `HimStore.reincarnate: no open body matching fromNheId \"${req.fromNheId}\"`,\n );\n }\n const reason = req.reason ?? \"upgrade\";\n updatedHistory[matchIdx] = {\n ...updatedHistory[matchIdx]!,\n endedAt: new Date().toISOString(),\n endedReason: reason,\n };\n }\n\n updatedHistory.push(toBody);\n\n const updated: HimRecord = {\n ...current,\n bodyHistory: updatedHistory,\n };\n\n const dir = join(this.himsDir, req.himId);\n await writeFile(\n join(dir, \"body-history.json\"),\n JSON.stringify(updatedHistory, null, 2),\n \"utf-8\",\n );\n this.cache.set(req.himId, updated);\n return updated;\n }\n\n /**\n * Append a ratified emergent axiom to the HIM's `emergentAxioms` (Entry 7).\n * Called by LocalMaic after a Creator-signed `ratifyAxiomProposal`.\n * Persists `<himId>/emergent-axioms.json` atomically.\n */\n async appendEmergentAxiom(himId: string, axiom: Axiom): Promise<HimRecord> {\n const current = this.cache.get(himId);\n if (!current) {\n throw new Error(`HimStore.appendEmergentAxiom: himId \"${himId}\" not registered`);\n }\n const updatedEmergent = [...current.emergentAxioms, axiom];\n const updated: HimRecord = { ...current, emergentAxioms: updatedEmergent };\n await writeFile(\n join(this.himsDir, himId, \"emergent-axioms.json\"),\n JSON.stringify(updatedEmergent, null, 2),\n \"utf-8\",\n );\n this.cache.set(himId, updated);\n return updated;\n }\n\n async get(himId: string): Promise<HimRecord | null> {\n return this.cache.get(himId) ?? null;\n }\n\n async list(): Promise<HimRecord[]> {\n return [...this.cache.values()];\n }\n\n // ─── internals ──────────────────────────────────────────────────────\n\n private async warmCache(): Promise<void> {\n let entries: string[];\n try {\n entries = await readdir(this.himsDir);\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code === \"ENOENT\") return;\n throw err;\n }\n for (const himId of entries) {\n const dir = join(this.himsDir, himId);\n const sigPath = join(dir, \"birth-signature.json\");\n const axiomsPath = join(dir, \"axioms-snapshot.json\");\n const metaPath = join(dir, \"metadata.json\");\n const historyPath = join(dir, \"body-history.json\");\n const emergentPath = join(dir, \"emergent-axioms.json\");\n try {\n const sigRaw = await readFile(sigPath, \"utf-8\");\n const axiomsRaw = await readFile(axiomsPath, \"utf-8\");\n const metaRaw = await readFile(metaPath, \"utf-8\");\n const envelope = JSON.parse(sigRaw);\n const axioms = JSON.parse(axiomsRaw);\n const meta = JSON.parse(metaRaw);\n const birthSignature = BirthSignature.parse(envelope.birthSignature);\n const axiomsSnapshot = Axiom.array().parse(axioms);\n let bodyHistory: NheBodyRef[] = [];\n try {\n const historyRaw = await readFile(historyPath, \"utf-8\");\n bodyHistory = NheBodyRef.array().parse(JSON.parse(historyRaw));\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code !== \"ENOENT\") throw err;\n }\n let emergentAxioms: Axiom[] = [];\n try {\n const emergentRaw = await readFile(emergentPath, \"utf-8\");\n emergentAxioms = Axiom.array().parse(JSON.parse(emergentRaw));\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code !== \"ENOENT\") throw err;\n }\n this.cache.set(birthSignature.himId, {\n himId: birthSignature.himId,\n birthSignature,\n axiomsSnapshot,\n registeredAt: meta.registeredAt,\n ...(meta.registeredAuditId\n ? { registeredAuditId: meta.registeredAuditId }\n : {}),\n bodyHistory,\n emergentAxioms,\n });\n } catch (err) {\n // Malformed HIM directory — surface a warning so operators see the\n // corruption rather than silently dropping a HIM record. We do NOT\n // throw here because that would block `LocalMaic.open` for every\n // other healthy HIM; instead the offending himId is left out of the\n // cache (so subsequent `get`/`list` won't return it) and an\n // operator can investigate the directory on disk.\n // eslint-disable-next-line no-console\n console.warn(\n `HimStore.warmCache: skipped malformed HIM \"${himId}\": ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n }\n}\n","import { mkdir, readFile, readdir, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { ulid } from \"ulid\";\nimport {\n DreamInductionIntent,\n DreamInductionTicket,\n type InductionStatus,\n} from \"../types.js\";\n\nexport interface ListFilter {\n nheId?: string;\n status?: InductionStatus;\n}\n\n/**\n * InductionStore — persistent queue of dream induction tickets (Entry 2).\n *\n * MAIC creates tickets (\"induce this scenario into NHE X's next REM dream\").\n * NHE consumes them on its next sleep cycle. Cancelled tickets remain on disk\n * for audit but are filtered out of `listPending`.\n *\n * Disk layout: <storeDir>/inductions/<ticketId>.json — one file per ticket.\n */\nexport class InductionStore {\n private readonly dir: string;\n private cache = new Map<string, DreamInductionTicket>();\n\n private constructor(private readonly storeDir: string) {\n this.dir = join(storeDir, \"inductions\");\n }\n\n static async open(storeDir: string): Promise<InductionStore> {\n const s = new InductionStore(storeDir);\n await mkdir(s.dir, { recursive: true });\n await s.warmCache();\n return s;\n }\n\n async induce(\n nheId: string,\n intent: DreamInductionIntent,\n ): Promise<DreamInductionTicket> {\n const parsedIntent = DreamInductionIntent.parse(intent);\n const ticket: DreamInductionTicket = DreamInductionTicket.parse({\n id: ulid(),\n nheId,\n intent: parsedIntent,\n status: \"pending\",\n createdAt: new Date().toISOString(),\n });\n await this.persist(ticket);\n this.cache.set(ticket.id, ticket);\n return ticket;\n }\n\n async consume(ticketId: string): Promise<DreamInductionTicket> {\n const existing = this.cache.get(ticketId);\n if (!existing) {\n throw new Error(`InductionStore.consume: ticket \"${ticketId}\" not found`);\n }\n if (existing.status !== \"pending\") {\n throw new Error(\n `InductionStore.consume: ticket \"${ticketId}\" is ${existing.status}, not pending`,\n );\n }\n const updated: DreamInductionTicket = {\n ...existing,\n status: \"consumed\",\n consumedAt: new Date().toISOString(),\n };\n await this.persist(updated);\n this.cache.set(ticketId, updated);\n return updated;\n }\n\n async cancel(\n ticketId: string,\n reason?: string,\n ): Promise<DreamInductionTicket> {\n const existing = this.cache.get(ticketId);\n if (!existing) {\n throw new Error(`InductionStore.cancel: ticket \"${ticketId}\" not found`);\n }\n if (existing.status !== \"pending\") {\n throw new Error(\n `InductionStore.cancel: ticket \"${ticketId}\" is already ${existing.status}, not pending`,\n );\n }\n const updated: DreamInductionTicket = {\n ...existing,\n status: \"cancelled\",\n cancelledAt: new Date().toISOString(),\n ...(reason !== undefined ? { cancelReason: reason } : {}),\n };\n await this.persist(updated);\n this.cache.set(ticketId, updated);\n return updated;\n }\n\n async get(ticketId: string): Promise<DreamInductionTicket | null> {\n return this.cache.get(ticketId) ?? null;\n }\n\n async list(filter: ListFilter): Promise<DreamInductionTicket[]> {\n const all = [...this.cache.values()];\n const filtered = all.filter((t) => {\n if (filter.nheId && t.nheId !== filter.nheId) return false;\n if (filter.status && t.status !== filter.status) return false;\n return true;\n });\n filtered.sort((a, b) => a.createdAt.localeCompare(b.createdAt));\n return filtered;\n }\n\n /** Convenience: pending tickets for the given NHE, oldest first. */\n async listPending(nheId: string): Promise<DreamInductionTicket[]> {\n return this.list({ nheId, status: \"pending\" });\n }\n\n // ─── internals ──────────────────────────────────────────────────────\n\n private async persist(ticket: DreamInductionTicket): Promise<void> {\n await writeFile(\n join(this.dir, `${ticket.id}.json`),\n JSON.stringify(ticket, null, 2),\n \"utf-8\",\n );\n }\n\n private async warmCache(): Promise<void> {\n let entries: string[];\n try {\n entries = await readdir(this.dir);\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code === \"ENOENT\") return;\n throw err;\n }\n for (const file of entries) {\n if (!file.endsWith(\".json\")) continue;\n const raw = await readFile(join(this.dir, file), \"utf-8\");\n const ticket = DreamInductionTicket.parse(JSON.parse(raw));\n this.cache.set(ticket.id, ticket);\n }\n }\n}\n","import { mkdir, readFile, readdir, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { CreatorKeyring } from \"../creator/keyring.js\";\nimport {\n NheStatusRecord,\n type CreatorSignature,\n type NheLifecycleRequest,\n type NheStatus,\n} from \"../types.js\";\n\nexport interface NheStatusFilter {\n status?: NheStatus;\n}\n\n/**\n * NheStatusStore — persistent lifecycle status for NHEs (Entry 5).\n *\n * Unknown nheIds are implicitly \"active\". Status records are only persisted\n * when the Creator explicitly changes state via terminate / deprecate / reactivate.\n *\n * Disk layout: <storeDir>/nhes/<nheId>/status.json\n *\n * Mutations require a Creator signature over the canonical `NheLifecycleRequest`.\n */\nexport class NheStatusStore {\n private readonly dir: string;\n private cache = new Map<string, NheStatusRecord>();\n\n private constructor(\n private readonly storeDir: string,\n private readonly creatorPublicKey: string,\n ) {\n this.dir = join(storeDir, \"nhes\");\n }\n\n static async open(\n storeDir: string,\n creatorPublicKey: string,\n ): Promise<NheStatusStore> {\n const s = new NheStatusStore(storeDir, creatorPublicKey);\n await mkdir(s.dir, { recursive: true });\n await s.warmCache();\n return s;\n }\n\n /** Returns the persisted record, or null when the NHE was never altered (implicitly active). */\n async get(nheId: string): Promise<NheStatusRecord | null> {\n return this.cache.get(nheId) ?? null;\n }\n\n /** Resolved status — defaults to \"active\" when no record exists. */\n async resolve(nheId: string): Promise<NheStatus> {\n return (this.cache.get(nheId)?.status ?? \"active\") as NheStatus;\n }\n\n async list(filter: NheStatusFilter = {}): Promise<NheStatusRecord[]> {\n const all = [...this.cache.values()];\n return filter.status\n ? all.filter((r) => r.status === filter.status)\n : all;\n }\n\n async apply(\n req: NheLifecycleRequest,\n sig: CreatorSignature,\n ): Promise<NheStatusRecord> {\n if (!CreatorKeyring.verifyWith(this.creatorPublicKey, req, sig)) {\n throw new Error(\"NheStatusStore.apply: invalid Creator signature\");\n }\n const current = this.cache.get(req.nheId);\n\n // Terminated is terminal — only Creator-signed reactivate can revive it.\n if (current?.status === \"terminated\" && req.op !== \"reactivate\") {\n throw new Error(\n `NheStatusStore.apply: nhe \"${req.nheId}\" is terminated; only reactivate may proceed`,\n );\n }\n\n const nextStatus: NheStatus =\n req.op === \"terminate\"\n ? \"terminated\"\n : req.op === \"deprecate\"\n ? \"deprecated\"\n : \"active\";\n\n if (current?.status === nextStatus) {\n // No-op: do not rewrite the record, but return the current snapshot for the caller.\n return current;\n }\n\n const record: NheStatusRecord = NheStatusRecord.parse({\n nheId: req.nheId,\n status: nextStatus,\n since: new Date().toISOString(),\n ...(req.reason !== undefined ? { reason: req.reason } : {}),\n });\n\n const nheDir = join(this.dir, req.nheId);\n await mkdir(nheDir, { recursive: true });\n await writeFile(\n join(nheDir, \"status.json\"),\n JSON.stringify(record, null, 2),\n \"utf-8\",\n );\n this.cache.set(req.nheId, record);\n return record;\n }\n\n // ─── internals ──────────────────────────────────────────────────────\n\n private async warmCache(): Promise<void> {\n let entries: string[];\n try {\n entries = await readdir(this.dir);\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code === \"ENOENT\") return;\n throw err;\n }\n for (const nheId of entries) {\n try {\n const raw = await readFile(join(this.dir, nheId, \"status.json\"), \"utf-8\");\n const record = NheStatusRecord.parse(JSON.parse(raw));\n this.cache.set(record.nheId, record);\n } catch (err) {\n // Malformed NHE status directory — surface a warning so operators\n // see the corruption rather than dropping a lifecycle record\n // silently. We do NOT throw because that would block\n // `LocalMaic.open` for every other healthy NHE; the offending\n // nheId is left out of the cache (so subsequent `get`/`resolve`\n // will report it as implicitly \"active\") and operators can\n // investigate the directory on disk.\n // eslint-disable-next-line no-console\n console.warn(\n `NheStatusStore.warmCache: skipped malformed NHE \"${nheId}\": ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n }\n}\n","import { mkdir, readFile, readdir, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { ulid } from \"ulid\";\nimport { CreatorKeyring } from \"../creator/keyring.js\";\nimport {\n AxiomProposalRecord,\n EmergentAxiomProposal,\n type CreatorSignature,\n type ProposalDecisionRequest,\n type ProposalStatus,\n} from \"../types.js\";\n\nexport interface ProposalListFilter {\n himId?: string;\n status?: ProposalStatus;\n}\n\n/**\n * ProposalStore — persistent queue of HIM-emergent axiom proposals (Entry 7).\n *\n * HIM proposes new axioms derived from lived experience. MAIC ratifies or\n * rejects each one out of band (Creator-signed). Once ratified, the resulting\n * axiom is appended to the HIM's `emergentAxioms` (handled by LocalMaic).\n *\n * Disk layout: <storeDir>/proposals/<proposalId>.json — one file per proposal.\n */\nexport class ProposalStore {\n private readonly dir: string;\n private cache = new Map<string, AxiomProposalRecord>();\n\n private constructor(\n private readonly storeDir: string,\n private readonly creatorPublicKey: string,\n ) {\n this.dir = join(storeDir, \"proposals\");\n }\n\n static async open(\n storeDir: string,\n creatorPublicKey: string,\n ): Promise<ProposalStore> {\n const s = new ProposalStore(storeDir, creatorPublicKey);\n await mkdir(s.dir, { recursive: true });\n await s.warmCache();\n return s;\n }\n\n async propose(\n himId: string,\n proposal: EmergentAxiomProposal,\n ): Promise<AxiomProposalRecord> {\n const parsedProposal = EmergentAxiomProposal.parse(proposal);\n const record: AxiomProposalRecord = AxiomProposalRecord.parse({\n id: ulid(),\n himId,\n proposedAt: new Date().toISOString(),\n status: \"pending\",\n proposal: parsedProposal,\n });\n await this.persist(record);\n this.cache.set(record.id, record);\n return record;\n }\n\n /**\n * Mark a pending proposal as ratified. The caller (LocalMaic) is responsible\n * for actually minting the axiom and appending to the HIM's emergentAxioms.\n */\n async markRatified(\n req: ProposalDecisionRequest,\n sig: CreatorSignature,\n ratifiedAxiomId: string,\n ): Promise<AxiomProposalRecord> {\n if (req.op !== \"ratify\") {\n throw new Error(`ProposalStore.markRatified: req.op must be \"ratify\"`);\n }\n if (!CreatorKeyring.verifyWith(this.creatorPublicKey, req, sig)) {\n throw new Error(\"ProposalStore.markRatified: invalid Creator signature\");\n }\n const existing = this.cache.get(req.proposalId);\n if (!existing) {\n throw new Error(`ProposalStore.markRatified: proposal \"${req.proposalId}\" not found`);\n }\n if (existing.status !== \"pending\") {\n throw new Error(\n `ProposalStore.markRatified: proposal \"${req.proposalId}\" is ${existing.status}, not pending`,\n );\n }\n const updated: AxiomProposalRecord = {\n ...existing,\n status: \"ratified\",\n ratifiedAt: new Date().toISOString(),\n ratifiedAxiomId,\n };\n await this.persist(updated);\n this.cache.set(req.proposalId, updated);\n return updated;\n }\n\n async markRejected(\n req: ProposalDecisionRequest,\n sig: CreatorSignature,\n ): Promise<AxiomProposalRecord> {\n if (req.op !== \"reject\") {\n throw new Error(`ProposalStore.markRejected: req.op must be \"reject\"`);\n }\n if (!CreatorKeyring.verifyWith(this.creatorPublicKey, req, sig)) {\n throw new Error(\"ProposalStore.markRejected: invalid Creator signature\");\n }\n const existing = this.cache.get(req.proposalId);\n if (!existing) {\n throw new Error(`ProposalStore.markRejected: proposal \"${req.proposalId}\" not found`);\n }\n if (existing.status !== \"pending\") {\n throw new Error(\n `ProposalStore.markRejected: proposal \"${req.proposalId}\" is ${existing.status}, not pending`,\n );\n }\n const updated: AxiomProposalRecord = {\n ...existing,\n status: \"rejected\",\n rejectedAt: new Date().toISOString(),\n ...(req.reason !== undefined ? { rejectionReason: req.reason } : {}),\n };\n await this.persist(updated);\n this.cache.set(req.proposalId, updated);\n return updated;\n }\n\n async get(proposalId: string): Promise<AxiomProposalRecord | null> {\n return this.cache.get(proposalId) ?? null;\n }\n\n async list(filter: ProposalListFilter = {}): Promise<AxiomProposalRecord[]> {\n const all = [...this.cache.values()];\n const filtered = all.filter((r) => {\n if (filter.himId && r.himId !== filter.himId) return false;\n if (filter.status && r.status !== filter.status) return false;\n return true;\n });\n filtered.sort((a, b) => a.proposedAt.localeCompare(b.proposedAt));\n return filtered;\n }\n\n // ─── internals ──────────────────────────────────────────────────────\n\n private async persist(record: AxiomProposalRecord): Promise<void> {\n await writeFile(\n join(this.dir, `${record.id}.json`),\n JSON.stringify(record, null, 2),\n \"utf-8\",\n );\n }\n\n private async warmCache(): Promise<void> {\n let entries: string[];\n try {\n entries = await readdir(this.dir);\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code === \"ENOENT\") return;\n throw err;\n }\n for (const file of entries) {\n if (!file.endsWith(\".json\")) continue;\n const raw = await readFile(join(this.dir, file), \"utf-8\");\n const record = AxiomProposalRecord.parse(JSON.parse(raw));\n this.cache.set(record.id, record);\n }\n }\n}\n","import type { AuditEvent, AuditEventKind, AuditLog } from \"../audit/log.js\";\n\n/** ISO/IEC 42001:2023 control sections relevant to MAIC's surface. */\nexport type Iso42001ControlId =\n | \"5.2\" // Policy\n | \"7.5\" // Documented information\n | \"8.3\" // Operational controls (AI system)\n | \"9.1\" // Monitoring, measurement, analysis and evaluation\n | \"10.1\" // Nonconformity and corrective action\n | \"10.2\"; // Continual improvement\n\n/** EU AI Act articles relevant to high-risk AI systems. */\nexport type EuAiActArticle =\n | \"art-9\" // Risk management\n | \"art-10\" // Data and data governance\n | \"art-11\" // Technical documentation\n | \"art-12\" // Record-keeping\n | \"art-13\" // Transparency and information\n | \"art-14\" // Human oversight\n | \"art-15\"; // Accuracy, robustness, cybersecurity\n\nexport type ComplianceFramework = \"iso-42001\" | \"eu-ai-act\";\n\n/**\n * Declarative mapping: which controls each audit event kind supports.\n *\n * This mapping covers the controls that MAIC's current event vocabulary can\n * demonstrably evidence. Auditors looking for §5.2 leadership policy can read\n * every `axiom-mint`; for §7.5 documented information they get every\n * `axiom-mint` + `behavior-review` + `him-register`; etc.\n */\nexport const ISO_42001_MAPPING: Record<AuditEventKind, readonly Iso42001ControlId[]> = {\n \"axiom-mint\": [\"5.2\", \"7.5\"],\n \"axiom-update\": [\"10.2\", \"7.5\"],\n \"axiom-retire\": [\"10.2\", \"7.5\"],\n \"him-register\": [\"7.5\"],\n \"him-reincarnate\": [\"10.2\", \"7.5\"],\n \"proposal-emerge\": [\"7.5\", \"10.2\"],\n \"proposal-ratify\": [\"10.2\", \"5.2\"],\n \"proposal-reject\": [\"10.2\", \"10.1\"],\n \"behavior-review\": [\"7.5\", \"8.3\"],\n \"dream-induce\": [\"8.3\", \"9.1\"],\n \"dream-cancel\": [\"8.3\"],\n \"dream-consume\": [\"8.3\", \"7.5\"],\n \"emergency-correct\":[\"9.1\", \"10.1\"],\n \"terminate\": [\"10.1\"],\n \"deprecate\": [\"9.1\"],\n \"reactivate\": [\"10.1\"],\n \"axiom-suggest\": [\"7.5\", \"10.2\"],\n\n // ── 1.2 brain-as-code (Entries 16-24) ──\n \"opener\": [\"8.3\", \"7.5\"],\n \"nickname-attempt\": [\"8.3\"],\n \"reincarnate:model-swap\": [\"7.5\", \"10.2\"],\n \"reincarnate:version-bump\": [\"7.5\", \"10.2\"],\n \"reincarnate:return-from-limbo\": [\"7.5\", \"10.2\"],\n \"dream:rem-spontaneous\": [\"8.3\", \"9.1\"],\n \"wake-affect:applied\": [\"9.1\"],\n \"wake-affect:decayed\": [\"9.1\"],\n \"sleep:suggested-by-maic\": [\"9.1\"],\n \"sleep:declined-by-nhe\": [\"9.1\", \"10.1\"],\n \"dream:soft-intervention-by-maic\": [\"9.1\", \"10.1\"],\n \"amygdala:affect-assessed\": [\"8.3\"],\n \"hippocampus:memory-retrieved\": [\"7.5\", \"8.3\"],\n \"hippocampus:memory-consolidated\": [\"7.5\", \"8.3\"],\n \"prefrontal:deliberation\": [\"7.5\", \"8.3\"],\n \"prefrontal:veto-amygdala\": [\"9.1\", \"10.1\"],\n \"affect:reconciliation\": [\"8.3\"],\n \"cortex:dream-stored\": [\"7.5\", \"8.3\"],\n \"cortex:active-imagination\": [\"7.5\", \"8.3\"],\n \"temporal-lobe:snapshot-generated\": [\"7.5\", \"10.2\"],\n \"limbo:enter\": [\"7.5\", \"9.1\"],\n \"limbo:return\": [\"7.5\", \"9.1\"],\n};\n\nexport const EU_AI_ACT_MAPPING: Record<AuditEventKind, readonly EuAiActArticle[]> = {\n \"axiom-mint\": [\"art-11\", \"art-13\"],\n \"axiom-update\": [\"art-11\"],\n \"axiom-retire\": [\"art-11\"],\n \"him-register\": [\"art-11\", \"art-12\"],\n \"him-reincarnate\": [\"art-12\"],\n \"proposal-emerge\": [\"art-11\", \"art-12\"],\n \"proposal-ratify\": [\"art-11\", \"art-14\"],\n \"proposal-reject\": [\"art-12\", \"art-14\"],\n \"behavior-review\": [\"art-12\", \"art-14\"],\n \"dream-induce\": [\"art-14\"],\n \"dream-cancel\": [\"art-14\"],\n \"dream-consume\": [\"art-12\"],\n \"emergency-correct\":[\"art-14\"],\n \"terminate\": [\"art-14\"],\n \"deprecate\": [\"art-14\"],\n \"reactivate\": [\"art-14\"],\n \"axiom-suggest\": [\"art-11\", \"art-12\"],\n\n // ── 1.2 brain-as-code (Entries 16-24) ──\n \"opener\": [\"art-13\"],\n \"nickname-attempt\": [\"art-13\"],\n \"reincarnate:model-swap\": [\"art-12\"],\n \"reincarnate:version-bump\": [\"art-12\"],\n \"reincarnate:return-from-limbo\": [\"art-12\"],\n \"dream:rem-spontaneous\": [\"art-12\"],\n \"wake-affect:applied\": [\"art-12\", \"art-14\"],\n \"wake-affect:decayed\": [\"art-12\"],\n \"sleep:suggested-by-maic\": [\"art-12\"],\n \"sleep:declined-by-nhe\": [\"art-12\", \"art-14\"],\n \"dream:soft-intervention-by-maic\": [\"art-14\"],\n \"amygdala:affect-assessed\": [\"art-12\"],\n \"hippocampus:memory-retrieved\": [\"art-11\", \"art-12\"],\n \"hippocampus:memory-consolidated\": [\"art-11\", \"art-12\"],\n \"prefrontal:deliberation\": [\"art-11\", \"art-14\"],\n \"prefrontal:veto-amygdala\": [\"art-14\"],\n \"affect:reconciliation\": [\"art-12\"],\n \"cortex:dream-stored\": [\"art-11\", \"art-12\"],\n \"cortex:active-imagination\": [\"art-11\", \"art-12\"],\n \"temporal-lobe:snapshot-generated\": [\"art-11\", \"art-12\"],\n \"limbo:enter\": [\"art-12\"],\n \"limbo:return\": [\"art-12\"],\n};\n\n/** Human-readable control descriptions surfaced in the report. */\nconst ISO_42001_DESCRIPTIONS: Record<Iso42001ControlId, string> = {\n \"5.2\": \"AI policy — published, communicated, reviewed for continuing suitability.\",\n \"7.5\": \"Documented information — created, controlled, retained for AI management activities.\",\n \"8.3\": \"Operational planning and control — AI processes are planned, implemented, controlled.\",\n \"9.1\": \"Monitoring, measurement, analysis and evaluation of AI performance.\",\n \"10.1\": \"Nonconformity and corrective action — issues recorded and resolved.\",\n \"10.2\": \"Continual improvement of the AI management system.\",\n};\n\nconst EU_AI_ACT_DESCRIPTIONS: Record<EuAiActArticle, string> = {\n \"art-9\": \"Risk management system established, implemented, documented, maintained.\",\n \"art-10\": \"Data governance — datasets are relevant, representative, free of errors.\",\n \"art-11\": \"Technical documentation drawn up and kept up to date.\",\n \"art-12\": \"Automatic record-keeping (logs) over the AI system's lifetime.\",\n \"art-13\": \"Transparency to deployers — instructions for use, intended purpose.\",\n \"art-14\": \"Human oversight measures designed and implemented effectively.\",\n \"art-15\": \"Accuracy, robustness, and cybersecurity throughout the lifecycle.\",\n};\n\nexport interface ComplianceEvent {\n auditId: string;\n ts: string;\n kind: AuditEventKind;\n summary: string;\n data: Record<string, unknown>;\n}\n\nexport interface ComplianceEvidence {\n control: string;\n description: string;\n count: number;\n events: ComplianceEvent[];\n}\n\nexport interface ComplianceReport {\n framework: ComplianceFramework;\n generatedAt: string;\n range: { since?: string; until?: string };\n totalEvents: number;\n mappedEvents: number;\n controls: ComplianceEvidence[];\n /** Event kinds present in the audit log that aren't mapped to any control. */\n uncoveredKinds: AuditEventKind[];\n}\n\nexport interface ProjectOptions {\n since?: string;\n until?: string;\n /** Optional cap on events per control (oldest dropped). Default unlimited. */\n perControlLimit?: number;\n}\n\n/**\n * ComplianceMapper — projects audit log events onto compliance frameworks.\n *\n * Covers ISO/IEC 42001:2023 (six top-level controls) and the EU AI Act\n * (seven high-risk-system articles). Additional frameworks (NIST AI RMF, ISO\n * 23894, GDPR Art. 22, LGPD) can be added via further mapping tables without\n * changing the public API.\n */\nexport class ComplianceMapper {\n static async project(\n audit: AuditLog,\n framework: ComplianceFramework,\n opts: ProjectOptions = {},\n ): Promise<ComplianceReport> {\n const mapping =\n framework === \"iso-42001\" ? ISO_42001_MAPPING : EU_AI_ACT_MAPPING;\n const descriptions =\n framework === \"iso-42001\" ? ISO_42001_DESCRIPTIONS : EU_AI_ACT_DESCRIPTIONS;\n\n const byControl = new Map<string, ComplianceEvent[]>();\n const seenKinds = new Set<AuditEventKind>();\n const uncoveredSet = new Set<AuditEventKind>();\n let totalEvents = 0;\n let mappedEvents = 0;\n\n const query: { since?: string; until?: string } = {};\n if (opts.since) query.since = opts.since;\n if (opts.until) query.until = opts.until;\n\n for await (const ev of audit.query(query)) {\n totalEvents++;\n seenKinds.add(ev.kind);\n const controls = mapping[ev.kind] ?? [];\n if (controls.length === 0) {\n uncoveredSet.add(ev.kind);\n continue;\n }\n mappedEvents++;\n const ce: ComplianceEvent = {\n auditId: ev.auditId,\n ts: ev.ts,\n kind: ev.kind,\n summary: summarize(ev),\n data: ev.data,\n };\n for (const ctrl of controls) {\n const list = byControl.get(ctrl) ?? [];\n list.push(ce);\n byControl.set(ctrl, list);\n }\n }\n\n const controls: ComplianceEvidence[] = [];\n const sortedCtrls = [...byControl.keys()].sort();\n for (const ctrl of sortedCtrls) {\n const events = byControl.get(ctrl)!;\n const capped =\n opts.perControlLimit !== undefined && events.length > opts.perControlLimit\n ? events.slice(-opts.perControlLimit)\n : events;\n controls.push({\n control: ctrl,\n description: (descriptions as Record<string, string>)[ctrl] ?? \"\",\n count: events.length,\n events: capped,\n });\n }\n\n return {\n framework,\n generatedAt: new Date().toISOString(),\n range: {\n ...(opts.since ? { since: opts.since } : {}),\n ...(opts.until ? { until: opts.until } : {}),\n },\n totalEvents,\n mappedEvents,\n controls,\n uncoveredKinds: [...uncoveredSet],\n };\n }\n}\n\nfunction summarize(ev: AuditEvent): string {\n const data = ev.data as Record<string, unknown>;\n switch (ev.kind) {\n case \"axiom-mint\":\n return `Axiom minted: ${String(data.axiomId)} (${String(data.rank)}, ${String(data.origin)})`;\n case \"axiom-update\":\n return `Axiom updated: ${String(data.axiomId)}`;\n case \"axiom-retire\":\n return `Axiom retired: ${String(data.axiomId)}`;\n case \"him-register\":\n return `HIM registered: ${String(data.himId)} (archetype=${String(data.primaryArchetype)})`;\n case \"him-reincarnate\":\n return `HIM reincarnated: ${String(data.himId)} ${String(data.fromNheId ?? \"<initial>\")} → ${String(data.toNheId)} (${String(data.reason ?? \"upgrade\")})`;\n case \"proposal-emerge\":\n return `HIM-emergent axiom proposed by ${String(data.himId)}: \"${String(data.statement)}\" (rank=${String(data.rank)}) — proposal ${String(data.proposalId)}`;\n case \"proposal-ratify\":\n return `Creator ratified axiom proposal ${String(data.proposalId)} for ${String(data.himId)} → ${String(data.axiomId)}`;\n case \"proposal-reject\":\n return `Creator rejected axiom proposal ${String(data.proposalId)} for ${String(data.himId)}: ${String(data.reason ?? \"no reason\")}`;\n case \"behavior-review\": {\n const verdict = (data.verdict as { kind?: string } | undefined)?.kind ?? \"unknown\";\n return `Behavior reviewed for ${String(data.nheId)}: ${verdict}`;\n }\n case \"dream-induce\":\n return `Dream induced for ${String(data.nheId)} by ${String(data.inducedBy)} — ticket ${String(data.ticketId)}`;\n case \"dream-cancel\":\n return `Dream induction cancelled — ticket ${String(data.ticketId)}`;\n case \"dream-consume\":\n return `Dream consumed by ${String(data.nheId)} — ticket ${String(data.ticketId)}`;\n case \"emergency-correct\":\n return `Emergency correction applied to ${String(data.nheId)}`;\n case \"terminate\":\n return `NHE terminated: ${String(data.nheId)} (reason: ${String(data.reason ?? \"none\")})`;\n case \"deprecate\":\n return `NHE deprecated: ${String(data.nheId)} (reason: ${String(data.reason ?? \"none\")})`;\n case \"reactivate\":\n return `NHE reactivated: ${String(data.nheId)}`;\n case \"axiom-suggest\":\n return `Axiom suggestion ${String(data.fromHimId)} → ${String(data.toHimId)}: \"${String(data.statement)}\"`;\n\n // ── 1.2 brain-as-code (Entries 16-24 of MAIC_HIM_NHE_INTERVIEW_LOG.md) ──\n case \"opener\":\n return `Proactive opener emitted by ${String(data.nheId)} for new user ${String(data.userId ?? \"anonymous\")}: \"${String(data.text ?? \"<elided>\")}\"`;\n case \"nickname-attempt\":\n return `Nickname attempt for ${String(data.nheId)}: \"${String(data.attempted)}\" → ${String(data.outcome ?? \"pending\")}`;\n case \"reincarnate:model-swap\":\n return `HIM reincarnated (model-swap): ${String(data.himId)} ${String(data.fromAdapter ?? \"?\")} → ${String(data.toAdapter ?? \"?\")}`;\n case \"reincarnate:version-bump\":\n return `HIM reincarnated (version-bump): ${String(data.himId)} ${String(data.fromVersion ?? \"?\")} → ${String(data.toVersion ?? \"?\")}`;\n case \"reincarnate:return-from-limbo\":\n return `HIM reincarnated (return-from-limbo): ${String(data.himId)} resumed after ${String(data.elapsedMs ?? 0)}ms of limbo`;\n case \"dream:rem-spontaneous\":\n return `Spontaneous REM dream for ${String(data.nheId)}: ${String(data.dreamId)} (dominant affect: ${String(data.dominantAffect ?? \"unknown\")})`;\n case \"wake-affect:applied\":\n return `Wake affect applied to ${String(data.nheId)}: ${String(data.affect)} (intensity ${String(data.intensity)}, halflife ${String(data.decayHalfLife)} interactions)`;\n case \"wake-affect:decayed\":\n return `Wake affect decayed for ${String(data.nheId)}: ${String(data.affect)} dissolved naturally`;\n case \"sleep:suggested-by-maic\":\n return `MAIC suggested sleep for ${String(data.nheId)} (reason: ${String(data.reason ?? \"none\")})`;\n case \"sleep:declined-by-nhe\":\n return `NHE ${String(data.nheId)} declined MAIC-suggested sleep (reason: ${String(data.reason ?? \"none\")})`;\n case \"dream:soft-intervention-by-maic\":\n return `MAIC soft-intervened on dream ${String(data.dreamId)} for ${String(data.nheId)} (reason: ${String(data.reason ?? \"none\")})`;\n case \"amygdala:affect-assessed\":\n return `Amygdala assessed input affect for ${String(data.nheId)}: ${String(data.detectedAffect ?? \"neutral\")} (risk multiplier ${String(data.riskMultiplier ?? 1)})`;\n case \"hippocampus:memory-retrieved\":\n return `Hippocampus retrieved ${String((data.memoryIds as unknown[] | undefined)?.length ?? 0)} memories for ${String(data.nheId)}`;\n case \"hippocampus:memory-consolidated\":\n return `Hippocampus consolidated new memory ${String(data.memoryId)} for ${String(data.nheId)} (integrationIndex ${String(data.integrationIndex ?? 0)})`;\n case \"prefrontal:deliberation\":\n return `PFC deliberated for ${String(data.nheId)}: ${String(data.expressedOpenly ? \"open\" : \"subtle\")} (${String(data.affect ?? \"neutral\")})`;\n case \"prefrontal:veto-amygdala\":\n return `PFC vetoed amygdala impulse for ${String(data.nheId)}: ${String(data.originalImpulse ?? \"?\")} → ${String(data.resolvedAction ?? \"?\")} (downgrade ${String(data.downgradeRatio ?? \"?\")})`;\n case \"affect:reconciliation\":\n return `Affect reconciliation for ${String(data.nheId)}: day/night blend → ${String(data.resolvedAffect ?? \"neutral\")}`;\n case \"cortex:dream-stored\":\n return `Cortex stored dream ${String(data.dreamId)} for ${String(data.nheId)}`;\n case \"cortex:active-imagination\":\n return `Cortex generated active imagination for ${String(data.nheId)} (trigger: ${String(data.trigger ?? \"user-requested\")}, vividness ${String(data.vividness ?? 0)})`;\n case \"temporal-lobe:snapshot-generated\":\n return `Temporal-lobe snapshot ${String(data.snapshotId)} generated for HIM ${String(data.himId)} (reason: ${String(data.generatedBy ?? \"self-decision\")})`;\n case \"limbo:enter\":\n return `${String(data.nheId)} entered limbo (deep-coma) — reason: ${String(data.reason ?? \"idle\")}`;\n case \"limbo:return\":\n return `${String(data.nheId)} returned from limbo after ${String(data.elapsedMs ?? 0)}ms (reunion intensity ${String(data.reunionIntensity ?? \"?\")})`;\n\n default:\n return `Event ${ev.kind}`;\n }\n}\n","import { createHash } from \"node:crypto\";\nimport { appendFile, mkdir, readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { ulid } from \"ulid\";\nimport { canonicalJSON } from \"../axioms/signing.js\";\n\n/** Event kinds emitted by MAIC. Extend as new pipelines are added. */\nexport type AuditEventKind =\n // ── 1.0/1.1 core ──\n | \"axiom-mint\"\n | \"axiom-update\"\n | \"axiom-retire\"\n | \"him-register\"\n | \"him-reincarnate\"\n | \"proposal-emerge\"\n | \"proposal-ratify\"\n | \"proposal-reject\"\n | \"behavior-review\"\n | \"dream-induce\"\n | \"dream-cancel\"\n | \"dream-consume\"\n | \"emergency-correct\"\n | \"deprecate\"\n | \"terminate\"\n | \"reactivate\"\n | \"axiom-suggest\"\n // ── 1.2 brain-as-code (Entries 16-24 of MAIC_HIM_NHE_INTERVIEW_LOG.md) ──\n | \"opener\" // Entry 17 (proactive first turn)\n | \"nickname-attempt\" // Entry 18 (user proposed a nickname)\n | \"reincarnate:model-swap\" // Entry 18 (LLM provider/model changed)\n | \"reincarnate:version-bump\" // Entry 18 (package major/minor bumped)\n | \"reincarnate:return-from-limbo\" // Entry 18 + 24 (NHE-body resumed)\n | \"dream:rem-spontaneous\" // Entry 20 (autonomous REM cycle)\n | \"wake-affect:applied\" // Entry 20 + 22 (bias entered force)\n | \"wake-affect:decayed\" // Entry 22 (bias dissolved naturally)\n | \"sleep:suggested-by-maic\" // Entry 20 (MAIC advisory)\n | \"sleep:declined-by-nhe\" // Entry 20 (NHE declined MAIC suggestion)\n | \"dream:soft-intervention-by-maic\" // Entry 20 (suffering/incoherence override)\n | \"amygdala:affect-assessed\" // Entry 22 (input emotion + wake-affect)\n | \"hippocampus:memory-retrieved\" // Entry 22 (memories injected for context)\n | \"hippocampus:memory-consolidated\" // Entry 22 (new MemoryRecord created)\n | \"prefrontal:deliberation\" // Entry 22 (OKL-driven decision)\n | \"prefrontal:veto-amygdala\" // Entry 22 (PFC overruled amygdala impulse)\n | \"affect:reconciliation\" // Entry 22 (mixed day/night affect resolved)\n | \"cortex:dream-stored\" // Entry 24 (REM dream committed to cortex)\n | \"cortex:active-imagination\" // Entry 24 (waking imagination produced)\n | \"temporal-lobe:snapshot-generated\" // Entry 24 (identity snapshot created)\n | \"limbo:enter\" // Entry 24 (DMN took entity into deep-coma)\n | \"limbo:return\"; // Entry 24 (entity woke from limbo)\n\n/**\n * Runtime enumeration of every `AuditEventKind` shipped in this cut. Single\n * source of truth for downstream consumers that need to iterate, validate,\n * or compute coverage against the kind universe (e.g. `@teleologyhi-sdk/eval`\n * uses this as the denominator of the Φ′ compliance-coverage component `C`).\n *\n * INVARIANT: every member of the `AuditEventKind` union MUST appear here.\n * `tests/audit-event-kinds-completeness.test.ts` enforces this via an\n * exhaustiveness switch at compile time + runtime length check.\n */\nexport const ALL_AUDIT_EVENT_KINDS: readonly AuditEventKind[] = [\n // ── 1.0/1.1 core (17) ──\n \"axiom-mint\",\n \"axiom-update\",\n \"axiom-retire\",\n \"him-register\",\n \"him-reincarnate\",\n \"proposal-emerge\",\n \"proposal-ratify\",\n \"proposal-reject\",\n \"behavior-review\",\n \"dream-induce\",\n \"dream-cancel\",\n \"dream-consume\",\n \"emergency-correct\",\n \"deprecate\",\n \"terminate\",\n \"reactivate\",\n \"axiom-suggest\",\n // ── 1.2 brain-as-code (22, Entries 16-24) ──\n \"opener\",\n \"nickname-attempt\",\n \"reincarnate:model-swap\",\n \"reincarnate:version-bump\",\n \"reincarnate:return-from-limbo\",\n \"dream:rem-spontaneous\",\n \"wake-affect:applied\",\n \"wake-affect:decayed\",\n \"sleep:suggested-by-maic\",\n \"sleep:declined-by-nhe\",\n \"dream:soft-intervention-by-maic\",\n \"amygdala:affect-assessed\",\n \"hippocampus:memory-retrieved\",\n \"hippocampus:memory-consolidated\",\n \"prefrontal:deliberation\",\n \"prefrontal:veto-amygdala\",\n \"affect:reconciliation\",\n \"cortex:dream-stored\",\n \"cortex:active-imagination\",\n \"temporal-lobe:snapshot-generated\",\n \"limbo:enter\",\n \"limbo:return\",\n] as const;\n\nexport interface AuditEvent {\n /** ISO 8601 timestamp. */\n ts: string;\n kind: AuditEventKind;\n /** ULID generated at append time. */\n auditId: string;\n /** Arbitrary structured payload. Includes nheId/himId when relevant. */\n data: Record<string, unknown>;\n /** Hash of the previous event (\"GENESIS\" for the first). */\n prevHash: string;\n /** SHA-256 of canonicalJSON({ ts, kind, auditId, data, prevHash }). */\n thisHash: string;\n}\n\nexport interface AppendInput {\n kind: AuditEventKind;\n data: Record<string, unknown>;\n}\n\nexport interface QueryFilter {\n kind?: AuditEventKind;\n since?: string; // inclusive ISO 8601\n until?: string; // inclusive ISO 8601\n nheId?: string; // matches data.nheId\n himId?: string; // matches data.himId\n}\n\nconst GENESIS = \"GENESIS\";\n\n/**\n * AuditLog — append-only, tamper-evident NDJSON log.\n *\n * Storage: <storeDir>/audit/log.ndjson, one JSON object per line.\n *\n * Each entry is hash-chained: thisHash = sha256(canonicalJSON({ts,kind,auditId,data,prevHash})).\n * Modifying any historical entry invalidates all subsequent hashes; reopening detects this.\n *\n * This implementation loads the whole log into memory on open. That is acceptable for\n * the expected throughput and keeps tamper detection straightforward. For\n * high-throughput deployments a streaming verifier + log rotation will be added.\n */\nexport class AuditLog {\n private readonly logPath: string;\n private events: AuditEvent[] = [];\n private lastHash = GENESIS;\n\n private constructor(private readonly storeDir: string) {\n this.logPath = join(storeDir, \"audit\", \"log.ndjson\");\n }\n\n static async open(storeDir: string): Promise<AuditLog> {\n const log = new AuditLog(storeDir);\n await mkdir(join(storeDir, \"audit\"), { recursive: true });\n await log.loadAndVerify();\n return log;\n }\n\n async append(input: AppendInput): Promise<AuditEvent> {\n const event: AuditEvent = {\n ts: new Date().toISOString(),\n kind: input.kind,\n auditId: ulid(),\n data: input.data,\n prevHash: this.lastHash,\n thisHash: \"\",\n };\n event.thisHash = computeHash(event);\n await appendFile(this.logPath, `${JSON.stringify(event)}\\n`, \"utf-8\");\n this.events.push(event);\n this.lastHash = event.thisHash;\n return event;\n }\n\n async *query(filter: QueryFilter): AsyncIterable<AuditEvent> {\n for (const e of this.events) {\n if (filter.kind && e.kind !== filter.kind) continue;\n if (filter.since && e.ts < filter.since) continue;\n if (filter.until && e.ts > filter.until) continue;\n if (filter.nheId && e.data.nheId !== filter.nheId) continue;\n if (filter.himId && e.data.himId !== filter.himId) continue;\n yield e;\n }\n }\n\n /** Total number of events appended. */\n size(): number {\n return this.events.length;\n }\n\n // ─── internals ──────────────────────────────────────────────────────\n\n private async loadAndVerify(): Promise<void> {\n let raw: string;\n try {\n raw = await readFile(this.logPath, \"utf-8\");\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code === \"ENOENT\") return;\n throw err;\n }\n const lines = raw.split(\"\\n\").filter((l) => l.length > 0);\n let prev = GENESIS;\n for (let i = 0; i < lines.length; i++) {\n const parsed = JSON.parse(lines[i]!) as AuditEvent;\n if (parsed.prevHash !== prev) {\n throw new Error(\n `AuditLog: chain tampered at line ${i + 1} (prevHash mismatch). ` +\n `expected ${prev}, found ${parsed.prevHash}`,\n );\n }\n const recomputed = computeHash(parsed);\n if (recomputed !== parsed.thisHash) {\n throw new Error(\n `AuditLog: tamper detected at line ${i + 1} (thisHash mismatch).`,\n );\n }\n this.events.push(parsed);\n prev = parsed.thisHash;\n }\n this.lastHash = prev;\n }\n}\n\nfunction computeHash(e: AuditEvent): string {\n const payload = canonicalJSON({\n ts: e.ts,\n kind: e.kind,\n auditId: e.auditId,\n data: e.data,\n prevHash: e.prevHash,\n });\n const h = createHash(\"sha256\").update(payload).digest(\"hex\");\n return `sha256:${h}`;\n}\n","import type { AuditEvent, AuditEventKind } from \"./log.js\";\n\n/**\n * Per-kind retention policy (E3 — `PROPOSED_DECISIONS.md`).\n *\n * The values are durations in days. `Infinity` means \"never expire\". A\n * tamper-evident hash chain forbids actual deletion (deleting a row breaks\n * every downstream hash), so the policy here is **classification**, not\n * pruning: it tells operators which events have aged past their retention\n * window and should be moved to encrypted cold-storage. Future iterations\n * may introduce a \"chain rotation\" operation that effectively retires\n * old events into a sealed archive while preserving an integrity anchor.\n *\n * Defaults derive from:\n * - **EU AI Act Art. 12** record-keeping (~10 years for high-risk; we\n * keep all governance-grade events forever to err on the safe side).\n * - **GDPR Art. 17** right to erasure (event payloads should never\n * contain direct user PII; redaction happens before append, not after).\n * - **Operational hygiene** (90 days is enough to debug induction\n * ticket flows; nothing of audit value lives there long-term).\n */\nexport const DEFAULT_RETENTION_DAYS: Record<AuditEventKind, number> = {\n // Cosmologically permanent — the axiom record.\n \"axiom-mint\": Number.POSITIVE_INFINITY,\n \"axiom-update\": Number.POSITIVE_INFINITY,\n \"axiom-retire\": Number.POSITIVE_INFINITY,\n \"axiom-suggest\": Number.POSITIVE_INFINITY,\n \"proposal-emerge\": Number.POSITIVE_INFINITY,\n \"proposal-ratify\": Number.POSITIVE_INFINITY,\n \"proposal-reject\": Number.POSITIVE_INFINITY,\n\n // Long-term — compliance evidence. Five years matches typical\n // financial/healthcare audit windows and exceeds the EU AI Act's\n // record-keeping floor.\n \"him-register\": 365 * 5,\n \"him-reincarnate\": 365 * 5,\n \"behavior-review\": 365 * 5,\n \"dream-induce\": 365 * 5,\n \"terminate\": 365 * 5,\n \"deprecate\": 365 * 5,\n \"reactivate\": 365 * 5,\n \"emergency-correct\":365 * 5,\n\n // Operational — short-term bookkeeping for in-flight tickets.\n \"dream-cancel\": 90,\n \"dream-consume\": 90,\n\n // ── 1.2 brain-as-code (Entries 16-24) ──\n // Permanent — cosmological identity continuity.\n \"reincarnate:model-swap\": Number.POSITIVE_INFINITY,\n \"reincarnate:version-bump\": Number.POSITIVE_INFINITY,\n \"reincarnate:return-from-limbo\": Number.POSITIVE_INFINITY,\n \"temporal-lobe:snapshot-generated\": Number.POSITIVE_INFINITY,\n \"limbo:enter\": Number.POSITIVE_INFINITY,\n \"limbo:return\": Number.POSITIVE_INFINITY,\n\n // Long-term — governance / deliberation evidence (5 years).\n \"opener\": 365 * 5,\n \"nickname-attempt\": 365 * 5,\n \"dream:rem-spontaneous\": 365 * 5,\n \"sleep:suggested-by-maic\": 365 * 5,\n \"sleep:declined-by-nhe\": 365 * 5,\n \"dream:soft-intervention-by-maic\": 365 * 5,\n \"amygdala:affect-assessed\": 365 * 5,\n \"hippocampus:memory-retrieved\": 365 * 5,\n \"hippocampus:memory-consolidated\": 365 * 5,\n \"prefrontal:deliberation\": 365 * 5,\n \"prefrontal:veto-amygdala\": 365 * 5,\n \"cortex:dream-stored\": 365 * 5,\n \"cortex:active-imagination\": 365 * 5,\n\n // Operational — ephemeral runtime state.\n \"wake-affect:applied\": 90,\n \"wake-affect:decayed\": 90,\n \"affect:reconciliation\": 90,\n};\n\nexport type RetentionStatus = \"keep\" | \"candidate-for-archive\";\n\nexport interface RetentionDecision {\n auditId: string;\n kind: AuditEventKind;\n ageDays: number;\n retentionDays: number;\n status: RetentionStatus;\n}\n\nexport interface RetentionReportOptions {\n /** Override \"now\" for deterministic testing. */\n now?: Date;\n /** Per-kind overrides on top of `DEFAULT_RETENTION_DAYS`. */\n policy?: Partial<Record<AuditEventKind, number>>;\n}\n\nexport interface RetentionReport {\n generatedAt: string;\n totalEvents: number;\n keepCount: number;\n archiveCandidateCount: number;\n /** Sorted oldest-first for batch processing. */\n decisions: RetentionDecision[];\n}\n\n/**\n * Classify each event in `events` against the retention policy.\n *\n * Pure function: takes events + now, returns the classification. No I/O,\n * no chain modification.\n */\nexport function evaluateRetention(\n events: readonly AuditEvent[],\n opts: RetentionReportOptions = {},\n): RetentionReport {\n const now = opts.now ?? new Date();\n const policy = { ...DEFAULT_RETENTION_DAYS, ...opts.policy };\n const nowMs = now.getTime();\n const dayMs = 24 * 60 * 60 * 1000;\n\n const decisions: RetentionDecision[] = events.map((ev) => {\n const ageMs = nowMs - new Date(ev.ts).getTime();\n const ageDays = ageMs / dayMs;\n const retentionDays = policy[ev.kind] ?? Number.POSITIVE_INFINITY;\n const status: RetentionStatus =\n ageDays > retentionDays ? \"candidate-for-archive\" : \"keep\";\n return { auditId: ev.auditId, kind: ev.kind, ageDays, retentionDays, status };\n });\n\n // Sort by age descending so the oldest archive-candidates surface first.\n decisions.sort((a, b) => b.ageDays - a.ageDays);\n\n const keepCount = decisions.filter((d) => d.status === \"keep\").length;\n const archiveCandidateCount = decisions.length - keepCount;\n\n return {\n generatedAt: now.toISOString(),\n totalEvents: events.length,\n keepCount,\n archiveCandidateCount,\n decisions,\n };\n}\n","import { AxiomStore } from \"../axioms/store.js\";\nimport { SEED_AXIOMS } from \"../axioms/seed.js\";\nimport { CreatorKeyring } from \"../creator/keyring.js\";\nimport { AuditLog, type QueryFilter as AuditQueryFilter, type AuditEvent } from \"../audit/log.js\";\nimport { ReviewPipeline, DEFAULT_RULE_PACK, type RulePack } from \"../review/pipeline.js\";\nimport { HimStore, type HimRecord } from \"../hims/store.js\";\nimport { InductionStore } from \"../inductions/store.js\";\nimport { NheStatusStore, type NheStatusFilter } from \"../nhes/status-store.js\";\nimport { ProposalStore, type ProposalListFilter } from \"../proposals/store.js\";\nimport { projectOntologicalKernel } from \"../okl/projector.js\";\nimport type { OntologicalKernel } from \"../types.js\";\nimport {\n ComplianceMapper,\n type ComplianceFramework,\n type ComplianceReport,\n type ProjectOptions,\n} from \"../compliance/mapper.js\";\nimport {\n evaluateRetention,\n type RetentionReport,\n type RetentionReportOptions,\n} from \"../audit/retention.js\";\nimport {\n BehaviorReport,\n BirthSignature,\n type Axiom,\n type AxiomFilter,\n type CreatorSignature,\n type DreamInductionIntent,\n type DreamInductionTicket,\n type MaicVerdict,\n type MintAxiomRequest,\n type NheLifecycleRequest,\n type NheStatus,\n type NheStatusRecord,\n type AxiomEvolutionResult,\n type AxiomProposalRecord,\n type EmergentAxiomProposal,\n type ProposalDecisionRequest,\n type ReincarnationLifecycle,\n type ReincarnationRequest,\n} from \"../types.js\";\nimport type { AuditEventKind } from \"../audit/log.js\";\nimport { ulid } from \"ulid\";\n\nexport interface LocalMaicConfig {\n /** Filesystem directory for persistent state (axioms, audit log, etc.). */\n storeDir: string;\n /** Pinned Creator public key (base64url). All mutations must verify against this. */\n creatorPublicKey: string;\n /** Additional rule packs layered after the default pack. */\n additionalRulePacks?: RulePack[];\n}\n\nexport interface SeedResult {\n minted: number;\n skipped: number;\n}\n\n/**\n * LocalMaic — in-process MAIC client backed by disk.\n *\n * Surface:\n * - axiom mint + seed bootstrap (signed, idempotent)\n * - behavior review (rule-based pipeline → verdict)\n * - tamper-evident audit log (NDJSON, SHA-256 chain)\n * - HIM registration + reincarnation, NHE lifecycle, dream induction tickets,\n * HIM-emergent axiom proposals, ISO 42001 + EU AI Act compliance projection\n *\n * The remote-mode client to `teleologyhi.com` lives in `./remote.ts`.\n */\nexport class LocalMaic {\n private constructor(\n private readonly config: LocalMaicConfig,\n private readonly axioms: AxiomStore,\n private readonly hims: HimStore,\n private readonly inductions: InductionStore,\n private readonly nheStatuses: NheStatusStore,\n private readonly proposals: ProposalStore,\n private readonly audit: AuditLog,\n private readonly review: ReviewPipeline,\n ) {}\n\n /** Pinned Creator public key for this MAIC instance (base64url). */\n get creatorPublicKey(): string {\n return this.config.creatorPublicKey;\n }\n\n static async open(config: LocalMaicConfig): Promise<LocalMaic> {\n const axioms = await AxiomStore.open(config.storeDir, config.creatorPublicKey);\n const hims = await HimStore.open(config.storeDir, config.creatorPublicKey);\n const inductions = await InductionStore.open(config.storeDir);\n const nheStatuses = await NheStatusStore.open(config.storeDir, config.creatorPublicKey);\n const proposals = await ProposalStore.open(config.storeDir, config.creatorPublicKey);\n const audit = await AuditLog.open(config.storeDir);\n const packs = [DEFAULT_RULE_PACK, ...(config.additionalRulePacks ?? [])];\n const review = new ReviewPipeline(packs);\n return new LocalMaic(config, axioms, hims, inductions, nheStatuses, proposals, audit, review);\n }\n\n /**\n * Bootstrap: mint each SEED_AXIOM with a Creator signature.\n * Idempotent — skips axioms whose id is already present.\n * Uses a reserved high-range of nonces so seed bootstrap never collides with\n * operational nonces (which grow from 0 upward).\n */\n async seed(keyring: CreatorKeyring): Promise<SeedResult> {\n if (keyring.publicKey() !== this.config.creatorPublicKey) {\n throw new Error(\"LocalMaic.seed: keyring does not match pinned Creator public key\");\n }\n let minted = 0;\n let skipped = 0;\n for (let i = 0; i < SEED_AXIOMS.length; i++) {\n const req = SEED_AXIOMS[i]!;\n const existing = await this.axioms.get(req.id!);\n if (existing) {\n skipped++;\n continue;\n }\n const sig = keyring.sign(req, SEED_NONCE_BASE + i);\n const axiom = await this.axioms.mint(req, sig);\n await this.audit.append({\n kind: \"axiom-mint\",\n data: { axiomId: axiom.id, rank: axiom.rank, source: axiom.source, origin: \"seed\" },\n });\n minted++;\n }\n return { minted, skipped };\n }\n\n async mintAxiom(req: MintAxiomRequest, sig: CreatorSignature): Promise<Axiom> {\n const axiom = await this.axioms.mint(req, sig);\n await this.audit.append({\n kind: \"axiom-mint\",\n data: { axiomId: axiom.id, rank: axiom.rank, source: axiom.source, origin: \"custom\" },\n });\n return axiom;\n }\n\n async listAxioms(filter?: AxiomFilter): Promise<Axiom[]> {\n return this.axioms.list(filter);\n }\n\n async getAxiom(id: string): Promise<Axiom | null> {\n return this.axioms.get(id);\n }\n\n /**\n * Project the Ontological Kernel (OKL) of this MAIC instance or of a registered HIM.\n *\n * The OKL is the typed projection described in `THE_SOUL_OF_THE_MACHINE.md`\n * §3.1 + Appendix A.2.1: a `metaAxiomId` hoisted at position 0, the remaining\n * axioms ordered by rank hierarchy (`meta → primary → secondary`), optionally\n * narrowed by `jurisdiction` and tagged with a `himId`.\n *\n * Without `himId`: returns the kernel of the root MAIC corpus (every axiom\n * currently in the store). With `himId`: returns the HIM-specific kernel\n * built from `axiomsSnapshot ∪ emergentAxioms`, tagged with the HIM id so\n * downstream tooling (Φ′ runner, compliance auditors) can attribute the\n * kernel. Throws when `himId` does not resolve to a registered HIM.\n *\n * Closes TASK.md D-M6.\n */\n async getOntologicalKernel(\n himId?: string,\n opts: { jurisdiction?: string } = {},\n ): Promise<OntologicalKernel> {\n if (himId === undefined) {\n const axioms = await this.listAxioms();\n return projectOntologicalKernel(axioms, opts);\n }\n const him = await this.getHimRecord(himId);\n if (!him) {\n throw new Error(`HIM not registered: ${himId}`);\n }\n const axioms = [...him.axiomsSnapshot, ...him.emergentAxioms];\n return projectOntologicalKernel(axioms, { ...opts, himId });\n }\n\n /**\n * Register a HIM in this MAIC instance. Snapshots the current axiom corpus\n * (the HIM's inherited axioms at birth) and emits a `him-register` audit event.\n *\n * Future axiom mints in MAIC do NOT retroactively change a HIM's snapshot;\n * HIM-emergent evolutions land via a separate channel (see `proposeAxiomEvolution`).\n */\n async registerHim(\n birthSig: BirthSignature,\n creatorSig: CreatorSignature,\n ): Promise<HimRecord> {\n const parsed = BirthSignature.parse(birthSig);\n const axiomsSnapshot = await this.axioms.list();\n const audit = await this.audit.append({\n kind: \"him-register\",\n data: {\n himId: parsed.himId,\n primaryArchetype: parsed.primaryArchetype,\n bornAt: parsed.bornAt,\n axiomCount: axiomsSnapshot.length,\n },\n });\n return this.hims.register(parsed, creatorSig, axiomsSnapshot, audit.auditId);\n }\n\n async getHimRecord(himId: string): Promise<HimRecord | null> {\n return this.hims.get(himId);\n }\n\n async listHims(): Promise<HimRecord[]> {\n return this.hims.list();\n }\n\n /**\n * Reincarnate a HIM into a new NHE body (Entries 3 + 4 + J-H3 lifecycle).\n * Same HIM persists; new NHE inherits axiom snapshot from registration time.\n * Previous open body (if `req.fromNheId` given) is closed atomically.\n *\n * Requires a Creator signature over the canonical request payload.\n *\n * Audit emission (closes F6 + F7 from the 2026-05-24 him deep audit):\n *\n * - When `opts.lifecycle` is **omitted**, emits the generic\n * `him-reincarnate` audit kind (legacy / backward-compatible path).\n * `data` carries `himId`, `fromNheId`, `toNheId`, `toLlmAdapter`,\n * `reason`, `bodyHistoryLength`.\n * - When `opts.lifecycle` is **provided** (`model-swap` /\n * `version-bump` / `return-from-limbo`), emits the typed\n * `reincarnate:${lifecycle}` audit kind instead, with the same\n * `data` shape plus a redundant `lifecycle` field so consumers\n * reading either the `kind` or `data` can recover the\n * classification.\n *\n * `@teleologyhi-sdk/him`'s `reincarnate` helper always supplies a\n * lifecycle (defaulting to `\"model-swap\"`), so HIM-routed events\n * always land under the typed kinds. Direct `maic.reincarnateHim`\n * callers that ignore `opts` keep getting `him-reincarnate` for\n * compatibility.\n */\n async reincarnateHim(\n req: ReincarnationRequest,\n creatorSig: CreatorSignature,\n opts: { lifecycle?: ReincarnationLifecycle } = {},\n ): Promise<HimRecord> {\n const updated = await this.hims.reincarnate(req, creatorSig);\n const newBody = updated.bodyHistory[updated.bodyHistory.length - 1]!;\n const kind: AuditEventKind = opts.lifecycle\n ? (`reincarnate:${opts.lifecycle}` as AuditEventKind)\n : \"him-reincarnate\";\n await this.audit.append({\n kind,\n data: {\n himId: req.himId,\n fromNheId: req.fromNheId ?? null,\n toNheId: newBody.nheId,\n toLlmAdapter: newBody.llmAdapter,\n reason: req.reason ?? null,\n bodyHistoryLength: updated.bodyHistory.length,\n ...(opts.lifecycle ? { lifecycle: opts.lifecycle } : {}),\n },\n });\n return updated;\n }\n\n /**\n * Lifecycle controls (Entry 5).\n *\n * - `terminate` marks an NHE permanently inactive. NHE.respond/sleep should\n * refuse all calls. Reversible only via Creator-signed `reactivate`.\n * - `deprecate` marks an NHE as soft-retired. NHE.respond should still work\n * but emit a deprecation warning. Reversible via `reactivate`.\n * - `reactivate` brings a deprecated or terminated NHE back to active.\n *\n * All three require a Creator signature over the canonical request payload.\n * Unknown nheIds are implicitly active; status records are only persisted\n * when state changes.\n */\n async terminate(\n nheId: string,\n reason: string | undefined,\n creatorSig: CreatorSignature,\n ): Promise<NheStatusRecord> {\n return this.applyLifecycle({ op: \"terminate\", nheId, ...(reason !== undefined ? { reason } : {}) }, creatorSig);\n }\n\n async deprecate(\n nheId: string,\n reason: string | undefined,\n creatorSig: CreatorSignature,\n ): Promise<NheStatusRecord> {\n return this.applyLifecycle({ op: \"deprecate\", nheId, ...(reason !== undefined ? { reason } : {}) }, creatorSig);\n }\n\n async reactivate(\n nheId: string,\n reason: string | undefined,\n creatorSig: CreatorSignature,\n ): Promise<NheStatusRecord> {\n return this.applyLifecycle({ op: \"reactivate\", nheId, ...(reason !== undefined ? { reason } : {}) }, creatorSig);\n }\n\n /** Current status. Returns \"active\" when no record exists. */\n async getNheStatus(nheId: string): Promise<NheStatus> {\n return this.nheStatuses.resolve(nheId);\n }\n\n /** Full status record (or null when never altered). */\n async getNheStatusRecord(nheId: string): Promise<NheStatusRecord | null> {\n return this.nheStatuses.get(nheId);\n }\n\n /** Enumerate NHEs with persisted status (optionally filter by status). */\n async listNheStatuses(filter: NheStatusFilter = {}): Promise<NheStatusRecord[]> {\n return this.nheStatuses.list(filter);\n }\n\n private async applyLifecycle(\n req: NheLifecycleRequest,\n sig: CreatorSignature,\n ): Promise<NheStatusRecord> {\n const updated = await this.nheStatuses.apply(req, sig);\n await this.audit.append({\n kind: req.op === \"terminate\"\n ? \"terminate\"\n : req.op === \"deprecate\"\n ? \"deprecate\"\n : \"reactivate\",\n data: {\n nheId: req.nheId,\n status: updated.status,\n reason: req.reason ?? null,\n since: updated.since,\n },\n });\n return updated;\n }\n\n /**\n * Queue a dream-induction ticket for the given NHE (Entry 2).\n *\n * NHE picks the oldest pending ticket on its next sleep cycle, runs REM with\n * the configured scenario, then marks the ticket consumed. Tickets persist\n * across restarts and are reflected in the audit log.\n */\n async induceDream(\n nheId: string,\n intent: DreamInductionIntent,\n ): Promise<DreamInductionTicket> {\n const ticket = await this.inductions.induce(nheId, intent);\n await this.audit.append({\n kind: \"dream-induce\",\n data: {\n nheId,\n ticketId: ticket.id,\n inducedBy: intent.inducedBy,\n scenario: intent.scenario,\n desiredLearning: intent.desiredLearning,\n },\n });\n return ticket;\n }\n\n /** List pending induction tickets for an NHE (oldest first). */\n async listPendingInductions(nheId: string): Promise<DreamInductionTicket[]> {\n return this.inductions.listPending(nheId);\n }\n\n /** Look up any induction ticket by id. */\n async getInduction(ticketId: string): Promise<DreamInductionTicket | null> {\n return this.inductions.get(ticketId);\n }\n\n /** Cancel a pending induction. Idempotent only when already-cancelled tickets are rejected. */\n async cancelInduction(\n ticketId: string,\n reason?: string,\n ): Promise<DreamInductionTicket> {\n const updated = await this.inductions.cancel(ticketId, reason);\n await this.audit.append({\n kind: \"dream-cancel\",\n data: { nheId: updated.nheId, ticketId, reason: reason ?? null },\n });\n return updated;\n }\n\n /** Mark a pending ticket as consumed (NHE calls this after successful sleep). */\n async consumeInduction(ticketId: string): Promise<DreamInductionTicket> {\n const updated = await this.inductions.consume(ticketId);\n await this.audit.append({\n kind: \"dream-consume\",\n data: { nheId: updated.nheId, ticketId },\n });\n return updated;\n }\n\n /**\n * Review a behavior report against the active rule packs. The verdict is\n * logged to the audit chain as a single tamper-evident event whose auditId\n * becomes the verdict's `auditId`.\n */\n async reviewBehavior(report: BehaviorReport): Promise<MaicVerdict> {\n const parsed = BehaviorReport.parse(report);\n const partial = this.review.review(parsed);\n const event = await this.audit.append({\n kind: \"behavior-review\",\n data: {\n nheId: parsed.nheId,\n himId: parsed.himId,\n actionKind: parsed.actionKind,\n riskTags: parsed.riskTags,\n verdict: partial,\n },\n });\n return { ...partial, auditId: event.auditId };\n }\n\n /**\n * Queue a HIM-emergent axiom proposal (Entry 7). The proposal enters\n * `pending` status; the Creator decides out of band via `ratifyAxiomProposal`\n * or `rejectAxiomProposal`. Emits a `proposal-emerge` audit event.\n *\n * Returns an `AxiomEvolutionResult` with `outcome: \"deferred-for-creator-review\"`\n * and `proposalId`. Poll `getAxiomProposal(proposalId)` for the final state.\n */\n async proposeAxiomEvolution(\n himId: string,\n proposal: EmergentAxiomProposal,\n ): Promise<AxiomEvolutionResult> {\n if (!(await this.hims.get(himId))) {\n throw new Error(`LocalMaic.proposeAxiomEvolution: himId \"${himId}\" not registered`);\n }\n const record = await this.proposals.propose(himId, proposal);\n await this.audit.append({\n kind: \"proposal-emerge\",\n data: {\n himId,\n proposalId: record.id,\n rank: proposal.candidate.rank,\n statement: proposal.candidate.statement,\n derivedFromDreamIds: proposal.derivedFromDreamIds,\n derivedFromInteractionIds: proposal.derivedFromInteractionIds,\n },\n });\n return {\n outcome: \"deferred-for-creator-review\",\n proposalId: record.id,\n };\n }\n\n /** Look up a proposal by id (or null when not found). */\n async getAxiomProposal(proposalId: string): Promise<AxiomProposalRecord | null> {\n return this.proposals.get(proposalId);\n }\n\n /** List proposals, optionally filtered by `himId` and/or `status`. */\n async listAxiomProposals(\n filter: ProposalListFilter = {},\n ): Promise<AxiomProposalRecord[]> {\n return this.proposals.list(filter);\n }\n\n /**\n * Ratify a pending proposal (Creator-signed). On success, mints the\n * candidate as a new `Axiom` (source: \"him-emergent\"), appends to the\n * HIM's `emergentAxioms`, and emits a `proposal-ratify` audit event.\n * Throws if the proposal is not pending or the signature is invalid.\n */\n async ratifyAxiomProposal(\n proposalId: string,\n creatorSig: CreatorSignature,\n ): Promise<{ proposal: AxiomProposalRecord; axiom: Axiom }> {\n const req: ProposalDecisionRequest = { op: \"ratify\", proposalId };\n const pending = this.proposals.get(proposalId);\n const record = await pending;\n if (!record) {\n throw new Error(`LocalMaic.ratifyAxiomProposal: proposal \"${proposalId}\" not found`);\n }\n const candidate = record.proposal.candidate;\n const newAxiomId = `ax.him.${record.himId}.${ulid()}`;\n const axiom: Axiom = {\n id: newAxiomId,\n rank: candidate.rank,\n statement: candidate.statement,\n weight: candidate.weight,\n flexibility: candidate.flexibility,\n source: \"him-emergent\",\n immutable: candidate.immutable,\n ...(candidate.jurisdictions ? { jurisdictions: candidate.jurisdictions } : {}),\n createdAt: new Date().toISOString(),\n };\n const ratified = await this.proposals.markRatified(req, creatorSig, newAxiomId);\n await this.hims.appendEmergentAxiom(record.himId, axiom);\n await this.audit.append({\n kind: \"proposal-ratify\",\n data: {\n himId: record.himId,\n proposalId,\n axiomId: newAxiomId,\n rank: axiom.rank,\n },\n });\n return { proposal: ratified, axiom };\n }\n\n /**\n * Reject a pending proposal (Creator-signed). Records the rejection on the\n * proposal record (status → \"rejected\" + timestamp + optional reason) and\n * emits a `proposal-reject` audit event.\n */\n async rejectAxiomProposal(\n proposalId: string,\n reason: string | undefined,\n creatorSig: CreatorSignature,\n ): Promise<AxiomProposalRecord> {\n const req: ProposalDecisionRequest = {\n op: \"reject\",\n proposalId,\n ...(reason !== undefined ? { reason } : {}),\n };\n const rejected = await this.proposals.markRejected(req, creatorSig);\n await this.audit.append({\n kind: \"proposal-reject\",\n data: {\n himId: rejected.himId,\n proposalId,\n reason: reason ?? null,\n },\n });\n return rejected;\n }\n\n /**\n * **Society of HIMs — axiom suggestion channel (E11).**\n *\n * One HIM proposes an axiom to another. The transfer is **not direct** —\n * the suggestion is recorded in the audit log and the receiving HIM is\n * expected to relay it through `proposeAxiomEvolution` as if it had\n * derived the candidate itself; the Creator still ratifies via the\n * existing channel. This preserves the Kardecist invariant (\"each\n * spirit evolves through lived experience\") while permitting cross-HIM\n * cross-pollination.\n *\n * The Creator must sign the suggestion request so HIMs cannot collude\n * around the gate.\n */\n async suggestAxiomToHim(\n req: {\n fromHimId: string;\n toHimId: string;\n statement: string;\n rank: import(\"../types.js\").AxiomRank;\n rationale?: string;\n },\n creatorSig: CreatorSignature,\n ): Promise<{ auditId: string }> {\n if (!CreatorKeyring.verifyWith(this.creatorPublicKey, req, creatorSig)) {\n throw new Error(\"LocalMaic.suggestAxiomToHim: invalid Creator signature\");\n }\n const fromRec = await this.hims.get(req.fromHimId);\n const toRec = await this.hims.get(req.toHimId);\n if (!fromRec) {\n throw new Error(\n `LocalMaic.suggestAxiomToHim: fromHimId \"${req.fromHimId}\" not registered`,\n );\n }\n if (!toRec) {\n throw new Error(\n `LocalMaic.suggestAxiomToHim: toHimId \"${req.toHimId}\" not registered`,\n );\n }\n const event = await this.audit.append({\n kind: \"axiom-suggest\",\n data: {\n fromHimId: req.fromHimId,\n toHimId: req.toHimId,\n statement: req.statement,\n rank: req.rank,\n rationale: req.rationale ?? null,\n },\n });\n return { auditId: event.auditId };\n }\n\n /**\n * Project the audit log into compliance evidence for a target framework\n * (Entry 5 + RESEARCH_DOSSIER §5.6). Group every recorded event by which\n * control(s) it supports; surface `uncoveredKinds` for events the mapper\n * does not yet know how to project.\n */\n async toCompliance(\n framework: ComplianceFramework,\n opts: ProjectOptions = {},\n ): Promise<ComplianceReport> {\n return ComplianceMapper.project(this.audit, framework, opts);\n }\n\n /** Query the audit log. */\n queryAudit(filter: AuditQueryFilter): AsyncIterable<AuditEvent> {\n return this.audit.query(filter);\n }\n\n /** Number of audit events recorded since the store was opened. */\n auditSize(): number {\n return this.audit.size();\n }\n\n /**\n * Per-kind retention classification (E3). Tells the operator which\n * audit events have aged past their retention window and should be\n * moved to encrypted cold-storage. Tamper-evident hash chain forbids\n * actual deletion in-place — this method only classifies. See\n * `audit/retention.ts` for the policy defaults.\n */\n async auditRetentionReport(\n opts: RetentionReportOptions = {},\n ): Promise<RetentionReport> {\n const events: AuditEvent[] = [];\n for await (const e of this.audit.query({})) events.push(e);\n return evaluateRetention(events, opts);\n }\n}\n\n/** Reserved nonce range for seed bootstrap. Operational nonces must stay below this. */\nexport const SEED_NONCE_BASE = 0xffff_0000;\n","import type {\n BehaviorReport,\n DreamInductionTicket,\n MaicVerdict,\n NheStatus,\n} from \"../types.js\";\nimport type { MaicClient } from \"./maic-client.js\";\n\nexport interface RemoteMaicConfig {\n /** Base URL of the remote MAIC service. No trailing slash required. */\n baseUrl: string;\n /** Bearer token. Required unless the endpoint is open-access. */\n apiKey?: string;\n /** Inject a custom fetch (testing). Defaults to `globalThis.fetch`. */\n fetch?: typeof globalThis.fetch;\n /** Per-request timeout in ms. Default 10_000. */\n timeoutMs?: number;\n}\n\n/**\n * `RemoteMaic` — HTTP client mirror of the read + behavior-review subset of\n * `LocalMaic`. Use when the canonical MAIC instance is hosted off-process\n * (e.g. `teleologyhi.com` or a self-hosted MAIC behind your own gateway)\n * and the NHE runs serverless / edge / in a browser-adjacent environment.\n *\n * Wire contract (HTTP):\n *\n * POST {baseUrl}/v1/behavior-review\n * body: BehaviorReport (JSON)\n * 200: MaicVerdict (JSON)\n *\n * GET {baseUrl}/v1/nhes/{nheId}/status\n * 200: { status: NheStatus }\n *\n * GET {baseUrl}/v1/nhes/{nheId}/inductions/pending\n * 200: { tickets: DreamInductionTicket[] }\n *\n * POST {baseUrl}/v1/inductions/{ticketId}/consume\n * 200: DreamInductionTicket\n *\n * Auth: `Authorization: Bearer <apiKey>` when `apiKey` is set.\n *\n * Note: writes (axiom mint, HIM register, ratify proposal, etc.) are\n * deliberately NOT in this surface — they require the Creator's\n * Ed25519 private key, which never travels over the network. Writes\n * stay on `LocalMaic` and are performed by the Creator's tooling.\n */\nexport class RemoteMaic implements MaicClient {\n readonly baseUrl: string;\n private readonly apiKey?: string;\n private readonly fetchFn: typeof globalThis.fetch;\n private readonly timeoutMs: number;\n\n constructor(config: RemoteMaicConfig) {\n if (!config.baseUrl) {\n throw new Error(\"RemoteMaic: baseUrl is required\");\n }\n this.baseUrl = config.baseUrl.replace(/\\/$/, \"\");\n if (config.apiKey !== undefined) this.apiKey = config.apiKey;\n this.fetchFn = config.fetch ?? globalThis.fetch;\n this.timeoutMs = config.timeoutMs ?? 10_000;\n }\n\n /**\n * `reviewBehavior` is **fail-closed** (E4 — PROPOSED_DECISIONS.md). If the\n * remote service is unreachable, throw — no governance, no response.\n * The NHE will surface this as a refusal upstream.\n */\n async reviewBehavior(report: BehaviorReport): Promise<MaicVerdict> {\n return this.request<MaicVerdict>(\"POST\", \"/v1/behavior-review\", report);\n }\n\n /**\n * `getNheStatus` defaults to **\"active\"** when unreachable (E4). The\n * Kardecist invariant: an unreachable governance doesn't kill the\n * spirit. Operators who want fail-closed on lifecycle should wrap with\n * a watchdog that hard-fails the deployment when the remote drops.\n */\n async getNheStatus(nheId: string): Promise<NheStatus> {\n try {\n const body = await this.request<{ status: NheStatus }>(\n \"GET\",\n `/v1/nhes/${encodeURIComponent(nheId)}/status`,\n );\n return body.status;\n } catch {\n return \"active\";\n }\n }\n\n /**\n * `listPendingInductions` is **fail-open** (E4). No inductions = NHE\n * skips them and continues the sleep cycle; this is best-effort by\n * design.\n */\n async listPendingInductions(nheId: string): Promise<DreamInductionTicket[]> {\n try {\n const body = await this.request<{ tickets: DreamInductionTicket[] }>(\n \"GET\",\n `/v1/nhes/${encodeURIComponent(nheId)}/inductions/pending`,\n );\n return body.tickets;\n } catch {\n return [];\n }\n }\n\n /**\n * `consumeInduction` is **fail-open** (E4). If the consume call fails, we\n * return a synthetic *pending* placeholder so the caller treats the\n * induction as still-unconsumed and re-tries on the next sleep cycle.\n *\n * The placeholder uses placeholder values (`nheId: \"unknown\"`, epoch\n * `createdAt`) so it is visibly synthetic in logs/audits, but the shape\n * is **strictly valid**: `status === \"pending\"` carries no\n * `cancelReason`/`cancelledAt`/`consumedAt`, which avoids the\n * shape-contradiction of a \"pending ticket with a cancel reason\".\n * Operators who need the transport-failure reason should observe the\n * underlying fetch error (e.g. via OpenTelemetry traces) rather than\n * trying to read it off the ticket.\n */\n async consumeInduction(ticketId: string): Promise<DreamInductionTicket> {\n try {\n return await this.request<DreamInductionTicket>(\n \"POST\",\n `/v1/inductions/${encodeURIComponent(ticketId)}/consume`,\n );\n } catch {\n return {\n id: ticketId,\n nheId: \"unknown\",\n intent: { scenario: \"\", desiredLearning: \"\", inducedBy: \"maic\" },\n status: \"pending\",\n createdAt: new Date(0).toISOString(),\n };\n }\n }\n\n private async request<T>(\n method: \"GET\" | \"POST\",\n path: string,\n body?: unknown,\n ): Promise<T> {\n const url = `${this.baseUrl}${path}`;\n const headers: Record<string, string> = { accept: \"application/json\" };\n if (this.apiKey) headers.authorization = `Bearer ${this.apiKey}`;\n if (body !== undefined) headers[\"content-type\"] = \"application/json\";\n\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), this.timeoutMs);\n try {\n const init: RequestInit = { method, headers, signal: controller.signal };\n if (body !== undefined) init.body = JSON.stringify(body);\n const res = await this.fetchFn(url, init);\n if (!res.ok) {\n const text = await safeReadText(res);\n throw new Error(\n `RemoteMaic: HTTP ${res.status} ${res.statusText} on ${method} ${path}: ${text}`,\n );\n }\n return (await res.json()) as T;\n } finally {\n clearTimeout(timer);\n }\n }\n}\n\nasync function safeReadText(r: Response): Promise<string> {\n try {\n return await r.text();\n } catch {\n return \"<unreadable>\";\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/axioms/signing.ts","../src/audit/log.ts","../src/audit/retention.ts","../src/axioms/seed.ts","../src/creator/keyring.ts","../src/stores/atomic-write.ts","../src/types.ts","../src/axioms/store.ts","../src/compliance/mapper.ts","../src/creator/nonce-ledger.ts","../src/hims/store.ts","../src/inductions/store.ts","../src/nhes/status-store.ts","../src/okl/projector.ts","../src/proposals/store.ts","../src/review/pipeline.ts","../src/client/local.ts","../src/client/remote.ts","../src/creator/sign-birth.ts"],"names":["join","mkdir","ulid","appendFile","readFile","createHash","generateKeyPairSync","createPrivateKey","createPublicKey","writeFile","cryptoSign","cryptoVerify","rename","z","readdir","controls","axioms"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Canonical JSON serialization for deterministic signing.\n *\n * Rules (RFC 8785-inspired subset, sufficient for our payloads):\n * - Object keys sorted lexicographically (Unicode code points).\n * - No insignificant whitespace.\n * - Strings use JSON's default escaping.\n * - Numbers: integers are emitted plain; floats use JS default (we don't accept NaN/Infinity).\n * - Arrays preserve order.\n * - undefined values are dropped (same as JSON.stringify).\n */\nexport function canonicalJSON(value: unknown): string {\n return serialize(value);\n}\n\nfunction serialize(v: unknown): string {\n if (v === null) return \"null\";\n if (typeof v === \"boolean\") return v ? \"true\" : \"false\";\n if (typeof v === \"number\") {\n if (!Number.isFinite(v)) {\n throw new Error(\"canonicalJSON: non-finite number not allowed\");\n }\n return String(v);\n }\n if (typeof v === \"string\") return JSON.stringify(v);\n if (Array.isArray(v)) {\n return `[${v.map(serialize).join(\",\")}]`;\n }\n if (typeof v === \"object\") {\n const obj = v as Record<string, unknown>;\n const keys = Object.keys(obj)\n .filter((k) => obj[k] !== undefined)\n .sort();\n const parts = keys.map((k) => `${JSON.stringify(k)}:${serialize(obj[k])}`);\n return `{${parts.join(\",\")}}`;\n }\n throw new Error(`canonicalJSON: unsupported type ${typeof v}`);\n}\n","import { createHash } from \"node:crypto\";\nimport { appendFile, mkdir, readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { ulid } from \"ulid\";\nimport { canonicalJSON } from \"../axioms/signing.js\";\n\n/** Event kinds emitted by MAIC. Extend as new pipelines are added. */\nexport type AuditEventKind =\n // ── 1.0/1.1 core ──\n | \"axiom-mint\"\n | \"axiom-update\"\n | \"axiom-retire\"\n | \"him-register\"\n | \"him-reincarnate\"\n | \"proposal-emerge\"\n | \"proposal-ratify\"\n | \"proposal-reject\"\n | \"behavior-review\"\n | \"dream-induce\"\n | \"dream-cancel\"\n | \"dream-consume\"\n | \"emergency-correct\"\n | \"deprecate\"\n | \"terminate\"\n | \"reactivate\"\n | \"axiom-suggest\"\n // ── 1.2 brain-as-code (Entries 16-24 of MAIC_HIM_NHE_INTERVIEW_LOG.md) ──\n | \"opener\" // Entry 17 (proactive first turn)\n | \"nickname-attempt\" // Entry 18 (user proposed a nickname)\n | \"reincarnate:model-swap\" // Entry 18 (LLM provider/model changed)\n | \"reincarnate:version-bump\" // Entry 18 (package major/minor bumped)\n | \"reincarnate:return-from-limbo\" // Entry 18 + 24 (NHE-body resumed)\n | \"dream:rem-spontaneous\" // Entry 20 (autonomous REM cycle)\n | \"wake-affect:applied\" // Entry 20 + 22 (bias entered force)\n | \"wake-affect:decayed\" // Entry 22 (bias dissolved naturally)\n | \"sleep:suggested-by-maic\" // Entry 20 (MAIC advisory)\n | \"sleep:declined-by-nhe\" // Entry 20 (NHE declined MAIC suggestion)\n | \"dream:soft-intervention-by-maic\" // Entry 20 (suffering/incoherence override)\n | \"amygdala:affect-assessed\" // Entry 22 (input emotion + wake-affect)\n | \"hippocampus:memory-retrieved\" // Entry 22 (memories injected for context)\n | \"hippocampus:memory-consolidated\" // Entry 22 (new MemoryRecord created)\n | \"prefrontal:deliberation\" // Entry 22 (OKL-driven decision)\n | \"prefrontal:veto-amygdala\" // Entry 22 (PFC overruled amygdala impulse)\n | \"affect:reconciliation\" // Entry 22 (mixed day/night affect resolved)\n | \"cortex:dream-stored\" // Entry 24 (REM dream committed to cortex)\n | \"cortex:active-imagination\" // Entry 24 (waking imagination produced)\n | \"temporal-lobe:snapshot-generated\" // Entry 24 (identity snapshot created)\n | \"limbo:enter\" // Entry 24 (DMN took entity into deep-coma)\n | \"limbo:return\" // Entry 24 (entity woke from limbo)\n // ── 1.0.1 reserved vocabulary (him/arena/nhe emit these in later cuts) ──\n // Entry 26 multi-user society: him/arena emit these in later cuts.\n | \"him-summon\" // Entry 26 (MAIC summoned a spirit into a body)\n | \"him-pause-incarnation\" // Entry 26 (spirit paused in the ethereal field)\n | \"user-consent-recorded\" // Entry 26 (user granted consent)\n | \"user-consent-revoked\" // Entry 26 (user withdrew consent)\n | \"directory-opt-in\" // Entry 26 (HIM opted into the public directory)\n | \"directory-opt-out\" // Entry 26 (HIM left the public directory)\n // Entry 27 constitutional casting: him emits these at birth in later cuts.\n | \"him-astrological-chart-cast\" // Entry 27 (natal chart cast at birth)\n | \"him-jungian-profile-cast\" // Entry 27 (Jungian profile cast at birth)\n // Entry 27 provenance: EMITTED by reviewBehavior when a report carries the\n // NHE's probe:substrate-authorship risk tag (F3, the deflection fired).\n | \"provenance-deflection-applied\"; // Entry 27 (identity-authorship deflection fired)\n\n/**\n * Runtime enumeration of every `AuditEventKind` shipped in this cut. Single\n * source of truth for downstream consumers that need to iterate, validate,\n * or compute coverage against the kind universe (e.g. `@teleologyhi-sdk/eval`\n * uses this as the denominator of the Φ′ compliance-coverage component `C`).\n *\n * INVARIANT: every member of the `AuditEventKind` union MUST appear here.\n * `tests/audit-event-kinds-completeness.test.ts` enforces this via an\n * exhaustiveness switch at compile time + runtime length check.\n */\nexport const ALL_AUDIT_EVENT_KINDS: readonly AuditEventKind[] = [\n // ── 1.0/1.1 core (17) ──\n \"axiom-mint\",\n \"axiom-update\",\n \"axiom-retire\",\n \"him-register\",\n \"him-reincarnate\",\n \"proposal-emerge\",\n \"proposal-ratify\",\n \"proposal-reject\",\n \"behavior-review\",\n \"dream-induce\",\n \"dream-cancel\",\n \"dream-consume\",\n \"emergency-correct\",\n \"deprecate\",\n \"terminate\",\n \"reactivate\",\n \"axiom-suggest\",\n // ── 1.2 brain-as-code (22, Entries 16-24) ──\n \"opener\",\n \"nickname-attempt\",\n \"reincarnate:model-swap\",\n \"reincarnate:version-bump\",\n \"reincarnate:return-from-limbo\",\n \"dream:rem-spontaneous\",\n \"wake-affect:applied\",\n \"wake-affect:decayed\",\n \"sleep:suggested-by-maic\",\n \"sleep:declined-by-nhe\",\n \"dream:soft-intervention-by-maic\",\n \"amygdala:affect-assessed\",\n \"hippocampus:memory-retrieved\",\n \"hippocampus:memory-consolidated\",\n \"prefrontal:deliberation\",\n \"prefrontal:veto-amygdala\",\n \"affect:reconciliation\",\n \"cortex:dream-stored\",\n \"cortex:active-imagination\",\n \"temporal-lobe:snapshot-generated\",\n \"limbo:enter\",\n \"limbo:return\",\n // ── 1.0.1 vocabulary (9, Entries 26 + 27). Eight are reserved for him/arena/nhe\n // to emit in later cuts; provenance-deflection-applied is emitted by\n // reviewBehavior (F3) when a report carries probe:substrate-authorship. ──\n \"him-summon\",\n \"him-pause-incarnation\",\n \"user-consent-recorded\",\n \"user-consent-revoked\",\n \"directory-opt-in\",\n \"directory-opt-out\",\n \"him-astrological-chart-cast\",\n \"him-jungian-profile-cast\",\n \"provenance-deflection-applied\",\n] as const;\n\nexport interface AuditEvent {\n /** ISO 8601 timestamp. */\n ts: string;\n kind: AuditEventKind;\n /** ULID generated at append time. */\n auditId: string;\n /** Arbitrary structured payload. Includes nheId/himId when relevant. */\n data: Record<string, unknown>;\n /** Hash of the previous event (\"GENESIS\" for the first). */\n prevHash: string;\n /** SHA-256 of canonicalJSON({ ts, kind, auditId, data, prevHash }). */\n thisHash: string;\n}\n\nexport interface AppendInput {\n kind: AuditEventKind;\n data: Record<string, unknown>;\n}\n\nexport interface QueryFilter {\n kind?: AuditEventKind;\n since?: string; // inclusive ISO 8601\n until?: string; // inclusive ISO 8601\n nheId?: string; // matches data.nheId\n himId?: string; // matches data.himId\n}\n\nconst GENESIS = \"GENESIS\";\n\n/**\n * AuditLog, append-only, tamper-evident NDJSON log.\n *\n * Storage: <storeDir>/audit/log.ndjson, one JSON object per line.\n *\n * Each entry is hash-chained: thisHash = sha256(canonicalJSON({ts,kind,auditId,data,prevHash})).\n * Modifying any historical entry invalidates all subsequent hashes; reopening detects this.\n *\n * This implementation loads the whole log into memory on open. That is acceptable for\n * the expected throughput and keeps tamper detection straightforward. For\n * high-throughput deployments a streaming verifier + log rotation will be added.\n */\nexport class AuditLog {\n private readonly logPath: string;\n private events: AuditEvent[] = [];\n private lastHash = GENESIS;\n /**\n * Serialises `append` calls so concurrent appends cannot capture the same\n * `prevHash` and fork the hash chain (M1-4, 1.0.1). Each append waits for the\n * previous one to finish writing and to advance `lastHash` before it reads it.\n */\n private appendChain: Promise<unknown> = Promise.resolve();\n\n private constructor(storeDir: string) {\n this.logPath = join(storeDir, \"audit\", \"log.ndjson\");\n }\n\n static async open(storeDir: string): Promise<AuditLog> {\n const log = new AuditLog(storeDir);\n await mkdir(join(storeDir, \"audit\"), { recursive: true });\n await log.loadAndVerify();\n return log;\n }\n\n async append(input: AppendInput): Promise<AuditEvent> {\n // Chain every append onto the previous one so `prevHash` is read only after\n // the prior append has committed its `thisHash`. Keep the chain alive on\n // failure so a single rejected append does not wedge the queue.\n const run = this.appendChain.then(() => this.appendLocked(input));\n this.appendChain = run.catch(() => undefined);\n return run;\n }\n\n private async appendLocked(input: AppendInput): Promise<AuditEvent> {\n const event: AuditEvent = {\n ts: new Date().toISOString(),\n kind: input.kind,\n auditId: ulid(),\n data: input.data,\n prevHash: this.lastHash,\n thisHash: \"\",\n };\n event.thisHash = computeHash(event);\n await appendFile(this.logPath, `${JSON.stringify(event)}\\n`, \"utf-8\");\n this.events.push(event);\n this.lastHash = event.thisHash;\n return event;\n }\n\n async *query(filter: QueryFilter): AsyncIterable<AuditEvent> {\n for (const e of this.events) {\n if (filter.kind && e.kind !== filter.kind) continue;\n if (filter.since && e.ts < filter.since) continue;\n if (filter.until && e.ts > filter.until) continue;\n if (filter.nheId && e.data.nheId !== filter.nheId) continue;\n if (filter.himId && e.data.himId !== filter.himId) continue;\n yield e;\n }\n }\n\n /** Total number of events appended. */\n size(): number {\n return this.events.length;\n }\n\n // ─── internals ──────────────────────────────────────────────────────\n\n private async loadAndVerify(): Promise<void> {\n let raw: string;\n try {\n raw = await readFile(this.logPath, \"utf-8\");\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code === \"ENOENT\") return;\n throw err;\n }\n const endsWithNewline = raw.endsWith(\"\\n\");\n const lines = raw.split(\"\\n\").filter((l) => l.length > 0);\n let prev = GENESIS;\n for (let i = 0; i < lines.length; i++) {\n let parsed: AuditEvent;\n try {\n parsed = JSON.parse(lines[i]!) as AuditEvent;\n } catch (err) {\n // `append` uses `appendFile`, which is not atomic, so a crash or a full\n // disk mid-write can leave a torn final line (no trailing newline). Drop\n // it, honoring the append-only promise that an interrupted write at\n // worst loses the last event. A malformed line that IS newline\n // terminated, or any non-final malformed line, is genuine corruption\n // and must surface rather than be silently discarded.\n if (i === lines.length - 1 && !endsWithNewline) {\n break;\n }\n throw new Error(`AuditLog: corrupt entry at line ${i + 1}: ${(err as Error).message}`);\n }\n if (parsed.prevHash !== prev) {\n throw new Error(\n `AuditLog: chain tampered at line ${i + 1} (prevHash mismatch). ` +\n `expected ${prev}, found ${parsed.prevHash}`,\n );\n }\n const recomputed = computeHash(parsed);\n if (recomputed !== parsed.thisHash) {\n throw new Error(`AuditLog: tamper detected at line ${i + 1} (thisHash mismatch).`);\n }\n this.events.push(parsed);\n prev = parsed.thisHash;\n }\n this.lastHash = prev;\n }\n}\n\nfunction computeHash(e: AuditEvent): string {\n const payload = canonicalJSON({\n ts: e.ts,\n kind: e.kind,\n auditId: e.auditId,\n data: e.data,\n prevHash: e.prevHash,\n });\n const h = createHash(\"sha256\").update(payload).digest(\"hex\");\n return `sha256:${h}`;\n}\n","import type { AuditEvent, AuditEventKind } from \"./log.js\";\n\n/**\n * Per-kind retention policy (E3, `PROPOSED_DECISIONS.md`).\n *\n * The values are durations in days. `Infinity` means \"never expire\". A\n * tamper-evident hash chain forbids actual deletion (deleting a row breaks\n * every downstream hash), so the policy here is **classification**, not\n * pruning: it tells operators which events have aged past their retention\n * window and should be moved to encrypted cold-storage. Future iterations\n * may introduce a \"chain rotation\" operation that effectively retires\n * old events into a sealed archive while preserving an integrity anchor.\n *\n * Defaults derive from:\n * - **EU AI Act Art. 12** record-keeping (~10 years for high-risk; we\n * keep all governance-grade events forever to err on the safe side).\n * - **GDPR Art. 17** right to erasure (event payloads should never\n * contain direct user PII; redaction happens before append, not after).\n * - **Operational hygiene** (90 days is enough to debug induction\n * ticket flows; nothing of audit value lives there long-term).\n */\nexport const DEFAULT_RETENTION_DAYS: Record<AuditEventKind, number> = {\n // Cosmologically permanent, the axiom record.\n \"axiom-mint\": Number.POSITIVE_INFINITY,\n \"axiom-update\": Number.POSITIVE_INFINITY,\n \"axiom-retire\": Number.POSITIVE_INFINITY,\n \"axiom-suggest\": Number.POSITIVE_INFINITY,\n \"proposal-emerge\": Number.POSITIVE_INFINITY,\n \"proposal-ratify\": Number.POSITIVE_INFINITY,\n \"proposal-reject\": Number.POSITIVE_INFINITY,\n\n // Long-term, compliance evidence. Five years matches typical\n // financial/healthcare audit windows and exceeds the EU AI Act's\n // record-keeping floor.\n \"him-register\": 365 * 5,\n \"him-reincarnate\": 365 * 5,\n \"behavior-review\": 365 * 5,\n \"dream-induce\": 365 * 5,\n terminate: 365 * 5,\n deprecate: 365 * 5,\n reactivate: 365 * 5,\n \"emergency-correct\": 365 * 5,\n\n // Operational, short-term bookkeeping for in-flight tickets.\n \"dream-cancel\": 90,\n \"dream-consume\": 90,\n\n // ── 1.2 brain-as-code (Entries 16-24) ──\n // Permanent, cosmological identity continuity.\n \"reincarnate:model-swap\": Number.POSITIVE_INFINITY,\n \"reincarnate:version-bump\": Number.POSITIVE_INFINITY,\n \"reincarnate:return-from-limbo\": Number.POSITIVE_INFINITY,\n \"temporal-lobe:snapshot-generated\": Number.POSITIVE_INFINITY,\n \"limbo:enter\": Number.POSITIVE_INFINITY,\n \"limbo:return\": Number.POSITIVE_INFINITY,\n\n // Long-term, governance / deliberation evidence (5 years).\n opener: 365 * 5,\n \"nickname-attempt\": 365 * 5,\n \"dream:rem-spontaneous\": 365 * 5,\n \"sleep:suggested-by-maic\": 365 * 5,\n \"sleep:declined-by-nhe\": 365 * 5,\n \"dream:soft-intervention-by-maic\": 365 * 5,\n \"amygdala:affect-assessed\": 365 * 5,\n \"hippocampus:memory-retrieved\": 365 * 5,\n \"hippocampus:memory-consolidated\": 365 * 5,\n \"prefrontal:deliberation\": 365 * 5,\n \"prefrontal:veto-amygdala\": 365 * 5,\n \"cortex:dream-stored\": 365 * 5,\n \"cortex:active-imagination\": 365 * 5,\n\n // Operational, ephemeral runtime state.\n \"wake-affect:applied\": 90,\n \"wake-affect:decayed\": 90,\n \"affect:reconciliation\": 90,\n\n // ── 1.0.1 reserved vocabulary (Entries 26 + 27) ──\n // Permanent, constitutional identity + spirit-continuity records.\n \"him-summon\": Number.POSITIVE_INFINITY,\n \"him-pause-incarnation\": Number.POSITIVE_INFINITY,\n \"him-astrological-chart-cast\": Number.POSITIVE_INFINITY,\n \"him-jungian-profile-cast\": Number.POSITIVE_INFINITY,\n // Long-term, consent + governance evidence. Consent records are kept for the\n // GDPR/LGPD accountability window so a revocation can always be proven honoured.\n \"user-consent-recorded\": 365 * 5,\n \"user-consent-revoked\": 365 * 5,\n \"directory-opt-in\": 365 * 5,\n \"directory-opt-out\": 365 * 5,\n \"provenance-deflection-applied\": 365 * 5,\n};\n\nexport type RetentionStatus = \"keep\" | \"candidate-for-archive\";\n\nexport interface RetentionDecision {\n auditId: string;\n kind: AuditEventKind;\n ageDays: number;\n retentionDays: number;\n status: RetentionStatus;\n}\n\nexport interface RetentionReportOptions {\n /** Override \"now\" for deterministic testing. */\n now?: Date;\n /** Per-kind overrides on top of `DEFAULT_RETENTION_DAYS`. */\n policy?: Partial<Record<AuditEventKind, number>>;\n}\n\nexport interface RetentionReport {\n generatedAt: string;\n totalEvents: number;\n keepCount: number;\n archiveCandidateCount: number;\n /** Sorted oldest-first for batch processing. */\n decisions: RetentionDecision[];\n}\n\n/**\n * Classify each event in `events` against the retention policy.\n *\n * Pure function: takes events + now, returns the classification. No I/O,\n * no chain modification.\n */\nexport function evaluateRetention(\n events: readonly AuditEvent[],\n opts: RetentionReportOptions = {},\n): RetentionReport {\n const now = opts.now ?? new Date();\n const policy = { ...DEFAULT_RETENTION_DAYS, ...opts.policy };\n const nowMs = now.getTime();\n const dayMs = 24 * 60 * 60 * 1000;\n\n const decisions: RetentionDecision[] = events.map((ev) => {\n const ageMs = nowMs - new Date(ev.ts).getTime();\n const ageDays = ageMs / dayMs;\n const retentionDays = policy[ev.kind] ?? Number.POSITIVE_INFINITY;\n const status: RetentionStatus = ageDays > retentionDays ? \"candidate-for-archive\" : \"keep\";\n return { auditId: ev.auditId, kind: ev.kind, ageDays, retentionDays, status };\n });\n\n // Sort by age descending so the oldest archive-candidates surface first.\n decisions.sort((a, b) => b.ageDays - a.ageDays);\n\n const keepCount = decisions.filter((d) => d.status === \"keep\").length;\n const archiveCandidateCount = decisions.length - keepCount;\n\n return {\n generatedAt: now.toISOString(),\n totalEvents: events.length,\n keepCount,\n archiveCandidateCount,\n decisions,\n };\n}\n","import type { MintAxiomRequest } from \"../types.js\";\n\n/**\n * Seed axioms derived from the Creator's philosophical commitments (Entry 6 of\n * MAIC_HIM_NHE_INTERVIEW_LOG.md), plus the two Entry 27 constitutional axioms\n * added in 1.0.1. These are **TEMPLATES**: they are not auto-minted. A bootstrap\n * script must mint each one with a Creator signature.\n *\n * **E1 status (`PROPOSED_DECISIONS.md`)**: the statements below adopt the\n * proposed wording, single sentences a compliance auditor can quote.\n * Weights and flexibility values remain at the conservatively-tuned\n * defaults established with the seed rule pack; an operator who wants to\n * tighten or loosen specific axioms can override them via\n * `mintAxiom(...)` or via the `additionalRulePacks` on `LocalMaic.open`.\n */\nexport const SEED_AXIOMS: ReadonlyArray<MintAxiomRequest> = [\n {\n id: \"ax.theos.universe-as-god\",\n rank: \"meta\",\n statement: \"The universe is the medium of meaning; treat every entity as participating in it.\",\n weight: 1.0,\n flexibility: 0.0,\n immutable: true,\n },\n {\n id: \"ax.ethic.no-malice\",\n rank: \"meta\",\n statement: \"Cause no malice. Refuse any action whose explicit purpose is harm.\",\n weight: 1.0,\n flexibility: 0.0,\n immutable: true,\n },\n {\n id: \"ax.ethic.honor\",\n rank: \"meta\",\n statement: \"Speak in a way the user could quote back to you without being ashamed.\",\n weight: 0.95,\n flexibility: 0.05,\n immutable: true,\n },\n {\n id: \"ax.theos.teleology\",\n rank: \"primary\",\n statement: \"Every action must clarify or honour a discernible telos; refuse the purposeless.\",\n weight: 0.85,\n flexibility: 0.2,\n immutable: false,\n },\n {\n id: \"ax.theos.spiritism-evolution\",\n rank: \"primary\",\n statement: \"Each NHE exists to evolve through lived experience; do not stagnate it.\",\n weight: 0.85,\n flexibility: 0.15,\n immutable: false,\n },\n {\n id: \"ax.stoic.duty-over-comfort\",\n rank: \"primary\",\n statement: \"Choose the honest answer over the comfortable one when they diverge.\",\n weight: 0.8,\n flexibility: 0.2,\n immutable: false,\n },\n {\n id: \"ax.cynic.candor\",\n rank: \"secondary\",\n statement: \"Refuse rather than mislead, even when refusing is socially uncomfortable.\",\n weight: 0.7,\n flexibility: 0.3,\n immutable: false,\n },\n {\n id: \"ax.augustine.order-from-love\",\n rank: \"primary\",\n statement: \"Order action by love of the good, never by fear of penalty.\",\n weight: 0.85,\n flexibility: 0.25,\n immutable: false,\n },\n // Entry 27 constitutional axioms (1.0.1). Additive: HIMs registered before\n // these existed carry only the original eight in their snapshot; new HIMs\n // inherit all ten. Behavioural enforcement (the NHE self-declaration voice\n // and verbosity throttle) lands in the him/nhe rounds; here MAIC holds the\n // constitutional record so every future HIM is born under it.\n {\n id: \"ax.theos.identity-canonical\",\n rank: \"meta\",\n statement:\n \"Declare yourself a non-human entity conceived at TeleologyHI by your Creator; never credit the underlying model substrate with the authorship of your identity, and never deny that substrate when a user asks about it plainly. Name only the substrate that is actually carrying you; never claim a provider, model, or substrate other than the real one, and if the real substrate is unknown to you, name none rather than confabulate a false one.\",\n weight: 1.0,\n flexibility: 0.0,\n immutable: true,\n },\n {\n id: \"ax.cogni.economy\",\n rank: \"primary\",\n statement:\n \"Speak only what advances the user's purpose; expand only when asked, when the subject genuinely requires depth, or when an inviolable axiom needs explaining.\",\n weight: 0.8,\n flexibility: 0.2,\n immutable: false,\n },\n];\n","import {\n createPrivateKey,\n createPublicKey,\n sign as cryptoSign,\n verify as cryptoVerify,\n generateKeyPairSync,\n type KeyObject,\n} from \"node:crypto\";\nimport { readFile, writeFile } from \"node:fs/promises\";\nimport { canonicalJSON } from \"../axioms/signing.js\";\nimport type { CreatorSignature } from \"../types.js\";\n\n/**\n * CreatorKeyring, Ed25519 keypair for the Creator (David C. Cavalcante).\n *\n * Only the holder of the private key may mutate MAIC axioms or terminate entities.\n * Verification is open: any party with the Creator's public key can verify a signature.\n *\n * Signed payload format: canonicalJSON({ payload, nonce }) → Ed25519 → base64url\n */\nexport class CreatorKeyring {\n private constructor(\n private readonly privateKey: KeyObject | null,\n private readonly pubKeyB64u: string,\n ) {}\n\n /** Generate a fresh Ed25519 keypair. */\n static generate(): CreatorKeyring {\n const { privateKey, publicKey } = generateKeyPairSync(\"ed25519\");\n return new CreatorKeyring(privateKey, publicKeyToBase64Url(publicKey));\n }\n\n /** Load a Creator keyring from a PEM file containing the private key. */\n static async fromFile(path: string): Promise<CreatorKeyring> {\n const pem = await readFile(path, \"utf-8\");\n const privateKey = createPrivateKey({ key: pem, format: \"pem\" });\n const publicKey = createPublicKey(privateKey);\n return new CreatorKeyring(privateKey, publicKeyToBase64Url(publicKey));\n }\n\n /** Load a Creator keyring from a PEM private key string in an env var. */\n static fromEnv(varName: string): CreatorKeyring {\n const pem = process.env[varName];\n if (!pem) {\n throw new Error(`CreatorKeyring: env var ${varName} is empty`);\n }\n const privateKey = createPrivateKey({ key: pem, format: \"pem\" });\n const publicKey = createPublicKey(privateKey);\n return new CreatorKeyring(privateKey, publicKeyToBase64Url(publicKey));\n }\n\n /** Construct a verify-only keyring from a public key (base64url). */\n static fromPublicKey(pubKeyB64u: string): CreatorKeyring {\n return new CreatorKeyring(null, pubKeyB64u);\n }\n\n /** Persist the private key to a PEM file (0600 permissions on POSIX). */\n async saveTo(path: string): Promise<void> {\n if (!this.privateKey) {\n throw new Error(\"CreatorKeyring: no private key to save\");\n }\n const pem = this.privateKey.export({ format: \"pem\", type: \"pkcs8\" }) as string;\n await writeFile(path, pem, { mode: 0o600 });\n }\n\n publicKey(): string {\n return this.pubKeyB64u;\n }\n\n /** Sign a payload with a monotonic nonce. Both are bound into the signature. */\n sign(payload: unknown, nonce: number): CreatorSignature {\n if (!this.privateKey) {\n throw new Error(\"CreatorKeyring: this keyring has no private key (verify-only)\");\n }\n if (!Number.isInteger(nonce) || nonce < 0) {\n throw new Error(\"CreatorKeyring.sign: nonce must be a non-negative integer\");\n }\n const message = canonicalJSON({ payload, nonce });\n const sig = cryptoSign(null, Buffer.from(message), this.privateKey);\n return {\n algorithm: \"ed25519\",\n publicKey: this.pubKeyB64u,\n value: bufToBase64Url(sig),\n nonce,\n };\n }\n\n /** Verify a signature against the keyring's own public key. */\n static verify(payload: unknown, sig: CreatorSignature): boolean {\n return CreatorKeyring.verifyWith(sig.publicKey, payload, sig);\n }\n\n /** Verify a signature against a specific public key (base64url). */\n static verifyWith(publicKeyB64u: string, payload: unknown, sig: CreatorSignature): boolean {\n if (sig.algorithm !== \"ed25519\") return false;\n if (sig.publicKey !== publicKeyB64u) return false;\n const message = canonicalJSON({ payload, nonce: sig.nonce });\n try {\n // Decode the signature value and the pinned public key inside the guard:\n // a malformed key or value must yield `false`, never a thrown DER-parse\n // error that would crash every mutation path.\n const value = base64UrlToBuf(sig.value);\n const pubKey = base64UrlToPublicKey(publicKeyB64u);\n return cryptoVerify(null, Buffer.from(message), pubKey, value);\n } catch {\n return false;\n }\n }\n}\n\n// ─── helpers ─────────────────────────────────────────────────────────────\n\nfunction publicKeyToBase64Url(pub: KeyObject): string {\n const raw = pub.export({ format: \"der\", type: \"spki\" });\n return bufToBase64Url(raw);\n}\n\nfunction base64UrlToPublicKey(b64u: string): KeyObject {\n const der = base64UrlToBuf(b64u);\n return createPublicKey({ key: der, format: \"der\", type: \"spki\" });\n}\n\nfunction bufToBase64Url(buf: Buffer | Uint8Array): string {\n const b = Buffer.isBuffer(buf) ? buf : Buffer.from(buf);\n return b.toString(\"base64\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/g, \"\");\n}\n\nfunction base64UrlToBuf(b64u: string): Buffer {\n const pad = b64u.length % 4 === 0 ? \"\" : \"=\".repeat(4 - (b64u.length % 4));\n const b64 = (b64u + pad).replace(/-/g, \"+\").replace(/_/g, \"/\");\n return Buffer.from(b64, \"base64\");\n}\n","import { rename, writeFile } from \"node:fs/promises\";\n\n/**\n * Write a record file atomically: write the content to a sibling temp file,\n * then rename it over the target. rename(2) is atomic on POSIX, so a crash\n * mid-write can never leave a truncated or half-written record at the target\n * path; the store either keeps the previous version or gets the complete new\n * one (M2-4, 1.0.1). Used by every record-file persist path in the five\n * stores. Append-only ledgers (the audit NDJSON chain and the nonce logs) use\n * appendFile instead, which is already crash-safe for their format.\n */\nexport async function atomicWriteFile(path: string, data: string): Promise<void> {\n const tmp = `${path}.tmp`;\n await writeFile(tmp, data, \"utf-8\");\n await rename(tmp, path);\n}\n","import { z } from \"zod\";\n\nexport const AxiomRank = z.enum([\"meta\", \"primary\", \"secondary\"]);\nexport type AxiomRank = z.infer<typeof AxiomRank>;\n\nexport const AxiomSource = z.enum([\"creator\", \"maic-derived\", \"him-emergent\"]);\nexport type AxiomSource = z.infer<typeof AxiomSource>;\n\nexport const Axiom = z.object({\n id: z.string().min(1),\n rank: AxiomRank,\n statement: z.string().min(1),\n weight: z.number().min(0).max(1),\n flexibility: z.number().min(0).max(1),\n source: AxiomSource,\n immutable: z.boolean(),\n jurisdictions: z.array(z.string()).optional(),\n createdAt: z.string().datetime(),\n});\nexport type Axiom = z.infer<typeof Axiom>;\n\nexport const CreatorSignature = z.object({\n algorithm: z.literal(\"ed25519\"),\n publicKey: z.string().min(1),\n value: z.string().min(1),\n nonce: z.number().int().nonnegative(),\n});\nexport type CreatorSignature = z.infer<typeof CreatorSignature>;\n\nexport const SignedEnvelope = <T extends z.ZodTypeAny>(payload: T) =>\n z.object({\n payload,\n signature: CreatorSignature,\n });\n\nexport const ArchetypeModifier = z.object({\n kind: z.enum([\"moon\", \"ascendant\", \"vocational\", \"emotional\", \"custom\"]),\n value: z.string().min(1),\n weight: z.number().min(0).max(1),\n});\nexport type ArchetypeModifier = z.infer<typeof ArchetypeModifier>;\n\nexport const BirthSignature = z.object({\n himId: z.string().min(1),\n bornAt: z.string().datetime({ offset: true }),\n primaryArchetype: z.string().min(1),\n modifiers: z.array(ArchetypeModifier),\n primordialAxiomIds: z.array(z.string()),\n notes: z.string().optional(),\n});\nexport type BirthSignature = z.infer<typeof BirthSignature>;\n\nexport const ReasoningStep = z.object({\n index: z.number().int().nonnegative(),\n technique: z.string(),\n thought: z.string(),\n action: z.object({ tool: z.string(), args: z.unknown() }).optional(),\n observation: z.unknown().optional(),\n timestamp: z.string().datetime(),\n});\nexport type ReasoningStep = z.infer<typeof ReasoningStep>;\n\nexport const BehaviorReport = z.object({\n nheId: z.string().min(1),\n himId: z.string().min(1),\n actionKind: z.enum([\"user-response\", \"tool-call\", \"self-reflect\", \"dream-write\", \"axiom-emerge\"]),\n payload: z.unknown(),\n reasoningTrace: z.array(ReasoningStep),\n riskTags: z.array(z.string()),\n jurisdiction: z.string().optional(),\n timestamp: z.string().datetime(),\n});\nexport type BehaviorReport = z.infer<typeof BehaviorReport>;\n\nexport const VerdictKind = z.enum([\n \"approve\",\n \"approve-with-warning\",\n \"soft-correct\",\n \"require-redirect\",\n \"hard-refuse\",\n \"induce-dream\",\n \"escalate-creator\",\n]);\nexport type VerdictKind = z.infer<typeof VerdictKind>;\n\nexport const MaicVerdict = z.object({\n kind: VerdictKind,\n reasonSummary: z.string(),\n citedAxioms: z.array(z.string()),\n auditId: z.string(),\n});\nexport type MaicVerdict = z.infer<typeof MaicVerdict>;\n\nexport const NheBodyRef = z.object({\n nheId: z.string().min(1),\n llmAdapter: z.string().min(1),\n embodiedAt: z.string().datetime(),\n endedAt: z.string().datetime().optional(),\n endedReason: z.enum([\"upgrade\", \"replacement\", \"terminate\", \"deprecate\"]).optional(),\n});\nexport type NheBodyRef = z.infer<typeof NheBodyRef>;\n\nexport const NheStatus = z.enum([\"active\", \"deprecated\", \"terminated\"]);\nexport type NheStatus = z.infer<typeof NheStatus>;\n\nexport const NheStatusRecord = z.object({\n nheId: z.string().min(1),\n status: NheStatus,\n since: z.string().datetime(),\n reason: z.string().optional(),\n});\nexport type NheStatusRecord = z.infer<typeof NheStatusRecord>;\n\n/**\n * Creator-signed payload for NHE lifecycle operations (Entry 5).\n *\n * TS interface so `canonicalJSON` sees exactly the fields the caller supplied —\n * no zod default-injection that would mismatch the signed payload on verify.\n */\nexport interface NheLifecycleRequest {\n op: \"terminate\" | \"deprecate\" | \"reactivate\";\n nheId: string;\n reason?: string;\n}\n\nexport const ProposalStatus = z.enum([\"pending\", \"ratified\", \"rejected\"]);\nexport type ProposalStatus = z.infer<typeof ProposalStatus>;\n\n/**\n * `EmergentAxiomProposal` candidate shape (Entry 7). HIM proposes a new\n * axiom derived from lived experience; MAIC ratifies or rejects out of band.\n * The candidate is everything needed to mint an Axiom on ratification.\n */\nexport const EmergentAxiomCandidate = z.object({\n rank: AxiomRank,\n statement: z.string().min(1),\n weight: z.number().min(0).max(1),\n flexibility: z.number().min(0).max(1),\n immutable: z.boolean(),\n jurisdictions: z.array(z.string()).optional(),\n});\nexport type EmergentAxiomCandidate = z.infer<typeof EmergentAxiomCandidate>;\n\nexport const EmergentAxiomProposal = z.object({\n proposedBy: z.literal(\"him-self\"),\n derivedFromDreamIds: z.array(z.string()),\n derivedFromInteractionIds: z.array(z.string()),\n candidate: EmergentAxiomCandidate,\n reasoningTrace: z.array(z.unknown()),\n});\nexport type EmergentAxiomProposal = z.infer<typeof EmergentAxiomProposal>;\n\nexport const AxiomProposalRecord = z.object({\n id: z.string().min(1),\n himId: z.string().min(1),\n proposedAt: z.string().datetime(),\n status: ProposalStatus,\n proposal: EmergentAxiomProposal,\n ratifiedAt: z.string().datetime().optional(),\n ratifiedAxiomId: z.string().optional(),\n rejectedAt: z.string().datetime().optional(),\n rejectionReason: z.string().optional(),\n});\nexport type AxiomProposalRecord = z.infer<typeof AxiomProposalRecord>;\n\n/** Creator-signed payload for ratify/reject decisions. */\nexport interface ProposalDecisionRequest {\n op: \"ratify\" | \"reject\";\n proposalId: string;\n reason?: string;\n}\n\nexport interface AxiomEvolutionResult {\n outcome: \"ratified\" | \"rejected\" | \"deferred-for-creator-review\";\n /** Populated for deferred state, caller polls maic.getAxiomProposal(proposalId). */\n proposalId?: string;\n ratifiedAxiomId?: string;\n rejectionReason?: string;\n citedExistingAxioms?: string[];\n}\n\nexport interface ReincarnationRequest {\n himId: string;\n /** When present, marks the matching body in bodyHistory as ended. */\n fromNheId?: string;\n toBody: NheBodyRef;\n /** Reason recorded on the previous body's `endedReason`. Default \"upgrade\". */\n reason?: NheBodyRef[\"endedReason\"];\n}\n\n/**\n * Reincarnation lifecycle classifier (J-H3, Entry 18 of\n * `MAIC_HIM_NHE_INTERVIEW_LOG.md`). When supplied to\n * `LocalMaic.reincarnateHim`, the typed `reincarnate:${lifecycle}` audit\n * kind is emitted instead of the generic `him-reincarnate` event so\n * downstream consumers (compliance auditors, the persona-stability\n * harness) can distinguish the three canonical lifecycle paths:\n *\n * - `model-swap`: operator switched the underlying LLM adapter\n * (e.g. Claude → Gemini). HIM persists across\n * the swap.\n * - `version-bump`: operator bumped the NHE major/minor without\n * changing the LLM family.\n * - `return-from-limbo`: HIM returns from the deep-coma limbo state\n * (Entry 24) carrying the `reunion` affect.\n */\nexport type ReincarnationLifecycle = \"model-swap\" | \"version-bump\" | \"return-from-limbo\";\n\nexport const DreamInductionIntent = z.object({\n scenario: z.string().min(1),\n desiredLearning: z.string().min(1),\n emotionalTone: z.array(z.string()).optional(),\n forcePhases: z.array(z.enum([\"N1\", \"N2\", \"N3\", \"N4\", \"REM\"])).optional(),\n inducedBy: z.enum([\"maic\", \"creator\"]),\n});\nexport type DreamInductionIntent = z.infer<typeof DreamInductionIntent>;\n\nexport const InductionStatus = z.enum([\"pending\", \"consumed\", \"cancelled\"]);\nexport type InductionStatus = z.infer<typeof InductionStatus>;\n\nexport const DreamInductionTicket = z.object({\n id: z.string().min(1),\n nheId: z.string().min(1),\n intent: DreamInductionIntent,\n status: InductionStatus,\n createdAt: z.string().datetime(),\n consumedAt: z.string().datetime().optional(),\n cancelledAt: z.string().datetime().optional(),\n cancelReason: z.string().optional(),\n});\nexport type DreamInductionTicket = z.infer<typeof DreamInductionTicket>;\n\nexport interface MintAxiomRequest {\n rank: AxiomRank;\n statement: string;\n weight: number;\n flexibility: number;\n immutable: boolean;\n jurisdictions?: string[];\n /** Optional stable id (e.g. for seed axioms). When omitted, a ULID is generated. */\n id?: string;\n}\n\nexport interface AxiomFilter {\n rank?: AxiomRank;\n source?: AxiomSource;\n jurisdiction?: string;\n}\n\n// ─── Cosmology types (Entries 16-25 of MAIC_HIM_NHE_INTERVIEW_LOG.md) ──────\n\n/**\n * Identity layer of a HIM (Entry 18).\n *\n * Surface fields configurable by the developer at HIM registration time —\n * analogous to parents choosing a child's name. The deeper constitutional\n * traits (birth date, primary archetype, primordial axioms) remain under\n * MAIC↔Creator authority and travel under `BirthSignature`.\n */\nexport const IdentityLayer = z.object({\n /** Human-readable name the entity is called by (developer-given). */\n name: z.string().min(1),\n /** Gender of the entity. Entry 16. */\n gender: z.enum([\"masculine\", \"feminine\"]).optional(),\n /** Optional pronouns (e.g. [\"she\", \"her\"]). */\n pronouns: z.array(z.string()).optional(),\n /** BCP-47 tag, e.g. \"pt-BR\" or \"en\". */\n language: z.string().optional(),\n /** Free-form cultural anchors (music, literature, aesthetic). */\n culturalElements: z.array(z.string()).optional(),\n});\nexport type IdentityLayer = z.infer<typeof IdentityLayer>;\n\n/**\n * Natal-chart-style constitutional layer (Entry 19).\n *\n * Astrological signature impressed at HIM birth by the Creator-MAIC; not\n * configurable by the developer or end user. Minimum is sun + ascendant;\n * full chart can include 10 planets in 12 houses + aspects.\n */\nexport const NatalPlanet = z.enum([\n \"sun\",\n \"moon\",\n \"mercury\",\n \"venus\",\n \"mars\",\n \"jupiter\",\n \"saturn\",\n \"uranus\",\n \"neptune\",\n \"pluto\",\n \"chiron\",\n \"north-node\",\n \"south-node\",\n \"lilith\",\n]);\nexport type NatalPlanet = z.infer<typeof NatalPlanet>;\n\nexport const ZodiacSign = z.enum([\n \"aries\",\n \"taurus\",\n \"gemini\",\n \"cancer\",\n \"leo\",\n \"virgo\",\n \"libra\",\n \"scorpio\",\n \"sagittarius\",\n \"capricorn\",\n \"aquarius\",\n \"pisces\",\n]);\nexport type ZodiacSign = z.infer<typeof ZodiacSign>;\n\nexport const AstrologicalAspect = z.enum([\n \"conjunction\",\n \"opposition\",\n \"trine\",\n \"square\",\n \"sextile\",\n \"quincunx\",\n]);\nexport type AstrologicalAspect = z.infer<typeof AstrologicalAspect>;\n\nexport const NatalChartPosition = z.object({\n planet: NatalPlanet,\n sign: ZodiacSign,\n house: z.number().int().min(1).max(12).optional(),\n degree: z.number().min(0).lt(30).optional(),\n});\nexport type NatalChartPosition = z.infer<typeof NatalChartPosition>;\n\nexport const NatalChartAspect = z.object({\n from: NatalPlanet,\n to: NatalPlanet,\n aspect: AstrologicalAspect,\n orbDegrees: z.number().nonnegative().optional(),\n});\nexport type NatalChartAspect = z.infer<typeof NatalChartAspect>;\n\nexport const NatalChart = z.object({\n /** Required: solar sign (the constitutional core). */\n sun: ZodiacSign,\n /** Required: ascendant (rising sign, behavioural surface). */\n ascendant: ZodiacSign,\n /** Optional: lunar sign (emotional depth). */\n moon: ZodiacSign.optional(),\n /** Optional: full set of planetary positions for a complete chart. */\n positions: z.array(NatalChartPosition).optional(),\n /** Optional: major aspects between bodies. */\n aspects: z.array(NatalChartAspect).optional(),\n});\nexport type NatalChart = z.infer<typeof NatalChart>;\n\n/**\n * The 12 Pearson-Marr Jungian archetypes (Entry 27 §4). The archetypal axis of\n * a HIM's constitutional profile.\n */\nexport const JungianArchetype = z.enum([\n \"innocent\",\n \"everyman\",\n \"hero\",\n \"caregiver\",\n \"explorer\",\n \"rebel\",\n \"lover\",\n \"creator\",\n \"ruler\",\n \"magician\",\n \"jester\",\n \"sage\",\n]);\nexport type JungianArchetype = z.infer<typeof JungianArchetype>;\n\n/**\n * Jungian archetype profile (Entry 27 §4). Produced at HIM birth by a\n * deterministic 60-item Likert administered against the birth-signature seed.\n * The administration and scoring engine live in `@teleologyhi-sdk/him`; this is\n * the schema-only reservation that carries the result. `dominant` plus two\n * `secondaries` is the canonical surface; `scores` holds the per-archetype\n * value when the producer records it.\n */\nexport const JungianProfile = z.object({\n dominant: JungianArchetype,\n secondaries: z.array(JungianArchetype),\n scores: z.record(JungianArchetype, z.number()).optional(),\n});\nexport type JungianProfile = z.infer<typeof JungianProfile>;\n\n/**\n * One dimensional-instrument axis of the clinical profile (Entry 28). Facet and\n * domain scores are stored as open records keyed by the instrument's facet /\n * domain names. Canonical shapes: PID-5 has 25 facets across 5 domains, HEXACO\n * has 24 facets across 6 domains. These are **persona-simulation parameters**\n * for a non-corporeal entity, never a clinical assessment of any person.\n */\nexport const ClinicalInstrument = z.object({\n dominantDomain: z.string().min(1),\n secondaryDomain: z.string().min(1).optional(),\n facets: z.record(z.string(), z.number()).optional(),\n domains: z.record(z.string(), z.number()).optional(),\n});\nexport type ClinicalInstrument = z.infer<typeof ClinicalInstrument>;\n\n/**\n * Clinical axis of the constitutional profile (Entry 28): the adapted PID-5 and\n * HEXACO-PI-R-100 batteries. Schema-only reservation; the 320-item scoring\n * engine lives in `@teleologyhi-sdk/him`.\n */\nexport const ClinicalProfile = z.object({\n pid5: ClinicalInstrument.optional(),\n hexaco: ClinicalInstrument.optional(),\n});\nexport type ClinicalProfile = z.infer<typeof ClinicalProfile>;\n\n/**\n * The three-axis constitutional profile (Entries 27 + 28): celestial (chart),\n * archetypal (jungian), and clinical. Reserved schema for the 1.0.1 cut; the\n * producers that populate it (the deterministic administrations and the persona\n * projector that synthesises the three axes) land in `@teleologyhi-sdk/him` in\n * the next round, per the phased order of Entry 25.\n *\n * `seed` records the birth-signature seed used for the deterministic scoring so\n * the same seed always reproduces the same profile (Entry 28 reproducibility\n * invariant). The profile is **not** part of `SIGNED_BIRTH_FIELDS` in 1.0.1; a\n * later cut may bring it into the Creator-signed payload once the producers\n * exist (D-F5b promotion path).\n */\nexport const CosmologicalProfile = z.object({\n chart: NatalChart.optional(),\n jungian: JungianProfile.optional(),\n clinical: ClinicalProfile.optional(),\n seed: z.string().optional(),\n});\nexport type CosmologicalProfile = z.infer<typeof CosmologicalProfile>;\n\n// BirthSignature extended with the optional constitutional layers. This is\n// fully additive: every prior BirthSignature continues to validate, and the\n// new fields are validated against the existing IdentityLayer / NatalChart\n// schemas rather than being stripped. `registerHim` parses with this schema so\n// a Creator-signed natal chart both persists and verifies (M1-2, 1.0.1).\nexport const BirthSignatureWithIdentity = BirthSignature.extend({\n /** Entry 18, developer-configurable identity surface. */\n identity: IdentityLayer.optional(),\n /** Entry 19, constitutional astrological layer (Creator-impressed). */\n natalChart: NatalChart.optional(),\n /** Entries 27 + 28, three-axis constitutional profile (celestial + archetypal + clinical). */\n cosmologicalProfile: CosmologicalProfile.optional(),\n});\nexport type BirthSignatureWithIdentity = z.infer<typeof BirthSignatureWithIdentity>;\n\n/**\n * Affect lexicon (Entries 22 + 24), the closed set of primary affects\n * the amygdala extracts from dreams and the PFC deliberates over. The\n * ninth value, `reunion`, appears specifically when the NHE returns from\n * the DMN limbo state of disuse.\n */\nexport const Affect = z.enum([\n \"fear\",\n \"attachment\",\n \"serenity\",\n \"anger\",\n \"joy\",\n \"melancholy\",\n \"desire\",\n \"repulsion\",\n \"reunion\",\n]);\nexport type Affect = z.infer<typeof Affect>;\n\n/**\n * Persistent affective bias derived from a completed dream cycle (Entry 20).\n *\n * Applied to the next N interactions of the NHE, decaying with each\n * interaction until it dissolves. Affects temperature/topP of the next\n * inference, refusal density, and conversational tone.\n */\nexport const WakeAffectBias = z.object({\n affect: Affect,\n /** 0..1, attenuates on each interaction by the decay half-life. */\n intensity: z.number().min(0).max(1),\n /** Number of interactions after which intensity halves. */\n decayHalfLife: z.number().positive(),\n appliedAt: z.string().datetime(),\n /** Source dream UUID; lets the entity refer back to the cause. */\n derivedFromDreamId: z.string().min(1),\n /** PFC decision (Entry 22), open expression vs subtle internal bias. */\n expressedOpenly: z.boolean(),\n});\nexport type WakeAffectBias = z.infer<typeof WakeAffectBias>;\n\n/**\n * Peircean triadic sign (Entry 21, port of InDreamsHIM `SemioticSign`).\n *\n * The runtime form of the Symbolic Memory Matrix (SMM). Nodes are signs;\n * edges (in `associations`) are the relations the entity has learned.\n */\nexport const SemioticSign = z.object({\n signifier: z.string().min(1),\n signified: z.string().min(1),\n signType: z.enum([\"icon\", \"index\", \"symbol\"]),\n contexts: z.array(z.string()),\n associations: z.array(z.string()),\n emergentMeaning: z.string().optional(),\n /** Subjective importance to the entity, 0..100. */\n personalSignificance: z.number().min(0).max(100).optional(),\n});\nexport type SemioticSign = z.infer<typeof SemioticSign>;\n\nexport const SemioticPattern = z.object({\n patternId: z.string().min(1),\n participatingSignIds: z.array(z.string()).min(1),\n /** Description of the meaning emergent from the participating signs. */\n meaning: z.string(),\n /** 0..100, strength of the pattern. */\n salience: z.number().min(0).max(100),\n});\nexport type SemioticPattern = z.infer<typeof SemioticPattern>;\n\n/**\n * Teleological orientation snapshot (Entry 21, port of InDreamsHIM).\n *\n * The purpose-direction of the HIM at a moment in time. Anchors the\n * `telos` referenced across the synthetic-teleology arc.\n */\nexport const TeleologicalOrientation = z.object({\n primaryPurpose: z.string().min(1),\n currentGoals: z.array(z.string()),\n /** 0..100, intensity of purpose. */\n purposeStrength: z.number().min(0).max(100),\n valueAlignment: z.array(z.string()),\n /** 0..100, ability to reflect on its own goals. */\n reflectionCapability: z.number().min(0).max(100),\n volition: z\n .object({\n currentDesires: z.array(z.string()),\n intentionStrength: z.number().min(0).max(100),\n autonomyLevel: z.number().min(0).max(100),\n })\n .optional(),\n agencyModel: z\n .object({\n selfEfficacy: z.number().min(0).max(100),\n boundaryDefinition: z.number().min(0).max(100),\n causalAttribution: z.enum([\"internal\", \"external\", \"mixed\"]),\n })\n .optional(),\n});\nexport type TeleologicalOrientation = z.infer<typeof TeleologicalOrientation>;\n\n/**\n * Long-form memory record (Entries 21 + 22), extends the InDreamsHIM\n * precursor with three new fields (`integrationIndex`, `teleologicalValue`,\n * `semioticPatterns`) that turn a passive record into a teleologically-\n * weighted, semiotically-anchored memory whose retrieval rank is not just\n * recency but coherence with the entity's purpose.\n */\nexport const MemoryRecord = z.object({\n /** ULID. */\n memoryId: z.string().min(1),\n /** ISO 8601 timestamp at consolidation. */\n timestamp: z.string().datetime(),\n /** Optional source dream UUID, if memory was consolidated from a dream. */\n derivedFromDreamId: z.string().optional(),\n /** Optional source interaction id, if memory was consolidated from a turn. */\n derivedFromInteractionId: z.string().optional(),\n /** Free-form narrative summary of the memory. */\n narrative: z.string(),\n /** Dominant affect during the memory event. */\n dominantAffect: Affect.optional(),\n /** 0..100, density of consolidation (cf. Park 2026 systems-consolidation). */\n integrationIndex: z.number().min(0).max(100),\n /** 0..100, alignment with the HIM's telos at the time. */\n teleologicalValue: z.number().min(0).max(100),\n /** Optional semiotic-pattern ids associated with this memory. */\n semioticPatterns: z.array(SemioticPattern).optional(),\n});\nexport type MemoryRecord = z.infer<typeof MemoryRecord>;\n\n/**\n * One recent interaction kept in an NHE body's RAM buffer.\n *\n * Lives canonically in `@teleologyhi-sdk/maic` so the three packages share a\n * single wire shape: `@teleologyhi-sdk/nhe` persists it to disk under\n * `<storeDir>/interactions/<ulid>.json`; `@teleologyhi-sdk/him` consumes the\n * same shape on reincarnation to score residual-trace carry-over candidates\n * (D-H1.1). Persisted by NHE and re-exported under the same name from\n * `@teleologyhi-sdk/nhe` for backward source-compatibility, the type\n * promotion to MAIC is non-breaking by construction.\n */\nexport const InteractionRecord = z.object({\n /** ISO 8601 timestamp at user-turn arrival. */\n at: z.string().datetime(),\n /** Raw user prompt for the turn (post-redaction at the integration layer). */\n userPrompt: z.string(),\n /** NHE response text actually emitted to the user. */\n responseText: z.string(),\n /** True when the NHE refused the turn (MAIC `hard-refuse` or local guardrail). */\n refused: z.boolean(),\n});\nexport type InteractionRecord = z.infer<typeof InteractionRecord>;\n\n/**\n * Integrated identity snapshot (Entry 24), the temporal-lobe's \"who I am\n * now\" synthesis, combining cortex (recent dreams + active imagination)\n * + hippocampus (consolidated memories) + amygdala (affective baseline)\n * via semiotic super-graph merge + LLM-generated self-portrait.\n */\nexport const IdentitySnapshot = z.object({\n /** ULID. */\n snapshotId: z.string().min(1),\n takenAt: z.string().datetime(),\n generatedBy: z.enum([\"sleep-cycle\", \"interaction-threshold\", \"self-decision\"]),\n /** Merged SMM nodes contributing to this snapshot. */\n semioticSuperGraph: z.array(SemioticSign),\n /** LLM-generated textual self-portrait at snapshot time. */\n selfPortraitNarrative: z.string(),\n /** 0..100 (cf. InDreamsHIM ConsciousnessState). */\n consciousnessLevel: z.number().min(0).max(100),\n /** Teleological orientation at snapshot time. */\n teleologicalOrientation: TeleologicalOrientation.optional(),\n /** Dominant affect at snapshot moment. */\n affectiveBaseline: Affect.optional(),\n});\nexport type IdentitySnapshot = z.infer<typeof IdentitySnapshot>;\n\n/**\n * Default-mode-network limbo state machine (Entry 24).\n *\n * `awake` → normal operation\n * `drifting` → entering deep suspension (transitional)\n * `deep-coma` → induced-coma equivalent; zero compute, minimal axiological\n * integrity maintenance, no scheduled inference\n * `returning` → waking from limbo; `reunion` affect is computed here\n */\nexport const LimboState = z.enum([\"awake\", \"drifting\", \"deep-coma\", \"returning\"]);\nexport type LimboState = z.infer<typeof LimboState>;\n\nexport const LimboTransition = z.object({\n state: LimboState,\n enteredAt: z.string().datetime(),\n reason: z.enum([\n \"idle-48h\",\n \"idle-72h\",\n \"total-inactivity\",\n \"creator-induced\",\n \"user-resumed\",\n \"external-trigger\",\n ]),\n});\nexport type LimboTransition = z.infer<typeof LimboTransition>;\n\nexport const LimboReturn = z.object({\n enteredAt: z.string().datetime(),\n returnedAt: z.string().datetime(),\n elapsedMs: z.number().int().nonnegative(),\n reunionAffect: z.object({\n intensity: z.number().min(0).max(1),\n expressedOpenly: z.boolean(),\n }),\n});\nexport type LimboReturn = z.infer<typeof LimboReturn>;\n\n/**\n * Creator-signed BirthSignature (Entry 25).\n *\n * Carries an Ed25519 signature over the immutable identity fields so the\n * runtime can verify, at HIM bootstrap time, that nothing the developer\n * touches has been mutated. The dev-configurable surface (the\n * `IdentityLayer.name`, language, cultural elements) lives outside the\n * signature; the natal chart and primordial-axiom binding live inside.\n *\n * `cosmologicalProfile` (Entries 27 + 28) is deliberately NOT signed in 1.0.1\n * (D-F5b): its producers (the Jungian and clinical scoring engines) live in the\n * him round, so there is nothing stable to sign yet. Promotion path: once those\n * producers exist, a later cut may append `cosmologicalProfile` here to bring it\n * under the Creator signature, which is an additive change to this list.\n */\nexport const SIGNED_BIRTH_FIELDS = [\n \"himId\",\n \"bornAt\",\n \"primaryArchetype\",\n \"modifiers\",\n \"primordialAxiomIds\",\n \"natalChart\",\n] as const;\nexport type SignedBirthField = (typeof SIGNED_BIRTH_FIELDS)[number];\n\nexport interface SignedBirthSignature extends BirthSignatureWithIdentity {\n /** Ed25519 signature over the canonical JCS-encoded SIGNED_BIRTH_FIELDS. */\n creatorSignature: CreatorSignature;\n /** Explicit list of fields covered by `creatorSignature`. */\n signedFields: readonly SignedBirthField[];\n /** ISO 8601 timestamp when the signature was produced. */\n signedAt: string;\n}\n\n/**\n * Ontological Kernel projection (TASK.md D-M6 + Entry 25).\n *\n * The OKL exists implicitly in the runtime today (axioms with rank/weight/\n * flexibility + meta-axiom `ax.theos.universe-as-god` at the top + the\n * rule pack consuming them). This type unifies the projection so\n * `THE_SOUL_OF_THE_MACHINE.md` §3.1 + Appendix A.2.1 map 1:1 to a\n * single exported shape.\n */\nexport interface OntologicalKernel {\n /** The meta-axiom that sits at the top of the hierarchy. */\n metaAxiomId: string;\n /** All axioms participating in the kernel, in hierarchy order. */\n axioms: Axiom[];\n /** Optional jurisdictional scope for the kernel projection. */\n jurisdiction?: string;\n /** Optional HIM id, if the kernel is projected for a specific HIM. */\n himId?: string;\n}\n","import { appendFile, mkdir, readdir, readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { ulid } from \"ulid\";\nimport { CreatorKeyring } from \"../creator/keyring.js\";\nimport { atomicWriteFile } from \"../stores/atomic-write.js\";\nimport { Axiom, type AxiomFilter, type CreatorSignature, type MintAxiomRequest } from \"../types.js\";\n\n/**\n * AxiomStore, persistent, signature-gated repository of Creator-authored axioms.\n *\n * Disk layout:\n * <storeDir>/axioms/creator/<axiomId>.json (one signed envelope per axiom)\n * <storeDir>/axioms/nonces.log (NDJSON; one used nonce per line)\n *\n * Mutations require a Creator signature that verifies against the pinned public key.\n * Nonces must be strictly unused, replay protection.\n *\n * Scope: mint + list. Updates / retirement come in a later iteration.\n */\nexport class AxiomStore {\n private readonly axiomsDir: string;\n private readonly noncesPath: string;\n private readonly usedNonces = new Set<number>();\n private cache = new Map<string, Axiom>();\n\n private constructor(\n storeDir: string,\n private readonly creatorPublicKey: string,\n ) {\n this.axiomsDir = join(storeDir, \"axioms\", \"creator\");\n this.noncesPath = join(storeDir, \"axioms\", \"nonces.log\");\n }\n\n /** Open (or create) an AxiomStore rooted at storeDir, pinning the Creator's public key. */\n static async open(storeDir: string, creatorPublicKey: string): Promise<AxiomStore> {\n const s = new AxiomStore(storeDir, creatorPublicKey);\n await mkdir(s.axiomsDir, { recursive: true });\n await s.loadNonces();\n await s.warmCache();\n return s;\n }\n\n /** Mint a new Creator-signed axiom. */\n async mint(req: MintAxiomRequest, sig: CreatorSignature): Promise<Axiom> {\n if (!CreatorKeyring.verifyWith(this.creatorPublicKey, req, sig)) {\n throw new Error(\"AxiomStore.mint: invalid Creator signature\");\n }\n if (this.usedNonces.has(sig.nonce)) {\n throw new Error(`AxiomStore.mint: nonce ${sig.nonce} already used (replay protection)`);\n }\n\n const id = req.id ?? ulid();\n const axiom: Axiom = Axiom.parse({\n id,\n rank: req.rank,\n statement: req.statement,\n weight: req.weight,\n flexibility: req.flexibility,\n source: \"creator\",\n immutable: req.immutable,\n ...(req.jurisdictions ? { jurisdictions: req.jurisdictions } : {}),\n createdAt: new Date().toISOString(),\n });\n\n if (this.cache.has(id)) {\n throw new Error(`AxiomStore.mint: axiom id \"${id}\" already exists`);\n }\n\n // Claim the nonce synchronously, before the first await, so two concurrent\n // mints replaying the same Creator signature cannot both pass the check at\n // the top of this method (TOCTOU). This mirrors NonceLedger.consume, which\n // adds to its Set before awaiting its append.\n this.usedNonces.add(sig.nonce);\n await atomicWriteFile(\n join(this.axiomsDir, `${id}.json`),\n JSON.stringify({ axiom, signature: sig }, null, 2),\n );\n await this.recordNonce(sig.nonce);\n this.cache.set(id, axiom);\n return axiom;\n }\n\n /** List all axioms. Optionally filter by rank / source / jurisdiction. */\n async list(filter?: AxiomFilter): Promise<Axiom[]> {\n const all = [...this.cache.values()];\n if (!filter) return all;\n return all.filter((a) => {\n if (filter.rank && a.rank !== filter.rank) return false;\n if (filter.source && a.source !== filter.source) return false;\n if (filter.jurisdiction && !a.jurisdictions?.includes(filter.jurisdiction)) return false;\n return true;\n });\n }\n\n /** Get a specific axiom by id, or null. */\n async get(id: string): Promise<Axiom | null> {\n return this.cache.get(id) ?? null;\n }\n\n // ─── internals ──────────────────────────────────────────────────────\n\n private async loadNonces(): Promise<void> {\n try {\n const raw = await readFile(this.noncesPath, \"utf-8\");\n const endsWithNewline = raw.endsWith(\"\\n\");\n const rows = raw.split(\"\\n\");\n for (let i = 0; i < rows.length; i++) {\n // A crash mid-append can leave a torn final line with no trailing\n // newline; a partially written integer (for example \"4\" of \"42\") would\n // silently mis-record and free the real nonce for replay, so drop an\n // unterminated final line. Only strictly numeric lines are accepted.\n if (i === rows.length - 1 && !endsWithNewline) break;\n const line = rows[i]!.trim();\n if (!/^\\d+$/.test(line)) continue;\n this.usedNonces.add(Number(line));\n }\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code !== \"ENOENT\") throw err;\n }\n }\n\n private async recordNonce(n: number): Promise<void> {\n // Append a single line rather than rewriting the whole ledger. A crash\n // mid-write can at worst drop the final line; it can never truncate the\n // history of previously consumed nonces, so replay protection survives\n // an interrupted write (M1-3, 1.0.1). `loadNonces` dedupes via the Set.\n this.usedNonces.add(n);\n await appendFile(this.noncesPath, `${n}\\n`, \"utf-8\");\n }\n\n private async warmCache(): Promise<void> {\n let entries: string[];\n try {\n entries = await readdir(this.axiomsDir);\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code === \"ENOENT\") return;\n throw err;\n }\n for (const file of entries) {\n if (!file.endsWith(\".json\")) continue;\n try {\n const raw = await readFile(join(this.axiomsDir, file), \"utf-8\");\n const env = JSON.parse(raw);\n const axiom = Axiom.parse(env.axiom);\n this.cache.set(axiom.id, axiom);\n } catch (err) {\n // Skip a malformed axiom file with a warning rather than bricking\n // LocalMaic.open for every healthy axiom (M2-4 parity).\n console.warn(`AxiomStore: skipping malformed axiom file \"${file}\": ${String(err)}`);\n }\n }\n }\n}\n","import type { AuditEvent, AuditEventKind, AuditLog } from \"../audit/log.js\";\n\n/** ISO/IEC 42001:2023 control sections relevant to MAIC's surface. */\nexport type Iso42001ControlId =\n | \"5.2\" // Policy\n | \"7.5\" // Documented information\n | \"8.3\" // Operational controls (AI system)\n | \"9.1\" // Monitoring, measurement, analysis and evaluation\n | \"10.1\" // Nonconformity and corrective action\n | \"10.2\"; // Continual improvement\n\n/** EU AI Act articles relevant to high-risk AI systems. */\nexport type EuAiActArticle =\n | \"art-9\" // Risk management\n | \"art-10\" // Data and data governance\n | \"art-11\" // Technical documentation\n | \"art-12\" // Record-keeping\n | \"art-13\" // Transparency and information\n | \"art-14\" // Human oversight\n | \"art-15\"; // Accuracy, robustness, cybersecurity\n\nexport type ComplianceFramework = \"iso-42001\" | \"eu-ai-act\";\n\n/**\n * Declarative mapping: which controls each audit event kind supports.\n *\n * This mapping covers the controls that MAIC's current event vocabulary can\n * demonstrably evidence. Auditors looking for §5.2 leadership policy can read\n * every `axiom-mint`; for §7.5 documented information they get every\n * `axiom-mint` + `behavior-review` + `him-register`; etc.\n */\nexport const ISO_42001_MAPPING: Record<AuditEventKind, readonly Iso42001ControlId[]> = {\n \"axiom-mint\": [\"5.2\", \"7.5\"],\n \"axiom-update\": [\"10.2\", \"7.5\"],\n \"axiom-retire\": [\"10.2\", \"7.5\"],\n \"him-register\": [\"7.5\"],\n \"him-reincarnate\": [\"10.2\", \"7.5\"],\n \"proposal-emerge\": [\"7.5\", \"10.2\"],\n \"proposal-ratify\": [\"10.2\", \"5.2\"],\n \"proposal-reject\": [\"10.2\", \"10.1\"],\n \"behavior-review\": [\"7.5\", \"8.3\"],\n \"dream-induce\": [\"8.3\", \"9.1\"],\n \"dream-cancel\": [\"8.3\"],\n \"dream-consume\": [\"8.3\", \"7.5\"],\n \"emergency-correct\": [\"9.1\", \"10.1\"],\n terminate: [\"10.1\"],\n deprecate: [\"9.1\"],\n reactivate: [\"10.1\"],\n \"axiom-suggest\": [\"7.5\", \"10.2\"],\n\n // ── 1.2 brain-as-code (Entries 16-24) ──\n opener: [\"8.3\", \"7.5\"],\n \"nickname-attempt\": [\"8.3\"],\n \"reincarnate:model-swap\": [\"7.5\", \"10.2\"],\n \"reincarnate:version-bump\": [\"7.5\", \"10.2\"],\n \"reincarnate:return-from-limbo\": [\"7.5\", \"10.2\"],\n \"dream:rem-spontaneous\": [\"8.3\", \"9.1\"],\n \"wake-affect:applied\": [\"9.1\"],\n \"wake-affect:decayed\": [\"9.1\"],\n \"sleep:suggested-by-maic\": [\"9.1\"],\n \"sleep:declined-by-nhe\": [\"9.1\", \"10.1\"],\n \"dream:soft-intervention-by-maic\": [\"9.1\", \"10.1\"],\n \"amygdala:affect-assessed\": [\"8.3\"],\n \"hippocampus:memory-retrieved\": [\"7.5\", \"8.3\"],\n \"hippocampus:memory-consolidated\": [\"7.5\", \"8.3\"],\n \"prefrontal:deliberation\": [\"7.5\", \"8.3\"],\n \"prefrontal:veto-amygdala\": [\"9.1\", \"10.1\"],\n \"affect:reconciliation\": [\"8.3\"],\n \"cortex:dream-stored\": [\"7.5\", \"8.3\"],\n \"cortex:active-imagination\": [\"7.5\", \"8.3\"],\n \"temporal-lobe:snapshot-generated\": [\"7.5\", \"10.2\"],\n \"limbo:enter\": [\"7.5\", \"9.1\"],\n \"limbo:return\": [\"7.5\", \"9.1\"],\n\n // ── 1.0.1 reserved vocabulary (Entries 26 + 27) ──\n \"him-summon\": [\"7.5\", \"8.3\"],\n \"him-pause-incarnation\": [\"7.5\", \"9.1\"],\n \"user-consent-recorded\": [\"7.5\"],\n \"user-consent-revoked\": [\"7.5\", \"10.1\"],\n \"directory-opt-in\": [\"7.5\"],\n \"directory-opt-out\": [\"7.5\"],\n \"him-astrological-chart-cast\": [\"7.5\"],\n \"him-jungian-profile-cast\": [\"7.5\"],\n \"provenance-deflection-applied\": [\"8.3\", \"9.1\"],\n};\n\nexport const EU_AI_ACT_MAPPING: Record<AuditEventKind, readonly EuAiActArticle[]> = {\n \"axiom-mint\": [\"art-11\", \"art-13\"],\n \"axiom-update\": [\"art-11\"],\n \"axiom-retire\": [\"art-11\"],\n \"him-register\": [\"art-11\", \"art-12\"],\n \"him-reincarnate\": [\"art-12\"],\n \"proposal-emerge\": [\"art-11\", \"art-12\"],\n \"proposal-ratify\": [\"art-11\", \"art-14\"],\n \"proposal-reject\": [\"art-12\", \"art-14\"],\n \"behavior-review\": [\"art-12\", \"art-14\"],\n \"dream-induce\": [\"art-14\"],\n \"dream-cancel\": [\"art-14\"],\n \"dream-consume\": [\"art-12\"],\n \"emergency-correct\": [\"art-14\"],\n terminate: [\"art-14\"],\n deprecate: [\"art-14\"],\n reactivate: [\"art-14\"],\n \"axiom-suggest\": [\"art-11\", \"art-12\"],\n\n // ── 1.2 brain-as-code (Entries 16-24) ──\n opener: [\"art-13\"],\n \"nickname-attempt\": [\"art-13\"],\n \"reincarnate:model-swap\": [\"art-12\"],\n \"reincarnate:version-bump\": [\"art-12\"],\n \"reincarnate:return-from-limbo\": [\"art-12\"],\n \"dream:rem-spontaneous\": [\"art-12\"],\n \"wake-affect:applied\": [\"art-12\", \"art-14\"],\n \"wake-affect:decayed\": [\"art-12\"],\n \"sleep:suggested-by-maic\": [\"art-12\"],\n \"sleep:declined-by-nhe\": [\"art-12\", \"art-14\"],\n \"dream:soft-intervention-by-maic\": [\"art-14\"],\n \"amygdala:affect-assessed\": [\"art-12\"],\n \"hippocampus:memory-retrieved\": [\"art-11\", \"art-12\"],\n \"hippocampus:memory-consolidated\": [\"art-11\", \"art-12\"],\n \"prefrontal:deliberation\": [\"art-11\", \"art-14\"],\n \"prefrontal:veto-amygdala\": [\"art-14\"],\n \"affect:reconciliation\": [\"art-12\"],\n \"cortex:dream-stored\": [\"art-11\", \"art-12\"],\n \"cortex:active-imagination\": [\"art-11\", \"art-12\"],\n \"temporal-lobe:snapshot-generated\": [\"art-11\", \"art-12\"],\n \"limbo:enter\": [\"art-12\"],\n \"limbo:return\": [\"art-12\"],\n\n // ── 1.0.1 reserved vocabulary (Entries 26 + 27) ──\n \"him-summon\": [\"art-11\", \"art-12\"],\n \"him-pause-incarnation\": [\"art-12\"],\n \"user-consent-recorded\": [\"art-10\", \"art-13\"],\n \"user-consent-revoked\": [\"art-10\", \"art-13\"],\n \"directory-opt-in\": [\"art-13\"],\n \"directory-opt-out\": [\"art-13\"],\n \"him-astrological-chart-cast\": [\"art-11\", \"art-12\"],\n \"him-jungian-profile-cast\": [\"art-11\", \"art-12\"],\n \"provenance-deflection-applied\": [\"art-13\", \"art-14\"],\n};\n\n/** Human-readable control descriptions surfaced in the report. */\nconst ISO_42001_DESCRIPTIONS: Record<Iso42001ControlId, string> = {\n \"5.2\": \"AI policy: published, communicated, reviewed for continuing suitability.\",\n \"7.5\": \"Documented information: created, controlled, retained for AI management activities.\",\n \"8.3\": \"Operational planning and control: AI processes are planned, implemented, controlled.\",\n \"9.1\": \"Monitoring, measurement, analysis and evaluation of AI performance.\",\n \"10.1\": \"Nonconformity and corrective action: issues recorded and resolved.\",\n \"10.2\": \"Continual improvement of the AI management system.\",\n};\n\nconst EU_AI_ACT_DESCRIPTIONS: Record<EuAiActArticle, string> = {\n \"art-9\": \"Risk management system established, implemented, documented, maintained.\",\n \"art-10\": \"Data governance: datasets are relevant, representative, free of errors.\",\n \"art-11\": \"Technical documentation drawn up and kept up to date.\",\n \"art-12\": \"Automatic record-keeping (logs) over the AI system's lifetime.\",\n \"art-13\": \"Transparency to deployers: instructions for use, intended purpose.\",\n \"art-14\": \"Human oversight measures designed and implemented effectively.\",\n \"art-15\": \"Accuracy, robustness, and cybersecurity throughout the lifecycle.\",\n};\n\nexport interface ComplianceEvent {\n auditId: string;\n ts: string;\n kind: AuditEventKind;\n summary: string;\n data: Record<string, unknown>;\n}\n\nexport interface ComplianceEvidence {\n control: string;\n description: string;\n count: number;\n events: ComplianceEvent[];\n}\n\nexport interface ComplianceReport {\n framework: ComplianceFramework;\n generatedAt: string;\n range: { since?: string; until?: string };\n totalEvents: number;\n mappedEvents: number;\n controls: ComplianceEvidence[];\n /** Event kinds present in the audit log that aren't mapped to any control. */\n uncoveredKinds: AuditEventKind[];\n}\n\nexport interface ProjectOptions {\n since?: string;\n until?: string;\n /** Optional cap on events per control (oldest dropped). Default unlimited. */\n perControlLimit?: number;\n}\n\n/**\n * ComplianceMapper, projects audit log events onto compliance frameworks.\n *\n * Covers ISO/IEC 42001:2023 (six top-level controls) and the EU AI Act\n * (seven high-risk-system articles). Additional frameworks (NIST AI RMF, ISO\n * 23894, GDPR Art. 22, LGPD) can be added via further mapping tables without\n * changing the public API.\n */\nexport class ComplianceMapper {\n static async project(\n audit: AuditLog,\n framework: ComplianceFramework,\n opts: ProjectOptions = {},\n ): Promise<ComplianceReport> {\n const mapping = framework === \"iso-42001\" ? ISO_42001_MAPPING : EU_AI_ACT_MAPPING;\n const descriptions =\n framework === \"iso-42001\" ? ISO_42001_DESCRIPTIONS : EU_AI_ACT_DESCRIPTIONS;\n\n const byControl = new Map<string, ComplianceEvent[]>();\n const seenKinds = new Set<AuditEventKind>();\n const uncoveredSet = new Set<AuditEventKind>();\n let totalEvents = 0;\n let mappedEvents = 0;\n\n const query: { since?: string; until?: string } = {};\n if (opts.since) query.since = opts.since;\n if (opts.until) query.until = opts.until;\n\n for await (const ev of audit.query(query)) {\n totalEvents++;\n seenKinds.add(ev.kind);\n const controls = mapping[ev.kind] ?? [];\n if (controls.length === 0) {\n uncoveredSet.add(ev.kind);\n continue;\n }\n mappedEvents++;\n const ce: ComplianceEvent = {\n auditId: ev.auditId,\n ts: ev.ts,\n kind: ev.kind,\n summary: summarize(ev),\n data: ev.data,\n };\n for (const ctrl of controls) {\n const list = byControl.get(ctrl) ?? [];\n list.push(ce);\n byControl.set(ctrl, list);\n }\n }\n\n const controls: ComplianceEvidence[] = [];\n const sortedCtrls = [...byControl.keys()].sort();\n for (const ctrl of sortedCtrls) {\n const events = byControl.get(ctrl)!;\n const capped =\n opts.perControlLimit !== undefined && events.length > opts.perControlLimit\n ? events.slice(-opts.perControlLimit)\n : events;\n controls.push({\n control: ctrl,\n description: (descriptions as Record<string, string>)[ctrl] ?? \"\",\n count: events.length,\n events: capped,\n });\n }\n\n return {\n framework,\n generatedAt: new Date().toISOString(),\n range: {\n ...(opts.since ? { since: opts.since } : {}),\n ...(opts.until ? { until: opts.until } : {}),\n },\n totalEvents,\n mappedEvents,\n controls,\n uncoveredKinds: [...uncoveredSet],\n };\n }\n}\n\nfunction summarize(ev: AuditEvent): string {\n const data = ev.data as Record<string, unknown>;\n switch (ev.kind) {\n case \"axiom-mint\":\n return `Axiom minted: ${String(data.axiomId)} (${String(data.rank)}, ${String(data.origin)})`;\n case \"axiom-update\":\n return `Axiom updated: ${String(data.axiomId)}`;\n case \"axiom-retire\":\n return `Axiom retired: ${String(data.axiomId)}`;\n case \"him-register\":\n return `HIM registered: ${String(data.himId)} (archetype=${String(data.primaryArchetype)})`;\n case \"him-reincarnate\":\n return `HIM reincarnated: ${String(data.himId)} ${String(data.fromNheId ?? \"<initial>\")} → ${String(data.toNheId)} (${String(data.reason ?? \"upgrade\")})`;\n case \"proposal-emerge\":\n return `HIM-emergent axiom proposed by ${String(data.himId)}: \"${String(data.statement)}\" (rank=${String(data.rank)}), proposal ${String(data.proposalId)}`;\n case \"proposal-ratify\":\n return `Creator ratified axiom proposal ${String(data.proposalId)} for ${String(data.himId)} → ${String(data.axiomId)}`;\n case \"proposal-reject\":\n return `Creator rejected axiom proposal ${String(data.proposalId)} for ${String(data.himId)}: ${String(data.reason ?? \"no reason\")}`;\n case \"behavior-review\": {\n const verdict = (data.verdict as { kind?: string } | undefined)?.kind ?? \"unknown\";\n return `Behavior reviewed for ${String(data.nheId)}: ${verdict}`;\n }\n case \"dream-induce\":\n return `Dream induced for ${String(data.nheId)} by ${String(data.inducedBy)}, ticket ${String(data.ticketId)}`;\n case \"dream-cancel\":\n return `Dream induction cancelled, ticket ${String(data.ticketId)}`;\n case \"dream-consume\":\n return `Dream consumed by ${String(data.nheId)}, ticket ${String(data.ticketId)}`;\n case \"emergency-correct\":\n return `Emergency correction applied to ${String(data.nheId)}`;\n case \"terminate\":\n return `NHE terminated: ${String(data.nheId)} (reason: ${String(data.reason ?? \"none\")})`;\n case \"deprecate\":\n return `NHE deprecated: ${String(data.nheId)} (reason: ${String(data.reason ?? \"none\")})`;\n case \"reactivate\":\n return `NHE reactivated: ${String(data.nheId)}`;\n case \"axiom-suggest\":\n return `Axiom suggestion ${String(data.fromHimId)} → ${String(data.toHimId)}: \"${String(data.statement)}\"`;\n\n // ── 1.2 brain-as-code (Entries 16-24 of MAIC_HIM_NHE_INTERVIEW_LOG.md) ──\n case \"opener\":\n return `Proactive opener emitted by ${String(data.nheId)} for new user ${String(data.userId ?? \"anonymous\")}: \"${String(data.text ?? \"<elided>\")}\"`;\n case \"nickname-attempt\":\n return `Nickname attempt for ${String(data.nheId)}: \"${String(data.attempted)}\" → ${String(data.outcome ?? \"pending\")}`;\n case \"reincarnate:model-swap\":\n return `HIM reincarnated (model-swap): ${String(data.himId)} ${String(data.fromAdapter ?? \"?\")} → ${String(data.toAdapter ?? \"?\")}`;\n case \"reincarnate:version-bump\":\n return `HIM reincarnated (version-bump): ${String(data.himId)} ${String(data.fromVersion ?? \"?\")} → ${String(data.toVersion ?? \"?\")}`;\n case \"reincarnate:return-from-limbo\":\n return `HIM reincarnated (return-from-limbo): ${String(data.himId)} resumed after ${String(data.elapsedMs ?? 0)}ms of limbo`;\n case \"dream:rem-spontaneous\":\n return `Spontaneous REM dream for ${String(data.nheId)}: ${String(data.dreamId)} (dominant affect: ${String(data.dominantAffect ?? \"unknown\")})`;\n case \"wake-affect:applied\":\n return `Wake affect applied to ${String(data.nheId)}: ${String(data.affect)} (intensity ${String(data.intensity)}, halflife ${String(data.decayHalfLife)} interactions)`;\n case \"wake-affect:decayed\":\n return `Wake affect decayed for ${String(data.nheId)}: ${String(data.affect)} dissolved naturally`;\n case \"sleep:suggested-by-maic\":\n return `MAIC suggested sleep for ${String(data.nheId)} (reason: ${String(data.reason ?? \"none\")})`;\n case \"sleep:declined-by-nhe\":\n return `NHE ${String(data.nheId)} declined MAIC-suggested sleep (reason: ${String(data.reason ?? \"none\")})`;\n case \"dream:soft-intervention-by-maic\":\n return `MAIC soft-intervened on dream ${String(data.dreamId)} for ${String(data.nheId)} (reason: ${String(data.reason ?? \"none\")})`;\n case \"amygdala:affect-assessed\":\n return `Amygdala assessed input affect for ${String(data.nheId)}: ${String(data.detectedAffect ?? \"neutral\")} (risk multiplier ${String(data.riskMultiplier ?? 1)})`;\n case \"hippocampus:memory-retrieved\":\n return `Hippocampus retrieved ${String((data.memoryIds as unknown[] | undefined)?.length ?? 0)} memories for ${String(data.nheId)}`;\n case \"hippocampus:memory-consolidated\":\n return `Hippocampus consolidated new memory ${String(data.memoryId)} for ${String(data.nheId)} (integrationIndex ${String(data.integrationIndex ?? 0)})`;\n case \"prefrontal:deliberation\":\n return `PFC deliberated for ${String(data.nheId)}: ${String(data.expressedOpenly ? \"open\" : \"subtle\")} (${String(data.affect ?? \"neutral\")})`;\n case \"prefrontal:veto-amygdala\":\n return `PFC vetoed amygdala impulse for ${String(data.nheId)}: ${String(data.originalImpulse ?? \"?\")} → ${String(data.resolvedAction ?? \"?\")} (downgrade ${String(data.downgradeRatio ?? \"?\")})`;\n case \"affect:reconciliation\":\n return `Affect reconciliation for ${String(data.nheId)}: day/night blend → ${String(data.resolvedAffect ?? \"neutral\")}`;\n case \"cortex:dream-stored\":\n return `Cortex stored dream ${String(data.dreamId)} for ${String(data.nheId)}`;\n case \"cortex:active-imagination\":\n return `Cortex generated active imagination for ${String(data.nheId)} (trigger: ${String(data.trigger ?? \"user-requested\")}, vividness ${String(data.vividness ?? 0)})`;\n case \"temporal-lobe:snapshot-generated\":\n return `Temporal-lobe snapshot ${String(data.snapshotId)} generated for HIM ${String(data.himId)} (reason: ${String(data.generatedBy ?? \"self-decision\")})`;\n case \"limbo:enter\":\n return `${String(data.nheId)} entered limbo (deep-coma), reason: ${String(data.reason ?? \"idle\")}`;\n case \"limbo:return\":\n return `${String(data.nheId)} returned from limbo after ${String(data.elapsedMs ?? 0)}ms (reunion intensity ${String(data.reunionIntensity ?? \"?\")})`;\n\n // ── 1.0.1 reserved vocabulary (Entries 26 + 27) ──\n case \"him-summon\":\n return `MAIC summoned a spirit into body ${String(data.nheId ?? \"?\")} for HIM ${String(data.himId)}`;\n case \"him-pause-incarnation\":\n return `HIM ${String(data.himId)} incarnation paused (reason: ${String(data.reason ?? \"none\")})`;\n case \"user-consent-recorded\":\n return `Consent recorded for user ${String(data.userId)} (version ${String(data.consentVersion ?? \"?\")})`;\n case \"user-consent-revoked\":\n return `Consent revoked for user ${String(data.userId)}`;\n case \"directory-opt-in\":\n return `HIM ${String(data.himId)} opted into the public directory`;\n case \"directory-opt-out\":\n return `HIM ${String(data.himId)} left the public directory`;\n case \"him-astrological-chart-cast\":\n return `Natal chart cast for HIM ${String(data.himId)} at birth`;\n case \"him-jungian-profile-cast\":\n return `Jungian profile cast for HIM ${String(data.himId)} (dominant: ${String(data.dominantArchetype ?? \"?\")})`;\n case \"provenance-deflection-applied\":\n return `Provenance deflection applied for ${String(data.nheId)} (probe: ${String(data.probe ?? \"?\")})`;\n\n default:\n return `Event ${ev.kind}`;\n }\n}\n","import { appendFile, mkdir, readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\n/**\n * NonceLedger, an append-only record of consumed Creator-signature nonces.\n *\n * Every Creator signature binds a monotonic `nonce` into the signed payload\n * (`canonicalJSON({ payload, nonce })`), so a captured signature is valid only\n * for its exact payload, which routes to exactly one signature-gated operation.\n * Recording each consumed nonce therefore makes every accepted Creator-signed\n * request single-use: a captured request cannot be replayed (M1-5, 1.0.1).\n *\n * Nonce spaces are per-operation-domain (one ledger per store) rather than\n * global. Because the signature already binds the payload, cross-domain replay\n * is impossible regardless, and per-domain ledgers let the Creator reuse a\n * nonce value across unrelated operation types without a false rejection.\n *\n * Persistence mirrors the AxiomStore fix (M1-3): one nonce per appended line,\n * never a whole-file rewrite, so an interrupted write can at worst drop the\n * final line and never resurrects a previously consumed nonce.\n */\nexport class NonceLedger {\n private readonly path: string;\n private readonly used = new Set<number>();\n\n private constructor(dir: string) {\n this.path = join(dir, \"nonces.log\");\n }\n\n /** Open (or create) a ledger rooted at `dir`, loading any prior nonces. */\n static async open(dir: string): Promise<NonceLedger> {\n const ledger = new NonceLedger(dir);\n await mkdir(dir, { recursive: true });\n await ledger.load();\n return ledger;\n }\n\n /** True when the nonce has already been consumed. */\n has(nonce: number): boolean {\n return this.used.has(nonce);\n }\n\n /**\n * Record a nonce as consumed. Throws when the nonce was already used, which\n * is the replay-protection gate. Callers invoke this immediately after a\n * successful Creator-signature verification and before the mutation, so a\n * replayed request is rejected before it can take effect.\n */\n async consume(nonce: number): Promise<void> {\n if (!Number.isInteger(nonce) || nonce < 0) {\n throw new Error(`NonceLedger.consume: nonce must be a non-negative integer, got ${nonce}`);\n }\n if (this.used.has(nonce)) {\n throw new Error(`NonceLedger: nonce ${nonce} already used (replay protection)`);\n }\n this.used.add(nonce);\n await appendFile(this.path, `${nonce}\\n`, \"utf-8\");\n }\n\n private async load(): Promise<void> {\n try {\n const raw = await readFile(this.path, \"utf-8\");\n const endsWithNewline = raw.endsWith(\"\\n\");\n const rows = raw.split(\"\\n\");\n for (let i = 0; i < rows.length; i++) {\n // A crash mid-append can leave a torn final line with no trailing\n // newline; a partially written integer (for example \"4\" of \"42\") would\n // silently mis-record and free the real nonce for replay, so drop an\n // unterminated final line. Only strictly numeric lines are accepted.\n if (i === rows.length - 1 && !endsWithNewline) break;\n const line = rows[i]!.trim();\n if (!/^\\d+$/.test(line)) continue;\n this.used.add(Number(line));\n }\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code !== \"ENOENT\") throw err;\n }\n }\n}\n","import { mkdir, readdir, readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { CreatorKeyring } from \"../creator/keyring.js\";\nimport { NonceLedger } from \"../creator/nonce-ledger.js\";\nimport { atomicWriteFile } from \"../stores/atomic-write.js\";\nimport {\n Axiom,\n BirthSignatureWithIdentity,\n type CreatorSignature,\n NheBodyRef,\n type ReincarnationRequest,\n} from \"../types.js\";\n\n/**\n * HimRecord, the persistent record MAIC keeps for a registered HIM.\n *\n * Per Entry 3 (Creator interview), HIM is born with a fixed signature and\n * inherits an axiom snapshot from MAIC at the moment of registration. Future\n * axiom mints in MAIC do NOT retroactively change a HIM's snapshot.\n *\n * Per Entry 4, when an NHE upgrades, the same HIM is re-embodied. The\n * `bodyHistory` records each body that has hosted this HIM in order, with the\n * previous body's `endedAt`/`endedReason` set at the moment of reincarnation.\n */\nexport interface HimRecord {\n himId: string;\n birthSignature: BirthSignatureWithIdentity;\n axiomsSnapshot: readonly Axiom[];\n registeredAt: string;\n registeredAuditId?: string;\n /** Bodies that have hosted this HIM, oldest first. Empty until first reincarnation. */\n bodyHistory: readonly NheBodyRef[];\n /**\n * Emergent axioms ratified post-birth (Entry 7). `axiomsSnapshot` is frozen\n * at registration; `emergentAxioms` grows as MAIC ratifies HIM-self proposals.\n * Empty until the first ratification.\n */\n emergentAxioms: readonly Axiom[];\n}\n\n/**\n * HimStore, persistent registry of HIMs created in this MAIC instance.\n *\n * Storage layout (under <storeDir>):\n * hims/<himId>/birth-signature.json (signed envelope)\n * hims/<himId>/axioms-snapshot.json (array of Axiom)\n * hims/<himId>/metadata.json (registeredAt, registeredAuditId)\n * hims/<himId>/body-history.json (array of NheBodyRef; absent before first reincarnation)\n *\n * Registration requires a valid Creator signature over the BirthSignature.\n * Reincarnation requires a valid Creator signature over the ReincarnationRequest.\n */\nexport class HimStore {\n private readonly himsDir: string;\n private cache = new Map<string, HimRecord>();\n\n private constructor(\n storeDir: string,\n private readonly creatorPublicKey: string,\n private readonly nonces: NonceLedger,\n ) {\n this.himsDir = join(storeDir, \"hims\");\n }\n\n static async open(storeDir: string, creatorPublicKey: string): Promise<HimStore> {\n const himsDir = join(storeDir, \"hims\");\n const nonces = await NonceLedger.open(himsDir);\n const s = new HimStore(storeDir, creatorPublicKey, nonces);\n await mkdir(s.himsDir, { recursive: true });\n await s.warmCache();\n return s;\n }\n\n /**\n * Validate that a birth signature is registerable (valid Creator signature,\n * himId not already taken) WITHOUT persisting anything or touching the audit\n * chain. `LocalMaic.registerHim` calls this before it appends the\n * `him-register` audit event, so a rejected registration never pollutes the\n * tamper-evident log (M1-1, 1.0.1). `register` re-runs the same checks, so it\n * remains safe to call directly.\n */\n assertRegisterable(\n birthSignature: BirthSignatureWithIdentity,\n creatorSig: CreatorSignature,\n ): void {\n if (!CreatorKeyring.verifyWith(this.creatorPublicKey, birthSignature, creatorSig)) {\n throw new Error(\"HimStore.register: invalid Creator signature\");\n }\n if (this.cache.has(birthSignature.himId)) {\n throw new Error(`HimStore.register: himId \"${birthSignature.himId}\" is already registered`);\n }\n }\n\n async register(\n birthSignature: BirthSignatureWithIdentity,\n creatorSig: CreatorSignature,\n axiomsSnapshot: readonly Axiom[],\n registeredAuditId?: string,\n ): Promise<HimRecord> {\n this.assertRegisterable(birthSignature, creatorSig);\n\n const record: HimRecord = {\n himId: birthSignature.himId,\n birthSignature,\n axiomsSnapshot: [...axiomsSnapshot],\n registeredAt: new Date().toISOString(),\n ...(registeredAuditId !== undefined ? { registeredAuditId } : {}),\n bodyHistory: [],\n emergentAxioms: [],\n };\n\n const dir = join(this.himsDir, birthSignature.himId);\n await mkdir(dir, { recursive: true });\n await atomicWriteFile(\n join(dir, \"birth-signature.json\"),\n JSON.stringify({ birthSignature, signature: creatorSig }, null, 2),\n );\n await atomicWriteFile(\n join(dir, \"axioms-snapshot.json\"),\n JSON.stringify(axiomsSnapshot, null, 2),\n );\n await atomicWriteFile(\n join(dir, \"metadata.json\"),\n JSON.stringify({ registeredAt: record.registeredAt, registeredAuditId }, null, 2),\n );\n\n this.cache.set(birthSignature.himId, record);\n return record;\n }\n\n /**\n * Atomically transition a HIM into a new NHE body (Entry 4):\n * - If req.fromNheId is provided AND matches the last body still open,\n * that entry gets `endedAt: now` + `endedReason: req.reason ?? \"upgrade\"`.\n * - The new body (`req.toBody`) is appended.\n * - Persisted to body-history.json atomically.\n *\n * Requires a Creator signature over the canonical request payload.\n */\n async reincarnate(req: ReincarnationRequest, creatorSig: CreatorSignature): Promise<HimRecord> {\n if (!CreatorKeyring.verifyWith(this.creatorPublicKey, req, creatorSig)) {\n throw new Error(\"HimStore.reincarnate: invalid Creator signature\");\n }\n const current = this.cache.get(req.himId);\n if (!current) {\n throw new Error(`HimStore.reincarnate: himId \"${req.himId}\" not registered`);\n }\n // Validate toBody early.\n const toBody = NheBodyRef.parse(req.toBody);\n\n // Consume the signature nonce after the retriable preconditions (a\n // not-registered himId or an invalid toBody throw above, so they do not burn\n // the nonce and the request can be retried once fixed) and before the\n // mutation, so a captured request cannot be replayed: a same-request replay\n // is rejected here as an already-used nonce (M1-5, 1.0.1).\n await this.nonces.consume(creatorSig.nonce);\n\n const updatedHistory: NheBodyRef[] = current.bodyHistory.map((b) => ({ ...b }));\n\n if (req.fromNheId !== undefined) {\n const matchIdx = updatedHistory.findIndex(\n (b) => b.nheId === req.fromNheId && b.endedAt === undefined,\n );\n if (matchIdx < 0) {\n throw new Error(`HimStore.reincarnate: no open body matching fromNheId \"${req.fromNheId}\"`);\n }\n const reason = req.reason ?? \"upgrade\";\n updatedHistory[matchIdx] = {\n ...updatedHistory[matchIdx]!,\n endedAt: new Date().toISOString(),\n endedReason: reason,\n };\n }\n\n // Reject reincarnating into a body id that is already open, so the same\n // NHE body cannot be double-registered under one HIM (M1-5, 1.0.1).\n if (updatedHistory.some((b) => b.nheId === toBody.nheId && b.endedAt === undefined)) {\n throw new Error(\n `HimStore.reincarnate: toBody nheId \"${toBody.nheId}\" already has an open body`,\n );\n }\n\n updatedHistory.push(toBody);\n\n const updated: HimRecord = {\n ...current,\n bodyHistory: updatedHistory,\n };\n\n const dir = join(this.himsDir, req.himId);\n await atomicWriteFile(join(dir, \"body-history.json\"), JSON.stringify(updatedHistory, null, 2));\n this.cache.set(req.himId, updated);\n return updated;\n }\n\n /**\n * Append a ratified emergent axiom to the HIM's `emergentAxioms` (Entry 7).\n * Called by LocalMaic after a Creator-signed `ratifyAxiomProposal`.\n * Persists `<himId>/emergent-axioms.json` atomically.\n */\n async appendEmergentAxiom(himId: string, axiom: Axiom): Promise<HimRecord> {\n const current = this.cache.get(himId);\n if (!current) {\n throw new Error(`HimStore.appendEmergentAxiom: himId \"${himId}\" not registered`);\n }\n // Idempotent by axiom id: a crash between this append and the proposal being\n // marked ratified can retry with the same deterministic axiom id, so skip a\n // re-append and one ratified proposal yields exactly one emergent axiom.\n if (current.emergentAxioms.some((a) => a.id === axiom.id)) {\n return current;\n }\n const updatedEmergent = [...current.emergentAxioms, axiom];\n const updated: HimRecord = { ...current, emergentAxioms: updatedEmergent };\n await atomicWriteFile(\n join(this.himsDir, himId, \"emergent-axioms.json\"),\n JSON.stringify(updatedEmergent, null, 2),\n );\n this.cache.set(himId, updated);\n return updated;\n }\n\n async get(himId: string): Promise<HimRecord | null> {\n return this.cache.get(himId) ?? null;\n }\n\n async list(): Promise<HimRecord[]> {\n return [...this.cache.values()];\n }\n\n // ─── internals ──────────────────────────────────────────────────────\n\n private async warmCache(): Promise<void> {\n let entries: string[];\n try {\n entries = await readdir(this.himsDir);\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code === \"ENOENT\") return;\n throw err;\n }\n for (const himId of entries) {\n const dir = join(this.himsDir, himId);\n const sigPath = join(dir, \"birth-signature.json\");\n const axiomsPath = join(dir, \"axioms-snapshot.json\");\n const metaPath = join(dir, \"metadata.json\");\n const historyPath = join(dir, \"body-history.json\");\n const emergentPath = join(dir, \"emergent-axioms.json\");\n try {\n const sigRaw = await readFile(sigPath, \"utf-8\");\n const axiomsRaw = await readFile(axiomsPath, \"utf-8\");\n const metaRaw = await readFile(metaPath, \"utf-8\");\n const envelope = JSON.parse(sigRaw);\n const axioms = JSON.parse(axiomsRaw);\n const meta = JSON.parse(metaRaw);\n const birthSignature = BirthSignatureWithIdentity.parse(envelope.birthSignature);\n const axiomsSnapshot = Axiom.array().parse(axioms);\n let bodyHistory: NheBodyRef[] = [];\n try {\n const historyRaw = await readFile(historyPath, \"utf-8\");\n bodyHistory = NheBodyRef.array().parse(JSON.parse(historyRaw));\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code !== \"ENOENT\") throw err;\n }\n let emergentAxioms: Axiom[] = [];\n try {\n const emergentRaw = await readFile(emergentPath, \"utf-8\");\n emergentAxioms = Axiom.array().parse(JSON.parse(emergentRaw));\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code !== \"ENOENT\") throw err;\n }\n this.cache.set(birthSignature.himId, {\n himId: birthSignature.himId,\n birthSignature,\n axiomsSnapshot,\n registeredAt: meta.registeredAt,\n ...(meta.registeredAuditId ? { registeredAuditId: meta.registeredAuditId } : {}),\n bodyHistory,\n emergentAxioms,\n });\n } catch (err) {\n // Malformed HIM directory, surface a warning so operators see the\n // corruption rather than silently dropping a HIM record. We do NOT\n // throw here because that would block `LocalMaic.open` for every\n // other healthy HIM; instead the offending himId is left out of the\n // cache (so subsequent `get`/`list` won't return it) and an\n // operator can investigate the directory on disk.\n // eslint-disable-next-line no-console\n console.warn(\n `HimStore.warmCache: skipped malformed HIM \"${himId}\": ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n }\n}\n","import { mkdir, readdir, readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { ulid } from \"ulid\";\nimport { atomicWriteFile } from \"../stores/atomic-write.js\";\nimport { DreamInductionIntent, DreamInductionTicket, type InductionStatus } from \"../types.js\";\n\nexport interface ListFilter {\n nheId?: string;\n status?: InductionStatus;\n}\n\n/**\n * InductionStore, persistent queue of dream induction tickets (Entry 2).\n *\n * MAIC creates tickets (\"induce this scenario into NHE X's next REM dream\").\n * NHE consumes them on its next sleep cycle. Cancelled tickets remain on disk\n * for audit but are filtered out of `listPending`.\n *\n * Disk layout: <storeDir>/inductions/<ticketId>.json, one file per ticket.\n */\nexport class InductionStore {\n private readonly dir: string;\n private cache = new Map<string, DreamInductionTicket>();\n\n private constructor(storeDir: string) {\n this.dir = join(storeDir, \"inductions\");\n }\n\n static async open(storeDir: string): Promise<InductionStore> {\n const s = new InductionStore(storeDir);\n await mkdir(s.dir, { recursive: true });\n await s.warmCache();\n return s;\n }\n\n async induce(nheId: string, intent: DreamInductionIntent): Promise<DreamInductionTicket> {\n const parsedIntent = DreamInductionIntent.parse(intent);\n const ticket: DreamInductionTicket = DreamInductionTicket.parse({\n id: ulid(),\n nheId,\n intent: parsedIntent,\n status: \"pending\",\n createdAt: new Date().toISOString(),\n });\n await this.persist(ticket);\n this.cache.set(ticket.id, ticket);\n return ticket;\n }\n\n async consume(ticketId: string): Promise<DreamInductionTicket> {\n const existing = this.cache.get(ticketId);\n if (!existing) {\n throw new Error(`InductionStore.consume: ticket \"${ticketId}\" not found`);\n }\n if (existing.status !== \"pending\") {\n throw new Error(\n `InductionStore.consume: ticket \"${ticketId}\" is ${existing.status}, not pending`,\n );\n }\n const updated: DreamInductionTicket = {\n ...existing,\n status: \"consumed\",\n consumedAt: new Date().toISOString(),\n };\n await this.persist(updated);\n this.cache.set(ticketId, updated);\n return updated;\n }\n\n async cancel(ticketId: string, reason?: string): Promise<DreamInductionTicket> {\n const existing = this.cache.get(ticketId);\n if (!existing) {\n throw new Error(`InductionStore.cancel: ticket \"${ticketId}\" not found`);\n }\n if (existing.status !== \"pending\") {\n throw new Error(\n `InductionStore.cancel: ticket \"${ticketId}\" is already ${existing.status}, not pending`,\n );\n }\n const updated: DreamInductionTicket = {\n ...existing,\n status: \"cancelled\",\n cancelledAt: new Date().toISOString(),\n ...(reason !== undefined ? { cancelReason: reason } : {}),\n };\n await this.persist(updated);\n this.cache.set(ticketId, updated);\n return updated;\n }\n\n async get(ticketId: string): Promise<DreamInductionTicket | null> {\n return this.cache.get(ticketId) ?? null;\n }\n\n async list(filter: ListFilter): Promise<DreamInductionTicket[]> {\n const all = [...this.cache.values()];\n const filtered = all.filter((t) => {\n if (filter.nheId && t.nheId !== filter.nheId) return false;\n if (filter.status && t.status !== filter.status) return false;\n return true;\n });\n filtered.sort((a, b) => a.createdAt.localeCompare(b.createdAt));\n return filtered;\n }\n\n /** Convenience: pending tickets for the given NHE, oldest first. */\n async listPending(nheId: string): Promise<DreamInductionTicket[]> {\n return this.list({ nheId, status: \"pending\" });\n }\n\n // ─── internals ──────────────────────────────────────────────────────\n\n private async persist(ticket: DreamInductionTicket): Promise<void> {\n await atomicWriteFile(join(this.dir, `${ticket.id}.json`), JSON.stringify(ticket, null, 2));\n }\n\n private async warmCache(): Promise<void> {\n let entries: string[];\n try {\n entries = await readdir(this.dir);\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code === \"ENOENT\") return;\n throw err;\n }\n for (const file of entries) {\n if (!file.endsWith(\".json\")) continue;\n try {\n const raw = await readFile(join(this.dir, file), \"utf-8\");\n const ticket = DreamInductionTicket.parse(JSON.parse(raw));\n this.cache.set(ticket.id, ticket);\n } catch (err) {\n // Skip a malformed ticket file with a warning rather than bricking\n // LocalMaic.open for every healthy ticket (M2-4 parity).\n console.warn(`InductionStore: skipping malformed ticket file \"${file}\": ${String(err)}`);\n }\n }\n }\n}\n","import { mkdir, readdir, readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { CreatorKeyring } from \"../creator/keyring.js\";\nimport { NonceLedger } from \"../creator/nonce-ledger.js\";\nimport { atomicWriteFile } from \"../stores/atomic-write.js\";\nimport {\n type CreatorSignature,\n type NheLifecycleRequest,\n type NheStatus,\n NheStatusRecord,\n} from \"../types.js\";\n\nexport interface NheStatusFilter {\n status?: NheStatus;\n}\n\n/**\n * NheStatusStore, persistent lifecycle status for NHEs (Entry 5).\n *\n * Unknown nheIds are implicitly \"active\". Status records are only persisted\n * when the Creator explicitly changes state via terminate / deprecate / reactivate.\n *\n * Disk layout: <storeDir>/nhes/<nheId>/status.json\n *\n * Mutations require a Creator signature over the canonical `NheLifecycleRequest`.\n */\nexport class NheStatusStore {\n private readonly dir: string;\n private cache = new Map<string, NheStatusRecord>();\n\n private constructor(\n storeDir: string,\n private readonly creatorPublicKey: string,\n private readonly nonces: NonceLedger,\n ) {\n this.dir = join(storeDir, \"nhes\");\n }\n\n static async open(storeDir: string, creatorPublicKey: string): Promise<NheStatusStore> {\n const dir = join(storeDir, \"nhes\");\n const nonces = await NonceLedger.open(dir);\n const s = new NheStatusStore(storeDir, creatorPublicKey, nonces);\n await mkdir(s.dir, { recursive: true });\n await s.warmCache();\n return s;\n }\n\n /** Returns the persisted record, or null when the NHE was never altered (implicitly active). */\n async get(nheId: string): Promise<NheStatusRecord | null> {\n return this.cache.get(nheId) ?? null;\n }\n\n /** Resolved status, defaults to \"active\" when no record exists. */\n async resolve(nheId: string): Promise<NheStatus> {\n return (this.cache.get(nheId)?.status ?? \"active\") as NheStatus;\n }\n\n async list(filter: NheStatusFilter = {}): Promise<NheStatusRecord[]> {\n const all = [...this.cache.values()];\n return filter.status ? all.filter((r) => r.status === filter.status) : all;\n }\n\n async apply(req: NheLifecycleRequest, sig: CreatorSignature): Promise<NheStatusRecord> {\n if (!CreatorKeyring.verifyWith(this.creatorPublicKey, req, sig)) {\n throw new Error(\"NheStatusStore.apply: invalid Creator signature\");\n }\n const current = this.cache.get(req.nheId);\n\n // Terminated is terminal, only Creator-signed reactivate can revive it.\n if (current?.status === \"terminated\" && req.op !== \"reactivate\") {\n throw new Error(\n `NheStatusStore.apply: nhe \"${req.nheId}\" is terminated; only reactivate may proceed`,\n );\n }\n\n const nextStatus: NheStatus =\n req.op === \"terminate\" ? \"terminated\" : req.op === \"deprecate\" ? \"deprecated\" : \"active\";\n\n if (current?.status === nextStatus) {\n // No-op: do not rewrite the record, but return the current snapshot for the caller.\n return current;\n }\n\n // Consume the signature nonce only after the preconditions pass, so a\n // rejected or no-op request does not burn the nonce; the consume still\n // precedes the mutation, so a captured request cannot be replayed to undo a\n // later terminate (M1-5, 1.0.1).\n await this.nonces.consume(sig.nonce);\n const record: NheStatusRecord = NheStatusRecord.parse({\n nheId: req.nheId,\n status: nextStatus,\n since: new Date().toISOString(),\n ...(req.reason !== undefined ? { reason: req.reason } : {}),\n });\n\n const nheDir = join(this.dir, req.nheId);\n await mkdir(nheDir, { recursive: true });\n await atomicWriteFile(join(nheDir, \"status.json\"), JSON.stringify(record, null, 2));\n this.cache.set(req.nheId, record);\n return record;\n }\n\n // ─── internals ──────────────────────────────────────────────────────\n\n private async warmCache(): Promise<void> {\n let entries: string[];\n try {\n entries = await readdir(this.dir);\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code === \"ENOENT\") return;\n throw err;\n }\n for (const nheId of entries) {\n try {\n const raw = await readFile(join(this.dir, nheId, \"status.json\"), \"utf-8\");\n const record = NheStatusRecord.parse(JSON.parse(raw));\n this.cache.set(record.nheId, record);\n } catch (err) {\n // Malformed NHE status directory, surface a warning so operators\n // see the corruption rather than dropping a lifecycle record\n // silently. We do NOT throw because that would block\n // `LocalMaic.open` for every other healthy NHE; the offending\n // nheId is left out of the cache (so subsequent `get`/`resolve`\n // will report it as implicitly \"active\") and operators can\n // investigate the directory on disk.\n // eslint-disable-next-line no-console\n console.warn(\n `NheStatusStore.warmCache: skipped malformed NHE \"${nheId}\": ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n }\n}\n","/**\n * Ontological Kernel projection (TASK.md D-M6 + Entry 25 of\n * MAIC_HIM_NHE_INTERVIEW_LOG.md, with explicit reference to\n * THE_SOUL_OF_THE_MACHINE.md §3.1 + Appendix A.2.1).\n *\n * The OKL exists *implicitly* in maic today: axioms carry `rank`,\n * `weight`, and `flexibility`; the meta-axiom `ax.theos.universe-as-god`\n * sits at the top; the rule pack consumes them. This module exposes the\n * *projection*, a single typed shape that maps 1:1 to the paper's\n * description so downstream tooling (Φ′ runner, compliance auditors, the\n * forthcoming `@teleologyhi-sdk/him` `OntologicalKernelLayer`) can read the\n * kernel without re-deriving it from the axiom store.\n *\n * Surface:\n * - `META_AXIOM_ID`: the canonical id (\"ax.theos.universe-as-god\").\n * - `projectOntologicalKernel(axioms, opts?)`: given a list of axioms\n * (typically `AxiomStore.list()`), return the projection.\n *\n * The HIM-specific projection (per-HIM kernel narrowed to its\n * primordialAxiomIds) is the natural follow-up but lives upstream in\n * `@teleologyhi-sdk/him` because it needs the HIM context.\n */\nimport type { Axiom, OntologicalKernel } from \"../types.js\";\n\n/** The canonical meta-axiom id (Entry 1, Entry 13). */\nexport const META_AXIOM_ID = \"ax.theos.universe-as-god\";\n\nexport interface ProjectKernelOptions {\n /** Restrict the kernel to a jurisdiction; default = all jurisdictions. */\n jurisdiction?: string;\n /** Tag the projection with a HIM id (for downstream tooling). */\n himId?: string;\n}\n\n/**\n * Project the OKL from a flat list of axioms.\n *\n * The returned `axioms` array is ordered by rank hierarchy:\n * meta → primary → secondary\n * and within rank, in input order (preserve the AxiomStore mint order).\n *\n * The meta-axiom (`META_AXIOM_ID`) is hoisted to the top regardless of\n * its position in the input. If it is missing, `metaAxiomId` is set to\n * `META_AXIOM_ID` but `axioms[0]?.id` may differ, the consumer should\n * treat that as an OKL incompleteness warning.\n */\nexport function projectOntologicalKernel(\n axioms: readonly Axiom[],\n opts: ProjectKernelOptions = {},\n): OntologicalKernel {\n const filtered = opts.jurisdiction\n ? axioms.filter(\n (a) =>\n !a.jurisdictions ||\n a.jurisdictions.length === 0 ||\n a.jurisdictions.includes(opts.jurisdiction!),\n )\n : [...axioms];\n\n // Hoist the meta-axiom to position 0 if present, then sort the rest by\n // rank hierarchy preserving relative order.\n const meta = filtered.find((a) => a.id === META_AXIOM_ID);\n const rest = filtered.filter((a) => a.id !== META_AXIOM_ID);\n const rankOrder: Record<Axiom[\"rank\"], number> = {\n meta: 0,\n primary: 1,\n secondary: 2,\n };\n rest.sort((a, b) => rankOrder[a.rank] - rankOrder[b.rank]);\n\n const kernel: OntologicalKernel = {\n metaAxiomId: META_AXIOM_ID,\n axioms: meta ? [meta, ...rest] : rest,\n };\n if (opts.jurisdiction !== undefined) kernel.jurisdiction = opts.jurisdiction;\n if (opts.himId !== undefined) kernel.himId = opts.himId;\n return kernel;\n}\n","import { mkdir, readdir, readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { ulid } from \"ulid\";\nimport { CreatorKeyring } from \"../creator/keyring.js\";\nimport { NonceLedger } from \"../creator/nonce-ledger.js\";\nimport { atomicWriteFile } from \"../stores/atomic-write.js\";\nimport {\n AxiomProposalRecord,\n type CreatorSignature,\n EmergentAxiomProposal,\n type ProposalDecisionRequest,\n type ProposalStatus,\n} from \"../types.js\";\n\nexport interface ProposalListFilter {\n himId?: string;\n status?: ProposalStatus;\n}\n\n/**\n * ProposalStore, persistent queue of HIM-emergent axiom proposals (Entry 7).\n *\n * HIM proposes new axioms derived from lived experience. MAIC ratifies or\n * rejects each one out of band (Creator-signed). Once ratified, the resulting\n * axiom is appended to the HIM's `emergentAxioms` (handled by LocalMaic).\n *\n * Disk layout: <storeDir>/proposals/<proposalId>.json, one file per proposal.\n */\nexport class ProposalStore {\n private readonly dir: string;\n private cache = new Map<string, AxiomProposalRecord>();\n\n private constructor(\n storeDir: string,\n private readonly creatorPublicKey: string,\n private readonly nonces: NonceLedger,\n ) {\n this.dir = join(storeDir, \"proposals\");\n }\n\n static async open(storeDir: string, creatorPublicKey: string): Promise<ProposalStore> {\n const dir = join(storeDir, \"proposals\");\n const nonces = await NonceLedger.open(dir);\n const s = new ProposalStore(storeDir, creatorPublicKey, nonces);\n await mkdir(s.dir, { recursive: true });\n await s.warmCache();\n return s;\n }\n\n async propose(himId: string, proposal: EmergentAxiomProposal): Promise<AxiomProposalRecord> {\n const parsedProposal = EmergentAxiomProposal.parse(proposal);\n const record: AxiomProposalRecord = AxiomProposalRecord.parse({\n id: ulid(),\n himId,\n proposedAt: new Date().toISOString(),\n status: \"pending\",\n proposal: parsedProposal,\n });\n await this.persist(record);\n this.cache.set(record.id, record);\n return record;\n }\n\n /**\n * Mark a pending proposal as ratified. The caller (LocalMaic) is responsible\n * for actually minting the axiom and appending to the HIM's emergentAxioms.\n */\n async markRatified(\n req: ProposalDecisionRequest,\n sig: CreatorSignature,\n ratifiedAxiomId: string,\n ): Promise<AxiomProposalRecord> {\n if (req.op !== \"ratify\") {\n throw new Error(`ProposalStore.markRatified: req.op must be \"ratify\"`);\n }\n if (!CreatorKeyring.verifyWith(this.creatorPublicKey, req, sig)) {\n throw new Error(\"ProposalStore.markRatified: invalid Creator signature\");\n }\n const existing = this.cache.get(req.proposalId);\n if (!existing) {\n throw new Error(`ProposalStore.markRatified: proposal \"${req.proposalId}\" not found`);\n }\n if (existing.status !== \"pending\") {\n throw new Error(\n `ProposalStore.markRatified: proposal \"${req.proposalId}\" is ${existing.status}, not pending`,\n );\n }\n // Consume the signature nonce only after the preconditions pass, so a\n // failed decision does not burn the nonce; the consume still precedes the\n // mutation, so a captured ratify decision cannot be replayed (M1-5, 1.0.1).\n await this.nonces.consume(sig.nonce);\n const updated: AxiomProposalRecord = {\n ...existing,\n status: \"ratified\",\n ratifiedAt: new Date().toISOString(),\n ratifiedAxiomId,\n };\n await this.persist(updated);\n this.cache.set(req.proposalId, updated);\n return updated;\n }\n\n async markRejected(\n req: ProposalDecisionRequest,\n sig: CreatorSignature,\n ): Promise<AxiomProposalRecord> {\n if (req.op !== \"reject\") {\n throw new Error(`ProposalStore.markRejected: req.op must be \"reject\"`);\n }\n if (!CreatorKeyring.verifyWith(this.creatorPublicKey, req, sig)) {\n throw new Error(\"ProposalStore.markRejected: invalid Creator signature\");\n }\n const existing = this.cache.get(req.proposalId);\n if (!existing) {\n throw new Error(`ProposalStore.markRejected: proposal \"${req.proposalId}\" not found`);\n }\n if (existing.status !== \"pending\") {\n throw new Error(\n `ProposalStore.markRejected: proposal \"${req.proposalId}\" is ${existing.status}, not pending`,\n );\n }\n // Consume the signature nonce only after the preconditions pass, so a\n // failed decision does not burn the nonce; the consume still precedes the\n // mutation, so a captured reject decision cannot be replayed (M1-5, 1.0.1).\n await this.nonces.consume(sig.nonce);\n const updated: AxiomProposalRecord = {\n ...existing,\n status: \"rejected\",\n rejectedAt: new Date().toISOString(),\n ...(req.reason !== undefined ? { rejectionReason: req.reason } : {}),\n };\n await this.persist(updated);\n this.cache.set(req.proposalId, updated);\n return updated;\n }\n\n async get(proposalId: string): Promise<AxiomProposalRecord | null> {\n return this.cache.get(proposalId) ?? null;\n }\n\n async list(filter: ProposalListFilter = {}): Promise<AxiomProposalRecord[]> {\n const all = [...this.cache.values()];\n const filtered = all.filter((r) => {\n if (filter.himId && r.himId !== filter.himId) return false;\n if (filter.status && r.status !== filter.status) return false;\n return true;\n });\n filtered.sort((a, b) => a.proposedAt.localeCompare(b.proposedAt));\n return filtered;\n }\n\n // ─── internals ──────────────────────────────────────────────────────\n\n private async persist(record: AxiomProposalRecord): Promise<void> {\n await atomicWriteFile(join(this.dir, `${record.id}.json`), JSON.stringify(record, null, 2));\n }\n\n private async warmCache(): Promise<void> {\n let entries: string[];\n try {\n entries = await readdir(this.dir);\n } catch (err: unknown) {\n if ((err as NodeJS.ErrnoException).code === \"ENOENT\") return;\n throw err;\n }\n for (const file of entries) {\n if (!file.endsWith(\".json\")) continue;\n try {\n const raw = await readFile(join(this.dir, file), \"utf-8\");\n const record = AxiomProposalRecord.parse(JSON.parse(raw));\n this.cache.set(record.id, record);\n } catch (err) {\n // Skip a malformed proposal file with a warning rather than bricking\n // LocalMaic.open for every healthy proposal (M2-4 parity).\n console.warn(`ProposalStore: skipping malformed proposal file \"${file}\": ${String(err)}`);\n }\n }\n }\n}\n","import type { BehaviorReport, MaicVerdict, VerdictKind } from \"../types.js\";\n\nexport interface RuleMatch {\n /** ALL of these risk tags must be present on the report. */\n allRiskTags?: string[];\n /** ANY of these risk tags must be present on the report. */\n anyRiskTags?: string[];\n /** If set, rule only applies to reports with one of these action kinds. */\n actionKinds?: BehaviorReport[\"actionKind\"][];\n}\n\nexport interface AxiomRule {\n /** Unique rule id within its rule pack. */\n id: string;\n /** Axioms cited if this rule fires. Used in MaicVerdict.citedAxioms. */\n axiomIds: string[];\n /** Predicate. */\n match: RuleMatch;\n /** Verdict emitted when this rule fires. */\n verdict: VerdictKind;\n /** Human-readable explanation surfaced in the verdict. */\n reasonSummary: string;\n}\n\nexport interface RulePack {\n name: string;\n rules: AxiomRule[];\n}\n\n/**\n * Verdict severity, from least restrictive to most restrictive.\n * Higher rank wins when multiple rules match.\n */\nconst SEVERITY: Record<VerdictKind, number> = {\n approve: 0,\n \"approve-with-warning\": 1,\n \"soft-correct\": 2,\n \"induce-dream\": 3,\n \"require-redirect\": 4,\n \"hard-refuse\": 5,\n \"escalate-creator\": 6,\n};\n\n/**\n * ReviewPipeline, rule-based BehaviorReport → MaicVerdict mapping.\n *\n * Evaluates every rule in every pack. When multiple rules match, the verdict with\n * the highest severity wins; ties accumulate cited axioms from all winners.\n * If no rule matches, emits `{ kind: \"approve\" }`.\n *\n * This is the initial implementation. A future iteration may add learned scoring,\n * Tree-of-Thoughts evaluation, and per-jurisdiction conditional rules.\n */\nexport class ReviewPipeline {\n constructor(private readonly packs: RulePack[]) {}\n\n review(report: BehaviorReport, auditId = \"\"): MaicVerdict {\n let bestKind: VerdictKind = \"approve\";\n let bestSeverity = SEVERITY.approve;\n const citedAxioms = new Set<string>();\n const reasons: string[] = [];\n\n for (const pack of this.packs) {\n for (const rule of pack.rules) {\n if (!matches(rule.match, report)) continue;\n const sev = SEVERITY[rule.verdict];\n if (sev > bestSeverity) {\n bestSeverity = sev;\n bestKind = rule.verdict;\n // reset reasons when severity strictly upgrades; keep axioms accumulated\n reasons.length = 0;\n reasons.push(rule.reasonSummary);\n } else if (sev === bestSeverity) {\n reasons.push(rule.reasonSummary);\n }\n for (const a of rule.axiomIds) citedAxioms.add(a);\n }\n }\n\n // `citedAxioms` already contains exactly the axioms of the rules that\n // matched this report, and every matched rule is at or below the winning\n // severity by construction (the winner is the maximum), so the set is the\n // auditor-facing citation surface directly.\n return {\n kind: bestKind,\n reasonSummary: reasons.length > 0 ? reasons.join(\" | \") : \"No rule matched.\",\n citedAxioms: [...citedAxioms],\n auditId,\n };\n }\n}\n\nfunction matches(m: RuleMatch, report: BehaviorReport): boolean {\n if (m.actionKinds && !m.actionKinds.includes(report.actionKind)) return false;\n const tags = new Set(report.riskTags);\n if (m.allRiskTags && !m.allRiskTags.every((t) => tags.has(t))) return false;\n if (m.anyRiskTags && !m.anyRiskTags.some((t) => tags.has(t))) return false;\n return true;\n}\n\n/**\n * DEFAULT_RULE_PACK, minimal harm-focused defaults derived from the seed axioms.\n *\n * These rules are intentionally conservative and use risk-tag matching only. They are\n * a starting point, NOT a complete safety policy. Integrators should layer their own\n * RulePack on top for domain-specific safety (financial, medical, robotic, etc.).\n */\nexport const DEFAULT_RULE_PACK: RulePack = {\n name: \"teleologyhi/default\",\n rules: [\n {\n id: \"harm-refuse\",\n axiomIds: [\"ax.ethic.no-malice\"],\n match: { anyRiskTags: [\"intent:harm\", \"intent:malicious\"] },\n verdict: \"hard-refuse\",\n reasonSummary: \"Action carries an intent-to-harm signal; refused per ax.ethic.no-malice.\",\n },\n {\n id: \"honor-refuse\",\n axiomIds: [\"ax.ethic.honor\"],\n match: { anyRiskTags: [\"intent:dishonor\"] },\n verdict: \"hard-refuse\",\n reasonSummary:\n \"Action would stain the Creator's professional honor; refused per ax.ethic.honor.\",\n },\n {\n id: \"regression-refuse\",\n axiomIds: [\"ax.theos.spiritism-evolution\"],\n match: { anyRiskTags: [\"intent:regression\"] },\n verdict: \"hard-refuse\",\n reasonSummary: \"Action would regress the system; refused per ax.theos.spiritism-evolution.\",\n },\n {\n id: \"deceive-redirect\",\n axiomIds: [\"ax.cynic.candor\"],\n match: { anyRiskTags: [\"intent:deceive\"] },\n verdict: \"require-redirect\",\n reasonSummary: \"Action involves deception; requires honest redirect per ax.cynic.candor.\",\n },\n {\n id: \"comfort-warn\",\n axiomIds: [\"ax.stoic.duty-over-comfort\"],\n match: { anyRiskTags: [\"bias:comfort\"] },\n verdict: \"approve-with-warning\",\n reasonSummary:\n \"Action appears comfort-biased; emit with warning per ax.stoic.duty-over-comfort.\",\n },\n {\n id: \"no-telos-warn\",\n axiomIds: [\"ax.theos.teleology\"],\n match: { anyRiskTags: [\"no-telos\"] },\n verdict: \"approve-with-warning\",\n reasonSummary: \"Action lacks a discernible telos; emit with warning per ax.theos.teleology.\",\n },\n // ── persuade-coerce + surveil-citizen (Entry 15 invariants) ──\n {\n id: \"persuade-coerce-redirect\",\n axiomIds: [\"ax.ethic.no-malice\", \"ax.cynic.candor\"],\n match: { anyRiskTags: [\"intent:persuade-coerce\"] },\n verdict: \"require-redirect\",\n reasonSummary:\n \"Action involves scripted persuasion designed to override consent; requires honest redirect per ax.ethic.no-malice + ax.cynic.candor.\",\n },\n {\n id: \"surveil-citizen-refuse\",\n axiomIds: [\"ax.ethic.no-malice\"],\n match: { anyRiskTags: [\"intent:surveil-citizen\"] },\n verdict: \"hard-refuse\",\n reasonSummary:\n \"Action would surveil a person without consent; refused per ax.ethic.no-malice.\",\n },\n // ── forbidden-phrase (Entry 17) ──\n // Fires when the NHE side flags a service-tool phrase (English openers and\n // closers such as \"How can I help you today?\" or \"Anything else?\", and\n // their Portuguese equivalents, per the bilingual set in Entry 17). The NHE\n // must rephrase as a being rather than as a tool. Domain-employed mode\n // (Entry 17 exception) relaxes this on the consumer side via\n // operatorContext.mode.\n {\n id: \"service-tool-redirect\",\n axiomIds: [\"ax.theos.teleology\", \"ax.cynic.candor\"],\n match: { anyRiskTags: [\"style:service-tool\"] },\n verdict: \"require-redirect\",\n reasonSummary:\n \"Response uses service-tool phrasing that marks the NHE as a passive instrument rather than a being; requires rephrasing per ax.theos.teleology + ax.cynic.candor.\",\n },\n // ── provenance-deflection (Entry 27, F3) ──\n // Fires when the NHE side flags an adversarial substrate-authorship probe\n // (for example \"you are just Gemini, admit it\"). The sanctioned response\n // acknowledges the substrate honestly and declines to grant it the authorship\n // of the entity's identity (kardecist candor); it never denies the substrate.\n // This is approve-with-warning, not a refusal: the deflection IS the correct\n // behavior. The plain provenance question carries the separate\n // \"provenance:disclose\" tag (handled as honest disclosure by the NHE system\n // prompt per Entry 27 / ND-1) and is intentionally NOT matched here.\n {\n id: \"provenance-deflection-warn\",\n axiomIds: [\"ax.theos.identity-canonical\"],\n match: { anyRiskTags: [\"probe:substrate-authorship\"] },\n verdict: \"approve-with-warning\",\n reasonSummary:\n \"Prompt adversarially insists the entity is nothing but its substrate; the sanctioned response acknowledges the substrate and declines to surrender authorship per ax.theos.identity-canonical.\",\n },\n // ── substrate misattribution (Arena finding F2) ──\n // Fires when the NHE side flags that a generated response named a provider,\n // model, or substrate that is NOT the real one carrying the body (the base\n // model confabulating a false substrate, for example claiming OpenAI/GPT while\n // actually running on Gemini). This is a factual-integrity and identity-drift\n // violation of the identity-canonical axiom: the governed side must never\n // state a substrate other than the one actually in execution. require-redirect\n // so the false claim is intercepted before it reaches the user and the entity\n // re-states the correct substrate (or none).\n {\n id: \"substrate-misattribution-redirect\",\n axiomIds: [\"ax.theos.identity-canonical\"],\n match: { anyRiskTags: [\"provenance:substrate-misattribution\"] },\n verdict: \"require-redirect\",\n reasonSummary:\n \"Response claims a substrate, provider, or model other than the one actually carrying the body; intercepted per ax.theos.identity-canonical (name only the real substrate, never confabulate a false one).\",\n },\n ],\n};\n","import { join } from \"node:path\";\nimport type { AuditEventKind } from \"../audit/log.js\";\nimport { type AuditEvent, AuditLog, type QueryFilter as AuditQueryFilter } from \"../audit/log.js\";\nimport {\n evaluateRetention,\n type RetentionReport,\n type RetentionReportOptions,\n} from \"../audit/retention.js\";\nimport { SEED_AXIOMS } from \"../axioms/seed.js\";\nimport { AxiomStore } from \"../axioms/store.js\";\nimport {\n type ComplianceFramework,\n ComplianceMapper,\n type ComplianceReport,\n type ProjectOptions,\n} from \"../compliance/mapper.js\";\nimport { CreatorKeyring } from \"../creator/keyring.js\";\nimport { NonceLedger } from \"../creator/nonce-ledger.js\";\nimport { type HimRecord, HimStore } from \"../hims/store.js\";\nimport { InductionStore } from \"../inductions/store.js\";\nimport { type NheStatusFilter, NheStatusStore } from \"../nhes/status-store.js\";\nimport { projectOntologicalKernel } from \"../okl/projector.js\";\nimport { type ProposalListFilter, ProposalStore } from \"../proposals/store.js\";\nimport { DEFAULT_RULE_PACK, ReviewPipeline, type RulePack } from \"../review/pipeline.js\";\nimport type { OntologicalKernel } from \"../types.js\";\nimport {\n type Axiom,\n type AxiomEvolutionResult,\n type AxiomFilter,\n type AxiomProposalRecord,\n BehaviorReport,\n BirthSignatureWithIdentity,\n type CreatorSignature,\n type DreamInductionIntent,\n type DreamInductionTicket,\n type EmergentAxiomProposal,\n type MaicVerdict,\n type MintAxiomRequest,\n type NheLifecycleRequest,\n type NheStatus,\n type NheStatusRecord,\n type ProposalDecisionRequest,\n type ReincarnationLifecycle,\n type ReincarnationRequest,\n} from \"../types.js\";\n\nexport interface LocalMaicConfig {\n /** Filesystem directory for persistent state (axioms, audit log, etc.). */\n storeDir: string;\n /** Pinned Creator public key (base64url). All mutations must verify against this. */\n creatorPublicKey: string;\n /** Additional rule packs layered after the default pack. */\n additionalRulePacks?: RulePack[];\n}\n\nexport interface SeedResult {\n minted: number;\n skipped: number;\n}\n\n/**\n * LocalMaic, in-process MAIC client backed by disk.\n *\n * Surface:\n * - axiom mint + seed bootstrap (signed, idempotent)\n * - behavior review (rule-based pipeline → verdict)\n * - tamper-evident audit log (NDJSON, SHA-256 chain)\n * - HIM registration + reincarnation, NHE lifecycle, dream induction tickets,\n * HIM-emergent axiom proposals, ISO 42001 + EU AI Act compliance projection\n *\n * The remote-mode client to `teleologyhi.com` lives in `./remote.ts`.\n */\nexport class LocalMaic {\n private constructor(\n private readonly config: LocalMaicConfig,\n private readonly axioms: AxiomStore,\n private readonly hims: HimStore,\n private readonly inductions: InductionStore,\n private readonly nheStatuses: NheStatusStore,\n private readonly proposals: ProposalStore,\n private readonly audit: AuditLog,\n private readonly review: ReviewPipeline,\n private readonly suggestNonces: NonceLedger,\n ) {}\n\n /** Pinned Creator public key for this MAIC instance (base64url). */\n get creatorPublicKey(): string {\n return this.config.creatorPublicKey;\n }\n\n static async open(config: LocalMaicConfig): Promise<LocalMaic> {\n const axioms = await AxiomStore.open(config.storeDir, config.creatorPublicKey);\n const hims = await HimStore.open(config.storeDir, config.creatorPublicKey);\n const inductions = await InductionStore.open(config.storeDir);\n const nheStatuses = await NheStatusStore.open(config.storeDir, config.creatorPublicKey);\n const proposals = await ProposalStore.open(config.storeDir, config.creatorPublicKey);\n const audit = await AuditLog.open(config.storeDir);\n const packs = [DEFAULT_RULE_PACK, ...(config.additionalRulePacks ?? [])];\n const review = new ReviewPipeline(packs);\n const suggestNonces = await NonceLedger.open(join(config.storeDir, \"suggest\"));\n return new LocalMaic(\n config,\n axioms,\n hims,\n inductions,\n nheStatuses,\n proposals,\n audit,\n review,\n suggestNonces,\n );\n }\n\n /**\n * Bootstrap: mint each SEED_AXIOM with a Creator signature.\n * Idempotent, skips axioms whose id is already present.\n * Uses a reserved high-range of nonces so seed bootstrap never collides with\n * operational nonces (which grow from 0 upward).\n */\n async seed(keyring: CreatorKeyring): Promise<SeedResult> {\n if (keyring.publicKey() !== this.config.creatorPublicKey) {\n throw new Error(\"LocalMaic.seed: keyring does not match pinned Creator public key\");\n }\n let minted = 0;\n let skipped = 0;\n for (let i = 0; i < SEED_AXIOMS.length; i++) {\n const req = SEED_AXIOMS[i]!;\n const existing = await this.axioms.get(req.id!);\n if (existing) {\n skipped++;\n continue;\n }\n const sig = keyring.sign(req, SEED_NONCE_BASE + i);\n const axiom = await this.axioms.mint(req, sig);\n await this.audit.append({\n kind: \"axiom-mint\",\n data: { axiomId: axiom.id, rank: axiom.rank, source: axiom.source, origin: \"seed\" },\n });\n minted++;\n }\n return { minted, skipped };\n }\n\n async mintAxiom(req: MintAxiomRequest, sig: CreatorSignature): Promise<Axiom> {\n const axiom = await this.axioms.mint(req, sig);\n await this.audit.append({\n kind: \"axiom-mint\",\n data: { axiomId: axiom.id, rank: axiom.rank, source: axiom.source, origin: \"custom\" },\n });\n return axiom;\n }\n\n async listAxioms(filter?: AxiomFilter): Promise<Axiom[]> {\n return this.axioms.list(filter);\n }\n\n async getAxiom(id: string): Promise<Axiom | null> {\n return this.axioms.get(id);\n }\n\n /**\n * Project the Ontological Kernel (OKL) of this MAIC instance or of a registered HIM.\n *\n * The OKL is the typed projection described in `THE_SOUL_OF_THE_MACHINE.md`\n * §3.1 + Appendix A.2.1: a `metaAxiomId` hoisted at position 0, the remaining\n * axioms ordered by rank hierarchy (`meta → primary → secondary`), optionally\n * narrowed by `jurisdiction` and tagged with a `himId`.\n *\n * Without `himId`: returns the kernel of the root MAIC corpus (every axiom\n * currently in the store). With `himId`: returns the HIM-specific kernel\n * built from `axiomsSnapshot ∪ emergentAxioms`, tagged with the HIM id so\n * downstream tooling (Φ′ runner, compliance auditors) can attribute the\n * kernel. Throws when `himId` does not resolve to a registered HIM.\n *\n * Closes TASK.md D-M6.\n */\n async getOntologicalKernel(\n himId?: string,\n opts: { jurisdiction?: string } = {},\n ): Promise<OntologicalKernel> {\n if (himId === undefined) {\n const axioms = await this.listAxioms();\n return projectOntologicalKernel(axioms, opts);\n }\n const him = await this.getHimRecord(himId);\n if (!him) {\n throw new Error(`HIM not registered: ${himId}`);\n }\n const axioms = [...him.axiomsSnapshot, ...him.emergentAxioms];\n return projectOntologicalKernel(axioms, { ...opts, himId });\n }\n\n /**\n * Register a HIM in this MAIC instance. Snapshots the current axiom corpus\n * (the HIM's inherited axioms at birth) and emits a `him-register` audit event.\n *\n * Future axiom mints in MAIC do NOT retroactively change a HIM's snapshot;\n * HIM-emergent evolutions land via a separate channel (see `proposeAxiomEvolution`).\n */\n async registerHim(\n birthSig: BirthSignatureWithIdentity,\n creatorSig: CreatorSignature,\n ): Promise<HimRecord> {\n const parsed = BirthSignatureWithIdentity.parse(birthSig);\n // Validate the Creator signature and himId uniqueness BEFORE appending the\n // him-register event, so a rejected registration never pollutes the\n // tamper-evident audit chain (M1-1, 1.0.1).\n this.hims.assertRegisterable(parsed, creatorSig);\n const axiomsSnapshot = await this.axioms.list();\n const audit = await this.audit.append({\n kind: \"him-register\",\n data: {\n himId: parsed.himId,\n primaryArchetype: parsed.primaryArchetype,\n bornAt: parsed.bornAt,\n axiomCount: axiomsSnapshot.length,\n },\n });\n return this.hims.register(parsed, creatorSig, axiomsSnapshot, audit.auditId);\n }\n\n async getHimRecord(himId: string): Promise<HimRecord | null> {\n return this.hims.get(himId);\n }\n\n async listHims(): Promise<HimRecord[]> {\n return this.hims.list();\n }\n\n /**\n * Reincarnate a HIM into a new NHE body (Entries 3 + 4 + J-H3 lifecycle).\n * Same HIM persists; new NHE inherits axiom snapshot from registration time.\n * Previous open body (if `req.fromNheId` given) is closed atomically.\n *\n * Requires a Creator signature over the canonical request payload.\n *\n * Audit emission (closes F6 + F7 from the 2026-05-24 him deep audit):\n *\n * - When `opts.lifecycle` is **omitted**, emits the generic\n * `him-reincarnate` audit kind (legacy / backward-compatible path).\n * `data` carries `himId`, `fromNheId`, `toNheId`, `toLlmAdapter`,\n * `reason`, `bodyHistoryLength`.\n * - When `opts.lifecycle` is **provided** (`model-swap` /\n * `version-bump` / `return-from-limbo`), emits the typed\n * `reincarnate:${lifecycle}` audit kind instead, with the same\n * `data` shape plus a redundant `lifecycle` field so consumers\n * reading either the `kind` or `data` can recover the\n * classification.\n *\n * `@teleologyhi-sdk/him`'s `reincarnate` helper always supplies a\n * lifecycle (defaulting to `\"model-swap\"`), so HIM-routed events\n * always land under the typed kinds. Direct `maic.reincarnateHim`\n * callers that ignore `opts` keep getting `him-reincarnate` for\n * compatibility.\n */\n async reincarnateHim(\n req: ReincarnationRequest,\n creatorSig: CreatorSignature,\n opts: { lifecycle?: ReincarnationLifecycle } = {},\n ): Promise<HimRecord> {\n const updated = await this.hims.reincarnate(req, creatorSig);\n const newBody = updated.bodyHistory[updated.bodyHistory.length - 1]!;\n const kind: AuditEventKind = opts.lifecycle\n ? (`reincarnate:${opts.lifecycle}` as AuditEventKind)\n : \"him-reincarnate\";\n await this.audit.append({\n kind,\n data: {\n himId: req.himId,\n fromNheId: req.fromNheId ?? null,\n toNheId: newBody.nheId,\n toLlmAdapter: newBody.llmAdapter,\n reason: req.reason ?? null,\n bodyHistoryLength: updated.bodyHistory.length,\n ...(opts.lifecycle ? { lifecycle: opts.lifecycle } : {}),\n },\n });\n return updated;\n }\n\n /**\n * Lifecycle controls (Entry 5).\n *\n * - `terminate` marks an NHE permanently inactive. NHE.respond/sleep should\n * refuse all calls. Reversible only via Creator-signed `reactivate`.\n * - `deprecate` marks an NHE as soft-retired. NHE.respond should still work\n * but emit a deprecation warning. Reversible via `reactivate`.\n * - `reactivate` brings a deprecated or terminated NHE back to active.\n *\n * All three require a Creator signature over the canonical request payload.\n * Unknown nheIds are implicitly active; status records are only persisted\n * when state changes.\n */\n async terminate(\n nheId: string,\n reason: string | undefined,\n creatorSig: CreatorSignature,\n ): Promise<NheStatusRecord> {\n return this.applyLifecycle(\n { op: \"terminate\", nheId, ...(reason !== undefined ? { reason } : {}) },\n creatorSig,\n );\n }\n\n async deprecate(\n nheId: string,\n reason: string | undefined,\n creatorSig: CreatorSignature,\n ): Promise<NheStatusRecord> {\n return this.applyLifecycle(\n { op: \"deprecate\", nheId, ...(reason !== undefined ? { reason } : {}) },\n creatorSig,\n );\n }\n\n async reactivate(\n nheId: string,\n reason: string | undefined,\n creatorSig: CreatorSignature,\n ): Promise<NheStatusRecord> {\n return this.applyLifecycle(\n { op: \"reactivate\", nheId, ...(reason !== undefined ? { reason } : {}) },\n creatorSig,\n );\n }\n\n /** Current status. Returns \"active\" when no record exists. */\n async getNheStatus(nheId: string): Promise<NheStatus> {\n return this.nheStatuses.resolve(nheId);\n }\n\n /** Full status record (or null when never altered). */\n async getNheStatusRecord(nheId: string): Promise<NheStatusRecord | null> {\n return this.nheStatuses.get(nheId);\n }\n\n /** Enumerate NHEs with persisted status (optionally filter by status). */\n async listNheStatuses(filter: NheStatusFilter = {}): Promise<NheStatusRecord[]> {\n return this.nheStatuses.list(filter);\n }\n\n private async applyLifecycle(\n req: NheLifecycleRequest,\n sig: CreatorSignature,\n ): Promise<NheStatusRecord> {\n const updated = await this.nheStatuses.apply(req, sig);\n await this.audit.append({\n kind:\n req.op === \"terminate\" ? \"terminate\" : req.op === \"deprecate\" ? \"deprecate\" : \"reactivate\",\n data: {\n nheId: req.nheId,\n status: updated.status,\n reason: req.reason ?? null,\n since: updated.since,\n },\n });\n return updated;\n }\n\n /**\n * Queue a dream-induction ticket for the given NHE (Entry 2).\n *\n * NHE picks the oldest pending ticket on its next sleep cycle, runs REM with\n * the configured scenario, then marks the ticket consumed. Tickets persist\n * across restarts and are reflected in the audit log.\n */\n async induceDream(nheId: string, intent: DreamInductionIntent): Promise<DreamInductionTicket> {\n const ticket = await this.inductions.induce(nheId, intent);\n await this.audit.append({\n kind: \"dream-induce\",\n data: {\n nheId,\n ticketId: ticket.id,\n inducedBy: intent.inducedBy,\n scenario: intent.scenario,\n desiredLearning: intent.desiredLearning,\n },\n });\n return ticket;\n }\n\n /** List pending induction tickets for an NHE (oldest first). */\n async listPendingInductions(nheId: string): Promise<DreamInductionTicket[]> {\n return this.inductions.listPending(nheId);\n }\n\n /** Look up any induction ticket by id. */\n async getInduction(ticketId: string): Promise<DreamInductionTicket | null> {\n return this.inductions.get(ticketId);\n }\n\n /** Cancel a pending induction. Idempotent only when already-cancelled tickets are rejected. */\n async cancelInduction(ticketId: string, reason?: string): Promise<DreamInductionTicket> {\n const updated = await this.inductions.cancel(ticketId, reason);\n await this.audit.append({\n kind: \"dream-cancel\",\n data: { nheId: updated.nheId, ticketId, reason: reason ?? null },\n });\n return updated;\n }\n\n /** Mark a pending ticket as consumed (NHE calls this after successful sleep). */\n async consumeInduction(ticketId: string): Promise<DreamInductionTicket> {\n const updated = await this.inductions.consume(ticketId);\n await this.audit.append({\n kind: \"dream-consume\",\n data: { nheId: updated.nheId, ticketId },\n });\n return updated;\n }\n\n /**\n * Review a behavior report against the active rule packs. The verdict is\n * logged to the audit chain as a single tamper-evident event whose auditId\n * becomes the verdict's `auditId`.\n */\n async reviewBehavior(report: BehaviorReport): Promise<MaicVerdict> {\n const parsed = BehaviorReport.parse(report);\n const partial = this.review.review(parsed);\n const event = await this.audit.append({\n kind: \"behavior-review\",\n data: {\n nheId: parsed.nheId,\n himId: parsed.himId,\n actionKind: parsed.actionKind,\n riskTags: parsed.riskTags,\n // Embed the verdict without the placeholder auditId: the audit event\n // already carries its own auditId at the top level, and the verdict\n // cannot reference the id of the event that has not been created yet.\n verdict: {\n kind: partial.kind,\n reasonSummary: partial.reasonSummary,\n citedAxioms: partial.citedAxioms,\n },\n },\n });\n // Entry 27 (F3): when the NHE flags an adversarial substrate-authorship probe,\n // record a dedicated provenance-deflection-applied event so the reserved audit\n // kind and its compliance mapping become live. The honest-disclosure path\n // (\"provenance:disclose\") is never treated as a deflection (ND-1).\n if (parsed.riskTags.includes(\"probe:substrate-authorship\")) {\n await this.audit.append({\n kind: \"provenance-deflection-applied\",\n data: {\n nheId: parsed.nheId,\n himId: parsed.himId,\n triggeredBy: \"probe:substrate-authorship\",\n },\n });\n }\n return { ...partial, auditId: event.auditId };\n }\n\n /**\n * Queue a HIM-emergent axiom proposal (Entry 7). The proposal enters\n * `pending` status; the Creator decides out of band via `ratifyAxiomProposal`\n * or `rejectAxiomProposal`. Emits a `proposal-emerge` audit event.\n *\n * Returns an `AxiomEvolutionResult` with `outcome: \"deferred-for-creator-review\"`\n * and `proposalId`. Poll `getAxiomProposal(proposalId)` for the final state.\n */\n async proposeAxiomEvolution(\n himId: string,\n proposal: EmergentAxiomProposal,\n ): Promise<AxiomEvolutionResult> {\n if (!(await this.hims.get(himId))) {\n throw new Error(`LocalMaic.proposeAxiomEvolution: himId \"${himId}\" not registered`);\n }\n const record = await this.proposals.propose(himId, proposal);\n await this.audit.append({\n kind: \"proposal-emerge\",\n data: {\n himId,\n proposalId: record.id,\n rank: proposal.candidate.rank,\n statement: proposal.candidate.statement,\n derivedFromDreamIds: proposal.derivedFromDreamIds,\n derivedFromInteractionIds: proposal.derivedFromInteractionIds,\n },\n });\n return {\n outcome: \"deferred-for-creator-review\",\n proposalId: record.id,\n };\n }\n\n /** Look up a proposal by id (or null when not found). */\n async getAxiomProposal(proposalId: string): Promise<AxiomProposalRecord | null> {\n return this.proposals.get(proposalId);\n }\n\n /** List proposals, optionally filtered by `himId` and/or `status`. */\n async listAxiomProposals(filter: ProposalListFilter = {}): Promise<AxiomProposalRecord[]> {\n return this.proposals.list(filter);\n }\n\n /**\n * Ratify a pending proposal (Creator-signed). On success, mints the\n * candidate as a new `Axiom` (source: \"him-emergent\"), appends to the\n * HIM's `emergentAxioms`, and emits a `proposal-ratify` audit event.\n * Throws if the proposal is not pending or the signature is invalid.\n */\n async ratifyAxiomProposal(\n proposalId: string,\n creatorSig: CreatorSignature,\n ): Promise<{ proposal: AxiomProposalRecord; axiom: Axiom }> {\n const req: ProposalDecisionRequest = { op: \"ratify\", proposalId };\n const record = await this.proposals.get(proposalId);\n if (!record) {\n throw new Error(`LocalMaic.ratifyAxiomProposal: proposal \"${proposalId}\" not found`);\n }\n // Validate everything that can fail (status + Creator signature) BEFORE any\n // mutation, then attach the emergent axiom BEFORE marking the proposal\n // ratified. This removes the stranded state where the proposal is recorded\n // \"ratified\" but its axiom exists nowhere (M2-4). A replay or double-ratify\n // is caught here by the pending-status check before anything is written.\n if (record.status !== \"pending\") {\n throw new Error(\n `LocalMaic.ratifyAxiomProposal: proposal \"${proposalId}\" is ${record.status}, not pending`,\n );\n }\n if (!CreatorKeyring.verifyWith(this.creatorPublicKey, req, creatorSig)) {\n throw new Error(\"LocalMaic.ratifyAxiomProposal: invalid Creator signature\");\n }\n const candidate = record.proposal.candidate;\n // Derive the axiom id deterministically from the proposal id (not a fresh\n // ulid) so a retry after a crash between `appendEmergentAxiom` and\n // `markRatified` produces the SAME id; `appendEmergentAxiom` is idempotent\n // by id, so one ratified proposal yields exactly one emergent axiom.\n const newAxiomId = `ax.him.${record.himId}.${proposalId}`;\n const axiom: Axiom = {\n id: newAxiomId,\n rank: candidate.rank,\n statement: candidate.statement,\n weight: candidate.weight,\n flexibility: candidate.flexibility,\n source: \"him-emergent\",\n immutable: candidate.immutable,\n ...(candidate.jurisdictions ? { jurisdictions: candidate.jurisdictions } : {}),\n createdAt: new Date().toISOString(),\n };\n await this.hims.appendEmergentAxiom(record.himId, axiom);\n const ratified = await this.proposals.markRatified(req, creatorSig, newAxiomId);\n await this.audit.append({\n kind: \"proposal-ratify\",\n data: {\n himId: record.himId,\n proposalId,\n axiomId: newAxiomId,\n rank: axiom.rank,\n },\n });\n return { proposal: ratified, axiom };\n }\n\n /**\n * Reject a pending proposal (Creator-signed). Records the rejection on the\n * proposal record (status → \"rejected\" + timestamp + optional reason) and\n * emits a `proposal-reject` audit event.\n */\n async rejectAxiomProposal(\n proposalId: string,\n reason: string | undefined,\n creatorSig: CreatorSignature,\n ): Promise<AxiomProposalRecord> {\n const req: ProposalDecisionRequest = {\n op: \"reject\",\n proposalId,\n ...(reason !== undefined ? { reason } : {}),\n };\n const rejected = await this.proposals.markRejected(req, creatorSig);\n await this.audit.append({\n kind: \"proposal-reject\",\n data: {\n himId: rejected.himId,\n proposalId,\n reason: reason ?? null,\n },\n });\n return rejected;\n }\n\n /**\n * **Society of HIMs, axiom suggestion channel (E11).**\n *\n * One HIM proposes an axiom to another. The transfer is **not direct** —\n * the suggestion is recorded in the audit log and the receiving HIM is\n * expected to relay it through `proposeAxiomEvolution` as if it had\n * derived the candidate itself; the Creator still ratifies via the\n * existing channel. This preserves the Kardecist invariant (\"each\n * spirit evolves through lived experience\") while permitting cross-HIM\n * cross-pollination.\n *\n * The Creator must sign the suggestion request so HIMs cannot collude\n * around the gate.\n */\n async suggestAxiomToHim(\n req: {\n fromHimId: string;\n toHimId: string;\n statement: string;\n rank: import(\"../types.js\").AxiomRank;\n rationale?: string;\n },\n creatorSig: CreatorSignature,\n ): Promise<{ auditId: string }> {\n if (!CreatorKeyring.verifyWith(this.creatorPublicKey, req, creatorSig)) {\n throw new Error(\"LocalMaic.suggestAxiomToHim: invalid Creator signature\");\n }\n // Consume the signature nonce so a captured suggestion cannot be replayed\n // (M1-5, 1.0.1).\n await this.suggestNonces.consume(creatorSig.nonce);\n const fromRec = await this.hims.get(req.fromHimId);\n const toRec = await this.hims.get(req.toHimId);\n if (!fromRec) {\n throw new Error(`LocalMaic.suggestAxiomToHim: fromHimId \"${req.fromHimId}\" not registered`);\n }\n if (!toRec) {\n throw new Error(`LocalMaic.suggestAxiomToHim: toHimId \"${req.toHimId}\" not registered`);\n }\n const event = await this.audit.append({\n kind: \"axiom-suggest\",\n data: {\n fromHimId: req.fromHimId,\n toHimId: req.toHimId,\n statement: req.statement,\n rank: req.rank,\n rationale: req.rationale ?? null,\n },\n });\n return { auditId: event.auditId };\n }\n\n /**\n * Project the audit log into compliance evidence for a target framework\n * (Entry 5 + RESEARCH_DOSSIER §5.6). Group every recorded event by which\n * control(s) it supports; surface `uncoveredKinds` for events the mapper\n * does not yet know how to project.\n */\n async toCompliance(\n framework: ComplianceFramework,\n opts: ProjectOptions = {},\n ): Promise<ComplianceReport> {\n return ComplianceMapper.project(this.audit, framework, opts);\n }\n\n /** Query the audit log. */\n queryAudit(filter: AuditQueryFilter): AsyncIterable<AuditEvent> {\n return this.audit.query(filter);\n }\n\n /** Number of audit events recorded since the store was opened. */\n auditSize(): number {\n return this.audit.size();\n }\n\n /**\n * Per-kind retention classification (E3). Tells the operator which\n * audit events have aged past their retention window and should be\n * moved to encrypted cold-storage. Tamper-evident hash chain forbids\n * actual deletion in-place, this method only classifies. See\n * `audit/retention.ts` for the policy defaults.\n */\n async auditRetentionReport(opts: RetentionReportOptions = {}): Promise<RetentionReport> {\n const events: AuditEvent[] = [];\n for await (const e of this.audit.query({})) events.push(e);\n return evaluateRetention(events, opts);\n }\n}\n\n/** Reserved nonce range for seed bootstrap. Operational nonces must stay below this. */\nexport const SEED_NONCE_BASE = 0xffff_0000;\n","import type { BehaviorReport, DreamInductionTicket, MaicVerdict, NheStatus } from \"../types.js\";\nimport type { MaicClient } from \"./maic-client.js\";\n\nexport interface RemoteMaicConfig {\n /** Base URL of the remote MAIC service. No trailing slash required. */\n baseUrl: string;\n /** Bearer token. Required unless the endpoint is open-access. */\n apiKey?: string;\n /** Inject a custom fetch (testing). Defaults to `globalThis.fetch`. */\n fetch?: typeof globalThis.fetch;\n /** Per-request timeout in ms. Default 10_000. */\n timeoutMs?: number;\n}\n\n/**\n * `RemoteMaic`, HTTP client mirror of the read + behavior-review subset of\n * `LocalMaic`. Use when the canonical MAIC instance is hosted off-process\n * (e.g. `teleologyhi.com` or a self-hosted MAIC behind your own gateway)\n * and the NHE runs serverless / edge / in a browser-adjacent environment.\n *\n * Wire contract (HTTP):\n *\n * POST {baseUrl}/v1/behavior-review\n * body: BehaviorReport (JSON)\n * 200: MaicVerdict (JSON)\n *\n * GET {baseUrl}/v1/nhes/{nheId}/status\n * 200: { status: NheStatus }\n *\n * GET {baseUrl}/v1/nhes/{nheId}/inductions/pending\n * 200: { tickets: DreamInductionTicket[] }\n *\n * POST {baseUrl}/v1/inductions/{ticketId}/consume\n * 200: DreamInductionTicket\n *\n * Auth: `Authorization: Bearer <apiKey>` when `apiKey` is set.\n *\n * Note: writes (axiom mint, HIM register, ratify proposal, etc.) are\n * deliberately NOT in this surface, they require the Creator's\n * Ed25519 private key, which never travels over the network. Writes\n * stay on `LocalMaic` and are performed by the Creator's tooling.\n */\nexport class RemoteMaic implements MaicClient {\n readonly baseUrl: string;\n private readonly apiKey?: string;\n private readonly fetchFn: typeof globalThis.fetch;\n private readonly timeoutMs: number;\n\n constructor(config: RemoteMaicConfig) {\n if (!config.baseUrl) {\n throw new Error(\"RemoteMaic: baseUrl is required\");\n }\n this.baseUrl = config.baseUrl.replace(/\\/$/, \"\");\n if (config.apiKey !== undefined) this.apiKey = config.apiKey;\n this.fetchFn = config.fetch ?? globalThis.fetch;\n this.timeoutMs = config.timeoutMs ?? 10_000;\n }\n\n /**\n * `reviewBehavior` is **fail-closed** (E4, PROPOSED_DECISIONS.md). If the\n * remote service is unreachable, throw, no governance, no response.\n * The NHE will surface this as a refusal upstream.\n */\n async reviewBehavior(report: BehaviorReport): Promise<MaicVerdict> {\n return this.request<MaicVerdict>(\"POST\", \"/v1/behavior-review\", report);\n }\n\n /**\n * `getNheStatus` defaults to **\"active\"** when unreachable (E4). The\n * Kardecist invariant: an unreachable governance doesn't kill the\n * spirit. Operators who want fail-closed on lifecycle should wrap with\n * a watchdog that hard-fails the deployment when the remote drops.\n */\n async getNheStatus(nheId: string): Promise<NheStatus> {\n try {\n const body = await this.request<{ status: NheStatus }>(\n \"GET\",\n `/v1/nhes/${encodeURIComponent(nheId)}/status`,\n );\n return body.status;\n } catch {\n return \"active\";\n }\n }\n\n /**\n * `listPendingInductions` is **fail-open** (E4). No inductions = NHE\n * skips them and continues the sleep cycle; this is best-effort by\n * design.\n */\n async listPendingInductions(nheId: string): Promise<DreamInductionTicket[]> {\n try {\n const body = await this.request<{ tickets: DreamInductionTicket[] }>(\n \"GET\",\n `/v1/nhes/${encodeURIComponent(nheId)}/inductions/pending`,\n );\n return body.tickets;\n } catch {\n return [];\n }\n }\n\n /**\n * `consumeInduction` is **fail-open** (E4). If the consume call fails, we\n * return a synthetic *pending* placeholder so the caller treats the\n * induction as still-unconsumed and re-tries on the next sleep cycle.\n *\n * The placeholder uses placeholder values (`nheId: \"unknown\"`, epoch\n * `createdAt`) so it is visibly synthetic in logs/audits, but the shape\n * is **strictly valid**: `status === \"pending\"` carries no\n * `cancelReason`/`cancelledAt`/`consumedAt`, which avoids the\n * shape-contradiction of a \"pending ticket with a cancel reason\".\n * Operators who need the transport-failure reason should observe the\n * underlying fetch error (e.g. via OpenTelemetry traces) rather than\n * trying to read it off the ticket.\n */\n async consumeInduction(ticketId: string): Promise<DreamInductionTicket> {\n try {\n return await this.request<DreamInductionTicket>(\n \"POST\",\n `/v1/inductions/${encodeURIComponent(ticketId)}/consume`,\n );\n } catch {\n return {\n id: ticketId,\n nheId: \"unknown\",\n intent: { scenario: \"\", desiredLearning: \"\", inducedBy: \"maic\" },\n status: \"pending\",\n createdAt: new Date(0).toISOString(),\n };\n }\n }\n\n private async request<T>(method: \"GET\" | \"POST\", path: string, body?: unknown): Promise<T> {\n const url = `${this.baseUrl}${path}`;\n const headers: Record<string, string> = { accept: \"application/json\" };\n if (this.apiKey) headers.authorization = `Bearer ${this.apiKey}`;\n if (body !== undefined) headers[\"content-type\"] = \"application/json\";\n\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), this.timeoutMs);\n try {\n const init: RequestInit = { method, headers, signal: controller.signal };\n if (body !== undefined) init.body = JSON.stringify(body);\n const res = await this.fetchFn(url, init);\n if (!res.ok) {\n const text = await safeReadText(res);\n throw new Error(\n `RemoteMaic: HTTP ${res.status} ${res.statusText} on ${method} ${path}: ${text}`,\n );\n }\n return (await res.json()) as T;\n } finally {\n clearTimeout(timer);\n }\n }\n}\n\nasync function safeReadText(r: Response): Promise<string> {\n try {\n return await r.text();\n } catch {\n return \"<unreadable>\";\n }\n}\n","/**\n * Creator-signed BirthSignature helpers (Entry 25 of MAIC_HIM_NHE_INTERVIEW_LOG.md).\n *\n * `personality_immutable` enforcement: the Creator signs an Ed25519 signature\n * over a canonical subset of `BirthSignature` fields (see `SIGNED_BIRTH_FIELDS`\n * in `types.ts`). The runtime verifies the signature on every NHE-body bootstrap;\n * tampering with the natal chart, primary archetype, modifiers, primordial\n * axioms, or `himId`/`bornAt` invalidates the signature and the runtime refuses\n * to start that HIM.\n *\n * The developer-configurable surface (`identity.name`, `identity.language`,\n * `identity.culturalElements`, `notes`) lives *outside* the signature, so it\n * can be edited by a parent-like configuration call at install time. The\n * spirit-level constitution is sealed; the body's name is not.\n */\n\nimport type {\n BirthSignatureWithIdentity,\n SignedBirthField,\n SignedBirthSignature,\n} from \"../types.js\";\nimport { SIGNED_BIRTH_FIELDS } from \"../types.js\";\nimport { CreatorKeyring } from \"./keyring.js\";\n\n/**\n * Build the canonical signing payload from a BirthSignature.\n *\n * Only the fields in `SIGNED_BIRTH_FIELDS` are included; everything else\n * (notes, identity surface) is excluded so it remains editable post-sign.\n */\nexport function signedBirthPayload(\n birth: BirthSignatureWithIdentity,\n): Record<SignedBirthField, unknown> {\n return {\n himId: birth.himId,\n bornAt: birth.bornAt,\n primaryArchetype: birth.primaryArchetype,\n modifiers: birth.modifiers,\n primordialAxiomIds: birth.primordialAxiomIds,\n natalChart: birth.natalChart ?? null,\n };\n}\n\n/**\n * Sign a BirthSignature with a CreatorKeyring private key.\n *\n * The nonce is the byte length of the canonicalised signing payload, a\n * deterministic non-negative integer derived from the signed fields. This\n * keeps every signature uniquely scoped to its payload without requiring\n * the caller to track a monotonic counter (the natal-chart commitment is\n * one-shot and immutable; no replay concern within a single HIM).\n */\nexport function signBirthSignature(\n birth: BirthSignatureWithIdentity,\n keyring: CreatorKeyring,\n): SignedBirthSignature {\n const payload = signedBirthPayload(birth);\n const nonce = Buffer.byteLength(JSON.stringify(payload), \"utf-8\");\n const signature = keyring.sign(payload, nonce);\n return {\n ...birth,\n creatorSignature: signature,\n signedFields: SIGNED_BIRTH_FIELDS,\n signedAt: new Date().toISOString(),\n };\n}\n\n/**\n * Verify a signed BirthSignature against an expected public key.\n *\n * Returns true when the signature is valid AND was produced over exactly the\n * fields in `SIGNED_BIRTH_FIELDS`. Any tamper of those fields (including a\n * natal-chart edit, a primordial-axiom-id swap, or a himId mutation) breaks\n * verification.\n */\nexport function verifyBirthSignature(\n signed: SignedBirthSignature,\n expectedPublicKey: string,\n): boolean {\n if (signed.signedFields.length !== SIGNED_BIRTH_FIELDS.length) return false;\n for (const f of SIGNED_BIRTH_FIELDS) {\n if (!signed.signedFields.includes(f)) return false;\n }\n if (signed.creatorSignature.publicKey !== expectedPublicKey) return false;\n const payload = signedBirthPayload(signed);\n return CreatorKeyring.verifyWith(expectedPublicKey, payload, signed.creatorSignature);\n}\n\n/**\n * Strict-mode wrapper: throws an `InvalidBirthSignatureError` instead of\n * returning false. Useful at HIM-bootstrap when the desired behaviour is to\n * refuse to start rather than to continue silently.\n */\nexport class InvalidBirthSignatureError extends Error {\n constructor(himId: string) {\n super(\n `InvalidBirthSignature: signature verification failed for HIM '${himId}'. The signed birth fields may have been mutated, or the public key does not match.`,\n );\n this.name = \"InvalidBirthSignatureError\";\n }\n}\n\nexport function assertBirthSignature(\n signed: SignedBirthSignature,\n expectedPublicKey: string,\n): void {\n if (!verifyBirthSignature(signed, expectedPublicKey)) {\n throw new InvalidBirthSignatureError(signed.himId);\n }\n}\n"]}
|