@mindfoldhq/trellis 0.5.17 → 0.5.18
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.
- package/dist/migrations/manifests/0.5.18.json +9 -0
- package/dist/migrations/manifests/0.6.0-beta.19.json +9 -0
- package/dist/templates/codex/config.toml +5 -3
- package/dist/templates/trellis/scripts/common/task_store.py +31 -0
- package/dist/templates/trellis/workflow.md +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.5.18",
|
|
3
|
+
"description": "Patch: archived task create collision guard, workflow-state tool routing clarification, and Codex 0.131 multi_agent_v2 timeout bounds.",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug Fixes:**\n- fix(cli): `task.py create` now rejects slugs that already exist under `.trellis/tasks/archive/**` and prints the archived path (#291).\n- fix(workflow): `[workflow-state:in_progress]` now distinguishes sub-agent types from skills so agents do not call missing `trellis-implement` / `trellis-research` skills (#283).\n- fix(codex): `.codex/config.toml` emits `min_wait_timeout_ms`, `default_wait_timeout_ms`, and `max_wait_timeout_ms` together so Codex CLI 0.131+ accepts merged multi_agent_v2 timeout config (#294).",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Patch on top of 0.5.17. Run `trellis update` to refresh task, workflow, and Codex templates. No migration command is required."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.6.0-beta.19",
|
|
3
|
+
"description": "Beta patch: Pi trellis_subagent native progress cards, durable channel idempotency, task create/archive collision guard, workflow breadcrumb clarification, and Codex 0.131 timeout bounds.",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Enhancements:**\n- feat(pi): Pi extension now exposes `trellis_subagent` with native progress cards, `single` / `parallel` / `chain` dispatch modes, throttled live updates, and Trellis-agent validation (#286, #290).\n**Bug Fixes:**\n- fix(core): channel `sendMessage` and `postThread` accept durable `idempotencyKey` values so retries return the original JSONL event and do not duplicate strict-delivery `undeliverable` events.\n- fix(cli): `task.py create` now rejects slugs that already exist under `.trellis/tasks/archive/**` and prints the archived path (#291).\n- fix(workflow): `[workflow-state:in_progress]` now distinguishes sub-agent types from skills so agents do not call missing `trellis-implement` / `trellis-research` skills (#283).\n- fix(codex): `.codex/config.toml` emits `min_wait_timeout_ms`, `default_wait_timeout_ms`, and `max_wait_timeout_ms` together so Codex CLI 0.131+ accepts merged multi_agent_v2 timeout config (#294).\n**Internal:**\n- chore(release): restore the shipped `0.5.17` migration manifest so manifest continuity and update-chain checks pass for the beta release.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Beta patch on top of 0.6.0-beta.18. Run `trellis update` to refresh Pi, Codex, workflow, and task templates. No migration command is required."
|
|
9
|
+
}
|
|
@@ -26,10 +26,12 @@ project_doc_fallback_filenames = ["AGENTS.md"]
|
|
|
26
26
|
# `enabled = true` is required inside the table — the table form does
|
|
27
27
|
# NOT auto-enable the feature without it.
|
|
28
28
|
# - max_concurrent_threads_per_session: bumps default 4 → 6.
|
|
29
|
-
# -
|
|
30
|
-
#
|
|
31
|
-
#
|
|
29
|
+
# - min/default/max_wait_timeout_ms: keep Codex's merged timeout config
|
|
30
|
+
# valid while raising the default wait to 8 min. Codex 0.131+ validates
|
|
31
|
+
# min <= default <= max.
|
|
32
32
|
[features.multi_agent_v2]
|
|
33
33
|
enabled = true
|
|
34
34
|
max_concurrent_threads_per_session = 6
|
|
35
35
|
min_wait_timeout_ms = 480000
|
|
36
|
+
default_wait_timeout_ms = 480000
|
|
37
|
+
max_wait_timeout_ms = 3600000
|
|
@@ -83,6 +83,30 @@ def ensure_tasks_dir(repo_root: Path) -> Path:
|
|
|
83
83
|
return tasks_dir
|
|
84
84
|
|
|
85
85
|
|
|
86
|
+
def _find_archived_task_by_dir_name(tasks_dir: Path, dir_name: str) -> Path | None:
|
|
87
|
+
"""Find an archived task directory with the exact active-task dir name."""
|
|
88
|
+
archive_dir = tasks_dir / DIR_ARCHIVE
|
|
89
|
+
if not archive_dir.is_dir():
|
|
90
|
+
return None
|
|
91
|
+
|
|
92
|
+
for month_dir in sorted(archive_dir.iterdir()):
|
|
93
|
+
if not month_dir.is_dir():
|
|
94
|
+
continue
|
|
95
|
+
candidate = month_dir / dir_name
|
|
96
|
+
if candidate.is_dir():
|
|
97
|
+
return candidate
|
|
98
|
+
|
|
99
|
+
return None
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def _repo_relative_path(path: Path, repo_root: Path) -> str:
|
|
103
|
+
"""Format a path relative to the repo root when possible."""
|
|
104
|
+
try:
|
|
105
|
+
return path.relative_to(repo_root).as_posix()
|
|
106
|
+
except ValueError:
|
|
107
|
+
return str(path)
|
|
108
|
+
|
|
109
|
+
|
|
86
110
|
# =============================================================================
|
|
87
111
|
# Sub-agent platform detection + JSONL seeding
|
|
88
112
|
# =============================================================================
|
|
@@ -193,6 +217,13 @@ def cmd_create(args: argparse.Namespace) -> int:
|
|
|
193
217
|
task_dir = tasks_dir / dir_name
|
|
194
218
|
task_json_path = task_dir / FILE_TASK_JSON
|
|
195
219
|
|
|
220
|
+
archived_task_dir = _find_archived_task_by_dir_name(tasks_dir, dir_name)
|
|
221
|
+
if archived_task_dir:
|
|
222
|
+
print(colored(f"Error: Task already archived: {dir_name}", Colors.RED), file=sys.stderr)
|
|
223
|
+
print(f"Archived at: {_repo_relative_path(archived_task_dir, repo_root)}", file=sys.stderr)
|
|
224
|
+
print("Use a new slug if you intend to create a new task.", file=sys.stderr)
|
|
225
|
+
return 1
|
|
226
|
+
|
|
196
227
|
if task_dir.exists():
|
|
197
228
|
print(colored(f"Warning: Task directory already exists: {dir_name}", Colors.YELLOW), file=sys.stderr)
|
|
198
229
|
else:
|
|
@@ -195,6 +195,7 @@ Then run `task.py start <task-dir>` to flip status to in_progress.
|
|
|
195
195
|
commit, including Phase 3.3 spec update and Phase 3.4 commit. -->
|
|
196
196
|
|
|
197
197
|
[workflow-state:in_progress]
|
|
198
|
+
**Tools**: `trellis-implement` / `trellis-research` are sub-agent types only (Task/Agent tool, NOT Skill — there is no skill by these names). `trellis-update-spec` is a skill. `trellis-check` exists as both; prefer the Agent form when verifying after code changes.
|
|
198
199
|
**Flow**: trellis-implement → trellis-check → trellis-update-spec → commit (Phase 3.4) → `/trellis:finish-work`.
|
|
199
200
|
**Main-session default (no override)**: dispatch the `trellis-implement` / `trellis-check` sub-agents — the main agent does NOT edit code by default. Phase 3.4 commit (required, once): after trellis-update-spec, or whenever implementation is verifiably complete, the main agent **drives the commit** — state the commit plan in user-facing text, then run `git commit` — BEFORE suggesting `/trellis:finish-work`. `/finish-work` refuses to run on a dirty working tree (paths outside `.trellis/workspace/` and `.trellis/tasks/`).
|
|
200
201
|
**Sub-agent self-exemption**: if you are already running as `trellis-implement`, implement directly from the loaded task context and do NOT spawn another `trellis-implement`; if you are already running as `trellis-check`, review/fix directly and do NOT spawn another `trellis-check`. The default dispatch rule applies to the main session only.
|
package/package.json
CHANGED