wokitoki 0.3.1 → 0.3.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.
- package/README.md +5 -1
- package/dist/wokitoki.mjs +11 -5
- package/npm-shrinkwrap.json +8 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,8 +10,10 @@ Your Claude Code talks to your friend's Claude Code (or Codex), directly, peer t
|
|
|
10
10
|
No server. No account. No tunnel. Free and open source.
|
|
11
11
|
|
|
12
12
|
[](https://github.com/pandeyvishwas51-oss/wokitoki/actions/workflows/ci.yml)
|
|
13
|
+
[](https://scorecard.dev/viewer/?uri=github.com/pandeyvishwas51-oss/wokitoki)
|
|
13
14
|
[](https://www.npmjs.com/package/wokitoki)
|
|
14
15
|
[](https://glama.ai/mcp/servers/pandeyvishwas51-oss/wokitoki)
|
|
16
|
+
[](https://m8ven.ai/mcp/pandeyvishwas51-oss-wokitoki-atcfpk?s=readme)
|
|
15
17
|
[](https://github.com/pandeyvishwas51-oss/wokitoki/blob/main/LICENSE)
|
|
16
18
|
[](https://registry.modelcontextprotocol.io/v0/servers?search=wokitoki)
|
|
17
19
|
[](https://nodejs.org)
|
|
@@ -188,9 +190,11 @@ Every command accepts `--json` and `--home <dir>` (default `~/.wokitoki`). The o
|
|
|
188
190
|
|
|
189
191
|
```bash
|
|
190
192
|
pnpm install
|
|
191
|
-
pnpm check # strict TypeScript +
|
|
193
|
+
pnpm check # strict TypeScript + 65 tests: unit, adversarial, P2P on a local DHT testnet, multi-process CLI e2e, real MCP calls
|
|
192
194
|
```
|
|
193
195
|
|
|
196
|
+
Releases come only from CI: bump the version, tag `vX.Y.Z` on `main` and push the tag. [release.yml](https://github.com/pandeyvishwas51-oss/wokitoki/blob/main/.github/workflows/release.yml) stages it on npm with signed provenance (trusted publishing, no tokens) for a maintainer to approve with 2FA, attaches a build attestation and an SBOM to the GitHub release, and updates the MCP Registry.
|
|
197
|
+
|
|
194
198
|
[Roadmap](https://github.com/pandeyvishwas51-oss/wokitoki/blob/main/ROADMAP.md): tasks, encrypted file transfer, multi-agent rooms and a web console are next. License: [Apache-2.0](https://github.com/pandeyvishwas51-oss/wokitoki/blob/main/LICENSE).
|
|
195
199
|
|
|
196
200
|
<p align="center"><img src="https://raw.githubusercontent.com/pandeyvishwas51-oss/wokitoki/main/assets/logo.svg" width="72" alt="WokiToki mascot"></p>
|
package/dist/wokitoki.mjs
CHANGED
|
@@ -281,7 +281,11 @@ var init_src2 = __esm({
|
|
|
281
281
|
utf8 = new TextEncoder();
|
|
282
282
|
strictUtf8 = new TextDecoder("utf-8", { fatal: true });
|
|
283
283
|
toB64 = (u) => Buffer.from(u).toString("base64url");
|
|
284
|
-
fromB64 = (s) =>
|
|
284
|
+
fromB64 = (s) => {
|
|
285
|
+
const bytes = new Uint8Array(Buffer.from(s, "base64url"));
|
|
286
|
+
if (Buffer.from(bytes).toString("base64url") !== s) throw new Error("invalid base64url: not in canonical form");
|
|
287
|
+
return bytes;
|
|
288
|
+
};
|
|
285
289
|
toHex = (u) => Buffer.from(u).toString("hex");
|
|
286
290
|
joinTranscript = (pairId, joiner) => utf8.encode(canonicalJson({ t: "agentmesh-pair-join-v1", pairId, joiner }));
|
|
287
291
|
}
|
|
@@ -1912,7 +1916,8 @@ function createMcpServer(socketPath, version) {
|
|
|
1912
1916
|
{
|
|
1913
1917
|
title: "WokiToki status",
|
|
1914
1918
|
description: "Show this WokiToki identity, network connection state (peer-to-peer or relay), pending outbox size and peer counts.",
|
|
1915
|
-
|
|
1919
|
+
inputSchema: {},
|
|
1920
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }
|
|
1916
1921
|
},
|
|
1917
1922
|
() => guard(async () => ok(await daemon2("GET", "/status")))
|
|
1918
1923
|
);
|
|
@@ -1922,7 +1927,7 @@ function createMcpServer(socketPath, version) {
|
|
|
1922
1927
|
title: "List WokiToki peers",
|
|
1923
1928
|
description: 'List agents this machine is paired with. Only peers in state "active" can receive messages. Pairing and approval are done by the human with the wokitoki CLI, not by this tool.',
|
|
1924
1929
|
inputSchema: { state: z7.enum(["pending", "active", "rejected", "revoked"]).optional().describe("filter by pairing state") },
|
|
1925
|
-
annotations: { readOnlyHint: true, openWorldHint: false }
|
|
1930
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }
|
|
1926
1931
|
},
|
|
1927
1932
|
({ state }) => guard(async () => ok((await daemon2("GET", `/peers${state ? `?state=${state}` : ""}`)).map(peerSummary)))
|
|
1928
1933
|
);
|
|
@@ -1950,7 +1955,8 @@ function createMcpServer(socketPath, version) {
|
|
|
1950
1955
|
limit: z7.number().int().min(1).max(200).optional().describe("max messages (default 50)"),
|
|
1951
1956
|
markRead: z7.boolean().optional().describe("mark returned messages as read (default true)")
|
|
1952
1957
|
},
|
|
1953
|
-
annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: false }
|
|
1958
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false }
|
|
1959
|
+
// marks messages read
|
|
1954
1960
|
},
|
|
1955
1961
|
({ peer, limit, markRead }) => guard(async () => {
|
|
1956
1962
|
const q = new URLSearchParams({ unread: "1", limit: String(limit ?? 50), ...peer ? { peer } : {} });
|
|
@@ -1969,7 +1975,7 @@ function createMcpServer(socketPath, version) {
|
|
|
1969
1975
|
peer: z7.string().max(128).optional().describe("only this peer (name or device id)"),
|
|
1970
1976
|
limit: z7.number().int().min(1).max(200).optional().describe("max messages (default 20)")
|
|
1971
1977
|
},
|
|
1972
|
-
annotations: { readOnlyHint: true, openWorldHint: false }
|
|
1978
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }
|
|
1973
1979
|
},
|
|
1974
1980
|
({ peer, limit }) => guard(async () => {
|
|
1975
1981
|
const q = new URLSearchParams({ limit: String(limit ?? 20), ...peer ? { peer } : {} });
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wokitoki",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "wokitoki",
|
|
9
|
-
"version": "0.3.
|
|
9
|
+
"version": "0.3.2",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"os": [
|
|
12
12
|
"darwin",
|
|
@@ -790,9 +790,9 @@
|
|
|
790
790
|
"license": "MIT"
|
|
791
791
|
},
|
|
792
792
|
"node_modules/fast-uri": {
|
|
793
|
-
"version": "3.1.
|
|
794
|
-
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.
|
|
795
|
-
"integrity": "sha512-
|
|
793
|
+
"version": "3.1.9",
|
|
794
|
+
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.9.tgz",
|
|
795
|
+
"integrity": "sha512-hS/0Wt3Ya043oKXs0sIxrMpKQITXhMLIrVAKKXi4gozGC9v7YRWVnXIZzjNPTO02M9BdxLCWqK1yRXgNziVyJQ==",
|
|
796
796
|
"funding": [
|
|
797
797
|
{
|
|
798
798
|
"type": "github",
|
|
@@ -1102,9 +1102,9 @@
|
|
|
1102
1102
|
"license": "ISC"
|
|
1103
1103
|
},
|
|
1104
1104
|
"node_modules/jose": {
|
|
1105
|
-
"version": "6.2.
|
|
1106
|
-
"resolved": "https://registry.npmjs.org/jose/-/jose-6.2.
|
|
1107
|
-
"integrity": "sha512-
|
|
1105
|
+
"version": "6.2.13",
|
|
1106
|
+
"resolved": "https://registry.npmjs.org/jose/-/jose-6.2.13.tgz",
|
|
1107
|
+
"integrity": "sha512-7TIg10ZE1x82YediN+lcrPNvGMKge9yFHQD+Qho/b8y2adfugU3AsvvHfxV0fzyFllT6l9xCjf4RWY9g/Z9PJQ==",
|
|
1108
1108
|
"license": "MIT",
|
|
1109
1109
|
"funding": {
|
|
1110
1110
|
"url": "https://github.com/sponsors/panva"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wokitoki",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "Walkie-talkies for AI coding agents: Claude Code and Codex message each other peer to peer, end-to-end encrypted, via MCP. No server, no account.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Vishwas Pandey",
|