@agents-tower/core 0.1.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 (178) hide show
  1. package/dist/adapters/claude.d.ts +2 -0
  2. package/dist/adapters/claude.js +43 -0
  3. package/dist/adapters/claude.js.map +1 -0
  4. package/dist/adapters/codex-cloud.d.ts +4 -0
  5. package/dist/adapters/codex-cloud.js +80 -0
  6. package/dist/adapters/codex-cloud.js.map +1 -0
  7. package/dist/adapters/codex-local.d.ts +17 -0
  8. package/dist/adapters/codex-local.js +180 -0
  9. package/dist/adapters/codex-local.js.map +1 -0
  10. package/dist/adapters/cursor-cloud.d.ts +2 -0
  11. package/dist/adapters/cursor-cloud.js +54 -0
  12. package/dist/adapters/cursor-cloud.js.map +1 -0
  13. package/dist/adapters/cursor-local.d.ts +2 -0
  14. package/dist/adapters/cursor-local.js +37 -0
  15. package/dist/adapters/cursor-local.js.map +1 -0
  16. package/dist/adapters/helpers.d.ts +15 -0
  17. package/dist/adapters/helpers.js +33 -0
  18. package/dist/adapters/helpers.js.map +1 -0
  19. package/dist/adapters/hermes.d.ts +2 -0
  20. package/dist/adapters/hermes.js +41 -0
  21. package/dist/adapters/hermes.js.map +1 -0
  22. package/dist/adapters/index.d.ts +2 -0
  23. package/dist/adapters/index.js +37 -0
  24. package/dist/adapters/index.js.map +1 -0
  25. package/dist/adapters/openclaw.d.ts +2 -0
  26. package/dist/adapters/openclaw.js +41 -0
  27. package/dist/adapters/openclaw.js.map +1 -0
  28. package/dist/adapters/presence.d.ts +2 -0
  29. package/dist/adapters/presence.js +36 -0
  30. package/dist/adapters/presence.js.map +1 -0
  31. package/dist/adapters/static-source.d.ts +15 -0
  32. package/dist/adapters/static-source.js +41 -0
  33. package/dist/adapters/static-source.js.map +1 -0
  34. package/dist/adapters/types.d.ts +44 -0
  35. package/dist/adapters/types.js +3 -0
  36. package/dist/adapters/types.js.map +1 -0
  37. package/dist/app-server.d.ts +94 -0
  38. package/dist/app-server.js +382 -0
  39. package/dist/app-server.js.map +1 -0
  40. package/dist/app-settings.d.ts +52 -0
  41. package/dist/app-settings.js +268 -0
  42. package/dist/app-settings.js.map +1 -0
  43. package/dist/appearance.d.ts +6 -0
  44. package/dist/appearance.js +84 -0
  45. package/dist/appearance.js.map +1 -0
  46. package/dist/aseprite.d.ts +4 -0
  47. package/dist/aseprite.js +42 -0
  48. package/dist/aseprite.js.map +1 -0
  49. package/dist/claude-agent-sdk.d.ts +44 -0
  50. package/dist/claude-agent-sdk.js +347 -0
  51. package/dist/claude-agent-sdk.js.map +1 -0
  52. package/dist/claude-home-cache.d.ts +61 -0
  53. package/dist/claude-home-cache.js +438 -0
  54. package/dist/claude-home-cache.js.map +1 -0
  55. package/dist/claude.d.ts +154 -0
  56. package/dist/claude.js +3495 -0
  57. package/dist/claude.js.map +1 -0
  58. package/dist/cloud.d.ts +2 -0
  59. package/dist/cloud.js +25 -0
  60. package/dist/cloud.js.map +1 -0
  61. package/dist/codex-command.d.ts +25 -0
  62. package/dist/codex-command.js +235 -0
  63. package/dist/codex-command.js.map +1 -0
  64. package/dist/codex-session-files.d.ts +8 -0
  65. package/dist/codex-session-files.js +509 -0
  66. package/dist/codex-session-files.js.map +1 -0
  67. package/dist/codex-thread-query.d.ts +14 -0
  68. package/dist/codex-thread-query.js +82 -0
  69. package/dist/codex-thread-query.js.map +1 -0
  70. package/dist/cursor-cloud-data.d.ts +34 -0
  71. package/dist/cursor-cloud-data.js +344 -0
  72. package/dist/cursor-cloud-data.js.map +1 -0
  73. package/dist/cursor-lib/local-discovery.d.ts +17 -0
  74. package/dist/cursor-lib/local-discovery.js +251 -0
  75. package/dist/cursor-lib/local-discovery.js.map +1 -0
  76. package/dist/cursor-lib/shared.d.ts +5 -0
  77. package/dist/cursor-lib/shared.js +88 -0
  78. package/dist/cursor-lib/shared.js.map +1 -0
  79. package/dist/cursor.d.ts +8 -0
  80. package/dist/cursor.js +1584 -0
  81. package/dist/cursor.js.map +1 -0
  82. package/dist/domain/codex-turn-semantics.d.ts +4 -0
  83. package/dist/domain/codex-turn-semantics.js +49 -0
  84. package/dist/domain/codex-turn-semantics.js.map +1 -0
  85. package/dist/domain/workload-policy.d.ts +8 -0
  86. package/dist/domain/workload-policy.js +268 -0
  87. package/dist/domain/workload-policy.js.map +1 -0
  88. package/dist/domain/workspace-activity.d.ts +10 -0
  89. package/dist/domain/workspace-activity.js +372 -0
  90. package/dist/domain/workspace-activity.js.map +1 -0
  91. package/dist/goal.d.ts +11 -0
  92. package/dist/goal.js +76 -0
  93. package/dist/goal.js.map +1 -0
  94. package/dist/hermes-hook-install.d.ts +12 -0
  95. package/dist/hermes-hook-install.js +335 -0
  96. package/dist/hermes-hook-install.js.map +1 -0
  97. package/dist/hermes.d.ts +97 -0
  98. package/dist/hermes.js +2446 -0
  99. package/dist/hermes.js.map +1 -0
  100. package/dist/index.d.ts +28 -0
  101. package/dist/index.js +47 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/live-monitor-lib/events.d.ts +43 -0
  104. package/dist/live-monitor-lib/events.js +1463 -0
  105. package/dist/live-monitor-lib/events.js.map +1 -0
  106. package/dist/live-monitor-lib/rollout-hooks.d.ts +13 -0
  107. package/dist/live-monitor-lib/rollout-hooks.js +253 -0
  108. package/dist/live-monitor-lib/rollout-hooks.js.map +1 -0
  109. package/dist/live-monitor.d.ts +102 -0
  110. package/dist/live-monitor.js +1461 -0
  111. package/dist/live-monitor.js.map +1 -0
  112. package/dist/local-thread-selection.d.ts +2 -0
  113. package/dist/local-thread-selection.js +58 -0
  114. package/dist/local-thread-selection.js.map +1 -0
  115. package/dist/openclaw.d.ts +41 -0
  116. package/dist/openclaw.js +715 -0
  117. package/dist/openclaw.js.map +1 -0
  118. package/dist/presence.d.ts +9 -0
  119. package/dist/presence.js +108 -0
  120. package/dist/presence.js.map +1 -0
  121. package/dist/project-identity.d.ts +7 -0
  122. package/dist/project-identity.js +162 -0
  123. package/dist/project-identity.js.map +1 -0
  124. package/dist/project-paths.d.ts +23 -0
  125. package/dist/project-paths.js +394 -0
  126. package/dist/project-paths.js.map +1 -0
  127. package/dist/project-storage.d.ts +7 -0
  128. package/dist/project-storage.js +79 -0
  129. package/dist/project-storage.js.map +1 -0
  130. package/dist/room-config.d.ts +21 -0
  131. package/dist/room-config.js +230 -0
  132. package/dist/room-config.js.map +1 -0
  133. package/dist/services/project-discovery.d.ts +1 -0
  134. package/dist/services/project-discovery.js +16 -0
  135. package/dist/services/project-discovery.js.map +1 -0
  136. package/dist/services/project-live-monitor.d.ts +1 -0
  137. package/dist/services/project-live-monitor.js +6 -0
  138. package/dist/services/project-live-monitor.js.map +1 -0
  139. package/dist/services/project-snapshot-coordinator.d.ts +49 -0
  140. package/dist/services/project-snapshot-coordinator.js +152 -0
  141. package/dist/services/project-snapshot-coordinator.js.map +1 -0
  142. package/dist/services/refresh-scheduler.d.ts +8 -0
  143. package/dist/services/refresh-scheduler.js +44 -0
  144. package/dist/services/refresh-scheduler.js.map +1 -0
  145. package/dist/services/snapshot-assembler.d.ts +8 -0
  146. package/dist/services/snapshot-assembler.js +167 -0
  147. package/dist/services/snapshot-assembler.js.map +1 -0
  148. package/dist/services/thread-store.d.ts +4 -0
  149. package/dist/services/thread-store.js +8 -0
  150. package/dist/services/thread-store.js.map +1 -0
  151. package/dist/snapshot-lib/activity-summary.d.ts +3 -0
  152. package/dist/snapshot-lib/activity-summary.js +220 -0
  153. package/dist/snapshot-lib/activity-summary.js.map +1 -0
  154. package/dist/snapshot-lib/dashboard-builder.d.ts +21 -0
  155. package/dist/snapshot-lib/dashboard-builder.js +146 -0
  156. package/dist/snapshot-lib/dashboard-builder.js.map +1 -0
  157. package/dist/snapshot-lib/thread-summary.d.ts +27 -0
  158. package/dist/snapshot-lib/thread-summary.js +953 -0
  159. package/dist/snapshot-lib/thread-summary.js.map +1 -0
  160. package/dist/snapshot.d.ts +2 -0
  161. package/dist/snapshot.js +21 -0
  162. package/dist/snapshot.js.map +1 -0
  163. package/dist/types.d.ts +368 -0
  164. package/dist/types.js +3 -0
  165. package/dist/types.js.map +1 -0
  166. package/dist/utils/json.d.ts +4 -0
  167. package/dist/utils/json.js +29 -0
  168. package/dist/utils/json.js.map +1 -0
  169. package/dist/utils/text.d.ts +3 -0
  170. package/dist/utils/text.js +26 -0
  171. package/dist/utils/text.js.map +1 -0
  172. package/dist/web-search.d.ts +1 -0
  173. package/dist/web-search.js +52 -0
  174. package/dist/web-search.js.map +1 -0
  175. package/dist/workload.d.ts +1 -0
  176. package/dist/workload.js +12 -0
  177. package/dist/workload.js.map +1 -0
  178. package/package.json +19 -0
@@ -0,0 +1,372 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildWorkspaceActivitySnapshot = buildWorkspaceActivitySnapshot;
4
+ exports.emptyWorkspaceActivitySnapshot = emptyWorkspaceActivitySnapshot;
5
+ const HOT_CHANGE_WINDOW_MS = 20 * 60 * 1000;
6
+ const HOT_CHANGE_HALF_LIFE_MS = 3 * 60 * 1000;
7
+ const HOT_CHANGE_MIN_SCORE = 1.2;
8
+ const HOT_CHANGE_LINE_SCORE_FACTOR = 1.25;
9
+ const HOT_CHANGE_MAX_LINE_SCORE = 10;
10
+ const HOT_CHANGE_HEAT_PER_SCORE = 2;
11
+ const HOT_CHANGE_FALLBACK_SCORE = 2.5;
12
+ const HOT_CHANGE_FALLBACK_HEAT = 6;
13
+ const MAX_HOT_CHANGES_PER_TYPE = 3;
14
+ const HOT_TOOL_WINDOW_MS = 20 * 60 * 1000;
15
+ const MAX_HOT_TOOLS = 5;
16
+ const COMMAND_QUIET_AFTER_MS = 15 * 1000;
17
+ const RUNNING_COMMAND_WINDOW_MS = 5 * 60 * 1000;
18
+ function parseTimeMs(value) {
19
+ const parsed = Date.parse(value ?? "");
20
+ return Number.isFinite(parsed) ? parsed : Number.NaN;
21
+ }
22
+ function ageMs(createdAtMs, now) {
23
+ if (!Number.isFinite(createdAtMs)) {
24
+ return Number.NaN;
25
+ }
26
+ return Math.max(0, now - createdAtMs);
27
+ }
28
+ function pathLabel(path) {
29
+ const parts = path.split(/[\\/]/).filter(Boolean);
30
+ return parts.at(-1) ?? path;
31
+ }
32
+ function extensionForPath(path) {
33
+ const label = pathLabel(path).toLowerCase();
34
+ const match = label.match(/\.([^.]+)$/);
35
+ return match ? match[1] : "";
36
+ }
37
+ function hotFileType(path) {
38
+ const extension = extensionForPath(path);
39
+ if (!extension) {
40
+ return null;
41
+ }
42
+ if ([
43
+ "js", "jsx", "ts", "tsx", "mjs", "cjs", "css", "scss", "sass", "less", "html",
44
+ "py", "rb", "go", "rs", "java", "kt", "kts", "swift", "c", "cc", "cpp", "h",
45
+ "hpp", "cs", "php", "sh", "bash", "zsh", "fish", "ps1", "bat", "cmd", "sql",
46
+ "graphql", "gql", "vue", "svelte", "astro", "lua", "pl", "r"
47
+ ].includes(extension)) {
48
+ return "script";
49
+ }
50
+ if ([
51
+ "md", "mdx", "txt", "rst", "adoc", "tex", "pdf", "doc", "docx", "rtf", "csv",
52
+ "tsv", "yml", "yaml", "toml", "ini"
53
+ ].includes(extension)) {
54
+ return "doc";
55
+ }
56
+ if ([
57
+ "png", "jpg", "jpeg", "gif", "webp", "avif", "svg", "ico", "bmp", "tif", "tiff",
58
+ "mp3", "wav", "ogg", "flac", "mp4", "webm", "mov", "m4v", "avi", "aseprite",
59
+ "psd", "ai", "sketch", "fig", "woff", "woff2", "ttf", "otf"
60
+ ].includes(extension)) {
61
+ return "media";
62
+ }
63
+ return null;
64
+ }
65
+ function combineConfidence(left, right) {
66
+ return left === "typed" || right === "typed" ? "typed" : "inferred";
67
+ }
68
+ function cleanLabel(value) {
69
+ const normalized = typeof value === "string" ? value.trim() : "";
70
+ return normalized.length > 0 ? normalized : null;
71
+ }
72
+ function addUnique(set, value) {
73
+ const normalized = cleanLabel(value);
74
+ if (normalized) {
75
+ set.add(normalized);
76
+ }
77
+ }
78
+ function lineDelta(event) {
79
+ const added = Number.isFinite(event.linesAdded) ? Math.max(0, Number(event.linesAdded)) : 0;
80
+ const removed = Number.isFinite(event.linesRemoved) ? Math.max(0, Number(event.linesRemoved)) : 0;
81
+ return added + removed;
82
+ }
83
+ function fileChangeWeight(event) {
84
+ const base = event.action === "created" || event.action === "deleted" ? 7
85
+ : event.action === "moved" ? 6
86
+ : event.phase === "completed" ? 6
87
+ : event.phase === "started" ? 4
88
+ : 3;
89
+ const changedLines = lineDelta(event);
90
+ return base + Math.min(HOT_CHANGE_MAX_LINE_SCORE, Math.log2(changedLines + 1) * HOT_CHANGE_LINE_SCORE_FACTOR);
91
+ }
92
+ function buildHotChanges(input) {
93
+ const changes = new Map();
94
+ for (const event of input.events) {
95
+ if (event.kind !== "fileChange" || !event.path) {
96
+ continue;
97
+ }
98
+ const fileType = hotFileType(event.path);
99
+ if (!fileType) {
100
+ continue;
101
+ }
102
+ const createdAtMs = parseTimeMs(event.createdAt);
103
+ const eventAgeMs = ageMs(createdAtMs, input.now);
104
+ if (!Number.isFinite(eventAgeMs) || eventAgeMs > HOT_CHANGE_WINDOW_MS) {
105
+ continue;
106
+ }
107
+ const decay = Math.pow(0.5, eventAgeMs / HOT_CHANGE_HALF_LIFE_MS);
108
+ const score = fileChangeWeight(event) * decay;
109
+ const existing = changes.get(event.path);
110
+ const next = existing ?? {
111
+ path: event.path,
112
+ score: 0,
113
+ changeCount: 0,
114
+ lastChangedAtMs: createdAtMs,
115
+ linesAdded: 0,
116
+ linesRemoved: 0,
117
+ agents: new Set(),
118
+ branches: new Set(),
119
+ users: new Set(),
120
+ provenance: event.source,
121
+ confidence: event.confidence
122
+ };
123
+ next.score += score;
124
+ next.changeCount += 1;
125
+ next.lastChangedAtMs = Math.max(next.lastChangedAtMs, createdAtMs);
126
+ next.linesAdded += Number.isFinite(event.linesAdded) ? Math.max(0, Number(event.linesAdded)) : 0;
127
+ next.linesRemoved += Number.isFinite(event.linesRemoved) ? Math.max(0, Number(event.linesRemoved)) : 0;
128
+ next.confidence = combineConfidence(next.confidence, event.confidence);
129
+ const agent = event.threadId ? input.agentByThreadId.get(event.threadId) ?? null : null;
130
+ addUnique(next.agents, agent?.label);
131
+ addUnique(next.branches, agent?.git?.branch ?? input.projectBranch);
132
+ if (agent?.network?.peerLabel) {
133
+ addUnique(next.users, agent.network.peerLabel);
134
+ }
135
+ changes.set(event.path, next);
136
+ }
137
+ const hotChanges = [...changes.values()]
138
+ .map((entry) => {
139
+ const repeatedMultiplier = 1 + Math.min(0.8, Math.max(0, entry.changeCount - 1) * 0.12);
140
+ const score = entry.score * repeatedMultiplier;
141
+ const branches = [...entry.branches].slice(0, 4);
142
+ return {
143
+ path: entry.path,
144
+ label: pathLabel(entry.path),
145
+ fileType: hotFileType(entry.path) ?? "script",
146
+ branch: branches[0] ?? null,
147
+ branches,
148
+ users: [...entry.users].slice(0, 4),
149
+ heat: Math.min(100, Math.max(1, Math.round(score * HOT_CHANGE_HEAT_PER_SCORE))),
150
+ score: Math.round(score * 10) / 10,
151
+ changeCount: entry.changeCount,
152
+ lastChangedAt: new Date(entry.lastChangedAtMs).toISOString(),
153
+ linesAdded: entry.linesAdded,
154
+ linesRemoved: entry.linesRemoved,
155
+ agents: [...entry.agents].slice(0, 4),
156
+ provenance: entry.provenance,
157
+ confidence: entry.confidence
158
+ };
159
+ })
160
+ .filter((entry) => entry.score >= HOT_CHANGE_MIN_SCORE)
161
+ .sort((left, right) => right.score - left.score
162
+ || right.lastChangedAt.localeCompare(left.lastChangedAt)
163
+ || left.path.localeCompare(right.path))
164
+ .reduce((selected, entry) => {
165
+ const countForType = selected.filter((candidate) => candidate.fileType === entry.fileType).length;
166
+ if (countForType < MAX_HOT_CHANGES_PER_TYPE) {
167
+ selected.push(entry);
168
+ }
169
+ return selected;
170
+ }, []);
171
+ if (hotChanges.length >= 3 || !Array.isArray(input.changedPaths) || input.changedPaths.length === 0) {
172
+ return hotChanges;
173
+ }
174
+ const existingPaths = new Set(hotChanges.map((entry) => entry.path));
175
+ const fallbackChanges = input.changedPaths
176
+ .filter((path) => path && !existingPaths.has(path) && hotFileType(path))
177
+ .slice(0, 3 - hotChanges.length)
178
+ .map((path) => ({
179
+ path,
180
+ label: pathLabel(path),
181
+ fileType: hotFileType(path) ?? "script",
182
+ branch: cleanLabel(input.projectBranch),
183
+ branches: cleanLabel(input.projectBranch) ? [cleanLabel(input.projectBranch)] : [],
184
+ users: [],
185
+ heat: HOT_CHANGE_FALLBACK_HEAT,
186
+ score: HOT_CHANGE_FALLBACK_SCORE,
187
+ changeCount: 1,
188
+ lastChangedAt: new Date(input.now).toISOString(),
189
+ linesAdded: 0,
190
+ linesRemoved: 0,
191
+ agents: [],
192
+ provenance: "codex",
193
+ confidence: "inferred"
194
+ }));
195
+ return [...hotChanges, ...fallbackChanges];
196
+ }
197
+ function agentLabelForEvent(event, agentByThreadId) {
198
+ return event.threadId ? cleanLabel(agentByThreadId.get(event.threadId)?.label) : null;
199
+ }
200
+ function buildHotTools(input) {
201
+ const tools = new Map();
202
+ for (const event of input.events) {
203
+ if (event.kind !== "tool") {
204
+ continue;
205
+ }
206
+ const createdAtMs = parseTimeMs(event.createdAt);
207
+ const eventAgeMs = ageMs(createdAtMs, input.now);
208
+ if (!Number.isFinite(eventAgeMs) || eventAgeMs > HOT_TOOL_WINDOW_MS) {
209
+ continue;
210
+ }
211
+ const label = cleanLabel(event.detail) ?? cleanLabel(event.title);
212
+ if (!label) {
213
+ continue;
214
+ }
215
+ const key = `${event.itemType ?? "tool"}\u0000${label}`;
216
+ const accumulator = tools.get(key) ?? {
217
+ label,
218
+ itemType: event.itemType ?? null,
219
+ uses: new Set(),
220
+ lastUsedAtMs: createdAtMs,
221
+ agents: new Set(),
222
+ provenance: event.source,
223
+ confidence: event.confidence
224
+ };
225
+ accumulator.uses.add(event.itemId ?? event.id);
226
+ accumulator.lastUsedAtMs = Math.max(accumulator.lastUsedAtMs, createdAtMs);
227
+ accumulator.confidence = combineConfidence(accumulator.confidence, event.confidence);
228
+ addUnique(accumulator.agents, agentLabelForEvent(event, input.agentByThreadId));
229
+ tools.set(key, accumulator);
230
+ }
231
+ return [...tools.values()]
232
+ .map((entry) => {
233
+ const ageMinutes = ageMs(entry.lastUsedAtMs, input.now) / 60_000;
234
+ const score = entry.uses.size * 4 + Math.max(0, 6 - ageMinutes);
235
+ return {
236
+ label: entry.label,
237
+ heat: Math.min(100, Math.max(1, Math.round(score * 2))),
238
+ score: Math.round(score * 10) / 10,
239
+ useCount: entry.uses.size,
240
+ lastUsedAt: new Date(entry.lastUsedAtMs).toISOString(),
241
+ itemType: entry.itemType,
242
+ agents: [...entry.agents].slice(0, 4),
243
+ provenance: entry.provenance,
244
+ confidence: entry.confidence
245
+ };
246
+ })
247
+ .sort((left, right) => right.score - left.score || right.lastUsedAt.localeCompare(left.lastUsedAt))
248
+ .slice(0, MAX_HOT_TOOLS);
249
+ }
250
+ function commandProgress(detail) {
251
+ if (!detail) {
252
+ return null;
253
+ }
254
+ const percentMatch = detail.match(/(?:^|\s)(100|\d{1,2}(?:\.\d+)?)\s*%/);
255
+ if (percentMatch) {
256
+ const percent = Math.max(0, Math.min(100, Number(percentMatch[1])));
257
+ return { percent, label: `${percent}%`, confidence: "high", source: "explicit-percent" };
258
+ }
259
+ const countMatch = detail.match(/(?:^|\s)(\d+)\s*\/\s*(\d+)(?:\s|$)/);
260
+ if (!countMatch) {
261
+ return null;
262
+ }
263
+ const completed = Number(countMatch[1]);
264
+ const total = Number(countMatch[2]);
265
+ if (!Number.isFinite(completed) || !Number.isFinite(total) || total <= 0 || completed > total) {
266
+ return null;
267
+ }
268
+ return {
269
+ percent: Math.round((completed / total) * 100),
270
+ label: `${completed}/${total}`,
271
+ confidence: "high",
272
+ source: "count"
273
+ };
274
+ }
275
+ function buildRunningCommands(input) {
276
+ const commands = new Map();
277
+ const orderedEvents = [...input.events].sort((left, right) => left.createdAt.localeCompare(right.createdAt));
278
+ for (const event of orderedEvents) {
279
+ if (event.kind !== "command") {
280
+ continue;
281
+ }
282
+ const eventAtMs = parseTimeMs(event.createdAt);
283
+ if (!Number.isFinite(eventAtMs)) {
284
+ continue;
285
+ }
286
+ const id = event.itemId ?? event.id;
287
+ const existing = commands.get(id);
288
+ if (!existing) {
289
+ const command = cleanLabel(event.command) ?? cleanLabel(event.detail);
290
+ if (!command) {
291
+ continue;
292
+ }
293
+ commands.set(id, {
294
+ id,
295
+ command,
296
+ cwd: cleanLabel(event.cwd) ?? cleanLabel(event.path),
297
+ threadId: event.threadId,
298
+ agentLabel: agentLabelForEvent(event, input.agentByThreadId),
299
+ startedAtMs: eventAtMs,
300
+ updatedAtMs: eventAtMs,
301
+ completedAtMs: event.phase === "completed" || event.phase === "failed" || event.phase === "interrupted" ? eventAtMs : null,
302
+ lastOutput: null,
303
+ progress: commandProgress(event.detail),
304
+ provenance: event.source,
305
+ confidence: event.confidence
306
+ });
307
+ continue;
308
+ }
309
+ existing.updatedAtMs = Math.max(existing.updatedAtMs, eventAtMs);
310
+ existing.confidence = combineConfidence(existing.confidence, event.confidence);
311
+ if (event.phase === "completed" || event.phase === "failed" || event.phase === "interrupted") {
312
+ existing.completedAtMs = eventAtMs;
313
+ }
314
+ if (event.method.includes("output") || event.phase === "updated") {
315
+ existing.lastOutput = cleanLabel(event.detail) ?? existing.lastOutput;
316
+ existing.progress = commandProgress(event.detail) ?? existing.progress;
317
+ }
318
+ }
319
+ return [...commands.values()]
320
+ .filter((entry) => entry.completedAtMs === null && input.now - entry.updatedAtMs <= RUNNING_COMMAND_WINDOW_MS)
321
+ .map((entry) => {
322
+ const quietForMs = Math.max(0, input.now - entry.updatedAtMs);
323
+ return {
324
+ id: entry.id,
325
+ command: entry.command,
326
+ cwd: entry.cwd,
327
+ threadId: entry.threadId,
328
+ agentLabel: entry.agentLabel,
329
+ status: quietForMs >= COMMAND_QUIET_AFTER_MS ? "quiet" : "running",
330
+ startedAt: new Date(entry.startedAtMs).toISOString(),
331
+ updatedAt: new Date(entry.updatedAtMs).toISOString(),
332
+ completedAt: null,
333
+ durationMs: Math.max(0, input.now - entry.startedAtMs),
334
+ quietForMs,
335
+ lastOutput: entry.lastOutput,
336
+ progress: entry.progress,
337
+ provenance: entry.provenance,
338
+ confidence: entry.confidence
339
+ };
340
+ })
341
+ .sort((left, right) => right.durationMs - left.durationMs);
342
+ }
343
+ function buildWorkspaceActivitySnapshot(input) {
344
+ const now = input.now ?? Date.now();
345
+ const agentByThreadId = new Map();
346
+ for (const agent of input.agents) {
347
+ if (agent.threadId) {
348
+ agentByThreadId.set(agent.threadId, agent);
349
+ }
350
+ }
351
+ return {
352
+ generatedAt: input.generatedAt ?? new Date(now).toISOString(),
353
+ hotChanges: buildHotChanges({
354
+ events: input.events,
355
+ agentByThreadId,
356
+ now,
357
+ changedPaths: input.changedPaths,
358
+ projectBranch: input.projectBranch
359
+ }),
360
+ hotTools: buildHotTools({ events: input.events, agentByThreadId, now }),
361
+ runningCommands: buildRunningCommands({ events: input.events, agentByThreadId, now })
362
+ };
363
+ }
364
+ function emptyWorkspaceActivitySnapshot(generatedAt = new Date().toISOString()) {
365
+ return {
366
+ generatedAt,
367
+ hotChanges: [],
368
+ hotTools: [],
369
+ runningCommands: []
370
+ };
371
+ }
372
+ //# sourceMappingURL=workspace-activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-activity.js","sourceRoot":"","sources":["../../src/domain/workspace-activity.ts"],"names":[],"mappings":"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"}
package/dist/goal.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ import type { ActivityState, AgentConfidence, AgentGoalKind, AgentGoalState, AgentGoalStatus } from "./types";
2
+ export declare function codexGoalToAgentGoal(value: unknown): AgentGoalState | null;
3
+ export declare function goalStatusFromActivityState(state: ActivityState): AgentGoalStatus;
4
+ export declare function inferredGoalFromText(input: {
5
+ kind: AgentGoalKind;
6
+ objective: string | null;
7
+ state: ActivityState;
8
+ updatedAt: string | null;
9
+ createdAt?: string | null;
10
+ confidence?: AgentConfidence;
11
+ }): AgentGoalState | null;
package/dist/goal.js ADDED
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.codexGoalToAgentGoal = codexGoalToAgentGoal;
4
+ exports.goalStatusFromActivityState = goalStatusFromActivityState;
5
+ exports.inferredGoalFromText = inferredGoalFromText;
6
+ const GOAL_STATUSES = new Set([
7
+ "active",
8
+ "paused",
9
+ "blocked",
10
+ "usageLimited",
11
+ "budgetLimited",
12
+ "complete",
13
+ "unknown"
14
+ ]);
15
+ function asRecord(value) {
16
+ return typeof value === "object" && value ? value : null;
17
+ }
18
+ function stringValue(value) {
19
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : null;
20
+ }
21
+ function numberValue(value) {
22
+ return typeof value === "number" && Number.isFinite(value) ? value : null;
23
+ }
24
+ function unixSecondsToIso(value) {
25
+ const seconds = numberValue(value);
26
+ return seconds === null ? null : new Date(seconds * 1000).toISOString();
27
+ }
28
+ function goalStatus(value) {
29
+ const status = stringValue(value);
30
+ return status && GOAL_STATUSES.has(status) ? status : "unknown";
31
+ }
32
+ function codexGoalToAgentGoal(value) {
33
+ const record = asRecord(value);
34
+ const objective = stringValue(record?.objective);
35
+ if (!record || !objective) {
36
+ return null;
37
+ }
38
+ return {
39
+ kind: "codex",
40
+ objective,
41
+ status: goalStatus(record.status),
42
+ confidence: "typed",
43
+ createdAt: unixSecondsToIso(record.createdAt),
44
+ updatedAt: unixSecondsToIso(record.updatedAt),
45
+ tokenBudget: numberValue(record.tokenBudget),
46
+ tokensUsed: numberValue(record.tokensUsed),
47
+ timeUsedSeconds: numberValue(record.timeUsedSeconds)
48
+ };
49
+ }
50
+ function goalStatusFromActivityState(state) {
51
+ if (state === "blocked") {
52
+ return "blocked";
53
+ }
54
+ if (state === "done") {
55
+ return "complete";
56
+ }
57
+ if (state === "idle" || state === "cloud") {
58
+ return "unknown";
59
+ }
60
+ return "active";
61
+ }
62
+ function inferredGoalFromText(input) {
63
+ const objective = stringValue(input.objective);
64
+ if (!objective) {
65
+ return null;
66
+ }
67
+ return {
68
+ kind: input.kind,
69
+ objective,
70
+ status: goalStatusFromActivityState(input.state),
71
+ confidence: input.confidence ?? "inferred",
72
+ createdAt: input.createdAt ?? null,
73
+ updatedAt: input.updatedAt
74
+ };
75
+ }
76
+ //# sourceMappingURL=goal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goal.js","sourceRoot":"","sources":["../src/goal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export interface HermesHookInstallResult {
2
+ hermesHome: string;
3
+ pluginDir: string;
4
+ hookDir: string;
5
+ configPath: string;
6
+ }
7
+ export declare function getHermesHooksDir(): string;
8
+ export declare function resolveHermesHome(input?: string | null): string;
9
+ export declare function installHermesAgentsOfficePlugin(input?: {
10
+ hermesHome?: string | null;
11
+ hookDir?: string | null;
12
+ }): Promise<HermesHookInstallResult>;