wherdr 2.0.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/30nuHmZs.js +1 -0
- package/.output/public/_nuxt/30nuHmZs.js.br +0 -0
- package/.output/public/_nuxt/30nuHmZs.js.gz +0 -0
- package/.output/public/_nuxt/AgentView.CfD2RWZY.css.br +0 -0
- package/.output/public/_nuxt/AgentView.CfD2RWZY.css.gz +0 -0
- package/.output/public/_nuxt/{DOsw6KCR.js → B8pUlE1v.js} +41 -41
- package/.output/public/_nuxt/B8pUlE1v.js.br +0 -0
- package/.output/public/_nuxt/B8pUlE1v.js.gz +0 -0
- package/.output/public/_nuxt/Bd17z0YL.js.br +0 -0
- package/.output/public/_nuxt/Bd17z0YL.js.gz +0 -0
- package/.output/public/_nuxt/Bo4dpAxE.js +31 -0
- package/.output/public/_nuxt/Bo4dpAxE.js.br +0 -0
- package/.output/public/_nuxt/Bo4dpAxE.js.gz +0 -0
- package/.output/public/_nuxt/Bpoxvzh6.js.br +0 -0
- package/.output/public/_nuxt/Bpoxvzh6.js.gz +0 -0
- package/.output/public/_nuxt/C25ROUa9.js.br +0 -0
- package/.output/public/_nuxt/C25ROUa9.js.gz +0 -0
- package/.output/public/_nuxt/{DYKfeNM-.js → CBJ483HL.js} +1 -1
- package/.output/public/_nuxt/CDWjMk9C.js.br +0 -0
- package/.output/public/_nuxt/CDWjMk9C.js.gz +0 -0
- package/.output/public/_nuxt/CJF9DrFj.js +25 -0
- package/.output/public/_nuxt/CJF9DrFj.js.br +0 -0
- package/.output/public/_nuxt/CJF9DrFj.js.gz +0 -0
- package/.output/public/_nuxt/CXJnLmWv.js.br +0 -0
- package/.output/public/_nuxt/CXJnLmWv.js.gz +0 -0
- package/.output/public/_nuxt/{TS7GZUPU.js → DNAl4698.js} +5 -5
- package/.output/public/_nuxt/DNAl4698.js.br +0 -0
- package/.output/public/_nuxt/DNAl4698.js.gz +0 -0
- package/.output/public/_nuxt/{ScQ9FtVj.js → DOnGrCAZ.js} +1 -1
- package/.output/public/_nuxt/DR832Br-.js +3 -0
- package/.output/public/_nuxt/DR832Br-.js.br +0 -0
- package/.output/public/_nuxt/DR832Br-.js.gz +0 -0
- package/.output/public/_nuxt/DZGKxROq.js.br +0 -0
- package/.output/public/_nuxt/DZGKxROq.js.gz +0 -0
- package/.output/public/_nuxt/DclfLrr5.js +105 -0
- package/.output/public/_nuxt/DclfLrr5.js.br +0 -0
- package/.output/public/_nuxt/DclfLrr5.js.gz +0 -0
- package/.output/public/_nuxt/JL_QI6J1.js +1 -0
- package/.output/public/_nuxt/JL_QI6J1.js.br +0 -0
- package/.output/public/_nuxt/JL_QI6J1.js.gz +0 -0
- package/.output/public/_nuxt/{DeLLm2j1.js → XlRX1U8d.js} +15 -15
- package/.output/public/_nuxt/XlRX1U8d.js.br +0 -0
- package/.output/public/_nuxt/XlRX1U8d.js.gz +0 -0
- package/.output/public/_nuxt/Y-4S7Nuf.js +1 -0
- package/.output/public/_nuxt/Y-4S7Nuf.js.br +0 -0
- package/.output/public/_nuxt/Y-4S7Nuf.js.gz +0 -0
- package/.output/public/_nuxt/{board.DK5EU4sL.css → board.B8JX7Yhy.css} +1 -1
- package/.output/public/_nuxt/board.B8JX7Yhy.css.br +0 -0
- package/.output/public/_nuxt/board.B8JX7Yhy.css.gz +0 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/1d193254-809f-48d8-bf27-3640edb58f54.json +1 -0
- package/.output/public/_nuxt/entry.6CUQ3EoD.css +2 -0
- package/.output/public/_nuxt/entry.6CUQ3EoD.css.br +0 -0
- package/.output/public/_nuxt/entry.6CUQ3EoD.css.gz +0 -0
- package/.output/public/_nuxt/error-404.Bb87HomL.css.br +0 -0
- package/.output/public/_nuxt/error-404.Bb87HomL.css.gz +0 -0
- package/.output/public/_nuxt/error-500.Bwd7zAaE.css.br +0 -0
- package/.output/public/_nuxt/error-500.Bwd7zAaE.css.gz +0 -0
- package/.output/public/_nuxt/lBx2yXX9.js +62 -0
- package/.output/public/_nuxt/lBx2yXX9.js.br +0 -0
- package/.output/public/_nuxt/lBx2yXX9.js.gz +0 -0
- package/.output/public/_nuxt/pdf.min.t82Z80JU.mjs.br +0 -0
- package/.output/public/_nuxt/pdf.min.t82Z80JU.mjs.gz +0 -0
- package/.output/public/_nuxt/pdf.worker.min.wgc6bjNh.mjs.br +0 -0
- package/.output/public/_nuxt/pdf.worker.min.wgc6bjNh.mjs.gz +0 -0
- package/.output/public/_nuxt/settings.Cdb21nNw.css.br +0 -0
- package/.output/public/_nuxt/settings.Cdb21nNw.css.gz +0 -0
- package/.output/public/_nuxt/{BX8KVYfd.js → xSo3mAHb.js} +1 -1
- package/.output/public/_nuxt/xSo3mAHb.js.br +0 -0
- package/.output/public/_nuxt/xSo3mAHb.js.gz +0 -0
- package/.output/public/sw.js +1 -1
- package/.output/server/chunks/_/branding.mjs +1 -1
- package/.output/server/chunks/_/package.mjs +1 -1
- package/.output/server/chunks/_/selfupdate.mjs +1 -1
- package/.output/server/chunks/_/updates.mjs +1 -1
- package/.output/server/chunks/_/worktrees.mjs +1 -1
- package/.output/server/chunks/_/ws.mjs +1 -1
- package/.output/server/chunks/nitro/nitro.mjs +864 -242
- package/.output/server/chunks/raw/prerelease.mjs +1 -1
- package/.output/server/chunks/routes/api/_..._.mjs +1 -0
- package/.output/server/chunks/routes/api/agents.post.mjs +1 -0
- package/.output/server/chunks/routes/api/ask-tab.post.mjs +1 -0
- package/.output/server/chunks/routes/api/attach.post.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/disable.post.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/lock-all.post.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/lock.post.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/login/options.post.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/login/verify.post.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/max-session.post.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/register/options.post.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/register/verify.post.mjs +1 -0
- package/.output/server/chunks/routes/api/auth/status.get.mjs +1 -0
- package/.output/server/chunks/routes/api/changes.get.mjs +1 -0
- package/.output/server/chunks/routes/api/chat/image.get.mjs +1 -0
- package/.output/server/chunks/routes/api/chat.get.mjs +1 -0
- package/.output/server/chunks/routes/api/choose.post.mjs +1 -0
- package/.output/server/chunks/routes/api/claude-setup.post.mjs +1 -0
- package/.output/server/chunks/routes/api/claude-statusline.post.mjs +1 -0
- package/.output/server/chunks/routes/api/clear-queued-input.post.mjs +1 -0
- package/.output/server/chunks/routes/api/close/status.get.mjs +1 -0
- package/.output/server/chunks/routes/api/close.post.mjs +1 -0
- package/.output/server/chunks/routes/api/codex-update.post.mjs +1 -0
- package/.output/server/chunks/routes/api/commands.get.mjs +1 -0
- package/.output/server/chunks/routes/api/config.get.mjs +1 -0
- package/.output/server/chunks/routes/api/dirs.get.mjs +1 -0
- package/.output/server/chunks/routes/api/dismiss-stopped.post.mjs +1 -0
- package/.output/server/chunks/routes/api/dismiss.post.mjs +1 -0
- package/.output/server/chunks/routes/api/effort.post.mjs +1 -0
- package/.output/server/chunks/routes/api/efforts.get.mjs +1 -0
- package/.output/server/chunks/routes/api/file.post.mjs +1 -0
- package/.output/server/chunks/routes/api/files/download.get.mjs +1 -0
- package/.output/server/chunks/routes/api/files/download.head.mjs +1 -0
- package/.output/server/chunks/routes/api/files/read.get.mjs +1 -0
- package/.output/server/chunks/routes/api/files.get.mjs +1 -0
- package/.output/server/chunks/routes/api/health.get.mjs +1 -0
- package/.output/server/chunks/routes/api/input.post.mjs +1 -0
- package/.output/server/chunks/routes/api/interrupt.post.mjs +1 -0
- package/.output/server/chunks/routes/api/isgit.get.mjs +1 -0
- package/.output/server/chunks/routes/api/machine/awake.get.mjs +1 -0
- package/.output/server/chunks/routes/api/machine/awake.post.mjs +1 -0
- package/.output/server/chunks/routes/api/machine/order.get.mjs +1 -0
- package/.output/server/chunks/routes/api/machine/order.post.mjs +1 -0
- package/.output/server/chunks/routes/api/machine/reconnect.post.mjs +1 -0
- package/.output/server/chunks/routes/api/machine/rename.post.mjs +1 -0
- package/.output/server/chunks/routes/api/machine/status.post.mjs +1 -0
- package/.output/server/chunks/routes/api/menu-left.post.mjs +1 -0
- package/.output/server/chunks/routes/api/menu.post.mjs +1 -0
- package/.output/server/chunks/routes/api/model.post.mjs +1 -0
- package/.output/server/chunks/routes/api/models.get.mjs +1 -0
- package/.output/server/chunks/routes/api/nav.post.mjs +1 -0
- package/.output/server/chunks/routes/api/onboarding.get.mjs +1 -0
- package/.output/server/chunks/routes/api/onboarding.post.mjs +1 -0
- package/.output/server/chunks/routes/api/phone.get.mjs +1 -0
- package/.output/server/chunks/routes/api/phone.post.mjs +1 -0
- package/.output/server/chunks/routes/api/plugins/actions.get.mjs +1 -0
- package/.output/server/chunks/routes/api/plugins/invoke.post.mjs +1 -0
- package/.output/server/chunks/routes/api/plugins/projects.get.mjs +1 -0
- package/.output/server/chunks/routes/api/plugins/projects.post.mjs +1 -0
- package/.output/server/chunks/routes/api/prompt.post.mjs +1 -0
- package/.output/server/chunks/routes/api/push/quiet.post.mjs +1 -0
- package/.output/server/chunks/routes/api/push/subscribe.post.mjs +1 -0
- package/.output/server/chunks/routes/api/push/test.post.mjs +1 -0
- package/.output/server/chunks/routes/api/push/unsubscribe.post.mjs +1 -0
- package/.output/server/chunks/routes/api/quotas.get.mjs +1 -0
- package/.output/server/chunks/routes/api/rename.post.mjs +1 -0
- package/.output/server/chunks/routes/api/requeue.post.mjs +1 -0
- package/.output/server/chunks/routes/api/restart.get.mjs +1 -0
- package/.output/server/chunks/routes/api/restart.post.mjs +1 -0
- package/.output/server/chunks/routes/api/reveal.post.mjs +1 -0
- package/.output/server/chunks/routes/api/screen-key.post.mjs +1 -0
- package/.output/server/chunks/routes/api/screen.get.mjs +1 -0
- package/.output/server/chunks/routes/api/search.get.mjs +1 -0
- package/.output/server/chunks/routes/api/seen.post.mjs +1 -0
- package/.output/server/chunks/routes/api/sessions.get.mjs +1 -0
- package/.output/server/chunks/routes/api/sessions.post.mjs +1 -0
- package/.output/server/chunks/routes/api/settings-tab.post.mjs +1 -0
- package/.output/server/chunks/routes/api/settings.get.mjs +1 -0
- package/.output/server/chunks/routes/api/settings.post.mjs +1 -0
- package/.output/server/chunks/routes/api/space.post.mjs +1 -0
- package/.output/server/chunks/routes/api/state.get.mjs +1 -0
- package/.output/server/chunks/routes/api/tasks/action.post.mjs +1 -0
- package/.output/server/chunks/routes/api/tasks/add.post.mjs +1 -0
- package/.output/server/chunks/routes/api/tasks/after.post.mjs +1 -0
- package/.output/server/chunks/routes/api/tasks/approve.post.mjs +1 -0
- package/.output/server/chunks/routes/api/tasks/archive-done.post.mjs +40 -0
- package/.output/server/chunks/routes/api/tasks/archived.get.mjs +2 -1
- package/.output/server/chunks/routes/api/tasks/autopilot.get.mjs +2 -1
- package/.output/server/chunks/routes/api/tasks/autopilot.post.mjs +2 -1
- package/.output/server/chunks/routes/api/tasks/board-settings.get.mjs +2 -1
- package/.output/server/chunks/routes/api/tasks/board-settings.post.mjs +2 -1
- package/.output/server/chunks/routes/api/tasks/coordinator.get.mjs +2 -1
- package/.output/server/chunks/routes/api/tasks/coordinator.post.mjs +2 -1
- package/.output/server/chunks/routes/api/tasks/describe.post.mjs +40 -0
- package/.output/server/chunks/routes/api/tasks/details.get.mjs +2 -1
- package/.output/server/chunks/routes/api/tasks/limit.post.mjs +2 -1
- package/.output/server/chunks/routes/api/tasks/links.get.mjs +2 -1
- package/.output/server/chunks/routes/api/tasks/models.get.mjs +2 -1
- package/.output/server/chunks/routes/api/tasks/pick.post.mjs +2 -1
- package/.output/server/chunks/routes/api/tasks/project.get.mjs +41 -0
- package/.output/server/chunks/routes/api/tasks/project.post.mjs +40 -0
- package/.output/server/chunks/routes/api/tasks/question.post.mjs +2 -1
- package/.output/server/chunks/routes/api/tasks/scheduled.get.mjs +2 -1
- package/.output/server/chunks/routes/api/tasks/settings.get.mjs +2 -1
- package/.output/server/chunks/routes/api/tasks/start.get.mjs +2 -1
- package/.output/server/chunks/routes/api/tasks/tell.post.mjs +2 -1
- package/.output/server/chunks/routes/api/tasks.get.mjs +1 -0
- package/.output/server/chunks/routes/api/unqueue.post.mjs +2 -1
- package/.output/server/chunks/routes/api/update/status.get.mjs +1 -0
- package/.output/server/chunks/routes/api/update.get.mjs +1 -0
- package/.output/server/chunks/routes/api/update.post.mjs +1 -0
- package/.output/server/chunks/routes/api/upload.post.mjs +1 -0
- package/.output/server/chunks/routes/api/worktrees/remove.post.mjs +1 -0
- package/.output/server/chunks/routes/api/worktrees.get.mjs +1 -0
- package/.output/server/chunks/routes/favicon.ico.get.mjs +1 -0
- package/.output/server/chunks/routes/icons/_name_.get.mjs +2 -1
- package/.output/server/chunks/routes/renderer.mjs +3 -2
- package/.output/server/chunks/routes/uploads/_...name_.get.mjs +2 -1
- package/.output/server/chunks/routes/ws/_..._.mjs +2 -1
- package/.output/server/chunks/routes/ws/events.mjs +2 -1
- package/.output/server/chunks/routes/ws/term.mjs +2 -1
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/index.mjs +2 -1
- package/.output/server/package.json +1 -1
- package/docs/README.md +2 -0
- package/docs/RELEASING.md +58 -46
- package/docs/board.md +7 -0
- package/docs/development.md +1 -1
- package/docs/release-notes-2.1.0.md +21 -0
- package/package.json +1 -1
- package/.output/public/_nuxt/072bjdot.js +0 -2
- package/.output/public/_nuxt/8FAMamJX.js +0 -1
- package/.output/public/_nuxt/C2aT0CgA.js +0 -62
- package/.output/public/_nuxt/CanLPS0U.js +0 -105
- package/.output/public/_nuxt/DGXKTg7D.js +0 -31
- package/.output/public/_nuxt/DTiR5P9E.js +0 -25
- package/.output/public/_nuxt/DZ7VvF3e.js +0 -1
- package/.output/public/_nuxt/DumNBIyF.js +0 -1
- package/.output/public/_nuxt/builds/meta/b6ed1ddd-d6d6-4137-beab-2548b20dd998.json +0 -1
- package/.output/public/_nuxt/entry.BhiYrGAW.css +0 -2
package/docs/RELEASING.md
CHANGED
|
@@ -4,7 +4,11 @@ Publishing a version requires the user's explicit approval. Never republish a pa
|
|
|
4
4
|
for npm review. No new secret is needed: GitHub uses `GITHUB_TOKEN`, npm uses OIDC Trusted
|
|
5
5
|
Publishing (`npm.yml`), and the tap uses the existing optional `HOMEBREW_TAP_TOKEN`.
|
|
6
6
|
|
|
7
|
-
1.
|
|
7
|
+
1. Prepare the version and notes in a PR targeting `develop`, the integration branch.
|
|
8
|
+
`main` only receives reviewed releases; `v2` is no longer an integration branch.
|
|
9
|
+
Require `checks` and `e2e` to be green on the exact preparation head, with the current
|
|
10
|
+
`develop` merged in. After explicit approval, open a release PR from `develop` to `main`
|
|
11
|
+
and require those checks again on its exact head before merging. The site workflow
|
|
8
12
|
deploys relevant changes on pushes to `main`, independently of tags and npm.
|
|
9
13
|
2. Set the same version in `package.json`, `package-lock.json` and `herdr-plugin.toml`.
|
|
10
14
|
Move the Unreleased changelog into a dated version entry. Run tests, typecheck and leak
|
|
@@ -104,11 +108,13 @@ are released after the browser saves the file, keeping repeated downloads reliab
|
|
|
104
108
|
[Full changelog](https://github.com/example/wherdr/blob/vX.Y.Z/CHANGELOG.md)
|
|
105
109
|
```
|
|
106
110
|
|
|
107
|
-
## Rolling
|
|
111
|
+
## Rolling develop prerelease
|
|
108
112
|
|
|
109
|
-
`
|
|
110
|
-
can install
|
|
111
|
-
It publishes the
|
|
113
|
+
`develop-prerelease.yml` rebuilds one prerelease on every push to the `develop` branch (the
|
|
114
|
+
integration branch; `main` only receives releases), so a machine can install develop from a prebuilt package (the plugin's GitHub download) and never compile it.
|
|
115
|
+
It always publishes the fixed tag **`develop`**, including stable package versions.
|
|
116
|
+
The package version stays unchanged; `COMMIT` identifies the build. Existing
|
|
117
|
+
`vX.Y.Z-dev` prereleases are left alone.
|
|
112
118
|
|
|
113
119
|
- the tag moves to the pushed commit; the release is a prerelease, never `latest`. The update
|
|
114
120
|
checks of every version, the legacy channel and `release-ready.yml` only read stable
|
|
@@ -122,53 +128,59 @@ It publishes the version of `herdr-plugin.toml` (for example `2.0.0-dev`, before
|
|
|
122
128
|
before the archive is replaced and attached last: when `COMMIT` is there and names the
|
|
123
129
|
branch head, the archive is that commit's.
|
|
124
130
|
|
|
125
|
-
|
|
131
|
+
The Pi reads `releases/tags/develop`, never `releases/latest`. Download `COMMIT`,
|
|
132
|
+
the single `wherdr-<version>.tgz` asset and `wherdr-<version>.tgz.sha256`.
|
|
133
|
+
For 2.1.0 these are `wherdr-2.1.0.tgz` and `wherdr-2.1.0.tgz.sha256`.
|
|
134
|
+
Verify the checksum and install the archive through the existing prebuilt-package
|
|
135
|
+
installation path. Read `COMMIT` again after downloading and retry if it changed
|
|
136
|
+
or is absent: publication can overlap a download. Previous version assets are removed.
|
|
126
137
|
|
|
127
|
-
The
|
|
128
|
-
|
|
129
|
-
|
|
138
|
+
The workflow sets `PRERELEASE_TAG=develop` for `scripts/prerelease.sh`. Its notes
|
|
139
|
+
identify the branch and commit even when release preparation has emptied Unreleased.
|
|
140
|
+
Without that setting, the script keeps the historical `vX.Y.Z-suffix` mode and its
|
|
141
|
+
Unreleased summary requirement. Both modes refuse to edit a release unless it is
|
|
142
|
+
a published prerelease. The fixed tag does not match stable version tags; its
|
|
143
|
+
`GITHUB_TOKEN` update also starts neither `release.yml` nor `npm.yml`. Stable
|
|
144
|
+
publishing, update checks and readiness workflows remain unchanged.
|
|
130
145
|
|
|
131
|
-
|
|
132
|
-
prerelease suffix (`X.Y.Z-something`) and a release of that tag that is not a published
|
|
133
|
-
prerelease: stable versions keep going through the steps above. The tag is moved with
|
|
134
|
-
`GITHUB_TOKEN`, which starts neither `release.yml` nor `npm.yml`. The workflow runs from the
|
|
135
|
-
`v2` branch: it acts once this file is on `v2`.
|
|
146
|
+
## Publishing the prepared 2.1.0 release
|
|
136
147
|
|
|
137
|
-
|
|
148
|
+
The preparation PR targets `develop`. Version 2.1.0 includes new task description editing,
|
|
149
|
+
bulk archiving and task limit controls as well as fixes, so it uses a minor increment from
|
|
150
|
+
2.0.1 rather than the initially proposed 2.0.2 patch. It introduces no intended breaking
|
|
151
|
+
change and needs no migration from 2.0.1.
|
|
138
152
|
|
|
139
|
-
|
|
140
|
-
|
|
153
|
+
After explicit approval, merge the reviewed preparation PR into `develop`, then review a
|
|
154
|
+
`develop` → `main` release PR. Require `checks` and `e2e` on the exact release head;
|
|
155
|
+
run the full CI workflow manually on that head before publication (release tags also run
|
|
156
|
+
full CI, but the publishing workflows do not wait for it). Do not tag or create even a
|
|
157
|
+
GitHub draft until these checks and the publication approval are complete.
|
|
158
|
+
|
|
159
|
+
In a clean checkout of the approved `main` commit, using Node.js 22:
|
|
160
|
+
|
|
161
|
+
```sh
|
|
162
|
+
git fetch origin
|
|
163
|
+
git merge --ff-only origin/main
|
|
164
|
+
test "$(git rev-parse HEAD)" = "$(git rev-parse origin/main)"
|
|
165
|
+
test "$(node -p "require('./package.json').version")" = 2.1.0
|
|
166
|
+
GITHUB_REPOSITORY="$(gh repo view --json nameWithOwner -q .nameWithOwner)" GITHUB_REF_NAME=v2.1.0 node scripts/check-release-notes.mjs < docs/release-notes-2.1.0.md
|
|
167
|
+
git tag v2.1.0
|
|
168
|
+
# Prepare the reviewed draft before the tag push starts publication.
|
|
169
|
+
gh release create v2.1.0 --target "$(git rev-parse HEAD)" --draft --title "wherdr 2.1.0" --notes-file docs/release-notes-2.1.0.md
|
|
170
|
+
git push origin v2.1.0
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Verify that `release.yml`, `npm.yml` and full tag CI actually started on the approved SHA.
|
|
174
|
+
If the existing tag push does not trigger them, stop and resolve the workflow trigger;
|
|
175
|
+
never move the tag or publish a different build. `release.yml` has no manual trigger.
|
|
176
|
+
Wait for packaging and publication to succeed, then perform the mandatory manual tap update
|
|
177
|
+
when the optional tap secret is absent:
|
|
141
178
|
|
|
142
179
|
```sh
|
|
143
|
-
|
|
144
|
-
git pull --ff-only
|
|
145
|
-
git switch -c release/2.0.0
|
|
146
|
-
npm version 2.0.0 --no-git-tag-version
|
|
147
|
-
sed -i.bak 's/^version = ".*"/version = "2.0.0"/' herdr-plugin.toml
|
|
148
|
-
rm herdr-plugin.toml.bak
|
|
149
|
-
# Move Unreleased notes to the dated 2.0.0 entry, run the project checks, then commit.
|
|
150
|
-
git add package.json package-lock.json herdr-plugin.toml CHANGELOG.md
|
|
151
|
-
git commit -m "Prepare release 2.0.0"
|
|
152
|
-
git push -u origin release/2.0.0
|
|
153
|
-
gh pr create --base main --head release/2.0.0 --title "Prepare release 2.0.0" --body "Prepare the reviewed 2.0.0 release versions and changelog."
|
|
154
|
-
# Open, review and merge the version PR; refresh main before continuing.
|
|
155
|
-
git switch main
|
|
156
|
-
git pull --ff-only
|
|
157
|
-
# Use the reviewed notes committed with the version preparation.
|
|
158
|
-
GITHUB_REPOSITORY="$(gh repo view --json nameWithOwner -q .nameWithOwner)" GITHUB_REF_NAME=v2.0.0 node scripts/check-release-notes.mjs < docs/release-notes-2.0.0.md
|
|
159
|
-
gh release create v2.0.0 --target "$(git rev-parse HEAD)" --draft --title "wherdr 2.0.0" --notes-file docs/release-notes-2.0.0.md
|
|
160
|
-
git tag v2.0.0
|
|
161
|
-
git push origin v2.0.0
|
|
162
|
-
release_run=$(gh run list --workflow release.yml --commit "$(git rev-parse HEAD)" --json databaseId --jq '.[0].databaseId')
|
|
163
|
-
# If no run appears yet, wait for GitHub to register the tag and repeat the lookup.
|
|
164
|
-
gh run watch "$release_run" --exit-status
|
|
165
|
-
gh run list --workflow npm.yml --limit 3
|
|
166
|
-
# MANDATORY while the tap secret is absent. Run only after release.yml succeeds:
|
|
167
|
-
sh scripts/bump-homebrew.sh 2.0.0 "$(gh repo view --json owner -q .owner.login)"
|
|
168
|
-
# Inspect the readiness workflow; optionally request an immediate check:
|
|
180
|
+
sh scripts/bump-homebrew.sh 2.1.0 "$(gh repo view --json owner -q .owner.login)"
|
|
169
181
|
gh workflow run release-ready.yml --ref main
|
|
170
182
|
```
|
|
171
183
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
184
|
+
Do not manually publish the draft or mark it latest. npm publishes the attached archive
|
|
185
|
+
with provenance; npm moderation can delay availability. Readiness advances the legacy
|
|
186
|
+
channel only when npm and Homebrew are both ready. Never retry a successful npm publish.
|
package/docs/board.md
CHANGED
|
@@ -101,6 +101,13 @@ What the Board shows and does:
|
|
|
101
101
|
not started yet takes a first message (`coordinator tell`), which starts it. One that
|
|
102
102
|
herdr-projects could not start (an agent not installed there…) says why, with **Try again**
|
|
103
103
|
(`coordinator restart`) once it is fixed: the message still waiting then goes in.
|
|
104
|
+
- **New → Coordinator** opens a project coordinator from any Git folder of the chosen machine:
|
|
105
|
+
a repo the board knows, or **Other repository…** and a folder. The sheet says whether that
|
|
106
|
+
folder is **On the board** (its project name), a **New project** (the name it will get), or
|
|
107
|
+
missing or not Git. **Add and open conversation** adds a new one to that machine's board first:
|
|
108
|
+
herdr-projects has no command for that alone, so wherdr adds an automation for that folder
|
|
109
|
+
(`automations add --repo <folder> --when merged`) and removes it at once. No task is made, so
|
|
110
|
+
no "added" automation fires. The coordinator is then named by the repo's name.
|
|
104
111
|
- **Autopilot** (herdr-projects 1.2.15 or later): each coordinator has a switch, under the Board's
|
|
105
112
|
bar for the main Coordinator, in each machine and repo heading, and at the top of its panel. It
|
|
106
113
|
shows whether the board wakes that coordinator to work toward its goal, and when next. Turning it
|
package/docs/development.md
CHANGED
|
@@ -32,7 +32,7 @@ and logs a warning.
|
|
|
32
32
|
## Contributing
|
|
33
33
|
|
|
34
34
|
See [CONTRIBUTING.md](../CONTRIBUTING.md), including the [agent test rule](../CONTRIBUTING.md#agent-test-rule)
|
|
35
|
-
and `npm run test:affected -- --base origin/
|
|
35
|
+
and `npm run test:affected -- --base origin/develop --dry-run`. Changes are listed in [CHANGELOG.md](../CHANGELOG.md).
|
|
36
36
|
|
|
37
37
|
Every commit is public: a leak check (gitleaks plus your own forbidden patterns) covers the files
|
|
38
38
|
and the commits about to be pushed; see [Leak check](../CONTRIBUTING.md#leak-check).
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
## New
|
|
2
|
+
|
|
3
|
+
Edit a task's description directly in its panel. Archive all completed tasks in a repository together after confirming the action.
|
|
4
|
+
|
|
5
|
+
The Task tab now shows time and token limit gauges. At a limit stop, raise the limit with a preset or enter your own value before resuming.
|
|
6
|
+
|
|
7
|
+
## Improved
|
|
8
|
+
|
|
9
|
+
Tasks open immediately from the sidebar, with the selected task highlighted on the Board. Cached Boards and conversations appear while fresh data loads, and narrow screens keep panels and controls within reach.
|
|
10
|
+
|
|
11
|
+
Working tasks distinguish an active agent, a task waiting for CI and a task queued behind other work. Automatic Autopilot wakes appear as distinct conversation notes.
|
|
12
|
+
|
|
13
|
+
## Fixed
|
|
14
|
+
|
|
15
|
+
Creating a project coordinator from a Git folder registers the repository before opening its conversation, including on remote machines. Unreachable Board machines show the reason in their headings, and long queued-task badges fit on mobile screens.
|
|
16
|
+
|
|
17
|
+
## Update
|
|
18
|
+
|
|
19
|
+
This release adds features to 2.0.1 and therefore uses version 2.1.0 rather than 2.0.2. No migration is required from 2.0.1; existing tasks and settings are kept. Node.js 22 or newer and Herdr 0.9.1 or newer are still required. Users upgrading from 1.x should follow the [2.0 migration guide](https://github.com/afloury/wherdr/blob/v2.1.0/docs/herdr-projects-1x.md).
|
|
20
|
+
|
|
21
|
+
[Full changelog](https://github.com/afloury/wherdr/blob/v2.1.0/CHANGELOG.md)
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{A as e,B as t,Et as n,Fn as r,Ft as i,Hn as a,M as o,Mn as s,N as c,Ot as l,P as u,Pt as d,Rt as f,St as p,U as m,V as h,Yt as g,b as _,fr as v,gr as y,hr as b,ht as x,j as S,ln as C,nn as w,pt as T,sn as E,vt as D,wn as O}from"./C25ROUa9.js";import{_t as k,dt as A,gt as j,vt as ee}from"./CDWjMk9C.js";import{Ar as M,Cr as N,Sr as te,br as P,h as ne,jr as F,nn as I,o as L,pn as R,u as re}from"./DeLLm2j1.js";import{f as z,p as ie,u as B}from"./CXJnLmWv.js";import{C as ae,D as V,F as oe,I as se,a as ce,g as le,n as ue,o as de}from"./TS7GZUPU.js";import{B as fe,Br as pe,Dt as me,G as he,Hr as ge,J as H,M as _e,O as ve,Qr as ye,S as be,Ti as xe,V as Se,X as U,a as Ce,bn as we,ei as W,i as G,k as Te,r as Ee,t as De,ti as K,u as Oe,xt as ke,y as q,yn as Ae,z as je,zr as Me}from"./CanLPS0U.js";import{A as Ne,C as Pe,D as Fe,E as Ie,F as Le,I as Re,L as ze,M as Be,N as Ve,O as He,P as Ue,S as We,T as Ge,_ as Ke,b as qe,g as Je,h as Ye,j as Xe,k as Ze,m as Qe,p as $e,v as et,w as tt,x as nt,y as rt}from"./C2aT0CgA.js";import{n as it,t as at}from"./DOsw6KCR.js";import{t as J}from"./BDNMzG2s.js";import{A as ot,B as Y,C as st,E as ct,F as lt,G as ut,I as dt,L as ft,M as pt,N as mt,P as ht,R as gt,_ as _t,d as vt,g as yt,h as bt,j as X,m as xt,t as Z,u as St}from"#entry";import{t as Ct}from"./BX8KVYfd.js";var wt=[`aria-label`],Tt=Object.assign(m({__name:`CoordinatorHint`,props:{text:{}},setup(e){let t=s(!1),n=!1,r=V({onPress:()=>{n=!0,t.value=!0}});function c(e){n=!1,r.down(e)}function u(){n&&r.suppressClick(),r.cancel()}function d(e){r.swallowClick()&&(e.preventDefault(),e.stopPropagation())}return D(r.cancel),(n,s)=>{let f=L;return l(),o(f,{open:a(t),"onUpdate:open":s[4]||=e=>O(t)?t.value=e:null,text:e.text,content:{side:`bottom`},ui:{content:`coordinator-tooltip`}},{default:E(()=>[S(`span`,{class:`coordinator-hint`,tabindex:`0`,"aria-label":e.text,onPointerdown:c,onPointermove:s[0]||=(...e)=>a(r).move&&a(r).move(...e),onPointerup:u,onPointercancel:s[1]||=(...e)=>a(r).cancel&&a(r).cancel(...e),onPointerleave:s[2]||=(...e)=>a(r).cancel&&a(r).cancel(...e),onClickCapture:d,onContextmenu:s[3]||=ee(()=>{},[`prevent`])},[i(n.$slots,`default`)],40,wt)]),_:3},8,[`open`,`text`])}}}),{__name:`CoordinatorHint`});function Et(e){return e.kind===`project`?`project:${e.repo}`:e.kind}var Dt=2e4,Ot=new Map;function kt(){let e=Z(`autopilot`,()=>({})),t=Z(`autopilot-actions`,()=>0);function n(t,n=!1){let r=e.value[t];if(!n&&r&&Date.now()-r.at<Dt)return Promise.resolve();let i=Ot.get(t);if(i&&!n)return i;let a=G(`/api/tasks/autopilot?${new URLSearchParams({machine:t})}`).then(n=>{e.value[t]={statuses:n,at:Date.now()}}).catch(n=>{e.value[t]={error:n.message,code:n instanceof De?n.code:void 0,at:Date.now()}}).finally(()=>{Ot.get(t)===a&&Ot.delete(t)});return Ot.set(t,a),a}function r(n,r,i,a=!1){a&&t.value++;let o=e.value[n];e.value[n]={statuses:{...o?.statuses,[r]:i},at:o?.statuses?o.at:0}}return{machines:e,actions:t,load:n,put:r}}var At=[`aria-checked`,`aria-label`,`aria-description`,`title`,`disabled`],jt={key:0,class:`autopilot-state`},Mt={key:1,class:`autopilot-next`},Nt={class:`autopilot-now`},Q={class:`field-label`},Pt={key:0},Ft={key:0,class:`autopilot-could-not`},It={class:`field-label`},$={class:`autopilot-goal`},Lt={class:`autopilot-ask`},Rt=[`for`],zt={class:`autopilot-limits`},Bt=[`for`],Vt={class:`muted`},Ht=[`for`],Ut={class:`muted`},Wt=[`for`],Gt={class:`muted`},Kt={class:`autopilot-note`},qt={key:3,class:`form-error`,role:`alert`},Jt={class:`sheet-form autopilot-actions`},Yt=Object.assign(J(m({__name:`CoordinatorAutopilot`,props:{machine:{},to:{},disabled:{type:Boolean},compact:{type:Boolean}},setup(n){let r=n,{machines:i,load:d,put:f}=kt(),m=e(()=>Et(r.to)),g=e(()=>i.value[r.machine]),b=e(()=>{let e=g.value?.statuses;return e?e[m.value]??{on:!1,goal:``,next:``,state:``,couldNot:``}:void 0}),x=e(()=>g.value?.code===`projects_too_old`),C=s(!1),T=s(!1),k=s(!1),A=s(``),j=s(``),M=s(``),N=s(``),P=s(``),ne=s({every:``,tasksPerDay:``,tasksAtOnce:``}),F=e(()=>{let e=b.value?.next||``;return e.startsWith(`next in `)?K(`Next wake in ${e.slice(8)}`,`Prochain réveil dans ${e.slice(8)}`):e===`waits for its hours`?K(`Waiting for its active hours`,`En attente de ses heures actives`):e}),I=e(()=>b.value?b.value.on?K(`On`,`Actif`):K(`Off`,`Arrêté`):`…`),L=e(()=>`Autopilot · ${te(r.to,``)}`),R=e(()=>[L.value,I.value,F.value].filter(Boolean).join(` · `)),z=(e=!1)=>r.disabled?Promise.resolve():d(r.machine,e);async function ie(){C.value=!0,A.value=``,M.value=N.value=P.value=``,j.value=b.value?.goal||``,k.value=!0;try{let e=await G(`/api/tasks/autopilot?${B()}`);V(e),j.value=e.goal}catch(e){A.value=e.message,await z(!0)}finally{k.value=!1}}function B(){return new URLSearchParams({machine:r.machine,kind:r.to.kind,...r.to.kind===`project`?{repo:r.to.repo}:{}})}function V(e,t=!1){let{defaults:n,...i}=e;ne.value=n,f(r.machine,m.value,i,t)}let oe=e(()=>!T.value&&!k.value&&!!b.value&&(b.value.on||!!j.value.trim()));async function ce(){if(!oe.value)return;let e=!b.value.on;T.value=!0,A.value=``;try{V(await G(`/api/tasks/autopilot`,{machine:r.machine,to:r.to,action:e?`on`:`off`,...e?{goal:j.value,every:M.value,tasksPerDay:N.value,tasksAtOnce:P.value}:{}}),!0),C.value=!1}catch(e){A.value=e.message,await z(!0)}finally{T.value=!1}}w(()=>[r.machine,r.disabled],()=>{z()});let ue;return p(()=>{z(),ue=xe(()=>{!T.value&&!C.value&&document.visibilityState===`visible`&&z()},6e4)}),D(()=>clearInterval(ue)),(e,r)=>{let i=le,s=se,d=re,f=ae;return n.compact&&a(x)?c(``,!0):(l(),u(`span`,{key:0,class:v([`autopilot`,{compact:n.compact}])},[S(`button`,{type:`button`,role:`switch`,class:v([`autopilot-switch`,{on:a(b)?.on}]),"aria-checked":a(b)?.on?`true`:`false`,"aria-label":a(L),"aria-description":a(R),title:a(R),disabled:n.disabled||a(T),onClick:ie},[r[5]||=S(`i`,{class:`autopilot-dot`,"aria-hidden":`true`},null,-1),r[6]||=S(`span`,{class:`autopilot-name`},`Autopilot`,-1),!n.compact||a(b)?.on?(l(),u(`span`,jt,y(a(I)),1)):c(``,!0),!n.compact&&a(b)?.on&&a(F)?(l(),u(`span`,Mt,y(a(F)),1)):c(``,!0)],10,At),h(f,{open:a(C),"onUpdate:open":r[4]||=e=>O(C)?C.value=e:null,title:a(L),top:``},{footer:E(()=>[S(`div`,Jt,[a(b)?(l(),o(d,{key:0,block:``,size:`xl`,class:`sheet-btn`,color:a(b).on?`error`:`primary`,variant:a(b).on?`outline`:`solid`,icon:a(b).on?`i-lucide-square`:`i-lucide-play`,loading:a(T),disabled:!a(oe),onClick:ce},{default:E(()=>[t(y(a(b).on?(`tl`in e?e.tl:a(K))(`Stop Autopilot`,`Arrêter Autopilot`):(`tl`in e?e.tl:a(K))(`Turn on Autopilot`,`Activer Autopilot`)),1)]),_:1},8,[`color`,`variant`,`icon`,`loading`,`disabled`])):(l(),o(d,{key:1,block:``,size:`xl`,color:`neutral`,variant:`outline`,class:`sheet-btn`,icon:`i-lucide-refresh-cw`,loading:a(k),onClick:ie},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Retry`,`Réessayer`)),1)]),_:1},8,[`loading`]))])]),default:E(()=>[S(`form`,{class:`sheet-form autopilot-form`,onSubmit:ee(ce,[`prevent`])},[S(`p`,Nt,[S(`span`,Q,y((`tl`in e?e.tl:a(K))(`State`,`État`)),1),S(`b`,{class:v({on:a(b)?.on})},y(a(k)&&!a(b)?`…`:a(I)),3),a(b)?.on&&a(F)?(l(),u(`span`,Pt,` · `+y(a(F)),1)):c(``,!0)]),a(b)?.couldNot?(l(),u(`p`,Ft,y(a(b).couldNot),1)):c(``,!0),a(b)?.on?(l(),u(_,{key:1},[a(b).goal?(l(),u(_,{key:0},[S(`span`,It,y((`tl`in e?e.tl:a(K))(`Goal`,`Objectif`)),1),S(`p`,$,y(a(b).goal),1)],64)):c(``,!0),S(`p`,Lt,y((`tl`in e?e.tl:a(K))(`Stop Autopilot? The coordinator stays, it just is no longer woken up.`,`Arrêter Autopilot ? Le coordinateur reste là, il n’est simplement plus réveillé.`)),1)],64)):a(b)?(l(),u(_,{key:2},[S(`label`,{class:`field-label`,for:`ap-goal-${a(m)}`},y((`tl`in e?e.tl:a(K))(`Goal`,`Objectif`)),9,Rt),h(i,{id:`ap-goal-${a(m)}`,modelValue:a(j),"onUpdate:modelValue":r[0]||=e=>O(j)?j.value=e:null,rows:3,autoresize:``,maxrows:8,size:`xl`,class:`w-full`,maxlength:16e3,disabled:a(T)||a(k),placeholder:(`tl`in e?e.tl:a(K))(`What it works toward, e.g. Ship 2.1: the small fixes first`,`Ce vers quoi il travaille, ex. Sortir la 2.1 : les petites corrections d’abord`)},null,8,[`id`,`modelValue`,`disabled`,`placeholder`]),S(`div`,zt,[S(`div`,null,[S(`label`,{class:`field-label`,for:`ap-every-${a(m)}`},[t(y((`tl`in e?e.tl:a(K))(`Every`,`Fréquence`))+` `,1),S(`span`,Vt,y((`t`in e?e.t:a(W))(`(optional)`)),1)],8,Bt),h(s,{id:`ap-every-${a(m)}`,modelValue:a(M),"onUpdate:modelValue":r[1]||=e=>O(M)?M.value=e:null,size:`xl`,class:`w-full mono`,placeholder:a(ne).every||`2h`,maxlength:`20`,autocapitalize:`none`,autocorrect:`off`,spellcheck:!1,disabled:a(T)},null,8,[`id`,`modelValue`,`placeholder`,`disabled`])]),S(`div`,null,[S(`label`,{class:`field-label`,for:`ap-day-${a(m)}`},[t(y((`tl`in e?e.tl:a(K))(`Tasks / day`,`Tâches / jour`))+` `,1),S(`span`,Ut,y((`t`in e?e.t:a(W))(`(optional)`)),1)],8,Ht),h(s,{id:`ap-day-${a(m)}`,modelValue:a(N),"onUpdate:modelValue":r[2]||=e=>O(N)?N.value=e:null,size:`xl`,class:`w-full mono`,placeholder:a(ne).tasksPerDay,inputmode:`numeric`,maxlength:`6`,disabled:a(T)},null,8,[`id`,`modelValue`,`placeholder`,`disabled`])]),S(`div`,null,[S(`label`,{class:`field-label`,for:`ap-once-${a(m)}`},[t(y((`tl`in e?e.tl:a(K))(`At once`,`En parallèle`))+` `,1),S(`span`,Gt,y((`t`in e?e.t:a(W))(`(optional)`)),1)],8,Wt),h(s,{id:`ap-once-${a(m)}`,modelValue:a(P),"onUpdate:modelValue":r[3]||=e=>O(P)?P.value=e:null,size:`xl`,class:`w-full mono`,placeholder:a(ne).tasksAtOnce,inputmode:`numeric`,maxlength:`6`,disabled:a(T)},null,8,[`id`,`modelValue`,`placeholder`,`disabled`])])]),S(`p`,Kt,y((`tl`in e?e.tl:a(K))(`Empty values keep the coordinator’s settings. Values given here are for this time only.`,`Les valeurs vides gardent les réglages du coordinateur. Celles données ici valent pour cette fois seulement.`)),1)],64)):c(``,!0),a(A)||!a(b)&&a(g)?.error?(l(),u(`p`,qt,y(a(A)||a(g)?.error),1)):c(``,!0),r[7]||=S(`button`,{type:`submit`,hidden:``},null,-1)],32)]),_:1},8,[`open`,`title`])],2))}}}),[[`__scopeId`,`data-v-9f7f1964`]]),{__name:`CoordinatorAutopilot`}),Xt=[`title`,`aria-label`],Zt={class:`task-key-text`},Qt={key:0,class:`task-key-flash`,"aria-live":`polite`},$t=Object.assign(m({__name:`TaskKey`,props:{value:{}},setup(e){let t=e,n=s(``),r;function i(e){let t=document.createElement(`textarea`);t.value=e,t.setAttribute(`readonly`,``),t.style.cssText=`position:fixed;top:0;left:0;opacity:0;font-size:16px`,document.body.appendChild(t),t.select(),t.setSelectionRange(0,e.length);try{return document.execCommand(`copy`)}finally{t.remove()}}async function o(e){e.stopPropagation();let a=!1;try{navigator.clipboard?.writeText?(await navigator.clipboard.writeText(t.value),a=!0):a=i(t.value)}catch{a=!1}n.value=a?`done`:`fail`,clearTimeout(r),r=setTimeout(()=>{n.value=``},1e3)}return D(()=>clearTimeout(r)),(t,r)=>(l(),u(`button`,{type:`button`,class:v([`task-key task-key-copy`,a(n)]),title:(`t`in t?t.t:a(W))(`Copy ID`),"aria-label":`${(`t`in t?t.t:a(W))(`Copy ID`)} ${e.value}`,onClick:o},[S(`span`,Zt,y(e.value),1),a(n)?(l(),u(`span`,Qt,y(a(n)===`done`?(`t`in t?t.t:a(W))(`Copied`):(`t`in t?t.t:a(W))(`Copy failed`)),1)):c(``,!0)],10,Xt))}}),{__name:`TaskKey`});function en(e){return e===`question`||e===`permission`||e===`auth`?e:null}function tn(e){return e===`question`?K(`Question`,`Question`):e===`permission`?K(`Permission`,`Permission`):K(`Sign-in`,`Connexion`)}var nn=/https?:\/\/[^\s<>"'`]+/g,rn=/[.,;:!?)\]}»”’]+$/;function an(e){let t=Ze(e);if(t)return`PR ${t}`;try{let t=new URL(e),n=t.pathname.replace(/\/+$/,``),r=n.split(`/`).filter(Boolean).slice(-2).join(`/`),i=r?`${t.host}/${n.split(`/`).filter(Boolean).length>2?`…/`:``}${r}`:t.host;return i.length>40?`${i.slice(0,39)}…`:i}catch{return e}}function on(e){let t=[],n=0;for(let r of e.matchAll(nn)){let i=r[0],a=rn.exec(i);if(a&&!(a[0].startsWith(`)`)&&i.includes(`(`))&&(i=i.slice(0,-a[0].length)),!i.replace(/^https?:\/\//,``))continue;let o=r.index;o>n&&t.push({text:e.slice(n,o)}),t.push({text:an(i),href:i}),n=o+i.length}return n<e.length&&t.push({text:e.slice(n)}),t}function sn(e){for(let t of on(e))if(`href`in t&&Ze(t.href))return t.href;return``}var cn=5,ln=80,un=e=>e.replace(/\s+/g,` `).replace(/^[\s,;:–—-]+/,``).replace(/(?:[\s,;:–—-]+|\s+(?:or|ou))+$/i,``).replace(/[?.!]+$/,``).trim();function dn(e){for(let t of[`1`,`a`,`A`]){let n=[],r=t;for(let t of e.matchAll(/(^|[\s(:;,])([0-9]|[a-zA-Z])[).]\s+/g)){if(t[2]!==r)continue;let e=t.index+t[1].length;n.push({at:e,end:t.index+t[0].length,mark:t[2]}),r=String.fromCharCode(r.charCodeAt(0)+1)}if(n.length<2||n.length>cn)continue;let i=n.map((t,r)=>{let i=un(e.slice(t.end,r+1<n.length?n[r+1].at:void 0).split(`
|
|
2
|
-
`)[0]);return{label:i,reply:`${t.mark}) ${i}`}});if(i.every(e=>e.label&&e.label.length<=ln))return i}return[]}function fn(e){let t=/[([]([^()[\]\n]{1,160})[)\]]\s*[?.!:]?\s*$/.exec(e.trim());if(!t)return[];let n=t[1].trim();if(/:\/\/|^(?:e\.g\.|ex\.|i\.e\.)/i.test(n)||/^[~.]?[\w.-]*\/[\w./-]*$/.test(n)&&/[.~]|\/.*\//.test(n))return[];let r=n.split(/\s*[/|]\s*|\s+(?:or|ou)\s+/i).map(un).filter(Boolean);return r.length<2||r.length>cn||r.some(e=>e.length>40)?[]:r.map(e=>({label:e,reply:e}))}function pn(e){let t=dn(e);return t.length?t:fn(e)}var mn=/^(?:(?:always|toujours)(?:\s+(?:allow|allowed|autoriser|autorisé))?|(?:allow|autoriser)\s+always|autoriser\s+toujours)$/i,hn=/\b(?:or|ou)\s+(?:always|toujours)(?:\s+(?:allow|autoriser))?\s*[?.!]?\s*$/i,gn=/\b(?:you\s+(?:can|could|may|might)|(?:tu|vous)\s+(?:peux|pouvez|pourrais|pourriez))\s+(?:(?:also|aussi|également|plutôt|instead)\s+)?(?:always\s+allow|toujours\s+(?:l['’]\s*)?autoriser|(?:l['’]\s*)?autoriser\s+toujours|allow\s+(?:it\s+|this\s+)?always)\b/i;function _n(e){return[...fn(e),...dn(e)].some(e=>mn.test(e.label.replace(/[.!]+$/,``)))?!0:hn.test(e.trim())||gn.test(e)}function vn(e){return e===`allow`?K(`Allowed: go ahead.`,`Autorisé : vas-y.`):e===`refuse`?K(`Refused: do not do it.`,`Refusé : ne le fais pas.`):K(`Allowed, always: no need to ask again for this.`,`Autorisé, toujours : plus besoin de demander pour ça.`)}function yn(e,t){let n=[...e.querySelectorAll(`.msg-ai`)];if(!n.length)return null;let r=e=>e.replace(/[*_`#>]/g,``).replace(/\s+/g,` `).trim().toLowerCase(),i=t.split(/https?:\/\/\S+/).map(e=>r(e).replace(/^[^\p{L}\p{N}]+/u,``).slice(0,40).trim()).filter(e=>e.length>=8).sort((e,t)=>t.length-e.length);for(let e of i)for(let t=n.length-1;t>=0;t--)if(r(n[t].textContent||``).includes(e))return n[t];return n[n.length-1]}var bn=[`href`,`title`],xn=Object.assign(m({__name:`LinkedText`,props:{text:{}},setup(n){let r=n,i=e(()=>on(r.text));return(e,n)=>(l(!0),u(_,null,d(a(i),(e,r)=>(l(),u(_,{key:r},[`href`in e?(l(),u(`a`,{key:0,class:`linked-text-link`,href:e.href,title:e.href,target:`_blank`,rel:`noopener noreferrer`,onClick:n[0]||=ee(()=>{},[`stop`])},y(e.text),9,bn)):(l(),u(_,{key:1},[t(y(e.text),1)],64))],64))),128))}}),{__name:`LinkedText`}),Sn=[`title`,`data-task`],Cn=[`aria-label`],wn={class:`board-card-head`},Tn={key:1,class:`board-card-label`},En={class:`task-card-title`},Dn={class:`board-card-title wrap`},On=[`href`,`title`],kn=[`title`],An=[`data-kind`],jn={class:`task-card-msg-text`},Mn={key:1,class:`task-chips`},Nn={key:0,class:`task-chip`},Pn=Object.assign(m({__name:`TaskCard`,props:{task:{},status:{type:Boolean},machine:{},stale:{type:Boolean},readAt:{}},emits:[`open`],setup(t){let n=t,r=e(()=>n.task.group===`needs`?en(n.task.kind):null),i=e(()=>(n.task.msg||``).replace(/\s+/g,` `).trim()),o=e(()=>n.task.pr||sn(n.task.msg||``)),s=e(()=>[n.task.progress!==null&&n.task.group===`working`?`${n.task.progress}%`:``].filter(Boolean)),f=e(()=>n.stale?n.readAt?K(`As read at ${n.readAt}: see the note above`,`Lue à ${n.readAt} : voir la note plus haut`):K(`An older read: see the note above`,`Lecture plus ancienne : voir la note plus haut`):void 0);return(e,n)=>{let p=Y,m=$t,g=xn;return l(),u(`div`,{class:v([`board-card task-card`,[t.task.group,{stale:t.stale}]]),title:a(f),"data-task":t.task.id},[S(`button`,{type:`button`,class:`task-card-open`,"aria-label":`${a(ze)(t.task.id,t.task.repoKey)} ${t.task.title}`,onClick:n[0]||=t=>e.$emit(`open`)},null,8,Cn),S(`span`,wn,[h(p,{identity:t.task.identity||{agent:t.task.app,reviewer:``,from:``},primary:``},null,8,[`identity`]),h(m,{value:a(ze)(t.task.id,t.task.repoKey)},null,8,[`value`]),t.status?(l(),u(`span`,{key:0,class:v([`task-state`,t.task.group])},y((`taskGroupLabel`in e?e.taskGroupLabel:a(gt))(t.task.group)),3)):c(``,!0),t.machine?(l(),u(`span`,Tn,y(t.machine),1)):c(``,!0)]),S(`span`,En,[S(`span`,Dn,y(t.task.title),1),a(o)?(l(),u(`a`,{key:0,class:`task-chip task-card-pr`,href:a(o),title:a(o),target:`_blank`,rel:`noopener noreferrer`},y(a(Ze)(a(o))?`PR ${a(Ze)(a(o))}`:`PR`),9,On)):c(``,!0)]),a(i)?(l(),u(`span`,{key:0,class:`board-note task-card-msg`,title:t.task.msg},[a(r)?(l(),u(`span`,{key:0,class:`task-needs-type`,"data-kind":a(r)},y(a(tn)(a(r))),9,An)):c(``,!0),S(`span`,jn,[h(g,{text:a(i)},null,8,[`text`])])],8,kn)):c(``,!0),t.task.chat||a(s).length||t.task.review?(l(),u(`span`,Mn,[t.task.chat?(l(),u(`span`,Nn,y((`tl`in e?e.tl:a(K))(`Conversation`,`Conversation`)),1)):c(``,!0),(l(!0),u(_,null,d(a(s),e=>(l(),u(`span`,{key:e,class:`task-chip`},y(e),1))),128)),t.task.review?(l(),u(`span`,{key:1,class:v([`task-chip`,t.task.review.pass===!1?`fail`:t.task.review.pass?`pass`:``])},y(t.task.review.pass===!1?(`tl`in e?e.tl:a(K))(`review failed`,`revue échouée`):(`tl`in e?e.tl:a(K))(`review`,`revue`))+y(t.task.review.tally?` · ${t.task.review.tally}`:``),3)):c(``,!0)])):c(``,!0)],10,Sn)}}}),{__name:`TaskCard`}),Fn={class:`scheduled-content`},In={key:0},Ln={key:1,role:`status`},Rn={key:0},zn={key:1},Bn={class:`scheduled-prompt`},Vn={class:`scheduled-tasks`},Hn=[`href`],Un={class:`scheduled-session`},Wn={key:0,class:`scheduled-cron`},Gn={class:`scheduled-prompt`},Kn={key:3,class:`scheduled-zone`},qn=Object.assign(J(m({__name:`CoordinatorScheduled`,props:{machine:{},target:{},refreshKey:{}},setup(n){let i=n,o=s(!1),f=r(null),p=s(``),m=s(!1),h=0;async function g(){let e=++h;m.value=!0,p.value=``;let t=new URLSearchParams({machine:i.machine,kind:i.target.kind,...i.target.kind===`project`?{repo:i.target.repo}:{}});try{let n=await G(`/api/tasks/scheduled?${t}`);e===h&&(f.value=n)}catch{e===h&&(p.value=K(`Schedule unavailable`,`Programmation indisponible`))}finally{e===h&&(m.value=!1)}}function v(e){let t=e.target.open;t!==o.value&&(o.value=t,o.value&&(f.value=null,g()))}w(()=>[i.machine,JSON.stringify(i.target)],()=>{h++,f.value=null,p.value=``,m.value=!1,o.value&&g()}),w(()=>i.refreshKey,()=>{o.value?g():f.value=null}),D(()=>h++);let b=e(()=>f.value&&!f.value.autopilot?.on&&!f.value.automations.length&&!f.value.timers.length);function x(e){return e?typeof e==`string`?C(e):new Intl.DateTimeFormat(ye===`fr`?`fr-FR`:`en-GB`,{timeZone:f.value?.timezone||`UTC`,dateStyle:`short`,timeStyle:`short`}).format(e):`—`}function C(e){return ye===`fr`?e.replace(/when a task is merged/g,`après chaque fusion`).replace(/when a task is added/g,`après chaque ajout de tâche`).replace(/when a task waits for approval/g,`quand une tâche attend une approbation`).replace(/when a task failed its review/g,`après un échec de relecture`).replace(/when a task went wrong/g,`après un échec de tâche`).replace(/when a task needs you/g,`quand une tâche a besoin de toi`).replace(/in every repo/g,`dans tous les projets`).replace(/every /g,`tous les `).replace(/daily /g,`tous les jours à `).replace(/\bmon\b/gi,`lundis`).replace(/\btue\b/gi,`mardis`).replace(/\bwed\b/gi,`mercredis`).replace(/\bthu\b/gi,`jeudis`).replace(/\bfri\b/gi,`vendredis`).replace(/\bsat\b/gi,`samedis`).replace(/\bsun\b/gi,`dimanches`).replace(/\bon done stuck added\b/g,`sur fin, blocage, ajout`).replace(/next in /g,`dans `).replace(/next /g,`prochain `).replace(/\bof\b/g,`sur`).replace(/added/g,`ajoutées`).replace(/under way/g,`en cours`):e}function T(e){if(/^(mon|tue|wed|thu|fri|sat|sun)(?:,(?:mon|tue|wed|thu|fri|sat|sun))* (\d{1,2}:\d{2})$/i.exec(e)){let[t,n]=e.split(` `),r={mon:`Monday`,tue:`Tuesday`,wed:`Wednesday`,thu:`Thursday`,fri:`Friday`,sat:`Saturday`,sun:`Sunday`};return ye===`fr`?`Tous les ${C(t)} à ${n}`:`Every ${t.split(`,`).map(e=>r[e.toLowerCase()]).join(`, `)} at ${n}`}let t=/^(?:cron\s+)?(\d+) (\d+) \* \* ([0-6])$/.exec(e);if(t){let e=ye===`fr`?[`dimanches`,`lundis`,`mardis`,`mercredis`,`jeudis`,`vendredis`,`samedis`]:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`];return K(`Every ${e[Number(t[3])]} at ${t[2]}:${t[1].padStart(2,`0`)}`,`Tous les ${e[Number(t[3])]} à ${t[2]}:${t[1].padStart(2,`0`)}`)}return C(e)}let E=e=>`/#/board?machine=${encodeURIComponent(i.machine)}&task=${encodeURIComponent(e)}`;return(e,n)=>(l(),u(`details`,{class:`coordinator-scheduled`,onToggle:v},[S(`summary`,null,y((`tl`in e?e.tl:a(K))(`Scheduled`,`Programmé`)),1),S(`div`,Fn,[a(m)?(l(),u(`p`,In,y((`t`in e?e.t:a(W))(`Loading…`)),1)):c(``,!0),a(p)?(l(),u(`p`,Ln,y(a(p)),1)):c(``,!0),a(f)?(l(),u(_,{key:2},[(l(!0),u(_,null,d(a(f).warnings,t=>(l(),u(`p`,{key:t,role:`status`},y((`t`in e?e.t:a(W))(t)),1))),128)),a(b)&&!a(f).warnings.length?(l(),u(`p`,Rn,y((`tl`in e?e.tl:a(K))(`Nothing scheduled`,`Rien de programmé`)),1)):c(``,!0),a(f).autopilot?(l(),u(`article`,zn,[S(`h4`,null,[n[0]||=t(`Autopilot `,-1),S(`span`,null,y(a(f).autopilot.on?(`tl`in e?e.tl:a(K))(`On`,`Actif`):(`tl`in e?e.tl:a(K))(`Off`,`Inactif`)),1)]),a(f).autopilot.on?(l(),u(_,{key:0},[S(`p`,null,y(C(a(f).autopilot.frequency)),1),S(`p`,Bn,y(a(f).autopilot.goal),1),S(`p`,null,y((`tl`in e?e.tl:a(K))(`Today`,`Aujourd’hui`))+` : `+y(C(a(f).autopilot.today)),1),S(`p`,null,y((`tl`in e?e.tl:a(K))(`Last wake`,`Dernier réveil`))+` : `+y(x(a(f).autopilot.last)),1),S(`p`,null,y((`tl`in e?e.tl:a(K))(`Next wake`,`Prochain réveil`))+` : `+y(x(a(f).autopilot.next)),1)],64)):c(``,!0)])):c(``,!0),(l(!0),u(_,null,d(a(f).automations,n=>(l(),u(`article`,{key:n.id},[S(`h4`,null,[t(y(n.name)+` `,1),S(`span`,null,y(n.on?(`tl`in e?e.tl:a(K))(`On`,`Active`):(`tl`in e?e.tl:a(K))(`Off`,`Inactive`)),1)]),S(`p`,null,y(T(n.trigger)),1),S(`p`,null,y((`tl`in e?e.tl:a(K))(`Last trigger`,`Dernier déclenchement`))+` : `+y(x(n.last)),1),S(`p`,null,y((`tl`in e?e.tl:a(K))(`Next trigger`,`Prochain déclenchement`))+` : `+y(x(n.next)),1),S(`p`,Vn,[(l(!0),u(_,null,d(n.tasks,e=>(l(),u(`a`,{key:e,href:E(e)},y(e),9,Hn))),128))])]))),128)),a(f).timers.length?(l(),u(_,{key:2},[S(`p`,Un,y((`tl`in e?e.tl:a(K))(`Session: lost when the session closes`,`Session : perdus si la session se ferme`)),1),(l(!0),u(_,null,d(a(f).timers,n=>(l(),u(`article`,{key:n.id},[S(`h4`,null,[t(y(n.id===a(`ScheduleWakeup`)?(`tl`in e?e.tl:a(K))(`Wakeup`,`Réveil`):n.id)+` `,1),S(`span`,null,y(n.recurring?(`tl`in e?e.tl:a(K))(`Recurring`,`Récurrent`):(`tl`in e?e.tl:a(K))(`Once`,`Ponctuel`)),1)]),n.cron?(l(),u(`p`,Wn,y(n.cron),1)):c(``,!0),S(`p`,null,y((`tl`in e?e.tl:a(K))(`Next run (estimated)`,`Prochaine exécution (estimée)`))+` : `+y(x(n.next)),1),S(`p`,Gn,y(n.prompt),1)]))),128))],64)):c(``,!0),a(b)?c(``,!0):(l(),u(`p`,Kn,y(a(f).timezone),1))],64)):c(``,!0)])],32))}}),[[`__scopeId`,`data-v-89e07225`]]),{__name:`CoordinatorScheduled`}),Jn=[`agent`,`review`,`plan`,`limits`,`merge`,`workspace`,`other`];function Yn(e){return/^worker\.|^(research|chat)\.only$/.test(e)?`agent`:/^(reviewer|review)\./.test(e)?`review`:/^(plan|attempts|check)\./.test(e)?`plan`:e.startsWith(`limit.`)?`limits`:e.startsWith(`merge.`)?`merge`:e.startsWith(`workspace.`)?`workspace`:`other`}function Xn(e){return e==null?null:typeof e==`string`?e:JSON.stringify(e,null,2)}function Zn(e){switch(e){case`agent`:return K(`Agent`,`Agent`);case`review`:return K(`Review`,`Revue`);case`plan`:return K(`Plan and attempts`,`Plan et essais`);case`limits`:return K(`Limits`,`Limites`);case`merge`:return K(`Merge`,`Fusion`);case`workspace`:return K(`Workspace`,`Espace de travail`);case`other`:return K(`Other settings`,`Autres réglages`)}}function Qn(e){switch(e){case`task`:return K(`Task`,`Tâche`);case`repo`:return K(`Repository`,`Dépôt`);case`you`:return K(`You`,`Toi`);case`file`:return K(`Repository file`,`Fichier du dépôt`);case`builtin`:return K(`Default`,`Défaut`);default:return e||K(`Source not provided`,`Provenance non renseignée`)}}function $n(e){switch(e){case`worker.agent`:return K(`Working agent`,`Agent de travail`);case`worker.effort`:return K(`Reasoning effort`,`Effort de raisonnement`);case`worker.fast`:return K(`Fast mode`,`Mode rapide`);case`worker.access`:return K(`Access`,`Accès`);case`worker.instructions`:return K(`Instructions`,`Instructions`);case`worker.fallback`:return K(`Fallback agents`,`Agents de secours`);case`reviewer.agent`:return K(`Reviewing agent`,`Agent de revue`);case`reviewer.effort`:return K(`Review reasoning effort`,`Effort de raisonnement de revue`);case`reviewer.fast`:return K(`Fast review mode`,`Mode rapide de revue`);case`reviewer.access`:return K(`Reviewer access`,`Accès du relecteur`);case`reviewer.instructions`:return K(`Review instructions`,`Instructions de revue`);case`reviewer.fallback`:return K(`Fallback reviewers`,`Relecteurs de secours`);case`research.only`:return K(`Research only`,`Recherche seule`);case`chat.only`:return K(`Conversation only`,`Conversation seule`);case`plan.approve`:return K(`Plan approval`,`Approbation du plan`);case`plan.agent`:return K(`Planning agent`,`Agent du plan`);case`attempts.by`:return K(`Number of attempts`,`Nombre d’essais`);case`attempts.pick`:return K(`Attempt selection`,`Sélection de l’essai`);case`check.command`:return K(`Check command`,`Commande de vérification`);case`check.again`:return K(`Repeat checks`,`Répétition des vérifications`);case`check.timeout`:return K(`Check timeout`,`Délai des vérifications`);case`review.when`:return K(`When to review`,`Quand relire`);case`review.mustFix`:return K(`Required fixes`,`Corrections obligatoires`);case`review.rounds`:return K(`Review rounds`,`Tours de revue`);case`review.timeout`:return K(`Review timeout`,`Délai de revue`);case`review.afterChat`:return K(`Review after conversation`,`Revue après conversation`);case`review.evidence`:return K(`Review evidence`,`Preuves de revue`);case`limit.time`:return K(`Time limit`,`Limite de temps`);case`limit.tokens`:return K(`Token limit`,`Limite de tokens`);case`merge.by`:return K(`Who merges`,`Qui fusionne`);case`merge.method`:return K(`Merge method`,`Méthode de fusion`);case`merge.pr`:return K(`Pull request`,`Pull request`);case`merge.pushTimeout`:return K(`Push timeout`,`Délai du push`);case`merge.checks`:return K(`Merge checks`,`Vérifications avant fusion`);case`workspace.from`:return K(`Starting branch`,`Branche de départ`);case`workspace.branch`:return K(`Work branch pattern`,`Format de la branche de travail`);case`workspace.setup`:return K(`Setup command`,`Commande de préparation`);case`workspace.include`:return K(`Included files`,`Fichiers inclus`);case`workspace.teardown`:return K(`Teardown command`,`Commande de fin`);case`workspace.cleanup`:return K(`Workspace cleanup`,`Nettoyage de l’espace de travail`);default:return e}}var er=[`aria-label`],tr={key:0,class:`board-note`,role:`status`},nr={key:1,class:`board-empty`,role:`status`},rr={key:2,role:`alert`,class:`board-note error`},ir={key:0,class:`board-empty`},ar={class:`settings-key`},or={class:`settings-value`},sr={class:`settings-origin`},cr={key:0},lr={key:1,class:`settings-note`},ur={key:2},dr=Object.assign(J(m({__name:`TaskSettings`,props:{machine:{},id:{},active:{type:Boolean,default:!0},reachable:{type:Boolean,default:!0}},setup(n){let r=n,i=s(null),o=s(!1),f=s(``),p=e(()=>!r.reachable||H.value),m=e(()=>Jn.map(e=>({group:e,rows:i.value?.settings.filter(t=>![`board`,`coordinator`,`repo`].includes(t.kind)&&Yn(t.name)===e)??[]})).filter(e=>e.rows.length)),g=0,b=!1;async function x(){if(!r.active||p.value||b)return;b=!0;let e=++g;o.value=!0,f.value=``;try{let t=await G(`/api/tasks/settings?machine=${encodeURIComponent(r.machine)}&id=${encodeURIComponent(r.id)}`);e===g&&(i.value=t)}catch(t){e===g&&(f.value=t.message)}finally{e===g&&(o.value=!1)}}w(()=>[r.machine,r.id],()=>{g++,b=!1,o.value=!1,i.value=null,f.value=``},{flush:`sync`}),w(()=>[r.machine,r.id,r.active,p.value],()=>{x()},{immediate:!0});function C(){b=!1,x()}return(e,n)=>{let r=re;return l(),u(`section`,{class:`task-settings task-sheet-block`,"aria-label":(`tl`in e?e.tl:a(K))(`Settings`,`Réglages`)},[S(`h4`,null,y((`tl`in e?e.tl:a(K))(`Settings`,`Réglages`))+` · `+y((`tl`in e?e.tl:a(K))(`Read-only`,`Lecture seule`)),1),a(p)?(l(),u(`p`,tr,y((`tl`in e?e.tl:a(K))(`Machine offline. Settings cannot be read.`,`Machine hors ligne. Impossible de lire les réglages.`)),1)):a(o)?(l(),u(`p`,nr,y((`t`in e?e.t:a(W))(`Loading…`)),1)):a(f)?(l(),u(`div`,rr,[S(`p`,null,y((`tl`in e?e.tl:a(K))(`Could not read settings`,`Impossible de lire les réglages`))+` · `+y(a(f)),1),h(r,{color:`neutral`,variant:`outline`,onClick:C},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Retry`,`Réessayer`)),1)]),_:1})])):a(i)?(l(),u(_,{key:3},[(l(!0),u(_,null,d(a(i).problems,(e,t)=>(l(),u(`p`,{key:t,class:`board-note error`,role:`alert`},y(e),1))),128)),a(m).length?c(``,!0):(l(),u(`p`,ir,y((`tl`in e?e.tl:a(K))(`No settings returned by the CLI.`,`Aucun réglage renvoyé par le CLI.`)),1)),(l(!0),u(_,null,d(a(m),({group:n,rows:r})=>(l(),u(`section`,{key:n,class:`settings-group`},[S(`h5`,null,y(a(Zn)(n)),1),S(`dl`,null,[(l(!0),u(_,null,d(r,(n,r)=>(l(),u(`div`,{key:`${n.name}-${r}`,class:`settings-row`},[S(`dt`,null,[t(y(a($n)(n.name)),1),S(`small`,ar,y(n.name),1)]),S(`dd`,or,y(a(Xn)(n.value)??(`tl`in e?e.tl:a(K))(`Not provided`,`Non renseigné`)),1),S(`dd`,sr,[S(`span`,{class:v([`settings-source`,{own:n.place===`task`}])},y(a(Qn)(n.place)),3),n.from?(l(),u(`span`,cr,y(n.from),1)):c(``,!0),n.note?(l(),u(`span`,lr,y(n.note),1)):c(``,!0),n.later?(l(),u(`span`,ur,y(n.later),1)):c(``,!0)])]))),128))])]))),128))],64)):c(``,!0)],8,er)}}}),[[`__scopeId`,`data-v-7134ed46`]]),{__name:`TaskSettings`});function fr(e){if(typeof e==`number`)return Number.isFinite(e)&&e>=0?e:null;let t=e?.trim().match(/^(\d+(?:[.,]\d+)?)\s*([kmb])?$/i);if(!t)return null;let n=Number(t[1].replace(`,`,`.`))*({k:1e3,m:1e6,b:1e9}[t[2]?.toLowerCase()||``]||1);return Number.isFinite(n)?n:null}function pr(e,t=ye){let n=fr(e);if(n===null)return e==null||e===``?`—`:String(e);let r=n>=999500?1e6:n>=1e3?1e3:1,i=+(r===1e6&&n<1e7);return(n/r).toLocaleString(t===`fr`?`fr-FR`:`en-GB`,{maximumFractionDigits:i,useGrouping:!1})+(r===1e6?`M`:r===1e3?`k`:``)}var mr={key:0},hr={key:1,class:`token-count`},gr=[`title`,`aria-expanded`,`aria-label`],_r={key:0,class:`token-count-exact`},vr=Object.assign(J(m({__name:`TokenCount`,props:{value:{}},setup(t){let n=t,r=s(!1),i=e(()=>fr(n.value));return w(()=>n.value,()=>{r.value=!1}),(e,n)=>a(i)===null?(l(),u(`span`,mr,y(a(pr)(t.value)),1)):(l(),u(`span`,hr,[S(`button`,{type:`button`,title:String(a(i)),"aria-expanded":a(r),"aria-label":(`tl`in e?e.tl:a(K))(`Show exact token count: ${a(i)}`,`Afficher le nombre exact de tokens : ${a(i)}`),onClick:n[0]||=e=>r.value=!a(r)},y(a(pr)(t.value)),9,gr),a(r)?(l(),u(`span`,_r,` (`+y(a(i))+`)`,1)):c(``,!0)]))}}),[[`__scopeId`,`data-v-ea3455b4`]]),{__name:`TokenCount`});function yr(e){switch(e){case`conversation`:return K(`End this conversation when you are done.`,`Termine cette conversation quand tu as fini.`);case`limit`:return K(`Continue grants a new allowance. Raising the limit keeps usage and resumes automatically. Take as is: checks, then review. These work limits are separate from provider quotas.`,`Continuer accorde une nouvelle tranche. Relever la limite conserve la consommation et reprend automatiquement. Prendre tel quel : vérifications puis relecture. Ces limites de travail sont distinctes des quotas fournisseur.`);case`nosummary`:return K(`Retry: the agent goes on. Finish: the work is taken as it is, its screen as the summary, checked, then reviewed.`,`Réessayer : l’agent continue. Terminer : le travail est pris tel quel, son écran comme résumé, vérifié, puis relu.`);case`stuck`:return K(`Its agent is at rest, but the board did not see its turn end. Finish: the work is taken as it is, with what the agent said last, checked, then reviewed.`,`Son agent est au repos, mais le board n’a pas vu la fin de son tour. Terminer : le travail est pris tel quel, avec ce que l’agent a dit en dernier, vérifié, puis relu.`)}}var br=(e=!1)=>e?K(`End conversation`,`Terminer la conversation`):K(`Finish`,`Terminer`),xr=(e=!1)=>e?K(`End this conversation`,`Terminer cette conversation`):K(`Take the work as it is: checks, then review`,`Prendre le travail tel quel : vérifications puis relecture`),Sr=(e,t=!1)=>t?K(`End “${e}”?`,`Terminer la conversation « ${e} » ?`):K(`Take “${e}” as it is? Its checks run, then its review. If this task merges by itself (merge.by itself), it can merge without asking you.`,`Prendre « ${e} » tel quel ? Ses vérifications tournent, puis sa relecture. Si cette tâche fusionne d’elle-même (merge.by itself), elle peut fusionner sans te demander.`);function Cr(e,t){let n=Ge(e);return n!==null&&(n!==`stuck`||t!==`working`&&t!==`blocked`)}function wr(e){let t=e%100,n=t>=11&&t<=13?`th`:[`th`,`st`,`nd`,`rd`][e%10]||`th`;return K(`${e}${n} in the queue`,`${e}${e===1?`re`:`e`} dans la file`)}var Tr=(e,t)=>et(e).toLowerCase()===et(t).toLowerCase();function Er(e,t,n,r,i=``,a=40){let o=i.trim().toLowerCase(),s=[],c=[...e].sort((e,n)=>Number(n.machine===t)-Number(e.machine===t));for(let e of c){if(e.status!==`ready`)continue;let i=e.machine===t?null:r(e.machine),c=[...e.tasks].sort((e,t)=>t.n-e.n||e.repo.localeCompare(t.repo));for(let r of c){if(r.archived||r.group===`done`||e.machine===t&&r.id===n)continue;let c=Ke(r.id,r.repoKey,i);if((!o||`${c} ${r.id} #${r.n} ${r.title} ${i??``}`.toLowerCase().includes(o))&&(s.push({ref:c,id:r.id,machine:e.machine,title:r.title,group:r.group}),s.length>=a))return s}}return s}function Dr(e){let t=e.trim();return t&&qe([t])?t:null}function Or(e,t,n,r){let i=e.indexOf(`:`),a=i>0?e.slice(0,i):null,o=i>0?e.slice(i+1):e;if(!Fe(o))return e;let s=a===null?n.find(e=>e.machine===t):n.find(e=>e.machine!==t&&Tr(r(e.machine),a)),c=o.split(`/`)[0],l=s?.tasks.find(e=>e.repo===c&&e.repoKey)?.repoKey,u=l?ze(o,l):o;return a===null?u:`${a}:${u}`}var kr=15e3,Ar=null,jr=r(null);function Mr(e){Ar=e,jr.value=e}function Nr(){let e=r(Ar),t=s(``),n=s(0),i=0,a=!1;async function o(r=!1){if(a||H.value)return;let o=++i;try{let a=!r&&e.value?`?since=${encodeURIComponent(e.value.version)}`:``,s=await G(`/api/tasks${a}`);if(o!==i)return;t.value=``,`same`in s||(e.value=s,Mr(s)),n.value++}catch(e){o===i&&(t.value=e.message)}}let c;return p(()=>{o(),c=xe(()=>{document.visibilityState===`visible`&&o()},kr)}),D(()=>{a=!0,clearInterval(c)}),w(U,e=>{e&&o()}),{board:e,error:t,reads:n,reload:()=>o(!0)}}var Pr={key:0,class:`task-sheet`},Fr={key:0,class:`task-sheet-meta`},Ir={key:0,class:`task-chip task-archived`},Lr={key:1,class:`task-chip`},Rr={key:2,class:`task-chip`},zr={key:3,class:`task-chip`},Br={key:4,class:`task-chip`},Vr={key:1,class:`task-chip`},Hr={key:2,class:`task-sheet-msg`},Ur={key:3,class:`task-sheet-msg`},Wr={key:4,class:`task-sheet-block task-wait`,role:`status`},Gr={class:`task-wait-line`},Kr={key:5,class:`task-sheet-block task-wait`,role:`status`},qr={class:`task-wait-line`},Jr=[`title`],Yr={key:0},Xr={key:0,class:`board-note error`},Zr={class:`task-wait-hint`},Qr={key:6,class:`board-note task-sheet-archived`},$r={key:7,class:`board-empty`},ei={key:8,class:`board-note error`},ti={key:9,class:`task-sheet-block task-attempts`},ni={key:0,class:`task-sheet-text`},ri={key:1,class:`task-sheet-text`},ii={key:2,class:`board-note error`},ai={class:`mono`},oi={key:0},si={key:1},ci={key:3,class:`board-note`},li={key:10,class:`task-sheet-facts`},ui=[`href`],di={class:`mono`},fi={key:11,class:`task-sheet-block task-handovers`},pi={class:`task-handover-list`},mi={key:0,class:`task-handover-meta`},hi={key:1},gi={key:2},_i={key:3},vi=[`datetime`],yi={key:12,class:`plugin-input-note warn`},bi={key:13,class:`task-sheet-block task-sheet-earlier`},xi={class:`task-sheet-text`},Si={key:14,class:`task-sheet-block`},Ci={class:`task-sheet-text`},wi={key:16,class:`task-sheet-block`},Ti={class:`task-sheet-text`},Ei={key:17,class:`task-sheet-block board-panel-note`},Di={class:`task-sheet-text`},Oi={key:18,class:`board-panel-report`},ki=[`href`],Ai={key:1},ji={key:19,class:`task-sheet-block`},Mi={key:20,class:`task-sheet-facts`},Ni={key:0},Pi={key:21,class:`task-sheet-block`},Fi={class:`task-sheet-actions`},Ii={for:`task-question`,class:`field-label`},Li={class:`task-sheet-actions`},Ri=[`aria-label`],zi={class:`task-start-label`},Bi={key:0,class:`task-start-wait`},Vi=[`aria-checked`,`disabled`,`onClick`],Hi={class:`task-start-name`},Ui={key:1},Wi={key:1,class:`task-start-model`},Gi={class:`task-start-label`},Ki={key:2,class:`task-start-from`},qi={key:3,class:`task-start-from task-start-missing`,role:`status`},Ji={key:4,class:`task-start-from`},Yi={key:23,class:`task-sheet-actions`},Xi={key:24,role:`status`},Zi={key:25,class:`task-finish-why`},Qi={id:`task-limit-kind`,class:`field-label`},$i={for:`task-limit-value`,class:`field-label`},ea={key:0,role:`status`},ta={key:1,role:`alert`},na={class:`task-sheet-actions`},ra={key:26,class:`task-queue-place`,role:`status`},ia={key:27,class:`task-sheet-block task-after-pick`},aa={class:`task-wait-hint`},oa={key:0,class:`task-wait-line`},sa=[`aria-label`,`onClick`],ca={class:`task-after-list`},la={key:0},ua={class:`mono`},da=[`onClick`],fa={class:`mono`},pa={class:`task-after-title`},ma={key:1,class:`board-empty`},ha={class:`task-sheet-actions`},ga={key:28,class:`task-finish-why`},_a={key:29,class:`board-note error task-sheet-error`,role:`alert`},va=Object.assign(J(m({__name:`TaskSheet`,props:T({task:{},machine:{},refresh:{},embedded:{type:Boolean},reachable:{type:Boolean,default:!0},limitRequest:{}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:T([`changed`,`archived`,`restored`,`chat`,`coordinator`],[`update:open`]),setup(n,{emit:r}){let i=n,p=r,m=g(n,`open`),b=s(null),x=s(``),C=s(!1),T=s(``),D=s(!1),A=s(!1),j=s(null),M=s(``),N=e(()=>b.value&&b.value.id===i.task?.id?b.value:null),te=s(!1),P=e(()=>!!N.value?.archived||!!i.task?.archived&&!te.value),F=e(()=>i.task?{...i.task,archived:P.value,chat:N.value?.chat??i.task.chat}:null),I=e(()=>ve.value.panes.find(e=>e.id===N.value?.pane)?.status??null),L=e=>({...e,finish:e.finish&&!!F.value&&Cr(F.value,I.value)}),z=e(()=>F.value?L(Ve(F.value,N.value)):$e),ie=e(()=>{let e=F.value?Ge(F.value):null;return e?yr(e):``}),B=e(()=>F.value?.stage===`stopped`&&F.value?.state===`blocked`&&!P.value),V=s(!1),oe=e(()=>N.value?.limits?.stopped?`limit.${N.value.limits.stopped}`:null),ce=s(``),ue=s(``),de=s(!1);w(oe,()=>{ue.value=``,ce.value=``});function pe(){ce.value=``,ue.value=``,V.value=!0}async function me(){let e=i.task;if(!e||A.value||H.value||i.reachable===!1||!B.value||!oe.value||!ue.value.trim())return;let t=X,n=i.machine;A.value=!0,de.value=!0,ce.value=``,M.value=``;try{await G(`/api/tasks/limit`,{machine:n,id:e.id,name:oe.value,value:ue.value.trim()}),await xt(t),t===X&&(!T.value&&N.value?.stage&&N.value.stage!==`stopped`?V.value=!1:ce.value=K(`Limit saved. Resumption is not confirmed yet. It can take a few seconds; if the task stays stopped, choose a ceiling above its usage.`,`Plafond enregistré. La reprise n’est pas encore confirmée. Elle peut prendre quelques secondes ; si la tâche reste arrêtée, choisis un plafond supérieur à sa consommation.`))}catch(e){Z(e,t)}finally{t===X&&(A.value=!1,de.value=!1)}}let ge=e(()=>b.value?.pr||i.task?.pr||``),ye=e(()=>b.value?.review||i.task?.review||null),be=e(()=>i.task?ze(i.task.id,i.task.repoKey):``),xe=e(()=>!P.value&&(!!N.value?.pane||z.value.tell)),U=s(null),Ce=s(!1),we=s(null),Ee=e(()=>U.value?.agent?.kind||``),De=e(()=>U.value?Ae(U.value,Te.value,K(`default`,`par défaut`)):[]),Oe=e(()=>De.value[0]?.usable??!0),q=e(()=>we.value&&De.value.some(e=>!e.isDefault&&e.id===we.value)?we.value:null),je=e(()=>!Oe.value&&!q.value),Ne=s(null),Pe=s(null),Fe=e(()=>q.value||(Oe.value?Ee.value:``)),Ie=e(()=>Ne.value&&Fe.value?`${Fe.value}/${Ne.value}`:q.value),Le=e=>e.isDefault?e.usable&&!q.value:e.id===q.value;function Re(e){return e.usable?e.hidden?K(`default · hidden in Settings`,`défaut · masqué dans les réglages`):K(`default`,`défaut`):K(`default · not installed`,`défaut · pas installé`)}function He(){let e=U.value?.agent;if(!e)return``;let t=i.task?.repo||``;switch(e.place){case`task`:return K(`Default set on this task`,`Défaut réglé sur cette tâche`);case`repo`:return K(`Default from your settings for ${t}`,`Défaut de tes réglages pour ${t}`);case`you`:return K(`Default from your settings`,`Défaut de tes réglages`);case`builtin`:return K(`herdr-projects’ built-in default`,`Défaut intégré de herdr-projects`);default:return K(`Default: ${e.from}`,`Défaut : ${e.from}`)}}let Ue=0;async function We(){let e=i.task;if(!e)return;let t=++Ue;Ce.value=!0;try{let n=await G(`/api/tasks/start?machine=${encodeURIComponent(i.machine)}&id=${encodeURIComponent(e.id)}`);t===Ue&&(U.value=n)}catch{t===Ue&&(U.value=null)}finally{t===Ue&&(Ce.value=!1)}}let Ke=e(()=>Be(U.value?.slots));function qe(){let e=Ie.value;return Ke.value?e?K(`Queue with ${e}`,`Mettre en file avec ${e}`):K(`Queue`,`Mettre en file`):e?K(`Start with ${e}`,`Lancer avec ${e}`):K(`Start`,`Lancer`)}let Je=e(()=>{let e=U.value?.slots;return!Ke.value||!e?``:`${wr(Ke.value)} · ${K(`all ${e.max} slots are taken`,e.max===1?`la seule place est prise`:`les ${e.max} places sont prises`)}`}),Xe=e(()=>i.task?.stage===`queued`&&!P.value?i.task.queue??N.value?.queue??0:null),Qe=e(()=>{let e=N.value?.after;return e&&!P.value&&(e.waiting||i.task?.stage===`todo`||i.task?.stage===`after`)?e:null}),et=e=>e?fe(e)?.label||e:_e.value,tt=e(()=>jr.value?.machines??[]),nt=e=>Or(e,i.machine,tt.value,et),at=e(()=>!!Qe.value),J=s(!1),ot=s(``),Y=s([]),st=s(!1),ct=e(()=>J.value&&i.task?Er(tt.value,i.machine,i.task.id,et,ot.value).filter(e=>!Y.value.some(t=>t.ref===e.ref)):[]),lt=e(()=>{let e=Dr(ot.value);return e&&!Y.value.some(t=>t.ref===e)&&!ct.value.some(t=>t.ref.toLowerCase()===e.toLowerCase())?e:null}),dt=0;async function ft(){J.value=!0,ot.value=``,Y.value=[];let e=++dt;st.value=!jr.value;try{let e=await G(`/api/tasks`);`same`in e||Mr(e)}catch{}finally{e===dt&&(st.value=!1)}}function pt(){J.value=!1,ot.value=``,Y.value=[]}function mt(e){Y.value.length<20&&(Y.value=[...Y.value,e]),ot.value=``}function ht(){let e=lt.value;e&&mt({ref:e,id:e,machine:``,title:``,group:`todo`})}function _t(e){Y.value=Y.value.filter(t=>t.ref!==e)}let vt=0;async function yt(){let e=i.task;if(!e)return;let t=++vt;D.value=!0,T.value=``;try{let n=await G(`/api/tasks/details?machine=${encodeURIComponent(i.machine)}&id=${encodeURIComponent(e.id)}`);t===vt&&(b.value=n)}catch(e){t===vt&&(T.value=e.message)}finally{t===vt&&(D.value=!1)}}let bt=()=>`${i.machine}|${i.task?.id??``}`,X=0;w([m,bt],([e])=>{X++,V.value=!1,ue.value=``,ce.value=``,de.value=!1,A.value=!1,j.value=null,M.value=``,te.value=!1,we.value=null,Ne.value=null,Pe.value=null,pt(),x.value=``,C.value=!1,U.value=null,Ce.value=!1,Ue++,e&&(b.value=null,yt())},{immediate:!0}),w(()=>i.limitRequest,()=>{B.value&&pe()}),w(()=>`${m.value&&z.value.delegate}|${bt()}`,()=>{m.value&&z.value.delegate&&!U.value&&!Ce.value&&We()},{immediate:!0}),w([bt,()=>`${i.task?.stage??``}|${i.task?.state??``}`],([e,t],[n,r])=>{m.value&&e===n&&t!==r&&yt()});async function xt(e){i.refresh?await i.refresh().catch(()=>{}):p(`changed`),e===X&&m.value&&await yt()}function Z(e,t){let n=e.message;ke(n,!0),t===X&&(M.value=n)}let St=e=>m.value&&bt()===e;async function Ct(){let e=i.task;if(!e||A.value)return;let t=bt(),n=i.machine,r=e.stage===`plan`;if(!await R(r?K(`Say yes to the plan of “${e.title}”? Its agent starts building.`,`Accepter le plan de « ${e.title} » ? Son agent commence à construire.`):K(`Approve “${e.title}”? herdr-projects merges its work. This cannot be undone.`,`Approuver « ${e.title} » ? herdr-projects fusionne son travail. C’est irréversible.`),r?K(`Approve plan`,`Accepter le plan`):K(`Approve and merge`,`Approuver et fusionner`),`primary`)||!St(t))return;let a=X;A.value=!0,M.value=``;try{let t=await G(`/api/tasks/approve`,{machine:n,id:e.id});ke(t.msg||K(`Approved`,`Approuvé`)),await xt(a)}catch(e){Z(e,a)}finally{a===X&&(A.value=!1)}}let wt=()=>H.value||i.reachable===!1;async function Tt(e){let t=i.task;if(!t||A.value||wt()||D.value||T.value||!rt(N.value,e))return;let n=bt(),r=X,a=i.machine;A.value=!0,M.value=``;try{if(!await R(K(`Keep attempt ${e} for “${t.title}”? The other attempts’ tabs close.`,`Garder l’essai ${e} pour « ${t.title} » ? Les onglets des autres essais se ferment.`),K(`Keep ${e} and close the others`,`Garder ${e} et fermer les autres`),`primary`)||r!==X||!St(n)||wt()||!rt(N.value,e))return;let i=await G(`/api/tasks/pick`,{machine:a,id:t.id,letter:e,confirmed:!0});ke(i.msg),await xt(r)}catch(e){Z(e,r)}finally{r===X&&(A.value=!1)}}let Et={delegate:()=>K(`Started: an agent is on it`,`Lancée : un agent s’en occupe`),stop:()=>K(`Stopped`,`Arrêtée`),fix:()=>K(`Sent to the agent to fix`,`Envoyée à l’agent pour correction`),retry:()=>K(`Sent back to its agent`,`Renvoyée à son agent`),review:()=>K(`Review sent back to the agent`,`Remarques renvoyées à l’agent`),finish:()=>K(`Taken as it is: checks, then review`,`Prise telle quelle : vérifications puis relecture`),restore:()=>K(`Restored`,`Restaurée`)};async function Dt(e,t){let n=i.task;if(!n||A.value||e===`delegate`&&je.value)return;let r=bt(),a=i.machine;if(e===`stop`&&!await R(K(`Stop the agent of “${n.title}”? Its turn ends now; the task stays, and Retry or Start picks it up again.`,`Arrêter l’agent de « ${n.title} » ? Son tour s’arrête maintenant ; la tâche reste, Réessayer ou Lancer la reprend.`),K(`Stop the agent`,`Arrêter l’agent`))||e===`finish`&&!await R(Sr(n.title,F.value?.chat),br(F.value?.chat),`primary`)||!St(r))return;let o=X;A.value=!0,j.value=e,M.value=``;try{let r=e===`delegate`?Ie.value:null,i=e===`delegate`&&Ne.value?Pe.value:null,s=await G(`/api/tasks/action`,{machine:a,id:n.id,action:e,...r?{agent:r}:{},...i?{effort:i}:{},...e===`delegate`&&t?.length?{after:t}:{}});if(e===`delegate`&&o===X&&pt(),Me(),e===`archive`){o===X&&(m.value=!1),p(`archived`,a,n);return}ke(s.msg||(e===`finish`&&F.value?.chat?K(`Conversation ended`,`Conversation terminée`):Et[e]())),e===`restore`&&o===X&&(te.value=!0),e===`restore`&&p(`restored`,a,n),await xt(o)}catch(e){Z(e,o)}finally{o===X&&(A.value=!1,j.value=null)}}function Ot(){Y.value.length&&Dt(`delegate`,Y.value.map(e=>e.ref))}async function kt(){let e=i.task;if(!e||A.value||!at.value)return;let t=i.machine,n=X;A.value=!0,M.value=``;try{let r=await G(`/api/tasks/after`,{machine:t,id:e.id});Me(),ke(r.msg||K(`No longer waiting`,`N’attend plus`)),await xt(n)}catch(e){Z(e,n)}finally{n===X&&(A.value=!1)}}async function At(){let e=i.task;if(!e||P.value||A.value||!x.value.trim()||H.value)return;let t=i.machine,n=X;A.value=!0,M.value=``;try{await G(`/api/tasks/question`,{machine:t,id:e.id,text:x.value.trim()}),n===X&&(x.value=``,m.value=!1,p(`coordinator`,t,e))}catch(e){Z(e,n)}finally{n===X&&(A.value=!1)}}function jt(){i.task&&!A.value&&(m.value=!1,p(`coordinator`,i.machine,i.task))}function Mt(){let e=i.task;e&&xe.value&&(m.value=!1,p(`chat`,i.machine,e))}return(e,r)=>{let i=$t,s=ne,p=re,g=dr,w=vr,N=le,te=ut,I=se;return l(),o(f(n.embedded?`section`:ae),{open:m.value,"onUpdate:open":r[16]||=e=>m.value=e,title:n.task?.title||(`tl`in e?e.tl:a(K))(`Task`,`Tâche`),wide:``},{default:E(()=>[n.task?(l(),u(`div`,Pr,[n.embedded?c(``,!0):(l(),u(`p`,Fr,[h(i,{value:a(be)},null,8,[`value`]),S(`span`,{class:v([`task-state`,n.task.group])},y((`taskGroupLabel`in e?e.taskGroupLabel:a(gt))(n.task.group)),3),a(P)?(l(),u(`span`,Ir,[h(s,{name:`i-lucide-archive`}),t(y((`tl`in e?e.tl:a(K))(`Archived`,`Archivée`)),1)])):c(``,!0),n.task.app?(l(),u(`span`,Lr,y(n.task.app),1)):c(``,!0),a(F)?.chat?(l(),u(`span`,Rr,y((`tl`in e?e.tl:a(K))(`Conversation`,`Conversation`)),1)):n.task.research?(l(),u(`span`,zr,y((`tl`in e?e.tl:a(K))(`research`,`recherche`)),1)):c(``,!0),(`multiMachine`in e?e.multiMachine:a(he))&&n.machine!==void 0?(l(),u(`span`,Br,y((`machineName`in e?e.machineName:a(Se))(n.machine)),1)):c(``,!0)])),n.embedded&&a(F)?.chat?(l(),u(`span`,Vr,y((`tl`in e?e.tl:a(K))(`Conversation`,`Conversation`)),1)):c(``,!0),n.embedded&&n.task.group===`working`&&n.task.progress!==null?(l(),u(`p`,Hr,[t(y((`tl`in e?e.tl:a(K))(`Progress`,`Avancement`))+` · `+y(n.task.progress)+`%`,1),n.task.eta===null?c(``,!0):(l(),u(_,{key:0},[t(` · `+y((`tl`in e?e.tl:a(K))(`${n.task.eta} min left`,`${n.task.eta} min restantes`)),1)],64))])):c(``,!0),n.task.msg&&!a(Qe)&&a(Xe)===null?(l(),u(`p`,Ur,y(n.task.msg),1)):c(``,!0),a(Xe)===null?c(``,!0):(l(),u(`section`,Wr,[S(`h4`,null,y((`tl`in e?e.tl:a(K))(`In the queue`,`En file`)),1),S(`p`,Gr,[h(s,{name:`i-lucide-list-ordered`}),t(y((`tl`in e?e.tl:a(K))(`Waiting for a free slot`,`Attend une place libre`)),1),a(Xe)?(l(),u(_,{key:0},[r[17]||=t(` · `,-1),S(`strong`,null,y(a(wr)(a(Xe))),1)],64)):c(``,!0)])])),a(Qe)?(l(),u(`section`,Kr,[S(`h4`,null,y(a(Qe).waiting?(`tl`in e?e.tl:a(K))(`Waiting`,`En attente`):(`tl`in e?e.tl:a(K))(`To wait for`,`À attendre`)),1),S(`p`,qr,[h(s,{name:`i-lucide-hourglass`}),t(y(a(Qe).waiting?(`tl`in e?e.tl:a(K))(`Waits for`,`Attend`):(`tl`in e?e.tl:a(K))(`Will wait for`,`Attendra`))+` `,1),(l(!0),u(_,null,d(a(Qe).waitsFor,n=>(l(),u(`span`,{key:n,class:v([`task-wait-chip`,{done:!a(Qe).left.includes(n)}]),title:a(Qe).titles[n]||void 0},[t(y(nt(n)),1),a(Qe).left.includes(n)?c(``,!0):(l(),u(`small`,Yr,y((`tl`in e?e.tl:a(K))(`done`,`fait`)),1))],10,Jr))),128))]),a(Qe).forYou?(l(),u(`p`,Xr,y(a(Qe).forYou),1)):c(``,!0),S(`p`,Zr,y(a(Qe).waiting?(`tl`in e?e.tl:a(K))(`It starts by itself once they are done.`,`Elle démarre d’elle-même quand elles sont faites.`):(`tl`in e?e.tl:a(K))(`Once started, it waits for them to be done.`,`Une fois lancée, elle attend qu’elles soient faites.`)),1),a(at)?(l(),o(p,{key:1,color:`neutral`,variant:`outline`,icon:`i-lucide-x`,class:`task-wait-clear`,disabled:a(A)||(`offlineView`in e?e.offlineView:a(H)),onClick:kt},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Stop waiting`,`Ne plus attendre`)),1)]),_:1},8,[`disabled`])):c(``,!0)])):c(``,!0),a(P)?(l(),u(`p`,Qr,y((`tl`in e?e.tl:a(K))(`Archived: read-only, as in herdr-projects. Restore it to change or start it again.`,`Archivée : en lecture seule, comme dans herdr-projects. Restaure-la pour la modifier ou la relancer.`)),1)):c(``,!0),a(D)&&!a(b)?(l(),u(`p`,$r,y((`t`in e?e.t:a(W))(`Loading…`)),1)):c(``,!0),a(T)?(l(),u(`p`,ei,y(a(T)),1)):c(``,!0),!a(P)&&n.task.stage===`pick`&&a(b)?.stage===`pick`?(l(),u(`section`,ti,[S(`h4`,null,y((`tl`in e?e.tl:a(K))(`Choose an attempt`,`Choisis un essai`)),1),a(b).comparison?.pick?(l(),u(`p`,ni,y((`tl`in e?e.tl:a(K))(`Picker recommends ${a(b).comparison.pick}`,`Le picker recommande ${a(b).comparison.pick}`)),1)):c(``,!0),a(b).comparison?.why?(l(),u(`p`,ri,y(a(b).comparison.why),1)):c(``,!0),a(b).comparison?.error?(l(),u(`p`,ii,y(a(b).comparison.error),1)):c(``,!0),(l(!0),u(_,null,d(a(b).attempts,r=>(l(),u(`div`,{key:r.letter,class:`task-attempt`},[S(`p`,null,[S(`strong`,ai,y(r.letter),1),t(` · `+y(r.agent),1)]),S(`p`,null,[t(y(r.standing===`passed`?(`tl`in e?e.tl:a(K))(`Checks passed`,`Vérifications réussies`):r.standing===`out`?(`tl`in e?e.tl:a(K))(`Not selectable`,`Non sélectionnable`):(`tl`in e?e.tl:a(K))(`Checks not passed yet`,`Vérifications pas encore réussies`)),1),r.standing===`passed`?c(``,!0):(l(),u(_,{key:0},[t(` · `+y(r.stage),1)],64))]),r.stat?(l(),u(`p`,oi,y(r.stat),1)):c(``,!0),a(b).comparison?.notes[r.letter]?(l(),u(`p`,si,y(a(b).comparison.notes[r.letter]),1)):c(``,!0),h(p,{disabled:a(A)||(`offlineView`in e?e.offlineView:a(H))||n.reachable===!1||a(D)||!!a(T)||!a(rt)(a(b),r.letter),onClick:e=>Tt(r.letter)},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Keep ${r.letter}`,`Garder ${r.letter}`)),1)]),_:2},1032,[`disabled`,`onClick`])]))),128)),a(b).attempts?.length?c(``,!0):(l(),u(`p`,ci,y((`tl`in e?e.tl:a(K))(`No attempts available`,`Aucun essai disponible`)),1))])):c(``,!0),a(ge)||a(ye)||a(b)?.branch||a(b)?.agent?(l(),u(`dl`,li,[a(ge)?(l(),u(_,{key:0},[S(`dt`,null,y((`tl`in e?e.tl:a(K))(`Pull request`,`Pull request`)),1),S(`dd`,null,[S(`a`,{href:a(ge),target:`_blank`,rel:`noopener noreferrer`},[t(y(a(Ze)(a(ge))||`PR`)+` `,1),h(s,{name:`i-lucide-external-link`})],8,ui)])],64)):c(``,!0),a(ye)?(l(),u(_,{key:1},[S(`dt`,null,y((`tl`in e?e.tl:a(K))(`Review`,`Revue`))+y(n.task.reviewRound>1?` · R${n.task.reviewRound}`:``),1),S(`dd`,{class:v(a(ye).pass===!1?`fail`:a(ye).pass?`pass`:``)},y(a(ye).pass===!1?(`tl`in e?e.tl:a(K))(`Fail`,`Échec`):a(ye).pass?(`tl`in e?e.tl:a(K))(`Pass`,`Validée`):``)+y(a(ye).tally?` · ${a(ye).tally}`:``)+y(a(ye).by?` · ${a(ye).by}`:``),3)],64)):c(``,!0),a(b)?.branch?(l(),u(_,{key:2},[S(`dt`,null,y((`tl`in e?e.tl:a(K))(`Branch`,`Branche`)),1),S(`dd`,di,y(a(b).branch),1)],64)):c(``,!0),a(b)?.agent?(l(),u(_,{key:3},[S(`dt`,null,y((`tl`in e?e.tl:a(K))(`Agent`,`Agent`)),1),S(`dd`,null,y(a(b).agent),1)],64)):c(``,!0)])):c(``,!0),a(b)?.handovers?.length?(l(),u(`section`,fi,[S(`h4`,null,y((`t`in e?e.t:a(W))(`Handovers`)),1),S(`ol`,pi,[(l(!0),u(_,null,d(a(b).handovers,(n,r)=>(l(),u(`li`,{key:r,class:`task-sheet-text`},[n.role?(l(),u(`p`,mi,y(n.role===`worker`?(`t`in e?e.t:a(W))(`Agent`):n.role===`reviewer`?(`t`in e?e.t:a(W))(`Reviewer`):n.role),1)):c(``,!0),n.from?(l(),u(`p`,hi,[S(`span`,null,y((`t`in e?e.t:a(W))(`Previous agent`))+`: `,1),t(y(n.from),1)])):c(``,!0),n.to?(l(),u(`p`,gi,[S(`span`,null,y((`t`in e?e.t:a(W))(`Taken over by`))+`: `,1),t(y(n.to),1)])):c(``,!0),n.why?(l(),u(`p`,_i,y(n.why),1)):c(``,!0),n.at===null?c(``,!0):(l(),u(`time`,{key:4,datetime:new Date(n.at).toISOString(),class:`task-handover-meta`},y(new Date(n.at).toLocaleString()),9,vi))]))),128))])])):c(``,!0),a(b)?.failure&&!a(b).failureStale&&!n.embedded?(l(),u(`div`,yi,[h(s,{name:`i-lucide-triangle-alert`}),S(`p`,null,y(a(b).failure),1)])):c(``,!0),a(b)?.failure&&a(b).failureStale?(l(),u(`section`,bi,[S(`h4`,null,[t(y((`tl`in e?e.tl:a(K))(`Earlier failure`,`Échec précédent`)),1),a(b).failureAt?(l(),u(_,{key:0},[t(` · `+y(new Date(a(b).failureAt).toLocaleString()),1)],64)):c(``,!0)]),S(`p`,xi,y(a(b).failureTitle||a(b).failure),1)])):c(``,!0),a(b)?.description?(l(),u(`section`,Si,[S(`h4`,null,y((`tl`in e?e.tl:a(K))(`Description`,`Description`)),1),S(`p`,Ci,y(a(b).description),1)])):c(``,!0),n.embedded?c(``,!0):(l(),o(g,{key:15,machine:n.machine,id:n.task.id,active:m.value,reachable:n.reachable},null,8,[`machine`,`id`,`active`,`reachable`])),a(b)?.plan?(l(),u(`section`,wi,[S(`h4`,null,y((`tl`in e?e.tl:a(K))(`Plan`,`Plan`)),1),S(`p`,Ti,y(a(b).plan),1)])):c(``,!0),a(b)?.summary?(l(),u(`section`,Ei,[S(`h4`,null,y((`tl`in e?e.tl:a(K))(`Closing note`,`Note de fin`)),1),S(`p`,Di,y(a(b).summary),1)])):c(``,!0),a(b)?.report?(l(),u(`p`,Oi,[S(`span`,null,y(a(b).research?(`tl`in e?e.tl:a(K))(`Research report`,`Rapport de recherche`):(`tl`in e?e.tl:a(K))(`Report`,`Rapport`)),1),a(b).report.link?(l(),u(`a`,{key:0,href:a(b).report.link,target:`_blank`,rel:`noopener noreferrer`},y(a(b).report.file),9,ki)):(l(),u(`span`,Ai,y(a(b).report.file),1))])):c(``,!0),a(b)?.findings?.length?(l(),u(`section`,ji,[S(`h4`,null,y((`tl`in e?e.tl:a(K))(`Review findings`,`Remarques de relecture`)),1),(l(!0),u(_,null,d(a(b).findings,(e,n)=>(l(),u(`p`,{key:n,class:`task-sheet-text`},[t(y(e.severity)+` · `+y(e.title),1),e.detail?(l(),u(_,{key:0},[t(` — `+y(e.detail),1)],64)):c(``,!0)]))),128))])):c(``,!0),a(b)?.limits?(l(),u(`dl`,Mi,[S(`dt`,null,y((`tl`in e?e.tl:a(K))(`Time used · this run`,`Temps consommé · cette tranche`)),1),S(`dd`,null,y(a(b).limits.timeUsed||(`tl`in e?e.tl:a(K))(`Not provided`,`Non renseigné`)),1),S(`dt`,null,y((`tl`in e?e.tl:a(K))(`Time limit`,`Plafond de temps`)),1),S(`dd`,null,y(a(b).limits.time===`none`?(`tl`in e?e.tl:a(K))(`No limit`,`Aucune limite`):a(b).limits.time||(`tl`in e?e.tl:a(K))(`Not provided`,`Non renseigné`)),1),S(`dt`,null,y((`tl`in e?e.tl:a(K))(`Token limit`,`Limite de tokens`)),1),S(`dd`,null,[a(b).limits.tokens===`none`?(l(),u(`span`,Ni,y((`tl`in e?e.tl:a(K))(`No limit`,`Aucune limite`)),1)):(l(),o(w,{key:1,value:a(b).limits.tokens},null,8,[`value`]))]),S(`dt`,null,y((`tl`in e?e.tl:a(K))(`Tokens used · whole task`,`Jetons consommés · toute la tâche`)),1),S(`dd`,null,[h(w,{value:a(b).limits.tokensUsed},null,8,[`value`])])])):c(``,!0),a(P)?c(``,!0):(l(),u(`section`,Pi,[S(`div`,Fi,[h(p,{color:`neutral`,variant:`outline`,icon:`i-lucide-message-circle-question-mark`,"aria-expanded":a(C),disabled:a(A)||(`offlineView`in e?e.offlineView:a(H)),onClick:r[0]||=e=>C.value=!a(C)},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Ask the coordinator`,`Demander au coordinateur`)),1)]),_:1},8,[`aria-expanded`,`disabled`]),h(p,{color:`neutral`,variant:`ghost`,disabled:a(A)||(`offlineView`in e?e.offlineView:a(H)),onClick:jt},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Coordinator replies`,`Réponses du coordinateur`)),1)]),_:1},8,[`disabled`])]),a(C)?(l(),u(`form`,{key:0,class:`task-question sheet-form`,onSubmit:ee(At,[`prevent`])},[S(`label`,Ii,y((`tl`in e?e.tl:a(K))(`Your question about this task`,`Ta question sur cette tâche`)),1),h(N,{id:`task-question`,modelValue:a(x),"onUpdate:modelValue":r[1]||=e=>O(x)?x.value=e:null,maxlength:a(Ye),disabled:a(A),rows:3},null,8,[`modelValue`,`maxlength`,`disabled`]),S(`p`,null,y((`tl`in e?e.tl:a(K))(`The project coordinator answers in its chat. Asking leaves the task as it is.`,`Le coordinateur du projet répond dans son chat. Poser une question laisse la tâche en l’état.`)),1),S(`div`,Li,[h(p,{type:`submit`,loading:a(A),disabled:a(A)||(`offlineView`in e?e.offlineView:a(H))||!a(x).trim()},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Send question`,`Envoyer la question`)),1)]),_:1},8,[`loading`,`disabled`])])],32)):c(``,!0)])),a(z).delegate?(l(),u(`div`,{key:22,class:`task-start-agent`,role:`radiogroup`,"aria-label":(`tl`in e?e.tl:a(K))(`Agent for this start`,`Agent pour ce lancement`)},[S(`span`,zi,y((`tl`in e?e.tl:a(K))(`Agent`,`Agent`)),1),a(U)?c(``,!0):(l(),u(`span`,Bi,y(a(Ce)?(`t`in e?e.t:a(W))(`Loading…`):(`tl`in e?e.tl:a(K))(`the task’s default`,`celui de la tâche par défaut`)),1)),(l(!0),u(_,null,d(a(De),t=>(l(),u(`button`,{key:t.id??``,type:`button`,role:`radio`,class:v([`task-start-chip`,{on:Le(t),off:!t.usable}]),"aria-checked":Le(t),disabled:a(A)||(`offlineView`in e?e.offlineView:a(H))||!t.usable,onClick:e=>we.value=t.id},[t.id||a(U)?.agent?(l(),o(te,{key:0,agent:t.id||a(Ee)},null,8,[`agent`])):c(``,!0),S(`span`,Hi,y(t.label),1),t.isDefault?(l(),u(`small`,Ui,y(Re(t)),1)):c(``,!0)],10,Vi))),128)),a(U)&&a(Fe)&&!(`offlineView`in e?e.offlineView:a(H))?(l(),u(`span`,Wi,[S(`span`,Gi,y((`tl`in e?e.tl:a(K))(`Model`,`Modèle`)),1),(l(),o(it,{key:`${bt()}|${a(Fe)}`,model:a(Ne),"onUpdate:model":r[2]||=e=>O(Ne)?Ne.value=e:null,effort:a(Pe),"onUpdate:effort":r[3]||=e=>O(Pe)?Pe.value=e:null,launch:{machine:n.machine,program:a(Fe)}},null,8,[`model`,`effort`,`launch`]))])):c(``,!0),a(U)?.agent?(l(),u(`span`,Ki,y(He()),1)):c(``,!0),a(je)?(l(),u(`span`,qi,y((`tl`in e?e.tl:a(K))(`${a(Ee)} is not installed on this machine: pick another agent to start it.`,`${a(Ee)} n’est pas installé sur cette machine : choisis un autre agent pour la lancer.`)),1)):c(``,!0),a(Ie)?(l(),u(`span`,Ji,y((`tl`in e?e.tl:a(K))(`For this start only: the default stays.`,`Pour ce lancement seulement : le défaut ne change pas.`)),1)):c(``,!0)],8,Ri)):c(``,!0),a(xe)||a(z).approve||a(z).delegate||a(z).retry||a(z).finish||a(z).stop||a(z).archive||a(z).restore?(l(),u(`div`,Yi,[a(z).restore?(l(),o(p,{key:0,color:`primary`,icon:`i-lucide-archive-restore`,loading:a(j)===`restore`,disabled:a(A)||(`offlineView`in e?e.offlineView:a(H)),onClick:r[4]||=e=>Dt(`restore`)},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Restore`,`Restaurer`)),1)]),_:1},8,[`loading`,`disabled`])):c(``,!0),a(z).delegate?(l(),o(p,{key:1,color:`primary`,icon:a(Ke)?`i-lucide-list-ordered`:`i-lucide-play`,class:`task-start`,loading:a(j)===`delegate`&&!a(J),disabled:a(A)||(`offlineView`in e?e.offlineView:a(H))||a(je),onClick:r[5]||=e=>Dt(`delegate`)},{default:E(()=>[t(y(qe()),1)]),_:1},8,[`icon`,`loading`,`disabled`])):c(``,!0),a(z).delegate?(l(),o(p,{key:2,color:`primary`,variant:`outline`,icon:`i-lucide-hourglass`,class:`task-start-after`,"aria-expanded":a(J),disabled:a(A)||(`offlineView`in e?e.offlineView:a(H))||a(je),onClick:r[6]||=e=>a(J)?pt():ft()},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Start after…`,`Démarrer après…`)),1)]),_:1},8,[`aria-expanded`,`disabled`])):c(``,!0),a(z).approve?(l(),o(p,{key:3,color:`primary`,icon:`i-lucide-check`,loading:a(A)&&!a(j),disabled:a(A)||(`offlineView`in e?e.offlineView:a(H)),onClick:Ct},{default:E(()=>[t(y(n.task.stage===`plan`?(`tl`in e?e.tl:a(K))(`Approve plan`,`Accepter le plan`):(`tl`in e?e.tl:a(K))(`Approve`,`Approuver`)),1)]),_:1},8,[`loading`,`disabled`])):c(``,!0),a(z).retry?(l(),o(p,{key:4,color:`primary`,variant:`outline`,icon:`i-lucide-rotate-ccw`,loading:a(j)===`retry`,disabled:a(A)||(`offlineView`in e?e.offlineView:a(H)),onClick:r[7]||=e=>Dt(`retry`)},{default:E(()=>[t(y(a(B)?(`tl`in e?e.tl:a(K))(`Continue`,`Continuer`):(`tl`in e?e.tl:a(K))(`Retry`,`Réessayer`)),1)]),_:1},8,[`loading`,`disabled`])):c(``,!0),a(B)?(l(),o(p,{key:5,variant:`outline`,disabled:a(A)||(`offlineView`in e?e.offlineView:a(H))||n.reachable===!1,onClick:pe},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Raise limit`,`Relever la limite`)),1)]),_:1},8,[`disabled`])):c(``,!0),a(z).finish?(l(),o(p,{key:6,color:`primary`,variant:`outline`,icon:`i-lucide-flag`,class:`task-finish`,title:a(xr)(a(F)?.chat),"aria-description":a(xr)(a(F)?.chat),loading:a(j)===`finish`,disabled:a(A)||(`offlineView`in e?e.offlineView:a(H)),onClick:r[8]||=e=>Dt(`finish`)},{default:E(()=>[t(y(a(B)&&!a(F)?.chat?(`tl`in e?e.tl:a(K))(`Take as is`,`Prendre tel quel`):a(br)(a(F)?.chat)),1)]),_:1},8,[`title`,`aria-description`,`loading`,`disabled`])):c(``,!0),a(xe)&&!n.embedded?(l(),o(p,{key:7,class:`task-chat`,color:`neutral`,variant:`outline`,icon:`i-lucide-message-square`,onClick:Mt},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Open the chat`,`Ouvrir la discussion`)),1)]),_:1})):c(``,!0),a(z).stop?(l(),o(p,{key:8,color:`error`,variant:`outline`,icon:`i-lucide-square`,loading:a(j)===`stop`,disabled:a(A)||(`offlineView`in e?e.offlineView:a(H)),onClick:r[9]||=e=>Dt(`stop`)},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Stop`,`Arrêter`)),1)]),_:1},8,[`loading`,`disabled`])):c(``,!0),a(z).archive?(l(),o(p,{key:9,color:`neutral`,variant:`ghost`,icon:`i-lucide-archive`,class:`task-archive`,loading:a(j)===`archive`,disabled:a(A)||(`offlineView`in e?e.offlineView:a(H)),onClick:r[10]||=e=>Dt(`archive`)},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Archive`,`Archiver`)),1)]),_:1},8,[`loading`,`disabled`])):c(``,!0)])):c(``,!0),a(de)?(l(),u(`p`,Xi,y((`tl`in e?e.tl:a(K))(`Resuming…`,`Reprise…`)),1)):c(``,!0),a(B)&&n.embedded?(l(),u(`p`,Zi,y(a(ie)),1)):c(``,!0),h(ae,{open:a(V),"onUpdate:open":r[13]||=e=>O(V)?V.value=e:null,title:(`tl`in e?e.tl:a(K))(`Raise limit`,`Relever la limite`),top:``},{default:E(()=>[S(`form`,{class:`sheet-form task-question`,onSubmit:ee(me,[`prevent`])},[S(`p`,null,y((`tl`in e?e.tl:a(K))(`Choose a total ceiling above usage for the limit that stopped this task. Usage is kept; the CLI resumes automatically when this limit is lifted. Enter none to explicitly remove it.`,`Choisis un plafond total supérieur à la consommation pour la limite qui a arrêté cette tâche. La consommation est conservée ; le CLI reprend automatiquement quand cette limite est levée. Saisis none pour la supprimer explicitement.`)),1),S(`p`,Qi,y(a(oe)===`limit.time`?(`tl`in e?e.tl:a(K))(`Reached limit: time per run`,`Limite atteinte : temps par tranche`):a(oe)===`limit.tokens`?(`tl`in e?e.tl:a(K))(`Reached limit: tokens for the whole task`,`Limite atteinte : jetons pour toute la tâche`):(`tl`in e?e.tl:a(K))(`The reached limit is not available. Refresh the task before changing a ceiling.`,`La limite atteinte n’est pas disponible. Actualise la tâche avant de modifier un plafond.`)),1),S(`label`,$i,y(a(oe)===`limit.time`?(`tl`in e?e.tl:a(K))(`New duration (e.g. 4h, 90m, none)`,`Nouvelle durée (ex. 4h, 90m, none)`):(`tl`in e?e.tl:a(K))(`New token count (e.g. 3m, 500k, none)`,`Nouvelle quantité de jetons (ex. 3m, 500k, none)`)),1),h(I,{id:`task-limit-value`,modelValue:a(ue),"onUpdate:modelValue":r[11]||=e=>O(ue)?ue.value=e:null,disabled:a(A)||!a(oe),maxlength:40},null,8,[`modelValue`,`disabled`]),a(ce)?(l(),u(`p`,ea,y(a(ce)),1)):c(``,!0),a(M)?(l(),u(`p`,ta,y(a(M)),1)):c(``,!0),S(`div`,na,[h(p,{color:`neutral`,variant:`outline`,disabled:a(A),onClick:r[12]||=e=>V.value=!1},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Cancel`,`Annuler`)),1)]),_:1},8,[`disabled`]),h(p,{type:`submit`,disabled:a(A)||(`offlineView`in e?e.offlineView:a(H))||!a(oe)||!a(ue).trim(),loading:a(de)},{default:E(()=>[t(y(a(de)?(`tl`in e?e.tl:a(K))(`Resuming…`,`Reprise…`):(`tl`in e?e.tl:a(K))(`Apply limit`,`Appliquer le plafond`)),1)]),_:1},8,[`disabled`,`loading`])])],32)]),_:1},8,[`open`,`title`]),a(z).delegate&&a(Je)?(l(),u(`p`,ra,y(a(Je)),1)):c(``,!0),a(z).delegate&&a(J)?(l(),u(`section`,ia,[S(`h4`,null,y((`tl`in e?e.tl:a(K))(`Start after…`,`Démarrer après…`)),1),S(`p`,aa,y((`tl`in e?e.tl:a(K))(`It starts by itself once these tasks are done. Another machine’s task: machine:KEY-12.`,`Elle démarre d’elle-même quand ces tâches sont faites. Tâche d’une autre machine : machine:CLÉ-12.`)),1),a(Y).length?(l(),u(`p`,oa,[(l(!0),u(_,null,d(a(Y),n=>(l(),u(`span`,{key:n.ref,class:`task-wait-chip`},[t(y(n.ref),1),S(`button`,{type:`button`,class:`task-wait-unchoose`,"aria-label":(`tl`in e?e.tl:a(K))(`Remove ${n.ref}`,`Retirer ${n.ref}`),onClick:e=>_t(n.ref)},[h(s,{name:`i-lucide-x`})],8,sa)]))),128))])):c(``,!0),h(I,{modelValue:a(ot),"onUpdate:modelValue":r[14]||=e=>O(ot)?ot.value=e:null,size:`xl`,class:`w-full task-after-search`,icon:`i-lucide-search`,autocapitalize:`none`,autocorrect:`off`,spellcheck:!1,enterkeyhint:`done`,maxlength:`120`,placeholder:(`tl`in e?e.tl:a(K))(`Key, id or title`,`Clé, id ou titre`),"aria-label":(`tl`in e?e.tl:a(K))(`Task to wait for`,`Tâche à attendre`),onKeydown:r[15]||=k(ee(e=>a(lt)?ht():a(ct)[0]&&mt(a(ct)[0]),[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`aria-label`]),S(`ul`,ca,[a(lt)?(l(),u(`li`,la,[S(`button`,{type:`button`,class:`task-after-choice`,onClick:ht},[S(`span`,ua,y(a(lt)),1),S(`span`,null,y((`tl`in e?e.tl:a(K))(`Wait for this task`,`Attendre cette tâche`)),1)])])):c(``,!0),(l(!0),u(_,null,d(a(ct),t=>(l(),u(`li`,{key:t.ref},[S(`button`,{type:`button`,class:`task-after-choice`,onClick:e=>mt(t)},[S(`span`,fa,y(t.ref),1),S(`span`,pa,y(t.title),1),S(`small`,null,y((`taskGroupLabel`in e?e.taskGroupLabel:a(gt))(t.group)),1)],8,da)]))),128))]),!a(ct).length&&!a(lt)?(l(),u(`p`,ma,y(a(st)?(`t`in e?e.t:a(W))(`Loading…`):(`tl`in e?e.tl:a(K))(`No task to wait for matches.`,`Aucune tâche à attendre ne correspond.`)),1)):c(``,!0),S(`div`,ha,[h(p,{color:`primary`,icon:a(Ke)?`i-lucide-list-ordered`:`i-lucide-hourglass`,loading:a(j)===`delegate`,disabled:a(A)||(`offlineView`in e?e.offlineView:a(H))||a(je)||!a(Y).length,onClick:Ot},{default:E(()=>[t(y(a(Y).length?(`tl`in e?e.tl:a(K))(`Start after ${a(Y).length===1?a(Y)[0].ref:`${a(Y).length} tasks`}`,`Démarrer après ${a(Y).length===1?a(Y)[0].ref:`${a(Y).length} tâches`}`):(`tl`in e?e.tl:a(K))(`Pick a task`,`Choisis une tâche`)),1)]),_:1},8,[`icon`,`loading`,`disabled`]),h(p,{color:`neutral`,variant:`ghost`,disabled:a(j)===`delegate`,onClick:pt},{default:E(()=>[t(y((`t`in e?e.t:a(W))(`Cancel`)),1)]),_:1},8,[`disabled`])])])):c(``,!0),a(z).finish&&!n.embedded?(l(),u(`p`,ga,y(a(ie)),1)):c(``,!0),a(M)?(l(),u(`p`,_a,y(a(M)),1)):c(``,!0)])):c(``,!0)]),_:1},40,[`open`,`title`])}}}),[[`__scopeId`,`data-v-d0b53be8`]]),{__name:`TaskSheet`});function ya(e){return[...e.chat?[`chat`]:[],...e.term?[`term`]:[],...e.reviewer?[`reviewer`]:[],`task`,...e.settings?[`settings`]:[]]}function ba(e,t){let n=ya(e);return t&&n.includes(t)?t:e.chat?`chat`:`task`}var xa=new Map,Sa=e=>xa.get(e)??null;function Ca(e,t){t?xa.set(e,t):xa.delete(e)}function wa(e,t){let n=t===`term`?`chat`:`term`;return e.includes(n)?n:null}function Ta(e){if(e.stage!==`reviewneeds`)return null;let t=e.reviewer?.pane;if(!t||!e.live)return`away`;let n=e.panes.find(e=>e.id===t);return n?n.status===`blocked`?`open`:`quiet`:e.everywhere?.some(e=>e.id===t)?`hidden`:`gone`}var Ea=[`data-kind`,`aria-label`],Da=[`aria-label`,`aria-valuenow`,`aria-valuemin`,`aria-valuemax`,`title`],Oa={class:`board-panel-head`},ka={class:`board-panel-who`},Aa={class:`board-panel-path`},ja={class:`board-panel-machine`},Ma={key:0,class:`board-panel-repo`},Na=[`title`],Pa={class:`board-panel-name`},Fa=[`title`],Ia={class:`board-panel-title`},La={key:0,class:`task-chip`},Ra={key:2,class:`board-panel-purpose`},za={key:1,class:`board-panel-autopilot`},Ba=[`aria-label`],Va=[`aria-pressed`,`aria-label`,`aria-description`,`title`,`onClick`],Ha={key:0,class:`task-new`,"aria-hidden":`true`},Ua={key:3,class:`task-review-context`},Wa=[`data-kind`],Ga={class:`task-needs-type`},Ka=[`title`],qa=[`aria-expanded`,`aria-label`],Ja={key:0},Ya={key:1},Xa={key:2},Za={key:3},Qa=[`data-wait`],$a={key:2,class:`task-needs-findings`},eo={class:`task-needs-findings-head`},to=[`data-severity`],no={class:`task-needs-severity`},ro={class:`task-needs-subject`},io={key:3,class:`task-finish-why`},ao={class:`task-needs-actions`},oo={key:4},so={key:5,class:`error`},co={class:`board-panel-body`},lo={key:0,class:`board-note error`},uo={class:`board-panel-reviewer-bar`},fo={class:`board-panel-reviewer-who`},po={key:6,class:`board-empty board-panel-wait`},mo={key:7,class:`board-note error board-panel-wait`},ho={key:8,class:`board-panel-start task-setup`},go={key:0},_o={for:`board-panel-tell`},vo={key:0,class:`board-panel-away`,role:`status`},yo={key:9,class:`board-empty board-panel-wait`},bo={key:10,class:`board-panel-start`},xo=[`aria-label`],So={class:`board-panel-failed-what`},Co={class:`board-panel-failed-why`},wo={class:`board-panel-failed-next`},To={key:0,class:`board-panel-away`,role:`status`},Eo={key:1,class:`board-empty`},Do={key:2,class:`board-empty board-panel-starting`,role:`status`},Oo={for:`board-panel-first`},ko={key:0,class:`board-panel-away`,role:`status`},Ao={for:`coordinator-agent`},jo={for:`coordinator-model`},Mo={for:`coordinator-effort`},No=`your message sits unsent in its box. Go into it and press enter.`,Po=Object.assign(m({__name:`BoardPanel`,props:{target:{},task:{},machineLabel:{},reachable:{type:Boolean},refresh:{type:Function},refreshKey:{}},emits:[`coordinator`,`close`,`sheet`,`noAgent`,`changed`,`archived`,`restored`],setup(r,{emit:i}){let f=r,{actions:m}=kt(),g=s(`__default`),T=s(``),D=s(`__default`),k=e(()=>{let e=f.target.machine,t=je.value?.find(t=>t.key===e);return[{label:K(`Default`,`Par défaut`),value:`__default`},...we(t?.kinds||Ce.value.kinds||[],Te.value).filter(e=>e!==`shell`).map(e=>({label:ge(e),value:e}))]}),A=e(()=>[{label:K(`Default`,`Par défaut`),value:`__default`},...[`low`,`medium`,`high`,`xhigh`,`max`].map(e=>({label:e,value:e}))]),N=i,F=s(null),L=s(null),z=s(!1),ie=s(``),B=s(!1),ae=e=>!!f.task&&Ve(f.task,e).tell,V=0;async function oe(e=!1){let t=f.target;if(t.kind!==`task`)return;let n=++V;e||(F.value=null,L.value=null,ie.value=``,z.value=!0);try{let e=await G(`/api/tasks/details?machine=${encodeURIComponent(t.machine)}&id=${encodeURIComponent(t.id)}`);if(n!==V)return;if(L.value=e,!e.pane){B.value=ae(e),F.value=null;return}B.value=!1,F.value=e.pane}catch(t){n===V&&!e&&(ie.value=t.message)}finally{n===V&&(z.value=!1)}}w(()=>f.target.kind===`task`?`${f.target.machine}|${f.target.id}`:``,e=>{e&&oe()},{immediate:!0}),w(()=>f.task?`${f.task.stage}|${f.task.group}|${f.task.state}|${f.task.msg}`:``,(e,t)=>{e&&t&&e!==t&&oe(!0)});let fe=s(``),me=s(!1);async function he(e){let t=f.target,n=(e??fe.value).trim();if(t.kind===`task`&&n&&!me.value&&f.reachable){me.value=!0;try{await G(`/api/tasks/tell`,{machine:t.machine,id:t.id,text:n}),Me(),ke(Ye.value?K(`Sent to the reviewer`,`Envoyé au relecteur`):K(`Sent to the task’s agent`,`Envoyé à l’agent de la tâche`)),e===void 0&&(fe.value=``),oe(!0)}catch(e){ke(e.message,!0)}finally{me.value=!1}}}let _e=s(!1),ye=s(!0),xe=s(!1),Se=s(``),U=e(()=>ve.value.panes.find(e=>e.id===F.value)),De=e(()=>{let e=L.value?.identity||f.task?.identity;return{agent:U.value?.agent||e?.agent||L.value?.agent||f.task?.app||``,reviewer:q.value&&(e?.reviewer||Pt.value?.agent)||``,from:e?.from||``}}),q=e(()=>[`reviewing`,`reviewneeds`].includes(L.value?.stage||f.task?.stage||``)),Ae=e(()=>!!(U.value&&pe(U.value))&&!(f.task?.stage===`failed`&&[`start`,`setup`,`attempts`].includes(L.value?.failureStage||``))),Fe=e(()=>U.value?K(`Herdr agent: ${I(U.value)}`,`Agent Herdr : ${I(U.value)}`):K(`Agent not running`,`Agent arrêté`)),Ie=e(()=>f.task?Ve(f.task,L.value):null),Be=e(()=>f.task&&Le(f.task,L.value)),He=e(()=>f.task&&Ue(f.task,L.value)),Ke=e(()=>!!(f.task&&Re(f.task,L.value))),qe=e(()=>Ke.value?Ne(L.value?.findings):null),Ye=e(()=>(L.value?.stage||f.task?.stage)===`reviewneeds`),Xe=e(()=>!!(xe.value||H.value||!f.reachable||f.task?.stale)),Ze=e(()=>f.task?Ge(f.task):null),Qe=s(0);async function $e(){Xt(`task`),await x(),Qe.value++}let et=e(()=>!!(f.task&&Ie.value?.finish&&Cr(f.task,U.value?.status??null))),tt=e(()=>et.value&&Ze.value===`stuck`),nt=e(()=>f.task?.group===`needs`),rt=e(()=>L.value&&!L.value.failureStale?L.value:null),it=e(()=>f.task?.stage===`pick`),J=e(()=>it.value?K(`Choose an attempt`,`Choisis un essai`):rt.value?.failureTitle||L.value?.msg||f.task?.msg||U.value?.prompt?.question||K(`Your answer is needed`,`Ta réponse est attendue`)),ot=e(()=>rt.value?.failureDetail||rt.value?.failure||``),st=e(()=>nt.value&&!it.value&&!rt.value?.failureTitle&&!ot.value?en(f.task?.kind):null),ct=e(()=>J.value),lt=e(()=>f.task?.stage===`asks`),dt=e(()=>!!(st.value&&st.value!==`auth`&<.value)),ft=e(()=>dt.value&&!!Ie.value?.tell),pt=e(()=>ft.value&&st.value===`question`?pn(ct.value):[]),mt=e(()=>ft.value&&st.value===`permission`),ht=e(()=>_n(ct.value)),X=e(()=>me.value||Xe.value),Z=s(!1),St=s(null),Ct=s(!1);function wt(){let e=St.value;e&&!Z.value&&(Ct.value=e.scrollWidth>e.clientWidth+1)}w(St,(e,t,n)=>{if(!e||typeof ResizeObserver>`u`)return;let r=new ResizeObserver(wt);r.observe(e),n(()=>r.disconnect())}),w(ct,()=>{Z.value=!1,x(wt)});let Tt=s(null);async function Et(e){for(let t=0;t<60;t++){await x();let t=Tt.value?.querySelector(`.board-panel-body`),n=t?e(t):null;if(n)return n;await new Promise(e=>setTimeout(e,50))}return null}async function Dt(){Xt(`chat`),(await Et(e=>e.querySelector(`.composer textarea, #board-panel-tell`)))?.focus()}let Ot=e(()=>!!(st.value&&F.value&&Ae.value));async function At(){Xt(`chat`);let e=await Et(e=>yn(e,ct.value));e&&(e.scrollIntoView({block:`center`,behavior:`smooth`}),e.classList.remove(`msg-lit`),e.offsetWidth,e.classList.add(`msg-lit`),setTimeout(()=>e.classList.remove(`msg-lit`),2600))}function jt(e){switch(e){case`critical`:return K(`Critical`,`Critique`);case`major`:return K(`Major`,`Majeur`);case`minor`:return K(`Minor`,`Mineur`);case`trivial`:return K(`Trivial`,`Trivial`);default:return e||K(`Finding`,`Remarque`)}}function Mt(e){return e===`settings`?K(`Settings`,`Réglages`):e===`chat`?W(`Conversation`):e===`term`?W(`Terminal`):e===`reviewer`?K(`Reviewer`,`Relecteur`):K(`Task`,`Tâche`)}let Nt=e(()=>nt.value&&(f.task?.stage===`reviewneeds`||L.value?.stage===`reviewneeds`)),Q=e(()=>{let e=L.value?.reviewer?.pane;return e&&ve.value.panes.some(t=>t.id===e)?e:null}),Pt=e(()=>ve.value.panes.find(e=>e.id===Q.value)),Ft=e(()=>Pt.value?K(`Reviewer: ${I(Pt.value)}`,`Relecteur : ${I(Pt.value)}`):K(`Reviewer`,`Relecteur`)),It=e(()=>Nt.value&&L.value?.stage===`reviewneeds`?Ta({stage:`reviewneeds`,reviewer:L.value.reviewer,panes:ve.value.panes,everywhere:Ee.value.panes,live:ve.value.ok&&f.reachable!==!1}):null),$=e(()=>{if(!q.value||Q.value||!Ee.value.ok)return null;let e=Ee.value.panes.find(e=>e.id===L.value?.reviewer?.pane),t=e&&Ee.value.machines?.find(t=>t.key===(e.machine||``));return t?{baseKey:t.baseKey??t.key,name:t.session||`default`}:null}),Lt=s(!1);async function Rt(){let e=$.value;if(e&&!Lt.value){Lt.value=!0;try{await Oe(e.baseKey,e.name),Xt(`reviewer`,!0)}catch(e){ke(e.message,!0)}finally{Lt.value=!1}}}let zt=e(()=>{switch(It.value){case`quiet`:return K(`The reviewer shows no dialog now: the board moves on by itself in a few seconds.`,`Le relecteur n’affiche plus de dialogue : le tableau reprend tout seul dans quelques secondes.`);case`gone`:return K(`The reviewer’s pane is closed: no dialog is left to answer. If the task stays here, stop it from the Task tab.`,`Le pane du relecteur est fermé : plus aucun dialogue à répondre. Si la tâche reste bloquée ici, arrête-la depuis l’onglet Tâche.`);case`hidden`:return $.value?K(`The reviewer runs in the session “${$.value.name}”, which this device does not show. Switch to it to answer.`,`Le relecteur tourne dans la session « ${$.value.name} », que cet appareil n’affiche pas. Passe sur cette session pour répondre.`):K(`The reviewer runs in a session this device does not show.`,`Le relecteur tourne dans une session que cet appareil n’affiche pas.`);case`away`:return K(`wherdr cannot reach the reviewer’s pane. Answer it on ${f.machineLabel}, in the task’s space: its Reviewer tab.`,`wherdr ne peut pas joindre le pane du relecteur. Réponds-y sur ${f.machineLabel}, dans l’espace de la tâche : son onglet Reviewer.`);default:return``}}),Bt=s(null),Vt=e(()=>Bt.value??(Pt.value&&pe(Pt.value)?`chat`:`term`));w(Q,()=>{Bt.value=null});let Ht=e(()=>f.target.kind===`task`?`${f.target.machine}|${f.target.id}`:``),Ut=s(Sa(Ht.value)),Wt=e(()=>!z.value||L.value!==null),Gt=e(()=>({chat:!!F.value||B.value||!(!ot.value||nt.value),term:!!F.value,reviewer:!!Q.value,settings:f.target.kind===`task`})),Kt=e(()=>ya(Gt.value)),qt=e(()=>ba(Gt.value,Ut.value)),Jt=e(()=>wa(Kt.value,qt.value));function Xt(e,t=!1){(t||e!==qt.value)&&(Ut.value=e,Ca(Ht.value,e))}w(()=>f.target,e=>{e.kind===`task`&&e.chat&&Xt(`chat`,!0)},{immediate:!0}),w([Kt,Wt],()=>{Wt.value&&!ie.value&&Ut.value&&!Kt.value.includes(Ut.value)&&(Ut.value=null,Ca(Ht.value,null))});let Zt=e(()=>JSON.stringify([L.value?.summary,L.value?.review,L.value?.findings])),Qt=s(``),nn=e(()=>!!(L.value?.summary||L.value?.review)&&Zt.value!==Qt.value);w([qt,Zt],()=>{qt.value===`task`&&(Qt.value=Zt.value)});function rn(e,t){N(`archived`,e,t),N(`close`)}function an(e,t){N(`restored`,e,t)}async function on(){f.refresh?await f.refresh():N(`changed`),await oe(!0)}async function sn(e){let t=f.target;if(!(t.kind!==`task`||Xe.value)&&(e!==`anyway`||He.value)&&(e!==`fix`||Be.value)&&(e!==`review`||Ke.value)&&(e!==`finish`||et.value&&await R(Sr(f.task?.title||L.value?.title||``,f.task?.chat),br(f.task?.chat),`primary`))&&(e!==`approve`&&e!==`anyway`||await R(e===`anyway`?K(`Approve despite the failed review or checks? This merges the work.`,`Approuver malgré la relecture ou les contrôles en échec ? Cela fusionne le travail.`):K(`Approve this task?`,`Approuver cette tâche ?`),e===`anyway`?K(`Approve anyway`,`Approuver quand même`):K(`Approve`,`Approuver`),`primary`))&&!(f.target!==t||Xe.value)){xe.value=!0,Se.value=``;try{await G(e===`approve`||e===`anyway`?`/api/tasks/approve`:`/api/tasks/action`,{machine:t.machine,id:t.id,...e===`approve`||e===`anyway`?{anyway:e===`anyway`}:{action:e}}),Me(),await on()}catch(e){Se.value=e.message}finally{xe.value=!1}}}let cn=0,ln=s(null),un=s(!1),dn=s(``),fn=s(``),mn=s(null),hn,gn=0,bn=0;async function Sn(e){let t=f.target;if(t.kind!==`coordinator`||e!==cn)return;clearTimeout(hn);let n=++bn,r=()=>e===cn&&n===bn;try{let n=new URLSearchParams({machine:t.machine,kind:t.to.kind,...t.to.kind===`project`?{repo:t.to.repo}:{}}),i=await G(`/api/tasks/coordinator?${n}`);if(!r())return;ln.value=i.pane??null,dn.value=i.state??``,fn.value=i.error??``,mn.value=i.queued??null;let a=We({pane:ln.value,state:dn.value,error:fn.value});(i.pane&&ve.value.ok&&!ve.value.panes.some(e=>e.id===i.pane)||a===`starting`||zn.value&&a===`idle`)&&++gn<=40&&(hn=setTimeout(()=>Sn(e),3e3))}catch{r()&&zn.value&&++gn<=40&&(hn=setTimeout(()=>Sn(e),3e3))}finally{r()&&(un.value=!0)}}n(()=>{cn++,clearTimeout(hn)});let Cn=e(()=>ln.value&&ve.value.panes.some(e=>e.id===ln.value)?ln.value:null);function wn(){f.target.kind===`coordinator`&&(gn=0,Sn(cn))}let Tn;w(()=>f.target.kind===`coordinator`&&un.value&&!Cn.value?ve.value.panes.filter(e=>e.agent).map(e=>e.id).join(` `):null,(e,t)=>{e!==null&&t!==null&&e!==t&&(clearTimeout(Tn),Tn=setTimeout(wn,800))}),w(()=>f.target.kind===`coordinator`&&!!ln.value&&ve.value.ok&&!Cn.value,e=>{e&&(clearTimeout(Tn),Tn=setTimeout(wn,800))}),w(()=>f.reachable,(e,t)=>{e&&t===!1&&wn()}),n(()=>clearTimeout(Tn));let En=e(()=>f.target.kind===`task`?F.value:Cn.value),Dn=e(()=>f.target.kind===`task`&&!!F.value&&ve.value.ok&&!ve.value.panes.some(e=>e.id===F.value));w(Dn,e=>{e&&oe(!0)});let On=e(()=>f.target.kind===`coordinator`?Pe(f.target.to,f.machineLabel):``),kn=e(()=>f.target.kind===`coordinator`?te(f.target.to,f.machineLabel):``),An=e(()=>{let e=On.value;return e?K(`The ${e} coordinator`,`Le coordinateur ${e}`):K(`The Coordinator`,`Le Coordinateur`)}),jn=e(()=>We({pane:ln.value,state:dn.value,error:fn.value})),Mn=e(()=>fn.value===No),Nn=e(()=>Mn.value?K(`Message could not be sent`,`Envoi du message impossible`):K(`Could not start`,`Démarrage impossible`)),Pn=e(()=>{let e=mn.value;return e===null?K(`The message queue status is unavailable.`,`L’état de la file de messages est indisponible.`):e===0?K(`No message is waiting.`,`Aucun message en attente.`):e===1?K(`1 message still waiting: it goes in once it runs.`,`1 message attend toujours : il part dès qu’il tourne.`):K(`${e} messages still waiting: they go in once it runs.`,`${e} messages attendent toujours : ils partent dès qu’il tourne.`)}),Fn=e(()=>{let e=f.target;return e.kind===`task`?f.task?.repo||e.id.split(`/`)[0]||``:e.to.kind===`project`?e.to.repo:``}),In=e(()=>{let e=f.target;return e.kind===`task`?ze(e.id,f.task?.repoKey):``}),Ln=s(``),Rn=s(!1),zn=s(!1),Bn=s(!1);w(()=>JSON.stringify(f.target),()=>{cn++,clearTimeout(hn),clearTimeout(Tn),gn=0,Ln.value=``,zn.value=!1,Rn.value=!1,Bn.value=!1,ln.value=null,un.value=!1,dn.value=``,fn.value=``,mn.value=null,Sn(cn)},{immediate:!0});async function Vn(){let e=f.target,t=Ln.value.trim();if(e.kind!==`coordinator`||!t||Rn.value||!f.reachable)return;let n=cn;Rn.value=!0;try{if(await G(`/api/tasks/coordinator`,{machine:e.machine,text:t,to:e.to,...e.freshProject&&g.value!==`__default`?{start:{agent:g.value+(T.value.trim()?`/${T.value.trim()}`:``),...D.value===`__default`?{}:{effort:D.value}}}:{}}),Me(),n!==cn)return;Ln.value=``,M(),N(`changed`),zn.value=!0,dn.value=`starting`,fn.value=``,gn=0,Sn(n)}catch(e){ke(e.message,!0),n===cn&&Sn(n)}finally{n===cn&&(Rn.value=!1)}}async function Hn(){let e=f.target;if(e.kind!==`coordinator`||Bn.value||!f.reachable)return;let t=cn;Bn.value=!0;try{if(await G(`/api/tasks/coordinator`,{machine:e.machine,to:e.to,restart:!0}),Me(),t!==cn)return;zn.value=!0,dn.value=`starting`,fn.value=``,gn=0,Sn(t)}catch(e){t===cn&&ke(e.message,!0)}finally{t===cn&&(Bn.value=!1)}}function Un(e){e.key===`Escape`&&be.value&&!e.defaultPrevented&&(document.querySelector(`.hw-sheet`)||N(`close`))}p(()=>window.addEventListener(`keydown`,Un)),n(()=>window.removeEventListener(`keydown`,Un));let Wn=s(null),Gn=s(!1),Kn;p(()=>{Wn.value=yt()}),w(Wn,e=>{document.documentElement.style.setProperty(`--board-panel-w`,bt(e))},{immediate:!0}),n(()=>{Kn?.(),document.documentElement.style.removeProperty(`--board-panel-w`)});function Jn(){return Tt.value?.getBoundingClientRect().width||320}function Yn(e){let t=document.getElementById(`board`);Wn.value=xt(e,window.innerWidth-(t?.getBoundingClientRect().left||0))}function Xn(){Wn.value=null,_t(null)}function Zn(e){if(e.button!==0)return;e.preventDefault(),Kn?.();let t=e.currentTarget,n=e.clientX,r=Jn();t.setPointerCapture(e.pointerId),Gn.value=!0;let i=e=>Yn(r+n-e.clientX),a=()=>{t.removeEventListener(`pointermove`,i),t.removeEventListener(`pointerup`,a),t.removeEventListener(`pointercancel`,a),t.removeEventListener(`lostpointercapture`,a),Gn.value=!1,_t(Wn.value),Kn=void 0};Kn=a,t.addEventListener(`pointermove`,i),t.addEventListener(`pointerup`,a),t.addEventListener(`pointercancel`,a),t.addEventListener(`lostpointercapture`,a)}function Qn(e){if(e.key===`Home`||e.key===`Enter`)return e.preventDefault(),Xn();let t=e.shiftKey?64:16,n=e.key===`ArrowLeft`?t:e.key===`ArrowRight`?-t:0;n&&(e.preventDefault(),Yn(Jn()+n),_t(Wn.value))}let $n=e(()=>!be.value&&ue.value?{height:`${ce.value}px`,top:`${de.value}px`}:{});return(e,n)=>{let i=re,s=ne,f=ut,p=$t,x=Y,w=Yt,M=xn,te=qn,F=dr,R=va,ae=at,V=le,oe=vt,ce=se;return l(),u(`aside`,{ref_key:`panelEl`,ref:Tt,class:v([`board-panel`,{desk:`desk`in e?e.desk:a(be),expanded:a(_e),resizing:a(Gn)}]),style:b(a($n)),"data-kind":r.target.kind,"aria-label":(`tl`in e?e.tl:a(K))(`Conversation`,`Conversation`)},[(`desk`in e?e.desk:a(be))&&!a(_e)?(l(),u(`div`,{key:0,class:v([`list-handle panel-handle`,{dragging:a(Gn)}]),role:`separator`,"aria-orientation":`vertical`,tabindex:`0`,"aria-label":(`t`in e?e.t:a(W))(`Ticket panel width`),"aria-valuenow":a(Wn)??Math.round(Jn()),"aria-valuemin":a(320),"aria-valuemax":a(960),title:(`t`in e?e.t:a(W))(`Drag to resize · double-click: default width`),onPointerdown:Zn,onDblclick:Xn,onKeydown:Qn},null,42,Da)):c(``,!0),S(`header`,Oa,[(`desk`in e?e.desk:a(be))?c(``,!0):(l(),o(i,{key:0,icon:`i-lucide-chevron-left`,color:`neutral`,variant:`ghost`,size:`lg`,class:`icon-btn board-panel-back`,"aria-label":(`tl`in e?e.tl:a(K))(`Back to the Board`,`Retour au Board`),onClick:n[0]||=e=>N(`close`)},null,8,[`aria-label`])),S(`div`,ka,[S(`p`,Aa,[S(`span`,ja,[h(s,{name:`i-lucide-server`}),t(y(r.machineLabel),1)]),a(Fn)?(l(),u(`span`,Ma,y(a(Fn)),1)):c(``,!0),r.target.kind===`task`&&a(De).agent?(l(),u(`span`,{key:1,title:a(Fe)},`· `+y(a(De).agent),9,Na)):c(``,!0)]),S(`p`,Pa,[r.target.kind===`task`?(l(),u(_,{key:0},[h(f,{agent:a(De).agent,title:a(Fe)},null,8,[`agent`,`title`]),h(p,{value:a(In)},null,8,[`value`]),S(`span`,{class:`board-panel-title`,title:a(L)?.title||r.task?.title},y(a(L)?.title||r.task?.title),9,Fa),r.task?(l(),u(`span`,{key:0,class:v([`task-state`,r.task.group])},y((`taskGroupLabel`in e?e.taskGroupLabel:a(gt))(r.task.group)),3)):c(``,!0)],64)):(l(),u(_,{key:1},[h(s,{name:`i-lucide-message-square-text`,class:`board-panel-coord-icon`}),S(`span`,Ia,y(a(kn)),1)],64))]),r.target.kind===`task`&&r.task?.chat?(l(),u(`span`,La,y((`tl`in e?e.tl:a(K))(`Conversation`,`Conversation`)),1)):c(``,!0),r.target.kind===`task`?(l(),o(x,{key:1,identity:a(De)},null,8,[`identity`])):c(``,!0),r.target.kind===`coordinator`?(l(),u(`p`,Ra,y((`coordinatorDescription`in e?e.coordinatorDescription:a(P))(r.target.to)),1)):c(``,!0)]),r.target.kind===`task`?(l(),u(_,{key:1},[(`desk`in e?e.desk:a(be))?(l(),o(i,{key:0,icon:a(_e)?`i-lucide-minimize`:`i-lucide-maximize`,color:`neutral`,variant:`ghost`,class:`icon-btn`,"aria-label":a(_e)?(`tl`in e?e.tl:a(K))(`Exit full screen`,`Quitter le plein écran`):(`tl`in e?e.tl:a(K))(`Full screen`,`Plein écran`),onClick:n[1]||=e=>_e.value=!a(_e)},null,8,[`icon`,`aria-label`])):c(``,!0),h(i,{icon:`i-lucide-ellipsis`,color:`neutral`,variant:`ghost`,class:`icon-btn board-panel-sheet`,"aria-label":(`tl`in e?e.tl:a(K))(`Task details and actions`,`Fiche et actions de la tâche`),onClick:n[2]||=e=>N(`sheet`)},null,8,[`aria-label`])],64)):c(``,!0),(`desk`in e?e.desk:a(be))?(l(),o(i,{key:2,icon:`i-lucide-x`,color:`neutral`,variant:`ghost`,size:`md`,class:`icon-btn board-panel-close`,"aria-label":(`t`in e?e.t:a(W))(`Close`),onClick:n[3]||=e=>N(`close`)},null,8,[`aria-label`])):c(``,!0)]),r.target.kind===`coordinator`?(l(),u(`div`,za,[(l(),o(w,{key:JSON.stringify(r.target),machine:r.target.machine,to:r.target.to,disabled:!r.reachable},null,8,[`machine`,`to`,`disabled`]))])):c(``,!0),r.target.kind===`task`&&a(Wt)?(l(),u(`nav`,{key:2,class:`board-panel-tabs`,"aria-label":(`tl`in e?e.tl:a(K))(`Task views`,`Vues de la tâche`)},[(l(!0),u(_,null,d(a(Kt),n=>(l(),u(`button`,{key:n,type:`button`,class:v({on:a(qt)===n,"board-panel-tab-reviewer":n===`reviewer`,asks:n===`reviewer`&&a(It)===`open`}),"aria-pressed":a(qt)===n,"aria-label":Mt(n),"aria-description":n===`task`&&a(nn)?(`tl`in e?e.tl:a(K))(`New task details`,`Nouveaux détails de la tâche`):void 0,title:n===`task`||n===`settings`?void 0:a(n===`reviewer`?Ft:Fe),onClick:e=>Xt(n)},[t(y(Mt(n)),1),n===`task`&&a(nn)?(l(),u(`i`,Ha)):c(``,!0)],10,Va))),128))],8,Ba)):c(``,!0),r.target.kind===`task`&&a(q)&&a(qt)===`chat`?(l(),u(`div`,Ua,[S(`span`,null,y((`tl`in e?e.tl:a(K))(`This is ${(`kindLabel`in e?e.kindLabel:a(ge))(a(De).agent)}’s conversation. The review runs separately.`,`Conversation de ${(`kindLabel`in e?e.kindLabel:a(ge))(a(De).agent)}. La relecture tourne séparément.`)),1),a(Pt)&&!(`offlineView`in e?e.offlineView:a(H))?(l(),u(`button`,{key:0,type:`button`,onClick:n[4]||=e=>{Bt.value=`term`,Xt(`reviewer`)}},y((`tl`in e?e.tl:a(K))(`Open reviewer terminal`,`Ouvrir le terminal du relecteur`)),1)):a($)&&!(`offlineView`in e?e.offlineView:a(H))?(l(),u(`button`,{key:1,type:`button`,onClick:Rt},y((`tl`in e?e.tl:a(K))(`Switch to the reviewer session`,`Passer à la session du relecteur`)),1)):c(``,!0)])):c(``,!0),r.target.kind===`task`&&(a(nt)||a(tt))?(l(),u(`section`,{key:4,class:v([`task-needs`,{"task-needs-wait":a(st)}]),"data-kind":a(st)||void 0,role:`alert`},[a(st)?(l(),u(`div`,{key:0,class:v([`task-needs-line`,{open:a(Z)}])},[S(`span`,Ga,y(a(tn)(a(st))),1),S(`h3`,{ref_key:`waitEl`,ref:St,class:`task-needs-text`,title:a(Z)?void 0:a(ct)},[h(M,{text:a(ct)},null,8,[`text`])],8,Ka),a(Ct)||a(Z)?(l(),u(`button`,{key:0,type:`button`,class:`task-needs-more`,"aria-expanded":a(Z),"aria-label":a(Z)?(`tl`in e?e.tl:a(K))(`Show less`,`Réduire`):(`tl`in e?e.tl:a(K))(`Show all`,`Tout afficher`),onClick:n[5]||=e=>Z.value=!a(Z)},[h(s,{name:a(Z)?`i-lucide-chevron-up`:`i-lucide-chevron-down`},null,8,[`name`])],8,qa)):c(``,!0),a(Ot)?(l(),u(`button`,{key:1,type:`button`,class:`task-needs-see`,onClick:At},y((`tl`in e?e.tl:a(K))(`See ↓`,`Voir ↓`)),1)):c(``,!0)],2)):(l(),u(_,{key:1},[a(nt)?(l(),u(`h3`,Ja,[t(y((`tl`in e?e.tl:a(K))(`Needs you`,`À toi`))+` · `,1),h(M,{text:a(J)},null,8,[`text`])])):(l(),u(`h3`,Ya,y((`tl`in e?e.tl:a(K))(`Finishing`,`Fin en cours`))+` · `+y((`tl`in e?e.tl:a(K))(`its agent is at rest`,`son agent est au repos`)),1)),a(ot)?(l(),u(`pre`,Xa,[h(M,{text:a(ot)},null,8,[`text`])])):c(``,!0),a(rt)?.failureNext?(l(),u(`p`,Za,[h(M,{text:a(rt).failureNext},null,8,[`text`])])):c(``,!0),a(zt)?(l(),u(`p`,{key:4,class:`task-needs-reviewer`,"data-wait":a(It)},y(a(zt)),9,Qa)):c(``,!0)],64)),a(qe)?.list.length?(l(),u(`div`,$a,[S(`span`,eo,y((`tl`in e?e.tl:a(K))(`Review findings`,`Remarques de relecture`)),1),S(`ul`,null,[(l(!0),u(_,null,d(a(qe).list,(e,t)=>(l(),u(`li`,{key:t,"data-severity":e.severity||void 0},[S(`span`,no,y(jt(e.severity)),1),S(`span`,ro,y(e.title),1)],8,to))),128))]),a(qe).more?(l(),u(`button`,{key:0,type:`button`,class:`task-needs-findings-more`,onClick:n[6]||=e=>Xt(`task`)},y((`tl`in e?e.tl:a(K))(`+${a(qe).more} more in Task`,`+${a(qe).more} de plus dans Tâche`)),1)):c(``,!0)])):c(``,!0),a(et)&&a(Ze)?(l(),u(`p`,io,y(a(yr)(a(Ze))),1)):c(``,!0),S(`div`,ao,[a(it)&&a(qt)!==`task`?(l(),o(i,{key:0,onClick:n[7]||=e=>Xt(`task`)},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Choose an attempt`,`Choisis un essai`)),1)]),_:1})):c(``,!0),a(Ke)?(l(),o(i,{key:1,class:`task-needs-review`,color:`primary`,icon:`i-lucide-undo-2`,disabled:a(Xe),onClick:n[8]||=e=>sn(`review`)},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Send the review back to the agent`,`Renvoyer les remarques à l’agent`)),1)]),_:1},8,[`disabled`])):c(``,!0),a(Ie)?.retry?(l(),o(i,{key:2,disabled:a(Xe),onClick:n[9]||=e=>sn(`retry`)},{default:E(()=>[t(y(a(Ze)===`limit`?(`tl`in e?e.tl:a(K))(`Continue`,`Continuer`):(`tl`in e?e.tl:a(K))(`Retry`,`Réessayer`)),1)]),_:1},8,[`disabled`])):c(``,!0),a(Ze)===`limit`?(l(),o(i,{key:3,disabled:a(Xe),onClick:$e},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Raise limit`,`Relever la limite`)),1)]),_:1},8,[`disabled`])):c(``,!0),a(et)?(l(),o(i,{key:4,class:`task-finish`,title:a(xr)(r.task?.chat),"aria-description":a(xr)(r.task?.chat),disabled:a(Xe),onClick:n[10]||=e=>sn(`finish`)},{default:E(()=>[t(y(a(Ze)===`limit`&&!r.task?.chat?(`tl`in e?e.tl:a(K))(`Take as is`,`Prendre tel quel`):a(br)(r.task?.chat)),1)]),_:1},8,[`title`,`aria-description`,`disabled`])):c(``,!0),a(Be)?(l(),o(i,{key:5,disabled:a(Xe),onClick:n[11]||=e=>sn(`fix`)},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Send the error to the agent`,`Envoyer l’erreur à l’agent`)),1)]),_:1},8,[`disabled`])):c(``,!0),a(Ie)?.delegate?(l(),o(i,{key:6,disabled:a(Xe),onClick:n[12]||=e=>sn(`delegate`)},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Start again`,`Relancer`)),1)]),_:1},8,[`disabled`])):c(``,!0),a(mt)?(l(),u(_,{key:7},[h(i,{class:`task-needs-allow`,color:`primary`,disabled:a(X),onClick:n[13]||=e=>he(a(vn)(`allow`))},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Allow`,`Autoriser`)),1)]),_:1},8,[`disabled`]),a(ht)?(l(),o(i,{key:0,class:`task-needs-always`,disabled:a(X),onClick:n[14]||=e=>he(a(vn)(`always`))},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Always allow`,`Toujours autoriser`)),1)]),_:1},8,[`disabled`])):c(``,!0),h(i,{class:`task-needs-refuse`,disabled:a(X),onClick:n[15]||=e=>he(a(vn)(`refuse`))},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Refuse`,`Refuser`)),1)]),_:1},8,[`disabled`])],64)):c(``,!0),(l(!0),u(_,null,d(a(pt),e=>(l(),o(i,{key:e.reply,class:`task-needs-choice`,title:e.label,disabled:a(X),onClick:t=>he(e.reply)},{default:E(()=>[t(y(e.label),1)]),_:2},1032,[`title`,`disabled`,`onClick`]))),128)),a(dt)&&!a(pt).length&&!a(mt)?(l(),o(i,{key:8,class:`task-needs-reply`,icon:`i-lucide-corner-down-left`,disabled:`offlineView`in e?e.offlineView:a(H),onClick:Dt},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Reply…`,`Répondre…`)),1)]),_:1},8,[`disabled`])):c(``,!0),a(Nt)?(l(),u(_,{key:9},[(a(It)===`open`||a(It)===`quiet`)&&a(qt)!==`reviewer`?(l(),o(i,{key:0,class:`task-needs-reviewer-open`,color:a(It)===`open`?`primary`:void 0,disabled:`offlineView`in e?e.offlineView:a(H),onClick:n[16]||=e=>Xt(`reviewer`)},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Open the reviewer`,`Ouvrir le relecteur`)),1)]),_:1},8,[`color`,`disabled`])):a(It)===`hidden`&&a($)?(l(),o(i,{key:1,class:`task-needs-reviewer-session`,color:`primary`,loading:a(Lt),disabled:`offlineView`in e?e.offlineView:a(H),onClick:Rt},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Switch to that session`,`Passer à cette session`)),1)]),_:1},8,[`loading`,`disabled`])):(a(It)===`gone`||a(It)===`away`)&&a(qt)!==`task`?(l(),o(i,{key:2,class:`task-needs-task`,onClick:n[17]||=e=>Xt(`task`)},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Task actions`,`Actions de la tâche`)),1)]),_:1})):c(``,!0)],64)):a(dt)?c(``,!0):(l(),u(_,{key:10},[a(Jt)===`term`&&(!a(st)||a(st)===`auth`)?(l(),o(i,{key:0,class:`task-needs-term`,disabled:(`offlineView`in e?e.offlineView:a(H))||!r.reachable,onClick:n[18]||=e=>Xt(`term`)},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Open terminal`,`Ouvrir le terminal`)),1)]),_:1},8,[`disabled`])):a(Jt)===`chat`&&a(st)!==`auth`?(l(),o(i,{key:1,class:`task-needs-chat`,onClick:n[19]||=e=>Xt(`chat`)},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Answer in the conversation`,`Répondre dans la conversation`)),1)]),_:1})):c(``,!0)],64)),a(He)?(l(),o(i,{key:11,class:`task-needs-anyway`,color:a(Ke)?`neutral`:void 0,variant:a(Ke)?`outline`:void 0,disabled:a(Xe),onClick:n[20]||=e=>sn(`anyway`)},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Approve anyway`,`Approuver quand même`)),1)]),_:1},8,[`color`,`variant`,`disabled`])):a(Ie)?.approve?(l(),o(i,{key:12,disabled:a(Xe),onClick:n[21]||=e=>sn(`approve`)},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Approve`,`Approuver`)),1)]),_:1},8,[`disabled`])):c(``,!0)]),r.reachable?c(``,!0):(l(),u(`p`,oo,y((`tl`in e?e.tl:a(K))(`Machine unavailable`,`Machine indisponible`)),1)),a(Se)?(l(),u(`p`,so,y(a(Se)),1)):c(``,!0)],10,Wa)):c(``,!0),r.target.kind===`coordinator`?(l(),o(te,{key:5,machine:r.target.machine,target:r.target.to,"refresh-key":(r.refreshKey??0)+a(m)},null,8,[`machine`,`target`,`refresh-key`])):c(``,!0),S(`div`,co,[r.target.kind===`task`&&a(Wt)&&a(ie)&&a(qt)===`task`?(l(),u(`p`,lo,y(a(ie)),1)):c(``,!0),r.target.kind===`task`&&a(Wt)?C((l(),o(F,{key:1,machine:r.target.machine,id:r.target.id,active:a(qt)===`settings`,reachable:r.reachable},null,8,[`machine`,`id`,`active`,`reachable`])),[[j,a(qt)===`settings`]]):c(``,!0),r.target.kind===`task`&&a(Wt)&&a(qt)===`task`?(l(),o(R,{key:2,"limit-request":a(Qe),open:a(ye),"onUpdate:open":n[22]||=e=>O(ye)?ye.value=e:null,embedded:``,task:r.task,machine:r.target.machine,reachable:r.reachable,refresh:on,onChat:n[23]||=e=>Xt(`chat`),onCoordinator:n[24]||=(e,t)=>N(`coordinator`,e,t),onArchived:rn,onRestored:an},null,8,[`limit-request`,`open`,`task`,`machine`,`reachable`])):a(qt)===`settings`?(l(),u(_,{key:3},[],64)):r.target.kind===`task`&&a(qt)===`reviewer`&&a(Q)?(l(),u(_,{key:4},[S(`div`,uo,[S(`span`,fo,[t(y((`tl`in e?e.tl:a(K))(`Reviewer`,`Relecteur`)),1),a(Pt)?(l(),u(_,{key:0},[t(` · `+y((`statusLabel`in e?e.statusLabel:a(I))(a(Pt))),1)],64)):c(``,!0)]),a(Pt)&&(`hasChat`in e?e.hasChat:a(pe))(a(Pt))?(l(),u(`button`,{key:0,type:`button`,class:`board-panel-reviewer-mode`,onClick:n[25]||=e=>Bt.value=a(Vt)===`chat`?`term`:`chat`},y(a(Vt)===`chat`?(`t`in e?e.t:a(W))(`Terminal`):(`t`in e?e.t:a(W))(`Conversation`)),1)):c(``,!0)]),(l(),o(ae,{key:`reviewer-${a(Q)}`,"pane-id":a(Q),cell:``,active:``,embedded:``,"selected-mode":a(Vt),"onUpdate:selectedMode":n[26]||=e=>Bt.value=e},null,8,[`pane-id`,`selected-mode`]))],64)):a(En)&&(r.target.kind===`coordinator`||a(qt)===`term`||a(Ae))?(l(),o(ae,{key:a(En),"pane-id":a(En),cell:``,active:``,embedded:r.target.kind===`task`,"onUpdate:selectedMode":n[27]||=e=>Xt(e),"selected-mode":r.target.kind===`task`?a(qt)===`term`?`term`:`chat`:void 0},null,8,[`pane-id`,`embedded`,`selected-mode`])):r.target.kind===`task`&&a(z)?(l(),u(`p`,po,y((`t`in e?e.t:a(W))(`Loading…`)),1)):a(ie)?(l(),u(`p`,mo,y(a(ie)),1)):r.target.kind===`task`?(l(),u(`div`,ho,[S(`h3`,null,y(a(L)?.failureStage===`setup`||a(L)?.failureStage===`start`?(`tl`in e?e.tl:a(K))(`Setup output`,`Sortie du démarrage`):(`tl`in e?e.tl:a(K))(`No agent conversation yet`,`Pas encore de conversation avec l’agent`)),1),a(ot)&&!a(nt)?(l(),u(`pre`,go,y(a(ot)),1)):c(``,!0),S(`p`,null,y((`tl`in e?e.tl:a(K))(`The terminal stays available when the task has a pane. Task details and actions are in the Task tab.`,`Le terminal reste accessible quand la tâche a un pane. Les détails et actions sont dans l’onglet Tâche.`)),1),a(B)?(l(),u(`form`,{key:1,class:`board-panel-first board-panel-tell`,onSubmit:n[29]||=ee(e=>he(),[`prevent`])},[S(`label`,_o,y(a(Ye)?(`tl`in e?e.tl:a(K))(`The reviewer is waiting for an answer: herdr-projects passes your reply on to it.`,`Le relecteur attend une réponse : herdr-projects lui transmet ta réponse.`):r.task?.stage===`plan`?(`tl`in e?e.tl:a(K))(`Its agent is not running now: your words send the plan back, through herdr-projects.`,`Son agent ne tourne pas en ce moment : tes mots renvoient le plan, par herdr-projects.`):(`tl`in e?e.tl:a(K))(`Its agent is not running now: herdr-projects passes your reply on.`,`Son agent ne tourne pas en ce moment : herdr-projects lui transmet ta réponse.`)),1),r.reachable?c(``,!0):(l(),u(`p`,vo,y((`tl`in e?e.tl:a(K))(`${r.machineLabel} cannot be reached now.`,`${r.machineLabel} est injoignable pour l’instant.`)),1)),h(V,{id:`board-panel-tell`,modelValue:a(fe),"onUpdate:modelValue":n[28]||=e=>O(fe)?fe.value=e:null,rows:3,autoresize:``,maxlength:a(Je),placeholder:(`tl`in e?e.tl:a(K))(`Message`,`Message`),disabled:`offlineView`in e?e.offlineView:a(H)},null,8,[`modelValue`,`maxlength`,`placeholder`,`disabled`]),h(i,{type:`submit`,color:`primary`,icon:`i-lucide-send`,loading:a(me),disabled:!a(fe).trim()||(`offlineView`in e?e.offlineView:a(H))||!r.reachable},{default:E(()=>[t(y((`t`in e?e.t:a(W))(`Send`)),1)]),_:1},8,[`loading`,`disabled`])],32)):c(``,!0)])):r.target.kind===`coordinator`&&!a(un)?(l(),u(`p`,yo,y((`t`in e?e.t:a(W))(`Loading…`)),1)):r.target.kind===`coordinator`?(l(),u(`div`,bo,[a(jn)===`failed`?(l(),u(`section`,{key:0,class:`board-panel-failed`,role:`alert`,"aria-label":a(Nn)},[S(`h4`,null,[h(s,{name:`i-lucide-octagon-alert`}),t(y(a(Nn)),1)]),S(`p`,So,y(a(Mn)?(`tl`in e?e.tl:a(K))(`The message was not sent to ${a(kn)} on ${r.machineLabel}.`,`Le message destiné à ${a(kn)} n’a pas été envoyé sur ${r.machineLabel}.`):(`tl`in e?e.tl:a(K))(`${a(An)} could not start on ${r.machineLabel}.`,`${a(An)} n’a pas pu démarrer sur ${r.machineLabel}.`)),1),S(`p`,Co,y(a(fn)),1),S(`p`,wo,y((`tl`in e?e.tl:a(K))(`Fix this on the machine, then try again.`,`Corrige cela sur la machine, puis réessaie.`))+` `+y(a(Pn)),1),r.reachable?c(``,!0):(l(),u(`p`,To,y((`tl`in e?e.tl:a(K))(`${r.machineLabel} cannot be reached now.`,`${r.machineLabel} est injoignable pour l’instant.`)),1)),h(i,{color:`neutral`,variant:`outline`,icon:`i-lucide-rotate-cw`,loading:a(Bn),disabled:(`offlineView`in e?e.offlineView:a(H))||!r.reachable,onClick:Hn},{default:E(()=>[t(y((`t`in e?e.t:a(W))(`Try again`)),1)]),_:1},8,[`loading`,`disabled`])],8,xo)):a(jn)===`live`?(l(),u(`p`,Eo,y((`t`in e?e.t:a(W))(`Loading…`)),1)):a(jn)===`starting`?(l(),u(`p`,Do,y(a(zn)?(`tl`in e?e.tl:a(K))(`Sent. ${a(An)} is starting: its conversation opens here.`,`Envoyé. ${a(An)} démarre : sa conversation s’ouvre ici.`):(`tl`in e?e.tl:a(K))(`${a(An)} is starting: its conversation opens here.`,`${a(An)} démarre : sa conversation s’ouvre ici.`)),1)):(l(),u(`form`,{key:3,class:`board-panel-first`,onSubmit:ee(Vn,[`prevent`])},[S(`label`,Oo,y((`tl`in e?e.tl:a(K))(`Not started yet: your first message starts it.`,`Pas encore démarré : ton premier message le lance.`)),1),r.reachable?c(``,!0):(l(),u(`p`,ko,y((`tl`in e?e.tl:a(K))(`${r.machineLabel} cannot be reached now: your message waits for it here.`,`${r.machineLabel} est injoignable pour l’instant : ton message l’attend ici.`)),1)),r.target.freshProject&&a(dn)===`none`?(l(),u(_,{key:1},[S(`label`,Ao,y((`t`in e?e.t:a(W))(`Agent`)),1),h(oe,{id:`coordinator-agent`,modelValue:a(g),"onUpdate:modelValue":n[30]||=e=>O(g)?g.value=e:null,items:a(k),disabled:a(Rn)},null,8,[`modelValue`,`items`,`disabled`]),a(g)===`__default`?c(``,!0):(l(),u(_,{key:0},[S(`label`,jo,y((`t`in e?e.t:a(W))(`Model`))+` `+y((`t`in e?e.t:a(W))(`(optional)`)),1),h(ce,{id:`coordinator-model`,modelValue:a(T),"onUpdate:modelValue":n[31]||=e=>O(T)?T.value=e:null,disabled:a(Rn),autocapitalize:`none`,autocorrect:`off`,spellcheck:!1},null,8,[`modelValue`,`disabled`]),S(`label`,Mo,y((`t`in e?e.t:a(W))(`Effort`)),1),h(oe,{id:`coordinator-effort`,modelValue:a(D),"onUpdate:modelValue":n[32]||=e=>O(D)?D.value=e:null,items:a(A),disabled:a(Rn)},null,8,[`modelValue`,`items`,`disabled`])],64))],64)):c(``,!0),h(V,{id:`board-panel-first`,modelValue:a(Ln),"onUpdate:modelValue":n[33]||=e=>O(Ln)?Ln.value=e:null,rows:3,autoresize:``,maxlength:a(Je),placeholder:(`tl`in e?e.tl:a(K))(`Message`,`Message`),disabled:`offlineView`in e?e.offlineView:a(H)},null,8,[`modelValue`,`maxlength`,`placeholder`,`disabled`]),h(i,{type:`submit`,color:`primary`,icon:`i-lucide-send`,loading:a(Rn),disabled:!a(Ln).trim()||(`offlineView`in e?e.offlineView:a(H))||!r.reachable},{default:E(()=>[t(y((`t`in e?e.t:a(W))(`Send`)),1)]),_:1},8,[`loading`,`disabled`])],32))])):c(``,!0)])],14,Ea)}}}),{__name:`BoardPanel`}),Fo=[`machine`,`defaults`,`repo`],Io=[`worker`,`review`,`plan`,`attempts`,`merge`,`limits`,`workspace`,`check`,`modes`,`other`],Lo=[`board`,`coordinator`,`autopilot`,`watcher`,`voice`,`other`];function Ro(e){let t=e.split(`.`)[0]??``;return e===`research.only`||e===`chat.only`?`modes`:t===`reviewer`||t===`review`?`review`:t===`limit`?`limits`:[`worker`,`plan`,`attempts`,`merge`,`workspace`,`check`,`board`,`coordinator`,`autopilot`,`watcher`,`voice`].includes(t)?t:`other`}var zo=[`board`,`coordinator`];function Bo(e,t){return t===`machine`?e.filter(e=>zo.includes(e.kind)):t===`defaults`?e.filter(e=>!zo.includes(e.kind)&&e.kind!==`repo`):e.filter(e=>!zo.includes(e.kind))}function Vo(e,t){let n=t===`machine`?Lo:Io,r=Bo(e,t);return n.map(e=>({theme:e,rows:r.filter(t=>Ro(t.name)===e)})).filter(e=>e.rows.length)}var Ho=e=>e.place===`repo`||e.place===`file`,Uo=e=>e.own===!0;function Wo(e){return e==null?``:Array.isArray(e)?e.map(e=>String(e)).join(`, `):String(e)}var Go=e=>e.split(`/`)[0].trim(),Ko=e=>e.includes(`/`)?e.slice(e.indexOf(`/`)+1):``,qo={"review.when":[`repos`,`always`,`never`],"review.mustFix":[`critical`,`major`,`minor`,`trivial`],"merge.by":[`you`,`itself`],"merge.checks":[`github`,`none`],"attempts.pick":[`you`,`reviewer`],"plan.approve":[`none`,`you`,`reviewer`],"board.open":[`tab`,`popup`]},Jo=[`full`,`ask`],Yo=[`plan.agent`,`coordinator.agent`,`watcher.agent`],Xo=[`worker.instructions`,`reviewer.instructions`,`coordinator.instructions`,`board.notify`,`board.keys`];function Zo(e,t){if(typeof t==`boolean`)return{type:`switch`};if(qo[e])return{type:`pick`,values:qo[e]};let[n,r]=e.split(`.`);return r===`access`&&[`worker`,`reviewer`,`coordinator`].includes(n)?{type:`pick`,values:Jo}:r===`agent`&&[`worker`,`reviewer`,`coordinator`,`plan`,`watcher`].includes(n)?{type:`agent`,none:Yo.includes(e)}:r===`effort`&&[`worker`,`reviewer`,`coordinator`].includes(n)?{type:`effort`,agent:`${n}.agent`}:{type:`text`,long:Xo.includes(e)}}function Qo(e,t){if(e===`board.agents`)return`boardAgents`;if(t===null)return e===`merge.by`?`mayMergeItself`:e===`merge.checks`?`mayMergeNoChecks`:null;let n=t.trim();return e===`merge.by`&&n===`itself`?`mergeItself`:e===`merge.checks`&&n===`none`?`mergeNoChecks`:e===`review.when`&&n===`never`?`noReview`:e===`coordinator.agent`&&n===`none`?`noCoordinator`:null}function $o(e){switch(e){case`machine`:return K(`Machine`,`Machine`);case`defaults`:return K(`Defaults`,`Par défaut`);case`repo`:return K(`Repositories`,`Dépôts`)}}function es(e){switch(e){case`machine`:return K(`The board itself, its Coordinator and its Watcher. Yours only, for this machine.`,`Le board lui-même, son Coordinateur et son Veilleur. À toi seul, pour cette machine.`);case`defaults`:return K(`Your values for every task of this machine. A repository’s entry or a task can say otherwise.`,`Tes valeurs pour toutes les tâches de cette machine. L’entrée d’un dépôt ou une tâche peut dire autrement.`);case`repo`:return K(`Your entry for one repository: what differs there from your defaults.`,`Ton entrée pour un dépôt : ce qui y diffère de tes valeurs par défaut.`)}}function ts(e){switch(e){case`worker`:return K(`Who works`,`Qui travaille`);case`review`:return K(`Review`,`Relecture`);case`plan`:return K(`Plan`,`Plan`);case`attempts`:return K(`Attempts`,`Essais`);case`merge`:return K(`Merge`,`Fusion`);case`limits`:return K(`Limits`,`Limites`);case`workspace`:return K(`Workspace`,`Espace de travail`);case`check`:return K(`Check`,`Contrôle`);case`modes`:return K(`Research / Conversation`,`Recherche / Conversation`);case`board`:return K(`Board`,`Board`);case`coordinator`:return K(`Coordinator`,`Coordinateur`);case`autopilot`:return K(`Autopilot`,`Pilote automatique`);case`watcher`:return K(`Watcher`,`Veilleur`);case`voice`:return K(`Voice calls`,`Appels vocaux`);case`other`:return K(`Other settings`,`Autres réglages`)}}var ns={"board.agents":[`Agents at once`,`Agents en même temps`],"board.diskFree":[`Free disk to keep`,`Disque libre à garder`],"board.oldBuilds":[`Old builds kept (days)`,`Anciens builds gardés (jours)`],"board.machines":[`Other machines`,`Autres machines`],"board.open":[`What the board key opens`,`Ce qu’ouvre la touche du board`],"board.notify":[`Notification`,`Notification`],"board.keys":[`Your own keys`,`Tes propres touches`],"board.webUi":[`Board in the herdr web UI`,`Board dans l’interface web de herdr`],"board.theme":[`Board colours`,`Couleurs du board`],"coordinator.agent":[`Coordinator agent`,`Agent du Coordinateur`],"coordinator.effort":[`Coordinator effort`,`Effort du Coordinateur`],"coordinator.fast":[`Coordinator fast mode`,`Mode rapide du Coordinateur`],"coordinator.access":[`Coordinator access`,`Accès du Coordinateur`],"coordinator.instructions":[`Coordinator instructions`,`Instructions du Coordinateur`],"watcher.agent":[`Watcher model`,`Modèle du Veilleur`],"watcher.every":[`Watcher interval`,`Intervalle du Veilleur`],"repo.key":[`Repository key`,`Clé du dépôt`]};function rs(e){let t=ns[e];return t?K(t[0],t[1]):$n(e)}function is(e,t){let n=t?K(` in ${t}`,` dans ${t}`):``;switch(e){case`mergeItself`:return K(`Work${n} will merge by itself, without your yes. Tasks already reviewed will merge right away.`,`Le travail${n} fusionnera tout seul, sans ton accord. Les tâches déjà relues fusionneront tout de suite.`);case`mayMergeItself`:return K(`merge.by goes back to its inherited value${n}. If that value is itself, tasks already reviewed will merge right away.`,`merge.by revient à sa valeur héritée${n}. Si cette valeur est itself, les tâches déjà relues fusionneront tout de suite.`);case`mayMergeNoChecks`:return K(`merge.checks goes back to its inherited value${n}. If that value is none, pull requests will merge without waiting for their GitHub checks, from the next merge on.`,`merge.checks revient à sa valeur héritée${n}. Si cette valeur est none, les pull requests fusionneront sans attendre leurs vérifications GitHub, dès la prochaine fusion.`);case`mergeNoChecks`:return K(`Pull requests${n} will merge without waiting for their GitHub checks, from the next merge on.`,`Les pull requests${n} fusionneront sans attendre leurs vérifications GitHub, dès la prochaine fusion.`);case`noReview`:return K(`Finished work${n} will no longer be reviewed, starting with the tasks finishing now.`,`Le travail fini${n} ne sera plus relu, à commencer par les tâches qui finissent maintenant.`);case`boardAgents`:return K(`This changes how many agents work at once on this machine, right now: tasks in the queue may start at once.`,`Cela change tout de suite le nombre d’agents qui travaillent en même temps sur cette machine : des tâches en file peuvent démarrer aussitôt.`);case`noCoordinator`:return K(`This machine will have no Coordinator: the board’s chat box stops answering.`,`Cette machine n’aura plus de Coordinateur : la zone de discussion du board ne répondra plus.`)}}var as=[`data-setting`],os={class:`bs-head`},ss={class:`bs-name`},cs={class:`bs-key`},ls={class:`bs-actions`},us={class:`bs-value`},ds={class:`bs-origin`},fs={key:0},ps={key:1,class:`bs-note`},ms=[`for`],hs=[`for`],gs={key:0,class:`bs-hint`},_s={key:3,class:`bs-hint`},vs=[`for`],ys={key:0,class:`bs-hint`},bs={class:`bs-preview`},xs={class:`bs-buttons`},Ss={key:1,class:`board-note error bs-error`,role:`alert`},Cs=`__default`,ws=Object.assign(J(m({__name:`BoardSettingRow`,props:{row:{},machine:{},repo:{},agents:{},rows:{},busy:{type:Boolean},error:{},disabled:{type:Boolean},change:{type:Function}},setup(n){let r=n,i=e(()=>Zo(r.row.name,r.row.value)),d=e(()=>Wo(r.row.value)),f=s(!1),p=s(``),m=s(``),g=s(Cs),b=s(``),x=e(()=>{let e=i.value;return e.type===`effort`?Wo(r.rows.find(t=>t.name===e.agent)?.value):``}),C=e(()=>i.value.type===`agent`?m.value:i.value.type===`effort`?Go(x.value):``),T=s(null),D=s(!1),k=s(!1),A=0;async function j(e){let t=++A;if(T.value=null,k.value=!1,e&&e!==`none`){D.value=!0;try{let n=await G(`/api/tasks/models?machine=${encodeURIComponent(r.machine)}&program=${encodeURIComponent(e)}`);t===A&&(T.value=n)}catch{t===A&&(k.value=!0)}finally{t===A&&(D.value=!1)}}}w(()=>f.value?C.value:``,e=>{e&&j(e)});let M=(e,t)=>t&&!e.includes(t)?[t,...e]:e,N=e(()=>{let e=i.value,t=M([...r.agents],Go(d.value)===`none`?``:Go(d.value));return[...e.type===`agent`&&e.none?[{label:`none`,value:`none`}]:[],...t.map(e=>({label:e,value:e}))]}),te=e(()=>{let e=M(T.value?.models??[],Go(d.value)===m.value?Ko(d.value):``);return[{label:K(`Program’s default`,`Modèle par défaut du programme`),value:Cs},...e.map(e=>({label:e,value:e}))]}),P=e(()=>!D.value&&m.value!==`none`&&(k.value||T.value!==null&&!T.value.models.length)),ne=e(()=>{let e=T.value,t=Ko(x.value),n=e?t?tt(e,t):e.efforts:[];return M([`default`,...n],d.value).map(e=>({label:e,value:e}))}),F=e(()=>{let e=i.value,t=e.type===`pick`?e.values:e.type===`switch`?[`true`,`false`]:[];return M(t,d.value).map(e=>({label:e,value:e}))});function I(){p.value=d.value,m.value=Go(d.value)||r.agents[0]||``,g.value=Ko(d.value)||Cs,b.value=Ko(d.value),f.value=!0}w(m,(e,t)=>{t&&e!==t&&(g.value=Cs,b.value=``)});let L=e(()=>{if(i.value.type!==`agent`)return p.value.trim();if(!m.value||m.value===`none`)return m.value;let e=P.value?b.value.trim():g.value===Cs?``:g.value;return e?`${m.value}/${e}`:m.value}),R=e(()=>!!L.value&&L.value!==d.value&&!r.busy&&!r.disabled);async function z(){R.value&&await r.change(L.value)&&(f.value=!1)}async function ie(){r.busy||r.disabled||await r.change(null)&&(f.value=!1)}let B=e(()=>`bs-${r.row.name.replace(`.`,`-`)}`);return(e,r)=>{let s=re,C=vt,w=se,T=le;return l(),u(`div`,{class:v([`bs-row`,{editing:a(f),own:a(Uo)(n.row)}]),"data-setting":n.row.name},[S(`div`,os,[S(`p`,ss,[t(y(a(rs)(n.row.name)),1),S(`small`,cs,y(n.row.name),1)]),S(`div`,ls,[a(Uo)(n.row)?(l(),o(s,{key:0,icon:`i-lucide-rotate-ccw`,color:`neutral`,variant:`ghost`,size:`sm`,class:`icon-btn bs-reset`,disabled:n.busy||n.disabled,loading:n.busy&&!a(f),"aria-label":(`tl`in e?e.tl:a(K))(`Back to the inherited value: ${n.row.name}`,`Revenir à la valeur héritée : ${n.row.name}`),title:(`tl`in e?e.tl:a(K))(`Back to the inherited value`,`Revenir à la valeur héritée`),onClick:ie},null,8,[`disabled`,`loading`,`aria-label`,`title`])):c(``,!0),a(f)?c(``,!0):(l(),o(s,{key:1,color:`neutral`,variant:`outline`,size:`sm`,class:`bs-edit`,disabled:n.disabled,onClick:I},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Change`,`Modifier`)),1)]),_:1},8,[`disabled`]))])]),S(`p`,us,y(a(d)||(`tl`in e?e.tl:a(K))(`(empty)`,`(vide)`)),1),S(`p`,ds,[S(`span`,{class:v([`bs-source`,{own:a(Uo)(n.row)}])},y(a(Qn)(n.row.place)),3),n.row.from?(l(),u(`span`,fs,y(n.row.from),1)):c(``,!0),n.row.note?(l(),u(`span`,ps,y(n.row.note),1)):c(``,!0)]),a(f)?(l(),u(`form`,{key:0,class:`bs-editor`,onSubmit:ee(z,[`prevent`])},[a(i).type===`agent`?(l(),u(_,{key:0},[S(`label`,{for:`${a(B)}-program`},y((`tl`in e?e.tl:a(K))(`Program`,`Programme`)),9,ms),h(C,{id:`${a(B)}-program`,modelValue:a(m),"onUpdate:modelValue":r[0]||=e=>O(m)?m.value=e:null,items:a(N),size:`md`,class:`bs-field`},null,8,[`id`,`modelValue`,`items`]),a(m)&&a(m)!==`none`?(l(),u(_,{key:0},[S(`label`,{for:`${a(B)}-model`},y((`tl`in e?e.tl:a(K))(`Model`,`Modèle`)),9,hs),a(D)?(l(),u(`p`,gs,y((`tl`in e?e.tl:a(K))(`Reading models…`,`Lecture des modèles…`)),1)):a(P)?(l(),o(w,{key:1,id:`${a(B)}-model`,modelValue:a(b),"onUpdate:modelValue":r[1]||=e=>O(b)?b.value=e:null,size:`md`,class:`bs-field`,placeholder:(`tl`in e?e.tl:a(K))(`Program’s default`,`Modèle par défaut du programme`)},null,8,[`id`,`modelValue`,`placeholder`])):(l(),o(C,{key:2,id:`${a(B)}-model`,modelValue:a(g),"onUpdate:modelValue":r[2]||=e=>O(g)?g.value=e:null,items:a(te),size:`md`,class:`bs-field`},null,8,[`id`,`modelValue`,`items`])),a(P)?(l(),u(`p`,_s,y((`tl`in e?e.tl:a(K))(`herdr-projects did not list models for this program here: type one, or leave it empty.`,`herdr-projects n’a pas listé de modèles pour ce programme ici : tape un nom, ou laisse vide.`)),1)):c(``,!0)],64)):c(``,!0)],64)):a(i).type===`effort`?(l(),u(_,{key:1},[S(`label`,{for:`${a(B)}-v`},y((`tl`in e?e.tl:a(K))(`Effort for ${a(x)||`?`}`,`Effort pour ${a(x)||`?`}`)),9,vs),a(D)?(l(),u(`p`,ys,y((`tl`in e?e.tl:a(K))(`Reading efforts…`,`Lecture des efforts…`)),1)):(l(),o(C,{key:1,id:`${a(B)}-v`,modelValue:a(p),"onUpdate:modelValue":r[3]||=e=>O(p)?p.value=e:null,items:a(ne),size:`md`,class:`bs-field`},null,8,[`id`,`modelValue`,`items`]))],64)):a(i).type===`switch`||a(i).type===`pick`?(l(),o(C,{key:2,id:`${a(B)}-v`,modelValue:a(p),"onUpdate:modelValue":r[4]||=e=>O(p)?p.value=e:null,items:a(F),size:`md`,class:`bs-field`,"aria-label":n.row.name},null,8,[`id`,`modelValue`,`items`,`aria-label`])):a(i).long?(l(),o(T,{key:3,id:`${a(B)}-v`,modelValue:a(p),"onUpdate:modelValue":r[5]||=e=>O(p)?p.value=e:null,rows:4,autoresize:``,maxrows:12,class:`bs-field`,"aria-label":n.row.name},null,8,[`id`,`modelValue`,`aria-label`])):(l(),o(w,{key:4,id:`${a(B)}-v`,modelValue:a(p),"onUpdate:modelValue":r[6]||=e=>O(p)?p.value=e:null,size:`md`,class:`bs-field`,"aria-label":n.row.name},null,8,[`id`,`modelValue`,`aria-label`])),S(`p`,bs,[t(y((`tl`in e?e.tl:a(K))(`Sends`,`Envoie`))+` · `,1),S(`code`,null,`herdr-projects set `+y(n.row.name)+` `+y(a(L)||`…`)+y(n.repo?` --repo ${n.repo}`:``),1)]),S(`div`,xs,[h(s,{color:`neutral`,variant:`ghost`,size:`sm`,disabled:n.busy,onClick:r[7]||=e=>f.value=!1},{default:E(()=>[t(y((`t`in e?e.t:a(W))(`Cancel`)),1)]),_:1},8,[`disabled`]),h(s,{type:`submit`,color:`primary`,variant:`solid`,size:`sm`,class:`hw-cta bs-save`,disabled:!a(R),loading:n.busy},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Save`,`Enregistrer`)),1)]),_:1},8,[`disabled`,`loading`])])],32)):c(``,!0),n.error?(l(),u(`p`,Ss,y(n.error),1)):c(``,!0)],10,as)}}}),[[`__scopeId`,`data-v-3bb8d261`]]),{__name:`BoardSettingRow`}),Ts=[`aria-label`],Es={class:`board-panel-head`},Ds={class:`board-panel-who`},Os={class:`board-panel-path`},ks={class:`board-panel-machine`},As={key:0,class:`board-panel-repo`},js={class:`board-panel-name`},Ms={class:`board-panel-title`},Ns={class:`board-settings-switch-label`},Ps={key:0,class:`board-settings-body`},Fs={class:`board-settings-hint`},Is={class:`board-settings-machines`},Ls=[`disabled`,`onClick`],Rs={key:0},zs={key:0,class:`board-empty`},Bs=[`aria-label`],Vs=[`aria-pressed`,`onClick`],Hs={class:`board-settings-body`},Us={class:`board-settings-hint`},Ws={key:0,class:`board-settings-repo`},Gs={key:1,class:`board-settings-diff`},Ks={key:2,class:`board-empty`},qs={key:1,class:`board-note`,role:`status`},Js={key:2,class:`board-empty`,role:`status`},Ys={key:3,role:`alert`,class:`board-note error`},Xs={key:0,class:`board-empty`},Zs=[`data-theme`],Qs=Object.assign(J(m({__name:`BoardSettings`,props:{target:{},repos:{},machineLabel:{type:Function},reachable:{type:Function}},emits:[`close`,`changed`],setup(r,{emit:i}){let f=r,m=i,g=s(f.target.machine??(f.target.machines.length===1?f.target.machines[0]:null)),x=s(f.target.repo?`repo`:`machine`),T=e(()=>{let e=g.value,t=e===null?[]:f.repos[e]??[];return f.target.repo&&!t.includes(f.target.repo)?[f.target.repo,...t]:t}),D=s(f.target.repo??``);w(T,e=>{e.includes(D.value)||(D.value=e[0]??``)},{immediate:!0});let k=s(!0),j=s(``),ee=s({}),M=s(null),N=s(null),te=s(!1),P=s(``),F=e(()=>x.value===`repo`?D.value:``),I=e(()=>x.value===`repo`?N.value?.repo===D.value?N.value:null:M.value),L=e(()=>g.value===null||!f.reachable(g.value)||H.value),z=0;async function ie(){let e=g.value;if(e===null||L.value||x.value===`repo`&&!D.value)return;let t=F.value,n=++z;te.value=!0,P.value=``;try{let r=await G(`/api/tasks/board-settings?machine=${encodeURIComponent(e)}${t?`&repo=${encodeURIComponent(t)}`:``}`);if(n!==z)return;t?N.value=r:M.value=r}catch(e){n===z&&(P.value=e.message)}finally{n===z&&(te.value=!1)}}w([g,x,D,L],()=>{ee.value={},I.value||ie()},{immediate:!0}),w(g,()=>{M.value=null,N.value=null},{flush:`sync`});let B=e(()=>I.value?.settings??[]),ae=e(()=>{let e=Vo(B.value,x.value);return x.value!==`repo`||!k.value?e:e.map(e=>({...e,rows:e.rows.filter(Ho)})).filter(e=>e.rows.length)}),V=e(()=>x.value===`repo`&&k.value?Vo(B.value,`repo`).reduce((e,t)=>e+t.rows.filter(e=>!Ho(e)).length,0):0);async function oe(e,t){let n=g.value;if(n===null||j.value||L.value)return!1;let r=F.value,i=Qo(e.name,t);if(i&&!await R(is(i,r),t===null?K(`Go back`,`Revenir`):K(`Change`,`Modifier`),`error`,t===null?`herdr-projects unset ${e.name}${r?` --repo ${r}`:``}`:`herdr-projects set ${e.name} ${t}${r?` --repo ${r}`:``}`))return!1;j.value=e.name;let{[e.name]:a,...o}=ee.value;ee.value=o;try{let i=await G(`/api/tasks/board-settings`,{machine:n,name:e.name,repo:r,...t===null?{unset:!0}:{value:t}});return g.value!==n||(r?N.value=i:(M.value=i,N.value=null),Me(),ke(i.msg||K(`Saved`,`Enregistré`)),m(`changed`,n),!0)}catch(t){return ee.value={...ee.value,[e.name]:t.message},g.value===n&&F.value===r&&ie(),!1}finally{j.value=``}}let se=e(()=>g.value===null?K(`Board settings`,`Réglages du board`):`${K(`Board settings`,`Réglages du board`)} · ${f.machineLabel(g.value)}`);function le(e){e.key===`Escape`&&be.value&&!e.defaultPrevented&&(document.querySelector(`.hw-sheet`)||m(`close`))}p(()=>{window.addEventListener(`keydown`,le),document.documentElement.style.setProperty(`--board-panel-w`,bt(yt()))}),n(()=>{window.removeEventListener(`keydown`,le),document.documentElement.style.removeProperty(`--board-panel-w`)});let fe=e(()=>!be.value&&ue.value?{height:`${ce.value}px`,top:`${de.value}px`}:{}),pe=e(()=>T.value.map(e=>({label:e,value:e})));return(e,n)=>{let i=re,s=ne,f=vt,p=ws;return l(),u(`aside`,{class:v([`board-panel board-settings`,{desk:`desk`in e?e.desk:a(be)}]),style:b(a(fe)),"data-kind":`settings`,"aria-label":a(se)},[S(`header`,Es,[(`desk`in e?e.desk:a(be))?c(``,!0):(l(),o(i,{key:0,icon:`i-lucide-chevron-left`,color:`neutral`,variant:`ghost`,size:`lg`,class:`icon-btn board-panel-back`,"aria-label":(`tl`in e?e.tl:a(K))(`Back to the Board`,`Retour au Board`),onClick:n[0]||=e=>m(`close`)},null,8,[`aria-label`])),S(`div`,Ds,[S(`p`,Os,[S(`span`,ks,[h(s,{name:`i-lucide-server`}),t(y(a(g)===null?(`tl`in e?e.tl:a(K))(`Choose a machine`,`Choisis une machine`):r.machineLabel(a(g))),1)]),a(x)===`repo`&&a(D)&&a(g)!==null?(l(),u(`span`,As,y(a(D)),1)):c(``,!0)]),S(`h2`,js,[h(s,{name:`i-lucide-settings`,class:`board-settings-icon`}),S(`span`,Ms,y(a(se)),1)])]),a(g)!==null&&r.target.machines.length>1?(l(),o(i,{key:1,color:`neutral`,variant:`outline`,size:`sm`,class:`board-settings-switch`,icon:`i-lucide-arrow-left-right`,"aria-label":(`tl`in e?e.tl:a(K))(`Another machine`,`Autre machine`),onClick:n[1]||=e=>g.value=null},{default:E(()=>[S(`span`,Ns,y((`tl`in e?e.tl:a(K))(`Machine`,`Machine`)),1)]),_:1},8,[`aria-label`])):c(``,!0),(`desk`in e?e.desk:a(be))?(l(),o(i,{key:2,icon:`i-lucide-x`,color:`neutral`,variant:`ghost`,size:`md`,class:`icon-btn board-panel-close`,"aria-label":(`t`in e?e.t:a(W))(`Close`),onClick:n[2]||=e=>m(`close`)},null,8,[`aria-label`])):c(``,!0)]),a(g)===null?(l(),u(`div`,Ps,[S(`p`,Fs,y((`tl`in e?e.tl:a(K))(`Each machine has its own board settings. Which one?`,`Chaque machine a ses propres réglages du board. Laquelle ?`)),1),S(`ul`,Is,[(l(!0),u(_,null,d(r.target.machines,t=>(l(),u(`li`,{key:t||`local`},[S(`button`,{type:`button`,disabled:!r.reachable(t),onClick:e=>g.value=t},[h(s,{name:`i-lucide-server`}),S(`span`,null,y(r.machineLabel(t)),1),r.reachable(t)?c(``,!0):(l(),u(`small`,Rs,y((`tl`in e?e.tl:a(K))(`cannot be read now`,`illisible pour l’instant`)),1)),h(s,{name:`i-lucide-chevron-right`,class:`board-settings-go`})],8,Ls)]))),128))]),r.target.machines.length?c(``,!0):(l(),u(`p`,zs,y((`tl`in e?e.tl:a(K))(`No machine with a board here.`,`Aucune machine avec un board ici.`)),1))])):(l(),u(_,{key:1},[S(`nav`,{class:`board-panel-tabs`,"aria-label":(`tl`in e?e.tl:a(K))(`Board settings`,`Réglages du board`)},[(l(!0),u(_,null,d(a(Fo),e=>(l(),u(`button`,{key:e,type:`button`,class:v({on:a(x)===e}),"aria-pressed":a(x)===e,onClick:t=>x.value=e},y(a($o)(e)),11,Vs))),128))],8,Bs),S(`div`,Hs,[S(`p`,Us,y(a(es)(a(x))),1),a(x)===`repo`?(l(),u(`div`,Ws,[a(pe).length?(l(),o(f,{key:0,modelValue:a(D),"onUpdate:modelValue":n[3]||=e=>O(D)?D.value=e:null,items:a(pe),size:`md`,class:`board-settings-repo-pick`,"aria-label":(`tl`in e?e.tl:a(K))(`Repository`,`Dépôt`)},null,8,[`modelValue`,`items`,`aria-label`])):c(``,!0),a(pe).length?(l(),u(`label`,Gs,[C(S(`input`,{"onUpdate:modelValue":n[4]||=e=>O(k)?k.value=e:null,type:`checkbox`},null,512),[[A,a(k)]]),t(y((`tl`in e?e.tl:a(K))(`Only what differs`,`Seulement ce qui diffère`)),1)])):(l(),u(`p`,Ks,y((`tl`in e?e.tl:a(K))(`No repository on this board yet.`,`Aucun dépôt sur ce board pour l’instant.`)),1))])):c(``,!0),a(L)?(l(),u(`p`,qs,y((`tl`in e?e.tl:a(K))(`Machine offline. Settings cannot be read.`,`Machine hors ligne. Impossible de lire les réglages.`)),1)):a(te)&&!a(I)?(l(),u(`p`,Js,y((`t`in e?e.t:a(W))(`Loading…`)),1)):a(P)&&!a(I)?(l(),u(`div`,Ys,[S(`p`,null,y((`tl`in e?e.tl:a(K))(`Could not read settings`,`Impossible de lire les réglages`))+` · `+y(a(P)),1),h(i,{color:`neutral`,variant:`outline`,onClick:ie},{default:E(()=>[t(y((`tl`in e?e.tl:a(K))(`Retry`,`Réessayer`)),1)]),_:1})])):a(I)?(l(),u(_,{key:4},[(l(!0),u(_,null,d(a(I).problems,(e,t)=>(l(),u(`p`,{key:t,class:`board-note error`,role:`alert`},y(e),1))),128)),a(x)===`repo`&&a(k)&&!a(ae).length?(l(),u(`p`,Xs,y((`tl`in e?e.tl:a(K))(`Nothing differs here: this repository follows your defaults.`,`Rien ne diffère ici : ce dépôt suit tes valeurs par défaut.`)),1)):c(``,!0),(l(!0),u(_,null,d(a(ae),e=>(l(),u(`section`,{key:e.theme,class:`board-settings-group`,"data-theme":e.theme},[S(`h3`,null,y(a(ts)(e.theme)),1),(l(!0),u(_,null,d(e.rows,e=>(l(),o(p,{key:`${a(F)}|${e.name}`,row:e,rows:a(B),machine:a(g),repo:a(F),agents:a(I).agents,busy:a(j)===e.name,disabled:!!(a(j)&&a(j)!==e.name)||a(L),error:a(ee)[e.name],change:t=>oe(e,t)},null,8,[`row`,`rows`,`machine`,`repo`,`agents`,`busy`,`disabled`,`error`,`change`]))),128))],8,Zs))),128)),a(V)?(l(),u(`button`,{key:1,type:`button`,class:`board-more`,onClick:n[5]||=e=>k.value=!1},y((`tl`in e?e.tl:a(K))(`Show the ${a(V)} inherited settings`,`Afficher les ${a(V)} réglages hérités`)),1)):c(``,!0)],64)):c(``,!0)])],64))],14,Ts)}}}),[[`__scopeId`,`data-v-491ed818`]]),{__name:`BoardSettings`}),$s={class:`field-label`},ec=[`data-machine`,`onClick`],tc={class:`machine-choice-name`},nc={class:`field-label`,for:`new-task-repo`},rc={class:`field-label`,for:`new-task-title`},ic={class:`field-label`,for:`new-task-desc`},ac={class:`muted`},oc={class:`toggle-row`},sc={class:`sheet-form`},cc={key:0,class:`form-error`},lc=`\0home`,uc=`\0other`,dc=Object.assign(m({__name:`NewTaskSheet`,props:T({machines:{},repos:{},machine:{},repo:{}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:T([`added`],[`update:open`]),setup(n,{emit:r}){let i=n,f=r,p=g(n,`open`),m=s(``),x=s(lc),C=s(``),T=s(``),D=s(``),k=s(!1),A=s(!1),j=s(``),M=e(()=>[{label:K(`Home folder`,`Dossier personnel`),value:lc},...(i.repos[m.value]||[]).map(e=>({label:e,value:e})),{label:K(`Other repo or folder…`,`Autre dépôt ou dossier…`),value:uc}]),N=e(()=>x.value===uc?C.value.trim():x.value===lc?``:x.value),te=e(()=>nt(N.value)!==null&&(x.value!==uc||!!N.value));w(p,e=>{e&&(m.value=i.machine&&i.machines.includes(i.machine)?i.machine:i.machines[0]??``,x.value=i.repo||lc,C.value=``,T.value=``,D.value=``,k.value=!1,j.value=``)},{immediate:!0}),w(m,()=>{x.value!==uc&&x.value!==lc&&!(i.repos[m.value]||[]).includes(x.value)&&(x.value=lc)});async function P(){if(!A.value&&T.value.trim()){if(!te.value){j.value=K(`A repo’s name, or a folder’s path (/… or ~/…)`,`Le nom d’un dépôt, ou le chemin d’un dossier (/… ou ~/…)`);return}A.value=!0,j.value=``;try{let e=await G(`/api/tasks/add`,{machine:m.value,title:T.value,description:D.value,repo:N.value,delegate:k.value});Me(),ke(e.msg||(k.value?K(`Added, an agent is on it`,`Ajoutée, un agent s’en occupe`):K(`Added to To do`,`Ajoutée à À faire`))),f(`added`,m.value),p.value=!1}catch(e){j.value=e.message}finally{A.value=!1}}}return(e,r)=>{let i=vt,s=se,f=le,g=St,w=re,N=ae;return l(),o(N,{open:p.value,"onUpdate:open":r[5]||=e=>p.value=e,title:(`tl`in e?e.tl:a(K))(`New task`,`Nouvelle tâche`),tall:``},{footer:E(()=>[S(`div`,sc,[a(j)?(l(),u(`p`,cc,y(a(j)),1)):c(``,!0),h(w,{block:``,size:`xl`,color:`primary`,class:`launch-btn hw-cta`,icon:a(k)?`i-lucide-play`:`i-lucide-plus`,loading:a(A),disabled:!a(T).trim()||!a(m)&&n.machines.length===0||(`offlineView`in e?e.offlineView:a(H)),onClick:P},{default:E(()=>[t(y(a(k)?(`tl`in e?e.tl:a(K))(`Add and start`,`Ajouter et lancer`):(`tl`in e?e.tl:a(K))(`Add to To do`,`Ajouter à À faire`)),1)]),_:1},8,[`icon`,`loading`,`disabled`])])]),default:E(()=>[S(`form`,{class:`sheet-form new-task`,onSubmit:ee(P,[`prevent`])},[n.machines.length>1?(l(),u(_,{key:0},[S(`span`,$s,y((`t`in e?e.t:a(W))(`Machine`)),1),S(`div`,{class:`segmented`,style:b({"--segment-count":n.machines.length})},[(l(!0),u(_,null,d(n.machines,t=>(l(),u(`button`,{key:t,type:`button`,class:v({on:t===a(m)}),"data-machine":t||`local`,onClick:e=>m.value=t},[S(`span`,tc,y((`machineName`in e?e.machineName:a(Se))(t)||(`hostLabel`in e?e.hostLabel:a(_e))||(`t`in e?e.t:a(W))(`This machine`)),1)],10,ec))),128))],4)],64)):c(``,!0),S(`label`,nc,y((`tl`in e?e.tl:a(K))(`Repo`,`Dépôt`)),1),h(i,{id:`new-task-repo`,modelValue:a(x),"onUpdate:modelValue":r[0]||=e=>O(x)?x.value=e:null,items:a(M),size:`xl`,class:`w-full`,ui:{content:`z-[30]`}},null,8,[`modelValue`,`items`]),a(x)===uc?(l(),o(s,{key:1,modelValue:a(C),"onUpdate:modelValue":r[1]||=e=>O(C)?C.value=e:null,size:`xl`,class:`w-full mono`,autocapitalize:`none`,autocorrect:`off`,spellcheck:!1,placeholder:(`tl`in e?e.tl:a(K))(`Repo name, or /path/to/folder`,`Nom du dépôt, ou /chemin/du/dossier`),maxlength:`500`,"aria-label":(`tl`in e?e.tl:a(K))(`Repo or folder`,`Dépôt ou dossier`)},null,8,[`modelValue`,`placeholder`,`aria-label`])):c(``,!0),S(`label`,rc,y((`tl`in e?e.tl:a(K))(`Title`,`Titre`)),1),h(s,{id:`new-task-title`,modelValue:a(T),"onUpdate:modelValue":r[2]||=e=>O(T)?T.value=e:null,size:`xl`,class:`w-full`,maxlength:a(300),enterkeyhint:`next`,placeholder:(`tl`in e?e.tl:a(K))(`E.g. Dark mode toggle in Settings`,`Ex. Bouton de thème sombre dans les réglages`)},null,8,[`modelValue`,`maxlength`,`placeholder`]),S(`label`,ic,[t(y((`tl`in e?e.tl:a(K))(`Description`,`Description`))+` `,1),S(`span`,ac,y((`t`in e?e.t:a(W))(`(optional)`)),1)]),h(f,{id:`new-task-desc`,modelValue:a(D),"onUpdate:modelValue":r[3]||=e=>O(D)?D.value=e:null,rows:4,autoresize:``,maxrows:12,size:`xl`,class:`w-full`,maxlength:a(Je),placeholder:(`tl`in e?e.tl:a(K))(`What the agent needs to know: the goal, where to look, how to check it`,`Ce que l’agent doit savoir : le but, où regarder, comment vérifier`)},null,8,[`modelValue`,`maxlength`,`placeholder`]),S(`label`,oc,[S(`span`,null,[S(`b`,null,y((`tl`in e?e.tl:a(K))(`Start now`,`Lancer tout de suite`)),1),S(`small`,null,y(a(k)?(`tl`in e?e.tl:a(K))(`an agent is put on it at once`,`un agent s’en occupe tout de suite`):(`tl`in e?e.tl:a(K))(`it waits under To do until you start it`,`elle attend dans À faire jusqu’à ce que tu la lances`)),1)]),h(g,{modelValue:a(k),"onUpdate:modelValue":r[4]||=e=>O(k)?k.value=e:null,color:`success`,size:`xl`},null,8,[`modelValue`])]),r[6]||=S(`button`,{type:`submit`,hidden:``},null,-1)],32)]),_:1},8,[`open`,`title`])}}}),{__name:`NewTaskSheet`}),fc=`boardDone`,pc=e=>e===`1`,mc=e=>e?`1`:`0`,hc=e=>Qe.filter(t=>e||t!==`done`),gc=(e,t)=>e===`done`&&!t?`needs`:e;function _c(e,t,n,r){let i=e===`done`&&!n?t.slice(0,r):t;return{cards:i,hidden:t.length-i.length}}var vc=e=>[...e].sort((e,t)=>He(e.task,t.task)),yc={class:`top bar board-top`},bc={class:`board-new-label`},xc={key:0,class:`board-autopilots`},Sc={key:0,class:`board-autopilots-machine`},Cc={key:1,class:`notice board-notice`},wc={key:2,class:`board-empty board-loading`},Tc={key:3,class:`board-notes`},Ec={key:0,class:`board-note`,role:`status`},Dc={class:`board-tools`},Oc=[`aria-label`],kc=[`aria-pressed`],Ac=[`aria-pressed`],jc={class:`board-grouping board-archived-toggle`},Mc=[`aria-pressed`,`disabled`],Nc=[`aria-label`],Pc=[`aria-pressed`,`onClick`],Fc=[`aria-pressed`,`aria-label`,`title`],Ic={key:0,class:`board-grid-head`},Lc={class:`pp-count`},Rc=[`aria-pressed`,`aria-label`,`title`],zc={key:1,class:`board-cols board-cells`},Bc=[`aria-label`],Vc={class:`board-col-body`},Hc={key:0,class:`board-empty`},Uc=[`data-machine`],Wc=[`aria-expanded`,`aria-label`,`onClick`],Gc={class:`board-head-name`},Kc={class:`board-head-sum`},qc={key:0,class:`board-head-done`},Jc={class:`board-head-actions`},Yc=[`data-repo`],Xc=[`aria-expanded`,`aria-label`,`onClick`],Zc={class:`board-head-name`},Qc={class:`board-head-sum`},$c={key:0,class:`board-head-done`},el={class:`board-head-actions`},tl={key:0,class:`board-repo-cols board-cells`},nl=[`data-group`,`aria-label`],rl={class:`board-repo-col-body`},il={key:0,class:`board-empty`},al={key:0,class:`board-empty board-machine-empty`},ol=[`aria-label`],sl={class:`board-col-head archived`},cl={class:`pp-count`},ll={key:0},ul={class:`board-archived-body`},dl={key:0,class:`board-empty`},fl={key:1,class:`board-empty`},pl=`boardColumn`,ml=`boardMachine`,hl=`boardGrouping`,gl=`boardFolds`,_l=Object.assign(J(m({__name:`BoardView`,setup(i){let f=ie(),m=z(),{board:g,error:x,reads:T,reload:D}=Nr(),k=s(0),A=F(),ee=e=>{try{return localStorage.getItem(e)}catch{return null}},M=(e,t)=>{try{localStorage.setItem(e,t)}catch{}},I=e(()=>(g.value?.machines||[]).filter(e=>e.status===`ready`)),L=e(()=>(g.value?.machines||[]).filter(e=>e.error||e.stale)),R=e=>ot(e,Se(e),_e.value||W(`This machine`)),ae=e=>e?new Date(e).toLocaleTimeString(ye===`fr`?`fr-FR`:`en-US`,{hour:`2-digit`,minute:`2-digit`}):``,V=e(()=>(g.value?.machines||[]).filter(e=>e.status===`missing`||e.status===`old`)),se=e(()=>(g.value?.machines||[]).filter(e=>e.status===`disabled`)),ce=e(()=>(g.value?.machines.length||0)>1),le=e(()=>(g.value?.machines||[]).filter(e=>e.status===`ready`||e.tasks.length)),ue=s(pt(ee(ml)));w([st,le,ct],()=>{let e=ft.update(st.value,le.value.map(e=>e.machine),ct.value);e!==void 0&&(ue.value=e)},{immediate:!0});let de=e(()=>dt(ue.value,le.value.map(e=>e.machine),ct.value)),fe=e(()=>mt(de.value,ct.value)),pe=e=>fe.value===null||fe.value.includes(e),he=e(()=>ce.value&&(fe.value===null||fe.value.length>1)),ge=e(()=>X(le.value.map(e=>e.machine),R,K(`All machines`,`Toutes les machines`),ct.value,K(`Groups`,`Groupes`),K(`Machines`,`Machines`)));function ve(e){ue.value=pt(e),ft.manual(ue.value),M(ml,e)}let xe=e(()=>le.value.filter(e=>pe(e.machine))),U=me(hl,e=>[`global`,`status`].includes(e||``)?`global`:`repo`,e=>e);function Ce(e){U.value=e}let we=(e,t)=>({key:`${e.machine}|${t.id}`,machine:e.machine,task:t,stale:!!(e.stale||t.stale),readAt:t.stale?t.readAt:e.at}),Te=r(new Set),Ee=(e,t)=>{let n=new Set(Te.value);t?n.add(e):n.delete(e),Te.value=n};w(g,e=>{if(!e||!Te.value.size)return;let t=new Set(e.machines.flatMap(e=>e.tasks.filter(e=>!e.archived).map(t=>`${e.machine}|${t.id}`))),n=[...Te.value].filter(e=>t.has(e));n.length!==Te.value.size&&(Te.value=new Set(n))});let De=e(()=>le.value.flatMap(e=>Xe(e.tasks.filter(t=>!t.archived&&!Te.value.has(`${e.machine}|${t.id}`))).map(t=>we(e,t)))),Oe=e(()=>De.value.filter(e=>pe(e.machine))),q=me(fc,pc,mc),Ae=s(!1),je=e(()=>Oe.value.filter(e=>e.task.group===`done`).length);function Ne(){q.value=!q.value,q.value?Je.value||et(`done`):Ae.value=!1,Me()}let Pe=e(()=>q.value?K(`Hide done tasks`,`Masquer les tâches faites`):K(`Show done tasks (${je.value})`,`Afficher les tâches faites (${je.value})`)),Fe=e(()=>hc(q.value)),Le=e(()=>Fe.value.map(e=>{let t=Oe.value.filter(t=>t.task.group===e),n=e===`done`?vc(t):t;return{id:e,label:gt(e),total:n.length,..._c(e,n,Ae.value,5)}})),Re=e(()=>({"--board-cols":`repeat(${Le.value.length}, minmax(0, 1fr))`})),Be=me(gl,e=>{try{let t=JSON.parse(e||`[]`);return new Set(Array.isArray(t)?t.map(String):[])}catch{return new Set}},e=>JSON.stringify([...e].slice(-200)));function Ve(e){let t=new Set(Be.value);t.delete(e)||t.add(e),Be.value=t}function He(e){let t=Ie(e),n=[`needs`,`ready`,`working`,`todo`].filter(e=>t[e]).map(e=>`${t[e]} ${gt(e).toLowerCase()}`),r=t.done?K(`${t.done} done`,`${t.done} fait${t.done>1?`s`:``}`):``;return{main:n.join(` · `)||(r?``:K(`no task`,`aucune tâche`)),done:r}}let Ue=e(()=>xe.value.map(e=>{let t=e.tasks.filter(t=>!t.archived&&!Te.value.has(`${e.machine}|${t.id}`));return{machine:e.machine,summary:He(t),repos:[...new Set([...t.map(e=>e.repo),...(A.value.find(t=>t.machine===e.machine)?.repos||[]).map(e=>e.repo)])].sort().map(n=>{let r=Xe(t.filter(e=>e.repo===n)),i=Fe.value.map(t=>{let n=r.filter(e=>e.group===t).map(t=>we(e,t));return{id:t,label:gt(t),total:n.length,..._c(t,n,Ae.value,3)}});return{repo:n,summary:He(r),cols:i}})}})),We=e(()=>Object.fromEntries(le.value.map(e=>[e.machine,[...new Set(e.tasks.map(e=>e.repo))].sort()]))),Ge=s(null),Ke=s(0),qe=null;p(()=>{Ge.value&&typeof ResizeObserver<`u`&&(qe=new ResizeObserver(([e])=>{Ke.value=e.contentRect.width}),qe.observe(Ge.value))}),n(()=>qe?.disconnect());let Je=e(()=>be.value&&(!Ke.value||Ke.value>=760));function Ye(){let e=ee(pl);return Qe.includes(e)?e:`needs`}let Ze=s(Ye()),$e=e(()=>gc(Ze.value,q.value));function et(e){Ze.value=e,M(pl,e)}let tt=r(null),nt=s(!1);function rt(e){tt.value=e,nt.value=!0}function it(e){tt.value=e,Q.value={machine:e.machine,kind:`task`,id:e.task.id},Me()}let at=e(()=>{let e=tt.value;return e?De.value.find(t=>t.key===e.key)?.task||wt.value.find(t=>t.key===e.key)?.task||(Te.value.has(e.key)?{...e.task,archived:!0}:e.task):null}),J=s(null),Y=s(!1);w(()=>m.query,e=>{if(e.coordinator||`task`in e&&e.task||!(`machine`in e))return;let t=e.machine;(typeof t==`string`||t===null)&&ve(ht(t??``)),f.replace({query:{}})},{immediate:!0}),w(()=>m.query.task,e=>{typeof e==`string`&&e&&(J.value={machine:typeof m.query.machine==`string`?m.query.machine:null,id:e},Y.value=!1,f.replace({query:{}}))},{immediate:!0}),w([J,g,T],()=>{let e=J.value;if(!e||!g.value||!T.value)return;let t=De.value.filter(t=>t.task.id===e.id&&(e.machine===null||t.machine===e.machine)),n=e=>g.value.machines.some(t=>t.machine===e&&t.status===`ready`&&!t.error&&!t.stale);if(t.length===1){J.value=null,it(t[0]);return}if(e.machine!==null&&!n(e.machine)){Y.value||ke(K(`${R(e.machine)} cannot be read now: its task opens once it answers`,`${R(e.machine)} ne peut pas être lue pour l’instant : sa tâche s’ouvre dès qu’elle répond`),!0),Y.value=!0;return}J.value=null,ut(e)});async function ut(e){let t=le.value.filter(t=>t.status===`ready`&&(e.machine===null||t.machine===e.machine)).map(e=>e.machine),n=(await Promise.all(t.map(e=>G(`/api/tasks/archived?machine=${encodeURIComponent(e)}`).catch(()=>null)))).flatMap(t=>t?t.tasks.filter(t=>t.id===e.id).map(e=>we({machine:t.machine},e)):[]);if(n.length===1)return rt(n[0]);ke(K(`That task is no longer on the Board`,`Cette tâche n’est plus sur le Board`),!0)}let _t=s(!1),yt=r([]),bt=s(!1),xt=0;async function Z(){if(!_t.value)return;let e=++xt;bt.value=!0;let t=le.value.filter(e=>e.status===`ready`).map(e=>e.machine),n=await Promise.all(t.map(e=>G(`/api/tasks/archived?machine=${encodeURIComponent(e)}`).then(t=>({machine:e,tasks:t.tasks})).catch(t=>({machine:e,tasks:[],error:t.message}))));e===xt&&(yt.value=n,bt.value=!1)}function St(){_t.value=!_t.value,_t.value&&Z()}let wt=e(()=>yt.value.filter(e=>pe(e.machine)).flatMap(e=>e.tasks.map(t=>we({machine:e.machine},t)))),Et=e(()=>yt.value.filter(e=>e.error&&pe(e.machine)));function Dt(e,t){Ee(`${e}|${t.id}`,!0);let n=Q.value;n?.kind===`task`&&n.machine===e&&n.id===t.id&&(Q.value=null);let r=ze(t.id,t.repoKey);ke(K(`${r} archived`,`${r} archivée`),!1,void 0,{label:K(`Restore`,`Restaurer`),icon:`i-lucide-archive-restore`,run:()=>Ot(e,t)}),D().then(Z)}async function Ot(e,t){try{await G(`/api/tasks/action`,{machine:e,id:t.id,action:`restore`}),Me(),ke(K(`${ze(t.id,t.repoKey)} restored`,`${ze(t.id,t.repoKey)} restaurée`)),kt(e,t)}catch(e){ke(e.message,!0)}}function kt(e,t){Ee(`${e}|${t.id}`,!1),yt.value=yt.value.map(n=>n.machine===e?{...n,tasks:n.tasks.filter(e=>e.id!==t.id)}:n),D().then(Z)}let At=s(!1),jt=s({});function Mt(e,t){jt.value={machine:e??(fe.value?.length===1?fe.value[0]:Q.value?.machine),repo:t},At.value=!0}function Nt(){setTimeout(D,1500)}let Q=r(null);function Pt(e,t){Lt(e)||(Q.value={machine:e,kind:`coordinator`,to:t},Me())}w(()=>m.query.coordinator,e=>{typeof e==`string`&&e&&(Q.value={machine:typeof m.query.machine==`string`?m.query.machine:``,kind:`coordinator`,to:{kind:`project`,repo:e},freshProject:!0},f.replace({query:{}}))},{immediate:!0});let Ft=(e,t)=>te(t,R(e)),It=[{kind:`machine`}],$=e(()=>g.value?.machines||[]),Lt=e=>{let t=$.value.find(t=>t.machine===e);return t?N(t,H.value):K(`Machine unavailable`,`Machine indisponible`)},Rt=(e,t)=>[P(t),Lt(e)].filter(Boolean).join(` `),zt=e(()=>[$.value.map(e=>({label:R(e.machine),description:Rt(e.machine,{kind:`main`}),disabled:!!Lt(e.machine),icon:`i-lucide-server`,onSelect:()=>Pt(e.machine,{kind:`main`})}))]),Bt=e(()=>!!g.value&&!$.value.some(e=>!Lt(e.machine))),Vt=(e,t)=>{let n=Q.value;return!n||n.kind!==`coordinator`||n.machine!==e||n.to.kind!==t.kind?!1:t.kind!==`project`||n.to.kind===`project`&&n.to.repo===t.repo},Ht=e(()=>{let e=Q.value;return e?.kind===`task`&&(De.value.find(t=>t.machine===e.machine&&t.task.id===e.id)?.task||tt.value?.task)||null});w(g,e=>{Q.value&&e&&!e.machines.some(e=>e.machine===Q.value.machine)&&(Q.value=null)});function Ut(e,t){Pt(e,{kind:`project`,repo:t.repo})}function Wt(e,t){Q.value={machine:e,kind:`task`,id:t.id,chat:!0},Me()}function Gt(){let e=Q.value;if(e?.kind!==`task`)return;let t=De.value.find(t=>t.machine===e.machine&&t.task.id===e.id)||tt.value;t&&rt(t)}let Kt=e(()=>{let e=Q.value;return e?e.kind===`task`?`t|${e.machine}|${e.id}`:`c|${e.machine}|${e.to.kind}|${e.to.kind===`project`?e.to.repo:``}`:``});function qt(){let e=Q.value;e?.kind===`task`&&De.value.some(t=>t.machine===e.machine&&t.task.id===e.id)&&Gt(),Q.value=null}let Jt=r(null);function Xt(e,t){let n=lt(e,I.value.map(e=>e.machine),ct.value);Jt.value={machines:n,...t?{repo:t}:{}},Q.value=null,Me()}w(Q,e=>{e&&(Jt.value=null)});let Zt=s(null);w(()=>m.query.settings,e=>{e===void 0||Array.isArray(e)||(Zt.value=e??``,f.replace({query:{}}))},{immediate:!0}),w([Zt,g],([e,t])=>{e!==null&&t&&(Zt.value=null,Xt(e))},{immediate:!0});let Qt=e(()=>Object.fromEntries(le.value.map(e=>[e.machine,[...new Set([...e.tasks.map(e=>e.repo),...(A.value.find(t=>t.machine===e.machine)?.repos||[]).map(e=>e.repo)])].filter(Boolean).sort()]))),$t=e=>I.value.some(t=>t.machine===e);function en(){let e=history.state?.back;typeof e==`string`&&e.startsWith(`/`)&&e!==`/board`?f.back():B(`/`,{replace:!0})}return(e,n)=>{let r=re,i=Tt,s=oe,f=Yt,p=Ct,m=vt,w=ne,T=Pn,A=Po,ee=Qs,M=va,N=dc;return l(),u(`section`,{id:`board`,ref_key:`root`,ref:Ge,class:v([`view board-view`,{"with-panel":(a(Q)||a(Jt))&&(`desk`in e?e.desk:a(be)),narrow:!a(Je)}])},[S(`header`,yc,[h(r,{icon:`i-lucide-chevron-left`,color:`neutral`,variant:`ghost`,size:`lg`,class:`icon-btn`,"aria-label":(`t`in e?e.t:a(W))(`Back`),onClick:en},null,8,[`aria-label`]),S(`h2`,null,y((`t`in e?e.t:a(W))(`Board`)),1),a(I).length?(l(),o(r,{key:0,icon:`i-lucide-plus`,color:`primary`,variant:`outline`,size:`md`,class:`board-new`,disabled:`offlineView`in e?e.offlineView:a(H),"aria-label":(`tl`in e?e.tl:a(K))(`New task`,`Nouvelle tâche`),onClick:n[0]||=e=>Mt()},{default:E(()=>[S(`span`,bc,y((`tl`in e?e.tl:a(K))(`New task`,`Nouvelle tâche`)),1)]),_:1},8,[`disabled`,`aria-label`])):c(``,!0),a($).length===1?(l(),o(i,{key:1,text:Rt(a($)[0].machine,{kind:`main`})},{default:E(()=>[h(r,{color:`neutral`,variant:`outline`,size:`md`,class:v([`board-coord board-top-coord`,{on:Vt(a($)[0].machine,{kind:`main`})}]),disabled:!!Lt(a($)[0].machine),onClick:n[1]||=e=>Pt(a($)[0].machine,{kind:`main`})},{default:E(()=>[t(y(Ft(a($)[0].machine,{kind:`main`})),1)]),_:1},8,[`class`,`disabled`])]),_:1},8,[`text`])):a($).length>1?(l(),o(s,{key:2,items:a(zt),content:{align:`end`,sideOffset:6},ui:{content:`hw-dropdown board-coord-menu`,itemLabel:`whitespace-normal`,itemDescription:`whitespace-normal`}},{default:E(()=>[h(i,{text:(`coordinatorDescription`in e?e.coordinatorDescription:a(P))({kind:`main`})},{default:E(()=>[h(r,{color:`neutral`,variant:`outline`,size:`md`,class:`board-coord board-top-coord`,"trailing-icon":`i-lucide-chevron-down`},{default:E(()=>[t(y((`coordinatorLabel`in e?e.coordinatorLabel:a(te))({kind:`main`},``)),1)]),_:1})]),_:1},8,[`text`])]),_:1},8,[`items`])):c(``,!0),h(r,{icon:`i-lucide-refresh-cw`,color:`neutral`,variant:`ghost`,size:`lg`,class:`icon-btn board-filter`,"aria-label":(`tl`in e?e.tl:a(K))(`Refresh`,`Actualiser`),disabled:`offlineView`in e?e.offlineView:a(H),onClick:n[2]||=e=>{k.value++,a(D)()}},null,8,[`aria-label`,`disabled`])]),a($).length&&!(`offlineView`in e?e.offlineView:a(H))?(l(),u(`div`,xc,[(l(!0),u(_,null,d(a($),e=>(l(),u(`div`,{key:e.machine},[a($).length>1?(l(),u(`span`,Sc,y(R(e.machine)),1)):c(``,!0),h(f,{machine:e.machine,to:{kind:`main`},disabled:!!Lt(e.machine)},null,8,[`machine`,`disabled`])]))),128))])):c(``,!0),a(x)?(l(),u(`div`,Cc,y(a(x)),1)):!a(g)&&!(`offlineView`in e?e.offlineView:a(H))?(l(),u(`p`,wc,y((`t`in e?e.t:a(W))(`Loading…`)),1)):c(``,!0),a(Bt)||a(V).length||a(se).length||a(L).length?(l(),u(`div`,Tc,[a(Bt)?(l(),u(`p`,Ec,y((`tl`in e?e.tl:a(K))(`No Coordinator can be reached now. See each machine’s availability.`,`Aucun Coordinateur n’est joignable pour l’instant. Consulte la disponibilité de chaque machine.`)),1)):c(``,!0),(l(!0),u(_,null,d(a(L),n=>(l(),u(`p`,{key:`e-${n.machine}`,class:`board-note error`,role:`alert`},[S(`b`,null,y(a(ce)?R(n.machine):(`tl`in e?e.tl:a(K))(`herdr-projects`,`herdr-projects`)),1),t(` · `+y(n.error||(`tl`in e?e.tl:a(K))(`No answer yet`,`Pas encore de réponse`)),1),n.stale&&n.at?(l(),u(_,{key:0},[t(` · `+y((`tl`in e?e.tl:a(K))(`tasks as read at ${ae(n.at)}`,`tâches lues à ${ae(n.at)}`)),1)],64)):c(``,!0)]))),128)),(l(!0),u(_,null,d(a(V),t=>(l(),o(p,{key:t.machine,status:t.status,version:t.version||null,machine:a(ce)?(`machineName`in e?e.machineName:a(Se))(t.machine)||(`hostLabel`in e?e.hostLabel:a(_e))||(`t`in e?e.t:a(W))(`This machine`):void 0},null,8,[`status`,`version`,`machine`]))),128)),(l(!0),u(_,null,d(a(se),t=>(l(),u(`p`,{key:t.machine,class:`board-note`},y((`tl`in e?e.tl:a(K))(`herdr-projects is disabled in Herdr${a(ce)?` on ${(`machineName`in e?e.machineName:a(Se))(t.machine)}`:``}: herdr plugin enable herdr-projects`,`herdr-projects est désactivé dans Herdr${a(ce)?` sur ${(`machineName`in e?e.machineName:a(Se))(t.machine)}`:``} : herdr plugin enable herdr-projects`)),1))),128))])):c(``,!0),a(I).length||a(Oe).length?(l(),u(_,{key:4},[S(`div`,Dc,[a(le).length>1?(l(),o(m,{key:0,"model-value":(`boardScopeValue`in e?e.boardScopeValue:a(ht))(a(de)),items:a(ge),size:`sm`,class:`board-scope`,"aria-label":(`tl`in e?e.tl:a(K))(`Machines shown`,`Machines affichées`),"onUpdate:modelValue":n[3]||=e=>ve(String(e))},null,8,[`model-value`,`items`,`aria-label`])):c(``,!0),a(I).length?(l(),o(r,{key:1,icon:`i-lucide-settings`,color:`neutral`,variant:`outline`,size:`sm`,class:v([`icon-btn board-settings-open`,{on:a(Jt)&&!a(Jt).repo}]),disabled:`offlineView`in e?e.offlineView:a(H),"aria-label":(`tl`in e?e.tl:a(K))(`Board settings`,`Réglages du board`),title:(`tl`in e?e.tl:a(K))(`Board settings`,`Réglages du board`),onClick:n[4]||=e=>Xt(a(de))},null,8,[`class`,`disabled`,`aria-label`,`title`])):c(``,!0),S(`div`,{class:`board-grouping`,role:`group`,"aria-label":(`tl`in e?e.tl:a(K))(`View`,`Vue`)},[S(`button`,{type:`button`,class:v({on:a(U)===`global`}),"aria-pressed":a(U)===`global`,onClick:n[5]||=e=>Ce(`global`)},y((`tl`in e?e.tl:a(K))(`Global`,`Global`)),11,kc),S(`button`,{type:`button`,class:v({on:a(U)===`repo`}),"aria-pressed":a(U)===`repo`,onClick:n[6]||=e=>Ce(`repo`)},y((`tl`in e?e.tl:a(K))(`By repo`,`Par dépôt`)),11,Ac)],8,Oc),S(`div`,jc,[S(`button`,{type:`button`,class:v({on:a(_t)}),"aria-pressed":a(_t),disabled:`offlineView`in e?e.offlineView:a(H),onClick:St},[h(w,{name:`i-lucide-archive`}),t(y((`tl`in e?e.tl:a(K))(`Archived`,`Archivées`)),1)],10,Mc)])]),a(Je)?c(``,!0):(l(),u(`div`,{key:0,class:`board-seg tasks`,style:b({gridTemplateColumns:`repeat(${a(Le).length}, minmax(0, 1fr)) auto`}),role:`group`,"aria-label":(`t`in e?e.t:a(W))(`Board`)},[(l(!0),u(_,null,d(a(Le),e=>(l(),u(`button`,{key:e.id,type:`button`,class:v([`board-seg-btn`,[e.id,{on:a($e)===e.id}]]),"aria-pressed":a($e)===e.id,onClick:t=>et(e.id)},[S(`span`,null,y(e.label),1),S(`b`,null,y(e.total),1)],10,Pc))),128)),S(`button`,{type:`button`,class:v([`board-seg-btn board-done-toggle`,{shown:a(q)}]),"aria-pressed":a(q),"aria-label":a(Pe),title:a(Pe),onClick:Ne},[a(q)?(l(),o(w,{key:0,name:`i-lucide-eye-off`,class:`board-done-icon`})):(l(),u(_,{key:1},[S(`span`,null,y((`taskGroupLabel`in e?e.taskGroupLabel:a(gt))(`done`)),1),S(`b`,null,[h(w,{name:`i-lucide-eye`,class:`board-done-icon`}),t(y(a(je)),1)])],64))],10,Fc)],12,Nc)),S(`div`,{class:v([`board-grid`,{desk:a(Je),lanes:a(U)===`repo`}]),style:b(a(Re))},[a(Je)?(l(),u(`div`,Ic,[(l(!0),u(_,null,d(a(Le),(t,n)=>(l(),u(`h3`,{key:t.id,class:v([`board-col-head`,t.id])},[S(`span`,null,y(t.label),1),S(`span`,Lc,y(t.total),1),n===a(Le).length-1?(l(),u(`button`,{key:0,type:`button`,class:v([`board-done-toggle`,{shown:a(q)}]),"aria-pressed":a(q),"aria-label":a(Pe),title:a(Pe),onClick:Ne},[h(w,{name:a(q)?`i-lucide-eye-off`:`i-lucide-eye`,class:`board-done-icon`},null,8,[`name`]),S(`span`,null,y(a(q)?(`tl`in e?e.tl:a(K))(`Hide`,`Masquer`):`${(`taskGroupLabel`in e?e.taskGroupLabel:a(gt))(`done`)} · ${a(je)}`),1)],10,Rc)):c(``,!0)],2))),128))])):c(``,!0),a(U)===`global`?(l(),u(`div`,zc,[(l(!0),u(_,null,d(a(Le),t=>C((l(),u(`section`,{key:t.id,class:v([`board-col`,t.id]),"aria-label":t.label},[S(`div`,Vc,[(l(!0),u(_,null,d(t.cards,t=>(l(),o(T,{key:t.key,task:t.task,machine:a(he)?(`machineName`in e?e.machineName:a(Se))(t.machine):void 0,stale:t.stale,"read-at":ae(t.readAt),onOpen:e=>it(t)},null,8,[`task`,`machine`,`stale`,`read-at`,`onOpen`]))),128)),t.cards.length?c(``,!0):(l(),u(`p`,Hc,y((`t`in e?e.t:a(W))(`Nothing here`)),1)),t.hidden?(l(),u(`button`,{key:1,type:`button`,class:`board-more`,onClick:n[7]||=e=>Ae.value=!0},y((`tl`in e?e.tl:a(K))(`Show all (${t.hidden} more)`,`Tout afficher (${t.hidden} de plus)`)),1)):c(``,!0)])],10,Bc)),[[j,a(Je)||a($e)===t.id]])),128))])):(l(!0),u(_,{key:2},d(a(Ue),s=>(l(),u(`section`,{key:s.machine||`local`,class:`board-machine`,"data-machine":s.machine||`local`},[S(`div`,{class:v([`board-head machine`,{talking:Vt(s.machine,{kind:`main`})||Vt(s.machine,{kind:`machine`})}])},[S(`button`,{type:`button`,class:`board-fold`,"aria-expanded":!a(Be).has(`m:${s.machine}`),"aria-label":(`tl`in e?e.tl:a(K))(`Fold`,`Replier`),onClick:e=>Ve(`m:${s.machine}`)},[h(w,{name:a(Be).has(`m:${s.machine}`)?`i-lucide-chevron-right`:`i-lucide-chevron-down`},null,8,[`name`])],8,Wc),S(`p`,Gc,[S(`b`,null,y(R(s.machine)),1),S(`span`,Kc,[t(y(s.summary.main),1),s.summary.done?(l(),u(`span`,qc,y(s.summary.main?` · `:``)+y(s.summary.done),1)):c(``,!0)])]),S(`div`,Jc,[(l(),u(_,null,d(It,e=>h(i,{key:e.kind,text:Rt(s.machine,e)},{default:E(()=>[h(r,{color:`neutral`,variant:`outline`,size:`sm`,class:v([`board-coord`,{on:Vt(s.machine,e)}]),disabled:!!Lt(s.machine),"aria-description":Lt(s.machine)||void 0,onClick:t=>Pt(s.machine,e)},{default:E(()=>[t(y(Ft(s.machine,e)),1)]),_:2},1032,[`class`,`disabled`,`aria-description`,`onClick`])]),_:2},1032,[`text`])),64)),h(f,{machine:s.machine,to:{kind:`machine`},disabled:!!Lt(s.machine),compact:``},null,8,[`machine`,`disabled`])])],2),a(Be).has(`m:${s.machine}`)?c(``,!0):(l(),u(_,{key:0},[(l(!0),u(_,null,d(s.repos,p=>(l(),u(`section`,{key:p.repo,class:`board-repo`,"data-repo":p.repo},[S(`div`,{class:v([`board-head repo`,{talking:Vt(s.machine,{kind:`project`,repo:p.repo})}])},[S(`button`,{type:`button`,class:`board-fold`,"aria-expanded":!a(Be).has(`r:${s.machine}|${p.repo}`),"aria-label":(`tl`in e?e.tl:a(K))(`Fold`,`Replier`),onClick:e=>Ve(`r:${s.machine}|${p.repo}`)},[h(w,{name:a(Be).has(`r:${s.machine}|${p.repo}`)?`i-lucide-chevron-right`:`i-lucide-chevron-down`},null,8,[`name`])],8,Xc),S(`p`,Zc,[S(`b`,null,y(p.repo),1),S(`span`,Qc,[t(y(p.summary.main),1),p.summary.done?(l(),u(`span`,$c,y(p.summary.main?` · `:``)+y(p.summary.done),1)):c(``,!0)])]),S(`div`,el,[h(i,{text:Rt(s.machine,{kind:`project`,repo:p.repo})},{default:E(()=>[h(r,{color:`neutral`,variant:`outline`,size:`sm`,class:v([`board-coord`,{on:Vt(s.machine,{kind:`project`,repo:p.repo})}]),disabled:!!Lt(s.machine),"aria-description":Lt(s.machine)||void 0,onClick:e=>Pt(s.machine,{kind:`project`,repo:p.repo})},{default:E(()=>[t(y(Ft(s.machine,{kind:`project`,repo:p.repo})),1)]),_:2},1032,[`class`,`disabled`,`aria-description`,`onClick`])]),_:2},1032,[`text`]),h(f,{machine:s.machine,to:{kind:`project`,repo:p.repo},disabled:!!Lt(s.machine),compact:``},null,8,[`machine`,`to`,`disabled`]),h(r,{icon:`i-lucide-settings`,color:`neutral`,variant:`outline`,size:`sm`,class:`board-head-add board-repo-settings`,disabled:(`offlineView`in e?e.offlineView:a(H))||!$t(s.machine),"aria-label":(`tl`in e?e.tl:a(K))(`Repository settings: ${p.repo}`,`Réglages du dépôt : ${p.repo}`),title:(`tl`in e?e.tl:a(K))(`Repository settings`,`Réglages du dépôt`),onClick:e=>Xt(s.machine,p.repo)},null,8,[`disabled`,`aria-label`,`title`,`onClick`]),h(r,{icon:`i-lucide-plus`,color:`neutral`,variant:`outline`,size:`sm`,class:`board-head-add`,disabled:`offlineView`in e?e.offlineView:a(H),"aria-label":(`tl`in e?e.tl:a(K))(`New task in ${p.repo}`,`Nouvelle tâche dans ${p.repo}`),onClick:e=>Mt(s.machine,p.repo)},null,8,[`disabled`,`aria-label`,`onClick`])])],2),a(Be).has(`r:${s.machine}|${p.repo}`)?c(``,!0):(l(),u(`div`,tl,[(l(!0),u(_,null,d(p.cols,t=>C((l(),u(`section`,{key:t.id,class:v([`board-repo-col`,[t.id,{none:!t.total}]]),"data-group":t.id,"aria-label":t.label},[S(`div`,rl,[(l(!0),u(_,null,d(t.cards,e=>(l(),o(T,{key:e.key,task:e.task,stale:e.stale,"read-at":ae(e.readAt),onOpen:t=>it(e)},null,8,[`task`,`stale`,`read-at`,`onOpen`]))),128)),!a(Je)&&!t.total?(l(),u(`p`,il,y((`t`in e?e.t:a(W))(`Nothing here`)),1)):c(``,!0),t.hidden?(l(),u(`button`,{key:1,type:`button`,class:`board-more`,onClick:n[8]||=e=>Ae.value=!0},y((`tl`in e?e.tl:a(K))(`Show all (${t.hidden} more)`,`Tout afficher (${t.hidden} de plus)`)),1)):c(``,!0)])],10,nl)),[[j,a(Je)||a($e)===t.id]])),128))]))],8,Yc))),128)),s.repos.length?c(``,!0):(l(),u(`p`,al,y((`tl`in e?e.tl:a(K))(`No task yet: talk to the Coordinator at the top, or add one.`,`Aucune tâche : parle au Coordinateur en haut, ou ajoutes-en une.`)),1))],64))],8,Uc))),128)),a(_t)?(l(),u(`section`,{key:3,class:`board-archived`,"aria-label":(`tl`in e?e.tl:a(K))(`Archived tasks`,`Tâches archivées`)},[S(`h3`,sl,[S(`span`,null,y((`tl`in e?e.tl:a(K))(`Archived`,`Archivées`)),1),S(`span`,cl,y(a(wt).length),1)]),(l(!0),u(_,null,d(a(Et),e=>(l(),u(`p`,{key:e.machine,class:`board-note error`},[a(ce)?(l(),u(`b`,ll,y(R(e.machine))+` · `,1)):c(``,!0),t(y(e.error),1)]))),128)),S(`div`,ul,[(l(!0),u(_,null,d(a(wt),t=>(l(),o(T,{key:t.key,task:t.task,machine:a(he)?(`machineName`in e?e.machineName:a(Se))(t.machine):void 0,onOpen:e=>rt(t)},null,8,[`task`,`machine`,`onOpen`]))),128))]),a(bt)&&!a(wt).length?(l(),u(`p`,dl,y((`t`in e?e.t:a(W))(`Loading…`)),1)):a(wt).length?c(``,!0):(l(),u(`p`,fl,y((`t`in e?e.t:a(W))(`Nothing here`)),1))],8,ol)):c(``,!0)],6)],64)):c(``,!0),a(Q)?(l(),o(A,{key:a(Kt),target:a(Q),task:a(Ht),refresh:a(D),"refresh-key":a(k),"machine-label":R(a(Q).machine),reachable:a(I).some(e=>e.machine===a(Q).machine),onArchived:Dt,onRestored:kt,onChanged:a(D),onClose:n[9]||=e=>Q.value=null,onSheet:Gt,onNoAgent:qt,onCoordinator:Ut},null,8,[`target`,`task`,`refresh`,`refresh-key`,`machine-label`,`reachable`,`onChanged`])):c(``,!0),a(Jt)&&!a(Q)?(l(),o(ee,{key:JSON.stringify(a(Jt)),target:a(Jt),repos:a(Qt),"machine-label":R,reachable:$t,onClose:n[10]||=e=>Jt.value=null,onChanged:n[11]||=e=>a(D)()},null,8,[`target`,`repos`])):c(``,!0),h(M,{open:a(nt),"onUpdate:open":n[12]||=e=>O(nt)?nt.value=e:null,task:a(at),machine:a(tt)?.machine??``,reachable:a(I).some(e=>e.machine===(a(tt)?.machine??``)),refresh:a(D),onArchived:Dt,onRestored:kt,onChat:Wt,onCoordinator:Ut},null,8,[`open`,`task`,`machine`,`reachable`,`refresh`]),h(N,{open:a(At),"onUpdate:open":n[13]||=e=>O(At)?At.value=e:null,machines:a(I).map(e=>e.machine),repos:a(We),machine:a(jt).machine,repo:a(jt).repo,onAdded:Nt},null,8,[`open`,`machines`,`repos`,`machine`,`repo`])],2)}}}),[[`__scopeId`,`data-v-d61a770e`]]),{__name:`BoardView`}),vl=m({__name:`board`,setup(e){return p(()=>{q.value=null}),(e,t)=>{let n=_l;return l(),o(n)}}});export{vl as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Ot as e,P as t,gr as n,j as r}from"./C25ROUa9.js";import{t as i}from"./BDNMzG2s.js";import{Z as a}from"#entry";var o={class:`antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide`},s={class:`max-w-520px text-center`},c=[`textContent`],l=[`textContent`],u=[`textContent`],d=i({__name:`error-500`,props:{appName:{type:String,default:`Nuxt`},status:{type:Number,default:500},statusText:{type:String,default:`Internal server error`},description:{type:String,default:`This page is temporarily unavailable.`},refresh:{type:String,default:`Refresh this page`}},setup(i){let d=i;return a({title:`${d.status} - ${d.statusText} | ${d.appName}`,script:[{innerHTML:`!function(){let e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(let e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(let t of e)if("childList"===t.type)for(let e of t.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;let r=function(e){let r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),r.credentials="use-credentials"===e.crossOrigin?"include":"anonymous"===e.crossOrigin?"omit":"same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:`*,:after,:before{box-sizing:border-box;border-style:solid;border-width:0;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 #0000;--un-ring-shadow:0 0 #0000;--un-shadow-inset: ;--un-shadow:0 0 #0000;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:#93c5fd80;--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }`}]}),(a,d)=>(e(),t(`div`,o,[r(`div`,s,[r(`h1`,{class:`font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]`,textContent:n(i.status)},null,8,c),r(`h2`,{class:`font-semibold mb-2 sm:text-3xl text-2xl`,textContent:n(i.statusText)},null,8,l),r(`p`,{class:`mb-4 px-2 text-[#64748B] text-md`,textContent:n(i.description)},null,8,u)])]))}},[[`__scopeId`,`data-v-f91406c7`]]);export{d as default};
|