@arkvenai/cli 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +105 -0
- package/README.md +304 -0
- package/dist/agents.d.ts +11 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +76 -0
- package/dist/agents.js.map +1 -0
- package/dist/auftrag.d.ts +3 -0
- package/dist/auftrag.d.ts.map +1 -0
- package/dist/auftrag.js +45 -0
- package/dist/auftrag.js.map +1 -0
- package/dist/bauplan.d.ts +15 -0
- package/dist/bauplan.d.ts.map +1 -0
- package/dist/bauplan.js +219 -0
- package/dist/bauplan.js.map +1 -0
- package/dist/befehle.d.ts +12 -0
- package/dist/befehle.d.ts.map +1 -0
- package/dist/befehle.js +77 -0
- package/dist/befehle.js.map +1 -0
- package/dist/befund.d.ts +21 -0
- package/dist/befund.d.ts.map +1 -0
- package/dist/befund.js +107 -0
- package/dist/befund.js.map +1 -0
- package/dist/codeAblage.d.ts +31 -0
- package/dist/codeAblage.d.ts.map +1 -0
- package/dist/codeAblage.js +80 -0
- package/dist/codeAblage.js.map +1 -0
- package/dist/deklaration.d.ts +3 -0
- package/dist/deklaration.d.ts.map +1 -0
- package/dist/deklaration.js +14 -0
- package/dist/deklaration.js.map +1 -0
- package/dist/diff.d.ts +10 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +72 -0
- package/dist/diff.js.map +1 -0
- package/dist/erkennung.d.ts +26 -0
- package/dist/erkennung.d.ts.map +1 -0
- package/dist/erkennung.js +174 -0
- package/dist/erkennung.js.map +1 -0
- package/dist/fix.d.ts +26 -0
- package/dist/fix.d.ts.map +1 -0
- package/dist/fix.js +101 -0
- package/dist/fix.js.map +1 -0
- package/dist/geteilt/bauplan/form.d.ts +100 -0
- package/dist/geteilt/bauplan/form.d.ts.map +1 -0
- package/dist/geteilt/bauplan/form.js +21 -0
- package/dist/geteilt/bauplan/form.js.map +1 -0
- package/dist/geteilt/bauplan/index.d.ts +4 -0
- package/dist/geteilt/bauplan/index.d.ts.map +1 -0
- package/dist/geteilt/bauplan/index.js +4 -0
- package/dist/geteilt/bauplan/index.js.map +1 -0
- package/dist/geteilt/bauplan/lesen.d.ts +6 -0
- package/dist/geteilt/bauplan/lesen.d.ts.map +1 -0
- package/dist/geteilt/bauplan/lesen.js +344 -0
- package/dist/geteilt/bauplan/lesen.js.map +1 -0
- package/dist/geteilt/bauplan/schreiben.d.ts +3 -0
- package/dist/geteilt/bauplan/schreiben.d.ts.map +1 -0
- package/dist/geteilt/bauplan/schreiben.js +80 -0
- package/dist/geteilt/bauplan/schreiben.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +352 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +28 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +324 -0
- package/dist/init.js.map +1 -0
- package/dist/login.d.ts +45 -0
- package/dist/login.d.ts.map +1 -0
- package/dist/login.js +162 -0
- package/dist/login.js.map +1 -0
- package/dist/mcp.d.ts +18 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +115 -0
- package/dist/mcp.js.map +1 -0
- package/dist/neu.d.ts +17 -0
- package/dist/neu.d.ts.map +1 -0
- package/dist/neu.js +118 -0
- package/dist/neu.js.map +1 -0
- package/dist/npmrc.d.ts +9 -0
- package/dist/npmrc.d.ts.map +1 -0
- package/dist/npmrc.js +49 -0
- package/dist/npmrc.js.map +1 -0
- package/dist/projekte.d.ts +23 -0
- package/dist/projekte.d.ts.map +1 -0
- package/dist/projekte.js +82 -0
- package/dist/projekte.js.map +1 -0
- package/dist/pull.d.ts +15 -0
- package/dist/pull.d.ts.map +1 -0
- package/dist/pull.js +301 -0
- package/dist/pull.js.map +1 -0
- package/dist/push/bericht.d.ts +8 -0
- package/dist/push/bericht.d.ts.map +1 -0
- package/dist/push/bericht.js +85 -0
- package/dist/push/bericht.js.map +1 -0
- package/dist/push/form.d.ts +67 -0
- package/dist/push/form.d.ts.map +1 -0
- package/dist/push/form.js +6 -0
- package/dist/push/form.js.map +1 -0
- package/dist/push/medien.d.ts +7 -0
- package/dist/push/medien.d.ts.map +1 -0
- package/dist/push/medien.js +154 -0
- package/dist/push/medien.js.map +1 -0
- package/dist/push/sammeln.d.ts +34 -0
- package/dist/push/sammeln.d.ts.map +1 -0
- package/dist/push/sammeln.js +112 -0
- package/dist/push/sammeln.js.map +1 -0
- package/dist/push/verzeichnisse.d.ts +40 -0
- package/dist/push/verzeichnisse.d.ts.map +1 -0
- package/dist/push/verzeichnisse.js +158 -0
- package/dist/push/verzeichnisse.js.map +1 -0
- package/dist/push.d.ts +8 -0
- package/dist/push.d.ts.map +1 -0
- package/dist/push.js +306 -0
- package/dist/push.js.map +1 -0
- package/dist/starter.d.ts +4 -0
- package/dist/starter.d.ts.map +1 -0
- package/dist/starter.js +587 -0
- package/dist/starter.js.map +1 -0
- package/dist/tiefpruefung.d.ts +39 -0
- package/dist/tiefpruefung.d.ts.map +1 -0
- package/dist/tiefpruefung.js +56 -0
- package/dist/tiefpruefung.js.map +1 -0
- package/dist/vertrag.d.ts +6 -0
- package/dist/vertrag.d.ts.map +1 -0
- package/dist/vertrag.js +267 -0
- package/dist/vertrag.js.map +1 -0
- package/dist/vertragSpaet.d.ts +4 -0
- package/dist/vertragSpaet.d.ts.map +1 -0
- package/dist/vertragSpaet.js +158 -0
- package/dist/vertragSpaet.js.map +1 -0
- package/dist/vorlagen.d.ts +7 -0
- package/dist/vorlagen.d.ts.map +1 -0
- package/dist/vorlagen.js +83 -0
- package/dist/vorlagen.js.map +1 -0
- package/package.json +65 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Änderungen
|
|
2
|
+
|
|
3
|
+
## 0.5.1 - 2026-08-26
|
|
4
|
+
|
|
5
|
+
### Geändert
|
|
6
|
+
|
|
7
|
+
- **README und Paket-Beschreibung sagen jetzt zuerst, was zu tun ist.** Oben stehen die zwei
|
|
8
|
+
Wege als nummerierte Schritte: `login` → `pull` → ändern → `push` → `push --deploy` für eine
|
|
9
|
+
App, die es in Arkven schon gibt, und `login` → `init` → `push` → `push --deploy` für ein
|
|
10
|
+
Projekt vom eigenen Rechner. Die Befehlsteile darunter erklären die Schalter, nicht mehr den
|
|
11
|
+
Einstieg.
|
|
12
|
+
- **`arkven help` zeigt denselben Rundlauf** vor der Befehlsliste.
|
|
13
|
+
- Zwei veraltete Aussagen sind aus der README verschwunden: „angekündigt und noch nicht
|
|
14
|
+
enthalten: `mcp`" (`arkven mcp` gibt es seit 0.5.0) und „die Gates der Plattform laufen hier
|
|
15
|
+
nicht mit" (`check --tief` und `push` fahren sie).
|
|
16
|
+
|
|
17
|
+
## 0.5.0 — 2026-08-25
|
|
18
|
+
|
|
19
|
+
### Neu
|
|
20
|
+
|
|
21
|
+
- **`arkven pull` braucht keinen vorherigen `push` mehr.** Kennt der Ordner noch kein Projekt,
|
|
22
|
+
zeigt `pull` die Projekte deiner Teams und fragt, welches gemeint ist. `--projekt=<kennung>`
|
|
23
|
+
beantwortet die Frage vorweg. Ohne Terminal wird nicht geraten: die Liste wird ausgegeben und
|
|
24
|
+
der Schalter genannt.
|
|
25
|
+
|
|
26
|
+
Vorher las `pull` die Kennung aus `arkven.json`, und dorthin schrieb sie nur `push`. Wer seine
|
|
27
|
+
App **in** Arkven gebaut hat, haette also erst pushen muessen, um ziehen zu duerfen, und ein
|
|
28
|
+
`push` aus einem leeren Ordner ersetzt die lebende App durch nichts. Der Rueckweg braucht
|
|
29
|
+
keinen Hinweg.
|
|
30
|
+
|
|
31
|
+
- **Das Layout kommt aus dem Projekt.** Nach der Auswahl traegt `pull` die `arkven.json` des
|
|
32
|
+
Projekts nach und legt die darin genannten Ordner an, bevor er ablegt. Ein leeres Verzeichnis
|
|
33
|
+
bekommt damit den Baum, den ein spaeterer `push` wieder erwartet, statt eines flachen.
|
|
34
|
+
|
|
35
|
+
### Behoben
|
|
36
|
+
|
|
37
|
+
- **Die Deklaration landete im falschen Ordner.** `push` holt `arkven.json`,
|
|
38
|
+
`arkven/bauplan.json`, `arkven/auftrag.md` und `arkven/mails/*.md` aus der Projektwurzel;
|
|
39
|
+
`pull` legte sie in den Frontend-Ordner. In einem echten Projekt (487 Dateien) lagen dadurch
|
|
40
|
+
ein Bauplan und vier Mail-Vorlagen doppelt, mit verschiedenem Inhalt, und der naechste `push`
|
|
41
|
+
haette die gezogene Fassung an dieser Stelle nicht wieder eingesammelt. Jetzt gilt beidseitig
|
|
42
|
+
dieselbe Grenze.
|
|
43
|
+
|
|
44
|
+
### Bekannt und noch offen
|
|
45
|
+
|
|
46
|
+
- **Der Selbstabgleich am Ende von `npm run veroeffentlichen` misst die zweite Tuer nicht.** Er
|
|
47
|
+
ruft das Packument ohne Ausweis ab; GitHub Packages antwortet darauf nicht, und der Lauf liest
|
|
48
|
+
das als „keine Fassung da". Nach einem erfolgreichen Upload meldet er deshalb trotzdem einen
|
|
49
|
+
Fehlschlag.
|
|
50
|
+
|
|
51
|
+
- **Dokumente kommen nicht mit.** `pull` meldet dazu „dieser Zugang deckt den Bereich Dokumente
|
|
52
|
+
nicht ab". Der Server lehnt in Wahrheit ab, weil der Aufruf ohne Team-Angabe geht. Der Rest des
|
|
53
|
+
Laufs ist davon unberuehrt und vollstaendig geschrieben.
|
|
54
|
+
- **Bauplan und Mail-Vorlagen haben zwei Quellen** (Deklaration und Code-Stand). Sie kollidieren
|
|
55
|
+
jetzt sichtbar in der Vorschau, statt still auseinanderzulaufen; der Code-Stand gewinnt.
|
|
56
|
+
|
|
57
|
+
## 0.4.0 — 2026-08-03
|
|
58
|
+
|
|
59
|
+
Diese Fassung entstand beim ersten echten Live-Gang eines mitgebrachten Projekts. Jeder Punkt unten
|
|
60
|
+
ist ein gemessener Fehlschlag, kein Wunsch.
|
|
61
|
+
|
|
62
|
+
### Neu
|
|
63
|
+
|
|
64
|
+
- **Bilder, Videos und Schriften reisen mit.** Vorher liess `push` sie weg (Binaerdateien und alles
|
|
65
|
+
ueber 1 MB) und sagte das auch — und die App ging mit kaputten Bildern live. Sie gehen jetzt einen
|
|
66
|
+
eigenen Weg, einzeln, und nur was sich geaendert hat.
|
|
67
|
+
- **`arkven pull`** — der Rueckweg. Holt Bauplan und Auftrag aus Arkven ins Projekt. Zeigt erst, was
|
|
68
|
+
sich aendern wuerde, dann schreibt es.
|
|
69
|
+
- **`arkven check --tief`** — die ECHTEN Gates der Plattform laufen mit, dieselbe Pruefung wie beim
|
|
70
|
+
Ausrollen. Nicht nachgebaut: der Baum geht an Arkven, dort laeuft `verifyBackend`.
|
|
71
|
+
- **`push` faehrt sie ebenfalls.** Ein blockierender Punkt haelt die Uebertragung an, BEVOR eine
|
|
72
|
+
Datei reist.
|
|
73
|
+
- **Bauplan und Auftrag im Repo** (`arkven/bauplan.json`, `arkven/auftrag.md`). Sie reisen mit und
|
|
74
|
+
erscheinen im Cockpit; `check` prueft sie lokal, bevor sie reisen.
|
|
75
|
+
- **Eigene Mail-Vorlagen** (`arkven/mails/<key>.md`) — nur die geaenderten. Der Plattform-Standard
|
|
76
|
+
bleibt in Arkven.
|
|
77
|
+
- **`braucht`** in `arkven.json`: welche Dienste das Projekt benoetigt. Ergaenzt die Messung am Code,
|
|
78
|
+
ersetzt sie nicht.
|
|
79
|
+
- **Die Anker werden geprueft** — `arkven/anker-fehlt`, `anker-doppelt`, `anker-unbekannt`. Sie
|
|
80
|
+
beantworten „warum steht im Cockpit 0 von 9", bevor jemand fragen muss: mit Screen-Name, Adresse
|
|
81
|
+
und der exakten Kennung, die ins Wurzelelement gehoert. Die Kennungen kommen aus Arkven, sie werden
|
|
82
|
+
nicht nachgerechnet.
|
|
83
|
+
- **`arkven fix` setzt sie auch.** Anker halten nichts auf, deshalb fielen sie vorher aus dem
|
|
84
|
+
Agenten-Auftrag heraus — `fix` konnte genau das nicht beheben, wofuer die Regeln geschrieben
|
|
85
|
+
wurden. Sie stehen jetzt im Auftrag, getrennt von den blockierenden Punkten, samt dem Fallstrick:
|
|
86
|
+
gibt die Komponente ein Fragment zurueck, braucht der Traeger `display: contents`.
|
|
87
|
+
- **`arkven/mail-unbekannt`** — ein Tippfehler im Dateinamen erzeugte bisher eine Vorlage, die
|
|
88
|
+
niemand je verschickt. Sie lag im Repo, sah gepflegt aus, und die echte blieb auf dem
|
|
89
|
+
Plattform-Standard. Der Vorschlag rechnet echte Aehnlichkeit; ab zwei Zeichen Unterschied wird die
|
|
90
|
+
Liste genannt statt geraten.
|
|
91
|
+
- **`--sarif`** — dieselben Befunde in der Form, die GitHub Code-Scanning, VS Code und CI schon
|
|
92
|
+
lesen. Damit erscheint ein Befund an der Zeile im Pull-Request. `ungeprueft` wird dabei NICHT zu
|
|
93
|
+
einem kleinen Mangel verkleinert, sondern steht als `kind: open` da: gelaufen, kein Urteil.
|
|
94
|
+
|
|
95
|
+
### Behoben
|
|
96
|
+
|
|
97
|
+
- `push --deploy` tat nichts, wenn es nichts zu uebertragen gab — genau der haeufigste Fall nach
|
|
98
|
+
einem gescheiterten Deploy.
|
|
99
|
+
- Das Ausrollen scheiterte mit 401, obwohl die Uebertragung mit demselben Token gelang.
|
|
100
|
+
|
|
101
|
+
### Hinweis
|
|
102
|
+
|
|
103
|
+
Der Bauplan bestimmt, was im Cockpit als „gebaut" gilt. Damit ein Screen zaehlt, traegt sein
|
|
104
|
+
Wurzelelement `data-arkven-screen="scr-N"`. Ohne diesen Anker bleibt er offen, auch wenn er laengst
|
|
105
|
+
funktioniert.
|
package/README.md
ADDED
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
# @arkvenai/cli
|
|
2
|
+
|
|
3
|
+
Dein Arkven-Projekt auf diesem Rechner: anmelden, holen, ändern, zurückstellen, online stellen.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npm install -g @arkvenai/cli
|
|
7
|
+
arkven login
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
Ohne Installation läuft jeder Befehl auch als `npx @arkvenai/cli <befehl>`.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Weg 1: eine App, die es in Arkven schon gibt
|
|
15
|
+
|
|
16
|
+
Der Normalfall. Du hast im Cockpit gebaut und willst lokal weiterarbeiten.
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
arkven login # 1. einmal pro Rechner
|
|
20
|
+
mkdir meine-app && cd meine-app
|
|
21
|
+
arkven pull # 2. zeigt deine Projekte, du wählst die Nummer
|
|
22
|
+
# 3. Änderungen machen: Editor, Agent, wie du willst
|
|
23
|
+
arkven push # 4. Vorschau ansehen und bestätigen
|
|
24
|
+
arkven push --deploy # 5. online stellen
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Schritt 2 sieht so aus:**
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
$ arkven pull
|
|
31
|
+
|
|
32
|
+
Dieser Ordner kennt noch kein Projekt. Deine Projekte:
|
|
33
|
+
|
|
34
|
+
1 Mein Laden live zuletzt 25.08.2026
|
|
35
|
+
sess_cf86fd83-6f68-45fa-8c9d-0399a3eb6caf
|
|
36
|
+
2 Touren-Planer zuletzt 20.08.2026
|
|
37
|
+
sess_9rxa9vk
|
|
38
|
+
|
|
39
|
+
Welches Projekt? [1-2] >
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Danach steht die Kennung in `arkven.json`, und jeder weitere `pull` und `push` in diesem Ordner
|
|
43
|
+
meint dieses Projekt. Ohne Rückfrage: `arkven pull --projekt=<kennung>`.
|
|
44
|
+
|
|
45
|
+
Von da an ist der Rundlauf immer derselbe: **ändern, `arkven push`, `arkven push --deploy`.**
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Weg 2: ein Projekt, das auf deinem Rechner entstanden ist
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
arkven login # 1. einmal pro Rechner
|
|
53
|
+
cd mein-projekt
|
|
54
|
+
arkven init # 2. schreibt arkven.json
|
|
55
|
+
arkven push --name="Mein Tool" # 3. legt das Projekt in Arkven an
|
|
56
|
+
arkven push --deploy # 4. online stellen
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Ab dem zweiten Mal genügen `arkven push` und `arkven push --deploy`: Name und Kennung stehen dann in
|
|
60
|
+
`arkven.json`.
|
|
61
|
+
|
|
62
|
+
Ganz von vorn: `arkven new meine-app` legt ein Projekt an, das die Anforderungen des Containers
|
|
63
|
+
schon erfüllt.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Die Befehle
|
|
68
|
+
|
|
69
|
+
| Befehl | Was er tut |
|
|
70
|
+
|---|---|
|
|
71
|
+
| `arkven login` | Meldet diesen Rechner an deinem Arkven-Konto an |
|
|
72
|
+
| `arkven pull` | Holt ein Projekt aus Arkven in diesen Ordner |
|
|
73
|
+
| `arkven push` | Stellt deinen Stand zurück nach Arkven |
|
|
74
|
+
| `arkven push --deploy` | Rollt danach aus und zeigt den Lauf mit |
|
|
75
|
+
| `arkven init` | Erkennt, was dein Projekt mitbringt, und schreibt `arkven.json` |
|
|
76
|
+
| `arkven new <name>` | Legt ein neues Projekt an, das den Container-Vertrag schon erfüllt |
|
|
77
|
+
| `arkven check` | Prüft dein Projekt, so oft du willst |
|
|
78
|
+
| `arkven fix` | Übergibt die Befunde dem lokalen Claude Code und misst danach erneut |
|
|
79
|
+
| `arkven mcp` | Meldet `check`, `auftrag` und `pull` als MCP-Werkzeuge an |
|
|
80
|
+
|
|
81
|
+
`arkven help` zeigt dieselbe Übersicht mit allen Schaltern.
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## `arkven login`
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
arkven login # Standard: https://app.arkven.de
|
|
89
|
+
arkven login --server=<adresse> # eigene Installation
|
|
90
|
+
arkven login --einfuegen # wenn dieser Rechner den Server nicht erreicht
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Der Browser bestätigt, das Token landet im Benutzerverzeichnis (`~/.arkven/zugang.json`), nie im
|
|
94
|
+
Projekt. Die Standard-Adresse ist `app.arkven.de` und nicht `arkven.de`: unter der bloßen Domain
|
|
95
|
+
liegt die Marketing-Seite, die Anwendung samt API liegt unter `app.`.
|
|
96
|
+
|
|
97
|
+
`login` richtet auch den Paketbezug ein, danach funktioniert `npm install @arkvenai/base` in diesem
|
|
98
|
+
Projekt.
|
|
99
|
+
|
|
100
|
+
## `arkven pull`
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
arkven pull # zeigt deine Projekte und fragt, welches
|
|
104
|
+
arkven pull --projekt=<kennung> # ohne Rückfrage, für Skripte
|
|
105
|
+
arkven pull --yes # bestätigt die Vorschau ungesehen
|
|
106
|
+
arkven pull --nur-deklaration # ohne Code: Bauplan, Auftrag, Nachweis, Mail-Vorlagen
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Ein leeres Verzeichnis genügt. Du musst vorher **nicht** gepusht haben. Sitzt niemand am Terminal,
|
|
110
|
+
wird nicht geraten, sondern die Liste ausgegeben und `--projekt=` genannt.
|
|
111
|
+
|
|
112
|
+
Wo Server und Oberfläche liegen, sagt das Projekt selbst: `pull` trägt seine `arkven.json` nach,
|
|
113
|
+
bevor er ablegt, und legt die genannten Ordner an. Damit bekommst du den Baum, den ein späterer
|
|
114
|
+
`push` wieder erwartet.
|
|
115
|
+
|
|
116
|
+
**Es wird nie etwas gelöscht.** Dateien, die nur bei dir liegen, bleiben unberührt. Was
|
|
117
|
+
überschrieben würde, steht einzeln in der Vorschau, bevor irgendetwas passiert.
|
|
118
|
+
|
|
119
|
+
## `arkven push`
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
arkven push # zeigt die Vorschau und fragt
|
|
123
|
+
arkven push --deploy # danach ausrollen und den Lauf mitlesen
|
|
124
|
+
arkven push --yes # bestätigt sie ungesehen (CI, Agenten)
|
|
125
|
+
arkven push --name="Mein Tool" # der Anzeigename beim ersten Mal
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Die Reihenfolge ist die Aussage:
|
|
129
|
+
|
|
130
|
+
1. **Geprüft wird zuerst.** Was den Container-Vertrag nicht hält, wird benannt und nicht
|
|
131
|
+
übertragen. Die Gates der Plattform laufen dabei mit, dieselbe Prüfung wie beim Ausrollen.
|
|
132
|
+
2. **Gesammelt wird nur Quelltext.** Versteckte Einträge bleiben liegen, also auch `.env` und
|
|
133
|
+
`.git`: Zugangsdaten verlassen deinen Rechner nicht. Erzeugte Ordner (`node_modules`, `dist`,
|
|
134
|
+
`build`, `coverage`) ebenfalls nicht. Was ausgelassen wurde, sagt der Lauf mit Zahl.
|
|
135
|
+
3. **Vorschau vor dem Schreiben.**
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
Vorschau für „Rechnungstool" (sess_a8jan2i)
|
|
139
|
+
|
|
140
|
+
14 neu (in deinem Verzeichnis, in Arkven noch nicht)
|
|
141
|
+
3 aktualisiert (du hast sie geändert, Arkven nicht)
|
|
142
|
+
84 unberuehrt (in Arkven ändert sich daran nichts)
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Bei einem Konflikt bricht `push` ab und nennt die Dateien.** Es gibt bewusst kein `--force`, und
|
|
146
|
+
auch `--yes` löst keinen Konflikt auf: eine automatische Wahl würde eine der beiden Fassungen still
|
|
147
|
+
verlieren, und das sähe aus wie ein gelungener Push.
|
|
148
|
+
|
|
149
|
+
Ein Push löscht nichts, was nur Arkven kennt: der erzeugte Server bleibt stehen. Ein abgebrochener
|
|
150
|
+
Lauf (Strg-C, Netz weg) hinterlässt kein halbes Projekt, angelegt wird erst nach vollständiger
|
|
151
|
+
Übertragung.
|
|
152
|
+
|
|
153
|
+
`--deploy` ruft dieselbe Route wie die Oberfläche und mit derselben Rollenprüfung. Scheitert der
|
|
154
|
+
Lauf, steht die **erste** Fehlerzeile oben, und dein Code bleibt übertragen.
|
|
155
|
+
|
|
156
|
+
### Der Name wird nicht geraten
|
|
157
|
+
|
|
158
|
+
Beim ersten Push heißt das Projekt so, wie `--name` es sagt; ohne die Angabe gilt der `name` aus
|
|
159
|
+
der `package.json` der Projektwurzel, danach der Name der Wurzel selbst. Sagt keiner davon etwas
|
|
160
|
+
über das Projekt (`server`, `app`, `src` …), wird gefragt. Gibt es kein Terminal, bricht der Lauf ab
|
|
161
|
+
und nennt `--name` als Weg. Aus einem Ordnernamen wurde schon einmal ein Projekt namens „server".
|
|
162
|
+
|
|
163
|
+
### Zwei Teile: Server und Frontend in getrennten Ordnern
|
|
164
|
+
|
|
165
|
+
Arkven hält ein Projekt an **zwei** Orten, und sie haben verschiedene Aufgaben: aus dem
|
|
166
|
+
Frontend-Teil entstehen Vorschau und Frontend-Bau, der Server-Teil geht in den Container. Liegen
|
|
167
|
+
beide bei dir in eigenen Ordnern, sagt das `arkven.json`:
|
|
168
|
+
|
|
169
|
+
```jsonc
|
|
170
|
+
{
|
|
171
|
+
"verzeichnisse": {
|
|
172
|
+
"server": "server", // geht in den Container
|
|
173
|
+
"frontend": "web" // wird die Vorschau
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Beide Angaben sind optional und relativ zur Projektwurzel. Ohne sie ist die Projektwurzel der eine
|
|
179
|
+
Baum. Mit der Angabe gilt:
|
|
180
|
+
|
|
181
|
+
- **Beide Bäume werden gesammelt**, jeder mit Pfaden relativ zu seinem Verzeichnis: aus
|
|
182
|
+
`web/src/App.tsx` wird `/src/App.tsx` in der App, aus `server/src/index.ts` wird `src/index.ts`
|
|
183
|
+
im Server-Quelltext. Der Bericht sagt vor dem Schreiben, welche Datei wohin geht.
|
|
184
|
+
- **Geprüft wird der Server-Teil**, nicht die Wurzel.
|
|
185
|
+
- **`arkven.json` reist mit dem Frontend-Teil.** Der Bau liest deine `mitgebracht`-Angaben dort;
|
|
186
|
+
ohne diesen Schritt käme deine eigene `tailwind.config.js` unter das Scaffold.
|
|
187
|
+
- **Was außerhalb beider Ordner liegt, kommt nicht mit** und wird beim Namen genannt. Braucht ein
|
|
188
|
+
Teil einen gemeinsamen `shared/`-Ordner, muss er innerhalb seines Verzeichnisses liegen.
|
|
189
|
+
|
|
190
|
+
Ein Verzeichnis, das es nicht gibt, bricht den Lauf ab, statt still auf „ein Baum" zurückzufallen:
|
|
191
|
+
genau dieser stille Rückfall hat am 2026-08-01 einen Express-Server in die Frontend-Vorschau
|
|
192
|
+
gelegt. Das Ergebnis war eine leere Seite und die Frage „wo ist mein Frontend?".
|
|
193
|
+
|
|
194
|
+
## `arkven init`
|
|
195
|
+
|
|
196
|
+
`init` liest, was da ist (`package.json`, Lockfile, eigener Server, `drizzle/`-Historie,
|
|
197
|
+
Build-Setup) und schreibt **eine** Datei: `arkven.json`.
|
|
198
|
+
|
|
199
|
+
```jsonc
|
|
200
|
+
{
|
|
201
|
+
"$schema": "https://app.arkven.de/schema/arkven.json",
|
|
202
|
+
"mitgebracht": {
|
|
203
|
+
"server": true, // Arkven ergänzt, es scaffoldet nicht
|
|
204
|
+
"frontendBuild": false, // tailwind/postcss/vite bleiben deine
|
|
205
|
+
"schema": true // deine Migrationen gewinnen
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**Was nicht sicher erkennbar ist, wird gefragt**, mit Vorschlag, nie geraten. Gibt es kein Terminal
|
|
211
|
+
(Skript, CI, Pipe), bleibt das Feld aus der Datei heraus und der Lauf sagt, welches und warum. Ein
|
|
212
|
+
geratenes `server: true` hieße später: Arkven ergänzt einen Server, den es nie gab.
|
|
213
|
+
|
|
214
|
+
**Was fehlt, kommt als Diff zum Bestätigen**, nie als stille Schreibaktion: eine
|
|
215
|
+
`schemaGate.ts`-Vorlage, `tsx`/`drizzle-kit` in den `dependencies`, `.gitignore`-Einträge.
|
|
216
|
+
`arkven init --apply` übernimmt die Datei-Vorschläge gesammelt. Alles, was Pakete aus dem Netz holt,
|
|
217
|
+
bleibt ein Befehl für dich.
|
|
218
|
+
|
|
219
|
+
Die Datei gehört dir. Steht ein Feld schon drin, bleibt es stehen, auch wenn die Messung etwas
|
|
220
|
+
anderes sagt; der Unterschied wird benannt statt überschrieben. Ein zweiter Lauf ändert nichts, was
|
|
221
|
+
der erste richtig gemacht hat, und formatiert deine `package.json` nicht um.
|
|
222
|
+
|
|
223
|
+
## `arkven new`
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
arkven new meine-app
|
|
227
|
+
cd meine-app && npm install
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
Legt 15 Dateien an und misst danach selbst nach: **9 gehalten, 0 blockierend**, bevor die erste
|
|
231
|
+
eigene Zeile geschrieben ist.
|
|
232
|
+
|
|
233
|
+
| Was | Wo | Wogegen es hilft |
|
|
234
|
+
|---|---|---|
|
|
235
|
+
| Einstieg mit Härtungs-Prüfung beim Start | `src/index.ts` | Fällt ein Pflicht-Header beim Umbau heraus, bricht der Start ab, statt still ungehärtet zu laufen |
|
|
236
|
+
| Wächter gegen die laufende Datenbank | `src/schemaGate.ts` | Eine Migration kann mit Rückgabewert 0 enden, ohne dass das Schema steht |
|
|
237
|
+
| Eine Egress-Naht mit Host-Allowlist | `src/lib/egress.ts` | „Mit wem redet diese App?" hat genau eine Antwort |
|
|
238
|
+
| Härtung ohne Importe | `src/http/sicherheitsHeader.ts` | Läge sie im Einstieg, entstünde ein Import-Zyklus über die Middleware |
|
|
239
|
+
| Migration **und** Journal | `drizzle/` | Ohne Journal legt der Container das Schema neu an, statt zu migrieren |
|
|
240
|
+
| `tsx` und `drizzle-kit` in `dependencies` | `package.json` | Der Container installiert nur `dependencies` |
|
|
241
|
+
|
|
242
|
+
`arkven.json` entsteht dabei über dieselbe Erkennung wie bei `init`, nicht über eine zweite Regel.
|
|
243
|
+
|
|
244
|
+
**Es wird nie etwas überschrieben.** Liegt im Zielverzeichnis schon etwas, bricht der Lauf ab und
|
|
245
|
+
nennt beide Auswege (anderer Name oder `arkven init`). Ein leeres Verzeichnis darf er benutzen.
|
|
246
|
+
|
|
247
|
+
## `arkven check`
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
arkven check # lokal, in Sekunden
|
|
251
|
+
arkven check --tief # die Gates der Plattform laufen mit (braucht Anmeldung)
|
|
252
|
+
arkven check --json # stabile Regel-Kennungen, für Agenten
|
|
253
|
+
arkven check --sarif # SARIF 2.1.0 für GitHub Code-Scanning, VS Code und CI
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
Jeder Befund nennt Datei, Regel und Ausweg. Geprüft wird:
|
|
257
|
+
|
|
258
|
+
| Regel | Was gilt |
|
|
259
|
+
|---|---|
|
|
260
|
+
| `arkven/ein-paket` | Das Verzeichnis ist ein Paket, kein Verbund aus mehreren |
|
|
261
|
+
| `arkven/einstieg` | `src/index.ts` ist der Einstiegspunkt |
|
|
262
|
+
| `arkven/port-aus-umgebung` | Der Port kommt aus `process.env.PORT` |
|
|
263
|
+
| `arkven/datenbank-aus-umgebung` | Die Verbindung kommt aus `process.env.DATABASE_URL` |
|
|
264
|
+
| `arkven/keine-workspaces` | Eine `package.json`, keine Workspace-Verweise |
|
|
265
|
+
| `arkven/importe-aufloesbar` | Jeder Import zeigt auf ein Paket, das im Container existiert |
|
|
266
|
+
| `arkven/laufzeit-tsx` · `arkven/laufzeit-drizzle-kit` | Beide stehen in `dependencies`, nicht in `devDependencies` |
|
|
267
|
+
| `arkven/schema-waechter` | `src/schemaGate.ts` prüft das Schema gegen die laufende Datenbank |
|
|
268
|
+
|
|
269
|
+
Dazu zwei Hinweise, die nicht blockieren: ein fehlendes Migrations-Journal
|
|
270
|
+
(`arkven/migrations-journal`) und fehlender Baustein-Bezug (`arkven/paketbezug`).
|
|
271
|
+
|
|
272
|
+
**Monorepos:** Zeigst du auf ein Verzeichnis mit mehreren Paketen, meldet der Lauf **eine** Sache
|
|
273
|
+
statt sieben: der Container macht genau ein Paket zur App, also ist erst zu klären, welches. Die
|
|
274
|
+
übrigen Punkte erscheinen als „nicht geprüft", nicht als verletzt. Der Ausweg nennt die Kandidaten.
|
|
275
|
+
|
|
276
|
+
## `arkven fix`
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
arkven fix # höchstens 3 Durchgänge, `--runden N` für mehr
|
|
280
|
+
arkven auftrag # gibt nur die Arbeitsanweisung aus, ohne etwas zu tun
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
`fix` baut aus jedem blockierenden Befund einen Auftrag und übergibt ihn dem **lokal installierten
|
|
284
|
+
Claude Code** (dessen Konto, dessen Rechte, dessen Abrechnung, kein eigener Schlüssel). Danach misst
|
|
285
|
+
es erneut.
|
|
286
|
+
|
|
287
|
+
Die tragende Regel: **behoben ist nur, was der erneute Lauf misst.** Die Erfolgsmeldung des Agenten
|
|
288
|
+
zählt nichts. Bringt eine Runde keinen einzigen Punkt weiter, hört `fix` auf, statt dieselbe
|
|
289
|
+
Anweisung zu wiederholen. Es committet nichts und pusht nichts; die Änderungen liegen als `git diff`
|
|
290
|
+
zur Durchsicht. Ist kein `claude` installiert, sagt `fix` das und nennt den Weg.
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## Rückgabewerte
|
|
295
|
+
|
|
296
|
+
| Befehl | `0` | `1` | `2` |
|
|
297
|
+
|---|---|---|---|
|
|
298
|
+
| `check` | alles gehalten | mindestens ein blockierender Punkt | nichts messbar |
|
|
299
|
+
| `init` | alles geklärt | etwas bleibt zu entscheiden | nichts messbar |
|
|
300
|
+
| `new` | angelegt und nachgemessen | abgebrochen, nichts angelegt | |
|
|
301
|
+
| `push` | übernommen | Befund oder Konflikt | nichts messbar |
|
|
302
|
+
|
|
303
|
+
`--json` liefert dieselben Befunde mit stabilen Regel-Kennungen, damit ein Agent ohne Textanalyse
|
|
304
|
+
handeln kann.
|
package/dist/agents.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const MARKE_START = "<!-- arkven:start \u00B7 dieser Block wird von `arkven init` gepflegt -->";
|
|
2
|
+
export declare const MARKE_START_ALT = "<!-- arkven:start \u2014 dieser Block wird von `arkven init` gepflegt -->";
|
|
3
|
+
export declare const MARKE_ENDE = "<!-- arkven:ende -->";
|
|
4
|
+
export interface AgentsLage {
|
|
5
|
+
eigenerServer: boolean;
|
|
6
|
+
eigenerFrontendBau: boolean;
|
|
7
|
+
eigenesSchema: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function agentsBlock(lage: AgentsLage): string;
|
|
10
|
+
export declare function agentsNachher(vorher: string | undefined, lage: AgentsLage): string | undefined;
|
|
11
|
+
//# sourceMappingURL=agents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW,8EAAyE,CAAA;AAEjG,eAAO,MAAM,eAAe,8EAAyE,CAAA;AACrG,eAAO,MAAM,UAAU,yBAAyB,CAAA;AAEhD,MAAM,WAAW,UAAU;IAEzB,aAAa,EAAE,OAAO,CAAA;IAEtB,kBAAkB,EAAE,OAAO,CAAA;IAE3B,aAAa,EAAE,OAAO,CAAA;CACvB;AAsBD,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CA4CpD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAiB9F"}
|
package/dist/agents.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export const MARKE_START = '<!-- arkven:start · dieser Block wird von `arkven init` gepflegt -->';
|
|
2
|
+
export const MARKE_START_ALT = '<!-- arkven:start — dieser Block wird von `arkven init` gepflegt -->';
|
|
3
|
+
export const MARKE_ENDE = '<!-- arkven:ende -->';
|
|
4
|
+
function herkunftsZeilen(lage) {
|
|
5
|
+
const zeilen = [];
|
|
6
|
+
zeilen.push(lage.eigenerServer
|
|
7
|
+
? '- **Der Server gehört diesem Projekt.** Arkven erzeugt hier nichts nach und überschreibt nichts. Was im Server-Verzeichnis steht, hast du geschrieben.'
|
|
8
|
+
: '- **Den Server stellt Arkven.** Er wird bei jedem Ausrollen neu erzeugt. Änderungen daran gehen beim nächsten Lauf verloren, ohne Meldung.');
|
|
9
|
+
zeilen.push(lage.eigenerFrontendBau
|
|
10
|
+
? '- **Den Frontend-Bau führt dieses Projekt selbst.** Deine Bau-Konfiguration bleibt unberührt.'
|
|
11
|
+
: '- **Den Frontend-Bau stellt Arkven** (vite). Eine eigene Bau-Konfiguration hier wirkt nicht.');
|
|
12
|
+
zeilen.push(lage.eigenesSchema
|
|
13
|
+
? '- **Die Migrationen gehören diesem Projekt.** Sie gewinnen gegen erzeugte. `drizzle/meta/_journal.json` muss mitreisen, sonst läuft keine einzige SQL-Datei.'
|
|
14
|
+
: '- **Die Migrationen erzeugt Arkven** aus dem Schema. Handgeschriebenes SQL hier wird nicht ausgeführt.');
|
|
15
|
+
return zeilen;
|
|
16
|
+
}
|
|
17
|
+
export function agentsBlock(lage) {
|
|
18
|
+
return [
|
|
19
|
+
MARKE_START,
|
|
20
|
+
'',
|
|
21
|
+
'## Diese App läuft auf Arkven',
|
|
22
|
+
'',
|
|
23
|
+
'Arkven baut die App in einen Container und prüft sie vor dem Veröffentlichen. Was diese Prüfung',
|
|
24
|
+
'nicht besteht, geht nicht live. Die Regeln unten sind deshalb keine Empfehlungen.',
|
|
25
|
+
'',
|
|
26
|
+
'### Was dir gehört und was Arkven stellt',
|
|
27
|
+
'',
|
|
28
|
+
...herkunftsZeilen(lage),
|
|
29
|
+
'',
|
|
30
|
+
'### Die Befehle',
|
|
31
|
+
'',
|
|
32
|
+
'```bash',
|
|
33
|
+
'arkven check # prüft dieses Verzeichnis gegen den Container-Vertrag (kein Netz nötig)',
|
|
34
|
+
'arkven check --json # dasselbe maschinenlesbar, mit stabilen Regel-Kennungen',
|
|
35
|
+
'arkven check --tief # zusätzlich die echten Tore der Plattform (braucht `arkven login`)',
|
|
36
|
+
'arkven push # zeigt erst, was passieren würde, und überträgt es dann',
|
|
37
|
+
'```',
|
|
38
|
+
'',
|
|
39
|
+
'`arkven check` ist die Abnahme. Wenn du eine Änderung für fertig hältst, ist sie es, sobald',
|
|
40
|
+
'dieser Lauf grün ist, nicht vorher und nicht, weil sie plausibel aussieht.',
|
|
41
|
+
'',
|
|
42
|
+
'### Was du nicht anfassen darfst',
|
|
43
|
+
'',
|
|
44
|
+
'- **`.env`**: sie verlässt diesen Rechner nie und steht in keinem Push. Trage nichts hinein,',
|
|
45
|
+
' was die App zum Laufen braucht; dafür gibt es die Umgebungsvariablen in Arkven.',
|
|
46
|
+
'- **`arkven/nachweis.md`**: ein gerechneter Bericht, keine Quelle. Er kommt beim Holen herunter',
|
|
47
|
+
' und geht nie zurück. Ihn zu bearbeiten ändert nichts und täuscht einen Stand vor.',
|
|
48
|
+
'- **`arkven.spec.json`**: der Prüf-Vertrag. Arkven schreibt ihn fort. Wer einen Bereich baut,',
|
|
49
|
+
' ohne ihn dort zu nennen, bekommt für ihn **keine** Prüfung: die Fläche geht ungeprüft live.',
|
|
50
|
+
'',
|
|
51
|
+
'### Zwei Fallstricke, die still bleiben',
|
|
52
|
+
'',
|
|
53
|
+
'1. **Eine Wahrheit, ein Pfad.** Lege keinen zweiten Speicher für dieselbe Sache an und keinen',
|
|
54
|
+
' zweiten Weg, dieselbe Frage zu beantworten. Zwei Quellen laufen auseinander, und niemand',
|
|
55
|
+
' merkt es, bis die Antworten sich widersprechen.',
|
|
56
|
+
'2. **Kein Zustand, der wie Erfolg aussieht.** Kein leerer `catch`, kein Vorgabewert für etwas,',
|
|
57
|
+
' das nicht gemessen werden konnte. Was sich nicht messen lässt, wird gemeldet, nicht geraten.',
|
|
58
|
+
'',
|
|
59
|
+
MARKE_ENDE,
|
|
60
|
+
].join('\n');
|
|
61
|
+
}
|
|
62
|
+
export function agentsNachher(vorher, lage) {
|
|
63
|
+
const block = agentsBlock(lage);
|
|
64
|
+
if (vorher === undefined) {
|
|
65
|
+
return ['# Hinweise für Agenten', '', block, ''].join('\n');
|
|
66
|
+
}
|
|
67
|
+
const start = vorher.includes(MARKE_START) ? vorher.indexOf(MARKE_START) : vorher.indexOf(MARKE_START_ALT);
|
|
68
|
+
const ende = vorher.indexOf(MARKE_ENDE);
|
|
69
|
+
if (start >= 0 && ende > start) {
|
|
70
|
+
const neu = vorher.slice(0, start) + block + vorher.slice(ende + MARKE_ENDE.length);
|
|
71
|
+
return neu === vorher ? undefined : neu;
|
|
72
|
+
}
|
|
73
|
+
const basis = vorher.endsWith('\n') || vorher === '' ? vorher : `${vorher}\n`;
|
|
74
|
+
return `${basis}\n${block}\n`;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,WAAW,GAAG,sEAAsE,CAAA;AAEjG,MAAM,CAAC,MAAM,eAAe,GAAG,sEAAsE,CAAA;AACrG,MAAM,CAAC,MAAM,UAAU,GAAG,sBAAsB,CAAA;AAWhD,SAAS,eAAe,CAAC,IAAgB;IACvC,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,aAAa;QAChB,CAAC,CAAC,wJAAwJ;QAC1J,CAAC,CAAC,4IAA4I,CACjJ,CAAA;IACD,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,kBAAkB;QACrB,CAAC,CAAC,+FAA+F;QACjG,CAAC,CAAC,8FAA8F,CACnG,CAAA;IACD,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,aAAa;QAChB,CAAC,CAAC,8JAA8J;QAChK,CAAC,CAAC,wGAAwG,CAC7G,CAAA;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAgB;IAC1C,OAAO;QACL,WAAW;QACX,EAAE;QACF,+BAA+B;QAC/B,EAAE;QACF,iGAAiG;QACjG,mFAAmF;QACnF,EAAE;QACF,0CAA0C;QAC1C,EAAE;QACF,GAAG,eAAe,CAAC,IAAI,CAAC;QACxB,EAAE;QACF,iBAAiB;QACjB,EAAE;QACF,SAAS;QACT,gGAAgG;QAChG,gFAAgF;QAChF,2FAA2F;QAC3F,gFAAgF;QAChF,KAAK;QACL,EAAE;QACF,6FAA6F;QAC7F,4EAA4E;QAC5E,EAAE;QACF,kCAAkC;QAClC,EAAE;QACF,8FAA8F;QAC9F,mFAAmF;QACnF,iGAAiG;QACjG,qFAAqF;QACrF,+FAA+F;QAC/F,+FAA+F;QAC/F,EAAE;QACF,yCAAyC;QACzC,EAAE;QACF,+FAA+F;QAC/F,6FAA6F;QAC7F,oDAAoD;QACpD,gGAAgG;QAChG,iGAAiG;QACjG,EAAE;QACF,UAAU;KACX,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAA0B,EAAE,IAAgB;IACxE,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;IAE/B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,CAAC,wBAAwB,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7D,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;IAC1G,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAEvC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;QACnF,OAAO,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAA;IACzC,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAA;IAC7E,OAAO,GAAG,KAAK,KAAK,KAAK,IAAI,CAAA;AAC/B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auftrag.d.ts","sourceRoot":"","sources":["../src/auftrag.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CA+C/C"}
|
package/dist/auftrag.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { fuerAgenten, fuerAgentenZusaetzlich } from './befund.js';
|
|
2
|
+
export function baueAuftrag(e) {
|
|
3
|
+
const zuTun = fuerAgenten(e.befunde);
|
|
4
|
+
const kuer = fuerAgentenZusaetzlich(e.befunde);
|
|
5
|
+
if (zuTun.length === 0 && kuer.length === 0)
|
|
6
|
+
return '';
|
|
7
|
+
const punkte = zuTun
|
|
8
|
+
.map((b, i) => {
|
|
9
|
+
const zeilen = [`${i + 1}. [${b.regel}]${b.ort ? ` (${b.ort})` : ''}`, ` Was gilt: ${b.titel}`, ` Ziel: ${b.ausweg}`];
|
|
10
|
+
return zeilen.join('\n');
|
|
11
|
+
})
|
|
12
|
+
.join('\n\n');
|
|
13
|
+
const kuerZeilen = kuer.map((b, i) => [`${i + 1}. [${b.regel}]${b.ort ? ` (${b.ort})` : ''}`, ` Was gilt: ${b.titel}`, ` Ziel: ${b.ausweg}`].join('\n'));
|
|
14
|
+
const kuerText = kuer.length
|
|
15
|
+
? ['', '', `Außerdem ${kuer.length} Punkt(e), die NICHTS aufhalten und die App trotzdem besser machen:`, '', kuerZeilen.join('\n\n'), '', 'Diese zuletzt, nach den Punkten oben.'].join('\n')
|
|
16
|
+
: '';
|
|
17
|
+
if (zuTun.length === 0) {
|
|
18
|
+
return `Dieses Projekt läuft auf Arkven, und der Container-Vertrag hält.${kuerText}
|
|
19
|
+
|
|
20
|
+
Bitte arbeite die Punkte im Projektverzeichnis ab. Regeln für diese Arbeit:
|
|
21
|
+
|
|
22
|
+
- Ändere so wenig wie nötig. Kein Umbau, der über die genannten Punkte hinausgeht.
|
|
23
|
+
- Erhalte das Verhalten der Anwendung.
|
|
24
|
+
- Committe nichts und pushe nichts. Die Änderungen bleiben als Arbeitsstand stehen.
|
|
25
|
+
`;
|
|
26
|
+
}
|
|
27
|
+
return `Dieses Projekt soll auf Arkven laufen. Arkven baut jede App in einen Container, der
|
|
28
|
+
\`src/index.ts\` mit tsx startet, den Port über PORT und die Datenbank über DATABASE_URL
|
|
29
|
+
hereingibt, und nur die \`dependencies\` der Wurzel-package.json installiert.
|
|
30
|
+
|
|
31
|
+
Gegen diesen Vertrag halten ${zuTun.length} Punkt(e) nicht:
|
|
32
|
+
|
|
33
|
+
${punkte}${kuerText}
|
|
34
|
+
|
|
35
|
+
Bitte behebe sie im Projektverzeichnis. Regeln für diese Arbeit:
|
|
36
|
+
|
|
37
|
+
- Ändere so wenig wie nötig. Kein Umbau, der über die genannten Punkte hinausgeht.
|
|
38
|
+
- Erhalte das Verhalten der Anwendung. Wo eine Umgebungsvariable neu gelesen wird, bleibt der
|
|
39
|
+
bisherige Wert der Rückfall für lokale Läufe.
|
|
40
|
+
- Committe nichts und pushe nichts. Die Änderungen bleiben als Arbeitsstand stehen.
|
|
41
|
+
- Wenn ein Punkt eine Entscheidung verlangt, die nur ein Mensch treffen kann, lass ihn liegen und
|
|
42
|
+
sage am Ende, welcher und warum.
|
|
43
|
+
- Behaupte am Ende NICHT, alles sei behoben. Das misst \`arkven check\` gleich selbst.`;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=auftrag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auftrag.js","sourceRoot":"","sources":["../src/auftrag.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAGjE,MAAM,UAAU,WAAW,CAAC,CAAW;IACrC,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IACpC,MAAM,IAAI,GAAG,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAC9C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEtD,MAAM,MAAM,GAAG,KAAK;SACjB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACZ,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC,KAAK,EAAE,EAAE,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;QACzH,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAA;IAEf,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACnC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC,KAAK,EAAE,EAAE,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACtH,CAAA;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM;QAC1B,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,YAAY,IAAI,CAAC,MAAM,qEAAqE,EAAE,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,uCAAuC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7L,CAAC,CAAC,EAAE,CAAA;IAEN,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,mEAAmE,QAAQ;;;;;;;CAOrF,CAAA;IACC,CAAC;IAED,OAAO;;;;8BAIqB,KAAK,CAAC,MAAM;;EAExC,MAAM,GAAG,QAAQ;;;;;;;;;;uFAUoE,CAAA;AACvF,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Befund } from './befund.js';
|
|
2
|
+
import { BAUPLAN_DATEI, AUFTRAG_DATEI } from './geteilt/bauplan/index.js';
|
|
3
|
+
export { BAUPLAN_DATEI, AUFTRAG_DATEI };
|
|
4
|
+
export declare function pruefeBauplan(wurzel: string): Befund[];
|
|
5
|
+
export declare function pruefeBraucht(wurzel: string, braucht: Record<string, boolean>, teile: string[]): Befund[];
|
|
6
|
+
export declare function pruefeMailArten(wurzel: string, arten: readonly string[]): Befund[];
|
|
7
|
+
export declare function pruefeAnker(dateien: ReadonlyArray<{
|
|
8
|
+
pfad: string;
|
|
9
|
+
inhalt: string;
|
|
10
|
+
}>, screens: ReadonlyArray<{
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
slug?: string;
|
|
14
|
+
}>): Befund[];
|
|
15
|
+
//# sourceMappingURL=bauplan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bauplan.d.ts","sourceRoot":"","sources":["../src/bauplan.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAkC,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEzG,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,CAAA;AAEvC,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CA6BtD;AA+CD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAsBzG;AA+BD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CA0BlF;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,EACxD,OAAO,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAClE,MAAM,EAAE,CAyDV"}
|