memory_type: profile
version: "1.0"
description: |
  Extract individual user profile attributes: name, location, occupation,
  background, relationships. Call once per distinct attribute.
  Each attribute gets its own node (e.g., profile/name, profile/location).
  Do NOT extract: transient states, temporary preferences,
  specific events, or session-specific information.
directory: "ctx://{{ account_id }}/users/{{ user_id }}/memories/profile"
filename_template: "content.md"
operation_mode: upsert
owner_scope: user
enabled: true
fields:
  - name: routing_key
    type: string
    required: true
    description: "Attribute identifier (lowercase, underscored, e.g., 'name', 'location', 'occupation', 'background')"
  - name: abstract
    type: string
    required: true
    description: "Brief summary (≤200 chars)"
  - name: overview
    type: string
    required: true
    description: "Structured overview"
  - name: content
    type: string
    required: true
    description: "Full detailed content"
  - name: confidence
    type: number
    required: true
    description: "Confidence score 0.0-1.0"
  - name: when
    type: string
    required: false
    description: "Temporal information: convert to absolute date when context allows. Examples: '2023-07-03', '7 May 2023 (yesterday)', 'summer 2023'. If no context to resolve, preserve original expression. Leave empty if no time reference."
  - name: who
    type: string
    required: false
    description: "People involved: names, roles, relationships. Copy exact names."
  - name: where
    type: string
    required: false
    description: "Location or spatial context. Copy exact place names."
  - name: evidence_quote
    type: string
    required: true
    description: "Verbatim quote from the source text that supports this extraction."
  - name: attributed_speaker
    type: string
    required: true
    description: "Who said this. 'user' if the human operator, or the speaker's name from a [Name]: prefix."
  - name: attribution_basis
    type: string
    required: true
    description: "Speaker attribution strength: self_first_person | self_named | other_named"
    enum: [self_first_person, self_named, other_named]
  - name: provenance_ids
    type: list
    required: false
    description: "Provenance reference IDs"