@blxzer/cursor-trellis 0.3.3 → 0.3.5
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 +6 -0
- package/README.md +0 -13
- package/README.zh-CN.md +2 -1
- package/bin/cstl.js +1 -1
- package/bin/smart-search.js +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +14 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/campaign/canvas-render.d.ts +68 -0
- package/dist/commands/campaign/canvas-render.d.ts.map +1 -0
- package/dist/commands/campaign/canvas-render.js +414 -0
- package/dist/commands/campaign/canvas-render.js.map +1 -0
- package/dist/commands/campaign/compose.d.ts +15 -0
- package/dist/commands/campaign/compose.d.ts.map +1 -0
- package/dist/commands/campaign/compose.js +110 -0
- package/dist/commands/campaign/compose.js.map +1 -0
- package/dist/commands/campaign/index.d.ts +13 -0
- package/dist/commands/campaign/index.d.ts.map +1 -0
- package/dist/commands/campaign/index.js +134 -0
- package/dist/commands/campaign/index.js.map +1 -0
- package/dist/commands/campaign/kind-map.d.ts +6 -0
- package/dist/commands/campaign/kind-map.d.ts.map +1 -0
- package/dist/commands/campaign/kind-map.js +21 -0
- package/dist/commands/campaign/kind-map.js.map +1 -0
- package/dist/commands/campaign/mcp-server.d.ts +6 -0
- package/dist/commands/campaign/mcp-server.d.ts.map +1 -0
- package/dist/commands/campaign/mcp-server.js +167 -0
- package/dist/commands/campaign/mcp-server.js.map +1 -0
- package/dist/commands/campaign/render.d.ts +5 -0
- package/dist/commands/campaign/render.d.ts.map +1 -0
- package/dist/commands/campaign/render.js +103 -0
- package/dist/commands/campaign/render.js.map +1 -0
- package/dist/commands/campaign/trellis-load.d.ts +13 -0
- package/dist/commands/campaign/trellis-load.d.ts.map +1 -0
- package/dist/commands/campaign/trellis-load.js +122 -0
- package/dist/commands/campaign/trellis-load.js.map +1 -0
- package/dist/commands/campaign/types.d.ts +61 -0
- package/dist/commands/campaign/types.d.ts.map +1 -0
- package/dist/commands/campaign/types.js +3 -0
- package/dist/commands/campaign/types.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +11 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/rpc/client.d.ts +51 -0
- package/dist/commands/rpc/client.d.ts.map +1 -0
- package/dist/commands/rpc/client.js +147 -0
- package/dist/commands/rpc/client.js.map +1 -0
- package/dist/commands/rpc/index.d.ts +10 -0
- package/dist/commands/rpc/index.d.ts.map +1 -0
- package/dist/commands/rpc/index.js +157 -0
- package/dist/commands/rpc/index.js.map +1 -0
- package/dist/commands/rpc/serve.d.ts +23 -0
- package/dist/commands/rpc/serve.d.ts.map +1 -0
- package/dist/commands/rpc/serve.js +60 -0
- package/dist/commands/rpc/serve.js.map +1 -0
- package/dist/commands/rpc/smoke.d.ts +16 -0
- package/dist/commands/rpc/smoke.d.ts.map +1 -0
- package/dist/commands/rpc/smoke.js +92 -0
- package/dist/commands/rpc/smoke.js.map +1 -0
- package/dist/commands/sdk/index.d.ts +9 -0
- package/dist/commands/sdk/index.d.ts.map +1 -0
- package/dist/commands/sdk/index.js +58 -0
- package/dist/commands/sdk/index.js.map +1 -0
- package/dist/commands/sdk/run.d.ts +42 -0
- package/dist/commands/sdk/run.d.ts.map +1 -0
- package/dist/commands/sdk/run.js +245 -0
- package/dist/commands/sdk/run.js.map +1 -0
- package/dist/commands/sdk/status.d.ts +14 -0
- package/dist/commands/sdk/status.d.ts.map +1 -0
- package/dist/commands/sdk/status.js +69 -0
- package/dist/commands/sdk/status.js.map +1 -0
- package/dist/migrations/manifests/0.3.2.json +16 -0
- package/dist/migrations/manifests/0.3.3.json +9 -0
- package/dist/migrations/manifests/0.3.4.json +9 -0
- package/dist/templates/common/bundled-skills/cstl-meta/references/platform-files/hooks-and-settings.md +2 -1
- package/dist/templates/common/bundled-skills/smart-search-cli/SKILL.md +35 -29
- package/dist/templates/common/bundled-skills/smart-search-cli/references/cli-contract.md +11 -25
- package/dist/templates/cursor/fixtures/expected-rules.d.ts.map +1 -1
- package/dist/templates/cursor/fixtures/expected-rules.js +5 -0
- package/dist/templates/cursor/fixtures/expected-rules.js.map +1 -1
- package/dist/templates/cursor/hooks.json +7 -0
- package/dist/templates/cursor/rules/cstl-session-rename.mdc +31 -0
- package/dist/templates/cursor/rules/retrieval-routing.mdc +1 -1
- package/dist/templates/markdown/agents.md +2 -0
- package/dist/templates/markdown/spec/guides/retrieval-daily-guide.md.txt +14 -0
- package/dist/templates/shared-hooks/index.d.ts +1 -1
- package/dist/templates/shared-hooks/index.d.ts.map +1 -1
- package/dist/templates/shared-hooks/index.js +1 -0
- package/dist/templates/shared-hooks/index.js.map +1 -1
- package/dist/templates/shared-hooks/rename-session-for-task.py +231 -0
- package/dist/templates/trellis/scripts/common/codebase_retrieval_router.py +14 -0
- package/dist/templates/trellis/scripts/common/parent_orchestration.py +341 -2
- package/dist/templates/trellis/scripts/common/task_map.py +638 -614
- package/dist/templates/trellis/scripts/common/task_store.py +47 -1
- package/dist/templates/trellis/scripts/task.py +32 -0
- package/dist/templates/trellis/tasks/templates/release-execution/design.md +60 -60
- package/dist/utils/codebase-retrieval-router.d.ts.map +1 -1
- package/dist/utils/codebase-retrieval-router.js +14 -0
- package/dist/utils/codebase-retrieval-router.js.map +1 -1
- package/dist/utils/cursor-sdk-gate.d.ts +10 -0
- package/dist/utils/cursor-sdk-gate.d.ts.map +1 -0
- package/dist/utils/cursor-sdk-gate.js +32 -0
- package/dist/utils/cursor-sdk-gate.js.map +1 -0
- package/dist/utils/project-capabilities.d.ts +30 -3
- package/dist/utils/project-capabilities.d.ts.map +1 -1
- package/dist/utils/project-capabilities.js +182 -11
- package/dist/utils/project-capabilities.js.map +1 -1
- package/dist/utils/readiness.d.ts.map +1 -1
- package/dist/utils/readiness.js +26 -0
- package/dist/utils/readiness.js.map +1 -1
- package/package.json +4 -3
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,12 @@ 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
|
+
|
|
14
20
|
## [0.3.3] - 2026-07-04
|
|
15
21
|
|
|
16
22
|
Follow-up polish after 0.3.2 coexistence release: closes known limitations from the runtime-isolation task.
|
package/README.md
CHANGED
|
@@ -38,18 +38,6 @@ Fresh installs use `.cstl/` directly. Projects on 0.3.0 run `cstl update --migra
|
|
|
38
38
|
- **Cursor++ safety** — Method 2.5 patch requires explicit `--approve`; `--check-compat` pre-flight; `smoke.py` health check (no secrets)
|
|
39
39
|
- **Evidence pack** — finish/check cite `retrieval-pack-latest.json` when present; research prompts include provider relevance caveats
|
|
40
40
|
|
|
41
|
-
## Quick demo (~5 min)
|
|
42
|
-
|
|
43
|
-
Try Trellis on an empty app directory without touching this source tree:
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
npm install -g @blxzer/cursor-trellis
|
|
47
|
-
cd examples/minimal-agent-app
|
|
48
|
-
./demo.sh # or demo.ps1 on Windows
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
The script runs `cstl init --cursor -y` → `cstl validate-rules` → lists `.cstl/` and `.cursor/`. Details: [examples/minimal-agent-app/README.md](examples/minimal-agent-app/README.md). Agent tooling narrative (CLI / MCP / Hook / Rule): [docs/agent-tooling-narrative.zh-CN.md](docs/agent-tooling-narrative.zh-CN.md).
|
|
52
|
-
|
|
53
41
|
## Quick start (Cursor)
|
|
54
42
|
|
|
55
43
|
**1. Install the CLI** (global or project-local):
|
|
@@ -226,7 +214,6 @@ Local harness layout (`D:\MyHarness`), Git remote policy, release/publish, and d
|
|
|
226
214
|
| [docs/skills.md](docs/skills.md) | Internal skills reference |
|
|
227
215
|
| [docs/subagents.md](docs/subagents.md) | Subagent dispatch design |
|
|
228
216
|
| [docs/agent-tooling-narrative.zh-CN.md](docs/agent-tooling-narrative.zh-CN.md) | CLI / MCP / Hook / Rule layering (ZH) |
|
|
229
|
-
| [examples/minimal-agent-app/](examples/minimal-agent-app/) | 5-minute init demo |
|
|
230
217
|
| [docs/spec-system.md](docs/spec-system.md) | Progressive spec system |
|
|
231
218
|
| [docs/task-system.md](docs/task-system.md) | Task artifacts, gates, Parent/Child |
|
|
232
219
|
| [packages/cli/README.md](packages/cli/README.md) | CLI / npm reference |
|
package/README.zh-CN.md
CHANGED
|
@@ -197,7 +197,8 @@ smart-search --version
|
|
|
197
197
|
| --- | --- |
|
|
198
198
|
| `pnpm build` | `tsc` + 拷贝模板 |
|
|
199
199
|
| `pnpm test` | Vitest |
|
|
200
|
-
| `pnpm
|
|
200
|
+
| `pnpm mirror-check` | Dogfood `.cursor` / `.agents` vs templates |
|
|
201
|
+
| `pnpm run sync:smart-search` | 刷新 bundled `smart-search-cli` skill(从 smart-search 仓库拷贝;非 vendor 源码) |
|
|
201
202
|
|
|
202
203
|
Release 与 npm 发布流程**不在**公开 README 中;见内部维护文档。
|
|
203
204
|
|
package/bin/cstl.js
CHANGED
package/bin/smart-search.js
CHANGED
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAIhE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -9,6 +9,9 @@ import { upgrade } from "../commands/upgrade.js";
|
|
|
9
9
|
import { uninstall } from "../commands/uninstall.js";
|
|
10
10
|
import { runWorkflowCommand, WorkflowCommandError, } from "../commands/workflow.js";
|
|
11
11
|
// import { registerChannelCommand } from "../commands/channel/index.js";
|
|
12
|
+
import { registerCampaignCommand } from "../commands/campaign/index.js";
|
|
13
|
+
import { registerRpcCommand } from "../commands/rpc/index.js";
|
|
14
|
+
import { registerSdkCommand } from "../commands/sdk/index.js";
|
|
12
15
|
import { runValidateRules } from "../commands/validate-rules.js";
|
|
13
16
|
import { isWorkflowInitialized, workflowPath } from "../utils/workflow-dir.js";
|
|
14
17
|
import { PACKAGE_NAME, VERSION } from "../constants/version.js";
|
|
@@ -36,9 +39,12 @@ function checkForUpdates(cwd) {
|
|
|
36
39
|
console.log(chalk.gray(` Run: cstl upgrade\n`));
|
|
37
40
|
}
|
|
38
41
|
}
|
|
39
|
-
// Check for updates at CLI startup when a workflow dir exists
|
|
42
|
+
// Check for updates at CLI startup when a workflow dir exists.
|
|
43
|
+
// Never print to stdout when running an MCP stdio server — Cursor hosts
|
|
44
|
+
// treat any non-framed stdout as a handshake failure.
|
|
40
45
|
const cwd = process.cwd();
|
|
41
|
-
|
|
46
|
+
const isStdioMcp = process.argv.slice(2).includes("mcp");
|
|
47
|
+
if (isWorkflowInitialized(cwd) && !isStdioMcp) {
|
|
42
48
|
checkForUpdates(cwd);
|
|
43
49
|
}
|
|
44
50
|
const program = new Command();
|
|
@@ -251,6 +257,12 @@ program
|
|
|
251
257
|
});
|
|
252
258
|
// Cursor-only product: multi-agent `channel` runtime is upstream Trellis scope; not registered.
|
|
253
259
|
// registerChannelCommand(program);
|
|
260
|
+
// Localhost RPC-FULL CORE control plane (Track B). Not a substitute for durable channel logs.
|
|
261
|
+
registerRpcCommand(program);
|
|
262
|
+
// Cursor SDK RUN bridge (Track B). Explicit --task; mock/live; never fakes IDE tabs or Parent integrate.
|
|
263
|
+
registerSdkCommand(program);
|
|
264
|
+
// Campaign observation MIX (CMD + MCP). Read-only; Canvas Should deferred.
|
|
265
|
+
registerCampaignCommand(program);
|
|
254
266
|
program
|
|
255
267
|
.command("validate-rules")
|
|
256
268
|
.description("Validate Cursor .cursor/rules against the expected manifest (templates and/or installed rules)")
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { CampaignStatusSnapshot } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Cursor project slug for `~/.cursor/projects/<slug>/`.
|
|
4
|
+
* Example: `D:\\MyHarness` → `d-MyHarness`.
|
|
5
|
+
*/
|
|
6
|
+
export declare function cursorProjectSlug(absPath: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Resolve the Cursor canvases directory for a harness root.
|
|
9
|
+
* When harness is known, always returns `~/.cursor/projects/<slug>/canvases`
|
|
10
|
+
* (directory need not exist yet — callers mkdir on write).
|
|
11
|
+
* Returns null only when neither env override nor harness root is available.
|
|
12
|
+
*/
|
|
13
|
+
export declare function resolveCanvasesDir(harnessRoot: string | null): string | null;
|
|
14
|
+
/**
|
|
15
|
+
* Soft-match `~/.cursor/projects/<name>/canvases` when the exact slug folder
|
|
16
|
+
* is missing or differently cased / hyphenated.
|
|
17
|
+
* Does **not** pick longer nested names (e.g. `d-MyHarness-Trellis` for harness
|
|
18
|
+
* `D:\\MyHarness`) — those would steal writes from the canonical slug mkdir path.
|
|
19
|
+
* Skips pure-numeric agent project ids.
|
|
20
|
+
*/
|
|
21
|
+
export declare function softMatchCanvasesDir(projectsRoot: string, slug: string, _harnessRoot: string): string | null;
|
|
22
|
+
/** True when `absPath` is under `canvasDir` (Windows case-insensitive). */
|
|
23
|
+
export declare function isUnderCanvasDir(absPath: string, canvasDir: string | null): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Heuristic: path sits under `~/.cursor/projects/<any>/canvases/` even when
|
|
26
|
+
* `resolveCanvasesDir` returned null (no harness / no env).
|
|
27
|
+
*/
|
|
28
|
+
export declare function looksLikeCursorCanvasesPath(absPath: string): boolean;
|
|
29
|
+
export type CanvasWriteEvaluation = {
|
|
30
|
+
underCanvasDir: boolean;
|
|
31
|
+
usedWorkspaceFallback: boolean;
|
|
32
|
+
warnings: string[];
|
|
33
|
+
hints: string[];
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Evaluate write destination for warnings/hints after `campaign canvas` succeeds.
|
|
37
|
+
* Does not change exit code; callers print warnings on stderr.
|
|
38
|
+
*/
|
|
39
|
+
export declare function evaluateCanvasWritePath(absOut: string, canvasDir: string | null, opts?: {
|
|
40
|
+
usedWorkspaceFallback?: boolean;
|
|
41
|
+
}): CanvasWriteEvaluation;
|
|
42
|
+
export type CanvasOpenAttempt = {
|
|
43
|
+
attempted: boolean;
|
|
44
|
+
ok: boolean;
|
|
45
|
+
detail: string;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Best-effort open of a `.canvas.tsx` via the Cursor CLI (`cursor` / `CURSOR_BIN`).
|
|
49
|
+
* Does not guarantee Canvas view (IDE may open as text); callers still print hints.
|
|
50
|
+
*/
|
|
51
|
+
export declare function resolveCursorCliBin(): string | null;
|
|
52
|
+
export declare function tryOpenCanvasFile(absPath: string): CanvasOpenAttempt;
|
|
53
|
+
export declare function shouldAutoOpenCanvas(opts?: {
|
|
54
|
+
open?: boolean;
|
|
55
|
+
noOpen?: boolean;
|
|
56
|
+
quiet?: boolean;
|
|
57
|
+
}): boolean;
|
|
58
|
+
export declare function resolveHarnessForCanvas(parentDir: string): string | null;
|
|
59
|
+
export declare function defaultCanvasPath(snapshot: CampaignStatusSnapshot, parentDir: string): string;
|
|
60
|
+
/** Whether `defaultCanvasPath` would use the workspace fallback for this parent. */
|
|
61
|
+
export declare function defaultCanvasUsesWorkspaceFallback(parentDir: string): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Render a single-file Cursor Canvas (`.canvas.tsx`) with embedded snapshot.
|
|
64
|
+
* Imports only `cursor/canvas`; no fetch / network.
|
|
65
|
+
*/
|
|
66
|
+
export declare function renderCampaignCanvasTsx(snapshot: CampaignStatusSnapshot): string;
|
|
67
|
+
export declare function writeCampaignCanvas(snapshot: CampaignStatusSnapshot, outPath: string): string;
|
|
68
|
+
//# sourceMappingURL=canvas-render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvas-render.d.ts","sourceRoot":"","sources":["../../../src/commands/campaign/canvas-render.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CASzD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CA2B5E;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI,CA2Bf;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,OAAO,CAWT;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGpE;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,cAAc,EAAE,OAAO,CAAC;IACxB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAUF;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,IAAI,CAAC,EAAE;IAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAE,GACzC,qBAAqB,CAyBvB;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAiBnD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAqCpE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE;IAC1C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAUV;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAExE;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,sBAAsB,EAChC,SAAS,EAAE,MAAM,GAChB,MAAM,CAUR;AAED,oFAAoF;AACpF,wBAAgB,kCAAkC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAG7E;AAOD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,sBAAsB,GAC/B,MAAM,CAwKR;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,sBAAsB,EAChC,OAAO,EAAE,MAAM,GACd,MAAM,CAKR"}
|
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
import { execFileSync, spawn } from "node:child_process";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { findHarnessRoot } from "./trellis-load.js";
|
|
6
|
+
/**
|
|
7
|
+
* Cursor project slug for `~/.cursor/projects/<slug>/`.
|
|
8
|
+
* Example: `D:\\MyHarness` → `d-MyHarness`.
|
|
9
|
+
*/
|
|
10
|
+
export function cursorProjectSlug(absPath) {
|
|
11
|
+
const normalized = path.resolve(absPath).replace(/\\/g, "/");
|
|
12
|
+
const win = normalized.match(/^([A-Za-z]):\/(.*)$/);
|
|
13
|
+
if (win) {
|
|
14
|
+
const drive = win[1].toLowerCase();
|
|
15
|
+
const rest = win[2].replace(/\/+/g, "-").replace(/^-|-$/g, "");
|
|
16
|
+
return rest ? `${drive}-${rest}` : drive;
|
|
17
|
+
}
|
|
18
|
+
return normalized.replace(/^\//, "").replace(/\/+/g, "-");
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Resolve the Cursor canvases directory for a harness root.
|
|
22
|
+
* When harness is known, always returns `~/.cursor/projects/<slug>/canvases`
|
|
23
|
+
* (directory need not exist yet — callers mkdir on write).
|
|
24
|
+
* Returns null only when neither env override nor harness root is available.
|
|
25
|
+
*/
|
|
26
|
+
export function resolveCanvasesDir(harnessRoot) {
|
|
27
|
+
const fromEnv = process.env.TRELLIS_CAMPAIGN_CANVAS_DIR?.trim() ||
|
|
28
|
+
process.env.CURSOR_CANVAS_DIR?.trim();
|
|
29
|
+
if (fromEnv)
|
|
30
|
+
return path.resolve(fromEnv);
|
|
31
|
+
if (!harnessRoot)
|
|
32
|
+
return null;
|
|
33
|
+
const slug = process.env.TRELLIS_CURSOR_PROJECT_SLUG?.trim() ||
|
|
34
|
+
cursorProjectSlug(harnessRoot);
|
|
35
|
+
const candidate = path.join(os.homedir(), ".cursor", "projects", slug, "canvases");
|
|
36
|
+
if (fs.existsSync(candidate))
|
|
37
|
+
return candidate;
|
|
38
|
+
// Soft match unusual project folder names; if projects root is missing, still
|
|
39
|
+
// return the candidate so write can mkdir.
|
|
40
|
+
const projectsRoot = path.join(os.homedir(), ".cursor", "projects");
|
|
41
|
+
if (fs.existsSync(projectsRoot)) {
|
|
42
|
+
const soft = softMatchCanvasesDir(projectsRoot, slug, harnessRoot);
|
|
43
|
+
if (soft)
|
|
44
|
+
return soft;
|
|
45
|
+
}
|
|
46
|
+
return candidate;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Soft-match `~/.cursor/projects/<name>/canvases` when the exact slug folder
|
|
50
|
+
* is missing or differently cased / hyphenated.
|
|
51
|
+
* Does **not** pick longer nested names (e.g. `d-MyHarness-Trellis` for harness
|
|
52
|
+
* `D:\\MyHarness`) — those would steal writes from the canonical slug mkdir path.
|
|
53
|
+
* Skips pure-numeric agent project ids.
|
|
54
|
+
*/
|
|
55
|
+
export function softMatchCanvasesDir(projectsRoot, slug, _harnessRoot) {
|
|
56
|
+
let entries;
|
|
57
|
+
try {
|
|
58
|
+
entries = fs.readdirSync(projectsRoot, { withFileTypes: true });
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
const dirs = entries.filter((e) => e.isDirectory()).map((e) => e.name);
|
|
64
|
+
const slugLower = slug.toLowerCase();
|
|
65
|
+
const slugNorm = slugLower.replace(/_/g, "-");
|
|
66
|
+
const exact = dirs.find((n) => n.toLowerCase() === slugLower);
|
|
67
|
+
if (exact) {
|
|
68
|
+
return path.join(projectsRoot, exact, "canvases");
|
|
69
|
+
}
|
|
70
|
+
// Same path slug with `_` vs `-` (or mixed), not a longer nested project name.
|
|
71
|
+
const normalized = dirs.find((n) => {
|
|
72
|
+
const lower = n.toLowerCase();
|
|
73
|
+
if (/^\d+$/.test(lower))
|
|
74
|
+
return false;
|
|
75
|
+
return lower.replace(/_/g, "-") === slugNorm;
|
|
76
|
+
});
|
|
77
|
+
if (normalized) {
|
|
78
|
+
return path.join(projectsRoot, normalized, "canvases");
|
|
79
|
+
}
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
/** True when `absPath` is under `canvasDir` (Windows case-insensitive). */
|
|
83
|
+
export function isUnderCanvasDir(absPath, canvasDir) {
|
|
84
|
+
if (!canvasDir)
|
|
85
|
+
return false;
|
|
86
|
+
const file = path.resolve(absPath);
|
|
87
|
+
const root = path.resolve(canvasDir);
|
|
88
|
+
if (process.platform === "win32") {
|
|
89
|
+
const f = file.toLowerCase();
|
|
90
|
+
const r = root.toLowerCase().replace(/[/\\]+$/, "");
|
|
91
|
+
return f.startsWith(`${r}\\`) || f.startsWith(`${r}/`);
|
|
92
|
+
}
|
|
93
|
+
const rel = path.relative(root, file);
|
|
94
|
+
return rel !== "" && !rel.startsWith("..") && !path.isAbsolute(rel);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Heuristic: path sits under `~/.cursor/projects/<any>/canvases/` even when
|
|
98
|
+
* `resolveCanvasesDir` returned null (no harness / no env).
|
|
99
|
+
*/
|
|
100
|
+
export function looksLikeCursorCanvasesPath(absPath) {
|
|
101
|
+
const normalized = path.resolve(absPath).replace(/\\/g, "/").toLowerCase();
|
|
102
|
+
return /\/\.cursor\/projects\/[^/]+\/canvases\//.test(`${normalized}/`);
|
|
103
|
+
}
|
|
104
|
+
const OPEN_HINT = "Open this file in Cursor Canvas view (not a normal text editor). " +
|
|
105
|
+
"Cursor only renders .canvas.tsx under ~/.cursor/projects/<slug>/canvases/ " +
|
|
106
|
+
"(or TRELLIS_CAMPAIGN_CANVAS_DIR / CURSOR_CANVAS_DIR). " +
|
|
107
|
+
"Opening outside that folder in a normal editor shows source only — no graphics. " +
|
|
108
|
+
"By default the CLI also opens this file via the Cursor shell command. " +
|
|
109
|
+
"Use --no-open to skip, --quiet for scripts (no hints, no open).";
|
|
110
|
+
/**
|
|
111
|
+
* Evaluate write destination for warnings/hints after `campaign canvas` succeeds.
|
|
112
|
+
* Does not change exit code; callers print warnings on stderr.
|
|
113
|
+
*/
|
|
114
|
+
export function evaluateCanvasWritePath(absOut, canvasDir, opts) {
|
|
115
|
+
const underCanvasDir = isUnderCanvasDir(absOut, canvasDir) || looksLikeCursorCanvasesPath(absOut);
|
|
116
|
+
const usedWorkspaceFallback = opts?.usedWorkspaceFallback === true;
|
|
117
|
+
const warnings = [];
|
|
118
|
+
if (!underCanvasDir) {
|
|
119
|
+
warnings.push("⚠ Warning: output is outside the Cursor canvases directory" +
|
|
120
|
+
(canvasDir ? ` (${canvasDir})` : "") +
|
|
121
|
+
". Opening this path in a normal editor shows TypeScript source only — no Canvas UI.");
|
|
122
|
+
}
|
|
123
|
+
if (usedWorkspaceFallback) {
|
|
124
|
+
warnings.push("⚠ Warning: fell back to .cstl/workspace/campaign-status/ because no harness root " +
|
|
125
|
+
"and no TRELLIS_CAMPAIGN_CANVAS_DIR / CURSOR_CANVAS_DIR were available. " +
|
|
126
|
+
"Prefer the default path under ~/.cursor/projects/<slug>/canvases/.");
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
underCanvasDir,
|
|
130
|
+
usedWorkspaceFallback,
|
|
131
|
+
warnings,
|
|
132
|
+
hints: [OPEN_HINT],
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Best-effort open of a `.canvas.tsx` via the Cursor CLI (`cursor` / `CURSOR_BIN`).
|
|
137
|
+
* Does not guarantee Canvas view (IDE may open as text); callers still print hints.
|
|
138
|
+
*/
|
|
139
|
+
export function resolveCursorCliBin() {
|
|
140
|
+
const fromEnv = process.env.CURSOR_BIN?.trim();
|
|
141
|
+
if (fromEnv)
|
|
142
|
+
return fromEnv;
|
|
143
|
+
try {
|
|
144
|
+
const finder = process.platform === "win32" ? "where.exe" : "which";
|
|
145
|
+
const out = execFileSync(finder, ["cursor"], {
|
|
146
|
+
encoding: "utf8",
|
|
147
|
+
windowsHide: true,
|
|
148
|
+
});
|
|
149
|
+
const first = out
|
|
150
|
+
.split(/\r?\n/)
|
|
151
|
+
.map((s) => s.trim())
|
|
152
|
+
.find(Boolean);
|
|
153
|
+
return first ?? null;
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
export function tryOpenCanvasFile(absPath) {
|
|
160
|
+
const abs = path.resolve(absPath);
|
|
161
|
+
const bin = resolveCursorCliBin();
|
|
162
|
+
if (!bin) {
|
|
163
|
+
return {
|
|
164
|
+
attempted: true,
|
|
165
|
+
ok: false,
|
|
166
|
+
detail: "Cursor CLI not found on PATH (set CURSOR_BIN or install the `cursor` shell command)",
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
try {
|
|
170
|
+
// Prefer argv form without shell when bin is an absolute .exe/.cmd path.
|
|
171
|
+
const useShell = process.platform === "win32" &&
|
|
172
|
+
!path.isAbsolute(bin) &&
|
|
173
|
+
!/\.(exe|cmd|bat)$/i.test(bin);
|
|
174
|
+
const child = spawn(bin, [abs], {
|
|
175
|
+
detached: true,
|
|
176
|
+
stdio: "ignore",
|
|
177
|
+
windowsHide: true,
|
|
178
|
+
shell: useShell,
|
|
179
|
+
});
|
|
180
|
+
child.unref();
|
|
181
|
+
return {
|
|
182
|
+
attempted: true,
|
|
183
|
+
ok: true,
|
|
184
|
+
detail: `spawned ${bin} ${abs}`,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
189
|
+
return {
|
|
190
|
+
attempted: true,
|
|
191
|
+
ok: false,
|
|
192
|
+
detail: `failed to spawn Cursor CLI (${bin}): ${msg}`,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
export function shouldAutoOpenCanvas(opts) {
|
|
197
|
+
// Scripts: --quiet means path-only, do not pop the IDE.
|
|
198
|
+
if (opts?.quiet === true)
|
|
199
|
+
return false;
|
|
200
|
+
if (opts?.noOpen === true)
|
|
201
|
+
return false;
|
|
202
|
+
if (opts?.open === true)
|
|
203
|
+
return true;
|
|
204
|
+
const env = process.env.TRELLIS_CAMPAIGN_CANVAS_OPEN?.trim().toLowerCase();
|
|
205
|
+
if (env === "0" || env === "false" || env === "no")
|
|
206
|
+
return false;
|
|
207
|
+
if (env === "1" || env === "true" || env === "yes")
|
|
208
|
+
return true;
|
|
209
|
+
// Default ON: writing a canvas is useless if the user never sees it.
|
|
210
|
+
return true;
|
|
211
|
+
}
|
|
212
|
+
export function resolveHarnessForCanvas(parentDir) {
|
|
213
|
+
return findHarnessRoot(parentDir) ?? findHarnessRoot(process.cwd());
|
|
214
|
+
}
|
|
215
|
+
export function defaultCanvasPath(snapshot, parentDir) {
|
|
216
|
+
const harness = resolveHarnessForCanvas(parentDir);
|
|
217
|
+
const canvases = resolveCanvasesDir(harness);
|
|
218
|
+
const fileName = `campaign-${snapshot.parent.id}.canvas.tsx`;
|
|
219
|
+
if (canvases) {
|
|
220
|
+
return path.join(canvases, fileName);
|
|
221
|
+
}
|
|
222
|
+
// Last resort: no harness and no env canvas dir.
|
|
223
|
+
const base = path.join(process.cwd(), ".cstl", "workspace", "campaign-status");
|
|
224
|
+
return path.join(base, fileName);
|
|
225
|
+
}
|
|
226
|
+
/** Whether `defaultCanvasPath` would use the workspace fallback for this parent. */
|
|
227
|
+
export function defaultCanvasUsesWorkspaceFallback(parentDir) {
|
|
228
|
+
const harness = resolveHarnessForCanvas(parentDir);
|
|
229
|
+
return resolveCanvasesDir(harness) === null;
|
|
230
|
+
}
|
|
231
|
+
/** Escape a JSON text so it is safe as a JS/TS expression. */
|
|
232
|
+
function jsonAsTsLiteral(value) {
|
|
233
|
+
return JSON.stringify(value, null, 2);
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Render a single-file Cursor Canvas (`.canvas.tsx`) with embedded snapshot.
|
|
237
|
+
* Imports only `cursor/canvas`; no fetch / network.
|
|
238
|
+
*/
|
|
239
|
+
export function renderCampaignCanvasTsx(snapshot) {
|
|
240
|
+
const dataLiteral = jsonAsTsLiteral(snapshot);
|
|
241
|
+
return `import {
|
|
242
|
+
Callout,
|
|
243
|
+
Card,
|
|
244
|
+
CardBody,
|
|
245
|
+
CardHeader,
|
|
246
|
+
Grid,
|
|
247
|
+
H1,
|
|
248
|
+
H2,
|
|
249
|
+
Pill,
|
|
250
|
+
Row,
|
|
251
|
+
Stack,
|
|
252
|
+
Stat,
|
|
253
|
+
Table,
|
|
254
|
+
Text,
|
|
255
|
+
useHostTheme,
|
|
256
|
+
} from "cursor/canvas";
|
|
257
|
+
|
|
258
|
+
/** Embedded campaign MIX snapshot — refresh via \\\`cstl campaign canvas\\\`. */
|
|
259
|
+
const DATA = ${dataLiteral};
|
|
260
|
+
|
|
261
|
+
type Snapshot = typeof DATA;
|
|
262
|
+
type Child = Snapshot["parent"]["children"][number];
|
|
263
|
+
type Stage = Snapshot["parent"]["stages"][number];
|
|
264
|
+
type RpcClient = Snapshot["rpc"]["clients"][number];
|
|
265
|
+
|
|
266
|
+
function stateTone(
|
|
267
|
+
state: string,
|
|
268
|
+
): "neutral" | "success" | "warning" | "info" | "deleted" {
|
|
269
|
+
const s = state.toLowerCase();
|
|
270
|
+
if (s === "integrated" || s === "done" || s === "completed") return "success";
|
|
271
|
+
if (s === "working" || s === "in_progress" || s === "integrating") return "info";
|
|
272
|
+
if (s === "blocked" || s === "failed") return "deleted";
|
|
273
|
+
if (s === "review" || s === "changes") return "warning";
|
|
274
|
+
return "neutral";
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
export default function CampaignStatusCanvas() {
|
|
278
|
+
const theme = useHostTheme();
|
|
279
|
+
const parent = DATA.parent;
|
|
280
|
+
const rpc = DATA.rpc;
|
|
281
|
+
|
|
282
|
+
const stageRows = parent.stages.flatMap((stage: Stage) =>
|
|
283
|
+
stage.units.map((unit) => [
|
|
284
|
+
stage.id,
|
|
285
|
+
stage.title || "—",
|
|
286
|
+
unit.id,
|
|
287
|
+
<Pill key={\`\${stage.id}-\${unit.id}-st\`} tone={stateTone(unit.state)} size="sm">
|
|
288
|
+
{unit.state}
|
|
289
|
+
</Pill>,
|
|
290
|
+
unit.readiness,
|
|
291
|
+
]),
|
|
292
|
+
);
|
|
293
|
+
|
|
294
|
+
const childRows = parent.children.map((child: Child) => [
|
|
295
|
+
child.id,
|
|
296
|
+
<Pill key={\`\${child.id}-st\`} tone={stateTone(child.state)} size="sm">
|
|
297
|
+
{child.state}
|
|
298
|
+
</Pill>,
|
|
299
|
+
child.dependsOn.length ? child.dependsOn.join(", ") : "—",
|
|
300
|
+
child.ref ?? "—",
|
|
301
|
+
]);
|
|
302
|
+
|
|
303
|
+
const clientRows = rpc.clients.map((c: RpcClient) => [
|
|
304
|
+
c.kind,
|
|
305
|
+
c.id,
|
|
306
|
+
<Pill key={\`\${c.kind}-\${c.id}\`} tone="info" size="sm">
|
|
307
|
+
{c.capLabel}
|
|
308
|
+
</Pill>,
|
|
309
|
+
c.campaignId ?? "—",
|
|
310
|
+
c.lastSeenAt ?? "—",
|
|
311
|
+
]);
|
|
312
|
+
|
|
313
|
+
return (
|
|
314
|
+
<Stack gap={20} style={{ padding: 20, maxWidth: 1100 }}>
|
|
315
|
+
<Stack gap={8}>
|
|
316
|
+
<H1>Campaign — {parent.id}</H1>
|
|
317
|
+
<Text style={{ color: theme.text.secondary, fontSize: 12 }}>
|
|
318
|
+
Generated {DATA.generatedAt} · path {parent.path}
|
|
319
|
+
</Text>
|
|
320
|
+
<Text style={{ color: theme.text.tertiary, fontSize: 12 }}>
|
|
321
|
+
Source: Trellis parent-status + optional RPC /status · read-only MIX
|
|
322
|
+
</Text>
|
|
323
|
+
</Stack>
|
|
324
|
+
|
|
325
|
+
<Grid columns={4} gap={12}>
|
|
326
|
+
<Stat value={String(parent.contractEpoch ?? "?")} label="contract_epoch" />
|
|
327
|
+
<Stat
|
|
328
|
+
value={String(parent.executionTopology ?? "?")}
|
|
329
|
+
label="execution_topology"
|
|
330
|
+
/>
|
|
331
|
+
<Stat value={String(parent.mergeLimit ?? "?")} label="merge_limit" />
|
|
332
|
+
<Stat
|
|
333
|
+
value={rpc.reachable ? "up" : "down"}
|
|
334
|
+
label="RPC broker"
|
|
335
|
+
tone={rpc.reachable ? "success" : "danger"}
|
|
336
|
+
/>
|
|
337
|
+
</Grid>
|
|
338
|
+
|
|
339
|
+
{stageRows.length > 0 ? (
|
|
340
|
+
<Stack gap={8}>
|
|
341
|
+
<H2>Stages</H2>
|
|
342
|
+
<Table
|
|
343
|
+
headers={["Stage", "Title", "Unit", "State", "Readiness"]}
|
|
344
|
+
rows={stageRows}
|
|
345
|
+
/>
|
|
346
|
+
</Stack>
|
|
347
|
+
) : null}
|
|
348
|
+
|
|
349
|
+
{childRows.length > 0 ? (
|
|
350
|
+
<Stack gap={8}>
|
|
351
|
+
<H2>Children</H2>
|
|
352
|
+
<Table
|
|
353
|
+
headers={["Child", "State", "depends_on", "ref"]}
|
|
354
|
+
rows={childRows}
|
|
355
|
+
/>
|
|
356
|
+
</Stack>
|
|
357
|
+
) : null}
|
|
358
|
+
|
|
359
|
+
<Card>
|
|
360
|
+
<CardHeader>RPC broker</CardHeader>
|
|
361
|
+
<CardBody>
|
|
362
|
+
<Stack gap={12}>
|
|
363
|
+
<Row gap={8} align="center">
|
|
364
|
+
<Text style={{ fontSize: 12 }}>URL</Text>
|
|
365
|
+
<Text style={{ color: theme.text.secondary, fontSize: 12 }}>
|
|
366
|
+
{rpc.url}
|
|
367
|
+
</Text>
|
|
368
|
+
</Row>
|
|
369
|
+
{!rpc.reachable ? (
|
|
370
|
+
<Callout tone="warning" title="Broker unreachable">
|
|
371
|
+
{rpc.error ?? "reachable: false — Trellis stages/children still shown."}
|
|
372
|
+
</Callout>
|
|
373
|
+
) : null}
|
|
374
|
+
{clientRows.length > 0 ? (
|
|
375
|
+
<Table
|
|
376
|
+
headers={["kind", "id", "capLabel", "campaignId", "lastSeenAt"]}
|
|
377
|
+
rows={clientRows}
|
|
378
|
+
/>
|
|
379
|
+
) : null}
|
|
380
|
+
{rpc.topics.length > 0 ? (
|
|
381
|
+
<Text style={{ color: theme.text.secondary, fontSize: 12 }}>
|
|
382
|
+
Topics: {rpc.topics.join(", ")}
|
|
383
|
+
</Text>
|
|
384
|
+
) : null}
|
|
385
|
+
</Stack>
|
|
386
|
+
</CardBody>
|
|
387
|
+
</Card>
|
|
388
|
+
|
|
389
|
+
{DATA.notes.length > 0 ? (
|
|
390
|
+
<Stack gap={6}>
|
|
391
|
+
<H2>Notes</H2>
|
|
392
|
+
{DATA.notes.map((note: string) => (
|
|
393
|
+
<Text key={note} style={{ color: theme.text.secondary, fontSize: 12 }}>
|
|
394
|
+
{note}
|
|
395
|
+
</Text>
|
|
396
|
+
))}
|
|
397
|
+
</Stack>
|
|
398
|
+
) : null}
|
|
399
|
+
|
|
400
|
+
<Text style={{ color: theme.text.tertiary, fontSize: 12 }}>
|
|
401
|
+
Refresh: cstl campaign canvas --parent {parent.path}
|
|
402
|
+
</Text>
|
|
403
|
+
</Stack>
|
|
404
|
+
);
|
|
405
|
+
}
|
|
406
|
+
`;
|
|
407
|
+
}
|
|
408
|
+
export function writeCampaignCanvas(snapshot, outPath) {
|
|
409
|
+
const abs = path.resolve(outPath);
|
|
410
|
+
fs.mkdirSync(path.dirname(abs), { recursive: true });
|
|
411
|
+
fs.writeFileSync(abs, renderCampaignCanvasTsx(snapshot), "utf8");
|
|
412
|
+
return abs;
|
|
413
|
+
}
|
|
414
|
+
//# sourceMappingURL=canvas-render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canvas-render.js","sourceRoot":"","sources":["../../../src/commands/campaign/canvas-render.ts"],"names":[],"mappings":"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"}
|