@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.
Files changed (224) hide show
  1. package/README.md +420 -24
  2. package/bin/AGENTS.md +44 -0
  3. package/bin/devdash-agent.js +2 -0
  4. package/dist/ai-adapters/claude.d.ts +3 -0
  5. package/dist/ai-adapters/claude.d.ts.map +1 -0
  6. package/dist/ai-adapters/claude.js +98 -0
  7. package/dist/ai-adapters/claude.js.map +1 -0
  8. package/dist/ai-adapters/codex.d.ts +3 -0
  9. package/dist/ai-adapters/codex.d.ts.map +1 -0
  10. package/dist/ai-adapters/codex.js +147 -0
  11. package/dist/ai-adapters/codex.js.map +1 -0
  12. package/dist/ai-adapters/grok.d.ts +3 -0
  13. package/dist/ai-adapters/grok.d.ts.map +1 -0
  14. package/dist/ai-adapters/grok.js +164 -0
  15. package/dist/ai-adapters/grok.js.map +1 -0
  16. package/dist/ai-adapters/index.d.ts +5 -0
  17. package/dist/ai-adapters/index.d.ts.map +1 -0
  18. package/dist/ai-adapters/index.js +30 -0
  19. package/dist/ai-adapters/index.js.map +1 -0
  20. package/dist/ai-adapters/types.d.ts +3 -0
  21. package/dist/ai-adapters/types.d.ts.map +1 -0
  22. package/dist/ai-adapters/types.js +7 -0
  23. package/dist/ai-adapters/types.js.map +1 -0
  24. package/dist/ai-capabilities/claude.d.ts +4 -0
  25. package/dist/ai-capabilities/claude.d.ts.map +1 -0
  26. package/dist/ai-capabilities/claude.js +174 -0
  27. package/dist/ai-capabilities/claude.js.map +1 -0
  28. package/dist/ai-capabilities/describe.d.ts +2 -0
  29. package/dist/ai-capabilities/describe.d.ts.map +1 -0
  30. package/dist/ai-capabilities/describe.js +31 -0
  31. package/dist/ai-capabilities/describe.js.map +1 -0
  32. package/dist/ai-capabilities/fsdeps.d.ts +3 -0
  33. package/dist/ai-capabilities/fsdeps.d.ts.map +1 -0
  34. package/dist/ai-capabilities/fsdeps.js +71 -0
  35. package/dist/ai-capabilities/fsdeps.js.map +1 -0
  36. package/dist/ai-capabilities/grok.d.ts +5 -0
  37. package/dist/ai-capabilities/grok.d.ts.map +1 -0
  38. package/dist/ai-capabilities/grok.js +145 -0
  39. package/dist/ai-capabilities/grok.js.map +1 -0
  40. package/dist/ai-capabilities/index.d.ts +4 -0
  41. package/dist/ai-capabilities/index.d.ts.map +1 -0
  42. package/dist/ai-capabilities/index.js +94 -0
  43. package/dist/ai-capabilities/index.js.map +1 -0
  44. package/dist/ai-capabilities/redact.d.ts +2 -0
  45. package/dist/ai-capabilities/redact.d.ts.map +1 -0
  46. package/dist/ai-capabilities/redact.js +27 -0
  47. package/dist/ai-capabilities/redact.js.map +1 -0
  48. package/dist/ai-capabilities/types.d.ts +11 -0
  49. package/dist/ai-capabilities/types.d.ts.map +1 -0
  50. package/dist/ai-capabilities/types.js +3 -0
  51. package/dist/ai-capabilities/types.js.map +1 -0
  52. package/dist/ai-launch.d.ts +35 -0
  53. package/dist/ai-launch.d.ts.map +1 -0
  54. package/dist/ai-launch.js +211 -0
  55. package/dist/ai-launch.js.map +1 -0
  56. package/dist/ai-session-detector.d.ts +19 -0
  57. package/dist/ai-session-detector.d.ts.map +1 -0
  58. package/dist/ai-session-detector.js +79 -0
  59. package/dist/ai-session-detector.js.map +1 -0
  60. package/dist/ai-sessions.d.ts +36 -0
  61. package/dist/ai-sessions.d.ts.map +1 -0
  62. package/dist/ai-sessions.js +309 -0
  63. package/dist/ai-sessions.js.map +1 -0
  64. package/dist/ai-status.d.ts +6 -0
  65. package/dist/ai-status.d.ts.map +1 -0
  66. package/dist/ai-status.js +40 -0
  67. package/dist/ai-status.js.map +1 -0
  68. package/dist/ai-transcript-locator.d.ts +35 -0
  69. package/dist/ai-transcript-locator.d.ts.map +1 -0
  70. package/dist/ai-transcript-locator.js +268 -0
  71. package/dist/ai-transcript-locator.js.map +1 -0
  72. package/dist/ai-transcript-tail.d.ts +17 -0
  73. package/dist/ai-transcript-tail.d.ts.map +1 -0
  74. package/dist/ai-transcript-tail.js +120 -0
  75. package/dist/ai-transcript-tail.js.map +1 -0
  76. package/dist/checklist.d.ts +20 -0
  77. package/dist/checklist.d.ts.map +1 -0
  78. package/dist/checklist.js +51 -0
  79. package/dist/checklist.js.map +1 -0
  80. package/dist/cli.d.ts +2 -0
  81. package/dist/cli.d.ts.map +1 -0
  82. package/dist/cli.js +1427 -0
  83. package/dist/cli.js.map +1 -0
  84. package/dist/command-runner.d.ts +15 -0
  85. package/dist/command-runner.d.ts.map +1 -0
  86. package/dist/command-runner.js +84 -0
  87. package/dist/command-runner.js.map +1 -0
  88. package/dist/config.d.ts +41 -0
  89. package/dist/config.d.ts.map +1 -0
  90. package/dist/config.js +152 -0
  91. package/dist/config.js.map +1 -0
  92. package/dist/cowork.d.ts +26 -0
  93. package/dist/cowork.d.ts.map +1 -0
  94. package/dist/cowork.js +370 -0
  95. package/dist/cowork.js.map +1 -0
  96. package/dist/fs-browser.d.ts +6 -0
  97. package/dist/fs-browser.d.ts.map +1 -0
  98. package/dist/fs-browser.js +61 -0
  99. package/dist/fs-browser.js.map +1 -0
  100. package/dist/has-command.d.ts +12 -0
  101. package/dist/has-command.d.ts.map +1 -0
  102. package/dist/has-command.js +24 -0
  103. package/dist/has-command.js.map +1 -0
  104. package/dist/heartbeat.d.ts +7 -0
  105. package/dist/heartbeat.d.ts.map +1 -0
  106. package/dist/heartbeat.js +50 -0
  107. package/dist/heartbeat.js.map +1 -0
  108. package/dist/index.d.ts +2 -0
  109. package/dist/index.d.ts.map +1 -0
  110. package/dist/index.js +56 -0
  111. package/dist/index.js.map +1 -0
  112. package/dist/port-scanner.d.ts +4 -0
  113. package/dist/port-scanner.d.ts.map +1 -0
  114. package/dist/port-scanner.js +75 -0
  115. package/dist/port-scanner.js.map +1 -0
  116. package/dist/project-scanner.d.ts +15 -0
  117. package/dist/project-scanner.d.ts.map +1 -0
  118. package/dist/project-scanner.js +333 -0
  119. package/dist/project-scanner.js.map +1 -0
  120. package/dist/pty-manager.d.ts +28 -0
  121. package/dist/pty-manager.d.ts.map +1 -0
  122. package/dist/pty-manager.js +506 -0
  123. package/dist/pty-manager.js.map +1 -0
  124. package/dist/service-installer.d.ts +95 -0
  125. package/dist/service-installer.d.ts.map +1 -0
  126. package/dist/service-installer.js +911 -0
  127. package/dist/service-installer.js.map +1 -0
  128. package/dist/single-instance.d.ts +20 -0
  129. package/dist/single-instance.d.ts.map +1 -0
  130. package/dist/single-instance.js +151 -0
  131. package/dist/single-instance.js.map +1 -0
  132. package/dist/ssh-local-network.d.ts +26 -0
  133. package/dist/ssh-local-network.d.ts.map +1 -0
  134. package/dist/ssh-local-network.js +169 -0
  135. package/dist/ssh-local-network.js.map +1 -0
  136. package/dist/terminal-detect.d.ts +52 -0
  137. package/dist/terminal-detect.d.ts.map +1 -0
  138. package/dist/terminal-detect.js +147 -0
  139. package/dist/terminal-detect.js.map +1 -0
  140. package/dist/terminal-markers.d.ts +52 -0
  141. package/dist/terminal-markers.d.ts.map +1 -0
  142. package/dist/terminal-markers.js +174 -0
  143. package/dist/terminal-markers.js.map +1 -0
  144. package/dist/tmux-manager.d.ts +35 -0
  145. package/dist/tmux-manager.d.ts.map +1 -0
  146. package/dist/tmux-manager.js +274 -0
  147. package/dist/tmux-manager.js.map +1 -0
  148. package/dist/update-check.d.ts +3 -0
  149. package/dist/update-check.d.ts.map +1 -0
  150. package/dist/update-check.js +202 -0
  151. package/dist/update-check.js.map +1 -0
  152. package/dist/websocket.d.ts +8 -0
  153. package/dist/websocket.d.ts.map +1 -0
  154. package/dist/websocket.js +472 -0
  155. package/dist/websocket.js.map +1 -0
  156. package/node_modules/@dialout/shared/README.md +16 -0
  157. package/node_modules/@dialout/shared/dist/ai-chat-prefs.d.ts +8 -0
  158. package/node_modules/@dialout/shared/dist/ai-chat-prefs.d.ts.map +1 -0
  159. package/node_modules/@dialout/shared/dist/ai-chat-prefs.js +41 -0
  160. package/node_modules/@dialout/shared/dist/capabilities.d.ts +25 -0
  161. package/node_modules/@dialout/shared/dist/capabilities.d.ts.map +1 -0
  162. package/node_modules/@dialout/shared/dist/capabilities.js +2 -0
  163. package/node_modules/@dialout/shared/dist/chat-blocks.d.ts +33 -0
  164. package/node_modules/@dialout/shared/dist/chat-blocks.d.ts.map +1 -0
  165. package/node_modules/@dialout/shared/dist/chat-blocks.js +61 -0
  166. package/node_modules/@dialout/shared/dist/command-filter.d.ts +4 -0
  167. package/node_modules/@dialout/shared/dist/command-filter.d.ts.map +1 -0
  168. package/node_modules/@dialout/shared/dist/command-filter.js +49 -0
  169. package/node_modules/@dialout/shared/dist/composer-behaviour.d.ts +6 -0
  170. package/node_modules/@dialout/shared/dist/composer-behaviour.d.ts.map +1 -0
  171. package/node_modules/@dialout/shared/dist/composer-behaviour.js +24 -0
  172. package/node_modules/@dialout/shared/dist/events.d.ts +37 -0
  173. package/node_modules/@dialout/shared/dist/events.d.ts.map +1 -0
  174. package/node_modules/@dialout/shared/dist/events.js +13 -0
  175. package/node_modules/@dialout/shared/dist/index.d.ts +21 -0
  176. package/node_modules/@dialout/shared/dist/index.d.ts.map +1 -0
  177. package/node_modules/@dialout/shared/dist/index.js +37 -0
  178. package/node_modules/@dialout/shared/dist/kinds.d.ts +2 -0
  179. package/node_modules/@dialout/shared/dist/kinds.d.ts.map +1 -0
  180. package/node_modules/@dialout/shared/dist/kinds.js +2 -0
  181. package/node_modules/@dialout/shared/dist/notify.d.ts +3 -0
  182. package/node_modules/@dialout/shared/dist/notify.d.ts.map +1 -0
  183. package/node_modules/@dialout/shared/dist/notify.js +31 -0
  184. package/node_modules/@dialout/shared/dist/permission.d.ts +4 -0
  185. package/node_modules/@dialout/shared/dist/permission.d.ts.map +1 -0
  186. package/node_modules/@dialout/shared/dist/permission.js +8 -0
  187. package/node_modules/@dialout/shared/dist/scroll-pin.d.ts +3 -0
  188. package/node_modules/@dialout/shared/dist/scroll-pin.d.ts.map +1 -0
  189. package/node_modules/@dialout/shared/dist/scroll-pin.js +11 -0
  190. package/node_modules/@dialout/shared/dist/session.d.ts +19 -0
  191. package/node_modules/@dialout/shared/dist/session.d.ts.map +1 -0
  192. package/node_modules/@dialout/shared/dist/session.js +6 -0
  193. package/node_modules/@dialout/shared/dist/terminal-name.d.ts +25 -0
  194. package/node_modules/@dialout/shared/dist/terminal-name.d.ts.map +1 -0
  195. package/node_modules/@dialout/shared/dist/terminal-name.js +63 -0
  196. package/node_modules/@dialout/shared/dist/tool-appearance.d.ts +9 -0
  197. package/node_modules/@dialout/shared/dist/tool-appearance.d.ts.map +1 -0
  198. package/node_modules/@dialout/shared/dist/tool-appearance.js +30 -0
  199. package/node_modules/@dialout/shared/package.json +37 -0
  200. package/node_modules/@dialout/shared/src/ai-chat-prefs.test.ts +40 -0
  201. package/node_modules/@dialout/shared/src/ai-chat-prefs.ts +39 -0
  202. package/node_modules/@dialout/shared/src/capabilities.ts +30 -0
  203. package/node_modules/@dialout/shared/src/chat-blocks.test.ts +65 -0
  204. package/node_modules/@dialout/shared/src/chat-blocks.ts +79 -0
  205. package/node_modules/@dialout/shared/src/command-filter.test.ts +76 -0
  206. package/node_modules/@dialout/shared/src/command-filter.ts +45 -0
  207. package/node_modules/@dialout/shared/src/composer-behaviour.test.ts +31 -0
  208. package/node_modules/@dialout/shared/src/composer-behaviour.ts +22 -0
  209. package/node_modules/@dialout/shared/src/events.ts +27 -0
  210. package/node_modules/@dialout/shared/src/index.ts +32 -0
  211. package/node_modules/@dialout/shared/src/kinds.ts +5 -0
  212. package/node_modules/@dialout/shared/src/notify.test.ts +49 -0
  213. package/node_modules/@dialout/shared/src/notify.ts +30 -0
  214. package/node_modules/@dialout/shared/src/permission.ts +10 -0
  215. package/node_modules/@dialout/shared/src/scroll-pin.test.ts +23 -0
  216. package/node_modules/@dialout/shared/src/scroll-pin.ts +13 -0
  217. package/node_modules/@dialout/shared/src/session.ts +25 -0
  218. package/node_modules/@dialout/shared/src/terminal-name.ts +82 -0
  219. package/node_modules/@dialout/shared/src/tool-appearance.test.ts +41 -0
  220. package/node_modules/@dialout/shared/src/tool-appearance.ts +39 -0
  221. package/package.json +54 -14
  222. package/scripts/postinstall.js +79 -0
  223. package/scripts/prepack.js +45 -0
  224. 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"}