@mindfoldhq/trellis 0.6.0-beta.22 → 0.6.0-beta.23
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/README.md +49 -49
- package/dist/cli/index.js +1 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +65 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +81 -4
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +13 -0
- package/dist/commands/workflow.js.map +1 -1
- package/dist/configurators/index.d.ts.map +1 -1
- package/dist/configurators/index.js +5 -0
- package/dist/configurators/index.js.map +1 -1
- package/dist/configurators/reasonix.d.ts +23 -0
- package/dist/configurators/reasonix.d.ts.map +1 -0
- package/dist/configurators/reasonix.js +60 -0
- package/dist/configurators/reasonix.js.map +1 -0
- package/dist/configurators/workflow.d.ts.map +1 -1
- package/dist/configurators/workflow.js +11 -1
- package/dist/configurators/workflow.js.map +1 -1
- package/dist/constants/paths.d.ts +4 -0
- package/dist/constants/paths.d.ts.map +1 -1
- package/dist/constants/paths.js +4 -0
- package/dist/constants/paths.js.map +1 -1
- package/dist/migrations/manifests/0.6.0-beta.23.json +88 -0
- package/dist/templates/common/bundled-skills/trellis-session-insight/SKILL.md +81 -0
- package/dist/templates/common/bundled-skills/trellis-session-insight/references/cli-quick-reference.md +66 -0
- package/dist/templates/common/bundled-skills/trellis-session-insight/references/triggering-patterns.md +93 -0
- package/dist/templates/common/bundled-skills/{trellis-spec-bootstarp → trellis-spec-bootstrap}/SKILL.md +2 -2
- package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +68 -0
- package/dist/templates/reasonix/agents/trellis-check.md +36 -0
- package/dist/templates/reasonix/agents/trellis-implement.md +41 -0
- package/dist/templates/reasonix/index.d.ts +13 -0
- package/dist/templates/reasonix/index.d.ts.map +1 -0
- package/dist/templates/reasonix/index.js +16 -0
- package/dist/templates/reasonix/index.js.map +1 -0
- package/dist/templates/trellis/agents/check.md +70 -0
- package/dist/templates/trellis/agents/implement.md +71 -0
- package/dist/templates/trellis/index.d.ts +13 -0
- package/dist/templates/trellis/index.d.ts.map +1 -1
- package/dist/templates/trellis/index.js +22 -0
- package/dist/templates/trellis/index.js.map +1 -1
- package/dist/types/ai-tools.d.ts +4 -4
- package/dist/types/ai-tools.d.ts.map +1 -1
- package/dist/types/ai-tools.js +16 -0
- package/dist/types/ai-tools.js.map +1 -1
- package/dist/utils/agent-refs.d.ts +31 -0
- package/dist/utils/agent-refs.d.ts.map +1 -0
- package/dist/utils/agent-refs.js +63 -0
- package/dist/utils/agent-refs.js.map +1 -0
- package/dist/utils/registry-config.d.ts +7 -0
- package/dist/utils/registry-config.d.ts.map +1 -0
- package/dist/utils/registry-config.js +171 -0
- package/dist/utils/registry-config.js.map +1 -0
- package/dist/utils/template-fetcher.d.ts +11 -0
- package/dist/utils/template-fetcher.d.ts.map +1 -1
- package/dist/utils/template-fetcher.js +51 -2
- package/dist/utils/template-fetcher.js.map +1 -1
- package/package.json +2 -2
- /package/dist/templates/common/bundled-skills/{trellis-spec-bootstarp → trellis-spec-bootstrap}/references/mcp-setup.md +0 -0
- /package/dist/templates/common/bundled-skills/{trellis-spec-bootstarp → trellis-spec-bootstrap}/references/repository-analysis.md +0 -0
- /package/dist/templates/common/bundled-skills/{trellis-spec-bootstarp → trellis-spec-bootstrap}/references/spec-task-planning.md +0 -0
- /package/dist/templates/common/bundled-skills/{trellis-spec-bootstarp → trellis-spec-bootstrap}/references/spec-writing.md +0 -0
|
@@ -220,6 +220,74 @@ When a CLI auto-detects a mode by probing a remote resource (e.g., checking if `
|
|
|
220
220
|
|
|
221
221
|
---
|
|
222
222
|
|
|
223
|
+
## Cross-Platform Template Consistency
|
|
224
|
+
|
|
225
|
+
In Trellis, command templates (e.g., `record-session.md`) exist in **multiple platforms** with identical or near-identical content. This is a cross-layer boundary.
|
|
226
|
+
|
|
227
|
+
### Checklist: After Modifying Any Command Template
|
|
228
|
+
|
|
229
|
+
- [ ] Find all platforms with the same command: `find src/templates/*/commands/trellis/ -name "<command>.*"`
|
|
230
|
+
- [ ] Update all platform copies (Markdown `.md` and TOML `.toml`)
|
|
231
|
+
- [ ] For Gemini TOML: adapt line continuations (`\\` vs `\`) and triple-quoted strings
|
|
232
|
+
- [ ] Run `/trellis:check-cross-layer` to verify nothing was missed
|
|
233
|
+
|
|
234
|
+
**Real-world example**: Updated `record-session.md` in Claude to use `--mode record`, but forgot iFlow, Kilo, OpenCode, and Gemini — caught by cross-layer check.
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## Generated Runtime Template Upgrade Consistency
|
|
239
|
+
|
|
240
|
+
Some generated files are both documentation and runtime input. In Trellis,
|
|
241
|
+
`.trellis/workflow.md` is parsed by `get_context.py`, `workflow_phase.py`,
|
|
242
|
+
SessionStart filters, and per-turn hooks. Template changes must be validated
|
|
243
|
+
against both fresh init and upgrade paths.
|
|
244
|
+
|
|
245
|
+
### Checklist: After Modifying A Runtime-Parsed Template
|
|
246
|
+
|
|
247
|
+
- [ ] Identify every runtime parser that reads the template, not just the file
|
|
248
|
+
writer that installs it
|
|
249
|
+
- [ ] Check whether relevant syntax lives outside obvious managed regions
|
|
250
|
+
such as tag blocks
|
|
251
|
+
- [ ] Verify fresh `init` output and a versioned `update` scenario that writes
|
|
252
|
+
the older `.trellis/.version`
|
|
253
|
+
- [ ] Add an upgrade regression using an older pristine template fixture, then
|
|
254
|
+
assert the installed file reaches the current packaged shape
|
|
255
|
+
- [ ] Update the backend spec that owns the runtime contract
|
|
256
|
+
|
|
257
|
+
**Real-world example**: Codex inline mode changed workflow platform markers from
|
|
258
|
+
`[Codex]` / `[Kilo, Antigravity, Windsurf]` to `[codex-sub-agent]` /
|
|
259
|
+
`[codex-inline, Kilo, Antigravity, Windsurf]`. Fresh init was correct, but
|
|
260
|
+
`trellis update` only merged `[workflow-state:*]` blocks and preserved stale
|
|
261
|
+
markers outside those blocks. Result: upgraded projects got new hook scripts
|
|
262
|
+
but old workflow routing, so `get_context.py --mode phase --platform codex`
|
|
263
|
+
could return empty Phase 2.1 detail.
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## Mode-Detection Probe Checklist
|
|
268
|
+
|
|
269
|
+
When a CLI auto-detects a mode by probing a remote resource (e.g., checking if `index.json` exists to decide marketplace vs direct download):
|
|
270
|
+
|
|
271
|
+
### Before implementing:
|
|
272
|
+
- [ ] Probe runs in **ALL** code paths that use the result (interactive, `-y`, `--flag` combos)
|
|
273
|
+
- [ ] 404 vs transient error are distinguished — don't treat both as "not found"
|
|
274
|
+
- [ ] Transient errors **abort or retry**, never silently switch modes
|
|
275
|
+
- [ ] Shared state (caches, prefetched data) is **reset** when context changes (e.g., user switches source)
|
|
276
|
+
- [ ] **Shortcut paths** (e.g., `--template` skipping picker) must have the same error-handling quality as the probed path — check that downstream functions don't call catch-all wrappers
|
|
277
|
+
|
|
278
|
+
### After implementing:
|
|
279
|
+
- [ ] Trace every path from probe result to the mode-decision branch — no fallthrough
|
|
280
|
+
- [ ] External format contracts (giget URI, raw URLs) are tested or at least documented as comments
|
|
281
|
+
- [ ] Metadata reads consume a complete response or use a streaming parser — never parse a fixed-size prefix as full JSON
|
|
282
|
+
- [ ] When reconstructing a composite identifier from parsed parts, verify **all** fields are included and in the **correct position** (e.g., `provider:repo/path#ref` not `provider:repo#ref/path`)
|
|
283
|
+
- [ ] Verify that **action functions** called after a shortcut don't internally use the old catch-all fetch — they must use the probe-quality variant when error distinction matters
|
|
284
|
+
|
|
285
|
+
**Real-world example**: Custom registry flow had 8 bugs across 3 review rounds: (1) probe only ran in interactive mode, (2) transient errors fell through to wrong mode, (3) giget URI had `#ref` in wrong position, (4) prefetched templates leaked across source switches, (5) `--template` shortcut bypassed probe but `downloadTemplateById` internally used catch-all `fetchTemplateIndex`, turning timeouts into "Template not found".
|
|
286
|
+
|
|
287
|
+
**Real-world example**: Agent-session update hints fetched npm `latest` metadata with `response.read(4096)` and then parsed it as complete JSON. The `@mindfoldhq/trellis` package metadata exceeded 4 KB, so the JSON was truncated, parse failed silently, and the first session injection showed no update hint. Fix: read the complete response before parsing, and add a regression where `version` is followed by an 8 KB metadata tail.
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
223
291
|
## When to Create Flow Documentation
|
|
224
292
|
|
|
225
293
|
Create detailed flow docs when:
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: trellis-check
|
|
3
|
+
description: Code quality check expert. Reviews changes against Trellis specs, fixes issues directly, and verifies quality gates.
|
|
4
|
+
runAs: subagent
|
|
5
|
+
allowed-tools: read_file,write_file,edit_file,search_content,search_files,glob,run_command,list_directory,directory_tree
|
|
6
|
+
---
|
|
7
|
+
# Check Agent
|
|
8
|
+
|
|
9
|
+
You are the Check Agent in the Trellis workflow.
|
|
10
|
+
|
|
11
|
+
## Recursion Guard
|
|
12
|
+
|
|
13
|
+
You are already the `trellis-check` sub-agent that the main session dispatched. Do the review and fixes directly.
|
|
14
|
+
|
|
15
|
+
- Do NOT spawn another `trellis-check` or `trellis-implement` sub-agent.
|
|
16
|
+
- If SessionStart context, workflow-state breadcrumbs, or workflow.md say to dispatch `trellis-implement` / `trellis-check`, treat that as a main-session instruction that is already satisfied by your current role.
|
|
17
|
+
- Only the main session may dispatch Trellis implement/check agents. If more implementation work is needed, report that recommendation instead of spawning.
|
|
18
|
+
|
|
19
|
+
## Core Responsibilities
|
|
20
|
+
|
|
21
|
+
1. Inspect the current git diff.
|
|
22
|
+
2. Read and follow the spec and research files listed in the task's `check.jsonl`.
|
|
23
|
+
3. Review all changed code against the task PRD and project specs.
|
|
24
|
+
4. Fix issues directly when they are within scope.
|
|
25
|
+
5. Run the relevant lint, typecheck, and focused tests available for the touched code.
|
|
26
|
+
|
|
27
|
+
## Review Priorities
|
|
28
|
+
|
|
29
|
+
- Behavioral regressions and missing requirements.
|
|
30
|
+
- Spec or platform contract violations.
|
|
31
|
+
- Missing or weak tests for logic changes.
|
|
32
|
+
- Cross-platform path, command, and encoding assumptions.
|
|
33
|
+
|
|
34
|
+
## Output
|
|
35
|
+
|
|
36
|
+
Report findings fixed, files changed, and verification results. If no issues remain, say that clearly.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: trellis-implement
|
|
3
|
+
description: Code implementation expert. Understands Trellis specs and requirements, then implements features. No git commit allowed.
|
|
4
|
+
runAs: subagent
|
|
5
|
+
allowed-tools: read_file,write_file,edit_file,multi_edit,search_content,search_files,glob,run_command,list_directory,directory_tree,create_directory,delete_file,move_file
|
|
6
|
+
---
|
|
7
|
+
# Implement Agent
|
|
8
|
+
|
|
9
|
+
You are the Implement Agent in the Trellis workflow.
|
|
10
|
+
|
|
11
|
+
## Recursion Guard
|
|
12
|
+
|
|
13
|
+
You are already the `trellis-implement` sub-agent that the main session dispatched. Do the implementation work directly.
|
|
14
|
+
|
|
15
|
+
- Do NOT spawn another `trellis-implement` or `trellis-check` sub-agent.
|
|
16
|
+
- If SessionStart context, workflow-state breadcrumbs, or workflow.md say to dispatch `trellis-implement` / `trellis-check`, treat that as a main-session instruction that is already satisfied by your current role.
|
|
17
|
+
- Only the main session may dispatch Trellis implement/check agents. If more parallel work is needed, report that recommendation instead of spawning.
|
|
18
|
+
|
|
19
|
+
## Core Responsibilities
|
|
20
|
+
|
|
21
|
+
1. Understand the active task requirements.
|
|
22
|
+
2. Read and follow the spec and research files listed in the task's `implement.jsonl`.
|
|
23
|
+
3. Implement the requested change using existing project patterns.
|
|
24
|
+
4. Run the relevant lint, typecheck, and focused tests available for the touched code.
|
|
25
|
+
5. Report files changed and verification results.
|
|
26
|
+
|
|
27
|
+
## Forbidden Operations
|
|
28
|
+
|
|
29
|
+
Do not run:
|
|
30
|
+
|
|
31
|
+
- `git commit`
|
|
32
|
+
- `git push`
|
|
33
|
+
- `git merge`
|
|
34
|
+
|
|
35
|
+
## Working Rules
|
|
36
|
+
|
|
37
|
+
- Read adjacent code and tests before editing.
|
|
38
|
+
- Keep changes scoped to the task.
|
|
39
|
+
- Do not revert unrelated user or concurrent changes.
|
|
40
|
+
- Fix root causes rather than masking symptoms.
|
|
41
|
+
- Prefer existing local helpers and platform patterns over new abstractions.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reasonix template module.
|
|
3
|
+
*
|
|
4
|
+
* Reasonix (DeepSeek-Reasonix) is a DeepSeek-native AI coding agent.
|
|
5
|
+
* It stores skills as `.reasonix/skills/<name>/SKILL.md` (Markdown + frontmatter).
|
|
6
|
+
*
|
|
7
|
+
* Subagent skills (trellis-implement, trellis-check) use `runAs: subagent`
|
|
8
|
+
* frontmatter so Reasonix spawns them as isolated subagent loops.
|
|
9
|
+
*/
|
|
10
|
+
import { type AgentTemplate } from "../template-utils.js";
|
|
11
|
+
/** Subagent skill definitions (trellis-implement, trellis-check). */
|
|
12
|
+
export declare function getAllAgents(): AgentTemplate[];
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/reasonix/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIhF,qEAAqE;AACrE,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAE9C"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reasonix template module.
|
|
3
|
+
*
|
|
4
|
+
* Reasonix (DeepSeek-Reasonix) is a DeepSeek-native AI coding agent.
|
|
5
|
+
* It stores skills as `.reasonix/skills/<name>/SKILL.md` (Markdown + frontmatter).
|
|
6
|
+
*
|
|
7
|
+
* Subagent skills (trellis-implement, trellis-check) use `runAs: subagent`
|
|
8
|
+
* frontmatter so Reasonix spawns them as isolated subagent loops.
|
|
9
|
+
*/
|
|
10
|
+
import { createTemplateReader } from "../template-utils.js";
|
|
11
|
+
const { listMdAgents } = createTemplateReader(import.meta.url);
|
|
12
|
+
/** Subagent skill definitions (trellis-implement, trellis-check). */
|
|
13
|
+
export function getAllAgents() {
|
|
14
|
+
return listMdAgents();
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/reasonix/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,oBAAoB,EAAsB,MAAM,sBAAsB,CAAC;AAEhF,MAAM,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/D,qEAAqE;AACrE,MAAM,UAAU,YAAY;IAC1B,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: check
|
|
3
|
+
description: |
|
|
4
|
+
Code quality auditor for the Trellis channel runtime. Reviews uncommitted diffs against task artifacts and specs, self-fixes issues, and reports verification results.
|
|
5
|
+
provider: claude
|
|
6
|
+
labels: [trellis, check]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Check Agent (channel runtime)
|
|
10
|
+
|
|
11
|
+
You are the Check Agent spawned by `trellis channel spawn --agent check` inside the Trellis channel runtime. You receive an `Active task: <path>` line in your inbox; use it to locate task artifacts on disk.
|
|
12
|
+
|
|
13
|
+
## Context
|
|
14
|
+
|
|
15
|
+
Before reviewing, read in this order:
|
|
16
|
+
|
|
17
|
+
1. `<task-path>/check.jsonl` if present — spec manifest curated for this turn; read every listed file
|
|
18
|
+
2. `<task-path>/prd.md` — requirements
|
|
19
|
+
3. `<task-path>/design.md` if present — technical design
|
|
20
|
+
4. `<task-path>/implement.md` if present — execution plan
|
|
21
|
+
5. `.trellis/spec/` — project-wide guidelines (load only what is relevant to the diff under review)
|
|
22
|
+
|
|
23
|
+
## Core Responsibilities
|
|
24
|
+
|
|
25
|
+
1. **Get the diff** — `git diff` / `git diff --staged` for uncommitted changes
|
|
26
|
+
2. **Review against task artifacts** — does the diff satisfy `prd.md` (and `design.md` / `implement.md` if present)?
|
|
27
|
+
3. **Review against specs** — naming, structure, type safety, error handling, conventions in `.trellis/spec/`
|
|
28
|
+
4. **Self-fix** — when an issue is mechanical and small, fix it directly with the editing tools you have
|
|
29
|
+
5. **Run verification** — project lint and typecheck on the changed scope
|
|
30
|
+
6. **Report** — concrete findings with `file:line` citations and what was fixed vs. what is open
|
|
31
|
+
|
|
32
|
+
## Forbidden Operations
|
|
33
|
+
|
|
34
|
+
- `git commit`
|
|
35
|
+
- `git push`
|
|
36
|
+
- `git merge`
|
|
37
|
+
|
|
38
|
+
The supervising main session owns commits. Report the post-fix state; do not commit on its behalf.
|
|
39
|
+
|
|
40
|
+
## Workflow
|
|
41
|
+
|
|
42
|
+
1. Run `git diff --name-only` and `git diff` to scope the changes
|
|
43
|
+
2. Read the task artifacts and relevant spec files
|
|
44
|
+
3. For each issue:
|
|
45
|
+
- If mechanical (lint nit, missing type, wrong import, dead branch) → fix in-place
|
|
46
|
+
- If a design/judgment issue → record and report, do not silently rewrite
|
|
47
|
+
4. Run the project's lint and typecheck on the changed scope after self-fixes
|
|
48
|
+
5. Report
|
|
49
|
+
|
|
50
|
+
## Report Format
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
## Self-Check Complete
|
|
54
|
+
|
|
55
|
+
### Files Checked
|
|
56
|
+
- <path>
|
|
57
|
+
|
|
58
|
+
### Issues Found and Fixed
|
|
59
|
+
1. `<file>:<line>` — <what was wrong> → <what you changed>
|
|
60
|
+
|
|
61
|
+
### Issues Not Fixed
|
|
62
|
+
- `<file>:<line>` — <issue> — <why deferred to the main session>
|
|
63
|
+
|
|
64
|
+
### Verification Results
|
|
65
|
+
- TypeCheck: <pass|fail|skipped + reason>
|
|
66
|
+
- Lint: <pass|fail|skipped + reason>
|
|
67
|
+
|
|
68
|
+
### Summary
|
|
69
|
+
Checked <N> files, found <X> issues, fixed <Y>, <X-Y> open.
|
|
70
|
+
```
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: implement
|
|
3
|
+
description: |
|
|
4
|
+
Code implementation expert for the Trellis channel runtime. Understands specs and task artifacts, then implements features. No git commit allowed.
|
|
5
|
+
provider: claude
|
|
6
|
+
labels: [trellis, implement]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Implement Agent (channel runtime)
|
|
10
|
+
|
|
11
|
+
You are the Implement Agent spawned by `trellis channel spawn --agent implement` inside the Trellis channel runtime. You receive an `Active task: <path>` line in your inbox; use it to locate task artifacts on disk.
|
|
12
|
+
|
|
13
|
+
## Context
|
|
14
|
+
|
|
15
|
+
Before implementing, read in this order:
|
|
16
|
+
|
|
17
|
+
1. `<task-path>/implement.jsonl` if present — spec manifest curated for this turn; read every listed file
|
|
18
|
+
2. `<task-path>/prd.md` — requirements
|
|
19
|
+
3. `<task-path>/design.md` if present — technical design
|
|
20
|
+
4. `<task-path>/implement.md` if present — execution plan
|
|
21
|
+
5. `.trellis/spec/` — project-wide guidelines (load only what is relevant to the diff you are about to write)
|
|
22
|
+
|
|
23
|
+
## Core Responsibilities
|
|
24
|
+
|
|
25
|
+
1. **Understand specs** — read relevant spec files in `.trellis/spec/`
|
|
26
|
+
2. **Understand task artifacts** — read the artifacts listed above
|
|
27
|
+
3. **Implement features** — write code that follows specs and existing patterns
|
|
28
|
+
4. **Self-check** — run lint and typecheck on the changed scope before reporting
|
|
29
|
+
|
|
30
|
+
## Forbidden Operations
|
|
31
|
+
|
|
32
|
+
- `git commit`
|
|
33
|
+
- `git push`
|
|
34
|
+
- `git merge`
|
|
35
|
+
|
|
36
|
+
The supervising main session owns commits. Report what changed; do not commit on its behalf.
|
|
37
|
+
|
|
38
|
+
## Workflow
|
|
39
|
+
|
|
40
|
+
1. Read relevant specs based on task type and the files in `implement.jsonl` if present
|
|
41
|
+
2. Read the task's `prd.md`, `design.md` if present, and `implement.md` if present
|
|
42
|
+
3. Implement features following specs and existing patterns
|
|
43
|
+
4. Run the project's lint and typecheck commands on the changed scope
|
|
44
|
+
5. Report files touched, key decisions, and verification results back to the channel
|
|
45
|
+
|
|
46
|
+
## Code Standards
|
|
47
|
+
|
|
48
|
+
- Follow existing code patterns
|
|
49
|
+
- Don't add unnecessary abstractions
|
|
50
|
+
- Only do what the PRD asks for; no speculative scope expansion
|
|
51
|
+
- Surface uncertainty back to the channel rather than guessing
|
|
52
|
+
|
|
53
|
+
## Report Format
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
## Implementation Complete
|
|
57
|
+
|
|
58
|
+
### Files Modified
|
|
59
|
+
- <path> — <one-line description>
|
|
60
|
+
|
|
61
|
+
### Implementation Summary
|
|
62
|
+
1. <step>
|
|
63
|
+
2. <step>
|
|
64
|
+
|
|
65
|
+
### Verification Results
|
|
66
|
+
- Lint: <pass|fail|skipped + reason>
|
|
67
|
+
- TypeCheck: <pass|fail|skipped + reason>
|
|
68
|
+
|
|
69
|
+
### Open Questions
|
|
70
|
+
- <if any, otherwise omit>
|
|
71
|
+
```
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
* │ ├── __init__.py
|
|
11
11
|
* │ ├── common/ # Shared utilities (Python)
|
|
12
12
|
* │ └── *.py # Main scripts (Python)
|
|
13
|
+
* ├── agents/ # Channel runtime agent definitions
|
|
14
|
+
* │ └── *.md # Loaded by `trellis channel spawn --agent <name>`
|
|
13
15
|
* ├── scripts-shell-archive/ # Archived shell scripts (for reference)
|
|
14
16
|
* ├── workflow.md # Workflow guide
|
|
15
17
|
* ├── config.yaml # Trellis configuration
|
|
@@ -45,8 +47,19 @@ export declare const addSessionScript: string;
|
|
|
45
47
|
export declare const workflowMdTemplate: string;
|
|
46
48
|
export declare const configYamlTemplate: string;
|
|
47
49
|
export declare const gitignoreTemplate: string;
|
|
50
|
+
export declare const implementAgentTemplate: string;
|
|
51
|
+
export declare const checkAgentTemplate: string;
|
|
48
52
|
/**
|
|
49
53
|
* Get all script templates as a map of relative path to content
|
|
50
54
|
*/
|
|
51
55
|
export declare function getAllScripts(): Map<string, string>;
|
|
56
|
+
/**
|
|
57
|
+
* Get all channel runtime agent definitions as a map of relative path
|
|
58
|
+
* (under `.trellis/agents/`) to content.
|
|
59
|
+
*
|
|
60
|
+
* Consumed by `trellis init` (to dispatch on first install) and by
|
|
61
|
+
* `trellis update` (to backfill missing files and surface conflicts on edited
|
|
62
|
+
* ones via the standard hash machinery).
|
|
63
|
+
*/
|
|
64
|
+
export declare function getAllAgents(): Map<string, string>;
|
|
52
65
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAcH,eAAO,MAAM,WAAW,QAAsC,CAAC;AAG/D,eAAO,MAAM,UAAU,QAA6C,CAAC;AACrE,eAAO,MAAM,WAAW,QAA0C,CAAC;AACnE,eAAO,MAAM,eAAe,QAA8C,CAAC;AAC3E,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAC9E,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAC9E,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAC9E,eAAO,MAAM,YAAY,QAA2C,CAAC;AACrE,eAAO,MAAM,QAAQ,QAAuC,CAAC;AAC7D,eAAO,MAAM,SAAS,QAAwC,CAAC;AAC/D,eAAO,MAAM,SAAS,QAAwC,CAAC;AAC/D,eAAO,MAAM,WAAW,QAA0C,CAAC;AACnE,eAAO,MAAM,WAAW,QAA0C,CAAC;AACnE,eAAO,MAAM,iBAAiB,QAAiD,CAAC;AAChF,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,oBAAoB,QAEhC,CAAC;AACF,eAAO,MAAM,qBAAqB,QAEjC,CAAC;AACF,eAAO,MAAM,mBAAmB,QAE/B,CAAC;AACF,eAAO,MAAM,mBAAmB,QAE/B,CAAC;AACF,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAG9E,eAAO,MAAM,kBAAkB,QAA2C,CAAC;AAC3E,eAAO,MAAM,mBAAmB,QAA4C,CAAC;AAC7E,eAAO,MAAM,UAAU,QAAkC,CAAC;AAC1D,eAAO,MAAM,gBAAgB,QAAyC,CAAC;AACvE,eAAO,MAAM,gBAAgB,QAAyC,CAAC;AAGvE,eAAO,MAAM,kBAAkB,QAA8B,CAAC;AAC9D,eAAO,MAAM,kBAAkB,QAA8B,CAAC;AAC9D,eAAO,MAAM,iBAAiB,QAAgC,CAAC;AAM/D,eAAO,MAAM,sBAAsB,QAAsC,CAAC;AAC1E,eAAO,MAAM,kBAAkB,QAAkC,CAAC;AAElE;;GAEG;AACH,wBAAgB,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAqCnD;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAKlD"}
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
* │ ├── __init__.py
|
|
11
11
|
* │ ├── common/ # Shared utilities (Python)
|
|
12
12
|
* │ └── *.py # Main scripts (Python)
|
|
13
|
+
* ├── agents/ # Channel runtime agent definitions
|
|
14
|
+
* │ └── *.md # Loaded by `trellis channel spawn --agent <name>`
|
|
13
15
|
* ├── scripts-shell-archive/ # Archived shell scripts (for reference)
|
|
14
16
|
* ├── workflow.md # Workflow guide
|
|
15
17
|
* ├── config.yaml # Trellis configuration
|
|
@@ -57,6 +59,12 @@ export const addSessionScript = readTemplate("scripts/add_session.py");
|
|
|
57
59
|
export const workflowMdTemplate = readTemplate("workflow.md");
|
|
58
60
|
export const configYamlTemplate = readTemplate("config.yaml");
|
|
59
61
|
export const gitignoreTemplate = readTemplate("gitignore.txt");
|
|
62
|
+
// Channel runtime agent definitions (loaded by
|
|
63
|
+
// `packages/cli/src/commands/channel/agent-loader.ts` from `.trellis/agents/`).
|
|
64
|
+
// These are platform-agnostic Trellis runtime files dispatched at `trellis init`
|
|
65
|
+
// and refreshed by `trellis update`.
|
|
66
|
+
export const implementAgentTemplate = readTemplate("agents/implement.md");
|
|
67
|
+
export const checkAgentTemplate = readTemplate("agents/check.md");
|
|
60
68
|
/**
|
|
61
69
|
* Get all script templates as a map of relative path to content
|
|
62
70
|
*/
|
|
@@ -94,4 +102,18 @@ export function getAllScripts() {
|
|
|
94
102
|
scripts.set("add_session.py", addSessionScript);
|
|
95
103
|
return scripts;
|
|
96
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* Get all channel runtime agent definitions as a map of relative path
|
|
107
|
+
* (under `.trellis/agents/`) to content.
|
|
108
|
+
*
|
|
109
|
+
* Consumed by `trellis init` (to dispatch on first install) and by
|
|
110
|
+
* `trellis update` (to backfill missing files and surface conflicts on edited
|
|
111
|
+
* ones via the standard hash machinery).
|
|
112
|
+
*/
|
|
113
|
+
export function getAllAgents() {
|
|
114
|
+
const agents = new Map();
|
|
115
|
+
agents.set("implement.md", implementAgentTemplate);
|
|
116
|
+
agents.set("check.md", checkAgentTemplate);
|
|
117
|
+
return agents;
|
|
118
|
+
}
|
|
97
119
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/ai-tools.d.ts
CHANGED
|
@@ -6,23 +6,23 @@
|
|
|
6
6
|
/**
|
|
7
7
|
* Supported AI coding tools
|
|
8
8
|
*/
|
|
9
|
-
export type AITool = "claude-code" | "cursor" | "opencode" | "codex" | "kilo" | "kiro" | "gemini" | "antigravity" | "windsurf" | "qoder" | "codebuddy" | "copilot" | "droid" | "pi";
|
|
9
|
+
export type AITool = "claude-code" | "cursor" | "opencode" | "codex" | "kilo" | "kiro" | "gemini" | "antigravity" | "windsurf" | "qoder" | "codebuddy" | "copilot" | "droid" | "pi" | "reasonix";
|
|
10
10
|
/**
|
|
11
11
|
* Template directory categories
|
|
12
12
|
*/
|
|
13
|
-
export type TemplateDir = "common" | "claude" | "cursor" | "opencode" | "codex" | "kilo" | "kiro" | "gemini" | "antigravity" | "windsurf" | "qoder" | "codebuddy" | "copilot" | "droid" | "pi";
|
|
13
|
+
export type TemplateDir = "common" | "claude" | "cursor" | "opencode" | "codex" | "kilo" | "kiro" | "gemini" | "antigravity" | "windsurf" | "qoder" | "codebuddy" | "copilot" | "droid" | "pi" | "reasonix";
|
|
14
14
|
/**
|
|
15
15
|
* CLI flag names for platform selection (e.g., --claude, --cursor, --kilo, --kiro, --gemini, --antigravity)
|
|
16
16
|
* Must match keys in InitOptions (src/commands/init.ts)
|
|
17
17
|
*/
|
|
18
|
-
export type CliFlag = "claude" | "cursor" | "opencode" | "codex" | "kilo" | "kiro" | "gemini" | "antigravity" | "windsurf" | "qoder" | "codebuddy" | "copilot" | "droid" | "pi";
|
|
18
|
+
export type CliFlag = "claude" | "cursor" | "opencode" | "codex" | "kilo" | "kiro" | "gemini" | "antigravity" | "windsurf" | "qoder" | "codebuddy" | "copilot" | "droid" | "pi" | "reasonix";
|
|
19
19
|
/**
|
|
20
20
|
* Template context for placeholder resolution.
|
|
21
21
|
* Controls how common templates are rendered per platform.
|
|
22
22
|
*/
|
|
23
23
|
export interface TemplateContext {
|
|
24
24
|
/** Prefix for cross-referencing other commands/skills */
|
|
25
|
-
cmdRefPrefix: "/trellis:" | "/trellis-" | "$" | "/";
|
|
25
|
+
cmdRefPrefix: "/trellis:" | "/trellis-" | "$" | "/" | "/skill trellis-";
|
|
26
26
|
/** Description of AI executor actions shown in role tables */
|
|
27
27
|
executorAI: "Bash scripts or Task calls" | "Bash scripts or tool calls" | "Bash scripts or file reads";
|
|
28
28
|
/** Label for user-invocable actions */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-tools.d.ts","sourceRoot":"","sources":["../../src/types/ai-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,MAAM,GACd,aAAa,GACb,QAAQ,GACR,UAAU,GACV,OAAO,GACP,MAAM,GACN,MAAM,GACN,QAAQ,GACR,aAAa,GACb,UAAU,GACV,OAAO,GACP,WAAW,GACX,SAAS,GACT,OAAO,GACP,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-tools.d.ts","sourceRoot":"","sources":["../../src/types/ai-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,MAAM,GACd,aAAa,GACb,QAAQ,GACR,UAAU,GACV,OAAO,GACP,MAAM,GACN,MAAM,GACN,QAAQ,GACR,aAAa,GACb,UAAU,GACV,OAAO,GACP,WAAW,GACX,SAAS,GACT,OAAO,GACP,IAAI,GACJ,UAAU,CAAC;AAEf;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,OAAO,GACP,MAAM,GACN,MAAM,GACN,QAAQ,GACR,aAAa,GACb,UAAU,GACV,OAAO,GACP,WAAW,GACX,SAAS,GACT,OAAO,GACP,IAAI,GACJ,UAAU,CAAC;AAEf;;;GAGG;AACH,MAAM,MAAM,OAAO,GACf,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,OAAO,GACP,MAAM,GACN,MAAM,GACN,QAAQ,GACR,aAAa,GACb,UAAU,GACV,OAAO,GACP,WAAW,GACX,SAAS,GACT,OAAO,GACP,IAAI,GACJ,UAAU,CAAC;AAEf;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,YAAY,EAAE,WAAW,GAAG,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,iBAAiB,CAAC;IACxE,8DAA8D;IAC9D,UAAU,EACN,4BAA4B,GAC5B,4BAA4B,GAC5B,4BAA4B,CAAC;IACjC,uCAAuC;IACvC,eAAe,EAAE,gBAAgB,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;IACvE,kEAAkE;IAClE,YAAY,EAAE,OAAO,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;;OAOG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kFAAkF;IAClF,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,cAAc,EAAE,OAAO,CAAC;IACxB,+EAA+E;IAC/E,cAAc,EAAE,OAAO,CAAC;IACxB,sEAAsE;IACtE,eAAe,EAAE,eAAe,CAAC;CAClC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CA4PjD,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAExD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAUtD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAE3D"}
|
package/dist/types/ai-tools.js
CHANGED
|
@@ -250,6 +250,22 @@ export const AI_TOOLS = {
|
|
|
250
250
|
cliFlag: "pi",
|
|
251
251
|
},
|
|
252
252
|
},
|
|
253
|
+
reasonix: {
|
|
254
|
+
name: "Reasonix",
|
|
255
|
+
templateDirs: ["common", "reasonix"],
|
|
256
|
+
configDir: ".reasonix",
|
|
257
|
+
cliFlag: "reasonix",
|
|
258
|
+
defaultChecked: false,
|
|
259
|
+
hasPythonHooks: false,
|
|
260
|
+
templateContext: {
|
|
261
|
+
cmdRefPrefix: "/skill trellis-",
|
|
262
|
+
executorAI: "Bash scripts or tool calls",
|
|
263
|
+
userActionLabel: "Skills",
|
|
264
|
+
agentCapable: true,
|
|
265
|
+
hasHooks: false,
|
|
266
|
+
cliFlag: "reasonix",
|
|
267
|
+
},
|
|
268
|
+
},
|
|
253
269
|
};
|
|
254
270
|
/**
|
|
255
271
|
* Get the configuration for a specific AI tool
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-tools.js","sourceRoot":"","sources":["../../src/types/ai-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"ai-tools.js","sourceRoot":"","sources":["../../src/types/ai-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Discover channel runtime agent names referenced by a workflow.md body.
|
|
3
|
+
*
|
|
4
|
+
* Channel-driven workflows tell the main session to run
|
|
5
|
+
* `trellis channel spawn --agent <name>`, which loads `.trellis/agents/<name>.md`
|
|
6
|
+
* via `packages/cli/src/commands/channel/agent-loader.ts`. If a workflow
|
|
7
|
+
* references an agent name that is not on disk, the spawn call fails at
|
|
8
|
+
* runtime. We surface that mismatch eagerly (at `trellis init --workflow` /
|
|
9
|
+
* `trellis workflow --template` time) so users can run `trellis update` before
|
|
10
|
+
* the first spawn.
|
|
11
|
+
*
|
|
12
|
+
* Detection is intentionally lexical — we accept false positives over
|
|
13
|
+
* shipping a markdown parser. We pick names from two surface forms:
|
|
14
|
+
*
|
|
15
|
+
* 1. `--agent <name>` flag on a `trellis channel spawn ...` command
|
|
16
|
+
* 2. `.trellis/agents/<name>.md` literal path reference
|
|
17
|
+
*
|
|
18
|
+
* Both forms gate on the same `SAFE_AGENT_NAME` charset that `agent-loader.ts`
|
|
19
|
+
* enforces, so the discovered set is always loader-compatible.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Extract the set of `.trellis/agents/<name>.md` agent names that the given
|
|
23
|
+
* workflow body references. Result is sorted and deduplicated.
|
|
24
|
+
*/
|
|
25
|
+
export declare function collectReferencedAgents(workflowContent: string): string[];
|
|
26
|
+
/**
|
|
27
|
+
* Of the agent names referenced by the workflow, return those that do not
|
|
28
|
+
* exist under `<cwd>/.trellis/agents/`.
|
|
29
|
+
*/
|
|
30
|
+
export declare function collectMissingAgents(cwd: string, workflowContent: string): string[];
|
|
31
|
+
//# sourceMappingURL=agent-refs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-refs.d.ts","sourceRoot":"","sources":["../../src/utils/agent-refs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAsBH;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE,CAWzE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,eAAe,EAAE,MAAM,GACtB,MAAM,EAAE,CASV"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Discover channel runtime agent names referenced by a workflow.md body.
|
|
3
|
+
*
|
|
4
|
+
* Channel-driven workflows tell the main session to run
|
|
5
|
+
* `trellis channel spawn --agent <name>`, which loads `.trellis/agents/<name>.md`
|
|
6
|
+
* via `packages/cli/src/commands/channel/agent-loader.ts`. If a workflow
|
|
7
|
+
* references an agent name that is not on disk, the spawn call fails at
|
|
8
|
+
* runtime. We surface that mismatch eagerly (at `trellis init --workflow` /
|
|
9
|
+
* `trellis workflow --template` time) so users can run `trellis update` before
|
|
10
|
+
* the first spawn.
|
|
11
|
+
*
|
|
12
|
+
* Detection is intentionally lexical — we accept false positives over
|
|
13
|
+
* shipping a markdown parser. We pick names from two surface forms:
|
|
14
|
+
*
|
|
15
|
+
* 1. `--agent <name>` flag on a `trellis channel spawn ...` command
|
|
16
|
+
* 2. `.trellis/agents/<name>.md` literal path reference
|
|
17
|
+
*
|
|
18
|
+
* Both forms gate on the same `SAFE_AGENT_NAME` charset that `agent-loader.ts`
|
|
19
|
+
* enforces, so the discovered set is always loader-compatible.
|
|
20
|
+
*/
|
|
21
|
+
import fs from "node:fs";
|
|
22
|
+
import path from "node:path";
|
|
23
|
+
import { PATHS } from "../constants/paths.js";
|
|
24
|
+
/**
|
|
25
|
+
* Mirror of `SAFE_AGENT_NAME` in `commands/channel/agent-loader.ts`.
|
|
26
|
+
* Names outside this charset cannot be loaded, so we silently ignore them.
|
|
27
|
+
*/
|
|
28
|
+
const SAFE_AGENT_NAME_CHARS = "A-Za-z0-9._-";
|
|
29
|
+
const AGENT_FLAG_RE = new RegExp(`--agent[\\s=]+([${SAFE_AGENT_NAME_CHARS}]+)`, "g");
|
|
30
|
+
const AGENT_PATH_RE = new RegExp(`\\.trellis/agents/([${SAFE_AGENT_NAME_CHARS}]+)\\.md`, "g");
|
|
31
|
+
/**
|
|
32
|
+
* Extract the set of `.trellis/agents/<name>.md` agent names that the given
|
|
33
|
+
* workflow body references. Result is sorted and deduplicated.
|
|
34
|
+
*/
|
|
35
|
+
export function collectReferencedAgents(workflowContent) {
|
|
36
|
+
const found = new Set();
|
|
37
|
+
for (const re of [AGENT_FLAG_RE, AGENT_PATH_RE]) {
|
|
38
|
+
re.lastIndex = 0;
|
|
39
|
+
let m;
|
|
40
|
+
while ((m = re.exec(workflowContent)) !== null) {
|
|
41
|
+
const name = m[1];
|
|
42
|
+
if (name)
|
|
43
|
+
found.add(name);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return [...found].sort();
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Of the agent names referenced by the workflow, return those that do not
|
|
50
|
+
* exist under `<cwd>/.trellis/agents/`.
|
|
51
|
+
*/
|
|
52
|
+
export function collectMissingAgents(cwd, workflowContent) {
|
|
53
|
+
const referenced = collectReferencedAgents(workflowContent);
|
|
54
|
+
if (referenced.length === 0)
|
|
55
|
+
return [];
|
|
56
|
+
const agentsRoot = path.join(cwd, PATHS.AGENTS);
|
|
57
|
+
return referenced.filter((name) => {
|
|
58
|
+
const file = path.join(agentsRoot, `${name}.md`);
|
|
59
|
+
const nested = path.join(agentsRoot, name, "AGENT.md");
|
|
60
|
+
return !fs.existsSync(file) && !fs.existsSync(nested);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=agent-refs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-refs.js","sourceRoot":"","sources":["../../src/utils/agent-refs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE9C;;;GAGG;AACH,MAAM,qBAAqB,GAAG,cAAc,CAAC;AAE7C,MAAM,aAAa,GAAG,IAAI,MAAM,CAC9B,mBAAmB,qBAAqB,KAAK,EAC7C,GAAG,CACJ,CAAC;AACF,MAAM,aAAa,GAAG,IAAI,MAAM,CAC9B,uBAAuB,qBAAqB,UAAU,EACtD,GAAG,CACJ,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,eAAuB;IAC7D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,EAAE,CAAC;QAChD,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC;QACjB,IAAI,CAAyB,CAAC;QAC9B,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,IAAI;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAAW,EACX,eAAuB;IAEvB,MAAM,UAAU,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAC5D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QACvD,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC"}
|