@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.
Files changed (135) hide show
  1. package/CHANGELOG.md +105 -0
  2. package/README.md +304 -0
  3. package/dist/agents.d.ts +11 -0
  4. package/dist/agents.d.ts.map +1 -0
  5. package/dist/agents.js +76 -0
  6. package/dist/agents.js.map +1 -0
  7. package/dist/auftrag.d.ts +3 -0
  8. package/dist/auftrag.d.ts.map +1 -0
  9. package/dist/auftrag.js +45 -0
  10. package/dist/auftrag.js.map +1 -0
  11. package/dist/bauplan.d.ts +15 -0
  12. package/dist/bauplan.d.ts.map +1 -0
  13. package/dist/bauplan.js +219 -0
  14. package/dist/bauplan.js.map +1 -0
  15. package/dist/befehle.d.ts +12 -0
  16. package/dist/befehle.d.ts.map +1 -0
  17. package/dist/befehle.js +77 -0
  18. package/dist/befehle.js.map +1 -0
  19. package/dist/befund.d.ts +21 -0
  20. package/dist/befund.d.ts.map +1 -0
  21. package/dist/befund.js +107 -0
  22. package/dist/befund.js.map +1 -0
  23. package/dist/codeAblage.d.ts +31 -0
  24. package/dist/codeAblage.d.ts.map +1 -0
  25. package/dist/codeAblage.js +80 -0
  26. package/dist/codeAblage.js.map +1 -0
  27. package/dist/deklaration.d.ts +3 -0
  28. package/dist/deklaration.d.ts.map +1 -0
  29. package/dist/deklaration.js +14 -0
  30. package/dist/deklaration.js.map +1 -0
  31. package/dist/diff.d.ts +10 -0
  32. package/dist/diff.d.ts.map +1 -0
  33. package/dist/diff.js +72 -0
  34. package/dist/diff.js.map +1 -0
  35. package/dist/erkennung.d.ts +26 -0
  36. package/dist/erkennung.d.ts.map +1 -0
  37. package/dist/erkennung.js +174 -0
  38. package/dist/erkennung.js.map +1 -0
  39. package/dist/fix.d.ts +26 -0
  40. package/dist/fix.d.ts.map +1 -0
  41. package/dist/fix.js +101 -0
  42. package/dist/fix.js.map +1 -0
  43. package/dist/geteilt/bauplan/form.d.ts +100 -0
  44. package/dist/geteilt/bauplan/form.d.ts.map +1 -0
  45. package/dist/geteilt/bauplan/form.js +21 -0
  46. package/dist/geteilt/bauplan/form.js.map +1 -0
  47. package/dist/geteilt/bauplan/index.d.ts +4 -0
  48. package/dist/geteilt/bauplan/index.d.ts.map +1 -0
  49. package/dist/geteilt/bauplan/index.js +4 -0
  50. package/dist/geteilt/bauplan/index.js.map +1 -0
  51. package/dist/geteilt/bauplan/lesen.d.ts +6 -0
  52. package/dist/geteilt/bauplan/lesen.d.ts.map +1 -0
  53. package/dist/geteilt/bauplan/lesen.js +344 -0
  54. package/dist/geteilt/bauplan/lesen.js.map +1 -0
  55. package/dist/geteilt/bauplan/schreiben.d.ts +3 -0
  56. package/dist/geteilt/bauplan/schreiben.d.ts.map +1 -0
  57. package/dist/geteilt/bauplan/schreiben.js +80 -0
  58. package/dist/geteilt/bauplan/schreiben.js.map +1 -0
  59. package/dist/index.d.ts +3 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +352 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/init.d.ts +28 -0
  64. package/dist/init.d.ts.map +1 -0
  65. package/dist/init.js +324 -0
  66. package/dist/init.js.map +1 -0
  67. package/dist/login.d.ts +45 -0
  68. package/dist/login.d.ts.map +1 -0
  69. package/dist/login.js +162 -0
  70. package/dist/login.js.map +1 -0
  71. package/dist/mcp.d.ts +18 -0
  72. package/dist/mcp.d.ts.map +1 -0
  73. package/dist/mcp.js +115 -0
  74. package/dist/mcp.js.map +1 -0
  75. package/dist/neu.d.ts +17 -0
  76. package/dist/neu.d.ts.map +1 -0
  77. package/dist/neu.js +118 -0
  78. package/dist/neu.js.map +1 -0
  79. package/dist/npmrc.d.ts +9 -0
  80. package/dist/npmrc.d.ts.map +1 -0
  81. package/dist/npmrc.js +49 -0
  82. package/dist/npmrc.js.map +1 -0
  83. package/dist/projekte.d.ts +23 -0
  84. package/dist/projekte.d.ts.map +1 -0
  85. package/dist/projekte.js +82 -0
  86. package/dist/projekte.js.map +1 -0
  87. package/dist/pull.d.ts +15 -0
  88. package/dist/pull.d.ts.map +1 -0
  89. package/dist/pull.js +301 -0
  90. package/dist/pull.js.map +1 -0
  91. package/dist/push/bericht.d.ts +8 -0
  92. package/dist/push/bericht.d.ts.map +1 -0
  93. package/dist/push/bericht.js +85 -0
  94. package/dist/push/bericht.js.map +1 -0
  95. package/dist/push/form.d.ts +67 -0
  96. package/dist/push/form.d.ts.map +1 -0
  97. package/dist/push/form.js +6 -0
  98. package/dist/push/form.js.map +1 -0
  99. package/dist/push/medien.d.ts +7 -0
  100. package/dist/push/medien.d.ts.map +1 -0
  101. package/dist/push/medien.js +154 -0
  102. package/dist/push/medien.js.map +1 -0
  103. package/dist/push/sammeln.d.ts +34 -0
  104. package/dist/push/sammeln.d.ts.map +1 -0
  105. package/dist/push/sammeln.js +112 -0
  106. package/dist/push/sammeln.js.map +1 -0
  107. package/dist/push/verzeichnisse.d.ts +40 -0
  108. package/dist/push/verzeichnisse.d.ts.map +1 -0
  109. package/dist/push/verzeichnisse.js +158 -0
  110. package/dist/push/verzeichnisse.js.map +1 -0
  111. package/dist/push.d.ts +8 -0
  112. package/dist/push.d.ts.map +1 -0
  113. package/dist/push.js +306 -0
  114. package/dist/push.js.map +1 -0
  115. package/dist/starter.d.ts +4 -0
  116. package/dist/starter.d.ts.map +1 -0
  117. package/dist/starter.js +587 -0
  118. package/dist/starter.js.map +1 -0
  119. package/dist/tiefpruefung.d.ts +39 -0
  120. package/dist/tiefpruefung.d.ts.map +1 -0
  121. package/dist/tiefpruefung.js +56 -0
  122. package/dist/tiefpruefung.js.map +1 -0
  123. package/dist/vertrag.d.ts +6 -0
  124. package/dist/vertrag.d.ts.map +1 -0
  125. package/dist/vertrag.js +267 -0
  126. package/dist/vertrag.js.map +1 -0
  127. package/dist/vertragSpaet.d.ts +4 -0
  128. package/dist/vertragSpaet.d.ts.map +1 -0
  129. package/dist/vertragSpaet.js +158 -0
  130. package/dist/vertragSpaet.js.map +1 -0
  131. package/dist/vorlagen.d.ts +7 -0
  132. package/dist/vorlagen.d.ts.map +1 -0
  133. package/dist/vorlagen.js +83 -0
  134. package/dist/vorlagen.js.map +1 -0
  135. package/package.json +65 -0
package/dist/init.js ADDED
@@ -0,0 +1,324 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { agentsNachher } from './agents.js';
4
+ import { alsZeilen } from './diff.js';
5
+ import { erkenneHerkunft, FELDER, FELD_NAME } from './erkennung.js';
6
+ import { STANDARD_SERVER } from './login.js';
7
+ import { lies } from './vertrag.js';
8
+ import { GITIGNORE_EINTRAEGE, VORLAGE_SCHEMA_GATE } from './vorlagen.js';
9
+ const DATEI = 'arkven.json';
10
+ const SCHEMA_URL = `${STANDARD_SERVER}/schema/arkven.json`;
11
+ const jaNein = (b) => (b ? 'ja' : 'nein');
12
+ function sicherUmschreibbar(text) {
13
+ let daten;
14
+ try {
15
+ daten = JSON.parse(text);
16
+ }
17
+ catch {
18
+ return undefined;
19
+ }
20
+ for (const einrueckung of [2, 4]) {
21
+ if (`${JSON.stringify(daten, null, einrueckung)}\n` === text)
22
+ return einrueckung;
23
+ if (JSON.stringify(daten, null, einrueckung) === text)
24
+ return einrueckung;
25
+ }
26
+ return undefined;
27
+ }
28
+ function baueVorschlaege(wurzel, eigenerServer, lockfiles, lage) {
29
+ const v = [];
30
+ const pkgPfad = path.join(wurzel, 'package.json');
31
+ const pkgText = lies(pkgPfad) ?? '{}';
32
+ let pkg = {};
33
+ try {
34
+ pkg = JSON.parse(pkgText);
35
+ }
36
+ catch {
37
+ return v;
38
+ }
39
+ const deps = pkg.dependencies ?? {};
40
+ const devDeps = pkg.devDependencies ?? {};
41
+ if (eigenerServer) {
42
+ if (!fs.existsSync(path.join(wurzel, 'src', 'schemaGate.ts'))) {
43
+ const hatTreiber = Boolean(deps['pg']);
44
+ v.push({
45
+ regel: 'arkven/schema-waechter',
46
+ titel: 'src/schemaGate.ts anlegen',
47
+ grund: 'Der Container ruft diese Datei nach der Migration. Sie prüft, ob das Schema wirklich angelegt ist, statt eine tote App starten zu lassen.' +
48
+ (hatTreiber ? '' : ' Die Vorlage nutzt `pg`; das steht noch nicht in deinen dependencies, deshalb der Befehl darunter.'),
49
+ datei: { pfad: 'src/schemaGate.ts', vorher: '', nachher: VORLAGE_SCHEMA_GATE },
50
+ });
51
+ if (!hatTreiber) {
52
+ v.push({
53
+ regel: 'arkven/schema-waechter-treiber',
54
+ titel: '`pg` in die dependencies aufnehmen',
55
+ grund: 'Die Vorlage für den Wächter verbindet sich damit zur Datenbank. Nutzt du einen anderen Treiber, tausche die Zeile in der Vorlage.',
56
+ befehl: 'npm install --save pg',
57
+ });
58
+ }
59
+ }
60
+ const umziehen = ['tsx', 'drizzle-kit'].filter((w) => !deps[w] && devDeps[w]);
61
+ const fehlen = ['tsx', 'drizzle-kit'].filter((w) => !deps[w] && !devDeps[w]);
62
+ if (umziehen.length > 0) {
63
+ const einrueckung = sicherUmschreibbar(pkgText);
64
+ const grund = `Der Container installiert nur dependencies. Unter devDependencies ${umziehen.length > 1 ? 'fehlen' : 'fehlt'} ${umziehen.join(' und ')} beim Start.`;
65
+ if (einrueckung) {
66
+ const neu = JSON.parse(pkgText);
67
+ neu.dependencies = { ...neu.dependencies };
68
+ for (const w of umziehen) {
69
+ neu.dependencies[w] = devDeps[w];
70
+ delete neu.devDependencies?.[w];
71
+ }
72
+ if (neu.devDependencies && Object.keys(neu.devDependencies).length === 0)
73
+ delete neu.devDependencies;
74
+ v.push({
75
+ regel: 'arkven/laufzeit-werkzeuge',
76
+ titel: `${umziehen.join(' und ')} von devDependencies nach dependencies`,
77
+ grund,
78
+ datei: {
79
+ pfad: 'package.json',
80
+ vorher: pkgText,
81
+ nachher: `${JSON.stringify(neu, null, einrueckung)}\n`,
82
+ },
83
+ });
84
+ }
85
+ else {
86
+ v.push({
87
+ regel: 'arkven/laufzeit-werkzeuge',
88
+ titel: `${umziehen.join(' und ')} gehören in die dependencies`,
89
+ grund: `${grund} Deine package.json hat eine eigene Formatierung, deshalb schlage ich den Befehl vor statt sie umzuschreiben.`,
90
+ befehl: `npm install --save ${umziehen.join(' ')}`,
91
+ });
92
+ }
93
+ }
94
+ if (fehlen.length > 0) {
95
+ v.push({
96
+ regel: 'arkven/laufzeit-fehlend',
97
+ titel: `${fehlen.join(' und ')} in die dependencies aufnehmen`,
98
+ grund: `Der Container ruft ${fehlen.join(' und ')} beim Start. Die Fassung wählst du, deshalb steht hier ein Befehl statt eines Diffs.`,
99
+ befehl: `npm install --save ${fehlen.join(' ')}`,
100
+ });
101
+ }
102
+ }
103
+ const giPfad = path.join(wurzel, '.gitignore');
104
+ const giText = lies(giPfad);
105
+ const vorhandene = new Set((giText ?? '').split(/\r?\n/).map((z) => z.trim()));
106
+ const fehlendeEintraege = GITIGNORE_EINTRAEGE.filter((e) => !vorhandene.has(e));
107
+ if (fehlendeEintraege.length > 0) {
108
+ const basis = giText === undefined ? '' : giText.endsWith('\n') || giText === '' ? giText : `${giText}\n`;
109
+ v.push({
110
+ regel: 'arkven/gitignore',
111
+ titel: giText === undefined ? '.gitignore anlegen' : `.gitignore um ${fehlendeEintraege.length} Eintrag/Eintraege ergänzen`,
112
+ grund: 'Ohne diese Zeilen wandern installierte Pakete, Bau-Artefakte und Zugangsdaten ins Repo.',
113
+ datei: {
114
+ pfad: '.gitignore',
115
+ vorher: giText ?? '',
116
+ nachher: `${basis}${fehlendeEintraege.join('\n')}\n`,
117
+ },
118
+ });
119
+ }
120
+ const agPfad = path.join(wurzel, 'AGENTS.md');
121
+ const agVorher = lies(agPfad);
122
+ const agNachher = agentsNachher(agVorher, lage);
123
+ if (agNachher !== undefined) {
124
+ v.push({
125
+ regel: 'arkven/agents-md',
126
+ titel: agVorher === undefined ? 'AGENTS.md anlegen' : 'AGENTS.md um den Arkven-Block ergänzen',
127
+ grund: 'Ein Agent, der hier arbeitet, kennt sonst weder die Befehle noch die Grenzen, und fasst dann `.env` oder den Prüf-Vertrag an.',
128
+ datei: { pfad: 'AGENTS.md', vorher: agVorher ?? '', nachher: agNachher },
129
+ });
130
+ }
131
+ if (lockfiles.length > 0 && !lockfiles.includes('package-lock.json')) {
132
+ v.push({
133
+ regel: 'arkven/lockfile',
134
+ titel: 'package-lock.json erzeugen',
135
+ grund: `Hier liegt ${lockfiles.join(' und ')}, der Container installiert aber mit npm. Ohne package-lock.json bekommt er andere Fassungen als du.`,
136
+ befehl: 'npm install --package-lock-only',
137
+ });
138
+ }
139
+ return v;
140
+ }
141
+ export async function fahreInit(wurzel, opt) {
142
+ const leer = {
143
+ code: 0,
144
+ geschrieben: false,
145
+ mitgebracht: {},
146
+ gefragt: [],
147
+ offen: [],
148
+ vorschlaege: [],
149
+ uebernommen: [],
150
+ };
151
+ const erk = erkenneHerkunft(wurzel);
152
+ opt.sage(`Arkven richtet sich in ${wurzel} ein.`);
153
+ opt.sage('');
154
+ if (erk.keinProjekt) {
155
+ opt.sage(erk.keinProjekt.grund);
156
+ opt.sage(`So kommst du weiter: ${erk.keinProjekt.ausweg}`);
157
+ return { ...leer, code: 2 };
158
+ }
159
+ if (erk.verbund) {
160
+ opt.sage('Hier liegt ein Verbund aus mehreren Paketen. Der Container installiert nur im Wurzelverzeichnis, deshalb wird genau ein Paket zur App.');
161
+ opt.sage(erk.verbund.kandidaten.length > 0
162
+ ? `Dein Server sieht nach ${erk.verbund.kandidaten.map((k) => `\`${k}/\``).join(' oder ')} aus. So kommst du weiter: \`arkven init ${erk.verbund.kandidaten[0]}\`.`
163
+ : 'So kommst du weiter: bestimme das Paket, das die App werden soll, und rufe `arkven init` in diesem Verzeichnis auf.');
164
+ opt.sage(`Solange das offen ist, entsteht keine ${DATEI}: sie beschriebe ein Verzeichnis, das nie eine App wird.`);
165
+ return { ...leer, code: 1 };
166
+ }
167
+ const pfad = path.join(wurzel, DATEI);
168
+ const alterText = lies(pfad);
169
+ let alt = {};
170
+ if (alterText !== undefined) {
171
+ let gelesen;
172
+ try {
173
+ gelesen = JSON.parse(alterText);
174
+ }
175
+ catch (e) {
176
+ opt.sage(`Die vorhandene ${DATEI} liess sich nicht lesen: ${String(e?.message ?? e)}`);
177
+ opt.sage(`So kommst du weiter: behebe den JSON-Fehler (häufig ein Komma zu viel) oder benenne die Datei um, dann \`arkven init\` erneut.`);
178
+ return { ...leer, code: 1 };
179
+ }
180
+ if (typeof gelesen !== 'object' || gelesen === null || Array.isArray(gelesen)) {
181
+ opt.sage(`Die vorhandene ${DATEI} enthält kein Objekt, deshalb lässt sie sich nicht ergänzen.`);
182
+ opt.sage('So kommst du weiter: benenne die Datei um und rufe `arkven init` erneut auf.');
183
+ return { ...leer, code: 1 };
184
+ }
185
+ alt = gelesen;
186
+ }
187
+ const altMit = (alt.mitgebracht ?? {});
188
+ const mitgebracht = { ...altMit };
189
+ const gefragt = [];
190
+ const offen = [];
191
+ const hinweise = [];
192
+ const tabelle = [];
193
+ const breite = Math.max(...FELDER.map((f) => FELD_NAME[f].length));
194
+ const zeige = (feld, wert, belege) => {
195
+ tabelle.push(` ${FELD_NAME[feld].padEnd(breite)} ${wert.padEnd(6)}${belege.length > 0 ? `(${belege.join(', ')})` : ''}`);
196
+ };
197
+ const plan = FELDER.map((feld) => {
198
+ const m = erk[feld];
199
+ const schon = typeof altMit[feld] === 'boolean' ? altMit[feld] : undefined;
200
+ if (schon !== undefined) {
201
+ if (m.wert !== undefined && m.wert !== schon) {
202
+ hinweise.push(`${FELD_NAME[feld]}: in ${DATEI} steht ${jaNein(schon)}, gemessen habe ich ${jaNein(m.wert)} (${m.belege.join(', ')}). Deine Angabe bleibt stehen. ` +
203
+ `Soll die Messung gelten, entferne den Eintrag und rufe \`arkven init\` erneut auf.`);
204
+ }
205
+ return { feld, wert: schon, quelle: [`steht schon in ${DATEI}`] };
206
+ }
207
+ if (m.wert !== undefined)
208
+ return { feld, wert: m.wert, quelle: m.belege };
209
+ return { feld, quelle: m.belege, frage: m.frage };
210
+ });
211
+ const zuFragen = opt.frage ? plan.filter((p) => p.frage) : [];
212
+ if (zuFragen.length > 0) {
213
+ opt.sage(zuFragen.length === 1
214
+ ? 'Einen Punkt sehe ich hier nicht sicher, deshalb frage ich nach:'
215
+ : `${zuFragen.length} Punkte sehe ich hier nicht sicher, deshalb frage ich nach:`);
216
+ for (const p of zuFragen) {
217
+ p.wert = await opt.frage(p.frage.text, p.frage.vorschlag);
218
+ p.quelle = ['deine Antwort'];
219
+ gefragt.push(p.feld);
220
+ }
221
+ opt.sage('');
222
+ }
223
+ for (const p of plan) {
224
+ if (p.wert === undefined) {
225
+ offen.push(p.feld);
226
+ zeige(p.feld, 'offen', p.quelle);
227
+ hinweise.push(`${FELD_NAME[p.feld]}: ${p.frage?.text ?? 'hier lässt sich nichts sicher messen.'} ` +
228
+ 'Hier kann nicht zurückgefragt werden, deshalb steht das Feld nicht in der Datei. ' +
229
+ `So kommst du weiter: rufe \`arkven init\` in einem Terminal auf, oder trage das Feld selbst in ${DATEI} ein.`);
230
+ continue;
231
+ }
232
+ if (typeof altMit[p.feld] !== 'boolean')
233
+ mitgebracht[p.feld] = p.wert;
234
+ zeige(p.feld, jaNein(p.wert), p.quelle);
235
+ }
236
+ opt.sage('Gemessen:');
237
+ for (const z of tabelle)
238
+ opt.sage(z);
239
+ opt.sage('');
240
+ const neu = { ...alt, $schema: SCHEMA_URL, mitgebracht };
241
+ const geschrieben = JSON.stringify(alt) !== JSON.stringify(neu);
242
+ if (geschrieben) {
243
+ fs.writeFileSync(pfad, `${JSON.stringify(neu, null, 2)}\n`, 'utf8');
244
+ opt.sage(alterText === undefined ? `${DATEI} angelegt.` : `${DATEI} ergaenzt.`);
245
+ }
246
+ else {
247
+ opt.sage(`${DATEI} war schon richtig, nichts geändert.`);
248
+ }
249
+ for (const h of hinweise) {
250
+ opt.sage('');
251
+ opt.sage(h);
252
+ }
253
+ const eigenerServer = mitgebracht['server'] === true;
254
+ const lage = {
255
+ eigenerServer,
256
+ eigenerFrontendBau: mitgebracht['frontendBuild'] === true,
257
+ eigenesSchema: mitgebracht['schema'] === true,
258
+ };
259
+ const vorschlaege = baueVorschlaege(wurzel, eigenerServer, erk.lockfiles, lage);
260
+ const uebernommen = [];
261
+ if (vorschlaege.length > 0) {
262
+ opt.sage('');
263
+ opt.sage(opt.uebernehmen
264
+ ? `Vorschläge (${vorschlaege.length}). Die Datei-Vorschläge werden jetzt übernommen:`
265
+ : `Vorschläge (${vorschlaege.length}). Sie werden erst mit \`arkven init --apply\` übernommen:`);
266
+ let nummer = 0;
267
+ for (const v of vorschlaege) {
268
+ nummer++;
269
+ opt.sage('');
270
+ opt.sage(`${nummer}. ${v.titel} [${v.datei ? 'Datei' : 'Befehl'}]`);
271
+ opt.sage(` ${v.grund}`);
272
+ if (v.befehl)
273
+ opt.sage(` $ ${v.befehl}`);
274
+ if (v.datei) {
275
+ const neueDatei = v.datei.vorher === '';
276
+ const anzahl = v.datei.nachher.split('\n').length - (v.datei.nachher.endsWith('\n') ? 1 : 0);
277
+ opt.sage(` ${v.datei.pfad}${neueDatei ? ` (neu, ${anzahl} Zeilen)` : ''}`);
278
+ for (const z of alsZeilen(v.datei.vorher, v.datei.nachher))
279
+ opt.sage(z);
280
+ }
281
+ }
282
+ if (opt.uebernehmen) {
283
+ for (const v of vorschlaege) {
284
+ if (!v.datei)
285
+ continue;
286
+ const ziel = path.join(wurzel, v.datei.pfad);
287
+ fs.mkdirSync(path.dirname(ziel), { recursive: true });
288
+ fs.writeFileSync(ziel, v.datei.nachher, 'utf8');
289
+ uebernommen.push(v.datei.pfad);
290
+ }
291
+ opt.sage('');
292
+ opt.sage(uebernommen.length > 0 ? `Übernommen: ${uebernommen.join(', ')}.` : 'Es gab keinen Datei-Vorschlag zum Übernehmen.');
293
+ const befehle = vorschlaege.filter((v) => v.befehl);
294
+ if (befehle.length > 0) {
295
+ opt.sage(`Offen bleibt, was nur du ausführen kannst (es holt Pakete aus dem Netz): ${befehle.map((b) => b.befehl).join(' && ')}`);
296
+ }
297
+ }
298
+ }
299
+ const dateiVorschlaege = vorschlaege.filter((v) => v.datei);
300
+ const ersterBefehl = vorschlaege.find((v) => v.befehl)?.befehl;
301
+ opt.sage('');
302
+ if (offen.length > 0) {
303
+ opt.sage(`Nächster Schritt: rufe \`arkven init\` in einem Terminal auf, dann wird der offene Punkt gefragt statt geraten.`);
304
+ }
305
+ else if (dateiVorschlaege.length > 0 && !opt.uebernehmen) {
306
+ opt.sage('Nächster Schritt: `arkven init --apply` übernimmt die Datei-Vorschläge.');
307
+ }
308
+ else if (ersterBefehl && (opt.uebernehmen || dateiVorschlaege.length === 0)) {
309
+ opt.sage(`Nächster Schritt: \`${ersterBefehl}\``);
310
+ }
311
+ else {
312
+ opt.sage('Nächster Schritt: `arkven check` misst dein Projekt gegen den Container-Vertrag.');
313
+ }
314
+ return {
315
+ code: offen.length > 0 ? 1 : 0,
316
+ geschrieben,
317
+ mitgebracht: mitgebracht,
318
+ gefragt,
319
+ offen,
320
+ vorschlaege,
321
+ uebernommen,
322
+ };
323
+ }
324
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ export declare const STANDARD_SERVER = "https://app.arkven.de";
2
+ export declare function zugangsDatei(): string;
3
+ export interface GespeicherterZugang {
4
+ server: string;
5
+ cliToken: string;
6
+ registryToken: string;
7
+ laeuftAbAm: {
8
+ cli: number;
9
+ registry: number;
10
+ };
11
+ konto?: string;
12
+ teams?: Array<{
13
+ id: string;
14
+ name: string;
15
+ }>;
16
+ angemeldetAm: number;
17
+ }
18
+ export declare function leseZugang(): GespeicherterZugang | null;
19
+ export declare function schreibeZugang(z: GespeicherterZugang): string;
20
+ export declare function neuesGeheimnis(): {
21
+ verifier: string;
22
+ challenge: string;
23
+ };
24
+ export declare function herkunft(): string;
25
+ export interface LoginOptionen {
26
+ server?: string;
27
+ sage: (zeile: string) => void;
28
+ test?: {
29
+ kannBrowser: boolean;
30
+ abstandMs: number;
31
+ deadlineMs: number;
32
+ };
33
+ }
34
+ export interface LoginErgebnis {
35
+ code: number;
36
+ zugang?: GespeicherterZugang;
37
+ grund?: string;
38
+ }
39
+ export declare function fahreLogin(opts: LoginOptionen): Promise<LoginErgebnis>;
40
+ export declare function entpackeEinfuegeWert(wert: string): GespeicherterZugang | {
41
+ grund: string;
42
+ };
43
+ export declare function nimmEinfuegeWert(wert: string): LoginErgebnis;
44
+ export declare function tageBis(zeitpunkt: number, jetzt?: number): number;
45
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe,0BAA0B,CAAA;AAEtD,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3C,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,wBAAgB,UAAU,IAAI,mBAAmB,GAAG,IAAI,CAQvD;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAU7D;AAED,wBAAgB,cAAc,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAGxE;AAED,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAuBD,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAE7B,IAAI,CAAC,EAAE;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;CACvE;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CA2F5E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAqB1F;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAK5D;AAED,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAa,GAAG,MAAM,CAErE"}
package/dist/login.js ADDED
@@ -0,0 +1,162 @@
1
+ import { createHash, randomBytes } from 'node:crypto';
2
+ import fs from 'node:fs';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ import { spawn } from 'node:child_process';
6
+ export const STANDARD_SERVER = 'https://app.arkven.de';
7
+ export function zugangsDatei() {
8
+ return path.join(os.homedir(), '.arkven', 'zugang.json');
9
+ }
10
+ export function leseZugang() {
11
+ try {
12
+ const roh = fs.readFileSync(zugangsDatei(), 'utf8');
13
+ const j = JSON.parse(roh);
14
+ return j?.cliToken && j?.registryToken ? j : null;
15
+ }
16
+ catch {
17
+ return null;
18
+ }
19
+ }
20
+ export function schreibeZugang(z) {
21
+ const datei = zugangsDatei();
22
+ fs.mkdirSync(path.dirname(datei), { recursive: true });
23
+ fs.writeFileSync(datei, JSON.stringify(z, null, 2) + '\n', { mode: 0o600 });
24
+ try {
25
+ fs.chmodSync(datei, 0o600);
26
+ }
27
+ catch {
28
+ /* Windows kennt den Modus nicht; dort schuetzt das Benutzerverzeichnis. */
29
+ }
30
+ return datei;
31
+ }
32
+ export function neuesGeheimnis() {
33
+ const verifier = randomBytes(32).toString('base64url');
34
+ return { verifier, challenge: createHash('sha256').update(verifier, 'utf8').digest('base64url') };
35
+ }
36
+ export function herkunft() {
37
+ return `${os.hostname()} (${os.platform()})`;
38
+ }
39
+ function oeffneBrowser(url) {
40
+ const [befehl, args] = process.platform === 'win32'
41
+ ? ['cmd', ['/c', 'start', '', url]]
42
+ : process.platform === 'darwin'
43
+ ? ['open', [url]]
44
+ : ['xdg-open', [url]];
45
+ try {
46
+ const p = spawn(befehl, args, { stdio: 'ignore', detached: true });
47
+ p.on('error', () => { });
48
+ p.unref();
49
+ return true;
50
+ }
51
+ catch {
52
+ return false;
53
+ }
54
+ }
55
+ async function schlafe(ms) {
56
+ await new Promise((r) => setTimeout(r, ms));
57
+ }
58
+ export async function fahreLogin(opts) {
59
+ const server = (opts.server ?? process.env.ARKVEN_SERVER ?? STANDARD_SERVER).replace(/\/+$/, '');
60
+ const { verifier, challenge } = neuesGeheimnis();
61
+ const abstandMs = opts.test?.abstandMs ?? 2000;
62
+ const deadlineMs = opts.test?.deadlineMs ?? 10 * 60 * 1000;
63
+ let start;
64
+ try {
65
+ const res = await fetch(`${server}/api/auth/cli/start`, {
66
+ method: 'POST',
67
+ headers: { 'Content-Type': 'application/json' },
68
+ body: JSON.stringify({ challenge, herkunft: herkunft() }),
69
+ });
70
+ if (!res.ok) {
71
+ const text = await res.text().catch(() => '');
72
+ return {
73
+ code: 1,
74
+ grund: `Die Anmeldung liess sich bei ${server} nicht beginnen (HTTP ${res.status}).` +
75
+ (text ? `\n${text.slice(0, 400)}` : '') +
76
+ '\nSo kommst du weiter: die Adresse prüfen (--server) oder es in einem Moment erneut versuchen.',
77
+ };
78
+ }
79
+ start = (await res.json());
80
+ }
81
+ catch (e) {
82
+ return {
83
+ code: 2,
84
+ grund: `${server} war nicht erreichbar: ${String(e?.message || e)}\n` +
85
+ 'So kommst du weiter: die Internet-Verbindung und die Adresse prüfen (--server).',
86
+ };
87
+ }
88
+ opts.sage('');
89
+ opts.sage(' Öffne diese Seite, um dich anzumelden:');
90
+ opts.sage(` ${start.url}`);
91
+ opts.sage('');
92
+ opts.sage(` Auf der Seite sollte dieser Code stehen: ${start.code}`);
93
+ opts.sage('');
94
+ const konnte = opts.test ? opts.test.kannBrowser : oeffneBrowser(start.url);
95
+ opts.sage(konnte ? ' Der Browser sollte sich gleich öffnen. Warte auf die Bestätigung …' : ' Bitte den Link öffnen. Warte auf die Bestätigung …');
96
+ const ende = Date.now() + deadlineMs;
97
+ while (Date.now() < ende) {
98
+ await schlafe(abstandMs);
99
+ let res;
100
+ try {
101
+ res = await fetch(`${server}/api/auth/cli/token`, {
102
+ method: 'POST',
103
+ headers: { 'Content-Type': 'application/json' },
104
+ body: JSON.stringify({ anfrage: start.anfrage, verifier }),
105
+ });
106
+ }
107
+ catch {
108
+ continue;
109
+ }
110
+ if (res.status === 202)
111
+ continue;
112
+ const j = (await res.json().catch(() => ({})));
113
+ if (!res.ok || !j.cliToken || !j.registryToken || !j.laeuftAbAm) {
114
+ return { code: 1, grund: j.hinweis ?? 'Die Anmeldung ist fehlgeschlagen. So kommst du weiter: `arkven login` erneut ausführen.' };
115
+ }
116
+ const zugang = {
117
+ server,
118
+ cliToken: j.cliToken,
119
+ registryToken: j.registryToken,
120
+ laeuftAbAm: j.laeuftAbAm,
121
+ teams: j.teams,
122
+ angemeldetAm: Date.now(),
123
+ };
124
+ schreibeZugang(zugang);
125
+ return { code: 0, zugang };
126
+ }
127
+ return {
128
+ code: 1,
129
+ grund: 'Es kam keine Bestätigung an, und die Anmeldung ist abgelaufen.\n' +
130
+ 'So kommst du weiter: `arkven login` erneut ausführen und die angezeigte Seite öffnen.',
131
+ };
132
+ }
133
+ export function entpackeEinfuegeWert(wert) {
134
+ const roh = String(wert ?? '').trim();
135
+ const teile = roh.split('_');
136
+ if (teile.length !== 2 || !teile[1]) {
137
+ return { grund: 'Das sieht nicht nach dem Wert von der Bestätigungsseite aus. So kommst du weiter: den ganzen Wert kopieren, er beginnt mit `arkv1_`.' };
138
+ }
139
+ if (teile[0] !== 'arkv1') {
140
+ return { grund: `Dieser Wert hat die Kennung „${teile[0]}", dieses CLI kennt „arkv1". So kommst du weiter: \`npx @arkvenai/cli@latest login\` benutzen.` };
141
+ }
142
+ try {
143
+ const j = JSON.parse(Buffer.from(teile[1], 'base64url').toString('utf8'));
144
+ if (!j.s || !j.c || !j.r || !j.a)
145
+ return { grund: 'Der Wert ist unvollständig. So kommst du weiter: ihn noch einmal vollständig kopieren.' };
146
+ return { server: j.s, cliToken: j.c, registryToken: j.r, laeuftAbAm: j.a, angemeldetAm: Date.now() };
147
+ }
148
+ catch {
149
+ return { grund: 'Der Wert liess sich nicht lesen. So kommst du weiter: ihn noch einmal vollständig kopieren, ohne Zeilenumbruch.' };
150
+ }
151
+ }
152
+ export function nimmEinfuegeWert(wert) {
153
+ const z = entpackeEinfuegeWert(wert);
154
+ if ('grund' in z)
155
+ return { code: 1, grund: z.grund };
156
+ schreibeZugang(z);
157
+ return { code: 0, zugang: z };
158
+ }
159
+ export function tageBis(zeitpunkt, jetzt = Date.now()) {
160
+ return Math.max(0, Math.floor((zeitpunkt - jetzt) / (24 * 60 * 60 * 1000)));
161
+ }
162
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"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"}
package/dist/mcp.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ export interface Werkzeug {
2
+ name: string;
3
+ befehl: string;
4
+ beschreibung: string;
5
+ schema: Record<string, unknown>;
6
+ fuehreAus(argumente: Record<string, unknown>): Promise<string>;
7
+ }
8
+ export declare const WERKZEUGE: Werkzeug[];
9
+ interface Anfrage {
10
+ jsonrpc?: string;
11
+ id?: unknown;
12
+ method?: string;
13
+ params?: Record<string, unknown>;
14
+ }
15
+ export declare function beantworte(anfrage: Anfrage): Promise<Record<string, unknown> | null>;
16
+ export declare function fahreMcp(): Promise<number>;
17
+ export {};
18
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IAEZ,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CAC/D;AAoBD,eAAO,MAAM,SAAS,EAAE,QAAQ,EAqC/B,CAAA;AAED,UAAU,OAAO;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAmC1F;AAED,wBAAsB,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAmBhD"}