@intentic/local-agent 1.304.0 → 1.306.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 CHANGED
@@ -4,13 +4,15 @@ The plumbing every intentic CLI that lives on a **user's own computer** needs, a
4
4
 
5
5
  ```
6
6
  ~/.intentic/<name>/ agentHome(name) — state dir + config.json
7
- config.json writeSecretFile() — 0700 dir, 0600 file
8
- <agent>.log spawnDetached() — the loop's output has nowhere else to go
9
- <agent>.pid livePid() — find the loop again, pid + the boot it belongs to
7
+ config.json writeSecretFile() — 0700 dir, 0600 file, written whole (writeFileAtomic)
8
+ <agent>.log spawnDetached() — the agent's output has nowhere else to go
9
+ <agent>.pid claimPidFile() — one agent per home: pid, its boot, its build, its supervisor
10
10
 
11
- HKCU\…\Run registerAutostart() — Windows, per-user, no elevation, through the launcher stub
12
- ~/Library/LaunchAgents/ registerAutostart() — macOS, opt-in per agent
13
- ~/.config/autostart/ registerAutostart() — Linux desktop session
11
+ Task Scheduler\<name> autostart().register — Windows, per-user logon task, supervised, no elevation
12
+ HKCU\…\Run autostart().register — Windows fallback, one shot at logon, nothing watches it
13
+ ~/Library/LaunchAgents/ autostart().register — macOS, opt-in per agent, KeepAlive on a non-zero exit
14
+ ~/.config/systemd/user/ autostart().register — Linux, Restart=on-failure
15
+ ~/.config/autostart/ autostart().register — Linux desktop session, where there is no user manager
14
16
 
15
17
  stdout createUi(process) — the one renderer every agent speaks through
16
18
  ```
@@ -46,9 +48,11 @@ This package is those lessons as code, so the fourth agent inherits them by impo
46
48
  ## The five pieces
47
49
 
48
50
  **`home.ts`**: `agentHome(name)` gives `{ dir, configPath }` under `~/.intentic/<name>`; `writeSecretFile`
49
- writes through a 0700 directory to a 0600 file. Both modes are re-applied on every write, because `mkdir` does
50
- not tighten a directory that already exists: an agent installed before this floor existed would otherwise keep
51
- its old permissions forever.
51
+ writes through a 0700 directory to a 0600 file. The directory's mode is re-applied on every write, because `mkdir`
52
+ does not tighten a directory that already exists: an agent installed before this floor existed would otherwise keep
53
+ its old permissions forever. Every write goes through `writeFileAtomic`, which puts the bytes beside the file and
54
+ renames them over it: a reader sees the old file or the new one, never a torn one, which a config reader would take
55
+ for an empty list and write back.
52
56
 
53
57
  **`launcher.ts`**: `cliLauncher(cliName)` answers how to re-invoke this CLI. The subtlety is the compiled
54
58
  binary: `bun build --compile` reports an `argv[1]` inside its own virtual filesystem and re-injects it on every
@@ -56,52 +60,74 @@ launch, so passing it again shifts the command to `argv[2]` where the parser nev
56
60
  finds the other half of a Windows install, [`intentic-launch.exe`](../win-launcher), sitting next to the agent's
57
61
  own executable.
58
62
 
59
- **`autostart.ts`**: `registerAutostart(spec, launcher, log)` against an `AutostartSpec` the agent declares.
60
- launchd and the desktop session, which supervise what they start, get the **foreground** command. So does
61
- Windows, but through the stub: `intentic-launch.exe --log <log> -- <agent> <foreground args>`. `launchAgent` is
62
- optional: an agent that has not been exercised on macOS says so and gets a note, rather than a file macOS never
63
- reads.
64
-
65
- Windows earns that indirection. Explorer starts a Run entry in the interactive session, and the loader gives
66
- every console-subsystem program a console — which on Windows 11, where the default console host is Windows
63
+ **`autostart.ts`**: `autostart(spec, launcher, log)` against an `AutostartSpec` the agent declares, answering three
64
+ verbs. `register` writes the entry and never starts anything (with `repair`, it only puts back an entry that is
65
+ missing, which is what a running agent calls on itself). `start` starts the agent through its entry — `schtasks /run`,
66
+ `systemctl --user start`, `launchctl bootstrap` or `kickstart` — and answers false where the entry cannot, so the
67
+ caller spawns it instead. `unregister` clears every mechanism's entry, since which one is in force depends on what the
68
+ last registration found. Every mechanism here supervises what it starts, so every one gets the **foreground**
69
+ command; on Windows it goes through the stub, `intentic-launch.exe --log <log> --wait -- <agent> <foreground args>`.
70
+ `launchAgent` is optional: an agent that has not been exercised on macOS says so and gets a note, rather than a file
71
+ macOS never reads.
72
+
73
+ Supervised is the word that matters, and it is what each mechanism is chosen for. systemd has
74
+ `Restart=on-failure`; launchd gets `KeepAlive: {SuccessfulExit: false}`, which is the same bargain and safe to
75
+ make because these agents exit 0 for every deliberate stop and 128+SIGNAL otherwise. Windows gets a per-user
76
+ **logon task**: a Run value starts the agent once and nothing watches it afterwards, so a crash at ten in the
77
+ morning stayed a crash until the next sign-in. The task restarts a failed action three times a minute apart, and
78
+ a repeating trigger re-starts one that died some other way — `IgnoreNew` is what makes that repetition a no-op
79
+ while the agent is healthy rather than a second agent every five minutes. `InteractiveToken` is what makes it
80
+ need no password and no elevation; the `schtasks` form that *does* want a password is `/sc ONLOGON /ru`, which
81
+ is why this registers XML instead.
82
+
83
+ Windows earns the stub on top of that. Explorer starts a Run entry in the interactive session, and the loader
84
+ gives every console-subsystem program a console — which on Windows 11, where the default console host is Windows
67
85
  Terminal, is a terminal window on the desktop. The entry used to name the agent's own **detached** command,
68
- which spawns the loop and exits, so what a user saw at every single boot was a black window for one to two
86
+ which spawns the agent and exits, so what a user saw at every single boot was a black window for one to two
69
87
  seconds. Nothing softer works: `powershell -WindowStyle Hidden` hides the console *its* host owns while the
70
- window belongs to WindowsTerminal.exe, and a Task Scheduler logon task maps a window like anything else. Only a
71
- program whose PE subsystem is GUI never gets a console, which is the whole of what the stub is. `detachedArgs`
72
- remains the fallback for an install with no stub beside it (a developer running `node dist/cli.js`), and
88
+ window belongs to WindowsTerminal.exe, and a logon task whose action is a **console** program maps a window like
89
+ anything else. Only a program whose PE subsystem is GUI never gets a console, which is the whole of what the
90
+ stub is — and it is why the logon task is registered only when the stub is there to be its action. Without one,
91
+ `detachedArgs` in the Run key remains the fallback (a developer running `node dist/cli.js`), unsupervised, and
73
92
  registration says out loud that a window will flash.
74
93
 
75
- **`detached.ts`**: `spawnDetached`, `livePid`, `pidFileBody`, `isProcessAlive`. On POSIX the loop is spawned
76
- `detached` for its own session; on Windows because without it the loop is torn down the moment its parent
94
+ Starting through the entry, rather than spawning beside it, is what keeps an agent supervised after a restart: a
95
+ process started outside the logon task is one the task does not know it is running, so the task starts a rival at
96
+ the next watchdog tick and restarts nothing when this one dies. Registration and starting are separate verbs for the
97
+ same reason: a running agent re-asserting its own entry must not be handed a rival, and on macOS a restart goes through
98
+ booting the job out — which is to say, killing the caller.
99
+
100
+ **`detached.ts`**: `spawnDetached`, the pidfile (`claimPidFile`, `holdPidFile`, `releasePidFile`, `livePidRecord`),
101
+ `stopProcess`, `isProcessAlive`, and the log roll every supervisor runs before it opens the log (`ROTATE_LOG_SH`). On POSIX the agent is spawned
102
+ `detached` for its own session; on Windows because without it the agent is torn down the moment its parent
77
103
  exits — measured on the compiled binary, and the reason "connected in the background (pid N)" was a lie there
78
104
  for every release that passed `windowsHide` instead. The two cannot be combined to get both properties
79
- (`CREATE_NO_WINDOW` is ignored alongside `DETACHED_PROCESS`), so a detached loop on Windows has no console at
105
+ (`CREATE_NO_WINDOW` is ignored alongside `DETACHED_PROCESS`), so a detached agent on Windows has no console at
80
106
  all, and Windows hands a console child of a console-less process a new console *with a window*. That is why
81
- every spawn inside a loop (git and ssh in sync's bridge, docker and PowerShell in host's tools) passes
107
+ every spawn inside a agent (git and ssh in sync's bridge, docker and PowerShell in host's tools) passes
82
108
  `windowsHide` itself; the flag applies whether or not the parent has a console, where inheritance did not.
83
109
 
84
- Where the stub is installed, `spawnDetached` goes through it on Windows and the bargain improves: the loop gets
110
+ Where the stub is installed, `spawnDetached` goes through it on Windows and the bargain improves: the agent gets
85
111
  `CREATE_NO_WINDOW`, so it has a console of its own with **no window on it**, and every console child inherits
86
- that console instead of being handed a fresh one. The per-spawn `windowsHide` stays — it is what covers a loop
112
+ that console instead of being handed a fresh one. The per-spawn `windowsHide` stays — it is what covers a agent
87
113
  started any other way — but it stops being the only thing between a user and a black window. The stub prints
88
- the loop's pid on its stdout, because its own pid belongs to a process that has already exited by the time the
114
+ the agent's pid on its stdout, because its own pid belongs to a process that has already exited by the time the
89
115
  settle check below would probe it.
90
116
 
91
- `spawnDetached` also answers only once the loop has **survived** a short settle window, and throws naming its log
117
+ `spawnDetached` also answers only once the agent has **survived** a short settle window, and throws naming its log
92
118
  otherwise. A pid proves the OS created a process; every caller turns it straight into a sentence promising the
93
119
  user their machine is now doing something.
94
120
 
95
121
  A pidfile lives beside the config, so it **outlives the boot that wrote it**, while the number in it means
96
122
  nothing outside that boot's process table: pids restart low and are handed out in roughly the same order every
97
- time, so a loop's own pid from yesterday is somebody else's transient process this morning. So `pidFileBody`
98
- writes the pid *and* a stamp naming the boot, and `livePid` ignores any record from a different one without
99
- probing it. On Linux the stamp is `/proc/sys/kernel/random/boot_id`, exact and unmoved by the clock; elsewhere
123
+ time, so an agent's own pid from yesterday is somebody else's transient process this morning. So the pidfile is a
124
+ JSON record of the pid, a stamp naming the boot, and what only the agent knows about itself (the build it runs and
125
+ who restarts it), and `livePidRecord` ignores any record from a different boot without probing it. On Linux the stamp is `/proc/sys/kernel/random/boot_id`, exact and unmoved by the clock; elsewhere
100
126
  it is the boot's epoch by subtraction from the uptime, which libuv takes from `GetTickCount64` on Windows and
101
127
  `kern.boottime` on macOS — both keep counting across sleep, so a laptop that suspends goes on answering the same
102
128
  boot. That derived form is compared with a two-minute tolerance, because it is anchored to `Date.now()` and a
103
129
  stepped clock would otherwise read as a new boot; a false *mismatch* is the expensive direction, since it lets a
104
- second loop start on top of a live one.
130
+ second agent start on top of a live one.
105
131
 
106
132
  The cost of not doing this was measured: a machine bugchecked in standby, nothing removed the sync watcher's
107
133
  pidfile, and on the next boot the watcher probed the pid it used to hold, found an unrelated early-boot process
@@ -109,6 +135,12 @@ wearing it, and refused to start. Refusing is deliberate and so exits 0 — a su
109
135
  watcher into refusing again every `RestartSec` — which is precisely why `Restart=on-failure` never fired and
110
136
  desktop file sync stayed off until somebody went looking.
111
137
 
138
+ Claiming is a write, not a check. Reading the file and then writing it let two agents started at the same moment both
139
+ find it empty and both run; `claimPidFile` writes the record, waits a moment and reads it back, so only the last
140
+ writer keeps it and the other is told who holds it. The holder re-asserts it every tick with `holdPidFile` as a lease,
141
+ and `releasePidFile` removes the file only while it still names the caller, so a stopping agent never deletes the
142
+ claim of the one that replaced it.
143
+
112
144
  **`ui.ts`**: `createUi(process)` is the whole of what an agent writes to a person, and the TypeScript twin of
113
145
  `ic`'s `_sandbox/ic/src/ui.rs`. One question decides everything: is stdout a terminal. A **pipe** gets the
114
146
  `intentic: [phase] message` marker stream and nothing else, because the desktop app parses it into a progress
@@ -134,7 +166,7 @@ business: which is why host's scopes and sync's Mutagen sessions are nowhere nea
134
166
  - [src/index.ts](src/index.ts): the public surface.
135
167
  - [src/home.ts](src/home.ts): the `~/.intentic/<agent>` directory and its 0600 floor.
136
168
  - [src/autostart.ts](src/autostart.ts): login autostart, per platform.
137
- - [src/detached.ts](src/detached.ts): the background loop, and surviving a closed terminal.
169
+ - [src/detached.ts](src/detached.ts): the background agent, and surviving a closed terminal.
138
170
  - [src/launcher.ts](src/launcher.ts): `cliLauncher()` and the Windows launcher stub, including the
139
171
  compiled-binary argv case.
140
172
  - [src/ui.ts](src/ui.ts), the renderer: the pipe/terminal/nested split, the checklist, the ranked ending.
@@ -18,11 +18,25 @@ export declare const windowsRunAddArgs: (spec: AutostartSpec, launcher: CliLaunc
18
18
  export declare const windowsRunDeleteArgs: (spec: AutostartSpec) => string[];
19
19
  export declare const windowsRunValueAddArgs: (name: string, commandLine: string) => string[];
20
20
  export declare const windowsRunValueDeleteArgs: (name: string) => string[];
21
+ export declare const windowsTaskXml: (spec: AutostartSpec, launcher: CliLauncher, stub: string, account: string) => string;
22
+ export declare const windowsTaskCreateArgs: (spec: AutostartSpec, xmlPath: string) => string[];
23
+ export declare const windowsTaskDeleteArgs: (spec: AutostartSpec) => string[];
21
24
  export declare const setWindowsRunValue: (name: string, commandLine: string) => void;
22
25
  export declare const clearWindowsRunValue: (name: string) => void;
26
+ export declare const windowsTaskQueryArgs: (spec: AutostartSpec) => string[];
27
+ export declare const windowsTaskRunArgs: (spec: AutostartSpec) => string[];
28
+ export declare const supervisedPath: (home?: string) => string;
29
+ export declare const ROTATE_LOG_SH = "[ -f \"$1\" ] && [ \"$(wc -c < \"$1\")\" -ge \"$2\" ] && mv -f \"$1\" \"$1.1\"";
23
30
  export declare const systemdUserUnit: (spec: AutostartSpec, launcher: CliLauncher) => string;
24
31
  export declare const linuxDesktopEntry: (spec: AutostartSpec, launcher: CliLauncher) => string;
25
32
  export declare const macLaunchAgentXml: (spec: AutostartSpec, agent: LaunchAgentSpec, launcher: CliLauncher) => string;
26
- export declare const registerAutostart: (spec: AutostartSpec, launcher: CliLauncher, log: Log) => Promise<boolean>;
27
- export declare const unregisterAutostart: (spec: AutostartSpec, log: Log) => Promise<void>;
33
+ export type AutostartKind = "task" | "run-key" | "systemd" | "launchd" | "xdg" | "none";
34
+ export interface Autostart {
35
+ readonly register: (options?: {
36
+ readonly repair?: boolean;
37
+ }) => Promise<AutostartKind>;
38
+ readonly start: () => Promise<boolean>;
39
+ readonly unregister: () => Promise<void>;
40
+ }
41
+ export declare const autostart: (spec: AutostartSpec, launcher: CliLauncher, log: Log) => Autostart;
28
42
  //# sourceMappingURL=autostart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"autostart.d.ts","sourceRoot":"","sources":["../src/autostart.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,WAAW,EAA0E,MAAM,eAAe,CAAC;AACzH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAMrC,MAAM,WAAW,eAAe;IAE5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAE1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAEjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC,QAAQ,CAAC,WAAW,CAAC,EAAE,eAAe,CAAC;IAEvC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAE3C,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;CACpD;AA8BD,eAAO,MAAM,iBAAiB,SAAU,aAAa,YAAY,WAAW,SAAS,MAAM,KAAG,MAAM,EAM/F,CAAC;AAEN,eAAO,MAAM,oBAAoB,SAAU,aAAa,KAAG,MAAM,EAAqD,CAAC;AAIvH,eAAO,MAAM,sBAAsB,SAAU,MAAM,eAAe,MAAM,KAAG,MAAM,EAUhF,CAAC;AAEF,eAAO,MAAM,yBAAyB,SAAU,MAAM,KAAG,MAAM,EAAmD,CAAC;AAGnH,eAAO,MAAM,kBAAkB,SAAU,MAAM,eAAe,MAAM,KAAG,IAAqE,CAAC;AAG7I,eAAO,MAAM,oBAAoB,SAAU,MAAM,KAAG,IAEnD,CAAC;AAgBF,eAAO,MAAM,eAAe,SAAU,aAAa,YAAY,WAAW,KAAG,MAmB5E,CAAC;AAkBF,eAAO,MAAM,iBAAiB,SAAU,aAAa,YAAY,WAAW,KAAG,MAO9E,CAAC;AAIF,eAAO,MAAM,iBAAiB,SAAU,aAAa,SAAS,eAAe,YAAY,WAAW,KAAG,MAetG,CAAC;AAoCF,eAAO,MAAM,iBAAiB,SAAgB,aAAa,YAAY,WAAW,OAAO,GAAG,KAAG,OAAO,CAAC,OAAO,CA8B7G,CAAC;AAGF,eAAO,MAAM,mBAAmB,SAAgB,aAAa,OAAO,GAAG,KAAG,OAAO,CAAC,IAAI,CA0BrF,CAAC"}
1
+ {"version":3,"file":"autostart.d.ts","sourceRoot":"","sources":["../src/autostart.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,WAAW,EAA0E,MAAM,eAAe,CAAC;AACzH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAMrC,MAAM,WAAW,eAAe;IAE5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAE1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAEjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC,QAAQ,CAAC,WAAW,CAAC,EAAE,eAAe,CAAC;IAEvC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAE3C,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;CACpD;AA8BD,eAAO,MAAM,iBAAiB,SAAU,aAAa,YAAY,WAAW,SAAS,MAAM,KAAG,MAAM,EAM/F,CAAC;AAEN,eAAO,MAAM,oBAAoB,SAAU,aAAa,KAAG,MAAM,EAAqD,CAAC;AAIvH,eAAO,MAAM,sBAAsB,SAAU,MAAM,eAAe,MAAM,KAAG,MAAM,EAUhF,CAAC;AAEF,eAAO,MAAM,yBAAyB,SAAU,MAAM,KAAG,MAAM,EAAmD,CAAC;AAkCnH,eAAO,MAAM,cAAc,SAAU,aAAa,YAAY,WAAW,QAAQ,MAAM,WAAW,MAAM,KAAG,MA8D1G,CAAC;AAEF,eAAO,MAAM,qBAAqB,SAAU,aAAa,WAAW,MAAM,KAAG,MAAM,EAOlF,CAAC;AAEF,eAAO,MAAM,qBAAqB,SAAU,aAAa,KAAG,MAAM,EAAoD,CAAC;AAwBvH,eAAO,MAAM,kBAAkB,SAAU,MAAM,eAAe,MAAM,KAAG,IAAqE,CAAC;AAG7I,eAAO,MAAM,oBAAoB,SAAU,MAAM,KAAG,IAEnD,CAAC;AAEF,eAAO,MAAM,oBAAoB,SAAU,aAAa,KAAG,MAAM,EAA6C,CAAC;AAC/G,eAAO,MAAM,kBAAkB,SAAU,aAAa,KAAG,MAAM,EAA2C,CAAC;AAwB3G,eAAO,MAAM,cAAc,UAAU,MAAM,KAAe,MAAuE,CAAC;AAGlI,eAAO,MAAM,aAAa,mFAAuE,CAAC;AAIlG,eAAO,MAAM,eAAe,SAAU,aAAa,YAAY,WAAW,KAAG,MAoB5E,CAAC;AAGF,eAAO,MAAM,iBAAiB,SAAU,aAAa,YAAY,WAAW,KAAG,MAO9E,CAAC;AAKF,eAAO,MAAM,iBAAiB,SAAU,aAAa,SAAS,eAAe,YAAY,WAAW,KAAG,MAiBtG,CAAC;AAGF,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC;AAExF,MAAM,WAAW,SAAS;IAEtB,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IAEvF,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAgID,eAAO,MAAM,SAAS,SAAU,aAAa,YAAY,WAAW,OAAO,GAAG,KAAG,SAoBhF,CAAC"}
package/dist/autostart.js CHANGED
@@ -1,8 +1,10 @@
1
1
  import { spawnSync } from "node:child_process";
2
+ import { existsSync } from "node:fs";
2
3
  import { mkdir, rm, writeFile } from "node:fs/promises";
3
- import { homedir } from "node:os";
4
+ import { homedir, tmpdir } from "node:os";
4
5
  import { basename, dirname, join } from "node:path";
5
6
  import { errorMessage } from "@intentic/base/errors";
7
+ import { LOG_ROTATE_BYTES } from "./detached.js";
6
8
  import { quotedCommandLine, stubCommand, WINDOWS_LAUNCH_STUB, windowsLaunchStub } from "./launcher.js";
7
9
  const WINDOWS_RUN_KEY = "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run";
8
10
  const linuxDesktopPath = (spec) => join(homedir(), ".config", "autostart", `${spec.id}.desktop`);
@@ -35,10 +37,110 @@ export const windowsRunValueAddArgs = (name, commandLine) => [
35
37
  "/f",
36
38
  ];
37
39
  export const windowsRunValueDeleteArgs = (name) => ["delete", WINDOWS_RUN_KEY, "/v", name, "/f"];
40
+ const WINDOWS_WATCHDOG_MINUTES = 5;
41
+ const WINDOWS_RESTART_COUNT = 3;
42
+ const schtasksExe = () => join(process.env["SystemRoot"] ?? "C:\\Windows", "System32", "schtasks.exe");
43
+ const windowsAccount = () => {
44
+ const user = process.env["USERNAME"] ?? "";
45
+ const domain = process.env["USERDOMAIN"] ?? "";
46
+ return domain === "" || user === "" ? user : `${domain}\\${user}`;
47
+ };
48
+ const xmlText = (value) => value.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll('"', "&quot;");
49
+ export const windowsTaskXml = (spec, launcher, stub, account) => {
50
+ const [program, ...args] = [stub, "--log", spec.logPath, "--wait", "--", ...launcher, ...spec.foregroundArgs];
51
+ return `<?xml version="1.0" encoding="UTF-16"?>
52
+ <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
53
+ <RegistrationInfo>
54
+ <Description>${xmlText(spec.desktopComment)}</Description>
55
+ <URI>\\${xmlText(spec.windowsRunValue)}</URI>
56
+ </RegistrationInfo>
57
+ <Triggers>
58
+ <LogonTrigger>
59
+ <Enabled>true</Enabled>
60
+ <UserId>${xmlText(account)}</UserId>
61
+ </LogonTrigger>
62
+ <TimeTrigger>
63
+ <Repetition>
64
+ <Interval>PT${WINDOWS_WATCHDOG_MINUTES}M</Interval>
65
+ <StopAtDurationEnd>false</StopAtDurationEnd>
66
+ </Repetition>
67
+ <StartBoundary>2020-01-01T00:00:00</StartBoundary>
68
+ <Enabled>true</Enabled>
69
+ </TimeTrigger>
70
+ </Triggers>
71
+ <Principals>
72
+ <Principal id="Author">
73
+ <UserId>${xmlText(account)}</UserId>
74
+ <LogonType>InteractiveToken</LogonType>
75
+ <RunLevel>LeastPrivilege</RunLevel>
76
+ </Principal>
77
+ </Principals>
78
+ <Settings>
79
+ <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
80
+ <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
81
+ <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
82
+ <AllowHardTerminate>true</AllowHardTerminate>
83
+ <StartWhenAvailable>true</StartWhenAvailable>
84
+ <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
85
+ <IdleSettings>
86
+ <StopOnIdleEnd>false</StopOnIdleEnd>
87
+ <RestartOnIdle>false</RestartOnIdle>
88
+ </IdleSettings>
89
+ <AllowStartOnDemand>true</AllowStartOnDemand>
90
+ <Enabled>true</Enabled>
91
+ <Hidden>false</Hidden>
92
+ <RunOnlyIfIdle>false</RunOnlyIfIdle>
93
+ <WakeToRun>false</WakeToRun>
94
+ <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
95
+ <Priority>7</Priority>
96
+ <RestartOnFailure>
97
+ <Interval>PT1M</Interval>
98
+ <Count>${WINDOWS_RESTART_COUNT}</Count>
99
+ </RestartOnFailure>
100
+ </Settings>
101
+ <Actions Context="Author">
102
+ <Exec>
103
+ <Command>${xmlText(program ?? "")}</Command>
104
+ <Arguments>${xmlText(quotedCommandLine(args))}</Arguments>
105
+ </Exec>
106
+ </Actions>
107
+ </Task>
108
+ `;
109
+ };
110
+ export const windowsTaskCreateArgs = (spec, xmlPath) => [
111
+ "/create",
112
+ "/tn",
113
+ spec.windowsRunValue,
114
+ "/xml",
115
+ xmlPath,
116
+ "/f",
117
+ ];
118
+ export const windowsTaskDeleteArgs = (spec) => ["/delete", "/tn", spec.windowsRunValue, "/f"];
119
+ const registerWindowsTask = async (spec, launcher, stub, log) => {
120
+ const account = windowsAccount();
121
+ if (account === "") {
122
+ throw new Error("this session names no user (USERNAME is unset), so a per-user logon task has nobody to run as");
123
+ }
124
+ const xmlPath = join(tmpdir(), `${spec.id}-${process.pid}.xml`);
125
+ try {
126
+ await writeFile(xmlPath, Buffer.from(`\uFEFF${windowsTaskXml(spec, launcher, stub, account)}`, "utf16le"));
127
+ register(schtasksExe(), windowsTaskCreateArgs(spec, xmlPath));
128
+ }
129
+ finally {
130
+ await rm(xmlPath, { force: true });
131
+ }
132
+ clearWindowsRunValue(spec.windowsRunValue);
133
+ log(`registered the "${spec.windowsRunValue}" logon task: it starts at sign-in, restarts on failure, and is re-checked every ${WINDOWS_WATCHDOG_MINUTES} minutes.`);
134
+ };
38
135
  export const setWindowsRunValue = (name, commandLine) => register(regExe(), windowsRunValueAddArgs(name, commandLine));
39
136
  export const clearWindowsRunValue = (name) => {
40
137
  spawnSync(regExe(), windowsRunValueDeleteArgs(name), { stdio: "ignore", windowsHide: true });
41
138
  };
139
+ export const windowsTaskQueryArgs = (spec) => ["/query", "/tn", spec.windowsRunValue];
140
+ export const windowsTaskRunArgs = (spec) => ["/run", "/tn", spec.windowsRunValue];
141
+ const quietly = (command, args) => spawnSync(command, args, { stdio: "ignore", windowsHide: true }).status === 0;
142
+ const windowsTaskExists = (spec) => quietly(schtasksExe(), windowsTaskQueryArgs(spec));
143
+ const windowsRunValueExists = (spec) => quietly(regExe(), ["query", WINDOWS_RUN_KEY, "/v", spec.windowsRunValue]);
42
144
  const SYSTEMD_LIVE_STATES = new Set(["running", "degraded", "starting", "maintenance", "stopping", "initializing"]);
43
145
  const systemdUserAvailable = () => {
44
146
  const result = spawnSync("systemctl", ["--user", "is-system-running"], { encoding: "utf8" });
@@ -47,6 +149,9 @@ const systemdUserAvailable = () => {
47
149
  }
48
150
  return SYSTEMD_LIVE_STATES.has(result.stdout.trim());
49
151
  };
152
+ const systemdQuoted = (value) => `"${value.replaceAll("\\", "\\\\").replaceAll('"', '\\"')}"`;
153
+ export const supervisedPath = (home = homedir()) => `${join(home, ".local", "bin")}:/usr/local/bin:/usr/bin:/bin`;
154
+ export const ROTATE_LOG_SH = `[ -f "$1" ] && [ "$(wc -c < "$1")" -ge "$2" ] && mv -f "$1" "$1.1"`;
50
155
  export const systemdUserUnit = (spec, launcher) => {
51
156
  return `[Unit]
52
157
  Description=${spec.desktopName}: ${spec.desktopComment}
@@ -54,6 +159,7 @@ After=network-online.target
54
159
 
55
160
  [Service]
56
161
  Type=simple
162
+ ExecStartPre=-/bin/sh -c '${ROTATE_LOG_SH}' rotate ${systemdQuoted(spec.logPath)} ${LOG_ROTATE_BYTES}
57
163
  ExecStart=${quotedCommandLine([...launcher, ...spec.foregroundArgs])}
58
164
  StandardOutput=append:${spec.logPath}
59
165
  StandardError=append:${spec.logPath}
@@ -61,22 +167,12 @@ Restart=on-failure
61
167
  RestartSec=5
62
168
  RestartForceExitStatus=SIGHUP SIGINT SIGTERM SIGPIPE
63
169
  StartLimitIntervalSec=0
64
- Environment=PATH=${join(homedir(), ".local", "bin")}:/usr/local/bin:/usr/bin:/bin
170
+ Environment=PATH=${supervisedPath()}
65
171
 
66
172
  [Install]
67
173
  WantedBy=default.target
68
174
  `;
69
175
  };
70
- const registerSystemdUser = async (spec, launcher, log) => {
71
- const unit = systemdUnitPath(spec);
72
- await mkdir(dirname(unit), { recursive: true });
73
- await writeFile(unit, systemdUserUnit(spec, launcher), { mode: 0o644 });
74
- spawnSync("loginctl", ["enable-linger"], { stdio: "ignore" });
75
- spawnSync("systemctl", ["--user", "daemon-reload"], { stdio: "ignore" });
76
- register("systemctl", ["--user", "enable", "--now", systemdUnitName(spec)]);
77
- log(`registered ${systemdUnitName(spec)} to run now and at boot. Follow it with: tail -f ${spec.logPath}`);
78
- return true;
79
- };
80
176
  export const linuxDesktopEntry = (spec, launcher) => `[Desktop Entry]
81
177
  Type=Application
82
178
  Name=${spec.desktopName}
@@ -94,87 +190,138 @@ export const macLaunchAgentXml = (spec, agent, launcher) => `<?xml version="1.0"
94
190
  ${[...launcher, ...spec.foregroundArgs].map((arg) => ` <string>${arg}</string>`).join("\n")}
95
191
  </array>
96
192
  <key>RunAtLoad</key><true/>
193
+ <key>KeepAlive</key>
194
+ <dict><key>SuccessfulExit</key><false/></dict>
97
195
  <key>StandardOutPath</key><string>${spec.logPath}</string>
98
196
  <key>StandardErrorPath</key><string>${spec.logPath}</string>
99
197
  </dict>
100
198
  </plist>
101
199
  `;
102
- const registerMac = async (spec, agent, launcher) => {
103
- const plist = macPlistPath(agent);
104
- await mkdir(dirname(plist), { recursive: true });
105
- await writeFile(plist, macLaunchAgentXml(spec, agent, launcher), { mode: 0o644 });
106
- const uid = process.getuid?.() ?? 0;
107
- spawnSync("launchctl", ["bootout", `gui/${uid}/${agent.label}`], { stdio: "ignore" });
108
- if (spawnSync("launchctl", ["bootstrap", `gui/${uid}`, plist], { stdio: "ignore" }).status === 0) {
109
- return true;
110
- }
111
- register("launchctl", ["load", "-w", plist]);
112
- return true;
113
- };
114
- const registerLinux = async (spec, launcher, log) => {
115
- if (systemdUserAvailable()) {
116
- await rm(linuxDesktopPath(spec), { force: true });
117
- return await registerSystemdUser(spec, launcher, log);
118
- }
119
- const file = linuxDesktopPath(spec);
120
- await mkdir(dirname(file), { recursive: true });
121
- await writeFile(file, linuxDesktopEntry(spec, launcher), { mode: 0o644 });
122
- if (process.env["XDG_CURRENT_DESKTOP"] === undefined) {
123
- log(`note: this machine has neither a systemd user manager nor a desktop session, so nothing will start ${spec.id} at boot. It runs until this machine restarts.`);
124
- }
125
- return false;
126
- };
127
- export const registerAutostart = async (spec, launcher, log) => {
128
- try {
129
- if (process.platform === "darwin") {
130
- if (spec.launchAgent === undefined) {
131
- log(`note: ${spec.id} has no macOS login autostart yet; it runs until this machine restarts.`);
132
- return false;
133
- }
134
- return await registerMac(spec, spec.launchAgent, launcher);
200
+ const windowsAutostart = (spec, launcher, log) => ({
201
+ register: async ({ repair = false } = {}) => {
202
+ const stub = windowsLaunchStub(launcher);
203
+ if (stub === undefined) {
204
+ log(`note: ${WINDOWS_LAUNCH_STUB} isn't installed beside this agent, so ${spec.id} will start at login through a console window that flashes on the desktop. Re-run the install command from the capability card to get it.`);
205
+ }
206
+ else if (repair && windowsTaskExists(spec)) {
207
+ return "task";
135
208
  }
136
- if (process.platform === "win32") {
137
- const stub = windowsLaunchStub(launcher);
138
- if (stub === undefined) {
139
- log(`note: ${WINDOWS_LAUNCH_STUB} isn't installed beside this agent, so ${spec.id} will start at login through a console window that flashes on the desktop. Re-run the install command from the capability card to get it.`);
209
+ else {
210
+ try {
211
+ await registerWindowsTask(spec, launcher, stub, log);
212
+ return "task";
213
+ }
214
+ catch (error) {
215
+ log(`note: couldn't register a logon task for ${spec.id} (${reason(error)}); falling back to a login entry that starts it once and is not supervised.`);
140
216
  }
141
- register(regExe(), windowsRunAddArgs(spec, launcher, stub));
142
- return false;
143
217
  }
144
- if (process.platform === "linux") {
145
- return await registerLinux(spec, launcher, log);
218
+ if (repair && windowsRunValueExists(spec)) {
219
+ return "run-key";
146
220
  }
147
- log(`note: ${spec.id} has no login autostart on ${process.platform}; it runs until this machine restarts.`);
148
- }
149
- catch (error) {
150
- log(spec.failureNote(reason(error)));
151
- }
152
- return false;
153
- };
154
- export const unregisterAutostart = async (spec, log) => {
155
- try {
156
- if (process.platform === "darwin") {
157
- if (spec.launchAgent === undefined) {
158
- return;
221
+ register(regExe(), windowsRunAddArgs(spec, launcher, stub));
222
+ return "run-key";
223
+ },
224
+ start: async () => await Promise.resolve(windowsTaskExists(spec) && quietly(schtasksExe(), windowsTaskRunArgs(spec))),
225
+ unregister: async () => {
226
+ spawnSync(schtasksExe(), windowsTaskDeleteArgs(spec), { stdio: "ignore", windowsHide: true });
227
+ clearWindowsRunValue(spec.windowsRunValue);
228
+ return await Promise.resolve();
229
+ },
230
+ });
231
+ const linuxAutostart = (spec, launcher, log) => ({
232
+ register: async ({ repair = false } = {}) => {
233
+ if (systemdUserAvailable()) {
234
+ const unit = systemdUnitPath(spec);
235
+ if (repair && existsSync(unit)) {
236
+ return "systemd";
159
237
  }
160
- const plist = macPlistPath(spec.launchAgent);
161
- const uid = process.getuid?.() ?? 0;
162
- spawnSync("launchctl", ["bootout", `gui/${uid}/${spec.launchAgent.label}`], { stdio: "ignore" });
163
- spawnSync("launchctl", ["unload", plist], { stdio: "ignore" });
164
- await rm(plist, { force: true });
165
- return;
238
+ await rm(linuxDesktopPath(spec), { force: true });
239
+ await mkdir(dirname(unit), { recursive: true });
240
+ await writeFile(unit, systemdUserUnit(spec, launcher), { mode: 0o644 });
241
+ spawnSync("loginctl", ["enable-linger"], { stdio: "ignore" });
242
+ spawnSync("systemctl", ["--user", "daemon-reload"], { stdio: "ignore" });
243
+ register("systemctl", ["--user", "enable", systemdUnitName(spec)]);
244
+ log(`${systemdUnitName(spec)} is registered to run at boot. Follow it with: tail -f ${spec.logPath}`);
245
+ return "systemd";
246
+ }
247
+ const file = linuxDesktopPath(spec);
248
+ if (!(repair && existsSync(file))) {
249
+ await mkdir(dirname(file), { recursive: true });
250
+ await writeFile(file, linuxDesktopEntry(spec, launcher), { mode: 0o644 });
166
251
  }
167
- if (process.platform === "win32") {
168
- clearWindowsRunValue(spec.windowsRunValue);
169
- return;
252
+ if (process.env["XDG_CURRENT_DESKTOP"] === undefined) {
253
+ log(`note: this machine has neither a systemd user manager nor a desktop session, so nothing will start ${spec.id} at boot. It runs until this machine restarts.`);
170
254
  }
255
+ return "xdg";
256
+ },
257
+ start: async () => await Promise.resolve(systemdUserAvailable() && existsSync(systemdUnitPath(spec)) && quietly("systemctl", ["--user", "start", systemdUnitName(spec)])),
258
+ unregister: async () => {
171
259
  spawnSync("systemctl", ["--user", "disable", "--now", systemdUnitName(spec)], { stdio: "ignore" });
172
260
  await rm(systemdUnitPath(spec), { force: true });
173
261
  spawnSync("systemctl", ["--user", "daemon-reload"], { stdio: "ignore" });
174
262
  await rm(linuxDesktopPath(spec), { force: true });
263
+ },
264
+ });
265
+ const macAutostart = (spec, agent, launcher) => {
266
+ const plist = macPlistPath(agent);
267
+ const domain = `gui/${process.getuid?.() ?? 0}`;
268
+ return {
269
+ register: async ({ repair = false } = {}) => {
270
+ if (!(repair && existsSync(plist))) {
271
+ await mkdir(dirname(plist), { recursive: true });
272
+ await writeFile(plist, macLaunchAgentXml(spec, agent, launcher), { mode: 0o644 });
273
+ }
274
+ return "launchd";
275
+ },
276
+ start: async () => await Promise.resolve(quietly("launchctl", ["bootstrap", domain, plist]) || quietly("launchctl", ["kickstart", `${domain}/${agent.label}`])),
277
+ unregister: async () => {
278
+ spawnSync("launchctl", ["bootout", `${domain}/${agent.label}`], { stdio: "ignore" });
279
+ spawnSync("launchctl", ["unload", plist], { stdio: "ignore" });
280
+ await rm(plist, { force: true });
281
+ },
282
+ };
283
+ };
284
+ const noAutostart = (spec, log) => ({
285
+ register: async () => {
286
+ log(`note: ${spec.id} has no login autostart on ${process.platform}; it runs until this machine restarts.`);
287
+ return await Promise.resolve("none");
288
+ },
289
+ start: async () => await Promise.resolve(false),
290
+ unregister: async () => await Promise.resolve(),
291
+ });
292
+ const mechanismFor = (spec, launcher, log) => {
293
+ if (process.platform === "win32") {
294
+ return windowsAutostart(spec, launcher, log);
295
+ }
296
+ if (process.platform === "linux") {
297
+ return linuxAutostart(spec, launcher, log);
175
298
  }
176
- catch (error) {
177
- log(`note: couldn't remove the login-autostart entry for ${spec.id} (${reason(error)}).`);
299
+ if (process.platform === "darwin" && spec.launchAgent !== undefined) {
300
+ return macAutostart(spec, spec.launchAgent, launcher);
178
301
  }
302
+ return noAutostart(spec, log);
303
+ };
304
+ export const autostart = (spec, launcher, log) => {
305
+ const mechanism = mechanismFor(spec, launcher, log);
306
+ return {
307
+ register: async (options) => {
308
+ try {
309
+ return await mechanism.register(options);
310
+ }
311
+ catch (error) {
312
+ log(spec.failureNote(reason(error)));
313
+ return "none";
314
+ }
315
+ },
316
+ start: async () => await mechanism.start().catch(() => false),
317
+ unregister: async () => {
318
+ try {
319
+ await mechanism.unregister();
320
+ }
321
+ catch (error) {
322
+ log(`note: couldn't remove the login-autostart entry for ${spec.id} (${reason(error)}).`);
323
+ }
324
+ },
325
+ };
179
326
  };
180
327
  //# sourceMappingURL=autostart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"autostart.js","sourceRoot":"","sources":["../src/autostart.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autostart.js","sourceRoot":"","sources":["../src/autostart.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,27 @@
1
1
  import { type CliLauncher } from "./launcher.js";
2
2
  export declare const isProcessAlive: (pid: number) => boolean;
3
- export declare const pidFileBody: (pid?: number, note?: string) => Promise<string>;
4
3
  export interface PidRecord {
5
4
  readonly pid: number;
6
- readonly note?: string;
5
+ readonly build?: string;
6
+ readonly supervisor?: string;
7
7
  }
8
+ export declare const pidFileBody: (record: PidRecord) => Promise<string>;
8
9
  export declare const livePidRecord: (pidPath: string) => Promise<PidRecord | undefined>;
9
10
  export declare const livePid: (pidPath: string) => Promise<number | undefined>;
11
+ export type PidClaim = {
12
+ readonly claimed: true;
13
+ } | {
14
+ readonly claimed: false;
15
+ readonly holder: PidRecord;
16
+ };
17
+ export declare const claimPidFile: (pidPath: string, dir: string, record: PidRecord) => Promise<PidClaim>;
18
+ export declare const holdPidFile: (pidPath: string, dir: string, record: PidRecord) => Promise<boolean>;
19
+ export declare const releasePidFile: (pidPath: string, pid: number) => Promise<boolean>;
20
+ export declare const stopProcess: (pid: number, timeoutMs: number) => Promise<void>;
21
+ export declare const LOG_ROTATE_BYTES: number;
22
+ export declare const rotateIfLarge: (logPath: string, limit?: number) => Promise<void>;
10
23
  export declare const spawnThroughStub: (stub: string, logPath: string, launcher: CliLauncher, args: readonly string[]) => Promise<number>;
11
- export declare const spawnDetached: (logPath: string, launcher: CliLauncher, args: readonly string[]) => Promise<number>;
24
+ export declare const spawnDetached: (logPath: string, launcher: CliLauncher, args: readonly string[], { finishes }?: {
25
+ readonly finishes?: boolean;
26
+ }) => Promise<number>;
12
27
  //# sourceMappingURL=detached.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"detached.d.ts","sourceRoot":"","sources":["../src/detached.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,WAAW,EAAkC,MAAM,eAAe,CAAC;AAOjF,eAAO,MAAM,cAAc,QAAS,MAAM,KAAG,OAO5C,CAAC;AAwBF,eAAO,MAAM,WAAW,SAAe,MAAM,SAAuB,MAAM,KAAG,OAAO,CAAC,MAAM,CACnB,CAAC;AAIzE,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,aAAa,YAAmB,MAAM,KAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAalF,CAAC;AAIF,eAAO,MAAM,OAAO,YAAmB,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAwC,CAAC;AAgCnH,eAAO,MAAM,gBAAgB,SAAgB,MAAM,WAAW,MAAM,YAAY,WAAW,QAAQ,SAAS,MAAM,EAAE,KAAG,OAAO,CAAC,MAAM,CA8CpI,CAAC;AAIF,eAAO,MAAM,aAAa,YAAmB,MAAM,YAAY,WAAW,QAAQ,SAAS,MAAM,EAAE,KAAG,OAAO,CAAC,MAAM,CAUnH,CAAC"}
1
+ {"version":3,"file":"detached.d.ts","sourceRoot":"","sources":["../src/detached.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,WAAW,EAAkC,MAAM,eAAe,CAAC;AAOjF,eAAO,MAAM,cAAc,QAAS,MAAM,KAAG,OAO5C,CAAC;AAuBF,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAChC;AAOD,eAAO,MAAM,WAAW,WAAkB,SAAS,KAAG,OAAO,CAAC,MAAM,CAA2D,CAAC;AAoBhI,eAAO,MAAM,aAAa,YAAmB,MAAM,KAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAOlF,CAAC;AAEF,eAAO,MAAM,OAAO,YAAmB,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAwC,CAAC;AAKnH,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC;AAG5G,eAAO,MAAM,YAAY,YAAmB,MAAM,OAAO,MAAM,UAAU,SAAS,KAAG,OAAO,CAAC,QAAQ,CASpG,CAAC;AAGF,eAAO,MAAM,WAAW,YAAmB,MAAM,OAAO,MAAM,UAAU,SAAS,KAAG,OAAO,CAAC,OAAO,CAOlG,CAAC;AAGF,eAAO,MAAM,cAAc,YAAmB,MAAM,OAAO,MAAM,KAAG,OAAO,CAAC,OAAO,CAOlF,CAAC;AAKF,eAAO,MAAM,WAAW,QAAe,MAAM,aAAa,MAAM,KAAG,OAAO,CAAC,IAAI,CAU9E,CAAC;AAqBF,eAAO,MAAM,gBAAgB,QAAkB,CAAC;AAKhD,eAAO,MAAM,aAAa,YAAmB,MAAM,qBAA6B,OAAO,CAAC,IAAI,CAO3F,CAAC;AAeF,eAAO,MAAM,gBAAgB,SAAgB,MAAM,WAAW,MAAM,YAAY,WAAW,QAAQ,SAAS,MAAM,EAAE,KAAG,OAAO,CAAC,MAAM,CA8CpI,CAAC;AAKF,eAAO,MAAM,aAAa,YACb,MAAM,YACL,WAAW,QACf,SAAS,MAAM,EAAE,iBACD;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,KACtD,OAAO,CAAC,MAAM,CAchB,CAAC"}
package/dist/detached.js CHANGED
@@ -1,9 +1,10 @@
1
1
  import { spawn } from "node:child_process";
2
2
  import { openSync } from "node:fs";
3
- import { readFile } from "node:fs/promises";
3
+ import { readFile, rename, rm, stat } from "node:fs/promises";
4
4
  import { uptime } from "node:os";
5
5
  import { basename } from "node:path";
6
6
  import { setTimeout } from "node:timers/promises";
7
+ import { writeSecretFile } from "./home.js";
7
8
  import { stubCommand, windowsLaunchStub } from "./launcher.js";
8
9
  export const isProcessAlive = (pid) => {
9
10
  try {
@@ -25,26 +26,84 @@ const sameBoot = (written, current) => {
25
26
  }
26
27
  return Math.abs(Number(written.slice(3)) - Number(current.slice(3))) <= SAME_BOOT_MS;
27
28
  };
28
- export const pidFileBody = async (pid = process.pid, note) => `${pid} ${await bootToken()}${note === undefined ? "" : ` ${note}`}`;
29
- export const livePidRecord = async (pidPath) => {
30
- const [written = "", stamp = "", note] = (await readFile(pidPath, "utf8").catch(() => "")).trim().split(/\s+/);
31
- const pid = Number(written);
32
- if (!Number.isInteger(pid) || pid <= 0) {
33
- return undefined;
29
+ export const pidFileBody = async (record) => JSON.stringify({ ...record, boot: await bootToken() });
30
+ const text = (value) => (typeof value === "string" && value !== "" ? value : undefined);
31
+ const parsePidFile = (raw) => {
32
+ try {
33
+ const parsed = JSON.parse(raw);
34
+ const { pid, boot } = parsed;
35
+ if (typeof pid !== "number" || !Number.isInteger(pid) || pid <= 0 || typeof boot !== "string") {
36
+ return undefined;
37
+ }
38
+ const build = text(parsed["build"]);
39
+ const supervisor = text(parsed["supervisor"]);
40
+ return { pid, boot, ...(build === undefined ? {} : { build }), ...(supervisor === undefined ? {} : { supervisor }) };
34
41
  }
35
- if (!sameBoot(stamp, await bootToken())) {
42
+ catch {
36
43
  return undefined;
37
44
  }
38
- if (!isProcessAlive(pid)) {
45
+ };
46
+ export const livePidRecord = async (pidPath) => {
47
+ const file = parsePidFile(await readFile(pidPath, "utf8").catch(() => ""));
48
+ if (file === undefined || !sameBoot(file.boot, await bootToken()) || !isProcessAlive(file.pid)) {
39
49
  return undefined;
40
50
  }
41
- return { pid, ...(note === undefined || note === "" ? {} : { note }) };
51
+ const { boot: _boot, ...record } = file;
52
+ return record;
42
53
  };
43
54
  export const livePid = async (pidPath) => (await livePidRecord(pidPath))?.pid;
55
+ const CLAIM_SETTLE_MS = 150;
56
+ export const claimPidFile = async (pidPath, dir, record) => {
57
+ const holder = await livePidRecord(pidPath);
58
+ if (holder !== undefined && holder.pid !== record.pid) {
59
+ return { claimed: false, holder };
60
+ }
61
+ await writeSecretFile(pidPath, dir, await pidFileBody(record));
62
+ await setTimeout(CLAIM_SETTLE_MS);
63
+ const settled = await livePidRecord(pidPath);
64
+ return settled === undefined || settled.pid === record.pid ? { claimed: true } : { claimed: false, holder: settled };
65
+ };
66
+ export const holdPidFile = async (pidPath, dir, record) => {
67
+ const now = await livePidRecord(pidPath);
68
+ if (now === undefined) {
69
+ await writeSecretFile(pidPath, dir, await pidFileBody(record));
70
+ return true;
71
+ }
72
+ return now.pid === record.pid;
73
+ };
74
+ export const releasePidFile = async (pidPath, pid) => {
75
+ const file = parsePidFile(await readFile(pidPath, "utf8").catch(() => ""));
76
+ if (file !== undefined && file.pid !== pid) {
77
+ return false;
78
+ }
79
+ await rm(pidPath, { force: true });
80
+ return true;
81
+ };
82
+ const STOP_POLL_MS = 50;
83
+ export const stopProcess = async (pid, timeoutMs) => {
84
+ try {
85
+ process.kill(pid, "SIGTERM");
86
+ }
87
+ catch {
88
+ return;
89
+ }
90
+ for (let waited = 0; waited < timeoutMs && isProcessAlive(pid); waited += STOP_POLL_MS) {
91
+ await setTimeout(STOP_POLL_MS);
92
+ }
93
+ };
44
94
  const SETTLE_MS = 2_000;
45
95
  const SETTLE_POLL_MS = 100;
46
96
  const STUB_REPLY_MS = 10_000;
47
97
  const STUB_DRAIN_MS = 250;
98
+ export const LOG_ROTATE_BYTES = 8 * 1024 * 1024;
99
+ export const rotateIfLarge = async (logPath, limit = LOG_ROTATE_BYTES) => {
100
+ const size = await stat(logPath)
101
+ .then((file) => file.size)
102
+ .catch(() => 0);
103
+ if (size >= limit) {
104
+ await rename(logPath, `${logPath}.1`).catch(() => undefined);
105
+ }
106
+ };
48
107
  const spawnHere = (logPath, launcher, args) => {
49
108
  const logFd = openSync(logPath, "a");
50
109
  const [command, ...leading] = launcher;
@@ -73,7 +132,7 @@ export const spawnThroughStub = async (stub, logPath, launcher, args) => {
73
132
  };
74
133
  const refused = () => {
75
134
  const said = complained.trim();
76
- return new Error(`${basename(stub)} could not start the background loop${said === "" ? "" : `: ${said}`}. Details: ${logPath}`);
135
+ return new Error(`${basename(stub)} could not start the background agent${said === "" ? "" : `: ${said}`}. Details: ${logPath}`);
77
136
  };
78
137
  child.stdout?.on("data", (chunk) => {
79
138
  answered += chunk.toString();
@@ -100,13 +159,17 @@ export const spawnThroughStub = async (stub, logPath, launcher, args) => {
100
159
  child.unref();
101
160
  }
102
161
  };
103
- export const spawnDetached = async (logPath, launcher, args) => {
162
+ export const spawnDetached = async (logPath, launcher, args, { finishes = false } = {}) => {
163
+ await rotateIfLarge(logPath);
104
164
  const stub = windowsLaunchStub(launcher);
105
165
  const pid = stub === undefined ? spawnHere(logPath, launcher, args) : await spawnThroughStub(stub, logPath, launcher, args);
166
+ if (finishes) {
167
+ return pid;
168
+ }
106
169
  for (let waited = 0; waited < SETTLE_MS; waited += SETTLE_POLL_MS) {
107
170
  await setTimeout(SETTLE_POLL_MS);
108
171
  if (!isProcessAlive(pid)) {
109
- throw new Error(`the background loop started and stopped immediately (pid ${pid}). Details: ${logPath}`);
172
+ throw new Error(`the background agent started and stopped immediately (pid ${pid}). Details: ${logPath}`);
110
173
  }
111
174
  }
112
175
  return pid;
@@ -1 +1 @@
1
- {"version":3,"file":"detached.js","sourceRoot":"","sources":["../src/detached.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAoB,WAAW,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAOjF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAW,EAAW,EAAE;IACnD,IAAI,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAQ,KAA+B,CAAC,IAAI,KAAK,OAAO,CAAC;IAC7D,CAAC;AACL,CAAC,CAAC;AAIF,MAAM,SAAS,GAAG,KAAK,IAAqB,EAAE;IAE1C,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAElG,OAAO,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,MAAM,EAAE,CAAC;AAC7F,CAAC,CAAC;AAIF,MAAM,YAAY,GAAG,OAAO,CAAC;AAE7B,MAAM,QAAQ,GAAG,CAAC,OAAe,EAAE,OAAe,EAAW,EAAE;IAC3D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,OAAO,OAAO,KAAK,OAAO,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC;AACzF,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,GAAG,GAAW,OAAO,CAAC,GAAG,EAAE,IAAa,EAAmB,EAAE,CAC3F,GAAG,GAAG,IAAI,MAAM,SAAS,EAAE,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;AAUzE,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,OAAe,EAAkC,EAAE;IACnF,MAAM,CAAC,OAAO,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/G,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,SAAS,EAAE,CAAC,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC3E,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,OAAe,EAA+B,EAAE,CAAC,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC;AAQnH,MAAM,SAAS,GAAG,KAAK,CAAC;AACxB,MAAM,cAAc,GAAG,GAAG,CAAC;AAI3B,MAAM,aAAa,GAAG,MAAM,CAAC;AAI7B,MAAM,aAAa,GAAG,GAAG,CAAC;AAG1B,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,QAAqB,EAAE,IAAuB,EAAU,EAAE;IAC1F,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACrC,MAAM,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,QAAQ,CAAC;IACvC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IACzG,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,gCAAgC,OAAO,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC;AACrB,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,IAAY,EAAE,OAAe,EAAE,QAAqB,EAAE,IAAuB,EAAmB,EAAE;IACrI,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1F,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,CAAC;QACD,OAAO,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACjD,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE;gBACrC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,0BAA0B,aAAa,gBAAgB,OAAO,EAAE,CAAC,CAAC,CAAC;YACzG,CAAC,EAAE,aAAa,CAAC,CAAC;YAClB,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,CAAC,OAAmB,EAAQ,EAAE;gBACzC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,EAAE,CAAC;YACd,CAAC,CAAC;YACF,MAAM,OAAO,GAAG,GAAU,EAAE;gBACxB,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC/B,OAAO,IAAI,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,uCAAuC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,cAAc,OAAO,EAAE,CAAC,CAAC;YACpI,CAAC,CAAC;YACF,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBACvC,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACnC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;oBACV,OAAO;gBACX,CAAC;gBACD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClD,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YACxF,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC9E,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAI5D,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACb,OAAO;gBACX,CAAC;gBACD,KAAK,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/E,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;YAAS,CAAC;QACP,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;AACL,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,OAAe,EAAE,QAAqB,EAAE,IAAuB,EAAmB,EAAE;IACpH,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5H,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,IAAI,cAAc,EAAE,CAAC;QAChE,MAAM,UAAU,CAAC,cAAc,CAAC,CAAC;QACjC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,4DAA4D,GAAG,eAAe,OAAO,EAAE,CAAC,CAAC;QAC7G,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC,CAAC"}
1
+ {"version":3,"file":"detached.js","sourceRoot":"","sources":["../src/detached.ts"],"names":[],"mappings":"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"}
package/dist/home.d.ts CHANGED
@@ -4,5 +4,6 @@ export interface AgentHome {
4
4
  readonly configPath: string;
5
5
  }
6
6
  export declare const agentHome: (name: string) => AgentHome;
7
+ export declare const writeFileAtomic: (path: string, contents: string, mode?: number) => Promise<void>;
7
8
  export declare const writeSecretFile: (path: string, dir: string, contents: string) => Promise<void>;
8
9
  //# sourceMappingURL=home.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"home.d.ts","sourceRoot":"","sources":["../src/home.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAE5C,MAAM,WAAW,SAAS;IAEtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,SAAS,SAAU,MAAM,KAAG,SAGxC,CAAC;AAIF,eAAO,MAAM,eAAe,SAAgB,MAAM,OAAO,MAAM,YAAY,MAAM,KAAG,OAAO,CAAC,IAAI,CAG/F,CAAC"}
1
+ {"version":3,"file":"home.d.ts","sourceRoot":"","sources":["../src/home.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAE5C,MAAM,WAAW,SAAS;IAEtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,SAAS,SAAU,MAAM,KAAG,SAGxC,CAAC;AA0BF,eAAO,MAAM,eAAe,SAAgB,MAAM,YAAY,MAAM,oBAAiB,OAAO,CAAC,IAAI,CAUhG,CAAC;AAGF,eAAO,MAAM,eAAe,SAAgB,MAAM,OAAO,MAAM,YAAY,MAAM,KAAG,OAAO,CAAC,IAAI,CAI/F,CAAC"}
package/dist/home.js CHANGED
@@ -1,12 +1,44 @@
1
- import { mkdir, writeFile } from "node:fs/promises";
1
+ import { chmod, mkdir, rename, rm, writeFile } from "node:fs/promises";
2
2
  import { homedir } from "node:os";
3
3
  import { join } from "node:path";
4
+ import { setTimeout as sleep } from "node:timers/promises";
4
5
  export const agentHome = (name) => {
5
6
  const dir = join(homedir(), ".intentic", name);
6
7
  return { dir, configPath: join(dir, "config.json") };
7
8
  };
9
+ const TRANSIENT_RENAME = new Set(["EPERM", "EACCES", "EBUSY"]);
10
+ const RENAME_ATTEMPTS = 10;
11
+ const RENAME_RETRY_MS = 25;
12
+ const renameOver = async (from, to) => {
13
+ for (let attempt = 1;; attempt++) {
14
+ try {
15
+ await rename(from, to);
16
+ return;
17
+ }
18
+ catch (error) {
19
+ if (attempt >= RENAME_ATTEMPTS || !TRANSIENT_RENAME.has(error.code ?? "")) {
20
+ throw error;
21
+ }
22
+ await sleep(RENAME_RETRY_MS);
23
+ }
24
+ }
25
+ };
26
+ let staging = 0;
27
+ export const writeFileAtomic = async (path, contents, mode = 0o644) => {
28
+ staging += 1;
29
+ const staged = `${path}.${process.pid}-${staging}.tmp`;
30
+ try {
31
+ await writeFile(staged, contents, { encoding: "utf8", mode });
32
+ await renameOver(staged, path);
33
+ }
34
+ catch (error) {
35
+ await rm(staged, { force: true }).catch(() => undefined);
36
+ throw error;
37
+ }
38
+ };
8
39
  export const writeSecretFile = async (path, dir, contents) => {
9
40
  await mkdir(dir, { recursive: true, mode: 0o700 });
10
- await writeFile(path, contents, { encoding: "utf8", mode: 0o600 });
41
+ await chmod(dir, 0o700).catch(() => undefined);
42
+ await writeFileAtomic(path, contents, 0o600);
11
43
  };
12
44
  //# sourceMappingURL=home.js.map
package/dist/home.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"home.js","sourceRoot":"","sources":["../src/home.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAejC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAa,EAAE;IACjD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAC/C,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC;AACzD,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,IAAY,EAAE,GAAW,EAAE,QAAgB,EAAiB,EAAE;IAChG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACnD,MAAM,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACvE,CAAC,CAAC"}
1
+ {"version":3,"file":"home.js","sourceRoot":"","sources":["../src/home.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAe3D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAa,EAAE;IACjD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAC/C,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC;AACzD,CAAC,CAAC;AAGF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/D,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,MAAM,UAAU,GAAG,KAAK,EAAE,IAAY,EAAE,EAAU,EAAiB,EAAE;IACjE,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAChC,IAAI,CAAC;YACD,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACvB,OAAO;QACX,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,OAAO,IAAI,eAAe,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAE,KAA+B,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;gBACnG,MAAM,KAAK,CAAC;YAChB,CAAC;YAED,MAAM,KAAK,CAAC,eAAe,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAGF,IAAI,OAAO,GAAG,CAAC,CAAC;AAGhB,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,IAAY,EAAE,QAAgB,EAAE,IAAI,GAAG,KAAK,EAAiB,EAAE;IACjG,OAAO,IAAI,CAAC,CAAC;IACb,MAAM,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,MAAM,CAAC;IACvD,IAAI,CAAC;QACD,MAAM,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,IAAY,EAAE,GAAW,EAAE,QAAgB,EAAiB,EAAE;IAChG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACnD,MAAM,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACjD,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- export { agentHome, writeSecretFile, type AgentHome, type Log } from "./home.js";
1
+ export { agentHome, writeFileAtomic, writeSecretFile, type AgentHome, type Log } from "./home.js";
2
2
  export { cliLauncher, quotedCommandLine, stubCommand, WINDOWS_LAUNCH_STUB, windowsLaunchStub, type CliLauncher } from "./launcher.js";
3
- export { clearWindowsRunValue, linuxDesktopEntry, macLaunchAgentXml, registerAutostart, setWindowsRunValue, unregisterAutostart, windowsRunAddArgs, windowsRunDeleteArgs, type AutostartSpec, type LaunchAgentSpec, } from "./autostart.js";
4
- export { isProcessAlive, livePid, livePidRecord, type PidRecord, pidFileBody, spawnDetached } from "./detached.js";
3
+ export { autostart, clearWindowsRunValue, linuxDesktopEntry, macLaunchAgentXml, ROTATE_LOG_SH, setWindowsRunValue, supervisedPath, windowsRunAddArgs, windowsRunDeleteArgs, type Autostart, type AutostartKind, type AutostartSpec, type LaunchAgentSpec, } from "./autostart.js";
4
+ export { claimPidFile, holdPidFile, isProcessAlive, livePid, livePidRecord, LOG_ROTATE_BYTES, type PidClaim, type PidRecord, pidFileBody, releasePidFile, spawnDetached, stopProcess, } from "./detached.js";
5
5
  export { agentException } from "./text.js";
6
6
  export { asLabel, createUi, estimate, humanDuration, truncate, wrap, type Footnote, type PlanStep, type RowOutcome, type Ui, type UiMode, type UiProcess, } from "./ui.js";
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACtI,OAAO,EACH,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,eAAe,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnH,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACH,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,IAAI,EACJ,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,EAAE,EACP,KAAK,MAAM,EACX,KAAK,SAAS,GACjB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AAClG,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACtI,OAAO,EACH,SAAS,EACT,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,eAAe,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACH,YAAY,EACZ,WAAW,EACX,cAAc,EACd,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,WAAW,EACX,cAAc,EACd,aAAa,EACb,WAAW,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACH,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,IAAI,EACJ,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,EAAE,EACP,KAAK,MAAM,EACX,KAAK,SAAS,GACjB,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- export { agentHome, writeSecretFile } from "./home.js";
1
+ export { agentHome, writeFileAtomic, writeSecretFile } from "./home.js";
2
2
  export { cliLauncher, quotedCommandLine, stubCommand, WINDOWS_LAUNCH_STUB, windowsLaunchStub } from "./launcher.js";
3
- export { clearWindowsRunValue, linuxDesktopEntry, macLaunchAgentXml, registerAutostart, setWindowsRunValue, unregisterAutostart, windowsRunAddArgs, windowsRunDeleteArgs, } from "./autostart.js";
4
- export { isProcessAlive, livePid, livePidRecord, pidFileBody, spawnDetached } from "./detached.js";
3
+ export { autostart, clearWindowsRunValue, linuxDesktopEntry, macLaunchAgentXml, ROTATE_LOG_SH, setWindowsRunValue, supervisedPath, windowsRunAddArgs, windowsRunDeleteArgs, } from "./autostart.js";
4
+ export { claimPidFile, holdPidFile, isProcessAlive, livePid, livePidRecord, LOG_ROTATE_BYTES, pidFileBody, releasePidFile, spawnDetached, stopProcess, } from "./detached.js";
5
5
  export { agentException } from "./text.js";
6
6
  export { asLabel, createUi, estimate, humanDuration, truncate, wrap, } from "./ui.js";
7
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,eAAe,EAA4B,MAAM,WAAW,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EAAoB,MAAM,eAAe,CAAC;AACtI,OAAO,EACH,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,GAGvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAkB,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnH,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACH,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,IAAI,GAOP,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAA4B,MAAM,WAAW,CAAC;AAClG,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EAAoB,MAAM,eAAe,CAAC;AACtI,OAAO,EACH,SAAS,EACT,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,GAKvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACH,YAAY,EACZ,WAAW,EACX,cAAc,EACd,OAAO,EACP,aAAa,EACb,gBAAgB,EAGhB,WAAW,EACX,cAAc,EACd,aAAa,EACb,WAAW,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACH,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,IAAI,GAOP,MAAM,SAAS,CAAC"}
package/dist/ui.js CHANGED
@@ -147,7 +147,7 @@ export const createUi = (process) => {
147
147
  frame += 1;
148
148
  repaint();
149
149
  }, TICK_MS);
150
- ticker.unref?.();
150
+ ticker.unref();
151
151
  };
152
152
  const settle = () => {
153
153
  if (label === "") {
package/dist/ui.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@intentic/local-agent",
3
- "version": "1.304.0",
4
- "description": "The plumbing every intentic CLI that lives on a user's own computer needs, state home, login autostart, self-relaunch, detached background loop",
3
+ "version": "1.306.0",
4
+ "description": "The plumbing every intentic CLI that lives on a user's own computer needs, state home, login autostart, self-relaunch, detached background agent",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "repository": {
@@ -30,21 +30,21 @@
30
30
  }
31
31
  },
32
32
  "dependencies": {
33
- "@intentic/base": "1.304.0",
33
+ "@intentic/base": "1.306.0",
34
34
  "tslib": "2.8.1"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@intentic/testing": "0.0.0",
38
38
  "@intentic/tsconfig": "0.0.0",
39
+ "@types/bun": "1.4.0",
39
40
  "@types/node": "24.13.2",
40
- "@typescript/native-preview": "7.0.0-dev.20260707.2",
41
- "vitest": "4.1.10"
41
+ "@typescript/native-preview": "7.0.0-dev.20260707.2"
42
42
  },
43
43
  "scripts": {
44
44
  "build": "tsgo",
45
45
  "typecheck": "tsgo --noEmit -p tsconfig.test.json",
46
46
  "watch": "tsgo --build --watch",
47
- "test": "vitest run",
48
- "test:watch": "vitest"
47
+ "test": "suites",
48
+ "test:watch": "suites --watch"
49
49
  }
50
50
  }