@schlenkr/ragents 0.1.4 → 0.1.5

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/README.md CHANGED
@@ -22,7 +22,8 @@ npm install -g @schlenkr/ragents
22
22
  RAGENTS_TOKEN=<token> ragents connect https://ragents.example.com
23
23
  ```
24
24
 
25
- - `start <profile|path>` - start a profile shipped with the package (`core`, `developer`), your
25
+ - `start <profile|path>` - start a profile shipped with the package (`core`, `developer`,
26
+ `showcase`), your
26
27
  own `ragents.config.<name>.ts` anywhere on disk, or a stand that `connect` already fetched,
27
28
  without asking the server. The web interface is built for that set of plugins when it is
28
29
  missing or was last built for another profile or host version; the result goes to
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schlenkr/ragents",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "description": "RAgents-Host: Server, Engine, Plugins und Werkzeuge ohne Quell-Checkout",
5
5
  "keywords": [
6
6
  "agents",
@@ -11,7 +11,7 @@
11
11
  "fsharp",
12
12
  "vscode"
13
13
  ],
14
- "homepage": "https://github.com/SchlenkR/RAgents#readme",
14
+ "homepage": "https://schlenkr.github.io/RAgents/",
15
15
  "bugs": {
16
16
  "url": "https://github.com/SchlenkR/RAgents/issues"
17
17
  },
@@ -5,7 +5,7 @@ export const referenceWalkthroughs = [
5
5
  description: "Die Mini-App bleibt als Kachel sichtbar; ihr Besitzer ist auch ohne eigene Kachel erreichbar.",
6
6
  tags: ["Anwendungsfall", "Konzeptdemo", "Kachelfläche"],
7
7
  steps: [
8
- "Im Profil core Sammelboard einrichten öffnen und den Leitfaden abschließen. Erwartung: Die Liste steht als Kachel auf der Fläche; ihr Besitzer hat keine eigene Kachel.",
8
+ "Im Profil showcase Sammelboard einrichten öffnen und den Leitfaden abschließen. Erwartung: Die Liste steht als Kachel auf der Fläche; ihr Besitzer hat keine eigene Kachel.",
9
9
  "In der Kopfzeile Actors öffnen und den Namen des Listenbesitzers wählen. Erwartung: Rechts öffnen sich dessen Chat und Details, ohne die Kachelaufteilung zu ändern.",
10
10
  "Den Besitzer aus der Kopfzeile auf die Kachel der Liste ziehen und rechts andocken. Erwartung: Seine Kachel erscheint neben der Liste; die Mini-App bleibt bedienbar und behält ihre Einträge.",
11
11
  "Die neue Kachel über das Kreuz in ihrer Kopfzeile wieder entfernen und die App erneut bedienen. Erwartung: Actor und Funktionen arbeiten weiter; sein Name bleibt in der Kopfzeile erreichbar.",
@@ -17,7 +17,7 @@ export const referenceWalkthroughs = [
17
17
  description: "Kacheln lassen sich persönlich umstellen und wieder auf die Programmvorgabe zurücksetzen.",
18
18
  tags: ["Anwendungsfall", "Konzeptdemo", "Kachelfläche"],
19
19
  steps: [
20
- "Im Profil core den Einstieg Gesprächsrunde einrichten ausführen und den Aufbau abwarten. Die vom Run gesetzte Aufteilung ansehen.",
20
+ "Im Profil showcase den Einstieg Gesprächsrunde einrichten ausführen und den Aufbau abwarten. Die vom Run gesetzte Aufteilung ansehen.",
21
21
  "Eine Kachel an ihrer Kopfzeile fassen und am oberen Rand einer anderen Kachel andocken. Erwartung: Die Aufteilung ändert sich sofort; alle Gesprächspartner arbeiten weiter.",
22
22
  "Die Trennlinie zwischen zwei Kacheln verschieben und denselben Run im selben Browser neu laden. Erwartung: Die persönliche Aufteilung bleibt erhalten; die Actors und die Programmanordnung sind unverändert.",
23
23
  "In der Statusleiste Programmvorgabe übernehmen wählen. Erwartung: Die Fläche zeigt wieder die Aufteilung des Runs; der Knopf verschwindet, bis wieder eine eigene Änderung vorliegt.",
@@ -29,7 +29,7 @@ export const referenceWalkthroughs = [
29
29
  description: "Der übergeordnete Koordinator liest vorhandene Runs, während die aktuelle Arbeitsfläche geöffnet bleibt.",
30
30
  tags: ["Anwendungsfall", "Konzeptdemo", "Globaler Koordinator"],
31
31
  steps: [
32
- "Im Profil core zwei kurze Unterhaltungen zu einer Leseliste und einem Wochenplan anlegen und ihre Antworten abwarten.",
32
+ "Im Profil showcase zwei kurze Unterhaltungen zu einer Leseliste und einem Wochenplan anlegen und ihre Antworten abwarten.",
33
33
  "In die Eingabe Globaler Koordinator in der Kopfzeile klicken und damit seinen Verlauf öffnen. Um eine knappe Übersicht der beiden Unterhaltungen mit ihrem jeweiligen Arbeitsstand bitten.",
34
34
  "Die Run-Liste über die Übersichtsecke oder Cmd+I auf macOS beziehungsweise Ctrl+I öffnen, beide Runs auswählen und die Antwort mit ihren tatsächlichen Unterhaltungen vergleichen. Erwartung: Der globale Chat kann beide Journale berücksichtigen; ein Run-Wechsel erhält seinen eigenen Verlauf.",
35
35
  "Einen ungesendeten Entwurf oben eingeben, Escape drücken und den Verlauf wieder öffnen. Erwartung: Das Dropdown schließt ohne Stopp; Entwurf, aktueller Run und globales Gespräch bleiben erhalten.",
@@ -126,7 +126,7 @@ export const referenceWalkthroughs = [
126
126
  description: "Eine TypeScript-Prüfung macht den zugehörigen Sprachserver in der Prozessanzeige sichtbar.",
127
127
  tags: ["Anwendungsfall", "Konzeptdemo", "Prozessanzeige"],
128
128
  steps: [
129
- "Im Profil core den Skill-Einstieg Fehler in einer Terminliste finden ausführen. Voraussetzung ist ein verfügbarer TypeScript-Sprachserver; eine fehlende Voraussetzung muss als Fehler gemeldet werden.",
129
+ "Im Profil showcase den Skill-Einstieg Fehler in einer Terminliste finden ausführen. Voraussetzung ist ein verfügbarer TypeScript-Sprachserver; eine fehlende Voraussetzung muss als Fehler gemeldet werden.",
130
130
  "Nach dem Öffnen des Sprachservers die gemeinsame Kopfzeile des Runs ansehen. Erwartung: Der verwaltete Sprachserver erscheint als zu diesem Run gehörender Prozess.",
131
131
  "Einen anderen Run öffnen und zurückwechseln. Erwartung: Die Prozessanzeige folgt dem ausgewählten Run und ist kein gemeinsames Verzeichnis aller Rechnerprozesse.",
132
132
  "Die Prozessanzeige dient der Beobachtung. Sie bietet keinen Beenden-Knopf; fehlende Betriebssystemrechte oder Werkzeuge werden als sichtbarer Fehler gemeldet.",
@@ -138,7 +138,7 @@ export const referenceWalkthroughs = [
138
138
  description: "Ein zeitlich begrenzter Demo-Webprozess erscheint mit seinem erkannten Port in der Kopfzeile.",
139
139
  tags: ["Anwendungsfall", "Konzeptdemo", "Prozessanzeige"],
140
140
  steps: [
141
- "In einem eigenen core-Run den Koordinator bitten, einen kleinen Node-Demoprozess im Run-Arbeitsverzeichnis vorzubereiten: Er liefert nur einen neutralen Begrüßungstext, bindet ausschließlich 127.0.0.1 auf einem freien Port und beendet sich nach zwei Minuten selbst. Keine zusätzlichen Pakete installieren und keinen Produktserver ersetzen.",
141
+ "In einem eigenen showcase-Run den Koordinator bitten, einen kleinen Node-Demoprozess im Run-Arbeitsverzeichnis vorzubereiten: Er liefert nur einen neutralen Begrüßungstext, bindet ausschließlich 127.0.0.1 auf einem freien Port und beendet sich nach zwei Minuten selbst. Keine zusätzlichen Pakete installieren und keinen Produktserver ersetzen.",
142
142
  "Den vorbereiteten Demoprozess starten lassen und bei laufender Ausführung die Kopfzeile ansehen. Erwartung: Der Prozess erscheint mit einem Link auf seinen erkannten offenen Port.",
143
143
  "Den Port-Link nur auf demselben Rechner öffnen. Erwartung: Die lokale Demoantwort erscheint; bei einem entfernten Server ist dessen Loopback-Adresse nicht die Adresse des Browsers.",
144
144
  "Das vorgesehene automatische Ende abwarten. Erwartung: Der Eintrag verschwindet nach der nächsten Prozessaktualisierung. Run-Stopp oder das Schließen eines Tabs werden hier nicht als Beenden eines abgesetzten Dienstes versprochen.",
@@ -150,7 +150,7 @@ export const referenceWalkthroughs = [
150
150
  description: "Ein Run schreibt einen kleinen Text; der Dateireiter zeigt Inhalt und spätere Änderung ohne eigenen Editor.",
151
151
  tags: ["Anwendungsfall", "Konzeptdemo", "Dateien und Arbeitsverzeichnis"],
152
152
  steps: [
153
- "In einem neuen core-Run den Koordinator bitten, im Run-Arbeitsverzeichnis die Datei reading-list.md mit drei neutralen Lesethemen anzulegen.",
153
+ "In einem neuen showcase-Run den Koordinator bitten, im Run-Arbeitsverzeichnis die Datei reading-list.md mit drei neutralen Lesethemen anzulegen.",
154
154
  "Den Reiter Dateien öffnen, das Arbeitsverzeichnis aufklappen und reading-list.md auswählen. Erwartung: Der geschriebene Text erscheint als Vorschau.",
155
155
  "Im Chat ein viertes Thema ergänzen lassen und zur weiterhin geöffneten Vorschau zurückkehren. Erwartung: Die Dateiänderung wird im Dateibrowser sichtbar.",
156
156
  "Erwartung: Der Dateireiter bleibt eine Leseansicht. Änderungen erfolgen durch den beauftragten Actor und dessen Dateiwerkzeuge, nicht durch einen eingebauten Editor oder Löschknopf.",
@@ -162,8 +162,8 @@ export const referenceWalkthroughs = [
162
162
  description: "Zwei unabhängige Arbeitsverzeichnisse enthalten eigene Dateien mit demselben Namen.",
163
163
  tags: ["Anwendungsfall", "Konzeptdemo", "Dateien und Arbeitsverzeichnis"],
164
164
  steps: [
165
- "Einen core-Run Leseliste anlegen und darin notes.md mit dem Inhalt Lesen vorbereiten schreiben lassen.",
166
- "Einen zweiten core-Run Wochenplan anlegen und dort ebenfalls notes.md schreiben lassen, diesmal mit dem Inhalt Woche planen. Keine Datei zwischen Runs kopieren.",
165
+ "Einen showcase-Run Leseliste anlegen und darin notes.md mit dem Inhalt Lesen vorbereiten schreiben lassen.",
166
+ "Einen zweiten showcase-Run Wochenplan anlegen und dort ebenfalls notes.md schreiben lassen, diesmal mit dem Inhalt Woche planen. Keine Datei zwischen Runs kopieren.",
167
167
  "In beiden Runs nacheinander den Reiter Dateien öffnen und notes.md lesen. Erwartung: Der gleiche Dateiname zeigt den jeweils eigenen Inhalt des Run-Arbeitsverzeichnisses.",
168
168
  "Nur im Wochenplan eine Zeile ergänzen lassen und beide Vorschauen erneut prüfen. Erwartung: Die Datei des Leselisten-Runs ist unverändert.",
169
169
  ],
@@ -174,7 +174,7 @@ export const referenceWalkthroughs = [
174
174
  description: "Eine abgeschlossene Actor-Funktion bleibt beim regulären Neustart desselben Profils erhalten.",
175
175
  tags: ["Anwendungsfall", "Konzeptdemo", "Wiederherstellung nach Neustart"],
176
176
  steps: [
177
- "Im Profil core Sammelboard einrichten öffnen und den Leitfaden abschließen. Einen eindeutig erkennbaren Eintrag hinzufügen und die bestätigte Aktualisierung der Liste abwarten.",
177
+ "Im Profil showcase Sammelboard einrichten öffnen und den Leitfaden abschließen. Einen eindeutig erkennbaren Eintrag hinzufügen und die bestätigte Aktualisierung der Liste abwarten.",
178
178
  "Alle laufenden Arbeiten abschließen lassen. Den lokalen Server selbst über den für diese Installation verwendeten Startweg beenden und mit demselben Profil und Datenverzeichnis neu starten. Keine Daten löschen und keine zweite Serverinstanz parallel starten.",
179
179
  "Die Anwendung erneut öffnen und denselben Run auswählen. Erwartung: Gespräch, Mini-App und bestätigter Listeneintrag sind wieder vorhanden.",
180
180
  "Die Liste auf doppelte Einträge prüfen. Erwartung: Der Neustart stellt gespeicherten Zustand wieder her, führt die bereits abgeschlossene Hinzufügeaktion aber nicht erneut aus. Das Journal allein ersetzt keine vollständige Sicherung der übrigen Run-Dateien.",
@@ -186,7 +186,7 @@ export const referenceWalkthroughs = [
186
186
  description: "Normale Unterhaltung und globaler Koordinator behalten ihre jeweils eigene Geschichte.",
187
187
  tags: ["Anwendungsfall", "Konzeptdemo", "Wiederherstellung nach Neustart"],
188
188
  steps: [
189
- "In einem normalen core-Run drei Lernziele besprechen und im globalen Chat eine knappe Übersicht dieses Runs anfordern. Beide Antworten vollständig abwarten und die globale Modellwahl merken.",
189
+ "In einem normalen showcase-Run drei Lernziele besprechen und im globalen Chat eine knappe Übersicht dieses Runs anfordern. Beide Antworten vollständig abwarten und die globale Modellwahl merken.",
190
190
  "Den lokalen Server selbst über den vorhandenen Startweg neu starten, mit demselben Profil und Datenverzeichnis. Keine Dateien entfernen oder zwischen Installationen übertragen.",
191
191
  "Den normalen Run und anschließend den globalen Chat öffnen. Erwartung: Beide bisherigen Verläufe und die globale Modellwahl sind erhalten.",
192
192
  "Im normalen Run um den nächsten Schritt zu den Lernzielen bitten. Die neue Antwort als neue Arbeit behandeln; der Neustart hat alte Modellaufrufe nicht wiederholt. Ein beim Neustart noch offener Turn wäre unterbrochen abgeschlossen worden und wird nicht automatisch erneut ausgeführt.",
@@ -21,7 +21,6 @@ export const config = {
21
21
  "ragents.watch",
22
22
  "ragents.transcript",
23
23
  "ragents.actor-programs",
24
- "ragents.reference",
25
24
  "ragents.lsp-roslyn",
26
25
  "ragents.lsp-fsharp",
27
26
  "ragents.lsp-typescript",
@@ -0,0 +1,64 @@
1
+ // Schaufenster: das Profil core und zusätzlich die mitgelieferten Beispiele aus ragents.reference.
2
+ import { env, provisioned, type RAgentsConfig } from "./apps/server/src/config-definition.js";
3
+
4
+ export const config = {
5
+ host: {
6
+ PORT: 4713,
7
+ PRODUCT_PROFILE: "showcase",
8
+ COMPACTION_MODEL: "google/gemma-4-26b-a4b-it",
9
+ PRODUCT_ID: "ragents-showcase",
10
+ PRODUCT_TITLE: "RAgents Showcase",
11
+ PLUGINS: [
12
+ "ragents.orchestration",
13
+ "ragents.workspace",
14
+ "ragents.product",
15
+ "ragents.overseer",
16
+ "ragents.activity",
17
+ "ragents.processes",
18
+ "ragents.documents",
19
+ "ragents.browser",
20
+ "ragents.ask",
21
+ "ragents.todo",
22
+ "ragents.watch",
23
+ "ragents.transcript",
24
+ "ragents.actor-programs",
25
+ "ragents.reference",
26
+ "ragents.lsp-roslyn",
27
+ "ragents.lsp-fsharp",
28
+ "ragents.lsp-typescript",
29
+ "ragents.model-relay",
30
+ "ragents.profile-distribution",
31
+ ],
32
+ },
33
+
34
+ "ragents.product": {
35
+ OPENROUTER_API_KEY: env("OPENROUTER_API_KEY"),
36
+ AGENT_MODEL: "z-ai/glm-5.3-flash",
37
+ AGENT_MODELS: [
38
+ "deepseek/deepseek-v4-flash-0731",
39
+ "deepseek/deepseek-v4-pro-0813",
40
+ "qwen/qwen3.8-max",
41
+ "z-ai/glm-5.3",
42
+ "z-ai/glm-5.3-flash",
43
+ "qwen/qwen3.8-flash",
44
+ "moonshotai/kimi-k3",
45
+ "minimax/minimax-m3",
46
+ "qwen/qwen3.8-27b",
47
+ "moonshotai/kimi-k2.7-code",
48
+ ],
49
+ AGENT_COORDINATOR_MODEL: "z-ai/glm-5.3-flash",
50
+ AGENT_COORDINATOR_THINKING: "high",
51
+ },
52
+
53
+ // Modell-Relay: Aliasse für andere RAgents-Server, die ihre Modelle von hier beziehen.
54
+ "ragents.model-relay": {
55
+ RELAY_MODELS: ["showcase-standard=openrouter/z-ai/glm-5.3-flash", "showcase-coordinator=openrouter/deepseek/deepseek-v4-flash-0731"],
56
+ },
57
+
58
+ "ragents.lsp-roslyn": {
59
+ ROSLYN_LANGUAGE_SERVER: provisioned("ragents.lsp-roslyn", "roslyn/Microsoft.CodeAnalysis.LanguageServer.dll"),
60
+ },
61
+ "ragents.lsp-fsharp": {
62
+ FSHARP_LANGUAGE_SERVER: provisioned("ragents.lsp-fsharp", "fsautocomplete/fsautocomplete.dll"),
63
+ },
64
+ } as const satisfies RAgentsConfig;
@@ -22,7 +22,7 @@ const SKIPPED_IN_PACKAGE = /^scripts\/.*\.test\.tsx?$/;
22
22
  const packagePath = (packageRoot: string, file: string): string => path.relative(packageRoot, file).split(path.sep).join("/");
23
23
 
24
24
  /** Die neutralen Profile des Repositories; ragents start fährt sie aus dem Paket wie aus dem Checkout. */
25
- export const PACKAGED_PROFILES = ["core", "developer"] as const;
25
+ export const PACKAGED_PROFILES = ["core", "developer", "showcase"] as const;
26
26
 
27
27
  export const PACKAGE_LICENSE = "PolyForm-Shield-1.0.0";
28
28
  export const PACKAGE_AUTHOR = "Ronald Schlenker";
@@ -217,7 +217,7 @@ export const buildPackage = async (target: string, root = repositoryRoot): Promi
217
217
  version: readPackageVersion(root),
218
218
  description: "RAgents-Host: Server, Engine, Plugins und Werkzeuge ohne Quell-Checkout",
219
219
  keywords: [...PACKAGE_KEYWORDS],
220
- homepage: `${REPOSITORY_URL}#readme`,
220
+ homepage: "https://schlenkr.github.io/RAgents/",
221
221
  bugs: { url: `${REPOSITORY_URL}/issues` },
222
222
  license: PACKAGE_LICENSE,
223
223
  author: PACKAGE_AUTHOR,
@@ -8,7 +8,7 @@ import { localProfile } from "../../apps/server/src/profile-target.ts";
8
8
  import { startCached, startProfile, type CachedProfile } from "./connect.ts";
9
9
 
10
10
  const usage = (): string => `Verwendung: ragents start <profil|pfad> [--port <n>]
11
- Startet ein Profil dieses Hosts (core, developer), eine eigene ragents.config.<profil>.ts an
11
+ Startet ein Profil dieses Hosts (core, developer, showcase), eine eigene ragents.config.<profil>.ts an
12
12
  beliebiger Stelle oder einen Stand, den ragents connect schon geholt hat, ohne den Server zu
13
13
  fragen. Ein eigenes Profil bekommt sein Web beim Start gebaut, ein geholter Stand bringt es aus
14
14
  demselben Cache mit. Ohne Argument nennt der Befehl die Profile im Cache.`;