@monotykamary/localterm-server 2.49.0 → 2.50.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/automation-git-watcher.d.ts +35 -0
- package/dist/automation-git-watcher.d.ts.map +1 -0
- package/dist/automation-git-watcher.js +235 -0
- package/dist/automation-git-watcher.js.map +1 -0
- package/dist/default-shell.d.ts +0 -1
- package/dist/default-shell.d.ts.map +1 -1
- package/dist/default-shell.js +1 -1
- package/dist/default-shell.js.map +1 -1
- package/dist/git-diff-watcher.d.ts +5 -0
- package/dist/git-diff-watcher.d.ts.map +1 -1
- package/dist/git-diff-watcher.js +1 -1
- package/dist/git-diff-watcher.js.map +1 -1
- package/dist/git-metadata-coordinator.d.ts +1 -0
- package/dist/git-metadata-coordinator.d.ts.map +1 -1
- package/dist/git-metadata-coordinator.js +12 -0
- package/dist/git-metadata-coordinator.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -2
- package/dist/index.js.map +1 -1
- package/dist/session-manager.d.ts.map +1 -1
- package/dist/session-manager.js +5 -0
- package/dist/session-manager.js.map +1 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +8 -3
- package/dist/session.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
import type { Automation } from "./types.js";
|
|
3
|
+
import { type GitRefEventName } from "./git-diff-watcher.js";
|
|
4
|
+
interface AutomationGitWatcherEvents {
|
|
5
|
+
refEvent: [eventName: GitRefEventName, repoRoot: string];
|
|
6
|
+
}
|
|
7
|
+
interface WatchHandle {
|
|
8
|
+
close: () => void;
|
|
9
|
+
unref?: () => void;
|
|
10
|
+
}
|
|
11
|
+
type WatchFn = (target: string, options: {
|
|
12
|
+
recursive: boolean;
|
|
13
|
+
}, listener: (event: string, filename: string | null) => void) => WatchHandle;
|
|
14
|
+
interface AutomationGitWatcherOptions {
|
|
15
|
+
throttleMs: number;
|
|
16
|
+
watch?: WatchFn;
|
|
17
|
+
}
|
|
18
|
+
export declare class AutomationGitWatcher extends EventEmitter<AutomationGitWatcherEvents> {
|
|
19
|
+
private readonly entries;
|
|
20
|
+
private readonly watch;
|
|
21
|
+
private readonly throttleMs;
|
|
22
|
+
private disposed;
|
|
23
|
+
constructor(options: AutomationGitWatcherOptions);
|
|
24
|
+
sync(automations: Automation[]): void;
|
|
25
|
+
dispose(): void;
|
|
26
|
+
private startEntry;
|
|
27
|
+
private discoverExistingRepos;
|
|
28
|
+
private onFsEvent;
|
|
29
|
+
private route;
|
|
30
|
+
private seedRepo;
|
|
31
|
+
private classify;
|
|
32
|
+
private stopEntry;
|
|
33
|
+
}
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=automation-git-watcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automation-git-watcher.d.ts","sourceRoot":"","sources":["../src/automation-git-watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAKL,KAAK,eAAe,EAErB,MAAM,uBAAuB,CAAC;AAG/B,UAAU,0BAA0B;IAKlC,QAAQ,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;CAC1D;AAED,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,KAAK,OAAO,GAAG,CACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,EAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,KACvD,WAAW,CAAC;AAEjB,UAAU,2BAA2B;IAInC,UAAU,EAAE,MAAM,CAAC;IAGnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAyFD,qBAAa,oBAAqB,SAAQ,YAAY,CAAC,0BAA0B,CAAC;IAChF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,EAAE,2BAA2B;IAWhD,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI;IAiBrC,OAAO,IAAI,IAAI;IAMf,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,qBAAqB;IAsB7B,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,KAAK;IAkBb,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,SAAS;CAYlB"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { GIT_DIFF_WATCHER_EVENT_NAMES, buildGitSnapshot, classifyGitChanges, resolveGitDir, } from "./git-diff-watcher.js";
|
|
5
|
+
import { Throttle } from "./utils/throttle.js";
|
|
6
|
+
// The selectable git ref events an event automation can match. Shared with the
|
|
7
|
+
// per-session GitDiffWatcher table, minus the internal `git-dirty` (deliberately
|
|
8
|
+
// not user-selectable — see schemas.ts).
|
|
9
|
+
const GIT_REF_EVENT_NAMES = GIT_DIFF_WATCHER_EVENT_NAMES.filter((name) => name !== "git-dirty");
|
|
10
|
+
// The baseline for a repo that appears out of nothing (a brand-new repo created
|
|
11
|
+
// after the watch armed). Compared via classifyGitChanges against its first
|
|
12
|
+
// observed snapshot so the refs that "appeared" (a branch, HEAD, …) are emitted
|
|
13
|
+
// even when `git init` + first commit land in one fs.watch batch — there is no
|
|
14
|
+
// pre-state to diff against, so the empty tree is the pre-state.
|
|
15
|
+
const EMPTY_GIT_SNAPSHOT = {
|
|
16
|
+
head: null,
|
|
17
|
+
refs: new Map(),
|
|
18
|
+
special: {
|
|
19
|
+
fetchHead: null,
|
|
20
|
+
origHead: null,
|
|
21
|
+
mergeHead: null,
|
|
22
|
+
cherryPickHead: null,
|
|
23
|
+
rebaseMergeExists: false,
|
|
24
|
+
rebaseApplyExists: false,
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
const hasGitEvent = (automation) => {
|
|
28
|
+
if (automation.trigger.kind !== "event")
|
|
29
|
+
return false;
|
|
30
|
+
const { events } = automation.trigger;
|
|
31
|
+
return GIT_REF_EVENT_NAMES.some((event) => events.includes(event));
|
|
32
|
+
};
|
|
33
|
+
// A path is under a repo's `.git` if it contains `/.git/` or ends in `/.git`.
|
|
34
|
+
// Cheap substring reject for the working-tree/build noise (source edits,
|
|
35
|
+
// node_modules churn) that dominates a recursive watch over a container of
|
|
36
|
+
// repos — only `.git`-adjacent paths reach the stat-ing resolveGitDir.
|
|
37
|
+
const isUnderGitDir = (absolutePath) => {
|
|
38
|
+
const sep = path.sep;
|
|
39
|
+
return absolutePath.includes(`${sep}.git${sep}`) || absolutePath.endsWith(`${sep}.git`);
|
|
40
|
+
};
|
|
41
|
+
// Dependency caches (npm/yarn git-dep clones land a `.git` under node_modules)
|
|
42
|
+
// are never projects an automation means to watch. Excluding the whole
|
|
43
|
+
// `node_modules` subtree avoids spurious runs from installs; the per-session
|
|
44
|
+
// GitDiffWatcher sidesteps this by only ever classifying its own repo, but this
|
|
45
|
+
// watcher resolves the specific affected repo from the event path.
|
|
46
|
+
const isInsideNodeModules = (absolutePath) => absolutePath.includes(`${path.sep}node_modules${path.sep}`);
|
|
47
|
+
// Daemon-global, session-independent git detection for event automations.
|
|
48
|
+
// The per-session GitDiffWatcher only fires when a localterm PTY is live in the
|
|
49
|
+
// affected repo: a commit from a non-localterm process (a headless agent, an
|
|
50
|
+
// editor, an SSH session) or in a repo with no open tab produces no event.
|
|
51
|
+
// This watcher arms one recursive fs.watch per watched cwd — the unique cwds
|
|
52
|
+
// of enabled, active event automations that select at least one git event —
|
|
53
|
+
// and on `.git` changes classifies the affected repo, reusing buildGitSnapshot
|
|
54
|
+
// + classifyGitChanges, emitting ref events that feed SessionEventManager
|
|
55
|
+
// exactly like the per-session path. Source-agnostic: catches any git state
|
|
56
|
+
// change regardless of which process caused it (path-shim and shell-hook gaps
|
|
57
|
+
// alike).
|
|
58
|
+
//
|
|
59
|
+
// Existing repos under the cwd are eager-seeded when the watch arms (a walk
|
|
60
|
+
// that stops descending at the first `.git` and skips `node_modules`, so it
|
|
61
|
+
// visits only the container and repo roots — milliseconds even for a tree of
|
|
62
|
+
// many repos). That baseline lets the first change after arming classify
|
|
63
|
+
// correctly (a benign `.git` write from `git status`/`git reflog` produces no
|
|
64
|
+
// event, and a commit on an existing branch emits `git-commit`, not a spurious
|
|
65
|
+
// `git-branch-change`). Repos created after arming are discovered lazily: a
|
|
66
|
+
// bare `git init` seeds the empty tree silently, and a repo that appears with
|
|
67
|
+
// refs already present (e.g. `git init` + first commit landing in one fs.watch
|
|
68
|
+
// batch) emits the refs that "appeared" against the empty baseline.
|
|
69
|
+
export class AutomationGitWatcher extends EventEmitter {
|
|
70
|
+
entries = new Map();
|
|
71
|
+
watch;
|
|
72
|
+
throttleMs;
|
|
73
|
+
disposed = false;
|
|
74
|
+
constructor(options) {
|
|
75
|
+
super();
|
|
76
|
+
this.throttleMs = options.throttleMs;
|
|
77
|
+
this.watch =
|
|
78
|
+
options.watch ??
|
|
79
|
+
((target, watchOptions, listener) => fs.watch(target, watchOptions, (event, filename) => listener(event, filename)));
|
|
80
|
+
}
|
|
81
|
+
// Reconcile live watchers with the desired set of event-automation cwds.
|
|
82
|
+
// Idempotent and cheap, so it can be called after any automation mutation.
|
|
83
|
+
sync(automations) {
|
|
84
|
+
if (this.disposed)
|
|
85
|
+
return;
|
|
86
|
+
const desired = new Set();
|
|
87
|
+
for (const automation of automations) {
|
|
88
|
+
if (!automation.enabled)
|
|
89
|
+
continue;
|
|
90
|
+
if (automation.lifecycle !== "active")
|
|
91
|
+
continue;
|
|
92
|
+
if (!hasGitEvent(automation))
|
|
93
|
+
continue;
|
|
94
|
+
desired.add(path.resolve(automation.cwd));
|
|
95
|
+
}
|
|
96
|
+
for (const cwd of [...this.entries.keys()]) {
|
|
97
|
+
if (!desired.has(cwd))
|
|
98
|
+
this.stopEntry(cwd);
|
|
99
|
+
}
|
|
100
|
+
for (const cwd of desired) {
|
|
101
|
+
if (!this.entries.has(cwd))
|
|
102
|
+
this.startEntry(cwd);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
dispose() {
|
|
106
|
+
this.disposed = true;
|
|
107
|
+
for (const cwd of [...this.entries.keys()])
|
|
108
|
+
this.stopEntry(cwd);
|
|
109
|
+
this.removeAllListeners();
|
|
110
|
+
}
|
|
111
|
+
startEntry(cwd) {
|
|
112
|
+
const entry = { handle: null, repos: new Map() };
|
|
113
|
+
try {
|
|
114
|
+
const handle = this.watch(cwd, { recursive: true }, (event, filename) => this.onFsEvent(cwd, event, filename));
|
|
115
|
+
handle.unref?.();
|
|
116
|
+
entry.handle = handle;
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// cwd doesn't exist, or recursive watch is unavailable / exceeds inotify
|
|
120
|
+
// limits on this platform. Eager-seeding still runs below so existing
|
|
121
|
+
// repos get a baseline; the per-session GitDiffWatcher covers live
|
|
122
|
+
// changes, and a later sync (after the dir exists or limits free) retries
|
|
123
|
+
// the watch.
|
|
124
|
+
}
|
|
125
|
+
this.discoverExistingRepos(entry, cwd);
|
|
126
|
+
this.entries.set(cwd, entry);
|
|
127
|
+
}
|
|
128
|
+
// Walk the cwd tree and seed a baseline snapshot for every repo already on
|
|
129
|
+
// disk, so the first change after arming classifies against a real pre-state.
|
|
130
|
+
// Stops descending the moment a `.git` is found (a repo's working tree is
|
|
131
|
+
// covered for *changes* by the recursive fs.watch; nesting into it would
|
|
132
|
+
// re-traverse the 20k-dir source tree for no benefit) and never enters
|
|
133
|
+
// `node_modules`, so it visits only the container and repo roots.
|
|
134
|
+
discoverExistingRepos(entry, cwd) {
|
|
135
|
+
const walk = (dir) => {
|
|
136
|
+
let entries;
|
|
137
|
+
try {
|
|
138
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
if (entries.some((dirent) => dirent.name === ".git")) {
|
|
144
|
+
const resolved = resolveGitDir(dir);
|
|
145
|
+
if (resolved)
|
|
146
|
+
this.seedRepo(entry, resolved.gitDir, resolved.repoRoot);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
for (const child of entries) {
|
|
150
|
+
if (!child.isDirectory())
|
|
151
|
+
continue;
|
|
152
|
+
if (child.name === "node_modules")
|
|
153
|
+
continue;
|
|
154
|
+
walk(path.join(dir, child.name));
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
walk(cwd);
|
|
158
|
+
}
|
|
159
|
+
onFsEvent(cwd, _event, filename) {
|
|
160
|
+
if (this.disposed || filename === null)
|
|
161
|
+
return;
|
|
162
|
+
const entry = this.entries.get(cwd);
|
|
163
|
+
if (!entry)
|
|
164
|
+
return;
|
|
165
|
+
// fs.watch delivers `filename` relative to the watched cwd; resolve to an
|
|
166
|
+
// absolute path. (If a platform delivers an absolute filename, resolve
|
|
167
|
+
// returns it as-is.)
|
|
168
|
+
const absolutePath = path.resolve(cwd, filename);
|
|
169
|
+
if (!isUnderGitDir(absolutePath))
|
|
170
|
+
return;
|
|
171
|
+
if (isInsideNodeModules(absolutePath))
|
|
172
|
+
return;
|
|
173
|
+
const resolved = resolveGitDir(path.dirname(absolutePath));
|
|
174
|
+
if (!resolved)
|
|
175
|
+
return;
|
|
176
|
+
this.route(entry, resolved.gitDir, resolved.repoRoot);
|
|
177
|
+
}
|
|
178
|
+
route(entry, gitDir, repoRoot) {
|
|
179
|
+
let state = entry.repos.get(gitDir);
|
|
180
|
+
if (!state) {
|
|
181
|
+
// A repo the eager seed didn't find — created after arming, or nested
|
|
182
|
+
// under another repo's working tree. Seed it now. If it already has refs
|
|
183
|
+
// (e.g. `git init` + first commit landed in one fs.watch batch), there is
|
|
184
|
+
// no pre-state to diff, so emit the refs that appeared against the empty
|
|
185
|
+
// baseline; a bare `git init` (no refs) seeds silently.
|
|
186
|
+
state = this.seedRepo(entry, gitDir, repoRoot);
|
|
187
|
+
if (state.snapshot && state.snapshot.refs.size > 0) {
|
|
188
|
+
for (const eventName of classifyGitChanges(EMPTY_GIT_SNAPSHOT, state.snapshot)) {
|
|
189
|
+
this.emit("refEvent", eventName, repoRoot);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
state.throttle.trigger();
|
|
194
|
+
}
|
|
195
|
+
seedRepo(entry, gitDir, repoRoot) {
|
|
196
|
+
const state = {
|
|
197
|
+
repoRoot,
|
|
198
|
+
snapshot: buildGitSnapshot(gitDir),
|
|
199
|
+
throttle: new Throttle(() => this.classify(entry, gitDir), this.throttleMs),
|
|
200
|
+
};
|
|
201
|
+
entry.repos.set(gitDir, state);
|
|
202
|
+
return state;
|
|
203
|
+
}
|
|
204
|
+
classify(entry, gitDir) {
|
|
205
|
+
if (this.disposed)
|
|
206
|
+
return;
|
|
207
|
+
const state = entry.repos.get(gitDir);
|
|
208
|
+
if (!state)
|
|
209
|
+
return;
|
|
210
|
+
const current = buildGitSnapshot(gitDir);
|
|
211
|
+
const previous = state.snapshot;
|
|
212
|
+
state.snapshot = current;
|
|
213
|
+
if (!previous || !current)
|
|
214
|
+
return;
|
|
215
|
+
for (const eventName of classifyGitChanges(previous, current)) {
|
|
216
|
+
this.emit("refEvent", eventName, state.repoRoot);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
stopEntry(cwd) {
|
|
220
|
+
const entry = this.entries.get(cwd);
|
|
221
|
+
if (!entry)
|
|
222
|
+
return;
|
|
223
|
+
try {
|
|
224
|
+
entry.handle?.close();
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
/* already closed */
|
|
228
|
+
}
|
|
229
|
+
for (const state of entry.repos.values())
|
|
230
|
+
state.throttle.dispose();
|
|
231
|
+
entry.repos.clear();
|
|
232
|
+
this.entries.delete(cwd);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=automation-git-watcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automation-git-watcher.js","sourceRoot":"","sources":["../src/automation-git-watcher.ts"],"names":[],"mappings":"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"}
|
package/dist/default-shell.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export declare const isExecutable: (binaryPath: string) => boolean;
|
|
2
1
|
export declare const getDefaultShell: () => string;
|
|
3
2
|
export declare const resolveShellOverride: (shell: string | undefined | null) => string | undefined;
|
|
4
3
|
export declare const listKnownShells: () => string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-shell.d.ts","sourceRoot":"","sources":["../src/default-shell.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"default-shell.d.ts","sourceRoot":"","sources":["../src/default-shell.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,eAAe,QAAO,MAyBlC,CAAC;AAQF,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,GAAG,SAAS,GAAG,IAAI,KAAG,MAAM,GAAG,SAKhF,CAAC;AAwBF,eAAO,MAAM,eAAe,QAAO,MAAM,EAWxC,CAAC"}
|
package/dist/default-shell.js
CHANGED
|
@@ -2,7 +2,7 @@ import { accessSync, constants as fsConstants } from "node:fs";
|
|
|
2
2
|
import { readFileSync } from "node:fs";
|
|
3
3
|
import os from "node:os";
|
|
4
4
|
import { DEFAULT_SHELL_FALLBACK } from "./constants.js";
|
|
5
|
-
|
|
5
|
+
const isExecutable = (binaryPath) => {
|
|
6
6
|
try {
|
|
7
7
|
accessSync(binaryPath, fsConstants.X_OK);
|
|
8
8
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-shell.js","sourceRoot":"","sources":["../src/default-shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAExD,MAAM,
|
|
1
|
+
{"version":3,"file":"default-shell.js","sourceRoot":"","sources":["../src/default-shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { EventEmitter } from "node:events";
|
|
2
|
+
export interface GitDirResult {
|
|
3
|
+
gitDir: string;
|
|
4
|
+
repoRoot: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const resolveGitDir: (cwd: string) => GitDirResult | null;
|
|
2
7
|
export declare const GIT_DIFF_WATCHER_EVENT_NAMES: ["git-dirty", "git-head-change", "git-branch-change", "git-tag-change", "git-remote-change", "git-stash-change", "git-commit", "git-checkout", "git-reset", "git-merge", "git-rebase", "git-cherry-pick", "git-fetch", "git-stash", "git-tag"];
|
|
3
8
|
type GitDiffWatcherEventName = (typeof GIT_DIFF_WATCHER_EVENT_NAMES)[number];
|
|
4
9
|
export type GitDiffWatcherEvents = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-diff-watcher.d.ts","sourceRoot":"","sources":["../src/git-diff-watcher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"git-diff-watcher.d.ts","sourceRoot":"","sources":["../src/git-diff-watcher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,YAAY,GAAG,IA2B1D,CAAC;AAEF,eAAO,MAAM,4BAA4B,gPAgBC,CAAC;AAE3C,KAAK,uBAAuB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7E,MAAM,MAAM,oBAAoB,GAAG;KAChC,CAAC,IAAI,uBAAuB,GAAG,EAAE;CACnC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC;AAE5E,UAAU,kBAAkB;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAkBD,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,KAAG,WAAW,GAAG,IAwC/D,CAAC;AA0DF,eAAO,MAAM,kBAAkB,GAC7B,UAAU,WAAW,EACrB,SAAS,WAAW,KACnB,eAAe,EAiCjB,CAAC;AAEF,qBAAa,cAAe,SAAQ,YAAY,CAAC,oBAAoB,CAAC;IACpE,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,YAAY,CAA4B;IAEhD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IA2CxB,IAAI,IAAI,IAAI;IAaZ,OAAO,IAAI,IAAI;IAMf,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,qBAAqB;CAY9B"}
|
package/dist/git-diff-watcher.js
CHANGED
|
@@ -3,7 +3,7 @@ import path from "node:path";
|
|
|
3
3
|
import { EventEmitter } from "node:events";
|
|
4
4
|
import { GIT_DIRTY_THROTTLE_MS } from "./constants.js";
|
|
5
5
|
import { Throttle } from "./utils/throttle.js";
|
|
6
|
-
const resolveGitDir = (cwd) => {
|
|
6
|
+
export const resolveGitDir = (cwd) => {
|
|
7
7
|
let current = path.resolve(cwd);
|
|
8
8
|
while (true) {
|
|
9
9
|
const indicator = path.join(current, ".git");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-diff-watcher.js","sourceRoot":"","sources":["../src/git-diff-watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAO/C,MAAM,aAAa,GAAG,CAAC,GAAW,EAAuB,EAAE;
|
|
1
|
+
{"version":3,"file":"git-diff-watcher.js","sourceRoot":"","sources":["../src/git-diff-watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAO/C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAuB,EAAE;IAChE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,WAAW,EAAE;gBAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;YACxE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1D,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAChD,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjD,IAAI,CAAC;wBACH,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE;4BAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;oBAC1F,CAAC;oBAAC,MAAM,CAAC;wBACP,0CAA0C;oBAC5C,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uCAAuC;QACzC,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,OAAO;YAAE,MAAM;QAC9B,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,WAAW;IACX,iBAAiB;IACjB,mBAAmB;IACnB,gBAAgB;IAChB,mBAAmB;IACnB,kBAAkB;IAClB,YAAY;IACZ,cAAc;IACd,WAAW;IACX,WAAW;IACX,YAAY;IACZ,iBAAiB;IACjB,WAAW;IACX,WAAW;IACX,SAAS;CAC+B,CAAC;AAyB3C,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAiB,EAAE;IACzD,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,OAAe,EAAW,EAAE;IACnD,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAsB,EAAE;IACrE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE;QAC3B,IAAI,OAAoB,CAAC;QACzB,IAAI,CAAC;YACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;oBACrD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBACjD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBACzB,CAAC;gBAAC,MAAM,CAAC;oBACP,+CAA+C;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,OAAO,CAAC,CAAC;IAEd,OAAO;QACL,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI;QACJ,OAAO,EAAE;YACP,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAC1D,QAAQ,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACxD,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAC1D,cAAc,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;YACrE,iBAAiB,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YACrE,iBAAiB,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;SACtE;KACF,CAAC;AACJ,CAAC,CAAC;AAmBF,MAAM,iBAAiB,GAAG,CAAC,QAAqB,EAAE,OAAoB,EAAc,EAAE;IACpF,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAW,EAAE;QACnD,MAAM,YAAY,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACvF,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACrF,IAAI,YAAY,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAC5D,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;QACpE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjG,MAAM,mBAAmB,GAAG,CAAC,MAAc,EAAW,EAAE;QACtD,KAAK,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,SAAS;YACtC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,aAAa;gBAAE,OAAO,IAAI,CAAC;QAChF,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,MAAM,cAAc,GAAG,CAAC,GAA6B,EAAW,EAAE,CAChE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEjD,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;QACpC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC;QAClC,cAAc,EAAE,mBAAmB,CAAC,QAAQ,CAAC;QAC7C,GAAG,EAAE,gBAAgB,CAAC,OAAO,CAAC;QAC9B,MAAM,EAAE,gBAAgB,CAAC,UAAU,CAAC;QACpC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;QAC1B,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC;QACtC,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC;QACpC,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC;QACtC,cAAc,EAAE,cAAc,CAAC,gBAAgB,CAAC;QAChD,WAAW,EAAE,cAAc,CAAC,mBAAmB,CAAC;QAChD,WAAW,EAAE,cAAc,CAAC,mBAAmB,CAAC;KACjD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,QAAqB,EACrB,OAAoB,EACD,EAAE;IACrB,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,IAAI,OAAO,CAAC,IAAI;QAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,MAAM;QAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACrD,IAAI,OAAO,CAAC,GAAG;QAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,MAAM;QAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACrD,IAAI,OAAO,CAAC,KAAK;QAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAEnD,MAAM,wBAAwB,GAC5B,QAAQ,CAAC,OAAO,CAAC,SAAS;QAC1B,QAAQ,CAAC,OAAO,CAAC,cAAc;QAC/B,QAAQ,CAAC,OAAO,CAAC,iBAAiB;QAClC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC;IAErC,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aACpD,IAAI,QAAQ,CAAC,OAAO,CAAC,cAAc;YAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;aACpE,IAAI,QAAQ,CAAC,OAAO,CAAC,iBAAiB,IAAI,QAAQ,CAAC,OAAO,CAAC,iBAAiB;YAC/E,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aACvB,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,wBAAwB;YAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;YAC5E,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC;SAAM,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,OAAO,CAAC,GAAG;QAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,OAAO,CAAC,KAAK;QAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACjE,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI;QAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEnF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,OAAO,cAAe,SAAQ,YAAkC;IAC5D,QAAQ,GAAmB,EAAE,CAAC;IAC9B,QAAQ,GAAoB,IAAI,CAAC;IACjC,QAAQ,GAAG,KAAK,CAAC;IACjB,MAAM,GAAkB,IAAI,CAAC;IAC7B,YAAY,GAAuB,IAAI,CAAC;IAEhD,KAAK,CAAC,GAAW;QACf,IAAI,CAAC,IAAI,EAAE,CAAC;QAEZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC7C,2EAA2E;QAC3E,2EAA2E;QAC3E,4EAA4E;QAC5E,yCAAyC;QACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/B,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAE1B,MAAM,KAAK,GAAG,CAAC,MAAc,EAAE,OAAiD,EAAE,EAAE;YAClF,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC,KAAa,EAAE,EAAE;oBAChE,IAAI,IAAI,CAAC,QAAQ;wBAAE,OAAO;oBAC1B,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;wBAC7C,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,6CAA6C;YAC/C,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAErC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE;gBAAE,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;QAAC,MAAM,CAAC;YACP,sDAAsD;QACxD,CAAC;IACH,CAAC;IAED,IAAI;QACF,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,CAAC;YAAC,MAAM,CAAC;gBACP,oBAAoB;YACtB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC3B,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QACzB,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO;YAAE,OAAO;QAElC,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -10,6 +10,7 @@ export declare class GitMetadataCoordinator {
|
|
|
10
10
|
constructor(cwd: string, send: (ws: ClientSocket, payload: ServerToClientMessage) => void);
|
|
11
11
|
add(ws: ClientSocket): void;
|
|
12
12
|
remove(ws: ClientSocket): void;
|
|
13
|
+
replayLastSummary(ws: ClientSocket): void;
|
|
13
14
|
get isEmpty(): boolean;
|
|
14
15
|
signal(): void;
|
|
15
16
|
broadcastPr(pr: GitBranchPr | null): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-metadata-coordinator.d.ts","sourceRoot":"","sources":["../src/git-metadata-coordinator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAkB,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AA4BzD,qBAAa,sBAAsB;IAO/B,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;gBAG5C,GAAG,EAAE,MAAM,EACH,IAAI,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,KAAK,IAAI;IAGnF,GAAG,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;IAmB3B,MAAM,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"git-metadata-coordinator.d.ts","sourceRoot":"","sources":["../src/git-metadata-coordinator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAkB,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AA4BzD,qBAAa,sBAAsB;IAO/B,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;gBAG5C,GAAG,EAAE,MAAM,EACH,IAAI,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,KAAK,IAAI;IAGnF,GAAG,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;IAmB3B,MAAM,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;IAW9B,iBAAiB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;IAKzC,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,MAAM,IAAI,IAAI;IAYd,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI;IAKzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAqBlB;CACH"}
|
|
@@ -58,6 +58,18 @@ export class GitMetadataCoordinator {
|
|
|
58
58
|
remove(ws) {
|
|
59
59
|
this.subscribers.delete(ws);
|
|
60
60
|
}
|
|
61
|
+
// Re-send the cached summary to a subscriber once it promotes out of the
|
|
62
|
+
// pending hold, so the ambient overlay is guaranteed populated on the
|
|
63
|
+
// now-live client. A summary pushed while the client was pending can be
|
|
64
|
+
// wiped by a `cwd` frame (the client nulls its summary on a cwd change);
|
|
65
|
+
// replaying after the promote flush lands past that reset. No-op when no
|
|
66
|
+
// summary is cached yet — the in-flight compute broadcasts on completion
|
|
67
|
+
// and reaches the now-live subscriber.
|
|
68
|
+
replayLastSummary(ws) {
|
|
69
|
+
if (!this.lastSummary)
|
|
70
|
+
return;
|
|
71
|
+
this.send(ws, { type: "git-diff-summary", summary: this.lastSummary });
|
|
72
|
+
}
|
|
61
73
|
get isEmpty() {
|
|
62
74
|
return this.subscribers.size === 0;
|
|
63
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-metadata-coordinator.js","sourceRoot":"","sources":["../src/git-metadata-coordinator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"git-metadata-coordinator.js","sourceRoot":"","sources":["../src/git-metadata-coordinator.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -21,11 +21,12 @@ import { detectWithExplicitPort } from "./cdp/discover-explicit-endpoint.js";
|
|
|
21
21
|
import { DaemonConfigStore } from "./daemon-config-store.js";
|
|
22
22
|
import { formatCandidates, resolveCandidates, resolveCompletionContext, } from "./completion/index.js";
|
|
23
23
|
import { z } from "zod";
|
|
24
|
-
import { ACTIVITY_DIRNAME, ACTIVITY_REFRESH_DEBOUNCE_MS, ACTIVITY_WATCHED_PROGRAMS, AUTOMATION_EVENT_DEBOUNCE_MS, AUTOMATION_RECONCILE_MIN_DOWNTIME_MS, AUTOMATION_RUN_QUERY_PARAM, AUTOMATION_WATCH_DEBOUNCE_MS, AUTOMATION_WATCH_POST_RUN_GRACE_MS, AUTOMATION_WEBHOOK_DEBOUNCE_MS, DEFAULT_HOST, DEFAULT_PORT, FRIENDLY_HOSTNAME, GIT_MAX_REF_LENGTH, HTTP_STATUS_ACCEPTED, HTTP_STATUS_BAD_REQUEST, HTTP_STATUS_CONFLICT, HTTP_STATUS_CREATED, HTTP_STATUS_NOT_FOUND, MAX_AUTOMATIONS, MAX_PROCESSES, MAX_SECRETS, MS_PER_MINUTE, PROCESSES_FILENAME, SECRETS_FILENAME, THEMES_FILENAME, SECRETS_SHIMS_DIRNAME, AUTOMATION_AGENT_SESSIONS_DIRNAME, SERVER_STOP_GRACE_MS, SESSION_ID_QUERY_PARAM, SESSION_ACTIVITY_WINDOW_MS, WAIT_DEFAULT_TIMEOUT_MS, WS_BACKPRESSURE_THRESHOLD_BYTES, WS_CLOSE_BACKPRESSURE, WS_CLOSE_CAPACITY_REACHED, WS_CLOSE_POLICY_VIOLATION, WS_HEARTBEAT_GRACE_MS, WS_HEARTBEAT_INTERVAL_MS, WS_HEARTBEAT_TIMEOUT_MS, WS_READY_STATE_OPEN, AUTH_SECRET_FILENAME, AUTH_COOKIE_NAME, } from "./constants.js";
|
|
24
|
+
import { ACTIVITY_DIRNAME, ACTIVITY_REFRESH_DEBOUNCE_MS, ACTIVITY_WATCHED_PROGRAMS, AUTOMATION_EVENT_DEBOUNCE_MS, AUTOMATION_RECONCILE_MIN_DOWNTIME_MS, AUTOMATION_RUN_QUERY_PARAM, AUTOMATION_WATCH_DEBOUNCE_MS, AUTOMATION_WATCH_POST_RUN_GRACE_MS, AUTOMATION_WEBHOOK_DEBOUNCE_MS, DEFAULT_HOST, DEFAULT_PORT, FRIENDLY_HOSTNAME, GIT_DIRTY_THROTTLE_MS, GIT_MAX_REF_LENGTH, HTTP_STATUS_ACCEPTED, HTTP_STATUS_BAD_REQUEST, HTTP_STATUS_CONFLICT, HTTP_STATUS_CREATED, HTTP_STATUS_NOT_FOUND, MAX_AUTOMATIONS, MAX_PROCESSES, MAX_SECRETS, MS_PER_MINUTE, PROCESSES_FILENAME, SECRETS_FILENAME, THEMES_FILENAME, SECRETS_SHIMS_DIRNAME, AUTOMATION_AGENT_SESSIONS_DIRNAME, SERVER_STOP_GRACE_MS, SESSION_ID_QUERY_PARAM, SESSION_ACTIVITY_WINDOW_MS, WAIT_DEFAULT_TIMEOUT_MS, WS_BACKPRESSURE_THRESHOLD_BYTES, WS_CLOSE_BACKPRESSURE, WS_CLOSE_CAPACITY_REACHED, WS_CLOSE_POLICY_VIOLATION, WS_HEARTBEAT_GRACE_MS, WS_HEARTBEAT_INTERVAL_MS, WS_HEARTBEAT_TIMEOUT_MS, WS_READY_STATE_OPEN, AUTH_SECRET_FILENAME, AUTH_COOKIE_NAME, } from "./constants.js";
|
|
25
25
|
import { getDefaultShell, listKnownShells, resolveShellOverride } from "./default-shell.js";
|
|
26
26
|
import { shellPathForUserShell } from "./utils/shell-path.js";
|
|
27
27
|
import { openChromeInspect } from "./utils/open-chrome-inspect.js";
|
|
28
28
|
import { ServerErrorException, serverError } from "./errors.js";
|
|
29
|
+
import { AutomationGitWatcher } from "./automation-git-watcher.js";
|
|
29
30
|
import { FolderWatchManager } from "./folder-watch-manager.js";
|
|
30
31
|
import { SessionEventManager } from "./session-event-manager.js";
|
|
31
32
|
import { WebhookTriggerManager } from "./webhook-trigger-manager.js";
|
|
@@ -1428,7 +1429,18 @@ export const createServer = async (options = {}) => {
|
|
|
1428
1429
|
},
|
|
1429
1430
|
getAutomation: (automationId) => automationStore.get(automationId),
|
|
1430
1431
|
});
|
|
1431
|
-
|
|
1432
|
+
// Daemon-global git detection for event automations: arms a recursive
|
|
1433
|
+
// fs.watch per event-automation cwd so ref changes reach SessionEventManager
|
|
1434
|
+
// regardless of source (the per-session GitDiffWatcher only fires when a
|
|
1435
|
+
// localterm PTY is live in the affected repo).
|
|
1436
|
+
const automationGitWatcher = new AutomationGitWatcher({
|
|
1437
|
+
throttleMs: GIT_DIRTY_THROTTLE_MS,
|
|
1438
|
+
});
|
|
1439
|
+
automationGitWatcher.on("refEvent", (eventName, repoRoot) => sessionEventManager.onSessionEvent(eventName, repoRoot));
|
|
1440
|
+
const syncSessionEventListeners = () => {
|
|
1441
|
+
sessionEventManager.sync(automationStore.list());
|
|
1442
|
+
automationGitWatcher.sync(automationStore.list());
|
|
1443
|
+
};
|
|
1432
1444
|
// Webhook triggers: a POST to /api/webhooks/:id arms a trailing debounce per
|
|
1433
1445
|
// automation (coalesces duplicate delivery) with an in-flight overlap guard.
|
|
1434
1446
|
// Stateless vs the watch/event managers — nothing to arm, so no sync().
|
|
@@ -2386,6 +2398,7 @@ export const createServer = async (options = {}) => {
|
|
|
2386
2398
|
const stop = async () => {
|
|
2387
2399
|
automationScheduler.dispose();
|
|
2388
2400
|
folderWatchManager.dispose();
|
|
2401
|
+
automationGitWatcher.dispose();
|
|
2389
2402
|
webhookTriggerManager.dispose();
|
|
2390
2403
|
caffeinateManager.dispose();
|
|
2391
2404
|
processActivityWatcher?.dispose();
|