Initial public push: docs cosmos v4 + AI module + framework groundwork

This is the snapshot the production landing site (nibiru-framework.com) is
deployed from. Brings together the recent splash + docs migration to the v4
"Cosmos" design system, the new in-framework AI module, and the framework
groundwork that backs the framework-reference extraction.

What lands:
- docs/: Astro + Starlight site with the v4 dark cosmic palette, GalaxyHero
  canvas constellation, Mission Control chat (wired to /api/oracle →
  api.neuronetz.ai via providers.mjs Ollama), 5-panel MMVC stage
  (Model · AI · Module · Controller · View), translated EN/DE/JA/ES/FR
  content, PWA + sitemap + llms.txt + Umami analytics.
- docs/design-system/: canonical mockup bundle (source/index-v2.html for
  splash, source/docs-system.html + preview/ for docs, SPEC.md, tokens).
- docs/scripts/extraction/framework-reference-v2.md: deep framework
  reference (~1.6k lines, file:line citations, every public factory and
  idiom — basis for the LoRA training corpus.
- application/module/ai/: AI module with chat / embed / RAG / agent
  plugins, plus pdoQuery / httpGet / fileRead tools and Modelfile +
  smoke-test in training/.
- application/module/users/: user / ACL / form-factory traits used as the
  reference plugin pattern for the framework docs.
- application/settings/config/database/: schema + seed migrations
  including the AI module tables (200–203).
- Form factory + autogenerator changes the framework-reference-v2 covers.

Production secrets stay out: docs/.env, settings.production.ini and
ai.production.ini are all gitignored (.example files are in tree).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
stephan
2026-05-08 15:22:18 +02:00
parent a60ce90643
commit 48c839d927
662 changed files with 172811 additions and 1 deletions

View File

@@ -0,0 +1,219 @@
.sidr {
display: none;
position: absolute;
position: fixed;
top: 0;
height: 100%;
z-index: 999999;
width: 260px;
overflow-x: none;
overflow-y: auto;
font-family: "lucida grande", tahoma, verdana, arial, sans-serif;
font-size: 15px;
background: #f8f8f8;
color: #333;
-webkit-box-shadow: inset 0 0 5px 5px #ebebeb;
-moz-box-shadow: inset 0 0 5px 5px #ebebeb;
box-shadow: inset 0 0 5px 5px #ebebeb
}
.sidr .sidr-inner {
padding: 0 0 15px
}
.sidr .sidr-inner>p {
margin-left: 15px;
margin-right: 15px
}
.sidr.right {
left: auto;
right: -260px
}
.sidr.left {
left: -260px;
right: auto
}
.sidr h1,
.sidr h2,
.sidr h3,
.sidr h4,
.sidr h5,
.sidr h6 {
font-size: 11px;
font-weight: normal;
padding: 0 15px;
margin: 0 0 5px;
color: #333;
line-height: 24px;
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #dfdfdf));
background-image: -webkit-linear-gradient(#ffffff, #dfdfdf);
background-image: -moz-linear-gradient(#ffffff, #dfdfdf);
background-image: -o-linear-gradient(#ffffff, #dfdfdf);
background-image: linear-gradient(#ffffff, #dfdfdf);
-webkit-box-shadow: 0 5px 5px 3px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 0 5px 5px 3px rgba(0, 0, 0, 0.2);
box-shadow: 0 5px 5px 3px rgba(0, 0, 0, 0.2)
}
.sidr p {
font-size: 13px;
margin: 0 0 12px
}
.sidr p a {
color: rgba(51, 51, 51, 0.9)
}
.sidr>p {
margin-left: 15px;
margin-right: 15px
}
.sidr ul {
display: block;
margin: 0 0 15px;
padding: 0;
border-top: 1px solid #dfdfdf;
border-bottom: 1px solid #fff
}
.sidr ul li {
display: block;
margin: 0;
line-height: 48px;
border-top: 1px solid #fff;
border-bottom: 1px solid #dfdfdf
}
.sidr ul li:hover,
.sidr ul li.active,
.sidr ul li.sidr-class-active {
border-top: 1px solid #fff;
line-height: 48px
}
.sidr ul li:hover>a,
.sidr ul li:hover>span,
.sidr ul li.active>a,
.sidr ul li.active>span,
.sidr ul li.sidr-class-active>a,
.sidr ul li.sidr-class-active>span {
-webkit-box-shadow: inset 0 0 15px 3px #ebebeb;
-moz-box-shadow: inset 0 0 15px 3px #ebebeb;
box-shadow: inset 0 0 15px 3px #ebebeb
}
.sidr ul li a,
.sidr ul li span {
padding: 0 15px;
display: block;
text-decoration: none;
color: #333
}
.sidr ul li ul {
border-bottom: none;
margin: 0
}
.sidr ul li ul li {
line-height: 40px;
font-size: 13px
}
.sidr ul li ul li:last-child {
border-bottom: none
}
.sidr ul li ul li:hover,
.sidr ul li ul li.active,
.sidr ul li ul li.sidr-class-active {
border-top: 1px solid #fff;
line-height: 40px
}
.sidr ul li ul li:hover>a,
.sidr ul li ul li:hover>span,
.sidr ul li ul li.active>a,
.sidr ul li ul li.active>span,
.sidr ul li ul li.sidr-class-active>a,
.sidr ul li ul li.sidr-class-active>span {
-webkit-box-shadow: inset 0 0 15px 3px #ebebeb;
-moz-box-shadow: inset 0 0 15px 3px #ebebeb;
box-shadow: inset 0 0 15px 3px #ebebeb
}
.sidr ul li ul li a,
.sidr ul li ul li span {
color: rgba(51, 51, 51, 0.8);
padding-left: 30px
}
.sidr ul li ul li ul li a,
.sidr ul li ul li ul li span {
padding-left: 45px
}
.sidr ul li ul li ul li ul li a,
.sidr ul li ul li ul li ul li span {
padding-left: 60px
}
.sidr form {
margin: 0 15px
}
.sidr label {
font-size: 13px
}
.sidr input[type="text"],
.sidr input[type="password"],
.sidr input[type="date"],
.sidr input[type="datetime"],
.sidr input[type="email"],
.sidr input[type="number"],
.sidr input[type="search"],
.sidr input[type="tel"],
.sidr input[type="time"],
.sidr input[type="url"],
.sidr textarea,
.sidr select {
width: 100%;
font-size: 13px;
padding: 5px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
margin: 0 0 10px;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
-ms-border-radius: 2px;
-o-border-radius: 2px;
border-radius: 2px;
border: none;
background: rgba(0, 0, 0, 0.1);
color: rgba(51, 51, 51, 0.6);
display: block;
clear: both
}
.sidr input[type=checkbox] {
width: auto;
display: inline;
clear: none
}
.sidr input[type=button],
.sidr input[type=submit] {
color: #f8f8f8;
background: #333
}
.sidr input[type=button]:hover,
.sidr input[type=submit]:hover {
background: rgba(51, 51, 51, 0.9)
}