@arkvenai/cli 0.5.1 → 0.6.0

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 (139) hide show
  1. package/README.md +80 -242
  2. package/dist/befehle.js +138 -77
  3. package/dist/index.js +63 -334
  4. package/dist/projekt.js +121 -0
  5. package/dist/ruf.js +45 -0
  6. package/dist/uebertragen.js +185 -0
  7. package/dist/zugang.js +114 -0
  8. package/package.json +7 -39
  9. package/CHANGELOG.md +0 -105
  10. package/dist/agents.d.ts +0 -11
  11. package/dist/agents.d.ts.map +0 -1
  12. package/dist/agents.js +0 -76
  13. package/dist/agents.js.map +0 -1
  14. package/dist/auftrag.d.ts +0 -3
  15. package/dist/auftrag.d.ts.map +0 -1
  16. package/dist/auftrag.js +0 -45
  17. package/dist/auftrag.js.map +0 -1
  18. package/dist/bauplan.d.ts +0 -15
  19. package/dist/bauplan.d.ts.map +0 -1
  20. package/dist/bauplan.js +0 -219
  21. package/dist/bauplan.js.map +0 -1
  22. package/dist/befehle.d.ts +0 -12
  23. package/dist/befehle.d.ts.map +0 -1
  24. package/dist/befehle.js.map +0 -1
  25. package/dist/befund.d.ts +0 -21
  26. package/dist/befund.d.ts.map +0 -1
  27. package/dist/befund.js +0 -107
  28. package/dist/befund.js.map +0 -1
  29. package/dist/codeAblage.d.ts +0 -31
  30. package/dist/codeAblage.d.ts.map +0 -1
  31. package/dist/codeAblage.js +0 -80
  32. package/dist/codeAblage.js.map +0 -1
  33. package/dist/deklaration.d.ts +0 -3
  34. package/dist/deklaration.d.ts.map +0 -1
  35. package/dist/deklaration.js +0 -14
  36. package/dist/deklaration.js.map +0 -1
  37. package/dist/diff.d.ts +0 -10
  38. package/dist/diff.d.ts.map +0 -1
  39. package/dist/diff.js +0 -72
  40. package/dist/diff.js.map +0 -1
  41. package/dist/erkennung.d.ts +0 -26
  42. package/dist/erkennung.d.ts.map +0 -1
  43. package/dist/erkennung.js +0 -174
  44. package/dist/erkennung.js.map +0 -1
  45. package/dist/fix.d.ts +0 -26
  46. package/dist/fix.d.ts.map +0 -1
  47. package/dist/fix.js +0 -101
  48. package/dist/fix.js.map +0 -1
  49. package/dist/geteilt/bauplan/form.d.ts +0 -100
  50. package/dist/geteilt/bauplan/form.d.ts.map +0 -1
  51. package/dist/geteilt/bauplan/form.js +0 -21
  52. package/dist/geteilt/bauplan/form.js.map +0 -1
  53. package/dist/geteilt/bauplan/index.d.ts +0 -4
  54. package/dist/geteilt/bauplan/index.d.ts.map +0 -1
  55. package/dist/geteilt/bauplan/index.js +0 -4
  56. package/dist/geteilt/bauplan/index.js.map +0 -1
  57. package/dist/geteilt/bauplan/lesen.d.ts +0 -6
  58. package/dist/geteilt/bauplan/lesen.d.ts.map +0 -1
  59. package/dist/geteilt/bauplan/lesen.js +0 -344
  60. package/dist/geteilt/bauplan/lesen.js.map +0 -1
  61. package/dist/geteilt/bauplan/schreiben.d.ts +0 -3
  62. package/dist/geteilt/bauplan/schreiben.d.ts.map +0 -1
  63. package/dist/geteilt/bauplan/schreiben.js +0 -80
  64. package/dist/geteilt/bauplan/schreiben.js.map +0 -1
  65. package/dist/index.d.ts +0 -3
  66. package/dist/index.d.ts.map +0 -1
  67. package/dist/index.js.map +0 -1
  68. package/dist/init.d.ts +0 -28
  69. package/dist/init.d.ts.map +0 -1
  70. package/dist/init.js +0 -324
  71. package/dist/init.js.map +0 -1
  72. package/dist/login.d.ts +0 -45
  73. package/dist/login.d.ts.map +0 -1
  74. package/dist/login.js +0 -162
  75. package/dist/login.js.map +0 -1
  76. package/dist/mcp.d.ts +0 -18
  77. package/dist/mcp.d.ts.map +0 -1
  78. package/dist/mcp.js +0 -115
  79. package/dist/mcp.js.map +0 -1
  80. package/dist/neu.d.ts +0 -17
  81. package/dist/neu.d.ts.map +0 -1
  82. package/dist/neu.js +0 -118
  83. package/dist/neu.js.map +0 -1
  84. package/dist/npmrc.d.ts +0 -9
  85. package/dist/npmrc.d.ts.map +0 -1
  86. package/dist/npmrc.js +0 -49
  87. package/dist/npmrc.js.map +0 -1
  88. package/dist/projekte.d.ts +0 -23
  89. package/dist/projekte.d.ts.map +0 -1
  90. package/dist/projekte.js +0 -82
  91. package/dist/projekte.js.map +0 -1
  92. package/dist/pull.d.ts +0 -15
  93. package/dist/pull.d.ts.map +0 -1
  94. package/dist/pull.js +0 -301
  95. package/dist/pull.js.map +0 -1
  96. package/dist/push/bericht.d.ts +0 -8
  97. package/dist/push/bericht.d.ts.map +0 -1
  98. package/dist/push/bericht.js +0 -85
  99. package/dist/push/bericht.js.map +0 -1
  100. package/dist/push/form.d.ts +0 -67
  101. package/dist/push/form.d.ts.map +0 -1
  102. package/dist/push/form.js +0 -6
  103. package/dist/push/form.js.map +0 -1
  104. package/dist/push/medien.d.ts +0 -7
  105. package/dist/push/medien.d.ts.map +0 -1
  106. package/dist/push/medien.js +0 -154
  107. package/dist/push/medien.js.map +0 -1
  108. package/dist/push/sammeln.d.ts +0 -34
  109. package/dist/push/sammeln.d.ts.map +0 -1
  110. package/dist/push/sammeln.js +0 -112
  111. package/dist/push/sammeln.js.map +0 -1
  112. package/dist/push/verzeichnisse.d.ts +0 -40
  113. package/dist/push/verzeichnisse.d.ts.map +0 -1
  114. package/dist/push/verzeichnisse.js +0 -158
  115. package/dist/push/verzeichnisse.js.map +0 -1
  116. package/dist/push.d.ts +0 -8
  117. package/dist/push.d.ts.map +0 -1
  118. package/dist/push.js +0 -306
  119. package/dist/push.js.map +0 -1
  120. package/dist/starter.d.ts +0 -4
  121. package/dist/starter.d.ts.map +0 -1
  122. package/dist/starter.js +0 -587
  123. package/dist/starter.js.map +0 -1
  124. package/dist/tiefpruefung.d.ts +0 -39
  125. package/dist/tiefpruefung.d.ts.map +0 -1
  126. package/dist/tiefpruefung.js +0 -56
  127. package/dist/tiefpruefung.js.map +0 -1
  128. package/dist/vertrag.d.ts +0 -6
  129. package/dist/vertrag.d.ts.map +0 -1
  130. package/dist/vertrag.js +0 -267
  131. package/dist/vertrag.js.map +0 -1
  132. package/dist/vertragSpaet.d.ts +0 -4
  133. package/dist/vertragSpaet.d.ts.map +0 -1
  134. package/dist/vertragSpaet.js +0 -158
  135. package/dist/vertragSpaet.js.map +0 -1
  136. package/dist/vorlagen.d.ts +0 -7
  137. package/dist/vorlagen.d.ts.map +0 -1
  138. package/dist/vorlagen.js +0 -83
  139. package/dist/vorlagen.js.map +0 -1
package/dist/mcp.js DELETED
@@ -1,115 +0,0 @@
1
- import path from 'node:path';
2
- import readline from 'node:readline';
3
- import { alsJson } from './befund.js';
4
- import { baueAuftrag } from './auftrag.js';
5
- import { pruefeVertrag } from './vertrag.js';
6
- import { deklarationsBefunde } from './deklaration.js';
7
- import { fahrePull } from './pull.js';
8
- const VORGABE_FASSUNG = '0.5.1';
9
- const PROTOKOLL = '2024-11-05';
10
- function wurzelAus(a) {
11
- const roh = typeof a.verzeichnis === 'string' && a.verzeichnis.trim() ? a.verzeichnis : process.cwd();
12
- return path.resolve(roh);
13
- }
14
- const VERZEICHNIS_SCHEMA = {
15
- type: 'object',
16
- properties: {
17
- verzeichnis: { type: 'string', description: 'Projektverzeichnis. Ohne Angabe das aktuelle.' },
18
- },
19
- };
20
- function pruefe(wurzel) {
21
- const e = pruefeVertrag(wurzel);
22
- e.befunde.push(...deklarationsBefunde(wurzel));
23
- return e;
24
- }
25
- export const WERKZEUGE = [
26
- {
27
- name: 'arkven_check',
28
- befehl: 'check',
29
- beschreibung: 'Prüft ein Projekt gegen den Arkven-Container-Vertrag. Liefert je Befund Regel, Ort und Ausweg. ' +
30
- 'Braucht kein Netz und keine Anmeldung.',
31
- schema: VERZEICHNIS_SCHEMA,
32
- async fuehreAus(a) {
33
- return alsJson(pruefe(wurzelAus(a)));
34
- },
35
- },
36
- {
37
- name: 'arkven_auftrag',
38
- befehl: 'auftrag',
39
- beschreibung: 'Gibt die Arbeitsanweisung zu den offenen Befunden aus, ohne etwas zu ändern.',
40
- schema: VERZEICHNIS_SCHEMA,
41
- async fuehreAus(a) {
42
- return baueAuftrag(pruefe(wurzelAus(a)));
43
- },
44
- },
45
- {
46
- name: 'arkven_pull',
47
- befehl: 'pull',
48
- beschreibung: 'Holt den Stand aus Arkven ins Verzeichnis: Code (Backend und Frontend), Bauplan, Auftrag, ' +
49
- 'Nachweis und eigene Mail-Vorlagen. Löscht nie etwas.',
50
- schema: VERZEICHNIS_SCHEMA,
51
- async fuehreAus(a) {
52
- const zeilen = [];
53
- const e = await fahrePull(wurzelAus(a), { sage: (z) => zeilen.push(z), ja: true });
54
- if (e.grund)
55
- zeilen.push(e.grund);
56
- return zeilen.join(String.fromCharCode(10));
57
- },
58
- },
59
- ];
60
- export async function beantworte(anfrage) {
61
- const id = anfrage.id;
62
- const antwort = (ergebnis) => ({ jsonrpc: '2.0', id, result: ergebnis });
63
- switch (anfrage.method) {
64
- case 'initialize':
65
- return antwort({
66
- protocolVersion: PROTOKOLL,
67
- capabilities: { tools: {} },
68
- serverInfo: { name: 'arkven', version: process.env.ARKVEN_CLI_VERSION ?? VORGABE_FASSUNG },
69
- });
70
- case 'notifications/initialized':
71
- return null;
72
- case 'tools/list':
73
- return antwort({
74
- tools: WERKZEUGE.map((w) => ({ name: w.name, description: w.beschreibung, inputSchema: w.schema })),
75
- });
76
- case 'tools/call': {
77
- const name = String(anfrage.params?.name ?? '');
78
- const werkzeug = WERKZEUGE.find((w) => w.name === name);
79
- if (!werkzeug) {
80
- return { jsonrpc: '2.0', id, error: { code: -32602, message: `Unbekanntes Werkzeug: ${name}` } };
81
- }
82
- try {
83
- const text = await werkzeug.fuehreAus((anfrage.params?.arguments ?? {}));
84
- return antwort({ content: [{ type: 'text', text }] });
85
- }
86
- catch (e) {
87
- return antwort({ content: [{ type: 'text', text: `Fehlgeschlagen: ${String(e?.message ?? e)}` }], isError: true });
88
- }
89
- }
90
- default:
91
- return { jsonrpc: '2.0', id, error: { code: -32601, message: `Unbekannte Methode: ${String(anfrage.method)}` } };
92
- }
93
- }
94
- export async function fahreMcp() {
95
- const rl = readline.createInterface({ input: process.stdin });
96
- for await (const zeile of rl) {
97
- const text = zeile.trim();
98
- if (!text)
99
- continue;
100
- let anfrage;
101
- try {
102
- anfrage = JSON.parse(text);
103
- }
104
- catch {
105
- process.stdout.write(JSON.stringify({ jsonrpc: '2.0', id: null, error: { code: -32700, message: 'Kein gültiges JSON' } }) +
106
- String.fromCharCode(10));
107
- continue;
108
- }
109
- const antwort = await beantworte(anfrage);
110
- if (antwort)
111
- process.stdout.write(JSON.stringify(antwort) + String.fromCharCode(10));
112
- }
113
- return 0;
114
- }
115
- //# sourceMappingURL=mcp.js.map
package/dist/mcp.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
package/dist/neu.d.ts DELETED
@@ -1,17 +0,0 @@
1
- import { type Ergebnis } from './befund.js';
2
- export interface NeuOptionen {
3
- sage(zeile: string): void;
4
- }
5
- export interface NeuErgebnis {
6
- code: number;
7
- ziel: string;
8
- name: string;
9
- dateien: string[];
10
- ergebnis?: Ergebnis;
11
- abbruch?: {
12
- grund: string;
13
- ausweg: string;
14
- };
15
- }
16
- export declare function fahreNeu(zielArg: string, opt: NeuOptionen): Promise<NeuErgebnis>;
17
- //# sourceMappingURL=neu.d.ts.map
package/dist/neu.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"neu.d.ts","sourceRoot":"","sources":["../src/neu.ts"],"names":[],"mappings":"AAIA,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAA;AAMrD,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,WAAW;IAE1B,IAAI,EAAE,MAAM,CAAA;IAEZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IAEZ,OAAO,EAAE,MAAM,EAAE,CAAA;IAEjB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IAEnB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAC5C;AAYD,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAwHtF"}
package/dist/neu.js DELETED
@@ -1,118 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import { exitCode } from './befund.js';
4
- import { fahreInit } from './init.js';
5
- import { FELDER, FELD_NAME } from './erkennung.js';
6
- import { NAME_MUSTER, nameVorschlag, starterDateien } from './starter.js';
7
- import { pruefeVertrag } from './vertrag.js';
8
- function inhalt(verzeichnis) {
9
- try {
10
- return fs.readdirSync(verzeichnis);
11
- }
12
- catch {
13
- return [];
14
- }
15
- }
16
- const AUS_INIT = new Set(['arkven/agents-md']);
17
- export async function fahreNeu(zielArg, opt) {
18
- const ziel = path.resolve(zielArg);
19
- const name = path.basename(ziel);
20
- const leer = { code: 1, ziel, name, dateien: [] };
21
- const abbrechen = (grund, ausweg) => {
22
- opt.sage(grund);
23
- opt.sage(`So kommst du weiter: ${ausweg}`);
24
- return { ...leer, abbruch: { grund, ausweg } };
25
- };
26
- if (!NAME_MUSTER.test(name) || name.length > 214) {
27
- const vorschlag = nameVorschlag(name);
28
- return abbrechen(`\`${name}\` passt nicht als Paketname. npm erlaubt Kleinbuchstaben, Ziffern, Bindestrich, Punkt und Unterstrich, und das erste Zeichen muss ein Buchstabe oder eine Ziffer sein.`, vorschlag.length > 0 && NAME_MUSTER.test(vorschlag) ? `\`arkven new ${vorschlag}\`` : 'wähle einen Namen aus Kleinbuchstaben und Bindestrichen, zum Beispiel `arkven new meine-app`.');
29
- }
30
- let statistik;
31
- try {
32
- statistik = fs.statSync(ziel);
33
- }
34
- catch {
35
- statistik = undefined;
36
- }
37
- if (statistik && !statistik.isDirectory()) {
38
- return abbrechen(`An dieser Stelle liegt schon eine Datei: ${ziel}`, 'wähle einen anderen Namen, oder benenne die vorhandene Datei um.');
39
- }
40
- const vorhandenes = statistik ? inhalt(ziel) : [];
41
- if (vorhandenes.length > 0) {
42
- return abbrechen(`In ${ziel} ${vorhandenes.length === 1 ? 'liegt schon ein Eintrag' : `liegen schon ${vorhandenes.length} Einträge`}, deshalb wird hier nichts angelegt.`, `wähle einen anderen Namen (\`arkven new <name>\`), oder richte das vorhandene Projekt ein: \`arkven init ${zielArg}\`.`);
43
- }
44
- const dateien = starterDateien(name);
45
- const geschrieben = [];
46
- const selbstAngelegt = statistik === undefined;
47
- try {
48
- fs.mkdirSync(ziel, { recursive: true });
49
- for (const [rel, text] of Object.entries(dateien)) {
50
- const abs = path.join(ziel, rel);
51
- fs.mkdirSync(path.dirname(abs), { recursive: true });
52
- fs.writeFileSync(abs, text, 'utf8');
53
- geschrieben.push(rel);
54
- }
55
- }
56
- catch (e) {
57
- const weg = { recursive: true, force: true, maxRetries: 10, retryDelay: 50 };
58
- try {
59
- if (selbstAngelegt)
60
- fs.rmSync(ziel, weg);
61
- else
62
- for (const rel of geschrieben)
63
- fs.rmSync(path.join(ziel, rel), weg);
64
- }
65
- catch {
66
- /* Beim Aufraeumen darf nichts Neues werfen - der eigentliche Grund steht unten. */
67
- }
68
- return abbrechen(`Das Anlegen ist fehlgeschlagen: ${String(e?.message ?? e)}`, 'prüfe die Schreibrechte im Zielverzeichnis und rufe `arkven new` erneut auf. Es ist nichts liegengeblieben.');
69
- }
70
- opt.sage(`Arkven legt ${name} in ${ziel} an.`);
71
- opt.sage('');
72
- opt.sage(`${geschrieben.length} Dateien geschrieben:`);
73
- for (const rel of geschrieben)
74
- opt.sage(` ${rel}`);
75
- opt.sage('');
76
- const initZeilen = [];
77
- const init = await fahreInit(ziel, { sage: (z) => initZeilen.push(z), uebernehmen: true });
78
- const drift = init.vorschlaege.filter((v) => !AUS_INIT.has(v.regel));
79
- if (init.code !== 0 || init.offen.length > 0 || drift.length > 0) {
80
- opt.sage('Die Erkennung hat an dieser Vorlage etwas offen gelassen. Ihr vollständiger Bericht:');
81
- for (const z of initZeilen)
82
- opt.sage(z);
83
- opt.sage('');
84
- }
85
- else {
86
- const felder = FELDER.map((f) => `${FELD_NAME[f]} ${init.mitgebracht[f] ? 'ja' : 'nein'}`).join(', ');
87
- opt.sage(`arkven.json angelegt: ${felder}.`);
88
- for (const pfad of init.uebernommen)
89
- opt.sage(`${pfad} angelegt.`);
90
- opt.sage('');
91
- }
92
- const ergebnis = pruefeVertrag(ziel);
93
- const blockierend = ergebnis.befunde.filter((b) => b.schwere === 'vertrag');
94
- const hinweise = ergebnis.befunde.filter((b) => b.schwere === 'hinweis');
95
- opt.sage(`Gegen den Container-Vertrag gemessen: ${ergebnis.gehalten.length} gehalten, ${blockierend.length} blockierend, ` +
96
- `${hinweise.length} ${hinweise.length === 1 ? 'Hinweis' : 'Hinweise'}.`);
97
- if (blockierend.length > 0) {
98
- opt.sage('');
99
- opt.sage('Das ist ein Fehler der Vorlage, nicht deiner. Die blockierenden Punkte im Einzelnen:');
100
- for (const b of blockierend) {
101
- opt.sage(` ${b.regel}${b.ort ? ` ${b.ort}` : ''}`);
102
- opt.sage(` ${b.titel}`);
103
- opt.sage(` So kommst du weiter: ${b.ausweg}`);
104
- }
105
- opt.sage('');
106
- opt.sage('Nächster Schritt: `arkven check` zeigt denselben Stand jederzeit erneut.');
107
- return { code: 1, ziel, name, dateien: geschrieben, ergebnis };
108
- }
109
- for (const h of hinweise) {
110
- opt.sage(` Hinweis: ${h.titel} ${h.ausweg}`);
111
- }
112
- const relativ = path.relative(process.cwd(), ziel) || name;
113
- opt.sage('');
114
- opt.sage(`Nächster Schritt: \`cd ${relativ.split(path.sep).join('/')} && npm install\``);
115
- opt.sage('Danach steht in der README, wie die Datenbank dazukommt und wie du startest.');
116
- return { code: exitCode(ergebnis) === 0 ? 0 : 1, ziel, name, dateien: geschrieben, ergebnis };
117
- }
118
- //# sourceMappingURL=neu.js.map
package/dist/neu.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"neu.js","sourceRoot":"","sources":["../src/neu.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,QAAQ,EAAiB,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAoB5C,SAAS,MAAM,CAAC,WAAmB;IACjC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAe,EAAE,GAAgB;IAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAChC,MAAM,IAAI,GAAgB,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;IAE9D,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,MAAc,EAAe,EAAE;QAC/D,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACf,GAAG,CAAC,IAAI,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAA;QAC1C,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAA;IAChD,CAAC,CAAA;IAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;QACrC,OAAO,SAAS,CACd,KAAK,IAAI,yKAAyK,EAClL,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,SAAS,IAAI,CAAC,CAAC,CAAC,+FAA+F,CACtL,CAAA;IACH,CAAC;IAED,IAAI,SAA+B,CAAA;IACnC,IAAI,CAAC;QACH,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,SAAS,GAAG,SAAS,CAAA;IACvB,CAAC;IAED,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;QAC1C,OAAO,SAAS,CACd,4CAA4C,IAAI,EAAE,EAClD,kEAAkE,CACnE,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACjD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,SAAS,CACd,MAAM,IAAI,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,gBAAgB,WAAW,CAAC,MAAM,WAAW,sCAAsC,EACxJ,4GAA4G,OAAO,KAAK,CACzH,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,WAAW,GAAa,EAAE,CAAA;IAChC,MAAM,cAAc,GAAG,SAAS,KAAK,SAAS,CAAA;IAE9C,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACvC,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;YAChC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACpD,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;YACnC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACvB,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QAEX,MAAM,GAAG,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAW,CAAA;QACrF,IAAI,CAAC;YACH,IAAI,cAAc;gBAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;;gBACnC,KAAK,MAAM,GAAG,IAAI,WAAW;oBAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;QAC1E,CAAC;QAAC,MAAM,CAAC;YACP,mFAAmF;QACrF,CAAC;QACD,OAAO,SAAS,CACd,mCAAmC,MAAM,CAAE,CAAW,EAAE,OAAO,IAAI,CAAC,CAAC,EAAE,EACvE,6GAA6G,CAC9G,CAAA;IACH,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,OAAO,IAAI,MAAM,CAAC,CAAA;IAC9C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACZ,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,uBAAuB,CAAC,CAAA;IACtD,KAAK,MAAM,GAAG,IAAI,WAAW;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAA;IACnD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEZ,MAAM,UAAU,GAAa,EAAE,CAAA;IAC/B,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1F,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IACpE,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAA;QAChG,KAAK,MAAM,CAAC,IAAI,UAAU;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACvC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrG,GAAG,CAAC,IAAI,CAAC,yBAAyB,MAAM,GAAG,CAAC,CAAA;QAE5C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,YAAY,CAAC,CAAA;QAClE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAA;IAC3E,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAA;IACxE,GAAG,CAAC,IAAI,CACN,yCAAyC,QAAQ,CAAC,QAAQ,CAAC,MAAM,cAAc,WAAW,CAAC,MAAM,gBAAgB;QAC/G,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,GAAG,CAC1E,CAAA;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACZ,GAAG,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAA;QAChG,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACpD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;YAC3B,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;QACnD,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACZ,GAAG,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAA;QACpF,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAA;IAChE,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;IAC/C,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,CAAA;IAC1D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACZ,GAAG,CAAC,IAAI,CAAC,0BAA0B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IACxF,GAAG,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAA;IAExF,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAA;AAC/F,CAAC"}
package/dist/npmrc.d.ts DELETED
@@ -1,9 +0,0 @@
1
- export declare function registryUrl(server: string): string;
2
- export declare function tokenSchluessel(server: string): string;
3
- export declare function setzeZeile(inhalt: string, schluessel: string, wert: string): string;
4
- export interface NpmrcErgebnis {
5
- projektDatei: string;
6
- benutzerDatei: string;
7
- }
8
- export declare function richteBezugEin(server: string, registryToken: string, projektWurzel: string): NpmrcErgebnis;
9
- //# sourceMappingURL=npmrc.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"npmrc.d.ts","sourceRoot":"","sources":["../src/npmrc.ts"],"names":[],"mappings":"AAKA,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBnF;AAcD,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,aAAa,CAW1G"}
package/dist/npmrc.js DELETED
@@ -1,49 +0,0 @@
1
- import fs from 'node:fs';
2
- import os from 'node:os';
3
- import path from 'node:path';
4
- export function registryUrl(server) {
5
- return `${server.replace(/\/+$/, '')}/api/registry/`;
6
- }
7
- export function tokenSchluessel(server) {
8
- return registryUrl(server).replace(/^https?:/, '');
9
- }
10
- export function setzeZeile(inhalt, schluessel, wert) {
11
- const zeilen = inhalt.length ? inhalt.replace(/\r\n/g, '\n').split('\n') : [];
12
- const neu = `${schluessel}=${wert}`;
13
- let ersetzt = false;
14
- const raus = zeilen.map((z) => {
15
- if (z.trim().startsWith(`${schluessel}=`)) {
16
- ersetzt = true;
17
- return neu;
18
- }
19
- return z;
20
- });
21
- if (!ersetzt) {
22
- while (raus.length && (raus[raus.length - 1] ?? '').trim() === '')
23
- raus.pop();
24
- raus.push(neu);
25
- }
26
- return raus.join('\n').replace(/\n*$/, '\n');
27
- }
28
- function schreibe(datei, inhalt, eng) {
29
- fs.mkdirSync(path.dirname(datei), { recursive: true });
30
- fs.writeFileSync(datei, inhalt, eng ? { mode: 0o600 } : {});
31
- if (eng) {
32
- try {
33
- fs.chmodSync(datei, 0o600);
34
- }
35
- catch {
36
- /* Windows kennt den Modus nicht. */
37
- }
38
- }
39
- }
40
- export function richteBezugEin(server, registryToken, projektWurzel) {
41
- const projektDatei = path.join(projektWurzel, '.npmrc');
42
- const benutzerDatei = path.join(os.homedir(), '.npmrc');
43
- const projektAlt = fs.existsSync(projektDatei) ? fs.readFileSync(projektDatei, 'utf8') : '';
44
- schreibe(projektDatei, setzeZeile(projektAlt, '@arkvenai:registry', registryUrl(server)), false);
45
- const benutzerAlt = fs.existsSync(benutzerDatei) ? fs.readFileSync(benutzerDatei, 'utf8') : '';
46
- schreibe(benutzerDatei, setzeZeile(benutzerAlt, `${tokenSchluessel(server)}:_authToken`, registryToken), true);
47
- return { projektDatei, benutzerDatei };
48
- }
49
- //# sourceMappingURL=npmrc.js.map
package/dist/npmrc.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"npmrc.js","sourceRoot":"","sources":["../src/npmrc.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- export interface TeamBezug {
2
- id: string;
3
- name: string;
4
- }
5
- export interface ProjektZeile {
6
- id: string;
7
- titel: string;
8
- team: string;
9
- stand?: string;
10
- zuletzt?: number;
11
- }
12
- export type ProjektListe = {
13
- ok: true;
14
- projekte: ProjektZeile[];
15
- unerreichbar: string[];
16
- } | {
17
- ok: false;
18
- grund: string;
19
- };
20
- export declare function holeProjekte(server: string, token: string, teams: readonly TeamBezug[], hole?: typeof fetch): Promise<ProjektListe>;
21
- export declare function zeilenFuer(projekte: readonly ProjektZeile[]): string[];
22
- export declare function waehle(projekte: readonly ProjektZeile[], antwort: string): ProjektZeile | null;
23
- //# sourceMappingURL=projekte.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"projekte.d.ts","sourceRoot":"","sources":["../src/projekte.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IAEZ,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,YAAY,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,GAC9D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAOhC,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,SAAS,EAAE,EAC3B,IAAI,GAAE,OAAO,KAAa,GACzB,OAAO,CAAC,YAAY,CAAC,CAuDvB;AASD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,EAAE,CAUtE;AAED,wBAAgB,MAAM,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAQ9F"}
package/dist/projekte.js DELETED
@@ -1,82 +0,0 @@
1
- const ZEILENENDE = String.fromCharCode(10);
2
- const WEITER = ZEILENENDE + 'So kommst du weiter: ';
3
- export async function holeProjekte(server, token, teams, hole = fetch) {
4
- if (teams.length === 0) {
5
- return {
6
- ok: false,
7
- grund: 'Dieser Zugang gehoert zu keinem Team, deshalb gibt es keine Projekte zu zeigen.' +
8
- WEITER +
9
- 'einmal `arkven login`, damit der Zugang die Teams dieses Kontos kennt.',
10
- };
11
- }
12
- const projekte = [];
13
- const unerreichbar = [];
14
- for (const team of teams) {
15
- let daten;
16
- try {
17
- const res = await hole(`${server}/api/sessions?teamId=${encodeURIComponent(team.id)}`, {
18
- headers: { authorization: `Bearer ${token}` },
19
- });
20
- daten = (await res.json().catch(() => ({})));
21
- if (!res.ok) {
22
- unerreichbar.push(`${team.name}: ${daten.error ?? `Status ${res.status}`}`);
23
- continue;
24
- }
25
- }
26
- catch (e) {
27
- unerreichbar.push(`${team.name}: ${String(e?.message ?? e)}`);
28
- continue;
29
- }
30
- for (const s of daten.sessions ?? []) {
31
- if (!s?.id)
32
- continue;
33
- projekte.push({
34
- id: s.id,
35
- titel: (s.title ?? s.slug ?? s.id).trim() || s.id,
36
- team: team.name,
37
- stand: s.cloudStatus,
38
- zuletzt: s.updatedAt,
39
- });
40
- }
41
- }
42
- if (projekte.length === 0) {
43
- const warum = unerreichbar.length > 0 ? ` Nicht erreicht: ${unerreichbar.join(' · ')}.` : '';
44
- return {
45
- ok: false,
46
- grund: `Arkven kennt zu diesem Zugang kein Projekt.${warum}` +
47
- WEITER +
48
- 'im Cockpit ein Projekt anlegen, dann steht es hier.',
49
- };
50
- }
51
- projekte.sort((a, b) => (b.zuletzt ?? 0) - (a.zuletzt ?? 0));
52
- return { ok: true, projekte, unerreichbar };
53
- }
54
- function tag(ms) {
55
- if (!ms)
56
- return '';
57
- const d = new Date(ms);
58
- const zwei = (n) => String(n).padStart(2, '0');
59
- return `${zwei(d.getDate())}.${zwei(d.getMonth() + 1)}.${d.getFullYear()}`;
60
- }
61
- export function zeilenFuer(projekte) {
62
- const mehrereTeams = new Set(projekte.map((p) => p.team)).size > 1;
63
- const zeilen = [];
64
- projekte.forEach((p, i) => {
65
- const kopf = ` ${String(i + 1).padStart(2)} ${p.titel}`;
66
- const rechts = [p.stand, tag(p.zuletzt) ? `zuletzt ${tag(p.zuletzt)}` : ''].filter(Boolean).join(' ');
67
- zeilen.push(rechts ? `${kopf.padEnd(40)}${rechts}` : kopf);
68
- zeilen.push(` ${p.id}${mehrereTeams ? ` (${p.team})` : ''}`);
69
- });
70
- return zeilen;
71
- }
72
- export function waehle(projekte, antwort) {
73
- const wert = antwort.trim();
74
- if (!wert)
75
- return null;
76
- if (/^[0-9]+$/.test(wert)) {
77
- const nr = Number(wert);
78
- return nr >= 1 && nr <= projekte.length ? projekte[nr - 1] : null;
79
- }
80
- return projekte.find((p) => p.id === wert) ?? null;
81
- }
82
- //# sourceMappingURL=projekte.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"projekte.js","sourceRoot":"","sources":["../src/projekte.ts"],"names":[],"mappings":"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"}
package/dist/pull.d.ts DELETED
@@ -1,15 +0,0 @@
1
- export interface PullOptionen {
2
- sage(zeile: string): void;
3
- frage?: (text: string) => Promise<boolean>;
4
- ja: boolean;
5
- server?: string;
6
- nurDeklaration?: boolean;
7
- projektId?: string;
8
- frageText?: (text: string) => Promise<string>;
9
- }
10
- export interface PullErgebnis {
11
- code: number;
12
- grund?: string;
13
- }
14
- export declare function fahrePull(wurzel: string, opts: PullOptionen): Promise<PullErgebnis>;
15
- //# sourceMappingURL=pull.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../src/pull.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1C,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,cAAc,CAAC,EAAE,OAAO,CAAA;IAExB,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAC9C;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAkCD,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CA+HzF"}