@brainervirus/workit-cursor 0.8.6 → 0.8.7

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.
@@ -2,7 +2,7 @@
2
2
  "name": "workit",
3
3
  "displayName": "Workit",
4
4
  "description": "OpenCode-style verify, PR, changelog, commit, and session handoff for Cursor",
5
- "version": "0.8.6",
5
+ "version": "0.8.7",
6
6
  "author": {
7
7
  "name": "Cristhofer Pincetti"
8
8
  },
package/README.md CHANGED
@@ -23,7 +23,8 @@ npx @brainervirus/workit-cli init
23
23
  "command": "npx",
24
24
  "args": [
25
25
  "-y",
26
- "--package=@brainervirus/workit-cursor@0.8.5",
26
+ "--prefer-online",
27
+ "--package=@brainervirus/workit-cursor@latest",
27
28
  "workit-cursor-mcp",
28
29
  "${workspaceFolder}"
29
30
  ]
@@ -35,7 +36,7 @@ npx @brainervirus/workit-cli init
35
36
  ### Requirements
36
37
 
37
38
  - **Node.js ≥ 22** — the MCP server and session-start hook are self-contained Node bundles invoked through `npx`.
38
- - **Network** — `npx -y …@0.8.5` resolves and downloads the package on first run in each environment; a machine that cannot reach the npm registry cannot start the MCP server or hook (see [Runtime](#runtime)).
39
+ - **Network** — `npx -y --prefer-online …@latest` resolves and downloads the package on first run in each environment; a machine that cannot reach the npm registry cannot start the MCP server or hook (see [Runtime](#runtime)).
39
40
 
40
41
  ## What it provides
41
42
 
@@ -59,11 +60,11 @@ Cursor adapts workit through policy-only confirmation: approvals and lifecycle t
59
60
 
60
61
  Cursor launches the MCP server and session-start hook through `npx`, so the shipped manifests contain no repository-relative `dist` paths:
61
62
 
62
- - **MCP server** — `npx -y --package=@brainervirus/workit-cursor@0.8.5 workit-cursor-mcp ${workspaceFolder}`. It speaks the MCP stdio protocol; `stdout` is reserved for protocol messages and diagnostics go to `stderr`.
63
- - **Session-start hook** — `npx -y --package=@brainervirus/workit-cursor@0.8.5 workit-cursor-session-start`. It emits valid hook output and a diagnostic on runtime failure, and remains fail-open where Cursor's hook contract requires startup continuity.
63
+ - **MCP server** — `npx -y --prefer-online --package=@brainervirus/workit-cursor@latest workit-cursor-mcp ${workspaceFolder}`. It speaks the MCP stdio protocol; `stdout` is reserved for protocol messages and diagnostics go to `stderr`.
64
+ - **Session-start hook** — `npx -y --prefer-online --package=@brainervirus/workit-cursor@latest workit-cursor-session-start`. It emits valid hook output and a diagnostic on runtime failure, and remains fail-open where Cursor's hook contract requires startup continuity.
64
65
  - `npx` startup or network failure is surfaced by Cursor as an MCP/hook startup failure; Workit never silently substitutes stale local runtime code.
65
66
 
66
- The runtime runs from the exact reviewed pin `@0.8.5`: Cursor reviews plugin metadata from Git, while npm serves the pinned runtime. Bumping the pin is a deliberate reviewed update, made only after the target npm version is public — never a mutable `latest` dist-tag. See [Update review](#update-review).
67
+ The runtime runs from `@latest` with the mandatory `--prefer-online` flag: Cursor reviews plugin metadata from Git, while npm serves the runtime. `--prefer-online` forces npx to check the registry so a stale cached `latest` resolution is never reused. See [Update review](#update-review).
67
68
 
68
69
  ## Security and data handling
69
70
 
@@ -96,7 +97,7 @@ The repository root carries `.cursor-plugin/marketplace.json`, indexing `package
96
97
 
97
98
  - **Installing from Marketplace** — a Marketplace admin adds the repository URL through Cursor's authenticated publisher flow; end users then install the plugin from the Cursor Marketplace UI, which reads `.cursor-plugin/plugin.json` and the tracked components directly from Git.
98
99
  - **Submission** — Marketplace submission is a separate, later authenticated action at `https://cursor.com/marketplace/publish`. It is **not** performed here and no publication or acceptance is claimed; the repository is kept validated and submission-ready.
99
- - **Update review** — Git plugin metadata (manifest, rules, skills, assets) is reviewed by Cursor on Marketplace updates, while the npm runtime is pinned to the exact reviewed `@0.8.5`. Bumping that pin in `mcp.json` / `hooks-cursor.json` is a deliberate reviewed change: only after the target npm version is public, never a mutable `latest` dist-tag.
100
+ - **Update review** — Git plugin metadata (manifest, rules, skills, assets) is reviewed by Cursor on Marketplace updates, while the npm runtime runs from `@latest` with `--prefer-online`. The selector is shared across `mcp.json`, `hooks-cursor.json`, and `run-cursor-mcp.sh`, and a stale `latest` resolution is prevented by the mandatory `--prefer-online` flag.
100
101
  - **Troubleshooting** — `workit doctor` (or the `workflow_doctor` tool) reports installation health including runtime, token, VCS/YouTrack, and log-writability checks; it exits nonzero on failure. An MCP/hook startup failure with no network is an `npx`/registry reachability issue, not a Workit defect.
101
102
 
102
103
  ## Docs
@@ -21842,13 +21842,25 @@ function isWorkitPlugin(value) {
21842
21842
  const pkgPath = s.includes("/packages/workit-opencode/") || s.includes("/packages/workit-cursor/") || s.includes("/node_modules/@brainervirus/workit-opencode/") || s.includes("/node_modules/@brainervirus/workit-cursor/");
21843
21843
  return named(s, "workflow-toolkit") || named(s, "workflow-toolkit-opencode") || named(s, "local/workflow-toolkit") || named(s, "workit") || named(s, "local/workit") || named(s, "@brainervirus/workit-opencode") || named(s, "@brainervirus/workit-cursor") || url && pkgPath || s.startsWith("git+file://") && s.includes("workflow-toolkit");
21844
21844
  }
21845
+ function cursorMcpServerEntry(_packageDir) {
21846
+ return {
21847
+ command: "npx",
21848
+ args: [
21849
+ "-y",
21850
+ "--prefer-online",
21851
+ `--package=${CURSOR_RUNTIME_PACKAGE}`,
21852
+ "workit-cursor-mcp",
21853
+ "${workspaceFolder}"
21854
+ ]
21855
+ };
21856
+ }
21845
21857
  function cursorHooksEntry(_packageDir) {
21846
21858
  return {
21847
- command: `npx -y --package=${CURSOR_RUNTIME_PACKAGE} workit-cursor-session-start`,
21859
+ command: `npx -y --prefer-online --package=${CURSOR_RUNTIME_PACKAGE} workit-cursor-session-start`,
21848
21860
  args: []
21849
21861
  };
21850
21862
  }
21851
- var named = (s, name) => s === name || s.startsWith(`${name}@`), CURSOR_RUNTIME_PACKAGE = "@brainervirus/workit-cursor@0.8.5";
21863
+ var named = (s, name) => s === name || s.startsWith(`${name}@`), CURSOR_RUNTIME_PACKAGE = "@brainervirus/workit-cursor@latest";
21852
21864
  var init_registration = () => {};
21853
21865
 
21854
21866
  // packages/workit-core/src/core/skill-manifests.ts
@@ -22189,12 +22201,9 @@ var TOKEN_PLACEHOLDER2 = "YOUR_TOKEN_HERE", findDevFromCwd = (cwd) => {
22189
22201
  return "invalid";
22190
22202
  }
22191
22203
  const executable = path9.basename(command).toLowerCase();
22204
+ const canonical = cursorMcpServerEntry("").args;
22192
22205
  if (executable === "npx" || executable === "npx.exe" || executable === "npx.cmd") {
22193
- if (args[0] !== "-y")
22194
- return "invalid";
22195
- if (args[1] !== `--package=${CURSOR_RUNTIME_PACKAGE}`)
22196
- return "invalid";
22197
- if (args[2] !== "workit-cursor-mcp")
22206
+ if (args.length !== canonical.length || args.some((a, i) => a !== canonical[i]))
22198
22207
  return "invalid";
22199
22208
  return { kind: "npx" };
22200
22209
  }
@@ -24503,9 +24512,6 @@ var COORDINATOR_RECOVERY_TEXT, CURSOR_SUBAGENT_UNSUPPORTED_TEXT, MENU_CHOICES, e
24503
24512
  }), resetForPlanDrift = (state) => ({
24504
24513
  ...state,
24505
24514
  plan: { ...state.plan, status: "draft", evidence: null, approved_digest: null },
24506
- menu: { presented: false, chosen: "", evidence: null },
24507
- execution: { status: "pending", mode: null, evidence: null },
24508
- handoff_destination: false,
24509
24515
  updated_at: Date.now()
24510
24516
  }), driftCodeFor = (root, relPath, storedDigest) => {
24511
24517
  if (storedDigest === null)
@@ -3,7 +3,7 @@
3
3
  "hooks": {
4
4
  "sessionStart": [
5
5
  {
6
- "command": "npx -y --package=@brainervirus/workit-cursor@0.8.5 workit-cursor-session-start"
6
+ "command": "npx -y --prefer-online --package=@brainervirus/workit-cursor@latest workit-cursor-session-start"
7
7
  }
8
8
  ]
9
9
  }
package/mcp.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "workit": {
4
4
  "command": "npx",
5
- "args": ["-y", "--package=@brainervirus/workit-cursor@0.8.5", "workit-cursor-mcp", "${workspaceFolder}"]
5
+ "args": ["-y", "--prefer-online", "--package=@brainervirus/workit-cursor@latest", "workit-cursor-mcp", "${workspaceFolder}"]
6
6
  }
7
7
  }
8
8
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brainervirus/workit-cursor",
3
- "version": "0.8.6",
3
+ "version": "0.8.7",
4
4
  "private": false,
5
5
  "description": "Workit Cursor plugin: MCP server, hooks, rules, marketplace manifest (thin over @brainervirus/workit-core)",
6
6
  "keywords": [
@@ -39,7 +39,7 @@
39
39
  "build": "bun scripts/build.ts"
40
40
  },
41
41
  "dependencies": {
42
- "@brainervirus/workit-core": "^0.8.6",
42
+ "@brainervirus/workit-core": "^0.8.7",
43
43
  "@modelcontextprotocol/sdk": "^1.12.0",
44
44
  "zod": "^3.24.0"
45
45
  },