execforge 0.1.1__tar.gz → 0.1.2__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.
- {execforge-0.1.1/src/execforge.egg-info → execforge-0.1.2}/PKG-INFO +92 -45
- {execforge-0.1.1 → execforge-0.1.2}/README.md +91 -44
- {execforge-0.1.1 → execforge-0.1.2}/pyproject.toml +1 -1
- {execforge-0.1.1 → execforge-0.1.2/src/execforge.egg-info}/PKG-INFO +92 -45
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/__init__.py +1 -1
- {execforge-0.1.1 → execforge-0.1.2}/LICENSE +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/setup.cfg +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/execforge.egg-info/SOURCES.txt +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/execforge.egg-info/dependency_links.txt +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/execforge.egg-info/entry_points.txt +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/execforge.egg-info/requires.txt +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/execforge.egg-info/top_level.txt +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/__main__.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/backends/__init__.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/backends/base.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/backends/factory.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/backends/llm_cli_backend.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/backends/mock_backend.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/backends/shell_backend.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/cli/__init__.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/cli/main.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/config.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/domain/__init__.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/domain/types.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/exceptions.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/git/__init__.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/git/service.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/logging_setup.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/prompts/__init__.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/prompts/parser.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/reporting/__init__.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/reporting/console.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/reporting/events.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/reporting/selection_result.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/services/__init__.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/services/agent_runner.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/services/agent_service.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/services/project_service.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/services/prompt_source_service.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/services/run_service.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/services/step_executor.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/services/task_service.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/storage/__init__.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/storage/db.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/storage/models.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/utils/__init__.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/utils/process.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/validation/__init__.py +0 -0
- {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/validation/pipeline.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: execforge
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: Production-minded local CLI for autonomous repo orchestration
|
|
5
5
|
Author: Open Source Contributors
|
|
6
6
|
License: MIT License
|
|
@@ -63,6 +63,9 @@ pipx install execforge
|
|
|
63
63
|
# or
|
|
64
64
|
pip install execforge
|
|
65
65
|
|
|
66
|
+
# npm (requires Python 3.11+ installed)
|
|
67
|
+
npm install -g execforge
|
|
68
|
+
|
|
66
69
|
# local dev
|
|
67
70
|
pip install -e .
|
|
68
71
|
```
|
|
@@ -256,43 +259,87 @@ execforge agent update test-agent --set safety_settings.allow_push=true
|
|
|
256
259
|
execforge agent delete test-agent --yes
|
|
257
260
|
```
|
|
258
261
|
|
|
259
|
-
##
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
-
|
|
264
|
-
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
-
|
|
282
|
-
|
|
283
|
-
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
-
|
|
290
|
-
|
|
291
|
-
-
|
|
292
|
-
|
|
293
|
-
-
|
|
294
|
-
|
|
295
|
-
-
|
|
262
|
+
## Complete command + config reference (grouped by task)
|
|
263
|
+
|
|
264
|
+
```text
|
|
265
|
+
Setup and health
|
|
266
|
+
- execforge init [--interactive/--no-interactive]
|
|
267
|
+
Initialize app home, SQLite DB, and run first-time setup wizard.
|
|
268
|
+
- execforge start
|
|
269
|
+
Print the guided first-time command sequence.
|
|
270
|
+
- execforge status
|
|
271
|
+
Show setup counts and last run summary.
|
|
272
|
+
- execforge doctor
|
|
273
|
+
Check app paths, SQLite access, and git environment.
|
|
274
|
+
|
|
275
|
+
Prompt sources (task origin repos)
|
|
276
|
+
- execforge prompt-source add <name> <repo-url> [branch] [folder_scope] [sync_strategy] [clone_path]
|
|
277
|
+
Register a prompt source definition.
|
|
278
|
+
- execforge prompt-source list
|
|
279
|
+
List configured prompt sources.
|
|
280
|
+
- execforge prompt-source sync <name-or-id> [--bootstrap-missing-branch]
|
|
281
|
+
Pull/clone source and discover task files.
|
|
282
|
+
|
|
283
|
+
Project repos (code targets)
|
|
284
|
+
- execforge project add <name> <local-path> [default_branch] [allowed_branch_pattern]
|
|
285
|
+
Register a local git repo as an execution target.
|
|
286
|
+
- execforge project list
|
|
287
|
+
List configured project repos.
|
|
288
|
+
|
|
289
|
+
Agents (execution profiles)
|
|
290
|
+
- execforge agent
|
|
291
|
+
Alias for execforge agent list.
|
|
292
|
+
- execforge agent add <name> <prompt-source-name-or-id> <project-name-or-id> [options]
|
|
293
|
+
Create an agent linked to one prompt source and one project.
|
|
294
|
+
- execforge agent list [--compact]
|
|
295
|
+
List agents (JSON blocks or one-line compact view).
|
|
296
|
+
- execforge agent update <agent-name-or-id> --set key=value [--set key=value ...]
|
|
297
|
+
Update agent fields and nested JSON config.
|
|
298
|
+
- execforge agent delete <agent-name-or-id> [--yes]
|
|
299
|
+
Delete an agent and its run history.
|
|
300
|
+
- execforge agent run <agent-name-or-id> [--verbose] [--debug]
|
|
301
|
+
Execute one run cycle.
|
|
302
|
+
- execforge agent loop <agent-name-or-id> [interval_seconds] [max_iterations] [--verbose] [--debug] [--only-new-prompts/--all-eligible-prompts] [--reset-only-new-baseline]
|
|
303
|
+
Run continuously on a polling interval.
|
|
304
|
+
|
|
305
|
+
Tasks and runs
|
|
306
|
+
- execforge task list [status]
|
|
307
|
+
List discovered tasks, optionally filtered by status.
|
|
308
|
+
- execforge task inspect <task-id>
|
|
309
|
+
Show parsed task details and steps.
|
|
310
|
+
- execforge task set-status <task-id> <status>
|
|
311
|
+
Set status to one of: todo, ready, in_progress, done, failed, blocked.
|
|
312
|
+
- execforge task retry <task-id>
|
|
313
|
+
Shortcut that sets task status back to todo.
|
|
314
|
+
- execforge run list [limit]
|
|
315
|
+
Show recent run history rows.
|
|
316
|
+
|
|
317
|
+
App config commands
|
|
318
|
+
- execforge config
|
|
319
|
+
Alias for execforge config show.
|
|
320
|
+
- execforge config show
|
|
321
|
+
Show current app config and key paths.
|
|
322
|
+
- execforge config keys
|
|
323
|
+
List editable app config keys and defaults.
|
|
324
|
+
- execforge config set <key> <value>
|
|
325
|
+
Set one config key.
|
|
326
|
+
- execforge config set --set key=value [--set key=value ...]
|
|
327
|
+
Set multiple config keys in one command.
|
|
328
|
+
- execforge config reset <key> [<key> ...]
|
|
329
|
+
Reset selected keys to defaults.
|
|
330
|
+
- execforge config reset --all
|
|
331
|
+
Reset all app config keys to defaults.
|
|
332
|
+
|
|
333
|
+
Editable app config keys (execforge config set)
|
|
334
|
+
- log_level: string, default INFO
|
|
335
|
+
- default_timeout_seconds: integer, default 900
|
|
336
|
+
- default_require_clean_tree: boolean, default true
|
|
337
|
+
- default_allow_push: boolean, default false
|
|
338
|
+
|
|
339
|
+
Common agent update keys (execforge agent update --set ...)
|
|
340
|
+
- Top-level: name, execution_backend, task_selector_strategy, push_policy, autonomy_level, max_steps, active
|
|
341
|
+
- Nested JSON maps: model_settings.<key>, safety_settings.<key>, commit_policy.<key>
|
|
342
|
+
```
|
|
296
343
|
|
|
297
344
|
## When nothing runs
|
|
298
345
|
|
|
@@ -337,25 +384,25 @@ export AGENT_ORCHESTRATOR_HOME=~/.agent-orchestrator
|
|
|
337
384
|
- `docs/USAGE_WALKTHROUGH.md` - practical end-to-end flow
|
|
338
385
|
- `docs/ARCHITECTURE.md` - implementation layout
|
|
339
386
|
|
|
340
|
-
## CI/CD and
|
|
387
|
+
## CI/CD and package publish
|
|
341
388
|
|
|
342
389
|
This repo includes GitHub Actions pipelines:
|
|
343
390
|
|
|
344
|
-
- `.github/workflows/ci.yml` - lint, tests, package build,
|
|
391
|
+
- `.github/workflows/ci.yml` - lint, tests, Python package build, `twine check`, and npm package dry-run
|
|
345
392
|
- `.github/workflows/publish-testpypi.yml` - manual publish to TestPyPI
|
|
346
|
-
- `.github/workflows/publish-pypi.yml` - publish to PyPI on release (and manual dispatch)
|
|
393
|
+
- `.github/workflows/publish-pypi.yml` - publish to PyPI and npm on release (and manual dispatch)
|
|
347
394
|
|
|
348
|
-
|
|
395
|
+
Publishing auth:
|
|
349
396
|
|
|
350
|
-
- `
|
|
351
|
-
- `
|
|
397
|
+
- `.github/workflows/publish-pypi.yml` uses Trusted Publishing (OIDC) for both PyPI and npm; no `PYPI_API_TOKEN` or `NPM_TOKEN` secret is required once trusted publishers are configured on each registry.
|
|
398
|
+
- `.github/workflows/publish-testpypi.yml` currently uses `TEST_PYPI_API_TOKEN`.
|
|
352
399
|
|
|
353
400
|
Typical release flow:
|
|
354
401
|
|
|
355
402
|
```bash
|
|
356
403
|
# 1) bump version in pyproject.toml
|
|
357
404
|
# 2) commit and tag
|
|
358
|
-
git tag v0.1.
|
|
405
|
+
git tag v0.1.2
|
|
359
406
|
git push origin main --tags
|
|
360
407
|
|
|
361
408
|
# 3) create/publish a GitHub Release for that tag
|
|
@@ -23,6 +23,9 @@ pipx install execforge
|
|
|
23
23
|
# or
|
|
24
24
|
pip install execforge
|
|
25
25
|
|
|
26
|
+
# npm (requires Python 3.11+ installed)
|
|
27
|
+
npm install -g execforge
|
|
28
|
+
|
|
26
29
|
# local dev
|
|
27
30
|
pip install -e .
|
|
28
31
|
```
|
|
@@ -216,43 +219,87 @@ execforge agent update test-agent --set safety_settings.allow_push=true
|
|
|
216
219
|
execforge agent delete test-agent --yes
|
|
217
220
|
```
|
|
218
221
|
|
|
219
|
-
##
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
-
|
|
224
|
-
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
-
|
|
242
|
-
|
|
243
|
-
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
-
|
|
250
|
-
|
|
251
|
-
-
|
|
252
|
-
|
|
253
|
-
-
|
|
254
|
-
|
|
255
|
-
-
|
|
222
|
+
## Complete command + config reference (grouped by task)
|
|
223
|
+
|
|
224
|
+
```text
|
|
225
|
+
Setup and health
|
|
226
|
+
- execforge init [--interactive/--no-interactive]
|
|
227
|
+
Initialize app home, SQLite DB, and run first-time setup wizard.
|
|
228
|
+
- execforge start
|
|
229
|
+
Print the guided first-time command sequence.
|
|
230
|
+
- execforge status
|
|
231
|
+
Show setup counts and last run summary.
|
|
232
|
+
- execforge doctor
|
|
233
|
+
Check app paths, SQLite access, and git environment.
|
|
234
|
+
|
|
235
|
+
Prompt sources (task origin repos)
|
|
236
|
+
- execforge prompt-source add <name> <repo-url> [branch] [folder_scope] [sync_strategy] [clone_path]
|
|
237
|
+
Register a prompt source definition.
|
|
238
|
+
- execforge prompt-source list
|
|
239
|
+
List configured prompt sources.
|
|
240
|
+
- execforge prompt-source sync <name-or-id> [--bootstrap-missing-branch]
|
|
241
|
+
Pull/clone source and discover task files.
|
|
242
|
+
|
|
243
|
+
Project repos (code targets)
|
|
244
|
+
- execforge project add <name> <local-path> [default_branch] [allowed_branch_pattern]
|
|
245
|
+
Register a local git repo as an execution target.
|
|
246
|
+
- execforge project list
|
|
247
|
+
List configured project repos.
|
|
248
|
+
|
|
249
|
+
Agents (execution profiles)
|
|
250
|
+
- execforge agent
|
|
251
|
+
Alias for execforge agent list.
|
|
252
|
+
- execforge agent add <name> <prompt-source-name-or-id> <project-name-or-id> [options]
|
|
253
|
+
Create an agent linked to one prompt source and one project.
|
|
254
|
+
- execforge agent list [--compact]
|
|
255
|
+
List agents (JSON blocks or one-line compact view).
|
|
256
|
+
- execforge agent update <agent-name-or-id> --set key=value [--set key=value ...]
|
|
257
|
+
Update agent fields and nested JSON config.
|
|
258
|
+
- execforge agent delete <agent-name-or-id> [--yes]
|
|
259
|
+
Delete an agent and its run history.
|
|
260
|
+
- execforge agent run <agent-name-or-id> [--verbose] [--debug]
|
|
261
|
+
Execute one run cycle.
|
|
262
|
+
- execforge agent loop <agent-name-or-id> [interval_seconds] [max_iterations] [--verbose] [--debug] [--only-new-prompts/--all-eligible-prompts] [--reset-only-new-baseline]
|
|
263
|
+
Run continuously on a polling interval.
|
|
264
|
+
|
|
265
|
+
Tasks and runs
|
|
266
|
+
- execforge task list [status]
|
|
267
|
+
List discovered tasks, optionally filtered by status.
|
|
268
|
+
- execforge task inspect <task-id>
|
|
269
|
+
Show parsed task details and steps.
|
|
270
|
+
- execforge task set-status <task-id> <status>
|
|
271
|
+
Set status to one of: todo, ready, in_progress, done, failed, blocked.
|
|
272
|
+
- execforge task retry <task-id>
|
|
273
|
+
Shortcut that sets task status back to todo.
|
|
274
|
+
- execforge run list [limit]
|
|
275
|
+
Show recent run history rows.
|
|
276
|
+
|
|
277
|
+
App config commands
|
|
278
|
+
- execforge config
|
|
279
|
+
Alias for execforge config show.
|
|
280
|
+
- execforge config show
|
|
281
|
+
Show current app config and key paths.
|
|
282
|
+
- execforge config keys
|
|
283
|
+
List editable app config keys and defaults.
|
|
284
|
+
- execforge config set <key> <value>
|
|
285
|
+
Set one config key.
|
|
286
|
+
- execforge config set --set key=value [--set key=value ...]
|
|
287
|
+
Set multiple config keys in one command.
|
|
288
|
+
- execforge config reset <key> [<key> ...]
|
|
289
|
+
Reset selected keys to defaults.
|
|
290
|
+
- execforge config reset --all
|
|
291
|
+
Reset all app config keys to defaults.
|
|
292
|
+
|
|
293
|
+
Editable app config keys (execforge config set)
|
|
294
|
+
- log_level: string, default INFO
|
|
295
|
+
- default_timeout_seconds: integer, default 900
|
|
296
|
+
- default_require_clean_tree: boolean, default true
|
|
297
|
+
- default_allow_push: boolean, default false
|
|
298
|
+
|
|
299
|
+
Common agent update keys (execforge agent update --set ...)
|
|
300
|
+
- Top-level: name, execution_backend, task_selector_strategy, push_policy, autonomy_level, max_steps, active
|
|
301
|
+
- Nested JSON maps: model_settings.<key>, safety_settings.<key>, commit_policy.<key>
|
|
302
|
+
```
|
|
256
303
|
|
|
257
304
|
## When nothing runs
|
|
258
305
|
|
|
@@ -297,25 +344,25 @@ export AGENT_ORCHESTRATOR_HOME=~/.agent-orchestrator
|
|
|
297
344
|
- `docs/USAGE_WALKTHROUGH.md` - practical end-to-end flow
|
|
298
345
|
- `docs/ARCHITECTURE.md` - implementation layout
|
|
299
346
|
|
|
300
|
-
## CI/CD and
|
|
347
|
+
## CI/CD and package publish
|
|
301
348
|
|
|
302
349
|
This repo includes GitHub Actions pipelines:
|
|
303
350
|
|
|
304
|
-
- `.github/workflows/ci.yml` - lint, tests, package build,
|
|
351
|
+
- `.github/workflows/ci.yml` - lint, tests, Python package build, `twine check`, and npm package dry-run
|
|
305
352
|
- `.github/workflows/publish-testpypi.yml` - manual publish to TestPyPI
|
|
306
|
-
- `.github/workflows/publish-pypi.yml` - publish to PyPI on release (and manual dispatch)
|
|
353
|
+
- `.github/workflows/publish-pypi.yml` - publish to PyPI and npm on release (and manual dispatch)
|
|
307
354
|
|
|
308
|
-
|
|
355
|
+
Publishing auth:
|
|
309
356
|
|
|
310
|
-
- `
|
|
311
|
-
- `
|
|
357
|
+
- `.github/workflows/publish-pypi.yml` uses Trusted Publishing (OIDC) for both PyPI and npm; no `PYPI_API_TOKEN` or `NPM_TOKEN` secret is required once trusted publishers are configured on each registry.
|
|
358
|
+
- `.github/workflows/publish-testpypi.yml` currently uses `TEST_PYPI_API_TOKEN`.
|
|
312
359
|
|
|
313
360
|
Typical release flow:
|
|
314
361
|
|
|
315
362
|
```bash
|
|
316
363
|
# 1) bump version in pyproject.toml
|
|
317
364
|
# 2) commit and tag
|
|
318
|
-
git tag v0.1.
|
|
365
|
+
git tag v0.1.2
|
|
319
366
|
git push origin main --tags
|
|
320
367
|
|
|
321
368
|
# 3) create/publish a GitHub Release for that tag
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: execforge
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: Production-minded local CLI for autonomous repo orchestration
|
|
5
5
|
Author: Open Source Contributors
|
|
6
6
|
License: MIT License
|
|
@@ -63,6 +63,9 @@ pipx install execforge
|
|
|
63
63
|
# or
|
|
64
64
|
pip install execforge
|
|
65
65
|
|
|
66
|
+
# npm (requires Python 3.11+ installed)
|
|
67
|
+
npm install -g execforge
|
|
68
|
+
|
|
66
69
|
# local dev
|
|
67
70
|
pip install -e .
|
|
68
71
|
```
|
|
@@ -256,43 +259,87 @@ execforge agent update test-agent --set safety_settings.allow_push=true
|
|
|
256
259
|
execforge agent delete test-agent --yes
|
|
257
260
|
```
|
|
258
261
|
|
|
259
|
-
##
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
-
|
|
264
|
-
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
-
|
|
282
|
-
|
|
283
|
-
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
-
|
|
290
|
-
|
|
291
|
-
-
|
|
292
|
-
|
|
293
|
-
-
|
|
294
|
-
|
|
295
|
-
-
|
|
262
|
+
## Complete command + config reference (grouped by task)
|
|
263
|
+
|
|
264
|
+
```text
|
|
265
|
+
Setup and health
|
|
266
|
+
- execforge init [--interactive/--no-interactive]
|
|
267
|
+
Initialize app home, SQLite DB, and run first-time setup wizard.
|
|
268
|
+
- execforge start
|
|
269
|
+
Print the guided first-time command sequence.
|
|
270
|
+
- execforge status
|
|
271
|
+
Show setup counts and last run summary.
|
|
272
|
+
- execforge doctor
|
|
273
|
+
Check app paths, SQLite access, and git environment.
|
|
274
|
+
|
|
275
|
+
Prompt sources (task origin repos)
|
|
276
|
+
- execforge prompt-source add <name> <repo-url> [branch] [folder_scope] [sync_strategy] [clone_path]
|
|
277
|
+
Register a prompt source definition.
|
|
278
|
+
- execforge prompt-source list
|
|
279
|
+
List configured prompt sources.
|
|
280
|
+
- execforge prompt-source sync <name-or-id> [--bootstrap-missing-branch]
|
|
281
|
+
Pull/clone source and discover task files.
|
|
282
|
+
|
|
283
|
+
Project repos (code targets)
|
|
284
|
+
- execforge project add <name> <local-path> [default_branch] [allowed_branch_pattern]
|
|
285
|
+
Register a local git repo as an execution target.
|
|
286
|
+
- execforge project list
|
|
287
|
+
List configured project repos.
|
|
288
|
+
|
|
289
|
+
Agents (execution profiles)
|
|
290
|
+
- execforge agent
|
|
291
|
+
Alias for execforge agent list.
|
|
292
|
+
- execforge agent add <name> <prompt-source-name-or-id> <project-name-or-id> [options]
|
|
293
|
+
Create an agent linked to one prompt source and one project.
|
|
294
|
+
- execforge agent list [--compact]
|
|
295
|
+
List agents (JSON blocks or one-line compact view).
|
|
296
|
+
- execforge agent update <agent-name-or-id> --set key=value [--set key=value ...]
|
|
297
|
+
Update agent fields and nested JSON config.
|
|
298
|
+
- execforge agent delete <agent-name-or-id> [--yes]
|
|
299
|
+
Delete an agent and its run history.
|
|
300
|
+
- execforge agent run <agent-name-or-id> [--verbose] [--debug]
|
|
301
|
+
Execute one run cycle.
|
|
302
|
+
- execforge agent loop <agent-name-or-id> [interval_seconds] [max_iterations] [--verbose] [--debug] [--only-new-prompts/--all-eligible-prompts] [--reset-only-new-baseline]
|
|
303
|
+
Run continuously on a polling interval.
|
|
304
|
+
|
|
305
|
+
Tasks and runs
|
|
306
|
+
- execforge task list [status]
|
|
307
|
+
List discovered tasks, optionally filtered by status.
|
|
308
|
+
- execforge task inspect <task-id>
|
|
309
|
+
Show parsed task details and steps.
|
|
310
|
+
- execforge task set-status <task-id> <status>
|
|
311
|
+
Set status to one of: todo, ready, in_progress, done, failed, blocked.
|
|
312
|
+
- execforge task retry <task-id>
|
|
313
|
+
Shortcut that sets task status back to todo.
|
|
314
|
+
- execforge run list [limit]
|
|
315
|
+
Show recent run history rows.
|
|
316
|
+
|
|
317
|
+
App config commands
|
|
318
|
+
- execforge config
|
|
319
|
+
Alias for execforge config show.
|
|
320
|
+
- execforge config show
|
|
321
|
+
Show current app config and key paths.
|
|
322
|
+
- execforge config keys
|
|
323
|
+
List editable app config keys and defaults.
|
|
324
|
+
- execforge config set <key> <value>
|
|
325
|
+
Set one config key.
|
|
326
|
+
- execforge config set --set key=value [--set key=value ...]
|
|
327
|
+
Set multiple config keys in one command.
|
|
328
|
+
- execforge config reset <key> [<key> ...]
|
|
329
|
+
Reset selected keys to defaults.
|
|
330
|
+
- execforge config reset --all
|
|
331
|
+
Reset all app config keys to defaults.
|
|
332
|
+
|
|
333
|
+
Editable app config keys (execforge config set)
|
|
334
|
+
- log_level: string, default INFO
|
|
335
|
+
- default_timeout_seconds: integer, default 900
|
|
336
|
+
- default_require_clean_tree: boolean, default true
|
|
337
|
+
- default_allow_push: boolean, default false
|
|
338
|
+
|
|
339
|
+
Common agent update keys (execforge agent update --set ...)
|
|
340
|
+
- Top-level: name, execution_backend, task_selector_strategy, push_policy, autonomy_level, max_steps, active
|
|
341
|
+
- Nested JSON maps: model_settings.<key>, safety_settings.<key>, commit_policy.<key>
|
|
342
|
+
```
|
|
296
343
|
|
|
297
344
|
## When nothing runs
|
|
298
345
|
|
|
@@ -337,25 +384,25 @@ export AGENT_ORCHESTRATOR_HOME=~/.agent-orchestrator
|
|
|
337
384
|
- `docs/USAGE_WALKTHROUGH.md` - practical end-to-end flow
|
|
338
385
|
- `docs/ARCHITECTURE.md` - implementation layout
|
|
339
386
|
|
|
340
|
-
## CI/CD and
|
|
387
|
+
## CI/CD and package publish
|
|
341
388
|
|
|
342
389
|
This repo includes GitHub Actions pipelines:
|
|
343
390
|
|
|
344
|
-
- `.github/workflows/ci.yml` - lint, tests, package build,
|
|
391
|
+
- `.github/workflows/ci.yml` - lint, tests, Python package build, `twine check`, and npm package dry-run
|
|
345
392
|
- `.github/workflows/publish-testpypi.yml` - manual publish to TestPyPI
|
|
346
|
-
- `.github/workflows/publish-pypi.yml` - publish to PyPI on release (and manual dispatch)
|
|
393
|
+
- `.github/workflows/publish-pypi.yml` - publish to PyPI and npm on release (and manual dispatch)
|
|
347
394
|
|
|
348
|
-
|
|
395
|
+
Publishing auth:
|
|
349
396
|
|
|
350
|
-
- `
|
|
351
|
-
- `
|
|
397
|
+
- `.github/workflows/publish-pypi.yml` uses Trusted Publishing (OIDC) for both PyPI and npm; no `PYPI_API_TOKEN` or `NPM_TOKEN` secret is required once trusted publishers are configured on each registry.
|
|
398
|
+
- `.github/workflows/publish-testpypi.yml` currently uses `TEST_PYPI_API_TOKEN`.
|
|
352
399
|
|
|
353
400
|
Typical release flow:
|
|
354
401
|
|
|
355
402
|
```bash
|
|
356
403
|
# 1) bump version in pyproject.toml
|
|
357
404
|
# 2) commit and tag
|
|
358
|
-
git tag v0.1.
|
|
405
|
+
git tag v0.1.2
|
|
359
406
|
git push origin main --tags
|
|
360
407
|
|
|
361
408
|
# 3) create/publish a GitHub Release for that tag
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|