@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.
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +47 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/backup.d.ts +25 -0
- package/dist/commands/backup.d.ts.map +1 -0
- package/dist/commands/backup.js +152 -0
- package/dist/commands/backup.js.map +1 -0
- package/dist/commands/channel/adapters/claude.d.ts.map +1 -1
- package/dist/commands/channel/adapters/claude.js +2 -0
- package/dist/commands/channel/adapters/claude.js.map +1 -1
- package/dist/commands/channel/adapters/codex.d.ts +5 -1
- package/dist/commands/channel/adapters/codex.d.ts.map +1 -1
- package/dist/commands/channel/adapters/codex.js +19 -9
- package/dist/commands/channel/adapters/codex.js.map +1 -1
- package/dist/commands/channel/adapters/index.d.ts +3 -0
- package/dist/commands/channel/adapters/index.d.ts.map +1 -1
- package/dist/commands/channel/adapters/index.js +3 -3
- package/dist/commands/channel/adapters/index.js.map +1 -1
- package/dist/commands/channel/adapters/types.d.ts +2 -0
- package/dist/commands/channel/adapters/types.d.ts.map +1 -1
- package/dist/commands/channel/guard.d.ts.map +1 -1
- package/dist/commands/channel/guard.js +38 -29
- package/dist/commands/channel/guard.js.map +1 -1
- package/dist/commands/channel/index.d.ts.map +1 -1
- package/dist/commands/channel/index.js +52 -16
- package/dist/commands/channel/index.js.map +1 -1
- package/dist/commands/channel/kill.d.ts.map +1 -1
- package/dist/commands/channel/kill.js +37 -15
- package/dist/commands/channel/kill.js.map +1 -1
- package/dist/commands/channel/messages.d.ts.map +1 -1
- package/dist/commands/channel/messages.js +3 -2
- package/dist/commands/channel/messages.js.map +1 -1
- package/dist/commands/channel/process-identity.d.ts +3 -0
- package/dist/commands/channel/process-identity.d.ts.map +1 -0
- package/dist/commands/channel/process-identity.js +24 -0
- package/dist/commands/channel/process-identity.js.map +1 -0
- package/dist/commands/channel/profiles.d.ts +26 -0
- package/dist/commands/channel/profiles.d.ts.map +1 -0
- package/dist/commands/channel/profiles.js +186 -0
- package/dist/commands/channel/profiles.js.map +1 -0
- package/dist/commands/channel/rm.d.ts +0 -1
- package/dist/commands/channel/rm.d.ts.map +1 -1
- package/dist/commands/channel/rm.js +203 -96
- package/dist/commands/channel/rm.js.map +1 -1
- package/dist/commands/channel/spawn.d.ts +3 -0
- package/dist/commands/channel/spawn.d.ts.map +1 -1
- package/dist/commands/channel/spawn.js +43 -15
- package/dist/commands/channel/spawn.js.map +1 -1
- package/dist/commands/channel/supervisor/idle.d.ts +2 -0
- package/dist/commands/channel/supervisor/idle.d.ts.map +1 -1
- package/dist/commands/channel/supervisor/idle.js +15 -7
- package/dist/commands/channel/supervisor/idle.js.map +1 -1
- package/dist/commands/channel/supervisor/inbox.d.ts.map +1 -1
- package/dist/commands/channel/supervisor/inbox.js +48 -33
- package/dist/commands/channel/supervisor/inbox.js.map +1 -1
- package/dist/commands/channel/supervisor/stdout.d.ts.map +1 -1
- package/dist/commands/channel/supervisor/stdout.js +6 -3
- package/dist/commands/channel/supervisor/stdout.js.map +1 -1
- package/dist/commands/channel/supervisor/warning.d.ts.map +1 -1
- package/dist/commands/channel/supervisor/warning.js +2 -3
- package/dist/commands/channel/supervisor/warning.js.map +1 -1
- package/dist/commands/channel/supervisor.d.ts +12 -0
- package/dist/commands/channel/supervisor.d.ts.map +1 -1
- package/dist/commands/channel/supervisor.js +88 -16
- package/dist/commands/channel/supervisor.js.map +1 -1
- package/dist/commands/channel/wait.d.ts +3 -1
- package/dist/commands/channel/wait.d.ts.map +1 -1
- package/dist/commands/channel/wait.js +59 -14
- package/dist/commands/channel/wait.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +23 -10
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +446 -333
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/workflow.d.ts +1 -0
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +56 -1
- package/dist/commands/workflow.js.map +1 -1
- package/dist/configurators/codex.d.ts +6 -0
- package/dist/configurators/codex.d.ts.map +1 -1
- package/dist/configurators/codex.js +93 -0
- package/dist/configurators/codex.js.map +1 -1
- package/dist/configurators/shared.js +2 -2
- package/dist/configurators/shared.js.map +1 -1
- package/dist/constants/paths.d.ts +2 -0
- package/dist/constants/paths.d.ts.map +1 -1
- package/dist/constants/paths.js +2 -0
- package/dist/constants/paths.js.map +1 -1
- package/dist/migrations/manifests/0.7.0-beta.10.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.11.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.12.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.13.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.14.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.15.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.16.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.17.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.18.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.19.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.20.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.21.json +17 -0
- package/dist/migrations/manifests/0.7.0-beta.22.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.23.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.24.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.25.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.26.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.27.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.28.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.29.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.30.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.31.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.32.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.33.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.34.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.35.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.36.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.37.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.38.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.39.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.40.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.41.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.42.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.43.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.44.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.45.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.46.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.47.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.48.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.49.json +13 -0
- package/dist/migrations/manifests/0.7.0-beta.50.json +12 -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/codex/hooks/session-start.py +21 -17
- package/dist/templates/common/bundled-skills/trellis-channel/SKILL.md +3 -1
- package/dist/templates/common/bundled-skills/trellis-channel/references/command-reference.md +24 -16
- package/dist/templates/common/bundled-skills/trellis-channel/references/forum.md +4 -12
- package/dist/templates/common/bundled-skills/trellis-channel/references/multi-target-dispatch.md +139 -0
- package/dist/templates/common/bundled-skills/trellis-channel/references/progress-debugging.md +9 -5
- package/dist/templates/common/bundled-skills/trellis-channel/references/subnode-work.md +84 -14
- package/dist/templates/common/bundled-skills/trellis-channel/references/workers.md +9 -11
- package/dist/templates/common/bundled-skills/trellis-channel/references/workflows.md +25 -14
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-skills-or-commands.md +13 -11
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-task-lifecycle.md +7 -2
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/task-system.md +6 -1
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workflow.md +6 -4
- package/dist/templates/common/bundled-skills/trellis-session-insight/SKILL.md +42 -3
- package/dist/templates/common/bundled-skills/trellis-session-insight/references/cli-quick-reference.md +1 -1
- package/dist/templates/common/bundled-skills/trellis-session-insight/references/triggering-patterns.md +10 -2
- package/dist/templates/common/commands/continue.md +36 -8
- package/dist/templates/common/commands/finish-work.md +17 -2
- package/dist/templates/common/commands/start.md +8 -1
- package/dist/templates/common/skills/brainstorm.md +49 -22
- package/dist/templates/common/skills/break-loop.md +6 -10
- package/dist/templates/common/skills/check.md +34 -5
- package/dist/templates/copilot/hooks/session-start.py +19 -15
- package/dist/templates/copilot/prompts/brainstorm.prompt.md +27 -21
- package/dist/templates/markdown/spec/backend/database-guidelines.md.txt +22 -22
- package/dist/templates/markdown/spec/backend/directory-structure.md.txt +20 -20
- package/dist/templates/markdown/spec/backend/error-handling.md.txt +22 -22
- package/dist/templates/markdown/spec/backend/index.md.txt +19 -19
- package/dist/templates/markdown/spec/backend/logging-guidelines.md.txt +22 -22
- package/dist/templates/markdown/spec/backend/quality-guidelines.md.txt +22 -22
- package/dist/templates/markdown/spec/frontend/component-guidelines.md.txt +25 -25
- package/dist/templates/markdown/spec/frontend/directory-structure.md.txt +20 -20
- package/dist/templates/markdown/spec/frontend/hook-guidelines.md.txt +22 -22
- package/dist/templates/markdown/spec/frontend/index.md.txt +20 -20
- package/dist/templates/markdown/spec/frontend/quality-guidelines.md.txt +22 -22
- package/dist/templates/markdown/spec/frontend/state-management.md.txt +22 -22
- package/dist/templates/markdown/spec/frontend/type-safety.md.txt +22 -22
- package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md.txt +80 -85
- package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +164 -209
- package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +161 -185
- package/dist/templates/markdown/spec/guides/index.md.txt +51 -51
- package/dist/templates/markdown/workspace-index.md +44 -44
- package/dist/templates/opencode/lib/session-utils.js +2 -2
- package/dist/templates/shared-hooks/inject-shell-session-context.py +3 -6
- package/dist/templates/shared-hooks/inject-workflow-state.py +3 -2
- package/dist/templates/shared-hooks/session-start.py +23 -18
- package/dist/templates/trellis/agents/subnode-profiles.json +13 -0
- package/dist/templates/trellis/agents/subnode.md +11 -5
- package/dist/templates/trellis/config.yaml +2 -0
- package/dist/templates/trellis/index.d.ts +2 -1
- package/dist/templates/trellis/index.d.ts.map +1 -1
- package/dist/templates/trellis/index.js +4 -2
- package/dist/templates/trellis/index.js.map +1 -1
- package/dist/templates/trellis/scripts/add_session.py +35 -32
- package/dist/templates/trellis/scripts/common/active_task.py +8 -8
- package/dist/templates/trellis/scripts/common/developer.py +18 -18
- package/dist/templates/trellis/scripts/common/ownership_record.py +13 -8
- package/dist/templates/trellis/scripts/common/safe_commit.py +38 -9
- package/dist/templates/trellis/scripts/common/task_planning.py +137 -0
- package/dist/templates/trellis/scripts/common/task_store.py +46 -14
- package/dist/templates/trellis/scripts/common/workflow_phase.py +4 -3
- package/dist/templates/trellis/scripts/subnode_artifact.py +470 -21
- package/dist/templates/trellis/scripts/task.py +175 -2
- package/dist/templates/trellis/workflow.md +407 -388
- package/dist/utils/managed-paths.d.ts +2 -0
- package/dist/utils/managed-paths.d.ts.map +1 -1
- package/dist/utils/managed-paths.js +24 -2
- package/dist/utils/managed-paths.js.map +1 -1
- package/dist/utils/template-fetcher.d.ts +1 -0
- package/dist/utils/template-fetcher.d.ts.map +1 -1
- package/dist/utils/template-fetcher.js +2 -1
- package/dist/utils/template-fetcher.js.map +1 -1
- package/dist/utils/uninstall-scrubbers.d.ts.map +1 -1
- package/dist/utils/uninstall-scrubbers.js +5 -0
- package/dist/utils/uninstall-scrubbers.js.map +1 -1
- package/dist/utils/workflow-provenance.d.ts +24 -0
- package/dist/utils/workflow-provenance.d.ts.map +1 -0
- package/dist/utils/workflow-provenance.js +71 -0
- package/dist/utils/workflow-provenance.js.map +1 -0
- package/dist/utils/workflow-resolver.d.ts +9 -2
- package/dist/utils/workflow-resolver.d.ts.map +1 -1
- package/dist/utils/workflow-resolver.js +33 -7
- package/dist/utils/workflow-resolver.js.map +1 -1
- package/package.json +2 -2
- package/dist/templates/trellis/agents/subnode.env +0 -4
|
@@ -1,97 +1,97 @@
|
|
|
1
|
-
# Thinking Guides
|
|
1
|
+
# 思考指南(Thinking Guides)
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> **目的(Purpose)**:扩展思考,发现可能遗漏的因素。
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
## Why Thinking Guides
|
|
7
|
+
## 为什么需要思考指南(Why Thinking Guides?)
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
**大多数错误和技术债务来自“没有想到”,而不是能力不足:**
|
|
10
10
|
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
11
|
+
- 没有思考层边界会发生什么 → 出现跨层错误
|
|
12
|
+
- 没有注意代码模式重复 → 到处产生重复代码
|
|
13
|
+
- 没有考虑边界情况 → 出现运行时错误
|
|
14
|
+
- 没有考虑未来维护者 → 代码难以阅读
|
|
15
15
|
|
|
16
|
-
|
|
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) |
|
|
25
|
-
| [Cross-Layer Thinking Guide](./cross-layer-thinking-guide.md) |
|
|
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
|
-
- [ ]
|
|
34
|
-
- [ ]
|
|
35
|
-
- [ ]
|
|
36
|
-
- [ ]
|
|
37
|
-
- [ ]
|
|
38
|
-
- [ ] UI
|
|
33
|
+
- [ ] 功能涉及三个或更多层(API、Service、Component、Database)
|
|
34
|
+
- [ ] 数据格式在层之间发生变化
|
|
35
|
+
- [ ] 多个消费者需要同一份数据
|
|
36
|
+
- [ ] 不确定某段逻辑应放在哪里
|
|
37
|
+
- [ ] 正在增加事件类型、JSONL 记录、RPC 载荷或配置字段
|
|
38
|
+
- [ ] UI/命令代码开始直接断言原始载荷字段
|
|
39
39
|
|
|
40
|
-
→
|
|
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
|
-
- [ ]
|
|
45
|
-
- [ ]
|
|
46
|
-
- [ ]
|
|
47
|
-
- [ ]
|
|
48
|
-
- [ ]
|
|
49
|
-
- [ ]
|
|
50
|
-
- [ ]
|
|
44
|
+
- [ ] 正在编写与已有代码相似的代码
|
|
45
|
+
- [ ] 看到同一模式重复三次或更多
|
|
46
|
+
- [ ] 正在多个位置增加新字段
|
|
47
|
+
- [ ] **正在修改任意常量或配置**
|
|
48
|
+
- [ ] **正在创建新的工具/辅助函数** ← 先搜索!
|
|
49
|
+
- [ ] 两个文件使用本地断言读取同一个无类型载荷字段
|
|
50
|
+
- [ ] 多个分支根据 `kind` / `action` 更新同一派生状态
|
|
51
51
|
|
|
52
|
-
→
|
|
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
|
-
- [ ]
|
|
57
|
-
- [ ]
|
|
58
|
-
- [ ]
|
|
59
|
-
- [ ]
|
|
56
|
+
- [ ] 审查者声称“用户输入可能恶意” → 检查实际数据来源(内部 manifest?用户配置?外部 API?)
|
|
57
|
+
- [ ] 审查者指出“缺少校验” → 数据是否来自可信内部来源?
|
|
58
|
+
- [ ] 审查者说“行为发生变化” → 阅读代码注释,确认是否属于有意设计。
|
|
59
|
+
- [ ] 审查者在测试中指出“错误” → 在脑中删除被测功能,测试是否仍然通过?如果是 → 这是同义反复测试
|
|
60
60
|
|
|
61
|
-
**
|
|
62
|
-
1.
|
|
63
|
-
2.
|
|
64
|
-
3.
|
|
61
|
+
**AI 审查者常见的误报模式**:
|
|
62
|
+
1. **信任边界混淆**:将内部数据(打包的 JSON manifest)当作不可信外部输入
|
|
63
|
+
2. **忽略设计注释**:将代码注释中记录的有意行为标记为错误
|
|
64
|
+
3. **误读变量**:不追踪变量的实际定义(例如 Map 以路径而不是名称为键)
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
**核验规则**:每个 CRITICAL/WARNING 发现都必须对照实际代码核验后再排序。
|
|
67
67
|
|
|
68
68
|
---
|
|
69
69
|
|
|
70
|
-
## Pre-Modification Rule
|
|
70
|
+
## 修改前规则(Pre-Modification Rule,CRITICAL)
|
|
71
71
|
|
|
72
|
-
>
|
|
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
|
-
|
|
79
|
+
这一习惯可以预防大多数“忘记更新 X”的错误。
|
|
80
80
|
|
|
81
81
|
---
|
|
82
82
|
|
|
83
|
-
## How to Use This Directory
|
|
83
|
+
## 如何使用本目录(How to Use This Directory)
|
|
84
84
|
|
|
85
|
-
1.
|
|
86
|
-
2.
|
|
87
|
-
3.
|
|
85
|
+
1. **编码前**:浏览相关思考指南
|
|
86
|
+
2. **编码中**:如果某处感觉重复或复杂,查阅这些指南
|
|
87
|
+
3. **出现错误后**:将新经验加入相关指南,从错误中学习
|
|
88
88
|
|
|
89
89
|
---
|
|
90
90
|
|
|
91
|
-
## Contributing
|
|
91
|
+
## 贡献(Contributing)
|
|
92
92
|
|
|
93
|
-
|
|
93
|
+
发现新的“没有想到”时刻?将它加入相关指南。
|
|
94
94
|
|
|
95
95
|
---
|
|
96
96
|
|
|
97
|
-
|
|
97
|
+
**核心原则(Core Principle)**:30 分钟的思考可以节省 3 小时的调试时间。
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
# Workspace Index
|
|
1
|
+
# 工作区索引(Workspace Index)
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> 记录所有开发者的 AI Agent 工作记录。
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
## Overview
|
|
7
|
+
## 概览(Overview)
|
|
8
8
|
|
|
9
|
-
|
|
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
|
-
|
|
|
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
|
-
|
|
38
|
+
运行初始化脚本:
|
|
39
39
|
|
|
40
40
|
```bash
|
|
41
41
|
python3 ./.trellis/scripts/init_developer.py <your-name>
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
1.
|
|
46
|
-
2.
|
|
47
|
-
3.
|
|
48
|
-
4.
|
|
44
|
+
此命令将:
|
|
45
|
+
1. 创建身份文件(由 git 忽略)
|
|
46
|
+
2. 创建进度目录
|
|
47
|
+
3. 创建个人索引
|
|
48
|
+
4. 创建初始日志文件
|
|
49
49
|
|
|
50
|
-
### For Returning Developers
|
|
50
|
+
### 已有开发者(For Returning Developers)
|
|
51
51
|
|
|
52
|
-
1.
|
|
52
|
+
1. 获取开发者名称:
|
|
53
53
|
```bash
|
|
54
54
|
python3 ./.trellis/scripts/get_developer.py
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
-
2.
|
|
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
|
-
- **
|
|
69
|
-
-
|
|
70
|
-
-
|
|
68
|
+
- 每个日志文件最多 **2000 行**
|
|
69
|
+
- 达到上限后创建 `journal-{N+1}.md`
|
|
70
|
+
- 创建新文件时更新个人 `index.md`
|
|
71
71
|
|
|
72
|
-
### Session Record Format
|
|
72
|
+
### 会话记录格式(Session Record Format)
|
|
73
73
|
|
|
74
|
-
|
|
75
|
-
- Summary
|
|
76
|
-
- Branch
|
|
77
|
-
- Main Changes
|
|
78
|
-
- Git Commits
|
|
79
|
-
- Next Steps
|
|
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
|
-
|
|
85
|
+
记录会话时使用以下模板:
|
|
86
86
|
|
|
87
87
|
```markdown
|
|
88
|
-
## Session {N}
|
|
88
|
+
## 会话(Session) {N}:{Title}
|
|
89
89
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
433
|
-
"
|
|
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
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
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 = "
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
768
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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.
|
|
@@ -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
|
|
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,
|
|
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
|
|
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.
|
|
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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"}
|