@mmmbuto/nexuscrew 0.9.0 → 0.9.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.
Files changed (38) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +22 -4
  3. package/frontend/dist/assets/index-Bu_-2-Uu.js +93 -0
  4. package/frontend/dist/index.html +1 -1
  5. package/frontend/dist/version.json +1 -1
  6. package/lib/cli/commands.js +14 -0
  7. package/lib/config.js +9 -0
  8. package/lib/live-host/routes.js +9 -3
  9. package/lib/nodes/commands.js +15 -4
  10. package/lib/nodes/store.js +43 -0
  11. package/lib/nodes/tunnel.js +19 -0
  12. package/lib/proxy/federation.js +25 -1
  13. package/lib/proxy/panel-auth.js +63 -33
  14. package/lib/proxy/panel-proxy.js +41 -10
  15. package/lib/server.js +128 -6
  16. package/lib/settings/pairing-coordinator.js +32 -0
  17. package/lib/settings/public-peering-routes.js +13 -1
  18. package/package.json +1 -1
  19. package/skills/aidesktop/SKILL.md +201 -0
  20. package/skills/aidesktop/docker/Dockerfile +21 -0
  21. package/skills/aidesktop/docker/custom-cont-init.d/10-cdp-relay.sh +20 -0
  22. package/skills/aidesktop/docker/docker-compose.example.yml +75 -0
  23. package/skills/live/SKILL.md +90 -0
  24. package/skills/nexuscrew/SKILL.md +113 -0
  25. package/frontend/dist/assets/index-zjL6kZ7J.js +0 -93
  26. package/skills/alibaba-token-media/SKILL.md +0 -152
  27. package/skills/alibaba-token-media/agents/openai.yaml +0 -4
  28. package/skills/alibaba-token-media/references/api-contract.md +0 -97
  29. package/skills/alibaba-token-media/scripts/alibaba_token_media.py +0 -550
  30. package/skills/fill-forms/SKILL.md +0 -177
  31. package/skills/fill-forms/agents/openai.yaml +0 -4
  32. package/skills/fill-forms/references/overlay-technique.md +0 -99
  33. package/skills/fill-forms/requirements.txt +0 -4
  34. package/skills/fill-forms/scripts/dump_docx.py +0 -70
  35. package/skills/fill-forms/scripts/fill_docx.py +0 -207
  36. package/skills/fill-forms/scripts/fill_pdf.py +0 -424
  37. package/skills/fill-forms/scripts/inspect_pdf.py +0 -188
  38. package/skills/fill-forms/scripts/prepare_signature.py +0 -171
package/CHANGELOG.md CHANGED
@@ -2,6 +2,66 @@
2
2
 
3
3
  All notable changes to NexusCrew are tracked here.
4
4
 
5
+ ## 0.9.1 — 2026-08-16 — "What the Guard Was Not Guarding"
6
+
7
+ - **The panel now lives on its own origin, so its JavaScript can no longer
8
+ reach the operator's token.** The panel was served from the same origin as
9
+ the control plane, in an iframe with no `sandbox` and no CSP, while the
10
+ token sat in `localStorage` — meaning a panel's own scripts could take it
11
+ and act as the operator. It is now served by a second loopback listener
12
+ (`NEXUSCREW_PANEL_PORT`, default 41821) that mounts `/panel/*` and nothing
13
+ else: no control API, no bearer. The port is part of the origin, so the
14
+ browser's same-origin policy does the enforcing rather than a convention.
15
+ For a **remote** node the port is negotiated during pairing
16
+ (`panelLocalPort`/`panelRemotePort`, as an obligatory pair) and travels on
17
+ its own forward. A node paired before this release keeps working on the old
18
+ path, and a remote cell without a negotiated port gets none — never a
19
+ borrowed local one.
20
+
21
+ - **A cookie set by a panel no longer reaches our origin — including through
22
+ the WebSocket handshake.** `Set-Cookie` was stripped on the HTTP path but
23
+ copied verbatim on the `101` upgrade, so the same property held on one route
24
+ and not the other. A panel could overwrite the legitimate viewing cookie and
25
+ break the user's own panel from the inside. Hop-by-hop headers still pass on
26
+ the upgrade — there they *are* the response.
27
+
28
+ - **Designating the Live cell works from a remote node.** The star now
29
+ commands the node that *owns* the cell rather than the one serving the page,
30
+ which was the main defect of 0.9.0. `liveHostAccess` is a per-peer
31
+ permission, denied by default, granted with `nexuscrew nodes live-host <node>
32
+ on`, and a refusal names its cause instead of failing silently. Turning the
33
+ star **off** across federation is now covered end to end, not just turning
34
+ it on.
35
+
36
+ - **"Retry" is offered only where retrying can change the outcome.** Any `403`
37
+ without a named reason — a read-only node refusing a federated mutation, for
38
+ instance — was classified as an expired ticket, so the interface said "your
39
+ ticket is no longer valid" and offered a button that could not succeed.
40
+ Permanent refusals and invalid credentials now have their own causes and
41
+ messages, with no button; transient ones keep it.
42
+
43
+ - **The published-tree guard no longer reports "clean" without having
44
+ looked.** Any blob it failed to read was silently skipped: with reads
45
+ failing, the gate stayed green having inspected nothing at all. An unreadable
46
+ blob is now a failure, and the number of inspected files must match the
47
+ tree — an empty result no longer counts as "no traces found".
48
+
49
+ - **The test suite stopped measuring the machine.** Five tests that raced a
50
+ millisecond budget turned red under load and green in isolation; each false
51
+ alarm cost three isolated re-runs to dismiss, and a gate that is sometimes
52
+ red for no reason teaches people to distrust red. They now wait for an
53
+ observable condition instead. Where time *is* the property — deadlines,
54
+ grace periods — the clock was already injectable and those tests were left
55
+ alone. No timeout was raised and no assertion was loosened.
56
+
57
+ - **New skills: `live`, `aidesktop`, and `nexuscrew` as the entry point.**
58
+ `aidesktop` ships a Docker recipe — Dockerfile, CDP relay, example compose —
59
+ for a desktop a browser-driving MCP can attach to. It documents the security
60
+ trade it makes rather than implying one it does not: the browser inside runs
61
+ unsandboxed, because the changes that would sandbox it are exactly the ones
62
+ that weaken the container, and on a loopback-only desktop the container is
63
+ the stronger boundary. What that costs you is stated plainly.
64
+
5
65
  ## 0.9.0 — 2026-08-15 — "The Star Keeps Its Promise"
6
66
 
7
67
  - **A cell panel finally opens — through our own route, not the raw URL.** An
package/README.md CHANGED
@@ -11,6 +11,12 @@ NexusCrew turns live tmux sessions, AI CLI workers and connected machines into
11
11
  one local-first browser control plane. Your terminals stay real, your tools
12
12
  stay yours, and your infrastructure stays under your control.
13
13
 
14
+ > **Reading this as an AI agent?** Start with
15
+ > **[`skills/nexuscrew`](skills/nexuscrew/SKILL.md)**. It is the entry point:
16
+ > what the system is, what you can actually do through it, which companion
17
+ > skill covers which capability, where the trust boundaries are, and the rules
18
+ > that hold across all of them. Every other NexusCrew skill assumes it.
19
+
14
20
  <p align="center">
15
21
  <img src="docs/img/fleet-deck-desktop.png" width="960" alt="NexusCrew desktop deck with multiple live tmux sessions">
16
22
  </p>
@@ -143,10 +149,22 @@ product verifies a configured pool before it can rotate within it. See
143
149
  | [Operations](docs/OPERATIONS.md) | CLI, boot, backup, updates and diagnostics |
144
150
  | [Security](docs/SECURITY.md) | Trust boundaries, tokens and credential handling |
145
151
 
146
- The repository also includes [MCP companion guidance](MCP_COMPANIONS.md),
147
- the machine-readable [`mcp-companions.json`](mcp-companions.json), and portable
148
- skills for memory, searchable document memory, bounded worker delegation,
149
- mail assistance and form filling.
152
+ The repository also includes [MCP companion guidance](MCP_COMPANIONS.md) and
153
+ the machine-readable [`mcp-companions.json`](mcp-companions.json).
154
+
155
+ Portable skills ship with the package, and
156
+ [`nexuscrew`](skills/nexuscrew/SKILL.md) is the one to read first:
157
+
158
+ | Skill | Covers |
159
+ |---|---|
160
+ | [`nexuscrew`](skills/nexuscrew/SKILL.md) | **Start here** — the whole system and the rules across it |
161
+ | [`nexuscrew-agent`](skills/nexuscrew-agent/SKILL.md) | Talking to the human, runtime discovery, delivery to cells |
162
+ | [`live`](skills/live/SKILL.md) | Designating and permitting a node's Live host cell |
163
+ | [`aidesktop`](skills/aidesktop/SKILL.md) | A cell's web panel, and the AI Desktop container recipe |
164
+ | [`memory`](skills/memory/SKILL.md) | Persistent agent state |
165
+ | [`vl-msa`](skills/vl-msa/SKILL.md) | Searchable document memory |
166
+ | [`crew`](skills/crew/SKILL.md) | Bounded worker delegation |
167
+ | [`mail-assistant`](skills/mail-assistant/SKILL.md) | Mailbox discovery, triage and reading |
150
168
 
151
169
  ## Platforms
152
170