181 lines
3.8 KiB
Plaintext
181 lines
3.8 KiB
Plaintext
# Document Frontmatter Schema
|
|
#
|
|
# Schema for YAML frontmatter in knowledge base documents.
|
|
# This frontmatter is embedded in markdown files and parsed by kogral-core.
|
|
#
|
|
# Format:
|
|
# ---
|
|
# <frontmatter fields>
|
|
# ---
|
|
#
|
|
# <markdown content>
|
|
|
|
let Types = import "types.ncl" in
|
|
|
|
{
|
|
# Frontmatter for knowledge base documents
|
|
Frontmatter = {
|
|
id
|
|
| String
|
|
| doc "Unique identifier (UUID)",
|
|
|
|
type
|
|
| Types.NodeType
|
|
| doc "Node type (note, decision, guideline, etc.)",
|
|
|
|
title
|
|
| String
|
|
| doc "Human-readable title",
|
|
|
|
created
|
|
| Types.Timestamp
|
|
| doc "Creation timestamp (ISO 8601)",
|
|
|
|
modified
|
|
| Types.Timestamp
|
|
| doc "Last modification timestamp (ISO 8601)",
|
|
|
|
tags
|
|
| Array String
|
|
| doc "Tags for categorization"
|
|
| default = [],
|
|
|
|
status
|
|
| Types.NodeStatus
|
|
| doc "Current status (draft, active, etc.)"
|
|
| default = 'draft,
|
|
|
|
# Relationship fields (compatible with Logseq [[wikilinks]])
|
|
relates_to
|
|
| Array String
|
|
| doc "Related node IDs"
|
|
| default = [],
|
|
|
|
depends_on
|
|
| Array String
|
|
| doc "Dependency node IDs (must exist/be read first)"
|
|
| default = [],
|
|
|
|
implements
|
|
| Array String
|
|
| doc "Implementation node IDs (this implements those patterns)"
|
|
| default = [],
|
|
|
|
extends
|
|
| Array String
|
|
| doc "Extension node IDs (this extends/overrides those)"
|
|
| default = [],
|
|
|
|
# Cross-project reference
|
|
project
|
|
| String
|
|
| doc "Project identifier (for cross-project links)"
|
|
| optional,
|
|
|
|
# Decision-specific fields (ADR format)
|
|
context
|
|
| String
|
|
| doc "Decision context (what problem are we solving?)"
|
|
| optional,
|
|
|
|
decision
|
|
| String
|
|
| doc "The decision made"
|
|
| optional,
|
|
|
|
consequences
|
|
| Array String
|
|
| doc "Consequences of the decision"
|
|
| optional,
|
|
|
|
# Guideline-specific fields
|
|
language
|
|
| String
|
|
| doc "Programming language (rust, nushell, etc.)"
|
|
| optional,
|
|
|
|
category
|
|
| String
|
|
| doc "Category (error-handling, testing, etc.)"
|
|
| optional,
|
|
|
|
# Pattern-specific fields
|
|
problem
|
|
| String
|
|
| doc "Problem statement"
|
|
| optional,
|
|
|
|
solution
|
|
| String
|
|
| doc "Solution description"
|
|
| optional,
|
|
|
|
forces
|
|
| Array String
|
|
| doc "Forces/constraints affecting the pattern"
|
|
| optional,
|
|
|
|
# Execution-specific fields (from Vapora KG)
|
|
task_type
|
|
| String
|
|
| doc "Type of task executed"
|
|
| optional,
|
|
|
|
agent
|
|
| String
|
|
| doc "Agent that executed the task"
|
|
| optional,
|
|
|
|
outcome
|
|
| String
|
|
| doc "Execution outcome (success, failure, etc.)"
|
|
| optional,
|
|
|
|
duration_ms
|
|
| Number
|
|
| doc "Execution duration in milliseconds"
|
|
| optional,
|
|
},
|
|
|
|
# Minimal frontmatter (required fields only)
|
|
MinimalFrontmatter = {
|
|
id | String,
|
|
type | Types.NodeType,
|
|
title | String,
|
|
created | Types.Timestamp,
|
|
modified | Types.Timestamp,
|
|
},
|
|
|
|
# Decision frontmatter (ADR)
|
|
DecisionFrontmatter = Frontmatter & {
|
|
type | default = 'decision,
|
|
context | String,
|
|
decision | String,
|
|
consequences | Array String | default = [],
|
|
},
|
|
|
|
# Guideline frontmatter
|
|
GuidelineFrontmatter = Frontmatter & {
|
|
type | default = 'guideline,
|
|
language | String,
|
|
category | String | optional,
|
|
},
|
|
|
|
# Pattern frontmatter
|
|
PatternFrontmatter = Frontmatter & {
|
|
type | default = 'pattern,
|
|
problem | String,
|
|
solution | String,
|
|
forces | Array String | default = [],
|
|
},
|
|
|
|
# Execution record frontmatter
|
|
ExecutionFrontmatter = Frontmatter & {
|
|
type | default = 'execution,
|
|
task_type | String,
|
|
agent | String | optional,
|
|
outcome | String,
|
|
duration_ms | Number | optional,
|
|
},
|
|
}
|