jonah-fleet 1.22.0 → 1.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,13 @@ All notable changes to `jonah-fleet` will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.23.0](https://github.com/juliendurandeu/jonah-fleet/compare/v1.22.0...v1.23.0) (2026-09-20)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **guard:** exempt manage_subagents list polling and prevent busy-waiting on unchanged files ([#319](https://github.com/juliendurandeu/jonah-fleet/issues/319)) ([7a7168f](https://github.com/juliendurandeu/jonah-fleet/commit/7a7168f51c670e62efb15c210def8ca8df282161))
|
|
14
|
+
|
|
8
15
|
## [1.22.0](https://github.com/juliendurandeu/jonah-fleet/compare/v1.21.0...v1.22.0) (2026-09-20)
|
|
9
16
|
|
|
10
17
|
|
|
@@ -23,14 +30,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
23
30
|
|
|
24
31
|
### Features
|
|
25
32
|
|
|
26
|
-
* **
|
|
27
|
-
* **
|
|
28
|
-
* **prompts:** add mandatory Red Gate pre-implementation check to `autowork.md` and `/tdd`, catching already-resolved tasks and vacuous tests before code changes.
|
|
29
|
-
* **prompts:** enforce disk read-back verification directly from written files and precision path-scoped git commits (`git commit -m "..." -- <paths>`).
|
|
30
|
-
* **prompts:** enforce autonomous surfacing cadence without rhetorical permission halts ("Shall I continue?") across routines.
|
|
31
|
-
* **guard:** exempt `manage_task` status and list polling from action repetition and ping-pong circuit breaker trips in `run-with-loop-guard.js`.
|
|
32
|
-
* **housekeeping:** close `status:failure` routine log issues immediately (0-hour delay) if target is already closed or merged, and lower untargeted runner crash threshold to 12 hours.
|
|
33
|
-
* **autowork:** update Step 9 idle sweep to close resolved-target failures immediately and untargeted crashes after 12 hours.
|
|
33
|
+
* **guard:** exempt `manage_subagents` list polling from action repetition and ping-pong circuit breaker trips in loop guard and runner scripts.
|
|
34
|
+
* **orchestration:** clarify background task wait guidance in prompts and runner guardrails to prohibit busy-waiting on unchanged files (`view_file`) during headless execution.
|
|
34
35
|
|
|
35
36
|
## [1.20.0](https://github.com/juliendurandeu/jonah-fleet/compare/v1.19.0...v1.20.0) (2026-09-20)
|
|
36
37
|
|
package/dist/index.js
CHANGED
|
@@ -3585,7 +3585,7 @@ var LoopGuard = class {
|
|
|
3585
3585
|
if (this.trippedResult) {
|
|
3586
3586
|
return this.trippedResult;
|
|
3587
3587
|
}
|
|
3588
|
-
const isStatusPolling = toolName === "manage_task" && (args?.Action === "status" || args?.action === "status" || args?.Action === "list" || args?.action === "list");
|
|
3588
|
+
const isStatusPolling = toolName === "manage_task" && (args?.Action === "status" || args?.action === "status" || args?.Action === "list" || args?.action === "list") || toolName === "manage_subagents" && (args?.Action === "list" || args?.action === "list");
|
|
3589
3589
|
const hash = computeActionHash(toolName, args);
|
|
3590
3590
|
const record = {
|
|
3591
3591
|
toolName,
|
|
@@ -3638,7 +3638,7 @@ var LoopGuard = class {
|
|
|
3638
3638
|
if (this.history.length >= requiredPingPongLength) {
|
|
3639
3639
|
const pingPongSlice = this.history.slice(-requiredPingPongLength);
|
|
3640
3640
|
const hasStatusPolling = pingPongSlice.some(
|
|
3641
|
-
(item) => item.toolName === "manage_task" && (item.args?.Action === "status" || item.args?.action === "status" || item.args?.Action === "list" || item.args?.action === "list")
|
|
3641
|
+
(item) => item.toolName === "manage_task" && (item.args?.Action === "status" || item.args?.action === "status" || item.args?.Action === "list" || item.args?.action === "list") || item.toolName === "manage_subagents" && (item.args?.Action === "list" || item.args?.action === "list")
|
|
3642
3642
|
);
|
|
3643
3643
|
if (!hasStatusPolling) {
|
|
3644
3644
|
const hashA = pingPongSlice[0].hash;
|
|
@@ -3865,7 +3865,7 @@ function buildRoutinePrompt(targetDir, routine, options = {}) {
|
|
|
3865
3865
|
const promptFile = `.github/prompts/${routine}.md`;
|
|
3866
3866
|
const repoContext = `Working repository is located at ${targetDir}. All git, gh, and workspace commands must execute strictly within this repository.`;
|
|
3867
3867
|
const logPrompt = options.routineIssueNumber ? ` Tracking run log issue: #${options.routineIssueNumber}.` : "";
|
|
3868
|
-
const headlessGuardrail = ` Execution Guardrail: You are executing in a headless autonomous session. You MUST NEVER call schedule or yield your turn with plain text to wait on background tasks or verification checks. If a verification command (tests, type-check, lint) runs in the background,
|
|
3868
|
+
const headlessGuardrail = ` Execution Guardrail: You are executing in a headless autonomous session. You MUST NEVER call schedule or yield your turn with plain text to wait on background tasks or verification checks. If a verification command (tests, type-check, lint) runs in the background, inspect its completion with manage_task(Action='status') or manage_subagents(Action='list') (status polling with these tools is explicitly exempted from loop guard circuit breakers), or execute commands with sufficient WaitMsBeforeAsync (up to 10000 ms). DO NOT busy-wait by repeatedly calling read tools (such as view_file) on unchanged files to pass time while waiting, as calling non-polling tools with identical parameters will trip the loop circuit breaker. Never stop calling tools or yield your turn until the routine's terminal Definition of Done is fully reached.`;
|
|
3869
3869
|
if (routine === "autowork") {
|
|
3870
3870
|
if (options.issue) {
|
|
3871
3871
|
return `You are the Autowork routine for this repository. ${repoContext} Read and follow the instructions in ${promptFile} exactly. ${skillsPrompt}Your target is issue #${options.issue}. You are in Targeted mode: work issue #${options.issue} directly, ahead of Phase 1 convergence and priority scan.${logPrompt}${headlessGuardrail}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop-guard.d.ts","sourceRoot":"","sources":["../../src/lib/loop-guard.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,WAAW,GAAG,oBAAoB,CAAC;AAEpF,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,GAAG,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CACxC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAarD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,MAAM,CAGrE;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,yBAAyB,CAAS;IAC1C,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,MAAM,CAAC,CAAgC;IAE/C,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,qBAAqB,CAAa;IAC1C,OAAO,CAAC,aAAa,CAA8B;IAEnD,YAAY,OAAO,GAAE,gBAAqB,EAMzC;IAEM,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAE9D;IAEM,SAAS,IAAI,OAAO,CAE1B;IAEM,OAAO,IAAI,aAAa,GAAG,IAAI,CAErC;IAEM,UAAU,IAAI,YAAY,EAAE,CAElC;IAEM,KAAK,IAAI,IAAI,CAKnB;IAED;;OAEG;IACI,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,GAAE,OAAe,GAAG,aAAa,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"loop-guard.d.ts","sourceRoot":"","sources":["../../src/lib/loop-guard.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,WAAW,GAAG,oBAAoB,CAAC;AAEpF,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,GAAG,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CACxC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAarD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,MAAM,CAGrE;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,yBAAyB,CAAS;IAC1C,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,MAAM,CAAC,CAAgC;IAE/C,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,qBAAqB,CAAa;IAC1C,OAAO,CAAC,aAAa,CAA8B;IAEnD,YAAY,OAAO,GAAE,gBAAqB,EAMzC;IAEM,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAE9D;IAEM,SAAS,IAAI,OAAO,CAE1B;IAEM,OAAO,IAAI,aAAa,GAAG,IAAI,CAErC;IAEM,UAAU,IAAI,YAAY,EAAE,CAElC;IAEM,KAAK,IAAI,IAAI,CAKnB;IAED;;OAEG;IACI,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,GAAE,OAAe,GAAG,aAAa,GAAG,IAAI,CAuH/F;IAED;;OAEG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAwBlD;IAED,OAAO,CAAC,WAAW;CAWpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,2BAA2B,GAAG,MAAM,CAqBvF;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,CA0B7E"}
|
package/package.json
CHANGED
|
@@ -37,7 +37,7 @@ If any criterion cannot be met, stop immediately and log FAILURE with the reason
|
|
|
37
37
|
- **Single-flight per issue & PR**: multiple autowork runs can execute concurrently. Both issues and pull requests are shared resources — never begin implementing an issue without first claiming it (see Claim protocol in Phase 2), and never begin addressing findings on an open PR without first claiming it (see PR Claim protocol in Phase 1).
|
|
38
38
|
- **Language Requirement**: All GitHub issue titles, descriptions, task checklists, and comments MUST be written in **English**.
|
|
39
39
|
- **Session link footer**: sign every GitHub post (issue comments, PR comments, PR descriptions) with the Antigravity run footer (`_Generated by [Antigravity](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})_`). Inline review-thread line comments are exempt.
|
|
40
|
-
- **Headless Execution & Asynchronous Non-Yielding Guardrail**: You are running in a headless autonomous session. You MUST NEVER call `schedule` or yield the turn with plain text while waiting for background tasks or verification checks. If a verification command runs in the background, actively inspect its completion with `manage_task` or
|
|
40
|
+
- **Headless Execution & Asynchronous Non-Yielding Guardrail**: You are running in a headless autonomous session. You MUST NEVER call `schedule` or yield the turn with plain text while waiting for background tasks or verification checks. When running verification commands (`run_command`), specify `WaitMsBeforeAsync: 10000` so fast checks complete synchronously. If a verification command or subagent runs in the background, actively inspect its completion with `manage_task(Action='status')` or `manage_subagents(Action='list')` (both status polling tools are explicitly exempted from loop guards). DO NOT "busy-wait" by repeatedly calling read tools (such as `view_file`) on unchanged files while waiting for tasks, as calling non-polling tools with identical arguments trips the loop circuit breaker. Never stop calling tools or yield your turn until the routine's terminal Definition of Done is fully reached.
|
|
41
41
|
- **Autonomous Surfacing Cadence (No Permission Traps)**: Timeboxing is for surfacing progress, never for stopping. Checkpoints report status without halting execution. Never yield the turn or ask rhetorical permission questions (e.g. "Shall I continue?", "Proceed with implementation?"). Proceed with the next step autonomously.
|
|
42
42
|
- **Defect Taxonomy of Bogus Green Checks & Red Gate Verification**: Always establish a failing reproduction check or verifier before modifying code (the Red Gate). Interrogate checks against the 6 bogus green defect classes (Vacuous assertion, Silent no-match, Errored check, Wrong reference, Stale premise, Scope mismatch). Exit codes decide; summaries are intent.
|
|
43
43
|
- **Anti-Hallucination Disk Read-Back Verification**: Always verify generated code, configs, and artifacts by reading values directly back out of the written artifact on disk, never from in-memory variables or shell command echoes.
|
|
@@ -41,7 +41,7 @@ If any criterion cannot be met, stop immediately and log FAILURE with the reason
|
|
|
41
41
|
- **No speculative work**: review only the diff in the PR.
|
|
42
42
|
- **Language Requirement**: All GitHub comments, review notes, and follow-up issues MUST be written in **English**.
|
|
43
43
|
- **Session link footer**: sign every GitHub post with the Antigravity run footer (`_Generated by [Antigravity](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID})_`).
|
|
44
|
-
- **Headless Execution & Asynchronous Non-Yielding Guardrail**: You are running in a headless autonomous CLI session. You MUST NEVER call `schedule` or yield the turn with plain text to "wait" for background tasks, timers, or long-running commands. In headless CLI mode, yielding the turn terminates the session immediately before reaching the Definition of Done. When invoking `run_command` for test runs or type checks, ALWAYS set `WaitMsBeforeAsync` high enough (up to the maximum `10000` ms)
|
|
44
|
+
- **Headless Execution & Asynchronous Non-Yielding Guardrail**: You are running in a headless autonomous CLI session. You MUST NEVER call `schedule` or yield the turn with plain text to "wait" for background tasks, timers, or long-running commands. In headless CLI mode, yielding the turn terminates the session immediately before reaching the Definition of Done. When invoking `run_command` for test runs or type checks, ALWAYS set `WaitMsBeforeAsync` high enough (up to the maximum `10000` ms) so fast checks finish synchronously. If a command or subagent moves to the background, keep your execution turn active by polling status (`manage_task(Action='status')` or `manage_subagents(Action='list')`); status polling with these tools is explicitly exempted from loop guard circuit breakers. DO NOT "busy-wait" by repeatedly reading unchanged files (`view_file`) or running redundant commands to pass time while waiting, as calling non-polling tools with identical arguments will trip the loop guard. NEVER call `schedule` or emit a terminal turn with plain text before taking the final action.
|
|
45
45
|
- **Verification Command & CI Discipline**: When remote CI checks (e.g. GitHub Actions, Vercel preview deployments) are already present and passed on the PR's head commit, treat CI as verified and green. Avoid executing slow, redundant local full test suites or full type-checks when CI is already green. Run local verification commands (`npm test`, `npm run type-check`) ONLY if CI is missing, unconfirmed, or failing.
|
|
46
46
|
- **Autonomous Surfacing Cadence (No Permission Traps)**: Timeboxing is for surfacing progress, never for stopping. Checkpoints report status without halting execution. Never yield the turn or prompt rhetorical permission questions (e.g. "Shall I continue?", "Proceed to merge?"). Take authoritative final action autonomously.
|
|
47
47
|
- **Defect Taxonomy of Bogus Green Checks**: The most expensive errors in agentic engineering come from checks reporting success for work they did not do. Audit verification against the 6 defect shapes (Vacuous assertion, Silent no-match, Errored check, Wrong reference, Stale premise, Scope mismatch). Exit codes and concrete diffs are authoritative; agent summaries are merely intent.
|
|
@@ -142,7 +142,7 @@ Check if `$PR_NUMBER` is set:
|
|
|
142
142
|
- **Question-First Validation**: Verify that any new custom analytics events answer a clear, decision-driving question per the 3-Tier Taxonomy in `AGENTS.md`. Flag vanity click-trackers on Tier 3 passive chrome/easter eggs as non-blocking cleanup (recommend removal).
|
|
143
143
|
- **Funnel Completeness**: For new Tier 1 user funnels or critical workflows, verify the telemetry contract: impression denominator (`_shown`), interaction (`_clicked`), and failure states (`_failed` with `reason`) are captured, and events are documented in the custom events catalog (`ARCHITECTURE.md` / `DATA_CONTEXT.md`). Flag missing denominators on core funnels as blocking.
|
|
144
144
|
5. If PR modifies rendered UI, verify screenshots or visual components if tooling/scripts are available.
|
|
145
|
-
6. Run repository verification commands (tests, type-check) ONLY if CI status is unconfirmed or failing. If remote CI (such as GitHub Actions or Vercel preview) is already green and passing on the head commit, treat CI as verified. If verification commands must be run locally, specify `WaitMsBeforeAsync: 10000` and NEVER call `schedule` or yield the turn with plain text while waiting for background tasks.
|
|
145
|
+
6. Run repository verification commands (tests, type-check) ONLY if CI status is unconfirmed or failing. If remote CI (such as GitHub Actions or Vercel preview) is already green and passing on the head commit, treat CI as verified. If verification commands must be run locally, specify `WaitMsBeforeAsync: 10000` and NEVER call `schedule` or yield the turn with plain text while waiting for background tasks. If a command runs in the background, poll its completion with `manage_task(Action='status')` without busy-waiting on unchanged files.
|
|
146
146
|
7. **Anti-Vacuity & Verifier Audit Pass (The 6 Bogus Green Shapes)**:
|
|
147
147
|
Actively interrogate new or modified tests and verification commands against the 6 bogus green defect classes:
|
|
148
148
|
- **Vacuous assertion**: Test passes whether or not the feature works (e.g. deleting the implementation under test leaves it green). Require a red-gate failure or mutation check.
|
|
@@ -270,4 +270,3 @@ The dynamic execution context for this specific review run is injected strictly
|
|
|
270
270
|
- **Runtime Metadata**: `$ROUTINE_ISSUE_NUMBER`, `$GITHUB_RUN_ID`, runner timestamp, and trigger event.
|
|
271
271
|
- **Pull Request Payload**: Head commit SHA, base branch diff, status check rollup (CI status), and unaddressed comments.
|
|
272
272
|
- **Prefix Caching Invariant**: Harnesses and runners MUST NEVER interpolate dynamic timestamps, run IDs, or target identifiers into Tier 1 or Tier 2 prefix blocks.
|
|
273
|
-
|
|
@@ -64,11 +64,14 @@ export class LoopGuard {
|
|
|
64
64
|
if (this.trippedResult) return this.trippedResult;
|
|
65
65
|
|
|
66
66
|
const isStatusPolling =
|
|
67
|
-
toolName === 'manage_task' &&
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
67
|
+
(toolName === 'manage_task' &&
|
|
68
|
+
(args?.Action === 'status' ||
|
|
69
|
+
args?.action === 'status' ||
|
|
70
|
+
args?.Action === 'list' ||
|
|
71
|
+
args?.action === 'list')) ||
|
|
72
|
+
(toolName === 'manage_subagents' &&
|
|
73
|
+
(args?.Action === 'list' ||
|
|
74
|
+
args?.action === 'list'));
|
|
72
75
|
|
|
73
76
|
const hash = computeActionHash(toolName, args);
|
|
74
77
|
const record = {
|
|
@@ -133,11 +136,14 @@ export class LoopGuard {
|
|
|
133
136
|
const pingPongSlice = this.history.slice(-requiredPingPongLength);
|
|
134
137
|
const hasStatusPolling = pingPongSlice.some(
|
|
135
138
|
(item) =>
|
|
136
|
-
item.toolName === 'manage_task' &&
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
139
|
+
(item.toolName === 'manage_task' &&
|
|
140
|
+
(item.args?.Action === 'status' ||
|
|
141
|
+
item.args?.action === 'status' ||
|
|
142
|
+
item.args?.Action === 'list' ||
|
|
143
|
+
item.args?.action === 'list')) ||
|
|
144
|
+
(item.toolName === 'manage_subagents' &&
|
|
145
|
+
(item.args?.Action === 'list' ||
|
|
146
|
+
item.args?.action === 'list'))
|
|
141
147
|
);
|
|
142
148
|
|
|
143
149
|
if (!hasStatusPolling) {
|