+2
-2
@@ -77,4 +77,4 @@ #!/usr/bin/env node | ||
| knowmind als MCP-Server in eine IDE eintragen | ||
| (cursor, vscode, windsurf, antigravity, zed, jetbrains, | ||
| claude-code, claude-desktop, all). 'install list' zeigt alle. | ||
| (cursor, vscode, windsurf, antigravity, zed, jetbrains, gemini, | ||
| codex, claude-code, claude-desktop, all). 'install list' zeigt alle. | ||
@@ -81,0 +81,0 @@ ENV-Override: |
+17
-0
| # Knowmind CLI — Änderungen | ||
| ## 0.3.2 (2026-08-04) | ||
| **`knowmind install`: zwei neue Ziele, ein Befehl richtet alles ein** | ||
| - `knowmind install gemini` trägt knowmind in Googles Gemini CLI ein | ||
| (`~/.gemini/settings.json`). | ||
| - `knowmind install codex` trägt knowmind in die Codex CLI ein | ||
| (`~/.codex/config.toml`) — bestehende Einträge und fremde Server bleiben | ||
| unangetastet, der Befehl ist beliebig wiederholbar. | ||
| - Mit `--token` endet die Ausgabe jetzt mit „<Werkzeug> neu starten — fertig." | ||
| statt weiterer Hinweise: nach dem Befehl ist nichts mehr zu tun. | ||
| ## 0.3.1 (2026-07-17) | ||
| - Unter Windows laufen alle Hintergrundaufrufe (Statusline-Ping, Config-Schutz) | ||
| jetzt ohne aufblitzende Konsolenfenster. | ||
| - Verbesserungen der Stabilität und allgemeine Fehlerbehebungen. | ||
| ## 0.3.0 (2026-07-16) | ||
@@ -4,0 +21,0 @@ |
+1
-1
| { | ||
| "name": "knowmind", | ||
| "version": "0.3.1", | ||
| "version": "0.3.2", | ||
| "mcpName": "io.github.Schubeler-Consulting/knowmind", | ||
@@ -5,0 +5,0 @@ "description": "Knowmind — das Agentengehirn aus Deutschland: CLI + MCP-Server (Langzeitgedächtnis & Wissensgraph für Ihre KI, Server in Deutschland).", |
+13
-7
| # knowmind | ||
| **Das Agentengehirn aus Deutschland.** Langzeitgedächtnis und Wissensgraph für Ihre KI — | ||
| CLI + MCP-Server. Inhalte und Server in Deutschland (Hetzner-Rechenzentrum). | ||
| **Ihr KI-Assistent kennt Ihr Unternehmen nicht.** Er beginnt jedes Gespräch bei null, und Sie | ||
| erklären ihm zum wiederholten Mal dieselben Zusammenhänge. knowmind ist das Gedächtnis darunter: | ||
| Was Sie einmal ablegen, steht in Claude, ChatGPT, Cursor und Ihren eigenen Anwendungen zur | ||
| Verfügung. Betrieben in Deutschland, im Rechenzentrum Nürnberg. | ||
| **Der Privat-Tarif kostet dauerhaft nichts und verlangt keine Zahlungsdaten.** Schnittstelle, | ||
| Kommandozeile und MCP-Server sind in jedem Tarif enthalten, auch dort. | ||
| <!-- mcp-name: io.github.Schubeler-Consulting/knowmind --> | ||
| [](https://www.npmjs.com/package/knowmind) · Apache-2.0 · [knowmind.de](https://knowmind.de) | ||
| [](https://www.npmjs.com/package/knowmind) · [knowmind.de](https://knowmind.de) · [Discord](https://discord.gg/nRguXx5hDQ) · dieses Paket unter Apache-2.0 | ||
@@ -18,5 +23,6 @@ ## Installation | ||
| ## Setup | ||
| ## Einrichtung | ||
| 1. Token auf knowmind.de anlegen: Dashboard → API-Tokens | ||
| 1. Kostenloses Konto auf [knowmind.de](https://knowmind.de) anlegen und dort einen Zugangsschlüssel | ||
| erzeugen: Dashboard → API-Tokens | ||
| 2. Lokal speichern: | ||
@@ -71,3 +77,3 @@ | ||
| - **Claude Code** — projektlokale Hooks in `.claude/`: | ||
| - *UserPromptSubmit* → ruft vor jeder echten Frage `knowmind_recall` auf und reicht die | ||
| - *UserPromptSubmit* → ruft vor jeder inhaltlichen Frage `knowmind_recall` auf und reicht die | ||
| Top-Treffer als Kontext nach (Memory-First, automatisch). | ||
@@ -171,3 +177,3 @@ - *Stop* → erinnert die KI daran, mit `knowmind_store_memory` zu sichern, wenn die Runde | ||
| knowmind ist das Agentengehirn aus Deutschland: Ihre Inhalte (Memories, Account- und Metadaten) werden | ||
| knowmind wird in Deutschland betrieben: Ihre Inhalte (Memories, Account- und Metadaten) werden | ||
| ausschließlich auf Servern in Deutschland (Hetzner-Rechenzentrum) gespeichert und verlassen Deutschland nicht. | ||
@@ -174,0 +180,0 @@ Auftragsverarbeitung (AVV) nach Art. 28 DSGVO verfügbar: https://knowmind.de/legal/avv |
+71
-2
@@ -84,2 +84,16 @@ // `knowmind install <ide>` — schreibt die MCP-Server-Konfiguration für knowmind | ||
| }, | ||
| gemini: { | ||
| label: "Gemini CLI", | ||
| family: "mcpServers", | ||
| secret: "literal-only", | ||
| globalPath: () => home(".gemini", "settings.json"), | ||
| projectPath: (cwd) => join(cwd, ".gemini", "settings.json"), | ||
| }, | ||
| codex: { | ||
| label: "Codex CLI", | ||
| family: "toml", | ||
| secret: "literal-only", | ||
| globalPath: () => home(".codex", "config.toml"), | ||
| projectPath: null, | ||
| }, | ||
| "claude-code": { | ||
@@ -141,2 +155,31 @@ label: "Claude Code", | ||
| // ── TOML (Codex CLI) ──────────────────────────────────────────────────────── | ||
| // Codex liest ~/.codex/config.toml. Es gibt keinen TOML-Parser als Abhängigkeit | ||
| // und es soll keiner dazukommen — der knowmind-Block wird zeilenbasiert ersetzt: | ||
| // Abschnittskopf [mcp_servers.knowmind] (und Unterabschnitte) samt Folgezeilen | ||
| // bis zum nächsten Abschnittskopf entfernen, dann den frischen Block anhängen. | ||
| function tomlBlock(opts) { | ||
| const token = tokenRef("literal-only", opts.literalToken); | ||
| return [ | ||
| "[mcp_servers.knowmind]", | ||
| `command = "${NPX}"`, | ||
| `args = [${NPX_ARGS.map((a) => `"${a}"`).join(", ")}]`, | ||
| "", | ||
| "[mcp_servers.knowmind.env]", | ||
| `KNOWMIND_TOKEN = "${token}"`, | ||
| `KNOWMIND_API_URL = "${opts.apiUrl}"`, | ||
| ].join("\n"); | ||
| } | ||
| function mergeToml(text, opts) { | ||
| // Erst Zeilenenden vereinheitlichen: `.` matcht kein \r, mit CRLF-Dateien | ||
| // bräche die Abschnitts-Entfernung sonst mitten im Block ab (Test 04.08.). | ||
| const quelltext = (text || "").replace(/\r\n/g, "\n"); | ||
| // Kopfzeile + alle Folgezeilen, die keinen neuen Abschnitt beginnen. | ||
| const alt = /(^|\n)\[mcp_servers\.knowmind(\.[^\]]+)?\](?:\n(?!\[).*)*/g; | ||
| let neu = quelltext.replace(alt, "$1"); | ||
| neu = neu.replace(/\n{3,}/g, "\n\n").trimEnd(); | ||
| return (neu ? neu + "\n\n" : "") + tomlBlock(opts) + "\n"; | ||
| } | ||
| function readJsonSafe(path) { | ||
@@ -219,3 +262,3 @@ if (!existsSync(path)) return {}; | ||
| console.log(`# ${ide.label} — Snippet (manuell einfügen):`); | ||
| console.log(JSON.stringify(snippet(ide, entryOpts), null, 2)); | ||
| console.log(ide.family === "toml" ? tomlBlock(entryOpts) : JSON.stringify(snippet(ide, entryOpts), null, 2)); | ||
| console.log(""); | ||
@@ -225,2 +268,26 @@ continue; | ||
| // TOML-Ziel (Codex): Text mergen statt JSON. | ||
| if (ide.family === "toml") { | ||
| const tomlPath = project ? (ide.projectPath && ide.projectPath(cwd)) : ide.globalPath(); | ||
| if (!tomlPath) { | ||
| console.log(`# ${ide.label}: kein ${project ? "Projekt" : "globaler"}-Dateipfad — Snippet:`); | ||
| console.log(tomlBlock(entryOpts)); | ||
| continue; | ||
| } | ||
| const alterText = existsSync(tomlPath) ? readFileSync(tomlPath, "utf-8") : ""; | ||
| const neuerText = mergeToml(alterText, entryOpts); | ||
| if (dryRun) { | ||
| console.log(`# ${ide.label} — DRY RUN → ${tomlPath}`); | ||
| console.log(neuerText); | ||
| continue; | ||
| } | ||
| mkdirSync(dirname(tomlPath), { recursive: true }); | ||
| writeFileSync(tomlPath, neuerText, "utf-8"); | ||
| console.log(`✓ ${ide.label}: knowmind eingetragen in ${tomlPath}`); | ||
| if (!literalToken) { | ||
| console.log(` → Platzhalter gesetzt: KNOWMIND_TOKEN in ${tomlPath} durch dein Token ersetzen.`); | ||
| } | ||
| continue; | ||
| } | ||
| const path = project ? (ide.projectPath && ide.projectPath(cwd)) : (ide.globalPath && ide.globalPath()); | ||
@@ -251,3 +318,5 @@ if (!path) { | ||
| console.log(`✓ ${ide.label}: knowmind eingetragen in ${path}`); | ||
| if (ide.secret === "env") { | ||
| if (literalToken) { | ||
| console.log(` → ${ide.label} neu starten — fertig.`); | ||
| } else if (ide.secret === "env") { | ||
| console.log(` → setze KNOWMIND_TOKEN in deiner Umgebung (oder nutze --token).`); | ||
@@ -254,0 +323,0 @@ } else if (ide.secret === "literal-only" && !literalToken) { |
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
137053
2.96%2476
2.74%204
3.03%