flatagents 2.4.4__tar.gz → 2.6.0__tar.gz
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.
- flatagents-2.6.0/.gitignore +26 -0
- flatagents-2.6.0/AGENTS.md +201 -0
- {flatagents-2.4.4 → flatagents-2.6.0}/MACHINES.md +7 -5
- {flatagents-2.4.4 → flatagents-2.6.0}/PKG-INFO +14 -3
- {flatagents-2.4.4 → flatagents-2.6.0}/README.md +13 -2
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/__init__.py +17 -1
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/assets/flatagent.d.ts +4 -4
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/assets/flatagent.schema.json +4 -2
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/assets/flatagent.slim.d.ts +2 -2
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/assets/flatagents-runtime.d.ts +1 -1
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/assets/flatagents-runtime.schema.json +1 -1
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/assets/flatagents-runtime.slim.d.ts +1 -1
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/assets/flatmachine.d.ts +1 -1
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/assets/flatmachine.schema.json +4 -2
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/assets/flatmachine.slim.d.ts +1 -1
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/assets/profiles.d.ts +4 -4
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/assets/profiles.schema.json +2 -1
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/assets/profiles.slim.d.ts +2 -2
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/flatagent.py +97 -8
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/monitoring.py +11 -6
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/providers/__init__.py +15 -14
- flatagents-2.6.0/flatagents/providers/github_copilot_auth.py +296 -0
- flatagents-2.6.0/flatagents/providers/github_copilot_client.py +416 -0
- flatagents-2.6.0/flatagents/providers/github_copilot_login.py +258 -0
- flatagents-2.6.0/flatagents/providers/github_copilot_types.py +39 -0
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/providers/openai_codex_client.py +24 -4
- {flatagents-2.4.4 → flatagents-2.6.0}/pyproject.toml +1 -1
- flatagents-2.4.4/.gitignore +0 -18
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/assets/README.md +0 -0
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/assets/__init__.py +0 -0
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/baseagent.py +0 -0
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/profiles.py +0 -0
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/providers/anthropic.py +0 -0
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/providers/cerebras.py +0 -0
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/providers/openai.py +0 -0
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/providers/openai_codex_auth.py +0 -0
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/providers/openai_codex_login.py +0 -0
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/providers/openai_codex_types.py +0 -0
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/tool_loop.py +0 -0
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/tools.py +0 -0
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/utils.py +0 -0
- {flatagents-2.4.4 → flatagents-2.6.0}/flatagents/validation.py +0 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
.env
|
|
2
|
+
uv.lock
|
|
3
|
+
node_modules
|
|
4
|
+
__pycache__
|
|
5
|
+
dist
|
|
6
|
+
.DS_Store
|
|
7
|
+
.venv
|
|
8
|
+
|
|
9
|
+
.claude
|
|
10
|
+
|
|
11
|
+
.self_improve
|
|
12
|
+
|
|
13
|
+
local
|
|
14
|
+
data
|
|
15
|
+
.checkpoints
|
|
16
|
+
|
|
17
|
+
logs
|
|
18
|
+
|
|
19
|
+
.aider.tags.cache.v4/
|
|
20
|
+
.speed-kills/
|
|
21
|
+
auth.json
|
|
22
|
+
.speed-kills/speed-kills
|
|
23
|
+
.speed-kills/indexes/
|
|
24
|
+
.speed-kills/state.db
|
|
25
|
+
.speed-kills/state.db-shm
|
|
26
|
+
.speed-kills/state.db-wal
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# FlatAgents + FlatMachines Reference
|
|
2
|
+
|
|
3
|
+
> **Target: <1000 tokens.** LLM-optimized. See `flatagent.d.ts`, `flatmachine.d.ts`, `profiles.d.ts` for schemas.
|
|
4
|
+
>
|
|
5
|
+
> **Versioning:** All specs and SDKs use lockstep versioning.
|
|
6
|
+
|
|
7
|
+
## Concepts
|
|
8
|
+
|
|
9
|
+
**FlatAgent**: Single LLM call. Model + prompts + output schema. No orchestration.
|
|
10
|
+
**FlatMachine**: State machine orchestrating agents. States, transitions, conditions, loops, error handling.
|
|
11
|
+
|
|
12
|
+
| Need | Use |
|
|
13
|
+
|------|-----|
|
|
14
|
+
| Single LLM call | FlatAgent |
|
|
15
|
+
| Multi-step/branching/retry/errors | FlatMachine |
|
|
16
|
+
| Parallel execution | `machine: [a, b, c]` |
|
|
17
|
+
| Dynamic parallelism | `foreach` |
|
|
18
|
+
| Background tasks | `launch` |
|
|
19
|
+
|
|
20
|
+
## Model Profiles
|
|
21
|
+
|
|
22
|
+
```yaml
|
|
23
|
+
# profiles.yml — agents reference by name
|
|
24
|
+
spec: flatprofiles
|
|
25
|
+
spec_version: "2.5.0"
|
|
26
|
+
data:
|
|
27
|
+
model_profiles:
|
|
28
|
+
fast: { provider: cerebras, name: zai-glm-4.6, temperature: 0.6 }
|
|
29
|
+
smart: { provider: anthropic, name: claude-3-opus-20240229 }
|
|
30
|
+
default: fast # Fallback
|
|
31
|
+
# override: smart # Force all
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Agent model field: `"fast"` | `{ profile: "fast", temperature: 0.9 }` | `{ provider: x, name: y }`
|
|
35
|
+
Resolution: default → profile → overrides → override
|
|
36
|
+
|
|
37
|
+
## OAuth Backends (Codex / Copilot)
|
|
38
|
+
|
|
39
|
+
- `backend: codex` and `backend: copilot` are **explicit-only** (never auto-detected).
|
|
40
|
+
- Backend selection precedence remains: constructor `backend` → resolved `model.backend` → auto-detect (litellm/aisuite only).
|
|
41
|
+
- `oauth` settings are read from resolved model config; works identically whether model came from inline agent config or profile.
|
|
42
|
+
- Auth file precedence:
|
|
43
|
+
- Codex: `oauth.auth_file` → legacy `codex_auth_file` → legacy `auth.auth_file` → `FLATAGENTS_CODEX_AUTH_FILE` → `~/.pi/agent/auth.json`
|
|
44
|
+
- Copilot: `oauth.auth_file` → `copilot_auth_file` → legacy `auth.auth_file` → `FLATAGENTS_COPILOT_AUTH_FILE` → `~/.agents/flatmachines/auth.json`
|
|
45
|
+
- Token handling: pre-request refresh on expiry; if refresh fails, re-read auth store once for cross-process refresh; fallback refresh+retry on `401/403`.
|
|
46
|
+
- Retries on `429/500/502/503/504` with exponential backoff (no jitter).
|
|
47
|
+
|
|
48
|
+
## Agent References
|
|
49
|
+
|
|
50
|
+
`data.agents` values may be:
|
|
51
|
+
- String path to a flatagent config
|
|
52
|
+
- Inline flatagent config (`spec: flatagent`)
|
|
53
|
+
- Typed adapter ref: `{ type: "flatagent" | "smolagents" | "pi-agent", ref?: "...", config?: {...} }`
|
|
54
|
+
|
|
55
|
+
## State Fields
|
|
56
|
+
|
|
57
|
+
| Field | Purpose |
|
|
58
|
+
|-------|---------|
|
|
59
|
+
| `type` | `initial` (entry) / `final` (exit+output) |
|
|
60
|
+
| `agent` | Agent to call |
|
|
61
|
+
| `machine` | Machine(s) — string or `[array]` for parallel |
|
|
62
|
+
| `foreach` | Array expr for dynamic parallelism (`as`: item var, `key`: result key) |
|
|
63
|
+
| `launch` / `launch_input` | Fire-and-forget machine(s) |
|
|
64
|
+
| `input` | Map input to agent/machine |
|
|
65
|
+
| `output_to_context` | Map `output.*` to `context.*` |
|
|
66
|
+
| `execution` | `{ type: retry, backoffs: [2,8,16], jitter: 0.1 }` |
|
|
67
|
+
| `on_error` | State name or `{ default: x, ErrorType: y }` |
|
|
68
|
+
| `transitions` | `[{ condition: "expr", to: state }, { to: default }]` |
|
|
69
|
+
| `mode` | `settled` (all) / `any` (first) for parallel |
|
|
70
|
+
| `wait_for` | Channel to wait for external signal (Jinja2 template) |
|
|
71
|
+
| `timeout` | Seconds (0=forever) |
|
|
72
|
+
|
|
73
|
+
## Patterns
|
|
74
|
+
|
|
75
|
+
**Execution types**: `default` | `retry` (backoffs, jitter) | `parallel` (n_samples) | `mdap_voting` (k_margin, max_candidates)
|
|
76
|
+
|
|
77
|
+
**Transitions**: `condition: "context.score >= 8"` with `to: state`. Last without condition = default.
|
|
78
|
+
|
|
79
|
+
**Loops**: Transition `to: same_state`. Machine has `max_steps` safety.
|
|
80
|
+
|
|
81
|
+
**Errors**: `on_error: state` or per-type. Context gets `last_error`, `last_error_type`.
|
|
82
|
+
|
|
83
|
+
**Parallel machines**:
|
|
84
|
+
```yaml
|
|
85
|
+
machine: [review_a, review_b] # Results keyed by name
|
|
86
|
+
mode: settled # or "any"
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Foreach**:
|
|
90
|
+
```yaml
|
|
91
|
+
foreach: "{{ context.items }}"
|
|
92
|
+
as: item
|
|
93
|
+
machine: processor
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Launch** (fire-and-forget):
|
|
97
|
+
```yaml
|
|
98
|
+
launch: background_task
|
|
99
|
+
launch_input: { data: "{{ context.data }}" }
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**Wait for signal** (checkpoint, exit, resume on signal):
|
|
103
|
+
```yaml
|
|
104
|
+
wait_for_approval:
|
|
105
|
+
wait_for: "approval/{{ context.task_id }}"
|
|
106
|
+
timeout: 86400
|
|
107
|
+
output_to_context:
|
|
108
|
+
approved: "{{ output.approved }}"
|
|
109
|
+
transitions:
|
|
110
|
+
- condition: "context.approved"
|
|
111
|
+
to: continue
|
|
112
|
+
- to: rejected
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Distributed Worker Pattern
|
|
116
|
+
|
|
117
|
+
Use hook actions (e.g., `DistributedWorkerHooks`) with a `RegistrationBackend` + `WorkBackend` to build worker pools.
|
|
118
|
+
|
|
119
|
+
**Core machines**
|
|
120
|
+
- **Checker**: `get_pool_state` → `calculate_spawn` → `spawn_workers`
|
|
121
|
+
- **Worker**: `register_worker` → `claim_job` → process → `complete_job`/`fail_job` → `deregister_worker`
|
|
122
|
+
- **Reaper**: `list_stale_workers` → `reap_stale_workers`
|
|
123
|
+
|
|
124
|
+
`spawn_workers` expects `worker_config_path` in context (or override hooks to resolve it). Custom queues can compose the base hooks and add actions.
|
|
125
|
+
|
|
126
|
+
```yaml
|
|
127
|
+
context:
|
|
128
|
+
worker_config_path: "./job_worker.yml"
|
|
129
|
+
states:
|
|
130
|
+
check_state: { action: get_pool_state }
|
|
131
|
+
calculate_spawn: { action: calculate_spawn }
|
|
132
|
+
spawn_workers: { action: spawn_workers }
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
See `sdk/examples/distributed_worker/` for a full example.
|
|
136
|
+
|
|
137
|
+
## Signals & Triggers
|
|
138
|
+
|
|
139
|
+
Machine pauses at `wait_for` state → checkpoints with `waiting_channel` → process exits. Nothing running.
|
|
140
|
+
|
|
141
|
+
**Signal delivery**: External process writes signal → trigger fires → dispatcher resumes matching machines.
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
send("approval/task-001", {approved: true})
|
|
145
|
+
→ SQLite INSERT + touch trigger file
|
|
146
|
+
→ launchd/systemd starts dispatcher
|
|
147
|
+
→ dispatcher queries checkpoints WHERE waiting_channel = "approval/task-001"
|
|
148
|
+
→ resumes machine from checkpoint, signal data as output.*
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**Channel semantics**:
|
|
152
|
+
- Addressed: `"approval/{{ context.task_id }}"` → one waiter
|
|
153
|
+
- Broadcast: `"quota/openai"` → N waiters (dispatcher controls limit)
|
|
154
|
+
|
|
155
|
+
**10,000 waiting machines** = 10,000 rows in SQLite. Zero processes, zero memory.
|
|
156
|
+
|
|
157
|
+
**Trigger backends**: `none` (polling), `file` (launchd/systemd — nothing running), `socket` (UDS, in-process).
|
|
158
|
+
DynamoDB Streams is implicit (no trigger code needed).
|
|
159
|
+
|
|
160
|
+
**Signal backends**: `memory` (testing), `sqlite` (local durable), `dynamodb` (AWS).
|
|
161
|
+
|
|
162
|
+
## Context Variables
|
|
163
|
+
|
|
164
|
+
`context.*` (all states), `input.*` (initial), `output.*` (in output_to_context), `item`/`as` (foreach)
|
|
165
|
+
|
|
166
|
+
## Hooks
|
|
167
|
+
|
|
168
|
+
`on_machine_start`, `on_machine_end`, `on_state_enter`, `on_state_exit`, `on_transition`, `on_error`, `on_action`
|
|
169
|
+
|
|
170
|
+
```python
|
|
171
|
+
class MyHooks(MachineHooks):
|
|
172
|
+
def on_action(self, action: str, context: dict) -> dict:
|
|
173
|
+
if action == "fetch": context["data"] = api_call()
|
|
174
|
+
return context
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Persistence
|
|
178
|
+
|
|
179
|
+
```yaml
|
|
180
|
+
persistence: { enabled: true, backend: local } # local | memory | sqlite
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
SQLite backend (durable, single-file, no external dependencies):
|
|
184
|
+
```yaml
|
|
185
|
+
persistence:
|
|
186
|
+
enabled: true
|
|
187
|
+
backend: sqlite
|
|
188
|
+
db_path: ./flatmachines.sqlite # optional, defaults to flatmachines.sqlite
|
|
189
|
+
```
|
|
190
|
+
Auto-selects `SQLiteLeaseLock` and `SQLiteConfigStore` — no runner injection needed.
|
|
191
|
+
|
|
192
|
+
Resume: `machine.execute(resume_from=execution_id)`
|
|
193
|
+
|
|
194
|
+
## SDKs
|
|
195
|
+
|
|
196
|
+
### Python SDKs
|
|
197
|
+
- **flatagents** (agents): `pip install flatagents[litellm]`
|
|
198
|
+
- **flatmachines** (orchestration): `pip install flatmachines[flatagents]`
|
|
199
|
+
|
|
200
|
+
### JavaScript SDK
|
|
201
|
+
A single JS SDK lives under [`sdk/js`](./sdk/js). It follows the same specs but is not yet split into separate FlatAgents/FlatMachines packages.
|
|
@@ -72,10 +72,10 @@ Common fields supported by the Python runtime:
|
|
|
72
72
|
- `provider`, `name` (combined into `provider/name` if needed)
|
|
73
73
|
- `temperature`, `max_tokens`, `top_p`, `top_k`
|
|
74
74
|
- `frequency_penalty`, `presence_penalty`, `seed`
|
|
75
|
-
- `base_url` (passed as `api_base` to LiteLLM, or
|
|
75
|
+
- `base_url` (passed as `api_base` to LiteLLM, or direct base URL for `backend: codex` / `backend: copilot`)
|
|
76
76
|
- `stream` (bool), `stream_options`
|
|
77
|
-
- `backend` ("litellm" | "aisuite" | "codex")
|
|
78
|
-
- `oauth` (
|
|
77
|
+
- `backend` ("litellm" | "aisuite" | "codex" | "copilot")
|
|
78
|
+
- `oauth` (provider auth config; Codex fields include `originator`, `token_url`, `client_id`)
|
|
79
79
|
|
|
80
80
|
## Python Runtime Behavior
|
|
81
81
|
|
|
@@ -116,6 +116,7 @@ The Python SDK supports:
|
|
|
116
116
|
- **LiteLLMBackend** (default; `litellm`)
|
|
117
117
|
- **AISuiteBackend** (`aisuite`)
|
|
118
118
|
- **Codex OAuth backend** (`codex`)
|
|
119
|
+
- **GitHub Copilot OAuth backend** (`copilot`)
|
|
119
120
|
- **LLMBackend** protocol for custom providers
|
|
120
121
|
|
|
121
122
|
Backend selection order:
|
|
@@ -124,11 +125,12 @@ Backend selection order:
|
|
|
124
125
|
3. `FLATAGENTS_BACKEND` env var ("litellm" or "aisuite")
|
|
125
126
|
4. Auto-detect installed backend (prefers litellm)
|
|
126
127
|
|
|
127
|
-
Codex
|
|
128
|
+
Codex and Copilot are never auto-detected; configure them explicitly via `backend: codex` / `backend: copilot`.
|
|
128
129
|
|
|
129
|
-
|
|
130
|
+
Login helpers:
|
|
130
131
|
```bash
|
|
131
132
|
python -m flatagents.providers.openai_codex_login --auth-file ~/.pi/agent/auth.json
|
|
133
|
+
python -m flatagents.providers.github_copilot_login --auth-file ~/.agents/flatmachines/auth.json
|
|
132
134
|
```
|
|
133
135
|
|
|
134
136
|
## MCP Tooling
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flatagents
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.6.0
|
|
4
4
|
Summary: A lightweight framework for building LLM-powered agents.
|
|
5
5
|
Project-URL: Homepage, https://github.com/memgrafter/flatagents
|
|
6
6
|
Project-URL: Repository, https://github.com/memgrafter/flatagents
|
|
@@ -121,6 +121,7 @@ Built-in backends:
|
|
|
121
121
|
- **LiteLLMBackend** (default, `litellm`)
|
|
122
122
|
- **AISuiteBackend** (`aisuite`)
|
|
123
123
|
- **Codex OAuth backend** (`codex`)
|
|
124
|
+
- **GitHub Copilot OAuth backend** (`copilot`)
|
|
124
125
|
|
|
125
126
|
Selection order:
|
|
126
127
|
1. `backend` argument to `FlatAgent(...)`
|
|
@@ -128,7 +129,7 @@ Selection order:
|
|
|
128
129
|
3. `FLATAGENTS_BACKEND` env var ("litellm" or "aisuite")
|
|
129
130
|
4. Auto-detect installed backend (prefers litellm)
|
|
130
131
|
|
|
131
|
-
Codex
|
|
132
|
+
Codex and Copilot are explicit only (not auto-detected):
|
|
132
133
|
|
|
133
134
|
```yaml
|
|
134
135
|
model:
|
|
@@ -139,10 +140,20 @@ model:
|
|
|
139
140
|
auth_file: ~/.pi/agent/auth.json
|
|
140
141
|
```
|
|
141
142
|
|
|
142
|
-
|
|
143
|
+
```yaml
|
|
144
|
+
model:
|
|
145
|
+
provider: github-copilot
|
|
146
|
+
name: gpt-4o
|
|
147
|
+
backend: copilot
|
|
148
|
+
oauth:
|
|
149
|
+
auth_file: ~/.agents/flatmachines/auth.json
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Login helpers:
|
|
143
153
|
|
|
144
154
|
```bash
|
|
145
155
|
python -m flatagents.providers.openai_codex_login --auth-file ~/.pi/agent/auth.json
|
|
156
|
+
python -m flatagents.providers.github_copilot_login --auth-file ~/.agents/flatmachines/auth.json
|
|
146
157
|
```
|
|
147
158
|
|
|
148
159
|
## MCP Tools
|
|
@@ -78,6 +78,7 @@ Built-in backends:
|
|
|
78
78
|
- **LiteLLMBackend** (default, `litellm`)
|
|
79
79
|
- **AISuiteBackend** (`aisuite`)
|
|
80
80
|
- **Codex OAuth backend** (`codex`)
|
|
81
|
+
- **GitHub Copilot OAuth backend** (`copilot`)
|
|
81
82
|
|
|
82
83
|
Selection order:
|
|
83
84
|
1. `backend` argument to `FlatAgent(...)`
|
|
@@ -85,7 +86,7 @@ Selection order:
|
|
|
85
86
|
3. `FLATAGENTS_BACKEND` env var ("litellm" or "aisuite")
|
|
86
87
|
4. Auto-detect installed backend (prefers litellm)
|
|
87
88
|
|
|
88
|
-
Codex
|
|
89
|
+
Codex and Copilot are explicit only (not auto-detected):
|
|
89
90
|
|
|
90
91
|
```yaml
|
|
91
92
|
model:
|
|
@@ -96,10 +97,20 @@ model:
|
|
|
96
97
|
auth_file: ~/.pi/agent/auth.json
|
|
97
98
|
```
|
|
98
99
|
|
|
99
|
-
|
|
100
|
+
```yaml
|
|
101
|
+
model:
|
|
102
|
+
provider: github-copilot
|
|
103
|
+
name: gpt-4o
|
|
104
|
+
backend: copilot
|
|
105
|
+
oauth:
|
|
106
|
+
auth_file: ~/.agents/flatmachines/auth.json
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Login helpers:
|
|
100
110
|
|
|
101
111
|
```bash
|
|
102
112
|
python -m flatagents.providers.openai_codex_login --auth-file ~/.pi/agent/auth.json
|
|
113
|
+
python -m flatagents.providers.github_copilot_login --auth-file ~/.agents/flatmachines/auth.json
|
|
103
114
|
```
|
|
104
115
|
|
|
105
116
|
## MCP Tools
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
__version__ = "2.
|
|
1
|
+
__version__ = "2.6.0"
|
|
2
2
|
|
|
3
3
|
from .baseagent import (
|
|
4
4
|
# Base agent (abstract, for multi-step agents)
|
|
@@ -79,6 +79,14 @@ from .providers import (
|
|
|
79
79
|
CodexResult,
|
|
80
80
|
CodexToolCall,
|
|
81
81
|
CodexUsage,
|
|
82
|
+
CopilotAuthError,
|
|
83
|
+
CopilotClient,
|
|
84
|
+
CopilotClientError,
|
|
85
|
+
CopilotHTTPError,
|
|
86
|
+
CopilotOAuthCredential,
|
|
87
|
+
CopilotResult,
|
|
88
|
+
CopilotToolCall,
|
|
89
|
+
CopilotUsage,
|
|
82
90
|
)
|
|
83
91
|
|
|
84
92
|
__all__ = [
|
|
@@ -129,6 +137,14 @@ __all__ = [
|
|
|
129
137
|
"CodexResult",
|
|
130
138
|
"CodexToolCall",
|
|
131
139
|
"CodexUsage",
|
|
140
|
+
"CopilotAuthError",
|
|
141
|
+
"CopilotClient",
|
|
142
|
+
"CopilotClientError",
|
|
143
|
+
"CopilotHTTPError",
|
|
144
|
+
"CopilotOAuthCredential",
|
|
145
|
+
"CopilotResult",
|
|
146
|
+
"CopilotToolCall",
|
|
147
|
+
"CopilotUsage",
|
|
132
148
|
# Validation
|
|
133
149
|
"validate_flatagent_config",
|
|
134
150
|
"get_flatagent_schema",
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
* presence_penalty - Presence penalty (-2.0 to 2.0)
|
|
47
47
|
* seed - Random seed for reproducibility
|
|
48
48
|
* base_url - Custom API base URL (for local models/proxies)
|
|
49
|
-
* backend - Runtime backend override (litellm, aisuite, codex)
|
|
50
|
-
* oauth - OAuth settings (used by codex
|
|
49
|
+
* backend - Runtime backend override (litellm, aisuite, codex, copilot)
|
|
50
|
+
* oauth - OAuth settings (used by codex/copilot backends)
|
|
51
51
|
*
|
|
52
52
|
* MODEL PROFILES:
|
|
53
53
|
* ---------------
|
|
@@ -151,7 +151,7 @@
|
|
|
151
151
|
* The profile field specifies which profile name to use as base.
|
|
152
152
|
*/
|
|
153
153
|
|
|
154
|
-
export const SPEC_VERSION = "2.
|
|
154
|
+
export const SPEC_VERSION = "2.6.0";
|
|
155
155
|
|
|
156
156
|
export interface AgentWrapper {
|
|
157
157
|
spec: "flatagent";
|
|
@@ -222,7 +222,7 @@ export interface ModelConfig {
|
|
|
222
222
|
presence_penalty?: number;
|
|
223
223
|
seed?: number;
|
|
224
224
|
base_url?: string;
|
|
225
|
-
backend?: "litellm" | "aisuite" | "codex";
|
|
225
|
+
backend?: "litellm" | "aisuite" | "codex" | "copilot";
|
|
226
226
|
api?: string;
|
|
227
227
|
oauth?: OAuthConfig;
|
|
228
228
|
}
|
|
@@ -112,7 +112,8 @@
|
|
|
112
112
|
"enum": [
|
|
113
113
|
"litellm",
|
|
114
114
|
"aisuite",
|
|
115
|
-
"codex"
|
|
115
|
+
"codex",
|
|
116
|
+
"copilot"
|
|
116
117
|
]
|
|
117
118
|
},
|
|
118
119
|
"api": {
|
|
@@ -195,7 +196,8 @@
|
|
|
195
196
|
"enum": [
|
|
196
197
|
"litellm",
|
|
197
198
|
"aisuite",
|
|
198
|
-
"codex"
|
|
199
|
+
"codex",
|
|
200
|
+
"copilot"
|
|
199
201
|
]
|
|
200
202
|
},
|
|
201
203
|
"api": {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const SPEC_VERSION = "2.
|
|
1
|
+
export const SPEC_VERSION = "2.6.0";
|
|
2
2
|
export interface AgentWrapper {
|
|
3
3
|
spec: "flatagent";
|
|
4
4
|
spec_version: string;
|
|
@@ -61,7 +61,7 @@ export interface ModelConfig {
|
|
|
61
61
|
presence_penalty?: number;
|
|
62
62
|
seed?: number;
|
|
63
63
|
base_url?: string;
|
|
64
|
-
backend?: "litellm" | "aisuite" | "codex";
|
|
64
|
+
backend?: "litellm" | "aisuite" | "codex" | "copilot";
|
|
65
65
|
api?: string;
|
|
66
66
|
oauth?: OAuthConfig;
|
|
67
67
|
}
|
|
@@ -252,7 +252,7 @@ export interface BackendConfig {
|
|
|
252
252
|
dynamodb_table?: string;
|
|
253
253
|
aws_region?: string;
|
|
254
254
|
}
|
|
255
|
-
export const SPEC_VERSION = "2.
|
|
255
|
+
export const SPEC_VERSION = "2.6.0";
|
|
256
256
|
export interface SDKRuntimeWrapper {
|
|
257
257
|
spec: "flatagents-runtime";
|
|
258
258
|
spec_version: typeof SPEC_VERSION;
|
|
@@ -251,7 +251,8 @@
|
|
|
251
251
|
"enum": [
|
|
252
252
|
"litellm",
|
|
253
253
|
"aisuite",
|
|
254
|
-
"codex"
|
|
254
|
+
"codex",
|
|
255
|
+
"copilot"
|
|
255
256
|
]
|
|
256
257
|
},
|
|
257
258
|
"api": {
|
|
@@ -334,7 +335,8 @@
|
|
|
334
335
|
"enum": [
|
|
335
336
|
"litellm",
|
|
336
337
|
"aisuite",
|
|
337
|
-
"codex"
|
|
338
|
+
"codex",
|
|
339
|
+
"copilot"
|
|
338
340
|
]
|
|
339
341
|
},
|
|
340
342
|
"api": {
|
|
@@ -106,11 +106,11 @@
|
|
|
106
106
|
* seed - Random seed for reproducibility
|
|
107
107
|
* base_url - Custom base URL for the API (e.g., for local models or proxies)
|
|
108
108
|
* stream - Enable streaming responses (default: false)
|
|
109
|
-
* backend - Runtime backend override (litellm, aisuite, codex)
|
|
110
|
-
* oauth - OAuth settings (used by codex
|
|
109
|
+
* backend - Runtime backend override (litellm, aisuite, codex, copilot)
|
|
110
|
+
* oauth - OAuth settings (used by codex/copilot backends)
|
|
111
111
|
*/
|
|
112
112
|
|
|
113
|
-
export const SPEC_VERSION = "2.
|
|
113
|
+
export const SPEC_VERSION = "2.6.0";
|
|
114
114
|
|
|
115
115
|
export interface ProfilesWrapper {
|
|
116
116
|
spec: "flatprofiles";
|
|
@@ -148,7 +148,7 @@ export interface ModelProfileConfig {
|
|
|
148
148
|
seed?: number;
|
|
149
149
|
base_url?: string;
|
|
150
150
|
stream?: boolean;
|
|
151
|
-
backend?: "litellm" | "aisuite" | "codex";
|
|
151
|
+
backend?: "litellm" | "aisuite" | "codex" | "copilot";
|
|
152
152
|
api?: string;
|
|
153
153
|
oauth?: OAuthConfig;
|
|
154
154
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const SPEC_VERSION = "2.
|
|
1
|
+
export const SPEC_VERSION = "2.6.0";
|
|
2
2
|
export interface ProfilesWrapper {
|
|
3
3
|
spec: "flatprofiles";
|
|
4
4
|
spec_version: string;
|
|
@@ -32,7 +32,7 @@ export interface ModelProfileConfig {
|
|
|
32
32
|
seed?: number;
|
|
33
33
|
base_url?: string;
|
|
34
34
|
stream?: boolean;
|
|
35
|
-
backend?: "litellm" | "aisuite" | "codex";
|
|
35
|
+
backend?: "litellm" | "aisuite" | "codex" | "copilot";
|
|
36
36
|
api?: string;
|
|
37
37
|
oauth?: OAuthConfig;
|
|
38
38
|
}
|