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.
@@ -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
- init_wrapper();
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 = { type: "prompt", sessionId: match.id, text: promptText };
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("send a one-shot prompt to a session's live Claude (lands in the same inbox as cross-session route prompts; receiving Claude must be polling `await_routed_prompt`)").argument("<ref>", "session UUID or @routingName").argument("<text>", "prompt text \u2014 quote multi-word").action(async (ref, text) => {
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 cfg = loadConfig();
7415
- if (!cfg.pat) {
7416
- console.error("error: not logged in. run `claw login`.");
7417
- process.exit(2);
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.20");
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.20",
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",