17 Commits
Author SHA1 Message Date
apairon 21472bdc72 Schema: ngram.sizes auf 2–10 begrenzen, combinedCache ergänzen
continuous-integration/drone/push Build is passing
Die Gesamtabnahme fand zwei Lücken im Config-Vertrag:

- ngram.sizes erlaubte minimum 1 und hatte kein maximum; der Server akzeptiert
  nur 2–10 (collection_setup.go) — das Schema ließ also Configs durch, die beim
  Projektload scheitern.
- combinedCache fehlte komplett, obwohl Server (models.CombinedCacheConfig) und
  Doku den Block als Projekt-YAML führen; additionalProperties:false lehnte
  gültige, dokumentierte Configs ab.

Ergänzt in collection.schema.json und index.d.ts (CombinedCacheConfig mit
enabled/ttl/maxEntries). Die Demo-Collection ngram-stopwords.yml enthält jetzt
eine Combined-Config mit combinedCache, sodass validate:schemas den Block
abdeckt. Gegenprobe per AJV: sizes [1] und [11] werden abgelehnt, [2,3] und
combinedCache akzeptiert.
2026-10-19 22:34:56 +00:00
apairon 9e12a8e9c3 Schema: ngram.stopwords, queryFilter und inMemory ergänzen
continuous-integration/drone/push Build is passing
Der Config-Vertrag kannte nur sizes und normalize. Damit lehnte
`validate:schemas` jedes Projekt ab, das die bereits im Server vorhandenen
ngram-Optionen nutzt (additionalProperties: false), und die generierte
Schema-Referenz konnte sie nie zeigen.

Ergänzt in collection.schema.json und index.d.ts:

- stopwords: { presets?: string[], words?: string[] }
- queryFilter: { minMatchRatio?: 0..1 }
- inMemory: { enabled?, maxDocs?, maxMemoryMB? }

plus demo-api/collections/ngram-stopwords.yml als Validierungs-Fixture; ohne
Schema-Erweiterung schlägt validate:schemas dort mit "must NOT have additional
properties" fehl.
2026-10-19 20:48:10 +00:00
apairon 1233bd393d fix(schema): latencyWindow ist ein String, duration-Muster folgt der Go-Grammatik
Review-Nachbefunde am neuen embedding-Schema:
- latencyWindow war als integer/number deklariert, ist in Go aber ein String
  (ConfigEmbeddingGroup.OnSingleQuery.LatencyWindow, per Atoi geprüft) — Schema
  und index.d.ts auf digits-String (>0) umgestellt.
- duration-Pattern erlaubte nur eine Einheit und akzeptierte Unsinn wie "1ss":
  jetzt (Zahl+Einheit)+, damit auch 1m30s/1h1m/1.5h gelten und 1ss/8/abc fallen.
- Beispiel examples/server/embedding.yml übt latencyWindow und Mehrfach-Einheiten
  aus (npm test: 5 YAML gegen 17 Schemas, tsc --noEmit --strict grün).
2026-10-17 14:07:30 +00:00
apairon 5a45c4dd3f feat(types): Embedding-Abschnitt der Server-Config (Provider, Failover-Gruppen, goldener Pfad) + Status-Payloads
index.d.ts: EmbeddingProviderConfig/EmbeddingGroupConfig (onSingleQuery, onBulkWrite,
health), EmbeddingConfig für config.server().embedding (Roh-JSON von config.Server.
Embedding) sowie die Status-Payloads von GET …/admin/embedding/status (Projekt- und
Server-Scope, Zustände live|degraded|quarantined|offline, Breaker closed|open|half-open).
VectorConfig.provider dokumentiert jetzt, dass dort auch ein Gruppenname stehen darf.

schemas/config/embedding.schema.json: validierbares Schema des Server-Abschnitts
(Enums für Policies/Distributionen, Go-Duration-Muster, Pflichtfelder, keine
erfundenen Properties); Beispiel examples/server/embedding.yml, per
scripts/validate-schemas.mjs mitgeprüft (npm test: 5 YAML gegen 17 Schemas).

Quelle der Wahrheit: internal/config/server.go + internal/config/embedding_group.go
(tibi-server). Typecheck: tsc --noEmit --strict über index.d.ts grün.
2026-10-17 14:00:53 +00:00
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
apairon 5e04a1ca3a fix(schema): allow !include string for choices (tibi-server YAML include)
choices previously only array|object, now also string to allow
choices: !include ../../choices/icon-choices.yml
which tibi-server resolves via yamlResolveIncludes before validation
2026-09-03 12:29:47 +00:00
apairon 3abdc52fef fix(schema): add audit to action schema (enabled + actions[post,get]) 2026-09-03 10:59:06 +00:00
apairon c1cdb6bdcc ✨ feat(schema): add project-level audit (only enabled) 2026-09-02 16:45:36 +00:00
apairon 7775164e6a fix(schema): allow openapi in project meta
- project.meta now accepts openapi: { $ref: openapi.schema.json }
- needed for renz-einfo legacy config (servers/info/tags) to validate
2026-08-25 12:59:26 +00:00
apairon 40b441df04 ✨ feat: add new JSON schemas for Tibi configuration including fields, hooks, jobs, and permissions
- Introduced `field-list.schema.json`, `field-meta.schema.json`, and `field.schema.json` for field configurations.
- Added `hooks.schema.json` for defining hooks in the Tibi project.
- Created `image-filter.schema.json` for image processing configurations.
- Implemented `job.schema.json` for job scheduling configurations.
- Added `openapi.schema.json` for OpenAPI metadata generation.
- Introduced `permissions.schema.json` for managing permissions in the project.
- Created `project.schema.json` for overall project configuration.
- Added `projections.schema.json` for defining projections in the project.
- Implemented a validation script `validate-schemas.mjs` to ensure schema compliance.
2026-07-01 09:23:43 +00:00