@detergent-software/conductor 3.5.0-dev.8 → 3.5.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 +177 -0
- package/README.md +7 -4
- package/build/blocking.js +53 -0
- package/build/blocking.js.map +1 -0
- package/build/brief.js +9 -2
- package/build/brief.js.map +1 -1
- package/build/cli.js +12 -4
- package/build/cli.js.map +1 -1
- package/build/client.js +18 -8
- package/build/client.js.map +1 -1
- package/build/config.js +4 -0
- package/build/config.js.map +1 -1
- package/build/credentials.js +4 -0
- package/build/credentials.js.map +1 -1
- package/build/daemon.js +100 -26
- package/build/daemon.js.map +1 -1
- package/build/help.js +1 -1
- package/build/help.js.map +1 -1
- package/build/host/worktree-processes.js.map +1 -1
- package/build/inbox.js +74 -4
- package/build/inbox.js.map +1 -1
- package/build/loop-lag.js +97 -9
- package/build/loop-lag.js.map +1 -1
- package/build/manager.js +151 -22
- package/build/manager.js.map +1 -1
- package/build/notes.js +132 -21
- package/build/notes.js.map +1 -1
- package/build/plugin.js +9 -3
- package/build/plugin.js.map +1 -1
- package/build/profile-layers.js +2 -1
- package/build/profile-layers.js.map +1 -1
- package/build/run.js +11 -1
- package/build/run.js.map +1 -1
- package/build/scheduler.js +8 -2
- package/build/scheduler.js.map +1 -1
- package/build/server.js +1 -1
- package/build/server.js.map +1 -1
- package/build/store.js +6 -1
- package/build/store.js.map +1 -1
- package/build/watchers/issues.js +2 -1
- package/build/watchers/issues.js.map +1 -1
- package/build/watchers/linear-api.js +73 -13
- package/build/watchers/linear-api.js.map +1 -1
- package/build/watchers/linear-queue.js +11 -4
- package/build/watchers/linear-queue.js.map +1 -1
- package/build/watchers/linear.js +50 -30
- package/build/watchers/linear.js.map +1 -1
- package/build/worktrees.js +18 -6
- package/build/worktrees.js.map +1 -1
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +4 -2
- package/plugin/hooks/model.ts +45 -11
- package/plugin/hooks/register.tsx +54 -22
- package/plugin/skills/work-item/SKILL.md +3 -3
- package/plugin/types/index.d.ts +5 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,183 @@
|
|
|
2
2
|
|
|
3
3
|
Releases are tagged `conductor-v<version>` and staged on npm by `atk-conductor-release` (`pipelines/release-conductor.yml`), which writes each section below. `scripts/check-changelog.mjs` fails when a tag has no section here.
|
|
4
4
|
|
|
5
|
+
## [3.5.0](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTconductor-v3.4.0&targetVersion=GTconductor-v3.5.0) (2026-11-02)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **conductor:** load the console skill in code after a /clear (ATK-840) ([6b13e41](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/6b13e41d3b47946d12a8503f7d6512ee2b3e8f8a))
|
|
10
|
+
* **conductor:** raise a process a long park couldn't stop (ATK-879) ([25a4a3e](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/25a4a3ecfafda078747aaf444ebc09a6372643fd))
|
|
11
|
+
* **conductor:** say what held the event loop in a stall warning (ATK-712) ([d92d382](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/d92d38266e76ed9fd87bfdaa8293836cd9421cfe))
|
|
12
|
+
* **conductor:** show the conductor's version in the pane header (ATK-882) ([f43e3fe](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/f43e3fe0b43e3f3a8d184c583d83466226f3e3fe))
|
|
13
|
+
* **conductor:** start the browser verify runs drive when it isn't running (ATK-771) ([1fa6c51](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/1fa6c51af2d82a72732e3ada974883ed6855482d))
|
|
14
|
+
* **conductor:** stop a long-parked worker's worktree processes (ATK-876) ([8c5d1b2](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/8c5d1b2d7b10a02b7e1e33a1ad3674471482c413))
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
* **conductor:** act on the code review of the Landed retry (ATK-869) ([15d1e87](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/15d1e8714e14ef4a5ecbdf732fb1c29432bc5cfa))
|
|
19
|
+
* **conductor:** carry the checkout's MCP approval into each worktree (ATK-866) ([26795d5](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/26795d543427f06087ae70b6a5fc4725c51a8fa8))
|
|
20
|
+
* **conductor:** clear a long park's held-process item once it exits (ATK-880) ([30d690f](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/30d690f4431bae579aee85d98a326e5ed8d6dd40))
|
|
21
|
+
* **conductor:** close a trashed Linear issue in the queue and brief (ATK-872) ([abf2f97](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/abf2f97a7f500ad4a8f080f7226990b93bc2a1db))
|
|
22
|
+
* **conductor:** close the gaps the review found in the retry (ATK-869) ([5d5303a](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/5d5303abf1b3e54e307aa48ab0a5f8d00015e438))
|
|
23
|
+
* **conductor:** delete worktrees in a child process (ATK-712) ([2376ead](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/2376eada29b5872b9e6f122796d72b85f167917c))
|
|
24
|
+
* **conductor:** hold an unseen tab that took a turn (ATK-878) ([39ac478](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/39ac4783687074b349c289445b1d2fa0bceef33a))
|
|
25
|
+
* **conductor:** keep a held daemon's lock and stop one that lost it (ATK-868) ([7eb8582](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/7eb85823bf9d50c148f717b1d7c58d8df1fa2928))
|
|
26
|
+
* **conductor:** keep a long park's held item beside other failures (ATK-879) ([998dc99](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/998dc99ebca4adc476ac91440916eaa373d5c7bc))
|
|
27
|
+
* **conductor:** keep a long park's held-process check honest (ATK-880) ([0682c2f](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/0682c2f763792c7401210dcb1270ece1e413feba))
|
|
28
|
+
* **conductor:** keep a worktree whose process won't stop (ATK-865) ([0c5ea66](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/0c5ea66f8d131b78e77df1de68d49a4f5cb9bf05))
|
|
29
|
+
* **conductor:** keep an earlier park's held processes through a re-park (ATK-880) ([439dbf5](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/439dbf51d0a96c4f5d5b8bca4861feeabb547cbd))
|
|
30
|
+
* **conductor:** keep the browser out of the worktree and find it more ways (ATK-771) ([7450af6](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/7450af60feb1d1738bed3d9cfdc4b0f968c96688))
|
|
31
|
+
* **conductor:** keep the pane's counts and a fresh mod version (ATK-882) ([57eb417](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/57eb417104412dad6042091d6628289620fea6fb))
|
|
32
|
+
* **conductor:** keep the stall warning's attribution honest (ATK-712) ([3cfb37d](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/3cfb37dcb920e9c2437dcf0aa0a732cb44818e28))
|
|
33
|
+
* **conductor:** list parked workers' sessions at most once a minute (ATK-861) ([b542078](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/b5420783e3cb1e088a8655bd570f654431d10a7b))
|
|
34
|
+
* **conductor:** load the console skill again after a compaction (ATK-843) ([793a837](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/793a8377407f7a18c5fdffa09b9a9fd41ccafd00))
|
|
35
|
+
* **conductor:** mark the console skill loaded only when it is (ATK-840) ([0c8aa3a](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/0c8aa3a02fe55416776456d81dc2b3c6b3b760a8))
|
|
36
|
+
* **conductor:** name a spawn's program the same on every OS (ATK-712) ([a585251](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/a5852512b99910d8ff16b3e2635ef9dbc75af72e))
|
|
37
|
+
* **conductor:** park a resumed worker only after its reply (ATK-863) ([42c10a4](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/42c10a45dcf10c956d09b4547d66555016fef060))
|
|
38
|
+
* **conductor:** read only a timeout as a held daemon (ATK-868) ([74211d0](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/74211d03eeb646393f71502b6c6bb83613665d42))
|
|
39
|
+
* **conductor:** read the skill's state before the compaction (ATK-843) ([95a10d7](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/95a10d79f462f136fb173cb31f71ba2623ae4bd1))
|
|
40
|
+
* **conductor:** release an attached worker whose tab closed unseen (ATK-878) ([18518af](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/18518af5be561257fc0be0e0d26d11451f1c060a))
|
|
41
|
+
* **conductor:** resolve waits on a tracker item that is gone (ATK-870) ([458600e](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/458600ebaeabd17e2d3979a11aedb8f0d767bf48))
|
|
42
|
+
* **conductor:** say why a Linear answer had no data (ATK-869) ([bcabfd5](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/bcabfd59ceaf4563404564fd2be58a1e746fd0b3))
|
|
43
|
+
* **conductor:** see a trashed Linear issue and a GitHub 410 as gone (ATK-871) ([61a4e65](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/61a4e65e7d0267299777d148dd773ee47a47732a))
|
|
44
|
+
* **conductor:** send an unanswered resume again once, not for good (ATK-863) ([4366f93](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/4366f937991daf0c7ff0c22abef557050ff74ffb))
|
|
45
|
+
* **conductor:** skip headless browsers and keep polling after a start (ATK-771) ([55cd6a1](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/55cd6a19a8e495b4558fbe3d66bc277341130656))
|
|
46
|
+
* **conductor:** skip the claude agents listing when no worker needs sweeping ([bbf9e8a](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/bbf9e8ab1ede5461af7827cac31df77f7b6465f8))
|
|
47
|
+
* **conductor:** stop a worktree's own processes before retiring it (ATK-865) ([c458470](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/c45847025d4d05d7df502e24e0e86c124ba100b6))
|
|
48
|
+
* **conductor:** stop only processes that run from the worktree (ATK-865) ([f6c537d](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/f6c537d2b57582a041cfac2f3e99bc8f28f85f5a))
|
|
49
|
+
* **conductor:** tighten the trash and 410 reads after review (ATK-871) ([5d99a98](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/5d99a980aa862905a48527463eea37c913fc71d2))
|
|
50
|
+
* **conductor:** time a long park from the park, retry a failed listing (ATK-876) ([2afbfb6](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/2afbfb6de01639f4e3577fd624eb732cc6632316))
|
|
51
|
+
* **conductor:** try an unclear Landed move again on the next sweep (ATK-869) ([89fdb8f](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/89fdb8f4cd4e59dbfd4a5805ea50eb046d682749))
|
|
52
|
+
|
|
53
|
+
### Refactoring
|
|
54
|
+
|
|
55
|
+
* **conductor:** keep the gone line's format in one place (ATK-870) ([f1c7f86](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/f1c7f86c4f80e70ba21757e8ac8864a7f1895a81))
|
|
56
|
+
* **conductor:** one line for a Linear issue in the trash (ATK-872) ([74012e9](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/74012e99182fe222a12f980a8085d59509bdb02b))
|
|
57
|
+
* **conductor:** tighten the MCP approval carry after review (ATK-866) ([15a9434](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/15a94347f531b525a03708d716217d00b7a54189))
|
|
58
|
+
|
|
59
|
+
### Styling
|
|
60
|
+
|
|
61
|
+
* **conductor:** sort the stall state's fields (ATK-876) ([f02f594](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/f02f594dcbd0c312066a88be0da9ab4c5eef0f5e))
|
|
62
|
+
|
|
63
|
+
### Documentation
|
|
64
|
+
|
|
65
|
+
* **conductor:** say what a worker does on a failed Landed retry (ATK-869) ([10ad509](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/10ad509da6a4b990bcc7235b4c8566589d502d15))
|
|
66
|
+
* **conductor:** say when a long park's stop comes (ATK-876) ([ac24083](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/ac240838932174ff4b481d8278730daf3e452994))
|
|
67
|
+
* **conductor:** say when a start replaces the lock (ATK-868) ([7a6d617](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/7a6d6177d591a8a83b7faf083e90a8ee862a2cc1))
|
|
68
|
+
* **conductor:** say when an unseen attach tab counts as closed (ATK-878) ([9a7ded7](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/9a7ded7df19553425512e49133775199efb0ba6d))
|
|
69
|
+
* **conductor:** say when the sweep lists the sessions (ATK-861) ([da0dc9f](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/da0dc9f1fe195e85f65bef49c4c616a8ce3c8d8d))
|
|
70
|
+
* **conductor:** tell a worker what a gone wake means (ATK-870) ([c088f13](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/c088f13bfc7fe8b33c9e2ecf1d78ef9e7b2e2f68))
|
|
71
|
+
|
|
72
|
+
## [3.5.0-dev.18](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTconductor-v3.5.0-dev.17&targetVersion=GTconductor-v3.5.0-dev.18) (2026-11-02)
|
|
73
|
+
|
|
74
|
+
### Features
|
|
75
|
+
|
|
76
|
+
* **conductor:** show the conductor's version in the pane header (ATK-882) ([f43e3fe](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/f43e3fe0b43e3f3a8d184c583d83466226f3e3fe))
|
|
77
|
+
|
|
78
|
+
### Bug Fixes
|
|
79
|
+
|
|
80
|
+
* **conductor:** keep the pane's counts and a fresh mod version (ATK-882) ([57eb417](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/57eb417104412dad6042091d6628289620fea6fb))
|
|
81
|
+
|
|
82
|
+
## [3.5.0-dev.17](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTconductor-v3.5.0-dev.16&targetVersion=GTconductor-v3.5.0-dev.17) (2026-11-01)
|
|
83
|
+
|
|
84
|
+
### Bug Fixes
|
|
85
|
+
|
|
86
|
+
* **conductor:** clear a long park's held-process item once it exits (ATK-880) ([30d690f](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/30d690f4431bae579aee85d98a326e5ed8d6dd40))
|
|
87
|
+
* **conductor:** keep a long park's held-process check honest (ATK-880) ([0682c2f](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/0682c2f763792c7401210dcb1270ece1e413feba))
|
|
88
|
+
* **conductor:** keep an earlier park's held processes through a re-park (ATK-880) ([439dbf5](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/439dbf51d0a96c4f5d5b8bca4861feeabb547cbd))
|
|
89
|
+
|
|
90
|
+
## [3.5.0-dev.16](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTconductor-v3.5.0-dev.15&targetVersion=GTconductor-v3.5.0-dev.16) (2026-11-01)
|
|
91
|
+
|
|
92
|
+
### Features
|
|
93
|
+
|
|
94
|
+
* **conductor:** say what held the event loop in a stall warning (ATK-712) ([d92d382](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/d92d38266e76ed9fd87bfdaa8293836cd9421cfe))
|
|
95
|
+
|
|
96
|
+
### Bug Fixes
|
|
97
|
+
|
|
98
|
+
* **conductor:** delete worktrees in a child process (ATK-712) ([2376ead](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/2376eada29b5872b9e6f122796d72b85f167917c))
|
|
99
|
+
* **conductor:** keep the stall warning's attribution honest (ATK-712) ([3cfb37d](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/3cfb37dcb920e9c2437dcf0aa0a732cb44818e28))
|
|
100
|
+
* **conductor:** name a spawn's program the same on every OS (ATK-712) ([a585251](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/a5852512b99910d8ff16b3e2635ef9dbc75af72e))
|
|
101
|
+
|
|
102
|
+
## [3.5.0-dev.15](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTconductor-v3.5.0-dev.14&targetVersion=GTconductor-v3.5.0-dev.15) (2026-11-01)
|
|
103
|
+
|
|
104
|
+
### Features
|
|
105
|
+
|
|
106
|
+
* **conductor:** raise a process a long park couldn't stop (ATK-879) ([25a4a3e](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/25a4a3ecfafda078747aaf444ebc09a6372643fd))
|
|
107
|
+
|
|
108
|
+
### Bug Fixes
|
|
109
|
+
|
|
110
|
+
* **conductor:** keep a long park's held item beside other failures (ATK-879) ([998dc99](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/998dc99ebca4adc476ac91440916eaa373d5c7bc))
|
|
111
|
+
|
|
112
|
+
## [3.5.0-dev.14](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTconductor-v3.5.0-dev.13&targetVersion=GTconductor-v3.5.0-dev.14) (2026-11-01)
|
|
113
|
+
|
|
114
|
+
### Bug Fixes
|
|
115
|
+
|
|
116
|
+
* **conductor:** hold an unseen tab that took a turn (ATK-878) ([39ac478](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/39ac4783687074b349c289445b1d2fa0bceef33a))
|
|
117
|
+
* **conductor:** release an attached worker whose tab closed unseen (ATK-878) ([18518af](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/18518af5be561257fc0be0e0d26d11451f1c060a))
|
|
118
|
+
|
|
119
|
+
### Documentation
|
|
120
|
+
|
|
121
|
+
* **conductor:** say when an unseen attach tab counts as closed (ATK-878) ([9a7ded7](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/9a7ded7df19553425512e49133775199efb0ba6d))
|
|
122
|
+
|
|
123
|
+
## [3.5.0-dev.13](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTconductor-v3.5.0-dev.12&targetVersion=GTconductor-v3.5.0-dev.13) (2026-11-01)
|
|
124
|
+
|
|
125
|
+
### Features
|
|
126
|
+
|
|
127
|
+
* **conductor:** stop a long-parked worker's worktree processes (ATK-876) ([8c5d1b2](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/8c5d1b2d7b10a02b7e1e33a1ad3674471482c413))
|
|
128
|
+
|
|
129
|
+
### Bug Fixes
|
|
130
|
+
|
|
131
|
+
* **conductor:** time a long park from the park, retry a failed listing (ATK-876) ([2afbfb6](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/2afbfb6de01639f4e3577fd624eb732cc6632316))
|
|
132
|
+
|
|
133
|
+
### Styling
|
|
134
|
+
|
|
135
|
+
* **conductor:** sort the stall state's fields (ATK-876) ([f02f594](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/f02f594dcbd0c312066a88be0da9ab4c5eef0f5e))
|
|
136
|
+
|
|
137
|
+
### Documentation
|
|
138
|
+
|
|
139
|
+
* **conductor:** say when a long park's stop comes (ATK-876) ([ac24083](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/ac240838932174ff4b481d8278730daf3e452994))
|
|
140
|
+
|
|
141
|
+
## [3.5.0-dev.12](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTconductor-v3.5.0-dev.11&targetVersion=GTconductor-v3.5.0-dev.12) (2026-11-01)
|
|
142
|
+
|
|
143
|
+
### Bug Fixes
|
|
144
|
+
|
|
145
|
+
* **conductor:** act on the code review of the Landed retry (ATK-869) ([15d1e87](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/15d1e8714e14ef4a5ecbdf732fb1c29432bc5cfa))
|
|
146
|
+
* **conductor:** close the gaps the review found in the retry (ATK-869) ([5d5303a](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/5d5303abf1b3e54e307aa48ab0a5f8d00015e438))
|
|
147
|
+
* **conductor:** say why a Linear answer had no data (ATK-869) ([bcabfd5](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/bcabfd59ceaf4563404564fd2be58a1e746fd0b3))
|
|
148
|
+
* **conductor:** try an unclear Landed move again on the next sweep (ATK-869) ([89fdb8f](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/89fdb8f4cd4e59dbfd4a5805ea50eb046d682749))
|
|
149
|
+
|
|
150
|
+
### Documentation
|
|
151
|
+
|
|
152
|
+
* **conductor:** say what a worker does on a failed Landed retry (ATK-869) ([10ad509](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/10ad509da6a4b990bcc7235b4c8566589d502d15))
|
|
153
|
+
|
|
154
|
+
## [3.5.0-dev.11](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTconductor-v3.5.0-dev.10&targetVersion=GTconductor-v3.5.0-dev.11) (2026-11-01)
|
|
155
|
+
|
|
156
|
+
### Bug Fixes
|
|
157
|
+
|
|
158
|
+
* **conductor:** keep a held daemon's lock and stop one that lost it (ATK-868) ([7eb8582](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/7eb85823bf9d50c148f717b1d7c58d8df1fa2928))
|
|
159
|
+
* **conductor:** read only a timeout as a held daemon (ATK-868) ([74211d0](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/74211d03eeb646393f71502b6c6bb83613665d42))
|
|
160
|
+
|
|
161
|
+
### Documentation
|
|
162
|
+
|
|
163
|
+
* **conductor:** say when a start replaces the lock (ATK-868) ([7a6d617](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/7a6d6177d591a8a83b7faf083e90a8ee862a2cc1))
|
|
164
|
+
|
|
165
|
+
## [3.5.0-dev.10](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTconductor-v3.5.0-dev.9&targetVersion=GTconductor-v3.5.0-dev.10) (2026-11-01)
|
|
166
|
+
|
|
167
|
+
### Bug Fixes
|
|
168
|
+
|
|
169
|
+
* **conductor:** close a trashed Linear issue in the queue and brief (ATK-872) ([abf2f97](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/abf2f97a7f500ad4a8f080f7226990b93bc2a1db))
|
|
170
|
+
|
|
171
|
+
### Refactoring
|
|
172
|
+
|
|
173
|
+
* **conductor:** one line for a Linear issue in the trash (ATK-872) ([74012e9](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/74012e99182fe222a12f980a8085d59509bdb02b))
|
|
174
|
+
|
|
175
|
+
## [3.5.0-dev.9](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTconductor-v3.5.0-dev.8&targetVersion=GTconductor-v3.5.0-dev.9) (2026-11-01)
|
|
176
|
+
|
|
177
|
+
### Bug Fixes
|
|
178
|
+
|
|
179
|
+
* **conductor:** see a trashed Linear issue and a GitHub 410 as gone (ATK-871) ([61a4e65](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/61a4e65e7d0267299777d148dd773ee47a47732a))
|
|
180
|
+
* **conductor:** tighten the trash and 410 reads after review (ATK-871) ([5d99a98](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/5d99a980aa862905a48527463eea37c913fc71d2))
|
|
181
|
+
|
|
5
182
|
## [3.5.0-dev.8](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTconductor-v3.5.0-dev.7&targetVersion=GTconductor-v3.5.0-dev.8) (2026-11-01)
|
|
6
183
|
|
|
7
184
|
### Bug Fixes
|
package/README.md
CHANGED
|
@@ -132,6 +132,7 @@ The session manager owns the `claude --bg` sessions it launches, and only those:
|
|
|
132
132
|
Then `claude --bg -n <name> --plugin-dir <home>/plugin --disallowedTools EnterPlanMode ExitPlanMode --permission-mode auto -- <prompt>` runs with its cwd in the worktree (see Plugin), never `--worktree`. Workers run headless. A machine whose `config.json` sets `"workers": { "tab": true }` also gets a tab attached to each session, `claude attach <session>`, in the terminal `workers.terminal` names (see Tabs); `conduct attach` opens one either way. A tab that fails to open is a `worker.tab-failed` event and never fails the launch.
|
|
133
133
|
- **sweep:** every `sessions.pollSeconds` (10). Each `claude agents` listing launches `claude`, so the sweep lists on every pass only while a worker runs or a parked worker has a wait to deliver, and otherwise at most once a minute. A parked worker's compaction, and a session someone woke outside the daemon, are seen on that minute's listing (ATK-861).
|
|
134
134
|
- **park:** a worker with a wait (`POST /waits`) is stopped once `claude agents` shows its turn has ended. Its status becomes `parked`, and its tab closes.
|
|
135
|
+
- **long park:** once a worker has been parked `workers.stopProcessesAfterParkMinutes` (15; 0 turns it off) with none of its waits resolved, the daemon stops its worktree's own processes, such as a dev server it left up, with the retire's `stop processes` step and its rules (ATK-876; see retire). A Cadence `next dev` holds 0.4–2.5 GB, and most parks are short (Cadence's p50 is 2.3 min), so it waits for a long one rather than stopping a server on every park. It runs once per park, on the sweep's listing, which comes at most once a minute with no worker running, so up to a minute past the threshold. It is timed from the park, which a compaction's re-park starts again (a daemon restart, with no park seen, times it from the last stop and checks each long park once more). A listing that fails is tried again 5 minutes later, and a listing with a part it couldn't read is logged as a warning. A `worker.processes-stopped` event names each PID and command stopped (`stopped`) and any that wouldn't stop (`held`, with `error`); a check that finds none logs nothing. A process that wouldn't stop also raises a `failed` inbox item naming each PID and command, with the command that kills it (ATK-879), unless an open item gives those commands already (a half-done retire's item). It stands beside the worker's other failures and resolves when the worker resumes (an attach among them) or retires, or when its processes have exited (ATK-880). Until the worker runs again or retires, through a compaction's re-park too, the daemon lists the worktree again every 5 minutes, stopping nothing. A held process has exited when its PID is gone, or, for one that runs from the worktree, when a complete listing no longer shows it (so a PID the OS gave to another process counts). One found only by its port or its parent needs its PID gone, since it can run unlisted. Those that exited are logged as `worker.processes-exited` (`exited`, with `held` for the rest): the park's items that name one resolve, and those still held are raised again on their own, so no kill command is left for a PID that may be reused. A listing that fails leaves it open. A daemon restart resolves it too, and the restart's own check of the park raises it again while the processes still run. A retire that stops part way raises its own item in its place, and one that is refused leaves it open. The worker stays parked on its waits and keeps its ports, so a server its work skill starts again serves on the same ones. The resume starts nothing. A worker whose wait has resolved is resumed instead, since its next turn may want the server. A parked worker is never attached: an attach resumes it first.
|
|
135
136
|
- **resume:** when a wait resolves, the daemon lets the stop settle (`sessions.settleSeconds`). It checks the process has exited, then runs `claude --bg --resume <session> -- "[conductor] event: …"`. The session keeps its name, model, permission mode and disallowed tools. A resume of a session that still runs starts a copy; the daemon stops and removes the copy, then tries again. The listing shows a resumed session idle with its pid before its turn reads busy, so the worker isn't parked, and the event's waits aren't marked delivered, until its transcript has the model's reply after the resume (ATK-863). An attach delivers them too, and so does a session with no transcript to read. With no reply 10 minutes on and its turn over, it parks anyway with the event undelivered, so the next resume sends it again (`worker.resume-unanswered`, `resend: true`). A second unanswered resume is delivered (`resend: false`), and the worker parks on its other waits. A daemon restart forgets the resume, so a reply it hadn't seen yet gets the event once more.
|
|
136
137
|
- **compact:** a parked worker with no resolved wait, whose context the rules find too big (the default `compact-on-park`: past `sessions.compactTokens`, 300k), is resumed with `/compact <what to keep>` once its stop has settled (`worker.compacting`). It runs until its transcript shows the compaction's boundary (`worker.compacted`, with the context before it and the conversation it kept), then parks again on its waits, which resume it as usual. Each turn of a session re-reads its whole context from cache, so a worker left to grow pays for it every turn (ATK-454 reached 883k). A resume that starts a copy is tried again on a later sweep (`worker.compact-deferred`), as a resume is. A compaction whose resume fails, or whose turn ends with no boundary 10 minutes on, logs `worker.compact-failed`, which raises a `context` item in the inbox. The worker still parks, and the daemon doesn't try it again until it restarts or the session compacts some other way: any boundary in its transcript, Claude Code's own included, logs `worker.compacted` and resolves that item. A worker whose context is unknown is never compacted, so even a rule with no threshold can't compact it on every park.
|
|
137
138
|
- **retire:** refuses a worker whose turn still runs or that is attached (open in a tab), unless `--force`, and never retires a session that is still starting. A refusal for an attach is logged once per attach, however often the scheduler tries again, and never raised in the inbox; the retire goes through once the attach is released (ATK-519). What happens to the worktree depends on the worker's PR (design note v2, section 2):
|
|
@@ -142,7 +143,7 @@ The session manager owns the `claude --bg` sessions it launches, and only those:
|
|
|
142
143
|
|
|
143
144
|
A probe's worktree and a `--force` retire's always go. Before it removes or keeps a worktree, the retire stops the worktree's own processes, the ones its worker left running such as a dev server (`stop processes`, ATK-865): those that run from the worktree (their executable, program or interpreter's script is in it, as for `node <worktree>/node_modules/next/…`; a process that only takes the worktree as an argument, such as a terminal or editor opened there, doesn't), those listening on a port the broker gave it, and their descendants, never the daemon or a process it descends from. The step's note and `stopped` name each PID and command, or say `none`. It lists them with one PowerShell on Windows (`Win32_Process`, `Get-NetTCPConnection`), from `/proc` and `ss` on Linux, and with `ps` and `lsof` on macOS; a process whose working folder alone is in the worktree has no path to match, so a server is found by its `node_modules` path or its port. A process that won't stop marks the step `held` and keeps the worktree, as a session that won't stop does (on macOS and Linux the removal would go through and leave it running orphaned); a removal still refused after the stop (`… is in use`) marks its step `held` with what the OS names still there. Either way the worktree's ports stay assigned, so the broker doesn't hand them out and the next try still finds the process by its port, even once the folder is gone. The removal moves the worktree aside, has git forget it, deletes the branch and then the directory with Node, which unlinks pnpm's junctions without following them (`git worktree remove` leaves them on Windows). The delete is asynchronous, so the API goes on answering through a minute of `node_modules`. It works in the repository the worktree's own `.git` names, so a worker launched before the daemon owned clones retires from the checkout its worktree was made in; it removes only a linked worktree that repository lists, never a main checkout. With the directory gone already, it deletes the `worktree-<name>` branch in the project's clone only when none of its commits is unpushed. If the stop fails, nothing is removed. If the stop succeeds (or a fresh listing shows no process to stop) and a later step fails, `worker.retire-partial` says `parked`: the worker is parked with its waits closed: no sweep reads it as stopped unexpectedly, resumes it or compacts it, and the retire is tried again.
|
|
144
145
|
- **restarts:** a launch the daemon was stopped in adopts its session if one was started, and otherwise fails and removes its clean worktree.
|
|
145
|
-
- **attach:** a parked worker is resumed with no event text, so it wakes idle and keeps running when its tab closes. The daemon sees the tab by its `claude attach <session>` client process (Windows PowerShell's `Win32_Process` on Windows, `ps` elsewhere), on each attach and, while a worker is attached, at most every 30 s of the sweep (ATK-520). An attach of a running worker that has a client already (its attach's tab, its launch's, or one opened by hand in another terminal) opens no second tab: it prints `already attached to <name> (its tab is open)`, logs `worker.attached` with `tabOpen: true`, and marks the worker attached if it wasn't. An attached worker isn't parked until it registers a new wait, until its turn is over and two scans in a row found no client after one since the attach had found it (`worker.detached`, `reason: tab closed`), or until its turn has been over `sessions.idleMinutes` (`worker.detached`). A client counts by the worker's short id, session id or name, or any id it had since the attach. A tab whose client no scan found (a tab that failed to open, a worker woken outside the daemon, a `ps`
|
|
146
|
+
- **attach:** a parked worker is resumed with no event text, so it wakes idle and keeps running when its tab closes. The daemon sees the tab by its `claude attach <session>` client process (Windows PowerShell's `Win32_Process` on Windows, `ps` elsewhere), on each attach and, while a worker is attached, at most every 30 s of the sweep (ATK-520). An attach of a running worker that has a client already (its attach's tab, its launch's, or one opened by hand in another terminal) opens no second tab: it prints `already attached to <name> (its tab is open)`, logs `worker.attached` with `tabOpen: true`, and marks the worker attached if it wasn't. An attached worker isn't parked until it registers a new wait, until its turn is over and two scans in a row found no client after one since the attach had found it (`worker.detached`, `reason: tab closed`), or until its turn has been over `sessions.idleMinutes` (`worker.detached`). A client counts by the worker's short id, session id or name, or any id it had since the attach. A tab the daemon opened can close before any scan finds its client: once its turn is over, two scans in a row from 15 s after the attach that find no client release it too (`worker.detached`, `reason: tab closed`, `seen: false`; a seen client's release says `seen: true`), unless the transcript shows a turn since the attach (ATK-878). Any other tab whose client no scan found (a tab that failed to open, a worker woken outside the daemon, an attach from before a daemon restart, or a daemon-opened tab with a turn since the attach, such as one where `ps` shows only the client's process title) is never taken as closed, so only the idle release ends that attach, which also delivers a wait that resolved while the worker was attached. The scan is proven on Windows; on macOS and Linux it depends on `ps` showing the client's arguments. A wait that resolves after the attach, on a worker whose transcript shows no turn since then, is delivered at once: the worker is detached (`reason: wait resolved`), parked, which closes its tab, and resumed with the event. A worker someone woke outside the daemon counts as attached since its stop, so the turn that woke it counts. One that took a turn since the attach (or has no transcript to tell), or whose wait resolved before the attach, keeps it until the idle release, logs `worker.resume-held` (`reason: attached`) once, and `conduct status` shows it as `idle, holding resolved waits for the attached session`.
|
|
146
147
|
- **park failures:** a session whose process outlives `claude stop` by 30 s logs one `worker.park-failed` per spell, which raises a `stall` in the inbox (see Inbox), and the park is tried again every 5 minutes.
|
|
147
148
|
- **stalls:** a permission prompt open `sessions.permissionMinutes` (5), or idle `sessions.idleMinutes` (20) with no wait, logs one `worker.stalled` event per spell, and `worker.stall-cleared` when that spell ends. `claude agents` names no command, so a permission stall reads the session's transcripts (its own and its subagents') for the call still open: its tool, the command or path, the subagent that made it, and the auto-mode classifier denials just before it. The inbox item and its push say them, for example "ENG-312 has waited 5 min on a permission prompt: Bash `git -C … diff …` in subagent general-purpose (Review ENG-312 diff vs plan), after 2 auto-mode denials". Auto mode asks a person after 3 classifier denials in a row (20 in a session), even in a background subagent, so that count is usually why the prompt came. An open item of a Handoff kind that a later note answers (`abandoned`, `blocked`, `failed`, `human`, `operator`, `scope`) on the worker, or on its item with no worker, counts as a wait: its idle clock starts once that item resolves. A `merge`, `npm-otp` or `plan` item doesn't: those come with a wait, so a worker idle with only the item still stalls.
|
|
148
149
|
- **spend:** tokens from the session's transcript and its subagents' (`~/.claude/projects/*/<session>.jsonl`), each message counted once, go into `spend` per worker and local day. It keeps input, output, cache read and cache write; `tokens` is their sum. A worker whose tokens in all, not counting cache reads, pass `inbox.runawayTokens` logs `worker.runaway` once per daemon run. Cache reads are left out because they are nearly all of a session's tokens (97% on ATK-312) at a tenth of the price. The spend `conduct status`, `GET /fleet` and the console's fleet pane show (`spend.today`, `spend.total`) and the `spend.*` rule fields count the same tokens: input, output and cache writes. Status shows the worker's cache reads beside them, labelled (`spend 417k today, 1.0M total, 25M cache reads`; `spend.cacheRead` in `GET /fleet`).
|
|
@@ -156,9 +157,11 @@ Worker statuses: `launching`, `running`, `parked`, `stopped-unexpectedly`, `fail
|
|
|
156
157
|
Workers are background sessions, and a tab is only a view of one: the session runs without it, and a tab closes when its worker parks. `~/.conductor/config.json` says whether each launch opens one and where tabs open:
|
|
157
158
|
|
|
158
159
|
```jsonc
|
|
159
|
-
{ "workers": { "tab": true, "terminal": "auto" } }
|
|
160
|
+
{ "workers": { "tab": true, "terminal": "auto", "stopProcessesAfterParkMinutes": 15 } }
|
|
160
161
|
```
|
|
161
162
|
|
|
163
|
+
`stopProcessesAfterParkMinutes` (15) isn't about tabs: how long a worker is parked before its worktree's processes are stopped, 0 never (see long park, under Workers).
|
|
164
|
+
|
|
162
165
|
- `tab` (false): open a tab on each launch. `conduct attach <worker>` opens one whatever it says. It was the profile's `workers.tab` until ATK-529: a profile may still set it, for older daemons, but it is ignored, and `conduct project check` warns about it. Set it in `config.json` on each machine that wants tabs.
|
|
163
166
|
- `terminal` (`auto`): `windows-terminal` (`wt.exe`, a window per project, "Conductor · <project>"), `iterm` (a tab in its front window), `terminal` (macOS Terminal, a window per tab) or `tmux` (a detached session per window, such as `conductor-web`, and a tmux window per tab). `auto` is Windows Terminal on Windows, iTerm on macOS where it is installed and Terminal where not, and tmux elsewhere.
|
|
164
167
|
|
|
@@ -177,7 +180,7 @@ A worker writes each phase note (`## <work skill> · <Phase>[ · <kind>: <one li
|
|
|
177
180
|
| `landed` | Done | Done | closed as completed, the phase label taken off |
|
|
178
181
|
| `shelved` | Backlog, unassigned, labelled `humanLabel` | New, unassigned, tagged `humanLabel` | the phase labels and assignees taken off, labelled `humanLabel`; `null` adds no label of its own, a string adds that one too |
|
|
179
182
|
|
|
180
|
-
A phase mapped to `null` moves nothing (`started` still assigns, `shelved` still unassigns and labels). A `Started` or `Shelved` never reopens a closed item (`kept`); a `PR opened` on one does, for a follow-up PR. The PR linked is the worker's, else the note's first PR link. A write the tracker refuses is a warning on the note's answer and stderr, and a `tracker.transition-failed` event; the note stands, and the verb still exits 0. A write that took is `tracker.transitioned`. With no daemon, `conduct note` posts from the item's project checkout as its account, and moves the item the same way. It also records the note in the store for the project registered there, as the daemon would, so the daemon reads it when it next starts: a Landed counts for ready to release and frees its Area (ATK-723). No rule or inbox item follows such a note, and with no store yet nothing is recorded. When the store shows the item shelved, it refuses the note before posting it, as the daemon does, unless it is a Started, a Handoff or a Shelved (ATK-724). A Shelved note reads the item's brief here first, and is refused as the daemon refuses it: for a done or canceled item, a PR open, merged or unread, or a brief that doesn't read (ATK-727).
|
|
183
|
+
A phase mapped to `null` moves nothing (`started` still assigns, `shelved` still unassigns and labels). A `Started` or `Shelved` never reopens a closed item (`kept`); a `PR opened` on one does, for a follow-up PR. The PR linked is the worker's, else the note's first PR link. A write the tracker refuses is a warning on the note's answer and stderr, and a `tracker.transition-failed` event; the note stands, and the verb still exits 0. A move whose answer never arrived or didn't read (Linear's `unreachable` or `unclear`, rather than a refusal) is `retryable` on the answer and the event. On a worker's Landed, the daemon then tries the move once more on its next 5-minute sweep, and the answer says so (`retry: "sweep"`), so the worker waits on `item <KEY> done` rather than handing off (ATK-869). The sweep finds it by the worker's newest Landed move event, so a restart keeps it, and records the second try with `retried: true`. One that moves the item closes it, so `retire-closed` retires the worker. One that fails too resolves the worker's open waits on its item (`item:<tracker>:<KEY>:…`, no other) with `item <KEY> still open: the conductor's retry of the Landed move failed (…): hand it off`, and records how many in `woken`. When it found none open (the sweep came before the worker's wait), a later pass resolves the first such wait the worker opens the same way, once (`tracker.retry-woken`). A later move of the worker's, such as a follow-up PR opened, stands over the Landed, which then isn't retried. A Started or PR opened isn't retried. A write that took is `tracker.transitioned`. With no daemon, `conduct note` posts from the item's project checkout as its account, and moves the item the same way. It also records the note in the store for the project registered there, as the daemon would, so the daemon reads it when it next starts: a Landed counts for ready to release and frees its Area (ATK-723). No rule or inbox item follows such a note, and with no store yet nothing is recorded. When the store shows the item shelved, it refuses the note before posting it, as the daemon does, unless it is a Started, a Handoff or a Shelved (ATK-724). A Shelved note reads the item's brief here first, and is refused as the daemon refuses it: for a done or canceled item, a PR open, merged or unread, or a brief that doesn't read (ATK-727).
|
|
181
184
|
|
|
182
185
|
**Shelving** (ATK-669). A `Shelved` note says the work stops for good, with the reason: a blocker, a decision someone else owns, a PR dropped with `conduct pr abandon`. It is the one move back: the human label goes on first (a label that doesn't take leaves the item where it is), then the item goes to not-started as above, unassigned, so the scheduler doesn't launch it again. With no state in `tracker.transitions.shelved`, Linear takes the team's own not-started state by its type. A revise never holds it back. `conduct note` refuses it, posting nothing, for a done or canceled item and while the item's PR is open, merged or doesn't read, and after it refuses the item's other notes (Handoffs aside) until a `Started` takes the item up again, so a worker still running can't undo an operator's shelve. The scheduler's next tick fires `item.shelved` for a worker whose newest lifecycle note since its launch is `Shelved` (a `Started` after it, from the operator in its tab, means it isn't), and the default rule `retire-shelved` retires it with its worktree and branch kept, whatever its PR, which frees its Area. That kept worktree raises no inbox item. The brief and the conductor's plan records start after the newest `Shelved` note: a closed PR with no `PR opened` note after it, and every Plan, approval and revise before it, belong to the run it ended. Taking the human label off puts the item back in the queue, and its next worker starts at orient and writes a new plan, which an auto-approve rule can still approve. `conduct shelve <item> --reason "…"` posts the same note for the operator (on the item's worker when one is in flight) through the daemon; it refuses a Done or Canceled item, an open PR (abandon it first) and a merged one (`conduct land`), posting nothing.
|
|
183
186
|
|
|
@@ -766,7 +769,7 @@ Everything lives in `~/.conductor` (`CONDUCTOR_HOME` overrides it):
|
|
|
766
769
|
| `config.json` | machine settings, JSONC (comments allowed), validated at startup; `browser` holds `executable`, `profileDirectory` and `startSeconds` (30; see Broker); `clones.fetchMinutes` (10, see Projects); `inbox.runawayTokens` (1500000, the `runaway` rule's number); `notify` and `quietHours` (see Notifications); `scheduler` holds `mode` (`on` or `off`), `slots` (4, across projects, and the most any rule can give one project), `dailyTokens` (20000000, the `daily-cap` rule's number) and `tickSeconds` (120); `sessions` holds `pollSeconds` (10), `settleSeconds` (5), `permissionMinutes` (5), `idleMinutes` (20), `compactTokens` (300000, the `compact-on-park` rule's number); `watchers` holds `ado`, `github`, `health`, `linear` and `npm`, each `{ intervalSeconds, perMinute }` (30/60, 30/30, 30/30, 30/10, 20/30), `statsMinutes` (10) and `conflictMinutes` (30); `workers` holds `tab` (false: workers run headless) and `terminal` (`auto`; see Tabs) |
|
|
767
770
|
| `rules.json` | machine rules, JSONC, reloaded on save (see Rules) |
|
|
768
771
|
| `token` | the API token, readable by this user only; every request sends `Authorization: Bearer <token>` |
|
|
769
|
-
| `conductor.pid`, `port` | the single-instance lock and where the API listens (`127.0.0.1`) |
|
|
772
|
+
| `conductor.pid`, `port` | the single-instance lock and where the API listens (`127.0.0.1`). Past its first 30 s, a start replaces the lock only when its holder is gone: dead, with nothing listening on its port, or listening without answering (5 s) with a pid file older than this boot. A daemon that answers keeps it, and so does one whose loop is held, which still listens; `conduct start` then names it. A daemon checks every second that the pid file still names it, and stops without writing (`conduct serve` exits 3) when it doesn't (ATK-868) |
|
|
770
773
|
| `conductor.db` | SQLite state, including the append-only `events` log |
|
|
771
774
|
| `logs/conductor.log` | the rotating log |
|
|
772
775
|
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// The daemon's synchronous calls that can hold its event loop (ATK-712): a git it runs to its end,
|
|
2
|
+
// a process start (spawn runs CreateProcess on the main thread, and Windows scans the image there),
|
|
3
|
+
// a store call (node:sqlite is synchronous). Each that takes MIN_MS or more is kept a while, so
|
|
4
|
+
// the loop monitor can say which of them ran in a gap it saw.
|
|
5
|
+
const MIN_MS = 50;
|
|
6
|
+
// About a gap's worth: a busy daemon makes few calls this slow.
|
|
7
|
+
const KEEP = 100;
|
|
8
|
+
const kept = [];
|
|
9
|
+
// Timed calls running now: only the outermost is kept, so a store transaction and the store calls
|
|
10
|
+
// in it count once.
|
|
11
|
+
let depth = 0;
|
|
12
|
+
// The calls that returned at or after `since` (a performance.now() time), longest first.
|
|
13
|
+
export function callsSince(since, limit = 5) {
|
|
14
|
+
return kept
|
|
15
|
+
.filter((call) => call.endedAt >= since)
|
|
16
|
+
.sort((a, b) => b.ms - a.ms)
|
|
17
|
+
.slice(0, limit)
|
|
18
|
+
.map(({ label, ms }) => ({ label, ms }));
|
|
19
|
+
}
|
|
20
|
+
// For tests: forget every call kept so far.
|
|
21
|
+
export function forgetCalls() {
|
|
22
|
+
kept.length = 0;
|
|
23
|
+
}
|
|
24
|
+
// Runs `work`, and keeps its label and time when it held the thread MIN_MS or more and no timed
|
|
25
|
+
// call encloses it.
|
|
26
|
+
export function timed(label, work) {
|
|
27
|
+
const start = performance.now();
|
|
28
|
+
depth++;
|
|
29
|
+
try {
|
|
30
|
+
return work();
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
depth--;
|
|
34
|
+
const endedAt = performance.now();
|
|
35
|
+
const ms = Math.round(endedAt - start);
|
|
36
|
+
if (depth === 0 && ms >= MIN_MS) {
|
|
37
|
+
kept.push({ endedAt, label, ms });
|
|
38
|
+
if (kept.length > KEEP)
|
|
39
|
+
kept.shift();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Each method of `target` timed under `<prefix> <method>`: one place for an object whose every
|
|
44
|
+
// call is synchronous I/O, such as the store.
|
|
45
|
+
export function timedMethods(prefix, target) {
|
|
46
|
+
for (const [name, value] of Object.entries(target)) {
|
|
47
|
+
if (typeof value !== 'function')
|
|
48
|
+
continue;
|
|
49
|
+
Reflect.set(target, name, (...args) => timed(`${prefix} ${name}`, () => Reflect.apply(value, target, args)));
|
|
50
|
+
}
|
|
51
|
+
return target;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=blocking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocking.js","sourceRoot":"","sources":["../src/blocking.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,oGAAoG;AACpG,gGAAgG;AAChG,8DAA8D;AAY9D,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,gEAAgE;AAChE,MAAM,IAAI,GAAG,GAAG,CAAC;AAEjB,MAAM,IAAI,GAAW,EAAE,CAAC;AACxB,kGAAkG;AAClG,oBAAoB;AACpB,IAAI,KAAK,GAAG,CAAC,CAAC;AAEd,yFAAyF;AACzF,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,KAAK,GAAG,CAAC;IACjD,OAAO,IAAI;SACR,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;SACvC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;SAC3B,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;SACf,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAClB,CAAC;AAED,gGAAgG;AAChG,oBAAoB;AACpB,MAAM,UAAU,KAAK,CAAI,KAAa,EAAE,IAAa;IACnD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,KAAK,EAAE,CAAC;IACR,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,KAAK,EAAE,CAAC;QACR,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;QACvC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI;gBAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QACvC,CAAC;IACH,CAAC;AACH,CAAC;AAED,+FAA+F;AAC/F,8CAA8C;AAC9C,MAAM,UAAU,YAAY,CAAmB,MAAc,EAAE,MAAS;IACtE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,IAAI,OAAO,KAAK,KAAK,UAAU;YAAE,SAAS;QAC1C,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAe,EAAW,EAAE,CACxD,KAAK,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CACrE,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/build/brief.js
CHANGED
|
@@ -7,7 +7,7 @@ import { ACTIVE_STATUSES } from "./store.js";
|
|
|
7
7
|
import { linkedPr } from "./tracker-writes.js";
|
|
8
8
|
import { linearApi, LinearRequestError } from "./watchers/linear-api.js";
|
|
9
9
|
import { linearArea } from "./watchers/linear-queue.js";
|
|
10
|
-
import { approvalAfterPlan, approversOf, isApprover } from "./watchers/linear.js";
|
|
10
|
+
import { approvalAfterPlan, approversOf, inTrash, isApprover } from "./watchers/linear.js";
|
|
11
11
|
// `conduct brief` (design note, section 13): one item's context for a worker's orient step, read
|
|
12
12
|
// by the daemon from the tracker with its own key or az login, never through an MCP. The queue's
|
|
13
13
|
// snapshot holds no description, relations or comments, so the brief reads the item itself.
|
|
@@ -263,10 +263,12 @@ export function shelvedSince(notes) {
|
|
|
263
263
|
const STATE = 'state { name type }';
|
|
264
264
|
const LINKED = `identifier title ${STATE}`;
|
|
265
265
|
const COMMENTS = 'comments(first: 100, after: $after) { pageInfo { hasNextPage endCursor } nodes { body createdAt user { id email name } } }';
|
|
266
|
+
// `archivedAt trashed`: a deleted issue is in the trash for 30 days, and Linear still answers it by
|
|
267
|
+
// its identifier, with the state it had (ATK-872).
|
|
266
268
|
export const BRIEF_QUERY = `query Brief($id: String!, $after: String) {
|
|
267
269
|
viewer { id }
|
|
268
270
|
issue(id: $id) {
|
|
269
|
-
identifier title description url ${STATE}
|
|
271
|
+
identifier title description url archivedAt trashed ${STATE}
|
|
270
272
|
project { name }
|
|
271
273
|
labels(first: 50) { nodes { name parent { name } } }
|
|
272
274
|
relations(first: 50) { nodes { type relatedIssue { ${LINKED} } } }
|
|
@@ -290,6 +292,7 @@ const commentsPage = z.object({
|
|
|
290
292
|
const briefAnswer = z.object({
|
|
291
293
|
issue: z
|
|
292
294
|
.object({
|
|
295
|
+
archivedAt: z.string().nullish(),
|
|
293
296
|
comments: commentsPage,
|
|
294
297
|
description: z.string().nullable(),
|
|
295
298
|
identifier: z.string(),
|
|
@@ -301,6 +304,7 @@ const briefAnswer = z.object({
|
|
|
301
304
|
relations: z.object({ nodes: z.array(z.object({ relatedIssue: linked.nullable(), type: z.string() })) }),
|
|
302
305
|
state,
|
|
303
306
|
title: z.string(),
|
|
307
|
+
trashed: z.boolean().nullish(),
|
|
304
308
|
url: z.string().nullable(),
|
|
305
309
|
})
|
|
306
310
|
.nullable(),
|
|
@@ -330,6 +334,9 @@ export function linearBriefs(options) {
|
|
|
330
334
|
const { issue, viewer } = briefAnswer.parse(await ask(BRIEF_QUERY, { after: null, id: item }, profile.name));
|
|
331
335
|
if (!issue)
|
|
332
336
|
throw new BriefError(`Linear has no issue ${item}`, 'missing');
|
|
337
|
+
// Deleted: missing, so the revise sweep stops reading it, as for an issue Linear doesn't have.
|
|
338
|
+
if (issue.trashed === true)
|
|
339
|
+
throw new BriefError(inTrash(item, issue.archivedAt), 'missing');
|
|
333
340
|
const comments = [...issue.comments.nodes];
|
|
334
341
|
for (let page = issue.comments.pageInfo; page.hasNextPage && page.endCursor !== null;) {
|
|
335
342
|
const more = commentsAnswer.parse(await ask(BRIEF_COMMENTS_QUERY, { after: page.endCursor, id: item }, profile.name)).issue?.comments;
|
package/build/brief.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brief.js","sourceRoot":"","sources":["../src/brief.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"brief.js","sourceRoot":"","sources":["../src/brief.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAiB,SAAS,EAAkB,MAAM,0BAA0B,CAAC;AACjG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,YAAY,EAAgB,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAc,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAyB,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAgB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEzG,iGAAiG;AACjG,iGAAiG;AACjG,4FAA4F;AAE5F,MAAM,MAAM,GAAG,MAAM,CAAC;AA4GtB,iGAAiG;AACjG,MAAM,OAAO,UAAW,SAAQ,cAAc;IACnC,MAAM,CAA2B;IAE1C,YAAY,OAAe,EAAE,MAA4B,EAAE,UAA6B,EAAE;QACxF,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,yFAAyF;AACzF,MAAM,UAAU,QAAQ,CAAC,OAAgB;IACvC,OAAO,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;AAC5D,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,UAAU,CAAC,KAAY,EAAE,EAAE,QAAQ,GAAG,KAAK,KAA6B,EAAE;IACxF,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,IAA0B,EAAY,EAAE,CACpE,IAAI,CAAC,MAAM,KAAK,CAAC;QACf,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACrG,MAAM,QAAQ,GACZ,KAAK,CAAC,IAAI,KAAK,IAAI;QACjB,CAAC,CAAC,kBAAkB;QACpB,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI;YACvB,CAAC,CAAC,0BAA0B,KAAK,CAAC,IAAI,EAAE;YACxC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;IAChF,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IACrB,MAAM,MAAM,GACV,EAAE,KAAK,IAAI;QACT,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,SAAS;YACtB,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,KAAK,EAAE;YACtC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,EAAE,CAAC,OAAO,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAChG,OAAO;QACL,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,EAAE;QAC/B,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,WAAW,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5I,UAAU,KAAK,CAAC,KAAK,EAAE;QACvB,MAAM;QACN,YAAY,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QACtF,SAAS,KAAK,CAAC,IAAI,IAAI,MAAM,EAAE;QAC/B,WAAW,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;QACvE,GAAG,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC;QACvC,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;QAChC,GAAG,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;QAClC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAC1B,CAAC,CAAC,CAAC,aAAa,CAAC;YACjB,CAAC,CAAC;gBACE,QAAQ;gBACR,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAChB,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5F;aACF,CAAC;QACN,aAAa,QAAQ,EAAE;QACvB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,qBAAqB,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,EAAE;QACF,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,kBAAkB;QAC9C,GAAG,CAAC,QAAQ;YACV,CAAC,CAAC;gBACE,EAAE;gBACF,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW;gBAC5D,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBAC/B,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,EAAE;oBAC7D,GAAG,CAAC,CAAC,IAAI;yBACN,IAAI,EAAE;yBACN,KAAK,CAAC,OAAO,CAAC;yBACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;iBAC1C,CAAC;aACH;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,8FAA8F;AAC9F,qBAAqB;AACrB,MAAM,UAAU,OAAO,CACrB,IAAY,EACZ,OAAe,EACf,IAAiB,EACjB,QAA2B,EAC3B,EAAQ,EACR,KAAqB,IAAI,EACzB,YAA+B,EAAE;IAEjC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IAC7C,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/F,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAe,EAAE;QAC9C,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC9C,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;IACH,yFAAyF;IACzF,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;IACxG,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IACxD,4FAA4F;IAC5F,MAAM,IAAI,GACR,KAAK;QACL,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,EAAE,IAAI,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;IAChH,2FAA2F;IAC3F,6BAA6B;IAC7B,MAAM,OAAO,GACX,KAAK,EAAE,IAAI,KAAK,SAAS;QACvB,CAAC,CAAC,OAAO,CAAC,MAAM,CACZ,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9C,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC;YAClB,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,IAAI;YACtC,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CACnD;QACH,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,OAAO,GAAG,OAAO;SACpB,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;SAC5E,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACnH,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5G,OAAO;QACL,GAAG,MAAM;QACT,QAAQ;QACR,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3B,EAAE,EAAE,CAAC,CAAC,SAAS;YACf,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;YACf,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC;YAC9B,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;QACH,IAAI;QACJ,KAAK;QACL,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACjE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI;QACnH,EAAE;QACF,OAAO;QACP,MAAM,EAAE,EAAE,CAAC,WAAW,EAAE;QACxB,MAAM;KACP,CAAC;AACJ,CAAC;AAED,oGAAoG;AACpG,+FAA+F;AAC/F,kGAAkG;AAClG,mGAAmG;AACnG,iGAAiG;AACjG,yFAAyF;AACzF,MAAM,UAAU,UAAU,CACxB,MAAuB,EACvB,KAA2B,EAC3B,OAA2C,EAC3C,EAAkB;IAElB,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,MAAM,CAAC;IAC/C,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IAClD,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAW,EAAE,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;IACxF,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,+GAA+G;IAC/G,MAAM,IAAI,GACR,CAAC,EAAE,EAAE,KAAK,KAAK,QAAQ,IAAI,EAAE,EAAE,KAAK,KAAK,SAAS,CAAC;QACnD,SAAS,KAAK,IAAI;QAClB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;IAC5C,IAAI,EAAE,EAAE,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC1C,IAAI,EAAE,EAAE,KAAK,KAAK,QAAQ,IAAI,CAAC,IAAI;QAAE,OAAO,WAAW,CAAC;IACxD,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;IACxC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC1G,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;IACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1F,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAClF,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,eAAe,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACzG,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACzB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EACxC,QAAQ,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CACnE,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACxB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAC1C,QAAQ,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAClE,CAAC;IACF,IAAI,SAAS,GAAG,UAAU;QAAE,OAAO,MAAM,CAAC;IAC1C,OAAO,UAAU,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC;AACpE,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,QAAQ,CAAC,KAAoC;IAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;QAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,CAAC;YAC1C,KAAK;YACL,OAAO,EAAE,IAAI;YACb,GAAG;YACH,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI;SACvB,CAAC,CAAC;QACH,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC,GAAG,GAAG,eAAe,OAAO,CAAC,IAAI,oBAAoB,CAAC,CAAC;QACxF,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3G,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;QAChG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAC3B,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EACtB,GAAG,EACH,MAAM,EACN,KAAK,EACL,KAAK,GAAG,MAAM,GAQf;IACC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAwC,CAAC;IAC9D,kFAAkF;IAClF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,+FAA+F;IAC/F,gDAAgD;IAChD,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,OAAO;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACxC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE;YAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,cAAc,CAAC,IAAI,IAAI,0CAA0C,CAAC,CAAC;YACnG,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;YAC3B,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK;gBAAE,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,KAAK;oBAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC5E,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,KAAK,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAC,KAAK,CAAC;YACpC,IAAI,OAA2C,CAAC;YAChD,IAAI,CAAC;gBACH,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,qEAAqE;gBACrE,MAAM,KAAK,YAAY,cAAc,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACpF,CAAC;YACD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,IAAiB,CAAC;YACtB,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACjD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,UAAU;oBAAE,MAAM,KAAK,CAAC;gBAC7C,MAAM,OAAO,GAAG,KAAK,YAAY,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrE,MAAM,IAAI,UAAU,CAClB,iBAAiB,GAAG,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACjF,YAAY,EACZ,OAAO,CACR,CAAC;YACJ,CAAC;YACD,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/C,4EAA4E;YAC5E,MAAM,QAAQ,GAAG,KAAK;iBACnB,WAAW,CAAC,eAAe,CAAC;iBAC5B,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC;YAC3F,MAAM,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACzD,MAAM,EAAE,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC/F,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI;gBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACrF,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,OAAO,CAAC,QAA4B,EAAE,QAA2B;IAC/E,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC;SACzB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;SACjE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,KAAK,WAAW,CAAC;SACnE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACV,OAAO,OAAO,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,YAAY,CAAC,KAAiD;IAC5E,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAC7D,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAED,MAAM,KAAK,GAAG,qBAAqB,CAAC;AACpC,MAAM,MAAM,GAAG,oBAAoB,KAAK,EAAE,CAAC;AAC3C,MAAM,QAAQ,GACZ,4HAA4H,CAAC;AAE/H,oGAAoG;AACpG,mDAAmD;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG;;;0DAG+B,KAAK;;;yDAGN,MAAM;yDACN,MAAM;MACzD,QAAQ;;EAEZ,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG;qBACf,QAAQ;EAC3B,CAAC;AAEH,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC/D,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACzF,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC,KAAK,CACZ,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;KACvG,CAAC,CACH;IACD,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;CACnF,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,KAAK,EAAE,CAAC;SACL,MAAM,CAAC;QACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;QAChC,QAAQ,EAAE,YAAY;QACtB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;QACxG,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SAClG,CAAC;QACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;QAClD,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;QACxG,KAAK;QACL,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE;QAC9B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC3B,CAAC;SACD,QAAQ,EAAE;IACb,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;CACrC,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAE5F,iGAAiG;AACjG,2FAA2F;AAC3F,MAAM,UAAU,YAAY,CAAC,OAAyB;IACpD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,KAAK,EAAE,KAAa,EAAE,SAAkC,EAAE,OAAe,EAAoB,EAAE;QACzG,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gFAAgF;YAChF,IAAI,KAAK,YAAY,kBAAkB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxG,MAAM,IAAI,UAAU,CAAC,uBAAuB,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YACjF,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YAC5B,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,IAAI,cAAc,CAAC,WAAW,OAAO,CAAC,IAAI,yBAAyB,CAAC,CAAC;YAClH,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7G,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,UAAU,CAAC,uBAAuB,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;YAC3E,+FAA+F;YAC/F,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI;gBAAE,MAAM,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC;YAC7F,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC3C,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,GAAG,CAAC;gBACtF,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAC/B,MAAM,GAAG,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CACnF,CAAC,KAAK,EAAE,QAAQ,CAAC;gBAClB,IAAI,CAAC,IAAI;oBAAE,MAAM;gBACjB,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC7B,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;YACvB,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,CAA0B,EAAa,EAAE,CAAC,CAAC;gBACvD,EAAE,EAAE,CAAC,CAAC,UAAU;gBAChB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;gBACpB,KAAK,EAAE,CAAC,CAAC,KAAK;aACf,CAAC,CAAC;YACH,iGAAiG;YACjG,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAClD,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAChE,CAAC;YACF,MAAM,MAAM,GAAG,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChH,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;YAC3C,OAAO;gBACL,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC;gBACpD,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC9E,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC5E,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC7B,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI;oBACnC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI;oBAC5B,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI;oBAChC,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,SAAS,EAAE,CAAC,CAAC,SAAS;iBACvB,CAAC,CAAC;gBACH,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;gBACpC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC7C,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC9F,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;gBAC1D,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,cAAc,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI;gBAC3C,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,MAAM,EAAE,MAAM,CAAC,EAAE;aAClB,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/build/cli.js
CHANGED
|
@@ -12,7 +12,7 @@ import { callApi, NotRunningError, ping, readEndpoint } from "./client.js";
|
|
|
12
12
|
import { branchCommand, checkoutCommand, fileCommand, landCommand, modeCommand, prAbandonCommand, prCreateCommand, prStatusCommand, prThreadsCommand, replyCommand, runsCommand, stateCommand, timelineCommand, } from "./code-host-cli.js";
|
|
13
13
|
import { configSchema, loadConfig } from "./config.js";
|
|
14
14
|
import { claimConsole, CONSOLE_WINDOW, consoleArgs, consoleEnv, consoleTab, escalationLines, escalationSchema, handledSchema, } from "./console.js";
|
|
15
|
-
import { AlreadyRunningError, logCrashes, startDaemon } from "./daemon.js";
|
|
15
|
+
import { AlreadyRunningError, logCrashes, LOST_LOCK, startDaemon } from "./daemon.js";
|
|
16
16
|
import { ConductorError } from "./errors.js";
|
|
17
17
|
import { eventsCommand } from "./events.js";
|
|
18
18
|
import { commandHelp, isCommand, isHelpFlag, listing, terminalStyle, terminalWidth, unknownCommand, usageError, } from "./help.js";
|
|
@@ -43,7 +43,7 @@ import { rulesLines, rulesService, rulesTestResultSchema, rulesViewSchema, testL
|
|
|
43
43
|
import { resolveUntil } from "./rules.js";
|
|
44
44
|
import { outputOf, run } from "./run.js";
|
|
45
45
|
import { queueLines, queueViewSchema } from "./scheduler.js";
|
|
46
|
-
import { awaitStart, serveDetached
|
|
46
|
+
import { awaitStart, serveDetached } from "./serve.js";
|
|
47
47
|
import { shelvedLines, shelvedSchema } from "./shelve.js";
|
|
48
48
|
import { localDay } from "./spend.js";
|
|
49
49
|
import { answerStopRequest, dropStaleStopRequest, pendingStopRequest, STOP_POLL_MS, stopSupervisor, } from "./stop-request.js";
|
|
@@ -1299,7 +1299,9 @@ async function serve(paths) {
|
|
|
1299
1299
|
process.once(signal, () => void daemon.stop(signal));
|
|
1300
1300
|
}
|
|
1301
1301
|
logCrashes(daemon.log);
|
|
1302
|
-
|
|
1302
|
+
// Another daemon took the lock: a supervisor ends rather than starting one that can't (ATK-868).
|
|
1303
|
+
if ((await daemon.closed) === LOST_LOCK)
|
|
1304
|
+
process.exitCode = SERVE_LOCKED_EXIT;
|
|
1303
1305
|
}
|
|
1304
1306
|
// `conduct shelve <item> --reason "…"`: the daemon posts a Shelved note on the item, which moves it
|
|
1305
1307
|
// back to not-started, unassigned and labelled human, and the next tick retires its worker with its
|
|
@@ -1375,11 +1377,17 @@ async function start(paths) {
|
|
|
1375
1377
|
out(`started the conductor ${await restartDaemon(daemonStarter(paths, realpathSync(fileURLToPath(import.meta.url))))}`);
|
|
1376
1378
|
}
|
|
1377
1379
|
catch (error) {
|
|
1380
|
+
// The serve exits on a lock a live process holds, which --fail-fast reports as a ServeStartError:
|
|
1381
|
+
// the holder is what to say then too (ATK-868). One that answers by now won a race to start (the
|
|
1382
|
+
// logon startup's, say), so a conductor runs.
|
|
1378
1383
|
const holder = readPid(paths.pid);
|
|
1379
|
-
if (
|
|
1384
|
+
if (holder === null || !processAlive(holder))
|
|
1380
1385
|
throw error;
|
|
1386
|
+
if (await ping(paths, holder))
|
|
1387
|
+
return out(`the conductor is running (pid ${holder})`);
|
|
1381
1388
|
throw new ConductorError(`process ${holder} holds the conductor's lock (${paths.pid}) but doesn't answer`, [
|
|
1382
1389
|
'if it is a hung conductor, stop it, then run conduct start again',
|
|
1390
|
+
`the start: ${error instanceof Error ? error.message : String(error)}`,
|
|
1383
1391
|
`see ${paths.log}`,
|
|
1384
1392
|
]);
|
|
1385
1393
|
}
|