@nickmeriano/task 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/README.md +137 -22
  2. package/dist/asks.test.d.ts +17 -0
  3. package/dist/asks.test.d.ts.map +1 -0
  4. package/dist/asks.test.js +278 -0
  5. package/dist/asks.test.js.map +1 -0
  6. package/dist/check.d.ts +3 -2
  7. package/dist/check.d.ts.map +1 -1
  8. package/dist/check.js +99 -60
  9. package/dist/check.js.map +1 -1
  10. package/dist/check.test.js +99 -60
  11. package/dist/check.test.js.map +1 -1
  12. package/dist/claim-io.d.ts +73 -0
  13. package/dist/claim-io.d.ts.map +1 -0
  14. package/dist/claim-io.js +344 -0
  15. package/dist/claim-io.js.map +1 -0
  16. package/dist/claim.d.ts +108 -23
  17. package/dist/claim.d.ts.map +1 -1
  18. package/dist/claim.js +320 -86
  19. package/dist/claim.js.map +1 -1
  20. package/dist/claim.test.d.ts +10 -2
  21. package/dist/claim.test.d.ts.map +1 -1
  22. package/dist/claim.test.js +282 -96
  23. package/dist/claim.test.js.map +1 -1
  24. package/dist/cli.js +346 -68
  25. package/dist/cli.js.map +1 -1
  26. package/dist/file-store.d.ts +70 -24
  27. package/dist/file-store.d.ts.map +1 -1
  28. package/dist/file-store.js +319 -141
  29. package/dist/file-store.js.map +1 -1
  30. package/dist/git-serve.d.ts +183 -0
  31. package/dist/git-serve.d.ts.map +1 -0
  32. package/dist/git-serve.js +503 -0
  33. package/dist/git-serve.js.map +1 -0
  34. package/dist/git-serve.test.d.ts +16 -0
  35. package/dist/git-serve.test.d.ts.map +1 -0
  36. package/dist/git-serve.test.js +183 -0
  37. package/dist/git-serve.test.js.map +1 -0
  38. package/dist/git.d.ts +65 -0
  39. package/dist/git.d.ts.map +1 -0
  40. package/dist/git.js +114 -0
  41. package/dist/git.js.map +1 -0
  42. package/dist/id.d.ts +39 -0
  43. package/dist/id.d.ts.map +1 -0
  44. package/dist/id.js +67 -0
  45. package/dist/id.js.map +1 -0
  46. package/dist/inbox.d.ts +41 -0
  47. package/dist/inbox.d.ts.map +1 -0
  48. package/dist/inbox.js +56 -0
  49. package/dist/inbox.js.map +1 -0
  50. package/dist/overview.d.ts +9 -0
  51. package/dist/overview.d.ts.map +1 -1
  52. package/dist/overview.js +19 -11
  53. package/dist/overview.js.map +1 -1
  54. package/dist/overview.test.js +6 -5
  55. package/dist/overview.test.js.map +1 -1
  56. package/dist/promote.test.d.ts +3 -2
  57. package/dist/promote.test.d.ts.map +1 -1
  58. package/dist/promote.test.js +29 -31
  59. package/dist/promote.test.js.map +1 -1
  60. package/dist/publish.d.ts +2 -17
  61. package/dist/publish.d.ts.map +1 -1
  62. package/dist/publish.js +4 -49
  63. package/dist/publish.js.map +1 -1
  64. package/dist/search.d.ts +3 -1
  65. package/dist/search.d.ts.map +1 -1
  66. package/dist/search.js +15 -2
  67. package/dist/search.js.map +1 -1
  68. package/dist/search.test.js +9 -9
  69. package/dist/search.test.js.map +1 -1
  70. package/dist/server.d.ts.map +1 -1
  71. package/dist/server.js +218 -21
  72. package/dist/server.js.map +1 -1
  73. package/dist/store.d.ts +28 -14
  74. package/dist/store.d.ts.map +1 -1
  75. package/dist/store.js.map +1 -1
  76. package/dist/store.test.js +88 -75
  77. package/dist/store.test.js.map +1 -1
  78. package/dist/ticket-doc.d.ts +26 -10
  79. package/dist/ticket-doc.d.ts.map +1 -1
  80. package/dist/ticket-doc.js +71 -27
  81. package/dist/ticket-doc.js.map +1 -1
  82. package/dist/types.d.ts +51 -17
  83. package/dist/types.d.ts.map +1 -1
  84. package/dist/types.js.map +1 -1
  85. package/package.json +1 -1
  86. package/skill/SKILL.md +96 -24
  87. package/src/asks.test.ts +355 -0
  88. package/src/check.test.ts +129 -72
  89. package/src/check.ts +101 -58
  90. package/src/claim-io.ts +401 -0
  91. package/src/claim.test.ts +372 -101
  92. package/src/claim.ts +418 -99
  93. package/src/cli.ts +370 -67
  94. package/src/file-store.ts +357 -145
  95. package/src/git-serve.test.ts +240 -0
  96. package/src/git-serve.ts +595 -0
  97. package/src/git.ts +141 -0
  98. package/src/id.ts +68 -0
  99. package/src/inbox.ts +77 -0
  100. package/src/overview.test.ts +6 -5
  101. package/src/overview.ts +25 -10
  102. package/src/promote.test.ts +40 -28
  103. package/src/publish.ts +6 -53
  104. package/src/search.test.ts +11 -11
  105. package/src/search.ts +17 -3
  106. package/src/server.ts +221 -19
  107. package/src/store.test.ts +95 -77
  108. package/src/store.ts +28 -13
  109. package/src/ticket-doc.ts +93 -30
  110. package/src/types.ts +52 -17
  111. package/ui/dist/assets/index-BjsorZOU.js +229 -0
  112. package/ui/dist/assets/index-CoKCUYic.css +1 -0
  113. package/ui/dist/index.html +2 -2
  114. package/ui/dist/assets/index-BJmOsOdR.js +0 -229
  115. package/ui/dist/assets/index-BoqQlqSU.css +0 -1
package/dist/claim.js CHANGED
@@ -9,10 +9,14 @@
9
9
  * against `origin`. PR/session awareness belongs to whatever drives the claim
10
10
  * (the implement-task skill, a human).
11
11
  */
12
- import { spawnSync } from "node:child_process";
13
- import { join } from "node:path";
14
- import { FileStore, TICKETS_DIR, openBoard } from "./file-store.js";
15
- import { boardConfig, findBoardsByPrefix, findRoot, findScopeRoot, } from "./store.js";
12
+ import { rmSync } from "node:fs";
13
+ import { tmpdir } from "node:os";
14
+ import { join, relative, sep } from "node:path";
15
+ import { FileStore, TICKET_FILE, TICKETS_DIR, openBoard } from "./file-store.js";
16
+ import { GIT_NETWORK_TIMEOUT_MS, defaultBase, git, gitMust, runGit, } from "./git.js";
17
+ import { boardConfig, findBoards, findBoardsByPrefix, findRoot, findScopeRoot, } from "./store.js";
18
+ import { isTicketKey } from "./id.js";
19
+ import { parseTicket, parseTicketLenient, serializeTicket } from "./ticket-doc.js";
16
20
  /**
17
21
  * The branch namespace claims live under when the board doesn't configure
18
22
  * one. Deliberately vendor-neutral: repos whose workers are Claude Code cloud
@@ -26,22 +30,20 @@ export const DEFAULT_CLAIM_PREFIX = "task/claim/";
26
30
  /** Slash-terminated path segments of ref-safe characters. */
27
31
  const CLAIM_PREFIX_SHAPE = /^([A-Za-z0-9._-]+\/)+$/;
28
32
  /**
29
- * The board's configured claim namespace before validation or defaulting
30
- * `claims.branchPrefix`, falling back to the pre-0.8 top-level `claimPrefix`
31
- * (still read for one release so a version bump can't strand in-flight
32
- * claims; `task check` nags, `--fix` migrates). Exported for `task check`,
33
- * which wants the raw value to lint without the throw below.
34
- */
35
- export function configuredBranchPrefix(config) {
36
- return config.claims?.branchPrefix ?? config.claimPrefix;
37
- }
38
- /**
39
- * The board's claim namespace: configured branch prefix (a trailing slash is
33
+ * The board's claim namespace: `claims.branchPrefix` (a trailing slash is
40
34
  * implied) or the default. Validated here because it becomes a git ref and an
41
35
  * ls-remote glob — a malformed value must fail the claim, not corrupt it.
36
+ *
37
+ * The pre-0.8 top-level `claimPrefix` spelling is not honored — no consumers,
38
+ * no compat (TAS-41) — but silently *defaulting* over it would be worse than
39
+ * a shim: the board's committed lock convention would change under every
40
+ * worker at once. So its presence refuses, loudly, by name.
42
41
  */
43
42
  export function claimNamespace(config) {
44
- const raw = configuredBranchPrefix(config) ?? DEFAULT_CLAIM_PREFIX;
43
+ if (config.claimPrefix !== undefined && config.claims?.branchPrefix === undefined) {
44
+ throw new ClaimError('`claimPrefix` in .task/config.json is the pre-0.8 spelling and is no longer read — rename it to `claims: { "branchPrefix": … }`', "invalid");
45
+ }
46
+ const raw = config.claims?.branchPrefix ?? DEFAULT_CLAIM_PREFIX;
45
47
  const prefix = raw.endsWith("/") ? raw : `${raw}/`;
46
48
  if (!CLAIM_PREFIX_SHAPE.test(prefix) || prefix.includes("..") || /(^|\/)\./.test(prefix)) {
47
49
  throw new ClaimError(`invalid claims.branchPrefix in .task/config.json: ${JSON.stringify(raw)} — use slash-separated segments like "task/claim/" or "claude/task/"`, "invalid");
@@ -63,9 +65,9 @@ export function openClaimCap(root) {
63
65
  return undefined;
64
66
  }
65
67
  }
66
- /** { prefix: "TAS" }, 21 → "task/claim/tas-21" (or under the configured namespace). */
67
- export function claimBranch(config, number) {
68
- return `${claimNamespace(config)}${config.prefix.toLowerCase()}-${number}`;
68
+ /** { prefix: "TAS" }, "x7k4m" → "task/claim/tas-x7k4m" (or under the configured namespace). */
69
+ export function claimBranch(config, key) {
70
+ return `${claimNamespace(config)}${config.prefix.toLowerCase()}-${key}`;
69
71
  }
70
72
  /**
71
73
  * Why a claim was refused: "claimed" (someone holds the branch — exit 1, pick
@@ -79,43 +81,17 @@ export class ClaimError extends Error {
79
81
  this.kind = kind;
80
82
  }
81
83
  }
82
- function git(cwd, ...args) {
83
- const result = spawnSync("git", args, { cwd, encoding: "utf8" });
84
- if (result.error)
85
- throw result.error;
86
- return {
87
- status: result.status ?? 1,
88
- stdout: (result.stdout ?? "").trim(),
89
- stderr: (result.stderr ?? "").trim(),
90
- };
91
- }
92
- /** Run git and throw on failure — for the steps that have no soft outcome. */
93
- function gitMust(cwd, ...args) {
94
- const result = git(cwd, ...args);
84
+ /** Network git that throws on failure, with the timeout a real remote deserves. */
85
+ function gitNetMust(cwd, ...args) {
86
+ const result = runGit(cwd, args, { timeoutMs: GIT_NETWORK_TIMEOUT_MS });
95
87
  if (result.status !== 0) {
96
88
  throw new Error(`git ${args[0]} failed: ${result.stderr || result.stdout}`);
97
89
  }
98
90
  return result.stdout;
99
91
  }
100
- /**
101
- * The base every claim branch starts from: origin's default branch. Resolved
102
- * from `origin/HEAD` when the clone recorded it, with a main/master fallback
103
- * for repos wired up by hand (`git remote add` + push never sets origin/HEAD).
104
- */
105
- function defaultBase(cwd) {
106
- const head = git(cwd, "symbolic-ref", "--quiet", "refs/remotes/origin/HEAD");
107
- if (head.status === 0)
108
- return head.stdout.replace(/^refs\/remotes\//, "");
109
- for (const name of ["main", "master"]) {
110
- if (git(cwd, "show-ref", "--verify", "--quiet", `refs/remotes/origin/${name}`).status === 0) {
111
- return `origin/${name}`;
112
- }
113
- }
114
- throw new Error("couldn't resolve origin's default branch — origin/HEAD is unset and neither origin/main nor origin/master exists");
115
- }
116
92
  /** Every claim branch that exists on origin right now — one network call. */
117
93
  export function remoteClaims(cwd, namespace) {
118
- const out = gitMust(cwd, "ls-remote", "--heads", "origin", `${namespace}*`);
94
+ const out = gitNetMust(cwd, "ls-remote", "--heads", "origin", `${namespace}*`);
119
95
  const names = new Set();
120
96
  for (const line of out.split("\n")) {
121
97
  const ref = line.split("\t")[1];
@@ -125,25 +101,44 @@ export function remoteClaims(cwd, namespace) {
125
101
  return names;
126
102
  }
127
103
  function remoteBranchExists(cwd, branch) {
128
- return gitMust(cwd, "ls-remote", "--heads", "origin", branch) !== "";
104
+ return gitNetMust(cwd, "ls-remote", "--heads", "origin", branch) !== "";
105
+ }
106
+ /**
107
+ * Delete a remote branch and verify the ref is actually gone (TAS-8b7s9).
108
+ * Some environments — git egress proxies in cloud sessions, notably — drop
109
+ * branch-deletion pushes while git reports success ("Everything up-to-date"),
110
+ * so trusting the exit code lets `--release` report a release that didn't
111
+ * happen: the branch lives on, occupying a WIP-cap slot and advertising a
112
+ * stale claim to every worker. One bounded ls-remote on a path that already
113
+ * made network calls turns that lie into a loud failure naming the remedies.
114
+ */
115
+ function deleteRemoteBranchVerified(cwd, branch) {
116
+ gitNetMust(cwd, "push", "--quiet", "origin", "--delete", branch);
117
+ if (remoteBranchExists(cwd, branch)) {
118
+ throw new Error(`origin still has ${branch} after a deletion git reported as successful — this environment silently drops branch deletions. Delete it from one that can: locally, \`task sweep\` on a capable runner (CI), or the forge API/UI.`);
119
+ }
129
120
  }
130
121
  /** Blockers still in the way — anything not done or canceled still blocks. */
131
122
  function openBlockers(store, task) {
132
123
  return task.blockedBy
133
- .map((n) => store.get(n))
124
+ .map((k) => store.get(k))
134
125
  .filter((b) => b !== null && b.status !== "done" && b.status !== "canceled")
135
126
  .map((b) => b.id);
136
127
  }
137
- /** Throws ClaimError("invalid") unless `task` is claimable right now. */
138
- function assertClaimable(store, task, number) {
139
- const id = store.displayId(number);
128
+ /**
129
+ * Throws ClaimError("invalid") unless `task` is claimable right now. Open asks
130
+ * deliberately don't gate here: a ticket can be agent-implementable while a
131
+ * person owes it something in parallel — the done gate keeps that honest. An
132
+ * ask that must land *before* the work starts is a `blocked_by` on a thin
133
+ * human ticket, which the blocker check below already enforces.
134
+ */
135
+ function assertClaimable(store, task, key) {
136
+ const id = store.displayId(key);
140
137
  if (!task)
141
138
  throw new ClaimError(`no such task: ${id}`, "invalid");
142
139
  if (task.status !== "todo") {
143
140
  throw new ClaimError(`${id} is ${task.status} — only todo tickets can be claimed`, "invalid");
144
141
  }
145
- if (task.needsHuman)
146
- throw new ClaimError(`${id} needs a human — not claimable`, "invalid");
147
142
  const blockers = openBlockers(store, task);
148
143
  if (blockers.length) {
149
144
  throw new ClaimError(`${id} is blocked by ${blockers.join(", ")} — not claimable`, "invalid");
@@ -172,15 +167,15 @@ function assertUnderCap(openClaims, root, namespace) {
172
167
  * someone pre-created without a claim commit can't be hijacked by a plain
173
168
  * fast-forward. Leaves the winner checked out on the claim branch.
174
169
  */
175
- export function claim(store, number, options = {}) {
170
+ export function claim(store, key, options = {}) {
176
171
  // Unreachable since openBoard refuses pre-0.6 boards, kept as the narrowing
177
172
  // that lets the rest of this function assume text-canonical semantics.
178
173
  if (!(store instanceof FileStore)) {
179
174
  throw new ClaimError("claiming needs a text-format board — run `npx @nickmeriano/task@0.6 migrate` once", "invalid");
180
175
  }
181
176
  const cwd = store.root;
182
- const branch = claimBranch(store.config, number);
183
- const id = store.displayId(number);
177
+ const branch = claimBranch(store.config, key);
178
+ const id = store.displayId(key);
184
179
  // The local-branch check comes before ticket validation on purpose: on the
185
180
  // claim branch itself the ticket reads in_progress, and "already claimed"
186
181
  // (exit 1, move on) is the truthful answer there — not a validation failure.
@@ -195,11 +190,11 @@ export function claim(store, number, options = {}) {
195
190
  if (git(cwd, "show-ref", "--verify", "--quiet", `refs/heads/${branch}`).status === 0) {
196
191
  throw new ClaimError(`${id} is already claimed — ${branch} exists locally (finish it, or \`task claim --release ${id}\`)`, "claimed");
197
192
  }
198
- assertClaimable(store, store.get(number), number);
193
+ assertClaimable(store, store.get(key), key);
199
194
  if (tree.stdout !== "") {
200
195
  throw new ClaimError("working tree is dirty — commit or stash before claiming, the claim switches branches", "invalid");
201
196
  }
202
- gitMust(cwd, "fetch", "--quiet", "origin");
197
+ gitNetMust(cwd, "fetch", "--quiet", "origin");
203
198
  // One ls-remote answers both gates: is this ticket taken, and is the repo
204
199
  // at its WIP cap. "Already claimed" wins — that's exit 1 (pick the next
205
200
  // ticket), where the cap is exit 2 (fix something).
@@ -224,16 +219,16 @@ export function claim(store, number, options = {}) {
224
219
  // Re-validate against the base branch: the pre-checkout validation read
225
220
  // whatever happened to be checked out, this one reads the truth the claim
226
221
  // will actually be built on.
227
- assertClaimable(store, store.get(number), number);
228
- store.update(number, { status: "in_progress" });
229
- gitMust(cwd, "add", "--", join(store.taskDir, TICKETS_DIR, String(number)));
222
+ assertClaimable(store, store.get(key), key);
223
+ store.update(key, { status: "in_progress" });
224
+ gitMust(cwd, "add", "--", join(store.taskDir, TICKETS_DIR, key));
230
225
  gitMust(cwd, "commit", "--quiet", "-m", `chore(board): claim ${id} → in_progress`);
231
226
  }
232
227
  catch (error) {
233
228
  undo();
234
229
  throw error;
235
230
  }
236
- const push = git(cwd, "push", "--quiet", "-u", "origin", branch, `--force-with-lease=refs/heads/${branch}:`);
231
+ const push = runGit(cwd, ["push", "--quiet", "-u", "origin", branch, `--force-with-lease=refs/heads/${branch}:`], { timeoutMs: GIT_NETWORK_TIMEOUT_MS });
237
232
  if (push.status !== 0) {
238
233
  undo();
239
234
  if (remoteBranchExists(cwd, branch)) {
@@ -241,16 +236,173 @@ export function claim(store, number, options = {}) {
241
236
  }
242
237
  throw new ClaimError(`${id}: push of ${branch} was rejected (likely a concurrent claim) — ${push.stderr || "no detail from git"}`, "claimed");
243
238
  }
244
- return { task: store.get(number), branch, base };
239
+ return { task: store.get(key), branch, base, previous };
240
+ }
241
+ // ── Lock-only claims ─────────────────────────────────────────────────────────
242
+ /** A file's path relative to the git toplevel — git tree reads speak toplevel paths. */
243
+ function ticketPathFromToplevel(store, key) {
244
+ const toplevel = gitMust(store.root, "rev-parse", "--show-toplevel");
245
+ return [relative(toplevel, store.taskDir).split(sep).join("/"), TICKETS_DIR, key, TICKET_FILE]
246
+ .filter(Boolean)
247
+ .join("/");
248
+ }
249
+ /**
250
+ * `task claim <id> --lock-only`: mint the claim branch on origin without
251
+ * touching the checkout. For sessions pinned to a provisioned branch (a
252
+ * Claude web session, a CI job) the three roles plain `claim` bundles — the
253
+ * lock, the workspace, and the delivery branch — don't coincide: the session
254
+ * can't switch branches without breaking its harness contract, and working
255
+ * outside the lock is how two workers end up on the same ticket.
256
+ *
257
+ * So this takes just the lock: the `in_progress` flip commit is built against
258
+ * origin's default-branch tree in a temporary index (read-tree → hash-object →
259
+ * update-index → write-tree → commit-tree) and pushed with the same
260
+ * must-not-exist lease plain `claim` uses — the compare-and-swap is identical,
261
+ * only the checkout stays where it is (dirty or pinned, doesn't matter). The
262
+ * flip commit carries a `delivered_by: <branch>` trailer naming the checkout's
263
+ * branch, so a lock-only claim is legible state — anyone reading the claim
264
+ * branch sees where the work will actually land. Exit-code contract and
265
+ * `--release` behave exactly like plain claim.
266
+ *
267
+ * Validation reads the *base tree*, not the checkout: the commit is built on
268
+ * origin's default branch, and the pinned checkout's copy of the ticket may be
269
+ * stale or diverged — a promote that hasn't merged yet isn't claimable yet.
270
+ */
271
+ export function claimLockOnly(store, key, options = {}) {
272
+ if (!(store instanceof FileStore)) {
273
+ throw new ClaimError("claiming needs a text-format board — run `npx @nickmeriano/task@0.6 migrate` once", "invalid");
274
+ }
275
+ const cwd = store.root;
276
+ const branch = claimBranch(store.config, key);
277
+ const id = store.displayId(key);
278
+ if (git(cwd, "rev-parse", "--git-dir").status !== 0) {
279
+ throw new ClaimError(`not a git repository: ${cwd}`, "invalid");
280
+ }
281
+ // A local claim branch means some flow here already claimed it the plain way.
282
+ if (git(cwd, "show-ref", "--verify", "--quiet", `refs/heads/${branch}`).status === 0) {
283
+ throw new ClaimError(`${id} is already claimed — ${branch} exists locally (finish it, or \`task claim --release ${id}\`)`, "claimed");
284
+ }
285
+ gitNetMust(cwd, "fetch", "--quiet", "origin");
286
+ const namespace = claimNamespace(store.config);
287
+ const openClaims = remoteClaims(cwd, namespace);
288
+ if (openClaims.has(branch)) {
289
+ throw new ClaimError(`${id} is already claimed — ${branch} exists on origin`, "claimed");
290
+ }
291
+ if (!options.force)
292
+ assertUnderCap(openClaims, cwd, namespace);
293
+ const base = defaultBase(cwd);
294
+ const baseSha = gitMust(cwd, "rev-parse", base);
295
+ const path = ticketPathFromToplevel(store, key);
296
+ const bytes = git(cwd, "show", `${baseSha}:${path}`);
297
+ if (bytes.status !== 0) {
298
+ throw new ClaimError(`no such task on ${base}: ${id} — a lock-only claim is built on origin's default branch, so the ticket must exist there`, "invalid");
299
+ }
300
+ // Strict parse first — it carries unknown frontmatter through, so the flip
301
+ // commit can't silently drop a hand-added field — falling back to lenient
302
+ // for bytes another checkout or an older CLI wrote oddly (branch reads
303
+ // degrade, they don't refuse the tree).
304
+ let doc;
305
+ try {
306
+ doc = parseTicket(bytes.stdout, `${base}:${path}`);
307
+ }
308
+ catch {
309
+ doc = parseTicketLenient(bytes.stdout);
310
+ }
311
+ if (!doc) {
312
+ throw new ClaimError(`${id} on ${base} isn't a readable ticket file`, "invalid");
313
+ }
314
+ if (doc.status !== "todo") {
315
+ throw new ClaimError(`${id} is ${doc.status} on ${base} — only todo tickets can be claimed (a local promote counts once it lands on the default branch)`, "invalid");
316
+ }
317
+ const blockers = doc.blockedBy.filter((blocker) => {
318
+ const raw = git(cwd, "show", `${baseSha}:${ticketPathFromToplevel(store, blocker)}`);
319
+ if (raw.status !== 0)
320
+ return false; // missing blocker doesn't block, as in openBlockers
321
+ const status = parseTicketLenient(raw.stdout)?.status;
322
+ return status !== undefined && status !== "done" && status !== "canceled";
323
+ });
324
+ if (blockers.length) {
325
+ throw new ClaimError(`${id} is blocked by ${blockers.map((b) => store.displayId(b)).join(", ")} — not claimable`, "invalid");
326
+ }
327
+ const deliveredBy = git(cwd, "symbolic-ref", "--quiet", "--short", "HEAD").stdout ||
328
+ gitMust(cwd, "rev-parse", "HEAD");
329
+ const flipped = serializeTicket({
330
+ ...doc,
331
+ status: "in_progress",
332
+ updatedAt: new Date().toISOString(),
333
+ });
334
+ // The temp-index dance claim-io.ts proved out: build the flip commit against
335
+ // the base tree without ever touching the checkout or its index.
336
+ const index = join(tmpdir(), `task-claim-index-${process.pid}-${Date.now()}`);
337
+ const env = { GIT_INDEX_FILE: index };
338
+ let commit;
339
+ try {
340
+ if (runGit(cwd, ["read-tree", baseSha], { env }).status !== 0) {
341
+ throw new Error(`git read-tree failed on ${base}`);
342
+ }
343
+ const blob = runGit(cwd, ["hash-object", "-w", "--stdin"], { input: flipped });
344
+ if (blob.status !== 0)
345
+ throw new Error("git hash-object failed");
346
+ if (runGit(cwd, ["update-index", "--add", "--cacheinfo", `100644,${blob.stdout},${path}`], { env })
347
+ .status !== 0) {
348
+ throw new Error(`git update-index failed for ${path}`);
349
+ }
350
+ const tree = runGit(cwd, ["write-tree"], { env });
351
+ if (tree.status !== 0)
352
+ throw new Error("git write-tree failed");
353
+ const made = git(cwd, "commit-tree", tree.stdout, "-p", baseSha, "-m", `chore(board): claim ${id} → in_progress (lock-only)\n\ndelivered_by: ${deliveredBy}`);
354
+ if (made.status !== 0) {
355
+ throw new Error("git commit-tree failed — is git user.name/user.email configured?");
356
+ }
357
+ commit = made.stdout;
358
+ }
359
+ finally {
360
+ rmSync(index, { force: true });
361
+ }
362
+ // The same compare-and-swap as plain claim: the empty lease means "the ref
363
+ // must not exist", so two concurrent claimers still get exactly one winner.
364
+ const push = runGit(cwd, ["push", "--quiet", "origin", `${commit}:refs/heads/${branch}`, `--force-with-lease=refs/heads/${branch}:`], { timeoutMs: GIT_NETWORK_TIMEOUT_MS });
365
+ if (push.status !== 0) {
366
+ if (remoteBranchExists(cwd, branch)) {
367
+ throw new ClaimError(`${id} is already claimed — ${branch} was just created on origin`, "claimed");
368
+ }
369
+ throw new ClaimError(`${id}: push of ${branch} was rejected (likely a concurrent claim) — ${push.stderr || "no detail from git"}`, "claimed");
370
+ }
371
+ // Keep the remote-tracking ref in step so an immediate read (the inbox, the
372
+ // serve UI) sees the claim without another fetch.
373
+ git(cwd, "update-ref", `refs/remotes/origin/${branch}`, commit);
374
+ // The checkout's copy of the ticket wasn't touched — present the claim as
375
+ // made, preferring the local ticket (asks, relations) when it exists.
376
+ const local = store.get(key);
377
+ const task = local
378
+ ? { ...local, status: "in_progress" }
379
+ : {
380
+ id,
381
+ key,
382
+ title: doc.title,
383
+ description: doc.description,
384
+ status: "in_progress",
385
+ tags: doc.tags,
386
+ goal: doc.goal,
387
+ needsHuman: false,
388
+ asks: [],
389
+ blocks: [],
390
+ blockedBy: doc.blockedBy,
391
+ prs: doc.prs,
392
+ position: doc.position,
393
+ createdAt: doc.createdAt,
394
+ updatedAt: doc.updatedAt,
395
+ };
396
+ return { task, branch, base, deliveredBy };
245
397
  }
246
398
  /**
247
399
  * Abandon a claim cleanly: delete the branch on origin and locally. The status
248
400
  * flip only ever existed as a commit on that branch, so deleting it *is* the
249
401
  * revert — the default branch never saw in_progress.
250
402
  */
251
- export function release(store, number) {
403
+ export function release(store, key) {
252
404
  const cwd = store.root;
253
- const branch = claimBranch(store.config, number);
405
+ const branch = claimBranch(store.config, key);
254
406
  const onBranch = git(cwd, "symbolic-ref", "--quiet", "--short", "HEAD").stdout === branch;
255
407
  if (onBranch) {
256
408
  const tree = gitMust(cwd, "status", "--porcelain", "-uno");
@@ -271,43 +423,125 @@ export function release(store, number) {
271
423
  const local = git(cwd, "branch", "--quiet", "-D", branch).status === 0;
272
424
  const remote = remoteBranchExists(cwd, branch);
273
425
  if (remote)
274
- gitMust(cwd, "push", "--quiet", "origin", "--delete", branch);
426
+ deleteRemoteBranchVerified(cwd, branch);
275
427
  return { branch, remote, local };
276
428
  }
277
429
  /**
278
- * The dispatcher's queue view: `todo` in position order, minus needs-human,
279
- * minus blocked, minus tickets whose claim branch already exists on origin
280
- * (one ls-remote for the whole namespace). The top entry is next up.
430
+ * `task sweep`: for every claim branch on origin whose ticket is done,
431
+ * canceled, or missing on the current checkout, delete the branch with the
432
+ * same deletion verification as `--release`, so a survivor is a failure, never
433
+ * a silent lie. This is the liveness half of the lock: environments that can't
434
+ * delete remote branches leave stale claims behind (`--release` there fails
435
+ * loudly rather than lying), and sweep, run from a runner that *can* delete
436
+ * (CI on push-to-main or cron, a laptop cron), heals them.
437
+ *
438
+ * Deliberately pure git and zero judgment — no vendor awareness, no agent in
439
+ * the loop — and scoped to exactly the branches the claim protocol mints:
440
+ * `<namespace><prefix>-<key>` with a valid ticket key. A branch under the
441
+ * namespace that doesn't fit the scheme (a pre-migration numeric claim, a
442
+ * hand-made branch) is *skipped and reported*, never deleted — it may be an
443
+ * open PR's head, and deleting what claiming didn't create isn't janitorial
444
+ * work, it's a judgment call. Within the scheme, the ticket's status on this
445
+ * checkout decides: done/canceled/missing → delete, anything live → keep.
446
+ * Boards are discovered repo-wide, the way `task serve` finds them, so one
447
+ * sweep covers every board's namespace.
448
+ */
449
+ export function sweep(cwd) {
450
+ const scope = findScopeRoot(cwd);
451
+ const boards = [];
452
+ for (const ref of findBoards(scope)) {
453
+ try {
454
+ boards.push(openBoard(ref.root));
455
+ }
456
+ catch {
457
+ // An unreadable board can't vouch for its branches — skip it.
458
+ }
459
+ }
460
+ if (boards.length === 0) {
461
+ throw new ClaimError("no .task directory found in this directory or any parent — run `task init` first", "invalid");
462
+ }
463
+ // One ls-remote per distinct namespace (normally exactly one — `task check`
464
+ // lints that boards agree), each branch matched to the board whose
465
+ // `<prefix>-` leads its final segment.
466
+ const namespaces = new Map();
467
+ for (const store of boards) {
468
+ let namespace;
469
+ try {
470
+ namespace = claimNamespace(store.config);
471
+ }
472
+ catch {
473
+ continue; // a malformed prefix can't have minted branches worth sweeping
474
+ }
475
+ const list = namespaces.get(namespace) ?? [];
476
+ list.push(store);
477
+ namespaces.set(namespace, list);
478
+ }
479
+ const result = { swept: [], kept: [], skipped: [], failed: [] };
480
+ for (const [namespace, stores] of namespaces) {
481
+ for (const branch of [...remoteClaims(scope, namespace)].sort()) {
482
+ const rest = branch.slice(namespace.length);
483
+ const store = stores.find((s) => rest.startsWith(`${s.config.prefix.toLowerCase()}-`));
484
+ const key = store ? rest.slice(store.config.prefix.length + 1) : null;
485
+ if (!store || !key || !isTicketKey(key)) {
486
+ result.skipped.push(branch);
487
+ continue;
488
+ }
489
+ const task = store.get(key);
490
+ if (task && task.status !== "done" && task.status !== "canceled") {
491
+ result.kept.push({ branch, ticket: task.id, status: task.status });
492
+ continue;
493
+ }
494
+ const entry = task
495
+ ? { branch, ticket: task.id, reason: task.status }
496
+ : { branch, ticket: store.displayId(key), reason: "missing" };
497
+ try {
498
+ deleteRemoteBranchVerified(scope, branch);
499
+ git(scope, "update-ref", "-d", `refs/remotes/origin/${branch}`);
500
+ result.swept.push(entry);
501
+ }
502
+ catch (error) {
503
+ result.failed.push({
504
+ branch,
505
+ error: error instanceof Error ? error.message : String(error),
506
+ });
507
+ }
508
+ }
509
+ }
510
+ return result;
511
+ }
512
+ /**
513
+ * The dispatcher's queue view: `todo` in position order, minus blocked, minus
514
+ * tickets whose claim branch already exists on origin (one ls-remote for the
515
+ * whole namespace). The top entry is next up. Open asks don't exclude a
516
+ * ticket — see assertClaimable.
281
517
  */
282
518
  export function claimableTasks(store) {
283
519
  const claimed = remoteClaims(store.root, claimNamespace(store.config));
284
520
  return store
285
521
  .list({ statuses: ["todo"] })
286
- .filter((t) => !t.needsHuman)
287
522
  .filter((t) => openBlockers(store, t).length === 0)
288
- .filter((t) => !claimed.has(claimBranch(store.config, t.number)));
523
+ .filter((t) => !claimed.has(claimBranch(store.config, t.key)));
289
524
  }
290
525
  /**
291
526
  * `task promote` — the human "build this" call, as a verb: `backlog` → `todo`.
292
527
  * No quality gate: planning happens at claim time (the worker's plan tick),
293
- * so a one-line backlog ticket is promotable. Blocked and needs-human are
294
- * claim-time facts that `claim`/`--claimable` already enforce live, so
295
- * promoting a blocked ticket is legitimate sequencing ("build this once
296
- * NIC-11 lands") — reported as a hold, never refused. Writes the ticket like
297
- * `update` does; committing is the caller's job.
528
+ * so a one-line backlog ticket is promotable. Blockers are claim-time facts
529
+ * that `claim`/`--claimable` already enforce live, so promoting a blocked
530
+ * ticket is legitimate sequencing ("build this once NIC-11 lands") — reported
531
+ * as a hold, never refused. Open asks aren't a hold at all: they don't gate
532
+ * claiming, only done. Writes the ticket like `update` does; committing is
533
+ * the caller's job.
298
534
  */
299
- export function promote(store, number) {
300
- const task = store.get(number);
301
- const id = store.displayId(number);
535
+ export function promote(store, key) {
536
+ const task = store.get(key);
537
+ const id = store.displayId(key);
302
538
  if (!task)
303
539
  throw new ClaimError(`no such task: ${id}`, "invalid");
304
540
  if (task.status !== "backlog") {
305
541
  throw new ClaimError(`${id} is ${task.status} — only backlog tickets can be promoted`, "invalid");
306
542
  }
307
- const updated = store.update(number, { status: "todo" });
543
+ const updated = store.update(key, { status: "todo" });
308
544
  const holds = [];
309
- if (updated.needsHuman)
310
- holds.push("flagged needs-human");
311
545
  const blockers = openBlockers(store, updated);
312
546
  if (blockers.length)
313
547
  holds.push(`blocked by ${blockers.join(", ")}`);
@@ -377,7 +611,7 @@ export function claimNext(stores, options = {}) {
377
611
  for (const store of stores) {
378
612
  for (const task of claimableTasks(store)) {
379
613
  try {
380
- return claim(store, task.number, options);
614
+ return claim(store, task.key, options);
381
615
  }
382
616
  catch (error) {
383
617
  // Claimed out from under us, or changed since listing — next in line.
package/dist/claim.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"claim.js","sourceRoot":"","sources":["../src/claim.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claim.js","sourceRoot":"","sources":["../src/claim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChF,OAAO,EACL,sBAAsB,EACtB,WAAW,EACX,GAAG,EACH,OAAO,EACP,MAAM,GACP,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,QAAQ,EACR,aAAa,GAEd,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,eAAe,EAAkB,MAAM,iBAAiB,CAAA;AAGlG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAAA;AAEjD,6DAA6D;AAC7D,MAAM,kBAAkB,GAAG,wBAAwB,CAAA;AAEnD;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,MAAqB;IAClD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,KAAK,SAAS,EAAE,CAAC;QAClF,MAAM,IAAI,UAAU,CAClB,iIAAiI,EACjI,SAAS,CACV,CAAA;IACH,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,IAAI,oBAAoB,CAAA;IAC/D,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAA;IAClD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACzF,MAAM,IAAI,UAAU,CAClB,qDAAqD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,sEAAsE,EAC9I,SAAS,CACV,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAA;QACjE,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;IACtF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,WAAW,CAAC,MAAqB,EAAE,GAAW;IAC5D,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,GAAG,EAAE,CAAA;AACzE,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,CAAuB;IACpC,YAAY,OAAe,EAAE,IAA2B;QACtD,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AAED,mFAAmF;AACnF,SAAS,UAAU,CAAC,GAAW,EAAE,GAAG,IAAc;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAC,CAAA;IACvE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;IAC7E,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAA;AACtB,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,SAAiB;IACzD,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,SAAS,GAAG,CAAC,CAAA;IAC9E,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/B,IAAI,GAAG,EAAE,UAAU,CAAC,aAAa,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;IAChF,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW,EAAE,MAAc;IACrD,OAAO,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,CAAA;AACzE,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,0BAA0B,CAAC,GAAW,EAAE,MAAc;IAC7D,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;IAChE,IAAI,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,oBAAoB,MAAM,sMAAsM,CACjO,CAAA;IACH,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,SAAS,YAAY,CAAC,KAAY,EAAE,IAAU;IAC5C,OAAO,IAAI,CAAC,SAAS;SAClB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACxB,MAAM,CAAC,CAAC,CAAC,EAAa,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC;SACtF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;AACrB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,KAAY,EAAE,IAAiB,EAAE,GAAW;IACnE,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IAC/B,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;IACjE,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,UAAU,CAAC,GAAG,EAAE,OAAO,IAAI,CAAC,MAAM,qCAAqC,EAAE,SAAS,CAAC,CAAA;IAC/F,CAAC;IACD,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAC1C,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAAC,GAAG,EAAE,kBAAkB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAA;IAC/F,CAAC;AACH,CAAC;AAoBD;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,UAAuB,EAAE,IAAY,EAAE,SAAiB;IAC9E,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAI,GAAG,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QAChD,MAAM,IAAI,UAAU,CAClB,GAAG,UAAU,CAAC,IAAI,gBAAgB,UAAU,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,uBAAuB,SAAS,4CAA4C,GAAG,4DAA4D,EAC9M,SAAS,CACV,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,KAAK,CAAC,KAAY,EAAE,GAAW,EAAE,UAAwB,EAAE;IACzE,4EAA4E;IAC5E,uEAAuE;IACvE,IAAI,CAAC,CAAC,KAAK,YAAY,SAAS,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,UAAU,CAClB,mFAAmF,EACnF,SAAS,CACV,CAAA;IACH,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAA;IACtB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7C,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IAE/B,2EAA2E;IAC3E,0EAA0E;IAC1E,6EAA6E;IAC7E,6EAA6E;IAC7E,0EAA0E;IAC1E,4EAA4E;IAC5E,0DAA0D;IAC1D,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,CAAA;IACtD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,UAAU,CAAC,yBAAyB,GAAG,EAAE,EAAE,SAAS,CAAC,CAAA;IACjE,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,MAAM,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrF,MAAM,IAAI,UAAU,CAClB,GAAG,EAAE,yBAAyB,MAAM,yDAAyD,EAAE,KAAK,EACpG,SAAS,CACV,CAAA;IACH,CAAC;IAED,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;IAC3C,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACvB,MAAM,IAAI,UAAU,CAClB,sFAAsF,EACtF,SAAS,CACV,CAAA;IACH,CAAC;IAED,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;IAC7C,0EAA0E;IAC1E,wEAAwE;IACxE,oDAAoD;IACpD,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC9C,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IAC/C,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,UAAU,CAAC,GAAG,EAAE,yBAAyB,MAAM,mBAAmB,EAAE,SAAS,CAAC,CAAA;IAC1F,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,KAAK;QAAE,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;IAE9D,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;IAC7B,qEAAqE;IACrE,4DAA4D;IAC5D,MAAM,QAAQ,GACZ,GAAG,CAAC,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,MAAM;QAC7D,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;IACnC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IAEvD,MAAM,IAAI,GAAG,GAAS,EAAE;QACtB,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;QACzC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAC7C,CAAC,CAAA;IAED,IAAI,CAAC;QACH,wEAAwE;QACxE,0EAA0E;QAC1E,6BAA6B;QAC7B,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;QAC3C,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAA;QAC5C,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAA;QAChE,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,uBAAuB,EAAE,gBAAgB,CAAC,CAAA;IACpF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,EAAE,CAAA;QACN,MAAM,KAAK,CAAA;IACb,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CACjB,GAAG,EACH,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,iCAAiC,MAAM,GAAG,CAAC,EACvF,EAAE,SAAS,EAAE,sBAAsB,EAAE,CACtC,CAAA;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,IAAI,EAAE,CAAA;QACN,IAAI,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,UAAU,CAAC,GAAG,EAAE,yBAAyB,MAAM,6BAA6B,EAAE,SAAS,CAAC,CAAA;QACpG,CAAC;QACD,MAAM,IAAI,UAAU,CAClB,GAAG,EAAE,aAAa,MAAM,+CAA+C,IAAI,CAAC,MAAM,IAAI,oBAAoB,EAAE,EAC5G,SAAS,CACV,CAAA;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;AAC1D,CAAC;AAED,gFAAgF;AAEhF,wFAAwF;AACxF,SAAS,sBAAsB,CAAC,KAAY,EAAE,GAAW;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAA;IACpE,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,CAAC;SAC3F,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,CAAC;AAUD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAY,EACZ,GAAW,EACX,UAAwB,EAAE;IAE1B,IAAI,CAAC,CAAC,KAAK,YAAY,SAAS,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,UAAU,CAClB,mFAAmF,EACnF,SAAS,CACV,CAAA;IACH,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAA;IACtB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7C,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IAE/B,IAAI,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,UAAU,CAAC,yBAAyB,GAAG,EAAE,EAAE,SAAS,CAAC,CAAA;IACjE,CAAC;IACD,8EAA8E;IAC9E,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,MAAM,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrF,MAAM,IAAI,UAAU,CAClB,GAAG,EAAE,yBAAyB,MAAM,yDAAyD,EAAE,KAAK,EACpG,SAAS,CACV,CAAA;IACH,CAAC;IAED,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;IAC7C,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC9C,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IAC/C,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,UAAU,CAAC,GAAG,EAAE,yBAAyB,MAAM,mBAAmB,EAAE,SAAS,CAAC,CAAA;IAC1F,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,KAAK;QAAE,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;IAE9D,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;IAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,CAAA;IAC/C,MAAM,IAAI,GAAG,sBAAsB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC/C,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC,CAAA;IACpD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,UAAU,CAAC,mBAAmB,IAAI,KAAK,EAAE,0FAA0F,EAAE,SAAS,CAAC,CAAA;IAC3J,CAAC;IACD,2EAA2E;IAC3E,0EAA0E;IAC1E,uEAAuE;IACvE,wCAAwC;IACxC,IAAI,GAAqB,CAAA;IACzB,IAAI,CAAC;QACH,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAA;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACxC,CAAC;IACD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,UAAU,CAAC,GAAG,EAAE,OAAO,IAAI,+BAA+B,EAAE,SAAS,CAAC,CAAA;IAClF,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,UAAU,CAClB,GAAG,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,IAAI,kGAAkG,EACnI,SAAS,CACV,CAAA;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAChD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,IAAI,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;QACpF,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA,CAAC,oDAAoD;QACvF,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;QACrD,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,UAAU,CAAA;IAC3E,CAAC,CAAC,CAAA;IACF,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAClB,GAAG,EAAE,kBAAkB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAC3F,SAAS,CACV,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GACf,GAAG,CAAC,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,MAAM;QAC7D,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;IACnC,MAAM,OAAO,GAAG,eAAe,CAAC;QAC9B,GAAG,GAAG;QACN,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC,CAAA;IAEF,6EAA6E;IAC7E,iEAAiE;IACjE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAC7E,MAAM,GAAG,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,CAAA;IACrC,IAAI,MAAc,CAAA;IAClB,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAA;QACpD,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;QAC9E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAChE,IACE,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC;aAC5F,MAAM,KAAK,CAAC,EACf,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAA;QACxD,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;QACjD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;QAC/D,MAAM,IAAI,GAAG,GAAG,CACd,GAAG,EACH,aAAa,EACb,IAAI,CAAC,MAAM,EACX,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,uBAAuB,EAAE,+CAA+C,WAAW,EAAE,CACtF,CAAA;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;QACrF,CAAC;QACD,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IACtB,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAChC,CAAC;IAED,2EAA2E;IAC3E,4EAA4E;IAC5E,MAAM,IAAI,GAAG,MAAM,CACjB,GAAG,EACH,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,eAAe,MAAM,EAAE,EAAE,iCAAiC,MAAM,GAAG,CAAC,EAC3G,EAAE,SAAS,EAAE,sBAAsB,EAAE,CACtC,CAAA;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,IAAI,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,UAAU,CAAC,GAAG,EAAE,yBAAyB,MAAM,6BAA6B,EAAE,SAAS,CAAC,CAAA;QACpG,CAAC;QACD,MAAM,IAAI,UAAU,CAClB,GAAG,EAAE,aAAa,MAAM,+CAA+C,IAAI,CAAC,MAAM,IAAI,oBAAoB,EAAE,EAC5G,SAAS,CACV,CAAA;IACH,CAAC;IACD,4EAA4E;IAC5E,kDAAkD;IAClD,GAAG,CAAC,GAAG,EAAE,YAAY,EAAE,uBAAuB,MAAM,EAAE,EAAE,MAAM,CAAC,CAAA;IAE/D,0EAA0E;IAC1E,sEAAsE;IACtE,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC5B,MAAM,IAAI,GAAS,KAAK;QACtB,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE;QACrC,CAAC,CAAC;YACE,EAAE;YACF,GAAG;YACH,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,UAAU,EAAE,KAAK;YACjB,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS,EAAE,GAAG,CAAC,SAAS;SACzB,CAAA;IACL,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;AAC5C,CAAC;AASD;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,KAAY,EAAE,GAAW;IAC/C,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAA;IACtB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAE7C,MAAM,QAAQ,GACZ,GAAG,CAAC,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAA;IAC1E,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,CAAA;QAC1D,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAChB,MAAM,IAAI,UAAU,CAClB,mBAAmB,MAAM,0DAA0D,EACnF,SAAS,CACV,CAAA;QACH,CAAC;QACD,0EAA0E;QAC1E,8DAA8D;QAC9D,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;QAC3C,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpF,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;QAC5C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAA;IACtE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAC9C,IAAI,MAAM;QAAE,0BAA0B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACnD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AAClC,CAAC;AA2BD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;IAChC,MAAM,MAAM,GAAY,EAAE,CAAA;IAC1B,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;QAChE,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,UAAU,CAClB,kFAAkF,EAClF,SAAS,CACV,CAAA;IACH,CAAC;IAED,4EAA4E;IAC5E,mEAAmE;IACnE,uCAAuC;IACvC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAmB,CAAA;IAC7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,SAAiB,CAAA;QACrB,IAAI,CAAC;YACH,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,SAAQ,CAAC,+DAA+D;QAC1E,CAAC;QACD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;QAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAChB,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,MAAM,MAAM,GAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;IAC5E,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC7C,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAChE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;YAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CACrD,CAAA;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YACrE,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC3B,SAAQ;YACV,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC3B,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;gBAClE,SAAQ;YACV,CAAC;YACD,MAAM,KAAK,GAAgB,IAAI;gBAC7B,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAA6B,EAAE;gBACzE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;YAC/D,IAAI,CAAC;gBACH,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;gBACzC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,uBAAuB,MAAM,EAAE,CAAC,CAAA;gBAC/D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;oBACjB,MAAM;oBACN,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAY;IACzC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;IACtE,OAAO,KAAK;SACT,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;SAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;SAClD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAClE,CAAC;AAQD;;;;;;;;;GASG;AACH,MAAM,UAAU,OAAO,CAAC,KAAY,EAAE,GAAW;IAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC3B,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IAC/B,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;IACjE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,UAAU,CAClB,GAAG,EAAE,OAAO,IAAI,CAAC,MAAM,yCAAyC,EAChE,SAAS,CACV,CAAA;IACH,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IACrD,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAC7C,IAAI,QAAQ,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACpE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AACjC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,QAAmB;IAC9D,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;IACpD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CAAA;YACxC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC7E,CAAC;QAAC,MAAM,CAAC;YACP,0DAA0D;QAC5D,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,UAAU,CAClB,kFAAkF,EAClF,SAAS,CACV,CAAA;QACH,CAAC;QACD,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IAC7B,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACjD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC3D,MAAM,IAAI,UAAU,CAClB,OAAO,CAAC,MAAM,KAAK,CAAC;YAClB,CAAC,CAAC,wBAAwB,MAAM,CAAC,WAAW,EAAE,kEAAkE;YAChH,CAAC,CAAC,UAAU,MAAM,CAAC,WAAW,EAAE,8BAA8B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACrG,SAAS,CACV,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,MAAe,EAAE,UAAwB,EAAE;IACnE,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IACvB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,CAAA;IAC7D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,UAAU,CAAC,yBAAyB,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAA;IACxE,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACvB,MAAM,IAAI,UAAU,CAClB,sFAAsF,EACtF,SAAS,CACV,CAAA;IACH,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM;QAAE,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACxD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC9C,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAC5E,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YACxC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,sEAAsE;gBACtE,IAAI,KAAK,YAAY,UAAU;oBAAE,SAAQ;gBACzC,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -6,10 +6,18 @@
6
6
  * 1. Two concurrent `task claim <same-id>`: exactly one exits 0, the other
7
7
  * exits 1 — git's atomic ref creation is the lock.
8
8
  * 2. Validation failures exit 2 before anything touches git.
9
- * 3. `task list --claimable` is the queue: position order, minus blocked,
10
- * needs-human, and already-claimed tickets.
9
+ * 3. `task list --claimable` is the queue: position order, minus blocked
10
+ * and already-claimed tickets — open asks never exclude a ticket.
11
11
  * 4. `task claim --release` deletes the branch both sides and the ticket is
12
12
  * claimable again.
13
+ * 5. `task claim --lock-only` takes the same lock without touching the
14
+ * checkout — a branch-pinned (even dirty) session can hold it — and
15
+ * `--release` works on it symmetrically.
16
+ * 6. Deletions are verified: against a remote that silently drops deletion
17
+ * pushes (TAS-8b7s9), release and sweep fail loudly instead of lying.
18
+ * 7. `task sweep` deletes claim branches whose tickets are done, canceled or
19
+ * missing on the current checkout, and leaves live ones — and any branch
20
+ * named outside the claim scheme — alone.
13
21
  */
14
22
  export {};
15
23
  //# sourceMappingURL=claim.test.d.ts.map