@agentdeck/bridge 1.0.4 → 1.0.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.
Files changed (202) hide show
  1. package/assets/fm-helper/agentdeck-fm-helper +0 -0
  2. package/dist/adapters/claude-code.d.ts.map +1 -1
  3. package/dist/adapters/claude-code.js +3 -0
  4. package/dist/adapters/claude-code.js.map +1 -1
  5. package/dist/adb-reverse.d.ts.map +1 -1
  6. package/dist/adb-reverse.js +4 -2
  7. package/dist/adb-reverse.js.map +1 -1
  8. package/dist/apme/collector.js +2 -2
  9. package/dist/apme/collector.js.map +1 -1
  10. package/dist/apme/outcome.js +2 -2
  11. package/dist/apme/outcome.js.map +1 -1
  12. package/dist/apme/runner.js +3 -3
  13. package/dist/apme/runner.js.map +1 -1
  14. package/dist/ble-sync-spawn.js +1 -1
  15. package/dist/ble-sync-spawn.js.map +1 -1
  16. package/dist/calendar.d.ts +82 -0
  17. package/dist/calendar.d.ts.map +1 -0
  18. package/dist/calendar.js +324 -0
  19. package/dist/calendar.js.map +1 -0
  20. package/dist/card-feed.d.ts +63 -5
  21. package/dist/card-feed.d.ts.map +1 -1
  22. package/dist/card-feed.js +218 -14
  23. package/dist/card-feed.js.map +1 -1
  24. package/dist/card-modules.d.ts +4 -0
  25. package/dist/card-modules.d.ts.map +1 -1
  26. package/dist/card-modules.js +5 -3
  27. package/dist/card-modules.js.map +1 -1
  28. package/dist/check-deps.js +4 -4
  29. package/dist/check-deps.js.map +1 -1
  30. package/dist/cli.d.ts +35 -0
  31. package/dist/cli.d.ts.map +1 -1
  32. package/dist/cli.js +269 -9
  33. package/dist/cli.js.map +1 -1
  34. package/dist/codex-otel.d.ts +89 -0
  35. package/dist/codex-otel.d.ts.map +1 -0
  36. package/dist/codex-otel.js +487 -0
  37. package/dist/codex-otel.js.map +1 -0
  38. package/dist/codex-rate-limits.d.ts.map +1 -1
  39. package/dist/codex-rate-limits.js +15 -3
  40. package/dist/codex-rate-limits.js.map +1 -1
  41. package/dist/daemon-server.d.ts +4 -0
  42. package/dist/daemon-server.d.ts.map +1 -1
  43. package/dist/daemon-server.js +797 -54
  44. package/dist/daemon-server.js.map +1 -1
  45. package/dist/daemon-ws-client.d.ts +108 -24
  46. package/dist/daemon-ws-client.d.ts.map +1 -1
  47. package/dist/daemon-ws-client.js +175 -39
  48. package/dist/daemon-ws-client.js.map +1 -1
  49. package/dist/daemon.js +1 -1
  50. package/dist/device-voice-reply.d.ts.map +1 -1
  51. package/dist/device-voice-reply.js +15 -3
  52. package/dist/device-voice-reply.js.map +1 -1
  53. package/dist/device-voice.d.ts +37 -0
  54. package/dist/device-voice.d.ts.map +1 -1
  55. package/dist/device-voice.js +130 -1
  56. package/dist/device-voice.js.map +1 -1
  57. package/dist/diag-analyzer.d.ts.map +1 -1
  58. package/dist/diag-analyzer.js +1 -0
  59. package/dist/diag-analyzer.js.map +1 -1
  60. package/dist/display-monitor.d.ts.map +1 -1
  61. package/dist/display-monitor.js +1 -0
  62. package/dist/display-monitor.js.map +1 -1
  63. package/dist/esp32-serial.d.ts +4 -0
  64. package/dist/esp32-serial.d.ts.map +1 -1
  65. package/dist/esp32-serial.js +6 -3
  66. package/dist/esp32-serial.js.map +1 -1
  67. package/dist/foundation-models-helper.d.ts +23 -0
  68. package/dist/foundation-models-helper.d.ts.map +1 -1
  69. package/dist/foundation-models-helper.js +32 -0
  70. package/dist/foundation-models-helper.js.map +1 -1
  71. package/dist/gateway-probe.js +1 -1
  72. package/dist/gateway-probe.js.map +1 -1
  73. package/dist/glance-frame.d.ts +64 -0
  74. package/dist/glance-frame.d.ts.map +1 -0
  75. package/dist/glance-frame.js +364 -0
  76. package/dist/glance-frame.js.map +1 -0
  77. package/dist/hook-codex-sessions.d.ts +40 -0
  78. package/dist/hook-codex-sessions.d.ts.map +1 -0
  79. package/dist/hook-codex-sessions.js +174 -0
  80. package/dist/hook-codex-sessions.js.map +1 -0
  81. package/dist/idotmatrix/idotmatrix-discover.d.ts.map +1 -1
  82. package/dist/idotmatrix/idotmatrix-discover.js +7 -4
  83. package/dist/idotmatrix/idotmatrix-discover.js.map +1 -1
  84. package/dist/idotmatrix/idotmatrix-settings.d.ts +15 -0
  85. package/dist/idotmatrix/idotmatrix-settings.d.ts.map +1 -1
  86. package/dist/idotmatrix/idotmatrix-settings.js +21 -0
  87. package/dist/idotmatrix/idotmatrix-settings.js.map +1 -1
  88. package/dist/index.d.ts +7 -0
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +88 -7
  91. package/dist/index.js.map +1 -1
  92. package/dist/linux-service.d.ts +52 -0
  93. package/dist/linux-service.d.ts.map +1 -0
  94. package/dist/linux-service.js +206 -0
  95. package/dist/linux-service.js.map +1 -0
  96. package/dist/logger.d.ts +6 -0
  97. package/dist/logger.d.ts.map +1 -1
  98. package/dist/logger.js +15 -0
  99. package/dist/logger.js.map +1 -1
  100. package/dist/mdns-discover.d.ts +19 -0
  101. package/dist/mdns-discover.d.ts.map +1 -0
  102. package/dist/mdns-discover.js +109 -0
  103. package/dist/mdns-discover.js.map +1 -0
  104. package/dist/model-catalog.d.ts.map +1 -1
  105. package/dist/model-catalog.js +1 -0
  106. package/dist/model-catalog.js.map +1 -1
  107. package/dist/modules/adb-module.js +1 -1
  108. package/dist/modules/adb-module.js.map +1 -1
  109. package/dist/output-parser.d.ts +9 -0
  110. package/dist/output-parser.d.ts.map +1 -1
  111. package/dist/output-parser.js +67 -16
  112. package/dist/output-parser.js.map +1 -1
  113. package/dist/passive-observer.d.ts +57 -8
  114. package/dist/passive-observer.d.ts.map +1 -1
  115. package/dist/passive-observer.js +210 -74
  116. package/dist/passive-observer.js.map +1 -1
  117. package/dist/pixoo/pixoo-bridge.d.ts.map +1 -1
  118. package/dist/pixoo/pixoo-bridge.js +47 -6
  119. package/dist/pixoo/pixoo-bridge.js.map +1 -1
  120. package/dist/pixoo/pixoo-renderer.d.ts +2 -1
  121. package/dist/pixoo/pixoo-renderer.d.ts.map +1 -1
  122. package/dist/pixoo/pixoo-renderer.js +137 -8
  123. package/dist/pixoo/pixoo-renderer.js.map +1 -1
  124. package/dist/pocket-autonomy.d.ts +78 -0
  125. package/dist/pocket-autonomy.d.ts.map +1 -0
  126. package/dist/pocket-autonomy.js +529 -0
  127. package/dist/pocket-autonomy.js.map +1 -0
  128. package/dist/pty-manager.d.ts.map +1 -1
  129. package/dist/pty-manager.js +3 -2
  130. package/dist/pty-manager.js.map +1 -1
  131. package/dist/python-ble-runtime.d.ts +2 -0
  132. package/dist/python-ble-runtime.d.ts.map +1 -1
  133. package/dist/python-ble-runtime.js +2 -1
  134. package/dist/python-ble-runtime.js.map +1 -1
  135. package/dist/remote-sessions.d.ts +64 -0
  136. package/dist/remote-sessions.d.ts.map +1 -0
  137. package/dist/remote-sessions.js +81 -0
  138. package/dist/remote-sessions.js.map +1 -0
  139. package/dist/review-runner.js +2 -2
  140. package/dist/review-runner.js.map +1 -1
  141. package/dist/session-aggregator.d.ts +2 -0
  142. package/dist/session-aggregator.d.ts.map +1 -1
  143. package/dist/session-aggregator.js +6 -1
  144. package/dist/session-aggregator.js.map +1 -1
  145. package/dist/session-focus-relay.d.ts +47 -1
  146. package/dist/session-focus-relay.d.ts.map +1 -1
  147. package/dist/session-focus-relay.js +130 -15
  148. package/dist/session-focus-relay.js.map +1 -1
  149. package/dist/session-push-channel.d.ts +31 -0
  150. package/dist/session-push-channel.d.ts.map +1 -0
  151. package/dist/session-push-channel.js +94 -0
  152. package/dist/session-push-channel.js.map +1 -0
  153. package/dist/session-registry.d.ts +126 -0
  154. package/dist/session-registry.d.ts.map +1 -1
  155. package/dist/session-registry.js +180 -3
  156. package/dist/session-registry.js.map +1 -1
  157. package/dist/subagent-timeline.d.ts +34 -0
  158. package/dist/subagent-timeline.d.ts.map +1 -0
  159. package/dist/subagent-timeline.js +156 -0
  160. package/dist/subagent-timeline.js.map +1 -0
  161. package/dist/timebox/timebox-discover.js +1 -1
  162. package/dist/timebox/timebox-discover.js.map +1 -1
  163. package/dist/tui/gauge.d.ts +4 -2
  164. package/dist/tui/gauge.d.ts.map +1 -1
  165. package/dist/tui/gauge.js +8 -4
  166. package/dist/tui/gauge.js.map +1 -1
  167. package/dist/tui/renderer.d.ts.map +1 -1
  168. package/dist/tui/renderer.js +28 -0
  169. package/dist/tui/renderer.js.map +1 -1
  170. package/dist/types.d.ts +1 -1
  171. package/dist/types.d.ts.map +1 -1
  172. package/dist/types.js.map +1 -1
  173. package/dist/usage-api.d.ts +43 -0
  174. package/dist/usage-api.d.ts.map +1 -1
  175. package/dist/usage-api.js +114 -9
  176. package/dist/usage-api.js.map +1 -1
  177. package/dist/usage-event.d.ts +19 -0
  178. package/dist/usage-event.d.ts.map +1 -1
  179. package/dist/usage-event.js +35 -0
  180. package/dist/usage-event.js.map +1 -1
  181. package/dist/utils/project-name.d.ts.map +1 -1
  182. package/dist/utils/project-name.js +1 -0
  183. package/dist/utils/project-name.js.map +1 -1
  184. package/dist/version-check.d.ts.map +1 -1
  185. package/dist/version-check.js +3 -2
  186. package/dist/version-check.js.map +1 -1
  187. package/dist/voice-assistant.d.ts.map +1 -1
  188. package/dist/voice-assistant.js +2 -1
  189. package/dist/voice-assistant.js.map +1 -1
  190. package/dist/voice.d.ts.map +1 -1
  191. package/dist/voice.js +1 -0
  192. package/dist/voice.js.map +1 -1
  193. package/dist/weather.d.ts +72 -0
  194. package/dist/weather.d.ts.map +1 -0
  195. package/dist/weather.js +206 -0
  196. package/dist/weather.js.map +1 -0
  197. package/dist/windows-service.js +5 -5
  198. package/dist/windows-service.js.map +1 -1
  199. package/fm-helper/AgentDeckFMHelper.swift +200 -0
  200. package/package.json +15 -13
  201. package/src/idotmatrix/identity_generated.py +50 -0
  202. package/src/idotmatrix/scan.py +33 -13
@@ -0,0 +1,52 @@
1
+ export declare const SERVICE_NAME = "agentdeck-daemon";
2
+ export declare function getDaemonNodeTarget(): {
3
+ node: string;
4
+ cliJs: string;
5
+ };
6
+ /**
7
+ * The daemon's data directory — the same resolver the daemon itself uses
8
+ * (`AGENTDECK_DATA_DIR` override, else `~/.agentdeck`). Kept byte-identical to
9
+ * the inline resolution in session-registry.ts / apme/store.ts so the unit's
10
+ * WorkingDirectory always matches where the daemon actually reads/writes.
11
+ */
12
+ export declare function getDataDir(): string;
13
+ /**
14
+ * Validate the AGENTDECK_DATA_DIR override for use in a systemd unit. Because
15
+ * `WorkingDirectory=` is verbatim, values that are relative, `~`, leading-`-`
16
+ * (systemd's ignore-missing prefix), or edge-whitespace-padded (trimmed by the
17
+ * unit parser, hence unrepresentable) would silently mean something else —
18
+ * reject them with an actionable error instead.
19
+ */
20
+ export declare function validateDataDirOverride(value: string): void;
21
+ /** Render one quoted `Environment=` assignment ($ stays literal there). */
22
+ export declare function escapeUnitEnvAssignment(name: string, value: string): string;
23
+ /** Quote one ExecStart word ($ must be doubled — expanded even inside quotes). */
24
+ export declare function escapeExecWord(word: string): string;
25
+ /** ~/.config/systemd/user (honors $XDG_CONFIG_HOME). */
26
+ export declare function getUnitDir(): string;
27
+ /** Full path to the installed unit file. */
28
+ export declare function getUnitPath(): string;
29
+ export declare function buildUnitFile(opts?: {
30
+ node?: string;
31
+ cliJs?: string;
32
+ dataDirOverride?: string;
33
+ }): string;
34
+ /**
35
+ * True if `systemctl --user` is usable (systemd present + a user D-Bus session).
36
+ * Guards non-systemd distros and headless contexts without a user manager.
37
+ */
38
+ export declare function hasSystemctl(): boolean;
39
+ /** True if the unit file is installed on disk. */
40
+ export declare function unitExists(): boolean;
41
+ /**
42
+ * Write the unit file and enable it. Throws if systemctl fails (e.g. no user
43
+ * D-Bus session).
44
+ */
45
+ export declare function installUnit(): void;
46
+ /** Start the unit now (so no re-login is required). */
47
+ export declare function startUnit(): void;
48
+ /** Stop the unit (best-effort). */
49
+ export declare function stopUnit(): void;
50
+ /** Disable + stop the unit, remove the file, and reload. Idempotent. */
51
+ export declare function disableUnit(): void;
52
+ //# sourceMappingURL=linux-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linux-service.d.ts","sourceRoot":"","sources":["../src/linux-service.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,YAAY,qBAAqB,CAAC;AAO/C,wBAAgB,mBAAmB,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAGrE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AA6BD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAc3D;AAYD,2EAA2E;AAC3E,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG3E;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED,wDAAwD;AACxD,wBAAgB,UAAU,IAAI,MAAM,CAGnC;AAED,4CAA4C;AAC5C,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAgCxG;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAYtC;AAED,kDAAkD;AAClD,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAYlC;AAED,uDAAuD;AACvD,wBAAgB,SAAS,IAAI,IAAI,CAEhC;AAED,mCAAmC;AACnC,wBAAgB,QAAQ,IAAI,IAAI,CAE/B;AAED,wEAAwE;AACxE,wBAAgB,WAAW,IAAI,IAAI,CAIlC"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * Linux daemon autostart via a systemd `--user` unit (default.target).
3
+ *
4
+ * The macOS LaunchAgent / Windows Scheduled-Task analog on Linux is a per-user
5
+ * systemd unit installed under ~/.config/systemd/user. It runs in the user's
6
+ * session, needs no root, and `Restart=on-failure` mirrors LaunchAgent KeepAlive
7
+ * / the Windows RestartOnFailure. `--foreground` makes the unit process BE the
8
+ * daemon so systemd supervises the real process.
9
+ *
10
+ * Note: a user unit only auto-starts on graphical/SSH login. For boot-without-
11
+ * login (headless servers), the user must run `loginctl enable-linger $USER`
12
+ * once — we surface that as an informational hint rather than doing it here,
13
+ * since it can require elevated privileges.
14
+ *
15
+ * The pure unit-file builder is unit-tested (cross-platform); the `systemctl`
16
+ * calls are integration-only (real Linux host + side effects).
17
+ */
18
+ import { writeFileSync, unlinkSync, mkdirSync, existsSync } from 'fs';
19
+ import { homedir } from 'os';
20
+ import { dirname, join } from 'path';
21
+ import { execSync } from 'child_process';
22
+ import { fileURLToPath } from 'url';
23
+ export const SERVICE_NAME = 'agentdeck-daemon';
24
+ const UNIT_FILE = `${SERVICE_NAME}.service`;
25
+ // Resolve node + cli.js directly rather than the `agentdeck` npm shim: the
26
+ // global bin may be a wrapper script, and pointing systemd at the real node
27
+ // binary + cli.js keeps ExecStart stable across PATH changes. process.execPath
28
+ // is the running node; cli.js sits next to this module in the dist dir.
29
+ export function getDaemonNodeTarget() {
30
+ const distDir = dirname(fileURLToPath(import.meta.url));
31
+ return { node: process.execPath, cliJs: join(distDir, 'cli.js') };
32
+ }
33
+ /**
34
+ * The daemon's data directory — the same resolver the daemon itself uses
35
+ * (`AGENTDECK_DATA_DIR` override, else `~/.agentdeck`). Kept byte-identical to
36
+ * the inline resolution in session-registry.ts / apme/store.ts so the unit's
37
+ * WorkingDirectory always matches where the daemon actually reads/writes.
38
+ */
39
+ export function getDataDir() {
40
+ return process.env.AGENTDECK_DATA_DIR || join(homedir(), '.agentdeck');
41
+ }
42
+ // ── Unit-file escaping ────────────────────────────────────────────────
43
+ //
44
+ // The data-dir override is user-controlled and travels through a file format
45
+ // with its own quoting rules, so every generated value is escaped for the
46
+ // exact directive it lands in. The rules differ per directive:
47
+ // - Environment= word-splits with double-quote grouping; `\` and `"` need
48
+ // C-style escaping inside quotes; `%` specifiers expand (→ `%%`); `$` is
49
+ // NOT expanded and stays literal.
50
+ // - ExecStart= word-splits like Environment=, but ADDITIONALLY expands
51
+ // `$VAR`/`${VAR}` even inside double quotes → a literal `$` must be `$$`.
52
+ // - WorkingDirectory= takes the rest of the line verbatim (no word split,
53
+ // no unquoting — quotes would become literal path bytes); `%` specifiers
54
+ // still expand (`%h` is the documented home-dir idiom) → only `%%`.
55
+ // Expected bytes are pinned in linux-service.test.ts and were verified against
56
+ // real systemd (Debian 13) via this PR's user-unit install test.
57
+ /** Throw if a value cannot be represented on a single unit-file line. */
58
+ function assertUnitLineSafe(value, what) {
59
+ const ctrl = /[\x00-\x1f\x7f]/.exec(value);
60
+ if (ctrl) {
61
+ throw new Error(`${what} contains a control character (code ${ctrl[0].charCodeAt(0)}) — ` +
62
+ 'it cannot be written safely into a systemd unit file');
63
+ }
64
+ }
65
+ /**
66
+ * Validate the AGENTDECK_DATA_DIR override for use in a systemd unit. Because
67
+ * `WorkingDirectory=` is verbatim, values that are relative, `~`, leading-`-`
68
+ * (systemd's ignore-missing prefix), or edge-whitespace-padded (trimmed by the
69
+ * unit parser, hence unrepresentable) would silently mean something else —
70
+ * reject them with an actionable error instead.
71
+ */
72
+ export function validateDataDirOverride(value) {
73
+ assertUnitLineSafe(value, 'AGENTDECK_DATA_DIR');
74
+ if (value !== value.trim()) {
75
+ throw new Error('AGENTDECK_DATA_DIR has leading/trailing whitespace — the systemd unit parser trims it, ' +
76
+ 'so the path cannot be represented in the unit. Use a path without edge whitespace.');
77
+ }
78
+ if (!value.startsWith('/')) {
79
+ throw new Error(`AGENTDECK_DATA_DIR must be an absolute path to be usable in a systemd unit (got '${value}') — ` +
80
+ "'~', relative paths, and '-'-prefixed values mean something else to systemd.");
81
+ }
82
+ }
83
+ /** Escape for the inside of a double-quoted unit-file string. */
84
+ function escapeQuoted(value) {
85
+ return value.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
86
+ }
87
+ /** `%` → `%%` — systemd expands % specifiers in Environment/Exec/path settings. */
88
+ function escapeSpecifiers(value) {
89
+ return value.replace(/%/g, '%%');
90
+ }
91
+ /** Render one quoted `Environment=` assignment ($ stays literal there). */
92
+ export function escapeUnitEnvAssignment(name, value) {
93
+ assertUnitLineSafe(value, name);
94
+ return `"${name}=${escapeSpecifiers(escapeQuoted(value))}"`;
95
+ }
96
+ /** Quote one ExecStart word ($ must be doubled — expanded even inside quotes). */
97
+ export function escapeExecWord(word) {
98
+ assertUnitLineSafe(word, 'ExecStart path');
99
+ return `"${escapeSpecifiers(escapeQuoted(word)).replace(/\$/g, '$$$$')}"`;
100
+ }
101
+ /** ~/.config/systemd/user (honors $XDG_CONFIG_HOME). */
102
+ export function getUnitDir() {
103
+ const configHome = process.env.XDG_CONFIG_HOME || join(homedir(), '.config');
104
+ return join(configHome, 'systemd', 'user');
105
+ }
106
+ /** Full path to the installed unit file. */
107
+ export function getUnitPath() {
108
+ return join(getUnitDir(), UNIT_FILE);
109
+ }
110
+ export function buildUnitFile(opts) {
111
+ const { node, cliJs } = { ...getDaemonNodeTarget(), ...opts };
112
+ // Single override source: BOTH WorkingDirectory= and the Environment= line
113
+ // derive from the same value, so the unit can never chdir into one directory
114
+ // while the daemon process resolves another (the split-state failure mode).
115
+ const override = opts?.dataDirOverride ?? process.env.AGENTDECK_DATA_DIR ?? '';
116
+ if (override)
117
+ validateDataDirOverride(override);
118
+ const workingDir = override || join(homedir(), '.agentdeck');
119
+ // A systemd user manager does not inherit the install shell's environment
120
+ // after login/boot, so an explicitly selected AGENTDECK_DATA_DIR must be
121
+ // persisted into the unit — otherwise the daemon falls back to ~/.agentdeck
122
+ // while systemd merely chdirs into the override. Emitted only when set.
123
+ const envLine = override
124
+ ? `Environment=${escapeUnitEnvAssignment('AGENTDECK_DATA_DIR', override)}\n`
125
+ : '';
126
+ // Both ExecStart words quoted so paths with spaces survive; --foreground so
127
+ // the unit process IS the daemon (lets Restart=on-failure track it).
128
+ return `[Unit]
129
+ Description=AgentDeck monitoring daemon
130
+ After=network-online.target
131
+ Wants=network-online.target
132
+
133
+ [Service]
134
+ Type=simple
135
+ ExecStart=${escapeExecWord(node)} ${escapeExecWord(cliJs)} daemon start --foreground
136
+ WorkingDirectory=${escapeSpecifiers(workingDir)}
137
+ ${envLine}Restart=on-failure
138
+ RestartSec=5
139
+
140
+ [Install]
141
+ WantedBy=default.target
142
+ `;
143
+ }
144
+ /**
145
+ * True if `systemctl --user` is usable (systemd present + a user D-Bus session).
146
+ * Guards non-systemd distros and headless contexts without a user manager.
147
+ */
148
+ export function hasSystemctl() {
149
+ try {
150
+ // `is-system-running` prints a status word and exits; even a non-zero exit
151
+ // (degraded/starting) means the user manager answered. A missing binary or
152
+ // absent user bus throws.
153
+ execSync('systemctl --user is-system-running', { stdio: 'pipe' });
154
+ return true;
155
+ }
156
+ catch (e) {
157
+ // Exit codes >0 with output still mean systemctl responded (e.g. "degraded").
158
+ const hasOutput = Boolean(e.stdout?.length);
159
+ return hasOutput;
160
+ }
161
+ }
162
+ /** True if the unit file is installed on disk. */
163
+ export function unitExists() {
164
+ return existsSync(getUnitPath());
165
+ }
166
+ /**
167
+ * Write the unit file and enable it. Throws if systemctl fails (e.g. no user
168
+ * D-Bus session).
169
+ */
170
+ export function installUnit() {
171
+ // Build (and thereby validate any AGENTDECK_DATA_DIR override) BEFORE any
172
+ // side effect, so a rejected install leaves no stray directory behind.
173
+ const unit = buildUnitFile();
174
+ // Ensure the unit's WorkingDirectory exists — on a fresh install ~/.agentdeck
175
+ // (or the AGENTDECK_DATA_DIR override) may not exist yet, and systemd fails at
176
+ // the CHDIR step before Node starts if it's missing.
177
+ mkdirSync(getDataDir(), { recursive: true });
178
+ mkdirSync(getUnitDir(), { recursive: true });
179
+ writeFileSync(getUnitPath(), unit, 'utf-8');
180
+ execSync('systemctl --user daemon-reload', { stdio: 'pipe' });
181
+ execSync(`systemctl --user enable ${UNIT_FILE}`, { stdio: 'pipe' });
182
+ }
183
+ /** Start the unit now (so no re-login is required). */
184
+ export function startUnit() {
185
+ execSync(`systemctl --user start ${UNIT_FILE}`, { stdio: 'pipe' });
186
+ }
187
+ /** Stop the unit (best-effort). */
188
+ export function stopUnit() {
189
+ execSync(`systemctl --user stop ${UNIT_FILE}`, { stdio: 'pipe' });
190
+ }
191
+ /** Disable + stop the unit, remove the file, and reload. Idempotent. */
192
+ export function disableUnit() {
193
+ try {
194
+ execSync(`systemctl --user disable --now ${UNIT_FILE}`, { stdio: 'pipe' });
195
+ }
196
+ catch { /* not enabled */ }
197
+ try {
198
+ unlinkSync(getUnitPath());
199
+ }
200
+ catch { /* already gone */ }
201
+ try {
202
+ execSync('systemctl --user daemon-reload', { stdio: 'pipe' });
203
+ }
204
+ catch { /* best-effort */ }
205
+ }
206
+ //# sourceMappingURL=linux-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linux-service.js","sourceRoot":"","sources":["../src/linux-service.ts"],"names":[],"mappings":"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"}
package/dist/logger.d.ts CHANGED
@@ -17,4 +17,10 @@ export declare function logTagged(tag: string, ...args: unknown[]): void;
17
17
  export declare function logError(...args: unknown[]): void;
18
18
  /** Debug logging — only goes to file when --debug is enabled */
19
19
  export declare function debug(tag: string, ...args: unknown[]): void;
20
+ /**
21
+ * Debug logging for events that repeat on a timer — an unrecognized OTel span
22
+ * batch, a periodic probe failure. Emits at most once per `minIntervalMs` per
23
+ * `key`, so `--debug` stays readable instead of thousands of lines a minute.
24
+ */
25
+ export declare function debugThrottled(tag: string, key: string, minIntervalMs: number, ...args: unknown[]): void;
20
26
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,SAAwC,GAAG,IAAI,CAIjF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEjD;AAYD,kFAAkF;AAClF,wBAAgB,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAS5C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAS/D;AAED,6EAA6E;AAC7E,wBAAgB,QAAQ,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAOjD;AAED,gEAAgE;AAChE,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAI3D"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,SAAwC,GAAG,IAAI,CAIjF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEjD;AAYD,kFAAkF;AAClF,wBAAgB,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAS5C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAS/D;AAED,6EAA6E;AAC7E,wBAAgB,QAAQ,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAOjD;AAED,gEAAgE;AAChE,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAI3D;AAID;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,EACrB,GAAG,IAAI,EAAE,OAAO,EAAE,GACjB,IAAI,CAMN"}
package/dist/logger.js CHANGED
@@ -68,4 +68,19 @@ export function debug(tag, ...args) {
68
68
  const ts = new Date().toISOString().slice(11, 23); // HH:MM:SS.mmm
69
69
  debugStream.write(`${ts} [${tag}] ${args.map(String).join(' ')}\n`);
70
70
  }
71
+ const throttledDebugAt = new Map();
72
+ /**
73
+ * Debug logging for events that repeat on a timer — an unrecognized OTel span
74
+ * batch, a periodic probe failure. Emits at most once per `minIntervalMs` per
75
+ * `key`, so `--debug` stays readable instead of thousands of lines a minute.
76
+ */
77
+ export function debugThrottled(tag, key, minIntervalMs, ...args) {
78
+ if (!debugEnabled || !debugStream)
79
+ return;
80
+ const now = Date.now();
81
+ if (now - (throttledDebugAt.get(key) ?? 0) < minIntervalMs)
82
+ return;
83
+ throttledDebugAt.set(key, now);
84
+ debug(tag, ...args);
85
+ }
71
86
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export interface DiscoveredDaemon {
2
+ host: string;
3
+ port: number;
4
+ token?: string;
5
+ projectName?: string;
6
+ /** Daemon advertises same-socket reverse control (always true for confirmed
7
+ * candidates — daemons without it are filtered during the /health confirm). */
8
+ sameSocketControl?: boolean;
9
+ }
10
+ /**
11
+ * Browse the LAN for AgentDeck daemons. Collects services for `timeoutMs`, then
12
+ * confirms each via `/health` (keeps only `mode === 'daemon'`). A `hostHint`
13
+ * floats a matching candidate to the front of the list.
14
+ */
15
+ export declare function discoverDaemons(opts?: {
16
+ timeoutMs?: number;
17
+ hostHint?: string;
18
+ }): Promise<DiscoveredDaemon[]>;
19
+ //# sourceMappingURL=mdns-discover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mdns-discover.d.ts","sourceRoot":"","sources":["../src/mdns-discover.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;oFACgF;IAChF,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAmBD;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA0DnH"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * mDNS/Bonjour browser — the consume side of `mdns.ts` (which only publishes).
3
+ *
4
+ * Lets a session bridge find a daemon hub on the LAN the same way the iOS and
5
+ * Android apps do: browse `_agentdeck._tcp`, read the TXT record, then confirm
6
+ * each candidate with a `/health` GET (which also yields the pairing token when
7
+ * the TXT omitted it). Mirrors `apple/AgentDeck/Net/BridgeDiscovery.swift`.
8
+ *
9
+ * Used only on the opt-in remote-attach path (`--remote-daemon`); the default
10
+ * local-only flow never imports this module.
11
+ */
12
+ import Bonjour from 'bonjour-service';
13
+ import { debug } from './logger.js';
14
+ import { probeHealthAt } from './session-registry.js';
15
+ /** Reject addresses that can't be reached from another device. */
16
+ function isUsableAddress(addr) {
17
+ if (!addr)
18
+ return false;
19
+ if (addr.startsWith('127.') || addr === '::1')
20
+ return false; // loopback
21
+ if (addr.startsWith('169.254.'))
22
+ return false; // IPv4 link-local
23
+ if (/^fe80:/i.test(addr))
24
+ return false; // IPv6 link-local
25
+ return true;
26
+ }
27
+ /** Coerce a bonjour-service TXT value (string | Buffer | undefined) to string. */
28
+ function txtStr(v) {
29
+ if (v == null)
30
+ return undefined;
31
+ if (typeof v === 'string')
32
+ return v;
33
+ if (v instanceof Buffer)
34
+ return v.toString('utf-8');
35
+ return String(v);
36
+ }
37
+ /**
38
+ * Browse the LAN for AgentDeck daemons. Collects services for `timeoutMs`, then
39
+ * confirms each via `/health` (keeps only `mode === 'daemon'`). A `hostHint`
40
+ * floats a matching candidate to the front of the list.
41
+ */
42
+ export async function discoverDaemons(opts) {
43
+ const timeoutMs = opts?.timeoutMs ?? 2500;
44
+ const instance = new Bonjour();
45
+ // Dedup by host:port — the same daemon shows up on every interface.
46
+ const candidates = new Map();
47
+ try {
48
+ await new Promise((resolve) => {
49
+ const browser = instance.find({ type: 'agentdeck' }, (service) => {
50
+ try {
51
+ const port = Number(txtStr(service.txt?.port)) || service.port;
52
+ if (!port)
53
+ return;
54
+ const txtToken = txtStr(service.txt?.token);
55
+ const project = txtStr(service.txt?.project);
56
+ // Prefer a resolvable IP from the service addresses; fall back to the
57
+ // TXT `ip` the daemon self-reported (may be stale, but better than nothing).
58
+ const addrs = (service.addresses ?? []).filter(isUsableAddress);
59
+ const ipv4 = addrs.find((a) => !a.includes(':'));
60
+ const host = ipv4 ?? addrs[0] ?? txtStr(service.txt?.ip);
61
+ if (!host || !isUsableAddress(host))
62
+ return;
63
+ candidates.set(`${host}:${port}`, { host, port, txtToken, project });
64
+ }
65
+ catch (err) {
66
+ debug('mDNS', `discover: bad service record ignored (${String(err)})`);
67
+ }
68
+ });
69
+ const timer = setTimeout(() => {
70
+ try {
71
+ browser.stop();
72
+ }
73
+ catch { /* ignore */ }
74
+ resolve();
75
+ }, timeoutMs);
76
+ timer.unref?.();
77
+ });
78
+ }
79
+ finally {
80
+ try {
81
+ instance.destroy();
82
+ }
83
+ catch { /* ignore */ }
84
+ }
85
+ // Confirm reachability + resolve token from /health (the daemon's pairingToken
86
+ // is authoritative; the TXT token can lag a token rotation). Candidates that
87
+ // don't advertise sameSocketControl (e.g. the Swift App Store daemon) are
88
+ // dropped here: selecting one would register a remote session the daemon has
89
+ // no control frames to drive — it must never be auto-selected.
90
+ const confirmed = [];
91
+ await Promise.all([...candidates.values()].map(async (c) => {
92
+ const health = await probeHealthAt(c.host, c.port);
93
+ if (health?.mode !== 'daemon')
94
+ return;
95
+ if (health.sameSocketControl !== true) {
96
+ debug('mDNS', `discover: ${c.host}:${c.port} lacks sameSocketControl — skipped`);
97
+ return;
98
+ }
99
+ const token = typeof health.pairingToken === 'string' ? health.pairingToken : c.txtToken;
100
+ confirmed.push({ host: c.host, port: c.port, token, projectName: c.project, sameSocketControl: true });
101
+ }));
102
+ // Float an explicit host hint to the front so callers can pin a node.
103
+ if (opts?.hostHint) {
104
+ confirmed.sort((a, b) => (a.host === opts.hostHint ? -1 : b.host === opts.hostHint ? 1 : 0));
105
+ }
106
+ debug('mDNS', `discover: ${confirmed.length} daemon(s) on LAN`);
107
+ return confirmed;
108
+ }
109
+ //# sourceMappingURL=mdns-discover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mdns-discover.js","sourceRoot":"","sources":["../src/mdns-discover.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../src/model-catalog.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGpD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA0CD;;;;GAIG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAAC,GAAG,EAAE,aAAa,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,CA6ChH;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMlE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAI3C"}
1
+ {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../src/model-catalog.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGpD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA0CD;;;;GAIG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAAC,GAAG,EAAE,aAAa,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,CA8ChH;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMlE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAI3C"}
@@ -52,6 +52,7 @@ export async function fetchModelCatalog() {
52
52
  timeout: 5000,
53
53
  encoding: 'utf-8',
54
54
  env: { ...process.env, PATH: augmentedPath() },
55
+ windowsHide: true,
55
56
  }, (err, stdout) => {
56
57
  fetchPromise = null;
57
58
  if (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"model-catalog.js","sourceRoot":"","sources":["../src/model-catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-catalog.js","sourceRoot":"","sources":["../src/model-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAkBlD,QAAQ;AACR,IAAI,aAAa,GAA+B,IAAI,CAAC;AACrD,IAAI,SAAS,GAA2B,IAAI,CAAC;AAC7C,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,MAAM,YAAY,GAAG,MAAM,CAAC;AAE5B,IAAI,YAAY,GAAkF,IAAI,CAAC;AAEvG;;;;;GAKG;AACH,SAAS,SAAS,CAAC,IAAc;IAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC5C,IAAI,KAAK;YAAE,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,EAA0B,CAAC;IACnE,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,MAAuB;IACxC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxB,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAC7B,SAAS,EAAE,CAAC,CAAC,SAAS,KAAK,KAAK;KACjC,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,aAAa,IAAI,SAAS,IAAI,GAAG,GAAG,SAAS,GAAG,YAAY,EAAE,CAAC;QACjE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,YAAY,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACrC,QAAQ,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;YACjD,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,OAAO;YACjB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE;YAC9C,WAAW,EAAE,IAAI;SAClB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YACjB,YAAY,GAAG,IAAI,CAAC;YACpB,IAAI,GAAG,EAAE,CAAC;gBACR,KAAK,CAAC,eAAe,EAAE,oBAAoB,GAAG,EAAE,CAAC,CAAC;gBAClD,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAoB,CAAC;gBAC5D,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBACpD,KAAK,CAAC,eAAe,EAAE,8BAA8B,CAAC,CAAC;oBACvD,OAAO,CAAC,IAAI,CAAC,CAAC;oBACd,OAAO;gBACT,CAAC;gBAED,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC1B,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACzC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAEvB,KAAK,CAAC,eAAe,EAAE,WAAW,aAAa,CAAC,MAAM,qBAAqB,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC;gBAC/I,OAAO,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;YACtD,CAAC;YAAC,OAAO,QAAQ,EAAE,CAAC;gBAClB,KAAK,CAAC,eAAe,EAAE,4BAA4B,QAAQ,EAAE,CAAC,CAAC;gBAC/D,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,MAAM,OAAO,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAC1C,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACvE,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC;IACnD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,aAAa,GAAG,IAAI,CAAC;IACrB,SAAS,GAAG,IAAI,CAAC;IACjB,SAAS,GAAG,CAAC,CAAC;AAChB,CAAC"}
@@ -16,7 +16,7 @@ export class AdbModule {
16
16
  // auto: check if adb is available. Use `adb version` instead of `which`
17
17
  // so detection works on Windows too (which lacks `which`).
18
18
  try {
19
- execSync('adb version', { stdio: 'pipe', timeout: 2000 });
19
+ execSync('adb version', { stdio: 'pipe', timeout: 2000, windowsHide: true });
20
20
  return true;
21
21
  }
22
22
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"adb-module.js","sourceRoot":"","sources":["../../src/modules/adb-module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;;GAGG;AACH,MAAM,OAAO,SAAS;IACX,IAAI,GAAG,KAAK,CAAC;IACd,IAAI,GAAG,CAAC,CAAC;IACT,WAAW,GAAwB,IAAI,CAAC;IAEhD,KAAK,CAAC,cAAc,CAAC,MAAwB;QAC3C,IAAI,MAAM,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;QACnC,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACjC,wEAAwE;QACxE,2DAA2D;QAC3D,IAAI,CAAC;YACH,QAAQ,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAkB;QAC5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;CACF"}
1
+ {"version":3,"file":"adb-module.js","sourceRoot":"","sources":["../../src/modules/adb-module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;;GAGG;AACH,MAAM,OAAO,SAAS;IACX,IAAI,GAAG,KAAK,CAAC;IACd,IAAI,GAAG,CAAC,CAAC;IACT,WAAW,GAAwB,IAAI,CAAC;IAEhD,KAAK,CAAC,cAAc,CAAC,MAAwB;QAC3C,IAAI,MAAM,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;QACnC,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACjC,wEAAwE;QACxE,2DAA2D;QAC3D,IAAI,CAAC;YACH,QAAQ,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7E,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAkB;QAC5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;CACF"}
@@ -19,6 +19,8 @@ export declare class OutputParser extends EventEmitter {
19
19
  private lastCursorIndex;
20
20
  private pendingAnsi;
21
21
  private interactiveCooldown;
22
+ private interactivePromptActive;
23
+ private interactivePromptNavigable;
22
24
  private remoteUrl;
23
25
  feed(rawData: string): void;
24
26
  private processFeed;
@@ -80,6 +82,13 @@ export declare class OutputParser extends EventEmitter {
80
82
  private resetOptionTimer;
81
83
  /** Brief cooldown after permission/diff emit or navigation — prevents false idle from PTY echo */
82
84
  startInteractiveCooldown(): void;
85
+ /**
86
+ * Observe input forwarded to the managed PTY. Navigable prompts remain active
87
+ * through arrow-key movement and resolve on Enter/Esc/Ctrl+C. Shortcut-style
88
+ * prompts resolve on any non-navigation input.
89
+ */
90
+ notifyUserInput(data: string): void;
91
+ private clearInteractivePrompt;
83
92
  private resetInteractiveCooldown;
84
93
  /**
85
94
  * Pre-seed the project name resolved by the bridge (git-aware). With a
@@ -1 +1 @@
1
- {"version":3,"file":"output-parser.d.ts","sourceRoot":"","sources":["../src/output-parser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AA8ItC,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,WAAW,CAAuB;IAC1C,2EAA2E;IAC3E,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,WAAW,CAAuB;IAG1C,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe,CAA8C;IAErE,OAAO,CAAC,oBAAoB,CAA8C;IAC1E,OAAO,CAAC,mBAAmB,CAAuB;IAElD,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAM;IAGzB,OAAO,CAAC,mBAAmB,CAA8C;IACzE,OAAO,CAAC,SAAS,CAAuB;IAExC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAqB3B,OAAO,CAAC,WAAW;IAmCnB,0FAA0F;IAC1F,OAAO,CAAC,eAAe;IAqEvB,wDAAwD;IACxD,OAAO,CAAC,kBAAkB;IAgE1B,6CAA6C;IAC7C,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,cAAc;IAoTtB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,cAAc;IAuCtB,OAAO,CAAC,mBAAmB;IAmB3B,iFAAiF;IACjF,oBAAoB,IAAI,IAAI;IAa5B,sEAAsE;IACtE,OAAO,CAAC,sBAAsB;IAuB9B;;;sFAGkF;IAClF,OAAO,CAAC,0BAA0B;IAYlC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,mBAAmB;IAsC3B,8DAA8D;IAC9D,OAAO,CAAC,gBAAgB;IAoBxB,qDAAqD;IACrD,OAAO,CAAC,aAAa;IAYrB,+FAA+F;IAC/F,OAAO,CAAC,mBAAmB;IAK3B,oFAAoF;IACpF,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,YAAY;IAuJpB,OAAO,CAAC,qBAAqB;IAO7B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAwDxB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,gBAAgB;IAIxB,kGAAkG;IAClG,wBAAwB,IAAI,IAAI;IAOhC,OAAO,CAAC,wBAAwB;IAIhC;;;;;;;OAOG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOnC,cAAc,IAAI,MAAM,GAAG,IAAI;IAC/B,YAAY,IAAI,MAAM,GAAG,IAAI;IAC7B,cAAc,IAAI,MAAM,GAAG,IAAI;IAE/B,KAAK,IAAI,IAAI;CAyBd"}
1
+ {"version":3,"file":"output-parser.d.ts","sourceRoot":"","sources":["../src/output-parser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AA8ItC,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,WAAW,CAAuB;IAC1C,2EAA2E;IAC3E,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,WAAW,CAAuB;IAG1C,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe,CAA8C;IAErE,OAAO,CAAC,oBAAoB,CAA8C;IAC1E,OAAO,CAAC,mBAAmB,CAAuB;IAElD,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAM;IAGzB,OAAO,CAAC,mBAAmB,CAA8C;IAMzE,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,0BAA0B,CAAS;IAC3C,OAAO,CAAC,SAAS,CAAuB;IAExC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAqB3B,OAAO,CAAC,WAAW;IAmCnB,0FAA0F;IAC1F,OAAO,CAAC,eAAe;IAqEvB,wDAAwD;IACxD,OAAO,CAAC,kBAAkB;IAgE1B,6CAA6C;IAC7C,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,cAAc;IAyUtB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,cAAc;IAuCtB,OAAO,CAAC,mBAAmB;IAmB3B,iFAAiF;IACjF,oBAAoB,IAAI,IAAI;IAa5B,sEAAsE;IACtE,OAAO,CAAC,sBAAsB;IAuB9B;;;sFAGkF;IAClF,OAAO,CAAC,0BAA0B;IAYlC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,mBAAmB;IAsC3B,8DAA8D;IAC9D,OAAO,CAAC,gBAAgB;IAoBxB,qDAAqD;IACrD,OAAO,CAAC,aAAa;IAYrB,+FAA+F;IAC/F,OAAO,CAAC,mBAAmB;IAK3B,oFAAoF;IACpF,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,YAAY;IAuJpB,OAAO,CAAC,qBAAqB;IAO7B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAwDxB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,gBAAgB;IAIxB,kGAAkG;IAClG,wBAAwB,IAAI,IAAI;IAOhC;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAenC,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,wBAAwB;IAIhC;;;;;;;OAOG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOnC,cAAc,IAAI,MAAM,GAAG,IAAI;IAC/B,YAAY,IAAI,MAAM,GAAG,IAAI;IAC7B,cAAc,IAAI,MAAM,GAAG,IAAI;IAE/B,KAAK,IAAI,IAAI;CA0Bd"}