@longleash/cli 0.1.0-rc.4 → 0.1.0-rc.5

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/bin/longleash.mjs CHANGED
@@ -1616,6 +1616,27 @@ function processAlive(pid) {
1616
1616
  }
1617
1617
  }
1618
1618
 
1619
+ // src/setup-input.ts
1620
+ function resolveAllowedRootAnswer(answer, defaultRoot) {
1621
+ const trimmed = answer.trim();
1622
+ if (/^(?:y|yes|n|no)$/i.test(trimmed)) {
1623
+ return {
1624
+ ok: false,
1625
+ message: `This question needs a folder path. Press Enter to use ${defaultRoot}, or type another existing folder.`
1626
+ };
1627
+ }
1628
+ try {
1629
+ const [root] = normalizeRoots([trimmed || defaultRoot]);
1630
+ if (!root) throw new Error("At least one allowed project directory is required.");
1631
+ return { ok: true, root };
1632
+ } catch (error) {
1633
+ return {
1634
+ ok: false,
1635
+ message: `That folder cannot be used: ${error instanceof Error ? error.message : String(error)}`
1636
+ };
1637
+ }
1638
+ }
1639
+
1619
1640
  // src/service.ts
1620
1641
  import {
1621
1642
  chmodSync as chmodSync2,
@@ -2218,8 +2239,15 @@ async function setup(options) {
2218
2239
  try {
2219
2240
  console.log("\nLongLeash setup\n");
2220
2241
  console.log("Agents remain on this laptop. Choose only folders where they may work.");
2221
- const rootAnswer = await prompt.question(`Allowed project folder [${process.cwd()}]: `);
2222
- options.roots = [rootAnswer.trim() || process.cwd()];
2242
+ const defaultRoot = process.cwd();
2243
+ while (options.roots.length === 0) {
2244
+ const rootAnswer = await prompt.question(`Allowed project folder (press Enter for ${defaultRoot}): `);
2245
+ const resolved = resolveAllowedRootAnswer(rootAnswer, defaultRoot);
2246
+ if (resolved.ok) options.roots = [resolved.root];
2247
+ else console.log(`
2248
+ ${resolved.message}
2249
+ `);
2250
+ }
2223
2251
  console.log("\nConnectivity: hosted works away from home; LAN-only has no internet relay.");
2224
2252
  const relayAnswer = await prompt.question("Relay [hosted / lan / wss://your-relay/ws] (hosted): ");
2225
2253
  options.relay = relayAnswer.trim() || "hosted";
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@longleash/cli",
3
- "version": "0.1.0-rc.4",
3
+ "version": "0.1.0-rc.5",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@longleash/cli",
9
- "version": "0.1.0-rc.4",
9
+ "version": "0.1.0-rc.5",
10
10
  "license": "MIT",
11
11
  "os": [
12
12
  "darwin",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@longleash/cli",
3
- "version": "0.1.0-rc.4",
3
+ "version": "0.1.0-rc.5",
4
4
  "description": "Securely control Claude Code and Codex sessions on your laptop from your phone.",
5
5
  "license": "MIT",
6
6
  "type": "module",