@indianic/dialout 1.1.2 → 1.2.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 +420 -24
- package/bin/AGENTS.md +44 -0
- package/bin/devdash-agent.js +2 -0
- package/dist/ai-adapters/claude.d.ts +3 -0
- package/dist/ai-adapters/claude.d.ts.map +1 -0
- package/dist/ai-adapters/claude.js +98 -0
- package/dist/ai-adapters/claude.js.map +1 -0
- package/dist/ai-adapters/codex.d.ts +3 -0
- package/dist/ai-adapters/codex.d.ts.map +1 -0
- package/dist/ai-adapters/codex.js +147 -0
- package/dist/ai-adapters/codex.js.map +1 -0
- package/dist/ai-adapters/grok.d.ts +3 -0
- package/dist/ai-adapters/grok.d.ts.map +1 -0
- package/dist/ai-adapters/grok.js +164 -0
- package/dist/ai-adapters/grok.js.map +1 -0
- package/dist/ai-adapters/index.d.ts +5 -0
- package/dist/ai-adapters/index.d.ts.map +1 -0
- package/dist/ai-adapters/index.js +30 -0
- package/dist/ai-adapters/index.js.map +1 -0
- package/dist/ai-adapters/types.d.ts +3 -0
- package/dist/ai-adapters/types.d.ts.map +1 -0
- package/dist/ai-adapters/types.js +7 -0
- package/dist/ai-adapters/types.js.map +1 -0
- package/dist/ai-capabilities/claude.d.ts +4 -0
- package/dist/ai-capabilities/claude.d.ts.map +1 -0
- package/dist/ai-capabilities/claude.js +174 -0
- package/dist/ai-capabilities/claude.js.map +1 -0
- package/dist/ai-capabilities/describe.d.ts +2 -0
- package/dist/ai-capabilities/describe.d.ts.map +1 -0
- package/dist/ai-capabilities/describe.js +31 -0
- package/dist/ai-capabilities/describe.js.map +1 -0
- package/dist/ai-capabilities/fsdeps.d.ts +3 -0
- package/dist/ai-capabilities/fsdeps.d.ts.map +1 -0
- package/dist/ai-capabilities/fsdeps.js +71 -0
- package/dist/ai-capabilities/fsdeps.js.map +1 -0
- package/dist/ai-capabilities/grok.d.ts +5 -0
- package/dist/ai-capabilities/grok.d.ts.map +1 -0
- package/dist/ai-capabilities/grok.js +145 -0
- package/dist/ai-capabilities/grok.js.map +1 -0
- package/dist/ai-capabilities/index.d.ts +4 -0
- package/dist/ai-capabilities/index.d.ts.map +1 -0
- package/dist/ai-capabilities/index.js +94 -0
- package/dist/ai-capabilities/index.js.map +1 -0
- package/dist/ai-capabilities/redact.d.ts +2 -0
- package/dist/ai-capabilities/redact.d.ts.map +1 -0
- package/dist/ai-capabilities/redact.js +27 -0
- package/dist/ai-capabilities/redact.js.map +1 -0
- package/dist/ai-capabilities/types.d.ts +11 -0
- package/dist/ai-capabilities/types.d.ts.map +1 -0
- package/dist/ai-capabilities/types.js +3 -0
- package/dist/ai-capabilities/types.js.map +1 -0
- package/dist/ai-launch.d.ts +35 -0
- package/dist/ai-launch.d.ts.map +1 -0
- package/dist/ai-launch.js +211 -0
- package/dist/ai-launch.js.map +1 -0
- package/dist/ai-session-detector.d.ts +19 -0
- package/dist/ai-session-detector.d.ts.map +1 -0
- package/dist/ai-session-detector.js +79 -0
- package/dist/ai-session-detector.js.map +1 -0
- package/dist/ai-sessions.d.ts +36 -0
- package/dist/ai-sessions.d.ts.map +1 -0
- package/dist/ai-sessions.js +309 -0
- package/dist/ai-sessions.js.map +1 -0
- package/dist/ai-status.d.ts +6 -0
- package/dist/ai-status.d.ts.map +1 -0
- package/dist/ai-status.js +40 -0
- package/dist/ai-status.js.map +1 -0
- package/dist/ai-transcript-locator.d.ts +35 -0
- package/dist/ai-transcript-locator.d.ts.map +1 -0
- package/dist/ai-transcript-locator.js +268 -0
- package/dist/ai-transcript-locator.js.map +1 -0
- package/dist/ai-transcript-tail.d.ts +17 -0
- package/dist/ai-transcript-tail.d.ts.map +1 -0
- package/dist/ai-transcript-tail.js +120 -0
- package/dist/ai-transcript-tail.js.map +1 -0
- package/dist/checklist.d.ts +20 -0
- package/dist/checklist.d.ts.map +1 -0
- package/dist/checklist.js +51 -0
- package/dist/checklist.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1427 -0
- package/dist/cli.js.map +1 -0
- package/dist/command-runner.d.ts +15 -0
- package/dist/command-runner.d.ts.map +1 -0
- package/dist/command-runner.js +84 -0
- package/dist/command-runner.js.map +1 -0
- package/dist/config.d.ts +41 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +152 -0
- package/dist/config.js.map +1 -0
- package/dist/cowork.d.ts +26 -0
- package/dist/cowork.d.ts.map +1 -0
- package/dist/cowork.js +370 -0
- package/dist/cowork.js.map +1 -0
- package/dist/fs-browser.d.ts +6 -0
- package/dist/fs-browser.d.ts.map +1 -0
- package/dist/fs-browser.js +61 -0
- package/dist/fs-browser.js.map +1 -0
- package/dist/has-command.d.ts +12 -0
- package/dist/has-command.d.ts.map +1 -0
- package/dist/has-command.js +24 -0
- package/dist/has-command.js.map +1 -0
- package/dist/heartbeat.d.ts +7 -0
- package/dist/heartbeat.d.ts.map +1 -0
- package/dist/heartbeat.js +50 -0
- package/dist/heartbeat.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +56 -0
- package/dist/index.js.map +1 -0
- package/dist/port-scanner.d.ts +4 -0
- package/dist/port-scanner.d.ts.map +1 -0
- package/dist/port-scanner.js +75 -0
- package/dist/port-scanner.js.map +1 -0
- package/dist/project-scanner.d.ts +15 -0
- package/dist/project-scanner.d.ts.map +1 -0
- package/dist/project-scanner.js +333 -0
- package/dist/project-scanner.js.map +1 -0
- package/dist/pty-manager.d.ts +28 -0
- package/dist/pty-manager.d.ts.map +1 -0
- package/dist/pty-manager.js +506 -0
- package/dist/pty-manager.js.map +1 -0
- package/dist/service-installer.d.ts +95 -0
- package/dist/service-installer.d.ts.map +1 -0
- package/dist/service-installer.js +911 -0
- package/dist/service-installer.js.map +1 -0
- package/dist/single-instance.d.ts +20 -0
- package/dist/single-instance.d.ts.map +1 -0
- package/dist/single-instance.js +151 -0
- package/dist/single-instance.js.map +1 -0
- package/dist/ssh-local-network.d.ts +26 -0
- package/dist/ssh-local-network.d.ts.map +1 -0
- package/dist/ssh-local-network.js +169 -0
- package/dist/ssh-local-network.js.map +1 -0
- package/dist/terminal-detect.d.ts +52 -0
- package/dist/terminal-detect.d.ts.map +1 -0
- package/dist/terminal-detect.js +147 -0
- package/dist/terminal-detect.js.map +1 -0
- package/dist/terminal-markers.d.ts +52 -0
- package/dist/terminal-markers.d.ts.map +1 -0
- package/dist/terminal-markers.js +174 -0
- package/dist/terminal-markers.js.map +1 -0
- package/dist/tmux-manager.d.ts +35 -0
- package/dist/tmux-manager.d.ts.map +1 -0
- package/dist/tmux-manager.js +274 -0
- package/dist/tmux-manager.js.map +1 -0
- package/dist/update-check.d.ts +3 -0
- package/dist/update-check.d.ts.map +1 -0
- package/dist/update-check.js +202 -0
- package/dist/update-check.js.map +1 -0
- package/dist/websocket.d.ts +8 -0
- package/dist/websocket.d.ts.map +1 -0
- package/dist/websocket.js +472 -0
- package/dist/websocket.js.map +1 -0
- package/node_modules/@dialout/shared/README.md +16 -0
- package/node_modules/@dialout/shared/dist/ai-chat-prefs.d.ts +8 -0
- package/node_modules/@dialout/shared/dist/ai-chat-prefs.d.ts.map +1 -0
- package/node_modules/@dialout/shared/dist/ai-chat-prefs.js +41 -0
- package/node_modules/@dialout/shared/dist/capabilities.d.ts +25 -0
- package/node_modules/@dialout/shared/dist/capabilities.d.ts.map +1 -0
- package/node_modules/@dialout/shared/dist/capabilities.js +2 -0
- package/node_modules/@dialout/shared/dist/chat-blocks.d.ts +33 -0
- package/node_modules/@dialout/shared/dist/chat-blocks.d.ts.map +1 -0
- package/node_modules/@dialout/shared/dist/chat-blocks.js +61 -0
- package/node_modules/@dialout/shared/dist/command-filter.d.ts +4 -0
- package/node_modules/@dialout/shared/dist/command-filter.d.ts.map +1 -0
- package/node_modules/@dialout/shared/dist/command-filter.js +49 -0
- package/node_modules/@dialout/shared/dist/composer-behaviour.d.ts +6 -0
- package/node_modules/@dialout/shared/dist/composer-behaviour.d.ts.map +1 -0
- package/node_modules/@dialout/shared/dist/composer-behaviour.js +24 -0
- package/node_modules/@dialout/shared/dist/events.d.ts +37 -0
- package/node_modules/@dialout/shared/dist/events.d.ts.map +1 -0
- package/node_modules/@dialout/shared/dist/events.js +13 -0
- package/node_modules/@dialout/shared/dist/index.d.ts +21 -0
- package/node_modules/@dialout/shared/dist/index.d.ts.map +1 -0
- package/node_modules/@dialout/shared/dist/index.js +37 -0
- package/node_modules/@dialout/shared/dist/kinds.d.ts +2 -0
- package/node_modules/@dialout/shared/dist/kinds.d.ts.map +1 -0
- package/node_modules/@dialout/shared/dist/kinds.js +2 -0
- package/node_modules/@dialout/shared/dist/notify.d.ts +3 -0
- package/node_modules/@dialout/shared/dist/notify.d.ts.map +1 -0
- package/node_modules/@dialout/shared/dist/notify.js +31 -0
- package/node_modules/@dialout/shared/dist/permission.d.ts +4 -0
- package/node_modules/@dialout/shared/dist/permission.d.ts.map +1 -0
- package/node_modules/@dialout/shared/dist/permission.js +8 -0
- package/node_modules/@dialout/shared/dist/scroll-pin.d.ts +3 -0
- package/node_modules/@dialout/shared/dist/scroll-pin.d.ts.map +1 -0
- package/node_modules/@dialout/shared/dist/scroll-pin.js +11 -0
- package/node_modules/@dialout/shared/dist/session.d.ts +19 -0
- package/node_modules/@dialout/shared/dist/session.d.ts.map +1 -0
- package/node_modules/@dialout/shared/dist/session.js +6 -0
- package/node_modules/@dialout/shared/dist/terminal-name.d.ts +25 -0
- package/node_modules/@dialout/shared/dist/terminal-name.d.ts.map +1 -0
- package/node_modules/@dialout/shared/dist/terminal-name.js +63 -0
- package/node_modules/@dialout/shared/dist/tool-appearance.d.ts +9 -0
- package/node_modules/@dialout/shared/dist/tool-appearance.d.ts.map +1 -0
- package/node_modules/@dialout/shared/dist/tool-appearance.js +30 -0
- package/node_modules/@dialout/shared/package.json +37 -0
- package/node_modules/@dialout/shared/src/ai-chat-prefs.test.ts +40 -0
- package/node_modules/@dialout/shared/src/ai-chat-prefs.ts +39 -0
- package/node_modules/@dialout/shared/src/capabilities.ts +30 -0
- package/node_modules/@dialout/shared/src/chat-blocks.test.ts +65 -0
- package/node_modules/@dialout/shared/src/chat-blocks.ts +79 -0
- package/node_modules/@dialout/shared/src/command-filter.test.ts +76 -0
- package/node_modules/@dialout/shared/src/command-filter.ts +45 -0
- package/node_modules/@dialout/shared/src/composer-behaviour.test.ts +31 -0
- package/node_modules/@dialout/shared/src/composer-behaviour.ts +22 -0
- package/node_modules/@dialout/shared/src/events.ts +27 -0
- package/node_modules/@dialout/shared/src/index.ts +32 -0
- package/node_modules/@dialout/shared/src/kinds.ts +5 -0
- package/node_modules/@dialout/shared/src/notify.test.ts +49 -0
- package/node_modules/@dialout/shared/src/notify.ts +30 -0
- package/node_modules/@dialout/shared/src/permission.ts +10 -0
- package/node_modules/@dialout/shared/src/scroll-pin.test.ts +23 -0
- package/node_modules/@dialout/shared/src/scroll-pin.ts +13 -0
- package/node_modules/@dialout/shared/src/session.ts +25 -0
- package/node_modules/@dialout/shared/src/terminal-name.ts +82 -0
- package/node_modules/@dialout/shared/src/tool-appearance.test.ts +41 -0
- package/node_modules/@dialout/shared/src/tool-appearance.ts +39 -0
- package/package.json +54 -14
- package/scripts/postinstall.js +79 -0
- package/scripts/prepack.js +45 -0
- package/bin/dialout.js +0 -13
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-installer.js","sourceRoot":"","sources":["../src/service-installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ensure at most one agent runs per server URL (first-holder-wins).
|
|
3
|
+
*
|
|
4
|
+
* Returns true if THIS process now owns the lock and should proceed. Returns
|
|
5
|
+
* false if a healthy agent already owns it — the caller must exit, so a
|
|
6
|
+
* watchdog/service respawn or a stray manual start quietly stands aside instead
|
|
7
|
+
* of stacking a second connection. A stale lock (dead/SIGKILLed holder) is
|
|
8
|
+
* reclaimed automatically. The lock is released on normal process exit; a
|
|
9
|
+
* SIGKILLed holder leaves a stale file that the next start reclaims.
|
|
10
|
+
*
|
|
11
|
+
* First-wins (not "new kills old") is deliberate: with two independent
|
|
12
|
+
* supervisors (launchd + cron), a "new always takes over" rule would let them
|
|
13
|
+
* ping-pong — each killing and respawning the other forever. An explicit
|
|
14
|
+
* `restart` still works: it SIGTERMs the old daemon first, which releases the
|
|
15
|
+
* lock, then the fresh start acquires it.
|
|
16
|
+
*/
|
|
17
|
+
export declare function acquireSingleInstanceLock(serverUrl: string): boolean;
|
|
18
|
+
/** The pid currently holding the lock for a URL, or 0 if none/stale. */
|
|
19
|
+
export declare function currentLockHolder(serverUrl: string): number;
|
|
20
|
+
//# sourceMappingURL=single-instance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single-instance.d.ts","sourceRoot":"","sources":["../src/single-instance.ts"],"names":[],"mappings":"AA8CA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAyCpE;AAED,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAQ3D"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.acquireSingleInstanceLock = acquireSingleInstanceLock;
|
|
37
|
+
exports.currentLockHolder = currentLockHolder;
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
const crypto = __importStar(require("crypto"));
|
|
41
|
+
const config_1 = require("./config");
|
|
42
|
+
// Why this exists: the agent can be launched by several uncoordinated paths —
|
|
43
|
+
// a launchd/systemd service (KeepAlive), the cron watchdog, and CLI
|
|
44
|
+
// `start --daemon` / `restart`. None of them knew about the others, so two or
|
|
45
|
+
// more `index.js` processes could run at once, each opening a WebSocket with
|
|
46
|
+
// the SAME api key. The server keeps only one connection per key and drops the
|
|
47
|
+
// rest (close 1006), producing an endless connect/disconnect flap and stopping
|
|
48
|
+
// live-session reporting. This lock makes duplicates structurally impossible.
|
|
49
|
+
//
|
|
50
|
+
// The lock is keyed by SERVER URL, not globally: a machine may legitimately run
|
|
51
|
+
// one agent against the remote server and one against a localhost server at the
|
|
52
|
+
// same time (the remote/local profiles). One daemon per unique URL — no more.
|
|
53
|
+
// A pidfile is used as the lock. It is intentionally NOT flock(2): Node has no
|
|
54
|
+
// portable flock, and a pidfile + liveness probe reclaims cleanly after a crash
|
|
55
|
+
// or SIGKILL (where no unlock handler could ever run) without a native dep.
|
|
56
|
+
function lockPathFor(serverUrl) {
|
|
57
|
+
const key = crypto.createHash('sha1').update(serverUrl).digest('hex').slice(0, 12);
|
|
58
|
+
return path.join((0, config_1.getConfigDir)(), `agent-${key}.lock`);
|
|
59
|
+
}
|
|
60
|
+
// A pid is "alive" if signal 0 succeeds. EPERM means the pid exists but is owned
|
|
61
|
+
// by another user — still alive, so treat it as held.
|
|
62
|
+
function isAlive(pid) {
|
|
63
|
+
if (!pid || Number.isNaN(pid))
|
|
64
|
+
return false;
|
|
65
|
+
try {
|
|
66
|
+
process.kill(pid, 0);
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
return err.code === 'EPERM';
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function removeIfOurs(lock) {
|
|
74
|
+
try {
|
|
75
|
+
const held = parseInt(fs.readFileSync(lock, 'utf-8').trim(), 10);
|
|
76
|
+
if (held === process.pid)
|
|
77
|
+
fs.unlinkSync(lock);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
/* already gone / unreadable — nothing to clean */
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Ensure at most one agent runs per server URL (first-holder-wins).
|
|
85
|
+
*
|
|
86
|
+
* Returns true if THIS process now owns the lock and should proceed. Returns
|
|
87
|
+
* false if a healthy agent already owns it — the caller must exit, so a
|
|
88
|
+
* watchdog/service respawn or a stray manual start quietly stands aside instead
|
|
89
|
+
* of stacking a second connection. A stale lock (dead/SIGKILLed holder) is
|
|
90
|
+
* reclaimed automatically. The lock is released on normal process exit; a
|
|
91
|
+
* SIGKILLed holder leaves a stale file that the next start reclaims.
|
|
92
|
+
*
|
|
93
|
+
* First-wins (not "new kills old") is deliberate: with two independent
|
|
94
|
+
* supervisors (launchd + cron), a "new always takes over" rule would let them
|
|
95
|
+
* ping-pong — each killing and respawning the other forever. An explicit
|
|
96
|
+
* `restart` still works: it SIGTERMs the old daemon first, which releases the
|
|
97
|
+
* lock, then the fresh start acquires it.
|
|
98
|
+
*/
|
|
99
|
+
function acquireSingleInstanceLock(serverUrl) {
|
|
100
|
+
const lock = lockPathFor(serverUrl);
|
|
101
|
+
// Two attempts: the second only runs after we reclaim a proven-stale lock.
|
|
102
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
103
|
+
try {
|
|
104
|
+
// O_CREAT|O_EXCL — atomic "create only if absent", so two racing starts
|
|
105
|
+
// can't both believe they won.
|
|
106
|
+
const fd = fs.openSync(lock, 'wx');
|
|
107
|
+
fs.writeSync(fd, String(process.pid));
|
|
108
|
+
fs.closeSync(fd);
|
|
109
|
+
// Release on any normal exit. 'exit' must stay synchronous (it is).
|
|
110
|
+
// index.ts's SIGINT/SIGTERM handlers call process.exit, which fires this.
|
|
111
|
+
process.on('exit', () => removeIfOurs(lock));
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
if (err.code !== 'EEXIST')
|
|
116
|
+
throw err;
|
|
117
|
+
let holder = 0;
|
|
118
|
+
try {
|
|
119
|
+
holder = parseInt(fs.readFileSync(lock, 'utf-8').trim(), 10);
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
/* unreadable — treat as stale below */
|
|
123
|
+
}
|
|
124
|
+
if (holder && holder !== process.pid && isAlive(holder)) {
|
|
125
|
+
return false; // a healthy agent already owns this URL
|
|
126
|
+
}
|
|
127
|
+
// Stale (dead holder, our own leftover, or unreadable): drop and retry.
|
|
128
|
+
try {
|
|
129
|
+
fs.unlinkSync(lock);
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
/* someone else won the race to reclaim — loop will re-evaluate */
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Could not acquire after reclaiming once (lost a reclaim race to a peer that
|
|
137
|
+
// is now the healthy holder). Stand aside.
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
/** The pid currently holding the lock for a URL, or 0 if none/stale. */
|
|
141
|
+
function currentLockHolder(serverUrl) {
|
|
142
|
+
const lock = lockPathFor(serverUrl);
|
|
143
|
+
try {
|
|
144
|
+
const holder = parseInt(fs.readFileSync(lock, 'utf-8').trim(), 10);
|
|
145
|
+
return isAlive(holder) ? holder : 0;
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
return 0;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=single-instance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single-instance.js","sourceRoot":"","sources":["../src/single-instance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare const SSH_LN_BEGIN = "# >>> dialout ssh local-network workaround >>>";
|
|
2
|
+
export declare const SSH_LN_END = "# <<< dialout ssh local-network workaround <<<";
|
|
3
|
+
export declare const DEFAULT_CONNECT_TIMEOUT = 15;
|
|
4
|
+
/**
|
|
5
|
+
* Only macOS gates local-network access this way; on Linux the block would be
|
|
6
|
+
* a gratuitous edit to the user's ssh config.
|
|
7
|
+
*/
|
|
8
|
+
export declare function sshLocalNetworkApplies(platform?: NodeJS.Platform): boolean;
|
|
9
|
+
export declare function defaultSshConfigPath(home?: string): string;
|
|
10
|
+
export declare function renderSshLocalNetworkBlock(timeoutSeconds?: number): string;
|
|
11
|
+
export declare function removeSshLocalNetworkBlock(content: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* True when some earlier stanza already sets ConnectTimeout. ssh keeps the
|
|
14
|
+
* FIRST value it obtains for a keyword, so an existing setting wins over ours
|
|
15
|
+
* and appending would be dead weight.
|
|
16
|
+
*/
|
|
17
|
+
export declare function hasConnectTimeout(content: string): boolean;
|
|
18
|
+
export type SshBlockResult = 'created' | 'installed' | 'updated' | 'skipped-existing' | 'skipped-platform';
|
|
19
|
+
/**
|
|
20
|
+
* Append (or refresh) the block at the END of the file. Position matters:
|
|
21
|
+
* ssh takes the first value it obtains for each keyword, so a trailing
|
|
22
|
+
* `Host *` supplies defaults without overriding any host-specific stanza
|
|
23
|
+
* above it. Putting it first would silently change every existing Host block.
|
|
24
|
+
*/
|
|
25
|
+
export declare function installSshLocalNetworkBlock(configPath?: string, timeoutSeconds?: number, platform?: NodeJS.Platform): SshBlockResult;
|
|
26
|
+
//# sourceMappingURL=ssh-local-network.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssh-local-network.d.ts","sourceRoot":"","sources":["../src/ssh-local-network.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY,mDAAmD,CAAC;AAC7E,eAAO,MAAM,UAAU,mDAAmD,CAAC;AAyC3E,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG,OAAO,CAE5F;AAED,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,MAAqB,GAAG,MAAM,CAExE;AAED,wBAAgB,0BAA0B,CACxC,cAAc,GAAE,MAAgC,GAC/C,MAAM,CAkBR;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAelE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAG1D;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;AAE3G;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,GAAE,MAA+B,EAC3C,cAAc,GAAE,MAAgC,EAChD,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,cAAc,CAqBhB"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.DEFAULT_CONNECT_TIMEOUT = exports.SSH_LN_END = exports.SSH_LN_BEGIN = void 0;
|
|
37
|
+
exports.sshLocalNetworkApplies = sshLocalNetworkApplies;
|
|
38
|
+
exports.defaultSshConfigPath = defaultSshConfigPath;
|
|
39
|
+
exports.renderSshLocalNetworkBlock = renderSshLocalNetworkBlock;
|
|
40
|
+
exports.removeSshLocalNetworkBlock = removeSshLocalNetworkBlock;
|
|
41
|
+
exports.hasConnectTimeout = hasConnectTimeout;
|
|
42
|
+
exports.installSshLocalNetworkBlock = installSshLocalNetworkBlock;
|
|
43
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const os = __importStar(require("os"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
exports.SSH_LN_BEGIN = '# >>> dialout ssh local-network workaround >>>';
|
|
47
|
+
exports.SSH_LN_END = '# <<< dialout ssh local-network workaround <<<';
|
|
48
|
+
// Pre-rename markers. Same reasoning as the cowork block: this one lives in
|
|
49
|
+
// the user's ssh config, so removal must still recognise it.
|
|
50
|
+
const LEGACY_SSH_LN_BEGIN = '# >>> devdash ssh local-network workaround >>>';
|
|
51
|
+
const LEGACY_SSH_LN_END = '# <<< devdash ssh local-network workaround <<<';
|
|
52
|
+
// Why this exists at all:
|
|
53
|
+
//
|
|
54
|
+
// macOS 15+ gates local-network access per *responsible process*, and for
|
|
55
|
+
// anything running in tmux that responsible process is the tmux SERVER — not
|
|
56
|
+
// the shell, not the agent, not the terminal app the user thinks they are in.
|
|
57
|
+
// A denied tmux server makes every LAN ssh inside it fail with the useless
|
|
58
|
+
// ssh: connect to host <host> port 22: Undefined error: 0
|
|
59
|
+
// (errno 0 — the connection never reached a socket). The unified log is
|
|
60
|
+
// explicit: "unsatisfied (Local network prohibited)". The same git remote
|
|
61
|
+
// works in a non-tmux window of the same terminal app, which is what makes
|
|
62
|
+
// this look like a devdash bug when it is not one.
|
|
63
|
+
//
|
|
64
|
+
// Four things were measured before settling on this fix, because the obvious
|
|
65
|
+
// explanations are all wrong:
|
|
66
|
+
//
|
|
67
|
+
// - ssh as a direct child of a user LaunchAgent running plain `node`:
|
|
68
|
+
// ALLOWED. So it is not "launchd jobs are denied".
|
|
69
|
+
// - the same, after a double-fork + setsid: ALLOWED. So it is not
|
|
70
|
+
// daemonising or losing the session leader either.
|
|
71
|
+
// - ssh inside a tmux server started by that same LaunchAgent: DENIED.
|
|
72
|
+
// tmux is the only variable, and one tmux server serves the whole user,
|
|
73
|
+
// so every session on the machine inherits its verdict no matter who
|
|
74
|
+
// opened it.
|
|
75
|
+
// - the agent re-launched from a hand-built, ad-hoc-signed .app bundle:
|
|
76
|
+
// still DENIED. Giving the agent a grantable identity does not help,
|
|
77
|
+
// because the agent is not the identity being judged.
|
|
78
|
+
//
|
|
79
|
+
// The real cure is granting tmux itself under System Settings > Privacy &
|
|
80
|
+
// Security > Local Network, which is a click the agent cannot perform. What
|
|
81
|
+
// the agent CAN do is set ConnectTimeout, which switches ssh to the legacy
|
|
82
|
+
// BSD-socket connect — a path that is not gated at all. It goes in ssh_config
|
|
83
|
+
// rather than a GIT_SSH_COMMAND wrapper because bare `ssh`, `git`, `npm`,
|
|
84
|
+
// `scp` and everything else that shells out to ssh all have to be covered,
|
|
85
|
+
// including inside tmux sessions that already existed before this shipped.
|
|
86
|
+
exports.DEFAULT_CONNECT_TIMEOUT = 15;
|
|
87
|
+
/**
|
|
88
|
+
* Only macOS gates local-network access this way; on Linux the block would be
|
|
89
|
+
* a gratuitous edit to the user's ssh config.
|
|
90
|
+
*/
|
|
91
|
+
function sshLocalNetworkApplies(platform = process.platform) {
|
|
92
|
+
return platform === 'darwin';
|
|
93
|
+
}
|
|
94
|
+
function defaultSshConfigPath(home = os.homedir()) {
|
|
95
|
+
return path.join(home, '.ssh', 'config');
|
|
96
|
+
}
|
|
97
|
+
function renderSshLocalNetworkBlock(timeoutSeconds = exports.DEFAULT_CONNECT_TIMEOUT) {
|
|
98
|
+
// Clamped, then rendered as an integer: this value is interpolated into a
|
|
99
|
+
// config file, so it must not be able to carry anything but digits.
|
|
100
|
+
const asNumber = Number(timeoutSeconds);
|
|
101
|
+
const base = Number.isFinite(asNumber) ? asNumber : exports.DEFAULT_CONNECT_TIMEOUT;
|
|
102
|
+
const secs = Math.max(1, Math.min(300, Math.trunc(base)));
|
|
103
|
+
return `${exports.SSH_LN_BEGIN}
|
|
104
|
+
# Managed by dialout — do not edit inside the markers.
|
|
105
|
+
# macOS Local Network Privacy judges the tmux SERVER, so every tmux session on
|
|
106
|
+
# this machine is denied LAN access and ssh to a local host dies with
|
|
107
|
+
# "Undefined error: 0" — while the same command works in a non-tmux window.
|
|
108
|
+
# ConnectTimeout selects ssh's legacy BSD-socket connect, which is not gated.
|
|
109
|
+
# The real cure is to allow tmux under System Settings > Privacy & Security >
|
|
110
|
+
# Local Network. Removed by "dialout uninstall-service" and
|
|
111
|
+
# "dialout setup-cowork --remove", or delete the block by hand.
|
|
112
|
+
Host *
|
|
113
|
+
ConnectTimeout ${secs}
|
|
114
|
+
${exports.SSH_LN_END}`;
|
|
115
|
+
}
|
|
116
|
+
function removeSshLocalNetworkBlock(content) {
|
|
117
|
+
{
|
|
118
|
+
const b = content.indexOf(LEGACY_SSH_LN_BEGIN);
|
|
119
|
+
const e = content.indexOf(LEGACY_SSH_LN_END);
|
|
120
|
+
if (b !== -1 && e !== -1) {
|
|
121
|
+
content = (content.slice(0, b) + content.slice(e + LEGACY_SSH_LN_END.length))
|
|
122
|
+
.replace(/\n{3,}/g, '\n\n');
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const begin = content.indexOf(exports.SSH_LN_BEGIN);
|
|
126
|
+
if (begin === -1)
|
|
127
|
+
return content;
|
|
128
|
+
const end = content.indexOf(exports.SSH_LN_END);
|
|
129
|
+
if (end === -1 || end < begin)
|
|
130
|
+
return content;
|
|
131
|
+
return (content.slice(0, begin) + content.slice(end + exports.SSH_LN_END.length))
|
|
132
|
+
.replace(/\n{3,}$/g, '\n\n');
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* True when some earlier stanza already sets ConnectTimeout. ssh keeps the
|
|
136
|
+
* FIRST value it obtains for a keyword, so an existing setting wins over ours
|
|
137
|
+
* and appending would be dead weight.
|
|
138
|
+
*/
|
|
139
|
+
function hasConnectTimeout(content) {
|
|
140
|
+
const withoutOurs = removeSshLocalNetworkBlock(content);
|
|
141
|
+
return /^[ \t]*ConnectTimeout[ \t=]/im.test(withoutOurs);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Append (or refresh) the block at the END of the file. Position matters:
|
|
145
|
+
* ssh takes the first value it obtains for each keyword, so a trailing
|
|
146
|
+
* `Host *` supplies defaults without overriding any host-specific stanza
|
|
147
|
+
* above it. Putting it first would silently change every existing Host block.
|
|
148
|
+
*/
|
|
149
|
+
function installSshLocalNetworkBlock(configPath = defaultSshConfigPath(), timeoutSeconds = exports.DEFAULT_CONNECT_TIMEOUT, platform = process.platform) {
|
|
150
|
+
if (!sshLocalNetworkApplies(platform))
|
|
151
|
+
return 'skipped-platform';
|
|
152
|
+
const dir = path.dirname(configPath);
|
|
153
|
+
if (!fs.existsSync(dir))
|
|
154
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
155
|
+
const existed = fs.existsSync(configPath);
|
|
156
|
+
const content = existed ? fs.readFileSync(configPath, 'utf-8') : '';
|
|
157
|
+
const had = content.includes(exports.SSH_LN_BEGIN);
|
|
158
|
+
if (!had && hasConnectTimeout(content))
|
|
159
|
+
return 'skipped-existing';
|
|
160
|
+
const cleaned = removeSshLocalNetworkBlock(content);
|
|
161
|
+
const next = (cleaned.trim() ? cleaned.replace(/\n*$/, '\n\n') : '')
|
|
162
|
+
+ renderSshLocalNetworkBlock(timeoutSeconds) + '\n';
|
|
163
|
+
fs.writeFileSync(configPath, next, { mode: 0o600 });
|
|
164
|
+
// writeFileSync's mode only applies on create; ssh refuses a group/world
|
|
165
|
+
// readable config, so enforce it on the pre-existing case too.
|
|
166
|
+
fs.chmodSync(configPath, 0o600);
|
|
167
|
+
return had ? 'updated' : existed ? 'installed' : 'created';
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=ssh-local-network.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssh-local-network.js","sourceRoot":"","sources":["../src/ssh-local-network.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { ProcDeps } from './terminal-markers';
|
|
2
|
+
export interface KnownTerminal {
|
|
3
|
+
/** Display name for the checklist, e.g. "iTerm". */
|
|
4
|
+
name: string;
|
|
5
|
+
/** Canonical token stored in config and matched at runtime. */
|
|
6
|
+
token: string;
|
|
7
|
+
/** macOS .app bundle basenames that indicate it is installed. */
|
|
8
|
+
appBundles: string[];
|
|
9
|
+
/** true when the app bundle is present on disk (or launcher present on Linux). */
|
|
10
|
+
installed: boolean;
|
|
11
|
+
/** true when this is the terminal setup is currently running in. */
|
|
12
|
+
current: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface DetectDeps {
|
|
15
|
+
env?: NodeJS.ProcessEnv;
|
|
16
|
+
platform?: NodeJS.Platform;
|
|
17
|
+
/** macOS: true when the given .app bundle exists in a standard location. */
|
|
18
|
+
appExists?: (bundle: string) => boolean;
|
|
19
|
+
/** Linux: true when the given launcher binary is on PATH. */
|
|
20
|
+
hasCommand?: (bin: string) => boolean;
|
|
21
|
+
/** Injectable for testing the /proc fallback; see currentTerminalToken. */
|
|
22
|
+
ppid?: number;
|
|
23
|
+
/** Injectable for testing the /proc fallback; see currentTerminalToken. */
|
|
24
|
+
procDeps?: ProcDeps;
|
|
25
|
+
}
|
|
26
|
+
/** Optional injectable deps for currentTerminalToken's /proc fallback, for testing. */
|
|
27
|
+
export interface CurrentTokenDeps {
|
|
28
|
+
ppid?: number;
|
|
29
|
+
platform?: NodeJS.Platform;
|
|
30
|
+
procDeps?: ProcDeps;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Canonical token for the terminal setup is running in, or "" if unknown.
|
|
34
|
+
* Delegates to the shared terminal-markers.ts table so this can never drift
|
|
35
|
+
* from the generated shell gate (cowork.ts): tokenFromEnv() first (handles
|
|
36
|
+
* the TMUX guard, TERM_PROGRAM, and ENV_MARKERS), then — only on linux, where
|
|
37
|
+
* /proc exists — tokenFromProcTree() walks up from the ppid for the emulators
|
|
38
|
+
* that set no distinguishing env var at all (xfce4-terminal, foot, urxvt,
|
|
39
|
+
* xterm, st, ...). macOS never reaches the /proc fallback: behavior there is
|
|
40
|
+
* unchanged.
|
|
41
|
+
*
|
|
42
|
+
* The generic GENERIC_ENV_TOKEN ("vte") result is PROVISIONAL: every VTE-based
|
|
43
|
+
* terminal exports VTE_VERSION, so treating it as final shadowed every
|
|
44
|
+
* PROC_NAMES entry that is also VTE-based (xfce4-terminal today; guake,
|
|
45
|
+
* mate-terminal tomorrow) and made their checklist rows unreachable. So the
|
|
46
|
+
* walk still runs for it and a specific token wins, with "vte" restored when
|
|
47
|
+
* the walk finds nothing. The emitted shell walk guard does exactly the same
|
|
48
|
+
* (renderProcWalk in cowork.ts) — that is the invariant.
|
|
49
|
+
*/
|
|
50
|
+
export declare function currentTerminalToken(env?: NodeJS.ProcessEnv, deps?: CurrentTokenDeps): string;
|
|
51
|
+
export declare function detectTerminals(deps?: DetectDeps): KnownTerminal[];
|
|
52
|
+
//# sourceMappingURL=terminal-detect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-detect.d.ts","sourceRoot":"","sources":["../src/terminal-detect.ts"],"names":[],"mappings":"AAIA,OAAO,EAC4B,QAAQ,EAC1C,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,kFAAkF;IAClF,SAAS,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,OAAO,EAAE,OAAO,CAAC;CAClB;AAiCD,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,4EAA4E;IAC5E,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC,6DAA6D;IAC7D,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,uFAAuF;AACvF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAoBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,GAAE,gBAAqB,GAC1B,MAAM,CAUR;AAED,wBAAgB,eAAe,CAAC,IAAI,GAAE,UAAe,GAAG,aAAa,EAAE,CAoCtE"}
|