@taskless-app/swarm 0.6.35 → 0.6.37
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/dist/cli.js +2 -2
- package/dist/overmind.js +81 -29
- package/package.json +2 -2
package/dist/cli.js
CHANGED
|
@@ -3274,7 +3274,7 @@ var init_package = __esm({
|
|
|
3274
3274
|
"package.json"() {
|
|
3275
3275
|
package_default = {
|
|
3276
3276
|
name: "@taskless-app/swarm",
|
|
3277
|
-
version: "0.6.
|
|
3277
|
+
version: "0.6.37",
|
|
3278
3278
|
type: "module",
|
|
3279
3279
|
description: "Local control plane for a fleet of AI coding agents (drones), coordinating through Taskless. The overmind runs the swarm.",
|
|
3280
3280
|
keywords: [
|
|
@@ -3325,7 +3325,7 @@ var init_package = __esm({
|
|
|
3325
3325
|
execa: "^10.0.0",
|
|
3326
3326
|
zod: "3.25.76"
|
|
3327
3327
|
},
|
|
3328
|
-
gitHead: "
|
|
3328
|
+
gitHead: "3b1a04ef992f6bba42847d1dc29d22e39cadfc25"
|
|
3329
3329
|
};
|
|
3330
3330
|
}
|
|
3331
3331
|
});
|
package/dist/overmind.js
CHANGED
|
@@ -11863,7 +11863,7 @@ function parkReasonUnretriable(reason) {
|
|
|
11863
11863
|
// package.json
|
|
11864
11864
|
var package_default = {
|
|
11865
11865
|
name: "@taskless-app/swarm",
|
|
11866
|
-
version: "0.6.
|
|
11866
|
+
version: "0.6.37",
|
|
11867
11867
|
type: "module",
|
|
11868
11868
|
description: "Local control plane for a fleet of AI coding agents (drones), coordinating through Taskless. The overmind runs the swarm.",
|
|
11869
11869
|
keywords: [
|
|
@@ -11914,7 +11914,7 @@ var package_default = {
|
|
|
11914
11914
|
execa: "^10.0.0",
|
|
11915
11915
|
zod: "3.25.76"
|
|
11916
11916
|
},
|
|
11917
|
-
gitHead: "
|
|
11917
|
+
gitHead: "3b1a04ef992f6bba42847d1dc29d22e39cadfc25"
|
|
11918
11918
|
};
|
|
11919
11919
|
|
|
11920
11920
|
// src/version.ts
|
|
@@ -14228,8 +14228,8 @@ function buildAnomalyCandidates(db, now, thresholds, opts) {
|
|
|
14228
14228
|
runId: run.id,
|
|
14229
14229
|
// В ЛЕНТУ, не пушем (TASWM-417). Раньше тут стоял "decision" с обоснованием «рой
|
|
14230
14230
|
// этого сам не расшивает» — оно перестало быть правдой ровно на том же пороге:
|
|
14231
|
-
// wakeAuthorOnChanges поднимает автора
|
|
14232
|
-
//
|
|
14231
|
+
// wakeAuthorOnChanges поднимает автора свежей сессией с брифом фикс-итерации
|
|
14232
|
+
// (TASWM-539; до неё — `--continue`). Значит в момент, когда это правило
|
|
14233
14233
|
// созревает, рой УЖЕ действует, и пуш звал бы человека к работе, которую делают
|
|
14234
14234
|
// без него — ровно тот шум, из-за которого настоящие сигналы тонут. Настоящий
|
|
14235
14235
|
// «нужен человек» приходит отдельно и позже: рой исчерпал побудки (маркер
|
|
@@ -17580,6 +17580,7 @@ var CHANGES_WAKE_COOLDOWN_MS = Number(process.env.SWARM_CHANGES_WAKE_COOLDOWN_MS
|
|
|
17580
17580
|
var CHANGES_WAKE_LIMIT = Number(process.env.SWARM_CHANGES_WAKE_LIMIT) || 2;
|
|
17581
17581
|
var CHANGES_FRESH_WAKE_AFTER_MS = Number(process.env.SWARM_CHANGES_FRESH_WAKE_AFTER_MS) || SWARM_ANOMALY_PR_NO_REVIEWER_MS;
|
|
17582
17582
|
var CHANGES_WAKE_MARK = "\u0444\u0438\u043A\u0441-\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044F \u043F\u043E \u0432\u0435\u0440\u0434\u0438\u043A\u0442\u0443 \xAB\u043D\u0443\u0436\u043D\u044B \u043F\u0440\u0430\u0432\u043A\u0438\xBB";
|
|
17583
|
+
var CHANGES_FIX_COST_MARK = "\u0442\u0440\u0430\u0442\u044B \u0434\u043E \u0444\u0438\u043A\u0441-\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438";
|
|
17583
17584
|
var CHANGES_WAKE_FAILED_MARK = "\u043F\u043E\u0431\u0443\u0434\u043A\u0430 \u0441\u043E\u0440\u0432\u0430\u043B\u0430\u0441\u044C";
|
|
17584
17585
|
var BUDGET_STOP_REASON = "\u043D\u0435 \u0443\u043B\u043E\u0436\u0438\u043B\u0441\u044F \u0432 \u043F\u043E\u0442\u043E\u043B\u043E\u043A \u0442\u0440\u0430\u0442: \u0441\u0435\u0441\u0441\u0438\u044E \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u043B \u0431\u044E\u0434\u0436\u0435\u0442 \u043F\u0440\u043E\u0433\u043E\u043D\u0430";
|
|
17585
17586
|
var NO_AUTO_WAKE_REASONS = [EXITED_NO_DONE_REASON, BUDGET_STOP_REASON, ABORTED_STOP_REASON];
|
|
@@ -18102,19 +18103,55 @@ function buildCiReadyNudge(prUrl, over) {
|
|
|
18102
18103
|
"\u0412\u043E\u043F\u0440\u043E\u0441\u043E\u0432 \u0432 stdout \u043D\u0435 \u0437\u0430\u0434\u0430\u0432\u0430\u0439 \u2014 \u0442\u043E\u043B\u044C\u043A\u043E \u0447\u0435\u0440\u0435\u0437 MCP-\u0442\u0443\u043B ask."
|
|
18103
18104
|
].join("\n");
|
|
18104
18105
|
}
|
|
18105
|
-
function
|
|
18106
|
+
function buildChangesFixPrompt(args) {
|
|
18107
|
+
const { prUrl, slug, branch, base: base3, worktree, verdict } = args;
|
|
18108
|
+
const baseRef = base3 ? `origin/${base3}` : "origin/HEAD";
|
|
18106
18109
|
return [
|
|
18107
|
-
`\
|
|
18110
|
+
`\u0422\u044B \u2014 \u0434\u0440\u043E\u043D ${args.name || "\u0440\u043E\u044F"}, headless-\u0438\u0441\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C (\u041D\u0415 \u0438\u043D\u0442\u0435\u0440\u0430\u043A\u0442\u0438\u0432\u043D\u044B\u0439 \u0447\u0430\u0442). \u041A\u043E\u043C\u043C\u0438\u0442\u044B \u043F\u043E\u0434\u043F\u0438\u0441\u0430\u043D\u044B \u044D\u0442\u0438\u043C \u0438\u043C\u0435\u043D\u0435\u043C \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438.`,
|
|
18108
18111
|
"",
|
|
18109
|
-
|
|
18110
|
-
|
|
18112
|
+
HEADLESS_BLOCK,
|
|
18113
|
+
"",
|
|
18114
|
+
`\u{1F7E0} \u0424\u0418\u041A\u0421-\u0418\u0422\u0415\u0420\u0410\u0426\u0418\u042F \u043F\u043E ${slug}. \u0420\u0435\u0432\u044C\u044E\u0435\u0440 \u0432\u044B\u043D\u0435\u0441 \u043F\u043E PR ${prUrl} \u0432\u0435\u0440\u0434\u0438\u043A\u0442 \xAB\u043D\u0443\u0436\u043D\u044B \u043F\u0440\u0430\u0432\u043A\u0438\xBB.`,
|
|
18115
|
+
"",
|
|
18116
|
+
"\u0422\u044B \u0421\u0412\u0415\u0416\u0418\u0419 \u0434\u0440\u043E\u043D \u043D\u0430 \u0423\u0416\u0415 \u0421\u0414\u0415\u041B\u0410\u041D\u041D\u041E\u0419 \u0440\u0430\u0431\u043E\u0442\u0435. \u0417\u0430\u0434\u0430\u0447\u0430 \u043D\u0435 \u043F\u0435\u0440\u0435\u0434\u0435\u043B\u044B\u0432\u0430\u0435\u0442\u0441\u044F: \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u043B\u0435\u0436\u0438\u0442 \u0432 \u0432\u0435\u0442\u043A\u0435, PR \u043E\u0442\u043A\u0440\u044B\u0442, \u0440\u0435\u0432\u044C\u044E \u0435\u0451 \u043F\u043E\u0441\u043C\u043E\u0442\u0440\u0435\u043B\u043E. \u0422\u0432\u043E\u0451 \u0434\u0435\u043B\u043E \u2014 \u0437\u0430\u043A\u0440\u044B\u0442\u044C \u0437\u0430\u043C\u0435\u0447\u0430\u043D\u0438\u044F, \u0438 \u0442\u043E\u043B\u044C\u043A\u043E \u0438\u0445. \u041D\u0438\u0447\u0435\u0433\u043E \xAB\u0437\u0430\u043E\u0434\u043D\u043E\xBB \u043D\u0435 \u0443\u043B\u0443\u0447\u0448\u0430\u0435\u043C: \u043F\u043E\u0441\u0442\u043E\u0440\u043E\u043D\u043D\u044F\u044F \u043F\u0440\u0430\u0432\u043A\u0430 \u0432 \u044D\u0442\u043E\u043C \u0437\u0430\u0445\u043E\u0434\u0435 \u0441\u0442\u043E\u0438\u0442 \u0432\u0442\u043E\u0440\u043E\u0433\u043E \u043A\u0440\u0443\u0433\u0430 \u0440\u0435\u0432\u044C\u044E \u0432\u0441\u0435\u0439 \u043A\u043E\u043C\u0430\u043D\u0434\u0435.",
|
|
18117
|
+
"",
|
|
18118
|
+
`\u0417\u0430\u0434\u0430\u0447\u0430: ${slug}${args.taskTitle ? ` \u2014 ${args.taskTitle}` : ""}`,
|
|
18119
|
+
// Ссылки может не быть (get_task отдал null / у задачи нет url) — тогда её нигде и не
|
|
18120
|
+
// обещаем: указание «открой ссылку выше» висело бы в воздухе. Канал дочитать постановку
|
|
18121
|
+
// от этого не пропадает — read_task() ниже работает всегда.
|
|
18122
|
+
...args.taskUrl ? [`\u041F\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430: ${args.taskUrl}`] : [],
|
|
18123
|
+
`\u0412\u0435\u0442\u043A\u0430: ${branch} (\u0431\u0430\u0437\u0430 ${baseRef}) \xB7 PR: ${prUrl}`,
|
|
18124
|
+
`\u041A\u0430\u0442\u0430\u043B\u043E\u0433: ${worktree}`,
|
|
18125
|
+
"",
|
|
18126
|
+
"## \u0427\u0442\u043E \u043F\u0440\u043E\u0441\u0438\u043B \u0440\u0435\u0432\u044C\u044E\u0435\u0440",
|
|
18127
|
+
verdict ?? "\u0412\u0435\u0440\u0434\u0438\u043A\u0442 \u043D\u0435 \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u043B\u0441\u044F \u0432 \u043B\u0435\u043D\u0442\u0435 \u2014 \u0447\u0438\u0442\u0430\u0439 \u0435\u0433\u043E \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u043E\u043C \u0432 PR (\u043A\u043E\u043C\u0430\u043D\u0434\u0430 \u043D\u0438\u0436\u0435).",
|
|
18128
|
+
"",
|
|
18129
|
+
"## \u0412\u0432\u0435\u0434\u0438 \u0441\u0435\u0431\u044F \u0432 \u043A\u0443\u0440\u0441 \u0421\u0410\u041C \u2014 \u043F\u0430\u043C\u044F\u0442\u0438 \u043F\u0440\u043E\u0448\u043B\u043E\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 \u0443 \u0442\u0435\u0431\u044F \u043D\u0435\u0442",
|
|
18130
|
+
"```",
|
|
18131
|
+
`gh pr view ${prUrl} --comments # \u0412\u0421\u0415 \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0438: \u0432\u0435\u0440\u0434\u0438\u043A\u0442, \u0437\u0430\u043C\u0435\u0447\u0430\u043D\u0438\u044F \u043E\u043F\u0435\u0440\u0430\u0442\u043E\u0440\u0430, \u043E\u0442\u0432\u0435\u0442\u044B`,
|
|
18132
|
+
`git diff ${baseRef}...HEAD # \u0447\u0442\u043E \u0443\u0436\u0435 \u0441\u0434\u0435\u043B\u0430\u043D\u043E \u0432 \u0432\u0435\u0442\u043A\u0435`,
|
|
18133
|
+
`git log --oneline ${baseRef}..HEAD`,
|
|
18134
|
+
"git status # \u041D\u0415\u0417\u0410\u041A\u041E\u041C\u041C\u0418\u0427\u0415\u041D\u041D\u041E\u0415 \u043E\u0442 \u043F\u0440\u043E\u0448\u043B\u043E\u0439 \u043F\u043E\u043F\u044B\u0442\u043A\u0438, \u0435\u0441\u043B\u0438 \u043E\u043D\u0430 \u0431\u044B\u043B\u0430",
|
|
18135
|
+
`cat journal/${slug}.md # \u0440\u0435\u0448\u0435\u043D\u0438\u044F \u0430\u0432\u0442\u043E\u0440\u0430 \u0438 \u0438\u0445 \u043F\u0440\u0438\u0447\u0438\u043D\u044B (\u0435\u0441\u043B\u0438 \u0444\u0430\u0439\u043B \u0435\u0441\u0442\u044C)`,
|
|
18136
|
+
`ls ${ATTACHMENTS_DIR} # \u0432\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043F\u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 (\u0441\u043A\u0440\u0438\u043D\u044B, \u043C\u0430\u043A\u0435\u0442\u044B) \u2014 \u0435\u0441\u043B\u0438 \u043A\u0430\u0442\u0430\u043B\u043E\u0433 \u0443\u0446\u0435\u043B\u0435\u043B`,
|
|
18137
|
+
"```",
|
|
18138
|
+
"\u0422\u0435\u043B\u043E \u0437\u0430\u0434\u0430\u0447\u0438 \u0446\u0435\u043B\u0438\u043A\u043E\u043C \u043D\u0443\u0436\u043D\u043E \u0440\u0435\u0434\u043A\u043E \u2014 \u043E\u043D\u043E \u0443\u0436\u0435 \u0440\u0435\u0430\u043B\u0438\u0437\u043E\u0432\u0430\u043D\u043E. \u041F\u043E\u043D\u0430\u0434\u043E\u0431\u0438\u043B\u043E\u0441\u044C \u2014 \u043F\u0435\u0440\u0435\u0437\u0432\u043E\u043D\u0438 read_task(): \u043E\u043D \u043E\u0442\u0434\u0430\u0451\u0442 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435, \u041A\u0420\u0418\u0422\u0415\u0420\u0418\u0418 \u0413\u041E\u0422\u041E\u0412\u041D\u041E\u0421\u0422\u0418, \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u044B \u0438 \u043F\u0440\u0438\u0432\u044F\u0437\u0430\u043D\u043D\u044B\u0435 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u044B (\u0441\u043F\u0435\u043A\u0430 \u0436\u0438\u0432\u0451\u0442 \u0442\u0430\u043C). \u0412 \u0431\u0440\u0438\u0444\u0435 \u0438\u0445 \u043D\u0435\u0442 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u043D\u043E, \u0442\u0430\u043A \u0447\u0442\u043E \xAB\u0432 \u0437\u0430\u0434\u0430\u0447\u0435 \u043F\u0440\u043E \u044D\u0442\u043E \u043D\u0435 \u0441\u043A\u0430\u0437\u0430\u043D\u043E\xBB \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0439 \u0447\u0435\u0440\u0435\u0437 \u043D\u0435\u0433\u043E, \u0430 \u043D\u0435 \u043F\u043E \u043F\u0430\u043C\u044F\u0442\u0438.",
|
|
18139
|
+
"",
|
|
18140
|
+
"## \u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B overmind (MCP)",
|
|
18141
|
+
"`done(pr_url, summary, screenshots?)` \u2014 \u0441\u0434\u0430\u0447\u0430; `report_step(text)` \u2014 \u043B\u043E\u0433 \u0445\u043E\u0434\u0430; `read_task()` \u2014 \u0441\u0432\u0435\u0436\u0438\u0439 \u0441\u043D\u0430\u043F\u0448\u043E\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 (\u043E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 + \u043A\u0440\u0438\u0442\u0435\u0440\u0438\u0438 \u0433\u043E\u0442\u043E\u0432\u043D\u043E\u0441\u0442\u0438 + \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u044B + \u0434\u043E\u043A\u0438); `ask(question, options?)` \u2014 \u0443\u043F\u0451\u0440\u0441\u044F \u0432 \u0420\u0415\u0428\u0415\u041D\u0418\u0415, \u0441\u043F\u0440\u043E\u0441\u0438 \u043E\u043F\u0435\u0440\u0430\u0442\u043E\u0440\u0430 \u0438 \u0434\u043E\u0436\u0434\u0438\u0441\u044C \u043E\u0442\u0432\u0435\u0442\u0430 (\u043D\u0435 \u0443\u0433\u0430\u0434\u044B\u0432\u0430\u0439); `note(text)` \u2014 \u0437\u0430\u043C\u0435\u0442\u043A\u0430 \xAB\u0437\u0430\u043C\u0435\u0447\u0435\u043D\u043E \u043F\u043E \u043F\u0443\u0442\u0438\xBB \u0431\u0435\u0437 \u0431\u043B\u043E\u043A\u0438\u0440\u043E\u0432\u043A\u0438; `report_acceptance_check(id, state, evidence)` \u2014 \u0435\u0441\u043B\u0438 \u043F\u0440\u0430\u0432\u043A\u0430 \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0435\u0442 \u043F\u0443\u043D\u043A\u0442 \u043A\u0440\u0438\u0442\u0435\u0440\u0438\u0435\u0432 \u0433\u043E\u0442\u043E\u0432\u043D\u043E\u0441\u0442\u0438 (id \u0431\u0440\u0430\u0442\u044C \u0438\u0437 \u0431\u043B\u043E\u043A\u0430 \xAB\u041A\u0440\u0438\u0442\u0435\u0440\u0438\u0438 \u0433\u043E\u0442\u043E\u0432\u043D\u043E\u0441\u0442\u0438\xBB \u0432 \u043E\u0442\u0432\u0435\u0442\u0435 read_task).",
|
|
18142
|
+
"`report_weight(note)` \u2014 \u0441\u043A\u0430\u0436\u0438, \u0447\u0442\u043E \u0440\u0430\u0431\u043E\u0442\u0430 \u0442\u044F\u0436\u0435\u043B\u0435\u0435 \u043E\u0436\u0438\u0434\u0430\u043D\u0438\u0439, \u0415\u0421\u041B\u0418 \u0441\u0436\u0451\u0433 \u0431\u043E\u043B\u044C\u0448\u0435 \u043F\u043E\u043B\u043E\u0432\u0438\u043D\u044B \u0431\u044E\u0434\u0436\u0435\u0442\u0430, \u0430 \u0434\u043E \u0441\u0434\u0430\u0447\u0438 \u0434\u0430\u043B\u0435\u043A\u043E: \u0434\u0435\u043C\u043E\u043D \u043F\u043E\u0434\u043D\u0438\u043C\u0435\u0442 \u043F\u043E\u0442\u043E\u043B\u043E\u043A \u0432 \u0438\u0437\u0432\u0435\u0441\u0442\u043D\u044B\u0445 \u043F\u0440\u0435\u0434\u0435\u043B\u0430\u0445. \u0417\u043E\u0432\u0438 \u041F\u041E \u0425\u041E\u0414\u0423 \u2014 \u043F\u043E\u0441\u0442\u0444\u0430\u043A\u0442\u0443\u043C \u043E\u0431\u0441\u043B\u0443\u0436\u0438\u0432\u0430\u0442\u044C \u043D\u0435\u0447\u0435\u0433\u043E.",
|
|
18111
18143
|
"",
|
|
18112
|
-
"
|
|
18113
|
-
"\u041F\u043E\
|
|
18114
|
-
|
|
18115
|
-
|
|
18116
|
-
"
|
|
18117
|
-
|
|
18144
|
+
"## \u041F\u043E\u0440\u044F\u0434\u043E\u043A",
|
|
18145
|
+
"\u041F\u043E\u0447\u0438\u043D\u0438 \u2192 \u043F\u0440\u043E\u0433\u043E\u043D\u0438 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 \u2192 \u043C\u0435\u043D\u044F\u043B \u0432\u0438\u0434\u0438\u043C\u044B\u0439 UI \u2014 \u0441\u043D\u0438\u043C\u0438 \u0441\u043A\u0440\u0438\u043D\u044B \u2192 \u0437\u0430\u043A\u043E\u043C\u043C\u0438\u0442\u044C \u0438 \u0437\u0430\u043F\u0443\u0448\u044C \u0432 \u0422\u0423 \u0416\u0415 \u0432\u0435\u0442\u043A\u0443 (\u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u044C \u0438\u0441\u0442\u043E\u0440\u0438\u0438 \u0438 force-push \u0437\u0430\u043F\u0440\u0435\u0449\u0435\u043D\u044B) \u2192 \u041E\u0411\u042F\u0417\u0410\u0422\u0415\u041B\u042C\u041D\u041E \u0432\u044B\u0437\u043E\u0432\u0438 done(pr_url) \u0441 \u0442\u043E\u0439 \u0436\u0435 \u0441\u0441\u044B\u043B\u043A\u043E\u0439.",
|
|
18146
|
+
`\u{1F4B8} \u0411\u044E\u0434\u0436\u0435\u0442 \u044D\u0442\u043E\u0439 \u0441\u0435\u0441\u0441\u0438\u0438 \u2014 \u041E\u0421\u0422\u0410\u0422\u041E\u041A \u043F\u043E\u0442\u043E\u043B\u043A\u0430 \u043F\u0440\u043E\u0433\u043E\u043D\u0430, \u0430 \u043D\u0435 \u043F\u043E\u043B\u043D\u044B\u0439 \u043F\u043E\u0442\u043E\u043B\u043E\u043A: \u0438\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u0437\u0430\u0445\u043E\u0434 \u0443\u0436\u0435 \u043F\u043E\u0442\u0440\u0430\u0442\u0438\u043B \u0447\u0430\u0441\u0442\u044C, \u0438 \u0442\u0435\u0431\u0435 \u0434\u043E\u0441\u0442\u0430\u043B\u043E\u0441\u044C \u0442\u043E, \u0447\u0442\u043E \u043E\u0441\u0442\u0430\u043B\u043E\u0441\u044C. \u041F\u043E\u044D\u0442\u043E\u043C\u0443 \u043A\u043E\u043C\u043C\u0438\u0442\u044C \u0438 \u043F\u0443\u0448\u044C \u041F\u041E \u0425\u041E\u0414\u0423, \u043F\u043E\u0441\u043B\u0435 \u043A\u0430\u0436\u0434\u043E\u0433\u043E \u0437\u043D\u0430\u0447\u0438\u043C\u043E\u0433\u043E \u0448\u0430\u0433\u0430, \u0430 \u043D\u0435 \u043E\u0434\u043D\u0438\u043C \u043A\u0443\u0441\u043A\u043E\u043C \u0432 \u043A\u043E\u043D\u0446\u0435: \u043D\u0435\u0437\u0430\u043F\u0443\u0448\u0435\u043D\u043D\u043E\u0435 \u0443\u043C\u0438\u0440\u0430\u0435\u0442 \u0432\u043C\u0435\u0441\u0442\u0435 \u0441 \u0441\u0435\u0441\u0441\u0438\u0435\u0439. \u0421\u043B\u0430\u0433 ${slug} \u2014 \u0432 \u041A\u0410\u0416\u0414\u041E\u041C commit-\u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0438 (\u043F\u043E \u0441\u043B\u0430\u0433\u0430\u043C \u0441\u043E\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044F \u0440\u0435\u043B\u0438\u0437, \u0438 \u043F\u0440\u043E\u0434\u0443\u043A\u0442 \u043F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u0442 \u044D\u0442\u043E \u0441\u0430\u043C).`,
|
|
18147
|
+
"\u0418\u043C\u0435\u043D\u043D\u043E \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u044B\u0439 done() \u043F\u043E\u0434\u043D\u0438\u043C\u0430\u0435\u0442 \u0440\u0435-\u0440\u0435\u0432\u044C\u044E\u0435\u0440\u0430. \u0411\u0435\u0437 \u043D\u0435\u0433\u043E \u043F\u0440\u0430\u0432\u043A\u0430 \u043D\u0435 \u0437\u0430\u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044F, \u0430 \u0442\u0432\u043E\u0439 \u0432\u044B\u0445\u043E\u0434 \u0440\u043E\u0439 \u043F\u0440\u0438\u043C\u0435\u0442 \u0437\u0430 \u0441\u043C\u0435\u0440\u0442\u044C.",
|
|
18148
|
+
...args.verifyMode === "ci" ? ["\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0438: \u0440\u0435\u0436\u0438\u043C `ci` \u2014 \u0431\u044B\u0441\u0442\u0440\u044B\u0439 typecheck \u0438 \u0442\u0435\u0441\u0442\u044B \u043F\u043E \u0441\u0432\u043E\u0435\u0439 \u043F\u0440\u0430\u0432\u043A\u0435, \u0442\u044F\u0436\u0451\u043B\u043E\u0435 \u0434\u043E\u0441\u0447\u0438\u0442\u0430\u0435\u0442 CI \u043D\u0430 PR."] : ["\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0438: \u0440\u0435\u0436\u0438\u043C `local` \u2014 \u043F\u0440\u043E\u0433\u043E\u043D\u0438 \u0442\u043E, \u0447\u0442\u043E \u043F\u043E\u043A\u0440\u044B\u0432\u0430\u0435\u0442 \u043F\u0440\u0430\u0432\u043A\u0443, \u0438 \u0441\u044C\u044E\u0442 \u0441\u0432\u043E\u0435\u0433\u043E \u043F\u0430\u043A\u0435\u0442\u0430 \u043F\u0435\u0440\u0435\u0434 \u0441\u0434\u0430\u0447\u0435\u0439."],
|
|
18149
|
+
`\u0422\u0440\u043E\u043D\u0443\u043B \u0432\u0438\u0434\u0438\u043C\u044B\u0439 UI \u2014 \u0441\u043A\u0440\u0438\u043D\u044B \u041E\u0411\u042F\u0417\u0410\u0422\u0415\u041B\u042C\u041D\u042B \u0438 \u0438\u0434\u0443\u0442 \u0412 \u0417\u0410\u0414\u0410\u0427\u0423: \`swarm shot <url> <out-prefix>\` (\u0441\u0430\u043C \u0441\u043D\u0438\u043C\u0430\u0435\u0442 mobile+desktop), \u043F\u0443\u0442\u0438 \u043F\u0435\u0440\u0435\u0434\u0430\u0439 \u0432 done(pr_url, summary, screenshots: [...]). \u0425\u0430\u0440\u0434-\u043B\u0438\u043C\u0438\u0442 \u043D\u0430 \u0448\u0430\u0433 \u2014 5 \u043C\u0438\u043D\u0443\u0442: \u043D\u0435 \u0443\u043B\u043E\u0436\u0438\u043B\u0441\u044F \u2014 \u043D\u0430\u043F\u0438\u0448\u0438 \u044D\u0442\u043E \u0432 PR \u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043D\u043E \u0437\u043E\u0432\u0438 done(). \u0417\u0430\u0434\u0430\u0447\u0430 \u0431\u0435\u0437 \u0441\u043A\u0440\u0438\u043D\u043E\u0432 \u043F\u0440\u0438\u0451\u043C\u043A\u0443 \u043D\u0435 \u043F\u0440\u043E\u0445\u043E\u0434\u0438\u0442.`,
|
|
18150
|
+
`\u0414\u043E\u043F\u0438\u0448\u0438 \u0432 \`journal/${slug}.md\` \u043A\u043E\u0440\u043E\u0442\u043A\u0438\u0439 \u0431\u043B\u043E\u043A \u043F\u0440\u043E \u044D\u0442\u043E\u0442 \u0437\u0430\u0445\u043E\u0434 \u2014 \u0447\u0442\u043E \u043F\u0440\u043E\u0441\u0438\u043B\u0438 \u0438 \u043A\u0430\u043A \u0437\u0430\u043A\u0440\u044B\u043B \u2014 \u0438 \u0437\u0430\u043A\u043E\u043C\u043C\u0438\u0442\u044C \u0432\u043C\u0435\u0441\u0442\u0435 \u0441 \u043F\u0440\u0430\u0432\u043A\u043E\u0439. \u042D\u0442\u043E \u0445\u0440\u043E\u043D\u0438\u043A\u0430 \u0437\u0430\u0434\u0430\u0447\u0438, \u0430 \u043D\u0435 \u043E\u0442\u0447\u0451\u0442: \u043E\u043D \u0438\u0434\u0451\u0442 \u0432 summary \u0443 done().`,
|
|
18151
|
+
"",
|
|
18152
|
+
"## \u0413\u0440\u0430\u043D\u0438\u0446\u044B",
|
|
18153
|
+
"\u0417\u0430\u043C\u0435\u0447\u0430\u043D\u0438\u0435 \u043F\u0440\u043E \u0418\u041D\u0424\u0420\u0410\u0421\u0422\u0420\u0423\u041A\u0422\u0423\u0420\u0423 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u044F (\u043D\u0435\u0442 CI, \u0447\u0443\u0436\u043E\u0439 \u043A\u0440\u0430\u0441\u043D\u044B\u0439 \u0447\u0435\u043A, \u043E\u043A\u0440\u0443\u0436\u0435\u043D\u0438\u0435) \u2014 \u043D\u0435 \u0447\u0438\u043D\u0438 \u0438 workflow \u043D\u0435 \u0437\u0430\u0432\u043E\u0434\u0438: \u044D\u0442\u043E \u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u0432\u043B\u0430\u0434\u0435\u043B\u044C\u0446\u0430. \u0412\u044B\u0437\u043E\u0432\u0438 note(text), \u043E\u0431\u044A\u044F\u0441\u043D\u0438 \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u043E\u043C \u0432 PR \u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043D\u043E \u043F\u043E\u0437\u043E\u0432\u0438 done() \u0441 \u0442\u043E\u0439 \u0436\u0435 \u0441\u0441\u044B\u043B\u043A\u043E\u0439.",
|
|
18154
|
+
"\u041D\u0435 \u0441\u043E\u0433\u043B\u0430\u0441\u0435\u043D \u0441 \u0437\u0430\u043C\u0435\u0447\u0430\u043D\u0438\u0435\u043C \u2014 \u043D\u0435 \u043C\u043E\u043B\u0447\u0438 \u0438 \u043D\u0435 \u0438\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u0439: \u043E\u0431\u044A\u044F\u0441\u043D\u0438 \u043A\u043E\u043C\u043C\u0435\u043D\u0442\u043E\u043C \u0432 PR \u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043D\u043E \u043F\u043E\u0437\u043E\u0432\u0438 done()."
|
|
18118
18155
|
].join("\n");
|
|
18119
18156
|
}
|
|
18120
18157
|
var HERO_CONTINUE_NUDGE = "\u0422\u0435\u0431\u044F \u0440\u0430\u0437\u0431\u0443\u0434\u0438\u043B\u0438, \u0413\u0435\u0440\u043E\u0439: \u0432 \u043E\u0442\u0440\u044F\u0434\u0435 \u0447\u0442\u043E-\u0442\u043E \u043F\u0440\u043E\u0438\u0437\u043E\u0448\u043B\u043E (\u0434\u0440\u043E\u043D \u0437\u0430\u0434\u0430\u043B \u0432\u043E\u043F\u0440\u043E\u0441, \u0441\u0434\u0430\u043B PR \u0438\u043B\u0438 \u0443\u043C\u0435\u0440) \u2014 \u043B\u0438\u0431\u043E \u0442\u0435\u0431\u044F \u043F\u043E\u0437\u0432\u0430\u043B \u043E\u043F\u0435\u0440\u0430\u0442\u043E\u0440. \u0422\u044B headless, \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0430\u0435\u0448\u044C \u0422\u041E\u0422 \u0416\u0415 \u044D\u043F\u0438\u043A: \u0443\u0441\u0442\u0430\u0432 \u0438 \u0442\u0435\u043B\u043E \u044D\u043F\u0438\u043A\u0430 \u0443\u0436\u0435 \u0432 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0435 \u043F\u0440\u043E\u0448\u043B\u043E\u0439 \u0441\u0435\u0441\u0441\u0438\u0438. \u0413\u043B\u044F\u043D\u044C \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435 \u043E\u0442\u0440\u044F\u0434\u0430 (squad_status) \u0438 \u0440\u0430\u0437\u0431\u0435\u0440\u0438\u0441\u044C, \u0447\u0442\u043E \u0438\u0437\u043C\u0435\u043D\u0438\u043B\u043E\u0441\u044C: \u0442\u0435\u0445\u043D\u0438\u0447\u0435\u0441\u043A\u0438\u0435 \u0432\u043E\u043F\u0440\u043E\u0441\u044B \u0434\u0440\u043E\u043D\u043E\u0432 \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0439 answer_drone; \u043F\u0440\u043E\u0434\u0443\u043A\u0442\u043E\u0432\u043E\u0435/\u0434\u0438\u0437\u0430\u0439\u043D/scope \u2014 \u044D\u0441\u043A\u0430\u043B\u0438\u0440\u0443\u0439 \u0447\u0435\u0440\u0435\u0437 ask. \u041A\u043E\u0434 \u043D\u0435 \u043F\u0438\u0448\u0438, PR \u043D\u0435 \u043C\u0435\u0440\u0436\u0438, done \u041D\u0415 \u0437\u043E\u0432\u0438. \u0420\u0430\u0437\u043E\u0431\u0440\u0430\u043B\u0441\u044F \u0441 \u0440\u044B\u0432\u043A\u043E\u043C \u2014 \u0441\u043D\u043E\u0432\u0430 \u0437\u043E\u0432\u0438 rest(summary) \u0438 \u0437\u0430\u043C\u0440\u0438. \u0412\u043E\u043F\u0440\u043E\u0441\u043E\u0432 \u0432 stdout \u043D\u0435 \u0437\u0430\u0434\u0430\u0432\u0430\u0439 \u2014 \u0442\u043E\u043B\u044C\u043A\u043E \u0447\u0435\u0440\u0435\u0437 ask.";
|
|
@@ -18905,18 +18942,16 @@ async function wakeAuthorOnChanges(deps, run, now, droneCap) {
|
|
|
18905
18942
|
}
|
|
18906
18943
|
}
|
|
18907
18944
|
const wt = run.worktree_path;
|
|
18908
|
-
const
|
|
18909
|
-
|
|
18910
|
-
|
|
18945
|
+
const wtPath = wt || (deps.worktreesDir ? droneWorktreePath(deps.worktreesDir, normalizeRepo(run.repo || deps.repoFallback || ""), run.task_slug) : null);
|
|
18946
|
+
const worktreeReady = !!wtPath && (deps.worktreeExists ?? existsSync20)(wtPath);
|
|
18947
|
+
if (!worktreeReady && !await freshChangesWakeAllowed(deps, run, prUrl, now)) return false;
|
|
18911
18948
|
try {
|
|
18912
|
-
await deps.respawn(run,
|
|
18949
|
+
await deps.respawn(run, "fix");
|
|
18950
|
+
deps.db.addEvent(run.id, "step", `${CHANGES_FIX_COST_MARK}: $${(run.cost_usd ?? 0).toFixed(2)}`);
|
|
18913
18951
|
if (run.stop_reason != null) deps.db.updateRun(run.id, { stop_reason: null });
|
|
18914
|
-
const how =
|
|
18952
|
+
const how = worktreeReady ? "\u0441\u0432\u0435\u0436\u0438\u0439 \u0434\u0440\u043E\u043D \u0441 \u0431\u0440\u0438\u0444\u043E\u043C \u0444\u0438\u043A\u0441-\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0432 \u0442\u043E\u043C \u0436\u0435 worktree" : "\u0441\u0432\u0435\u0436\u0438\u0439 \u0434\u0440\u043E\u043D \u0441 \u0431\u0440\u0438\u0444\u043E\u043C \u0444\u0438\u043A\u0441-\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438, worktree \u043F\u0435\u0440\u0435-\u0441\u043E\u0437\u0434\u0430\u0451\u0442\u0441\u044F \u0441 origin";
|
|
18915
18953
|
deps.db.addEvent(run.id, "resumed", `${CHANGES_WAKE_MARK} \u2014 ${how}`);
|
|
18916
|
-
narrate(
|
|
18917
|
-
deps,
|
|
18918
|
-
mode === "continue" ? `\u0420\u0435\u0432\u044C\u044E\u0435\u0440 \u043F\u043E\u043F\u0440\u043E\u0441\u0438\u043B \u043F\u0440\u0430\u0432\u043A\u0438 \u0443 ${droneLabel(run)} \u2014 \u0431\u0443\u0436\u0443 \u0430\u0432\u0442\u043E\u0440\u0430 \u043D\u0430 \u0444\u0438\u043A\u0441-\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044E.` : `\u0420\u0435\u0432\u044C\u044E\u0435\u0440 \u043F\u043E\u043F\u0440\u043E\u0441\u0438\u043B \u043F\u0440\u0430\u0432\u043A\u0438 \u0443 ${droneLabel(run)}, \u0430 \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0430\u0442\u044C \u043D\u0435\u0447\u0435\u0433\u043E \u2014 \u043F\u043E\u0434\u043D\u0438\u043C\u0430\u044E \u0441\u0432\u0435\u0436\u0435\u0433\u043E \u0434\u0440\u043E\u043D\u0430 \u043D\u0430 \u0442\u0443 \u0436\u0435 \u0432\u0435\u0442\u043A\u0443.`
|
|
18919
|
-
);
|
|
18954
|
+
narrate(deps, `\u0420\u0435\u0432\u044C\u044E\u0435\u0440 \u043F\u043E\u043F\u0440\u043E\u0441\u0438\u043B \u043F\u0440\u0430\u0432\u043A\u0438 \u0443 ${droneLabel(run)} \u2014 \u043F\u043E\u0434\u043D\u0438\u043C\u0430\u044E \u0441\u0432\u0435\u0436\u0435\u0433\u043E \u0434\u0440\u043E\u043D\u0430 \u043D\u0430 \u0444\u0438\u043A\u0441-\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044E.`);
|
|
18920
18955
|
return true;
|
|
18921
18956
|
} catch (e) {
|
|
18922
18957
|
deps.db.addEvent(run.id, "resumed", `${CHANGES_WAKE_MARK}: ${CHANGES_WAKE_FAILED_MARK} \u2014 ${String(e)}`);
|
|
@@ -20889,7 +20924,7 @@ async function spawnVerifier(deps, verifiedRun, files) {
|
|
|
20889
20924
|
}
|
|
20890
20925
|
async function respawnRun(deps, run, mode, nudge) {
|
|
20891
20926
|
const repo = normalizeRepo(run.repo || deps.repoFallback);
|
|
20892
|
-
const wt = run.worktree_path || (mode
|
|
20927
|
+
const wt = run.worktree_path || (mode !== "continue" ? droneWorktreePath(deps.worktreesDir, repo, run.task_slug) : null);
|
|
20893
20928
|
if (!wt) throw new Error(`\u043D\u0435\u0442 worktree_path \u0434\u043B\u044F \u043E\u0436\u0438\u0432\u043B\u0435\u043D\u0438\u044F \u043F\u0440\u043E\u0433\u043E\u043D\u0430 #${run.id}`);
|
|
20894
20929
|
if (!run.worktree_path && worktreePathHeldLive(deps.db, wt, run.id)) {
|
|
20895
20930
|
throw new Error(`worktree ${wt} \u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0440\u0443\u0433\u043E\u0439 \u0436\u0438\u0432\u043E\u0439 \u043F\u0440\u043E\u0433\u043E\u043D \u2014 \u043E\u0436\u0438\u0432\u043B\u0435\u043D\u0438\u0435 #${run.id} \u043E\u0442\u043C\u0435\u043D\u0435\u043D\u043E (TASWM-417)`);
|
|
@@ -20906,7 +20941,9 @@ async function respawnRun(deps, run, mode, nudge) {
|
|
|
20906
20941
|
deps.baseBranch ? deps.baseBranch(repo) : Promise.resolve(""),
|
|
20907
20942
|
// TASWM-466: память зоны — тем же параллельным чтением. Отвалилась → пустой список:
|
|
20908
20943
|
// оживление дрона не должно зависеть от того, доехала ли подсказка.
|
|
20909
|
-
|
|
20944
|
+
// TASWM-539: фикс-итерации память зоны не нужна — она про «как делать задачу в этой
|
|
20945
|
+
// зоне», а задача сделана. Лишний прод-вызов и лишний блок в контексте.
|
|
20946
|
+
deps.zoneMemory && run.area && mode !== "fix" ? deps.zoneMemory(repo, run.area).catch(() => []) : Promise.resolve([])
|
|
20910
20947
|
]);
|
|
20911
20948
|
const base3 = effectiveBaseBranch(run.base_branch, projectBase);
|
|
20912
20949
|
const runToSpawn = base3 && run.base_branch !== base3 ? deps.db.updateRun(run.id, { base_branch: base3 }) ?? run : run;
|
|
@@ -20923,14 +20960,25 @@ async function respawnRun(deps, run, mode, nudge) {
|
|
|
20923
20960
|
}
|
|
20924
20961
|
const depsReport = await ensureWorktreeDeps(wt);
|
|
20925
20962
|
for (const text of depsEvents(depsReport)) deps.db.addEvent(run.id, "step", text);
|
|
20926
|
-
const taskContext = task && deps.getTaskContext ? await deps.getTaskContext(task, run.workspace_id) : void 0;
|
|
20927
|
-
const attachments = await prepareTaskAttachments({
|
|
20963
|
+
const taskContext = task && deps.getTaskContext && mode !== "fix" ? await deps.getTaskContext(task, run.workspace_id) : void 0;
|
|
20964
|
+
const attachments = mode === "fix" ? void 0 : await prepareTaskAttachments({
|
|
20928
20965
|
worktree: wt,
|
|
20929
20966
|
refs: task?.attachments,
|
|
20930
20967
|
fetchFile: deps.fetchFile,
|
|
20931
20968
|
onEvent: (text) => deps.db.addEvent(run.id, "step", text)
|
|
20932
20969
|
});
|
|
20933
|
-
const freshPrompt =
|
|
20970
|
+
const freshPrompt = mode === "fix" ? buildChangesFixPrompt({
|
|
20971
|
+
prUrl: runToSpawn.pr_url ?? "",
|
|
20972
|
+
slug: runToSpawn.task_slug,
|
|
20973
|
+
branch: runToSpawn.branch || runToSpawn.task_slug,
|
|
20974
|
+
base: base3 || "",
|
|
20975
|
+
worktree: wt,
|
|
20976
|
+
verdict: lastChangesSummary(deps.db, runToSpawn.id),
|
|
20977
|
+
name: runToSpawn.name,
|
|
20978
|
+
taskTitle: task?.title ?? null,
|
|
20979
|
+
taskUrl: task?.url ?? null,
|
|
20980
|
+
...verifyMode ? { verifyMode } : {}
|
|
20981
|
+
}) : runToSpawn.kind === "hero" ? buildHeroPrompt(task, runToSpawn, taskContext, attachments) : buildPrompt(task, runToSpawn, verifyMode, taskContext, attachments, renderZoneMemoryBlock(runToSpawn.area, zoneNotes));
|
|
20934
20982
|
const notice = depsPromptNotice(depsReport);
|
|
20935
20983
|
const prompt = [freshPrompt, notice, nudge].filter(Boolean).join("\n\n");
|
|
20936
20984
|
const pid = deps.launch({ worktree: wt, run: runToSpawn, prompt });
|
|
@@ -21592,6 +21640,9 @@ async function runDaemon(opts) {
|
|
|
21592
21640
|
});
|
|
21593
21641
|
const deps = {
|
|
21594
21642
|
db,
|
|
21643
|
+
// Корень worktree-ов: по нему гейт фикс-итерации судит о наличии каталога на ДИСКЕ,
|
|
21644
|
+
// а не по рантайм-полю прогона, которого у client-режима нет (TASWM-402).
|
|
21645
|
+
worktreesDir,
|
|
21595
21646
|
// TASWM-472: реконсайлу от очереди нужен ровно исход `base_stale` (см. needsBaseRefreshNow).
|
|
21596
21647
|
...SWARM_MERGE_QUEUE ? { mergeQueue: mergeParts.queue } : {},
|
|
21597
21648
|
narrate: narrator.narrate,
|
|
@@ -22332,6 +22383,7 @@ export {
|
|
|
22332
22383
|
ABORT_TEXT,
|
|
22333
22384
|
AWAITING_CI_REASON,
|
|
22334
22385
|
BUDGET_STOP_REASON,
|
|
22386
|
+
CHANGES_FIX_COST_MARK,
|
|
22335
22387
|
CHANGES_FRESH_WAKE_AFTER_MS,
|
|
22336
22388
|
CHANGES_WAKE_COOLDOWN_MS,
|
|
22337
22389
|
CHANGES_WAKE_ESCALATION_MARK,
|
|
@@ -22388,7 +22440,7 @@ export {
|
|
|
22388
22440
|
VERIFY_SPAWN_LIMIT,
|
|
22389
22441
|
WATCHDOG_PARK_REASON,
|
|
22390
22442
|
abortReason,
|
|
22391
|
-
|
|
22443
|
+
buildChangesFixPrompt,
|
|
22392
22444
|
buildCiReadyNudge,
|
|
22393
22445
|
buildCiWakeNudge,
|
|
22394
22446
|
buildHeroPrompt,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taskless-app/swarm",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.37",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Local control plane for a fleet of AI coding agents (drones), coordinating through Taskless. The overmind runs the swarm.",
|
|
6
6
|
"keywords": [
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"execa": "^10.0.0",
|
|
40
40
|
"zod": "3.25.76"
|
|
41
41
|
},
|
|
42
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "3b1a04ef992f6bba42847d1dc29d22e39cadfc25",
|
|
43
43
|
"scripts": {
|
|
44
44
|
"overmind": "NODE_OPTIONS=\"${NODE_OPTIONS:-} --conditions=development\" tsx src/overmind.ts",
|
|
45
45
|
"swarm": "NODE_OPTIONS=\"${NODE_OPTIONS:-} --conditions=development\" tsx src/cli.ts",
|