atlas-iac/services/hermes/contracts/hux/project.schema.json
jenkins b4145861d2 hermes(hux): freeze hux.v1 contract 1.0.0 and move reference modules into the foundation package
HUX-11 contract freeze: identity/capabilities/manifest/error records, event turn
and idempotency and delegation/side-effect kinds, memory no-store/supersedes/
retrieval removal, revisions for optimistic concurrency, artifact access,
budget scope/spend/subagents and external side-effect gating, notebook notes and
dedupe keys. ADR-0001 records the wire and compatibility rules.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RNPhwu2bsaRNg3DETSAZoM
2026-08-24 00:48:20 -03:00

200 lines
4.8 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://hermes.bstein.dev/contracts/hux/v1/project.schema.json",
"title": "HUX projects and conversations",
"description": "Organisation model for chats (HUX-03): projects own conversations and promoted artifacts; conversations carry tags, pins and branch lineage. Search indexes the fields listed in $defs/search_index.",
"$defs": {
"project": {
"type": "object",
"additionalProperties": false,
"required": [
"schema",
"id",
"owner",
"name",
"tags",
"pinned",
"archived",
"created_at",
"updated_at",
"revision"
],
"properties": {
"schema": {
"const": "hux.project.v1"
},
"id": {
"$ref": "common.schema.json#/$defs/id"
},
"owner": {
"$ref": "common.schema.json#/$defs/user_ref"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"description": {
"type": "string",
"maxLength": 2000
},
"tags": {
"$ref": "common.schema.json#/$defs/tags"
},
"pinned": {
"type": "boolean"
},
"archived": {
"type": "boolean"
},
"default_mode": {
"type": "string",
"enum": [
"fast",
"thoughtful",
"research",
"create",
"private"
]
},
"memory_scope_id": {
"$ref": "common.schema.json#/$defs/id"
},
"created_at": {
"$ref": "common.schema.json#/$defs/timestamp"
},
"updated_at": {
"$ref": "common.schema.json#/$defs/timestamp"
},
"revision": {
"$ref": "common.schema.json#/$defs/revision"
}
}
},
"conversation": {
"type": "object",
"additionalProperties": false,
"required": [
"schema",
"id",
"owner",
"title",
"tags",
"pinned",
"archived",
"artifact_ids",
"created_at",
"updated_at",
"revision"
],
"properties": {
"schema": {
"const": "hux.conversation.v1"
},
"id": {
"$ref": "common.schema.json#/$defs/id"
},
"owner": {
"$ref": "common.schema.json#/$defs/user_ref"
},
"project_id": {
"$ref": "common.schema.json#/$defs/id"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"tags": {
"$ref": "common.schema.json#/$defs/tags"
},
"pinned": {
"type": "boolean"
},
"archived": {
"type": "boolean"
},
"mode": {
"type": "string",
"enum": [
"fast",
"thoughtful",
"research",
"create",
"private"
]
},
"branch": {
"type": "object",
"additionalProperties": false,
"required": [
"parent_conversation_id",
"branch_point_message_id"
],
"properties": {
"parent_conversation_id": {
"$ref": "common.schema.json#/$defs/id"
},
"branch_point_message_id": {
"type": "string",
"minLength": 1,
"maxLength": 120
}
}
},
"artifact_ids": {
"type": "array",
"maxItems": 500,
"uniqueItems": true,
"items": {
"$ref": "common.schema.json#/$defs/id"
}
},
"last_message_at": {
"$ref": "common.schema.json#/$defs/timestamp"
},
"created_at": {
"$ref": "common.schema.json#/$defs/timestamp"
},
"updated_at": {
"$ref": "common.schema.json#/$defs/timestamp"
},
"revision": {
"$ref": "common.schema.json#/$defs/revision"
}
}
},
"search_index": {
"type": "object",
"description": "Fields the tenant indexes; the UI may not assume anything else is searchable.",
"additionalProperties": false,
"required": [
"conversation"
],
"properties": {
"conversation": {
"type": "array",
"items": {
"type": "string",
"enum": [
"title",
"tags",
"message_text",
"artifact_titles",
"project_name"
]
}
}
}
}
},
"oneOf": [
{
"$ref": "#/$defs/project"
},
{
"$ref": "#/$defs/conversation"
}
]
}