aicodeman 1.1.1 → 1.1.2

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 (98) hide show
  1. package/dist/config/workflow-config.d.ts +24 -0
  2. package/dist/config/workflow-config.d.ts.map +1 -0
  3. package/dist/config/workflow-config.js +24 -0
  4. package/dist/config/workflow-config.js.map +1 -0
  5. package/dist/subagent-watcher.d.ts +34 -0
  6. package/dist/subagent-watcher.d.ts.map +1 -1
  7. package/dist/subagent-watcher.js +147 -4
  8. package/dist/subagent-watcher.js.map +1 -1
  9. package/dist/types/index.d.ts +1 -0
  10. package/dist/types/index.d.ts.map +1 -1
  11. package/dist/types/index.js +1 -0
  12. package/dist/types/index.js.map +1 -1
  13. package/dist/types/workflow-run.d.ts +130 -0
  14. package/dist/types/workflow-run.d.ts.map +1 -0
  15. package/dist/types/workflow-run.js +20 -0
  16. package/dist/types/workflow-run.js.map +1 -0
  17. package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
  18. package/dist/web/public/{app.92f49a9d.js → app.eaa14cdd.js} +4 -4
  19. package/dist/web/public/app.eaa14cdd.js.br +0 -0
  20. package/dist/web/public/app.eaa14cdd.js.gz +0 -0
  21. package/dist/web/public/{constants.59faac65.js → constants.1c779517.js} +5 -0
  22. package/dist/web/public/constants.1c779517.js.br +0 -0
  23. package/dist/web/public/constants.1c779517.js.gz +0 -0
  24. package/dist/web/public/image-input.0ea86695.js.gz +0 -0
  25. package/dist/web/public/index.html +39 -7
  26. package/dist/web/public/index.html.br +0 -0
  27. package/dist/web/public/index.html.gz +0 -0
  28. package/dist/web/public/input-cjk.b8686b5e.js.gz +0 -0
  29. package/dist/web/public/keyboard-accessory.bc753cc7.js.gz +0 -0
  30. package/dist/web/public/mobile-handlers.db3dc3c8.js.gz +0 -0
  31. package/dist/web/public/mobile.06b38d3a.css.gz +0 -0
  32. package/dist/web/public/notification-manager.9c984ac2.js.gz +0 -0
  33. package/dist/web/public/orchestrator-panel.js.gz +0 -0
  34. package/dist/web/public/{panels-ui.2f467969.js → panels-ui.f3f08e26.js} +48 -48
  35. package/dist/web/public/panels-ui.f3f08e26.js.br +0 -0
  36. package/dist/web/public/panels-ui.f3f08e26.js.gz +0 -0
  37. package/dist/web/public/ralph-panel.6de2d0f8.js.gz +0 -0
  38. package/dist/web/public/ralph-wizard.13a1831e.js.gz +0 -0
  39. package/dist/web/public/respawn-ui.2d249da9.js.gz +0 -0
  40. package/dist/web/public/sanitize-html.bc7078d6.js.gz +0 -0
  41. package/dist/web/public/session-ui.1463b824.js.gz +0 -0
  42. package/dist/web/public/settings-ui.601c30c1.js +55 -0
  43. package/dist/web/public/settings-ui.601c30c1.js.br +0 -0
  44. package/dist/web/public/settings-ui.601c30c1.js.gz +0 -0
  45. package/dist/web/public/{styles.8e1ea0c6.css → styles.7e612fc4.css} +1 -1
  46. package/dist/web/public/styles.7e612fc4.css.br +0 -0
  47. package/dist/web/public/styles.7e612fc4.css.gz +0 -0
  48. package/dist/web/public/subagent-windows.a366a4ad.js.gz +0 -0
  49. package/dist/web/public/sw.js.gz +0 -0
  50. package/dist/web/public/terminal-ui.a7e046da.js.gz +0 -0
  51. package/dist/web/public/ultracode-panel.js +304 -0
  52. package/dist/web/public/ultracode-panel.js.br +0 -0
  53. package/dist/web/public/ultracode-panel.js.gz +0 -0
  54. package/dist/web/public/upload.html.gz +0 -0
  55. package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
  56. package/dist/web/public/vendor/marked.min.js.gz +0 -0
  57. package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
  58. package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
  59. package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
  60. package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
  61. package/dist/web/public/vendor/xterm-zerolag-input.137ad9f0.js.gz +0 -0
  62. package/dist/web/public/vendor/xterm.css.gz +0 -0
  63. package/dist/web/public/vendor/xterm.min.js.gz +0 -0
  64. package/dist/web/public/voice-input.085e9e73.js.gz +0 -0
  65. package/dist/web/routes/file-routes.d.ts.map +1 -1
  66. package/dist/web/routes/file-routes.js +80 -24
  67. package/dist/web/routes/file-routes.js.map +1 -1
  68. package/dist/web/routes/system-routes.d.ts.map +1 -1
  69. package/dist/web/routes/system-routes.js +21 -0
  70. package/dist/web/routes/system-routes.js.map +1 -1
  71. package/dist/web/schemas.d.ts +1 -0
  72. package/dist/web/schemas.d.ts.map +1 -1
  73. package/dist/web/schemas.js +2 -0
  74. package/dist/web/schemas.js.map +1 -1
  75. package/dist/web/server.d.ts +12 -0
  76. package/dist/web/server.d.ts.map +1 -1
  77. package/dist/web/server.js +55 -0
  78. package/dist/web/server.js.map +1 -1
  79. package/dist/web/sse-events.d.ts +10 -0
  80. package/dist/web/sse-events.d.ts.map +1 -1
  81. package/dist/web/sse-events.js +12 -0
  82. package/dist/web/sse-events.js.map +1 -1
  83. package/dist/workflow-run-watcher.d.ts +76 -0
  84. package/dist/workflow-run-watcher.d.ts.map +1 -0
  85. package/dist/workflow-run-watcher.js +327 -0
  86. package/dist/workflow-run-watcher.js.map +1 -0
  87. package/package.json +1 -1
  88. package/dist/web/public/app.92f49a9d.js.br +0 -0
  89. package/dist/web/public/app.92f49a9d.js.gz +0 -0
  90. package/dist/web/public/constants.59faac65.js.br +0 -0
  91. package/dist/web/public/constants.59faac65.js.gz +0 -0
  92. package/dist/web/public/panels-ui.2f467969.js.br +0 -0
  93. package/dist/web/public/panels-ui.2f467969.js.gz +0 -0
  94. package/dist/web/public/settings-ui.44b99ce0.js +0 -55
  95. package/dist/web/public/settings-ui.44b99ce0.js.br +0 -0
  96. package/dist/web/public/settings-ui.44b99ce0.js.gz +0 -0
  97. package/dist/web/public/styles.8e1ea0c6.css.br +0 -0
  98. package/dist/web/public/styles.8e1ea0c6.css.gz +0 -0
@@ -0,0 +1,76 @@
1
+ /**
2
+ * @fileoverview Workflow (ultracode) Run Watcher
3
+ *
4
+ * Watches `~/.claude/projects/<projHash>/<sessionUuid>/workflows/wf_*.json` —
5
+ * the run-state JSON the Workflow tool writes for each ultracode run — and emits
6
+ * events powering the master-detail "working agents" view (tasks/phases on the
7
+ * LEFT, per-agent tokens/tool-calls on the RIGHT).
8
+ *
9
+ * Deliberately STANDALONE: it never imports from or touches subagent-watcher.ts.
10
+ * It globs the run-state tree (`.../workflows/wf_*.json`); subagent-watcher globs
11
+ * the disjoint, deeper transcript tree (`.../subagents/workflows/wf_<id>/agent-*`).
12
+ * Separate singletons, disjoint directories, no shared mutable state.
13
+ *
14
+ * Discovery is dual: a periodic poll (catches new run dirs + removals) plus a
15
+ * per-run-dir chokidar watcher (live within-run updates). A per-file mtime skip
16
+ * keeps the hot path cheap — the run JSON is rewritten on every agent tick.
17
+ *
18
+ * @module workflow-run-watcher
19
+ */
20
+ import { EventEmitter } from 'node:events';
21
+ import type { WorkflowRunInfo, WorkflowRunSummary } from './types/workflow-run.js';
22
+ /** Drop the heavy `agents[]` for list/snapshot use. */
23
+ export declare function summarizeRun(info: WorkflowRunInfo): WorkflowRunSummary;
24
+ export declare class WorkflowRunWatcher extends EventEmitter {
25
+ private projectsDir;
26
+ private pollTimer;
27
+ private _isRunning;
28
+ /** runId -> latest parsed run info (LRU-bounded). */
29
+ private runs;
30
+ /** absolute run-file path -> last seen mtimeMs (skip unchanged files). */
31
+ private fileMtimes;
32
+ /** runId -> absolute run-file path (for mtime cleanup on removal). */
33
+ private runIdToPath;
34
+ /** workflows-dir absolute path -> chokidar watcher (one per live run dir). */
35
+ private dirWatchers;
36
+ constructor(projectsDir?: string);
37
+ isRunning(): boolean;
38
+ start(): void;
39
+ stop(): void;
40
+ /** All cached runs (no recency filter), most-recently-active first. */
41
+ getAllRuns(): WorkflowRunInfo[];
42
+ /** Runs active within the last `minutes`, most-recently-active first. */
43
+ getRecentRuns(minutes?: number): WorkflowRunInfo[];
44
+ /**
45
+ * Lightweight summaries (no agents[]) of ALL cached runs, most-recently-active
46
+ * first. This is the LEFT-pane list + getLightState snapshot source: the cache
47
+ * is LRU-bounded (MAX_CACHED_WORKFLOW_RUNS), so it's already size-capped, and a
48
+ * run-browser should show past runs — NOT hide everything older than a window.
49
+ */
50
+ getAllRunSummaries(): WorkflowRunSummary[];
51
+ /** Summaries filtered to the last `minutes` of activity (opt-in via ?minutes). */
52
+ getRecentRunSummaries(minutes?: number): WorkflowRunSummary[];
53
+ getRun(runId: string): WorkflowRunInfo | undefined;
54
+ getStats(): {
55
+ runCount: number;
56
+ running: number;
57
+ agentCount: number;
58
+ };
59
+ private poll;
60
+ private pollAsync;
61
+ /** Walk projects/<projHash>/<sessionUuid>/workflows/ for wf_*.json files. */
62
+ private discover;
63
+ private maybeParse;
64
+ /**
65
+ * Parse a wf_<runId>.json into WorkflowRunInfo, STRIPPING the heavyweight
66
+ * `script`/`scriptPath`/`result`/`logs` fields (the embedded script alone is
67
+ * 15–660KB) so they never reach the cache, SSE, or routes.
68
+ */
69
+ private parseFile;
70
+ private toAgent;
71
+ private ensureDirWatcher;
72
+ private removeDirWatcher;
73
+ }
74
+ /** Process-wide singleton (mirrors subagentWatcher / imageWatcher). */
75
+ export declare const workflowRunWatcher: WorkflowRunWatcher;
76
+ //# sourceMappingURL=workflow-run-watcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-run-watcher.d.ts","sourceRoot":"","sources":["../src/workflow-run-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO3C,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAuC,MAAM,yBAAyB,CAAC;AAqBxH,uDAAuD;AACvD,wBAAgB,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,kBAAkB,CAItE;AAgCD,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,UAAU,CAAS;IAE3B,qDAAqD;IACrD,OAAO,CAAC,IAAI,CAA8E;IAC1F,0EAA0E;IAC1E,OAAO,CAAC,UAAU,CAA6B;IAC/C,sEAAsE;IACtE,OAAO,CAAC,WAAW,CAA6B;IAChD,8EAA8E;IAC9E,OAAO,CAAC,WAAW,CAAsC;gBAE7C,WAAW,CAAC,EAAE,MAAM;IAQhC,SAAS,IAAI,OAAO;IAIpB,KAAK,IAAI,IAAI;IAOb,IAAI,IAAI,IAAI;IAeZ,uEAAuE;IACvE,UAAU,IAAI,eAAe,EAAE;IAI/B,yEAAyE;IACzE,aAAa,CAAC,OAAO,GAAE,MAAuC,GAAG,eAAe,EAAE;IAKlF;;;;;OAKG;IACH,kBAAkB,IAAI,kBAAkB,EAAE;IAI1C,kFAAkF;IAClF,qBAAqB,CAAC,OAAO,GAAE,MAAuC,GAAG,kBAAkB,EAAE;IAI7F,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIlD,QAAQ,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAYrE,OAAO,CAAC,IAAI;YAME,SAAS;IA2BvB,6EAA6E;YAC/D,QAAQ;YA2CR,UAAU;IAmBxB;;;;OAIG;YACW,SAAS;IAkDvB,OAAO,CAAC,OAAO;IAuBf,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,gBAAgB;CAOzB;AAED,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
@@ -0,0 +1,327 @@
1
+ /**
2
+ * @fileoverview Workflow (ultracode) Run Watcher
3
+ *
4
+ * Watches `~/.claude/projects/<projHash>/<sessionUuid>/workflows/wf_*.json` —
5
+ * the run-state JSON the Workflow tool writes for each ultracode run — and emits
6
+ * events powering the master-detail "working agents" view (tasks/phases on the
7
+ * LEFT, per-agent tokens/tool-calls on the RIGHT).
8
+ *
9
+ * Deliberately STANDALONE: it never imports from or touches subagent-watcher.ts.
10
+ * It globs the run-state tree (`.../workflows/wf_*.json`); subagent-watcher globs
11
+ * the disjoint, deeper transcript tree (`.../subagents/workflows/wf_<id>/agent-*`).
12
+ * Separate singletons, disjoint directories, no shared mutable state.
13
+ *
14
+ * Discovery is dual: a periodic poll (catches new run dirs + removals) plus a
15
+ * per-run-dir chokidar watcher (live within-run updates). A per-file mtime skip
16
+ * keeps the hot path cheap — the run JSON is rewritten on every agent tick.
17
+ *
18
+ * @module workflow-run-watcher
19
+ */
20
+ import { EventEmitter } from 'node:events';
21
+ import { readdir, readFile, stat } from 'node:fs/promises';
22
+ import { homedir } from 'node:os';
23
+ import { join } from 'node:path';
24
+ import { watch as chokidarWatch } from 'chokidar';
25
+ import { LRUMap } from './utils/lru-map.js';
26
+ import { WORKFLOW_RUN_POLL_INTERVAL_MS, MAX_CACHED_WORKFLOW_RUNS, WORKFLOW_RUN_RECENT_WINDOW_MIN, } from './config/workflow-config.js';
27
+ const WORKFLOWS_SUBDIR = 'workflows';
28
+ const RUN_FILE_PREFIX = 'wf_';
29
+ const RUN_FILE_SUFFIX = '.json';
30
+ /** Hard caps on the largest per-agent strings so a 28-agent run stays compact. */
31
+ const PROMPT_PREVIEW_MAX = 200;
32
+ const RESULT_PREVIEW_MAX = 240;
33
+ function truncate(value, max) {
34
+ if (typeof value !== 'string')
35
+ return undefined;
36
+ return value.length > max ? `${value.slice(0, max)}…` : value;
37
+ }
38
+ /** Drop the heavy `agents[]` for list/snapshot use. */
39
+ export function summarizeRun(info) {
40
+ const { agents: _agents, ...summary } = info;
41
+ void _agents;
42
+ return summary;
43
+ }
44
+ export class WorkflowRunWatcher extends EventEmitter {
45
+ projectsDir;
46
+ pollTimer = null;
47
+ _isRunning = false;
48
+ /** runId -> latest parsed run info (LRU-bounded). */
49
+ runs = new LRUMap({ maxSize: MAX_CACHED_WORKFLOW_RUNS });
50
+ /** absolute run-file path -> last seen mtimeMs (skip unchanged files). */
51
+ fileMtimes = new Map();
52
+ /** runId -> absolute run-file path (for mtime cleanup on removal). */
53
+ runIdToPath = new Map();
54
+ /** workflows-dir absolute path -> chokidar watcher (one per live run dir). */
55
+ dirWatchers = new Map();
56
+ constructor(projectsDir) {
57
+ super();
58
+ this.projectsDir = projectsDir || join(homedir(), '.claude', 'projects');
59
+ this.setMaxListeners(50);
60
+ }
61
+ // ========== Public API ==========
62
+ isRunning() {
63
+ return this._isRunning;
64
+ }
65
+ start() {
66
+ if (this._isRunning)
67
+ return;
68
+ this._isRunning = true;
69
+ this.poll();
70
+ this.pollTimer = setInterval(() => this.poll(), WORKFLOW_RUN_POLL_INTERVAL_MS);
71
+ }
72
+ stop() {
73
+ this._isRunning = false;
74
+ if (this.pollTimer) {
75
+ clearInterval(this.pollTimer);
76
+ this.pollTimer = null;
77
+ }
78
+ for (const watcher of this.dirWatchers.values()) {
79
+ watcher.close().catch(() => { }); // best-effort teardown
80
+ }
81
+ this.dirWatchers.clear();
82
+ this.runs.clear();
83
+ this.fileMtimes.clear();
84
+ this.runIdToPath.clear();
85
+ }
86
+ /** All cached runs (no recency filter), most-recently-active first. */
87
+ getAllRuns() {
88
+ return Array.from(this.runs.values()).sort((a, b) => b.lastActivityAt - a.lastActivityAt);
89
+ }
90
+ /** Runs active within the last `minutes`, most-recently-active first. */
91
+ getRecentRuns(minutes = WORKFLOW_RUN_RECENT_WINDOW_MIN) {
92
+ const cutoff = Date.now() - minutes * 60_000;
93
+ return this.getAllRuns().filter((r) => r.lastActivityAt >= cutoff);
94
+ }
95
+ /**
96
+ * Lightweight summaries (no agents[]) of ALL cached runs, most-recently-active
97
+ * first. This is the LEFT-pane list + getLightState snapshot source: the cache
98
+ * is LRU-bounded (MAX_CACHED_WORKFLOW_RUNS), so it's already size-capped, and a
99
+ * run-browser should show past runs — NOT hide everything older than a window.
100
+ */
101
+ getAllRunSummaries() {
102
+ return this.getAllRuns().map(summarizeRun);
103
+ }
104
+ /** Summaries filtered to the last `minutes` of activity (opt-in via ?minutes). */
105
+ getRecentRunSummaries(minutes = WORKFLOW_RUN_RECENT_WINDOW_MIN) {
106
+ return this.getRecentRuns(minutes).map(summarizeRun);
107
+ }
108
+ getRun(runId) {
109
+ return this.runs.get(runId);
110
+ }
111
+ getStats() {
112
+ let running = 0;
113
+ let agentCount = 0;
114
+ for (const run of this.runs.values()) {
115
+ if (run.status === 'running')
116
+ running++;
117
+ agentCount += run.agents.length;
118
+ }
119
+ return { runCount: this.runs.size, running, agentCount };
120
+ }
121
+ // ========== Private ==========
122
+ poll() {
123
+ this.pollAsync().catch(() => {
124
+ // Filesystem may be transiently unavailable; the next poll retries.
125
+ });
126
+ }
127
+ async pollAsync() {
128
+ const { files, dirs } = await this.discover();
129
+ // Install a live watcher for each run dir; tear down watchers for dirs that vanished.
130
+ for (const dir of dirs)
131
+ this.ensureDirWatcher(dir);
132
+ for (const dir of Array.from(this.dirWatchers.keys())) {
133
+ if (!dirs.has(dir))
134
+ this.removeDirWatcher(dir);
135
+ }
136
+ const seenRunIds = new Set();
137
+ for (const file of files) {
138
+ seenRunIds.add(file.runId);
139
+ await this.maybeParse(file);
140
+ }
141
+ // Removal by set-diff: a cached run whose file disappeared.
142
+ for (const runId of Array.from(this.runs.keys())) {
143
+ if (!seenRunIds.has(runId)) {
144
+ this.runs.delete(runId);
145
+ const path = this.runIdToPath.get(runId);
146
+ if (path)
147
+ this.fileMtimes.delete(path);
148
+ this.runIdToPath.delete(runId);
149
+ this.emit('run_removed', { runId });
150
+ }
151
+ }
152
+ }
153
+ /** Walk projects/<projHash>/<sessionUuid>/workflows/ for wf_*.json files. */
154
+ async discover() {
155
+ const files = [];
156
+ const dirs = new Set();
157
+ let projectHashes;
158
+ try {
159
+ projectHashes = await readdir(this.projectsDir);
160
+ }
161
+ catch {
162
+ return { files, dirs };
163
+ }
164
+ for (const projectHash of projectHashes) {
165
+ let sessions;
166
+ try {
167
+ sessions = await readdir(join(this.projectsDir, projectHash));
168
+ }
169
+ catch {
170
+ continue;
171
+ }
172
+ for (const sessionUuid of sessions) {
173
+ const workflowsDir = join(this.projectsDir, projectHash, sessionUuid, WORKFLOWS_SUBDIR);
174
+ let names;
175
+ try {
176
+ names = await readdir(workflowsDir);
177
+ }
178
+ catch {
179
+ continue; // no workflows dir for this session — normal
180
+ }
181
+ let hasRun = false;
182
+ for (const name of names) {
183
+ if (!name.startsWith(RUN_FILE_PREFIX) || !name.endsWith(RUN_FILE_SUFFIX))
184
+ continue;
185
+ hasRun = true;
186
+ files.push({
187
+ filePath: join(workflowsDir, name),
188
+ projectHash,
189
+ sessionUuid,
190
+ runId: name.slice(0, -RUN_FILE_SUFFIX.length),
191
+ });
192
+ }
193
+ if (hasRun)
194
+ dirs.add(workflowsDir);
195
+ }
196
+ }
197
+ return { files, dirs };
198
+ }
199
+ async maybeParse(file) {
200
+ let mtime;
201
+ try {
202
+ mtime = (await stat(file.filePath)).mtimeMs;
203
+ }
204
+ catch {
205
+ return; // vanished between discover and stat
206
+ }
207
+ if (this.fileMtimes.get(file.filePath) === mtime)
208
+ return;
209
+ this.fileMtimes.set(file.filePath, mtime);
210
+ const info = await this.parseFile(file);
211
+ if (!info)
212
+ return;
213
+ const existed = this.runs.has(info.runId);
214
+ this.runs.set(info.runId, info);
215
+ this.runIdToPath.set(info.runId, file.filePath);
216
+ this.emit(existed ? 'run_updated' : 'run_discovered', info);
217
+ }
218
+ /**
219
+ * Parse a wf_<runId>.json into WorkflowRunInfo, STRIPPING the heavyweight
220
+ * `script`/`scriptPath`/`result`/`logs` fields (the embedded script alone is
221
+ * 15–660KB) so they never reach the cache, SSE, or routes.
222
+ */
223
+ async parseFile(file) {
224
+ let raw;
225
+ try {
226
+ raw = JSON.parse(await readFile(file.filePath, 'utf-8'));
227
+ }
228
+ catch {
229
+ return null; // mid-write or malformed — next mtime change re-parses
230
+ }
231
+ if (!raw || typeof raw !== 'object')
232
+ return null;
233
+ const progress = Array.isArray(raw.workflowProgress) ? raw.workflowProgress : [];
234
+ const agents = progress
235
+ .filter((e) => e && e.type === 'workflow_agent')
236
+ .map((e) => this.toAgent(e));
237
+ const phases = Array.isArray(raw.phases)
238
+ ? raw.phases.map((p) => ({
239
+ title: typeof p.title === 'string' ? p.title : '',
240
+ detail: typeof p.detail === 'string' ? p.detail : '',
241
+ }))
242
+ : [];
243
+ let lastProgress = 0;
244
+ for (const a of agents) {
245
+ if (typeof a.lastProgressAt === 'number' && a.lastProgressAt > lastProgress)
246
+ lastProgress = a.lastProgressAt;
247
+ }
248
+ const startTime = typeof raw.startTime === 'number' ? raw.startTime : undefined;
249
+ const lastActivityAt = lastProgress || startTime || 0;
250
+ return {
251
+ runId: typeof raw.runId === 'string' ? raw.runId : file.runId,
252
+ workflowName: typeof raw.workflowName === 'string' ? raw.workflowName : undefined,
253
+ status: typeof raw.status === 'string' ? raw.status : undefined,
254
+ summary: typeof raw.summary === 'string' ? raw.summary : undefined,
255
+ agentCount: typeof raw.agentCount === 'number' ? raw.agentCount : undefined,
256
+ totalTokens: typeof raw.totalTokens === 'number' ? raw.totalTokens : undefined,
257
+ totalToolCalls: typeof raw.totalToolCalls === 'number' ? raw.totalToolCalls : undefined,
258
+ durationMs: typeof raw.durationMs === 'number' ? raw.durationMs : undefined,
259
+ startTime,
260
+ timestamp: typeof raw.timestamp === 'string' ? raw.timestamp : undefined,
261
+ defaultModel: typeof raw.defaultModel === 'string' ? raw.defaultModel : undefined,
262
+ taskId: typeof raw.taskId === 'string' ? raw.taskId : undefined,
263
+ error: typeof raw.error === 'string' ? raw.error : undefined,
264
+ phases,
265
+ agents,
266
+ sessionUuid: file.sessionUuid,
267
+ projectHash: file.projectHash,
268
+ lastActivityAt,
269
+ };
270
+ }
271
+ toAgent(e) {
272
+ return {
273
+ index: typeof e.index === 'number' ? e.index : 0,
274
+ label: typeof e.label === 'string' ? e.label : '',
275
+ phaseIndex: typeof e.phaseIndex === 'number' ? e.phaseIndex : 0,
276
+ phaseTitle: typeof e.phaseTitle === 'string' ? e.phaseTitle : '',
277
+ model: typeof e.model === 'string' ? e.model : '',
278
+ state: typeof e.state === 'string' ? e.state : 'start',
279
+ queuedAt: e.queuedAt,
280
+ lastProgressAt: e.lastProgressAt,
281
+ promptPreview: truncate(e.promptPreview, PROMPT_PREVIEW_MAX),
282
+ agentId: e.agentId,
283
+ startedAt: e.startedAt,
284
+ attempt: e.attempt,
285
+ tokens: e.tokens,
286
+ toolCalls: e.toolCalls,
287
+ lastToolName: e.lastToolName,
288
+ lastToolSummary: truncate(e.lastToolSummary, RESULT_PREVIEW_MAX),
289
+ durationMs: e.durationMs,
290
+ resultPreview: truncate(e.resultPreview, RESULT_PREVIEW_MAX),
291
+ };
292
+ }
293
+ ensureDirWatcher(workflowsDir) {
294
+ if (this.dirWatchers.has(workflowsDir))
295
+ return;
296
+ try {
297
+ const watcher = chokidarWatch(workflowsDir, {
298
+ depth: 0,
299
+ awaitWriteFinish: { stabilityThreshold: 200 },
300
+ ignoreInitial: true,
301
+ persistent: false,
302
+ });
303
+ const handler = () => this.poll();
304
+ watcher.on('add', handler);
305
+ watcher.on('change', handler);
306
+ watcher.on('unlink', handler);
307
+ watcher.on('error', () => {
308
+ // chokidar surfaced an error for this dir — drop the watcher; poll still covers it.
309
+ this.removeDirWatcher(workflowsDir);
310
+ });
311
+ this.dirWatchers.set(workflowsDir, watcher);
312
+ }
313
+ catch {
314
+ // Watch setup failed — periodic poll still discovers changes.
315
+ }
316
+ }
317
+ removeDirWatcher(workflowsDir) {
318
+ const watcher = this.dirWatchers.get(workflowsDir);
319
+ if (watcher) {
320
+ watcher.close().catch(() => { });
321
+ this.dirWatchers.delete(workflowsDir);
322
+ }
323
+ }
324
+ }
325
+ /** Process-wide singleton (mirrors subagentWatcher / imageWatcher). */
326
+ export const workflowRunWatcher = new WorkflowRunWatcher();
327
+ //# sourceMappingURL=workflow-run-watcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-run-watcher.js","sourceRoot":"","sources":["../src/workflow-run-watcher.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aicodeman",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "Mission control for AI coding agents - run 20 autonomous agents with real-time monitoring and session persistence",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
Binary file
Binary file