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.
Files changed (49) hide show
  1. {execforge-0.1.1/src/execforge.egg-info → execforge-0.1.2}/PKG-INFO +92 -45
  2. {execforge-0.1.1 → execforge-0.1.2}/README.md +91 -44
  3. {execforge-0.1.1 → execforge-0.1.2}/pyproject.toml +1 -1
  4. {execforge-0.1.1 → execforge-0.1.2/src/execforge.egg-info}/PKG-INFO +92 -45
  5. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/__init__.py +1 -1
  6. {execforge-0.1.1 → execforge-0.1.2}/LICENSE +0 -0
  7. {execforge-0.1.1 → execforge-0.1.2}/setup.cfg +0 -0
  8. {execforge-0.1.1 → execforge-0.1.2}/src/execforge.egg-info/SOURCES.txt +0 -0
  9. {execforge-0.1.1 → execforge-0.1.2}/src/execforge.egg-info/dependency_links.txt +0 -0
  10. {execforge-0.1.1 → execforge-0.1.2}/src/execforge.egg-info/entry_points.txt +0 -0
  11. {execforge-0.1.1 → execforge-0.1.2}/src/execforge.egg-info/requires.txt +0 -0
  12. {execforge-0.1.1 → execforge-0.1.2}/src/execforge.egg-info/top_level.txt +0 -0
  13. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/__main__.py +0 -0
  14. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/backends/__init__.py +0 -0
  15. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/backends/base.py +0 -0
  16. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/backends/factory.py +0 -0
  17. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/backends/llm_cli_backend.py +0 -0
  18. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/backends/mock_backend.py +0 -0
  19. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/backends/shell_backend.py +0 -0
  20. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/cli/__init__.py +0 -0
  21. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/cli/main.py +0 -0
  22. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/config.py +0 -0
  23. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/domain/__init__.py +0 -0
  24. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/domain/types.py +0 -0
  25. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/exceptions.py +0 -0
  26. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/git/__init__.py +0 -0
  27. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/git/service.py +0 -0
  28. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/logging_setup.py +0 -0
  29. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/prompts/__init__.py +0 -0
  30. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/prompts/parser.py +0 -0
  31. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/reporting/__init__.py +0 -0
  32. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/reporting/console.py +0 -0
  33. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/reporting/events.py +0 -0
  34. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/reporting/selection_result.py +0 -0
  35. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/services/__init__.py +0 -0
  36. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/services/agent_runner.py +0 -0
  37. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/services/agent_service.py +0 -0
  38. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/services/project_service.py +0 -0
  39. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/services/prompt_source_service.py +0 -0
  40. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/services/run_service.py +0 -0
  41. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/services/step_executor.py +0 -0
  42. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/services/task_service.py +0 -0
  43. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/storage/__init__.py +0 -0
  44. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/storage/db.py +0 -0
  45. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/storage/models.py +0 -0
  46. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/utils/__init__.py +0 -0
  47. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/utils/process.py +0 -0
  48. {execforge-0.1.1 → execforge-0.1.2}/src/orchestrator/validation/__init__.py +0 -0
  49. {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.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
- ## Commands by workflow
260
-
261
- ### Setup
262
-
263
- - `execforge init`
264
- - `execforge doctor`
265
-
266
- ### Prompt sources (task origin)
267
-
268
- - `execforge prompt-source add`
269
- - `execforge prompt-source list`
270
- - `execforge prompt-source sync`
271
-
272
- ### Project repos (code targets)
273
-
274
- - `execforge project add`
275
- - `execforge project list`
276
-
277
- ### Agents (execution profiles)
278
-
279
- - `execforge agent add`
280
- - `execforge agent list`
281
- - `execforge agent list --compact`
282
- - `execforge agent update`
283
- - `execforge agent delete`
284
- - `execforge agent run <agent-name-or-id>`
285
- - `execforge agent loop <agent-name-or-id>`
286
-
287
- ### Task and run inspection
288
-
289
- - `execforge task list`
290
- - `execforge task inspect <task-id>`
291
- - `execforge task set-status <task-id> <status>`
292
- - `execforge task retry <task-id>`
293
- - `execforge run list`
294
- - `execforge status`
295
- - `execforge start`
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 PyPI publish
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, and `twine check`
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
- Required repository secrets:
395
+ Publishing auth:
349
396
 
350
- - `TEST_PYPI_API_TOKEN` for TestPyPI publishing
351
- - `PYPI_API_TOKEN` for PyPI publishing
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.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
- ## Commands by workflow
220
-
221
- ### Setup
222
-
223
- - `execforge init`
224
- - `execforge doctor`
225
-
226
- ### Prompt sources (task origin)
227
-
228
- - `execforge prompt-source add`
229
- - `execforge prompt-source list`
230
- - `execforge prompt-source sync`
231
-
232
- ### Project repos (code targets)
233
-
234
- - `execforge project add`
235
- - `execforge project list`
236
-
237
- ### Agents (execution profiles)
238
-
239
- - `execforge agent add`
240
- - `execforge agent list`
241
- - `execforge agent list --compact`
242
- - `execforge agent update`
243
- - `execforge agent delete`
244
- - `execforge agent run <agent-name-or-id>`
245
- - `execforge agent loop <agent-name-or-id>`
246
-
247
- ### Task and run inspection
248
-
249
- - `execforge task list`
250
- - `execforge task inspect <task-id>`
251
- - `execforge task set-status <task-id> <status>`
252
- - `execforge task retry <task-id>`
253
- - `execforge run list`
254
- - `execforge status`
255
- - `execforge start`
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 PyPI publish
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, and `twine check`
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
- Required repository secrets:
355
+ Publishing auth:
309
356
 
310
- - `TEST_PYPI_API_TOKEN` for TestPyPI publishing
311
- - `PYPI_API_TOKEN` for PyPI publishing
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.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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "execforge"
7
- version = "0.1.1"
7
+ version = "0.1.2"
8
8
  description = "Production-minded local CLI for autonomous repo orchestration"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: execforge
3
- Version: 0.1.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
- ## Commands by workflow
260
-
261
- ### Setup
262
-
263
- - `execforge init`
264
- - `execforge doctor`
265
-
266
- ### Prompt sources (task origin)
267
-
268
- - `execforge prompt-source add`
269
- - `execforge prompt-source list`
270
- - `execforge prompt-source sync`
271
-
272
- ### Project repos (code targets)
273
-
274
- - `execforge project add`
275
- - `execforge project list`
276
-
277
- ### Agents (execution profiles)
278
-
279
- - `execforge agent add`
280
- - `execforge agent list`
281
- - `execforge agent list --compact`
282
- - `execforge agent update`
283
- - `execforge agent delete`
284
- - `execforge agent run <agent-name-or-id>`
285
- - `execforge agent loop <agent-name-or-id>`
286
-
287
- ### Task and run inspection
288
-
289
- - `execforge task list`
290
- - `execforge task inspect <task-id>`
291
- - `execforge task set-status <task-id> <status>`
292
- - `execforge task retry <task-id>`
293
- - `execforge run list`
294
- - `execforge status`
295
- - `execforge start`
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 PyPI publish
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, and `twine check`
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
- Required repository secrets:
395
+ Publishing auth:
349
396
 
350
- - `TEST_PYPI_API_TOKEN` for TestPyPI publishing
351
- - `PYPI_API_TOKEN` for PyPI publishing
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.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
@@ -1,4 +1,4 @@
1
1
  """Repo orchestrator package."""
2
2
 
3
3
  __all__ = ["__version__"]
4
- __version__ = "0.1.1"
4
+ __version__ = "0.1.2"
File without changes
File without changes