Compare commits

...
8 Commits
Author SHA1 Message Date
LeanAgent 4c55f82446 feat(schema): meta.query in Collection-Meta + designGuide-Einrückung
continuous-integration/drone/push Build is passing
Hooks lesen oft zusätzliche Query-Parameter (ctx.request().query(name)).
Mit meta.query werden sie deklariert, für Agenten dokumentiert
(REST _meta/OpenAPI, MCP collection_describe) und bei MCP-Calls
validiert. Vergleiche docs 04-collections (meta.query).
2026-10-12 16:12:01 +00:00
LeanAgent ca684fb4b3 feat(schema): meta.agent in Collection- und Projekt-Schema
continuous-integration/drone/push Build is passing
Die Starter-Collections dokumentieren Editor-Workflows in meta.agent
(tibi-server spielt das ueber MCP/REST _meta aus), die Schemas kannten
den Schlüssel aber nicht – YAML-LS meldete 'Property agent is not
allowed'. agent ist bewusst freiform (additionalProperties: true),
damit die Doku nicht wieder hinterherhinkt.
2026-10-12 16:10:18 +00:00
apaironandClaude Opus 4.8 1934cf9b89 feat(schema): neues Section-Format — position: "section:<group>" + meta.sections
Feld-Meta position erlaubt jetzt section und section:<group> neben main/sidebar.
Collection-Meta bekommt sections: [{ group, label, collapsible, collapsed }] als
Pendant zu sidebar.

Ohne das Pattern-Update schlaegt die YAML-Validierung im Editor fehl und
position: "section:x" wird als ungueltig markiert.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-10-01 00:17:33 +00:00
apairon 7870253b73 merge: dynamic pagebuilder schemas (templateProps, schemaRef, designGuide, blockStudio)
# Conflicts:
#	schemas/config/collection-meta.schema.json
2026-09-30 20:37:08 +00:00
apairon 6720efbee2 feat(schema): collection meta exports (custom scripted exports)
Wiederhergestellt aus dem Arbeitsstand vor dem Dynamic-Blocks-Branch.
2026-09-30 20:36:46 +00:00
apairon 0fa213f3b6 feat(schema): templateProps + schemaRef + designGuide + blockStudio
Vorbereitung fuer dynamische Pagebuilder-Bloecke (nova feature/dynamic-pagebuilder-blocks):
- field-meta: Widget templateProps, meta.schemaRef {ref?, field required}
  (statische subFields / Sibling-Schema / FK-Schema fuer type:any-Felder)
- collection-meta: meta.designGuide (i18nText) als KI-Hinweis pro Collection
- collection-meta: viewHint.blockStudio {previewField, lint, renderer.file}
  (Spezial-View wie navigation/media, inkl. oneOf-Zweig)
2026-09-30 20:36:22 +00:00
apairon 19601b1f0f fix(schema): allow dashes in field names, i18n sections, number widget 2026-09-21 19:38:44 +00:00
apairon 1de0d67992 fix(schema): add cors to collection and action schemas 2026-09-21 16:47:03 +00:00
6 changed files with 286 additions and 3 deletions

No files matched your search

+40
View File
@@ -46,6 +46,46 @@
}
}
}
},
"cors": {
"type": "object",
"additionalProperties": false,
"properties": {
"merge": {
"type": "boolean"
},
"allowOrigins": {
"type": "array",
"items": {
"type": "string"
}
},
"allowCredentials": {
"type": "boolean"
},
"allowHeaders": {
"type": "array",
"items": {
"type": "string"
}
},
"allowMethods": {
"type": "array",
"items": {
"type": "string"
}
},
"exposeHeaders": {
"type": "array",
"items": {
"type": "string"
}
},
"maxAge": {
"type": "integer",
"minimum": 0
}
}
}
},
"required": [
+158
View File
@@ -17,6 +17,42 @@
"group": {
"type": "string"
},
"exports": {
"description": "Custom scripted exports (tibi-admin-nova ExportDialog). The script loads data itself via db.find/loadAll.",
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"label": {
"$ref": "defs.schema.json#/definitions/i18nText"
},
"file": {
"oneOf": [
{
"type": "string"
},
{
"$ref": "defs.schema.json#/definitions/evalString"
}
]
},
"filename": {
"type": "string"
}
},
"required": [
"name",
"file"
]
}
},
"designGuide": {
"$ref": "defs.schema.json#/definitions/i18nText"
},
"imageUrl": {
"oneOf": [
{
@@ -287,6 +323,30 @@
}
}
}
},
"blockStudio": {
"type": "object",
"additionalProperties": false,
"properties": {
"previewField": {
"type": "string"
},
"lint": {
"type": "boolean"
},
"renderer": {
"type": "object",
"additionalProperties": false,
"properties": {
"file": {
"type": "string"
}
},
"required": [
"file"
]
}
}
}
},
"oneOf": [
@@ -299,6 +359,11 @@
"required": [
"navigation"
]
},
{
"required": [
"blockStudio"
]
}
]
}
@@ -373,8 +438,101 @@
]
}
},
"sections": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"group": {
"type": "string"
},
"label": {
"$ref": "defs.schema.json#/definitions/i18nText"
},
"collapsible": {
"type": "boolean"
},
"collapsed": {
"type": "boolean"
}
},
"required": [
"group"
]
}
},
"openapi": {
"$ref": "openapi.schema.json"
},
"query": {
"description": "Additional query parameters hooks may read (ctx.request().query(name)). Documented for agents (REST _meta/OpenAPI, MCP collection_describe + extra argument) and validated on MCP calls. Credential-like keys (permission token names, auth headers) and core query keys are never allowed.",
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"type": "string",
"enum": [
"string",
"number",
"boolean"
]
},
"enum": {
"type": "array",
"items": {
"type": [
"string",
"number",
"boolean"
]
}
},
"maxLength": {
"type": "integer",
"minimum": 1
},
"description": {
"$ref": "defs.schema.json#/definitions/i18nText"
}
}
}
},
"agent": {
"description": "Editor- und Agenten-Dokumentation (Zweck, Workflows, Gotchas). Freiform-Doku, wird u.a. ueber MCP/REST _meta ausgespielt.",
"type": "object",
"additionalProperties": true,
"properties": {
"purpose": {
"type": "string"
},
"instructions": {
"type": "string"
},
"fieldHints": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"examples": {
"type": "array"
},
"workflows": {
"type": "array",
"items": {
"type": "string"
}
},
"hints": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
}
+40
View File
@@ -144,6 +144,46 @@
}
}
},
"cors": {
"type": "object",
"additionalProperties": false,
"properties": {
"merge": {
"type": "boolean"
},
"allowOrigins": {
"type": "array",
"items": {
"type": "string"
}
},
"allowCredentials": {
"type": "boolean"
},
"allowHeaders": {
"type": "array",
"items": {
"type": "string"
}
},
"allowMethods": {
"type": "array",
"items": {
"type": "string"
}
},
"exposeHeaders": {
"type": "array",
"items": {
"type": "string"
}
},
"maxAge": {
"type": "integer",
"minimum": 0
}
}
},
"queryLimits": {
"type": "object",
"additionalProperties": false,
+19 -2
View File
@@ -16,6 +16,7 @@
"enum": [
"text",
"textarea",
"number",
"checkbox",
"switch",
"select",
@@ -34,6 +35,7 @@
"foreignMedia",
"pagebuilder",
"pageBuilder",
"templateProps",
"containerLessObject",
"containerLessObjectArray",
"color"
@@ -56,10 +58,10 @@
},
"position": {
"type": "string",
"pattern": "^(main|sidebar|sidebar:.+)$"
"pattern": "^(main|sidebar|section|sidebar:.+|section:.+)$"
},
"section": {
"type": "string"
"$ref": "defs.schema.json#/definitions/i18nText"
},
"containerProps": {
"type": "object",
@@ -298,6 +300,21 @@
}
}
},
"schemaRef": {
"type": "object",
"additionalProperties": false,
"properties": {
"ref": {
"type": "string"
},
"field": {
"type": "string"
}
},
"required": [
"field"
]
},
"openapi": {
"$ref": "openapi.schema.json#/definitions/fieldOpenapi"
}
+1 -1
View File
@@ -13,7 +13,7 @@
"properties": {
"name": {
"type": "string",
"pattern": "^[0-9A-Za-z_]+$"
"pattern": "^[0-9A-Za-z_-]+$"
},
"type": {
"type": "string",
+28
View File
@@ -98,6 +98,34 @@
},
"openapi": {
"$ref": "openapi.schema.json"
},
"agent": {
"description": "Projektweite Editor- und Agenten-Dokumentation (Routen, Lookups, Workflows, Gotchas). Freiform-Doku, wird u.a. ueber MCP/REST _meta ausgespielt.",
"type": "object",
"additionalProperties": true,
"properties": {
"description": {
"type": "string"
},
"frontend": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"workflows": {
"type": "array",
"items": {
"type": "string"
}
},
"hints": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
},