@geohar/un-bien 0.8.0 → 0.14.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/README.md +258 -320
- package/dist/actions/handlers.js.map +1 -1
- package/dist/actions/registry.js.map +1 -1
- package/dist/bin/launcher.js +38 -0
- package/dist/bin/launcher.js.map +1 -0
- package/dist/commands/deps.d.ts +156 -0
- package/dist/commands/deps.js +2 -0
- package/dist/commands/deps.js.map +1 -0
- package/dist/commands/fork_link.d.ts +4 -0
- package/dist/commands/fork_link.js +45 -0
- package/dist/commands/fork_link.js.map +1 -0
- package/dist/commands/housekeeping.d.ts +34 -0
- package/dist/commands/housekeeping.js +275 -0
- package/dist/commands/housekeeping.js.map +1 -0
- package/dist/commands/info.d.ts +43 -0
- package/dist/commands/info.js +127 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/lifecycle.d.ts +45 -0
- package/dist/commands/lifecycle.js +708 -0
- package/dist/commands/lifecycle.js.map +1 -0
- package/dist/commands/pairing.d.ts +26 -0
- package/dist/commands/pairing.js +167 -0
- package/dist/commands/pairing.js.map +1 -0
- package/dist/commands/register.d.ts +12 -0
- package/dist/commands/register.js +255 -0
- package/dist/commands/register.js.map +1 -0
- package/dist/commands/relay.d.ts +28 -0
- package/dist/commands/relay.js +81 -0
- package/dist/commands/relay.js.map +1 -0
- package/dist/commands/session_ops.d.ts +52 -0
- package/dist/commands/session_ops.js +75 -0
- package/dist/commands/session_ops.js.map +1 -0
- package/dist/config.d.ts +30 -2
- package/dist/config.js.map +1 -1
- package/dist/daemon/install.d.ts +36 -37
- package/dist/daemon/install.js +49 -73
- package/dist/daemon/install.js.map +1 -1
- package/dist/enrich_tool_args.d.ts +9 -0
- package/dist/enrich_tool_args.js +171 -0
- package/dist/enrich_tool_args.js.map +1 -0
- package/dist/extension_ui_bridge.js.map +1 -1
- package/dist/image_codec.d.ts +22 -0
- package/dist/image_codec.js +149 -0
- package/dist/image_codec.js.map +1 -0
- package/dist/index.d.ts +32 -127
- package/dist/index.js +957 -4042
- package/dist/index.js.map +1 -1
- package/dist/launch.d.ts +42 -0
- package/dist/launch.js +206 -0
- package/dist/launch.js.map +1 -0
- package/dist/launcher/launcher.d.ts +6 -0
- package/dist/launcher/launcher.js +207 -0
- package/dist/launcher/launcher.js.map +1 -0
- package/dist/mcp/mesh_result.js.map +1 -1
- package/dist/mcp/mesh_server.js.map +1 -1
- package/dist/mesh/canonical.js +1 -1
- package/dist/mesh/canonical.js.map +1 -1
- package/dist/mesh/client.js.map +1 -1
- package/dist/mesh/encoding.js.map +1 -1
- package/dist/mesh/self_revoke.js.map +1 -1
- package/dist/mesh/siblings.js.map +1 -1
- package/dist/mesh/verify.js +1 -1
- package/dist/mesh/verify.js.map +1 -1
- package/dist/pairing/crypto.js +0 -1
- package/dist/pairing/crypto.js.map +1 -1
- package/dist/pairing/peer_trust.d.ts +20 -0
- package/dist/pairing/peer_trust.js +82 -0
- package/dist/pairing/peer_trust.js.map +1 -0
- package/dist/pairing/qr.js.map +1 -1
- package/dist/pairing/storage.js +4 -3
- package/dist/pairing/storage.js.map +1 -1
- package/dist/panel_bridge.d.ts +3 -1
- package/dist/panel_bridge.js +11 -10
- package/dist/panel_bridge.js.map +1 -1
- package/dist/paths.d.ts +22 -8
- package/dist/paths.js +37 -10
- package/dist/paths.js.map +1 -1
- package/dist/protocol/codec.js.map +1 -1
- package/dist/rooms.d.ts +16 -0
- package/dist/rooms.js +23 -4
- package/dist/rooms.js.map +1 -1
- package/dist/session/bridge.js.map +1 -1
- package/dist/session/broker.js.map +1 -1
- package/dist/session/broker_remote.js.map +1 -1
- package/dist/session/capabilities.d.ts +11 -0
- package/dist/session/capabilities.js +35 -0
- package/dist/session/capabilities.js.map +1 -0
- package/dist/session/cwd_lock.js +3 -3
- package/dist/session/cwd_lock.js.map +1 -1
- package/dist/session/debug_log.js +15 -5
- package/dist/session/debug_log.js.map +1 -1
- package/dist/session/envelope.js.map +1 -1
- package/dist/session/global_config.d.ts +1 -1
- package/dist/session/global_config.js +1 -1
- package/dist/session/global_config.js.map +1 -1
- package/dist/session/ipc.d.ts +2 -2
- package/dist/session/ipc.js.map +1 -1
- package/dist/session/leader_election.js.map +1 -1
- package/dist/session/local_config.d.ts +37 -0
- package/dist/session/local_config.js +47 -1
- package/dist/session/local_config.js.map +1 -1
- package/dist/session/mesh_node.d.ts +1 -1
- package/dist/session/mesh_node.js +1 -1
- package/dist/session/mesh_node.js.map +1 -1
- package/dist/session/peer.js.map +1 -1
- package/dist/session/peer_inventory.js.map +1 -1
- package/dist/session/peer_limits.js.map +1 -1
- package/dist/session/received_images.d.ts +63 -0
- package/dist/session/received_images.js +273 -0
- package/dist/session/received_images.js.map +1 -0
- package/dist/session/relay_lifecycle.d.ts +219 -0
- package/dist/session/relay_lifecycle.js +764 -0
- package/dist/session/relay_lifecycle.js.map +1 -0
- package/dist/session/rpc_envelope.d.ts +28 -0
- package/dist/session/rpc_envelope.js +10 -1
- package/dist/session/rpc_envelope.js.map +1 -1
- package/dist/session/rpc_handlers.d.ts +53 -0
- package/dist/session/rpc_handlers.js +268 -0
- package/dist/session/rpc_handlers.js.map +1 -0
- package/dist/session/rpc_inbound.d.ts +42 -7
- package/dist/session/rpc_inbound.js +56 -1
- package/dist/session/rpc_inbound.js.map +1 -1
- package/dist/session/setup_wizard.js.map +1 -1
- package/dist/session/tools.js.map +1 -1
- package/dist/session/wizard.js.map +1 -1
- package/dist/state_migration.d.ts +45 -0
- package/dist/state_migration.js +104 -0
- package/dist/state_migration.js.map +1 -0
- package/dist/subagent_rooms.d.ts +68 -0
- package/dist/subagent_rooms.js +919 -0
- package/dist/subagent_rooms.js.map +1 -0
- package/dist/test_hooks.d.ts +180 -0
- package/dist/test_hooks.js +98 -0
- package/dist/test_hooks.js.map +1 -0
- package/dist/transport/peer_channel.d.ts +18 -1
- package/dist/transport/peer_channel.js +42 -12
- package/dist/transport/peer_channel.js.map +1 -1
- package/dist/transport/pi_forward_client.js.map +1 -1
- package/dist/transport/relay_client.d.ts +24 -2
- package/dist/transport/relay_client.js +6 -3
- package/dist/transport/relay_client.js.map +1 -1
- package/dist/ui/footer.js.map +1 -1
- package/docs/daemon.md +170 -179
- package/package.json +13 -11
- package/service-templates/launchd.plist.template +8 -7
- package/service-templates/systemd.service.template +5 -4
- package/service-templates/task-launcher.vbs.template +5 -5
- package/service-templates/task-scheduler.xml.template +1 -1
- package/dist/bin/supervisord.js +0 -86
- package/dist/bin/supervisord.js.map +0 -1
- package/dist/daemon/client.d.ts +0 -20
- package/dist/daemon/client.js +0 -131
- package/dist/daemon/client.js.map +0 -1
- package/dist/daemon/control_protocol.d.ts +0 -176
- package/dist/daemon/control_protocol.js +0 -63
- package/dist/daemon/control_protocol.js.map +0 -1
- package/dist/daemon/cron_log.d.ts +0 -45
- package/dist/daemon/cron_log.js +0 -71
- package/dist/daemon/cron_log.js.map +0 -1
- package/dist/daemon/cron_registry.d.ts +0 -80
- package/dist/daemon/cron_registry.js +0 -198
- package/dist/daemon/cron_registry.js.map +0 -1
- package/dist/daemon/id.d.ts +0 -24
- package/dist/daemon/id.js +0 -36
- package/dist/daemon/id.js.map +0 -1
- package/dist/daemon/registry.d.ts +0 -63
- package/dist/daemon/registry.js +0 -153
- package/dist/daemon/registry.js.map +0 -1
- package/dist/daemon/rpc_child.d.ts +0 -194
- package/dist/daemon/rpc_child.js +0 -419
- package/dist/daemon/rpc_child.js.map +0 -1
- package/dist/daemon/supervisor.d.ts +0 -93
- package/dist/daemon/supervisor.js +0 -666
- package/dist/daemon/supervisor.js.map +0 -1
- /package/dist/bin/{supervisord.d.ts → launcher.d.ts} +0 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { resolveRelayUrl } from "../config.js";
|
|
2
|
+
import { describeIdentity, listPeers } from "../pairing/storage.js";
|
|
3
|
+
import { _inspectPeerRecord } from "../pairing/peer_trust.js";
|
|
4
|
+
import { formatPeerInventory } from "../session/peer_inventory.js";
|
|
5
|
+
/**
|
|
6
|
+
* `/unbien status` — full state snapshot. Two lines: local mesh + relay.
|
|
7
|
+
*
|
|
8
|
+
* Always callable; safe when nothing is up (renders the off variants).
|
|
9
|
+
* Reuses the same icons as the footer so terminal + status output stay
|
|
10
|
+
* visually consistent.
|
|
11
|
+
*/
|
|
12
|
+
export function _cmdStatus(deps, ctx) {
|
|
13
|
+
const relayUrl = deps.relayUrl ?? resolveRelayUrl().url ?? "not configured";
|
|
14
|
+
// Mesh line
|
|
15
|
+
let meshLine;
|
|
16
|
+
if (deps.meshNode) {
|
|
17
|
+
const name = deps.meshNode.name();
|
|
18
|
+
meshLine = `🟢 Local mesh: connected as "${name}" (${deps.sessionPeerCount} peer${deps.sessionPeerCount === 1 ? "" : "s"})`;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
meshLine = "⚪ Local mesh: not connected";
|
|
22
|
+
}
|
|
23
|
+
// Relay line — paired state is derived from deps.activePeers.size now.
|
|
24
|
+
let relayLine;
|
|
25
|
+
if (deps.state === "idle") {
|
|
26
|
+
relayLine = `⚪ Relay: off (${relayUrl}) — run /unbien to start`;
|
|
27
|
+
}
|
|
28
|
+
else if (deps.activePeers.size > 0) {
|
|
29
|
+
const count = deps.activePeers.size;
|
|
30
|
+
const shortids = [...deps.activePeers.keys()]
|
|
31
|
+
.map((peerId) => peerId.slice(0, 8))
|
|
32
|
+
.join(", ");
|
|
33
|
+
relayLine = `🟢 Relay: ${count} owner${count === 1 ? "" : "s"} online (${shortids}) (${relayUrl})`;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
relayLine = deps.hasGlobalPairings
|
|
37
|
+
? `🟢 Relay: on, waiting for an app to connect (${relayUrl})`
|
|
38
|
+
: `🟡 Relay: on, waiting for first pairing (${relayUrl})`;
|
|
39
|
+
}
|
|
40
|
+
ctx.ui.notify(`[un-bien]\n ${meshLine}\n ${relayLine}`, "info");
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Plan/25 Wave D: `/unbien peers`.
|
|
44
|
+
*
|
|
45
|
+
* Queries the local broker for the aggregated peer inventory (`list_peers`
|
|
46
|
+
* returns locals + cross-PC entries prefixed with `<pc_label>:`). Formats
|
|
47
|
+
* the result grouped by source so users can see at a glance who's on
|
|
48
|
+
* their machine vs. on a paired sibling Pi.
|
|
49
|
+
*/
|
|
50
|
+
export async function _cmdPeers(deps, ctx) {
|
|
51
|
+
if (!deps.meshNode) {
|
|
52
|
+
ctx.ui.notify("[un-bien] Not on the local mesh. Run /unbien to join.", "warning");
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
let peers;
|
|
56
|
+
try {
|
|
57
|
+
const reply = await deps.meshNode.request("broker", { type: "list_peers" }, 2000);
|
|
58
|
+
peers = reply.body?.peers ?? [];
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
ctx.ui.notify(`[un-bien] peers list failed: ${String(err)}`, "error");
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
// Exclude self from the printed list — `list_peers` returns every peer
|
|
65
|
+
// registered with the broker including the caller, which is noise here.
|
|
66
|
+
const selfName = deps.meshNode.name();
|
|
67
|
+
ctx.ui.notify(`[un-bien] peers:\n${formatPeerInventory(peers, selfName)}`, "info");
|
|
68
|
+
}
|
|
69
|
+
export async function _cmdList(deps, ctx) {
|
|
70
|
+
const peers = await listPeers();
|
|
71
|
+
if (peers.length === 0) {
|
|
72
|
+
ctx.ui.notify("[un-bien] No paired devices.", "info");
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
// Multi-channel (W2D): each peer is either `online` (channel attached
|
|
76
|
+
// right now) or `offline` (in peers.json but not connected). Replaces
|
|
77
|
+
// the singleton " (active)" marker that only ever marked one peer.
|
|
78
|
+
const lines = peers
|
|
79
|
+
.flatMap((record) => {
|
|
80
|
+
const inspected = _inspectPeerRecord(record);
|
|
81
|
+
if (!inspected)
|
|
82
|
+
return [];
|
|
83
|
+
const tag = inspected.runtimeKey !== null &&
|
|
84
|
+
deps.activePeers.has(inspected.runtimeKey)
|
|
85
|
+
? " 🟢 online"
|
|
86
|
+
: " ⚪ offline";
|
|
87
|
+
return `• ${inspected.rawHandle.slice(0, 8)} — ${inspected.record.name}${tag}`;
|
|
88
|
+
})
|
|
89
|
+
.join("\n");
|
|
90
|
+
ctx.ui.notify(`[un-bien] Paired devices:\n${lines}`, "info");
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* `/unbien config` — print the effective relay URL and where it came from.
|
|
94
|
+
*
|
|
95
|
+
* Documented in the README ("Verify the active URL and its source") and in
|
|
96
|
+
* CLAUDE.md, but like the `relay` family (issue #119) it had no handler and
|
|
97
|
+
* fell through to the status panel, which shows the URL but not the source —
|
|
98
|
+
* so `env` vs `config` vs `default` was unverifiable without a restart.
|
|
99
|
+
*/
|
|
100
|
+
export function _cmdConfig(deps, ctx) {
|
|
101
|
+
const { url, source } = resolveRelayUrl();
|
|
102
|
+
const origin = source === "env"
|
|
103
|
+
? "UNBIEN_RELAY environment variable"
|
|
104
|
+
: source === "config"
|
|
105
|
+
? "extensions/un-bien.json (set via /unbien set-relay)"
|
|
106
|
+
: "not set — run /unbien set-relay <url> or set UNBIEN_RELAY";
|
|
107
|
+
const live = deps.relayUrl && deps.relayUrl !== url
|
|
108
|
+
? `\n ⚠ Live connection still on ${deps.relayUrl} — run /unbien relay stop then /unbien relay start to apply.`
|
|
109
|
+
: "";
|
|
110
|
+
ctx.ui.notify(`[un-bien]\n Relay URL: ${url ?? "(none)"}\n Source: ${source} — ${origin}${live}`, "info");
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* `/unbien identity` — report NON-SECRET identity state (active EPK, backend,
|
|
114
|
+
* resolved source). The private seed is NEVER shown: command output is
|
|
115
|
+
* LLM-visible, so extraction stays a manual `cat`/keychain op. Read-only
|
|
116
|
+
* (never mints).
|
|
117
|
+
*/
|
|
118
|
+
export async function _cmdIdentity(ctx) {
|
|
119
|
+
const info = await describeIdentity();
|
|
120
|
+
const backendLine = info.backend === "file" ? `file (${info.filePath})` : "keychain";
|
|
121
|
+
const epkLine = info.epk ?? "(none yet — minted on first use)";
|
|
122
|
+
const sourceLine = info.detail
|
|
123
|
+
? `${info.source} — ${info.detail}`
|
|
124
|
+
: info.source;
|
|
125
|
+
ctx.ui.notify(`[un-bien] identity\n Backend: ${backendLine}\n EPK (public): ${epkLine}\n Source: ${sourceLine}`, info.source === "error" ? "error" : "info");
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `/unbien` lifecycle commands: root (connect-or-setup), rootInner, setup
|
|
3
|
+
* wizard, start (relay), stop (teardown), join (local UDS mesh).
|
|
4
|
+
*
|
|
5
|
+
* The heaviest handler lives here: `_cmdStart` touches relay startup, the
|
|
6
|
+
* auto-listener, SelfRevoke topology production, and the first-run model/
|
|
7
|
+
* thinking seeding. Everything it needs from index.ts's module scope comes
|
|
8
|
+
* through `CommandDeps` (see deps.ts). Carved out of index.ts (phase 1 of
|
|
9
|
+
* the index.ts carve-up).
|
|
10
|
+
*/
|
|
11
|
+
import type { ExtensionContext } from "@earendil-works/pi-coding-agent";
|
|
12
|
+
import type { CommandDeps } from "./deps.js";
|
|
13
|
+
export type RootRestartAuthority = Readonly<{
|
|
14
|
+
rootLifecycleGeneration: number;
|
|
15
|
+
}>;
|
|
16
|
+
/**
|
|
17
|
+
* Root handler for `/unbien`. On first run (no local config) drops into
|
|
18
|
+
* the wizard; on subsequent runs auto-joins the local mesh + starts the
|
|
19
|
+
* relay (if opted in during setup), then prints the status.
|
|
20
|
+
*
|
|
21
|
+
* `/unbien` is intentionally the only command users need day-to-day:
|
|
22
|
+
* idempotent connect + status display.
|
|
23
|
+
*/
|
|
24
|
+
export declare function _cmdRoot(deps: CommandDeps, ctx: Pick<ExtensionContext, "ui" | "cwd">, restartAuthority?: RootRestartAuthority): Promise<void>;
|
|
25
|
+
export declare function _cmdRootInner(deps: CommandDeps, ctx: Pick<ExtensionContext, "ui" | "cwd">, rootLifecycleGeneration: number): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* `/unbien setup` — re-run the wizard. Defaults pre-fill from the
|
|
28
|
+
* existing config so it doubles as an "edit" flow.
|
|
29
|
+
*/
|
|
30
|
+
export declare function _cmdSetup(ctx: Pick<ExtensionContext, "ui" | "cwd">): Promise<void>;
|
|
31
|
+
export declare function _cmdStart(deps: CommandDeps, ctx: Pick<ExtensionContext, "ui" | "cwd">): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* `/unbien stop` — full teardown. Leaves the local UDS mesh AND closes
|
|
34
|
+
* the relay. Safe when one or both are already off. To resume, run
|
|
35
|
+
* `/unbien` again.
|
|
36
|
+
*/
|
|
37
|
+
export declare function _cmdStop(deps: CommandDeps, ctx: Pick<ExtensionContext, "ui">): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Joins the fixed local UDS mesh ("local" session — see LOCAL_SESSION_NAME).
|
|
40
|
+
* Called by `_cmdRoot` on first run and on subsequent runs when the relay
|
|
41
|
+
* is up and the user hasn't explicitly stopped. The session name is no
|
|
42
|
+
* longer user-configurable: every Pi on the same machine joins the same
|
|
43
|
+
* broker.
|
|
44
|
+
*/
|
|
45
|
+
export declare function _cmdJoin(deps: CommandDeps, ctx: Pick<ExtensionContext, "ui" | "cwd">): Promise<void>;
|