screenpipe-mcp 0.20.2 → 0.20.3
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/README.md +69 -1
- package/dist/cli.js +781 -232
- package/dist/http-server.js +730 -85
- package/dist/index.js +593 -47
- package/package.json +1 -1
- package/scripts/build.mjs +2 -0
- package/scripts/gen-bundled-skills.mjs +17 -0
- package/scripts/hermes-smoke.py +55 -0
- package/scripts/openclaw-smoke.mjs +59 -0
- package/server.json +2 -2
- package/src/activity-summary-format.ts +9 -0
- package/src/activity-summary-tool.test.ts +19 -0
- package/src/bundled-skills-transport.test.ts +52 -0
- package/src/bundled-skills.test.ts +39 -0
- package/src/bundled-skills.ts +34 -0
- package/src/call-observation.test.ts +49 -0
- package/src/call-observation.ts +109 -0
- package/src/generated/bundled-skills.ts +116 -0
- package/src/http-server.test.ts +11 -3
- package/src/http-server.ts +31 -44
- package/src/index.ts +41 -69
- package/src/search-result.test.ts +22 -0
- package/src/search-result.ts +75 -0
- package/src/stdio-lifecycle.test.ts +48 -0
- package/src/workflow-transport.test.ts +9 -1
package/README.md
CHANGED
|
@@ -31,12 +31,79 @@ These are self-reported identifiers, not verified app identities; copied skills
|
|
|
31
31
|
and callers that omit the headers cannot be reliably attributed. Historical
|
|
32
32
|
generic API events cannot be assigned an app retroactively.
|
|
33
33
|
|
|
34
|
+
The engine preserves every existing uncached app, MCP and named-agent
|
|
35
|
+
`search_performed` event. Only explicitly API-originated requests with an unknown
|
|
36
|
+
agent are sampled: the first event per 60-second monotonic window per engine
|
|
37
|
+
process, separately for empty/non-empty and parsed/ordinary results (at most four
|
|
38
|
+
events per window, plus the first event in each category after UTC midnight to
|
|
39
|
+
preserve daily activity). An empty background poll cannot consume the successful-result
|
|
40
|
+
slot, and API traffic cannot consume an app, MCP or named-agent slot.
|
|
41
|
+
|
|
42
|
+
Sampled events carry `telemetry_sampling: "first_per_interval_per_result_kind"`
|
|
43
|
+
and `telemetry_sample_interval_seconds: 60`; unsampled events carry `"none"` and
|
|
44
|
+
`0`. Sampled events are presence diagnostics, not exact search counts or an
|
|
45
|
+
unbiased sample of query properties. Their counts and property breakdowns are
|
|
46
|
+
not comparable to earlier releases. `api_usage_5min.request_count` still counts
|
|
47
|
+
aggregate API traffic across all routes, and `qualified_value_event` retains the
|
|
48
|
+
existing successful-retrieval path, including cached searches. No new events are
|
|
49
|
+
added for cache hits. Health/resource telemetry and local monitoring retain their
|
|
50
|
+
existing cadence.
|
|
51
|
+
|
|
34
52
|
Attribution adds fields to existing events and uses the existing analytics
|
|
35
53
|
opt-out. It does not scan running apps or send prompts, search text, or raw
|
|
36
54
|
client names. HTTP MCP now reports successful searches through the same
|
|
37
55
|
best-effort local telemetry endpoint as stdio MCP; empty/failed searches do not
|
|
38
56
|
produce qualified-value events.
|
|
39
57
|
|
|
58
|
+
## Call diagnostics and source references
|
|
59
|
+
|
|
60
|
+
New engine builds accept `POST /internal/telemetry/mcp-call` through the same
|
|
61
|
+
local API authentication and analytics consent boundary as other private MCP
|
|
62
|
+
telemetry. `mcp_tool_call_completed` records one best-effort observation per
|
|
63
|
+
completed dispatcher call: schema version, random request ID, package version,
|
|
64
|
+
fixed client/tool/transport names, `ok`/`empty`/`error`, normalized error category,
|
|
65
|
+
duration, content bytes, optional search count/truncation and known report loss.
|
|
66
|
+
No arguments, result text, error strings or raw client names are included.
|
|
67
|
+
The existing `qualified_value_event` definition is unchanged.
|
|
68
|
+
|
|
69
|
+
`ok` means the dispatcher returned without a protocol/tool error. It does not
|
|
70
|
+
mean the answer was correct or the user completed their task. Search alone sets
|
|
71
|
+
`result_count` and `truncated`; absent fields on other tools remain unknown.
|
|
72
|
+
`response_bytes` counts UTF-8 text and base64 content bytes, not total serialized
|
|
73
|
+
JSON or model tokens. Duration includes tool execution, excluding report delivery.
|
|
74
|
+
|
|
75
|
+
The request ID is returned in `_meta["screenpipe/request_id"]` and forwarded to
|
|
76
|
+
the local API as `x-screenpipe-request-id`. It is one call's correlation key, not
|
|
77
|
+
a user, session or task ID. This change does not add engine log persistence for
|
|
78
|
+
that header. Local helpers report to the engine, which applies its telemetry
|
|
79
|
+
opt-out. `SCREENPIPE_DISABLE_TELEMETRY` and `SCREENPIPE_TELEMETRY_DISABLED` also
|
|
80
|
+
suppress call reporting; CI suppresses it by default. Delivery is capped at eight
|
|
81
|
+
pending requests per reporter and expires after one second. Old engines, opt-out,
|
|
82
|
+
backend outages and process exit can lose reports. `dropped_reports` reports
|
|
83
|
+
known local losses on a later delivery, not complete observation coverage.
|
|
84
|
+
|
|
85
|
+
Screen/audio/input search results preserve backend source identifiers and deep
|
|
86
|
+
links. Both package transports cap text at 1,000 characters per hit by default;
|
|
87
|
+
`max_content_length=0` requests full text for a scoped read. The cap excludes
|
|
88
|
+
metadata, tags and images, so callers should also limit result count. Final pages
|
|
89
|
+
do not suggest another offset. In stdio, pass a returned `frame_id` to
|
|
90
|
+
`frame-context` or `get-frame-elements` to inspect evidence beyond the snippet.
|
|
91
|
+
HTTP clients can open the returned Screenpipe link or make a narrower search.
|
|
92
|
+
A missing source ID stays missing.
|
|
93
|
+
|
|
94
|
+
| Package capability | stdio | HTTP |
|
|
95
|
+
|---|---|---|
|
|
96
|
+
| Search with source references and text caps | `search-content` | `search_content` |
|
|
97
|
+
| Bundled guides | `screenpipe-skills` | `screenpipe-skills` |
|
|
98
|
+
| Frame inspection and saved workflows | Available | Not exposed |
|
|
99
|
+
| Enterprise team tools | With team configuration | Not exposed |
|
|
100
|
+
| Call diagnostics | Best effort | Best effort, per session |
|
|
101
|
+
|
|
102
|
+
This describes this package, not the separate hosted personal or enterprise MCP
|
|
103
|
+
services. A hung backend read no longer keeps a stdio helper alive after stdin
|
|
104
|
+
EOF: shutdown is bounded to 500 ms and affects only that client's process.
|
|
105
|
+
This does not diagnose desktop recording health or reap another client's process.
|
|
106
|
+
|
|
40
107
|
## Installable plugins
|
|
41
108
|
|
|
42
109
|
Build the local Claude Desktop extension and the cloud plugin from source:
|
|
@@ -472,7 +539,8 @@ Questions or concerns: open an issue at
|
|
|
472
539
|
|
|
473
540
|
`list-workflows` searches the desktop Workflows catalog; `get-workflow` returns
|
|
474
541
|
ordered steps, gaps and historical accessibility evidence through the same
|
|
475
|
-
authenticated API. Both tools are available in stdio
|
|
542
|
+
authenticated API. Both tools are available in stdio mode. The package HTTP mode exposes
|
|
543
|
+
`search_content` and `screenpipe-skills`; it does not expose workflow tools. The running
|
|
476
544
|
desktop engine must support `/workflows`; an older engine returns an error.
|
|
477
545
|
Connected clients can use this context to plan automation, but retrieval neither
|
|
478
546
|
authorizes nor executes actions. Captured bounds/IDs must be resolved again in
|