@mindfoldhq/trellis 0.4.0-beta.1 → 0.4.0-beta.10
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 +19 -5
- package/dist/cli/index.js +3 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +48 -23
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +52 -41
- package/dist/commands/update.js.map +1 -1
- package/dist/configurators/codebuddy.d.ts +11 -0
- package/dist/configurators/codebuddy.d.ts.map +1 -0
- package/dist/configurators/codebuddy.js +58 -0
- package/dist/configurators/codebuddy.js.map +1 -0
- package/dist/configurators/codex.d.ts +7 -4
- package/dist/configurators/codex.d.ts.map +1 -1
- package/dist/configurators/codex.js +40 -10
- package/dist/configurators/codex.js.map +1 -1
- package/dist/configurators/copilot.d.ts +9 -0
- package/dist/configurators/copilot.d.ts.map +1 -0
- package/dist/configurators/copilot.js +34 -0
- package/dist/configurators/copilot.js.map +1 -0
- package/dist/configurators/index.d.ts +11 -1
- package/dist/configurators/index.d.ts.map +1 -1
- package/dist/configurators/index.js +72 -4
- package/dist/configurators/index.js.map +1 -1
- package/dist/configurators/opencode.d.ts +1 -1
- package/dist/configurators/opencode.js +1 -1
- package/dist/configurators/windsurf.d.ts +8 -0
- package/dist/configurators/windsurf.d.ts.map +1 -0
- package/dist/configurators/windsurf.js +18 -0
- package/dist/configurators/windsurf.js.map +1 -0
- package/dist/configurators/workflow.d.ts +1 -1
- package/dist/configurators/workflow.d.ts.map +1 -1
- package/dist/configurators/workflow.js +4 -2
- package/dist/configurators/workflow.js.map +1 -1
- package/dist/migrations/manifests/0.3.10.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.10.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.2.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.3.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.4.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.5.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.6.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.7.json +9 -0
- package/dist/migrations/manifests/0.4.0-beta.8.json +34 -0
- package/dist/migrations/manifests/0.4.0-beta.9.json +9 -0
- package/dist/templates/claude/commands/trellis/record-session.md +3 -2
- package/dist/templates/claude/hooks/inject-subagent-context.py +8 -1
- package/dist/templates/claude/hooks/ralph-loop.py +18 -10
- package/dist/templates/claude/hooks/session-start.py +33 -9
- package/dist/templates/claude/hooks/statusline.py +211 -0
- package/dist/templates/claude/settings.json +4 -0
- package/dist/templates/codebuddy/commands/trellis/before-dev.md +29 -0
- package/dist/templates/codebuddy/commands/trellis/brainstorm.md +487 -0
- package/dist/templates/codebuddy/commands/trellis/break-loop.md +107 -0
- package/dist/templates/codebuddy/commands/trellis/check-cross-layer.md +153 -0
- package/dist/templates/codebuddy/commands/trellis/check.md +25 -0
- package/dist/templates/codebuddy/commands/trellis/create-command.md +154 -0
- package/dist/templates/codebuddy/commands/trellis/finish-work.md +143 -0
- package/dist/templates/codebuddy/commands/trellis/integrate-skill.md +219 -0
- package/dist/templates/codebuddy/commands/trellis/onboard.md +358 -0
- package/dist/templates/codebuddy/commands/trellis/record-session.md +61 -0
- package/dist/templates/codebuddy/commands/trellis/start.md +373 -0
- package/dist/templates/codebuddy/commands/trellis/update-spec.md +354 -0
- package/dist/templates/codebuddy/index.d.ts +25 -0
- package/dist/templates/codebuddy/index.d.ts.map +1 -0
- package/dist/templates/codebuddy/index.js +45 -0
- package/dist/templates/codebuddy/index.js.map +1 -0
- package/dist/templates/codex/agents/check.toml +23 -0
- package/dist/templates/codex/agents/implement.toml +19 -0
- package/dist/templates/codex/agents/research.toml +26 -0
- package/dist/templates/codex/codex-skills/parallel/SKILL.md +194 -0
- package/dist/templates/codex/config.toml +5 -0
- package/dist/templates/codex/hooks/session-start.py +228 -0
- package/dist/templates/codex/hooks.json +16 -0
- package/dist/templates/codex/index.d.ts +27 -5
- package/dist/templates/codex/index.d.ts.map +1 -1
- package/dist/templates/codex/index.js +60 -8
- package/dist/templates/codex/index.js.map +1 -1
- package/dist/templates/codex/skills/before-dev/SKILL.md +1 -1
- package/dist/templates/codex/skills/brainstorm/SKILL.md +1 -1
- package/dist/templates/codex/skills/break-loop/SKILL.md +1 -1
- package/dist/templates/codex/skills/check/SKILL.md +1 -1
- package/dist/templates/codex/skills/check-cross-layer/SKILL.md +1 -1
- package/dist/templates/codex/skills/create-command/SKILL.md +1 -1
- package/dist/templates/codex/skills/finish-work/SKILL.md +1 -1
- package/dist/templates/codex/skills/improve-ut/SKILL.md +69 -0
- package/dist/templates/codex/skills/integrate-skill/SKILL.md +1 -1
- package/dist/templates/codex/skills/onboard/SKILL.md +1 -1
- package/dist/templates/codex/skills/record-session/SKILL.md +4 -3
- package/dist/templates/codex/skills/start/SKILL.md +1 -1
- package/dist/templates/codex/skills/update-spec/SKILL.md +1 -1
- package/dist/templates/copilot/hooks/session-start.py +218 -0
- package/dist/templates/copilot/hooks.json +11 -0
- package/dist/templates/copilot/index.d.ts +23 -0
- package/dist/templates/copilot/index.d.ts.map +1 -0
- package/dist/templates/copilot/index.js +54 -0
- package/dist/templates/copilot/index.js.map +1 -0
- package/dist/templates/copilot/prompts/before-dev.prompt.md +33 -0
- package/dist/templates/copilot/prompts/brainstorm.prompt.md +491 -0
- package/dist/templates/copilot/prompts/break-loop.prompt.md +129 -0
- package/dist/templates/copilot/prompts/check-cross-layer.prompt.md +157 -0
- package/dist/templates/copilot/prompts/check.prompt.md +29 -0
- package/dist/templates/copilot/prompts/create-command.prompt.md +116 -0
- package/dist/templates/copilot/prompts/finish-work.prompt.md +157 -0
- package/dist/templates/copilot/prompts/integrate-skill.prompt.md +223 -0
- package/dist/templates/copilot/prompts/onboard.prompt.md +362 -0
- package/dist/templates/copilot/prompts/parallel.prompt.md +196 -0
- package/dist/templates/copilot/prompts/record-session.prompt.md +66 -0
- package/dist/templates/copilot/prompts/start.prompt.md +397 -0
- package/dist/templates/copilot/prompts/update-spec.prompt.md +358 -0
- package/dist/templates/cursor/commands/trellis-record-session.md +3 -2
- package/dist/templates/extract.d.ts +36 -0
- package/dist/templates/extract.d.ts.map +1 -1
- package/dist/templates/extract.js +64 -0
- package/dist/templates/extract.js.map +1 -1
- package/dist/templates/gemini/commands/trellis/record-session.toml +3 -2
- package/dist/templates/iflow/commands/trellis/record-session.md +3 -2
- package/dist/templates/iflow/hooks/inject-subagent-context.py +8 -1
- package/dist/templates/iflow/hooks/ralph-loop.py +8 -1
- package/dist/templates/iflow/hooks/session-start.py +33 -9
- package/dist/templates/kilo/workflows/record-session.md +3 -2
- package/dist/templates/kiro/skills/before-dev/SKILL.md +1 -1
- package/dist/templates/kiro/skills/brainstorm/SKILL.md +1 -1
- package/dist/templates/kiro/skills/break-loop/SKILL.md +1 -1
- package/dist/templates/kiro/skills/check/SKILL.md +1 -1
- package/dist/templates/kiro/skills/check-cross-layer/SKILL.md +1 -1
- package/dist/templates/kiro/skills/create-command/SKILL.md +1 -1
- package/dist/templates/kiro/skills/finish-work/SKILL.md +1 -1
- package/dist/templates/kiro/skills/integrate-skill/SKILL.md +1 -1
- package/dist/templates/kiro/skills/onboard/SKILL.md +1 -1
- package/dist/templates/kiro/skills/record-session/SKILL.md +4 -3
- package/dist/templates/kiro/skills/start/SKILL.md +1 -1
- package/dist/templates/kiro/skills/update-spec/SKILL.md +1 -1
- package/dist/templates/markdown/agents.md +4 -0
- package/dist/templates/markdown/spec/backend/directory-structure.md +1 -1
- package/dist/templates/markdown/workspace-index.md +2 -0
- package/dist/templates/opencode/agents/dispatch.md +20 -19
- package/dist/templates/opencode/commands/trellis/record-session.md +3 -2
- package/dist/templates/opencode/lib/trellis-context.js +42 -2
- package/dist/templates/opencode/{plugin → plugins}/session-start.js +7 -27
- package/dist/templates/qoder/skills/before-dev/SKILL.md +1 -1
- package/dist/templates/qoder/skills/brainstorm/SKILL.md +1 -1
- package/dist/templates/qoder/skills/break-loop/SKILL.md +1 -1
- package/dist/templates/qoder/skills/check/SKILL.md +1 -1
- package/dist/templates/qoder/skills/check-cross-layer/SKILL.md +1 -1
- package/dist/templates/qoder/skills/create-command/SKILL.md +1 -1
- package/dist/templates/qoder/skills/finish-work/SKILL.md +1 -1
- package/dist/templates/qoder/skills/integrate-skill/SKILL.md +1 -1
- package/dist/templates/qoder/skills/onboard/SKILL.md +1 -1
- package/dist/templates/qoder/skills/record-session/SKILL.md +4 -3
- package/dist/templates/qoder/skills/start/SKILL.md +1 -1
- package/dist/templates/qoder/skills/update-spec/SKILL.md +1 -1
- package/dist/templates/trellis/scripts/add_session.py +69 -16
- package/dist/templates/trellis/scripts/common/__init__.py +2 -0
- package/dist/templates/trellis/scripts/common/cli_adapter.py +133 -21
- package/dist/templates/trellis/scripts/common/config.py +40 -0
- package/dist/templates/trellis/scripts/common/developer.py +2 -2
- package/dist/templates/trellis/scripts/common/packages_context.py +9 -4
- package/dist/templates/trellis/scripts/common/paths.py +57 -6
- package/dist/templates/trellis/scripts/common/session_context.py +98 -2
- package/dist/templates/trellis/scripts/common/task_context.py +27 -1
- package/dist/templates/trellis/scripts/common/task_store.py +6 -4
- package/dist/templates/trellis/scripts/common/task_utils.py +14 -8
- package/dist/templates/trellis/scripts/create_bootstrap.py +1 -1
- package/dist/templates/trellis/scripts/multi_agent/plan.py +7 -6
- package/dist/templates/trellis/scripts/multi_agent/start.py +16 -11
- package/dist/templates/trellis/scripts/task.py +1 -1
- package/dist/templates/trellis/scripts-shell-archive/create-bootstrap.sh +1 -1
- package/dist/templates/trellis/workflow.md +17 -4
- package/dist/templates/windsurf/index.d.ts +21 -0
- package/dist/templates/windsurf/index.d.ts.map +1 -0
- package/dist/templates/windsurf/index.js +44 -0
- package/dist/templates/windsurf/index.js.map +1 -0
- package/dist/templates/windsurf/workflows/trellis-before-dev.md +31 -0
- package/dist/templates/windsurf/workflows/trellis-brainstorm.md +491 -0
- package/dist/templates/windsurf/workflows/trellis-break-loop.md +111 -0
- package/dist/templates/windsurf/workflows/trellis-check-cross-layer.md +157 -0
- package/dist/templates/windsurf/workflows/trellis-check.md +27 -0
- package/dist/templates/windsurf/workflows/trellis-create-command.md +154 -0
- package/dist/templates/windsurf/workflows/trellis-finish-work.md +147 -0
- package/dist/templates/windsurf/workflows/trellis-integrate-skill.md +220 -0
- package/dist/templates/windsurf/workflows/trellis-onboard.md +362 -0
- package/dist/templates/windsurf/workflows/trellis-record-session.md +66 -0
- package/dist/templates/windsurf/workflows/trellis-start.md +373 -0
- package/dist/templates/windsurf/workflows/trellis-update-spec.md +358 -0
- package/dist/types/ai-tools.d.ts +15 -3
- package/dist/types/ai-tools.d.ts.map +1 -1
- package/dist/types/ai-tools.js +42 -2
- package/dist/types/ai-tools.js.map +1 -1
- package/dist/utils/project-detector.d.ts +5 -0
- package/dist/utils/project-detector.d.ts.map +1 -1
- package/dist/utils/project-detector.js +7 -0
- package/dist/utils/project-detector.js.map +1 -1
- package/dist/utils/template-fetcher.d.ts +24 -3
- package/dist/utils/template-fetcher.d.ts.map +1 -1
- package/dist/utils/template-fetcher.js +129 -16
- package/dist/utils/template-fetcher.js.map +1 -1
- package/package.json +1 -1
- /package/dist/templates/opencode/{plugin → plugins}/inject-subagent-context.js +0 -0
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import fs from "node:fs";
|
|
11
11
|
import path from "node:path";
|
|
12
|
-
import { AI_TOOLS } from "../types/ai-tools.js";
|
|
12
|
+
import { AI_TOOLS, getManagedPaths, } from "../types/ai-tools.js";
|
|
13
13
|
// Platform configurators
|
|
14
14
|
import { configureClaude } from "./claude.js";
|
|
15
15
|
import { configureCursor } from "./cursor.js";
|
|
@@ -20,19 +20,25 @@ import { configureKilo } from "./kilo.js";
|
|
|
20
20
|
import { configureKiro } from "./kiro.js";
|
|
21
21
|
import { configureGemini } from "./gemini.js";
|
|
22
22
|
import { configureAntigravity } from "./antigravity.js";
|
|
23
|
+
import { configureWindsurf } from "./windsurf.js";
|
|
23
24
|
import { configureQoder } from "./qoder.js";
|
|
25
|
+
import { configureCodebuddy } from "./codebuddy.js";
|
|
26
|
+
import { configureCopilot } from "./copilot.js";
|
|
24
27
|
// Shared utilities
|
|
25
28
|
import { resolvePlaceholders } from "./shared.js";
|
|
26
29
|
// Template content for update tracking
|
|
27
30
|
import { getAllAgents as getClaudeAgents, getAllCommands as getClaudeCommands, getAllHooks as getClaudeHooks, getSettingsTemplate as getClaudeSettings, } from "../templates/claude/index.js";
|
|
28
31
|
import { getAllCommands as getCursorCommands } from "../templates/cursor/index.js";
|
|
29
32
|
import { getAllAgents as getIflowAgents, getAllCommands as getIflowCommands, getAllHooks as getIflowHooks, getSettingsTemplate as getIflowSettings, } from "../templates/iflow/index.js";
|
|
30
|
-
import { getAllSkills as getCodexSkills } from "../templates/codex/index.js";
|
|
33
|
+
import { getAllAgents as getCodexAgents, getAllCodexSkills as getCodexPlatformSkills, getAllHooks as getCodexHooks, getAllSkills as getCodexSkills, getConfigTemplate as getCodexConfigTemplate, getHooksConfig as getCodexHooksConfig, } from "../templates/codex/index.js";
|
|
31
34
|
import { getAllWorkflows as getKiloWorkflows } from "../templates/kilo/index.js";
|
|
32
35
|
import { getAllSkills as getKiroSkills } from "../templates/kiro/index.js";
|
|
33
36
|
import { getAllCommands as getGeminiCommands } from "../templates/gemini/index.js";
|
|
34
37
|
import { getAllWorkflows as getAntigravityWorkflows } from "../templates/antigravity/index.js";
|
|
38
|
+
import { getAllWorkflows as getAllWindsurfWorkflows } from "../templates/windsurf/index.js";
|
|
35
39
|
import { getAllSkills as getQoderSkills } from "../templates/qoder/index.js";
|
|
40
|
+
import { getAllCommands as getCodebuddyCommands } from "../templates/codebuddy/index.js";
|
|
41
|
+
import { getAllHooks as getCopilotHooks, getAllPrompts as getCopilotPrompts, getHooksConfig as getCopilotHooksConfig, } from "../templates/copilot/index.js";
|
|
36
42
|
/**
|
|
37
43
|
* Platform functions registry — maps each AITool to its behavior.
|
|
38
44
|
* When adding a new platform, add an entry here.
|
|
@@ -104,6 +110,18 @@ const PLATFORM_FUNCTIONS = {
|
|
|
104
110
|
for (const skill of getCodexSkills()) {
|
|
105
111
|
files.set(`.agents/skills/${skill.name}/SKILL.md`, skill.content);
|
|
106
112
|
}
|
|
113
|
+
for (const skill of getCodexPlatformSkills()) {
|
|
114
|
+
files.set(`.codex/skills/${skill.name}/SKILL.md`, skill.content);
|
|
115
|
+
}
|
|
116
|
+
for (const agent of getCodexAgents()) {
|
|
117
|
+
files.set(`.codex/agents/${agent.name}.toml`, agent.content);
|
|
118
|
+
}
|
|
119
|
+
for (const hook of getCodexHooks()) {
|
|
120
|
+
files.set(`.codex/hooks/${hook.name}`, hook.content);
|
|
121
|
+
}
|
|
122
|
+
files.set(".codex/hooks.json", resolvePlaceholders(getCodexHooksConfig()));
|
|
123
|
+
const config = getCodexConfigTemplate();
|
|
124
|
+
files.set(`.codex/${config.targetPath}`, config.content);
|
|
107
125
|
return files;
|
|
108
126
|
},
|
|
109
127
|
},
|
|
@@ -147,6 +165,16 @@ const PLATFORM_FUNCTIONS = {
|
|
|
147
165
|
return files;
|
|
148
166
|
},
|
|
149
167
|
},
|
|
168
|
+
windsurf: {
|
|
169
|
+
configure: configureWindsurf,
|
|
170
|
+
collectTemplates: () => {
|
|
171
|
+
const files = new Map();
|
|
172
|
+
for (const workflow of getAllWindsurfWorkflows()) {
|
|
173
|
+
files.set(`.windsurf/workflows/${workflow.name}.md`, workflow.content);
|
|
174
|
+
}
|
|
175
|
+
return files;
|
|
176
|
+
},
|
|
177
|
+
},
|
|
150
178
|
qoder: {
|
|
151
179
|
configure: configureQoder,
|
|
152
180
|
collectTemplates: () => {
|
|
@@ -157,6 +185,34 @@ const PLATFORM_FUNCTIONS = {
|
|
|
157
185
|
return files;
|
|
158
186
|
},
|
|
159
187
|
},
|
|
188
|
+
codebuddy: {
|
|
189
|
+
configure: configureCodebuddy,
|
|
190
|
+
collectTemplates: () => {
|
|
191
|
+
const files = new Map();
|
|
192
|
+
// Commands in trellis/ subdirectory (CodeBuddy supports nested dirs)
|
|
193
|
+
for (const cmd of getCodebuddyCommands()) {
|
|
194
|
+
files.set(`.codebuddy/commands/trellis/${cmd.name}.md`, cmd.content);
|
|
195
|
+
}
|
|
196
|
+
return files;
|
|
197
|
+
},
|
|
198
|
+
},
|
|
199
|
+
copilot: {
|
|
200
|
+
configure: configureCopilot,
|
|
201
|
+
collectTemplates: () => {
|
|
202
|
+
const files = new Map();
|
|
203
|
+
for (const prompt of getCopilotPrompts()) {
|
|
204
|
+
files.set(`.github/prompts/${prompt.name}.prompt.md`, prompt.content);
|
|
205
|
+
}
|
|
206
|
+
for (const hook of getCopilotHooks()) {
|
|
207
|
+
files.set(`.github/copilot/hooks/${hook.name}`, hook.content);
|
|
208
|
+
}
|
|
209
|
+
// Tracked copy under platform config directory
|
|
210
|
+
files.set(".github/copilot/hooks.json", resolvePlaceholders(getCopilotHooksConfig()));
|
|
211
|
+
// VS Code Copilot discovery entry written by configureCopilot
|
|
212
|
+
files.set(".github/hooks/trellis.json", resolvePlaceholders(getCopilotHooksConfig()));
|
|
213
|
+
return files;
|
|
214
|
+
},
|
|
215
|
+
},
|
|
160
216
|
};
|
|
161
217
|
// =============================================================================
|
|
162
218
|
// Derived Helpers — all derived from AI_TOOLS registry
|
|
@@ -165,10 +221,16 @@ const PLATFORM_FUNCTIONS = {
|
|
|
165
221
|
export const PLATFORM_IDS = Object.keys(AI_TOOLS);
|
|
166
222
|
/** All platform config directory names (e.g., [".claude", ".cursor", ".iflow", ".opencode"]) */
|
|
167
223
|
export const CONFIG_DIRS = PLATFORM_IDS.map((id) => AI_TOOLS[id].configDir);
|
|
224
|
+
/** All managed paths for every platform (primary configDir + extra managed paths). */
|
|
225
|
+
export const PLATFORM_MANAGED_DIRS = PLATFORM_IDS.flatMap((id) => getManagedPaths(id));
|
|
168
226
|
/** All directories managed by Trellis (including .trellis itself) */
|
|
169
|
-
export const ALL_MANAGED_DIRS = [".trellis", ...
|
|
227
|
+
export const ALL_MANAGED_DIRS = [".trellis", ...new Set(PLATFORM_MANAGED_DIRS)];
|
|
170
228
|
/**
|
|
171
|
-
* Detect which platforms are configured by checking for
|
|
229
|
+
* Detect which platforms are configured by checking for configDir existence.
|
|
230
|
+
*
|
|
231
|
+
* Note: Detection uses only `configDir` (the platform-specific directory),
|
|
232
|
+
* NOT shared layers like `.agents/skills/`. This prevents false positives
|
|
233
|
+
* where a shared directory triggers detection of a specific platform.
|
|
172
234
|
*/
|
|
173
235
|
export function getConfiguredPlatforms(cwd) {
|
|
174
236
|
const platforms = new Set();
|
|
@@ -199,6 +261,12 @@ export function isManagedPath(dirPath) {
|
|
|
199
261
|
export function isManagedRootDir(dirName) {
|
|
200
262
|
return ALL_MANAGED_DIRS.includes(dirName);
|
|
201
263
|
}
|
|
264
|
+
/**
|
|
265
|
+
* Get all managed paths for a platform.
|
|
266
|
+
*/
|
|
267
|
+
export function getPlatformManagedPaths(platformId) {
|
|
268
|
+
return getManagedPaths(platformId);
|
|
269
|
+
}
|
|
202
270
|
/**
|
|
203
271
|
* Get the configure function for a platform
|
|
204
272
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/configurators/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/configurators/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* The opencode templates include:
|
|
11
11
|
* - commands/ - Slash commands
|
|
12
12
|
* - agents/ - Multi-agent pipeline configurations
|
|
13
|
-
* -
|
|
13
|
+
* - plugins/ - Context injection plugins
|
|
14
14
|
* - lib/ - Shared JavaScript utilities
|
|
15
15
|
* - package.json - Plugin dependencies
|
|
16
16
|
*/
|
|
@@ -60,7 +60,7 @@ async function copyDirFiltered(src, dest) {
|
|
|
60
60
|
* The opencode templates include:
|
|
61
61
|
* - commands/ - Slash commands
|
|
62
62
|
* - agents/ - Multi-agent pipeline configurations
|
|
63
|
-
* -
|
|
63
|
+
* - plugins/ - Context injection plugins
|
|
64
64
|
* - lib/ - Shared JavaScript utilities
|
|
65
65
|
* - package.json - Plugin dependencies
|
|
66
66
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"windsurf.d.ts","sourceRoot":"","sources":["../../src/configurators/windsurf.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQlE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { getAllWorkflows } from "../templates/windsurf/index.js";
|
|
3
|
+
import { ensureDir, writeFile } from "../utils/file-writer.js";
|
|
4
|
+
/**
|
|
5
|
+
* Configure Windsurf by writing workflow templates.
|
|
6
|
+
*
|
|
7
|
+
* Output:
|
|
8
|
+
* - .windsurf/workflows/<workflow-name>.md
|
|
9
|
+
*/
|
|
10
|
+
export async function configureWindsurf(cwd) {
|
|
11
|
+
const workflowRoot = path.join(cwd, ".windsurf", "workflows");
|
|
12
|
+
ensureDir(workflowRoot);
|
|
13
|
+
for (const workflow of getAllWorkflows()) {
|
|
14
|
+
const targetPath = path.join(workflowRoot, `${workflow.name}.md`);
|
|
15
|
+
await writeFile(targetPath, workflow.content);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=windsurf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"windsurf.js","sourceRoot":"","sources":["../../src/configurators/windsurf.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAW;IACjD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAC9D,SAAS,CAAC,YAAY,CAAC,CAAC;IAExB,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC;QAClE,MAAM,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/configurators/workflow.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/configurators/workflow.ts"],"names":[],"mappings":"AAsCA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,8BAA8B,CAAC;AAOtC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,WAAW,EAAE,WAAW,CAAC;IACzB,wDAAwD;IACxD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yFAAyF;IACzF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAClC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC,CA4Df"}
|
|
@@ -12,6 +12,7 @@ frontendIndexContent, frontendDirectoryStructureContent, frontendTypeSafetyConte
|
|
|
12
12
|
// Guides structure
|
|
13
13
|
guidesIndexContent, guidesCrossLayerThinkingGuideContent, guidesCodeReuseThinkingGuideContent, } from "../templates/markdown/index.js";
|
|
14
14
|
import { writeFile, ensureDir } from "../utils/file-writer.js";
|
|
15
|
+
import { sanitizePkgName, } from "../utils/project-detector.js";
|
|
15
16
|
/**
|
|
16
17
|
* Create workflow structure based on project type
|
|
17
18
|
*
|
|
@@ -150,9 +151,10 @@ async function createSpecTemplates(cwd, projectType, packages, remoteSpecPackage
|
|
|
150
151
|
if (packages && packages.length > 0) {
|
|
151
152
|
// Monorepo mode: create spec/<name>/ for each package
|
|
152
153
|
for (const pkg of packages) {
|
|
153
|
-
|
|
154
|
+
const dirName = sanitizePkgName(pkg.name);
|
|
155
|
+
if (remoteSpecPackages?.has(dirName))
|
|
154
156
|
continue;
|
|
155
|
-
const pkgSpecBase = path.join(cwd, `${PATHS.SPEC}/${
|
|
157
|
+
const pkgSpecBase = path.join(cwd, `${PATHS.SPEC}/${dirName}`);
|
|
156
158
|
ensureDir(pkgSpecBase);
|
|
157
159
|
const pkgType = pkg.type === "unknown" ? "fullstack" : pkg.type;
|
|
158
160
|
await writeSpecForType(pkgSpecBase, pkgType);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/configurators/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,2DAA2D;AAC3D,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,+BAA+B,CAAC;AAEvC,4BAA4B;AAC5B,OAAO,EACL,yBAAyB;AACzB,gCAAgC;AAChC,mBAAmB,EACnB,gCAAgC,EAChC,gCAAgC,EAChC,+BAA+B,EAC/B,+BAA+B,EAC/B,2BAA2B;AAC3B,iCAAiC;AACjC,oBAAoB,EACpB,iCAAiC,EACjC,yBAAyB,EACzB,6BAA6B,EAC7B,kCAAkC,EAClC,gCAAgC,EAChC,8BAA8B;AAC9B,mBAAmB;AACnB,kBAAkB,EAClB,oCAAoC,EACpC,mCAAmC,GACpC,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/configurators/workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.3.10",
|
|
3
|
+
"description": "HTTPS registry URLs, record-session wording fix",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug Fixes:**\n- fix(init): accept HTTPS URLs for --registry option — auto-converts GitHub/GitLab/Bitbucket URLs to giget format (#87)\n- fix(templates): clarify record-session commit rule so AI models run metadata scripts without refusing (#88)",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run `trellis update` to sync updated record-session templates."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.4.0-beta.10",
|
|
3
|
+
"description": "Ralph Loop field name fix, migration task assignee parsing, task lifecycle docs",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug Fixes:**\n- fix(hooks): correct SubagentStop event field names in ralph-loop (#152) — Ralph Loop was silently inert for all users because the hook read non-existent fields (subagent_type/agent_output/prompt); now reads agent_type and last_assistant_message. Check/implement/debug subagents will now actually trigger loop control.\n- fix(update): parse name from .developer when creating migration task (#153) — previously embedded the entire key=value file contents (including the initialized_at timestamp) as the task assignee, which leaked into session-start task rendering and broke the ACTIVE TASKS layout.\n\n**Documentation:**\n- docs(workflow): document task.py start/finish lifecycle and .current-task mechanism — workflow.md now documents the start/finish subcommands (previously undocumented despite being wired in argparse) and explains how .current-task feeds SessionStart hook injection. Task Development Flow expanded from 5 to 7 steps with explicit Start and Finish phases.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run `trellis update` to sync. Ralph Loop will now actually fire for check/implement/debug subagents — if you relied on the previously-silent behavior, watch for new loop activity."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.4.0-beta.2",
|
|
3
|
+
"description": "Fix scoped npm package names in monorepo spec directory paths",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug Fixes:**\n- fix(init): strip npm scope prefix (@scope/name → name) from monorepo package directory names — prevents nested @scope/ directories in .trellis/spec/ and config.yaml",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run `trellis update` to sync. If you ran `trellis init` on a monorepo with scoped packages (e.g. @scope/name), you may need to manually rename existing `.trellis/spec/@scope/name/` directories to `.trellis/spec/name/` and update the keys in `.trellis/config.yaml`."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.4.0-beta.3",
|
|
3
|
+
"description": "Fix trellis update skipping unregistered scripts, merge v0.3.10 fixes",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug Fixes:**\n- fix(update): use getAllScripts() as single source of truth — 11 Python scripts were silently skipped by `trellis update` because they weren't registered in the manual file list\n\n**Merged from v0.3.10:**\n- fix(init): accept HTTPS URLs for --registry option (#87)\n- fix(templates): clarify record-session commit rule for AI model compatibility (#88)",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run `trellis update` to sync all Python scripts that may have been missed in previous updates."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.4.0-beta.4",
|
|
3
|
+
"description": "Git repo context for monorepo packages + improved init-context hints",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Enhancements:**\n- feat(context): show git status and recent commits for independent sub-repo packages (config `git: true`)\n- feat(task): init-context now lists auto-injected defaults and available spec files to guide AI agents\n- feat(commands): add /trellis:publish-skill slash command\n- feat(marketplace): add cc-codex-spec-bootstrap skill\n\n**Bug Fixes:**\n- fix(context): use _is_true_config_value for isGitRepo consistency (case-insensitive)",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run `trellis update` to sync. Projects with independent git sub-repos can now add `git: true` to package config to see their status in session context."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.4.0-beta.5",
|
|
3
|
+
"description": "UX improvements: renamed template picker label + iFlow CLI agent fix",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Enhancements:**\n- fix(init): rename \"empty templates\" to \"from scratch\" in template picker for clearer UX\n\n**Bug Fixes:**\n- fix(iflow): correct CLI agent invocation syntax in cli_adapter.py (#95)",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run `trellis update` to sync."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.4.0-beta.6",
|
|
3
|
+
"description": "CodeBuddy platform support, OpenCode plugin fix, improved skill descriptions",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Enhancements:**\n- feat(platform): add CodeBuddy (Tencent) platform support with nested slash commands (.codebuddy/commands/trellis/)\n- feat(skills): improve skill descriptions across Codex, Kiro, and Qoder for better AI triggering accuracy\n\n**Bug Fixes:**\n- fix(opencode): correct plugin directory name from plugin/ to plugins/ in configurator",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run `trellis update` to sync. No migration required."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.4.0-beta.7",
|
|
3
|
+
"description": "Fix Pyright import warnings in session-start hooks",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug Fixes:**\n- fix(hooks): suppress Pyright/Pylance import warnings in session-start.py — added `type: ignore[import-not-found]` to dynamic imports from `common.*` that are resolved at runtime via sys.path",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run `trellis update` to sync. No migration required."
|
|
9
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.4.0-beta.8",
|
|
3
|
+
"description": "Decouple .agents/skills/ as shared Agent Skills layer, add full .codex/ directory support",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Enhancements:**\n- feat(codex): decouple .agents/skills/ as shared Agent Skills layer (agentskills.io standard)\n- feat(codex): add .codex/ directory with config, agents, skills, and SessionStart hooks\n- feat(cli): add branch context to session journal records (#108)\n\n**Bug Fixes:**\n- fix(iflow): revert incorrect --agent flag change from PR #112\n- fix(codex): correct agent TOML format (name + description + developer_instructions)\n\n**Migration:**\n- Auto-upgrade legacy Codex installs (.agents/skills/ without .codex/) on trellis update\n- safe-file-delete for .agents/skills/parallel/ and old trellis-*.toml agents",
|
|
7
|
+
"migrations": [
|
|
8
|
+
{
|
|
9
|
+
"type": "safe-file-delete",
|
|
10
|
+
"from": ".agents/skills/parallel/SKILL.md",
|
|
11
|
+
"description": "Moved to .codex/skills/parallel/ (Codex-specific, not shared)",
|
|
12
|
+
"allowed_hashes": ["b67b30c4e4fe00e5bc6b2f0da078e6cdfc4f082d5660b00b9ce6cfd6308d7dec"]
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"type": "safe-file-delete",
|
|
16
|
+
"from": ".codex/agents/trellis-implementer.toml",
|
|
17
|
+
"description": "Renamed to implement.toml with corrected TOML format",
|
|
18
|
+
"allowed_hashes": ["e2f46f9df38485c5a0cbb562310d326a9a612dc32286bad91494a83d00c7bb3f"]
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"type": "safe-file-delete",
|
|
22
|
+
"from": ".codex/agents/trellis-researcher.toml",
|
|
23
|
+
"description": "Renamed to research.toml with corrected TOML format",
|
|
24
|
+
"allowed_hashes": ["dfda47b432b653d29dbe30f07648614e6636b1120ab718b4a640a9b51da90242"]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"type": "safe-file-delete",
|
|
28
|
+
"from": ".codex/agents/trellis-reviewer.toml",
|
|
29
|
+
"description": "Renamed to check.toml with corrected TOML format",
|
|
30
|
+
"allowed_hashes": ["b7ebff2a15c73ccd6d851122a4d202fc02adb9706942acd6601aad614e09ebc9"]
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"notes": "Run `trellis update` to sync. Codex hooks require `features.codex_hooks = true` in ~/.codex/config.toml."
|
|
34
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.4.0-beta.9",
|
|
3
|
+
"description": "Copilot & Windsurf platform support, self-hosted registry, OpenCode dispatch fix, 6-phase task lifecycle",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Enhancements:**\n- feat(copilot): add GitHub Copilot platform support with standalone prompt templates and hook tracking\n- feat(windsurf): add full workflow support for Windsurf IDE — rules, workflows, and AI configuration\n- feat(cli): support self-hosted GitLab/GitHub Enterprise URLs in --registry (#131)\n- feat(cli): statusLine integration for Claude Code (#127)\n- feat(cli): CodeBuddy platform support, Codex agent improvements (#128, #116)\n- refactor(task): update next_action template to 6-phase lifecycle (brainstorm→research→implement→check→update-spec→record-session)\n- refactor: migrate marketplace to standalone repo as submodule (#117)\n\n**Bug Fixes:**\n- fix(opencode): make dispatch wait for child tasks synchronously instead of background polling (#147)\n- fix(hooks): normalize .current-task path refs across platforms (#130)\n- fix(codex): resolve {{PYTHON_CMD}} placeholder in hooks.json for Windows (#132)\n- fix(cli): add_session git-add error handling and Python 3.10 version check\n- fix(cli): support self-hosted GitLab/GHE URL parsing in template-fetcher",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run `trellis update` to sync. New platforms: `trellis init --platform copilot` or `--platform windsurf`."
|
|
9
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[!] **Prerequisite**: This command should only be used AFTER the human has tested and committed the code.
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**Do NOT run `git commit` directly** — the scripts below handle their own commits for `.trellis/` metadata. You only need to read git history (`git log`, `git status`, `git diff`) and run the Python scripts.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -46,6 +46,7 @@ EOF
|
|
|
46
46
|
**Auto-completes**:
|
|
47
47
|
- [OK] Appends session to journal-N.md
|
|
48
48
|
- [OK] Auto-detects line count, creates new file if >2000 lines
|
|
49
|
+
- [OK] Auto-detects Branch context (`--branch` override; otherwise Branch = task.json -> current git branch; missing values are omitted gracefully)
|
|
49
50
|
- [OK] Updates index.md (Total Sessions +1, Last Active, line stats, history)
|
|
50
51
|
- [OK] Auto-commits .trellis/workspace and .trellis/tasks changes
|
|
51
52
|
|
|
@@ -56,6 +57,6 @@ EOF
|
|
|
56
57
|
| Command | Purpose |
|
|
57
58
|
|---------|---------|
|
|
58
59
|
| `python3 ./.trellis/scripts/get_context.py --mode record` | Get context for record-session |
|
|
59
|
-
| `python3 ./.trellis/scripts/add_session.py --title "..." --commit "..."` | **One-click add session (recommended)** |
|
|
60
|
+
| `python3 ./.trellis/scripts/add_session.py --title "..." --commit "..."` | **One-click add session (recommended, branch auto-complete)** |
|
|
60
61
|
| `python3 ./.trellis/scripts/task.py archive <name>` | Archive completed task (auto-commits) |
|
|
61
62
|
| `python3 ./.trellis/scripts/task.py list` | List active tasks |
|
|
@@ -99,7 +99,14 @@ def get_current_task(repo_root: str) -> str | None:
|
|
|
99
99
|
try:
|
|
100
100
|
with open(current_task_file, "r", encoding="utf-8") as f:
|
|
101
101
|
content = f.read().strip()
|
|
102
|
-
|
|
102
|
+
if not content:
|
|
103
|
+
return None
|
|
104
|
+
normalized = content.replace("\\", "/")
|
|
105
|
+
while normalized.startswith("./"):
|
|
106
|
+
normalized = normalized[2:]
|
|
107
|
+
if normalized.startswith("tasks/"):
|
|
108
|
+
normalized = f".trellis/{normalized}"
|
|
109
|
+
return normalized
|
|
103
110
|
except Exception:
|
|
104
111
|
return None
|
|
105
112
|
|
|
@@ -72,7 +72,14 @@ def get_current_task(repo_root: str) -> str | None:
|
|
|
72
72
|
try:
|
|
73
73
|
with open(current_task_file, "r", encoding="utf-8") as f:
|
|
74
74
|
content = f.read().strip()
|
|
75
|
-
|
|
75
|
+
if not content:
|
|
76
|
+
return None
|
|
77
|
+
normalized = content.replace("\\", "/")
|
|
78
|
+
while normalized.startswith("./"):
|
|
79
|
+
normalized = normalized[2:]
|
|
80
|
+
if normalized.startswith("tasks/"):
|
|
81
|
+
normalized = f".trellis/{normalized}"
|
|
82
|
+
return normalized
|
|
76
83
|
except Exception:
|
|
77
84
|
return None
|
|
78
85
|
|
|
@@ -258,17 +265,18 @@ def main():
|
|
|
258
265
|
sys.exit(0)
|
|
259
266
|
|
|
260
267
|
# Get subagent info
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
268
|
+
# Field names per Claude Code SubagentStop event schema:
|
|
269
|
+
# agent_type, last_assistant_message, agent_id, agent_transcript_path, cwd
|
|
270
|
+
# The event does NOT carry a `prompt` field, so finish-phase detection
|
|
271
|
+
# based on a `[finish]` marker in the user prompt is no longer possible
|
|
272
|
+
# here; finish-phase skip logic should be reintroduced via task.json
|
|
273
|
+
# state (e.g. current_phase) in a follow-up.
|
|
274
|
+
agent_type = input_data.get("agent_type", "")
|
|
275
|
+
last_assistant_message = input_data.get("last_assistant_message", "")
|
|
264
276
|
cwd = input_data.get("cwd", os.getcwd())
|
|
265
277
|
|
|
266
278
|
# Only control check agent
|
|
267
|
-
if
|
|
268
|
-
sys.exit(0)
|
|
269
|
-
|
|
270
|
-
# Skip Ralph Loop for finish phase (already verified in check phase)
|
|
271
|
-
if "[finish]" in original_prompt.lower():
|
|
279
|
+
if agent_type != TARGET_AGENT:
|
|
272
280
|
sys.exit(0)
|
|
273
281
|
|
|
274
282
|
# Find repo root
|
|
@@ -350,7 +358,7 @@ def main():
|
|
|
350
358
|
else:
|
|
351
359
|
# No verify commands, fall back to completion markers
|
|
352
360
|
markers = get_completion_markers(repo_root, task_dir)
|
|
353
|
-
all_complete, missing = check_completion(
|
|
361
|
+
all_complete, missing = check_completion(last_assistant_message, markers)
|
|
354
362
|
|
|
355
363
|
if all_complete:
|
|
356
364
|
# All checks complete, allow stop
|
|
@@ -65,23 +65,47 @@ def run_script(script_path: Path) -> str:
|
|
|
65
65
|
return "No context available"
|
|
66
66
|
|
|
67
67
|
|
|
68
|
+
def _normalize_task_ref(task_ref: str) -> str:
|
|
69
|
+
normalized = task_ref.strip()
|
|
70
|
+
if not normalized:
|
|
71
|
+
return ""
|
|
72
|
+
|
|
73
|
+
path_obj = Path(normalized)
|
|
74
|
+
if path_obj.is_absolute():
|
|
75
|
+
return str(path_obj)
|
|
76
|
+
|
|
77
|
+
normalized = normalized.replace("\\", "/")
|
|
78
|
+
while normalized.startswith("./"):
|
|
79
|
+
normalized = normalized[2:]
|
|
80
|
+
|
|
81
|
+
if normalized.startswith("tasks/"):
|
|
82
|
+
return f".trellis/{normalized}"
|
|
83
|
+
|
|
84
|
+
return normalized
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def _resolve_task_dir(trellis_dir: Path, task_ref: str) -> Path:
|
|
88
|
+
normalized = _normalize_task_ref(task_ref)
|
|
89
|
+
path_obj = Path(normalized)
|
|
90
|
+
if path_obj.is_absolute():
|
|
91
|
+
return path_obj
|
|
92
|
+
if normalized.startswith(".trellis/"):
|
|
93
|
+
return trellis_dir.parent / path_obj
|
|
94
|
+
return trellis_dir / "tasks" / path_obj
|
|
95
|
+
|
|
96
|
+
|
|
68
97
|
def _get_task_status(trellis_dir: Path) -> str:
|
|
69
98
|
"""Check current task status and return structured status string."""
|
|
70
99
|
current_task_file = trellis_dir / ".current-task"
|
|
71
100
|
if not current_task_file.is_file():
|
|
72
101
|
return "Status: NO ACTIVE TASK\nNext: Describe what you want to work on"
|
|
73
102
|
|
|
74
|
-
task_ref = current_task_file.read_text(encoding="utf-8").strip()
|
|
103
|
+
task_ref = _normalize_task_ref(current_task_file.read_text(encoding="utf-8").strip())
|
|
75
104
|
if not task_ref:
|
|
76
105
|
return "Status: NO ACTIVE TASK\nNext: Describe what you want to work on"
|
|
77
106
|
|
|
78
107
|
# Resolve task directory
|
|
79
|
-
|
|
80
|
-
task_dir = Path(task_ref)
|
|
81
|
-
elif task_ref.startswith(".trellis/"):
|
|
82
|
-
task_dir = trellis_dir.parent / task_ref
|
|
83
|
-
else:
|
|
84
|
-
task_dir = trellis_dir / "tasks" / task_ref
|
|
108
|
+
task_dir = _resolve_task_dir(trellis_dir, task_ref)
|
|
85
109
|
if not task_dir.is_dir():
|
|
86
110
|
return f"Status: STALE POINTER\nTask: {task_ref}\nNext: Task directory not found. Run: python3 ./.trellis/scripts/task.py finish"
|
|
87
111
|
|
|
@@ -130,8 +154,8 @@ def _load_trellis_config(trellis_dir: Path) -> tuple:
|
|
|
130
154
|
sys.path.insert(0, str(scripts_dir))
|
|
131
155
|
|
|
132
156
|
try:
|
|
133
|
-
from common.config import get_default_package, get_packages, get_spec_scope, is_monorepo
|
|
134
|
-
from common.paths import get_current_task
|
|
157
|
+
from common.config import get_default_package, get_packages, get_spec_scope, is_monorepo # type: ignore[import-not-found]
|
|
158
|
+
from common.paths import get_current_task # type: ignore[import-not-found]
|
|
135
159
|
|
|
136
160
|
repo_root = trellis_dir.parent
|
|
137
161
|
is_mono = is_monorepo(repo_root)
|