github-issue-tower-defence-management 1.135.0 → 1.135.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.
- package/CHANGELOG.md +14 -0
- package/bin/adapter/repositories/TranscriptSessionSubAgentActivityRepository.js +59 -2
- package/bin/adapter/repositories/TranscriptSessionSubAgentActivityRepository.js.map +1 -1
- package/bin/domain/usecases/ClearPastNextActionDateHourUseCase.js +18 -25
- package/bin/domain/usecases/ClearPastNextActionDateHourUseCase.js.map +1 -1
- package/package.json +1 -1
- package/src/adapter/repositories/TranscriptSessionSubAgentActivityRepository.test.ts +196 -0
- package/src/adapter/repositories/TranscriptSessionSubAgentActivityRepository.ts +62 -0
- package/src/domain/usecases/ClearPastNextActionDateHourUseCase.test.ts +24 -5
- package/src/domain/usecases/ClearPastNextActionDateHourUseCase.ts +30 -36
- package/types/adapter/repositories/TranscriptSessionSubAgentActivityRepository.d.ts +1 -0
- package/types/adapter/repositories/TranscriptSessionSubAgentActivityRepository.d.ts.map +1 -1
- package/types/domain/usecases/ClearPastNextActionDateHourUseCase.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [1.135.2](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.135.1...v1.135.2) (2026-07-25)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **use-case:** clear past nextActionHour on every sweep without minute-45 dependency ([#1234](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1234)) ([54d6b8f](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/54d6b8fecbd94c6068ae5c85f6d347ad38378725)), closes [HiromiShikata/secretary#2794](https://github.com/HiromiShikata/secretary/issues/2794)
|
|
7
|
+
|
|
8
|
+
## [1.135.1](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.135.0...v1.135.1) (2026-07-25)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **silent-session:** exclude TaskStop-killed and crashed subagents from false-positive alerts ([#1107](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1107)) ([024e59c](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/024e59ca765c248e991f8dea7d4a4806593785d1)), closes [#1105](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1105)
|
|
14
|
+
|
|
1
15
|
# [1.135.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.134.0...v1.135.0) (2026-07-25)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -186,6 +186,45 @@ const parseTranscript = (content) => {
|
|
|
186
186
|
};
|
|
187
187
|
};
|
|
188
188
|
const clampToZero = (value) => (value > 0 ? value : 0);
|
|
189
|
+
const parseKilledOrFailedAgentIds = (content) => {
|
|
190
|
+
const result = new Set();
|
|
191
|
+
for (const line of content.split('\n')) {
|
|
192
|
+
const trimmed = line.trim();
|
|
193
|
+
if (trimmed.length === 0) {
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
let parsed;
|
|
197
|
+
try {
|
|
198
|
+
parsed = JSON.parse(trimmed);
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
if (!isRecord(parsed)) {
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
if (readString(parsed, 'type') !== 'queue-operation') {
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
if (readString(parsed, 'operation') !== 'enqueue') {
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
const notifContent = readString(parsed, 'content');
|
|
213
|
+
if (notifContent === null) {
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
const taskIdMatch = notifContent.match(/<task-id>(a[0-9a-f]+)<\/task-id>/);
|
|
217
|
+
const statusMatch = notifContent.match(/<status>([^<]+)<\/status>/);
|
|
218
|
+
if (!taskIdMatch || !statusMatch) {
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
const status = statusMatch[1];
|
|
222
|
+
if (status === 'killed' || status === 'failed') {
|
|
223
|
+
result.add(taskIdMatch[1]);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return result;
|
|
227
|
+
};
|
|
189
228
|
class TranscriptSessionSubAgentActivityRepository {
|
|
190
229
|
constructor(directoryResolver, processLister, now) {
|
|
191
230
|
this.directoryResolver = directoryResolver;
|
|
@@ -208,14 +247,28 @@ class TranscriptSessionSubAgentActivityRepository {
|
|
|
208
247
|
if (directory === null) {
|
|
209
248
|
continue;
|
|
210
249
|
}
|
|
211
|
-
const
|
|
250
|
+
const killedOrFailedAgentIds = this.loadKilledOrFailedAgentIds(mainTranscriptPath);
|
|
251
|
+
const activities = await this.collectActivities(directory, nowEpochSeconds, killedOrFailedAgentIds, loadNormalizedProcessCommandLines);
|
|
212
252
|
if (activities.length > 0) {
|
|
213
253
|
result.set(sessionName, activities);
|
|
214
254
|
}
|
|
215
255
|
}
|
|
216
256
|
return result;
|
|
217
257
|
};
|
|
218
|
-
this.
|
|
258
|
+
this.loadKilledOrFailedAgentIds = (mainTranscriptPath) => {
|
|
259
|
+
if (mainTranscriptPath === null) {
|
|
260
|
+
return new Set();
|
|
261
|
+
}
|
|
262
|
+
let content;
|
|
263
|
+
try {
|
|
264
|
+
content = fs.readFileSync(mainTranscriptPath, 'utf8');
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
return new Set();
|
|
268
|
+
}
|
|
269
|
+
return parseKilledOrFailedAgentIds(content);
|
|
270
|
+
};
|
|
271
|
+
this.collectActivities = async (directory, nowEpochSeconds, killedOrFailedAgentIds, loadNormalizedProcessCommandLines) => {
|
|
219
272
|
let entries;
|
|
220
273
|
try {
|
|
221
274
|
entries = fs.readdirSync(directory, { withFileTypes: true });
|
|
@@ -229,6 +282,10 @@ class TranscriptSessionSubAgentActivityRepository {
|
|
|
229
282
|
if (!fileName.startsWith('agent-') || !fileName.endsWith('.jsonl')) {
|
|
230
283
|
continue;
|
|
231
284
|
}
|
|
285
|
+
const agentId = fileName.slice('agent-'.length, -'.jsonl'.length);
|
|
286
|
+
if (killedOrFailedAgentIds.has(agentId)) {
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
232
289
|
const filePath = path.join(directory, fileName);
|
|
233
290
|
const activity = await this.toActivity(filePath, fileName, nowEpochSeconds, loadNormalizedProcessCommandLines);
|
|
234
291
|
if (activity !== null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TranscriptSessionSubAgentActivityRepository.js","sourceRoot":"","sources":["../../../src/adapter/repositories/TranscriptSessionSubAgentActivityRepository.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TranscriptSessionSubAgentActivityRepository.js","sourceRoot":"","sources":["../../../src/adapter/repositories/TranscriptSessionSubAgentActivityRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAM7B,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACpE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AAE9C,MAAM,UAAU,GAAG,CACjB,KAA8B,EAC9B,GAAW,EACI,EAAE;IACjB,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,SAAwB,EAAiB,EAAE;IACpE,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AACjE,CAAC,CAAC;AAEF,MAAM,oCAAoC,GAAG,EAAE,CAAC;AAEzC,MAAM,wBAAwB,GAAG,CAAC,OAAe,EAAU,EAAE,CAClE,OAAO;KACJ,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;KACpB,IAAI,EAAE;KACN,KAAK,CAAC,CAAC,EAAE,oCAAoC,CAAC,CAAC;AAJvC,QAAA,wBAAwB,4BAIe;AASpD,MAAM,iBAAiB,GAAG,CACxB,OAAgC,EACL,EAAE;IAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF,4EAA4E;AAC5E,yEAAyE;AACzE,sEAAsE;AACtE,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAE5D,uEAAuE;AACvE,6EAA6E;AAC7E,2EAA2E;AAC3E,6EAA6E;AAC7E,oEAAoE;AACpE,wDAAwD;AACxD,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAEzD,MAAM,iBAAiB,GAAG,CAAC,OAAgC,EAAY,EAAE,CACvE,iBAAiB,CAAC,OAAO,CAAC;KACvB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,UAAU,CAAC;KAC3D,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;KACzC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAErD,MAAM,wBAAwB,GAAG,CAC/B,KAA8B,EAC9B,8BAAwC,EAC/B,EAAE;IACX,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACtD,IAAI,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;YAChE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC5C,OAAO,SAAS,KAAK,SAAS,IAAI,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;IAC7E,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC5C,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACpD,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YAC7B,gEAAgE;YAChE,iEAAiE;YACjE,yCAAyC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,aAAa,KAAK,aAAa,EAAE,CAAC;YACpC,oEAAoE;YACpE,mEAAmE;YACnE,oEAAoE;YACpE,iEAAiE;YACjE,mEAAmE;YACnE,iDAAiD;YACjD,mEAAmE;YACnE,yCAAyC;YACzC,OAAO,8BAA8B,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAClD,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAChC,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,KAA8B,EAAY,EAAE;IAC5E,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,IAAI,IAAI,KAAK,WAAW,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC;YAC7C,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC7C,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,OAAe,EAAoB,EAAE;IAC5D,IAAI,sBAAsB,GAAkB,IAAI,CAAC;IACjD,IAAI,4BAA4B,GAAG,KAAK,CAAC;IACzC,IAAI,mBAAmB,GAAa,EAAE,CAAC;IACvC,IAAI,wBAAwB,GAAG,KAAK,CAAC;IACrC,IAAI,8BAA8B,GAAa,EAAE,CAAC;IAClD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QACD,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,SAAS;QACX,CAAC;QACD,MAAM,YAAY,GAAG,iBAAiB,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;QACxE,IAAI,sBAAsB,KAAK,IAAI,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC7D,sBAAsB,GAAG,YAAY,CAAC;QACxC,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,4BAA4B,GAAG,wBAAwB,CACrD,MAAM,EACN,8BAA8B,CAC/B,CAAC;YACF,mBAAmB,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,WAAW,EAAE,CAAC;gBAC/C,8BAA8B,GAAG,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACnE,wBAAwB,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACtE,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAChC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,wBAAwB,GAAG,KAAK,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO;QACL,sBAAsB;QACtB,4BAA4B;QAC5B,mBAAmB;QACnB,wBAAwB;KACzB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvE,MAAM,2BAA2B,GAAG,CAAC,OAAe,EAAe,EAAE;IACnE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QACD,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,SAAS;QACX,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,iBAAiB,EAAE,CAAC;YACrD,SAAS;QACX,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,SAAS,EAAE,CAAC;YAClD,SAAS;QACX,CAAC;QACD,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACnD,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;YACjC,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/C,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAa,2CAA2C;IACtD,YACmB,iBAAsD,EACtD,aAAoC,EACpC,GAAS;QAFT,sBAAiB,GAAjB,iBAAiB,CAAqC;QACtD,kBAAa,GAAb,aAAa,CAAuB;QACpC,QAAG,GAAH,GAAG,CAAM;QAG5B,wCAAmC,GAAG,KAAK,EACzC,YAAsB,EACtB,2BAAgD,EACN,EAAE;YAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,EAA8B,CAAC;YACrD,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YAC9D,IAAI,6BAA6B,GAAoB,IAAI,CAAC;YAC1D,MAAM,iCAAiC,GAAG,KAAK,IAAuB,EAAE;gBACtE,IAAI,6BAA6B,KAAK,IAAI,EAAE,CAAC;oBAC3C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;oBAC3D,6BAA6B,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACxD,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAChD,CAAC;gBACJ,CAAC;gBACD,OAAO,6BAA6B,CAAC;YACvC,CAAC,CAAC;YACF,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACvC,MAAM,kBAAkB,GACtB,2BAA2B,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;gBACvD,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAChE,WAAW,EACX,kBAAkB,CACnB,CAAC;gBACF,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;oBACvB,SAAS;gBACX,CAAC;gBACD,MAAM,sBAAsB,GAC1B,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;gBACtD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAC7C,SAAS,EACT,eAAe,EACf,sBAAsB,EACtB,iCAAiC,CAClC,CAAC;gBACF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QAEM,+BAA0B,GAAG,CACnC,kBAAiC,EACpB,EAAE;YACf,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;gBAChC,OAAO,IAAI,GAAG,EAAE,CAAC;YACnB,CAAC;YACD,IAAI,OAAe,CAAC;YACpB,IAAI,CAAC;gBACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;YACxD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,GAAG,EAAE,CAAC;YACnB,CAAC;YACD,OAAO,2BAA2B,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC,CAAC;QAEM,sBAAiB,GAAG,KAAK,EAC/B,SAAiB,EACjB,eAAuB,EACvB,sBAAmC,EACnC,iCAA0D,EAC7B,EAAE;YAC/B,IAAI,OAAoB,CAAC;YACzB,IAAI,CAAC;gBACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/D,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,MAAM,UAAU,GAAuB,EAAE,CAAC;YAC1C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACnE,SAAS;gBACX,CAAC;gBACD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAClE,IAAI,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBACxC,SAAS;gBACX,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CACpC,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,iCAAiC,CAClC,CAAC;gBACF,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACtB,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC;QAEM,eAAU,GAAG,KAAK,EACxB,QAAgB,EAChB,QAAgB,EAChB,eAAuB,EACvB,iCAA0D,EACxB,EAAE;YACpC,IAAI,OAAe,CAAC;YACpB,IAAI,KAAe,CAAC;YACpB,IAAI,CAAC;gBACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAC5C,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,UAAU,CAAC,4BAA4B,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,aAAa,GAAG,WAAW,CAC/B,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CACnD,CAAC;YACF,MAAM,cAAc,GAClB,UAAU,CAAC,sBAAsB,KAAK,IAAI;gBACxC,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,WAAW,CAAC,eAAe,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;YACvE,OAAO;gBACL,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;gBACvC,aAAa;gBACb,cAAc;gBACd,wBAAwB,EACtB,UAAU,CAAC,wBAAwB;oBACnC,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAChC,UAAU,CAAC,mBAAmB,EAC9B,iCAAiC,CAClC,CAAC;aACL,CAAC;QACJ,CAAC,CAAC;QAEM,2BAAsB,GAAG,KAAK,EACpC,mBAA6B,EAC7B,iCAA0D,EACxC,EAAE;YACpB,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrC,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,SAAS,GAAG,mBAAmB;iBAClC,GAAG,CAAC,gCAAwB,CAAC;iBAC7B,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC7C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,mBAAmB,GAAG,MAAM,iCAAiC,EAAE,CAAC;YACtE,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CACjC,mBAAmB,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAC1E,CAAC;QACJ,CAAC,CAAC;IArJC,CAAC;CAsJL;AA3JD,kGA2JC"}
|
|
@@ -9,32 +9,25 @@ class ClearPastNextActionDateHourUseCase {
|
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
11
11
|
const now = input.targetDates[input.targetDates.length - 1];
|
|
12
|
-
const
|
|
13
|
-
if (
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
.
|
|
17
|
-
|
|
18
|
-
if (targetDatesAtHour45.length > 0) {
|
|
19
|
-
const targetDate = new Date(targetDatesAtHour45[targetDatesAtHour45.length - 1].getTime() +
|
|
20
|
-
5 * 60 * 1000);
|
|
21
|
-
const targetHour = targetDate.getHours() + 1;
|
|
22
|
-
for (const issue of input.issues) {
|
|
23
|
-
if (issue.nextActionHour === null ||
|
|
24
|
-
issue.nextActionHour > targetHour ||
|
|
25
|
-
(issue.nextActionDate !== null &&
|
|
26
|
-
issue.nextActionDate.getTime() > targetDate.getTime()) ||
|
|
27
|
-
issue.state !== 'OPEN') {
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
await this.issueRepository.clearProjectField(input.project, nextActionHour.fieldId, issue);
|
|
31
|
-
await new Promise((resolve) => setTimeout(resolve, 5000));
|
|
32
|
-
if (!nextActionDate) {
|
|
33
|
-
continue;
|
|
34
|
-
}
|
|
35
|
-
await this.issueRepository.clearProjectField(input.project, nextActionDate.fieldId, issue);
|
|
36
|
-
await new Promise((resolve) => setTimeout(resolve, 5000));
|
|
12
|
+
const nextActionHourField = input.project.nextActionHour;
|
|
13
|
+
if (nextActionHourField) {
|
|
14
|
+
const nextActionDateField = input.project.nextActionDate;
|
|
15
|
+
for (const issue of input.issues) {
|
|
16
|
+
if (issue.nextActionHour === null || issue.state !== 'OPEN') {
|
|
17
|
+
continue;
|
|
37
18
|
}
|
|
19
|
+
const scheduledDate = issue.nextActionDate ?? now;
|
|
20
|
+
const scheduledTime = new Date(scheduledDate.getFullYear(), scheduledDate.getMonth(), scheduledDate.getDate(), issue.nextActionHour);
|
|
21
|
+
if (scheduledTime.getTime() > now.getTime()) {
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
await this.issueRepository.clearProjectField(input.project, nextActionHourField.fieldId, issue);
|
|
25
|
+
await new Promise((resolve) => setTimeout(resolve, 5000));
|
|
26
|
+
if (!nextActionDateField) {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
await this.issueRepository.clearProjectField(input.project, nextActionDateField.fieldId, issue);
|
|
30
|
+
await new Promise((resolve) => setTimeout(resolve, 5000));
|
|
38
31
|
}
|
|
39
32
|
}
|
|
40
33
|
const nextActionDate = input.project.nextActionDate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClearPastNextActionDateHourUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/ClearPastNextActionDateHourUseCase.ts"],"names":[],"mappings":";;;AAIA,MAAa,kCAAkC;IAC7C,YACW,eAA2D;QAA3D,oBAAe,GAAf,eAAe,CAA4C;QAGtE,QAAG,GAAG,KAAK,EAAE,KAKZ,EAAiB,EAAE;YAClB,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAE5D,MAAM,
|
|
1
|
+
{"version":3,"file":"ClearPastNextActionDateHourUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/ClearPastNextActionDateHourUseCase.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1044,4 +1044,200 @@ describe('TranscriptSessionSubAgentActivityRepository', () => {
|
|
|
1044
1044
|
expect(result.get(sessionName)?.[0]?.waitingOnExternalProcess).toBe(true);
|
|
1045
1045
|
});
|
|
1046
1046
|
});
|
|
1047
|
+
|
|
1048
|
+
const writeMainTranscript = (sessionName: string, lines: object[]): void => {
|
|
1049
|
+
const filePath = mainTranscriptPathFor(sessionName);
|
|
1050
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
1051
|
+
fs.writeFileSync(
|
|
1052
|
+
filePath,
|
|
1053
|
+
lines.map((line) => JSON.stringify(line)).join('\n'),
|
|
1054
|
+
'utf8',
|
|
1055
|
+
);
|
|
1056
|
+
};
|
|
1057
|
+
|
|
1058
|
+
const killedNotificationEntry = (
|
|
1059
|
+
agentId: string,
|
|
1060
|
+
timestamp: string,
|
|
1061
|
+
): object => ({
|
|
1062
|
+
type: 'queue-operation',
|
|
1063
|
+
operation: 'enqueue',
|
|
1064
|
+
timestamp,
|
|
1065
|
+
content: `<task-notification>\n<task-id>${agentId}</task-id>\n<status>killed</status>\n</task-notification>`,
|
|
1066
|
+
});
|
|
1067
|
+
|
|
1068
|
+
const failedNotificationEntry = (
|
|
1069
|
+
agentId: string,
|
|
1070
|
+
timestamp: string,
|
|
1071
|
+
): object => ({
|
|
1072
|
+
type: 'queue-operation',
|
|
1073
|
+
operation: 'enqueue',
|
|
1074
|
+
timestamp,
|
|
1075
|
+
content: `<task-notification>\n<task-id>${agentId}</task-id>\n<status>failed</status>\n</task-notification>`,
|
|
1076
|
+
});
|
|
1077
|
+
|
|
1078
|
+
const completedNotificationEntry = (
|
|
1079
|
+
agentId: string,
|
|
1080
|
+
timestamp: string,
|
|
1081
|
+
): object => ({
|
|
1082
|
+
type: 'queue-operation',
|
|
1083
|
+
operation: 'enqueue',
|
|
1084
|
+
timestamp,
|
|
1085
|
+
content: `<task-notification>\n<task-id>${agentId}</task-id>\n<status>completed</status>\n</task-notification>`,
|
|
1086
|
+
});
|
|
1087
|
+
|
|
1088
|
+
it('excludes a sub-agent killed via TaskStop when the parent transcript records a killed notification for its id', async () => {
|
|
1089
|
+
const sessionName = 'https_//github_com/owner/repo/issues/9';
|
|
1090
|
+
const killedAgentId = 'aaabbbbcccc00001';
|
|
1091
|
+
writeAgentTranscript(
|
|
1092
|
+
sessionName,
|
|
1093
|
+
killedAgentId,
|
|
1094
|
+
pendingToolUseEntries('2026-06-27T11:00:00.000Z'),
|
|
1095
|
+
nowEpochSeconds - 300,
|
|
1096
|
+
);
|
|
1097
|
+
writeMainTranscript(sessionName, [
|
|
1098
|
+
killedNotificationEntry(killedAgentId, '2026-06-27T11:55:00.000Z'),
|
|
1099
|
+
]);
|
|
1100
|
+
const repository = new TranscriptSessionSubAgentActivityRepository(
|
|
1101
|
+
createResolver(),
|
|
1102
|
+
emptyProcessLister(),
|
|
1103
|
+
now,
|
|
1104
|
+
);
|
|
1105
|
+
|
|
1106
|
+
const result = await repository.listSubAgentActivitiesBySessionName(
|
|
1107
|
+
[sessionName],
|
|
1108
|
+
transcriptMapFor([sessionName]),
|
|
1109
|
+
);
|
|
1110
|
+
|
|
1111
|
+
expect(result.size).toBe(0);
|
|
1112
|
+
});
|
|
1113
|
+
|
|
1114
|
+
it('excludes a sub-agent whose process crashed when the parent transcript records a failed notification for its id', async () => {
|
|
1115
|
+
const sessionName = 'https_//github_com/owner/repo/issues/9';
|
|
1116
|
+
const failedAgentId = 'aaabbbbcccc00002';
|
|
1117
|
+
writeAgentTranscript(
|
|
1118
|
+
sessionName,
|
|
1119
|
+
failedAgentId,
|
|
1120
|
+
pendingToolUseEntries('2026-06-27T11:00:00.000Z'),
|
|
1121
|
+
nowEpochSeconds - 300,
|
|
1122
|
+
);
|
|
1123
|
+
writeMainTranscript(sessionName, [
|
|
1124
|
+
failedNotificationEntry(failedAgentId, '2026-06-27T11:55:00.000Z'),
|
|
1125
|
+
]);
|
|
1126
|
+
const repository = new TranscriptSessionSubAgentActivityRepository(
|
|
1127
|
+
createResolver(),
|
|
1128
|
+
emptyProcessLister(),
|
|
1129
|
+
now,
|
|
1130
|
+
);
|
|
1131
|
+
|
|
1132
|
+
const result = await repository.listSubAgentActivitiesBySessionName(
|
|
1133
|
+
[sessionName],
|
|
1134
|
+
transcriptMapFor([sessionName]),
|
|
1135
|
+
);
|
|
1136
|
+
|
|
1137
|
+
expect(result.size).toBe(0);
|
|
1138
|
+
});
|
|
1139
|
+
|
|
1140
|
+
it('does not exclude a sub-agent whose parent transcript records only a completed notification for its id', async () => {
|
|
1141
|
+
const sessionName = 'https_//github_com/owner/repo/issues/9';
|
|
1142
|
+
const startTimestamp = '2026-06-27T11:45:00.000Z';
|
|
1143
|
+
const completedAgentId = 'aaabbbbcccc00003';
|
|
1144
|
+
writeAgentTranscript(
|
|
1145
|
+
sessionName,
|
|
1146
|
+
completedAgentId,
|
|
1147
|
+
pendingToolUseEntries(startTimestamp),
|
|
1148
|
+
nowEpochSeconds - 120,
|
|
1149
|
+
);
|
|
1150
|
+
writeMainTranscript(sessionName, [
|
|
1151
|
+
completedNotificationEntry(completedAgentId, '2026-06-27T11:58:00.000Z'),
|
|
1152
|
+
]);
|
|
1153
|
+
const repository = new TranscriptSessionSubAgentActivityRepository(
|
|
1154
|
+
createResolver(),
|
|
1155
|
+
emptyProcessLister(),
|
|
1156
|
+
now,
|
|
1157
|
+
);
|
|
1158
|
+
|
|
1159
|
+
const result = await repository.listSubAgentActivitiesBySessionName(
|
|
1160
|
+
[sessionName],
|
|
1161
|
+
transcriptMapFor([sessionName]),
|
|
1162
|
+
);
|
|
1163
|
+
|
|
1164
|
+
expect(result.get(sessionName)).toEqual([
|
|
1165
|
+
{
|
|
1166
|
+
label: `agent-${completedAgentId}`,
|
|
1167
|
+
silentSeconds: 120,
|
|
1168
|
+
runningSeconds: 900,
|
|
1169
|
+
waitingOnExternalProcess: false,
|
|
1170
|
+
},
|
|
1171
|
+
]);
|
|
1172
|
+
});
|
|
1173
|
+
|
|
1174
|
+
it('excludes a killed sub-agent but reports a still-active sibling in the same session', async () => {
|
|
1175
|
+
const sessionName = 'https_//github_com/owner/repo/issues/9';
|
|
1176
|
+
const killedAgentId = 'aaabbbbcccc00004';
|
|
1177
|
+
const aliveAgentId = 'aaabbbbcccc00005';
|
|
1178
|
+
writeAgentTranscript(
|
|
1179
|
+
sessionName,
|
|
1180
|
+
killedAgentId,
|
|
1181
|
+
pendingToolUseEntries('2026-06-27T11:00:00.000Z'),
|
|
1182
|
+
nowEpochSeconds - 600,
|
|
1183
|
+
);
|
|
1184
|
+
writeAgentTranscript(
|
|
1185
|
+
sessionName,
|
|
1186
|
+
aliveAgentId,
|
|
1187
|
+
runningEntries('2026-06-27T11:45:00.000Z'),
|
|
1188
|
+
nowEpochSeconds - 120,
|
|
1189
|
+
);
|
|
1190
|
+
writeMainTranscript(sessionName, [
|
|
1191
|
+
killedNotificationEntry(killedAgentId, '2026-06-27T11:55:00.000Z'),
|
|
1192
|
+
]);
|
|
1193
|
+
const repository = new TranscriptSessionSubAgentActivityRepository(
|
|
1194
|
+
createResolver(),
|
|
1195
|
+
emptyProcessLister(),
|
|
1196
|
+
now,
|
|
1197
|
+
);
|
|
1198
|
+
|
|
1199
|
+
const result = await repository.listSubAgentActivitiesBySessionName(
|
|
1200
|
+
[sessionName],
|
|
1201
|
+
transcriptMapFor([sessionName]),
|
|
1202
|
+
);
|
|
1203
|
+
|
|
1204
|
+
expect(result.get(sessionName)).toEqual([
|
|
1205
|
+
{
|
|
1206
|
+
label: `agent-${aliveAgentId}`,
|
|
1207
|
+
silentSeconds: 120,
|
|
1208
|
+
runningSeconds: 900,
|
|
1209
|
+
waitingOnExternalProcess: false,
|
|
1210
|
+
},
|
|
1211
|
+
]);
|
|
1212
|
+
});
|
|
1213
|
+
|
|
1214
|
+
it('reports a sub-agent even when the parent transcript path does not exist', async () => {
|
|
1215
|
+
const sessionName = 'https_//github_com/owner/repo/issues/9';
|
|
1216
|
+
const startTimestamp = '2026-06-27T11:45:00.000Z';
|
|
1217
|
+
writeAgentTranscript(
|
|
1218
|
+
sessionName,
|
|
1219
|
+
'aabb1122cc3344ee',
|
|
1220
|
+
runningEntries(startTimestamp),
|
|
1221
|
+
nowEpochSeconds - 120,
|
|
1222
|
+
);
|
|
1223
|
+
const repository = new TranscriptSessionSubAgentActivityRepository(
|
|
1224
|
+
createResolver(),
|
|
1225
|
+
emptyProcessLister(),
|
|
1226
|
+
now,
|
|
1227
|
+
);
|
|
1228
|
+
|
|
1229
|
+
const result = await repository.listSubAgentActivitiesBySessionName(
|
|
1230
|
+
[sessionName],
|
|
1231
|
+
transcriptMapFor([sessionName]),
|
|
1232
|
+
);
|
|
1233
|
+
|
|
1234
|
+
expect(result.get(sessionName)).toEqual([
|
|
1235
|
+
{
|
|
1236
|
+
label: 'agent-aabb1122cc3344ee',
|
|
1237
|
+
silentSeconds: 120,
|
|
1238
|
+
runningSeconds: 900,
|
|
1239
|
+
waitingOnExternalProcess: false,
|
|
1240
|
+
},
|
|
1241
|
+
]);
|
|
1242
|
+
});
|
|
1047
1243
|
});
|
|
@@ -190,6 +190,45 @@ const parseTranscript = (content: string): ParsedTranscript => {
|
|
|
190
190
|
|
|
191
191
|
const clampToZero = (value: number): number => (value > 0 ? value : 0);
|
|
192
192
|
|
|
193
|
+
const parseKilledOrFailedAgentIds = (content: string): Set<string> => {
|
|
194
|
+
const result = new Set<string>();
|
|
195
|
+
for (const line of content.split('\n')) {
|
|
196
|
+
const trimmed = line.trim();
|
|
197
|
+
if (trimmed.length === 0) {
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
let parsed: unknown;
|
|
201
|
+
try {
|
|
202
|
+
parsed = JSON.parse(trimmed);
|
|
203
|
+
} catch {
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
if (!isRecord(parsed)) {
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
if (readString(parsed, 'type') !== 'queue-operation') {
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
if (readString(parsed, 'operation') !== 'enqueue') {
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
const notifContent = readString(parsed, 'content');
|
|
216
|
+
if (notifContent === null) {
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
219
|
+
const taskIdMatch = notifContent.match(/<task-id>(a[0-9a-f]+)<\/task-id>/);
|
|
220
|
+
const statusMatch = notifContent.match(/<status>([^<]+)<\/status>/);
|
|
221
|
+
if (!taskIdMatch || !statusMatch) {
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
const status = statusMatch[1];
|
|
225
|
+
if (status === 'killed' || status === 'failed') {
|
|
226
|
+
result.add(taskIdMatch[1]);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return result;
|
|
230
|
+
};
|
|
231
|
+
|
|
193
232
|
export class TranscriptSessionSubAgentActivityRepository implements SessionSubAgentActivityRepository {
|
|
194
233
|
constructor(
|
|
195
234
|
private readonly directoryResolver: SubAgentTranscriptDirectoryResolver,
|
|
@@ -223,9 +262,12 @@ export class TranscriptSessionSubAgentActivityRepository implements SessionSubAg
|
|
|
223
262
|
if (directory === null) {
|
|
224
263
|
continue;
|
|
225
264
|
}
|
|
265
|
+
const killedOrFailedAgentIds =
|
|
266
|
+
this.loadKilledOrFailedAgentIds(mainTranscriptPath);
|
|
226
267
|
const activities = await this.collectActivities(
|
|
227
268
|
directory,
|
|
228
269
|
nowEpochSeconds,
|
|
270
|
+
killedOrFailedAgentIds,
|
|
229
271
|
loadNormalizedProcessCommandLines,
|
|
230
272
|
);
|
|
231
273
|
if (activities.length > 0) {
|
|
@@ -235,9 +277,25 @@ export class TranscriptSessionSubAgentActivityRepository implements SessionSubAg
|
|
|
235
277
|
return result;
|
|
236
278
|
};
|
|
237
279
|
|
|
280
|
+
private loadKilledOrFailedAgentIds = (
|
|
281
|
+
mainTranscriptPath: string | null,
|
|
282
|
+
): Set<string> => {
|
|
283
|
+
if (mainTranscriptPath === null) {
|
|
284
|
+
return new Set();
|
|
285
|
+
}
|
|
286
|
+
let content: string;
|
|
287
|
+
try {
|
|
288
|
+
content = fs.readFileSync(mainTranscriptPath, 'utf8');
|
|
289
|
+
} catch {
|
|
290
|
+
return new Set();
|
|
291
|
+
}
|
|
292
|
+
return parseKilledOrFailedAgentIds(content);
|
|
293
|
+
};
|
|
294
|
+
|
|
238
295
|
private collectActivities = async (
|
|
239
296
|
directory: string,
|
|
240
297
|
nowEpochSeconds: number,
|
|
298
|
+
killedOrFailedAgentIds: Set<string>,
|
|
241
299
|
loadNormalizedProcessCommandLines: () => Promise<string[]>,
|
|
242
300
|
): Promise<SubAgentActivity[]> => {
|
|
243
301
|
let entries: fs.Dirent[];
|
|
@@ -252,6 +310,10 @@ export class TranscriptSessionSubAgentActivityRepository implements SessionSubAg
|
|
|
252
310
|
if (!fileName.startsWith('agent-') || !fileName.endsWith('.jsonl')) {
|
|
253
311
|
continue;
|
|
254
312
|
}
|
|
313
|
+
const agentId = fileName.slice('agent-'.length, -'.jsonl'.length);
|
|
314
|
+
if (killedOrFailedAgentIds.has(agentId)) {
|
|
315
|
+
continue;
|
|
316
|
+
}
|
|
255
317
|
const filePath = path.join(directory, fileName);
|
|
256
318
|
const activity = await this.toActivity(
|
|
257
319
|
filePath,
|
|
@@ -201,7 +201,7 @@ describe('ClearPastNextActionDateHourUseCase', () => {
|
|
|
201
201
|
expectedClearProjectFieldCalls: [],
|
|
202
202
|
},
|
|
203
203
|
{
|
|
204
|
-
name: 'should clear nextActionHour
|
|
204
|
+
name: 'should not clear nextActionHour at 09:45 when scheduled hour 10 has not yet arrived',
|
|
205
205
|
input: {
|
|
206
206
|
targetDates: [
|
|
207
207
|
new Date('2026-04-02T09:45:00'),
|
|
@@ -217,6 +217,25 @@ describe('ClearPastNextActionDateHourUseCase', () => {
|
|
|
217
217
|
],
|
|
218
218
|
cacheUsed: false,
|
|
219
219
|
},
|
|
220
|
+
expectedClearProjectFieldCalls: [],
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
name: 'should clear nextActionHour when sweep has no minute-45 tick but scheduled hour has already passed',
|
|
224
|
+
input: {
|
|
225
|
+
targetDates: [
|
|
226
|
+
new Date('2026-04-02T10:05:00'),
|
|
227
|
+
new Date('2026-04-02T10:15:00'),
|
|
228
|
+
],
|
|
229
|
+
project: basicProject,
|
|
230
|
+
issues: [
|
|
231
|
+
{
|
|
232
|
+
...openIssueWithHour,
|
|
233
|
+
nextActionHour: 10,
|
|
234
|
+
nextActionDate: null,
|
|
235
|
+
},
|
|
236
|
+
],
|
|
237
|
+
cacheUsed: false,
|
|
238
|
+
},
|
|
220
239
|
expectedClearProjectFieldCalls: [
|
|
221
240
|
[
|
|
222
241
|
basicProject,
|
|
@@ -239,7 +258,7 @@ describe('ClearPastNextActionDateHourUseCase', () => {
|
|
|
239
258
|
],
|
|
240
259
|
},
|
|
241
260
|
{
|
|
242
|
-
name: 'should not clear nextActionHour when
|
|
261
|
+
name: 'should not clear nextActionHour when scheduled hour has not yet arrived',
|
|
243
262
|
input: {
|
|
244
263
|
targetDates: [
|
|
245
264
|
new Date('2026-04-02T09:00:00'),
|
|
@@ -268,7 +287,7 @@ describe('ClearPastNextActionDateHourUseCase', () => {
|
|
|
268
287
|
issues: [
|
|
269
288
|
{
|
|
270
289
|
...openIssueWithHour,
|
|
271
|
-
nextActionHour:
|
|
290
|
+
nextActionHour: 9,
|
|
272
291
|
nextActionDate: null,
|
|
273
292
|
},
|
|
274
293
|
{
|
|
@@ -284,7 +303,7 @@ describe('ClearPastNextActionDateHourUseCase', () => {
|
|
|
284
303
|
'hourFieldId',
|
|
285
304
|
{
|
|
286
305
|
...openIssueWithHour,
|
|
287
|
-
nextActionHour:
|
|
306
|
+
nextActionHour: 9,
|
|
288
307
|
nextActionDate: null,
|
|
289
308
|
},
|
|
290
309
|
],
|
|
@@ -293,7 +312,7 @@ describe('ClearPastNextActionDateHourUseCase', () => {
|
|
|
293
312
|
'dateFieldId',
|
|
294
313
|
{
|
|
295
314
|
...openIssueWithHour,
|
|
296
|
-
nextActionHour:
|
|
315
|
+
nextActionHour: 9,
|
|
297
316
|
nextActionDate: null,
|
|
298
317
|
},
|
|
299
318
|
],
|
|
@@ -18,44 +18,38 @@ export class ClearPastNextActionDateHourUseCase {
|
|
|
18
18
|
}
|
|
19
19
|
const now = input.targetDates[input.targetDates.length - 1];
|
|
20
20
|
|
|
21
|
-
const
|
|
22
|
-
if (
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
21
|
+
const nextActionHourField = input.project.nextActionHour;
|
|
22
|
+
if (nextActionHourField) {
|
|
23
|
+
const nextActionDateField = input.project.nextActionDate;
|
|
24
|
+
for (const issue of input.issues) {
|
|
25
|
+
if (issue.nextActionHour === null || issue.state !== 'OPEN') {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
const scheduledDate = issue.nextActionDate ?? now;
|
|
29
|
+
const scheduledTime = new Date(
|
|
30
|
+
scheduledDate.getFullYear(),
|
|
31
|
+
scheduledDate.getMonth(),
|
|
32
|
+
scheduledDate.getDate(),
|
|
33
|
+
issue.nextActionHour,
|
|
34
|
+
);
|
|
35
|
+
if (scheduledTime.getTime() > now.getTime()) {
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
await this.issueRepository.clearProjectField(
|
|
39
|
+
input.project,
|
|
40
|
+
nextActionHourField.fieldId,
|
|
41
|
+
issue,
|
|
31
42
|
);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
issue.nextActionHour === null ||
|
|
36
|
-
issue.nextActionHour > targetHour ||
|
|
37
|
-
(issue.nextActionDate !== null &&
|
|
38
|
-
issue.nextActionDate.getTime() > targetDate.getTime()) ||
|
|
39
|
-
issue.state !== 'OPEN'
|
|
40
|
-
) {
|
|
41
|
-
continue;
|
|
42
|
-
}
|
|
43
|
-
await this.issueRepository.clearProjectField(
|
|
44
|
-
input.project,
|
|
45
|
-
nextActionHour.fieldId,
|
|
46
|
-
issue,
|
|
47
|
-
);
|
|
48
|
-
await new Promise((resolve) => setTimeout(resolve, 5000));
|
|
49
|
-
if (!nextActionDate) {
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
await this.issueRepository.clearProjectField(
|
|
53
|
-
input.project,
|
|
54
|
-
nextActionDate.fieldId,
|
|
55
|
-
issue,
|
|
56
|
-
);
|
|
57
|
-
await new Promise((resolve) => setTimeout(resolve, 5000));
|
|
43
|
+
await new Promise((resolve) => setTimeout(resolve, 5000));
|
|
44
|
+
if (!nextActionDateField) {
|
|
45
|
+
continue;
|
|
58
46
|
}
|
|
47
|
+
await this.issueRepository.clearProjectField(
|
|
48
|
+
input.project,
|
|
49
|
+
nextActionDateField.fieldId,
|
|
50
|
+
issue,
|
|
51
|
+
);
|
|
52
|
+
await new Promise((resolve) => setTimeout(resolve, 5000));
|
|
59
53
|
}
|
|
60
54
|
}
|
|
61
55
|
|
|
@@ -9,6 +9,7 @@ export declare class TranscriptSessionSubAgentActivityRepository implements Sess
|
|
|
9
9
|
private readonly now;
|
|
10
10
|
constructor(directoryResolver: SubAgentTranscriptDirectoryResolver, processLister: SubAgentProcessLister, now: Date);
|
|
11
11
|
listSubAgentActivitiesBySessionName: (sessionNames: string[], transcriptPathBySessionName: Map<string, string>) => Promise<Map<string, SubAgentActivity[]>>;
|
|
12
|
+
private loadKilledOrFailedAgentIds;
|
|
12
13
|
private collectActivities;
|
|
13
14
|
private toActivity;
|
|
14
15
|
private hasLiveMatchingProcess;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TranscriptSessionSubAgentActivityRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/TranscriptSessionSubAgentActivityRepository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AACrF,OAAO,EAAE,iCAAiC,EAAE,MAAM,4EAA4E,CAAC;AAC/H,OAAO,EAAE,qBAAqB,EAAE,MAAM,gEAAgE,CAAC;AACvG,OAAO,EAAE,mCAAmC,EAAE,MAAM,8EAA8E,CAAC;AAuBnI,eAAO,MAAM,wBAAwB,GAAI,SAAS,MAAM,KAAG,MAIR,CAAC;
|
|
1
|
+
{"version":3,"file":"TranscriptSessionSubAgentActivityRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/TranscriptSessionSubAgentActivityRepository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AACrF,OAAO,EAAE,iCAAiC,EAAE,MAAM,4EAA4E,CAAC;AAC/H,OAAO,EAAE,qBAAqB,EAAE,MAAM,gEAAgE,CAAC;AACvG,OAAO,EAAE,mCAAmC,EAAE,MAAM,8EAA8E,CAAC;AAuBnI,eAAO,MAAM,wBAAwB,GAAI,SAAS,MAAM,KAAG,MAIR,CAAC;AAuMpD,qBAAa,2CAA4C,YAAW,iCAAiC;IAEjG,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAFH,iBAAiB,EAAE,mCAAmC,EACtD,aAAa,EAAE,qBAAqB,EACpC,GAAG,EAAE,IAAI;IAG5B,mCAAmC,GACjC,cAAc,MAAM,EAAE,EACtB,6BAA6B,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAC/C,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAoCzC;IAEF,OAAO,CAAC,0BAA0B,CAahC;IAEF,OAAO,CAAC,iBAAiB,CAkCvB;IAEF,OAAO,CAAC,UAAU,CAoChB;IAEF,OAAO,CAAC,sBAAsB,CAiB5B;CACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClearPastNextActionDateHourUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/ClearPastNextActionDateHourUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,qBAAa,kCAAkC;IAE3C,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,mBAAmB,CAAC;gBAA3D,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,mBAAmB,CAAC;IAGtE,GAAG,GAAU,OAAO;QAClB,WAAW,EAAE,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;KACpB,KAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"ClearPastNextActionDateHourUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/ClearPastNextActionDateHourUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,qBAAa,kCAAkC;IAE3C,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,mBAAmB,CAAC;gBAA3D,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,mBAAmB,CAAC;IAGtE,GAAG,GAAU,OAAO;QAClB,WAAW,EAAE,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;KACpB,KAAG,OAAO,CAAC,IAAI,CAAC,CAkEf;CACH"}
|