# `@earendil-works/pi-radius-work`

Google Workspace authentication plus Radius image tools for [Pi](https://github.com/badlogic/pi-mono).

## Included resources

- `/google-workspaces` command for connecting a Google Workspace account through Radius OAuth
- `image_generation` tool for generating or editing images through Radius
- `describe_file` tool for turning attached images into text through Radius

## Installation

```bash
pi install npm:@earendil-works/pi-radius-work
```

Restart Pi or run `/reload` after installation. Inspect or enable the installed extensions with:

```bash
pi list
pi config
```

Image generation requires a Radius model and Radius authentication. Install the core Radius package if it is not already present:

```bash
pi install npm:@earendil-works/pi-radius
```

Then run `/login radius` and select a Radius model with `/model`.

## Google Workspace login

Run:

```text
/google-workspaces
```

Pi opens a browser to complete authentication and stores the resulting token by account under:

```text
~/.pi/google-workspace/tokens/
```

Set `GOOGLE_WORKSPACE_TOKENS_DIR` to use another token directory. Set `GOOGLE_WORKSPACE_CALLBACK_HOST` to override the local OAuth callback host (the default is `localhost`).

After you connect:

- Pi shows a footer status for Google Workspace on every session start
- `/google-workspaces status` lists the connected account email(s) and token path(s)
- fresh prompts automatically include the locally connected account email list in the system prompt, so account-specific requests like “find my last email in name@example.com” can resolve to the right local account without exposing token paths or token values to the model

## Image tools

### `image_generation`

The `image_generation` tool accepts a text prompt, an optional output path, and optional base64-encoded input images. It can generate a new image or edit supplied images. Generated image bytes are written directly to disk instead of being added to the conversation context. Relative output paths are resolved from Pi's working directory; when no path is supplied, the tool creates `generated-image-<tool-call-id>.<extension>` there. If the gateway returns multiple images, the filenames receive numeric suffixes.

The tool result contains only the saved file paths and small metadata.

### `describe_file`

The `describe_file` tool accepts one or more base64-encoded image files and returns a text description suitable for feeding back into the active loop. It is meant for text-only models that need help understanding attached images.

Both tools are only available while the current model uses the `radius` or `radius-dev` provider.

The gateway defaults to `https://radius.pi.dev`. Development and API-key overrides use `PI_GATEWAY`, `PI_GATEWAY_API_KEY`, `PI_DEV_GATEWAY`, and `PI_DEV_GATEWAY_API_KEY`.

## Local development

From the repository root:

```bash
pi -e ./packages/pi-radius-work
```

Or load one extension directly:

```bash
pi -e ./packages/pi-radius-work/extensions/radius-google-workspaces.ts
pi -e ./packages/pi-radius-work/extensions/radius-image-generation.ts
pi -e ./packages/pi-radius-work/extensions/radius-describe-file.ts
```
