@miraland-labs/conduit-bridge 0.9.10 → 0.9.11
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 +1 -1
- package/dist/driver.js +19 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Local Bridge CLI for [Conduit](https://github.com/miralandlabs/conduit). Connects a computer to one organization, claims work, and drives a local agent.
|
|
4
4
|
|
|
5
|
-
**Package version:** `0.9.
|
|
5
|
+
**Package version:** `0.9.11` — heartbeat protocol 2 requires a clean workspace plus a ready, versioned driver lane before dispatch. Cursor assignments with `external_network` allow-list `WebFetch(*)` and pass `--force` (required for headless fetch); research-only networked runs also deny `Shell(*)` / `Write(**)`. Attempt worktrees fetch/start from the initiative base when the source tip is behind or history was rewritten, without resetting the source checkout. Also includes **ops** helpers for macOS / Linux / Windows, LaunchAgent/systemd **PATH** for `~/.local/bin`, disconnect/disengage, multi-driver lanes, shared slots **1–4**, worktrees, and optional `--ensure-checkout`. Protocol 1 heartbeats remain compatible for presence but cannot receive work.
|
|
6
6
|
|
|
7
7
|
## Prerequisites
|
|
8
8
|
|
package/dist/driver.js
CHANGED
|
@@ -440,10 +440,12 @@ export const codexDriver = {
|
|
|
440
440
|
* Current Cursor Agent schema accepts only `permissions.{allow,deny}` (no
|
|
441
441
|
* `version` / `approvalMode`). Outside the allow list is denied without --force.
|
|
442
442
|
*
|
|
443
|
-
* `external_network` maps to WebFetch(*)
|
|
444
|
-
*
|
|
445
|
-
* `--force
|
|
446
|
-
*
|
|
443
|
+
* `external_network` maps to WebFetch(*) plus `--force` on the run (see
|
|
444
|
+
* cursorRunArgs). Field evidence: allow-listing WebFetch alone still yields
|
|
445
|
+
* "User Rejected" under headless `-p`; `--force` is required for fetch to
|
|
446
|
+
* succeed. Because `--force` auto-allows unlisted tools, research-only
|
|
447
|
+
* networked assignments also deny Shell(*) and Write(**). Codex's parallel is
|
|
448
|
+
* sandbox_workspace_write.network_access=true.
|
|
447
449
|
*/
|
|
448
450
|
export function cursorPermissionsForGrants(grants, verificationCommands = [], capabilities = []) {
|
|
449
451
|
const allow = [];
|
|
@@ -457,7 +459,16 @@ export function cursorPermissionsForGrants(grants, verificationCommands = [], ca
|
|
|
457
459
|
// Cursor docs: WebFetch(domainOrPattern); WebFetch(*) auto-approves any domain.
|
|
458
460
|
if (capabilities.includes("external_network"))
|
|
459
461
|
allow.push("WebFetch(*)");
|
|
460
|
-
|
|
462
|
+
const deny = deniedCommands.map((command) => `Shell(${command})`);
|
|
463
|
+
// --force opens anything not denied; lock shell/write when the assignment has no mutate/shell grants.
|
|
464
|
+
if (capabilities.includes("external_network")
|
|
465
|
+
&& !grants.includes("repo_write")
|
|
466
|
+
&& !grants.includes("test_run")
|
|
467
|
+
&& !grants.includes("branch_create")
|
|
468
|
+
&& !grants.includes("pr_create")) {
|
|
469
|
+
deny.push("Shell(*)", "Write(**)");
|
|
470
|
+
}
|
|
471
|
+
return { allow, deny };
|
|
461
472
|
}
|
|
462
473
|
/**
|
|
463
474
|
* Cursor CLI arguments. Deliberately no `--mode plan` for read-only assignments: plan mode is not an
|
|
@@ -475,6 +486,9 @@ export function cursorRunArgs(input) {
|
|
|
475
486
|
const args = ["-p", "--output-format", "json", "--workspace", input.workspace];
|
|
476
487
|
if (input.trustWorkspace)
|
|
477
488
|
args.push("--trust");
|
|
489
|
+
// Headless WebFetch requires --force even when WebFetch(*) is allow-listed (Cursor CLI 2026.07+).
|
|
490
|
+
if (input.capabilities?.includes("external_network"))
|
|
491
|
+
args.push("--force");
|
|
478
492
|
if (input.model)
|
|
479
493
|
args.push("--model", input.model);
|
|
480
494
|
if (input.resumeSessionId)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@miraland-labs/conduit-bridge",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.11",
|
|
4
4
|
"description": "Conduit Bridge CLI — join, connect, disconnect, multi-driver lanes, and run Claude Code / Codex / Cursor / OpenCode / Kiro / Antigravity agents for a Conduit organization",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|