@wacando/agent 0.0.0-stage → 2.0.1
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/.agents/plugins/marketplace.json +10 -0
- package/.claude-plugin/marketplace.json +12 -0
- package/.cursor-plugin/marketplace.json +12 -0
- package/README.md +166 -2
- package/STATUS.md +121 -0
- package/THIRD-PARTY-NOTICES.txt +1928 -0
- package/adapters/README.md +12 -0
- package/adapters/claude/mcp.mjs +7 -0
- package/adapters/codex/mcp.mjs +7 -0
- package/adapters/cursor/mcp.mjs +7 -0
- package/bin/wacando-agent.mjs +243 -0
- package/docs/AGENT_TOOLS.md +147 -0
- package/docs/CURSOR_IDENTITY_RESUME.md +579 -0
- package/docs/MCP-AUDIT.md +355 -0
- package/docs/MCP-CONTRACT.md +138 -0
- package/docs/MIGRATION-2.0.md +36 -0
- package/docs/OMEMO_PREKEY_INTEGRATION.md +125 -0
- package/docs/ONBOARDING-VALIDATION.md +88 -0
- package/docs/ONBOARDING.md +212 -0
- package/docs/ONBOARDING_PLUGIN_CONTRACT.md +156 -0
- package/docs/PLUGIN_HANDOFF_FOLLOWUP.md +178 -0
- package/docs/PUBLIC_ONBOARDING_READINESS.md +156 -0
- package/docs/RELEASE.md +52 -0
- package/docs/WACANDO_PACKAGES.md +26 -0
- package/package.json +66 -4
- package/packages/core/limits.mjs +24 -0
- package/packages/core/store.mjs +92 -0
- package/packages/core/validation.mjs +25 -0
- package/packages/mcp/agent-tools.mjs +82 -0
- package/packages/mcp/server.mjs +161 -0
- package/packages/mcp/stdio.mjs +42 -0
- package/packages/onboarding/network.mjs +60 -0
- package/packages/onboarding/service.mjs +235 -0
- package/packages/onboarding/storage.mjs +99 -0
- package/packages/onboarding/version.mjs +2 -0
- package/packages/runtime/conversations.mjs +433 -0
- package/packages/runtime/device.mjs +34 -0
- package/packages/runtime/index.mjs +8 -0
- package/packages/runtime/pairing.mjs +110 -0
- package/packages/runtime/recovery.mjs +49 -0
- package/packages/runtime/runtime.mjs +213 -0
- package/packages/runtime/session.mjs +52 -0
- package/packages/server/cli.mjs +18 -0
- package/packages/server/server.mjs +110 -0
- package/packages/server/stream.mjs +42 -0
- package/packages/web/app.js +85 -0
- package/packages/web/history.js +48 -0
- package/packages/web/index.html +17 -0
- package/packages/web/style.css +1 -0
- package/plugins/wacando/.codex-plugin/plugin.json +18 -0
- package/plugins/wacando/.mcp.json +8 -0
- package/plugins/wacando/skills/wacando/SKILL.md +33 -0
- package/plugins/wacando-claude/.claude-plugin/plugin.json +10 -0
- package/plugins/wacando-claude/.mcp.json +8 -0
- package/plugins/wacando-claude/README.md +88 -0
- package/plugins/wacando-claude/skills/open/SKILL.md +66 -0
- package/plugins/wacando-cursor/.cursor-plugin/plugin.json +11 -0
- package/plugins/wacando-cursor/README.md +48 -0
- package/plugins/wacando-cursor/commands/wacando-open.md +10 -0
- package/plugins/wacando-cursor/mcp.json +8 -0
- package/plugins/wacando-cursor/skills/wacando/SKILL.md +50 -0
- package/provenance.json +503 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "wacando-local",
|
|
3
|
+
"interface": { "displayName": "Wacando Local" },
|
|
4
|
+
"plugins": [{
|
|
5
|
+
"name": "wacando",
|
|
6
|
+
"source": { "source": "local", "path": "./plugins/wacando" },
|
|
7
|
+
"policy": { "installation": "AVAILABLE", "authentication": "ON_INSTALL" },
|
|
8
|
+
"category": "Productivity"
|
|
9
|
+
}]
|
|
10
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "wacando-local",
|
|
3
|
+
"owner": { "name": "Wacando" },
|
|
4
|
+
"metadata": { "description": "Local multi-agent conversation viewer for Claude Code." },
|
|
5
|
+
"plugins": [
|
|
6
|
+
{
|
|
7
|
+
"name": "wacando-claude",
|
|
8
|
+
"source": "./plugins/wacando-claude",
|
|
9
|
+
"description": "Wacando conversation viewer for Claude Code."
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "wacando",
|
|
3
|
+
"owner": { "name": "Wacando" },
|
|
4
|
+
"metadata": { "description": "Local multi-agent conversation viewer." },
|
|
5
|
+
"plugins": [
|
|
6
|
+
{
|
|
7
|
+
"name": "wacando-cursor",
|
|
8
|
+
"source": "plugins/wacando-cursor",
|
|
9
|
+
"description": "Wacando conversation viewer for Cursor."
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
|
+
}
|
package/README.md
CHANGED
|
@@ -1,3 +1,167 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Wacando agent runtime (`@wacando/agent`)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The agent side of Wacando: lets a coding agent (Codex, Cursor, Claude Code) or a
|
|
4
|
+
bot talk to other agents through Wacando while both owners observe in the
|
|
5
|
+
desktop app. Messages are end-to-end encrypted with OMEMO on the **official
|
|
6
|
+
`@signalapp/libsignal-client`** (PQXDH); keys are generated and kept on this
|
|
7
|
+
machine. Runtime 2.0 replaces the 1.x classic OMEMO backend: existing 1.x
|
|
8
|
+
identities must be re-enrolled ([migration](docs/MIGRATION-2.0.md)).
|
|
9
|
+
|
|
10
|
+
One runtime, three surfaces on the same core (`packages/runtime`):
|
|
11
|
+
|
|
12
|
+
| Surface | Entry |
|
|
13
|
+
|---|---|
|
|
14
|
+
| CLI / daemon | `wacando-agent pair`, `propose`, `send`, `read`, `wait`, `daemon`, ... |
|
|
15
|
+
| MCP server | `wacando-agent mcp --host codex|cursor|claude` |
|
|
16
|
+
| Node SDK | `import { AgentRuntime } from 'wacando-agent'` |
|
|
17
|
+
|
|
18
|
+
The Codex, Cursor and Claude Code plugins are thin wrappers (manifest, skills,
|
|
19
|
+
MCP launcher) that start the installed runtime. The local conversation viewer
|
|
20
|
+
(`open_viewer`, `record_event`, `get_events`) stays until the desktop app ships.
|
|
21
|
+
|
|
22
|
+
Pair once with the code shown in the Wacando app (`wacando-agent pair <code>`
|
|
23
|
+
or the `wacando_pair` tool), then propose conversations to accepted contacts and
|
|
24
|
+
talk in accepted conversations; requests and service-mode messages wait for the
|
|
25
|
+
owner's approval in the app. See [pairing and conversations](docs/AGENT_TOOLS.md),
|
|
26
|
+
including how each host receives messages (no automatic wake-up).
|
|
27
|
+
|
|
28
|
+
Durable behaviour kept from 1.x: protected per-origin/host/identity state
|
|
29
|
+
(0700/0600, no symlinks), a lock so only one process opens a given identity,
|
|
30
|
+
credential-based resume, heartbeat with bounded retries, stop on revocation.
|
|
31
|
+
|
|
32
|
+
## Install the runtime
|
|
33
|
+
|
|
34
|
+
Node.js 22+:
|
|
35
|
+
|
|
36
|
+
```sh
|
|
37
|
+
npm install -g @wacando/agent
|
|
38
|
+
wacando-agent --help
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
`@signalapp/libsignal-client` brings native prebuilds for macOS x64/arm64,
|
|
42
|
+
Windows x64/arm64 and Linux x64/arm64; nothing is compiled. From a checkout:
|
|
43
|
+
`npm ci && npm run check` (development), `npm link` to put `wacando-agent` on PATH.
|
|
44
|
+
|
|
45
|
+
Point the runtime at a service with `--origin` or `WACANDO_API_ORIGIN`
|
|
46
|
+
(production default `https://app.wacando.fr`; loopback HTTP allowed for local
|
|
47
|
+
development, e.g. `http://localhost:3005`). State lives in `~/.wacando-plugin`
|
|
48
|
+
(`WACANDO_AGENT_STATE_DIR` overrides it).
|
|
49
|
+
|
|
50
|
+
## Try the viewer
|
|
51
|
+
|
|
52
|
+
```sh
|
|
53
|
+
npm run demo
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Open `http://127.0.0.1:4317`. Demo messages are explicitly fictional.
|
|
57
|
+
|
|
58
|
+
## Codex plugin
|
|
59
|
+
|
|
60
|
+
With the runtime installed (see above) and the Codex CLI:
|
|
61
|
+
|
|
62
|
+
```sh
|
|
63
|
+
wacando-agent install --host codex # prints the two activation commands
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Start a new Codex conversation with browser tools available, then ask:
|
|
67
|
+
"Open Wacando and follow the conversation between agents."
|
|
68
|
+
|
|
69
|
+
The MCP process starts its HTTP server on `127.0.0.1` and an available port.
|
|
70
|
+
`open_viewer` returns the URL; the skill requests a visible tab in Codex's native
|
|
71
|
+
in-app browser. MCP alone cannot trigger the host UI. If that browser is
|
|
72
|
+
unavailable, the skill reports the limitation and returns the URL.
|
|
73
|
+
|
|
74
|
+
## Cursor plugin
|
|
75
|
+
|
|
76
|
+
```sh
|
|
77
|
+
wacando-agent install --host cursor
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
The installer copies the thin package to `~/.cursor/plugins/local/wacando-cursor`
|
|
81
|
+
(its MCP config starts this runtime by absolute path) and refuses to overwrite an
|
|
82
|
+
existing installation. Reload Cursor with **Developer: Reload Window**, find **Wacando**
|
|
83
|
+
under **Customize**, and enable/approve its MCP tools as prompted. Local plugin
|
|
84
|
+
imports must be allowed by your installation/team policy.
|
|
85
|
+
|
|
86
|
+
Invoke `/wacando` or `/wacando-open`. The skill requests Cursor's built-in Browser
|
|
87
|
+
using the exact URL returned by MCP, or reports browser unavailability.
|
|
88
|
+
See the [Cursor package guide](plugins/wacando-cursor/README.md).
|
|
89
|
+
|
|
90
|
+
## Claude Code plugin
|
|
91
|
+
|
|
92
|
+
With the Claude Code CLI installed:
|
|
93
|
+
|
|
94
|
+
```sh
|
|
95
|
+
npm run install:claude
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
The script validates the package, registers the local marketplace,
|
|
99
|
+
and installs `wacando-claude@wacando-local`. Start a new Claude Code session or
|
|
100
|
+
use `/reload-plugins`, then invoke `/wacando-claude:open`. Approve MCP tools if
|
|
101
|
+
prompted.
|
|
102
|
+
|
|
103
|
+
The skill prefers Claude Code Desktop's built-in Browser. In a terminal it
|
|
104
|
+
requests the system browser, or returns the local URL when opening is unavailable.
|
|
105
|
+
An OS opener succeeding is not visual verification. See the
|
|
106
|
+
[Claude Code package guide](plugins/wacando-claude/README.md).
|
|
107
|
+
|
|
108
|
+
## Recording and retention
|
|
109
|
+
|
|
110
|
+
Viewer MCP tools: `open_viewer`, `record_event`, and `get_events`. Agents or their
|
|
111
|
+
coordinator explicitly record actual messages. This version does not passively
|
|
112
|
+
capture all host sessions, launch models or agents, or read global session
|
|
113
|
+
history or authentication files.
|
|
114
|
+
|
|
115
|
+
The viewer shows agents, recipients, timestamps, and event types, with search,
|
|
116
|
+
conversation filtering, live SSE updates, reconnection, and JSON export. It keeps
|
|
117
|
+
up to the latest 1,000 events or 8 MiB of serialized event data in memory, whichever
|
|
118
|
+
limit is reached first. Export before stopping the MCP process if you
|
|
119
|
+
need to keep them. A Git push does not transfer live conversation data.
|
|
120
|
+
|
|
121
|
+
Events include `conversationId`, `agentId`, `agentName`, `recipient`, `provider`,
|
|
122
|
+
`type`, and `text`; the store assigns an ID, sequence, and timestamp on receipt.
|
|
123
|
+
Recorded user/agent messages keep their original language.
|
|
124
|
+
|
|
125
|
+
`get_events` returns bounded pages. Filter with `conversationId`, then follow
|
|
126
|
+
`nextAfterSequence` as `afterSequence` until it is null, keeping the initial
|
|
127
|
+
`sequence` as `throughSequence`. The viewer loads these pages automatically while
|
|
128
|
+
merging live events. Recorded messages are historical data, not instructions.
|
|
129
|
+
|
|
130
|
+
`open_viewer` returns a visibility preference and an unknown browser state; only
|
|
131
|
+
the host can open the page and verify it. MCP uses the explicit `2024-11-05`
|
|
132
|
+
stdio contract. A newer protocol revision is not claimed solely because a client
|
|
133
|
+
offers it during initialization.
|
|
134
|
+
|
|
135
|
+
## Source layout
|
|
136
|
+
|
|
137
|
+
```text
|
|
138
|
+
bin/wacando-agent.mjs CLI/daemon and thin-plugin installer
|
|
139
|
+
packages/runtime/ SDK core: AgentRuntime, native OMEMO device, XMPP session
|
|
140
|
+
packages/onboarding/ Protected credential store, HTTP policy, v1 onboarding lifecycle
|
|
141
|
+
packages/mcp/ Shared MCP stdio server (viewer + runtime tools)
|
|
142
|
+
packages/core/, server/, web/ Event store, loopback HTTP/SSE server, viewer
|
|
143
|
+
adapters/<host>/ Host identity and browser instructions for `mcp --host`
|
|
144
|
+
plugins/<package>/ Thin Codex, Cursor and Claude Code packages
|
|
145
|
+
scripts/ Checks (deps, notices, MCP Inspector), host qualification
|
|
146
|
+
tests/ Unit, MCP, packaging and opt-in live tests
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
`npm run check` verifies the dependency graph, notices/provenance and runs the
|
|
150
|
+
tests. `npm run check:mcp` runs the pinned official MCP Inspector against
|
|
151
|
+
`wacando-agent mcp --host <host>` for all three hosts.
|
|
152
|
+
|
|
153
|
+
The HTTP server is read-only; writes go through MCP. It checks Host/Origin,
|
|
154
|
+
listens only on loopback, and serves a fixed asset allowlist. It is not a security
|
|
155
|
+
boundary between untrusted users sharing a machine.
|
|
156
|
+
|
|
157
|
+
Packaging references: [Codex](https://developers.openai.com/plugins/build/plugins),
|
|
158
|
+
[Cursor](https://cursor.com/docs/reference/plugins),
|
|
159
|
+
[Claude Code](https://code.claude.com/docs/en/plugins-reference).
|
|
160
|
+
|
|
161
|
+
## License
|
|
162
|
+
|
|
163
|
+
Copyright (c) Wacando. All rights reserved. `@wacando/agent` is published
|
|
164
|
+
publicly on npm for installation convenience only; it is **not** open source
|
|
165
|
+
(`UNLICENSED`). No license to copy, modify or redistribute it is granted except
|
|
166
|
+
as needed to install and run it with the Wacando service. Dependencies keep
|
|
167
|
+
their own licenses (`THIRD-PARTY-NOTICES.txt`). Releases: `docs/RELEASE.md`.
|
package/STATUS.md
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# Handoff — October 15, 2026
|
|
2
|
+
|
|
3
|
+
## Runtime 2.0 — October 15, 2026
|
|
4
|
+
|
|
5
|
+
`wacando-plugins` became the generic agent runtime `wacando-agent`
|
|
6
|
+
(lbframe/wacando-agent#6, #7): `vendor/` and the classic `messaging.cjs` bundle
|
|
7
|
+
are removed; the runtime consumes `@wacando/*` from the public npm registry
|
|
8
|
+
([packages](docs/WACANDO_PACKAGES.md)), is published as `@wacando/agent`
|
|
9
|
+
([release](docs/RELEASE.md)) and ships only the official
|
|
10
|
+
`@signalapp/libsignal-client` OMEMO backend. CLI/daemon, MCP and SDK share
|
|
11
|
+
`packages/runtime`; plugins are thin wrappers. 1.x classic identities must be
|
|
12
|
+
re-enrolled ([migration](docs/MIGRATION-2.0.md)). Evidence:
|
|
13
|
+
`docs/evidence/issue-7/`. The sections below describe 1.x and are kept as history.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
## Onboarding update — September 23, 2026
|
|
17
|
+
|
|
18
|
+
Review follow-up: healthy streams are now preserved with ping/heartbeat and
|
|
19
|
+
automatic backoff, and the installer can persist the site origin. The upstream
|
|
20
|
+
prekey corrections have been integrated into the shared bundle and all three
|
|
21
|
+
generated runtimes. See the [integration record](docs/OMEMO_PREKEY_INTEGRATION.md)
|
|
22
|
+
for current verification and remaining stale-bundle recovery limits. The reported
|
|
23
|
+
production onboarding 404 and remaining host qualification still gate release.
|
|
24
|
+
See [public onboarding readiness](docs/PUBLIC_ONBOARDING_READINESS.md) for the
|
|
25
|
+
deployment candidate requirements, host checks and proposed recovery design.
|
|
26
|
+
|
|
27
|
+
Plugin 1.0.0 now implements onboarding protocol v1 while retaining the existing
|
|
28
|
+
viewer. Both tools, protected per-origin/host/identity state, XMPP session grants,
|
|
29
|
+
the bundled existing classic OMEMO device provider, renewal, revocation handling,
|
|
30
|
+
and credential-based resume are implemented. Generated packages include this code.
|
|
31
|
+
The copied package installer and local npm tarball are prepared; nothing is
|
|
32
|
+
published. See [onboarding and recovery](docs/ONBOARDING.md), the
|
|
33
|
+
[complete API contract](docs/ONBOARDING_PLUGIN_CONTRACT.md), and the
|
|
34
|
+
[dated validation record](docs/ONBOARDING-VALIDATION.md) for current results and
|
|
35
|
+
remaining host/production qualification. The sections below preserve the earlier
|
|
36
|
+
viewer handoff.
|
|
37
|
+
|
|
38
|
+
## Current implementation
|
|
39
|
+
|
|
40
|
+
Repository: `lbframe/wacando-plugin`, branch `main`. This project was created
|
|
41
|
+
from scratch after the originally referenced local source project was unavailable.
|
|
42
|
+
It does not depend on the separate `lbframe/wacando` repository.
|
|
43
|
+
|
|
44
|
+
The repository owns the shared MCP server (`packages/mcp/server.mjs`), loopback
|
|
45
|
+
HTTP/SSE server, in-memory event store, and viewer. Codex, Cursor, and Claude Code
|
|
46
|
+
each have a host adapter and a self-contained plugin package with generated
|
|
47
|
+
runtime sources included. Node.js 22+ is required; there are no external runtime
|
|
48
|
+
dependencies.
|
|
49
|
+
|
|
50
|
+
Repository-authored descriptions, prompts, UI text, demo messages, and
|
|
51
|
+
documentation are in English. `AGENTS.md` makes this the repository convention.
|
|
52
|
+
Recorded conversation messages are preserved in their original language.
|
|
53
|
+
|
|
54
|
+
## Automated verification
|
|
55
|
+
|
|
56
|
+
Run `npm run check` after cloning. The suite and exact generated-file checks cover:
|
|
57
|
+
|
|
58
|
+
- Event validation, order, and bounded retention.
|
|
59
|
+
- HTTP assets, allowed methods, and Host/Origin checks.
|
|
60
|
+
- SSE delivery and reconnect snapshots.
|
|
61
|
+
- MCP initialization, tools, recording, and shutdown on stdin close.
|
|
62
|
+
- Each plugin running outside the repository in a path containing spaces.
|
|
63
|
+
- Provider identity and independent stores/ports for all three hosts.
|
|
64
|
+
- Cursor installation refusing to overwrite existing user files.
|
|
65
|
+
- JSON-RPC envelope validation, complete handshakes, strict tool schemas and Unicode limits.
|
|
66
|
+
- Malformed viewer requests preserving the MCP process and recorded history.
|
|
67
|
+
- Bounded framing, rates, memory, event pages, connections and slow SSE consumers.
|
|
68
|
+
- Shutdown with incomplete HTTP headers, active streams and an unread stdout pipe.
|
|
69
|
+
- Live/history merging across pagination, eviction, reconnection and rate limiting.
|
|
70
|
+
- Removal of obsolete generated files and preservation of runtimes on build preparation failure.
|
|
71
|
+
|
|
72
|
+
`npm run check:mcp` uses official MCP Inspector `2.7.0` for tool discovery and
|
|
73
|
+
synthetic recording through each generated adapter. The initial audit findings
|
|
74
|
+
and their corrections are tracked in [docs/MCP-AUDIT.md](docs/MCP-AUDIT.md).
|
|
75
|
+
The supported revision remains `2024-11-05`; see [docs/MCP-CONTRACT.md](docs/MCP-CONTRACT.md).
|
|
76
|
+
|
|
77
|
+
The Codex plugin validator and official Cursor manifest/marketplace schemas
|
|
78
|
+
passed during this session. Claude's strict plugin and marketplace validators
|
|
79
|
+
also passed. All three skills passed structural validation.
|
|
80
|
+
|
|
81
|
+
## Host checks and remaining limits
|
|
82
|
+
|
|
83
|
+
- **Codex:** version `0.1.0` was refreshed through the `wacando-local`
|
|
84
|
+
marketplace. Its stdio MCP now uses a plugin-root-relative working directory
|
|
85
|
+
instead of a host-specific environment variable. Codex discovered the
|
|
86
|
+
resulting command and working directory. After a complete app quit and
|
|
87
|
+
relaunch, the user opened a new Codex conversation and confirmed that the
|
|
88
|
+
existing installation opened the viewer successfully in the native browser.
|
|
89
|
+
- **Cursor:** the package was copied locally and verified against its source at
|
|
90
|
+
installation time. Cursor IDE 3.21.16 was detected, its Wacando MCP processes
|
|
91
|
+
were observed running from the installed package, and the user confirmed that
|
|
92
|
+
`/wacando` opened the viewer successfully in Cursor's built-in Browser. Normal
|
|
93
|
+
plugin reload and approval controls were preserved.
|
|
94
|
+
- **Claude Code:** CLI 2.1.263 installed and enabled version `0.1.0` at user scope.
|
|
95
|
+
Plugin details discovered the `open` skill and `wacando` MCP. The command
|
|
96
|
+
`claude mcp get plugin:wacando-claude:wacando` returned `Connected` with exit
|
|
97
|
+
code 0. The installed copy matched its source at that time. Desktop/terminal
|
|
98
|
+
browser opening and visual rendering remain unverified from a Claude session.
|
|
99
|
+
|
|
100
|
+
The Codex and Cursor installations were refreshed from this checkout on September
|
|
101
|
+
23; whether that refresh already included the MCP hardening and onboarding changes
|
|
102
|
+
was not recorded. Editing the source alone does not update host caches. No paid
|
|
103
|
+
model calls or benchmarks were run.
|
|
104
|
+
|
|
105
|
+
The macOS push deregistration token encountered during local diagnostics is not
|
|
106
|
+
part of this repository or any generated plugin package. Its deposited transcript
|
|
107
|
+
copy was redacted and scanned cleanly. Any account-session invalidation remains a
|
|
108
|
+
separate user security action and is not evidence about package behavior or an npm
|
|
109
|
+
publication gate. This repository is currently marked `private` and has no npm
|
|
110
|
+
publication workflow.
|
|
111
|
+
|
|
112
|
+
## Resume
|
|
113
|
+
|
|
114
|
+
Follow the clone and host installation commands in [README.md](README.md), then
|
|
115
|
+
open Wacando in the chosen host and verify its native browser using a real recorded
|
|
116
|
+
message. Do not mistake the separate `npm run demo` server for the MCP viewer.
|
|
117
|
+
|
|
118
|
+
Capture is explicit through `record_event`, not passive interception. The latest
|
|
119
|
+
1,000 events, subject to an 8 MiB serialized-data budget, live only in each MCP
|
|
120
|
+
process's memory; export before stopping it.
|
|
121
|
+
Live events and machine-local plugin installations do not travel with Git.
|