@pennixrv/trellis 0.7.0-beta.5 → 0.7.0-beta.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/dist/cli/index.d.ts.map +1 -1
  2. package/dist/cli/index.js +47 -3
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/commands/backup.d.ts +25 -0
  5. package/dist/commands/backup.d.ts.map +1 -0
  6. package/dist/commands/backup.js +152 -0
  7. package/dist/commands/backup.js.map +1 -0
  8. package/dist/commands/channel/adapters/claude.d.ts.map +1 -1
  9. package/dist/commands/channel/adapters/claude.js +2 -0
  10. package/dist/commands/channel/adapters/claude.js.map +1 -1
  11. package/dist/commands/channel/adapters/codex.d.ts +5 -1
  12. package/dist/commands/channel/adapters/codex.d.ts.map +1 -1
  13. package/dist/commands/channel/adapters/codex.js +19 -9
  14. package/dist/commands/channel/adapters/codex.js.map +1 -1
  15. package/dist/commands/channel/adapters/index.d.ts +3 -0
  16. package/dist/commands/channel/adapters/index.d.ts.map +1 -1
  17. package/dist/commands/channel/adapters/index.js +3 -3
  18. package/dist/commands/channel/adapters/index.js.map +1 -1
  19. package/dist/commands/channel/adapters/types.d.ts +2 -0
  20. package/dist/commands/channel/adapters/types.d.ts.map +1 -1
  21. package/dist/commands/channel/guard.d.ts.map +1 -1
  22. package/dist/commands/channel/guard.js +38 -29
  23. package/dist/commands/channel/guard.js.map +1 -1
  24. package/dist/commands/channel/index.d.ts.map +1 -1
  25. package/dist/commands/channel/index.js +52 -16
  26. package/dist/commands/channel/index.js.map +1 -1
  27. package/dist/commands/channel/kill.d.ts.map +1 -1
  28. package/dist/commands/channel/kill.js +37 -15
  29. package/dist/commands/channel/kill.js.map +1 -1
  30. package/dist/commands/channel/messages.d.ts.map +1 -1
  31. package/dist/commands/channel/messages.js +3 -2
  32. package/dist/commands/channel/messages.js.map +1 -1
  33. package/dist/commands/channel/process-identity.d.ts +3 -0
  34. package/dist/commands/channel/process-identity.d.ts.map +1 -0
  35. package/dist/commands/channel/process-identity.js +24 -0
  36. package/dist/commands/channel/process-identity.js.map +1 -0
  37. package/dist/commands/channel/profiles.d.ts +26 -0
  38. package/dist/commands/channel/profiles.d.ts.map +1 -0
  39. package/dist/commands/channel/profiles.js +186 -0
  40. package/dist/commands/channel/profiles.js.map +1 -0
  41. package/dist/commands/channel/rm.d.ts +0 -1
  42. package/dist/commands/channel/rm.d.ts.map +1 -1
  43. package/dist/commands/channel/rm.js +203 -96
  44. package/dist/commands/channel/rm.js.map +1 -1
  45. package/dist/commands/channel/spawn.d.ts +3 -0
  46. package/dist/commands/channel/spawn.d.ts.map +1 -1
  47. package/dist/commands/channel/spawn.js +43 -15
  48. package/dist/commands/channel/spawn.js.map +1 -1
  49. package/dist/commands/channel/supervisor/idle.d.ts +2 -0
  50. package/dist/commands/channel/supervisor/idle.d.ts.map +1 -1
  51. package/dist/commands/channel/supervisor/idle.js +15 -7
  52. package/dist/commands/channel/supervisor/idle.js.map +1 -1
  53. package/dist/commands/channel/supervisor/inbox.d.ts.map +1 -1
  54. package/dist/commands/channel/supervisor/inbox.js +48 -33
  55. package/dist/commands/channel/supervisor/inbox.js.map +1 -1
  56. package/dist/commands/channel/supervisor/stdout.d.ts.map +1 -1
  57. package/dist/commands/channel/supervisor/stdout.js +6 -3
  58. package/dist/commands/channel/supervisor/stdout.js.map +1 -1
  59. package/dist/commands/channel/supervisor/warning.d.ts.map +1 -1
  60. package/dist/commands/channel/supervisor/warning.js +2 -3
  61. package/dist/commands/channel/supervisor/warning.js.map +1 -1
  62. package/dist/commands/channel/supervisor.d.ts +12 -0
  63. package/dist/commands/channel/supervisor.d.ts.map +1 -1
  64. package/dist/commands/channel/supervisor.js +88 -16
  65. package/dist/commands/channel/supervisor.js.map +1 -1
  66. package/dist/commands/channel/wait.d.ts +3 -1
  67. package/dist/commands/channel/wait.d.ts.map +1 -1
  68. package/dist/commands/channel/wait.js +59 -14
  69. package/dist/commands/channel/wait.js.map +1 -1
  70. package/dist/commands/init.d.ts.map +1 -1
  71. package/dist/commands/init.js +23 -10
  72. package/dist/commands/init.js.map +1 -1
  73. package/dist/commands/update.d.ts.map +1 -1
  74. package/dist/commands/update.js +446 -333
  75. package/dist/commands/update.js.map +1 -1
  76. package/dist/commands/workflow.d.ts +1 -0
  77. package/dist/commands/workflow.d.ts.map +1 -1
  78. package/dist/commands/workflow.js +56 -1
  79. package/dist/commands/workflow.js.map +1 -1
  80. package/dist/configurators/codex.d.ts +6 -0
  81. package/dist/configurators/codex.d.ts.map +1 -1
  82. package/dist/configurators/codex.js +93 -0
  83. package/dist/configurators/codex.js.map +1 -1
  84. package/dist/configurators/shared.js +2 -2
  85. package/dist/configurators/shared.js.map +1 -1
  86. package/dist/constants/paths.d.ts +2 -0
  87. package/dist/constants/paths.d.ts.map +1 -1
  88. package/dist/constants/paths.js +2 -0
  89. package/dist/constants/paths.js.map +1 -1
  90. package/dist/migrations/manifests/0.7.0-beta.10.json +9 -0
  91. package/dist/migrations/manifests/0.7.0-beta.11.json +9 -0
  92. package/dist/migrations/manifests/0.7.0-beta.12.json +9 -0
  93. package/dist/migrations/manifests/0.7.0-beta.13.json +9 -0
  94. package/dist/migrations/manifests/0.7.0-beta.14.json +9 -0
  95. package/dist/migrations/manifests/0.7.0-beta.15.json +9 -0
  96. package/dist/migrations/manifests/0.7.0-beta.16.json +9 -0
  97. package/dist/migrations/manifests/0.7.0-beta.17.json +9 -0
  98. package/dist/migrations/manifests/0.7.0-beta.18.json +9 -0
  99. package/dist/migrations/manifests/0.7.0-beta.19.json +9 -0
  100. package/dist/migrations/manifests/0.7.0-beta.20.json +9 -0
  101. package/dist/migrations/manifests/0.7.0-beta.21.json +17 -0
  102. package/dist/migrations/manifests/0.7.0-beta.22.json +9 -0
  103. package/dist/migrations/manifests/0.7.0-beta.23.json +9 -0
  104. package/dist/migrations/manifests/0.7.0-beta.24.json +9 -0
  105. package/dist/migrations/manifests/0.7.0-beta.25.json +9 -0
  106. package/dist/migrations/manifests/0.7.0-beta.26.json +9 -0
  107. package/dist/migrations/manifests/0.7.0-beta.27.json +9 -0
  108. package/dist/migrations/manifests/0.7.0-beta.28.json +9 -0
  109. package/dist/migrations/manifests/0.7.0-beta.29.json +9 -0
  110. package/dist/migrations/manifests/0.7.0-beta.30.json +9 -0
  111. package/dist/migrations/manifests/0.7.0-beta.31.json +9 -0
  112. package/dist/migrations/manifests/0.7.0-beta.32.json +9 -0
  113. package/dist/migrations/manifests/0.7.0-beta.33.json +9 -0
  114. package/dist/migrations/manifests/0.7.0-beta.34.json +9 -0
  115. package/dist/migrations/manifests/0.7.0-beta.35.json +9 -0
  116. package/dist/migrations/manifests/0.7.0-beta.36.json +9 -0
  117. package/dist/migrations/manifests/0.7.0-beta.37.json +9 -0
  118. package/dist/migrations/manifests/0.7.0-beta.38.json +9 -0
  119. package/dist/migrations/manifests/0.7.0-beta.39.json +9 -0
  120. package/dist/migrations/manifests/0.7.0-beta.40.json +9 -0
  121. package/dist/migrations/manifests/0.7.0-beta.41.json +9 -0
  122. package/dist/migrations/manifests/0.7.0-beta.42.json +9 -0
  123. package/dist/migrations/manifests/0.7.0-beta.43.json +9 -0
  124. package/dist/migrations/manifests/0.7.0-beta.44.json +9 -0
  125. package/dist/migrations/manifests/0.7.0-beta.45.json +9 -0
  126. package/dist/migrations/manifests/0.7.0-beta.46.json +9 -0
  127. package/dist/migrations/manifests/0.7.0-beta.47.json +9 -0
  128. package/dist/migrations/manifests/0.7.0-beta.48.json +9 -0
  129. package/dist/migrations/manifests/0.7.0-beta.49.json +13 -0
  130. package/dist/migrations/manifests/0.7.0-beta.50.json +12 -0
  131. package/dist/migrations/manifests/0.7.0-beta.6.json +9 -0
  132. package/dist/migrations/manifests/0.7.0-beta.7.json +9 -0
  133. package/dist/migrations/manifests/0.7.0-beta.8.json +9 -0
  134. package/dist/migrations/manifests/0.7.0-beta.9.json +9 -0
  135. package/dist/templates/codex/hooks/session-start.py +21 -17
  136. package/dist/templates/common/bundled-skills/trellis-channel/SKILL.md +3 -1
  137. package/dist/templates/common/bundled-skills/trellis-channel/references/command-reference.md +24 -16
  138. package/dist/templates/common/bundled-skills/trellis-channel/references/forum.md +4 -12
  139. package/dist/templates/common/bundled-skills/trellis-channel/references/multi-target-dispatch.md +139 -0
  140. package/dist/templates/common/bundled-skills/trellis-channel/references/progress-debugging.md +9 -5
  141. package/dist/templates/common/bundled-skills/trellis-channel/references/subnode-work.md +84 -14
  142. package/dist/templates/common/bundled-skills/trellis-channel/references/workers.md +9 -11
  143. package/dist/templates/common/bundled-skills/trellis-channel/references/workflows.md +25 -14
  144. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-skills-or-commands.md +13 -11
  145. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-task-lifecycle.md +7 -2
  146. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/task-system.md +6 -1
  147. package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workflow.md +6 -4
  148. package/dist/templates/common/bundled-skills/trellis-session-insight/SKILL.md +42 -3
  149. package/dist/templates/common/bundled-skills/trellis-session-insight/references/cli-quick-reference.md +1 -1
  150. package/dist/templates/common/bundled-skills/trellis-session-insight/references/triggering-patterns.md +10 -2
  151. package/dist/templates/common/commands/continue.md +36 -8
  152. package/dist/templates/common/commands/finish-work.md +17 -2
  153. package/dist/templates/common/commands/start.md +8 -1
  154. package/dist/templates/common/skills/brainstorm.md +49 -22
  155. package/dist/templates/common/skills/break-loop.md +6 -10
  156. package/dist/templates/common/skills/check.md +34 -5
  157. package/dist/templates/copilot/hooks/session-start.py +19 -15
  158. package/dist/templates/copilot/prompts/brainstorm.prompt.md +27 -21
  159. package/dist/templates/markdown/spec/backend/database-guidelines.md.txt +22 -22
  160. package/dist/templates/markdown/spec/backend/directory-structure.md.txt +20 -20
  161. package/dist/templates/markdown/spec/backend/error-handling.md.txt +22 -22
  162. package/dist/templates/markdown/spec/backend/index.md.txt +19 -19
  163. package/dist/templates/markdown/spec/backend/logging-guidelines.md.txt +22 -22
  164. package/dist/templates/markdown/spec/backend/quality-guidelines.md.txt +22 -22
  165. package/dist/templates/markdown/spec/frontend/component-guidelines.md.txt +25 -25
  166. package/dist/templates/markdown/spec/frontend/directory-structure.md.txt +20 -20
  167. package/dist/templates/markdown/spec/frontend/hook-guidelines.md.txt +22 -22
  168. package/dist/templates/markdown/spec/frontend/index.md.txt +20 -20
  169. package/dist/templates/markdown/spec/frontend/quality-guidelines.md.txt +22 -22
  170. package/dist/templates/markdown/spec/frontend/state-management.md.txt +22 -22
  171. package/dist/templates/markdown/spec/frontend/type-safety.md.txt +22 -22
  172. package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md.txt +80 -85
  173. package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +164 -209
  174. package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +161 -185
  175. package/dist/templates/markdown/spec/guides/index.md.txt +51 -51
  176. package/dist/templates/markdown/workspace-index.md +44 -44
  177. package/dist/templates/opencode/lib/session-utils.js +2 -2
  178. package/dist/templates/shared-hooks/inject-shell-session-context.py +3 -6
  179. package/dist/templates/shared-hooks/inject-workflow-state.py +3 -2
  180. package/dist/templates/shared-hooks/session-start.py +23 -18
  181. package/dist/templates/trellis/agents/subnode-profiles.json +13 -0
  182. package/dist/templates/trellis/agents/subnode.md +11 -5
  183. package/dist/templates/trellis/config.yaml +2 -0
  184. package/dist/templates/trellis/index.d.ts +2 -1
  185. package/dist/templates/trellis/index.d.ts.map +1 -1
  186. package/dist/templates/trellis/index.js +4 -2
  187. package/dist/templates/trellis/index.js.map +1 -1
  188. package/dist/templates/trellis/scripts/add_session.py +35 -32
  189. package/dist/templates/trellis/scripts/common/active_task.py +8 -8
  190. package/dist/templates/trellis/scripts/common/developer.py +18 -18
  191. package/dist/templates/trellis/scripts/common/ownership_record.py +13 -8
  192. package/dist/templates/trellis/scripts/common/safe_commit.py +38 -9
  193. package/dist/templates/trellis/scripts/common/task_planning.py +137 -0
  194. package/dist/templates/trellis/scripts/common/task_store.py +46 -14
  195. package/dist/templates/trellis/scripts/common/workflow_phase.py +4 -3
  196. package/dist/templates/trellis/scripts/subnode_artifact.py +470 -21
  197. package/dist/templates/trellis/scripts/task.py +175 -2
  198. package/dist/templates/trellis/workflow.md +407 -388
  199. package/dist/utils/managed-paths.d.ts +2 -0
  200. package/dist/utils/managed-paths.d.ts.map +1 -1
  201. package/dist/utils/managed-paths.js +24 -2
  202. package/dist/utils/managed-paths.js.map +1 -1
  203. package/dist/utils/template-fetcher.d.ts +1 -0
  204. package/dist/utils/template-fetcher.d.ts.map +1 -1
  205. package/dist/utils/template-fetcher.js +2 -1
  206. package/dist/utils/template-fetcher.js.map +1 -1
  207. package/dist/utils/uninstall-scrubbers.d.ts.map +1 -1
  208. package/dist/utils/uninstall-scrubbers.js +5 -0
  209. package/dist/utils/uninstall-scrubbers.js.map +1 -1
  210. package/dist/utils/workflow-provenance.d.ts +24 -0
  211. package/dist/utils/workflow-provenance.d.ts.map +1 -0
  212. package/dist/utils/workflow-provenance.js +71 -0
  213. package/dist/utils/workflow-provenance.js.map +1 -0
  214. package/dist/utils/workflow-resolver.d.ts +9 -2
  215. package/dist/utils/workflow-resolver.d.ts.map +1 -1
  216. package/dist/utils/workflow-resolver.js +33 -7
  217. package/dist/utils/workflow-resolver.js.map +1 -1
  218. package/package.json +2 -2
  219. package/dist/templates/trellis/agents/subnode.env +0 -4
@@ -1,97 +1,97 @@
1
- # Thinking Guides
1
+ # 思考指南(Thinking Guides)
2
2
 
3
- > **Purpose**: Expand your thinking to catch things you might not have considered.
3
+ > **目的(Purpose)**:扩展思考,发现可能遗漏的因素。
4
4
 
5
5
  ---
6
6
 
7
- ## Why Thinking Guides?
7
+ ## 为什么需要思考指南(Why Thinking Guides?)
8
8
 
9
- **Most bugs and tech debt come from "didn't think of that"**, not from lack of skill:
9
+ **大多数错误和技术债务来自“没有想到”,而不是能力不足:**
10
10
 
11
- - Didn't think about what happens at layer boundaries → cross-layer bugs
12
- - Didn't think about code patterns repeating → duplicated code everywhere
13
- - Didn't think about edge cases → runtime errors
14
- - Didn't think about future maintainers → unreadable code
11
+ - 没有思考层边界会发生什么 → 出现跨层错误
12
+ - 没有注意代码模式重复 → 到处产生重复代码
13
+ - 没有考虑边界情况 → 出现运行时错误
14
+ - 没有考虑未来维护者 → 代码难以阅读
15
15
 
16
- These guides help you **ask the right questions before coding**.
16
+ 这些指南帮助你在编码前**提出正确的问题**。
17
17
 
18
18
  ---
19
19
 
20
- ## Available Guides
20
+ ## 可用指南(Available Guides)
21
21
 
22
- | Guide | Purpose | When to Use |
22
+ | 指南(Guide) | 目的(Purpose) | 使用时机(When to Use) |
23
23
  |-------|---------|-------------|
24
- | [Code Reuse Thinking Guide](./code-reuse-thinking-guide.md) | Identify patterns and reduce duplication | When you notice repeated patterns |
25
- | [Cross-Layer Thinking Guide](./cross-layer-thinking-guide.md) | Think through data flow across layers | Features spanning multiple layers |
24
+ | [代码复用思考指南(Code Reuse Thinking Guide)](./code-reuse-thinking-guide.md) | 识别模式并减少重复 | 发现重复模式时 |
25
+ | [跨层思考指南(Cross-Layer Thinking Guide)](./cross-layer-thinking-guide.md) | 梳理跨层数据流 | 功能跨越多个层时 |
26
26
 
27
27
  ---
28
28
 
29
- ## Quick Reference: Thinking Triggers
29
+ ## 快速参考:思考触发条件(Quick Reference: Thinking Triggers)
30
30
 
31
- ### When to Think About Cross-Layer Issues
31
+ ### 何时思考跨层问题(When to Think About Cross-Layer Issues)
32
32
 
33
- - [ ] Feature touches 3+ layers (API, Service, Component, Database)
34
- - [ ] Data format changes between layers
35
- - [ ] Multiple consumers need the same data
36
- - [ ] You're not sure where to put some logic
37
- - [ ] You are adding an event kind, JSONL record, RPC payload, or config field
38
- - [ ] UI / command code starts casting raw payload fields directly
33
+ - [ ] 功能涉及三个或更多层(API、Service、Component、Database)
34
+ - [ ] 数据格式在层之间发生变化
35
+ - [ ] 多个消费者需要同一份数据
36
+ - [ ] 不确定某段逻辑应放在哪里
37
+ - [ ] 正在增加事件类型、JSONL 记录、RPC 载荷或配置字段
38
+ - [ ] UI/命令代码开始直接断言原始载荷字段
39
39
 
40
- → Read [Cross-Layer Thinking Guide](./cross-layer-thinking-guide.md)
40
+ → 阅读 [跨层思考指南(Cross-Layer Thinking Guide)](./cross-layer-thinking-guide.md)
41
41
 
42
- ### When to Think About Code Reuse
42
+ ### 何时思考代码复用(When to Think About Code Reuse)
43
43
 
44
- - [ ] You're writing similar code to something that exists
45
- - [ ] You see the same pattern repeated 3+ times
46
- - [ ] You're adding a new field to multiple places
47
- - [ ] **You're modifying any constant or config**
48
- - [ ] **You're creating a new utility/helper function** ← Search first!
49
- - [ ] Two files read the same untyped payload field with local casts
50
- - [ ] Multiple branches update the same derived state from `kind` / `action`
44
+ - [ ] 正在编写与已有代码相似的代码
45
+ - [ ] 看到同一模式重复三次或更多
46
+ - [ ] 正在多个位置增加新字段
47
+ - [ ] **正在修改任意常量或配置**
48
+ - [ ] **正在创建新的工具/辅助函数** ← 先搜索!
49
+ - [ ] 两个文件使用本地断言读取同一个无类型载荷字段
50
+ - [ ] 多个分支根据 `kind` / `action` 更新同一派生状态
51
51
 
52
- → Read [Code Reuse Thinking Guide](./code-reuse-thinking-guide.md)
52
+ → 阅读 [代码复用思考指南(Code Reuse Thinking Guide)](./code-reuse-thinking-guide.md)
53
53
 
54
- ### When Verifying AI Cross-Review Results
54
+ ### 核验 AI 交叉审查结果时(When Verifying AI Cross-Review Results)
55
55
 
56
- - [ ] Reviewer claims "user input can be malicious" → Check the actual data source (internal manifest? user config? external API?)
57
- - [ ] Reviewer flags "missing validation" → Is the data from a trusted internal source?
58
- - [ ] Reviewer says "behavior change" → Read the code comments — is it intentional design?
59
- - [ ] Reviewer identifies a "bug" in test → Mentally delete the feature being tested — does the test still pass? If yes → tautological test
56
+ - [ ] 审查者声称“用户输入可能恶意” → 检查实际数据来源(内部 manifest?用户配置?外部 API?)
57
+ - [ ] 审查者指出“缺少校验” → 数据是否来自可信内部来源?
58
+ - [ ] 审查者说“行为发生变化” → 阅读代码注释,确认是否属于有意设计。
59
+ - [ ] 审查者在测试中指出“错误” → 在脑中删除被测功能,测试是否仍然通过?如果是 → 这是同义反复测试
60
60
 
61
- **Common AI reviewer false-positive patterns**:
62
- 1. **Trust boundary confusion**: Treating internal data (bundled JSON manifests) as untrusted external input
63
- 2. **Ignoring design comments**: Flagging intentional behavior documented in code comments as bugs
64
- 3. **Variable misreading**: Not tracing a variable to its actual definition (e.g., Map keyed by path vs name)
61
+ **AI 审查者常见的误报模式**:
62
+ 1. **信任边界混淆**:将内部数据(打包的 JSON manifest)当作不可信外部输入
63
+ 2. **忽略设计注释**:将代码注释中记录的有意行为标记为错误
64
+ 3. **误读变量**:不追踪变量的实际定义(例如 Map 以路径而不是名称为键)
65
65
 
66
- **Verification rule**: Every CRITICAL/WARNING finding must be verified against the actual code before prioritizing. Budget ~35% false-positive rate for AI reviews.
66
+ **核验规则**:每个 CRITICAL/WARNING 发现都必须对照实际代码核验后再排序。
67
67
 
68
68
  ---
69
69
 
70
- ## Pre-Modification Rule (CRITICAL)
70
+ ## 修改前规则(Pre-Modification Rule,CRITICAL)
71
71
 
72
- > **Before changing ANY value, ALWAYS search first!**
72
+ > **修改任何值之前,始终先搜索!**
73
73
 
74
74
  ```bash
75
75
  # Search for the value you're about to change
76
76
  grep -r "value_to_change" .
77
77
  ```
78
78
 
79
- This single habit prevents most "forgot to update X" bugs.
79
+ 这一习惯可以预防大多数“忘记更新 X”的错误。
80
80
 
81
81
  ---
82
82
 
83
- ## How to Use This Directory
83
+ ## 如何使用本目录(How to Use This Directory)
84
84
 
85
- 1. **Before coding**: Skim the relevant thinking guide
86
- 2. **During coding**: If something feels repetitive or complex, check the guides
87
- 3. **After bugs**: Add new insights to the relevant guide (learn from mistakes)
85
+ 1. **编码前**:浏览相关思考指南
86
+ 2. **编码中**:如果某处感觉重复或复杂,查阅这些指南
87
+ 3. **出现错误后**:将新经验加入相关指南,从错误中学习
88
88
 
89
89
  ---
90
90
 
91
- ## Contributing
91
+ ## 贡献(Contributing)
92
92
 
93
- Found a new "didn't think of that" moment? Add it to the relevant guide.
93
+ 发现新的“没有想到”时刻?将它加入相关指南。
94
94
 
95
95
  ---
96
96
 
97
- **Core Principle**: 30 minutes of thinking saves 3 hours of debugging.
97
+ **核心原则(Core Principle)**:30 分钟的思考可以节省 3 小时的调试时间。
@@ -1,14 +1,14 @@
1
- # Workspace Index
1
+ # 工作区索引(Workspace Index)
2
2
 
3
- > Records of all AI Agent work records across all developers
3
+ > 记录所有开发者的 AI Agent 工作记录。
4
4
 
5
5
  ---
6
6
 
7
- ## Overview
7
+ ## 概览(Overview)
8
8
 
9
- This directory tracks records for all developers working with AI Agents on this project.
9
+ 本目录跟踪本项目所有使用 AI Agent 的开发者记录。
10
10
 
11
- ### File Structure
11
+ ### 文件结构(File Structure)
12
12
 
13
13
  ```
14
14
  workspace/
@@ -23,98 +23,98 @@ workspace/
23
23
 
24
24
  ---
25
25
 
26
- ## Active Developers
26
+ ## 活跃开发者(Active Developers)
27
27
 
28
- | Developer | Last Active | Sessions | Active File |
28
+ | 开发者(Developer) | 最近活动(Last Active) | 会话(Sessions) | 活动文件(Active File) |
29
29
  |-----------|-------------|----------|-------------|
30
- | (none yet) | - | - | - |
30
+ | (暂无) | - | - | - |
31
31
 
32
32
  ---
33
33
 
34
- ## Getting Started
34
+ ## 开始使用(Getting Started)
35
35
 
36
- ### For New Developers
36
+ ### 新开发者(For New Developers)
37
37
 
38
- Run the initialization script:
38
+ 运行初始化脚本:
39
39
 
40
40
  ```bash
41
41
  python3 ./.trellis/scripts/init_developer.py <your-name>
42
42
  ```
43
43
 
44
- This will:
45
- 1. Create your identity file (gitignored)
46
- 2. Create your progress directory
47
- 3. Create your personal index
48
- 4. Create initial journal file
44
+ 此命令将:
45
+ 1. 创建身份文件(由 git 忽略)
46
+ 2. 创建进度目录
47
+ 3. 创建个人索引
48
+ 4. 创建初始日志文件
49
49
 
50
- ### For Returning Developers
50
+ ### 已有开发者(For Returning Developers)
51
51
 
52
- 1. Get your developer name:
52
+ 1. 获取开发者名称:
53
53
  ```bash
54
54
  python3 ./.trellis/scripts/get_developer.py
55
55
  ```
56
56
 
57
- 2. Read your personal index:
57
+ 2. 阅读个人索引:
58
58
  ```bash
59
59
  cat .trellis/workspace/$(python3 ./.trellis/scripts/get_developer.py)/index.md
60
60
  ```
61
61
 
62
62
  ---
63
63
 
64
- ## Guidelines
64
+ ## 指南(Guidelines)
65
65
 
66
- ### Journal File Rules
66
+ ### 日志文件规则(Journal File Rules)
67
67
 
68
- - **Max 2000 lines** per journal file
69
- - When limit is reached, create `journal-{N+1}.md`
70
- - Update your personal `index.md` when creating new files
68
+ - 每个日志文件最多 **2000 行**
69
+ - 达到上限后创建 `journal-{N+1}.md`
70
+ - 创建新文件时更新个人 `index.md`
71
71
 
72
- ### Session Record Format
72
+ ### 会话记录格式(Session Record Format)
73
73
 
74
- Each session should include:
75
- - Summary: One-line description
76
- - Branch: Which branch the work was done on
77
- - Main Changes: What was modified
78
- - Git Commits: Commit hashes and messages
79
- - Next Steps: What to do next
74
+ 每个会话应包含:
75
+ - 摘要(Summary):一行描述
76
+ - 分支(Branch):工作的分支
77
+ - 主要变更(Main Changes):修改内容
78
+ - Git 提交(Git Commits):提交哈希和消息
79
+ - 下一步(Next Steps):后续工作
80
80
 
81
81
  ---
82
82
 
83
- ## Session Template
83
+ ## 会话模板(Session Template)
84
84
 
85
- Use this template when recording sessions:
85
+ 记录会话时使用以下模板:
86
86
 
87
87
  ```markdown
88
- ## Session {N}: {Title}
88
+ ## 会话(Session) {N}:{Title}
89
89
 
90
- **Date**: YYYY-MM-DD
91
- **Task**: {task-name}
92
- **Branch**: `{branch-name}`
90
+ **日期(Date)**: YYYY-MM-DD
91
+ **任务(Task)**: {task-name}
92
+ **分支(Branch)**: `{branch-name}`
93
93
 
94
- ### Summary
94
+ ### 摘要(Summary)
95
95
 
96
96
  {One-line summary}
97
97
 
98
- ### Main Changes
98
+ ### 主要变更(Main Changes)
99
99
 
100
100
  - {Change 1}
101
101
  - {Change 2}
102
102
 
103
- ### Git Commits
103
+ ### Git 提交(Git Commits)
104
104
 
105
105
  | Hash | Message |
106
106
  |------|---------|
107
107
  | `abc1234` | {commit message} |
108
108
 
109
- ### Testing
109
+ ### 测试(Testing)
110
110
 
111
111
  - [OK] {Test result}
112
112
 
113
- ### Status
113
+ ### 状态(Status)
114
114
 
115
115
  [OK] **Completed** / # **In Progress** / [P] **Blocked**
116
116
 
117
- ### Next Steps
117
+ ### 下一步(Next Steps)
118
118
 
119
119
  - {Next step 1}
120
120
  - {Next step 2}
@@ -122,4 +122,4 @@ Use this template when recording sessions:
122
122
 
123
123
  ---
124
124
 
125
- **Language**: All documentation must be written in **English**.
125
+ **语言(Language)**:所有文档默认使用**简体中文**。
@@ -402,9 +402,9 @@ Trellis compact SessionStart context. Use it to orient the session; load details
402
402
  let rangeEnd = allLines.length
403
403
  for (let i = 0; i < allLines.length; i++) {
404
404
  const stripped = allLines[i].trim()
405
- if (rangeStart === -1 && stripped === "## Phase Index") {
405
+ if (rangeStart === -1 && (stripped === "## 阶段索引(Phase Index)" || stripped === "## Phase Index")) {
406
406
  rangeStart = i
407
- } else if (rangeStart !== -1 && stripped === "## Phase 1: Plan") {
407
+ } else if (rangeStart !== -1 && (stripped === "## 阶段一:规划(Phase 1: Plan)" || stripped === "## Phase 1: Plan")) {
408
408
  rangeEnd = i
409
409
  break
410
410
  }
@@ -4,7 +4,7 @@
4
4
  No researched platform exports a session id into its shell tool's child
5
5
  process, but every hook-capable one puts that id on hook stdin. So the hook
6
6
  that fires just before a shell command writes a short-lived runtime ticket
7
- whenever the pending command calls `task.py start/current/finish`, and the
7
+ whenever the pending command calls `task.py start/replan/current/finish`, and the
8
8
  task script consumes it when it has no native session environment.
9
9
 
10
10
  Registered on whichever pre-shell event the host provides — Cursor's
@@ -35,7 +35,7 @@ if callable(_stdin_reconfigure):
35
35
  DIR_WORKFLOW = ".trellis"
36
36
  DIR_RUNTIME = ".runtime"
37
37
  DIR_SHELL_TICKETS = "shell-tickets"
38
- SESSION_SUBCOMMANDS = {"start", "current", "finish"}
38
+ SESSION_SUBCOMMANDS = {"start", "replan", "current", "finish"}
39
39
  TICKET_TTL_SECONDS = 30
40
40
  CONTEXT_IDENTITY_KEYS = (
41
41
  "session_id",
@@ -177,7 +177,7 @@ def _extract_task_subcommands(command: str) -> list[dict[str, str]]:
177
177
  if name not in SESSION_SUBCOMMANDS:
178
178
  continue
179
179
  item = {"name": name}
180
- if name == "start" and index + 2 < len(tokens):
180
+ if name in {"start", "replan"} and index + 2 < len(tokens):
181
181
  item["task_ref"] = tokens[index + 2]
182
182
  subcommands.append(item)
183
183
  return subcommands
@@ -236,9 +236,6 @@ def _write_ticket(
236
236
  # the root we actually resolved keeps the containment check meaningful
237
237
  # without trusting a field the host may not populate.
238
238
  "cwd": str(root),
239
- # Kept separately so a wrong host cwd stays visible when debugging.
240
- "host_cwd": _string_value(hook_input.get("cwd")),
241
- "command": command,
242
239
  "subcommands": subcommands,
243
240
  "created_at_epoch": now,
244
241
  "expires_at_epoch": now + TICKET_TTL_SECONDS,
@@ -74,7 +74,7 @@ from typing import Optional
74
74
  # get the full SessionStart overview; this short reminder points the main session
75
75
  # at the start skill once and leaves the per-turn state block compact.
76
76
  CODEX_NO_TASK_BOOTSTRAP_NOTICE = """<trellis-bootstrap>
77
- If you have not already loaded Trellis context this session, read the `trellis-start` skill once.
77
+ If Trellis project context is missing, read the `trellis-start` skill once. Current context or a sufficient compaction summary counts as loaded; an ordinary continue resumes its pending action without restarting.
78
78
  </trellis-bootstrap>"""
79
79
 
80
80
 
@@ -363,7 +363,8 @@ def _codex_mode_banner(config: dict) -> str:
363
363
  else:
364
364
  meaning = (
365
365
  "inline: the main session implements/checks directly; "
366
- "do not dispatch implement/check sub-agents."
366
+ "do not dispatch implement/check sub-agents. Explicit Channel independent-evidence "
367
+ "subnodes follow the selected project workflow and remain available in inline mode."
367
368
  )
368
369
  return f"<codex-mode>{meaning}</codex-mode>"
369
370
 
@@ -429,8 +429,8 @@ def _get_task_status(trellis_dir: Path, input_data: dict) -> str:
429
429
  return (
430
430
  "Status: NO ACTIVE TASK\n"
431
431
  "Next-Action: Classify the current turn before creating any Trellis task. "
432
- "Simple conversation / small task asks only whether this turn should create a Trellis task. "
433
- "Complex task asks whether task creation and planning are allowed."
432
+ "Simple conversation needs no task; bounded direct work uses the applicable direct path. "
433
+ "Create a task for complex work only when task creation/planning is authorized."
434
434
  )
435
435
 
436
436
  task_ref = active.task_path
@@ -443,12 +443,10 @@ def _get_task_status(trellis_dir: Path, input_data: dict) -> str:
443
443
  )
444
444
 
445
445
  task_json_path = task_dir / "task.json"
446
- task_data = {}
447
- if task_json_path.is_file():
448
- try:
449
- task_data = json.loads(task_json_path.read_text(encoding="utf-8"))
450
- except (json.JSONDecodeError, PermissionError):
451
- pass # Optional task metadata; fall back to generic status.
446
+ from common.io import read_json_checked
447
+ task_data, _reason = read_json_checked(task_json_path)
448
+ if task_data is None or not isinstance(task_data.get("status"), str) or not task_data["status"].strip():
449
+ return f"Status: TASK_ERROR\nTask: {task_ref}\nNext-Action: Repair the existing task record through its owner before continuing; do not create a replacement task."
452
450
 
453
451
  task_title = task_data.get("title", task_ref)
454
452
  task_status = task_data.get("status", "unknown")
@@ -719,13 +717,15 @@ def _build_compact_current_state(
719
717
  active = _resolve_active_task(trellis_dir, input_data)
720
718
  if active.task_path:
721
719
  task_dir = _resolve_task_dir(trellis_dir, active.task_path)
722
- status = "unknown"
720
+ status = "task_error"
723
721
  task_json = task_dir / "task.json"
724
722
  if task_json.is_file():
725
723
  try:
726
724
  data = json.loads(task_json.read_text(encoding="utf-8"))
727
725
  if isinstance(data, dict):
728
- status = str(data.get("status") or "unknown")
726
+ value = data.get("status")
727
+ if isinstance(value, str) and value.strip():
728
+ status = value
729
729
  except (json.JSONDecodeError, OSError):
730
730
  pass # Optional task metadata; fall back to generic status.
731
731
  lines.append(f"Current task: {_repo_relative(repo_root, task_dir)}; status={status}.")
@@ -754,24 +754,24 @@ def _build_compact_current_state(
754
754
  return "\n".join(lines)
755
755
 
756
756
 
757
- def _extract_range(content: str, start_header: str, end_header: str) -> str:
757
+ def _extract_range(content: str, start_header: tuple[str, ...], end_header: tuple[str, ...]) -> str:
758
758
  """Extract lines starting at `## start_header` up to (but excluding) `## end_header`.
759
759
 
760
- Both parameters are full header lines WITHOUT the `## ` prefix (e.g. "Phase Index").
760
+ Parameters contain accepted full header lines WITHOUT the `## ` prefix.
761
761
  Returns empty string if start header is not found.
762
762
  End header missing → extracts to end of file.
763
763
  """
764
764
  lines = content.splitlines()
765
765
  start: int | None = None
766
766
  end: int = len(lines)
767
- start_match = f"## {start_header}"
768
- end_match = f"## {end_header}"
767
+ start_matches = {f"## {header}" for header in start_header}
768
+ end_matches = {f"## {header}" for header in end_header}
769
769
  for i, line in enumerate(lines):
770
770
  stripped = line.strip()
771
- if start is None and stripped == start_match:
771
+ if start is None and stripped in start_matches:
772
772
  start = i
773
773
  continue
774
- if start is not None and stripped == end_match:
774
+ if start is not None and stripped in end_matches:
775
775
  end = i
776
776
  break
777
777
  if start is None:
@@ -833,7 +833,7 @@ def _build_workflow_overview(workflow_path: Path) -> str:
833
833
  "",
834
834
  ]
835
835
 
836
- phases = _extract_range(content, "Phase Index", "Phase 1: Plan")
836
+ phases = _extract_range(content, ("阶段索引(Phase Index)", "Phase Index"), ("阶段一:规划(Phase 1: Plan)", "Phase 1: Plan"))
837
837
  if phases:
838
838
  out_lines.append(_strip_breadcrumb_tag_blocks(phases).rstrip())
839
839
 
@@ -871,7 +871,12 @@ def main():
871
871
  project_dir = Path(_normalize_windows_shell_path(val)).resolve()
872
872
  break
873
873
  if project_dir is None:
874
- project_dir = Path(_normalize_windows_shell_path(hook_input.get("cwd", "."))).resolve()
874
+ raw_cwd = hook_input.get("cwd")
875
+ project_dir = Path(_normalize_windows_shell_path(raw_cwd if isinstance(raw_cwd, str) and raw_cwd else ".")).resolve()
876
+
877
+ project_dir = next((candidate for candidate in (project_dir, *project_dir.parents) if (candidate / ".trellis").is_dir()), None)
878
+ if project_dir is None or not (project_dir / ".trellis" / "scripts" / "common" / "active_task.py").is_file():
879
+ return
875
880
 
876
881
  trellis_dir = project_dir / ".trellis"
877
882
  context_key = _resolve_context_key(trellis_dir, hook_input)
@@ -0,0 +1,13 @@
1
+ {
2
+ "default_model": "gpt-6.1-sol",
3
+ "profiles": {
4
+ "docs_source": { "model": "gpt-5.6-luna", "reasoning_effort": "xhigh" },
5
+ "fault_diagnosis": { "reasoning_effort": "high" },
6
+ "correctness_test": { "reasoning_effort": "high" },
7
+ "security_permission": { "reasoning_effort": "high" },
8
+ "architecture_compat": { "reasoning_effort": "high" },
9
+ "requirements_assumption": { "reasoning_effort": "high" },
10
+ "ux_accessibility": { "reasoning_effort": "high" },
11
+ "evidence_synthesis": { "reasoning_effort": "medium" }
12
+ }
13
+ }
@@ -5,7 +5,6 @@ description: |
5
5
  never changes protected target files, and leaves acceptance to the coordinator.
6
6
  provider: codex
7
7
  labels: [trellis, subnode]
8
- env_file: subnode.env
9
8
  ---
10
9
 
11
10
  # Subnode (channel runtime)
@@ -49,10 +48,17 @@ sandbox claim.
49
48
  4. Write `report.json` only when you are ready to stop. Its status is one of
50
49
  `complete`, `blocked`, `incomplete`, or `error`; it is always
51
50
  **pending coordinator review**, never accepted/rejected/deferred.
52
- 5. A complete report includes independently checkable evidence. A non-complete
53
- report explains completed scope and the blocker or error. Include the exact
54
- identity, scope, and lens required by the artifact helper.
55
- 6. Finish with one short final assistant reply that states the status and report
51
+ 5. Use report schema version 2. Include one `scope_assessment` for each brief
52
+ scope item, structured findings with `id`, `conclusion`, and `evidence_ids`,
53
+ and typed `uncertainties` or `corrections` when present. A complete report
54
+ includes independently checkable evidence; a non-complete report explains
55
+ completed scope and the blocker or error. Include the exact identity, scope,
56
+ and lens required by the artifact helper.
57
+ 6. Append a checkpoint marker to `worklog.md` after each material unit using
58
+ the exact `trellis-checkpoint` JSON fields documented by `subnode-work`.
59
+ Missing or incomplete checkpoint coverage becomes a coordinator review
60
+ concern; it does not become acceptance.
61
+ 7. Finish with one short final assistant reply that states the status and report
56
62
  path. Do not place the report JSON in the reply and do not run
57
63
  `trellis channel send`: the supervisor routes this final reply into the
58
64
  durable Channel message and `done` events.
@@ -45,6 +45,8 @@ max_journal_lines: 2000
45
45
  # - "echo 'Task created'"
46
46
  # after_start:
47
47
  # - "echo 'Task started'"
48
+ # after_replan:
49
+ # - "echo 'Task returned to planning'"
48
50
  # after_finish:
49
51
  # - "echo 'Task finished'"
50
52
  # after_archive:
@@ -36,6 +36,7 @@ export declare const commonTasks: string;
36
36
  export declare const commonTaskContext: string;
37
37
  export declare const commonContextProjection: string;
38
38
  export declare const commonTaskStore: string;
39
+ export declare const commonTaskPlanning: string;
39
40
  export declare const commonSessionContext: string;
40
41
  export declare const commonContinuationRecord: string;
41
42
  export declare const commonOwnershipRecord: string;
@@ -60,7 +61,7 @@ export declare const gitattributesTemplate: string;
60
61
  export declare const implementAgentTemplate: string;
61
62
  export declare const checkAgentTemplate: string;
62
63
  export declare const subnodeAgentTemplate: string;
63
- export declare const subnodeEnvTemplate: string;
64
+ export declare const subnodeProfilesTemplate: string;
64
65
  /**
65
66
  * Get all script templates as a map of relative path to content
66
67
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;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,uBAAuB,QAEnC,CAAC;AACF,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,oBAAoB,QAEhC,CAAC;AACF,eAAO,MAAM,wBAAwB,QAEpC,CAAC;AACF,eAAO,MAAM,qBAAqB,QAEjC,CAAC;AACF,eAAO,MAAM,qBAAqB,QAEjC,CAAC;AACF,eAAO,MAAM,mBAAmB,QAE/B,CAAC;AACF,eAAO,MAAM,uBAAuB,QAEnC,CAAC;AACF,eAAO,MAAM,mBAAmB,QAE/B,CAAC;AACF,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAC9E,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;AACvE,eAAO,MAAM,qBAAqB,QAEjC,CAAC;AACF,eAAO,MAAM,mBAAmB,QAA4C,CAAC;AAG7E,eAAO,MAAM,kBAAkB,QAA8B,CAAC;AAC9D,eAAO,MAAM,kBAAkB,QAA8B,CAAC;AAC9D,eAAO,MAAM,iBAAiB,QAAgC,CAAC;AAC/D,eAAO,MAAM,qBAAqB,QAAoC,CAAC;AAMvE,eAAO,MAAM,sBAAsB,QAAsC,CAAC;AAC1E,eAAO,MAAM,kBAAkB,QAAkC,CAAC;AAClE,eAAO,MAAM,oBAAoB,QAAoC,CAAC;AACtE,eAAO,MAAM,kBAAkB,QAAqC,CAAC;AAErE;;GAEG;AACH,wBAAgB,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CA6CnD;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAOlD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;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,uBAAuB,QAEnC,CAAC;AACF,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,kBAAkB,QAE9B,CAAC;AACF,eAAO,MAAM,oBAAoB,QAEhC,CAAC;AACF,eAAO,MAAM,wBAAwB,QAEpC,CAAC;AACF,eAAO,MAAM,qBAAqB,QAEjC,CAAC;AACF,eAAO,MAAM,qBAAqB,QAEjC,CAAC;AACF,eAAO,MAAM,mBAAmB,QAE/B,CAAC;AACF,eAAO,MAAM,uBAAuB,QAEnC,CAAC;AACF,eAAO,MAAM,mBAAmB,QAE/B,CAAC;AACF,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,gBAAgB,QAAgD,CAAC;AAC9E,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;AACvE,eAAO,MAAM,qBAAqB,QAEjC,CAAC;AACF,eAAO,MAAM,mBAAmB,QAA4C,CAAC;AAG7E,eAAO,MAAM,kBAAkB,QAA8B,CAAC;AAC9D,eAAO,MAAM,kBAAkB,QAA8B,CAAC;AAC9D,eAAO,MAAM,iBAAiB,QAAgC,CAAC;AAC/D,eAAO,MAAM,qBAAqB,QAAoC,CAAC;AAMvE,eAAO,MAAM,sBAAsB,QAAsC,CAAC;AAC1E,eAAO,MAAM,kBAAkB,QAAkC,CAAC;AAClE,eAAO,MAAM,oBAAoB,QAAoC,CAAC;AACtE,eAAO,MAAM,uBAAuB,QAEnC,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CA8CnD;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAOlD"}
@@ -46,6 +46,7 @@ export const commonTasks = readTemplate("scripts/common/tasks.py");
46
46
  export const commonTaskContext = readTemplate("scripts/common/task_context.py");
47
47
  export const commonContextProjection = readTemplate("scripts/common/context_projection.py");
48
48
  export const commonTaskStore = readTemplate("scripts/common/task_store.py");
49
+ export const commonTaskPlanning = readTemplate("scripts/common/task_planning.py");
49
50
  export const commonSessionContext = readTemplate("scripts/common/session_context.py");
50
51
  export const commonContinuationRecord = readTemplate("scripts/common/continuation_record.py");
51
52
  export const commonOwnershipRecord = readTemplate("scripts/common/ownership_record.py");
@@ -76,7 +77,7 @@ export const gitattributesTemplate = readTemplate("gitattributes.txt");
76
77
  export const implementAgentTemplate = readTemplate("agents/implement.md");
77
78
  export const checkAgentTemplate = readTemplate("agents/check.md");
78
79
  export const subnodeAgentTemplate = readTemplate("agents/subnode.md");
79
- export const subnodeEnvTemplate = readTemplate("agents/subnode.env");
80
+ export const subnodeProfilesTemplate = readTemplate("agents/subnode-profiles.json");
80
81
  /**
81
82
  * Get all script templates as a map of relative path to content
82
83
  */
@@ -102,6 +103,7 @@ export function getAllScripts() {
102
103
  scripts.set("common/task_context.py", commonTaskContext);
103
104
  scripts.set("common/context_projection.py", commonContextProjection);
104
105
  scripts.set("common/task_store.py", commonTaskStore);
106
+ scripts.set("common/task_planning.py", commonTaskPlanning);
105
107
  scripts.set("common/session_context.py", commonSessionContext);
106
108
  scripts.set("common/continuation_record.py", commonContinuationRecord);
107
109
  scripts.set("common/ownership_record.py", commonOwnershipRecord);
@@ -135,7 +137,7 @@ export function getAllAgents() {
135
137
  agents.set("implement.md", implementAgentTemplate);
136
138
  agents.set("check.md", checkAgentTemplate);
137
139
  agents.set("subnode.md", subnodeAgentTemplate);
138
- agents.set("subnode.env", subnodeEnvTemplate);
140
+ agents.set("subnode-profiles.json", subnodeProfilesTemplate);
139
141
  return agents;
140
142
  }
141
143
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"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"}