flatagents 2.5.0__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.
Files changed (41) hide show
  1. {flatagents-2.5.0 → flatagents-2.6.0}/.gitignore +7 -0
  2. flatagents-2.6.0/AGENTS.md +201 -0
  3. {flatagents-2.5.0 → flatagents-2.6.0}/MACHINES.md +7 -5
  4. {flatagents-2.5.0 → flatagents-2.6.0}/PKG-INFO +14 -3
  5. {flatagents-2.5.0 → flatagents-2.6.0}/README.md +13 -2
  6. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/__init__.py +17 -1
  7. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/assets/flatagent.d.ts +4 -4
  8. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/assets/flatagent.schema.json +4 -2
  9. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/assets/flatagent.slim.d.ts +2 -2
  10. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/assets/flatagents-runtime.d.ts +1 -1
  11. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/assets/flatagents-runtime.schema.json +1 -1
  12. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/assets/flatagents-runtime.slim.d.ts +1 -1
  13. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/assets/flatmachine.d.ts +1 -1
  14. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/assets/flatmachine.schema.json +4 -2
  15. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/assets/flatmachine.slim.d.ts +1 -1
  16. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/assets/profiles.d.ts +4 -4
  17. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/assets/profiles.schema.json +2 -1
  18. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/assets/profiles.slim.d.ts +2 -2
  19. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/flatagent.py +70 -4
  20. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/monitoring.py +11 -6
  21. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/providers/__init__.py +15 -14
  22. flatagents-2.6.0/flatagents/providers/github_copilot_auth.py +296 -0
  23. flatagents-2.6.0/flatagents/providers/github_copilot_client.py +416 -0
  24. flatagents-2.6.0/flatagents/providers/github_copilot_login.py +258 -0
  25. flatagents-2.6.0/flatagents/providers/github_copilot_types.py +39 -0
  26. {flatagents-2.5.0 → flatagents-2.6.0}/pyproject.toml +1 -1
  27. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/assets/README.md +0 -0
  28. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/assets/__init__.py +0 -0
  29. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/baseagent.py +0 -0
  30. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/profiles.py +0 -0
  31. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/providers/anthropic.py +0 -0
  32. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/providers/cerebras.py +0 -0
  33. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/providers/openai.py +0 -0
  34. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/providers/openai_codex_auth.py +0 -0
  35. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/providers/openai_codex_client.py +0 -0
  36. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/providers/openai_codex_login.py +0 -0
  37. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/providers/openai_codex_types.py +0 -0
  38. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/tool_loop.py +0 -0
  39. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/tools.py +0 -0
  40. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/utils.py +0 -0
  41. {flatagents-2.5.0 → flatagents-2.6.0}/flatagents/validation.py +0 -0
@@ -8,6 +8,8 @@ dist
8
8
 
9
9
  .claude
10
10
 
11
+ .self_improve
12
+
11
13
  local
12
14
  data
13
15
  .checkpoints
@@ -17,3 +19,8 @@ logs
17
19
  .aider.tags.cache.v4/
18
20
  .speed-kills/
19
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 Codex base URL for `backend: codex`)
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` (Codex auth config: `auth_file`, `originator`, `refresh`, `timeout_seconds`, `max_retries`, `token_url`, `client_id`)
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 is never auto-detected; configure it explicitly via `backend: codex`.
128
+ Codex and Copilot are never auto-detected; configure them explicitly via `backend: codex` / `backend: copilot`.
128
129
 
129
- Codex login helper:
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.5.0
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 is explicit only (not auto-detected):
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
- Login helper:
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 is explicit only (not auto-detected):
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
- Login helper:
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.5.0"
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 backend)
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.5.0";
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.5.0";
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
  }
@@ -800,7 +800,7 @@ export interface BackendConfig {
800
800
  aws_region?: string;
801
801
  }
802
802
 
803
- export const SPEC_VERSION = "2.5.0";
803
+ export const SPEC_VERSION = "2.6.0";
804
804
 
805
805
  export interface SDKRuntimeWrapper {
806
806
  spec: "flatagents-runtime";
@@ -11,7 +11,7 @@
11
11
  },
12
12
  "spec_version": {
13
13
  "type": "string",
14
- "const": "2.5.0"
14
+ "const": "2.6.0"
15
15
  },
16
16
  "execution_lock": {
17
17
  "$ref": "#/definitions/ExecutionLock"
@@ -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.5.0";
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;
@@ -319,7 +319,7 @@
319
319
  * config_hash - Content-addressed machine config key for cross-SDK resume (v2.1.0)
320
320
  */
321
321
 
322
- export const SPEC_VERSION = "2.5.0";
322
+ export const SPEC_VERSION = "2.6.0";
323
323
 
324
324
  export interface MachineWrapper {
325
325
  spec: "flatmachine";
@@ -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": {
@@ -1,4 +1,4 @@
1
- export const SPEC_VERSION = "2.5.0";
1
+ export const SPEC_VERSION = "2.6.0";
2
2
  export interface MachineWrapper {
3
3
  spec: "flatmachine";
4
4
  spec_version: string;
@@ -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 backend)
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.5.0";
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
  }
@@ -88,7 +88,8 @@
88
88
  "enum": [
89
89
  "litellm",
90
90
  "aisuite",
91
- "codex"
91
+ "codex",
92
+ "copilot"
92
93
  ]
93
94
  },
94
95
  "api": {
@@ -1,4 +1,4 @@
1
- export const SPEC_VERSION = "2.5.0";
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
  }