{
  "$comment": "Multimem schema: the canonical bundle ensure bodies. Every harness POSTs these verbatim to /v1/spaces/:spaceId/bundles (adopt-or-install, idempotent). Property ids derive from (rootId, xKey), so every installer lands on the same ids. The bundle ids and xKeys keep their original mp.* / mp_* spelling on purpose: they are the identity an existing space converges on, and renaming them would make a second schema appear beside the first. Never edit a shipped xKey, kind or dataset field in place: add a new property or a new bundle version instead. `presets` hold the install-time area vocabularies (`work` is the default, `life` fits a personal space; chosen with `ensure --preset` or `areas_preset` in the config); a space extends its areas later through `multimem.py area add` (additive options on the live property). `packs` are optional bundle sets ensured on top of the core with `ensure --pack <name>`; their ids are new (`mm.*`), and `extends` lists properties a pack adds to core roots (additive, applied on adopt as well as on install).",
  "version": 1,
  "space": {
    "name": "Multimem",
    "description": "Shared memory for AI agent sessions: sessions, decisions, learnings, tasks and telemetry."
  },
  "usecases": [
    "general-chat",
    "collections"
  ],
  "bundles": [
    {
      "id": "mp.session/v1",
      "name": "Session",
      "xKey": "mp_session",
      "layout": {
        "type": "page"
      },
      "properties": [
        {
          "xKey": "harness",
          "name": "Harness",
          "kind": "array",
          "description": "Which agent harness ran the session",
          "xFormat": {
            "type": "choice",
            "pos": "a0",
            "config": {
              "multiple": false
            },
            "options": {
              "claude_code": {
                "name": "Claude Code",
                "color": "orange",
                "pos": "a0"
              },
              "codex": {
                "name": "Codex",
                "color": "green",
                "pos": "a1"
              },
              "cursor": {
                "name": "Cursor",
                "color": "blue",
                "pos": "a2"
              },
              "gemini": {
                "name": "Gemini CLI",
                "color": "purple",
                "pos": "a3"
              },
              "aider": {
                "name": "Aider",
                "color": "teal",
                "pos": "a4"
              },
              "hermes": {
                "name": "Hermes",
                "color": "yellow",
                "pos": "a5"
              },
              "openclaw": {
                "name": "OpenClaw",
                "color": "red",
                "pos": "a6"
              },
              "opencode": {
                "name": "OpenCode",
                "color": "pink",
                "pos": "a7"
              },
              "human": {
                "name": "Human",
                "color": "grey",
                "pos": "a8"
              },
              "other": {
                "name": "Other",
                "color": "grey",
                "pos": "a9"
              }
            }
          }
        },
        {
          "xKey": "model",
          "name": "Model",
          "kind": "string",
          "description": "Model id the harness ran, e.g. claude-fable-5-1",
          "xFormat": {
            "type": "text",
            "pos": "a1"
          }
        },
        {
          "xKey": "sessionKey",
          "name": "Session key",
          "kind": "string",
          "description": "The harness's own session id. The idempotency handle: one session object per key.",
          "meta": {
            "index": "none"
          },
          "xFormat": {
            "type": "text",
            "pos": "a2"
          }
        },
        {
          "xKey": "status",
          "name": "Status",
          "kind": "array",
          "xFormat": {
            "type": "choice",
            "pos": "a3",
            "config": {
              "multiple": false
            },
            "options": {
              "active": {
                "name": "Active",
                "color": "green",
                "pos": "a0"
              },
              "done": {
                "name": "Done",
                "color": "blue",
                "pos": "a1"
              },
              "blocked": {
                "name": "Blocked",
                "color": "red",
                "pos": "a2"
              },
              "abandoned": {
                "name": "Abandoned",
                "color": "grey",
                "pos": "a3"
              }
            }
          }
        },
        {
          "xKey": "goal",
          "name": "Goal",
          "kind": "string",
          "description": "What the session set out to do, one or two sentences",
          "xFormat": {
            "type": "longtext",
            "pos": "a4"
          }
        },
        {
          "xKey": "outcome",
          "name": "Outcome",
          "kind": "string",
          "description": "What actually happened, written at the end",
          "xFormat": {
            "type": "longtext",
            "pos": "a5"
          }
        },
        {
          "xKey": "repo",
          "name": "Repo",
          "kind": "string",
          "description": "owner/name of the repository worked on",
          "xFormat": {
            "type": "text",
            "pos": "a6"
          }
        },
        {
          "xKey": "branch",
          "name": "Branch",
          "kind": "string",
          "xFormat": {
            "type": "text",
            "pos": "a7"
          }
        },
        {
          "xKey": "pr",
          "name": "PR",
          "kind": "string",
          "xFormat": {
            "type": "url",
            "pos": "a8"
          }
        },
        {
          "xKey": "ticket",
          "name": "Ticket",
          "kind": "string",
          "description": "Tracker reference, e.g. a Linear id",
          "xFormat": {
            "type": "text",
            "pos": "a9"
          }
        },
        {
          "xKey": "startedAt",
          "name": "Started at",
          "kind": "datetime",
          "xFormat": {
            "type": "datetime",
            "pos": "b0"
          }
        },
        {
          "xKey": "endedAt",
          "name": "Ended at",
          "kind": "datetime",
          "xFormat": {
            "type": "datetime",
            "pos": "b1"
          }
        },
        {
          "xKey": "durationMin",
          "name": "Duration (min)",
          "kind": "number",
          "xFormat": {
            "type": "number",
            "pos": "b2",
            "config": {
              "decimals": 0
            }
          }
        },
        {
          "xKey": "tokensIn",
          "name": "Tokens in",
          "kind": "number",
          "xFormat": {
            "type": "number",
            "pos": "b3",
            "config": {
              "decimals": 0
            }
          }
        },
        {
          "xKey": "tokensOut",
          "name": "Tokens out",
          "kind": "number",
          "xFormat": {
            "type": "number",
            "pos": "b4",
            "config": {
              "decimals": 0
            }
          }
        },
        {
          "xKey": "costUsd",
          "name": "Cost (USD)",
          "kind": "number",
          "xFormat": {
            "type": "currency",
            "pos": "b5",
            "config": {
              "currency": "USD",
              "decimals": 2
            }
          }
        },
        {
          "xKey": "toolCalls",
          "name": "Tool calls",
          "kind": "number",
          "xFormat": {
            "type": "number",
            "pos": "b6",
            "config": {
              "decimals": 0
            }
          }
        },
        {
          "xKey": "tags",
          "name": "Tags",
          "kind": "array",
          "xFormat": {
            "type": "choice",
            "pos": "b7",
            "config": {
              "multiple": true
            },
            "options": {}
          }
        }
      ],
      "parts": [
        {
          "key": "body",
          "name": "Notes",
          "pos": "a0",
          "ui": {
            "type": "document"
          },
          "datasets": [
            {
              "module": "editor"
            }
          ]
        },
        {
          "key": "events",
          "name": "Events",
          "pos": "a1",
          "ui": {
            "type": "table"
          },
          "datasets": [
            {
              "key": "events",
              "displayName": "Events",
              "description": "Telemetry samples and milestones of one session, one record each. Shared: readable across sessions through /datasets/query.",
              "idRule": "user",
              "dynamic": true,
              "shared": true,
              "skipHistory": true,
              "search": {
                "text": [
                  "name",
                  "text"
                ],
                "scope": "events"
              },
              "fields": [
                {
                  "key": "at",
                  "name": "At",
                  "kind": "datetime",
                  "required": true,
                  "mutableBy": "any",
                  "description": "When it happened",
                  "xFormat": {
                    "type": "datetime"
                  }
                },
                {
                  "key": "kind",
                  "name": "Kind",
                  "kind": "string",
                  "required": true,
                  "mutableBy": "any",
                  "description": "metric | milestone | tool | test | build | error | note | decision | learning | task | goal | commitment | idea | journal | pr"
                },
                {
                  "key": "name",
                  "name": "Name",
                  "kind": "string",
                  "mutableBy": "any",
                  "description": "Dotted name: tokens.in, test.run, pr.opened, session.start"
                },
                {
                  "key": "value",
                  "name": "Value",
                  "kind": "number",
                  "mutableBy": "any",
                  "xFormat": {
                    "type": "number"
                  }
                },
                {
                  "key": "unit",
                  "name": "Unit",
                  "kind": "string",
                  "mutableBy": "any",
                  "description": "tokens | usd | ms | s | min | count | bytes"
                },
                {
                  "key": "text",
                  "name": "Text",
                  "kind": "string",
                  "mutableBy": "any",
                  "description": "Human-readable line; may carry any:// links",
                  "xFormat": {
                    "type": "markdown"
                  }
                },
                {
                  "key": "ref",
                  "name": "Ref",
                  "kind": "string",
                  "mutableBy": "any",
                  "description": "One any:// link (indexed as a backlink) or a URL",
                  "xFormat": {
                    "links": "link"
                  }
                },
                {
                  "key": "data",
                  "name": "Data",
                  "kind": "object",
                  "mutableBy": "any",
                  "description": "Free-form structured payload"
                },
                {
                  "key": "creator",
                  "name": "Creator",
                  "stamp": "creator"
                },
                {
                  "key": "createdAt",
                  "name": "Created at",
                  "stamp": "createTime"
                },
                {
                  "key": "modifiedAt",
                  "name": "Modified at",
                  "stamp": "modifyTime"
                }
              ],
              "indexes": [
                {
                  "key": "by_at",
                  "fields": [
                    "at"
                  ]
                },
                {
                  "key": "by_kind_at",
                  "fields": [
                    "kind",
                    "at"
                  ]
                },
                {
                  "key": "by_name_at",
                  "fields": [
                    "name",
                    "at"
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "id": "mp.decision/v1",
      "name": "Decisions",
      "xKey": "mp_decision",
      "collection": true,
      "meta": {
        "defaultType": "page"
      },
      "properties": [
        {
          "xKey": "status",
          "name": "Status",
          "kind": "array",
          "xFormat": {
            "type": "choice",
            "pos": "a0",
            "config": {
              "multiple": false
            },
            "options": {
              "proposed": {
                "name": "Proposed",
                "color": "yellow",
                "pos": "a0"
              },
              "accepted": {
                "name": "Accepted",
                "color": "green",
                "pos": "a1"
              },
              "superseded": {
                "name": "Superseded",
                "color": "grey",
                "pos": "a2"
              },
              "rejected": {
                "name": "Rejected",
                "color": "red",
                "pos": "a3"
              }
            }
          }
        },
        {
          "xKey": "area",
          "name": "Area",
          "kind": "array",
          "xFormat": {
            "type": "choice",
            "pos": "a1",
            "config": {
              "multiple": true
            },
            "options": "$areas"
          }
        },
        {
          "xKey": "decidedAt",
          "name": "Decided on",
          "kind": "datetime",
          "xFormat": {
            "type": "date",
            "pos": "a2"
          }
        },
        {
          "xKey": "session",
          "name": "Session",
          "kind": "array",
          "description": "The session that made the decision",
          "xFormat": {
            "type": "relation",
            "pos": "a3",
            "config": {
              "multiple": false
            },
            "relation": {
              "targetTypes": [
                "mp_session"
              ]
            }
          }
        },
        {
          "xKey": "supersedes",
          "name": "Supersedes",
          "kind": "array",
          "xFormat": {
            "type": "relation",
            "pos": "a4",
            "config": {
              "multiple": true
            },
            "relation": {
              "targetTypes": [
                "mp_decision"
              ]
            }
          }
        },
        {
          "xKey": "ref",
          "name": "Ref",
          "kind": "string",
          "description": "PR, issue or doc URL",
          "xFormat": {
            "type": "url",
            "pos": "a5"
          }
        },
        {
          "xKey": "repo",
          "name": "Repo",
          "kind": "string",
          "xFormat": {
            "type": "text",
            "pos": "a6"
          }
        },
        {
          "xKey": "key",
          "name": "Key",
          "kind": "string",
          "description": "Optional stable slug; writers that hold a key update instead of duplicating",
          "meta": {
            "index": "none"
          },
          "xFormat": {
            "type": "text",
            "pos": "a7"
          }
        },
        {
          "xKey": "tags",
          "name": "Tags",
          "kind": "array",
          "xFormat": {
            "type": "choice",
            "pos": "a8",
            "config": {
              "multiple": true
            },
            "options": {}
          }
        }
      ]
    },
    {
      "id": "mp.learning/v1",
      "name": "Learnings",
      "xKey": "mp_learning",
      "collection": true,
      "meta": {
        "defaultType": "page"
      },
      "properties": [
        {
          "xKey": "kind",
          "name": "Kind",
          "kind": "array",
          "xFormat": {
            "type": "choice",
            "pos": "a0",
            "config": {
              "multiple": false
            },
            "options": {
              "trap": {
                "name": "Trap",
                "color": "red",
                "pos": "a0"
              },
              "pattern": {
                "name": "Pattern",
                "color": "blue",
                "pos": "a1"
              },
              "howto": {
                "name": "How-to",
                "color": "green",
                "pos": "a2"
              },
              "fact": {
                "name": "Fact",
                "color": "grey",
                "pos": "a3"
              },
              "tool": {
                "name": "Tool",
                "color": "teal",
                "pos": "a4"
              },
              "preference": {
                "name": "Preference",
                "color": "purple",
                "pos": "a5"
              }
            }
          }
        },
        {
          "xKey": "area",
          "name": "Area",
          "kind": "array",
          "xFormat": {
            "type": "choice",
            "pos": "a1",
            "config": {
              "multiple": true
            },
            "options": "$areas"
          }
        },
        {
          "xKey": "confidence",
          "name": "Confidence",
          "kind": "array",
          "xFormat": {
            "type": "choice",
            "pos": "a2",
            "config": {
              "multiple": false
            },
            "options": {
              "high": {
                "name": "High",
                "color": "green",
                "pos": "a0"
              },
              "medium": {
                "name": "Medium",
                "color": "yellow",
                "pos": "a1"
              },
              "low": {
                "name": "Low",
                "color": "red",
                "pos": "a2"
              }
            }
          }
        },
        {
          "xKey": "stale",
          "name": "Stale",
          "kind": "boolean",
          "description": "Tick when the note no longer holds; never delete a learning",
          "xFormat": {
            "type": "checkbox",
            "pos": "a3"
          }
        },
        {
          "xKey": "verifiedAt",
          "name": "Verified on",
          "kind": "datetime",
          "xFormat": {
            "type": "date",
            "pos": "a4"
          }
        },
        {
          "xKey": "session",
          "name": "Session",
          "kind": "array",
          "xFormat": {
            "type": "relation",
            "pos": "a5",
            "config": {
              "multiple": false
            },
            "relation": {
              "targetTypes": [
                "mp_session"
              ]
            }
          }
        },
        {
          "xKey": "ref",
          "name": "Ref",
          "kind": "string",
          "xFormat": {
            "type": "url",
            "pos": "a6"
          }
        },
        {
          "xKey": "repo",
          "name": "Repo",
          "kind": "string",
          "xFormat": {
            "type": "text",
            "pos": "a7"
          }
        },
        {
          "xKey": "key",
          "name": "Key",
          "kind": "string",
          "meta": {
            "index": "none"
          },
          "xFormat": {
            "type": "text",
            "pos": "a8"
          }
        },
        {
          "xKey": "tags",
          "name": "Tags",
          "kind": "array",
          "xFormat": {
            "type": "choice",
            "pos": "a9",
            "config": {
              "multiple": true
            },
            "options": {}
          }
        }
      ]
    },
    {
      "id": "mp.task/v1",
      "name": "Tasks",
      "xKey": "mp_task",
      "collection": true,
      "meta": {
        "defaultType": "page"
      },
      "properties": [
        {
          "xKey": "status",
          "name": "Status",
          "kind": "array",
          "xFormat": {
            "type": "choice",
            "pos": "a0",
            "config": {
              "multiple": false
            },
            "options": {
              "open": {
                "name": "Open",
                "color": "blue",
                "pos": "a0"
              },
              "in_progress": {
                "name": "In progress",
                "color": "yellow",
                "pos": "a1"
              },
              "blocked": {
                "name": "Blocked",
                "color": "red",
                "pos": "a2"
              },
              "done": {
                "name": "Done",
                "color": "green",
                "pos": "a3"
              },
              "dropped": {
                "name": "Dropped",
                "color": "grey",
                "pos": "a4"
              }
            }
          }
        },
        {
          "xKey": "priority",
          "name": "Priority",
          "kind": "array",
          "xFormat": {
            "type": "choice",
            "pos": "a1",
            "config": {
              "multiple": false
            },
            "options": {
              "p0": {
                "name": "P0 urgent",
                "color": "red",
                "pos": "a0"
              },
              "p1": {
                "name": "P1 high",
                "color": "orange",
                "pos": "a1"
              },
              "p2": {
                "name": "P2 normal",
                "color": "blue",
                "pos": "a2"
              },
              "p3": {
                "name": "P3 low",
                "color": "grey",
                "pos": "a3"
              }
            }
          }
        },
        {
          "xKey": "area",
          "name": "Area",
          "kind": "array",
          "xFormat": {
            "type": "choice",
            "pos": "a2",
            "config": {
              "multiple": true
            },
            "options": "$areas"
          }
        },
        {
          "xKey": "owner",
          "name": "Owner",
          "kind": "string",
          "description": "Who holds it: a harness name, a person, or empty",
          "xFormat": {
            "type": "text",
            "pos": "a3"
          }
        },
        {
          "xKey": "dueAt",
          "name": "Due",
          "kind": "datetime",
          "xFormat": {
            "type": "date",
            "pos": "a4"
          }
        },
        {
          "xKey": "session",
          "name": "Session",
          "kind": "array",
          "description": "The session that opened it",
          "xFormat": {
            "type": "relation",
            "pos": "a5",
            "config": {
              "multiple": false
            },
            "relation": {
              "targetTypes": [
                "mp_session"
              ]
            }
          }
        },
        {
          "xKey": "ref",
          "name": "Ref",
          "kind": "string",
          "xFormat": {
            "type": "url",
            "pos": "a6"
          }
        },
        {
          "xKey": "repo",
          "name": "Repo",
          "kind": "string",
          "xFormat": {
            "type": "text",
            "pos": "a7"
          }
        },
        {
          "xKey": "key",
          "name": "Key",
          "kind": "string",
          "meta": {
            "index": "none"
          },
          "xFormat": {
            "type": "text",
            "pos": "a8"
          }
        },
        {
          "xKey": "tags",
          "name": "Tags",
          "kind": "array",
          "xFormat": {
            "type": "choice",
            "pos": "a9",
            "config": {
              "multiple": true
            },
            "options": {}
          }
        }
      ]
    },
    {
      "id": "mp.handbook/v1",
      "name": "Multimem handbook",
      "rootType": "page",
      "rootCollections": [
        "miniapp"
      ],
      "rootProperties": {
        "miniapp": {
          "pos": "a0"
        }
      }
    }
  ],
  "presets": {
    "work": {
      "backend": {
        "name": "Backend",
        "color": "blue",
        "pos": "a0"
      },
      "frontend": {
        "name": "Frontend",
        "color": "pink",
        "pos": "a1"
      },
      "data": {
        "name": "Data",
        "color": "purple",
        "pos": "a2"
      },
      "infra": {
        "name": "Infra",
        "color": "orange",
        "pos": "a3"
      },
      "ci": {
        "name": "CI",
        "color": "red",
        "pos": "a4"
      },
      "docs": {
        "name": "Docs",
        "color": "grey",
        "pos": "a5"
      },
      "design": {
        "name": "Design",
        "color": "teal",
        "pos": "a6"
      },
      "product": {
        "name": "Product",
        "color": "yellow",
        "pos": "a7"
      },
      "research": {
        "name": "Research",
        "color": "green",
        "pos": "a8"
      },
      "process": {
        "name": "Process",
        "color": "grey",
        "pos": "a9"
      },
      "tooling": {
        "name": "Tooling",
        "color": "grey",
        "pos": "b0"
      },
      "other": {
        "name": "Other",
        "color": "grey",
        "pos": "b1"
      }
    },
    "life": {
      "health": {
        "name": "Health",
        "color": "green",
        "pos": "a0"
      },
      "money": {
        "name": "Money",
        "color": "blue",
        "pos": "a1"
      },
      "family": {
        "name": "Family",
        "color": "pink",
        "pos": "a2"
      },
      "home": {
        "name": "Home",
        "color": "orange",
        "pos": "a3"
      },
      "work": {
        "name": "Work",
        "color": "purple",
        "pos": "a4"
      },
      "travel": {
        "name": "Travel",
        "color": "teal",
        "pos": "a5"
      },
      "learning": {
        "name": "Learning",
        "color": "yellow",
        "pos": "a6"
      },
      "admin": {
        "name": "Admin",
        "color": "grey",
        "pos": "a7"
      },
      "leisure": {
        "name": "Leisure",
        "color": "red",
        "pos": "a8"
      },
      "other": {
        "name": "Other",
        "color": "grey",
        "pos": "a9"
      }
    }
  },
  "packs": {
    "brain": {
      "description": "A personal assistant's memory: a read-first profile page, goals, commitments, an idea inbox and a journal, on top of the core kinds.",
      "areas_preset": "life",
      "bundles": [
        {
          "id": "mm.profile/v1",
          "name": "About me",
          "rootType": "page",
          "rootCollections": [
            "miniapp"
          ],
          "rootProperties": {
            "miniapp": {
              "pos": "a1"
            }
          }
        },
        {
          "id": "mm.goal/v1",
          "name": "Goals",
          "xKey": "mm_goal",
          "collection": true,
          "meta": {
            "defaultType": "page"
          },
          "properties": [
            {
              "xKey": "status",
              "name": "Status",
              "kind": "array",
              "xFormat": {
                "type": "choice",
                "pos": "a0",
                "config": {
                  "multiple": false
                },
                "options": {
                  "active": {
                    "name": "Active",
                    "color": "green",
                    "pos": "a0"
                  },
                  "paused": {
                    "name": "Paused",
                    "color": "yellow",
                    "pos": "a1"
                  },
                  "reached": {
                    "name": "Reached",
                    "color": "blue",
                    "pos": "a2"
                  },
                  "dropped": {
                    "name": "Dropped",
                    "color": "grey",
                    "pos": "a3"
                  }
                }
              }
            },
            {
              "xKey": "horizon",
              "name": "Horizon",
              "kind": "array",
              "xFormat": {
                "type": "choice",
                "pos": "a1",
                "config": {
                  "multiple": false
                },
                "options": {
                  "week": {
                    "name": "This week",
                    "color": "teal",
                    "pos": "a0"
                  },
                  "month": {
                    "name": "This month",
                    "color": "blue",
                    "pos": "a1"
                  },
                  "quarter": {
                    "name": "This quarter",
                    "color": "purple",
                    "pos": "a2"
                  },
                  "year": {
                    "name": "This year",
                    "color": "orange",
                    "pos": "a3"
                  },
                  "life": {
                    "name": "Life",
                    "color": "pink",
                    "pos": "a4"
                  }
                }
              },
              "description": "How far out the goal lives"
            },
            {
              "xKey": "why",
              "name": "Why",
              "kind": "string",
              "description": "One line: what it is in service of",
              "xFormat": {
                "type": "text",
                "pos": "a2"
              }
            },
            {
              "xKey": "measure",
              "name": "Measure",
              "kind": "string",
              "description": "How the user will know it is reached",
              "xFormat": {
                "type": "text",
                "pos": "a3"
              }
            },
            {
              "xKey": "dueAt",
              "name": "Due",
              "kind": "datetime",
              "xFormat": {
                "type": "date",
                "pos": "a4"
              }
            },
            {
              "xKey": "area",
              "name": "Area",
              "kind": "array",
              "xFormat": {
                "type": "choice",
                "pos": "a5",
                "config": {
                  "multiple": true
                },
                "options": "$areas"
              }
            },
            {
              "xKey": "session",
              "name": "Session",
              "kind": "array",
              "description": "The session that wrote it",
              "xFormat": {
                "type": "relation",
                "pos": "a6",
                "config": {
                  "multiple": false
                },
                "relation": {
                  "targetTypes": [
                    "mp_session"
                  ]
                }
              }
            },
            {
              "xKey": "ref",
              "name": "Ref",
              "kind": "string",
              "description": "A link: doc, mail, page",
              "xFormat": {
                "type": "url",
                "pos": "a7"
              }
            },
            {
              "xKey": "key",
              "name": "Key",
              "kind": "string",
              "description": "Optional stable slug; writers that hold a key update instead of duplicating",
              "meta": {
                "index": "none"
              },
              "xFormat": {
                "type": "text",
                "pos": "a8"
              }
            },
            {
              "xKey": "tags",
              "name": "Tags",
              "kind": "array",
              "xFormat": {
                "type": "choice",
                "pos": "a9",
                "config": {
                  "multiple": true
                },
                "options": {}
              }
            }
          ]
        },
        {
          "id": "mm.commitment/v1",
          "name": "Commitments",
          "xKey": "mm_commitment",
          "collection": true,
          "meta": {
            "defaultType": "page"
          },
          "properties": [
            {
              "xKey": "status",
              "name": "Status",
              "kind": "array",
              "xFormat": {
                "type": "choice",
                "pos": "a0",
                "config": {
                  "multiple": false
                },
                "options": {
                  "open": {
                    "name": "Open",
                    "color": "blue",
                    "pos": "a0"
                  },
                  "kept": {
                    "name": "Kept",
                    "color": "green",
                    "pos": "a1"
                  },
                  "broken": {
                    "name": "Broken",
                    "color": "red",
                    "pos": "a2"
                  },
                  "released": {
                    "name": "Released",
                    "color": "grey",
                    "pos": "a3"
                  }
                }
              }
            },
            {
              "xKey": "from",
              "name": "From",
              "kind": "string",
              "description": "Who promised (me, or a name)",
              "xFormat": {
                "type": "text",
                "pos": "a1"
              }
            },
            {
              "xKey": "to",
              "name": "To",
              "kind": "string",
              "description": "Whom it was promised to (me, or a name)",
              "xFormat": {
                "type": "text",
                "pos": "a2"
              }
            },
            {
              "xKey": "party",
              "name": "Party",
              "kind": "array",
              "description": "The other side as an object, e.g. a Contacts person",
              "xFormat": {
                "type": "relation",
                "pos": "a3",
                "config": {
                  "multiple": false
                }
              }
            },
            {
              "xKey": "dueAt",
              "name": "Due",
              "kind": "datetime",
              "xFormat": {
                "type": "date",
                "pos": "a4"
              }
            },
            {
              "xKey": "source",
              "name": "Source",
              "kind": "string",
              "description": "Where it was made: a mail, a chat message, a meeting",
              "xFormat": {
                "type": "url",
                "pos": "a5"
              }
            },
            {
              "xKey": "area",
              "name": "Area",
              "kind": "array",
              "xFormat": {
                "type": "choice",
                "pos": "a6",
                "config": {
                  "multiple": true
                },
                "options": "$areas"
              }
            },
            {
              "xKey": "session",
              "name": "Session",
              "kind": "array",
              "description": "The session that wrote it",
              "xFormat": {
                "type": "relation",
                "pos": "a7",
                "config": {
                  "multiple": false
                },
                "relation": {
                  "targetTypes": [
                    "mp_session"
                  ]
                }
              }
            },
            {
              "xKey": "key",
              "name": "Key",
              "kind": "string",
              "description": "Optional stable slug; writers that hold a key update instead of duplicating",
              "meta": {
                "index": "none"
              },
              "xFormat": {
                "type": "text",
                "pos": "a8"
              }
            },
            {
              "xKey": "tags",
              "name": "Tags",
              "kind": "array",
              "xFormat": {
                "type": "choice",
                "pos": "a9",
                "config": {
                  "multiple": true
                },
                "options": {}
              }
            }
          ]
        },
        {
          "id": "mm.idea/v1",
          "name": "Ideas",
          "xKey": "mm_idea",
          "collection": true,
          "meta": {
            "defaultType": "page"
          },
          "properties": [
            {
              "xKey": "status",
              "name": "Status",
              "kind": "array",
              "xFormat": {
                "type": "choice",
                "pos": "a0",
                "config": {
                  "multiple": false
                },
                "options": {
                  "raw": {
                    "name": "Raw",
                    "color": "grey",
                    "pos": "a0"
                  },
                  "explored": {
                    "name": "Explored",
                    "color": "blue",
                    "pos": "a1"
                  },
                  "parked": {
                    "name": "Parked",
                    "color": "yellow",
                    "pos": "a2"
                  },
                  "adopted": {
                    "name": "Adopted",
                    "color": "green",
                    "pos": "a3"
                  },
                  "dropped": {
                    "name": "Dropped",
                    "color": "red",
                    "pos": "a4"
                  }
                }
              }
            },
            {
              "xKey": "goal",
              "name": "Goal",
              "kind": "array",
              "description": "The goal it serves",
              "xFormat": {
                "type": "relation",
                "pos": "a1",
                "config": {
                  "multiple": false
                },
                "relation": {
                  "targetTypes": [
                    "mm_goal"
                  ]
                }
              }
            },
            {
              "xKey": "area",
              "name": "Area",
              "kind": "array",
              "xFormat": {
                "type": "choice",
                "pos": "a2",
                "config": {
                  "multiple": true
                },
                "options": "$areas"
              }
            },
            {
              "xKey": "session",
              "name": "Session",
              "kind": "array",
              "description": "The session that wrote it",
              "xFormat": {
                "type": "relation",
                "pos": "a3",
                "config": {
                  "multiple": false
                },
                "relation": {
                  "targetTypes": [
                    "mp_session"
                  ]
                }
              }
            },
            {
              "xKey": "ref",
              "name": "Ref",
              "kind": "string",
              "description": "A link: doc, mail, page",
              "xFormat": {
                "type": "url",
                "pos": "a4"
              }
            },
            {
              "xKey": "key",
              "name": "Key",
              "kind": "string",
              "description": "Optional stable slug; writers that hold a key update instead of duplicating",
              "meta": {
                "index": "none"
              },
              "xFormat": {
                "type": "text",
                "pos": "a5"
              }
            },
            {
              "xKey": "tags",
              "name": "Tags",
              "kind": "array",
              "xFormat": {
                "type": "choice",
                "pos": "a6",
                "config": {
                  "multiple": true
                },
                "options": {}
              }
            }
          ]
        },
        {
          "id": "mm.journal/v1",
          "name": "Journal",
          "xKey": "mm_journal",
          "collection": true,
          "meta": {
            "defaultType": "page"
          },
          "properties": [
            {
              "xKey": "on",
              "name": "On",
              "kind": "datetime",
              "description": "The day the entry is about",
              "xFormat": {
                "type": "date",
                "pos": "a0"
              }
            },
            {
              "xKey": "mood",
              "name": "Mood",
              "kind": "string",
              "description": "A word or two, if the user wants it kept",
              "xFormat": {
                "type": "text",
                "pos": "a1"
              }
            },
            {
              "xKey": "area",
              "name": "Area",
              "kind": "array",
              "xFormat": {
                "type": "choice",
                "pos": "a2",
                "config": {
                  "multiple": true
                },
                "options": "$areas"
              }
            },
            {
              "xKey": "session",
              "name": "Session",
              "kind": "array",
              "description": "The session that wrote it",
              "xFormat": {
                "type": "relation",
                "pos": "a3",
                "config": {
                  "multiple": false
                },
                "relation": {
                  "targetTypes": [
                    "mp_session"
                  ]
                }
              }
            },
            {
              "xKey": "ref",
              "name": "Ref",
              "kind": "string",
              "description": "A link: doc, mail, page",
              "xFormat": {
                "type": "url",
                "pos": "a4"
              }
            },
            {
              "xKey": "key",
              "name": "Key",
              "kind": "string",
              "description": "Optional stable slug; writers that hold a key update instead of duplicating",
              "meta": {
                "index": "none"
              },
              "xFormat": {
                "type": "text",
                "pos": "a5"
              }
            },
            {
              "xKey": "tags",
              "name": "Tags",
              "kind": "array",
              "xFormat": {
                "type": "choice",
                "pos": "a6",
                "config": {
                  "multiple": true
                },
                "options": {}
              }
            }
          ]
        }
      ],
      "extends": {
        "mp.learning/v1": [
          {
            "xKey": "about",
            "name": "About",
            "kind": "array",
            "description": "The object this fact is about: a person, a project, a place",
            "xFormat": {
              "type": "relation",
              "pos": "b0",
              "config": {
                "multiple": false
              }
            }
          }
        ],
        "mp.task/v1": [
          {
            "xKey": "goal",
            "name": "Goal",
            "kind": "array",
            "description": "The goal this task serves",
            "xFormat": {
              "type": "relation",
              "pos": "b0",
              "config": {
                "multiple": false
              },
              "relation": {
                "targetTypes": [
                  "mm_goal"
                ]
              }
            }
          }
        ]
      }
    }
  }
}
