@pennixrv/trellis 0.6.45 → 0.7.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/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +21 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/mem.d.ts.map +1 -1
- package/dist/commands/mem.js +6 -13
- package/dist/commands/mem.js.map +1 -1
- package/dist/commands/workflow.d.ts +17 -0
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +222 -0
- package/dist/commands/workflow.js.map +1 -1
- package/dist/configurators/claude.d.ts.map +1 -1
- package/dist/configurators/claude.js.map +1 -1
- package/dist/configurators/dsh.d.ts +16 -19
- package/dist/configurators/dsh.d.ts.map +1 -1
- package/dist/configurators/dsh.js +38 -26
- package/dist/configurators/dsh.js.map +1 -1
- package/dist/configurators/gemini.d.ts.map +1 -1
- package/dist/configurators/gemini.js.map +1 -1
- package/dist/configurators/opencode.d.ts.map +1 -1
- package/dist/configurators/opencode.js +4 -0
- package/dist/configurators/opencode.js.map +1 -1
- package/dist/migrations/manifests/0.6.17.json +2 -2
- package/dist/migrations/manifests/0.7.0-beta.10.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.4.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.4.pennix.1.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.5.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.6.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.7.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.8.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.9.json +9 -0
- package/dist/templates/claude/hooks/statusline.py +7 -0
- package/dist/templates/claude/settings.json +22 -0
- package/dist/templates/codex/hooks/session-start.py +20 -1
- package/dist/templates/codex/hooks.json +25 -0
- package/dist/templates/common/bundled-skills/trellis-channel/references/subnode-work.md +32 -3
- package/dist/templates/common/bundled-skills/trellis-meta/SKILL.md +2 -2
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-task-lifecycle.md +1 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/agents.md +2 -1
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/hooks-and-settings.md +3 -2
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/overview.md +1 -1
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/platform-map.md +5 -4
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/skills-and-commands.md +1 -0
- package/dist/templates/common/bundled-skills/trellis-session-insight/SKILL.md +2 -2
- package/dist/templates/common/bundled-skills/trellis-session-insight/references/cli-quick-reference.md +3 -2
- package/dist/templates/common/commands/continue.md +4 -2
- package/dist/templates/common/skills/brainstorm.md +14 -6
- package/dist/templates/copilot/hooks/session-start.py +20 -1
- package/dist/templates/copilot/prompts/brainstorm.prompt.md +16 -6
- package/dist/templates/dsh/DSH.md +61 -37
- package/dist/templates/dsh/agents/trellis-check.md +99 -0
- package/dist/templates/dsh/agents/trellis-implement.md +106 -0
- package/dist/templates/dsh/agents/trellis-research.md +134 -0
- package/dist/templates/dsh/index.d.ts +12 -11
- package/dist/templates/dsh/index.d.ts.map +1 -1
- package/dist/templates/dsh/index.js +14 -12
- package/dist/templates/dsh/index.js.map +1 -1
- package/dist/templates/opencode/plugins/inject-spec-context.js +121 -0
- package/dist/templates/opencode/plugins/inject-workflow-state.js +111 -10
- package/dist/templates/pi/extensions/trellis/index.ts.txt +164 -10
- package/dist/templates/shared-hooks/index.d.ts +8 -2
- package/dist/templates/shared-hooks/index.d.ts.map +1 -1
- package/dist/templates/shared-hooks/index.js +13 -1
- package/dist/templates/shared-hooks/index.js.map +1 -1
- package/dist/templates/shared-hooks/inject-shell-session-context.py +3 -3
- package/dist/templates/shared-hooks/inject-spec-context.py +844 -0
- package/dist/templates/shared-hooks/inject-workflow-state.py +35 -9
- package/dist/templates/shared-hooks/session-start.py +22 -1
- package/dist/templates/trellis/agents/subnode.md +11 -4
- package/dist/templates/trellis/config.yaml +49 -0
- package/dist/templates/trellis/index.d.ts +3 -0
- package/dist/templates/trellis/index.d.ts.map +1 -1
- package/dist/templates/trellis/index.js +6 -0
- package/dist/templates/trellis/index.js.map +1 -1
- package/dist/templates/trellis/scripts/common/active_task.py +26 -4
- package/dist/templates/trellis/scripts/common/cli_adapter.py +38 -6
- package/dist/templates/trellis/scripts/common/config.py +18 -0
- package/dist/templates/trellis/scripts/common/context_projection.py +2 -2
- package/dist/templates/trellis/scripts/common/git_context.py +34 -2
- package/dist/templates/trellis/scripts/common/paths.py +28 -0
- package/dist/templates/trellis/scripts/common/spec_inject.py +439 -0
- package/dist/templates/trellis/scripts/common/spec_match.py +395 -0
- package/dist/templates/trellis/scripts/common/task_store.py +88 -1
- package/dist/templates/trellis/scripts/common/trellis_config.py +46 -7
- package/dist/templates/trellis/scripts/common/workflow_phase.py +3 -2
- package/dist/templates/trellis/scripts/common/workflow_selection.py +177 -0
- package/dist/templates/trellis/scripts/subnode_artifact.py +153 -15
- package/dist/templates/trellis/scripts/task.py +160 -0
- package/dist/templates/trellis/workflow.md +49 -34
- package/dist/types/ai-tools.d.ts.map +1 -1
- package/dist/types/ai-tools.js +26 -13
- package/dist/types/ai-tools.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/configurators/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,GAEjB,MAAM,aAAa,CAAC;AAErB,MAAM,gBAAgB,GAAG;IACvB,OAAO;IACP,WAAW;IACX,KAAK;IACL,SAAS;IACT,KAAK,EAAE,mEAAmE;IAC1E,aAAa;CACd,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,sBAAsB,GAAG,6BAA6B,CAAC;AAEpE,SAAS,0BAA0B,CAAC,KAAc;IAChD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAI,KAAiC,CAAC,OAAO,CAAC;IAC3D,OAAO,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAW;IACnD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/configurators/claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* DeepSeek Harness (dsh) configurator.
|
|
3
3
|
*
|
|
4
|
-
* dsh is a class-2 pull-based platform (agentCapable
|
|
5
|
-
* session-start hook, no project-level hooks/settings Trellis may
|
|
6
|
-
*
|
|
7
|
-
* discovers them from the project roots `<projectRoot>/.dsh/skills`
|
|
8
|
-
* (rank 100) and `<projectRoot>/.agents/skills` (rank 200). Two output
|
|
9
|
-
* paths:
|
|
4
|
+
* dsh is a class-2 pull-based platform (agentCapable via the `subagent` tool,
|
|
5
|
+
* no shipped session-start hook, no project-level hooks/settings Trellis may
|
|
6
|
+
* write). Three output paths:
|
|
10
7
|
* - `.agents/skills/` — workflow + bundled skills, written via the NEUTRAL
|
|
11
|
-
* resolver so the files stay byte-identical to Codex/Gemini/Pi/Kimi
|
|
12
|
-
*
|
|
13
|
-
* - `.dsh/skills/` — dsh-private
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* - `.dsh/DSH.md` — operator guide
|
|
18
|
-
*
|
|
19
|
-
* can detect and scope dsh.
|
|
8
|
+
* resolver so the files stay byte-identical to Codex/Gemini/Pi/Kimi writes
|
|
9
|
+
* into the same shared root (dsh discovers `.agents/skills/` natively).
|
|
10
|
+
* - `.dsh/skills/` — dsh-private entry skills (trellis-start /
|
|
11
|
+
* trellis-continue / trellis-finish-work) plus collision-free Trellis role
|
|
12
|
+
* skills (trellis-agent-implement / trellis-agent-check /
|
|
13
|
+
* trellis-agent-research) with the pull-based prelude on implement/check.
|
|
14
|
+
* - `.dsh/DSH.md` — operator guide and a configDir-owned tracked file for
|
|
15
|
+
* platform detection and uninstall scoping.
|
|
20
16
|
*
|
|
21
|
-
* dsh
|
|
22
|
-
*
|
|
23
|
-
*
|
|
17
|
+
* dsh has no project-level hooks/settings file Trellis may write and no
|
|
18
|
+
* declarative custom sub-agent definitions (dispatch goes through the
|
|
19
|
+
* `subagent` tool), so no hooks, settings, or extension files are written and
|
|
20
|
+
* the agent prompts ship as skills.
|
|
24
21
|
*/
|
|
25
22
|
/**
|
|
26
|
-
* The
|
|
23
|
+
* The DeepSeek Harness file set — written at init and diffed by `trellis update`.
|
|
27
24
|
*/
|
|
28
25
|
export declare function collectDshTemplates(): Map<string, string>;
|
|
29
26
|
//# sourceMappingURL=dsh.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dsh.d.ts","sourceRoot":"","sources":["../../src/configurators/dsh.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dsh.d.ts","sourceRoot":"","sources":["../../src/configurators/dsh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAmDH;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CA0BzD"}
|
|
@@ -1,35 +1,31 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* DeepSeek Harness (dsh) configurator.
|
|
3
3
|
*
|
|
4
|
-
* dsh is a class-2 pull-based platform (agentCapable
|
|
5
|
-
* session-start hook, no project-level hooks/settings Trellis may
|
|
6
|
-
*
|
|
7
|
-
* discovers them from the project roots `<projectRoot>/.dsh/skills`
|
|
8
|
-
* (rank 100) and `<projectRoot>/.agents/skills` (rank 200). Two output
|
|
9
|
-
* paths:
|
|
4
|
+
* dsh is a class-2 pull-based platform (agentCapable via the `subagent` tool,
|
|
5
|
+
* no shipped session-start hook, no project-level hooks/settings Trellis may
|
|
6
|
+
* write). Three output paths:
|
|
10
7
|
* - `.agents/skills/` — workflow + bundled skills, written via the NEUTRAL
|
|
11
|
-
* resolver so the files stay byte-identical to Codex/Gemini/Pi/Kimi
|
|
12
|
-
*
|
|
13
|
-
* - `.dsh/skills/` — dsh-private
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* - `.dsh/DSH.md` — operator guide
|
|
18
|
-
*
|
|
19
|
-
* can detect and scope dsh.
|
|
8
|
+
* resolver so the files stay byte-identical to Codex/Gemini/Pi/Kimi writes
|
|
9
|
+
* into the same shared root (dsh discovers `.agents/skills/` natively).
|
|
10
|
+
* - `.dsh/skills/` — dsh-private entry skills (trellis-start /
|
|
11
|
+
* trellis-continue / trellis-finish-work) plus collision-free Trellis role
|
|
12
|
+
* skills (trellis-agent-implement / trellis-agent-check /
|
|
13
|
+
* trellis-agent-research) with the pull-based prelude on implement/check.
|
|
14
|
+
* - `.dsh/DSH.md` — operator guide and a configDir-owned tracked file for
|
|
15
|
+
* platform detection and uninstall scoping.
|
|
20
16
|
*
|
|
21
|
-
* dsh
|
|
22
|
-
*
|
|
23
|
-
*
|
|
17
|
+
* dsh has no project-level hooks/settings file Trellis may write and no
|
|
18
|
+
* declarative custom sub-agent definitions (dispatch goes through the
|
|
19
|
+
* `subagent` tool), so no hooks, settings, or extension files are written and
|
|
20
|
+
* the agent prompts ship as skills.
|
|
24
21
|
*/
|
|
25
22
|
import { AI_TOOLS } from "../types/ai-tools.js";
|
|
26
|
-
import { getDshGuide } from "../templates/dsh/index.js";
|
|
27
|
-
import { collectSkillTemplates, resolveAllAsSkills, resolveBundledSkills, resolveSkillsNeutral, } from "./shared.js";
|
|
23
|
+
import { getAllAgents, getDshGuide } from "../templates/dsh/index.js";
|
|
24
|
+
import { applyPullBasedPreludeMarkdown, collectSkillTemplates, replacePythonCommandLiterals, resolveAllAsSkills, resolveBundledSkills, resolveSkillsNeutral, } from "./shared.js";
|
|
28
25
|
/**
|
|
29
26
|
* Command templates that become user-invocable dsh skills
|
|
30
|
-
* (
|
|
31
|
-
*
|
|
32
|
-
* as SKILL.md files in `.dsh/skills/`.
|
|
27
|
+
* (loaded by their `trellis-<name>` skill names). The session-boundary
|
|
28
|
+
* commands are delivered as SKILL.md files in DSH's private project root.
|
|
33
29
|
*/
|
|
34
30
|
const DSH_COMMAND_SKILL_NAMES = new Set([
|
|
35
31
|
"trellis-start",
|
|
@@ -42,8 +38,21 @@ function resolveDshCommandSkills() {
|
|
|
42
38
|
const ctx = AI_TOOLS.dsh.templateContext;
|
|
43
39
|
return resolveAllAsSkills(ctx).filter((skill) => DSH_COMMAND_SKILL_NAMES.has(skill.name));
|
|
44
40
|
}
|
|
41
|
+
/** Trellis agent prompts as DSH-private skills. The `trellis-agent-*` names
|
|
42
|
+
* intentionally do not collide with shared main-session workflow skills such
|
|
43
|
+
* as `.agents/skills/trellis-check`. */
|
|
44
|
+
function resolveDshAgentSkills() {
|
|
45
|
+
return applyPullBasedPreludeMarkdown(getAllAgents()).map((agent) => {
|
|
46
|
+
const name = agent.name.replace(/^trellis-/, "trellis-agent-");
|
|
47
|
+
return {
|
|
48
|
+
...agent,
|
|
49
|
+
name,
|
|
50
|
+
content: replacePythonCommandLiterals(agent.content).replace(/^name:\s*trellis-[^\r\n]+$/m, `name: ${name}`),
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
}
|
|
45
54
|
/**
|
|
46
|
-
* The
|
|
55
|
+
* The DeepSeek Harness file set — written at init and diffed by `trellis update`.
|
|
47
56
|
*/
|
|
48
57
|
export function collectDshTemplates() {
|
|
49
58
|
const ctx = AI_TOOLS.dsh.templateContext;
|
|
@@ -53,8 +62,11 @@ export function collectDshTemplates() {
|
|
|
53
62
|
for (const [filePath, content] of collectSkillTemplates(".agents/skills", resolveSkillsNeutral(ctx), resolveBundledSkills(ctx))) {
|
|
54
63
|
files.set(filePath, content);
|
|
55
64
|
}
|
|
56
|
-
// 2. Commands-as-skills → `.dsh/skills
|
|
57
|
-
for (const [filePath, content] of collectSkillTemplates(".dsh/skills",
|
|
65
|
+
// 2. Commands-as-skills + Trellis agent prompts → `.dsh/skills/`.
|
|
66
|
+
for (const [filePath, content] of collectSkillTemplates(".dsh/skills", [
|
|
67
|
+
...resolveDshCommandSkills(),
|
|
68
|
+
...resolveDshAgentSkills(),
|
|
69
|
+
])) {
|
|
58
70
|
files.set(filePath, content);
|
|
59
71
|
}
|
|
60
72
|
// 3. Operator guide → `.dsh/DSH.md`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dsh.js","sourceRoot":"","sources":["../../src/configurators/dsh.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dsh.js","sourceRoot":"","sources":["../../src/configurators/dsh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,4BAA4B,EAC5B,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,GAErB,MAAM,aAAa,CAAC;AAErB;;;;GAIG;AACH,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,eAAe;IACf,kBAAkB;IAClB,qBAAqB;CACtB,CAAC,CAAC;AAEH;+EAC+E;AAC/E,SAAS,uBAAuB;IAC9B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC;IACzC,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9C,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CACxC,CAAC;AACJ,CAAC;AAED;;yCAEyC;AACzC,SAAS,qBAAqB;IAC5B,OAAO,6BAA6B,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACjE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAC/D,OAAO;YACL,GAAG,KAAK;YACR,IAAI;YACJ,OAAO,EAAE,4BAA4B,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAC1D,6BAA6B,EAC7B,SAAS,IAAI,EAAE,CAChB;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAExC,mEAAmE;IACnE,gEAAgE;IAChE,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,qBAAqB,CACrD,gBAAgB,EAChB,oBAAoB,CAAC,GAAG,CAAC,EACzB,oBAAoB,CAAC,GAAG,CAAC,CAC1B,EAAE,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,kEAAkE;IAClE,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,qBAAqB,CAAC,aAAa,EAAE;QACrE,GAAG,uBAAuB,EAAE;QAC5B,GAAG,qBAAqB,EAAE;KAC3B,CAAC,EAAE,CAAC;QACH,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,qCAAqC;IACrC,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC;IAExC,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/configurators/gemini.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/configurators/gemini.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAyB5D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/configurators/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,YAAY,EACZ,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AAEtC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,2BAA2B,GAAG,CAAC,IAAI,sBAAsB,GAAG,CAAC,OAAO,SAAS,CAAC;QAC3F,KAAK,CAAC,GAAG,CAAC,4BAA4B,GAAG,CAAC,IAAI,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IACD,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,qBAAqB,CACrD,gBAAgB,EAChB,oBAAoB,CAAC,GAAG,CAAC,EACzB,oBAAoB,CAAC,GAAG,CAAC,CAC1B,EAAE,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,6BAA6B,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC;QAClE,KAAK,CAAC,GAAG,CAAC,kBAAkB,KAAK,CAAC,IAAI,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;IACD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,EAAE,CAAC;QACnE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,KAAK,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/configurators/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,YAAY,EACZ,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AAEtC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,2BAA2B,GAAG,CAAC,IAAI,sBAAsB,GAAG,CAAC,OAAO,SAAS,CAAC;QAC3F,KAAK,CAAC,GAAG,CAAC,4BAA4B,GAAG,CAAC,IAAI,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IACD,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,qBAAqB,CACrD,gBAAgB,EAChB,oBAAoB,CAAC,GAAG,CAAC,EACzB,oBAAoB,CAAC,GAAG,CAAC,CAC1B,EAAE,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,6BAA6B,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC;QAClE,KAAK,CAAC,GAAG,CAAC,kBAAkB,KAAK,CAAC,IAAI,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;IACD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,EAAE,CAAC;QACnE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,KAAK,CAAC,GAAG,CACP,uBAAuB,EACvB,mBAAmB,CAAC,mBAAmB,EAAE,CAAC,CAC3C,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/configurators/opencode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/configurators/opencode.ts"],"names":[],"mappings":"AA8EA;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAoB9D"}
|
|
@@ -2,6 +2,7 @@ import { readFileSync, readdirSync, statSync } from "node:fs";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { AI_TOOLS } from "../types/ai-tools.js";
|
|
4
4
|
import { getOpenCodeTemplatePath } from "../templates/extract.js";
|
|
5
|
+
import { getSharedHookScriptsForPlatform } from "../templates/shared-hooks/index.js";
|
|
5
6
|
import { toPosix } from "../utils/posix.js";
|
|
6
7
|
import { collectSkillTemplates, replacePythonCommandLiterals, resolveBundledSkills, resolveCommands, resolveSkills, } from "./shared.js";
|
|
7
8
|
/**
|
|
@@ -68,6 +69,9 @@ function walkOpenCodeTemplateDir() {
|
|
|
68
69
|
*/
|
|
69
70
|
export function collectOpenCodeTemplates() {
|
|
70
71
|
const files = walkOpenCodeTemplateDir();
|
|
72
|
+
for (const hook of getSharedHookScriptsForPlatform("opencode")) {
|
|
73
|
+
files.set(`.opencode/hooks/${hook.name}`, replacePythonCommandLiterals(hook.content));
|
|
74
|
+
}
|
|
71
75
|
const ctx = AI_TOOLS.opencode.templateContext;
|
|
72
76
|
for (const cmd of resolveCommands(ctx)) {
|
|
73
77
|
files.set(`.opencode/commands/trellis/${cmd.name}.md`, cmd.content);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/configurators/opencode.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/configurators/opencode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "0.6.17",
|
|
3
|
-
"description": "
|
|
3
|
+
"description": "Adds Devin CLI memory support, task/session safety fixes, and the Pennix beta package identity.",
|
|
4
4
|
"breaking": false,
|
|
5
5
|
"recommendMigrate": false,
|
|
6
|
-
"changelog": "**
|
|
6
|
+
"changelog": "**Enhancements:**\n- `trellis mem` can read Cognition Devin CLI sessions from `~/.local/share/devin/cli/sessions.db` (`--platform devin`).\n- Publishes the Trellis CLI and Core packages under the `@pennixrv` scope.\n\n**Bug fixes:**\n- SQLite mem readers load main-file pages on demand instead of the whole database.\n- Pi headless subagents forward ask-policy prompts to the parent session.\n- Active-task lookup no longer binds another session's task when the current session id is missing.\n- `task.py archive` restores child `parent` links if it stops after unlinking some children.\n- Channel startup records its event barrier before spawning the runtime and cleans up correctly on startup failures.",
|
|
7
7
|
"migrations": [],
|
|
8
8
|
"notes": "No file migration required. Existing projects can upgrade normally."
|
|
9
9
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.7.0-beta.10",
|
|
3
|
+
"description": "Pennix v0.7 beta workflow consumer parity",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Improvements:**\n- Align the Codex Subnode Channel Marketplace workflow with native planning, recovery, and direct commit contracts.\n- Add consumer coverage for answer persistence, implementation-time replanning, and unbound task states.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run npm install -g @pennixrv/trellis@beta then trellis update. No --migrate required."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.7.0-beta.4",
|
|
3
|
+
"description": "Sync v0.6.15–v0.6.17; dsh native sub-agents; YAML flow lists; task.py workflow NameError",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Enhancements:**\n- Synced from main: v0.6.15 (DeepSeek Harness `trellis init --dsh`), v0.6.16 (context-manifest gate, task lifecycle, ablation, OpenCode mem, hook/channel fixes), v0.6.17 (Devin CLI `--platform devin`, lazy SQLite pages, Pi headless ask, active-task isolation, archive unlink restore).\n- On beta, `trellis init --dsh` installs native research/implement/check sub-agents (`trellis-agent-{research,implement,check}`). Stable 0.6.15 still runs those phases inline. (#548)\n\n**Bug Fixes:**\n- `parse_simple_yaml` accepts scalar flow sequences such as `spec_injection.tools: []`.\n- `task.py workflow` imports `read_json` from `common.io` (no `NameError` when pinning a workflow).",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run `npm install -g @mindfoldhq/trellis@beta` then `trellis update`. No `--migrate` required."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.7.0-beta.4.pennix.1",
|
|
3
|
+
"description": "Pennix v0.7 beta reconciliation on upstream v0.7.0-beta.4.",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Enhancements:**\n- Reconciled Pennix Channel, lifecycle, ownership, handoff, analysis-only, managed subnode, telemetry, memory, and release contracts with upstream v0.7 beta.\n- Permitted clearly bounded direct small work with an immediate verification path across the bundled and Marketplace workflows.\n\n**Bug Fixes:**\n- Preserved upstream active-session isolation while keeping Pennix unbound task projections read-only and non-binding.\n- Centralized context projection and fixed UTF-8 boundary truncation.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run `trellis update` to install the Pennix v0.7 beta workflow assets. No `--migrate` required."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.7.0-beta.5",
|
|
3
|
+
"description": "Pennix v0.7 beta completeness audit fixes",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug Fixes:**\n- Claude statusline preserves the explicit `unbound_ambiguous` state instead of suppressing it as no active task.\n- Release preflight recognizes npm's exact-version JSON array response, so already-published beta releases are not planned again.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run `npm install -g @pennixrv/trellis@beta` then `trellis update`. No `--migrate` required."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.7.0-beta.6",
|
|
3
|
+
"description": "Pennix v0.7 beta release tag isolation",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug Fixes:**\n- Beta release pushes only its newly-created tag, preventing unrelated local tags from triggering npm publish workflows.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run `npm install -g @pennixrv/trellis@beta` then `trellis update`. No `--migrate` required."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.7.0-beta.7",
|
|
3
|
+
"description": "Pennix v0.7 beta release verification normalization",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Bug Fixes:**\n- Normalize npm's single-item JSON array response during local and CI visibility verification.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run `npm install -g @pennixrv/trellis@beta` then `trellis update`. No `--migrate` required."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.7.0-beta.8",
|
|
3
|
+
"description": "Pennix v0.7 beta decision-chain replanning",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Features:**\n- Add an auditable same-task replan transition for material implementation-time decisions.\n- Preserve every planning interval in `trellis mem --phase brainstorm`.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run `npm install -g @pennixrv/trellis@beta` then `trellis update`. No `--migrate` required."
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.7.0-beta.9",
|
|
3
|
+
"description": "Pennix v0.7 beta planning and evidence governance",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**Features:**\n- Require complex analysis to use normal planning and a sealed decision chain.\n- Add evidence units and schema-v2 subnode reports with coordinator-only acceptance.",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "Run npm install -g @pennixrv/trellis@beta then trellis update. No --migrate required."
|
|
9
|
+
}
|
|
@@ -111,6 +111,13 @@ def _get_current_task_for_input(trellis_dir: Path, cc_data: dict) -> dict | None
|
|
|
111
111
|
return None
|
|
112
112
|
|
|
113
113
|
active = resolve_active_task(trellis_dir.parent, cc_data, platform="claude")
|
|
114
|
+
if active.source_type == "unbound_ambiguous":
|
|
115
|
+
return {
|
|
116
|
+
"title": f"Task binding ambiguous ({len(active.candidate_paths)} candidates)",
|
|
117
|
+
"status": "unbound_ambiguous",
|
|
118
|
+
"priority": "P?",
|
|
119
|
+
"source": active.source,
|
|
120
|
+
}
|
|
114
121
|
if not active.task_path:
|
|
115
122
|
return None
|
|
116
123
|
|
|
@@ -21,6 +21,11 @@
|
|
|
21
21
|
"type": "command",
|
|
22
22
|
"command": "{{PYTHON_CMD}} .claude/hooks/session-start.py",
|
|
23
23
|
"timeout": 30
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"type": "command",
|
|
27
|
+
"command": "{{PYTHON_CMD}} .claude/hooks/inject-spec-context.py",
|
|
28
|
+
"timeout": 30
|
|
24
29
|
}
|
|
25
30
|
]
|
|
26
31
|
},
|
|
@@ -31,6 +36,11 @@
|
|
|
31
36
|
"type": "command",
|
|
32
37
|
"command": "{{PYTHON_CMD}} .claude/hooks/session-start.py",
|
|
33
38
|
"timeout": 30
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"type": "command",
|
|
42
|
+
"command": "{{PYTHON_CMD}} .claude/hooks/inject-spec-context.py",
|
|
43
|
+
"timeout": 30
|
|
34
44
|
}
|
|
35
45
|
]
|
|
36
46
|
}
|
|
@@ -57,6 +67,18 @@
|
|
|
57
67
|
]
|
|
58
68
|
}
|
|
59
69
|
],
|
|
70
|
+
"PostToolUse": [
|
|
71
|
+
{
|
|
72
|
+
"matcher": "Read|Edit|Write|MultiEdit",
|
|
73
|
+
"hooks": [
|
|
74
|
+
{
|
|
75
|
+
"type": "command",
|
|
76
|
+
"command": "{{PYTHON_CMD}} .claude/hooks/inject-spec-context.py",
|
|
77
|
+
"timeout": 15
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
],
|
|
60
82
|
"UserPromptSubmit": [
|
|
61
83
|
{
|
|
62
84
|
"hooks": [
|
|
@@ -464,6 +464,25 @@ def _strip_breadcrumb_tag_blocks(content: str) -> str:
|
|
|
464
464
|
return re.sub(r"\n{3,}", "\n\n", stripped).strip()
|
|
465
465
|
|
|
466
466
|
|
|
467
|
+
def _resolve_workflow_md(root: Path, input_data: dict) -> Path:
|
|
468
|
+
"""Resolve the active task's workflow file, falling back to the global one.
|
|
469
|
+
|
|
470
|
+
The per-task resolution rule lives in common.workflow_selection inside
|
|
471
|
+
.trellis/scripts. Older installed projects may not ship that module, and
|
|
472
|
+
hooks must never crash the session — ANY failure (import error, old
|
|
473
|
+
scripts tree, resolver bug) falls back to the global workflow.md.
|
|
474
|
+
"""
|
|
475
|
+
try:
|
|
476
|
+
scripts_dir = root / ".trellis" / "scripts"
|
|
477
|
+
if str(scripts_dir) not in sys.path:
|
|
478
|
+
sys.path.insert(0, str(scripts_dir))
|
|
479
|
+
from common.workflow_selection import resolve_workflow_md # type: ignore[import-not-found]
|
|
480
|
+
|
|
481
|
+
return resolve_workflow_md(root, input_data, platform="codex")
|
|
482
|
+
except Exception:
|
|
483
|
+
return root / ".trellis" / "workflow.md"
|
|
484
|
+
|
|
485
|
+
|
|
467
486
|
def _build_workflow_toc(workflow_path: Path) -> str:
|
|
468
487
|
"""Inject only the compact Phase Index summary for SessionStart."""
|
|
469
488
|
content = read_file(workflow_path)
|
|
@@ -517,7 +536,7 @@ Trellis compact SessionStart context. Use it to orient the session; load details
|
|
|
517
536
|
output.write("\n</current-state>\n\n")
|
|
518
537
|
|
|
519
538
|
output.write("<trellis-workflow>\n")
|
|
520
|
-
output.write(_build_workflow_toc(
|
|
539
|
+
output.write(_build_workflow_toc(_resolve_workflow_md(project_dir, hook_input)))
|
|
521
540
|
output.write("\n</trellis-workflow>\n\n")
|
|
522
541
|
|
|
523
542
|
output.write("<guidelines>\n")
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"hooks": {
|
|
3
|
+
"SessionStart": [
|
|
4
|
+
{
|
|
5
|
+
"matcher": "^(?:clear|compact)$",
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "{{PYTHON_CMD}} -X utf8 .codex/hooks/inject-spec-context.py",
|
|
10
|
+
"timeout": 15
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
],
|
|
3
15
|
"UserPromptSubmit": [
|
|
4
16
|
{
|
|
5
17
|
"hooks": [
|
|
@@ -22,6 +34,19 @@
|
|
|
22
34
|
}
|
|
23
35
|
]
|
|
24
36
|
}
|
|
37
|
+
],
|
|
38
|
+
"PreToolUse": [
|
|
39
|
+
{
|
|
40
|
+
"matcher": "Edit|Write",
|
|
41
|
+
"hooks": [
|
|
42
|
+
{
|
|
43
|
+
"type": "command",
|
|
44
|
+
"command": "{{PYTHON_CMD}} -X utf8 .codex/hooks/inject-spec-context.py",
|
|
45
|
+
"timeout": 15,
|
|
46
|
+
"additionalContextLimit": 0
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
}
|
|
25
50
|
]
|
|
26
51
|
}
|
|
27
52
|
}
|
|
@@ -50,12 +50,15 @@ and its status; the Codex supervisor projects that reply into the durable
|
|
|
50
50
|
Channel message and `done` events. The durable JSON file carries the
|
|
51
51
|
reviewable result.
|
|
52
52
|
|
|
53
|
-
The subnode copies identity, scope, and lens from `brief.json`.
|
|
53
|
+
The subnode copies identity, scope, and lens from `brief.json`. Schema version 2
|
|
54
|
+
requires one `scope_assessment` entry for every brief scope item, structured
|
|
55
|
+
findings with evidence references, and typed uncertainties or corrections when
|
|
56
|
+
present. Schema version 1 is retired and the validator rejects it. The minimal
|
|
54
57
|
complete report is:
|
|
55
58
|
|
|
56
59
|
```json
|
|
57
60
|
{
|
|
58
|
-
"schema_version":
|
|
61
|
+
"schema_version": 2,
|
|
59
62
|
"task_id": "task-id-from-brief",
|
|
60
63
|
"work_id": "work-id-from-brief",
|
|
61
64
|
"subnode_id": "subnode-id-from-brief",
|
|
@@ -63,6 +66,14 @@ complete report is:
|
|
|
63
66
|
"status": "complete",
|
|
64
67
|
"scope": ["exact scope copied from brief"],
|
|
65
68
|
"lens": "exact lens copied from brief",
|
|
69
|
+
"scope_assessment": [
|
|
70
|
+
{
|
|
71
|
+
"scope": "exact scope item from brief",
|
|
72
|
+
"status": "covered",
|
|
73
|
+
"conclusion": "What this scope establishes.",
|
|
74
|
+
"evidence_ids": ["stable-evidence-id"]
|
|
75
|
+
}
|
|
76
|
+
],
|
|
66
77
|
"evidence": [
|
|
67
78
|
{
|
|
68
79
|
"id": "stable-evidence-id",
|
|
@@ -70,12 +81,30 @@ complete report is:
|
|
|
70
81
|
"summary": "What this independently reviewable evidence establishes."
|
|
71
82
|
}
|
|
72
83
|
],
|
|
73
|
-
"findings": [
|
|
84
|
+
"findings": [
|
|
85
|
+
{
|
|
86
|
+
"id": "finding-id",
|
|
87
|
+
"conclusion": "Bounded conclusion.",
|
|
88
|
+
"evidence_ids": ["stable-evidence-id"]
|
|
89
|
+
}
|
|
90
|
+
],
|
|
74
91
|
"uncertainties": [],
|
|
75
92
|
"corrections": []
|
|
76
93
|
}
|
|
77
94
|
```
|
|
78
95
|
|
|
96
|
+
Append a checkpoint marker to `worklog.md` when a material unit is complete or
|
|
97
|
+
blocked. It is a bounded recovery projection, not coordinator acceptance:
|
|
98
|
+
|
|
99
|
+
```text
|
|
100
|
+
<!-- trellis-checkpoint: {"id":"checkpoint-1","covered_scope":["exact scope item"],"evidence_ids":["stable-evidence-id"],"conclusion_or_blocker":"Current conclusion or blocker.","unknowns":[],"safe_resume_point":"Next safe action."} -->
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
The validator returns `review_concern` for missing or incomplete checkpoint
|
|
104
|
+
coverage and for inconclusive scope assessments so the coordinator can inspect
|
|
105
|
+
them. Identity, schema, path, and malformed-structure failures remain hard
|
|
106
|
+
errors. A concern is never automatic acceptance or rejection.
|
|
107
|
+
|
|
79
108
|
For `blocked`, `incomplete`, or `error`, include the same base fields plus a
|
|
80
109
|
`completed_scope` list (empty when no assigned scope started) and a non-empty
|
|
81
110
|
`blocker` string. Never use
|
|
@@ -12,7 +12,7 @@ Trellis v0.6 adds three architectural surfaces on top of the pre-v0.6 workflow /
|
|
|
12
12
|
The default operating scope is local files in the user project:
|
|
13
13
|
|
|
14
14
|
- `.trellis/`: workflow, config, tasks, spec, workspace, scripts, bundled runtime agents, and runtime state.
|
|
15
|
-
- Platform directories: `.claude/`, `.codex/`, `.cursor/`, `.opencode/`, `.kiro/`, `.gemini/`, `.qoder/`, `.codebuddy/`, `.github/`, `.factory/`, `.pi/`, `.reasonix/`, `.kilocode/`, `.agent/`, `.devin/`, `.kimi-code/`, and similar directories. Pi additionally exposes a native `trellis_subagent` tool with `single` / `parallel` / `chain` dispatch modes, throttled progress cards, and `isTrellisAgent()` validation on top of the file layout. Reasonix stores both workflow skills and subagent skills as `.reasonix/skills/<name>/SKILL.md`; subagent skills carry `runAs: subagent` frontmatter. Kimi Code keeps workflow skills in the shared `.agents/skills/` layer
|
|
15
|
+
- Platform directories: `.claude/`, `.codex/`, `.cursor/`, `.opencode/`, `.kiro/`, `.gemini/`, `.qoder/`, `.codebuddy/`, `.github/`, `.factory/`, `.pi/`, `.reasonix/`, `.kilocode/`, `.agent/`, `.devin/`, `.kimi-code/`, `.dsh/`, and similar directories. Pi additionally exposes a native `trellis_subagent` tool with `single` / `parallel` / `chain` dispatch modes, throttled progress cards, and `isTrellisAgent()` validation on top of the file layout. Reasonix stores both workflow skills and subagent skills as `.reasonix/skills/<name>/SKILL.md`; subagent skills carry `runAs: subagent` frontmatter. Kimi Code keeps workflow skills in the shared `.agents/skills/` layer and delivers commands plus agent prompts as `.kimi-code/skills/<name>/SKILL.md`. DeepSeek Harness keeps shared workflow skills under `.agents/skills/` and DSH-private commands plus `trellis-agent-*` role skills under `.dsh/skills/`; with the optional `dsh-trellis` plugin its continuable subagents use event-driven settlement waits, otherwise required children are dispatched in the foreground from the start.
|
|
16
16
|
- Shared skill layer: `.agents/skills/`.
|
|
17
17
|
- User-owned channel store outside the project tree: `~/.trellis/channels/<project>/<channel>/events.jsonl`.
|
|
18
18
|
- Raw platform conversation logs queryable via `trellis mem`: `~/.claude/projects/`, `~/.codex/sessions/`, and `~/.pi/agent/sessions/` (OpenCode adapter degraded for the v0.6 line).
|
|
@@ -44,7 +44,7 @@ Do not assume the user has the Trellis source repository. Do not default to modi
|
|
|
44
44
|
### Platform Files
|
|
45
45
|
|
|
46
46
|
- `references/platform-files/overview.md`: How shared `.trellis/` files relate to platform directories and the four platform integration modes (hook-driven, agent prelude, main-session workflow, channel runtime).
|
|
47
|
-
- `references/platform-files/platform-map.md`: Platform directories and paths for skills, agents, hooks, and extensions across all supported platforms including Reasonix and Pi's native `trellis_subagent` extension.
|
|
47
|
+
- `references/platform-files/platform-map.md`: Platform directories and paths for skills, agents, hooks, and extensions across all supported platforms including DeepSeek Harness, Reasonix, and Pi's native `trellis_subagent` extension.
|
|
48
48
|
- `references/platform-files/hooks-and-settings.md`: How settings/config files, hooks, plugins, and extensions connect to Trellis; covers `channel.worker_guard.*`, `channel.subnode.*`, and `codex.dispatch_mode`.
|
|
49
49
|
- `references/platform-files/agents.md`: Per-platform `trellis-research` / `trellis-implement` / `trellis-check` sub-agent files plus bundled `.trellis/agents/{check,implement}.md` for the channel runtime.
|
|
50
50
|
- `references/platform-files/skills-and-commands.md`: Differences between skills, commands, prompts, and workflows, plus how to change them.
|
|
@@ -17,6 +17,7 @@ Task lifecycle includes creation, start, context configuration, finish, archive,
|
|
|
17
17
|
| --- | --- |
|
|
18
18
|
| Automatically sync an external system after task creation | `hooks.after_create` in `.trellis/config.yaml`. |
|
|
19
19
|
| Automatically update status after task start | `hooks.after_start` in `.trellis/config.yaml`. |
|
|
20
|
+
| Return an in-progress task to planning | `hooks.after_replan` in `.trellis/config.yaml`. |
|
|
20
21
|
| Run a script after task finish | `hooks.after_finish` in `.trellis/config.yaml`. |
|
|
21
22
|
| Clean external resources after archive | `hooks.after_archive` in `.trellis/config.yaml`. |
|
|
22
23
|
| Change default task fields | `.trellis/scripts/common/task_store.py`. |
|
package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/agents.md
CHANGED
|
@@ -34,7 +34,8 @@ Agent files should not become generic chat prompts. They should define input sou
|
|
|
34
34
|
| Pi Agent | `.pi/agents/trellis-*.md` |
|
|
35
35
|
| Reasonix | `.reasonix/skills/trellis-*/SKILL.md` (subagent frontmatter) |
|
|
36
36
|
| ZCode | `.zcode/agents/trellis-*.md` |
|
|
37
|
-
| Kimi Code | `.kimi-code/
|
|
37
|
+
| Kimi Code | `.kimi-code/skills/trellis-*/SKILL.md` (agent prompts as skills, dispatched to the built-in `coder`; research needs its file-editing tools to persist findings) |
|
|
38
|
+
| DeepSeek Harness | `.dsh/skills/trellis-agent-*/SKILL.md` (role prompts as child-only skills; optional `trellis_wait` enables continuable background settlement; without it, dispatch every child with `run_in_background: false` from the outset) |
|
|
38
39
|
|
|
39
40
|
GitHub Copilot agent/prompt support is provided by a combination of directories such as `.github/agents/`, `.github/prompts/`, and `.github/skills/`; inspect the files actually generated in the user project.
|
|
40
41
|
|
|
@@ -19,7 +19,7 @@ Common files:
|
|
|
19
19
|
| Claude Code | `.claude/settings.json` |
|
|
20
20
|
| Cursor | `.cursor/hooks.json` |
|
|
21
21
|
| Codex | `.codex/hooks.json`, `.codex/config.toml` |
|
|
22
|
-
| OpenCode | `.opencode/package.json`, `.opencode/plugins
|
|
22
|
+
| OpenCode | `.opencode/package.json`, `.opencode/plugins/*`, `.opencode/hooks/inject-spec-context.py` |
|
|
23
23
|
| Kiro | `.kiro/hooks/` + platform config |
|
|
24
24
|
| Gemini CLI | `.gemini/settings.json` |
|
|
25
25
|
| Qoder | `.qoder/settings.json` |
|
|
@@ -29,7 +29,7 @@ Common files:
|
|
|
29
29
|
| Pi Agent | `.pi/settings.json`, `.pi/extensions/trellis/` |
|
|
30
30
|
| Trae IDE | `.trae/hooks.json` |
|
|
31
31
|
|
|
32
|
-
Reasonix is a pull-based platform whose agent files contain prelude instructions to read context after startup. ZCode uses `.zcode/config.json` with shared hooks, including PreToolUse for sub-agent prompt injection. Kimi Code is likewise pull-based and has no project-level settings/hooks file Trellis writes (hooks live only in the user-level `~/.kimi-code/config.toml`), so its agent prompts ship as skills
|
|
32
|
+
Reasonix is a pull-based platform whose agent files contain prelude instructions to read context after startup. ZCode uses `.zcode/config.json` with shared hooks, including PreToolUse for sub-agent prompt injection. Kimi Code is likewise pull-based and has no project-level settings/hooks file Trellis writes (hooks live only in the user-level `~/.kimi-code/config.toml`), so its agent prompts ship as skills with the same prelude. DeepSeek Harness also has no project-level hook/settings surface Trellis writes; the optional `dsh-trellis` profile plugin supplies per-turn breadcrumbs and event-driven `trellis_wait`, while DSH role skills pull task context in both plugin and no-plugin paths.
|
|
33
33
|
|
|
34
34
|
Whether these files exist in a project depends on which `trellis init --<platform>` flags the user ran.
|
|
35
35
|
|
|
@@ -40,6 +40,7 @@ Whether these files exist in a project depends on which `trellis init --<platfor
|
|
|
40
40
|
| `session-start.py` | Generates session-start context. |
|
|
41
41
|
| `inject-workflow-state.py` | Parses `[workflow-state:STATUS]` blocks in `.trellis/workflow.md` and emits the body matching the current task status. Falls back to `Refer to workflow.md for current step.` when no matching block exists. |
|
|
42
42
|
| `inject-subagent-context.py` | Injects PRD, JSONL context, and related spec/research into sub-agents. |
|
|
43
|
+
| `inject-spec-context.py` | Matches path-scoped specs and manages budgeted delivery state. |
|
|
43
44
|
| `inject-shell-session-context.py` | Lets shell commands inherit Trellis session identity. |
|
|
44
45
|
|
|
45
46
|
Not every platform has every hook. Do not copy files from another platform just because a platform lacks a hook; first confirm whether that platform supports the corresponding event.
|