@blxzer/cursor-trellis 0.3.5 → 0.3.6
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/CHANGELOG.md +46 -0
- package/README.md +13 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +3 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/goal/index.d.ts +3 -0
- package/dist/commands/goal/index.d.ts.map +1 -0
- package/dist/commands/goal/index.js +159 -0
- package/dist/commands/goal/index.js.map +1 -0
- package/dist/commands/goal/review.d.ts +6 -0
- package/dist/commands/goal/review.d.ts.map +1 -0
- package/dist/commands/goal/review.js +28 -0
- package/dist/commands/goal/review.js.map +1 -0
- package/dist/commands/sdk/run.d.ts.map +1 -1
- package/dist/commands/sdk/run.js +2 -27
- package/dist/commands/sdk/run.js.map +1 -1
- package/dist/configurators/workflow.d.ts.map +1 -1
- package/dist/configurators/workflow.js +13 -1
- package/dist/configurators/workflow.js.map +1 -1
- package/dist/goal/action-packet.d.ts +89 -0
- package/dist/goal/action-packet.d.ts.map +1 -0
- package/dist/goal/action-packet.js +113 -0
- package/dist/goal/action-packet.js.map +1 -0
- package/dist/goal/audit.d.ts +14 -0
- package/dist/goal/audit.d.ts.map +1 -0
- package/dist/goal/audit.js +12 -0
- package/dist/goal/audit.js.map +1 -0
- package/dist/goal/constants.d.ts +26 -0
- package/dist/goal/constants.d.ts.map +1 -0
- package/dist/goal/constants.js +24 -0
- package/dist/goal/constants.js.map +1 -0
- package/dist/goal/paths.d.ts +8 -0
- package/dist/goal/paths.d.ts.map +1 -0
- package/dist/goal/paths.js +36 -0
- package/dist/goal/paths.js.map +1 -0
- package/dist/goal/preflight.d.ts +21 -0
- package/dist/goal/preflight.d.ts.map +1 -0
- package/dist/goal/preflight.js +97 -0
- package/dist/goal/preflight.js.map +1 -0
- package/dist/goal/review-seam.d.ts +44 -0
- package/dist/goal/review-seam.d.ts.map +1 -0
- package/dist/goal/review-seam.js +153 -0
- package/dist/goal/review-seam.js.map +1 -0
- package/dist/goal/reviewer-rules.d.ts +13 -0
- package/dist/goal/reviewer-rules.d.ts.map +1 -0
- package/dist/goal/reviewer-rules.js +153 -0
- package/dist/goal/reviewer-rules.js.map +1 -0
- package/dist/goal/reviewer.d.ts +9 -0
- package/dist/goal/reviewer.d.ts.map +1 -0
- package/dist/goal/reviewer.js +54 -0
- package/dist/goal/reviewer.js.map +1 -0
- package/dist/goal/runtime.d.ts +32 -0
- package/dist/goal/runtime.d.ts.map +1 -0
- package/dist/goal/runtime.js +242 -0
- package/dist/goal/runtime.js.map +1 -0
- package/dist/goal/sdk-client.d.ts +10 -0
- package/dist/goal/sdk-client.d.ts.map +1 -0
- package/dist/goal/sdk-client.js +34 -0
- package/dist/goal/sdk-client.js.map +1 -0
- package/dist/goal/state.d.ts +40 -0
- package/dist/goal/state.d.ts.map +1 -0
- package/dist/goal/state.js +37 -0
- package/dist/goal/state.js.map +1 -0
- package/dist/goal/task-triggers.d.ts +15 -0
- package/dist/goal/task-triggers.d.ts.map +1 -0
- package/dist/goal/task-triggers.js +23 -0
- package/dist/goal/task-triggers.js.map +1 -0
- package/dist/goal/walls.d.ts +12 -0
- package/dist/goal/walls.d.ts.map +1 -0
- package/dist/goal/walls.js +65 -0
- package/dist/goal/walls.js.map +1 -0
- package/dist/goal/worker-prompt.d.ts +13 -0
- package/dist/goal/worker-prompt.d.ts.map +1 -0
- package/dist/goal/worker-prompt.js +41 -0
- package/dist/goal/worker-prompt.js.map +1 -0
- package/dist/goal/worker.d.ts +42 -0
- package/dist/goal/worker.d.ts.map +1 -0
- package/dist/goal/worker.js +180 -0
- package/dist/goal/worker.js.map +1 -0
- package/dist/migrations/manifests/0.3.5.json +9 -0
- package/dist/migrations/manifests/0.3.6.json +9 -0
- package/dist/templates/common/commands/continue.md +15 -3
- package/dist/templates/common/skills/check.md +7 -4
- package/dist/templates/cursor/agents/cstl-check.md +1 -0
- package/dist/templates/cursor/fixtures/expected-rules.d.ts.map +1 -1
- package/dist/templates/cursor/fixtures/expected-rules.js +6 -1
- package/dist/templates/cursor/fixtures/expected-rules.js.map +1 -1
- package/dist/templates/cursor/rules/cstl-cursor-modes.mdc +32 -0
- package/dist/templates/cursor/rules/cstl-triage.mdc +2 -4
- package/dist/templates/cursor/rules/retrieval-routing.mdc +26 -7
- package/dist/templates/markdown/index.d.ts +3 -0
- package/dist/templates/markdown/index.d.ts.map +1 -1
- package/dist/templates/markdown/index.js +3 -0
- package/dist/templates/markdown/index.js.map +1 -1
- package/dist/templates/markdown/spec/guides/cursor-context-injection-guide.md.txt +38 -21
- package/dist/templates/markdown/spec/guides/cursor-native-modes-guide.md.txt +125 -0
- package/dist/templates/markdown/spec/guides/index.md.txt +107 -104
- package/dist/templates/markdown/spec/guides/injection-budget-guide.md.txt +111 -0
- package/dist/templates/markdown/spec/guides/retrieval-daily-guide.md.txt +24 -6
- package/dist/templates/markdown/spec/guides/verification-strength-guide.md.txt +184 -0
- package/dist/templates/shared-hooks/session-start.py +10 -0
- package/dist/templates/trellis/config.yaml +18 -0
- package/dist/templates/trellis/index.d.ts +5 -0
- package/dist/templates/trellis/index.d.ts.map +1 -1
- package/dist/templates/trellis/index.js +14 -0
- package/dist/templates/trellis/index.js.map +1 -1
- package/dist/templates/trellis/scripts/common/artifact_locale.py +278 -0
- package/dist/templates/trellis/scripts/common/codebase_retrieval_router.py +37 -2
- package/dist/templates/trellis/scripts/common/config.py +39 -0
- package/dist/templates/trellis/scripts/common/injection_budget.py +317 -0
- package/dist/templates/trellis/scripts/common/parent_orchestration.py +161 -5
- package/dist/templates/trellis/scripts/common/retrieval_agent_instructions.py +9 -3
- package/dist/templates/trellis/scripts/common/session_context.py +32 -4
- package/dist/templates/trellis/scripts/common/session_memory.py +26 -0
- package/dist/templates/trellis/scripts/common/subagent_dispatch.py +74 -9
- package/dist/templates/trellis/scripts/common/task_context.py +18 -0
- package/dist/templates/trellis/scripts/common/task_dashboard.py +16 -1
- package/dist/templates/trellis/scripts/common/task_map.py +40 -8
- package/dist/templates/trellis/scripts/common/task_store.py +144 -39
- package/dist/templates/trellis/scripts/common/test_observable_defaults.py +135 -0
- package/dist/templates/trellis/scripts/cursor_retrieval_probe_prompt.md +14 -12
- package/dist/templates/trellis/scripts/generate_dispatch_prompt.py +182 -0
- package/dist/templates/trellis/scripts/injection_budget_probe.py +69 -0
- package/dist/templates/trellis/scripts/retrieval_probe_matrix_template.json +3 -3
- package/dist/templates/trellis/scripts/spec_health_outcomes.py +160 -0
- package/dist/templates/trellis/scripts/task.py +19 -0
- package/dist/templates/trellis/tasks/locale/en/default-prd.md +19 -0
- package/dist/templates/trellis/tasks/locale/zh/default-prd.md +19 -0
- package/dist/templates/trellis/workflow.md +23 -3
- package/package.json +2 -2
|
@@ -26,6 +26,7 @@ export declare const commonActiveTask: string;
|
|
|
26
26
|
export declare const commonCliAdapter: string;
|
|
27
27
|
export declare const commonCliEnvironment: string;
|
|
28
28
|
export declare const commonConfig: string;
|
|
29
|
+
export declare const commonArtifactLocale: string;
|
|
29
30
|
export declare const commonIo: string;
|
|
30
31
|
export declare const commonLog: string;
|
|
31
32
|
export declare const commonGit: string;
|
|
@@ -40,6 +41,7 @@ export declare const executionStrategyRulesJson: string;
|
|
|
40
41
|
export declare const commonTaskMap: string;
|
|
41
42
|
export declare const commonParentOrchestration: string;
|
|
42
43
|
export declare const commonSubagentDispatch: string;
|
|
44
|
+
export declare const commonInjectionBudget: string;
|
|
43
45
|
export declare const commonArtifactSearch: string;
|
|
44
46
|
export declare const commonSessionMemory: string;
|
|
45
47
|
export declare const commonSmartSearchEvidence: string;
|
|
@@ -55,6 +57,9 @@ export declare const commonSemanticPlanGate: string;
|
|
|
55
57
|
export declare const commonRetrievalResultRanking: string;
|
|
56
58
|
export declare const rankRetrievalCandidatesScript: string;
|
|
57
59
|
export declare const scoreEvidenceScript: string;
|
|
60
|
+
export declare const injectionBudgetProbeScript: string;
|
|
61
|
+
export declare const generateDispatchPromptScript: string;
|
|
62
|
+
export declare const specHealthOutcomesScript: string;
|
|
58
63
|
export declare const commonRetrievalAdapterMetadata: string;
|
|
59
64
|
export declare const commonContextPack: string;
|
|
60
65
|
export declare const commonRetrievalPack: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/trellis/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,7 @@ export const commonActiveTask = readTemplate("scripts/common/active_task.py");
|
|
|
36
36
|
export const commonCliAdapter = readTemplate("scripts/common/cli_adapter.py");
|
|
37
37
|
export const commonCliEnvironment = readTemplate("scripts/common/cli_environment.py");
|
|
38
38
|
export const commonConfig = readTemplate("scripts/common/config.py");
|
|
39
|
+
export const commonArtifactLocale = readTemplate("scripts/common/artifact_locale.py");
|
|
39
40
|
export const commonIo = readTemplate("scripts/common/io.py");
|
|
40
41
|
export const commonLog = readTemplate("scripts/common/log.py");
|
|
41
42
|
export const commonGit = readTemplate("scripts/common/git.py");
|
|
@@ -50,6 +51,7 @@ export const executionStrategyRulesJson = readTemplate("config/execution-strateg
|
|
|
50
51
|
export const commonTaskMap = readTemplate("scripts/common/task_map.py");
|
|
51
52
|
export const commonParentOrchestration = readTemplate("scripts/common/parent_orchestration.py");
|
|
52
53
|
export const commonSubagentDispatch = readTemplate("scripts/common/subagent_dispatch.py");
|
|
54
|
+
export const commonInjectionBudget = readTemplate("scripts/common/injection_budget.py");
|
|
53
55
|
export const commonArtifactSearch = readTemplate("scripts/common/artifact_search.py");
|
|
54
56
|
export const commonSessionMemory = readTemplate("scripts/common/session_memory.py");
|
|
55
57
|
export const commonSmartSearchEvidence = readTemplate("scripts/common/smart_search_evidence.py");
|
|
@@ -65,6 +67,9 @@ export const commonSemanticPlanGate = readTemplate("scripts/common/semantic_plan
|
|
|
65
67
|
export const commonRetrievalResultRanking = readTemplate("scripts/common/retrieval_result_ranking.py");
|
|
66
68
|
export const rankRetrievalCandidatesScript = readTemplate("scripts/rank_retrieval_candidates.py");
|
|
67
69
|
export const scoreEvidenceScript = readTemplate("scripts/score_evidence.py");
|
|
70
|
+
export const injectionBudgetProbeScript = readTemplate("scripts/injection_budget_probe.py");
|
|
71
|
+
export const generateDispatchPromptScript = readTemplate("scripts/generate_dispatch_prompt.py");
|
|
72
|
+
export const specHealthOutcomesScript = readTemplate("scripts/spec_health_outcomes.py");
|
|
68
73
|
export const commonRetrievalAdapterMetadata = readTemplate("scripts/common/retrieval_adapter_metadata.py");
|
|
69
74
|
export const commonContextPack = readTemplate("scripts/common/context_pack.py");
|
|
70
75
|
export const commonRetrievalPack = readTemplate("scripts/common/retrieval_pack.py");
|
|
@@ -119,6 +124,9 @@ export function getAllTaskTemplates() {
|
|
|
119
124
|
for (const file of RELEASE_EXECUTION_TASK_TEMPLATE_FILES) {
|
|
120
125
|
templates.set(`tasks/templates/release-execution/${file}`, readTaskTemplate(`release-execution/${file}`));
|
|
121
126
|
}
|
|
127
|
+
for (const locale of ["zh", "en"]) {
|
|
128
|
+
templates.set(`tasks/locale/${locale}/default-prd.md`, readTemplate(`tasks/locale/${locale}/default-prd.md`));
|
|
129
|
+
}
|
|
122
130
|
return templates;
|
|
123
131
|
}
|
|
124
132
|
/**
|
|
@@ -128,6 +136,7 @@ export function getAllTaskTemplates() {
|
|
|
128
136
|
export const MAINTAINER_ONLY_SCRIPT_PATHS = new Set([
|
|
129
137
|
"cursor_retrieval_probe.py",
|
|
130
138
|
"common/test_retrieval_arbitration.py",
|
|
139
|
+
"common/test_observable_defaults.py",
|
|
131
140
|
"hooks/linear_sync.py",
|
|
132
141
|
]);
|
|
133
142
|
/**
|
|
@@ -149,6 +158,7 @@ export function getAllScripts() {
|
|
|
149
158
|
scripts.set("common/cli_adapter.py", commonCliAdapter);
|
|
150
159
|
scripts.set("common/cli_environment.py", commonCliEnvironment);
|
|
151
160
|
scripts.set("common/config.py", commonConfig);
|
|
161
|
+
scripts.set("common/artifact_locale.py", commonArtifactLocale);
|
|
152
162
|
scripts.set("common/io.py", commonIo);
|
|
153
163
|
scripts.set("common/log.py", commonLog);
|
|
154
164
|
scripts.set("common/git.py", commonGit);
|
|
@@ -162,6 +172,7 @@ export function getAllScripts() {
|
|
|
162
172
|
scripts.set("common/task_map.py", commonTaskMap);
|
|
163
173
|
scripts.set("common/parent_orchestration.py", commonParentOrchestration);
|
|
164
174
|
scripts.set("common/subagent_dispatch.py", commonSubagentDispatch);
|
|
175
|
+
scripts.set("common/injection_budget.py", commonInjectionBudget);
|
|
165
176
|
scripts.set("common/artifact_search.py", commonArtifactSearch);
|
|
166
177
|
scripts.set("common/session_memory.py", commonSessionMemory);
|
|
167
178
|
scripts.set("common/smart_search_evidence.py", commonSmartSearchEvidence);
|
|
@@ -199,6 +210,9 @@ export function getAllScripts() {
|
|
|
199
210
|
scripts.set("codegraph_session_smoke.py", codegraphSessionSmokeScript);
|
|
200
211
|
scripts.set("rank_retrieval_candidates.py", rankRetrievalCandidatesScript);
|
|
201
212
|
scripts.set("score_evidence.py", scoreEvidenceScript);
|
|
213
|
+
scripts.set("injection_budget_probe.py", injectionBudgetProbeScript);
|
|
214
|
+
scripts.set("generate_dispatch_prompt.py", generateDispatchPromptScript);
|
|
215
|
+
scripts.set("spec_health_outcomes.py", specHealthOutcomesScript);
|
|
202
216
|
return scripts;
|
|
203
217
|
}
|
|
204
218
|
//# 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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"}
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Human-reviewed artifact locale resolution and PRD seed templates."""
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
import re
|
|
7
|
+
import sys
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
|
|
10
|
+
from .config import CONFIG_FILE
|
|
11
|
+
from .io import read_json, write_json
|
|
12
|
+
from .paths import DIR_TASKS, DIR_WORKFLOW, FILE_TASK_JSON, get_repo_root
|
|
13
|
+
|
|
14
|
+
VALID_LOCALES = ("zh", "en")
|
|
15
|
+
DEFAULT_LOCALE = "zh"
|
|
16
|
+
|
|
17
|
+
_ARTIFACT_LOCALE_KEY = "artifact_locale"
|
|
18
|
+
_ARTIFACT_LOCALE_LINE_RE = re.compile(
|
|
19
|
+
r"^(\s*)artifact_locale\s*:\s*.*$",
|
|
20
|
+
re.MULTILINE,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def normalize_locale(raw: object) -> str | None:
|
|
25
|
+
"""Return a supported locale code or None for invalid input."""
|
|
26
|
+
if raw is None:
|
|
27
|
+
return None
|
|
28
|
+
value = str(raw).strip().lower()
|
|
29
|
+
if value in VALID_LOCALES:
|
|
30
|
+
return value
|
|
31
|
+
return None
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def _warn_invalid_locale(raw: object, *, context: str) -> None:
|
|
35
|
+
print(
|
|
36
|
+
f"[WARN] invalid artifact_locale {raw!r} in {context}; falling back",
|
|
37
|
+
file=sys.stderr,
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _read_workspace_locale_raw(repo_root: Path) -> str | None:
|
|
42
|
+
from .config import _load_config
|
|
43
|
+
|
|
44
|
+
config = _load_config(repo_root)
|
|
45
|
+
return normalize_locale(config.get(_ARTIFACT_LOCALE_KEY))
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def get_workspace_artifact_locale(repo_root: Path | None = None) -> str:
|
|
49
|
+
"""Return workspace-level artifact locale (default zh)."""
|
|
50
|
+
root = repo_root or get_repo_root()
|
|
51
|
+
return _read_workspace_locale_raw(root) or DEFAULT_LOCALE
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def get_task_artifact_locale(task_dir: Path, repo_root: Path | None = None) -> str | None:
|
|
55
|
+
"""Return task.json meta override when valid."""
|
|
56
|
+
_ = repo_root
|
|
57
|
+
task_json = task_dir / FILE_TASK_JSON
|
|
58
|
+
if not task_json.is_file():
|
|
59
|
+
return None
|
|
60
|
+
data = read_json(task_json)
|
|
61
|
+
if not isinstance(data, dict):
|
|
62
|
+
return None
|
|
63
|
+
meta = data.get("meta")
|
|
64
|
+
if not isinstance(meta, dict):
|
|
65
|
+
return None
|
|
66
|
+
raw = meta.get(_ARTIFACT_LOCALE_KEY)
|
|
67
|
+
locale = normalize_locale(raw)
|
|
68
|
+
if raw is not None and locale is None:
|
|
69
|
+
_warn_invalid_locale(raw, context=str(task_json))
|
|
70
|
+
return locale
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def resolve_artifact_locale(task_dir: Path | None, repo_root: Path | None = None) -> str:
|
|
74
|
+
"""Resolve locale: task meta override, then workspace, then default zh."""
|
|
75
|
+
root = repo_root or get_repo_root()
|
|
76
|
+
if task_dir is not None:
|
|
77
|
+
task_locale = get_task_artifact_locale(task_dir, root)
|
|
78
|
+
if task_locale:
|
|
79
|
+
return task_locale
|
|
80
|
+
return get_workspace_artifact_locale(root)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def locale_template_dir(locale: str, repo_root: Path | None = None) -> Path:
|
|
84
|
+
"""Directory containing bundled PRD seed templates for a locale."""
|
|
85
|
+
root = repo_root or get_repo_root()
|
|
86
|
+
normalized = normalize_locale(locale) or DEFAULT_LOCALE
|
|
87
|
+
return root / DIR_WORKFLOW / DIR_TASKS / "locale" / normalized
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def _builtin_prd_template(locale: str) -> str:
|
|
91
|
+
if locale == "zh":
|
|
92
|
+
return """# {title}
|
|
93
|
+
|
|
94
|
+
## 目标
|
|
95
|
+
|
|
96
|
+
{goal}
|
|
97
|
+
|
|
98
|
+
## 需求
|
|
99
|
+
|
|
100
|
+
- 待补充
|
|
101
|
+
|
|
102
|
+
## 验收标准
|
|
103
|
+
|
|
104
|
+
- [ ] 待补充
|
|
105
|
+
|
|
106
|
+
## 备注
|
|
107
|
+
|
|
108
|
+
- `prd.md` 聚焦需求、约束与验收标准。
|
|
109
|
+
- 轻量任务可仅保留 PRD。
|
|
110
|
+
- 复杂任务在 `task.py start-execution --check` 前补充 `design.md` 与 `implement.md`。
|
|
111
|
+
"""
|
|
112
|
+
return """# {title}
|
|
113
|
+
|
|
114
|
+
## Goal
|
|
115
|
+
|
|
116
|
+
{goal}
|
|
117
|
+
|
|
118
|
+
## Requirements
|
|
119
|
+
|
|
120
|
+
- TBD
|
|
121
|
+
|
|
122
|
+
## Acceptance Criteria
|
|
123
|
+
|
|
124
|
+
- [ ] TBD
|
|
125
|
+
|
|
126
|
+
## Notes
|
|
127
|
+
|
|
128
|
+
- Keep `prd.md` focused on requirements, constraints, and acceptance criteria.
|
|
129
|
+
- Lightweight tasks can remain PRD-only.
|
|
130
|
+
- For complex tasks, add `design.md` for technical design and `implement.md` for execution planning before `task.py start-execution --check`.
|
|
131
|
+
"""
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
def default_verify_content(
|
|
135
|
+
locale: str | None = None,
|
|
136
|
+
repo_root: Path | None = None,
|
|
137
|
+
task_dir: Path | None = None,
|
|
138
|
+
) -> str:
|
|
139
|
+
"""Return the default verify.md skeleton seeded on task create."""
|
|
140
|
+
root = repo_root or get_repo_root()
|
|
141
|
+
resolved = normalize_locale(locale) or resolve_artifact_locale(task_dir, root)
|
|
142
|
+
template_path = locale_template_dir(resolved, root) / "default-verify.md"
|
|
143
|
+
if template_path.is_file():
|
|
144
|
+
return template_path.read_text(encoding="utf-8")
|
|
145
|
+
if resolved == "zh":
|
|
146
|
+
return """# 验证证据
|
|
147
|
+
|
|
148
|
+
## Planning check
|
|
149
|
+
|
|
150
|
+
_可选(Full 任务)— 记录规划阶段审查结果。_
|
|
151
|
+
|
|
152
|
+
## Execution evidence
|
|
153
|
+
|
|
154
|
+
### Validation commands
|
|
155
|
+
|
|
156
|
+
<!-- 示例:Validation commands: <命令> — <结果> -->
|
|
157
|
+
|
|
158
|
+
### Acceptance
|
|
159
|
+
|
|
160
|
+
<!-- 示例:Final acceptance evidence: <验收标准达成说明> -->
|
|
161
|
+
|
|
162
|
+
### Durable learning
|
|
163
|
+
|
|
164
|
+
<!-- 示例:Durable learning decision: no durable learning -->
|
|
165
|
+
"""
|
|
166
|
+
return """# Verification Evidence
|
|
167
|
+
|
|
168
|
+
## Planning check
|
|
169
|
+
|
|
170
|
+
_Optional for Full tasks — record planning review outcomes._
|
|
171
|
+
|
|
172
|
+
## Execution evidence
|
|
173
|
+
|
|
174
|
+
### Validation commands
|
|
175
|
+
|
|
176
|
+
<!-- Example: Validation commands: <command> — <outcome> -->
|
|
177
|
+
|
|
178
|
+
### Acceptance
|
|
179
|
+
|
|
180
|
+
<!-- Example: Final acceptance evidence: <criteria met> -->
|
|
181
|
+
|
|
182
|
+
### Durable learning
|
|
183
|
+
|
|
184
|
+
<!-- Example: Durable learning decision: no durable learning -->
|
|
185
|
+
"""
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
def default_prd_content(
|
|
189
|
+
title: str,
|
|
190
|
+
description: str | None = None,
|
|
191
|
+
locale: str | None = None,
|
|
192
|
+
repo_root: Path | None = None,
|
|
193
|
+
) -> str:
|
|
194
|
+
"""Return the default PRD skeleton for task create."""
|
|
195
|
+
root = repo_root or get_repo_root()
|
|
196
|
+
resolved = normalize_locale(locale) or resolve_artifact_locale(None, root)
|
|
197
|
+
template_path = locale_template_dir(resolved, root) / "default-prd.md"
|
|
198
|
+
if template_path.is_file():
|
|
199
|
+
template = template_path.read_text(encoding="utf-8")
|
|
200
|
+
else:
|
|
201
|
+
template = _builtin_prd_template(resolved)
|
|
202
|
+
|
|
203
|
+
if resolved == "zh":
|
|
204
|
+
goal = (description or "").strip() or "待补充。"
|
|
205
|
+
heading = title.strip() or "未命名任务"
|
|
206
|
+
else:
|
|
207
|
+
goal = (description or "").strip() or "TBD."
|
|
208
|
+
heading = title.strip() or "Untitled task"
|
|
209
|
+
|
|
210
|
+
return template.replace("{title}", heading).replace("{goal}", goal)
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
def artifact_locale_summary(repo_root: Path | None = None, task_dir: Path | None = None) -> str:
|
|
214
|
+
"""One-line summary for session context."""
|
|
215
|
+
root = repo_root or get_repo_root()
|
|
216
|
+
locale = resolve_artifact_locale(task_dir, root)
|
|
217
|
+
return (
|
|
218
|
+
f"Artifact locale: {locale} — human-reviewed artifacts "
|
|
219
|
+
f"(prd/design/implement/verify/handoff) use this language."
|
|
220
|
+
)
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
def set_workspace_artifact_locale(locale: str, repo_root: Path | None = None) -> None:
|
|
224
|
+
"""Patch .cstl/config.yaml with artifact_locale (non-destructive)."""
|
|
225
|
+
normalized = normalize_locale(locale)
|
|
226
|
+
if not normalized:
|
|
227
|
+
raise ValueError(f"artifact_locale must be one of: {', '.join(VALID_LOCALES)}")
|
|
228
|
+
|
|
229
|
+
root = repo_root or get_repo_root()
|
|
230
|
+
config_path = root / DIR_WORKFLOW / CONFIG_FILE
|
|
231
|
+
replacement = f"artifact_locale: {normalized}"
|
|
232
|
+
|
|
233
|
+
if config_path.is_file():
|
|
234
|
+
content = config_path.read_text(encoding="utf-8")
|
|
235
|
+
if _ARTIFACT_LOCALE_LINE_RE.search(content):
|
|
236
|
+
content = _ARTIFACT_LOCALE_LINE_RE.sub(replacement, content, count=1)
|
|
237
|
+
else:
|
|
238
|
+
section = (
|
|
239
|
+
"\n#-------------------------------------------------------------------------------\n"
|
|
240
|
+
"# Human-reviewed artifact locale (zh | en)\n"
|
|
241
|
+
"#-------------------------------------------------------------------------------\n"
|
|
242
|
+
"# Language for prd/design/implement/verify/handoff and task create seeds.\n"
|
|
243
|
+
"# Does NOT translate CLI UI or existing archived tasks.\n"
|
|
244
|
+
f"\n{replacement}\n"
|
|
245
|
+
)
|
|
246
|
+
content = content.rstrip() + section
|
|
247
|
+
config_path.write_text(content if content.endswith("\n") else content + "\n", encoding="utf-8")
|
|
248
|
+
return
|
|
249
|
+
|
|
250
|
+
config_path.parent.mkdir(parents=True, exist_ok=True)
|
|
251
|
+
config_path.write_text(
|
|
252
|
+
"# Trellis Configuration\n"
|
|
253
|
+
f"{replacement}\n",
|
|
254
|
+
encoding="utf-8",
|
|
255
|
+
)
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
def set_task_artifact_locale(task_dir: Path, locale: str, repo_root: Path | None = None) -> None:
|
|
259
|
+
"""Write task.json meta.artifact_locale."""
|
|
260
|
+
_ = repo_root
|
|
261
|
+
normalized = normalize_locale(locale)
|
|
262
|
+
if not normalized:
|
|
263
|
+
raise ValueError(f"artifact_locale must be one of: {', '.join(VALID_LOCALES)}")
|
|
264
|
+
|
|
265
|
+
task_json = task_dir / FILE_TASK_JSON
|
|
266
|
+
if not task_json.is_file():
|
|
267
|
+
raise FileNotFoundError(f"task.json not found: {task_json}")
|
|
268
|
+
|
|
269
|
+
data = read_json(task_json)
|
|
270
|
+
if not isinstance(data, dict):
|
|
271
|
+
raise ValueError(f"invalid task.json: {task_json}")
|
|
272
|
+
|
|
273
|
+
meta = data.get("meta")
|
|
274
|
+
if not isinstance(meta, dict):
|
|
275
|
+
meta = {}
|
|
276
|
+
meta[_ARTIFACT_LOCALE_KEY] = normalized
|
|
277
|
+
data["meta"] = meta
|
|
278
|
+
write_json(task_json, data)
|
|
@@ -671,17 +671,33 @@ def _ordered_routes(
|
|
|
671
671
|
],
|
|
672
672
|
"rationale": cg_rationale,
|
|
673
673
|
})
|
|
674
|
+
append({
|
|
675
|
+
"id": "definition-jump-native",
|
|
676
|
+
"role": "exact",
|
|
677
|
+
"sourceFamily": "rg",
|
|
678
|
+
"commands": [
|
|
679
|
+
"rg <symbol> --glob '*.{py,ts,tsx,js}'",
|
|
680
|
+
"Read <file> at matched definition line range",
|
|
681
|
+
],
|
|
682
|
+
"rationale": (
|
|
683
|
+
"Prefer Cursor native: Grep for named-symbol definition, then Read "
|
|
684
|
+
"to verify (GO_TO_DEFINITION not in Agent tool table per cursor.com/docs/agent/overview)."
|
|
685
|
+
),
|
|
686
|
+
"platformNative": True,
|
|
687
|
+
})
|
|
674
688
|
append({
|
|
675
689
|
"id": "lsp-navigation",
|
|
676
690
|
"role": "ast",
|
|
677
691
|
"sourceFamily": "codegraph",
|
|
678
692
|
"commands": [
|
|
693
|
+
"codegraph_explore <symbol-or-question>",
|
|
679
694
|
"codegraph_node <symbol> --includeCode",
|
|
680
695
|
"codegraph_search <symbol>",
|
|
681
696
|
],
|
|
682
697
|
"rationale": (
|
|
683
|
-
"
|
|
684
|
-
"
|
|
698
|
+
"Own/codegraph: structural definition/reference when Grep+Read is "
|
|
699
|
+
"ambiguous (cross-package traps, overloads) or blast/caller context "
|
|
700
|
+
"is needed; GO_TO_DEFINITION not exposed in Agent."
|
|
685
701
|
),
|
|
686
702
|
"platformNative": False,
|
|
687
703
|
})
|
|
@@ -707,9 +723,28 @@ def _ordered_routes(
|
|
|
707
723
|
others = [r for r in routes if r.get("role") not in ("ast",)]
|
|
708
724
|
routes = structural + others
|
|
709
725
|
|
|
726
|
+
routes = _prefer_native_definition_before_codegraph(routes)
|
|
727
|
+
|
|
710
728
|
return [{**route, "order": index + 1} for index, route in enumerate(routes)]
|
|
711
729
|
|
|
712
730
|
|
|
731
|
+
def _prefer_native_definition_before_codegraph(
|
|
732
|
+
routes: list[dict[str, object]],
|
|
733
|
+
) -> list[dict[str, object]]:
|
|
734
|
+
"""Keep definition-jump-native (Grep+Read) before lsp-navigation (codegraph)."""
|
|
735
|
+
ids = {str(r.get("id", "")) for r in routes}
|
|
736
|
+
if "definition-jump-native" not in ids or "lsp-navigation" not in ids:
|
|
737
|
+
return routes
|
|
738
|
+
native = next(r for r in routes if str(r.get("id")) == "definition-jump-native")
|
|
739
|
+
rest = [r for r in routes if str(r.get("id")) != "definition-jump-native"]
|
|
740
|
+
lsp_idx = next(
|
|
741
|
+
(i for i, r in enumerate(rest) if str(r.get("id")) == "lsp-navigation"),
|
|
742
|
+
len(rest),
|
|
743
|
+
)
|
|
744
|
+
rest.insert(lsp_idx, native)
|
|
745
|
+
return rest
|
|
746
|
+
|
|
747
|
+
|
|
713
748
|
def _fallback_hints(
|
|
714
749
|
intents: list[dict[str, object]],
|
|
715
750
|
include_optional_adapters: bool,
|
|
@@ -167,6 +167,7 @@ def _next_content_line(lines: list[str], start: int) -> tuple[int, str]:
|
|
|
167
167
|
DEFAULT_SESSION_COMMIT_MESSAGE = "chore: record journal"
|
|
168
168
|
DEFAULT_MAX_JOURNAL_LINES = 2000
|
|
169
169
|
DEFAULT_SESSION_AUTO_COMMIT = True
|
|
170
|
+
DEFAULT_JOURNAL_SNIPPET_ENABLED = False
|
|
170
171
|
|
|
171
172
|
CONFIG_FILE = "config.yaml"
|
|
172
173
|
|
|
@@ -243,6 +244,37 @@ def get_session_auto_commit(repo_root: Path | None = None) -> bool:
|
|
|
243
244
|
return DEFAULT_SESSION_AUTO_COMMIT
|
|
244
245
|
|
|
245
246
|
|
|
247
|
+
def get_journal_snippet_enabled(repo_root: Path | None = None) -> bool:
|
|
248
|
+
"""Whether get_context should inject a compact recent journal summary.
|
|
249
|
+
|
|
250
|
+
Default: ``False`` (metadata-only JOURNAL FILE section).
|
|
251
|
+
Set ``context_injection.journal_snippet: true`` in ``.cstl/config.yaml`` to
|
|
252
|
+
append a ≤150-token summary from the latest session entry in the active
|
|
253
|
+
journal file.
|
|
254
|
+
|
|
255
|
+
Accepts native YAML booleans and the string aliases
|
|
256
|
+
``true / false / yes / no / 1 / 0 / on / off`` (case-insensitive).
|
|
257
|
+
Invalid values fall back to ``False`` with a stderr warning.
|
|
258
|
+
"""
|
|
259
|
+
config = _load_config(repo_root)
|
|
260
|
+
block = config.get("context_injection")
|
|
261
|
+
if not isinstance(block, dict):
|
|
262
|
+
return DEFAULT_JOURNAL_SNIPPET_ENABLED
|
|
263
|
+
raw = block.get("journal_snippet", DEFAULT_JOURNAL_SNIPPET_ENABLED)
|
|
264
|
+
if isinstance(raw, bool):
|
|
265
|
+
return raw
|
|
266
|
+
s = str(raw).strip().lower()
|
|
267
|
+
if s in ("true", "yes", "1", "on"):
|
|
268
|
+
return True
|
|
269
|
+
if s in ("false", "no", "0", "off"):
|
|
270
|
+
return False
|
|
271
|
+
print(
|
|
272
|
+
f"[WARN] invalid context_injection.journal_snippet value: {raw!r}; using false (default)",
|
|
273
|
+
file=sys.stderr,
|
|
274
|
+
)
|
|
275
|
+
return DEFAULT_JOURNAL_SNIPPET_ENABLED
|
|
276
|
+
|
|
277
|
+
|
|
246
278
|
def get_smart_search_command_config(repo_root: Path | None = None) -> str | None:
|
|
247
279
|
"""Optional executable name or path from ``smart_search.command`` in config."""
|
|
248
280
|
config = _load_config(repo_root)
|
|
@@ -435,6 +467,13 @@ def resolve_package(
|
|
|
435
467
|
return None
|
|
436
468
|
|
|
437
469
|
|
|
470
|
+
def get_artifact_locale(repo_root: Path | None = None) -> str:
|
|
471
|
+
"""Get workspace human-reviewed artifact locale (zh | en, default zh)."""
|
|
472
|
+
from .artifact_locale import get_workspace_artifact_locale
|
|
473
|
+
|
|
474
|
+
return get_workspace_artifact_locale(repo_root)
|
|
475
|
+
|
|
476
|
+
|
|
438
477
|
def get_spec_scope(repo_root: Path | None = None) -> list[str] | str | None:
|
|
439
478
|
"""Get session.spec_scope configuration.
|
|
440
479
|
|