@blxzer/cursor-trellis 0.3.6 → 0.4.1

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 (67) hide show
  1. package/CHANGELOG.md +39 -1
  2. package/README.md +10 -6
  3. package/dist/commands/update.d.ts.map +1 -1
  4. package/dist/commands/update.js +11 -1
  5. package/dist/commands/update.js.map +1 -1
  6. package/dist/configurators/shared.d.ts.map +1 -1
  7. package/dist/configurators/shared.js +2 -1
  8. package/dist/configurators/shared.js.map +1 -1
  9. package/dist/configurators/workflow.d.ts +7 -0
  10. package/dist/configurators/workflow.d.ts.map +1 -1
  11. package/dist/configurators/workflow.js +61 -2
  12. package/dist/configurators/workflow.js.map +1 -1
  13. package/dist/constants/paths.d.ts +4 -0
  14. package/dist/constants/paths.d.ts.map +1 -1
  15. package/dist/constants/paths.js +4 -0
  16. package/dist/constants/paths.js.map +1 -1
  17. package/dist/migrations/manifests/0.4.0.json +9 -0
  18. package/dist/migrations/manifests/0.4.1.json +9 -0
  19. package/dist/templates/common/{skills/check.md → bundled-skills/cstl-check/SKILL.md} +55 -7
  20. package/dist/templates/common/bundled-skills/cstl-check/references/fowler-12-smells.md +28 -0
  21. package/dist/templates/common/bundled-skills/cstl-handoff/SKILL.md +117 -0
  22. package/dist/templates/common/bundled-skills/cstl-micro-grill/SKILL.md +6 -0
  23. package/dist/templates/common/skills/brainstorm.md +15 -0
  24. package/dist/templates/cursor/agents/cstl-check.md +14 -0
  25. package/dist/templates/cursor/commands/handoff.md +99 -0
  26. package/dist/templates/markdown/index.d.ts +6 -0
  27. package/dist/templates/markdown/index.d.ts.map +1 -1
  28. package/dist/templates/markdown/index.js +6 -0
  29. package/dist/templates/markdown/index.js.map +1 -1
  30. package/dist/templates/markdown/spec/guides/artifact-locale-guide.md.txt +93 -0
  31. package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +7 -7
  32. package/dist/templates/markdown/spec/guides/cursor-subagent-policy.md.txt +10 -8
  33. package/dist/templates/markdown/spec/guides/debug-loop-guide.md.txt +227 -0
  34. package/dist/templates/markdown/spec/guides/goal-release-regression-runbook.md.txt +132 -0
  35. package/dist/templates/markdown/spec/guides/index.md.txt +37 -0
  36. package/dist/templates/markdown/spec/guides/prototype-guide.md.txt +139 -0
  37. package/dist/templates/markdown/spec/guides/retrieval-daily-guide.md.txt +4 -0
  38. package/dist/templates/markdown/spec/guides/test-discipline-guide.md.txt +138 -0
  39. package/dist/templates/markdown/spec/guides/verification-strength-guide.md.txt +1 -0
  40. package/dist/templates/trellis/CONTEXT.md +53 -0
  41. package/dist/templates/trellis/docs/adr/README.md +21 -0
  42. package/dist/templates/trellis/index.d.ts +14 -0
  43. package/dist/templates/trellis/index.d.ts.map +1 -1
  44. package/dist/templates/trellis/index.js +29 -0
  45. package/dist/templates/trellis/index.js.map +1 -1
  46. package/dist/templates/trellis/pool/README.md +103 -0
  47. package/dist/templates/trellis/pool/items/.gitkeep +0 -0
  48. package/dist/templates/trellis/pool/plan.md +26 -0
  49. package/dist/templates/trellis/scripts/common/artifact_locale.py +16 -0
  50. package/dist/templates/trellis/scripts/common/pool_store.py +702 -0
  51. package/dist/templates/trellis/scripts/common/task_dashboard.py +8 -0
  52. package/dist/templates/trellis/scripts/common/task_dependencies.py +673 -0
  53. package/dist/templates/trellis/scripts/common/task_gates.py +58 -5
  54. package/dist/templates/trellis/scripts/common/task_store.py +256 -0
  55. package/dist/templates/trellis/scripts/common/test_depends_mode_block.py +489 -0
  56. package/dist/templates/trellis/scripts/common/test_pool_store.py +428 -0
  57. package/dist/templates/trellis/scripts/common/test_task_dependencies.py +345 -0
  58. package/dist/templates/trellis/scripts/pool.py +192 -0
  59. package/dist/templates/trellis/scripts/task.py +66 -1
  60. package/dist/templates/trellis/scripts/verify_evidence_probe.py +138 -0
  61. package/dist/templates/trellis/tasks/locale/en/default-prd.md +8 -0
  62. package/dist/templates/trellis/tasks/locale/zh/default-prd.md +8 -0
  63. package/dist/templates/trellis/workflow.md +34 -2
  64. package/dist/utils/manifest-prune.d.ts.map +1 -1
  65. package/dist/utils/manifest-prune.js +7 -0
  66. package/dist/utils/manifest-prune.js.map +1 -1
  67. package/package.json +2 -2
@@ -0,0 +1,138 @@
1
+ #!/usr/bin/env python3
2
+ """Verification evidence probe — repeatable false-green detection.
3
+
4
+ Evaluates a fixture verify.md against closeout-profile evidence requirements
5
+ by reusing task_gates.verify_evidence_status() (no duplicate rule set).
6
+
7
+ Exit 0 when actual outcome matches --expect; exit 1 on mismatch or error.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import argparse
13
+ import io
14
+ import shutil
15
+ import sys
16
+ import tempfile
17
+ from pathlib import Path
18
+
19
+ _SCRIPTS = Path(__file__).resolve().parent
20
+ if str(_SCRIPTS) not in sys.path:
21
+ sys.path.insert(0, str(_SCRIPTS))
22
+
23
+ from common.task_gates import verify_evidence_status # noqa: E402
24
+
25
+ if sys.platform.startswith("win"):
26
+ for _stream_name in ("stdin", "stdout", "stderr"):
27
+ _stream = getattr(sys, _stream_name, None)
28
+ if _stream is None and _stream_name != "stdin":
29
+ continue
30
+ if _stream is None:
31
+ continue
32
+ if hasattr(_stream, "reconfigure"):
33
+ try:
34
+ _stream.reconfigure(encoding="utf-8", errors="replace")
35
+ except Exception:
36
+ pass
37
+ elif hasattr(_stream, "detach"):
38
+ try:
39
+ setattr(
40
+ sys,
41
+ _stream_name,
42
+ io.TextIOWrapper(_stream.detach(), encoding="utf-8", errors="replace"),
43
+ )
44
+ except Exception:
45
+ pass
46
+
47
+ PROFILE_REQUIRED_SIGNALS: dict[str, list[str]] = {
48
+ "lite": ["validation", "acceptance", "durable_learning"],
49
+ "full": [
50
+ "validation",
51
+ "acceptance",
52
+ "durable_learning",
53
+ "check_evidence",
54
+ "reviewed_change_set",
55
+ ],
56
+ "parent": [
57
+ "validation",
58
+ "acceptance",
59
+ "durable_learning",
60
+ "integration",
61
+ ],
62
+ }
63
+
64
+
65
+ def evaluate_fixture(fixture_path: Path, profile: str) -> tuple[bool, dict[str, bool], list[str]]:
66
+ """Return (passes, status_map, missing_signals) for a fixture verify.md."""
67
+ profile = profile.lower().strip()
68
+ if profile not in PROFILE_REQUIRED_SIGNALS:
69
+ raise ValueError(f"unknown profile: {profile}")
70
+
71
+ required = PROFILE_REQUIRED_SIGNALS[profile]
72
+ task_data: dict = {"children": ["probe-child"] if profile == "parent" else []}
73
+
74
+ with tempfile.TemporaryDirectory(prefix="cstl-verify-probe-") as tmp:
75
+ task_dir = Path(tmp)
76
+ shutil.copy2(fixture_path, task_dir / "verify.md")
77
+ status = verify_evidence_status(task_dir, task_data)
78
+
79
+ missing = [signal for signal in required if not status.get(signal)]
80
+ return len(missing) == 0, status, missing
81
+
82
+
83
+ def main(argv: list[str] | None = None) -> int:
84
+ parser = argparse.ArgumentParser(
85
+ description="Probe verify.md fixture against closeout evidence requirements.",
86
+ )
87
+ parser.add_argument(
88
+ "--fixture",
89
+ required=True,
90
+ type=Path,
91
+ help="Path to fixture verify.md",
92
+ )
93
+ parser.add_argument(
94
+ "--profile",
95
+ required=True,
96
+ choices=sorted(PROFILE_REQUIRED_SIGNALS),
97
+ help="Closeout profile to evaluate against",
98
+ )
99
+ parser.add_argument(
100
+ "--expect",
101
+ required=True,
102
+ choices=("pass", "fail"),
103
+ help="Expected probe outcome",
104
+ )
105
+ args = parser.parse_args(argv)
106
+
107
+ fixture = args.fixture.resolve()
108
+ if not fixture.is_file():
109
+ print(f"verify-evidence-probe: fixture not found: {fixture}", file=sys.stderr)
110
+ return 2
111
+
112
+ try:
113
+ passes, status, missing = evaluate_fixture(fixture, args.profile)
114
+ except ValueError as exc:
115
+ print(f"verify-evidence-probe: {exc}", file=sys.stderr)
116
+ return 2
117
+
118
+ actual = "pass" if passes else "fail"
119
+ expected = args.expect.lower()
120
+
121
+ print(f"fixture: {fixture}")
122
+ print(f"profile: {args.profile}")
123
+ print(f"status: {status}")
124
+ if missing:
125
+ print(f"missing: {', '.join(missing)}")
126
+ print(f"actual: {actual}")
127
+ print(f"expect: {expected}")
128
+
129
+ if actual == expected:
130
+ print("result: OK")
131
+ return 0
132
+
133
+ print("result: MISMATCH", file=sys.stderr)
134
+ return 1
135
+
136
+
137
+ if __name__ == "__main__":
138
+ raise SystemExit(main())
@@ -4,6 +4,10 @@
4
4
 
5
5
  {goal}
6
6
 
7
+ ## User Stories
8
+
9
+ - [ ] (User-visible behaviors; enumerate as a long checkable list, not implementation steps)
10
+
7
11
  ## Requirements
8
12
 
9
13
  - TBD
@@ -12,6 +16,10 @@
12
16
 
13
17
  - [ ] TBD
14
18
 
19
+ ## Implementation Decisions
20
+
21
+ - (Recorded decisions; **do not write file paths** — paths go stale; keep them in design/implement)
22
+
15
23
  ## Notes
16
24
 
17
25
  - Keep `prd.md` focused on requirements, constraints, and acceptance criteria.
@@ -4,6 +4,10 @@
4
4
 
5
5
  {goal}
6
6
 
7
+ ## 用户故事
8
+
9
+ - [ ] (用户可见行为;用极长可勾选列表穷举,不是实现步骤)
10
+
7
11
  ## 需求
8
12
 
9
13
  - 待补充
@@ -12,6 +16,10 @@
12
16
 
13
17
  - [ ] 待补充
14
18
 
19
+ ## 实现决策
20
+
21
+ - (已定决策;**不要写文件路径**——路径会过时,放 design/implement)
22
+
15
23
  ## 备注
16
24
 
17
25
  - `prd.md` 聚焦需求、约束与验收标准。
@@ -10,6 +10,8 @@
10
10
  4. **Incremental development** — one task at a time
11
11
  5. **Capture learnings** — after each task, review and write new knowledge back to spec
12
12
 
13
+ **Session boundary** — Continue → clear → handoff (`cstl-handoff`, when the work needs to travel) → subagent → compact. A task directory's `handoff.md` is integration/delivery evidence, not a session handoff document.
14
+
13
15
  ---
14
16
 
15
17
  ## Trellis System
@@ -188,6 +190,8 @@ Consent gate. After classifying into any mode that creates a task, ask the user
188
190
 
189
191
  Selected-task continuity. When a `selected_task` already exists, do not rerun global classification on every follow-up; continue inside the selected task unless a strong conflict exists (explicit exit/switch/create language, out-of-scope request, different artifact/archive target, new independent deliverable, contract-changing request, or evidence pollution risk).
190
192
 
193
+ Review-pool boundary. In-session requests that are clear and directly actionable go straight to Lite / Full / Parent task creation and do **not** enter the pool (`.cstl/pool/`). Ideas, directions, gaps, or unformed thoughts go into the pool. Only `accepted` pool entries may be turned into tasks via `task.py create`. The pool is a candidate queue; a Task is a commitment. See `.cstl/pool/README.md` for the full state machine and role split. Pool entry ↔ task links and pool/plan validation are maintained via the pool CLI: `python3 ./.cstl/scripts/pool.py --help` (link/unlink/validate/plan-check/show). Choosing the next item: treat `plan.md` closed/mainline sections as authoritative → item status → `task.py list` → ask the user; landed items/mechanisms must leave fog (discipline in `.cstl/pool/README.md` 「下一项怎么选 + fog 卫生」).
194
+
191
195
  ### Task Ladder And Routing
192
196
 
193
197
  Classify by risk and persistence, not raw effort size. A short change to durable framework semantics can require a Full Task; a long conversation can remain No Task when it leaves no durable project state.
@@ -254,7 +258,35 @@ Details: archived `06-15-child-phase3-task-ladder` → `research/task-ladder-ite
254
258
 
255
259
  Use a parent task when one user request contains several independently verifiable deliverables. The parent task owns the source requirement set, the task map, cross-child acceptance criteria, and final integration review; it normally should not be the implementation target unless it also has direct work.
256
260
 
257
- Use child tasks for deliverables that can be planned, implemented, checked, and archived independently. Parent/child structure is not a dependency system: if one child must wait for another, write that ordering in the child `prd.md` / `implement.md` and keep each child's acceptance criteria testable.
261
+ Use child tasks for deliverables that can be planned, implemented, checked, and archived independently. Ordering between deliverables is an explicit declaration, not an implicit system: child-level ordering lives in the Parent `task-map.md` `children[].depends_on`, and task-level ordering in task.json `depends_on` (`task.py set-deps <task> <dep...>`). By default these declarations are soft hints only — the dashboard and `start-execution --check` show unmet / dangling / cyclic dependencies as warnings and do not block a transition (a task may opt into hard gates with `depends_mode: block`, see Task dependencies below); `depends_on` declares ordering, it does not schedule work. Keep each child's acceptance criteria testable on its own, and keep the Parent as the integration authority.
262
+
263
+ ### Task dependencies (Plan A / Plan B)
264
+
265
+ **任务依赖(Plan A / Plan B)**:顺序须显式声明;默认(`warn`)仅 dashboard / `start-execution --check` 软提示(WARN),不挡门禁;可 opt-in `block` 在 mutation 点硬挡(见下);不是调度器,也不替代 Parent 集成权威。
266
+
267
+ Ordering between deliverables is declared, never inferred: **Child-level** ordering lives in the Parent `task-map.md` `children[].depends_on` (consumed by `generate-child-prompt` and Child readiness; satisfied when the dependency is `integrated` or `cancelled`); **task-level** ordering lives in task.json `depends_on` (consumed by the dashboard and `start-execution --check`; satisfied when the dependency is `completed` — archived tasks count — or `cancelled`). Declare a dependency in exactly one place (do not dual-write).
268
+
269
+ Write task-level dependencies only via `task.py set-deps <task> <dep...>` (it normalizes the list, warns on dangling refs, and clears with no args). A dependency declared on a task that is later deleted becomes a dangling warning; clear it with `set-deps` first. Fix cycles by reordering who depends on whom.
270
+
271
+ `depends_on` is advisory by default: the dashboard, `start-execution --check`/`--approved`, and `set-deps` print `[dependencies] WARN:` lines and do **not block** any transition unless the task opts into Plan B. A WARN does not mean you may not proceed. It is not a scheduler (no auto-start, no auto-unlock, no cascade), and it does not replace the Parent's integration authority (integration and archive gates do not read dependencies). Task-level dependencies are not injected into child prompts (`parent_orchestration.py` is unchanged).
272
+
273
+ **Plan B(opt-in block)**:`meta.depends_mode`(`warn`(默认)| `block` | `off`)经 `task.py set-depends-mode <dir> <mode>` 设置。`block` 时,未满足(NOT_SATISFIED)/ 悬空(missing)/ pool 未就绪(UNRESOLVED)/ 环(cycle)在 **mutation 点** 升为 error;已满足(含 `cancelled`)不挡。`off` 静音(无 WARN 无 error)。
274
+
275
+ - `start-execution --check`:**永不因 deps FAIL**(仍 WARN,block 时提示 would-fail-approved)。
276
+ - `start-execution --approved`:本任务 meta 为 `block` 且未传 `--ignore-deps` → deps 进 errors / FAIL。
277
+ - `set-child-state <p> <c> working`:**Child** 的 meta 为 `block` 且未传 `--ignore-deps` → 拒绝(合并 Child task.json `depends_on` 与 task-map `children[].depends_on`,任一边 blocking 即挡);其它 state 不查。
278
+ - `--ignore-deps`:挂于 `--approved` 与 `set-child-state working`;成功路径把事件(`command`/`by`/`mode`/`blocking_summary` 等)append 到 `meta.depends_ignore_events`(cap 20),start-execution 与 `execution_approval` 同一次写盘。
279
+ - archive / integrate-child / set-deps / dashboard 不挡;`parent_orchestration.py` 零改。
280
+
281
+ `pool:Pxx` refs require the pool item to be linked (`pool.py link`); satisfaction is all-linked-tasks-done, otherwise UNRESOLVED — see `.cstl/pool/README.md`.
282
+
283
+ #### Vertical slice grain (Parent children)
284
+
285
+ - Prefer **vertical slices**: each Child cuts through the layers needed for one demonstrable outcome (not a horizontal layer-batch across the whole feature).
286
+ - Grain: **independently demoable** + **finishable in one context window**.
287
+ - Wide shape changes (renames, dual-write APIs, schema moves): prefer **expand → migrate → contract** (ship coexistence first, migrate callers in batches, then delete the old shape). Do not big-bang cut over.
288
+ - Ordering between children: declare in the Parent `task-map.md` `children[].depends_on` (Child level) or in task.json `depends_on` via `task.py set-deps` (task level, cross-Parent allowed). General `depends_on` (Plan A) is landed: it is parsed and surfaced as warnings by the dashboard and `start-execution --check`, never as hard blocks by default; optional hard blocking (Plan B, `depends_mode: block` via `task.py set-depends-mode`) is landed for `start-execution --approved` and `set-child-state working` (`--ignore-deps` + audit events). `parent_orchestration.py` stays unchanged.
289
+ - Pool / plan blocking edges already use **item ids** only (see `.cstl/pool/plan.md` conventions). Terminology: Child / slice / deliverable — not ticket/issue.
258
290
 
259
291
  Create new children with `task.py create "<title>" --slug <name> --parent <parent-dir>`. Link existing tasks with `task.py add-subtask <parent> <child>`, and unlink mistakes with `task.py remove-subtask <parent> <child>`.
260
292
 
@@ -447,7 +479,7 @@ When considering a parent/child split:
447
479
  - Use a parent task when one request contains several independently verifiable deliverables.
448
480
  - Parent tasks own source requirements, child-task mapping, cross-child acceptance criteria, and final integration review.
449
481
  - Child tasks own actual deliverables that can be planned, implemented, checked, and archived independently.
450
- - Parent/child structure is not a dependency system. If child B depends on child A, write that ordering in child B's `prd.md` / `implement.md`.
482
+ - Ordering between children is explicit `depends_on` (Parent `task-map.md` child entries and/or task-level `task.py set-deps`), not an implicit Parent/child edge. See Task dependencies (Plan A / Plan B).
451
483
  - Start the child task that owns the next deliverable. Do not start the parent unless the parent itself has direct implementation work.
452
484
 
453
485
  Return to this step whenever requirements change and revise the relevant artifact.
@@ -1 +1 @@
1
- {"version":3,"file":"manifest-prune.d.ts","sourceRoot":"","sources":["../../src/utils/manifest-prune.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAUH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,6EAA6E;IAC7E,MAAM,EAAE,cAAc,CAAC;CACxB;AAoDD,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,mBAAmB,EAAE,SAAS,MAAM,EAAE,EACtC,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,YAAiB,GACzB,WAAW,CAmCb"}
1
+ {"version":3,"file":"manifest-prune.d.ts","sourceRoot":"","sources":["../../src/utils/manifest-prune.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAWH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,6EAA6E;IAC7E,MAAM,EAAE,cAAc,CAAC;CACxB;AA0DD,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,mBAAmB,EAAE,SAAS,MAAM,EAAE,EACtC,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,YAAiB,GACzB,WAAW,CAmCb"}
@@ -33,6 +33,7 @@
33
33
  import fs from "node:fs";
34
34
  import path from "node:path";
35
35
  import { collectPlatformTemplates } from "../configurators/index.js";
36
+ import { getWorkflowRootTemplateFiles } from "../configurators/workflow.js";
36
37
  import { FILE_NAMES } from "../constants/paths.js";
37
38
  import { getAllMigrations } from "../migrations/index.js";
38
39
  import { saveHashes } from "./template-hash.js";
@@ -56,6 +57,12 @@ function buildKnownKeys(configuredPlatforms) {
56
57
  known.add(toPosix(key));
57
58
  }
58
59
  }
60
+ // Root-level files written by the workflow configurator (CONTEXT.md,
61
+ // docs/adr/README.md) — they live outside platform config dirs but are
62
+ // trellis-owned, so uninstall must recognize and remove them.
63
+ for (const key of getWorkflowRootTemplateFiles().keys()) {
64
+ known.add(toPosix(key));
65
+ }
59
66
  // Preserve any path referenced by a migration: legitimate pending
60
67
  // rename/delete operations need to resolve their `from` (and the target's
61
68
  // hash record for `to`) even if the current registry doesn't list it.
@@ -1 +1 @@
1
- {"version":3,"file":"manifest-prune.js","sourceRoot":"","sources":["../../src/utils/manifest-prune.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest-prune.js","sourceRoot":"","sources":["../../src/utils/manifest-prune.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blxzer/cursor-trellis",
3
- "version": "0.3.6",
3
+ "version": "0.4.1",
4
4
  "description": "AI capabilities grow like ivy — Trellis provides the structure to guide them along a disciplined path",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -36,7 +36,7 @@
36
36
  "inquirer": "^9.3.7",
37
37
  "undici": "^6.21.0",
38
38
  "zod": "^4.4.2",
39
- "@blxzer/cursor-trellis-core": "0.3.6"
39
+ "@blxzer/cursor-trellis-core": "0.4.1"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@eslint/js": "^9.18.0",