clawborrator-cli 0.0.20 → 0.0.22
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/dist-bundled/claw.cjs +30 -77
- package/package.json +1 -1
package/dist-bundled/claw.cjs
CHANGED
|
@@ -6,16 +6,9 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
6
6
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
7
|
var __getProtoOf = Object.getPrototypeOf;
|
|
8
8
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
-
var __esm = (fn, res) => function __init() {
|
|
10
|
-
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
11
|
-
};
|
|
12
9
|
var __commonJS = (cb, mod) => function __require() {
|
|
13
10
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
14
11
|
};
|
|
15
|
-
var __export = (target, all) => {
|
|
16
|
-
for (var name in all)
|
|
17
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
18
|
-
};
|
|
19
12
|
var __copyProps = (to, from, except, desc) => {
|
|
20
13
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
21
14
|
for (let key of __getOwnPropNames(from))
|
|
@@ -6642,34 +6635,6 @@ var require_websocket_server = __commonJS({
|
|
|
6642
6635
|
}
|
|
6643
6636
|
});
|
|
6644
6637
|
|
|
6645
|
-
// ../node_modules/ws/wrapper.mjs
|
|
6646
|
-
var wrapper_exports = {};
|
|
6647
|
-
__export(wrapper_exports, {
|
|
6648
|
-
PerMessageDeflate: () => import_permessage_deflate.default,
|
|
6649
|
-
Receiver: () => import_receiver.default,
|
|
6650
|
-
Sender: () => import_sender.default,
|
|
6651
|
-
WebSocket: () => import_websocket.default,
|
|
6652
|
-
WebSocketServer: () => import_websocket_server.default,
|
|
6653
|
-
createWebSocketStream: () => import_stream.default,
|
|
6654
|
-
default: () => wrapper_default,
|
|
6655
|
-
extension: () => import_extension.default,
|
|
6656
|
-
subprotocol: () => import_subprotocol.default
|
|
6657
|
-
});
|
|
6658
|
-
var import_stream, import_extension, import_permessage_deflate, import_receiver, import_sender, import_subprotocol, import_websocket, import_websocket_server, wrapper_default;
|
|
6659
|
-
var init_wrapper = __esm({
|
|
6660
|
-
"../node_modules/ws/wrapper.mjs"() {
|
|
6661
|
-
import_stream = __toESM(require_stream(), 1);
|
|
6662
|
-
import_extension = __toESM(require_extension(), 1);
|
|
6663
|
-
import_permessage_deflate = __toESM(require_permessage_deflate(), 1);
|
|
6664
|
-
import_receiver = __toESM(require_receiver(), 1);
|
|
6665
|
-
import_sender = __toESM(require_sender(), 1);
|
|
6666
|
-
import_subprotocol = __toESM(require_subprotocol(), 1);
|
|
6667
|
-
import_websocket = __toESM(require_websocket(), 1);
|
|
6668
|
-
import_websocket_server = __toESM(require_websocket_server(), 1);
|
|
6669
|
-
wrapper_default = import_websocket.default;
|
|
6670
|
-
}
|
|
6671
|
-
});
|
|
6672
|
-
|
|
6673
6638
|
// ../node_modules/commander/esm.mjs
|
|
6674
6639
|
var import_index = __toESM(require_commander(), 1);
|
|
6675
6640
|
var {
|
|
@@ -6880,7 +6845,19 @@ var whoamiCmd = new Command("whoami").description("show the currently authentica
|
|
|
6880
6845
|
|
|
6881
6846
|
// src/commands/session-attach.ts
|
|
6882
6847
|
var import_node_readline = require("node:readline");
|
|
6883
|
-
|
|
6848
|
+
|
|
6849
|
+
// ../node_modules/ws/wrapper.mjs
|
|
6850
|
+
var import_stream = __toESM(require_stream(), 1);
|
|
6851
|
+
var import_extension = __toESM(require_extension(), 1);
|
|
6852
|
+
var import_permessage_deflate = __toESM(require_permessage_deflate(), 1);
|
|
6853
|
+
var import_receiver = __toESM(require_receiver(), 1);
|
|
6854
|
+
var import_sender = __toESM(require_sender(), 1);
|
|
6855
|
+
var import_subprotocol = __toESM(require_subprotocol(), 1);
|
|
6856
|
+
var import_websocket = __toESM(require_websocket(), 1);
|
|
6857
|
+
var import_websocket_server = __toESM(require_websocket_server(), 1);
|
|
6858
|
+
var wrapper_default = import_websocket.default;
|
|
6859
|
+
|
|
6860
|
+
// src/commands/session-attach.ts
|
|
6884
6861
|
var RESET = "\x1B[0m";
|
|
6885
6862
|
var DIM = "\x1B[2m";
|
|
6886
6863
|
var AMBER = "\x1B[33m";
|
|
@@ -7046,7 +7023,16 @@ var sessionAttach = new Command("attach").description("open a TUI on a session \
|
|
|
7046
7023
|
console.error(`${RED}error: no session ${targetRef} (try \`claw session list\` in another terminal)${RESET}`);
|
|
7047
7024
|
return;
|
|
7048
7025
|
}
|
|
7049
|
-
const out2 = {
|
|
7026
|
+
const out2 = {
|
|
7027
|
+
type: "prompt",
|
|
7028
|
+
sessionId: match.id,
|
|
7029
|
+
text: promptText,
|
|
7030
|
+
// Source-session tag so the hub can persist the eventual
|
|
7031
|
+
// reply against THIS session's events history and surface
|
|
7032
|
+
// it to source Claude via channel notification (the same
|
|
7033
|
+
// shape route_to_peer's reply path uses).
|
|
7034
|
+
sourceSessionId: sessionId
|
|
7035
|
+
};
|
|
7050
7036
|
ws.send(JSON.stringify(out2));
|
|
7051
7037
|
console.log(`${DIM}[${ts()}]${RESET} ${AMBER}\u2192 prompt \u2192 ${targetRef}${RESET} ${promptText}`);
|
|
7052
7038
|
} catch (e) {
|
|
@@ -7409,46 +7395,13 @@ var sessionDelete = new Command("delete").description("hard-delete a single sess
|
|
|
7409
7395
|
);
|
|
7410
7396
|
console.log(`\u2717 deleted ${r.sessionId} (events / op-messages / shares cascaded).`);
|
|
7411
7397
|
});
|
|
7412
|
-
var sessionPrompt = new Command("prompt").description(
|
|
7398
|
+
var sessionPrompt = new Command("prompt").description('send a one-shot prompt to a session\'s live Claude. Fire-and-forget \u2014 to find the eventual reply, run `claw session events <ref> --kind=chat --type=reply` (or `claw route <peer> "..."` for ask-mode that blocks for the answer).').argument("<ref>", "session UUID or @routingName").argument("<text>", "prompt text \u2014 quote multi-word").action(async (ref, text) => {
|
|
7413
7399
|
const id = await resolveSessionId(ref);
|
|
7414
|
-
const
|
|
7415
|
-
|
|
7416
|
-
|
|
7417
|
-
|
|
7418
|
-
}
|
|
7419
|
-
const wsUrl = cfg.hubUrl.replace(/^http/i, "ws") + "/cli";
|
|
7420
|
-
const WS = (await Promise.resolve().then(() => (init_wrapper(), wrapper_exports))).default;
|
|
7421
|
-
const ws = new WS(wsUrl, { headers: { Authorization: `Bearer ${cfg.pat}` } });
|
|
7422
|
-
let timer = null;
|
|
7423
|
-
await new Promise((resolve3, reject) => {
|
|
7424
|
-
timer = setTimeout(() => {
|
|
7425
|
-
ws.close();
|
|
7426
|
-
reject(new Error("timeout waiting for ack"));
|
|
7427
|
-
}, 1e4);
|
|
7428
|
-
ws.on("open", () => {
|
|
7429
|
-
ws.send(JSON.stringify({ type: "prompt", sessionId: id, text }));
|
|
7430
|
-
});
|
|
7431
|
-
ws.on("message", (data) => {
|
|
7432
|
-
let m;
|
|
7433
|
-
try {
|
|
7434
|
-
m = JSON.parse(data.toString("utf8"));
|
|
7435
|
-
} catch {
|
|
7436
|
-
return;
|
|
7437
|
-
}
|
|
7438
|
-
if (m.type === "ack" && m.ok) {
|
|
7439
|
-
console.log(`\u2713 delivered (chatId=${m.chatId})`);
|
|
7440
|
-
ws.close();
|
|
7441
|
-
resolve3();
|
|
7442
|
-
} else if (m.type === "error") {
|
|
7443
|
-
ws.close();
|
|
7444
|
-
reject(new Error(`${m.code}: ${m.message}`));
|
|
7445
|
-
}
|
|
7446
|
-
});
|
|
7447
|
-
ws.on("error", (err) => reject(err));
|
|
7448
|
-
ws.on("close", () => {
|
|
7449
|
-
if (timer) clearTimeout(timer);
|
|
7450
|
-
});
|
|
7451
|
-
});
|
|
7400
|
+
const out = await api.post(
|
|
7401
|
+
`/api/v1/sessions/${encodeURIComponent(id)}/prompt`,
|
|
7402
|
+
{ text }
|
|
7403
|
+
);
|
|
7404
|
+
console.log(`\u2713 delivered (chatId=${out.chatId})`);
|
|
7452
7405
|
});
|
|
7453
7406
|
var VALID_ROLES = ["viewer", "prompter", "approver"];
|
|
7454
7407
|
var sessionShareCmd = new Command("share").description("grant another GitHub user access to a session. role defaults to prompter (viewer = read-only events; prompter = + send prompts/op-messages; approver = + resolve permission requests).").argument("<ref>", "session UUID or @routingName").argument("<login>", "GitHub login of the user to share with (with or without leading @)").option("--role <role>", `viewer | prompter | approver`, "prompter").action(async (ref, login, opts) => {
|
|
@@ -7709,7 +7662,7 @@ var webhookCmd = new Command("webhook").description("manage webhook subscription
|
|
|
7709
7662
|
|
|
7710
7663
|
// src/index.ts
|
|
7711
7664
|
var program2 = new Command();
|
|
7712
|
-
program2.name("claw").description("clawborrator CLI \u2014 control your Claude Code sessions from the terminal").version("0.0.
|
|
7665
|
+
program2.name("claw").description("clawborrator CLI \u2014 control your Claude Code sessions from the terminal").version("0.0.22");
|
|
7713
7666
|
program2.addCommand(loginCmd);
|
|
7714
7667
|
program2.addCommand(logoutCmd);
|
|
7715
7668
|
program2.addCommand(whoamiCmd);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clawborrator-cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.22",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "claw — command-line client for clawborrator hub_v1. Manages PATs, channel tokens, sessions, cross-session routing, and webhooks; ships an inline TUI for live multi-operator session attach.",
|
|
6
6
|
"license": "MIT",
|