relic-mcp 0.5.0 → 0.7.0
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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +15 -13
- package/dist/relic-mcp.js +4901 -95
- package/mcp-servers.json +0 -1
- package/package.json +1 -1
- package/skills/relic/SKILL.md +50 -1
- package/src/comments.ts +612 -1
- package/src/index.ts +5 -5
- package/src/installer.ts +9 -1
- package/src/inventory.ts +1014 -0
- package/src/metadata-cache.ts +144 -0
- package/src/origin.ts +50 -6
- package/src/publish.ts +59 -5
- package/src/republish.ts +27 -2
- package/src/resolve-anchor.ts +1104 -0
- package/src/server.ts +968 -52
- package/src/state.ts +134 -1
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{
|
|
11
11
|
"name": "relic",
|
|
12
12
|
"description": "Publish a file from your machine as an encrypted, shareable link. The agent encrypts locally, uploads only ciphertext, and hands back a URL whose fragment holds the key, so the service stores something it cannot read.",
|
|
13
|
-
"version": "0.
|
|
13
|
+
"version": "0.7.0",
|
|
14
14
|
"source": "./",
|
|
15
15
|
"author": {
|
|
16
16
|
"name": "The Bushido Collective",
|
|
@@ -21,6 +21,6 @@
|
|
|
21
21
|
}
|
|
22
22
|
],
|
|
23
23
|
"metadata": {
|
|
24
|
-
"version": "0.
|
|
24
|
+
"version": "0.7.0"
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "relic",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Publish a file from your machine as an encrypted, shareable link. The agent encrypts locally, uploads only ciphertext, and hands back a URL whose fragment holds the key, so the service stores something it cannot read.",
|
|
5
5
|
"mcpServers": "./mcp-servers.json",
|
|
6
6
|
"author": {
|
package/README.md
CHANGED
|
@@ -4,9 +4,7 @@ Publish a file as an encrypted relic and get back a shareable link. The
|
|
|
4
4
|
encryption key is generated on your machine and is never sent to the service.
|
|
5
5
|
|
|
6
6
|
```bash
|
|
7
|
-
claude mcp add relic
|
|
8
|
-
--env RELIC_SERVICE_ORIGIN=https://relik.link \
|
|
9
|
-
-- npx -y relic-mcp@latest
|
|
7
|
+
claude mcp add relic -- npx -y relic-mcp@latest
|
|
10
8
|
```
|
|
11
9
|
|
|
12
10
|
Then: *"publish ./report.md as a relic."*
|
|
@@ -18,8 +16,7 @@ For any client that takes a JSON config:
|
|
|
18
16
|
"mcpServers": {
|
|
19
17
|
"relic": {
|
|
20
18
|
"command": "npx",
|
|
21
|
-
"args": ["-y", "relic-mcp@latest"]
|
|
22
|
-
"env": { "RELIC_SERVICE_ORIGIN": "https://relik.link" }
|
|
19
|
+
"args": ["-y", "relic-mcp@latest"]
|
|
23
20
|
}
|
|
24
21
|
}
|
|
25
22
|
}
|
|
@@ -33,9 +30,10 @@ For any client that takes a JSON config:
|
|
|
33
30
|
3. Encrypts locally with AES-128-GCM under RFC 8188 `aes128gcm` framing.
|
|
34
31
|
4. Uploads **only ciphertext**, straight to object storage under a signed URL.
|
|
35
32
|
It does not pass through the Relic service.
|
|
36
|
-
5. Tells the service
|
|
37
|
-
list, this client's name,
|
|
38
|
-
|
|
33
|
+
5. Tells the service four things: a coarse renderer class from an eight-value
|
|
34
|
+
list, this client's name, the ciphertext's byte length, and the title,
|
|
35
|
+
which defaults to the filename and is stored in the clear. Not the
|
|
36
|
+
mimetype, not the contents.
|
|
39
37
|
6. Records the relic's id, key, and publish token locally, in a 0600 file
|
|
40
38
|
under your user config directory, so the relic can be republished from
|
|
41
39
|
this machine later. See [Republishing](#republishing). The service never
|
|
@@ -68,8 +66,9 @@ existing link sees the new content; there is no new link to hand out.
|
|
|
68
66
|
```
|
|
69
67
|
|
|
70
68
|
It takes `relic_id` (the 26-character id the original publish returned) and
|
|
71
|
-
`path`, plus
|
|
72
|
-
is forwarded on the request. Versions count from 1:
|
|
69
|
+
`path`, plus optional `filename` and `title` overrides and an optional
|
|
70
|
+
`ttl_days` that is forwarded on the request. Versions count from 1:
|
|
71
|
+
`relic_publish` reports
|
|
73
72
|
version 1, each republish reports the next number, and the URL never changes
|
|
74
73
|
across them. A relic's lifetime is fixed at its first publish and carries
|
|
75
74
|
across versions.
|
|
@@ -151,9 +150,11 @@ binding the tarball to a specific commit and workflow.
|
|
|
151
150
|
|
|
152
151
|
| Tool | Input | Notes |
|
|
153
152
|
|---|---|---|
|
|
154
|
-
| `relic_publish` | `path`, optional `filename`, `ttl_days` | A filesystem path. Inline content is deliberately not accepted, so the plaintext never joins the key in your transcript. A relic is kept until it is deleted; `ttl_days` (an integer, 1 to 3650) gives it a lifetime. Reports the relic as version 1. |
|
|
153
|
+
| `relic_publish` | `path`, optional `filename`, `title`, `ttl_days` | A filesystem path. Inline content is deliberately not accepted, so the plaintext never joins the key in your transcript. A relic carries a plaintext title defaulting to the filename and stored by the service in the clear for link previews; pass `""` to publish without one. A relic is kept until it is deleted; `ttl_days` (an integer, 1 to 3650) gives it a lifetime. Reports the relic as version 1. |
|
|
155
154
|
| `relic_lookup_source` | `path` | Reads local state to find whether this machine already published that file, and returns the exact `relic_republish` call. Calls no server. |
|
|
156
|
-
| `
|
|
155
|
+
| `relic_list` | optional `limit`, `include_expired`, `verify`, `refresh` | Every relic this machine published, newest first. The only tool that enumerates: lookup answers only from the file a relic came from. A name this machine never recorded is recovered by decrypting the relic's own envelope in one 64 KB range request, or comes back `null` with the reason. A relic the service will not serve is listed with which of removed, expired, exhausted, or unreachable it is. Each row carries the share URL, fragment included, so each row is a credential. Reaching the service spends one of a relic's finite opens; recovered names are cached, so a repeat listing spends none. |
|
|
156
|
+
| `relic_show` | `relic_id`, optional `include_content` | One relic in detail, including how many versions the service holds against how many this machine recorded, and with `include_content` the current decrypted content. Read it before republishing anything you did not just write: republish replaces what the link serves, so without the read-back the edit is blind. Content that is not valid UTF-8 is reported as size and type rather than mangled text. |
|
|
157
|
+
| `relic_republish` | `relic_id`, `path`, optional `filename`, `title`, `ttl_days` | Publishes a new version under the same key, so the share URL is unchanged. Replaces the plaintext title (defaults to the new filename; pass `""` to remove it). Works only on the machine holding that relic's key and publish token; a taken-down relic can never be revived. |
|
|
157
158
|
| `relic_read_comments` | `relic_id` | Returns the relic's comments oldest first, decrypted locally, with the author and a count of any that would not decrypt. Works only on the machine that published. |
|
|
158
159
|
| `relic_comment` | `relic_id`, `body`, optional `display_name` | Leaves a comment, encrypted on this machine, authorized by the publish token and attributed as `publisher`. Body caps at 4096 bytes of UTF-8. |
|
|
159
160
|
| `relic_describe_client` | none | Explains the encryption path. Reads nothing, sends nothing. |
|
|
@@ -162,10 +163,11 @@ binding the tarball to a specific commit and workflow.
|
|
|
162
163
|
|
|
163
164
|
| Variable | Meaning |
|
|
164
165
|
|---|---|
|
|
165
|
-
| `RELIC_SERVICE_ORIGIN` | The Relic service to publish to. |
|
|
166
|
+
| `RELIC_SERVICE_ORIGIN` | The Relic service to publish to. Unset means the hosted service, `https://relik.link`. Set it to publish to your own. |
|
|
166
167
|
| `RELIC_ORIGIN` | Origin used to build the shareable URL. Defaults to the above. |
|
|
167
168
|
| `RELIC_CLIENT_NAME` | Reported to the service as the publishing client. |
|
|
168
169
|
| `RELIC_PUBLISH_STATE` | Where the publish state file lives. Defaults to `$XDG_CONFIG_HOME/relic-mcp/publish-state.json`, or `~/.config/relic-mcp/publish-state.json`. |
|
|
170
|
+
| `RELIC_METADATA_CACHE` | Where recovered filenames are cached. Defaults to `metadata-cache.json` beside the publish state. Holds no key and no token; deleting it costs one round of recovery. |
|
|
169
171
|
| `RELIC_MCP_HTTP` | `1` to serve Streamable HTTP instead of stdio. |
|
|
170
172
|
| `RELIC_MCP_PORT`, `RELIC_MCP_HOST` | HTTP bind. Defaults to `127.0.0.1:7333`. |
|
|
171
173
|
| `RELIC_MCP_ALLOWED_ORIGINS` | Comma-separated `Origin` allowlist for HTTP. |
|