@blxzer/cursor-trellis 0.3.2 → 0.3.4

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 (30) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.zh-CN.md +1 -0
  3. package/dist/commands/uninstall.d.ts.map +1 -1
  4. package/dist/commands/uninstall.js +59 -5
  5. package/dist/commands/uninstall.js.map +1 -1
  6. package/dist/migrations/manifests/0.3.2.json +16 -0
  7. package/dist/migrations/manifests/0.3.3.json +9 -0
  8. package/dist/migrations/manifests/0.3.4.json +9 -0
  9. package/dist/templates/common/bundled-skills/cstl-meta/references/platform-files/hooks-and-settings.md +2 -1
  10. package/dist/templates/cursor/fixtures/expected-rules.d.ts.map +1 -1
  11. package/dist/templates/cursor/fixtures/expected-rules.js +5 -0
  12. package/dist/templates/cursor/fixtures/expected-rules.js.map +1 -1
  13. package/dist/templates/cursor/hooks.json +7 -0
  14. package/dist/templates/cursor/rules/cstl-session-rename.mdc +31 -0
  15. package/dist/templates/markdown/spec/guides/cursor-trellis-release-coexistence-guide.md.txt +166 -0
  16. package/dist/templates/markdown/spec/guides/index.md.txt +1 -0
  17. package/dist/templates/shared-hooks/index.d.ts +1 -1
  18. package/dist/templates/shared-hooks/index.d.ts.map +1 -1
  19. package/dist/templates/shared-hooks/index.js +1 -0
  20. package/dist/templates/shared-hooks/index.js.map +1 -1
  21. package/dist/templates/shared-hooks/rename-session-for-task.py +231 -0
  22. package/dist/templates/trellis/tasks/templates/release-execution/design.md +60 -60
  23. package/dist/utils/agents-md.d.ts +10 -0
  24. package/dist/utils/agents-md.d.ts.map +1 -1
  25. package/dist/utils/agents-md.js +25 -0
  26. package/dist/utils/agents-md.js.map +1 -1
  27. package/dist/utils/template-hash.d.ts.map +1 -1
  28. package/dist/utils/template-hash.js +39 -8
  29. package/dist/utils/template-hash.js.map +1 -1
  30. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -11,6 +11,27 @@ SemVer: [semver.org](https://semver.org/spec/v2.0.0.html).
11
11
 
12
12
  ## [Unreleased]
13
13
 
14
+ ## [0.3.4] - 2026-07-04
15
+
16
+ ### Added
17
+
18
+ - **feat(cursor)**: auto-rename the **main** Agent chat tab to the cstl task **directory name** after `task.py select` or `task.py start-execution --approved` (`rename-session-for-task.py` `afterShellExecution` hook + `cstl-session-rename.mdc` rule). Uses `cursor-app-control` `rename_chat` when available; skips silently when MCP is missing. Does not rename on `task.py create`. Native and BYOK share the same path.
19
+
20
+ ## [0.3.3] - 2026-07-04
21
+
22
+ Follow-up polish after 0.3.2 coexistence release: closes known limitations from the runtime-isolation task.
23
+
24
+ ### Added
25
+
26
+ - **feat(uninstall)**: `cstl uninstall` strips the `<!-- CSTL:START -->` managed block from `AGENTS.md` while preserving an upstream `<!-- TRELLIS:START -->` block and user content (`removeCstlManagedBlock`).
27
+ - **feat(hash)**: `.template-hashes.json` tracks **CSTL block hash only** for `AGENTS.md` — upstream TRELLIS block or out-of-block user edits no longer false-positive as "modified" on `cstl update` in coexistence repos.
28
+ - **docs(spec)**: `.cstl/spec/guides/cursor-trellis-release-coexistence-guide.md` — npm publish runbook (`publish-packages.js`), `cstl-v*` tag convention, coexistence scenario matrix.
29
+ - **ci**: `.github/workflows/publish.yml` — publish on `cstl-v*` tag push (requires `NPM_TOKEN` secret).
30
+
31
+ ### Changed
32
+
33
+ - **docs(maintainers)**: release index points at the spec guide + `cstl-v*` / CI publish notes.
34
+
14
35
  ## [0.3.2] - 2026-07-04
15
36
 
16
37
  > **0.3.1 was withdrawn** shortly after publish: the initial `npm publish` did not rewrite the `workspace:*` dependency on `@blxzer/cursor-trellis-core` (and core@0.3.1 was not published alongside), so 0.3.1 was uninstallable (`EUNSUPPORTEDPROTOCOL`). 0.3.2 reissues the same content via the proper `pnpm publish` orchestration (`publish-packages.js` publishes core first, then cli, rewriting `workspace:*` to the resolved version).
package/README.zh-CN.md CHANGED
@@ -197,6 +197,7 @@ smart-search --version
197
197
  | --- | --- |
198
198
  | `pnpm build` | `tsc` + 拷贝模板 |
199
199
  | `pnpm test` | Vitest |
200
+ | `pnpm mirror-check` | Dogfood `.cursor` / `.agents` vs templates |
200
201
  | `pnpm run sync:smart-search` | 刷新 vendor |
201
202
 
202
203
  Release 与 npm 发布流程**不在**公开 README 中;见内部维护文档。
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAuBH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA2RD;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwG7E"}
1
+ {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA2BH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAuWD;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwG7E"}
@@ -21,11 +21,12 @@ import path from "node:path";
21
21
  import readline from "node:readline";
22
22
  import chalk from "chalk";
23
23
  import inquirer from "inquirer";
24
- import { DIR_NAMES } from "../constants/paths.js";
24
+ import { DIR_NAMES, FILE_NAMES } from "../constants/paths.js";
25
25
  import { loadHashes } from "../utils/template-hash.js";
26
26
  import { cleanupEmptyDirs } from "./update.js";
27
27
  import { ALL_MANAGED_DIRS, getConfiguredPlatforms, } from "../configurators/index.js";
28
28
  import { pruneOrphanManifestKeys } from "../utils/manifest-prune.js";
29
+ import { hasCstlBlock, removeCstlManagedBlock, } from "../utils/agents-md.js";
29
30
  import { isCwdHomedir, homedirGuardMessage, homedirBypassEnabled, } from "../utils/cwd-guard.js";
30
31
  import { scrubHooksJson } from "../utils/uninstall-scrubbers.js";
31
32
  /**
@@ -47,6 +48,25 @@ function buildStructuredFileSpecs() {
47
48
  }
48
49
  return map;
49
50
  }
51
+ /**
52
+ * Decide the uninstall action for the root `AGENTS.md`. Independent of the
53
+ * manifest because AGENTS.md is pruned from it (see `pruneOrphanManifestKeys`).
54
+ */
55
+ function planAgentsMdAction(cwd) {
56
+ const absPath = path.join(cwd, FILE_NAMES.AGENTS);
57
+ if (!fs.existsSync(absPath)) {
58
+ return { kind: "none" };
59
+ }
60
+ const content = fs.readFileSync(absPath, "utf-8");
61
+ if (!hasCstlBlock(content)) {
62
+ return { kind: "none" };
63
+ }
64
+ const stripped = removeCstlManagedBlock(content);
65
+ if (stripped.trim() === "") {
66
+ return { kind: "delete", absPath };
67
+ }
68
+ return { kind: "strip", absPath, strippedContent: stripped };
69
+ }
50
70
  /**
51
71
  * Walk through the manifest and decide, for each entry, whether it is a plain
52
72
  * deletion or a structured modification (or fully-empty modification → still
@@ -58,6 +78,13 @@ function buildPlan(cwd, hashes) {
58
78
  const deletions = [];
59
79
  const modifications = [];
60
80
  for (const posixPath of allPosixPaths) {
81
+ // AGENTS.md is handled by `plan.agentsMd` (strip CSTL block, preserve any
82
+ // upstream TRELLIS block + user content). Skip it here so the manifest
83
+ // loop never deletes the whole file — that would drop the upstream block
84
+ // and user content in a coexistence repo.
85
+ if (posixPath === FILE_NAMES.AGENTS) {
86
+ continue;
87
+ }
61
88
  const absPath = path.join(cwd, ...posixPath.split("/"));
62
89
  const spec = structured.get(posixPath);
63
90
  if (!spec) {
@@ -92,6 +119,7 @@ function buildPlan(cwd, hashes) {
92
119
  deletions,
93
120
  modifications,
94
121
  removeTrellisDir: true,
122
+ agentsMd: planAgentsMdAction(cwd),
95
123
  };
96
124
  }
97
125
  /**
@@ -103,19 +131,30 @@ function renderPlan(cwd, plan) {
103
131
  const deletePaths = plan.deletions
104
132
  .filter((d) => !d.missing)
105
133
  .map((d) => d.posixPath);
106
- console.log(chalk.red.bold(`Will be deleted (${deletePaths.length + 1} entries):`));
134
+ const agentsDelete = plan.agentsMd.kind === "delete";
135
+ const cstlDirShown = plan.removeTrellisDir && fs.existsSync(trellisDir);
136
+ const deleteCount = deletePaths.length + (cstlDirShown ? 1 : 0) + (agentsDelete ? 1 : 0);
137
+ console.log(chalk.red.bold(`Will be deleted (${deleteCount} entries):`));
107
138
  for (const p of deletePaths) {
108
139
  console.log(` ${chalk.red("-")} ${p}`);
109
140
  }
110
- if (plan.removeTrellisDir && fs.existsSync(trellisDir)) {
141
+ if (agentsDelete) {
142
+ console.log(` ${chalk.red("-")} ${FILE_NAMES.AGENTS} ${chalk.gray("(only the cursor-trellis managed block was present)")}`);
143
+ }
144
+ if (cstlDirShown) {
111
145
  console.log(` ${chalk.red("-")} ${DIR_NAMES.WORKFLOW}/ ${chalk.gray("(entire directory, including tasks/runtime/config)")}`);
112
146
  }
113
- if (plan.modifications.length > 0) {
147
+ const agentsStrip = plan.agentsMd.kind === "strip";
148
+ const modCount = plan.modifications.length + (agentsStrip ? 1 : 0);
149
+ if (modCount > 0) {
114
150
  console.log();
115
- console.log(chalk.yellow.bold(`Will be modified (${plan.modifications.length} files):`));
151
+ console.log(chalk.yellow.bold(`Will be modified (${modCount} files):`));
116
152
  for (const m of plan.modifications) {
117
153
  console.log(` ${chalk.yellow("~")} ${m.posixPath} ${chalk.gray(`(${m.reason})`)}`);
118
154
  }
155
+ if (agentsStrip) {
156
+ console.log(` ${chalk.yellow("~")} ${FILE_NAMES.AGENTS} ${chalk.gray("(strip cursor-trellis managed block; keep upstream + user content)")}`);
157
+ }
119
158
  }
120
159
  const skipped = plan.deletions.filter((d) => d.missing);
121
160
  if (skipped.length > 0) {
@@ -155,6 +194,21 @@ function executePlan(cwd, plan) {
155
194
  fs.writeFileSync(mod.absPath, mod.result.content);
156
195
  modifiedFiles += 1;
157
196
  }
197
+ // 1b. AGENTS.md CSTL-block strip (or delete if only the block was present).
198
+ // Handled outside the manifest loop because AGENTS.md is pruned from it.
199
+ if (plan.agentsMd.kind === "strip") {
200
+ fs.writeFileSync(plan.agentsMd.absPath, plan.agentsMd.strippedContent);
201
+ modifiedFiles += 1;
202
+ }
203
+ else if (plan.agentsMd.kind === "delete") {
204
+ try {
205
+ fs.unlinkSync(plan.agentsMd.absPath);
206
+ deletedFiles += 1;
207
+ }
208
+ catch {
209
+ // Best-effort; a missing/locked file is reported via summary mismatch.
210
+ }
211
+ }
158
212
  // 2. Deletions (skip already-missing entries).
159
213
  const deletedDirCandidates = new Set();
160
214
  for (const del of plan.deletions) {
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ {
2
+ "version": "0.3.2",
3
+ "description": "Reissue 0.3.1 runtime isolation with publishable core/cli pair (.cstl/)",
4
+ "breaking": true,
5
+ "recommendMigrate": true,
6
+ "changelog": "**@blxzer/cursor-trellis 0.3.2**\n\nReissues 0.3.1 content with a publishable `@blxzer/cursor-trellis-core` pair. Runtime root `.trellis/` → **`.cstl/`** for coexistence with upstream Trellis.\n\n```bash\nnpm install -g @blxzer/cursor-trellis@0.3.2\ncstl update --migrate\n```",
7
+ "migrations": [
8
+ {
9
+ "type": "rename-dir",
10
+ "from": ".trellis",
11
+ "to": ".cstl",
12
+ "description": "v0.3.2: cursor-trellis runtime dir isolation (.trellis -> .cstl)"
13
+ }
14
+ ],
15
+ "notes": "0.3.1 was withdrawn from npm; use 0.3.2+ for the .cstl/ migration."
16
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.3.3",
3
+ "description": "Coexistence polish: AGENTS CSTL block uninstall, hash scope, publish CI",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**@blxzer/cursor-trellis 0.3.3**\n\n- feat(uninstall): strip CSTL managed block from AGENTS.md while preserving upstream TRELLIS block\n- feat(hash): AGENTS.md template hash tracks CSTL block only\n- docs(spec): cursor-trellis release coexistence guide\n- ci: publish workflow on cstl-v* tags",
7
+ "migrations": [],
8
+ "notes": "Run `cstl update` to sync templates. No `--migrate` required."
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.3.4",
3
+ "description": "Rename main Cursor chat to cstl task directory on select/start-execution",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "**@blxzer/cursor-trellis 0.3.4**\n\n- feat(cursor): auto-rename main Agent chat tab to task directory name after `task.py select` or `start-execution --approved` (`rename-session-for-task.py` + `cstl-session-rename.mdc`). Uses `cursor-app-control` `rename_chat` when available; silent skip when MCP missing. No rename on `task.py create`.",
7
+ "migrations": [],
8
+ "notes": "Run `cstl update` to sync new hook, rule, and hooks.json wiring."
9
+ }
@@ -27,8 +27,9 @@ Whether legacy settings/config files exist in a project depends on which histori
27
27
  | `inject-workflow-state.py` | Parses `[workflow-state:STATUS]` blocks in `.cstl/workflow.md` and emits the body matching the selected task status. Falls back to `Refer to workflow.md for current step.` when no matching block exists. |
28
28
  | `inject-subagent-context.py` | Injects PRD, JSONL context, and related spec/research into sub-agents. |
29
29
  | `inject-shell-session-context.py` | Lets shell commands inherit Trellis session identity. |
30
+ | `rename-session-for-task.py` | After successful `task.py select` / `start-execution --approved`, prompts main-session rename to task directory name (best-effort `rename_chat`). |
30
31
 
31
- Cursor exposes sessionStart, preToolUse on Task/Subagent, beforeShellExecution, and stop events. Confirm against the current Cursor release before wiring a new event name; the available event surface has evolved over time and historical platform documentation may be stale.
32
+ Cursor exposes sessionStart, preToolUse on Task/Subagent, beforeShellExecution, afterShellExecution, and stop events. Confirm against the current Cursor release before wiring a new event name; the available event surface has evolved over time and historical platform documentation may be stale.
32
33
 
33
34
  ## Local Change Scenarios
34
35
 
@@ -1 +1 @@
1
- {"version":3,"file":"expected-rules.d.ts","sourceRoot":"","sources":["../../../../src/templates/cursor/fixtures/expected-rules.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IAC3B,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,aAAa,EAAE,YAAY,EAoBvC,CAAC"}
1
+ {"version":3,"file":"expected-rules.d.ts","sourceRoot":"","sources":["../../../../src/templates/cursor/fixtures/expected-rules.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IAC3B,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,aAAa,EAAE,YAAY,EAyBvC,CAAC"}
@@ -22,5 +22,10 @@ export const expectedRules = [
22
22
  requiredSections: ["Native", "BYOK", "codegraph", "smart-search"],
23
23
  minBytes: 600,
24
24
  },
25
+ {
26
+ filename: "cstl-session-rename.mdc",
27
+ requiredSections: ["rename_chat", "select", "start-execution", "skip silently"],
28
+ minBytes: 300,
29
+ },
25
30
  ];
26
31
  //# sourceMappingURL=expected-rules.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"expected-rules.js","sourceRoot":"","sources":["../../../../src/templates/cursor/fixtures/expected-rules.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,MAAM,CAAC,MAAM,aAAa,GAAmB;IAC3C;QACE,QAAQ,EAAE,iBAAiB;QAC3B,gBAAgB,EAAE;YAChB,eAAe;YACf,qBAAqB;YACrB,cAAc;SACf;QACD,QAAQ,EAAE,GAAG;KACd;IACD;QACE,QAAQ,EAAE,4BAA4B;QACtC,gBAAgB,EAAE,CAAC,SAAS,EAAE,0BAA0B,EAAE,KAAK,CAAC;QAChE,QAAQ,EAAE,GAAG;KACd;IACD;QACE,QAAQ,EAAE,uBAAuB;QACjC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC;QACjE,QAAQ,EAAE,GAAG;KACd;CACF,CAAC"}
1
+ {"version":3,"file":"expected-rules.js","sourceRoot":"","sources":["../../../../src/templates/cursor/fixtures/expected-rules.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,MAAM,CAAC,MAAM,aAAa,GAAmB;IAC3C;QACE,QAAQ,EAAE,iBAAiB;QAC3B,gBAAgB,EAAE;YAChB,eAAe;YACf,qBAAqB;YACrB,cAAc;SACf;QACD,QAAQ,EAAE,GAAG;KACd;IACD;QACE,QAAQ,EAAE,4BAA4B;QACtC,gBAAgB,EAAE,CAAC,SAAS,EAAE,0BAA0B,EAAE,KAAK,CAAC;QAChE,QAAQ,EAAE,GAAG;KACd;IACD;QACE,QAAQ,EAAE,uBAAuB;QACjC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC;QACjE,QAAQ,EAAE,GAAG;KACd;IACD;QACE,QAAQ,EAAE,yBAAyB;QACnC,gBAAgB,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,iBAAiB,EAAE,eAAe,CAAC;QAC/E,QAAQ,EAAE,GAAG;KACd;CACF,CAAC"}
@@ -26,6 +26,13 @@
26
26
  "timeout": 5
27
27
  }
28
28
  ],
29
+ "afterShellExecution": [
30
+ {
31
+ "command": "{{PYTHON_CMD}} .cursor/hooks/rename-session-for-task.py",
32
+ "matcher": "task\\.py.*(select|start-execution)",
33
+ "timeout": 5
34
+ }
35
+ ],
29
36
  "stop": [
30
37
  {
31
38
  "command": "{{PYTHON_CMD}} .cursor/hooks/research-end-retrieval-pack.py",
@@ -0,0 +1,31 @@
1
+ ---
2
+ description: "Rename Cursor chat to cstl task directory name after select or start-execution (cursor-app-control rename_chat)"
3
+ alwaysApply: true
4
+ ---
5
+
6
+ # Trellis session rename (Cursor main session)
7
+
8
+ Encourage **one task per main Agent chat**. Subagent / Task child windows are out of scope.
9
+
10
+ ## When to rename
11
+
12
+ After **you** successfully run either command in the **main** session (same turn or immediately after shell output):
13
+
14
+ - `python ./.cstl/scripts/task.py select <task-dir>`
15
+ - `python ./.cstl/scripts/task.py start-execution <task-dir> --approved`
16
+
17
+ Do **not** rename for `task.py create` alone (create does not bind the session).
18
+
19
+ ## Title
20
+
21
+ Use the task **directory name** only (e.g. `07-04-cstl-session-rename`), not `task.json` `title`.
22
+
23
+ ## How
24
+
25
+ 1. If `cursor-app-control` MCP `rename_chat` is available, call it once with `title` = directory name.
26
+ 2. If the tool is **not** available (BYOK or other environments), **skip silently** — no user prompt to rename manually.
27
+ 3. Do not rename repeatedly for the same task in the same session unless the user switched to a different task directory.
28
+
29
+ ## Native vs BYOK
30
+
31
+ Same rule for both. BYOK availability of `rename_chat` is environment-dependent; never fail the task workflow when rename is unavailable.
@@ -0,0 +1,166 @@
1
+ # cursor-trellis Release & Coexistence Guide
2
+
3
+ > **Audience**: Maintainers and agents working on `@blxzer/cursor-trellis` in `D:\MyHarness\cursor-trellis`.
4
+ > **Scope**: npm publish runbook, git tag naming (`cstl-v*`), and upstream Trellis coexistence semantics (0.3.2+).
5
+
6
+ ---
7
+
8
+ ## 1. npm publish runbook (mandatory)
9
+
10
+ cursor-trellis ships **two** npm packages at the **same version**:
11
+
12
+ | Package | Role |
13
+ | --- | --- |
14
+ | `@blxzer/cursor-trellis-core` | SDK (must publish **first**) |
15
+ | `@blxzer/cursor-trellis` | CLI (depends on core) |
16
+
17
+ ### Do
18
+
19
+ ```bash
20
+ cd D:\MyHarness\cursor-trellis\packages\cli
21
+
22
+ # 1. Version parity (cli + core package.json must match)
23
+ cd ../.. && pnpm release:check
24
+
25
+ # 2. Optional: dry-run pack shape (rewrites workspace:* in tarball)
26
+ node packages/cli/scripts/publish-packages.js --dry-run
27
+
28
+ # 3. Publish both packages in dependency order
29
+ node packages/cli/scripts/publish-packages.js
30
+
31
+ # 4. Verify registry visibility
32
+ node packages/cli/scripts/release-preflight.js verify-npm --package all
33
+ ```
34
+
35
+ `publish-packages.js` uses **`pnpm publish`** (not bare `npm publish`). pnpm rewrites `workspace:*` dependencies to the resolved semver (e.g. `"@blxzer/cursor-trellis-core": "0.3.3"`). Bare `npm publish` leaves `workspace:*` in the tarball → **`EUNSUPPORTEDPROTOCOL`** on install.
36
+
37
+ ### Do not
38
+
39
+ - **`npm publish`** from `packages/cli` alone (0.3.1 incident: cli tarball had `workspace:*`, core was missing).
40
+ - Publish cli before core (cli install fails with ETARGET until core exists).
41
+ - Skip `prepublishOnly` (runs test + build + copy-release-assets on cli).
42
+
43
+ ### Preflight commands
44
+
45
+ | Command | Purpose |
46
+ | --- | --- |
47
+ | `release-preflight.js check-versions` | cli/core version match |
48
+ | `release-preflight.js verify-packed-cli` | Packed cli resolves core to exact semver (not `workspace:*`) |
49
+ | `release-preflight.js verify-npm` | Post-publish registry check |
50
+ | `release-preflight.js publish-plan` | Idempotent CI plan (skip already-published versions) |
51
+
52
+ ### Withdrawn / deprecated versions
53
+
54
+ - **0.3.1 cli**: withdrawn (unpublish); use **0.3.2+**.
55
+ - **0.3.1 core**: cannot unpublish (npm policy); **`npm deprecate`** applied — use `@latest`.
56
+
57
+ ---
58
+
59
+ ## 2. Git tags (`cstl-v*` prefix)
60
+
61
+ This repo shares git history with legacy `@blxzer/trellis` (1.x). Old tags `v0.3.x`–`v0.6.x` point at **trellis** commits, not cursor-trellis releases.
62
+
63
+ | Tag pattern | Product | Example |
64
+ | --- | --- | --- |
65
+ | `v*` (legacy) | `@blxzer/trellis` | `v0.3.2` @ 2026-03 trellis commit |
66
+ | **`cstl-v*`** | `@blxzer/cursor-trellis` | `cstl-v0.3.2` @ cursor-trellis release commit |
67
+
68
+ `packages/cli/scripts/release.js` tags releases as **`cstl-v${version}`** (since 0.3.2 tag-hygiene commit).
69
+
70
+ `release-preflight tagVersionFromEnv` extracts semver from tag suffix (`cstl-v0.3.2` → `0.3.2`).
71
+
72
+ **CI publish workflow** (`.github/workflows/publish.yml`): triggers on `push.tags: cstl-v*`. Requires repo secret `NPM_TOKEN`.
73
+
74
+ Do **not** delete legacy `v*` tags — they are historical trellis releases.
75
+
76
+ ---
77
+
78
+ ## 3. Coexistence with upstream mindfold-ai/Trellis
79
+
80
+ **Product decision**: Both are workflow frameworks. **Cursor configuration belongs to cursor-trellis**. Upstream Trellis keeps `.trellis/` and non-Cursor platform dirs; cursor-trellis uses `.cstl/` + `.cursor/cstl-*`.
81
+
82
+ ### Scenario matrix
83
+
84
+ | Scenario | User state | Action |
85
+ | --- | --- | --- |
86
+ | 1 Pure cstl | Only cursor-trellis (legacy `.trellis/` runtime) | `cstl update --migrate` → rename `.trellis/` → `.cstl/` |
87
+ | 2 Coexistence | Upstream `.trellis/` + wants Cursor cstl | `cstl init --cursor` → creates `.cstl/`, **takes over `.cursor/`**, AGENTS dual-block |
88
+ | 3 Fresh | Never used either | `cstl init --cursor` → `.cstl/` only |
89
+
90
+ ### `cstl init` coexistence mode
91
+
92
+ When `.trellis/` exists and `.cstl/` does not:
93
+
94
+ 1. Creates `.cstl/` (does not touch `.trellis/`).
95
+ 2. **Force-writes** `.cursor/` (hooks, rules, commands) even under `-y`.
96
+ 3. **AGENTS.md dual-block**: preserves `<!-- TRELLIS:START -->`, adds/refreshes `<!-- CSTL:START -->` (`insertCstlManagedBlock`).
97
+ 4. Prints banner: do **not** run `cstl update --migrate` (would rename upstream `.trellis/`).
98
+
99
+ ### Migrate gate (`assessCstlDirectoryMigrate`)
100
+
101
+ Conservative by default for `.trellis/` → `.cstl/` rename:
102
+
103
+ | Signal | Meaning |
104
+ | --- | --- |
105
+ | F1 | `.cursor/commands/cstl-*.md` |
106
+ | F2 | `.cursor/rules/cstl-triage.mdc` |
107
+ | F3 | `.trellis/scripts/common/cli_adapter.py` contains `cstl` |
108
+ | U1 | `.claude/agents/trellis-implement.md` |
109
+ | U2 | Non-Cursor platform `trellis-*` agents/skills |
110
+ | U4 | `.cursor/commands/trellis-*.md` without cstl fingerprint |
111
+
112
+ - No F fingerprint → **abort** (protect scenario 2).
113
+ - F + U mixed → **abort** (manual split).
114
+ - Escape: `cstl update --force-cstl-migrate`.
115
+
116
+ ### AGENTS.md hash tracking (block-level)
117
+
118
+ `.template-hashes.json` stores **CSTL block hash only** for `AGENTS.md`, not the whole file. Upstream edits to TRELLIS block or user content outside CSTL block do **not** trigger "modified" on `cstl update`.
119
+
120
+ Implementation: `template-hash.ts` → `hashContentForPath` + `extractBlock(CSTL:START/END)`.
121
+
122
+ ### `cstl uninstall` in coexistence repos
123
+
124
+ - Strips **CSTL block only** (`removeCstlManagedBlock`); keeps TRELLIS block + user content.
125
+ - If file was only the CSTL block → deletes `AGENTS.md`.
126
+ - Does **not** restore upstream `.cursor/` files overwritten during init (by design: cstl owned Cursor).
127
+
128
+ ---
129
+
130
+ ## 4. Post-release dogfood checklist
131
+
132
+ ```bash
133
+ npm install -g @blxzer/cursor-trellis@latest
134
+ cstl --version
135
+
136
+ # Each dogfood project (no --migrate unless upgrading from pre-0.3.1):
137
+ cd <project>
138
+ cstl update --skip-readiness --skip-all
139
+ # Confirm .cstl/.version matches npm latest
140
+ ```
141
+
142
+ Sandbox smoke (from empty dir):
143
+
144
+ ```bash
145
+ npm init -y && npm install @blxzer/cursor-trellis@latest
146
+ npx cstl init --yes --skip-readiness --cursor
147
+ ```
148
+
149
+ ---
150
+
151
+ ## 5. Related files (source of truth)
152
+
153
+ | Topic | Path |
154
+ | --- | --- |
155
+ | Publish orchestration | `cursor-trellis/packages/cli/scripts/publish-packages.js` |
156
+ | Release preflight | `cursor-trellis/packages/cli/scripts/release-preflight.js` |
157
+ | Tag prefix | `cursor-trellis/packages/cli/scripts/release.js` |
158
+ | Coexistence init | `packages/cli/src/commands/init.ts` |
159
+ | Migrate gate | `packages/cli/src/utils/workflow-ownership.ts` |
160
+ | AGENTS helpers | `packages/cli/src/utils/agents-md.ts` |
161
+ | Block-level hash | `packages/cli/src/utils/template-hash.ts` |
162
+ | Uninstall strip | `packages/cli/src/commands/uninstall.ts` |
163
+
164
+ ---
165
+
166
+ **Last updated**: 2026-07-04 (0.3.3 follow-up: uninstall CSTL strip + block hash + this guide).
@@ -29,6 +29,7 @@ These guides help you **ask the right questions before coding**.
29
29
  | [Cursor subagent policy](./cursor-subagent-policy.md) | Task tool scenes, Agent mode, `model_policy: cursor-configured`, Cursor++ | Parent/Child dispatch, research/implement/check, parallel execution |
30
30
  | [Execution strategy](./execution-strategy.md) | `suggest-execution-strategy`, rules JSON, inline vs worker vs child-task | Writing `implement.md` contract, Phase 2 dispatch |
31
31
  | [Cursor context injection guide](./cursor-context-injection-guide.md) | Which Cursor channels reach the model (sessionStart bug, .cursor/rules, AGENTS.md) | "Agent ignored instructions" on Cursor, adding always-visible rules |
32
+ | [cursor-trellis release & coexistence](./cursor-trellis-release-coexistence-guide.md) | npm publish runbook, `cstl-v*` tags, upstream Trellis coexistence | Releasing cstl, scenario 2 init, migrate gate, uninstall AGENTS strip |
32
33
 
33
34
  ---
34
35
 
@@ -11,7 +11,7 @@ export interface HookScript {
11
11
  /** Script content — no placeholders, ready to write directly */
12
12
  content: string;
13
13
  }
14
- export type SharedHookName = "session-start.py" | "inject-shell-session-context.py" | "inject-retrieval-plan.py" | "inject-workflow-state.py" | "inject-subagent-context.py" | "research-end-retrieval-pack.py";
14
+ export type SharedHookName = "session-start.py" | "inject-shell-session-context.py" | "rename-session-for-task.py" | "inject-retrieval-plan.py" | "inject-workflow-state.py" | "inject-subagent-context.py" | "research-end-retrieval-pack.py";
15
15
  export type SharedHookPlatform = "claude" | "cursor" | "codex" | "gemini" | "qoder" | "copilot" | "codebuddy" | "droid" | "kiro";
16
16
  /**
17
17
  * Which shared hooks each platform actually invokes. Single source of truth
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/shared-hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,MAAM,WAAW,UAAU;IACzB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GACtB,kBAAkB,GAClB,iCAAiC,GACjC,0BAA0B,GAC1B,0BAA0B,GAC1B,4BAA4B,GAC5B,gCAAgC,CAAC;AAErC,MAAM,MAAM,kBAAkB,GAC1B,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,SAAS,GACT,WAAW,GACX,OAAO,GACP,MAAM,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAC3C,kBAAkB,EAClB,SAAS,cAAc,EAAE,CAgC1B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,UAAU,EAAE,CAWnD;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,kBAAkB,GAC3B,UAAU,EAAE,CAGd"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/shared-hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,MAAM,WAAW,UAAU;IACzB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GACtB,kBAAkB,GAClB,iCAAiC,GACjC,4BAA4B,GAC5B,0BAA0B,GAC1B,0BAA0B,GAC1B,4BAA4B,GAC5B,gCAAgC,CAAC;AAErC,MAAM,MAAM,kBAAkB,GAC1B,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,SAAS,GACT,WAAW,GACX,OAAO,GACP,MAAM,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAC3C,kBAAkB,EAClB,SAAS,cAAc,EAAE,CAiC1B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,UAAU,EAAE,CAWnD;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,kBAAkB,GAC3B,UAAU,EAAE,CAGd"}
@@ -45,6 +45,7 @@ export const SHARED_HOOKS_BY_PLATFORM = {
45
45
  cursor: [
46
46
  "session-start.py",
47
47
  "inject-shell-session-context.py",
48
+ "rename-session-for-task.py",
48
49
  "inject-retrieval-plan.py",
49
50
  "inject-subagent-context.py",
50
51
  "research-end-retrieval-pack.py",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/shared-hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,SAAS,YAAY,CAAC,YAAoB;IACxC,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AA4BD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAGjC;IACF,MAAM,EAAE;QACN,kBAAkB;QAClB,0BAA0B;QAC1B,4BAA4B;QAC5B,gCAAgC;KACjC;IACD,MAAM,EAAE;QACN,kBAAkB;QAClB,iCAAiC;QACjC,0BAA0B;QAC1B,4BAA4B;QAC5B,gCAAgC;KACjC;IACD,KAAK,EAAE,CAAC,0BAA0B,CAAC;IACnC,MAAM,EAAE,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;IACxD,KAAK,EAAE,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;IACvD,OAAO,EAAE,CAAC,0BAA0B,CAAC;IACrC,SAAS,EAAE;QACT,kBAAkB;QAClB,0BAA0B;QAC1B,4BAA4B;QAC5B,gCAAgC;KACjC;IACD,KAAK,EAAE;QACL,kBAAkB;QAClB,0BAA0B;QAC1B,4BAA4B;QAC5B,gCAAgC;KACjC;IACD,IAAI,EAAE,CAAC,4BAA4B,CAAC;CACrC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC;SACjC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAChC,IAAI,EAAE,CAAC;IAEV,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAC7C,QAA4B;IAE5B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpE,OAAO,oBAAoB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/shared-hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,SAAS,YAAY,CAAC,YAAoB;IACxC,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AA6BD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAGjC;IACF,MAAM,EAAE;QACN,kBAAkB;QAClB,0BAA0B;QAC1B,4BAA4B;QAC5B,gCAAgC;KACjC;IACD,MAAM,EAAE;QACN,kBAAkB;QAClB,iCAAiC;QACjC,4BAA4B;QAC5B,0BAA0B;QAC1B,4BAA4B;QAC5B,gCAAgC;KACjC;IACD,KAAK,EAAE,CAAC,0BAA0B,CAAC;IACnC,MAAM,EAAE,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;IACxD,KAAK,EAAE,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;IACvD,OAAO,EAAE,CAAC,0BAA0B,CAAC;IACrC,SAAS,EAAE;QACT,kBAAkB;QAClB,0BAA0B;QAC1B,4BAA4B;QAC5B,gCAAgC;KACjC;IACD,KAAK,EAAE;QACL,kBAAkB;QAClB,0BAA0B;QAC1B,4BAA4B;QAC5B,gCAAgC;KACjC;IACD,IAAI,EAAE,CAAC,4BAA4B,CAAC;CACrC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC;SACjC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAChC,IAAI,EAAE,CAAC;IAEV,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAC7C,QAA4B;IAE5B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpE,OAAO,oBAAoB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,CAAC"}
@@ -0,0 +1,231 @@
1
+ #!/usr/bin/env python3
2
+ """Cursor afterShellExecution hook: prompt session rename after task bind/start.
3
+
4
+ When the agent successfully runs `task.py select` or
5
+ `task.py start-execution <task> --approved`, emit an agent_message (best-effort)
6
+ so the main session calls cursor-app-control `rename_chat` with the task
7
+ directory name. MCP unavailable → agent skips silently per cstl-session-rename rule.
8
+ """
9
+ from __future__ import annotations
10
+
11
+ import hashlib
12
+ import json
13
+ import os
14
+ import re
15
+ import shlex
16
+ import sys
17
+ from pathlib import Path
18
+ from typing import Any
19
+
20
+ DIR_WORKFLOW = ".cstl"
21
+ DIR_RUNTIME = ".runtime"
22
+ DIR_SESSION_RENAME = "session-rename"
23
+ ANSI_ESCAPE = re.compile(r"\x1b\[[0-9;]*m")
24
+ CONTEXT_IDENTITY_KEYS = (
25
+ "session_id",
26
+ "sessionId",
27
+ "sessionID",
28
+ "conversation_id",
29
+ "conversationId",
30
+ "conversationID",
31
+ "transcript_path",
32
+ "transcriptPath",
33
+ "transcript",
34
+ )
35
+
36
+
37
+ def _string_value(value: Any) -> str | None:
38
+ if isinstance(value, str):
39
+ stripped = value.strip()
40
+ return stripped or None
41
+ return None
42
+
43
+
44
+ def _strip_ansi(text: str) -> str:
45
+ return ANSI_ESCAPE.sub("", text)
46
+
47
+
48
+ def _find_trellis_root(start: Path) -> Path | None:
49
+ current = start.resolve()
50
+ while True:
51
+ if (current / DIR_WORKFLOW).is_dir():
52
+ return current
53
+ if current == current.parent:
54
+ return None
55
+ current = current.parent
56
+
57
+
58
+ def _task_py_token_index(tokens: list[str]) -> int | None:
59
+ for index, token in enumerate(tokens):
60
+ if Path(token.strip("\"'")).name == "task.py":
61
+ return index
62
+ return None
63
+
64
+
65
+ def parse_rename_intent(command: str) -> dict[str, str] | None:
66
+ """Return subcommand + task_ref when command should trigger rename."""
67
+ try:
68
+ tokens = shlex.split(command, posix=os.name != "nt")
69
+ except ValueError:
70
+ return None
71
+
72
+ task_index = _task_py_token_index(tokens)
73
+ if task_index is None or task_index + 1 >= len(tokens):
74
+ return None
75
+
76
+ subcommand = tokens[task_index + 1]
77
+ if subcommand == "select":
78
+ if task_index + 2 >= len(tokens):
79
+ return None
80
+ return {"subcommand": subcommand, "task_ref": tokens[task_index + 2]}
81
+ if subcommand == "start-execution":
82
+ if "--approved" not in tokens:
83
+ return None
84
+ if task_index + 2 >= len(tokens):
85
+ return None
86
+ task_ref = tokens[task_index + 2]
87
+ if task_ref.startswith("-"):
88
+ return None
89
+ return {"subcommand": subcommand, "task_ref": task_ref}
90
+ return None
91
+
92
+
93
+ def task_directory_name(task_ref: str) -> str:
94
+ """Use task folder basename as the chat title."""
95
+ cleaned = task_ref.strip().strip("\"'")
96
+ return Path(cleaned.replace("\\", "/")).name
97
+
98
+
99
+ def shell_output_succeeded(subcommand: str, output: str) -> bool:
100
+ text = _strip_ansi(output or "")
101
+ if "Error:" in text or "error:" in text.lower():
102
+ return False
103
+ if subcommand == "select":
104
+ return "Selected task:" in text or "✓ Selected task" in text
105
+ if subcommand == "start-execution":
106
+ return "Execution approved" in text or "✓ Execution approved" in text
107
+ return False
108
+
109
+
110
+ def _safe_context_filename(context_key: str) -> str:
111
+ digest = hashlib.sha256(context_key.encode("utf-8")).hexdigest()[:24]
112
+ return f"{digest}.json"
113
+
114
+
115
+ def _rename_state_dir(root: Path) -> Path:
116
+ return root / DIR_WORKFLOW / DIR_RUNTIME / DIR_SESSION_RENAME
117
+
118
+
119
+ def _load_rename_state(path: Path) -> dict[str, Any]:
120
+ if not path.is_file():
121
+ return {}
122
+ try:
123
+ data = json.loads(path.read_text(encoding="utf-8"))
124
+ except (json.JSONDecodeError, OSError):
125
+ return {}
126
+ return data if isinstance(data, dict) else {}
127
+
128
+
129
+ def _should_emit_rename(state: dict[str, Any], title: str) -> bool:
130
+ return state.get("last_title") != title
131
+
132
+
133
+ def _write_rename_state(path: Path, context_key: str, title: str) -> None:
134
+ path.parent.mkdir(parents=True, exist_ok=True)
135
+ payload = {
136
+ "context_key": context_key,
137
+ "last_title": title,
138
+ }
139
+ path.write_text(
140
+ json.dumps(payload, indent=2, ensure_ascii=False) + "\n",
141
+ encoding="utf-8",
142
+ )
143
+
144
+
145
+ def _agent_rename_message(title: str) -> str:
146
+ return (
147
+ "Trellis session rename: call cursor-app-control MCP `rename_chat` once "
148
+ f'with title "{title}" (task directory name). '
149
+ "If rename_chat is not in your tool list, skip silently — do not ask the user "
150
+ "to rename manually."
151
+ )
152
+
153
+
154
+ def _load_context_key(root: Path, hook_input: dict[str, Any]) -> str | None:
155
+ scripts_dir = root / DIR_WORKFLOW / "scripts"
156
+ if str(scripts_dir) not in sys.path:
157
+ sys.path.insert(0, str(scripts_dir))
158
+ from common.active_task import resolve_context_key # type: ignore[import-not-found]
159
+
160
+ if not any(_string_value(hook_input.get(key)) for key in CONTEXT_IDENTITY_KEYS):
161
+ return None
162
+ return resolve_context_key(hook_input, platform="cursor")
163
+
164
+
165
+ def main() -> int:
166
+ if os.environ.get("TRELLIS_HOOKS") == "0" or os.environ.get("TRELLIS_DISABLE_HOOKS") == "1":
167
+ print("{}")
168
+ return 0
169
+
170
+ try:
171
+ hook_input = json.loads(sys.stdin.read())
172
+ except (json.JSONDecodeError, ValueError):
173
+ hook_input = {}
174
+ if not isinstance(hook_input, dict):
175
+ hook_input = {}
176
+
177
+ event = _string_value(hook_input.get("hook_event_name")) or "afterShellExecution"
178
+ if event != "afterShellExecution":
179
+ print("{}")
180
+ return 0
181
+
182
+ command = _string_value(hook_input.get("command")) or ""
183
+ intent = parse_rename_intent(command)
184
+ if intent is None:
185
+ print("{}")
186
+ return 0
187
+
188
+ output = _string_value(hook_input.get("output")) or ""
189
+ if not shell_output_succeeded(intent["subcommand"], output):
190
+ print("{}")
191
+ return 0
192
+
193
+ title = task_directory_name(intent["task_ref"])
194
+ if not title:
195
+ print("{}")
196
+ return 0
197
+
198
+ cwd = Path(_string_value(hook_input.get("cwd")) or os.getcwd())
199
+ root = _find_trellis_root(cwd)
200
+ if root is None:
201
+ print("{}")
202
+ return 0
203
+
204
+ context_key = _load_context_key(root, hook_input)
205
+ if not context_key:
206
+ print("{}")
207
+ return 0
208
+
209
+ state_path = _rename_state_dir(root) / _safe_context_filename(context_key)
210
+ state = _load_rename_state(state_path)
211
+ if not _should_emit_rename(state, title):
212
+ print("{}")
213
+ return 0
214
+
215
+ try:
216
+ _write_rename_state(state_path, context_key, title)
217
+ except OSError:
218
+ print("{}")
219
+ return 0
220
+
221
+ print(
222
+ json.dumps(
223
+ {"agent_message": _agent_rename_message(title)},
224
+ ensure_ascii=False,
225
+ ),
226
+ )
227
+ return 0
228
+
229
+
230
+ if __name__ == "__main__":
231
+ sys.exit(main())
@@ -1,61 +1,61 @@
1
- # Design — Release execution
2
-
3
- ## Boundary
4
-
5
- This task **may** mutate remotes **only** after explicit user approval captured in `verify.md` (quote or paraphrase the approval request/response).
6
-
7
- ## Release status model (this task)
8
-
9
- | Status | When to use |
10
- | --- | --- |
11
- | **published** | npm and/or git remote actions completed for the approved version |
12
- | **not published** | Execution aborted or only dry-run/preflight completed |
13
- | **blocked** | Preflight failed; do not publish until fixed |
14
- | **waived** | User approved proceeding despite a listed risk |
15
- | **deferred** | User postponed publish after readiness |
16
-
17
- Do not mark **ready to publish** here — that remains the readiness task outcome.
18
-
19
- ## Approval gate (mandatory)
20
-
21
- Before any of the following, stop and obtain explicit user approval:
22
-
23
- - `node scripts/release.js …` (bundles bump, commit, tag, push)
24
- - `npm publish` / CI publish workflow dispatch
25
- - `git tag` / `git push` (including `--tags`)
26
- - GitHub **Create release** or promotion workflows
27
-
28
- Document in `verify.md`:
29
-
30
- ```markdown
31
- ## Publish approval evidence
32
-
33
- User explicitly approved: yes/no
34
- Approved version: …
35
- Approved dist-tag: …
36
- Approved remote actions: tag / push / npm publish / …
37
- ```
38
-
39
- ## Evidence contract (`verify.md`)
40
-
41
- 1. **Readiness link** — path to readiness `handoff.md`.
42
- 2. **Publish approval evidence** — as above.
43
- 3. **Preflight results** — `check-versions`, `publish-plan`, `verify-packed-cli`.
44
- 4. **Execution log** — commands run (redact tokens); pass/fail.
45
- 5. **Post-publish smoke** — registry check, `trellis --version`, dogfood smoke commands.
46
- 6. **Validation evidence** — tests run after publish if applicable.
47
-
48
- ## Trellis CLI reference sequence (after approval)
49
-
50
- Typical human/CI sequence (do not automate without approval):
51
-
52
- ```bash
53
- cd packages/cli
54
- node scripts/release-preflight.js check-versions
55
- node scripts/release-preflight.js publish-plan
56
- # After approval:
57
- pnpm --filter @blxzer/cursor-trellis release:beta # or patch/minor/major per policy
58
- node scripts/release-preflight.js verify-npm --package all
59
- ```
60
-
1
+ # Design — Release execution
2
+
3
+ ## Boundary
4
+
5
+ This task **may** mutate remotes **only** after explicit user approval captured in `verify.md` (quote or paraphrase the approval request/response).
6
+
7
+ ## Release status model (this task)
8
+
9
+ | Status | When to use |
10
+ | --- | --- |
11
+ | **published** | npm and/or git remote actions completed for the approved version |
12
+ | **not published** | Execution aborted or only dry-run/preflight completed |
13
+ | **blocked** | Preflight failed; do not publish until fixed |
14
+ | **waived** | User approved proceeding despite a listed risk |
15
+ | **deferred** | User postponed publish after readiness |
16
+
17
+ Do not mark **ready to publish** here — that remains the readiness task outcome.
18
+
19
+ ## Approval gate (mandatory)
20
+
21
+ Before any of the following, stop and obtain explicit user approval:
22
+
23
+ - `node scripts/release.js …` (bundles bump, commit, tag, push)
24
+ - `npm publish` / CI publish workflow dispatch
25
+ - `git tag` / `git push` (including `--tags`)
26
+ - GitHub **Create release** or promotion workflows
27
+
28
+ Document in `verify.md`:
29
+
30
+ ```markdown
31
+ ## Publish approval evidence
32
+
33
+ User explicitly approved: yes/no
34
+ Approved version: …
35
+ Approved dist-tag: …
36
+ Approved remote actions: tag / push / npm publish / …
37
+ ```
38
+
39
+ ## Evidence contract (`verify.md`)
40
+
41
+ 1. **Readiness link** — path to readiness `handoff.md`.
42
+ 2. **Publish approval evidence** — as above.
43
+ 3. **Preflight results** — `check-versions`, `publish-plan`, `verify-packed-cli`.
44
+ 4. **Execution log** — commands run (redact tokens); pass/fail.
45
+ 5. **Post-publish smoke** — registry check, `cstl --version`, dogfood smoke commands.
46
+ 6. **Validation evidence** — tests run after publish if applicable.
47
+
48
+ ## Trellis CLI reference sequence (after approval)
49
+
50
+ Typical human/CI sequence (do not automate without approval):
51
+
52
+ ```bash
53
+ cd packages/cli
54
+ node scripts/release-preflight.js check-versions
55
+ node scripts/release-preflight.js publish-plan
56
+ # After approval:
57
+ pnpm --filter @blxzer/cursor-trellis release:beta # or patch/minor/major per policy
58
+ node scripts/release-preflight.js verify-npm --package all
59
+ ```
60
+
61
61
  `release.js` performs commit, tag, and push — treat it as a single approved bundle or decompose manually per policy.
@@ -34,4 +34,14 @@ export declare function insertCstlManagedBlock(existingContent: string, template
34
34
  export declare function hasCstlBlock(content: string): boolean;
35
35
  /** True if `content` contains a legacy TRELLIS managed block. */
36
36
  export declare function hasLegacyTrellisBlock(content: string): boolean;
37
+ /**
38
+ * Remove the CSTL managed block from `content`, leaving any upstream TRELLIS
39
+ * block and user content untouched. Collapses the blank lines left behind so
40
+ * the result reads naturally. Returns the content unchanged if no CSTL block
41
+ * is present.
42
+ *
43
+ * Used by `cstl uninstall` so a coexistence repo ends up with only the
44
+ * upstream TRELLIS block + user content after cursor-trellis is removed.
45
+ */
46
+ export declare function removeCstlManagedBlock(content: string): string;
37
47
  //# sourceMappingURL=agents-md.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agents-md.d.ts","sourceRoot":"","sources":["../../src/utils/agents-md.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AACtD,eAAO,MAAM,cAAc,sBAAsB,CAAC;AAClD,eAAO,MAAM,0BAA0B,2BAA2B,CAAC;AACnE,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAE/D,+EAA+E;AAC/E,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAMf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,MAAM,GACtB,MAAM,CAwCR;AAED,uDAAuD;AACvD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAMrD;AAED,iEAAiE;AACjE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAM9D"}
1
+ {"version":3,"file":"agents-md.d.ts","sourceRoot":"","sources":["../../src/utils/agents-md.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AACtD,eAAO,MAAM,cAAc,sBAAsB,CAAC;AAClD,eAAO,MAAM,0BAA0B,2BAA2B,CAAC;AACnE,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAE/D,+EAA+E;AAC/E,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAMf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,MAAM,GACtB,MAAM,CAwCR;AAED,uDAAuD;AACvD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAMrD;AAED,iEAAiE;AACjE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAM9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAiB9D"}
@@ -79,4 +79,29 @@ export function hasLegacyTrellisBlock(content) {
79
79
  content.indexOf(LEGACY_TRELLIS_BLOCK_END) >
80
80
  content.indexOf(LEGACY_TRELLIS_BLOCK_START));
81
81
  }
82
+ /**
83
+ * Remove the CSTL managed block from `content`, leaving any upstream TRELLIS
84
+ * block and user content untouched. Collapses the blank lines left behind so
85
+ * the result reads naturally. Returns the content unchanged if no CSTL block
86
+ * is present.
87
+ *
88
+ * Used by `cstl uninstall` so a coexistence repo ends up with only the
89
+ * upstream TRELLIS block + user content after cursor-trellis is removed.
90
+ */
91
+ export function removeCstlManagedBlock(content) {
92
+ const startIdx = content.indexOf(CSTL_BLOCK_START);
93
+ if (startIdx === -1) {
94
+ return content;
95
+ }
96
+ const endIdx = content.indexOf(CSTL_BLOCK_END, startIdx);
97
+ if (endIdx === -1) {
98
+ return content;
99
+ }
100
+ const before = content.slice(0, startIdx);
101
+ const after = content.slice(endIdx + CSTL_BLOCK_END.length);
102
+ // Collapse up to one blank-line gap on each side so we don't leave a run of
103
+ // 4+ newlines, but never trim away meaningful separator lines.
104
+ return (before.replace(/\n{2,}$/, "\n\n") +
105
+ after.replace(/^\n{2,}/, "\n\n")).replace(/^\n{2,}/, "\n");
106
+ }
82
107
  //# sourceMappingURL=agents-md.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agents-md.js","sourceRoot":"","sources":["../../src/utils/agents-md.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agents-md.js","sourceRoot":"","sources":["../../src/utils/agents-md.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AACtD,MAAM,CAAC,MAAM,cAAc,GAAG,mBAAmB,CAAC;AAClD,MAAM,CAAC,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AACnE,MAAM,CAAC,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AAE/D,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAC1B,OAAe,EACf,WAAmB,EACnB,SAAiB;IAEjB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9C,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,sBAAsB,CACpC,eAAuB,EACvB,eAAuB;IAEvB,MAAM,KAAK,GACT,YAAY,CAAC,eAAe,EAAE,gBAAgB,EAAE,cAAc,CAAC;QAC/D,eAAe,CAAC;IAElB,mEAAmE;IACnE,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5D,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QACnE,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;YACnB,OAAO,CACL,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;gBACnC,KAAK;gBACL,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CACvD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,uEAAuE;IACvE,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACzE,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CACxC,wBAAwB,EACxB,YAAY,CACb,CAAC;QACF,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,UAAU,GAAG,wBAAwB,CAAC,MAAM,CAAC;YAC3D,OAAO,CACL,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;gBAC/B,MAAM;gBACN,KAAK;gBACL,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAC7B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpD,OAAO,GAAG,OAAO,OAAO,KAAK,IAAI,CAAC;AACpC,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAClC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;YAC7B,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CACpC,CAAC;AACJ,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC5C,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC;YACvC,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAC9C,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnD,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACzD,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC5D,4EAA4E;IAC5E,+DAA+D;IAC/D,OAAO,CACL,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;QACjC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CACjC,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"template-hash.d.ts","sourceRoot":"","sources":["../../src/utils/template-hash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAgB5D;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGnD;AAqBD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CA6BtD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAOpE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAQ1E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAU1E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAKlE;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,IAAI,CASN;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,cAAc,GACrB,OAAO,CAsBT;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,GACtB,OAAO,CAST;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,EAAE,EACvB,MAAM,EAAE,cAAc,GACrB,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAQtB;AA8DD,oDAAoD;AACpD,MAAM,WAAW,uBAAuB;IACtC;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,uBAA4B,GACpC,MAAM,CAyDR"}
1
+ {"version":3,"file":"template-hash.d.ts","sourceRoot":"","sources":["../../src/utils/template-hash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAqB5D;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGnD;AAuCD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CA6BtD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAOpE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAQ1E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAU1E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAKlE;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,IAAI,CASN;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,cAAc,GACrB,OAAO,CAoCT;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,GACtB,OAAO,CAST;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,EAAE,EACvB,MAAM,EAAE,cAAc,GACrB,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAQtB;AA8DD,oDAAoD;AACpD,MAAM,WAAW,uBAAuB;IACtC;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,uBAA4B,GACpC,MAAM,CAyDR"}
@@ -18,6 +18,7 @@ import path from "node:path";
18
18
  import { DIR_NAMES, FILE_NAMES } from "../constants/paths.js";
19
19
  import { toPosix } from "./posix.js";
20
20
  import { resolveWorkflowDirName } from "./workflow-dir.js";
21
+ import { CSTL_BLOCK_END, CSTL_BLOCK_START, extractBlock, } from "./agents-md.js";
21
22
  /** File name for storing template hashes */
22
23
  const HASHES_FILE = ".template-hashes.json";
23
24
  /** Current schema version for `.template-hashes.json` */
@@ -32,6 +33,23 @@ export function computeHash(content) {
32
33
  const normalized = content.replace(/\r\n/g, "\n");
33
34
  return createHash("sha256").update(normalized, "utf-8").digest("hex");
34
35
  }
36
+ /**
37
+ * Hash content for a tracked path. AGENTS.md is hashed at the CSTL managed
38
+ * block level (not the whole file) so that in a coexistence repo, upstream
39
+ * edits to the TRELLIS block or user content outside the CSTL block do NOT
40
+ * register as "cursor-trellis template modified" (which would prompt the
41
+ * user on every `cstl update`). Files without a CSTL block (or non-AGENTS
42
+ * paths) hash the whole content.
43
+ */
44
+ function hashContentForPath(relativePath, content) {
45
+ if (toPosix(relativePath) === FILE_NAMES.AGENTS) {
46
+ const block = extractBlock(content, CSTL_BLOCK_START, CSTL_BLOCK_END);
47
+ if (block !== null) {
48
+ return computeHash(block);
49
+ }
50
+ }
51
+ return computeHash(content);
52
+ }
35
53
  /**
36
54
  * Get path to the hashes file
37
55
  */
@@ -106,7 +124,7 @@ export function saveHashes(cwd, hashes) {
106
124
  export function updateHashes(cwd, files) {
107
125
  const hashes = loadHashes(cwd);
108
126
  for (const [relativePath, content] of files) {
109
- hashes[toPosix(relativePath)] = computeHash(content);
127
+ hashes[toPosix(relativePath)] = hashContentForPath(relativePath, content);
110
128
  }
111
129
  saveHashes(cwd, hashes);
112
130
  }
@@ -120,7 +138,7 @@ export function updateHashFromFile(cwd, relativePath) {
120
138
  }
121
139
  const content = fs.readFileSync(fullPath, "utf-8");
122
140
  const hashes = loadHashes(cwd);
123
- hashes[toPosix(relativePath)] = computeHash(content);
141
+ hashes[toPosix(relativePath)] = hashContentForPath(relativePath, content);
124
142
  saveHashes(cwd, hashes);
125
143
  }
126
144
  /**
@@ -167,10 +185,23 @@ export function isTemplateModified(cwd, relativePath, hashes) {
167
185
  if (!storedHash) {
168
186
  return true;
169
187
  }
170
- // Compare current content hash with stored hash
188
+ // Compare current content hash with stored hash. AGENTS.md is compared at
189
+ // the CSTL block level (see hashContentForPath). Legacy grace: pre-0.3.3
190
+ // manifests stored a WHOLE-FILE hash for AGENTS.md, so the first 0.3.3
191
+ // update would see a block-hash mismatch. If the whole file still matches
192
+ // the legacy stored hash, treat it as unmodified — the upcoming write will
193
+ // re-store the block hash. This avoids a one-time false "modified" prompt
194
+ // for every existing user on upgrade.
171
195
  const currentContent = fs.readFileSync(fullPath, "utf-8");
172
- const currentHash = computeHash(currentContent);
173
- return currentHash !== storedHash;
196
+ const currentHash = hashContentForPath(relativePath, currentContent);
197
+ if (currentHash === storedHash) {
198
+ return false;
199
+ }
200
+ if (toPosix(relativePath) === FILE_NAMES.AGENTS &&
201
+ computeHash(currentContent) === storedHash) {
202
+ return false;
203
+ }
204
+ return true;
174
205
  }
175
206
  /**
176
207
  * Check if a file matches its original template content
@@ -288,7 +319,7 @@ export function initializeHashes(cwd, options = {}) {
288
319
  continue;
289
320
  try {
290
321
  const content = fs.readFileSync(fullPath, "utf-8");
291
- hashes[toPosix(relativePath)] = computeHash(content);
322
+ hashes[toPosix(relativePath)] = hashContentForPath(relativePath, content);
292
323
  }
293
324
  catch {
294
325
  // Skip files that can't be read (binary, etc.)
@@ -304,7 +335,7 @@ export function initializeHashes(cwd, options = {}) {
304
335
  const fullPath = path.join(cwd, relativePath);
305
336
  try {
306
337
  const content = fs.readFileSync(fullPath, "utf-8");
307
- hashes[relativePath] = computeHash(content);
338
+ hashes[relativePath] = hashContentForPath(relativePath, content);
308
339
  }
309
340
  catch {
310
341
  // Skip files that can't be read (binary, etc.)
@@ -323,7 +354,7 @@ export function initializeHashes(cwd, options = {}) {
323
354
  continue;
324
355
  try {
325
356
  const content = fs.readFileSync(fullPath, "utf-8");
326
- hashes[toPosix(relativePath)] = computeHash(content);
357
+ hashes[toPosix(relativePath)] = hashContentForPath(relativePath, content);
327
358
  }
328
359
  catch {
329
360
  // Skip
@@ -1 +1 @@
1
- {"version":3,"file":"template-hash.js","sourceRoot":"","sources":["../../src/utils/template-hash.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template-hash.js","sourceRoot":"","sources":["../../src/utils/template-hash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,4CAA4C;AAC5C,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAE5C,yDAAyD;AACzD,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAQhC;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,kBAAkB,CAAC,YAAoB,EAAE,OAAe;IAC/D,IAAI,OAAO,CAAC,YAAY,CAAC,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;QACtE,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,OAAO,GAAG,sBAAsB,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC;IAClE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,MAAsB;IAC/C,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;IAC5B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;QAE9C,IACE,MAAM,KAAK,IAAI;YACf,OAAO,MAAM,KAAK,QAAQ;YAC1B,WAAW,IAAI,MAAM;YACpB,MAAiC,CAAC,SAAS,KAAK,qBAAqB;YACtE,QAAQ,IAAI,MAAM;YAClB,OAAQ,MAA8B,CAAC,MAAM,KAAK,QAAQ;YACzD,MAA8B,CAAC,MAAM,KAAK,IAAI,EAC/C,CAAC;YACD,MAAM,MAAM,GAAG,MAAwB,CAAC;YACxC,kEAAkE;YAClE,OAAO,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QAED,+DAA+D;QAC/D,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,MAAsB;IAC5D,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,OAAO,GAAmB;QAC9B,SAAS,EAAE,qBAAqB;QAChC,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC;KAClC,CAAC;IACF,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,KAA0B;IAClE,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAE/B,KAAK,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;QAC5C,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,kBAAkB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAED,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,YAAoB;IAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,kBAAkB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC1E,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,YAAoB;IAC1D,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAClC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IACrC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,GAAW,EACX,OAAe,EACf,OAAe;IAEf,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACnB,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;QACxB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,GAAW,EACX,YAAoB,EACpB,MAAsB;IAEtB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAE9C,2CAA2C;IAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uEAAuE;IACvE,iEAAiE;IACjE,iEAAiE;IACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;IAC5D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0EAA0E;IAC1E,yEAAyE;IACzE,uEAAuE;IACvE,0EAA0E;IAC1E,2EAA2E;IAC3E,0EAA0E;IAC1E,sCAAsC;IACtC,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,kBAAkB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACrE,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IACE,OAAO,CAAC,YAAY,CAAC,KAAK,UAAU,CAAC,MAAM;QAC3C,WAAW,CAAC,cAAc,CAAC,KAAK,UAAU,EAC1C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CACrC,GAAW,EACX,YAAoB,EACpB,eAAuB;IAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAE9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1D,OAAO,cAAc,KAAK,eAAe,CAAC;AAC5C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,GAAW,EACX,aAAuB,EACvB,MAAsB;IAEtB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;IAE1C,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,kBAAkB,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,iBAAiB,GAAG;IACxB,uBAAuB,EAAE,mBAAmB;IAC5C,UAAU,EAAE,eAAe;IAC3B,YAAY,EAAE,mBAAmB;IACjC,YAAY,EAAE,0BAA0B;IACxC,YAAY,EAAE,8BAA8B;IAC5C,QAAQ,EAAE,yBAAyB;IACnC,eAAe,EAAE,4CAA4C;IAC7D,aAAa,EAAE,6BAA6B;IAC5C,UAAU,EAAE,qBAAqB;CAClC,CAAC;AAEF;;GAEG;AACH,SAAS,qBAAqB,CAAC,YAAoB;IACjD,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7C,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACxC,IAAI,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,GAAW,EAAE,GAAW;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,qBAAqB,CAAC,YAAY,CAAC,EAAE,CAAC;YACxC,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAuBD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAW,EACX,UAAmC,EAAE;IAErC,MAAM,EAAE,YAAY,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAChD,MAAM,MAAM,GAAmB,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5D,oEAAoE;IACpE,IAAI,YAAY,EAAE,CAAC;QACjB,KAAK,MAAM,YAAY,IAAI,YAAY,EAAE,CAAC;YACxC,qEAAqE;YACrE,IAAI,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;gBAClE,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACvC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,kBAAkB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC5E,CAAC;YAAC,MAAM,CAAC;gBACP,+CAA+C;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,yEAAyE;IACzE,mEAAmE;IACnE,yCAAyC;IACzC,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACzC,KAAK,MAAM,YAAY,IAAI,KAAK,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnD,MAAM,CAAC,YAAY,CAAC,GAAG,kBAAkB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC;QAAC,MAAM,CAAC;YACP,+CAA+C;QACjD,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,0EAA0E;IAC1E,0EAA0E;IAC1E,qCAAqC;IACrC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,KAAK,MAAM,YAAY,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/C,IAAI,qBAAqB,CAAC,YAAY,CAAC;gBAAE,SAAS;YAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACvC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,kBAAkB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC5E,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACxB,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACpC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blxzer/cursor-trellis",
3
- "version": "0.3.2",
3
+ "version": "0.3.4",
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",
@@ -35,7 +35,7 @@
35
35
  "inquirer": "^9.3.7",
36
36
  "undici": "^6.21.0",
37
37
  "zod": "^4.4.2",
38
- "@blxzer/cursor-trellis-core": "0.3.2"
38
+ "@blxzer/cursor-trellis-core": "0.3.4"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@eslint/js": "^9.18.0",