@raindrop-ai/cursor 0.0.1 → 0.0.2

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "raindrop",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Session, tool call, and token tracing for Cursor agents",
5
5
  "author": { "name": "Raindrop AI", "email": "support@raindrop.ai" },
6
6
  "license": "MIT",
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @raindrop-ai/cursor
2
2
 
3
- Capture Cursor IDE, `cursor-agent` CLI, and Cloud Agent turns in Raindrop using Cursor hooks. No application code changes are required.
3
+ Raindrop observability for Cursor IDE, `cursor-agent`, and Cloud Agents. Hooks capture each turn. You do not change application code.
4
4
 
5
5
  ## Install
6
6
 
@@ -9,44 +9,36 @@ Requires Node.js 20 or later.
9
9
  ```bash
10
10
  npm install -g @raindrop-ai/cursor
11
11
  raindrop-cursor setup
12
- export RAINDROP_WRITE_KEY="your-write-key"
13
12
  ```
14
13
 
15
- Setup merges hooks into `~/.cursor/hooks.json` and adds a self-diagnostics MCP server to `~/.cursor/mcp.json`. Existing hooks and other MCP servers are preserved. Setup asks for a Raindrop write key and an optional project slug; a blank project uses the org default Production project.
14
+ Setup writes hooks into `~/.cursor/hooks.json` and a self-diagnostics MCP server into `~/.cursor/mcp.json`. Existing hooks and other MCP servers stay. Setup asks for a Raindrop write key and an optional project slug. A blank project uses Production.
16
15
 
17
- For a repository and its Cloud Agents:
16
+ ## Cloud Agents
18
17
 
19
18
  ```bash
20
19
  npx -y @raindrop-ai/cursor setup --scope project
21
20
  ```
22
21
 
23
- Commit `.cursor/hooks.json` and `.cursor/mcp.json`. Project hooks use `npx -y @raindrop-ai/cursor@<version> hook`, pinned to the CLI version that ran setup; rerunning setup refreshes the pin. The machine needs Node.js, npm, and package registry access. Set `RAINDROP_WRITE_KEY` and `RAINDROP_LOCAL_DEBUGGER=false` in the Cloud Agent's runtime secrets. For a named project, also set `RAINDROP_PROJECT_ID` there. Setup saves your project choice in local shared configuration, which is unavailable on Cloud Agent VMs.
22
+ Commit `.cursor/hooks.json` and `.cursor/mcp.json`. Project hooks pin `npx -y @raindrop-ai/cursor@<version> hook` to the CLI that ran setup. Rerun setup to refresh the pin.
24
23
 
25
- Install in one scope per conversation to avoid duplicate hook deliveries.
24
+ Set `RAINDROP_WRITE_KEY` and `RAINDROP_LOCAL_DEBUGGER=false` in the Cloud Agent runtime secrets. For a named project, also set `RAINDROP_PROJECT_ID`.
26
25
 
27
- ## Captured data
26
+ Install in one scope per conversation.
28
27
 
29
- Each `generation_id` gets one `ai_generation` event. `beforeSubmitPrompt` opens it, `afterAgentResponse` patches output, and `stop` finalizes it. A turn can also begin from later hooks when lifecycle events are absent.
28
+ ## What gets tracked
30
29
 
31
- The integration records:
32
-
33
- - Generic tool success and failure spans, using Cursor's duration. Permission denials also produce `ai.permissionDenied`.
34
- - `ai.thinking` spans.
35
- - One model span per turn, with input, output, cache-read, and cache-write usage when Cursor provides it.
36
- - Session usage totals, compaction metadata, and session-end metadata.
37
-
38
- `stop` counts are cumulative for the turn. They replace response counts rather than being added again. Missing counts remain absent. Duplicate `stop` hooks do not add another model span or double session totals.
39
-
40
- At `sessionEnd`, turns missing a `stop` receive a cancelled model span and a final event patch with their captured usage. This includes earlier unfinished generations. Their usage enters the final session totals once. Already completed turns do not get another model span.
41
-
42
- Generic tool hooks avoid double-counting shell, file, and MCP tool operations. Specialized tool hooks and Tab hooks are not installed.
30
+ - One `ai_generation` event per Cursor generation
31
+ - Tool success and failure spans, including permission denials
32
+ - Thinking spans
33
+ - One model span per turn, with input, output, cache-read, and cache-write usage when Cursor provides it
34
+ - Session usage totals and compaction metadata
43
35
 
44
36
  ## Configuration
45
37
 
46
38
  Configuration is shared with the Claude Code integration at `~/.config/raindrop/config.json`.
47
39
 
48
40
  | Environment variable | Purpose |
49
- | --- | --- |
41
+ |---|---|
50
42
  | `RAINDROP_WRITE_KEY` | Raindrop write key |
51
43
  | `RAINDROP_API_URL` | Ingest base URL; defaults to `https://api.raindrop.ai/v1` |
52
44
  | `RAINDROP_PROJECT_ID` | Project override |
@@ -70,41 +62,14 @@ raindrop-cursor uninstall
70
62
  raindrop-cursor uninstall --scope project
71
63
  ```
72
64
 
73
- Enable, disable, and debug commands update shared Raindrop configuration, including its use by the Claude Code integration.
65
+ Enable, disable, and debug commands update the shared Raindrop config that Claude Code also reads.
74
66
 
75
67
  ## Local debugger
76
68
 
77
- Start the Raindrop local debugger on port 5899, or set `RAINDROP_LOCAL_DEBUGGER` to its URL. Hooks probe for it with a short timeout and cache discovery for five seconds. Event patches and OTLP spans appear without a cloud write key. Debugger HTTP requests run with tracing suppressed to prevent recursive instrumentation.
69
+ Start the Raindrop local debugger on port 5899, or set `RAINDROP_LOCAL_DEBUGGER` to its URL. Event patches and OTLP spans appear without a cloud write key.
78
70
 
79
- `setup --local-only` skips requiring a write key. It preserves an existing saved write key unless you supply a replacement. To run hooks without cloud delivery, set `RAINDROP_WRITE_KEY` to an empty string in the hook environment; this overrides the saved key.
71
+ `setup --local-only` skips requiring a write key. On Cloud Agent VMs and other shared hosts, set `RAINDROP_LOCAL_DEBUGGER=false`.
80
72
 
81
73
  ## Self-diagnostics
82
74
 
83
- `raindrop-cursor mcp-serve` exposes the `__raindrop_report` tool. Its default categories are missing context, repeated tool failures, capability gaps, complete task failure, and noteworthy observations. Signals target the most recently updated Cursor event on that machine. Concurrent conversations can make this fallback ambiguous.
84
-
85
- ## Cursor plugin
86
-
87
- The npm package includes `.cursor-plugin/plugin.json`, `hooks/hooks.json`, `hooks/hook.cjs`, and `.mcp.json`. Each plugin hook is a one-line `node -e` command that runs `hooks/hook.cjs`; the launcher resolves the bundled CLI relative to its own file, skips missing builds, and always exits zero. The package build synchronizes the plugin version with the npm version.
88
-
89
- ## Limits
90
-
91
- Hook commands always exit zero and write no control response to stdout. Slow network requests cannot extend the CLI's whole-invocation deadline. Inputs over 16 MB are dropped; captured text is capped at 1,000,000 characters and serialized span strings at 32,768 characters.
92
-
93
- State and debugger discovery cache live in `~/.raindrop-cursor`, with hashed conversation and generation keys and bounded file locking. On POSIX, the directory must belong to the current user with no group or other permissions; files use mode `0600`. Unsafe directories and linked files are rejected on reads. Writes replace files atomically without following existing links. Windows relies on the user's home-directory ACLs. The old shared temporary directory is not read or migrated; restart active Cursor sessions when upgrading.
94
-
95
- `sessionEnd` cleans up conversation state. Cloud Agents may omit `sessionStart` and `sessionEnd`; `stop` still finalizes events, but session metadata can be incomplete and state remains until removed. You can remove `~/.raindrop-cursor` when no Cursor sessions are active. No transcript files are parsed.
96
-
97
- Cached auto-detection accepts only `http://localhost:5899/v1/`; custom debugger URLs require explicit `RAINDROP_LOCAL_DEBUGGER` configuration. Auto-detection trusts the service listening on that local port. Set `RAINDROP_LOCAL_DEBUGGER=false` on shared hosts where that service cannot be trusted.
98
-
99
- ## Development
100
-
101
- ```bash
102
- pnpm --filter @raindrop-ai/core build
103
- pnpm --filter @raindrop-ai/cursor build
104
- pnpm --filter @raindrop-ai/cursor test
105
- pnpm --filter @raindrop-ai/cursor lint
106
- ```
107
-
108
- The conformance driver at `conformance/cursor-driver.mjs` exercises the public mapper and real telemetry transport with synthetic hook payloads. Live Cursor IDE and Cloud Agent validation is separate from these fixtures.
109
-
110
- Run it using the [pinned harness instructions](../../conformance/README.md), with `--driver 'node /absolute/path/to/raindrop-js/conformance/cursor-driver.mjs'` and `--failures /absolute/path/to/raindrop-js/conformance/cursor-failures.txt`. The initial fault-lane baseline has 2 passes, 10 expected failures, and 48 unsupported scenarios. [DEV-1661](https://linear.app/raindrop-ai/issue/DEV-1661/cursor-hooks-conformance-gaps-and-live-integration-verification) tracks those gaps, CLI hook availability, subagent token attribution, and CI onboarding.
75
+ `raindrop-cursor mcp-serve` exposes `__raindrop_report`. Default categories are missing context, repeated tool failures, capability gaps, complete task failure, and noteworthy observations.
package/dist/cli.js CHANGED
@@ -1773,7 +1773,7 @@ import { z as z4 } from "zod";
1773
1773
  // package.json
1774
1774
  var package_default = {
1775
1775
  name: "@raindrop-ai/cursor",
1776
- version: "0.0.1",
1776
+ version: "0.0.2",
1777
1777
  description: "Raindrop observability for Cursor agents via hooks",
1778
1778
  license: "MIT",
1779
1779
  type: "module",
package/dist/index.cjs CHANGED
@@ -1807,7 +1807,7 @@ installTracingSuppressionHook();
1807
1807
  // package.json
1808
1808
  var package_default = {
1809
1809
  name: "@raindrop-ai/cursor",
1810
- version: "0.0.1",
1810
+ version: "0.0.2",
1811
1811
  description: "Raindrop observability for Cursor agents via hooks",
1812
1812
  license: "MIT",
1813
1813
  type: "module",
package/dist/index.js CHANGED
@@ -1767,7 +1767,7 @@ installTracingSuppressionHook();
1767
1767
  // package.json
1768
1768
  var package_default = {
1769
1769
  name: "@raindrop-ai/cursor",
1770
- version: "0.0.1",
1770
+ version: "0.0.2",
1771
1771
  description: "Raindrop observability for Cursor agents via hooks",
1772
1772
  license: "MIT",
1773
1773
  type: "module",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@raindrop-ai/cursor",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Raindrop observability for Cursor agents via hooks",
5
5
  "license": "MIT",
6
6
  "type": "module",