@autohq/cli 0.1.425 → 0.1.426
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/agent-bridge.js +1076 -1
- package/dist/index.js +1080 -3
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -35988,11 +35988,1088 @@ var init_subscription = __esm({
|
|
|
35988
35988
|
});
|
|
35989
35989
|
|
|
35990
35990
|
// ../../packages/schemas/src/templates/catalog.ts
|
|
35991
|
-
import "yaml";
|
|
35991
|
+
import { parse as parseYaml } from "yaml";
|
|
35992
|
+
function plannedCatalogAgent(input) {
|
|
35993
|
+
return {
|
|
35994
|
+
...input,
|
|
35995
|
+
files: [
|
|
35996
|
+
{
|
|
35997
|
+
subpath: `agents/${input.id}.yaml`,
|
|
35998
|
+
agentFileName: input.id
|
|
35999
|
+
}
|
|
36000
|
+
],
|
|
36001
|
+
harness: "claude-code",
|
|
36002
|
+
model: "claude-fable-5",
|
|
36003
|
+
triggers: [],
|
|
36004
|
+
requires: ["github"],
|
|
36005
|
+
optionalConnections: [],
|
|
36006
|
+
variables: ["repoFullName", "githubConnection"],
|
|
36007
|
+
availability: "coming-soon",
|
|
36008
|
+
capabilitySummary: input.capabilitySummary ?? [],
|
|
36009
|
+
trustNotes: input.trustNotes ?? []
|
|
36010
|
+
};
|
|
36011
|
+
}
|
|
36012
|
+
function resolvedTemplateFileContent(template, subpath) {
|
|
36013
|
+
const versions = GENERATED_TEMPLATE_CONTENT[template];
|
|
36014
|
+
if (!versions) {
|
|
36015
|
+
return void 0;
|
|
36016
|
+
}
|
|
36017
|
+
const version2 = versions.reduce(
|
|
36018
|
+
(latest, candidate) => compareSemver(candidate.version, latest.version) > 0 ? candidate : latest
|
|
36019
|
+
);
|
|
36020
|
+
const file2 = version2.files.find((candidate) => candidate.path === subpath);
|
|
36021
|
+
return file2?.content;
|
|
36022
|
+
}
|
|
36023
|
+
function capabilitySummary(entry) {
|
|
36024
|
+
if (entry.capabilitySummary) {
|
|
36025
|
+
return entry.capabilitySummary;
|
|
36026
|
+
}
|
|
36027
|
+
const primary = entry.files[0];
|
|
36028
|
+
if (!primary) {
|
|
36029
|
+
return [];
|
|
36030
|
+
}
|
|
36031
|
+
const content = resolvedTemplateFileContent(entry.template, primary.subpath);
|
|
36032
|
+
if (!content) {
|
|
36033
|
+
return [];
|
|
36034
|
+
}
|
|
36035
|
+
const parsed = parseYaml(content);
|
|
36036
|
+
const capabilities = parsed.mounts?.find(
|
|
36037
|
+
(mount) => mount.auth?.kind === "githubApp"
|
|
36038
|
+
)?.auth?.capabilities;
|
|
36039
|
+
if (!capabilities) {
|
|
36040
|
+
return [];
|
|
36041
|
+
}
|
|
36042
|
+
return Object.entries(capabilities).filter(([, level]) => level !== "none").map(([name, level]) => `${name}:${level}`).sort();
|
|
36043
|
+
}
|
|
36044
|
+
var ROSTER_CATALOG_ENTRIES, ROSTER_CATALOG_MANIFEST, ROSTER_CATALOG, SELF_IMPROVEMENT, TEAM_TEMPLATES, ROSTER_KITS;
|
|
35992
36045
|
var init_catalog = __esm({
|
|
35993
36046
|
"../../packages/schemas/src/templates/catalog.ts"() {
|
|
35994
36047
|
"use strict";
|
|
35995
|
-
|
|
36048
|
+
init_content_generated();
|
|
36049
|
+
init_registry();
|
|
36050
|
+
ROSTER_CATALOG_ENTRIES = [
|
|
36051
|
+
{
|
|
36052
|
+
id: "chief-of-staff",
|
|
36053
|
+
template: "@auto/agent-fleet",
|
|
36054
|
+
files: [
|
|
36055
|
+
{
|
|
36056
|
+
subpath: "agents/chief-of-staff.yaml",
|
|
36057
|
+
agentFileName: "chief-of-staff"
|
|
36058
|
+
},
|
|
36059
|
+
{
|
|
36060
|
+
subpath: "agents/staff-engineer.yaml",
|
|
36061
|
+
agentFileName: "staff-engineer"
|
|
36062
|
+
}
|
|
36063
|
+
],
|
|
36064
|
+
displayName: "Chief of Staff Engineers",
|
|
36065
|
+
username: "chief",
|
|
36066
|
+
avatarAsset: "chief-of-staff-engineers.png",
|
|
36067
|
+
category: "engineering",
|
|
36068
|
+
oneLiner: "Takes a task list, dispatches staff engineers, shepherds them to green.",
|
|
36069
|
+
description: "The engineering orchestrator: hand it a task list in chat and it breaks the work down, dispatches a staff engineer per task, and keeps every open PR moving through CI, review, comments, and conflicts until you approve a merge. It can merge a ready PR only after your explicit go-ahead, then posts one collated progress packet. Installs its staff-engineer teammate alongside it.",
|
|
36070
|
+
harness: "claude-code",
|
|
36071
|
+
model: "claude-fable-5",
|
|
36072
|
+
triggers: [
|
|
36073
|
+
{
|
|
36074
|
+
kind: "agent",
|
|
36075
|
+
title: "Team dispatch",
|
|
36076
|
+
description: "Give it a task list and it assigns scoped work to staff engineers, then shepherds their progress.",
|
|
36077
|
+
availability: "core"
|
|
36078
|
+
},
|
|
36079
|
+
{
|
|
36080
|
+
kind: "slack",
|
|
36081
|
+
title: "Slack conversations",
|
|
36082
|
+
description: "Auto can connect Slack so you can mention it with a batch of work, reply in its thread, or steer with reactions.",
|
|
36083
|
+
availability: "optional",
|
|
36084
|
+
connection: "slack"
|
|
36085
|
+
},
|
|
36086
|
+
{
|
|
36087
|
+
kind: "github",
|
|
36088
|
+
title: "Engineer PR follow-through",
|
|
36089
|
+
description: "The staff engineer installed with it owns CI, review feedback, comments, and conflicts on each assigned PR.",
|
|
36090
|
+
availability: "core"
|
|
36091
|
+
},
|
|
36092
|
+
{
|
|
36093
|
+
kind: "schedule",
|
|
36094
|
+
title: "Background check-ins",
|
|
36095
|
+
description: "Every 15 minutes, it quietly checks active batches and nudges stalled work.",
|
|
36096
|
+
availability: "core"
|
|
36097
|
+
}
|
|
36098
|
+
],
|
|
36099
|
+
requires: ["github"],
|
|
36100
|
+
optionalConnections: ["slack"],
|
|
36101
|
+
variables: ["repoFullName", "githubConnection"],
|
|
36102
|
+
trustNotes: [
|
|
36103
|
+
"Can merge only after a user delegates the merge and the readiness bar passes."
|
|
36104
|
+
]
|
|
36105
|
+
},
|
|
36106
|
+
{
|
|
36107
|
+
id: "staff-engineer",
|
|
36108
|
+
template: "@auto/agent-fleet",
|
|
36109
|
+
files: [
|
|
36110
|
+
{
|
|
36111
|
+
subpath: "agents/staff-engineer.yaml",
|
|
36112
|
+
agentFileName: "staff-engineer"
|
|
36113
|
+
}
|
|
36114
|
+
],
|
|
36115
|
+
displayName: "Staff Engineer",
|
|
36116
|
+
username: "staff-engineer",
|
|
36117
|
+
avatarAsset: "staff-engineer.png",
|
|
36118
|
+
category: "engineering",
|
|
36119
|
+
oneLiner: "Owns one task and its PR until you decide to merge or close it.",
|
|
36120
|
+
description: "The senior implementer: dispatched with a single scoped task, it explores the codebase, plans the change, implements it with tests, opens and binds the PR, and keeps handling CI failures, reviews, comments, and conflicts while the PR remains open. It reports milestones to its dispatcher and never merges the PR itself.",
|
|
36121
|
+
harness: "codex",
|
|
36122
|
+
model: "gpt-5.6-sol",
|
|
36123
|
+
triggers: [
|
|
36124
|
+
{
|
|
36125
|
+
kind: "agent",
|
|
36126
|
+
title: "Orchestrator dispatch",
|
|
36127
|
+
description: "Chief of Staff or another orchestrator can assign it one scoped task and track its milestones.",
|
|
36128
|
+
availability: "core"
|
|
36129
|
+
},
|
|
36130
|
+
{
|
|
36131
|
+
kind: "github",
|
|
36132
|
+
title: "PR ownership",
|
|
36133
|
+
description: "It stays with its PR through CI, review feedback, comments, and conflicts; a human decides whether to merge.",
|
|
36134
|
+
availability: "core"
|
|
36135
|
+
},
|
|
36136
|
+
{
|
|
36137
|
+
kind: "slack",
|
|
36138
|
+
title: "Invited thread discussion",
|
|
36139
|
+
description: "Auto can connect Slack so the chief can invite it into a named thread for direct discussion of its task.",
|
|
36140
|
+
availability: "optional",
|
|
36141
|
+
connection: "slack"
|
|
36142
|
+
}
|
|
36143
|
+
],
|
|
36144
|
+
requires: ["github"],
|
|
36145
|
+
optionalConnections: ["slack"],
|
|
36146
|
+
variables: ["repoFullName", "githubConnection"]
|
|
36147
|
+
},
|
|
36148
|
+
{
|
|
36149
|
+
id: "senior-engineer",
|
|
36150
|
+
template: "@auto/engineering-tier",
|
|
36151
|
+
files: [
|
|
36152
|
+
{
|
|
36153
|
+
subpath: "agents/senior-engineer.yaml",
|
|
36154
|
+
agentFileName: "senior-engineer"
|
|
36155
|
+
}
|
|
36156
|
+
],
|
|
36157
|
+
displayName: "Senior Engineer",
|
|
36158
|
+
username: "senior-engineer",
|
|
36159
|
+
avatarAsset: "architect.png",
|
|
36160
|
+
category: "engineering",
|
|
36161
|
+
oneLiner: "Owns a complex task and its PR until you decide to merge or close it.",
|
|
36162
|
+
description: "The senior implementer (Sonnet-class): dispatched with a scoped task, it explores the codebase, plans and implements with tests, binds the PR, and keeps handling CI, review feedback, comments, and conflicts while the PR remains open. It never merges the PR itself.",
|
|
36163
|
+
harness: "claude-code",
|
|
36164
|
+
model: "claude-sonnet-5",
|
|
36165
|
+
triggers: [
|
|
36166
|
+
{
|
|
36167
|
+
kind: "agent",
|
|
36168
|
+
title: "Orchestrator dispatch",
|
|
36169
|
+
description: "Chief of Staff or another orchestrator can assign it a complex scoped task and track its milestones.",
|
|
36170
|
+
availability: "core"
|
|
36171
|
+
},
|
|
36172
|
+
{
|
|
36173
|
+
kind: "github",
|
|
36174
|
+
title: "PR ownership",
|
|
36175
|
+
description: "It handles CI, reviews, comments, and conflicts for its PR; a human decides whether to merge.",
|
|
36176
|
+
availability: "core"
|
|
36177
|
+
},
|
|
36178
|
+
{
|
|
36179
|
+
kind: "slack",
|
|
36180
|
+
title: "Direct Slack tasks",
|
|
36181
|
+
description: "Auto can connect Slack so you can mention it with one task.",
|
|
36182
|
+
availability: "optional",
|
|
36183
|
+
connection: "slack"
|
|
36184
|
+
}
|
|
36185
|
+
],
|
|
36186
|
+
requires: ["github"],
|
|
36187
|
+
optionalConnections: ["slack"],
|
|
36188
|
+
variables: ["repoFullName", "githubConnection"]
|
|
36189
|
+
},
|
|
36190
|
+
{
|
|
36191
|
+
id: "junior-engineer",
|
|
36192
|
+
template: "@auto/engineering-tier",
|
|
36193
|
+
files: [
|
|
36194
|
+
{
|
|
36195
|
+
subpath: "agents/junior-engineer.yaml",
|
|
36196
|
+
agentFileName: "junior-engineer"
|
|
36197
|
+
}
|
|
36198
|
+
],
|
|
36199
|
+
displayName: "Junior Engineer",
|
|
36200
|
+
username: "junior-engineer",
|
|
36201
|
+
avatarAsset: "patch.png",
|
|
36202
|
+
category: "engineering",
|
|
36203
|
+
oneLiner: "Mechanical and batch coding work \u2014 renames, test backfills, straightforward edits.",
|
|
36204
|
+
description: "The junior implementer (Haiku-class): dispatched with mechanical or batch coding tasks, it handles bulk renames, find-and-replace, test backfills, and straightforward migrations. It opens and binds the PR, keeps handling CI, reviews, comments, and conflicts until you merge or close it, and defers design-heavy work to the senior engineer.",
|
|
36205
|
+
harness: "claude-code",
|
|
36206
|
+
model: "claude-haiku-4-5",
|
|
36207
|
+
triggers: [
|
|
36208
|
+
{
|
|
36209
|
+
kind: "agent",
|
|
36210
|
+
title: "Orchestrator dispatch",
|
|
36211
|
+
description: "Chief of Staff or another orchestrator can assign it a mechanical scoped task and track its milestones.",
|
|
36212
|
+
availability: "core"
|
|
36213
|
+
},
|
|
36214
|
+
{
|
|
36215
|
+
kind: "github",
|
|
36216
|
+
title: "PR ownership",
|
|
36217
|
+
description: "It handles CI, reviews, comments, and conflicts for its PR; a human decides whether to merge.",
|
|
36218
|
+
availability: "core"
|
|
36219
|
+
},
|
|
36220
|
+
{
|
|
36221
|
+
kind: "slack",
|
|
36222
|
+
title: "Direct Slack tasks",
|
|
36223
|
+
description: "Auto can connect Slack so you can mention it with one task.",
|
|
36224
|
+
availability: "optional",
|
|
36225
|
+
connection: "slack"
|
|
36226
|
+
}
|
|
36227
|
+
],
|
|
36228
|
+
requires: ["github"],
|
|
36229
|
+
optionalConnections: ["slack"],
|
|
36230
|
+
variables: ["repoFullName", "githubConnection"]
|
|
36231
|
+
},
|
|
36232
|
+
{
|
|
36233
|
+
id: "designer",
|
|
36234
|
+
template: "@auto/engineering-tier",
|
|
36235
|
+
files: [
|
|
36236
|
+
{
|
|
36237
|
+
subpath: "agents/designer.yaml",
|
|
36238
|
+
agentFileName: "designer"
|
|
36239
|
+
}
|
|
36240
|
+
],
|
|
36241
|
+
displayName: "Designer",
|
|
36242
|
+
username: "designer",
|
|
36243
|
+
avatarAsset: "mason.png",
|
|
36244
|
+
category: "engineering",
|
|
36245
|
+
oneLiner: "Live-iteration UI pairing \u2014 brings up the app, shares a link, iterates while you watch.",
|
|
36246
|
+
description: "The live-iteration UI agent (Opus-class, Claude Code harness): mention it with a UI request and it brings up the web app against the live backend, shares a tailnet-private link, and iterates on the interface while you watch in real time. Defers tests during iteration and graduates the work into a production PR when you ask.",
|
|
36247
|
+
harness: "claude-code",
|
|
36248
|
+
model: "claude-opus-4-8",
|
|
36249
|
+
triggers: [
|
|
36250
|
+
{
|
|
36251
|
+
kind: "slack",
|
|
36252
|
+
title: "Live Slack pairing",
|
|
36253
|
+
description: "Auto can connect Slack so you can request UI work and steer the live iteration in-thread.",
|
|
36254
|
+
availability: "optional",
|
|
36255
|
+
connection: "slack"
|
|
36256
|
+
},
|
|
36257
|
+
{
|
|
36258
|
+
kind: "github",
|
|
36259
|
+
title: "Production PR follow-through",
|
|
36260
|
+
description: "When you ask it to graduate the work, it owns CI, review feedback, comments, and conflicts on the PR.",
|
|
36261
|
+
availability: "core"
|
|
36262
|
+
}
|
|
36263
|
+
],
|
|
36264
|
+
requires: ["github"],
|
|
36265
|
+
optionalConnections: ["slack"],
|
|
36266
|
+
variables: ["repoFullName", "githubConnection"]
|
|
36267
|
+
},
|
|
36268
|
+
{
|
|
36269
|
+
id: "introspector",
|
|
36270
|
+
template: "@auto/engineering-tier",
|
|
36271
|
+
files: [
|
|
36272
|
+
{
|
|
36273
|
+
subpath: "agents/introspector.yaml",
|
|
36274
|
+
agentFileName: "introspector"
|
|
36275
|
+
}
|
|
36276
|
+
],
|
|
36277
|
+
displayName: "Introspector",
|
|
36278
|
+
username: "introspector",
|
|
36279
|
+
avatarAsset: "introspector.png",
|
|
36280
|
+
category: "factory",
|
|
36281
|
+
oneLiner: "Diagnoses failures, bottlenecks, and drift in sibling sessions.",
|
|
36282
|
+
description: "The session diagnostician: examines sibling agent sessions in the project \u2014 failed runs, slow sessions, behavior drift \u2014 and produces concrete, evidence-backed findings with recommended fixes. Runs on a standing heartbeat sweep or on direct mention, and hands actionable findings to the chief for triage.",
|
|
36283
|
+
harness: "claude-code",
|
|
36284
|
+
model: null,
|
|
36285
|
+
triggers: [
|
|
36286
|
+
{
|
|
36287
|
+
kind: "schedule",
|
|
36288
|
+
title: "Scheduled health sweep",
|
|
36289
|
+
description: "Every two hours, it checks sibling sessions for failures, drift, and bottlenecks.",
|
|
36290
|
+
availability: "core"
|
|
36291
|
+
},
|
|
36292
|
+
{
|
|
36293
|
+
kind: "slack",
|
|
36294
|
+
title: "On-demand diagnosis",
|
|
36295
|
+
description: "Auto can connect Slack so you can mention it for a focused session diagnosis.",
|
|
36296
|
+
availability: "optional",
|
|
36297
|
+
connection: "slack"
|
|
36298
|
+
}
|
|
36299
|
+
],
|
|
36300
|
+
requires: [],
|
|
36301
|
+
optionalConnections: ["slack"],
|
|
36302
|
+
variables: ["repoFullName"]
|
|
36303
|
+
},
|
|
36304
|
+
{
|
|
36305
|
+
id: "pr-review",
|
|
36306
|
+
template: "@auto/code-review",
|
|
36307
|
+
files: [{ subpath: "agents/pr-review.yaml", agentFileName: "pr-review" }],
|
|
36308
|
+
displayName: "PR Review",
|
|
36309
|
+
username: "pr-review",
|
|
36310
|
+
avatarAsset: "pr-reviewer.png",
|
|
36311
|
+
category: "quality",
|
|
36312
|
+
oneLiner: "Reviews every pull request with one severity-ranked comment and a check.",
|
|
36313
|
+
description: "Reads the full diff of every pull request in context \u2014 the surrounding code, the repo's idioms, recent related changes \u2014 and posts exactly one severity-ranked review comment with a clear merge recommendation, reporting a commit check alongside it. Follows the PR conversation and can optionally report verdicts in Slack.",
|
|
36314
|
+
harness: "claude-code",
|
|
36315
|
+
model: "claude-opus-4-8",
|
|
36316
|
+
triggers: [
|
|
36317
|
+
{
|
|
36318
|
+
kind: "github",
|
|
36319
|
+
title: "Pull request review",
|
|
36320
|
+
description: "Reviews every PR when it opens, reopens, or receives a new push, then follows the review conversation.",
|
|
36321
|
+
availability: "core"
|
|
36322
|
+
},
|
|
36323
|
+
{
|
|
36324
|
+
kind: "slack",
|
|
36325
|
+
title: "Slack review verdicts",
|
|
36326
|
+
description: "Auto can connect Slack so PR Review also reports verdicts in #pr-review and responds to direct mentions.",
|
|
36327
|
+
availability: "optional",
|
|
36328
|
+
connection: "slack"
|
|
36329
|
+
}
|
|
36330
|
+
],
|
|
36331
|
+
requires: ["github"],
|
|
36332
|
+
optionalConnections: ["slack"],
|
|
36333
|
+
variables: ["repoFullName", "githubConnection"]
|
|
36334
|
+
},
|
|
36335
|
+
{
|
|
36336
|
+
id: "issue-triage",
|
|
36337
|
+
template: "@auto/issue-triage",
|
|
36338
|
+
files: [
|
|
36339
|
+
{ subpath: "agents/issue-triage.yaml", agentFileName: "issue-triage" },
|
|
36340
|
+
{ subpath: "agents/issue-coder.yaml", agentFileName: "issue-coder" }
|
|
36341
|
+
],
|
|
36342
|
+
displayName: "Issue Triage",
|
|
36343
|
+
username: "issue-triage",
|
|
36344
|
+
avatarAsset: "triage.png",
|
|
36345
|
+
category: "operations",
|
|
36346
|
+
oneLiner: "Triages new issues into implementation-ready work, then hands them to a coder.",
|
|
36347
|
+
description: "Reads every new issue as it lands, classifies and prioritizes it, and turns vague reports into implementation-ready work items. Clear issues can be handed directly to its issue-coder teammate; adding the one-shot auto-triage label requests another issue-bound triage pass. When the standard Slack connection is available, it also posts ready-work notes in #dev.",
|
|
36348
|
+
harness: "claude-code",
|
|
36349
|
+
model: "claude-opus-4-8",
|
|
36350
|
+
triggers: [
|
|
36351
|
+
{
|
|
36352
|
+
kind: "github",
|
|
36353
|
+
title: "Issue intake",
|
|
36354
|
+
description: "Triages new issues and runs another issue-bound pass when the auto-triage label is added.",
|
|
36355
|
+
availability: "core"
|
|
36356
|
+
},
|
|
36357
|
+
{
|
|
36358
|
+
kind: "slack",
|
|
36359
|
+
title: "Slack ready-work notes",
|
|
36360
|
+
description: "Auto can connect Slack so it posts ready-work notes in #dev and takes triage mentions.",
|
|
36361
|
+
availability: "optional",
|
|
36362
|
+
connection: "slack"
|
|
36363
|
+
}
|
|
36364
|
+
],
|
|
36365
|
+
requires: ["github"],
|
|
36366
|
+
optionalConnections: ["slack"],
|
|
36367
|
+
variables: ["repoFullName", "githubConnection"],
|
|
36368
|
+
substrate: {
|
|
36369
|
+
role: "issue-triage",
|
|
36370
|
+
id: "github",
|
|
36371
|
+
label: "GitHub Issues",
|
|
36372
|
+
default: true
|
|
36373
|
+
}
|
|
36374
|
+
},
|
|
36375
|
+
{
|
|
36376
|
+
id: "issue-triage-linear",
|
|
36377
|
+
template: "@auto/issue-triage",
|
|
36378
|
+
files: [
|
|
36379
|
+
{
|
|
36380
|
+
subpath: "agents/issue-triage-linear.yaml",
|
|
36381
|
+
agentFileName: "issue-triage"
|
|
36382
|
+
},
|
|
36383
|
+
{
|
|
36384
|
+
subpath: "agents/issue-coder-linear.yaml",
|
|
36385
|
+
agentFileName: "issue-coder"
|
|
36386
|
+
}
|
|
36387
|
+
],
|
|
36388
|
+
displayName: "Issue Triage",
|
|
36389
|
+
username: "issue-triage",
|
|
36390
|
+
avatarAsset: "triage.png",
|
|
36391
|
+
category: "operations",
|
|
36392
|
+
oneLiner: "Triages new issues into implementation-ready work, then hands them to a coder.",
|
|
36393
|
+
description: "Works from Linear as the source of truth: triages issues labeled auto-triage, classifies and prioritizes them, and turns vague reports into implementation-ready work items handed to its issue-coder teammate, which opens PRs and reports back on the Linear issue. When the standard Slack connection is available, it also posts ready-work notes in #dev.",
|
|
36394
|
+
harness: "claude-code",
|
|
36395
|
+
model: "claude-opus-4-8",
|
|
36396
|
+
triggers: [
|
|
36397
|
+
{
|
|
36398
|
+
kind: "linear",
|
|
36399
|
+
title: "Issue intake",
|
|
36400
|
+
description: "Triages Linear issues when the auto-triage label is added at creation or later.",
|
|
36401
|
+
availability: "core",
|
|
36402
|
+
connection: "linear"
|
|
36403
|
+
},
|
|
36404
|
+
{
|
|
36405
|
+
kind: "slack",
|
|
36406
|
+
title: "Slack ready-work notes",
|
|
36407
|
+
description: "Auto can connect Slack so it posts ready-work notes in #dev and takes triage mentions.",
|
|
36408
|
+
availability: "optional",
|
|
36409
|
+
connection: "slack"
|
|
36410
|
+
}
|
|
36411
|
+
],
|
|
36412
|
+
requires: ["linear"],
|
|
36413
|
+
optionalConnections: ["slack"],
|
|
36414
|
+
variables: ["repoFullName", "linearConnection"],
|
|
36415
|
+
substrate: { role: "issue-triage", id: "linear", label: "Linear" }
|
|
36416
|
+
},
|
|
36417
|
+
{
|
|
36418
|
+
id: "ship-digest",
|
|
36419
|
+
template: "@auto/daily-digest",
|
|
36420
|
+
files: [
|
|
36421
|
+
{ subpath: "agents/ship-digest.yaml", agentFileName: "ship-digest" }
|
|
36422
|
+
],
|
|
36423
|
+
displayName: "Ship Digest",
|
|
36424
|
+
username: "ship-digest",
|
|
36425
|
+
avatarAsset: "ship-digest.png",
|
|
36426
|
+
category: "operations",
|
|
36427
|
+
oneLiner: "A daily shipped-code digest of everything your factory moved.",
|
|
36428
|
+
description: "A scheduled read-only analyst that compiles a daily digest of merged PRs, confirmed agent-authored work, notable changes, follow-ups, and idiom drift. It always delivers a run report and can also post the summary and full digest to Slack when the standard Slack connection is available.",
|
|
36429
|
+
harness: "claude-code",
|
|
36430
|
+
model: null,
|
|
36431
|
+
triggers: [
|
|
36432
|
+
{
|
|
36433
|
+
kind: "schedule",
|
|
36434
|
+
title: "Daily ship report",
|
|
36435
|
+
description: "Every morning, it compiles the previous 24 hours of shipped work and follow-ups.",
|
|
36436
|
+
availability: "core"
|
|
36437
|
+
},
|
|
36438
|
+
{
|
|
36439
|
+
kind: "slack",
|
|
36440
|
+
title: "Slack digest delivery",
|
|
36441
|
+
description: "Auto can connect Slack so it also posts the daily summary and full digest in #dev.",
|
|
36442
|
+
availability: "optional",
|
|
36443
|
+
connection: "slack"
|
|
36444
|
+
}
|
|
36445
|
+
],
|
|
36446
|
+
requires: [],
|
|
36447
|
+
optionalConnections: ["slack"],
|
|
36448
|
+
variables: ["repoFullName"]
|
|
36449
|
+
},
|
|
36450
|
+
{
|
|
36451
|
+
id: "chatterbox",
|
|
36452
|
+
template: "@auto/chat-assistant",
|
|
36453
|
+
files: [{ subpath: "agents/assistant.yaml", agentFileName: "assistant" }],
|
|
36454
|
+
displayName: "Chatterbox",
|
|
36455
|
+
username: "assistant",
|
|
36456
|
+
avatarAsset: "chatterbox.png",
|
|
36457
|
+
category: "factory",
|
|
36458
|
+
oneLiner: "A quick conversational assistant for direct sessions or optional Slack chat.",
|
|
36459
|
+
description: "A lightweight conversational assistant for quick answers, drafting, summaries, and an Auto setup sanity check. Use it directly in a session, or connect Slack to mention Chatterbox and continue in a thread.",
|
|
36460
|
+
harness: "claude-code",
|
|
36461
|
+
model: null,
|
|
36462
|
+
triggers: [
|
|
36463
|
+
{
|
|
36464
|
+
kind: "slack",
|
|
36465
|
+
title: "Optional Slack chat",
|
|
36466
|
+
description: "Auto can connect Slack so you can mention Chatterbox and confirm Auto is installed, reachable, and responding.",
|
|
36467
|
+
availability: "optional",
|
|
36468
|
+
connection: "slack"
|
|
36469
|
+
}
|
|
36470
|
+
],
|
|
36471
|
+
requires: [],
|
|
36472
|
+
optionalConnections: ["slack"],
|
|
36473
|
+
variables: []
|
|
36474
|
+
},
|
|
36475
|
+
{
|
|
36476
|
+
id: "self-improvement",
|
|
36477
|
+
template: "@auto/self-improvement",
|
|
36478
|
+
files: [
|
|
36479
|
+
{
|
|
36480
|
+
subpath: "agents/self-improvement.yaml",
|
|
36481
|
+
agentFileName: "self-improvement"
|
|
36482
|
+
}
|
|
36483
|
+
],
|
|
36484
|
+
displayName: "Self Improvement",
|
|
36485
|
+
username: "self-improvement",
|
|
36486
|
+
avatarAsset: "self-improvement.png",
|
|
36487
|
+
category: "factory",
|
|
36488
|
+
oneLiner: "Sweeps PR feedback and agent sessions, proposes concrete tuning.",
|
|
36489
|
+
description: "A scheduled sweep over PR feedback, read-only repo data, committed .auto agent files, and your agents' own sessions: where they stalled, what reviewers keep flagging, and which triggers fired for nothing. It proposes concrete application and factory changes with exact files and fields.",
|
|
36490
|
+
harness: "claude-code",
|
|
36491
|
+
model: "claude-opus-4-8",
|
|
36492
|
+
triggers: [
|
|
36493
|
+
{
|
|
36494
|
+
kind: "schedule",
|
|
36495
|
+
title: "Scheduled improvement sweep",
|
|
36496
|
+
description: "Every two hours, it reviews agent sessions and PR feedback for concrete tuning opportunities.",
|
|
36497
|
+
availability: "core"
|
|
36498
|
+
},
|
|
36499
|
+
{
|
|
36500
|
+
kind: "slack",
|
|
36501
|
+
title: "Slack improvement requests",
|
|
36502
|
+
description: "Auto can connect Slack so teammates can mention Self Improvement for an on-demand sweep and receive material findings in #dev.",
|
|
36503
|
+
availability: "optional",
|
|
36504
|
+
connection: "slack"
|
|
36505
|
+
}
|
|
36506
|
+
],
|
|
36507
|
+
requires: [],
|
|
36508
|
+
optionalConnections: ["slack"],
|
|
36509
|
+
variables: ["repoFullName"]
|
|
36510
|
+
},
|
|
36511
|
+
{
|
|
36512
|
+
id: "incident-response",
|
|
36513
|
+
template: "@auto/incident-response",
|
|
36514
|
+
files: [
|
|
36515
|
+
{
|
|
36516
|
+
subpath: "agents/incident-response.yaml",
|
|
36517
|
+
agentFileName: "incident-response"
|
|
36518
|
+
}
|
|
36519
|
+
],
|
|
36520
|
+
displayName: "Incident Response",
|
|
36521
|
+
username: "incident-response",
|
|
36522
|
+
avatarAsset: "sentinel.png",
|
|
36523
|
+
category: "operations",
|
|
36524
|
+
oneLiner: "First on the scene: investigates alerts, posts triage, drafts the fix.",
|
|
36525
|
+
description: "First responder for production alerts: an incident webhook wakes it, it correlates the alert with recent changes, delivers an evidence-based triage through the entrypoint you configure, and opens a draft fix PR when the cause is clear. It can also post the triage to Slack and answer follow-ups in the incident thread when the standard Slack connection is available.",
|
|
36526
|
+
harness: "claude-code",
|
|
36527
|
+
model: "claude-opus-4-8",
|
|
36528
|
+
triggers: [
|
|
36529
|
+
{
|
|
36530
|
+
kind: "webhook",
|
|
36531
|
+
title: "Incident alerts",
|
|
36532
|
+
description: "Connect an alerting webhook and it starts an evidence-based incident investigation.",
|
|
36533
|
+
availability: "core"
|
|
36534
|
+
},
|
|
36535
|
+
{
|
|
36536
|
+
kind: "slack",
|
|
36537
|
+
title: "Slack triage delivery",
|
|
36538
|
+
description: "Auto can connect Slack so it also posts the triage in the incident thread and answers responder follow-ups there.",
|
|
36539
|
+
availability: "optional",
|
|
36540
|
+
connection: "slack"
|
|
36541
|
+
}
|
|
36542
|
+
],
|
|
36543
|
+
requires: [],
|
|
36544
|
+
optionalConnections: ["slack"],
|
|
36545
|
+
variables: ["repoFullName"]
|
|
36546
|
+
},
|
|
36547
|
+
{
|
|
36548
|
+
id: "handoff",
|
|
36549
|
+
template: "@auto/handoff",
|
|
36550
|
+
files: [{ subpath: "agents/handoff.yaml", agentFileName: "handoff" }],
|
|
36551
|
+
displayName: "Handoff",
|
|
36552
|
+
username: "handoff",
|
|
36553
|
+
avatarAsset: "handoff.png",
|
|
36554
|
+
category: "engineering",
|
|
36555
|
+
oneLiner: "Tag it on GitHub or start a session with a coding task; it takes ownership.",
|
|
36556
|
+
description: "The delegation coder: address it on a pull request or issue, or start a new session with a coding task. It picks up or creates the branch, binds the relevant GitHub artifacts, implements what's asked, follows CI and review feedback, and reports when the work is ready for final review.",
|
|
36557
|
+
harness: "claude-code",
|
|
36558
|
+
model: "claude-opus-4-8",
|
|
36559
|
+
triggers: [
|
|
36560
|
+
{
|
|
36561
|
+
kind: "github",
|
|
36562
|
+
title: "GitHub handoff",
|
|
36563
|
+
description: "Address it on a PR or issue and it takes scoped ownership, including CI and review follow-through.",
|
|
36564
|
+
availability: "core"
|
|
36565
|
+
},
|
|
36566
|
+
{
|
|
36567
|
+
kind: "agent",
|
|
36568
|
+
title: "Direct dispatch",
|
|
36569
|
+
description: "An orchestrator can start it with a new coding task that needs an owned branch and PR.",
|
|
36570
|
+
availability: "core"
|
|
36571
|
+
}
|
|
36572
|
+
],
|
|
36573
|
+
requires: ["github"],
|
|
36574
|
+
optionalConnections: [],
|
|
36575
|
+
variables: ["repoFullName", "githubConnection"]
|
|
36576
|
+
},
|
|
36577
|
+
{
|
|
36578
|
+
id: "lead-researcher",
|
|
36579
|
+
template: "@auto/lead-engine",
|
|
36580
|
+
files: [
|
|
36581
|
+
{
|
|
36582
|
+
subpath: "agents/lead-researcher.yaml",
|
|
36583
|
+
agentFileName: "lead-researcher"
|
|
36584
|
+
}
|
|
36585
|
+
],
|
|
36586
|
+
displayName: "Lead Researcher",
|
|
36587
|
+
username: "lead-researcher",
|
|
36588
|
+
avatarAsset: "scout.png",
|
|
36589
|
+
category: "growth",
|
|
36590
|
+
oneLiner: "Researches leads from your sources or the public web, then drafts outreach.",
|
|
36591
|
+
description: "A lead researcher you can connect to preferred data sources or ask to scour public web signals. It builds sourced dossiers, scores fit from available evidence, and drafts outreach for human approval without contacting prospects itself.",
|
|
36592
|
+
harness: "claude-code",
|
|
36593
|
+
model: null,
|
|
36594
|
+
triggers: [
|
|
36595
|
+
{
|
|
36596
|
+
kind: "webhook",
|
|
36597
|
+
title: "Incoming leads",
|
|
36598
|
+
description: "Send a lead by webhook and it builds a sourced dossier and draft outreach.",
|
|
36599
|
+
availability: "core"
|
|
36600
|
+
},
|
|
36601
|
+
{
|
|
36602
|
+
kind: "agent",
|
|
36603
|
+
title: "Research dispatch",
|
|
36604
|
+
description: "Start it directly with research criteria and any connected sources you want it to use.",
|
|
36605
|
+
availability: "core"
|
|
36606
|
+
}
|
|
36607
|
+
],
|
|
36608
|
+
requires: [],
|
|
36609
|
+
optionalConnections: [],
|
|
36610
|
+
variables: ["repoFullName"]
|
|
36611
|
+
},
|
|
36612
|
+
{
|
|
36613
|
+
id: "research-coordinator",
|
|
36614
|
+
template: "@auto/research-loop",
|
|
36615
|
+
files: [
|
|
36616
|
+
{
|
|
36617
|
+
subpath: "agents/research-coordinator.yaml",
|
|
36618
|
+
agentFileName: "research-coordinator"
|
|
36619
|
+
},
|
|
36620
|
+
{ subpath: "agents/experimenter.yaml", agentFileName: "experimenter" }
|
|
36621
|
+
],
|
|
36622
|
+
displayName: "Research Coordinator",
|
|
36623
|
+
username: "research",
|
|
36624
|
+
avatarAsset: "cartographer.png",
|
|
36625
|
+
category: "growth",
|
|
36626
|
+
oneLiner: "Start a measurable research campaign, then let one coordinator keep its rounds moving.",
|
|
36627
|
+
description: "Address the coordinator in a GitHub issue or PR comment to start a measurable campaign. Its one live session dispatches installed experimenters, tracks multiple campaign issues without mixing them, and uses a 10-minute heartbeat only to advance campaigns already in flight.",
|
|
36628
|
+
harness: "claude-code",
|
|
36629
|
+
model: "claude-opus-4-8",
|
|
36630
|
+
triggers: [
|
|
36631
|
+
{
|
|
36632
|
+
kind: "github",
|
|
36633
|
+
title: "Campaign commands",
|
|
36634
|
+
description: "Address it in a GitHub comment to start or steer a measurable research campaign.",
|
|
36635
|
+
availability: "core"
|
|
36636
|
+
},
|
|
36637
|
+
{
|
|
36638
|
+
kind: "agent",
|
|
36639
|
+
title: "Experiment dispatch",
|
|
36640
|
+
description: "It assigns each approved round to installed experimenters and collects their results.",
|
|
36641
|
+
availability: "core"
|
|
36642
|
+
},
|
|
36643
|
+
{
|
|
36644
|
+
kind: "schedule",
|
|
36645
|
+
title: "Campaign check-ins",
|
|
36646
|
+
description: "Every 10 minutes, it advances campaigns that are already in flight.",
|
|
36647
|
+
availability: "core"
|
|
36648
|
+
}
|
|
36649
|
+
],
|
|
36650
|
+
requires: ["github"],
|
|
36651
|
+
optionalConnections: [],
|
|
36652
|
+
variables: ["repoFullName", "githubConnection"]
|
|
36653
|
+
},
|
|
36654
|
+
plannedCatalogAgent({
|
|
36655
|
+
id: "intern",
|
|
36656
|
+
template: "@auto/agent-fleet",
|
|
36657
|
+
displayName: "The Intern",
|
|
36658
|
+
username: "intern",
|
|
36659
|
+
avatarAsset: "intern.png",
|
|
36660
|
+
category: "engineering",
|
|
36661
|
+
oneLiner: "Handles quick questions, small fixes, and grunt work.",
|
|
36662
|
+
description: "A low-cost generalist for small, bounded tasks that should not interrupt the senior engineering lanes."
|
|
36663
|
+
}),
|
|
36664
|
+
plannedCatalogAgent({
|
|
36665
|
+
id: "workforce-optimization-consultant",
|
|
36666
|
+
template: "@auto/agent-fleet",
|
|
36667
|
+
displayName: "Workforce Optimization Consultant",
|
|
36668
|
+
username: "workforce-optimization-consultant",
|
|
36669
|
+
avatarAsset: "workforce-consultant.png",
|
|
36670
|
+
category: "factory",
|
|
36671
|
+
oneLiner: "Produces evidence-based scorecards on which agents earn their seat.",
|
|
36672
|
+
description: "Reviews fleet outcomes, cost, and utilization on a schedule and recommends concrete roster changes.",
|
|
36673
|
+
trustNotes: [
|
|
36674
|
+
"Scheduled analysis carries recurring model and compute cost."
|
|
36675
|
+
]
|
|
36676
|
+
}),
|
|
36677
|
+
plannedCatalogAgent({
|
|
36678
|
+
id: "renovator",
|
|
36679
|
+
template: "@auto/slopbusters",
|
|
36680
|
+
displayName: "The Renovator",
|
|
36681
|
+
username: "renovator",
|
|
36682
|
+
avatarAsset: "renovator.png",
|
|
36683
|
+
category: "quality",
|
|
36684
|
+
oneLiner: "Walks the property, writes the punch list, and schedules the crew.",
|
|
36685
|
+
description: "The Slopbusters' front of house: turns repo-specific cleanup rulings into a sustained, reviewable renovation campaign.",
|
|
36686
|
+
capabilitySummary: [
|
|
36687
|
+
"actions:read",
|
|
36688
|
+
"checks:read",
|
|
36689
|
+
"contents:write",
|
|
36690
|
+
"issues:write",
|
|
36691
|
+
"merge:write",
|
|
36692
|
+
"pullRequests:write"
|
|
36693
|
+
],
|
|
36694
|
+
trustNotes: [
|
|
36695
|
+
"Contents write cannot be path-scoped; doctrine and review limit writes to idioms and campaign ledgers.",
|
|
36696
|
+
"Can merge only after a user delegates the merge and the readiness bar passes."
|
|
36697
|
+
]
|
|
36698
|
+
}),
|
|
36699
|
+
plannedCatalogAgent({
|
|
36700
|
+
id: "reaper",
|
|
36701
|
+
template: "@auto/slopbusters",
|
|
36702
|
+
displayName: "The Reaper",
|
|
36703
|
+
username: "reaper",
|
|
36704
|
+
avatarAsset: "reaper.png",
|
|
36705
|
+
category: "quality",
|
|
36706
|
+
oneLiner: "Finds stale pull requests, sessions, and branches before they become undead.",
|
|
36707
|
+
description: "A cleanup specialist that reports stale work first and only gains destructive execution authority through explicit opt-in.",
|
|
36708
|
+
trustNotes: [
|
|
36709
|
+
"Destructive cleanup is warn-only until a tenant explicitly opts in."
|
|
36710
|
+
]
|
|
36711
|
+
}),
|
|
36712
|
+
plannedCatalogAgent({
|
|
36713
|
+
id: "butcher",
|
|
36714
|
+
template: "@auto/slopbusters",
|
|
36715
|
+
displayName: "The Butcher",
|
|
36716
|
+
username: "butcher",
|
|
36717
|
+
avatarAsset: "butcher.png",
|
|
36718
|
+
category: "quality",
|
|
36719
|
+
oneLiner: "Cuts dead code in small, reviewable negative diffs.",
|
|
36720
|
+
description: "A deletion-first implementer for unused dependencies, exports, and obsolete paths identified by the cleanup campaign."
|
|
36721
|
+
}),
|
|
36722
|
+
plannedCatalogAgent({
|
|
36723
|
+
id: "janitor",
|
|
36724
|
+
template: "@auto/slopbusters",
|
|
36725
|
+
displayName: "The Janitor",
|
|
36726
|
+
username: "janitor",
|
|
36727
|
+
avatarAsset: "janitor.png",
|
|
36728
|
+
category: "quality",
|
|
36729
|
+
oneLiner: "Sweeps merged branches, dead labels, expired TODOs, and artifact bloat.",
|
|
36730
|
+
description: "A scheduled hygiene agent that starts with dry-run reports and limits branch cleanup to already-merged work.",
|
|
36731
|
+
trustNotes: [
|
|
36732
|
+
"Scheduled cleanup starts in dry-run mode and carries recurring cost."
|
|
36733
|
+
]
|
|
36734
|
+
}),
|
|
36735
|
+
plannedCatalogAgent({
|
|
36736
|
+
id: "exorcist",
|
|
36737
|
+
template: "@auto/slopbusters",
|
|
36738
|
+
displayName: "The Exorcist",
|
|
36739
|
+
username: "exorcist",
|
|
36740
|
+
avatarAsset: "exorcist.png",
|
|
36741
|
+
category: "quality",
|
|
36742
|
+
oneLiner: "Hunts flaky tests and explains each quarantine or repair.",
|
|
36743
|
+
description: "A CI reliability specialist that detects recurring failure signatures, reproduces what it can, and proposes bounded fixes."
|
|
36744
|
+
}),
|
|
36745
|
+
plannedCatalogAgent({
|
|
36746
|
+
id: "inspector",
|
|
36747
|
+
template: "@auto/slopbusters",
|
|
36748
|
+
displayName: "The Inspector",
|
|
36749
|
+
username: "inspector",
|
|
36750
|
+
avatarAsset: "inspector.png",
|
|
36751
|
+
category: "quality",
|
|
36752
|
+
oneLiner: "Builds reproductions, bisects regressions, and assembles case files.",
|
|
36753
|
+
description: "A read-first investigator shared by cleanup and incident teams to establish evidence before implementation begins."
|
|
36754
|
+
}),
|
|
36755
|
+
plannedCatalogAgent({
|
|
36756
|
+
id: "admiral",
|
|
36757
|
+
template: "@auto/war-room",
|
|
36758
|
+
displayName: "The Admiral",
|
|
36759
|
+
username: "admiral",
|
|
36760
|
+
avatarAsset: "admiral.png",
|
|
36761
|
+
category: "operations",
|
|
36762
|
+
oneLiner: "Owns the threat board, dispatches the fleet, and briefs you.",
|
|
36763
|
+
description: "The War Room's front of house: proves the response loop on a labeled drill, then keeps every real threat owned and followed up.",
|
|
36764
|
+
capabilitySummary: [
|
|
36765
|
+
"actions:read",
|
|
36766
|
+
"checks:read",
|
|
36767
|
+
"contents:write",
|
|
36768
|
+
"issues:write",
|
|
36769
|
+
"merge:write",
|
|
36770
|
+
"pullRequests:write"
|
|
36771
|
+
],
|
|
36772
|
+
trustNotes: [
|
|
36773
|
+
"Drills are synthetic and labeled; the agent never creates incidents in external providers.",
|
|
36774
|
+
"Can merge only after a user delegates the merge and the readiness bar passes."
|
|
36775
|
+
]
|
|
36776
|
+
}),
|
|
36777
|
+
plannedCatalogAgent({
|
|
36778
|
+
id: "watchdog",
|
|
36779
|
+
template: "@auto/war-room",
|
|
36780
|
+
displayName: "The Watchdog",
|
|
36781
|
+
username: "watchdog",
|
|
36782
|
+
avatarAsset: "watchdog.png",
|
|
36783
|
+
category: "operations",
|
|
36784
|
+
oneLiner: "Checks connected signals on a standing heartbeat and barks early.",
|
|
36785
|
+
description: "A scheduled signal watcher for crew heartbeats, GitHub-side indicators, and webhook-fed alerts.",
|
|
36786
|
+
trustNotes: [
|
|
36787
|
+
"Heartbeat monitoring carries recurring model and compute cost."
|
|
36788
|
+
]
|
|
36789
|
+
}),
|
|
36790
|
+
plannedCatalogAgent({
|
|
36791
|
+
id: "bouncer",
|
|
36792
|
+
template: "@auto/war-room",
|
|
36793
|
+
displayName: "The Bouncer",
|
|
36794
|
+
username: "bouncer",
|
|
36795
|
+
avatarAsset: "bouncer.png",
|
|
36796
|
+
category: "quality",
|
|
36797
|
+
oneLiner: "Applies a dedicated security lens to every pull request.",
|
|
36798
|
+
description: "A review gate focused on authorization boundaries, unsafe defaults, and security-sensitive code paths."
|
|
36799
|
+
}),
|
|
36800
|
+
plannedCatalogAgent({
|
|
36801
|
+
id: "pentester",
|
|
36802
|
+
template: "@auto/war-room",
|
|
36803
|
+
displayName: "The Pentester",
|
|
36804
|
+
username: "pentester",
|
|
36805
|
+
avatarAsset: "pentester.png",
|
|
36806
|
+
category: "operations",
|
|
36807
|
+
oneLiner: "Runs read-only red-team campaigns and records findings.",
|
|
36808
|
+
description: "An offensive-security specialist that reports evidence to an issues ledger and never fixes or blocks quietly.",
|
|
36809
|
+
trustNotes: [
|
|
36810
|
+
"Read-only campaigns still require real security tooling before launch."
|
|
36811
|
+
]
|
|
36812
|
+
}),
|
|
36813
|
+
plannedCatalogAgent({
|
|
36814
|
+
id: "coroner",
|
|
36815
|
+
template: "@auto/war-room",
|
|
36816
|
+
displayName: "The Coroner",
|
|
36817
|
+
username: "coroner",
|
|
36818
|
+
avatarAsset: "coroner.png",
|
|
36819
|
+
category: "operations",
|
|
36820
|
+
oneLiner: "Writes blameless postmortems with owned follow-up actions.",
|
|
36821
|
+
description: "A post-incident analyst that turns the evidence trail into concrete corrective actions and tracks their owners."
|
|
36822
|
+
}),
|
|
36823
|
+
plannedCatalogAgent({
|
|
36824
|
+
id: "patron",
|
|
36825
|
+
template: "@auto/blank-canvas",
|
|
36826
|
+
displayName: "The Patron",
|
|
36827
|
+
username: "patron",
|
|
36828
|
+
avatarAsset: "patron.png",
|
|
36829
|
+
category: "factory",
|
|
36830
|
+
oneLiner: "Takes your commission, staffs the workshop, and drives it to a first outcome.",
|
|
36831
|
+
description: "The Blank Canvas front of house: translates a plain-language automation brief into the smallest useful team and reviewable setup PR.",
|
|
36832
|
+
capabilitySummary: [
|
|
36833
|
+
"actions:read",
|
|
36834
|
+
"checks:read",
|
|
36835
|
+
"contents:write",
|
|
36836
|
+
"issues:write",
|
|
36837
|
+
"merge:write",
|
|
36838
|
+
"pullRequests:write"
|
|
36839
|
+
],
|
|
36840
|
+
trustNotes: [
|
|
36841
|
+
"Authors agent resources, but every hire arrives as a setup PR the user must merge.",
|
|
36842
|
+
"Can merge only after a user delegates the merge and the readiness bar passes."
|
|
36843
|
+
]
|
|
36844
|
+
})
|
|
36845
|
+
];
|
|
36846
|
+
ROSTER_CATALOG_MANIFEST = ROSTER_CATALOG_ENTRIES.map((entry) => ({
|
|
36847
|
+
...entry,
|
|
36848
|
+
availability: entry.availability ?? "available",
|
|
36849
|
+
capabilitySummary: capabilitySummary(entry),
|
|
36850
|
+
trustNotes: entry.trustNotes ?? []
|
|
36851
|
+
}));
|
|
36852
|
+
ROSTER_CATALOG = ROSTER_CATALOG_MANIFEST.filter((agent) => agent.availability === "available");
|
|
36853
|
+
SELF_IMPROVEMENT = [
|
|
36854
|
+
{
|
|
36855
|
+
id: "self-improvement",
|
|
36856
|
+
roleLine: "Standing infrastructure that reviews the team's own work and proposes concrete tuning."
|
|
36857
|
+
}
|
|
36858
|
+
];
|
|
36859
|
+
TEAM_TEMPLATES = [
|
|
36860
|
+
{
|
|
36861
|
+
id: "accelerator",
|
|
36862
|
+
name: "The Accelerator",
|
|
36863
|
+
template: "@auto/agent-fleet",
|
|
36864
|
+
tagline: "You decide. It ships.",
|
|
36865
|
+
pitch: "You've got a big idea and you want it to happen quickly and efficiently. Your software factory boots up and gets to work, anticipating your next move and improving itself as it goes.",
|
|
36866
|
+
backdrop: "accelerator.mp4",
|
|
36867
|
+
frontOfHouse: "chief-of-staff",
|
|
36868
|
+
members: [
|
|
36869
|
+
{
|
|
36870
|
+
id: "chief-of-staff",
|
|
36871
|
+
roleLine: "Front of house. Turns a task list into owned, review-ready pull requests."
|
|
36872
|
+
},
|
|
36873
|
+
{
|
|
36874
|
+
id: "staff-engineer",
|
|
36875
|
+
roleLine: "Owns each task end to end through CI and review."
|
|
36876
|
+
},
|
|
36877
|
+
{
|
|
36878
|
+
id: "senior-engineer",
|
|
36879
|
+
roleLine: "Handles complex scoped implementation work."
|
|
36880
|
+
},
|
|
36881
|
+
{
|
|
36882
|
+
id: "junior-engineer",
|
|
36883
|
+
roleLine: "Takes mechanical and batch coding work."
|
|
36884
|
+
},
|
|
36885
|
+
{
|
|
36886
|
+
id: "designer",
|
|
36887
|
+
roleLine: "Iterates on live UI and graduates it to a production PR."
|
|
36888
|
+
},
|
|
36889
|
+
{
|
|
36890
|
+
id: "pr-review",
|
|
36891
|
+
roleLine: "Reviews every pull request against the current head."
|
|
36892
|
+
},
|
|
36893
|
+
{
|
|
36894
|
+
id: "intern",
|
|
36895
|
+
roleLine: "Handles quick questions, small fixes, and grunt work."
|
|
36896
|
+
},
|
|
36897
|
+
{
|
|
36898
|
+
id: "ship-digest",
|
|
36899
|
+
roleLine: "Summarizes what shipped and what needs attention."
|
|
36900
|
+
},
|
|
36901
|
+
{
|
|
36902
|
+
id: "workforce-optimization-consultant",
|
|
36903
|
+
roleLine: "Produces weekly evidence-based team scorecards."
|
|
36904
|
+
}
|
|
36905
|
+
],
|
|
36906
|
+
standing: SELF_IMPROVEMENT,
|
|
36907
|
+
availability: "coming-soon",
|
|
36908
|
+
legacyKits: [
|
|
36909
|
+
{
|
|
36910
|
+
id: "startup",
|
|
36911
|
+
name: "Startup Kit",
|
|
36912
|
+
agents: [
|
|
36913
|
+
"chief-of-staff",
|
|
36914
|
+
"senior-engineer",
|
|
36915
|
+
"junior-engineer",
|
|
36916
|
+
"pr-review",
|
|
36917
|
+
"issue-triage",
|
|
36918
|
+
"ship-digest",
|
|
36919
|
+
"chatterbox"
|
|
36920
|
+
]
|
|
36921
|
+
},
|
|
36922
|
+
{
|
|
36923
|
+
id: "engineering",
|
|
36924
|
+
name: "Engineering Kit",
|
|
36925
|
+
agents: [
|
|
36926
|
+
"senior-engineer",
|
|
36927
|
+
"junior-engineer",
|
|
36928
|
+
"designer",
|
|
36929
|
+
"introspector"
|
|
36930
|
+
]
|
|
36931
|
+
},
|
|
36932
|
+
{
|
|
36933
|
+
id: "growth",
|
|
36934
|
+
name: "Growth Kit",
|
|
36935
|
+
agents: ["lead-researcher", "research-coordinator", "ship-digest"]
|
|
36936
|
+
}
|
|
36937
|
+
]
|
|
36938
|
+
},
|
|
36939
|
+
{
|
|
36940
|
+
id: "slopbusters",
|
|
36941
|
+
name: "The Slopbusters",
|
|
36942
|
+
template: "@auto/slopbusters",
|
|
36943
|
+
tagline: "Somebody has to say it: your codebase is haunted.",
|
|
36944
|
+
pitch: "Your agent swarm got ahead of itself. The machine works, but nobody knows how and every new feature digs the hole deeper. Send in the squad to recover a workable codebase and shake out the haunts.",
|
|
36945
|
+
backdrop: "slopbusters.mp4",
|
|
36946
|
+
frontOfHouse: "renovator",
|
|
36947
|
+
members: [
|
|
36948
|
+
{
|
|
36949
|
+
id: "renovator",
|
|
36950
|
+
roleLine: "Front of house. Walks the property, writes the punch list, and schedules the crew."
|
|
36951
|
+
},
|
|
36952
|
+
{
|
|
36953
|
+
id: "reaper",
|
|
36954
|
+
roleLine: "Warns on stale pull requests, stuck sessions, and zombie branches before cleanup."
|
|
36955
|
+
},
|
|
36956
|
+
{
|
|
36957
|
+
id: "butcher",
|
|
36958
|
+
roleLine: "Removes dead code in small, reviewable negative diffs."
|
|
36959
|
+
},
|
|
36960
|
+
{
|
|
36961
|
+
id: "janitor",
|
|
36962
|
+
roleLine: "Sweeps merged branches, dead labels, expired TODOs, and artifact bloat."
|
|
36963
|
+
},
|
|
36964
|
+
{
|
|
36965
|
+
id: "exorcist",
|
|
36966
|
+
roleLine: "Hunts flaky tests and explains each quarantine or repair."
|
|
36967
|
+
},
|
|
36968
|
+
{
|
|
36969
|
+
id: "inspector",
|
|
36970
|
+
roleLine: "Root-causes unusual behavior before anyone changes it."
|
|
36971
|
+
},
|
|
36972
|
+
{
|
|
36973
|
+
id: "senior-engineer",
|
|
36974
|
+
roleLine: "Executes the report's structural refactors."
|
|
36975
|
+
},
|
|
36976
|
+
{
|
|
36977
|
+
id: "junior-engineer",
|
|
36978
|
+
roleLine: "Handles mechanical deletions and renames."
|
|
36979
|
+
},
|
|
36980
|
+
{
|
|
36981
|
+
id: "pr-review",
|
|
36982
|
+
roleLine: "Checks every cleanup so the cure is not worse than the disease."
|
|
36983
|
+
}
|
|
36984
|
+
],
|
|
36985
|
+
standing: SELF_IMPROVEMENT,
|
|
36986
|
+
availability: "coming-soon",
|
|
36987
|
+
legacyKits: [
|
|
36988
|
+
{
|
|
36989
|
+
id: "code-quality",
|
|
36990
|
+
name: "Code Quality Kit",
|
|
36991
|
+
agents: ["pr-review", "handoff", "self-improvement"]
|
|
36992
|
+
}
|
|
36993
|
+
]
|
|
36994
|
+
},
|
|
36995
|
+
{
|
|
36996
|
+
id: "war-room",
|
|
36997
|
+
name: "The War Room",
|
|
36998
|
+
template: "@auto/war-room",
|
|
36999
|
+
tagline: "The fleet reports to the Admiral. The Admiral reports to you.",
|
|
37000
|
+
pitch: "Every emergent threat gets an owner, a status, and a follow-up. The room proves itself on a synthetic drill before anything real is burning, then keeps watch around the clock.",
|
|
37001
|
+
backdrop: "war-room.mp4",
|
|
37002
|
+
frontOfHouse: "admiral",
|
|
37003
|
+
members: [
|
|
37004
|
+
{
|
|
37005
|
+
id: "admiral",
|
|
37006
|
+
roleLine: "Front of house. Owns the threat board, dispatches the fleet, and briefs you."
|
|
37007
|
+
},
|
|
37008
|
+
{
|
|
37009
|
+
id: "incident-response",
|
|
37010
|
+
roleLine: "Correlates incidents with evidence and recent changes."
|
|
37011
|
+
},
|
|
37012
|
+
{
|
|
37013
|
+
id: "watchdog",
|
|
37014
|
+
roleLine: "Checks connected signals on a standing heartbeat."
|
|
37015
|
+
},
|
|
37016
|
+
{
|
|
37017
|
+
id: "issue-triage",
|
|
37018
|
+
roleLine: "Classifies and routes every inbound report."
|
|
37019
|
+
},
|
|
37020
|
+
{
|
|
37021
|
+
id: "inspector",
|
|
37022
|
+
roleLine: "Builds the reproduction, bisect, and case file."
|
|
37023
|
+
},
|
|
37024
|
+
{
|
|
37025
|
+
id: "staff-engineer",
|
|
37026
|
+
roleLine: "Implements scoped fixes and owns their pull requests."
|
|
37027
|
+
},
|
|
37028
|
+
{
|
|
37029
|
+
id: "bouncer",
|
|
37030
|
+
roleLine: "Applies a dedicated security lens to every pull request."
|
|
37031
|
+
},
|
|
37032
|
+
{
|
|
37033
|
+
id: "pentester",
|
|
37034
|
+
roleLine: "Runs read-only red-team campaigns and records findings."
|
|
37035
|
+
},
|
|
37036
|
+
{
|
|
37037
|
+
id: "coroner",
|
|
37038
|
+
roleLine: "Writes blameless postmortems with owned follow-up actions."
|
|
37039
|
+
}
|
|
37040
|
+
],
|
|
37041
|
+
standing: SELF_IMPROVEMENT,
|
|
37042
|
+
availability: "coming-soon",
|
|
37043
|
+
legacyKits: [
|
|
37044
|
+
{
|
|
37045
|
+
id: "ops",
|
|
37046
|
+
name: "Ops / On-Call Kit",
|
|
37047
|
+
agents: ["incident-response", "issue-triage", "ship-digest"]
|
|
37048
|
+
}
|
|
37049
|
+
]
|
|
37050
|
+
},
|
|
37051
|
+
{
|
|
37052
|
+
id: "blank-canvas",
|
|
37053
|
+
name: "The Blank Canvas",
|
|
37054
|
+
template: "@auto/blank-canvas",
|
|
37055
|
+
tagline: "The whole corpus. Your vision.",
|
|
37056
|
+
pitch: "Describe the automations you want in plain language. The Patron turns that commission into the smallest useful team and drives it to your definition of a magic moment.",
|
|
37057
|
+
backdrop: "blank-canvas.mp4",
|
|
37058
|
+
frontOfHouse: "patron",
|
|
37059
|
+
members: [
|
|
37060
|
+
{
|
|
37061
|
+
id: "patron",
|
|
37062
|
+
roleLine: "Front of house. Takes the commission, staffs the workshop, and authors every hire through a reviewable PR."
|
|
37063
|
+
}
|
|
37064
|
+
],
|
|
37065
|
+
standing: SELF_IMPROVEMENT,
|
|
37066
|
+
availability: "coming-soon",
|
|
37067
|
+
legacyKits: [{ id: "custom", name: "Custom", agents: [] }]
|
|
37068
|
+
}
|
|
37069
|
+
];
|
|
37070
|
+
ROSTER_KITS = TEAM_TEMPLATES.flatMap(
|
|
37071
|
+
(team) => team.legacyKits
|
|
37072
|
+
);
|
|
35996
37073
|
}
|
|
35997
37074
|
});
|
|
35998
37075
|
|
|
@@ -38973,7 +40050,7 @@ var init_package = __esm({
|
|
|
38973
40050
|
"package.json"() {
|
|
38974
40051
|
package_default = {
|
|
38975
40052
|
name: "@autohq/cli",
|
|
38976
|
-
version: "0.1.
|
|
40053
|
+
version: "0.1.426",
|
|
38977
40054
|
license: "SEE LICENSE IN README.md",
|
|
38978
40055
|
publishConfig: {
|
|
38979
40056
|
access: "public"
|