diff --git a/README.md b/README.md index 928aed81..26c030cf 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,9 @@ See the official [plugin documentation](https://www.appdevforall.org/codeonthego | [`ai-core/`](ai-core/) | Shared on-device LLM inference backend (bundled llama.cpp AAR) plus a Gemini API backend, exposed to other plugins as a runtime service. | | [`ai-assistant/`](ai-assistant/) | In-IDE AI chat assistant with tool calling; talks to `ai-core` for inference over local or Gemini models. | | [`flutter-template/`](flutter-template/) | Adds Flutter starter project templates (Basic, BLoC, Provider, GetX, Riverpod) to the New Project screen. | +| [`code-suggestions-plugin/`](code-suggestions-plugin/) | Inline ghost-text code completions powered by AI. | +| [`speech-to-text-plugin/`](speech-to-text-plugin/) | Voice-to-code: converts speech to code with AI generation. | +| [`vector-search-plugin/`](vector-search-plugin/) | Semantic code search using embeddings and vector similarity. | ## Building a plugin diff --git a/ai-assistant/README.md b/ai-assistant/README.md index 54a729ef..5a01ae6b 100644 --- a/ai-assistant/README.md +++ b/ai-assistant/README.md @@ -56,6 +56,22 @@ The build resolves `plugin-api.jar` from the repo-root `../libs/`. - `fragments/AiSettingsFragment.kt`, `viewmodel/AiSettingsViewModel.kt` — model/backend config - `tool/` — the agent tool-loop (executor, router, per-tool handlers, approval) +## Security + +- **Gemini API key at rest.** When you use the Gemini backend, the API key is + stored in this plugin's private `SharedPreferences` (`AgentSettings`). That + store is **app-sandboxed** — other apps cannot read it — but it is **not + encrypted at rest**, so it is recoverable on a rooted or otherwise compromised + device. Remove it any time from **AI Settings** (or `clearGeminiApiKey()`). + Encryption is deliberately not layered on here: the key is shared at runtime + with the sibling `ai-core` plugin (which performs the Gemini calls), and + `EncryptedSharedPreferences` would force both independent plugins to agree on a + master-key alias and crypto library version — a fragile cross-plugin coupling. + A host-provided secure-storage service is the correct long-term fix. +- **Gemini API key in transit.** The key is sent to Google as an `x-goog-api-key` + request header (and via the SDK on the chat path), never in a URL query string. +- **File tools are confined to the project root** — see the in-IDE help page. + ## License GPL-3.0 — same as AndroidIDE / CodeOnTheGo. diff --git a/ai-assistant/ai-assistant.html b/ai-assistant/ai-assistant.html index 2d52facc..a0f5cf25 100644 --- a/ai-assistant/ai-assistant.html +++ b/ai-assistant/ai-assistant.html @@ -54,9 +54,8 @@

1. Executive Overview

  • AI Core — the inference engine. Provides an LlmInferenceService with two backends: a local, on-device model (llama.cpp) and Google Gemini. Install this first.
  • -
  • AI Assistant — the user interface. Contributes the Agent tab, the - editor context-menu actions, and the agent tool-loop that drives the - model.
  • +
  • AI Assistant — the user interface. Contributes the Agent tab and + the agent tool-loop that drives the model.
  • The two plugins are bridged by a shared service registry (SharedServices), so the UI plugin discovers the inference @@ -71,8 +70,6 @@

    2. Core Functionality

    and generate code from templates.
  • Dual inference backends — fully offline on-device inference, or Gemini in the cloud, selectable in Settings.
  • -
  • Editor context actionsExplain Code and - Generate Code from the editor selection.
  • Safety controls — filesystem tools are confined to the project root, and mutating tools require explicit user approval.
  • diff --git a/ai-assistant/src/main/AndroidManifest.xml b/ai-assistant/src/main/AndroidManifest.xml index 8b593826..78fed1cc 100644 --- a/ai-assistant/src/main/AndroidManifest.xml +++ b/ai-assistant/src/main/AndroidManifest.xml @@ -33,7 +33,7 @@ + android:value="26.30" /> What the agent can do device. -

    Context-menu actions

    -

    Select code in the editor and open the context menu for - Explain Code and Generate Code shortcuts.

    -

    Troubleshooting