@gurugokul/doomscroller 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/LICENSE +21 -0
  3. package/README.md +323 -2
  4. package/dist/adapters/claude-code-hooks.js +27 -0
  5. package/dist/adapters/claude-code-hooks.js.map +1 -0
  6. package/dist/adapters/cli-wrapper.js +230 -0
  7. package/dist/adapters/cli-wrapper.js.map +1 -0
  8. package/dist/adapters/command-code-hooks.js +32 -0
  9. package/dist/adapters/command-code-hooks.js.map +1 -0
  10. package/dist/adapters/file-activity.js +78 -0
  11. package/dist/adapters/file-activity.js.map +1 -0
  12. package/dist/adapters/hook-settings.js +164 -0
  13. package/dist/adapters/hook-settings.js.map +1 -0
  14. package/dist/adapters/hook.js +17 -0
  15. package/dist/adapters/hook.js.map +1 -0
  16. package/dist/adapters/hotkey.js +50 -0
  17. package/dist/adapters/hotkey.js.map +1 -0
  18. package/dist/adapters/ide-activity.js +245 -0
  19. package/dist/adapters/ide-activity.js.map +1 -0
  20. package/dist/adapters/ports.js +3 -0
  21. package/dist/adapters/ports.js.map +1 -0
  22. package/dist/adapters/wrapper-tracker.js +77 -0
  23. package/dist/adapters/wrapper-tracker.js.map +1 -0
  24. package/dist/cli.js +343 -0
  25. package/dist/cli.js.map +1 -0
  26. package/dist/core/config.js +192 -0
  27. package/dist/core/config.js.map +1 -0
  28. package/dist/core/daemon.js +156 -0
  29. package/dist/core/daemon.js.map +1 -0
  30. package/dist/core/ipc.js +215 -0
  31. package/dist/core/ipc.js.map +1 -0
  32. package/dist/core/logger.js +53 -0
  33. package/dist/core/logger.js.map +1 -0
  34. package/dist/core/sound.js +38 -0
  35. package/dist/core/sound.js.map +1 -0
  36. package/dist/core/state-machine.js +272 -0
  37. package/dist/core/state-machine.js.map +1 -0
  38. package/dist/core/stats.js +109 -0
  39. package/dist/core/stats.js.map +1 -0
  40. package/dist/core/targets.js +27 -0
  41. package/dist/core/targets.js.map +1 -0
  42. package/dist/core/types.js +6 -0
  43. package/dist/core/types.js.map +1 -0
  44. package/dist/index.js +15 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/util/errors.js +16 -0
  47. package/dist/util/errors.js.map +1 -0
  48. package/dist/util/paths.js +77 -0
  49. package/dist/util/paths.js.map +1 -0
  50. package/dist/windows/cpu-probe.js +108 -0
  51. package/dist/windows/cpu-probe.js.map +1 -0
  52. package/dist/windows/key-listener.js +198 -0
  53. package/dist/windows/key-listener.js.map +1 -0
  54. package/dist/windows/win32.js +158 -0
  55. package/dist/windows/win32.js.map +1 -0
  56. package/dist/windows/window-controller.js +3 -0
  57. package/dist/windows/window-controller.js.map +1 -0
  58. package/package.json +57 -4
  59. package/scripts/cpu-sampler.ps1 +83 -0
  60. package/scripts/key-watcher.ps1 +132 -0
  61. package/scripts/win32-window.ps1 +344 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-wrapper.js","sourceRoot":"","sources":["../../src/adapters/cli-wrapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HOOK_EVENTS = exports.hookCommand = void 0;
4
+ exports.hookCommands = hookCommands;
5
+ exports.mergeCommandCodeHooks = mergeCommandCodeHooks;
6
+ exports.installCommandCodeHooks = installCommandCodeHooks;
7
+ const paths_1 = require("../util/paths");
8
+ const hook_settings_1 = require("./hook-settings");
9
+ Object.defineProperty(exports, "hookCommand", { enumerable: true, get: function () { return hook_settings_1.hookCommand; } });
10
+ /**
11
+ * Command Code has no per-prompt hook, so start is driven by the first tool
12
+ * call of a turn (`PreToolUse`) and finish by the end of the turn (`Stop`).
13
+ * Both events omit `matcher`: a matcher on `Stop` stops it firing entirely,
14
+ * and omitting it on `PreToolUse` matches every tool.
15
+ */
16
+ exports.HOOK_EVENTS = ['PreToolUse', 'Stop'];
17
+ function hookCommands() {
18
+ const start = (0, hook_settings_1.hookCommand)('start');
19
+ const done = (0, hook_settings_1.hookCommand)('done');
20
+ return {
21
+ PreToolUse: start,
22
+ Stop: done,
23
+ };
24
+ }
25
+ const actionFor = (eventName) => (eventName === 'PreToolUse' ? 'start' : 'done');
26
+ function mergeCommandCodeHooks(settings, commands) {
27
+ return (0, hook_settings_1.mergeHookSettings)(settings, commands, actionFor);
28
+ }
29
+ async function installCommandCodeHooks(settingsPath = (0, paths_1.commandCodeSettingsPath)()) {
30
+ return (0, hook_settings_1.installHookSettings)(settingsPath, hookCommands(), actionFor);
31
+ }
32
+ //# sourceMappingURL=command-code-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-code-hooks.js","sourceRoot":"","sources":["../../src/adapters/command-code-hooks.ts"],"names":[],"mappings":";;;AAqBA,oCAOC;AAID,sDAKC;AAED,0DAIC;AA3CD,yCAAwD;AACxD,mDAOyB;AAEhB,4FALP,2BAAW,OAKO;AAGpB;;;;;GAKG;AACU,QAAA,WAAW,GAAG,CAAC,YAAY,EAAE,MAAM,CAAU,CAAC;AAE3D,SAAgB,YAAY;IAC1B,MAAM,KAAK,GAAG,IAAA,2BAAW,EAAC,OAAO,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAA,2BAAW,EAAC,MAAM,CAAC,CAAC;IACjC,OAAO;QACL,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,IAAI;KACX,CAAC;AACJ,CAAC;AAED,MAAM,SAAS,GAAkB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhG,SAAgB,qBAAqB,CACnC,QAAiB,EACjB,QAAgC;IAEhC,OAAO,IAAA,iCAAiB,EAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC1D,CAAC;AAEM,KAAK,UAAU,uBAAuB,CAC3C,eAAuB,IAAA,+BAAuB,GAAE;IAEhD,OAAO,IAAA,mCAAmB,EAAC,YAAY,EAAE,YAAY,EAAE,EAAE,SAAS,CAAC,CAAC;AACtE,CAAC"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.scanMaxMtime = scanMaxMtime;
7
+ const node_fs_1 = __importDefault(require("node:fs"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const IGNORED_DIRECTORIES = new Set([
10
+ '.git',
11
+ '.hg',
12
+ '.svn',
13
+ 'node_modules',
14
+ 'dist',
15
+ 'build',
16
+ 'out',
17
+ '.next',
18
+ '.nuxt',
19
+ '.svelte-kit',
20
+ '.turbo',
21
+ '.cache',
22
+ 'coverage',
23
+ 'target',
24
+ '.venv',
25
+ 'venv',
26
+ '__pycache__',
27
+ '.pytest_cache',
28
+ '.mypy_cache',
29
+ '.gradle',
30
+ '.idea',
31
+ 'bin',
32
+ 'obj',
33
+ ]);
34
+ /**
35
+ * Returns the newest modification time found in a workspace. Used only as an
36
+ * activity signal, so the scan is deliberately bounded and skips build output.
37
+ */
38
+ async function scanMaxMtime(root, options = {}) {
39
+ const maxEntries = options.maxEntries ?? 4000;
40
+ const ignored = options.ignoredDirectories ?? IGNORED_DIRECTORIES;
41
+ let newest = 0;
42
+ let entriesSeen = 0;
43
+ const stack = [root];
44
+ while (stack.length > 0 && entriesSeen < maxEntries) {
45
+ const directory = stack.pop();
46
+ let entries;
47
+ try {
48
+ entries = await node_fs_1.default.promises.readdir(directory, { withFileTypes: true });
49
+ }
50
+ catch {
51
+ continue;
52
+ }
53
+ for (const entry of entries) {
54
+ if (entriesSeen >= maxEntries)
55
+ break;
56
+ entriesSeen++;
57
+ if (entry.isSymbolicLink())
58
+ continue;
59
+ if (entry.isDirectory()) {
60
+ if (!ignored.has(entry.name))
61
+ stack.push(node_path_1.default.join(directory, entry.name));
62
+ continue;
63
+ }
64
+ if (!entry.isFile())
65
+ continue;
66
+ try {
67
+ const stats = await node_fs_1.default.promises.stat(node_path_1.default.join(directory, entry.name));
68
+ if (stats.mtimeMs > newest)
69
+ newest = stats.mtimeMs;
70
+ }
71
+ catch {
72
+ // File disappeared or is locked; ignore.
73
+ }
74
+ }
75
+ }
76
+ return newest;
77
+ }
78
+ //# sourceMappingURL=file-activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-activity.js","sourceRoot":"","sources":["../../src/adapters/file-activity.ts"],"names":[],"mappings":";;;;;AAsCA,oCAsCC;AA5ED,sDAAyB;AACzB,0DAA6B;AAE7B,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,MAAM;IACN,KAAK;IACL,MAAM;IACN,cAAc;IACd,MAAM;IACN,OAAO;IACP,KAAK;IACL,OAAO;IACP,OAAO;IACP,aAAa;IACb,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,OAAO;IACP,MAAM;IACN,aAAa;IACb,eAAe;IACf,aAAa;IACb,SAAS;IACT,OAAO;IACP,KAAK;IACL,KAAK;CACN,CAAC,CAAC;AAOH;;;GAGG;AACI,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,UAAuB,EAAE;IACxE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,IAAI,mBAAmB,CAAC;IAElE,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,KAAK,GAAa,CAAC,IAAI,CAAC,CAAC;IAE/B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;QACpD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QAC/B,IAAI,OAAoB,CAAC;QACzB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,iBAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,WAAW,IAAI,UAAU;gBAAE,MAAM;YACrC,WAAW,EAAE,CAAC;YAEd,IAAI,KAAK,CAAC,cAAc,EAAE;gBAAE,SAAS;YACrC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC3E,SAAS;YACX,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBAAE,SAAS;YAE9B,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,iBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvE,IAAI,KAAK,CAAC,OAAO,GAAG,MAAM;oBAAE,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;YACrD,CAAC;YAAC,MAAM,CAAC;gBACP,yCAAyC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.hookCommand = hookCommand;
7
+ exports.mergeHookSettings = mergeHookSettings;
8
+ exports.installHookSettings = installHookSettings;
9
+ const node_fs_1 = __importDefault(require("node:fs"));
10
+ const node_path_1 = __importDefault(require("node:path"));
11
+ const errors_1 = require("../util/errors");
12
+ const paths_1 = require("../util/paths");
13
+ function hookCommand(action) {
14
+ return `"${process.execPath}" "${(0, paths_1.cliEntryPath)()}" ${action}`;
15
+ }
16
+ function asRecord(value) {
17
+ return value !== null && typeof value === 'object' && !Array.isArray(value)
18
+ ? value
19
+ : null;
20
+ }
21
+ function commandTargetsAction(command, action) {
22
+ const trimmed = command.trim();
23
+ const ending = new RegExp(`(?:^|[\\s"'=])${action}\\s*$`, 'i');
24
+ if (!ending.test(trimmed))
25
+ return false;
26
+ const lower = trimmed.toLowerCase();
27
+ return lower.includes('doomscroller') || lower.includes('index.js') || lower.includes('index.ts');
28
+ }
29
+ function groupsContainCommand(groups, command, action) {
30
+ for (const group of groups) {
31
+ const record = asRecord(group);
32
+ if (!record || !Array.isArray(record.hooks))
33
+ continue;
34
+ for (const hook of record.hooks) {
35
+ const hookRecord = asRecord(hook);
36
+ if (!hookRecord || typeof hookRecord.command !== 'string')
37
+ continue;
38
+ if (hookRecord.command === command || commandTargetsAction(hookRecord.command, action)) {
39
+ return true;
40
+ }
41
+ }
42
+ }
43
+ return false;
44
+ }
45
+ /**
46
+ * Adds doomscroller hooks without replacing any existing hook groups. Running
47
+ * this repeatedly is a no-op because an existing doomscroller command for the
48
+ * same event is detected first.
49
+ */
50
+ function mergeHookSettings(settings, commands, actionFor) {
51
+ const root = asRecord(settings) ?? {};
52
+ const hooksRaw = root.hooks;
53
+ if (hooksRaw !== undefined && !asRecord(hooksRaw)) {
54
+ return {
55
+ settings: root,
56
+ added: [],
57
+ existing: [],
58
+ error: '"hooks" in settings.json is not an object',
59
+ };
60
+ }
61
+ const hooks = { ...(asRecord(hooksRaw) ?? {}) };
62
+ const added = [];
63
+ const existing = [];
64
+ for (const [eventName, command] of Object.entries(commands)) {
65
+ const current = hooks[eventName];
66
+ if (current !== undefined && !Array.isArray(current)) {
67
+ return {
68
+ settings: root,
69
+ added,
70
+ existing,
71
+ error: `hooks.${eventName} exists but is not an array; refusing to overwrite it`,
72
+ };
73
+ }
74
+ const groups = current === undefined ? [] : [...current];
75
+ const action = actionFor(eventName);
76
+ if (groupsContainCommand(groups, command, action)) {
77
+ existing.push(eventName);
78
+ continue;
79
+ }
80
+ groups.push({ hooks: [{ type: 'command', command }] });
81
+ hooks[eventName] = groups;
82
+ added.push(eventName);
83
+ }
84
+ return {
85
+ settings: { ...root, hooks },
86
+ added,
87
+ existing,
88
+ };
89
+ }
90
+ function installHookSettings(settingsPath, commands, actionFor) {
91
+ let raw = {};
92
+ try {
93
+ const text = node_fs_1.default.readFileSync(settingsPath, 'utf8').replace(/^\uFEFF/, '');
94
+ if (text.trim() !== '')
95
+ raw = JSON.parse(text);
96
+ }
97
+ catch (error) {
98
+ const code = error.code;
99
+ if (code !== 'ENOENT') {
100
+ return {
101
+ settingsPath,
102
+ added: [],
103
+ existing: [],
104
+ changed: false,
105
+ error: `could not read ${settingsPath}: ${(0, errors_1.errorMessage)(error)}`,
106
+ };
107
+ }
108
+ }
109
+ const merged = mergeHookSettings(raw, commands, actionFor);
110
+ if (merged.error) {
111
+ return {
112
+ settingsPath,
113
+ added: merged.added,
114
+ existing: merged.existing,
115
+ changed: false,
116
+ error: merged.error,
117
+ };
118
+ }
119
+ if (merged.added.length === 0) {
120
+ return {
121
+ settingsPath,
122
+ added: [],
123
+ existing: merged.existing,
124
+ changed: false,
125
+ };
126
+ }
127
+ try {
128
+ node_fs_1.default.mkdirSync(node_path_1.default.dirname(settingsPath), { recursive: true });
129
+ if (node_fs_1.default.existsSync(settingsPath)) {
130
+ node_fs_1.default.copyFileSync(settingsPath, `${settingsPath}.doomscroller.bak`);
131
+ }
132
+ const json = `${JSON.stringify(merged.settings, null, 2)}\n`;
133
+ const temporary = `${settingsPath}.doomscroller-${process.pid}.tmp`;
134
+ node_fs_1.default.writeFileSync(temporary, json, 'utf8');
135
+ try {
136
+ node_fs_1.default.renameSync(temporary, settingsPath);
137
+ }
138
+ catch {
139
+ node_fs_1.default.writeFileSync(settingsPath, json, 'utf8');
140
+ try {
141
+ node_fs_1.default.unlinkSync(temporary);
142
+ }
143
+ catch {
144
+ // ignore
145
+ }
146
+ }
147
+ return {
148
+ settingsPath,
149
+ added: merged.added,
150
+ existing: merged.existing,
151
+ changed: true,
152
+ };
153
+ }
154
+ catch (error) {
155
+ return {
156
+ settingsPath,
157
+ added: merged.added,
158
+ existing: merged.existing,
159
+ changed: false,
160
+ error: `could not write ${settingsPath}: ${(0, errors_1.errorMessage)(error)}`,
161
+ };
162
+ }
163
+ }
164
+ //# sourceMappingURL=hook-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-settings.js","sourceRoot":"","sources":["../../src/adapters/hook-settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.emitHookEvent = emitHookEvent;
4
+ const ipc_1 = require("../core/ipc");
5
+ /**
6
+ * Hook entry point. Runs in an agent-spawned process, so every failure is
7
+ * swallowed and the caller is never blocked.
8
+ */
9
+ async function emitHookEvent(event, port) {
10
+ try {
11
+ await (0, ipc_1.dispatchFast)(event, port);
12
+ }
13
+ catch {
14
+ // Intentionally silent: hooks must never break the agent.
15
+ }
16
+ }
17
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/adapters/hook.ts"],"names":[],"mappings":";;AAOA,sCAMC;AAbD,qCAA2C;AAG3C;;;GAGG;AACI,KAAK,UAAU,aAAa,CAAC,KAAiB,EAAE,IAAY;IACjE,IAAI,CAAC;QACH,MAAM,IAAA,kBAAY,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,0DAA0D;IAC5D,CAAC;AACH,CAAC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HotkeyAdapter = void 0;
4
+ const types_1 = require("../core/types");
5
+ const errors_1 = require("../util/errors");
6
+ const key_listener_1 = require("../windows/key-listener");
7
+ /**
8
+ * Default adapter: Ctrl+Alt+D starts a session when idle and force-returns
9
+ * the agent window when a session is already running.
10
+ */
11
+ class HotkeyAdapter {
12
+ deps;
13
+ unsubscribe = null;
14
+ constructor(deps) {
15
+ this.deps = deps;
16
+ }
17
+ start() {
18
+ if (!this.deps.hotkey) {
19
+ this.deps.logger.info('global hotkey disabled');
20
+ return;
21
+ }
22
+ this.unsubscribe = this.deps.listener.onKey((event) => {
23
+ if (!(0, key_listener_1.matchesHotkey)(event, this.deps.hotkey))
24
+ return;
25
+ try {
26
+ if (this.deps.machine.state === 'working') {
27
+ this.deps.logger.info('hotkey: force return');
28
+ void this.deps.machine.forceReturn('hotkey').catch((error) => {
29
+ this.deps.logger.warn(`hotkey force return failed: ${(0, errors_1.errorMessage)(error)}`);
30
+ });
31
+ }
32
+ else {
33
+ this.deps.logger.info('hotkey: agent started');
34
+ void this.deps.machine.handle(types_1.AGENT_STARTED).catch((error) => {
35
+ this.deps.logger.warn(`hotkey start failed: ${(0, errors_1.errorMessage)(error)}`);
36
+ });
37
+ }
38
+ }
39
+ catch (error) {
40
+ this.deps.logger.warn(`hotkey handler failed: ${(0, errors_1.errorMessage)(error)}`);
41
+ }
42
+ });
43
+ }
44
+ stop() {
45
+ this.unsubscribe?.();
46
+ this.unsubscribe = null;
47
+ }
48
+ }
49
+ exports.HotkeyAdapter = HotkeyAdapter;
50
+ //# sourceMappingURL=hotkey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hotkey.js","sourceRoot":"","sources":["../../src/adapters/hotkey.ts"],"names":[],"mappings":";;;AACA,yCAA8C;AAC9C,2CAA8C;AAC9C,0DAAoE;AAUpE;;;GAGG;AACH,MAAa,aAAa;IAGK;IAFrB,WAAW,GAAwB,IAAI,CAAC;IAEhD,YAA6B,IAAuB;QAAvB,SAAI,GAAJ,IAAI,CAAmB;IAAG,CAAC;IAExD,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACpD,IAAI,CAAC,IAAA,4BAAa,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAO,CAAC;gBAAE,OAAO;YACrD,IAAI,CAAC;gBACH,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;oBAC9C,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;wBAC3D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,IAAA,qBAAY,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAC9E,CAAC,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;oBAC/C,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAa,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;wBAC3D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,IAAA,qBAAY,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACvE,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,IAAA,qBAAY,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACzE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI;QACF,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;CACF;AAlCD,sCAkCC"}
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.IdeActivityAdapter = exports.systemIntervals = void 0;
7
+ exports.normalizeProcessName = normalizeProcessName;
8
+ exports.windowMatches = windowMatches;
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const logger_1 = require("../core/logger");
11
+ const types_1 = require("../core/types");
12
+ const errors_1 = require("../util/errors");
13
+ const paths_1 = require("../util/paths");
14
+ const file_activity_1 = require("./file-activity");
15
+ exports.systemIntervals = {
16
+ setInterval: (callback, intervalMs) => setInterval(callback, intervalMs),
17
+ clearInterval: (handle) => clearInterval(handle),
18
+ };
19
+ function normalizeProcessName(value) {
20
+ return value.trim().toLowerCase().replace(/\.exe$/i, '');
21
+ }
22
+ function windowMatches(window, match) {
23
+ if (!match)
24
+ return false;
25
+ const wantedProcess = match.process ? normalizeProcessName(match.process) : '';
26
+ const wantedTitle = match.title ? match.title.trim().toLowerCase() : '';
27
+ if (!wantedProcess && !wantedTitle)
28
+ return false;
29
+ if (wantedProcess && normalizeProcessName(window.processName) !== wantedProcess)
30
+ return false;
31
+ if (wantedTitle && !window.title.toLowerCase().includes(wantedTitle))
32
+ return false;
33
+ return true;
34
+ }
35
+ /**
36
+ * GUI-agent adapter. Enter inside a registered IDE window starts a session.
37
+ * A session finishes after quietSeconds with no workspace file changes and
38
+ * low CPU across the window's process tree.
39
+ */
40
+ class IdeActivityAdapter {
41
+ deps;
42
+ unsubscribe = null;
43
+ session = null;
44
+ starting = false;
45
+ finishing = false;
46
+ intervals;
47
+ now;
48
+ scanWorkspace;
49
+ constructor(deps) {
50
+ this.deps = deps;
51
+ this.intervals = deps.intervals ?? exports.systemIntervals;
52
+ this.now = deps.now ?? Date.now;
53
+ this.scanWorkspace = deps.scanWorkspace ?? file_activity_1.scanMaxMtime;
54
+ }
55
+ currentState() {
56
+ return this.deps.machine.state;
57
+ }
58
+ get isMonitoring() {
59
+ return this.session !== null;
60
+ }
61
+ start() {
62
+ if (!this.deps.keySource)
63
+ return;
64
+ this.unsubscribe = this.deps.keySource.onKey((event) => {
65
+ void this.handleKeyEvent(event);
66
+ });
67
+ }
68
+ stop() {
69
+ this.unsubscribe?.();
70
+ this.unsubscribe = null;
71
+ this.stopMonitor();
72
+ }
73
+ findAgentForWindow(window) {
74
+ for (const agent of this.deps.config.registeredAgents) {
75
+ if (agent.adapter !== 'ide-activity')
76
+ continue;
77
+ if (windowMatches(window, agent.match))
78
+ return agent;
79
+ }
80
+ return null;
81
+ }
82
+ async handleKeyEvent(event) {
83
+ try {
84
+ if (event.key !== 'ENTER' || !event.window)
85
+ return;
86
+ if (this.session || this.starting || this.finishing)
87
+ return;
88
+ if (this.currentState() === 'working')
89
+ return;
90
+ const agent = this.findAgentForWindow(event.window);
91
+ if (!agent)
92
+ return;
93
+ await this.beginSession(agent, event.window);
94
+ }
95
+ catch (error) {
96
+ this.starting = false;
97
+ this.stopMonitor();
98
+ (0, logger_1.logCaught)(this.deps.logger, 'ide-activity key handling failed', error);
99
+ }
100
+ }
101
+ async tick() {
102
+ const session = this.session;
103
+ if (!session)
104
+ return;
105
+ if (this.currentState() !== 'working') {
106
+ this.stopMonitor();
107
+ return;
108
+ }
109
+ if (session.ticking)
110
+ return;
111
+ session.ticking = true;
112
+ try {
113
+ const now = this.now();
114
+ let activity = false;
115
+ const sample = session.probe.latest();
116
+ if (sample && sample.alive && sample.at !== session.lastCpuAt) {
117
+ if (session.lastCpuSeconds !== null) {
118
+ const elapsedSeconds = (sample.at - session.lastCpuAt) / 1000;
119
+ const deltaSeconds = Math.max(0, sample.cpuSeconds - session.lastCpuSeconds);
120
+ if (elapsedSeconds > 0) {
121
+ const cpuPercent = (deltaSeconds / elapsedSeconds) * 100;
122
+ if (cpuPercent > this.deps.config.idleCpuPercent)
123
+ activity = true;
124
+ }
125
+ }
126
+ session.lastCpuSeconds = sample.cpuSeconds;
127
+ session.lastCpuAt = sample.at;
128
+ }
129
+ const scanInterval = this.deps.scanIntervalMs ?? 2000;
130
+ if (session.workspace && now - session.lastScanAt >= scanInterval) {
131
+ session.lastScanAt = now;
132
+ try {
133
+ const newest = await this.scanWorkspace(session.workspace);
134
+ if (newest > session.lastMaxMtime) {
135
+ session.lastMaxMtime = newest;
136
+ activity = true;
137
+ }
138
+ }
139
+ catch (error) {
140
+ this.deps.logger.debug(`workspace scan failed: ${(0, errors_1.errorMessage)(error)}`);
141
+ }
142
+ }
143
+ if (activity)
144
+ session.lastActivityAt = this.now();
145
+ if (this.now() - session.lastActivityAt >= session.quietMs) {
146
+ await this.finishSession(session);
147
+ }
148
+ }
149
+ catch (error) {
150
+ (0, logger_1.logCaught)(this.deps.logger, 'ide-activity tick failed', error);
151
+ }
152
+ finally {
153
+ const current = this.session;
154
+ if (current)
155
+ current.ticking = false;
156
+ }
157
+ }
158
+ async beginSession(agent, window) {
159
+ this.starting = true;
160
+ try {
161
+ if (this.currentState() === 'working')
162
+ return;
163
+ const quietSeconds = agent.quietSeconds ?? this.deps.config.quietSeconds;
164
+ const workspace = agent.workspace ? node_path_1.default.resolve((0, paths_1.expandHome)(agent.workspace)) : null;
165
+ let baseline = 0;
166
+ if (workspace) {
167
+ try {
168
+ baseline = await this.scanWorkspace(workspace);
169
+ }
170
+ catch (error) {
171
+ this.deps.logger.debug(`could not baseline workspace: ${(0, errors_1.errorMessage)(error)}`);
172
+ }
173
+ }
174
+ if (this.currentState() === 'working')
175
+ return;
176
+ const now = this.now();
177
+ const probe = this.deps.cpuProbes.create(window.pid);
178
+ const initial = probe.latest();
179
+ const session = {
180
+ agent,
181
+ quietMs: Math.max(1, quietSeconds) * 1000,
182
+ probe,
183
+ workspace,
184
+ lastMaxMtime: baseline,
185
+ lastScanAt: now,
186
+ lastActivityAt: now,
187
+ lastCpuSeconds: initial?.cpuSeconds ?? null,
188
+ lastCpuAt: initial?.at ?? now,
189
+ timer: null,
190
+ ticking: false,
191
+ };
192
+ this.session = session;
193
+ this.deps.logger.info(`ide-activity: ${agent.name} started ("${window.title}", pid ${window.pid})`);
194
+ await this.deps.machine.handle(types_1.AGENT_STARTED);
195
+ if (!this.session || this.currentState() !== 'working') {
196
+ this.stopMonitor();
197
+ return;
198
+ }
199
+ session.timer = this.intervals.setInterval(() => {
200
+ void this.tick();
201
+ }, this.deps.tickIntervalMs ?? 1000);
202
+ }
203
+ finally {
204
+ this.starting = false;
205
+ }
206
+ }
207
+ async finishSession(session) {
208
+ if (this.session !== session)
209
+ return;
210
+ this.finishing = true;
211
+ try {
212
+ this.deps.logger.info(`ide-activity: ${session.agent.name} idle for ${Math.round(session.quietMs / 1000)}s -> finished`);
213
+ this.stopMonitor();
214
+ await this.deps.machine.handle(types_1.AGENT_FINISHED);
215
+ }
216
+ catch (error) {
217
+ (0, logger_1.logCaught)(this.deps.logger, 'ide-activity finish failed', error);
218
+ }
219
+ finally {
220
+ this.finishing = false;
221
+ }
222
+ }
223
+ stopMonitor() {
224
+ const session = this.session;
225
+ this.session = null;
226
+ if (!session)
227
+ return;
228
+ if (session.timer !== null) {
229
+ try {
230
+ this.intervals.clearInterval(session.timer);
231
+ }
232
+ catch {
233
+ // ignore
234
+ }
235
+ }
236
+ try {
237
+ session.probe.stop();
238
+ }
239
+ catch {
240
+ // ignore
241
+ }
242
+ }
243
+ }
244
+ exports.IdeActivityAdapter = IdeActivityAdapter;
245
+ //# sourceMappingURL=ide-activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ide-activity.js","sourceRoot":"","sources":["../../src/adapters/ide-activity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ports.js","sourceRoot":"","sources":["../../src/adapters/ports.ts"],"names":[],"mappings":""}