@monotykamary/localterm-server 1.20.0 → 1.22.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/dist/caffeinate-manager.d.ts +42 -0
- package/dist/caffeinate-manager.d.ts.map +1 -0
- package/dist/caffeinate-manager.js +158 -0
- package/dist/caffeinate-manager.js.map +1 -0
- package/dist/caffeinate-preferences-store.d.ts +13 -0
- package/dist/caffeinate-preferences-store.d.ts.map +1 -0
- package/dist/caffeinate-preferences-store.js +98 -0
- package/dist/caffeinate-preferences-store.js.map +1 -0
- package/dist/caffeinate-process-match.d.ts +10 -0
- package/dist/caffeinate-process-match.d.ts.map +1 -0
- package/dist/caffeinate-process-match.js +76 -0
- package/dist/caffeinate-process-match.js.map +1 -0
- package/dist/constants.d.ts +5 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +17 -0
- package/dist/constants.js.map +1 -1
- package/dist/git-diff.d.ts +3 -1
- package/dist/git-diff.d.ts.map +1 -1
- package/dist/git-diff.js +137 -7
- package/dist/git-diff.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +64 -9
- package/dist/index.js.map +1 -1
- package/dist/protocol.d.ts +3 -3
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +2 -2
- package/dist/protocol.js.map +1 -1
- package/dist/schemas.d.ts +67 -3
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +71 -18
- package/dist/schemas.js.map +1 -1
- package/dist/session-registry.d.ts +1 -0
- package/dist/session-registry.d.ts.map +1 -1
- package/dist/session-registry.js +6 -0
- package/dist/session-registry.js.map +1 -1
- package/dist/types.d.ts +5 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
import type { CaffeinateController } from "./caffeinate-controller.js";
|
|
3
|
+
import type { CaffeinatePreferencesStore } from "./caffeinate-preferences-store.js";
|
|
4
|
+
import { type SnapshotProcesses } from "./caffeinate-process-match.js";
|
|
5
|
+
import type { CaffeinateMode } from "./types.js";
|
|
6
|
+
export interface CaffeinateManagerOptions {
|
|
7
|
+
controller: CaffeinateController;
|
|
8
|
+
store: CaffeinatePreferencesStore;
|
|
9
|
+
listSessionPids: () => number[];
|
|
10
|
+
snapshotProcesses?: SnapshotProcesses;
|
|
11
|
+
defaultCommands?: readonly string[];
|
|
12
|
+
}
|
|
13
|
+
interface CaffeinateManagerEvents {
|
|
14
|
+
change: [];
|
|
15
|
+
}
|
|
16
|
+
export declare class CaffeinateManager extends EventEmitter<CaffeinateManagerEvents> {
|
|
17
|
+
private readonly controller;
|
|
18
|
+
private readonly store;
|
|
19
|
+
private readonly listSessionPids;
|
|
20
|
+
private readonly snapshotProcesses;
|
|
21
|
+
readonly defaultCommands: readonly string[];
|
|
22
|
+
private autoActive;
|
|
23
|
+
private pokeTimer;
|
|
24
|
+
private polling;
|
|
25
|
+
private pollQueued;
|
|
26
|
+
private disposed;
|
|
27
|
+
constructor(options: CaffeinateManagerOptions);
|
|
28
|
+
get supported(): boolean;
|
|
29
|
+
get active(): boolean;
|
|
30
|
+
get mode(): CaffeinateMode;
|
|
31
|
+
get commands(): string[];
|
|
32
|
+
setMode(mode: CaffeinateMode): void;
|
|
33
|
+
setCommands(commands: readonly string[]): void;
|
|
34
|
+
pokeAuto(): void;
|
|
35
|
+
pollNow(): Promise<void>;
|
|
36
|
+
dispose(): void;
|
|
37
|
+
private triggerSet;
|
|
38
|
+
private recompute;
|
|
39
|
+
private pollAuto;
|
|
40
|
+
}
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=caffeinate-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caffeinate-manager.d.ts","sourceRoot":"","sources":["../src/caffeinate-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAC;AAKvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,oBAAoB,CAAC;IACjC,KAAK,EAAE,0BAA0B,CAAC;IAGlC,eAAe,EAAE,MAAM,MAAM,EAAE,CAAC;IAEhC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAEtC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,UAAU,uBAAuB;IAC/B,MAAM,EAAE,EAAE,CAAC;CACZ;AAeD,qBAAa,iBAAkB,SAAQ,YAAY,CAAC,uBAAuB,CAAC;IAC1E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAE5C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,EAAE,wBAAwB;IAkB7C,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,IAAI,IAAI,cAAc,CAEzB;IAED,IAAI,QAAQ,IAAI,MAAM,EAAE,CAEvB;IAED,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAWnC,WAAW,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAY9C,QAAQ,IAAI,IAAI;IAYhB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,OAAO,IAAI,IAAI;IAYf,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,SAAS;YAMH,QAAQ;CAgCvB"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
import { anySessionRunsTrigger, defaultSnapshotProcesses, } from "./caffeinate-process-match.js";
|
|
3
|
+
import { CAFFEINATE_AUTO_DEFAULT_COMMANDS, CAFFEINATE_AUTO_POKE_DEBOUNCE_MS, } from "./constants.js";
|
|
4
|
+
// Decides *when* the daemon's single keep-awake process runs, on top of the
|
|
5
|
+
// dumb CaffeinateController (which only knows start/stop). In "on" it is always
|
|
6
|
+
// active, in "off" never, and in "automatic" it tracks whether any recognized
|
|
7
|
+
// program is running in a localterm session — discovered by walking the `ps`
|
|
8
|
+
// process tree under each session's shell. Emits `change` whenever any
|
|
9
|
+
// broadcastable field (mode/active/commands) moves.
|
|
10
|
+
//
|
|
11
|
+
// Automatic detection is event-driven: it never polls on a timer. A `ps`
|
|
12
|
+
// snapshot is taken only in response to an event — a session's foreground
|
|
13
|
+
// process changing, a session connecting/disconnecting, or a mode/command
|
|
14
|
+
// change — via the debounced `pokeAuto`. (The foreground signal itself rides
|
|
15
|
+
// on node-pty's existing per-session foreground tracking, which powers the
|
|
16
|
+
// favicon and exists independently of keep-awake.)
|
|
17
|
+
export class CaffeinateManager extends EventEmitter {
|
|
18
|
+
controller;
|
|
19
|
+
store;
|
|
20
|
+
listSessionPids;
|
|
21
|
+
snapshotProcesses;
|
|
22
|
+
defaultCommands;
|
|
23
|
+
autoActive = false;
|
|
24
|
+
pokeTimer = null;
|
|
25
|
+
polling = false;
|
|
26
|
+
pollQueued = false;
|
|
27
|
+
disposed = false;
|
|
28
|
+
constructor(options) {
|
|
29
|
+
super();
|
|
30
|
+
this.controller = options.controller;
|
|
31
|
+
this.store = options.store;
|
|
32
|
+
this.listSessionPids = options.listSessionPids;
|
|
33
|
+
this.snapshotProcesses = options.snapshotProcesses ?? defaultSnapshotProcesses;
|
|
34
|
+
this.defaultCommands = options.defaultCommands ?? CAFFEINATE_AUTO_DEFAULT_COMMANDS;
|
|
35
|
+
// An unexpected death of the caffeinate process flips controller state; pass
|
|
36
|
+
// that through so every tab rebroadcasts the authoritative `active`.
|
|
37
|
+
this.controller.on("change", () => this.emit("change"));
|
|
38
|
+
this.recompute();
|
|
39
|
+
// One snapshot at startup in case a trigger is already running before any
|
|
40
|
+
// event arrives; from here on detection is purely event-driven.
|
|
41
|
+
if (this.mode === "automatic" && this.supported)
|
|
42
|
+
void this.pollAuto();
|
|
43
|
+
}
|
|
44
|
+
get supported() {
|
|
45
|
+
return this.controller.supported;
|
|
46
|
+
}
|
|
47
|
+
get active() {
|
|
48
|
+
return this.controller.active;
|
|
49
|
+
}
|
|
50
|
+
get mode() {
|
|
51
|
+
return this.store.getMode();
|
|
52
|
+
}
|
|
53
|
+
get commands() {
|
|
54
|
+
return this.store.getCommands();
|
|
55
|
+
}
|
|
56
|
+
setMode(mode) {
|
|
57
|
+
if (this.disposed)
|
|
58
|
+
return;
|
|
59
|
+
this.store.setMode(mode);
|
|
60
|
+
// Leaving automatic clears the cached detection so a later return to
|
|
61
|
+
// automatic re-derives it from scratch rather than trusting a stale flag.
|
|
62
|
+
if (mode !== "automatic")
|
|
63
|
+
this.autoActive = false;
|
|
64
|
+
this.recompute();
|
|
65
|
+
if (mode === "automatic" && this.supported)
|
|
66
|
+
void this.pollAuto();
|
|
67
|
+
this.emit("change");
|
|
68
|
+
}
|
|
69
|
+
setCommands(commands) {
|
|
70
|
+
if (this.disposed)
|
|
71
|
+
return;
|
|
72
|
+
this.store.setCommands(commands);
|
|
73
|
+
// The trigger set changed; re-derive automatic detection immediately.
|
|
74
|
+
if (this.mode === "automatic" && this.supported)
|
|
75
|
+
void this.pollAuto();
|
|
76
|
+
this.emit("change");
|
|
77
|
+
}
|
|
78
|
+
// Cheap, debounced nudge to re-check automatic detection in response to an
|
|
79
|
+
// event (a session's foreground process changing, or a session
|
|
80
|
+
// connecting/disconnecting). The debounce coalesces a burst of simultaneous
|
|
81
|
+
// events into a single `ps` snapshot — it fires once and does not repeat.
|
|
82
|
+
pokeAuto() {
|
|
83
|
+
if (this.disposed || this.mode !== "automatic" || !this.supported)
|
|
84
|
+
return;
|
|
85
|
+
if (this.pokeTimer !== null)
|
|
86
|
+
return;
|
|
87
|
+
this.pokeTimer = setTimeout(() => {
|
|
88
|
+
this.pokeTimer = null;
|
|
89
|
+
void this.pollAuto();
|
|
90
|
+
}, CAFFEINATE_AUTO_POKE_DEBOUNCE_MS);
|
|
91
|
+
this.pokeTimer.unref?.();
|
|
92
|
+
}
|
|
93
|
+
// Force an immediate automatic re-check and resolve when it settles. Used by
|
|
94
|
+
// tests; production code re-checks via the event-driven debounced pokeAuto.
|
|
95
|
+
pollNow() {
|
|
96
|
+
return this.pollAuto();
|
|
97
|
+
}
|
|
98
|
+
dispose() {
|
|
99
|
+
this.disposed = true;
|
|
100
|
+
if (this.pokeTimer !== null) {
|
|
101
|
+
clearTimeout(this.pokeTimer);
|
|
102
|
+
this.pokeTimer = null;
|
|
103
|
+
}
|
|
104
|
+
this.controller.dispose();
|
|
105
|
+
this.removeAllListeners();
|
|
106
|
+
}
|
|
107
|
+
// The effective keep-awake triggers: fixed defaults plus the user's customs,
|
|
108
|
+
// lowercased for case-insensitive matching.
|
|
109
|
+
triggerSet() {
|
|
110
|
+
const triggers = new Set();
|
|
111
|
+
for (const command of this.defaultCommands)
|
|
112
|
+
triggers.add(command.toLowerCase());
|
|
113
|
+
for (const command of this.store.getCommands())
|
|
114
|
+
triggers.add(command.toLowerCase());
|
|
115
|
+
return triggers;
|
|
116
|
+
}
|
|
117
|
+
recompute() {
|
|
118
|
+
const mode = this.mode;
|
|
119
|
+
const desired = mode === "on" || (mode === "automatic" && this.autoActive);
|
|
120
|
+
this.controller.setActive(desired);
|
|
121
|
+
}
|
|
122
|
+
async pollAuto() {
|
|
123
|
+
if (this.disposed || this.mode !== "automatic" || !this.supported)
|
|
124
|
+
return;
|
|
125
|
+
// Serialize: if a snapshot is already running, run exactly one more after it
|
|
126
|
+
// so the latest state always wins without piling up `ps` calls.
|
|
127
|
+
if (this.polling) {
|
|
128
|
+
this.pollQueued = true;
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
this.polling = true;
|
|
132
|
+
try {
|
|
133
|
+
const pids = this.listSessionPids();
|
|
134
|
+
let next = false;
|
|
135
|
+
if (pids.length > 0) {
|
|
136
|
+
const snapshot = await this.snapshotProcesses();
|
|
137
|
+
next = anySessionRunsTrigger(pids, snapshot, this.triggerSet());
|
|
138
|
+
}
|
|
139
|
+
if (this.disposed || this.mode !== "automatic")
|
|
140
|
+
return;
|
|
141
|
+
if (next !== this.autoActive) {
|
|
142
|
+
this.autoActive = next;
|
|
143
|
+
this.recompute();
|
|
144
|
+
// controller emits `change` only when `active` actually flips; if the
|
|
145
|
+
// process state didn't change but detection did, no broadcast is needed
|
|
146
|
+
// since `active` is unchanged.
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
finally {
|
|
150
|
+
this.polling = false;
|
|
151
|
+
if (this.pollQueued && !this.disposed) {
|
|
152
|
+
this.pollQueued = false;
|
|
153
|
+
void this.pollAuto();
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=caffeinate-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caffeinate-manager.js","sourceRoot":"","sources":["../src/caffeinate-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CaffeinateMode } from "./types.js";
|
|
2
|
+
export declare class CaffeinatePreferencesStore {
|
|
3
|
+
private readonly filePath;
|
|
4
|
+
private preferences;
|
|
5
|
+
constructor(filePath: string);
|
|
6
|
+
getMode(): CaffeinateMode;
|
|
7
|
+
getCommands(): string[];
|
|
8
|
+
setMode(mode: CaffeinateMode): CaffeinateMode;
|
|
9
|
+
setCommands(commands: readonly string[]): string[];
|
|
10
|
+
private load;
|
|
11
|
+
private persist;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=caffeinate-preferences-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caffeinate-preferences-store.d.ts","sourceRoot":"","sources":["../src/caffeinate-preferences-store.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAoCjD,qBAAa,0BAA0B;IAGzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,OAAO,CAAC,WAAW,CAAqD;gBAE3C,QAAQ,EAAE,MAAM;IAI7C,OAAO,IAAI,cAAc;IAIzB,WAAW,IAAI,MAAM,EAAE;IAIvB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc;IAQ7C,WAAW,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE;IAMlD,OAAO,CAAC,IAAI;IAyBZ,OAAO,CAAC,OAAO;CAWhB"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { CAFFEINATE_PREFERENCES_FILE_VERSION, MAX_CAFFEINATE_COMMAND_LENGTH, MAX_CAFFEINATE_COMMANDS, } from "./constants.js";
|
|
4
|
+
import { caffeinatePreferencesFileSchema } from "./schemas.js";
|
|
5
|
+
// Default to "automatic": keep-awake follows recognized programs out of the box
|
|
6
|
+
// (the behavior the user asked to make default), with no custom commands yet.
|
|
7
|
+
const DEFAULT_PREFERENCES = {
|
|
8
|
+
mode: "automatic",
|
|
9
|
+
commands: [],
|
|
10
|
+
};
|
|
11
|
+
// Trim, drop empties, cap length, dedupe case-insensitively (keeping the first
|
|
12
|
+
// spelling), and cap the count. The trigger match itself is case-insensitive,
|
|
13
|
+
// so "Claude" and "claude" are the same trigger.
|
|
14
|
+
const sanitizeCommands = (commands) => {
|
|
15
|
+
const seen = new Set();
|
|
16
|
+
const result = [];
|
|
17
|
+
for (const raw of commands) {
|
|
18
|
+
const trimmed = raw.trim();
|
|
19
|
+
if (!trimmed)
|
|
20
|
+
continue;
|
|
21
|
+
const capped = trimmed.slice(0, MAX_CAFFEINATE_COMMAND_LENGTH);
|
|
22
|
+
const key = capped.toLowerCase();
|
|
23
|
+
if (seen.has(key))
|
|
24
|
+
continue;
|
|
25
|
+
seen.add(key);
|
|
26
|
+
result.push(capped);
|
|
27
|
+
if (result.length >= MAX_CAFFEINATE_COMMANDS)
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
};
|
|
32
|
+
// Owns the persisted keep-awake preferences (mode + custom automatic-mode
|
|
33
|
+
// trigger commands) in ~/.localterm/caffeinate.json. Mirrors AutomationStore's
|
|
34
|
+
// load/persist shape (zod-validated read, atomic tmp+rename write).
|
|
35
|
+
export class CaffeinatePreferencesStore {
|
|
36
|
+
filePath;
|
|
37
|
+
preferences = { ...DEFAULT_PREFERENCES };
|
|
38
|
+
constructor(filePath) {
|
|
39
|
+
this.filePath = filePath;
|
|
40
|
+
this.load();
|
|
41
|
+
}
|
|
42
|
+
getMode() {
|
|
43
|
+
return this.preferences.mode;
|
|
44
|
+
}
|
|
45
|
+
getCommands() {
|
|
46
|
+
return [...this.preferences.commands];
|
|
47
|
+
}
|
|
48
|
+
setMode(mode) {
|
|
49
|
+
if (mode !== this.preferences.mode) {
|
|
50
|
+
this.preferences = { ...this.preferences, mode };
|
|
51
|
+
this.persist();
|
|
52
|
+
}
|
|
53
|
+
return this.preferences.mode;
|
|
54
|
+
}
|
|
55
|
+
setCommands(commands) {
|
|
56
|
+
this.preferences = { ...this.preferences, commands: sanitizeCommands(commands) };
|
|
57
|
+
this.persist();
|
|
58
|
+
return [...this.preferences.commands];
|
|
59
|
+
}
|
|
60
|
+
load() {
|
|
61
|
+
let raw;
|
|
62
|
+
try {
|
|
63
|
+
raw = fs.readFileSync(this.filePath, "utf8");
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
let json;
|
|
69
|
+
try {
|
|
70
|
+
json = JSON.parse(raw);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
console.warn(`caffeinate preferences file invalid; using defaults (${this.filePath})`);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const parsed = caffeinatePreferencesFileSchema.safeParse(json);
|
|
77
|
+
if (!parsed.success) {
|
|
78
|
+
console.warn(`caffeinate preferences file invalid; using defaults (${this.filePath})`);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
this.preferences = {
|
|
82
|
+
mode: parsed.data.mode,
|
|
83
|
+
commands: sanitizeCommands(parsed.data.commands),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
persist() {
|
|
87
|
+
fs.mkdirSync(path.dirname(this.filePath), { recursive: true });
|
|
88
|
+
const payload = {
|
|
89
|
+
version: CAFFEINATE_PREFERENCES_FILE_VERSION,
|
|
90
|
+
mode: this.preferences.mode,
|
|
91
|
+
commands: this.preferences.commands,
|
|
92
|
+
};
|
|
93
|
+
const tmpPath = `${this.filePath}.tmp`;
|
|
94
|
+
fs.writeFileSync(tmpPath, `${JSON.stringify(payload, null, 2)}\n`, "utf8");
|
|
95
|
+
fs.renameSync(tmpPath, this.filePath);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=caffeinate-preferences-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caffeinate-preferences-store.js","sourceRoot":"","sources":["../src/caffeinate-preferences-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface ProcessSnapshotEntry {
|
|
2
|
+
pid: number;
|
|
3
|
+
ppid: number;
|
|
4
|
+
command: string;
|
|
5
|
+
}
|
|
6
|
+
export type SnapshotProcesses = () => Promise<ProcessSnapshotEntry[]>;
|
|
7
|
+
export declare const commandMatchesTriggers: (command: string, triggers: ReadonlySet<string>) => boolean;
|
|
8
|
+
export declare const anySessionRunsTrigger: (sessionPids: readonly number[], snapshot: readonly ProcessSnapshotEntry[], triggers: ReadonlySet<string>) => boolean;
|
|
9
|
+
export declare const defaultSnapshotProcesses: SnapshotProcesses;
|
|
10
|
+
//# sourceMappingURL=caffeinate-process-match.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caffeinate-process-match.d.ts","sourceRoot":"","sources":["../src/caffeinate-process-match.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAMtE,eAAO,MAAM,sBAAsB,GAAI,SAAS,MAAM,EAAE,UAAU,WAAW,CAAC,MAAM,CAAC,KAAG,OASvF,CAAC;AAKF,eAAO,MAAM,qBAAqB,GAChC,aAAa,SAAS,MAAM,EAAE,EAC9B,UAAU,SAAS,oBAAoB,EAAE,EACzC,UAAU,WAAW,CAAC,MAAM,CAAC,KAC5B,OAsBF,CAAC;AAQF,eAAO,MAAM,wBAAwB,EAAE,iBAwBnC,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
// True when any whitespace-separated token of `command` has a basename equal
|
|
3
|
+
// (case-insensitively) to a trigger. Token-basename matching is what lets
|
|
4
|
+
// `node /opt/homebrew/bin/claude` count as `claude` while keeping short
|
|
5
|
+
// triggers like `pi` from matching substrings of unrelated paths.
|
|
6
|
+
export const commandMatchesTriggers = (command, triggers) => {
|
|
7
|
+
if (triggers.size === 0)
|
|
8
|
+
return false;
|
|
9
|
+
for (const token of command.split(/\s+/)) {
|
|
10
|
+
if (!token)
|
|
11
|
+
continue;
|
|
12
|
+
const slash = token.lastIndexOf("/");
|
|
13
|
+
const base = (slash === -1 ? token : token.slice(slash + 1)).toLowerCase();
|
|
14
|
+
if (base && triggers.has(base))
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
return false;
|
|
18
|
+
};
|
|
19
|
+
// Walk the process tree rooted at each session shell pid and report whether any
|
|
20
|
+
// descendant's command line matches a trigger. The shell pids themselves are
|
|
21
|
+
// roots (their command is just the shell) and never matched directly.
|
|
22
|
+
export const anySessionRunsTrigger = (sessionPids, snapshot, triggers) => {
|
|
23
|
+
if (sessionPids.length === 0 || triggers.size === 0)
|
|
24
|
+
return false;
|
|
25
|
+
const childrenByParent = new Map();
|
|
26
|
+
for (const entry of snapshot) {
|
|
27
|
+
const list = childrenByParent.get(entry.ppid);
|
|
28
|
+
if (list)
|
|
29
|
+
list.push(entry);
|
|
30
|
+
else
|
|
31
|
+
childrenByParent.set(entry.ppid, [entry]);
|
|
32
|
+
}
|
|
33
|
+
const visited = new Set(sessionPids);
|
|
34
|
+
const queue = [...sessionPids];
|
|
35
|
+
while (queue.length > 0) {
|
|
36
|
+
const pid = queue.shift();
|
|
37
|
+
const children = childrenByParent.get(pid);
|
|
38
|
+
if (!children)
|
|
39
|
+
continue;
|
|
40
|
+
for (const child of children) {
|
|
41
|
+
if (visited.has(child.pid))
|
|
42
|
+
continue;
|
|
43
|
+
visited.add(child.pid);
|
|
44
|
+
if (commandMatchesTriggers(child.command, triggers))
|
|
45
|
+
return true;
|
|
46
|
+
queue.push(child.pid);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
};
|
|
51
|
+
const PS_LINE = /^\s*(\d+)\s+(\d+)\s+(.*)$/;
|
|
52
|
+
// Default snapshot: a single `ps` listing of every process with its pid, ppid,
|
|
53
|
+
// and full command line. The command may be truncated to terminal width, but
|
|
54
|
+
// only the leading binary token matters for matching, so trailing-arg loss is
|
|
55
|
+
// harmless. Resolves to [] on any failure (caffeinate just stays as-is).
|
|
56
|
+
export const defaultSnapshotProcesses = () => new Promise((resolve) => {
|
|
57
|
+
execFile("ps", ["-A", "-o", "pid=,ppid=,command="], { maxBuffer: 8 * 1024 * 1024 }, (error, stdout) => {
|
|
58
|
+
if (error) {
|
|
59
|
+
resolve([]);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const entries = [];
|
|
63
|
+
for (const line of stdout.split("\n")) {
|
|
64
|
+
const match = PS_LINE.exec(line);
|
|
65
|
+
if (!match)
|
|
66
|
+
continue;
|
|
67
|
+
entries.push({
|
|
68
|
+
pid: Number(match[1]),
|
|
69
|
+
ppid: Number(match[2]),
|
|
70
|
+
command: match[3],
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
resolve(entries);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
//# sourceMappingURL=caffeinate-process-match.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caffeinate-process-match.js","sourceRoot":"","sources":["../src/caffeinate-process-match.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -9,6 +9,11 @@ export declare const COLORTERM_VALUE = "truecolor";
|
|
|
9
9
|
export declare const LOCALTERM_VALUE = "1";
|
|
10
10
|
export declare const CAFFEINATE_BINARY = "caffeinate";
|
|
11
11
|
export declare const CAFFEINATE_ARGS: readonly string[];
|
|
12
|
+
export declare const CAFFEINATE_AUTO_DEFAULT_COMMANDS: readonly string[];
|
|
13
|
+
export declare const CAFFEINATE_PREFERENCES_FILE_VERSION = 1;
|
|
14
|
+
export declare const CAFFEINATE_AUTO_POKE_DEBOUNCE_MS = 150;
|
|
15
|
+
export declare const MAX_CAFFEINATE_COMMANDS = 50;
|
|
16
|
+
export declare const MAX_CAFFEINATE_COMMAND_LENGTH = 128;
|
|
12
17
|
export declare const TITLE_MAX_PATH_SEGMENTS = 1;
|
|
13
18
|
/**
|
|
14
19
|
* Strip terminal-emulator identity env vars inherited from the daemon's parent.
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,OAAO,CAAC;AACjC,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,YAAY,MAAM,CAAC;AAChC,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAEhD,eAAO,MAAM,SAAS,mBAAmB,CAAC;AAC1C,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,eAAe,MAAM,CAAC;AAInC,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAC9C,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.js
CHANGED
|
@@ -11,6 +11,23 @@ export const LOCALTERM_VALUE = "1";
|
|
|
11
11
|
// sleep — held for as long as the spawned process lives.
|
|
12
12
|
export const CAFFEINATE_BINARY = "caffeinate";
|
|
13
13
|
export const CAFFEINATE_ARGS = ["-dims"];
|
|
14
|
+
// Keep-awake "automatic" mode recognizes these commands out of the box and
|
|
15
|
+
// caffeinates whenever one is running in any localterm session. Fixed — the
|
|
16
|
+
// user can add their own on top but cannot remove these.
|
|
17
|
+
export const CAFFEINATE_AUTO_DEFAULT_COMMANDS = [
|
|
18
|
+
"claude",
|
|
19
|
+
"codex",
|
|
20
|
+
"opencode",
|
|
21
|
+
"pi",
|
|
22
|
+
];
|
|
23
|
+
export const CAFFEINATE_PREFERENCES_FILE_VERSION = 1;
|
|
24
|
+
// Automatic detection is event-driven (no timer): a `ps` snapshot is taken only
|
|
25
|
+
// in response to a foreground change or a session connect/disconnect. This
|
|
26
|
+
// debounce window coalesces a burst of such events into a single snapshot; it
|
|
27
|
+
// fires once and does not repeat.
|
|
28
|
+
export const CAFFEINATE_AUTO_POKE_DEBOUNCE_MS = 150;
|
|
29
|
+
export const MAX_CAFFEINATE_COMMANDS = 50;
|
|
30
|
+
export const MAX_CAFFEINATE_COMMAND_LENGTH = 128;
|
|
14
31
|
export const TITLE_MAX_PATH_SEGMENTS = 1;
|
|
15
32
|
/**
|
|
16
33
|
* Strip terminal-emulator identity env vars inherited from the daemon's parent.
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/git-diff.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GitDiffFileStatus, GitDiffResponse, GitDiffSummary } from "./types.js";
|
|
1
|
+
import type { GitDiffFileListResponse, GitDiffFilePatch, GitDiffFileStatus, GitDiffResponse, GitDiffSummary } from "./types.js";
|
|
2
2
|
export interface NumstatEntry {
|
|
3
3
|
path: string;
|
|
4
4
|
oldPath: string | null;
|
|
@@ -22,4 +22,6 @@ export declare const splitPatchByFile: (raw: string) => string[];
|
|
|
22
22
|
export declare const getGitDiffSummary: (cwd: string) => Promise<GitDiffSummary>;
|
|
23
23
|
export declare const buildUntrackedPatch: (content: string) => string;
|
|
24
24
|
export declare const getGitDiff: (cwd: string) => Promise<GitDiffResponse>;
|
|
25
|
+
export declare const getGitDiffFiles: (cwd: string) => Promise<GitDiffFileListResponse>;
|
|
26
|
+
export declare const getGitDiffFilePatch: (cwd: string, requestedPath: string) => Promise<GitDiffFilePatch>;
|
|
25
27
|
//# sourceMappingURL=git-diff.d.ts.map
|
package/dist/git-diff.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-diff.d.ts","sourceRoot":"","sources":["../src/git-diff.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"git-diff.d.ts","sourceRoot":"","sources":["../src/git-diff.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAEV,uBAAuB,EAEvB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACf,MAAM,YAAY,CAAC;AAqDpB,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,YAAY,EAsBvD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAsB3E,CAAC;AAIF,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,MAAM,EAC8B,CAAC;AA4EpF,eAAO,MAAM,iBAAiB,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,cAAc,CAmC3E,CAAC;AAIF,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,KAAG,MAQrD,CAAC;AAiEF,eAAO,MAAM,UAAU,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,eAAe,CA0FrE,CAAC;AAMF,eAAO,MAAM,eAAe,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,uBAAuB,CAyClF,CAAC;AAMF,eAAO,MAAM,mBAAmB,GAC9B,KAAK,MAAM,EACX,eAAe,MAAM,KACpB,OAAO,CAAC,gBAAgB,CA0D1B,CAAC"}
|