Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@
!/n8n/
!/obsidian/
!/unrealinsights/
!/firefly-iii/
!/nsight-graphics/
!/lldb/

Expand Down Expand Up @@ -238,6 +239,7 @@
!/safari/
!/safari/agent-harness/
!/unrealinsights/agent-harness/
!/firefly-iii/agent-harness/
!/nsight-graphics/agent-harness/
!/lldb/agent-harness/

Expand Down
174 changes: 174 additions & 0 deletions firefly-iii/agent-harness/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
# Firefly III CLI

Firefly III command-line interface based on CLI-Anything specification. Converts MCP mode to stateless CLI mode to avoid Node residual process issues.

## Installation

```bash
pip install cli-anything-firefly-iii
```

## Prerequisites

- Python 3.10+
- Running Firefly III instance
- Personal Access Token (PAT)

## Configuration

### Environment Variables (Recommended)

```bash
export FIREFLY_III_BASE_URL="https://firefly.yourdomain.com"
export FIREFLY_III_PAT="your-personal-access-token"
```

### Command Line Arguments

```bash
cli-anything-firefly-iii --base-url https://firefly.yourdomain.com --pat your-token
```

## Usage

### REPL Mode

```bash
cli-anything-firefly-iii
```

### Subcommand Mode

```bash
# Account management
cli-anything-firefly-iii accounts list
cli-anything-firefly-iii accounts list --type asset
cli-anything-firefly-iii accounts get --id 123
cli-anything-firefly-iii accounts create --name "Cash" --type asset --currency-code USD

# Transaction management
cli-anything-firefly-iii transactions list
cli-anything-firefly-iii transactions list --limit 10 --start 2024-01-01
cli-anything-firefly-iii transactions create --description "Grocery" --amount 50.00 --source-account 1
cli-anything-firefly-iii transactions get --id 456

# Budget management
cli-anything-firefly-iii budgets list

# Category management
cli-anything-firefly-iii categories list

# Tag management
cli-anything-firefly-iii tags list

# Bill management
cli-anything-firefly-iii bills list

# Piggy banks
cli-anything-firefly-iii piggy-banks list

# Insights and reports
cli-anything-firefly-iii insights expense --start 2024-01-01 --end 2024-01-31
cli-anything-firefly-iii insights income --start 2024-01-01 --end 2024-01-31

# Search
cli-anything-firefly-iii search transactions --query "grocery"

# Data export
cli-anything-firefly-iii export transactions --start 2024-01-01 --end 2024-01-31

# System information
cli-anything-firefly-iii info about
cli-anything-firefly-iii info status
```

### JSON Output

All commands support `--json` flag for structured output:

```bash
cli-anything-firefly-iii --json accounts list
```

### Preset Filtering

Use `--preset` parameter to filter available commands:

```bash
# Default preset (core features)
cli-anything-firefly-iii --preset default accounts list

# Full preset (all features)
cli-anything-firefly-iii --preset full accounts list

# Budget preset
cli-anything-firefly-iii --preset budget budgets list

# Reporting preset
cli-anything-firefly-iii --preset reporting insights expense --start 2024-01-01 --end 2024-01-31
```

Available presets:
- `default`: Core features (accounts, transactions, categories, tags, bills, search)
- `full`: All features
- `basic`: Basic features (accounts, transactions, categories, tags, search)
- `budget`: Budget-related (accounts, budgets, transactions, summary, insight)
- `reporting`: Reporting-related (accounts, transactions, categories, insight, summary, search)
- `admin`: Admin features (about, configuration, currencies, users, preferences)
- `automation`: Automation (rules, recurrences, webhooks, transactions)

## Comparison with MCP Version

| Feature | MCP Version | CLI-Anything Version |
|------|----------|-------------------|
| Process Lifecycle | Long-running | Single call, immediate exit |
| Memory Usage | Continuous | On-demand, released after |
| Communication | Stdio/SSE | Command args + stdout |
| State Management | Stateful | Stateless |
| Preset Filtering | Supported | Supported |
| JSON Output | Built-in | `--json` flag |

## Troubleshooting

### Connection Failed

```
Error: Cannot connect to Firefly III instance: https://firefly.yourdomain.com
```

Check:
1. Is Firefly III instance running
2. Is base URL correct
3. Is network connection normal

### Authentication Failed

```
Error: Authentication failed: Personal Access Token is invalid
```

Check:
1. Is PAT correct
2. Has PAT expired
3. Generate new PAT in Firefly III Options > Profile > OAuth

## Development

```bash
# Clone repository
git clone https://github.com/HKUDS/CLI-Anything.git
cd CLI-Anything/firefly-iii/agent-harness

# Install dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Code formatting
black cli_anything/
```

## License

MIT License
174 changes: 174 additions & 0 deletions firefly-iii/agent-harness/cli_anything/firefly_iii/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
# Firefly III CLI

Firefly III command-line interface based on CLI-Anything specification. Converts MCP mode to stateless CLI mode to avoid Node residual process issues.

## Installation

```bash
pip install cli-anything-firefly-iii
```

## Prerequisites

- Python 3.10+
- Running Firefly III instance
- Personal Access Token (PAT)

## Configuration

### Environment Variables (Recommended)

```bash
export FIREFLY_III_BASE_URL="https://firefly.yourdomain.com"
export FIREFLY_III_PAT="your-personal-access-token"
```

### Command Line Arguments

```bash
cli-anything-firefly-iii --base-url https://firefly.yourdomain.com --pat your-token
```

## Usage

### REPL Mode

```bash
cli-anything-firefly-iii
```

### Subcommand Mode

```bash
# Account management
cli-anything-firefly-iii accounts list
cli-anything-firefly-iii accounts list --type asset
cli-anything-firefly-iii accounts get --id 123
cli-anything-firefly-iii accounts create --name "Cash" --type asset --currency-code USD

# Transaction management
cli-anything-firefly-iii transactions list
cli-anything-firefly-iii transactions list --limit 10 --start 2024-01-01
cli-anything-firefly-iii transactions create --description "Grocery" --amount 50.00 --source-account 1
cli-anything-firefly-iii transactions get --id 456

# Budget management
cli-anything-firefly-iii budgets list

# Category management
cli-anything-firefly-iii categories list

# Tag management
cli-anything-firefly-iii tags list

# Bill management
cli-anything-firefly-iii bills list

# Piggy banks
cli-anything-firefly-iii piggy-banks list

# Insights and reports
cli-anything-firefly-iii insights expense --start 2024-01-01 --end 2024-01-31
cli-anything-firefly-iii insights income --start 2024-01-01 --end 2024-01-31

# Search
cli-anything-firefly-iii search transactions --query "grocery"

# Data export
cli-anything-firefly-iii export transactions --start 2024-01-01 --end 2024-01-31

# System information
cli-anything-firefly-iii info about
cli-anything-firefly-iii info status
```

### JSON Output

All commands support `--json` flag for structured output:

```bash
cli-anything-firefly-iii --json accounts list
```

### Preset Filtering

Use `--preset` parameter to filter available commands:

```bash
# Default preset (core features)
cli-anything-firefly-iii --preset default accounts list

# Full preset (all features)
cli-anything-firefly-iii --preset full accounts list

# Budget preset
cli-anything-firefly-iii --preset budget budgets list

# Reporting preset
cli-anything-firefly-iii --preset reporting insights expense --start 2024-01-01 --end 2024-01-31
```

Available presets:
- `default`: Core features (accounts, transactions, categories, tags, bills, search)
- `full`: All features
- `basic`: Basic features (accounts, transactions, categories, tags, search)
- `budget`: Budget-related (accounts, budgets, transactions, summary, insight)
- `reporting`: Reporting-related (accounts, transactions, categories, insight, summary, search)
- `admin`: Admin features (about, configuration, currencies, users, preferences)
- `automation`: Automation (rules, recurrences, webhooks, transactions)

## Comparison with MCP Version

| Feature | MCP Version | CLI-Anything Version |
|---------|------------|---------------------|
| Process Lifecycle | Long-running | Single call, immediate exit |
| Memory Usage | Continuous | On-demand, released after |
| Communication | Stdio/SSE | Command args + stdout |
| State Management | Stateful | Stateless |
| Preset Filtering | Supported | Supported |
| JSON Output | Built-in | `--json` flag |

## Troubleshooting

### Connection Failed

```
Error: Cannot connect to Firefly III instance: https://firefly.yourdomain.com
```

Check:
1. Is Firefly III instance running
2. Is base URL correct
3. Is network connection normal

### Authentication Failed

```
Error: Authentication failed: Personal Access Token is invalid
```

Check:
1. Is PAT correct
2. Has PAT expired
3. Generate new PAT in Firefly III Options > Profile > OAuth

## Development

```bash
# Clone repository
git clone https://github.com/HKUDS/CLI-Anything.git
cd CLI-Anything/firefly-iii/agent-harness

# Install dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Code formatting
black cli_anything/
```

## License

MIT License
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
r"""
Firefly III CLI package initialization
"""

__version__ = "1.0.0"
__author__ = "CLI-Anything"
10 changes: 10 additions & 0 deletions firefly-iii/agent-harness/cli_anything/firefly_iii/__main__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
r"""
Firefly III CLI entry point

Allows running via `python -m cli_anything.firefly_iii`
"""

from .firefly_iii_cli import main

if __name__ == '__main__':
main()
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
r"""
Core functionality package
"""
Loading