@autohq/cli 0.1.498 → 0.1.500

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/index.js CHANGED
@@ -17219,9 +17219,6 @@ function reasoningEffortRulesForModelSelection(input) {
17219
17219
  efforts: rules.reasoningEfforts
17220
17220
  };
17221
17221
  }
17222
- function defaultReasoningEffortForModelSelection(input) {
17223
- return reasoningEffortRulesForModelSelection(input).defaultEffort;
17224
- }
17225
17222
  function resolveModelSelectionForHarness(harness, selection) {
17226
17223
  const rules = modelRulesForHarness(harness);
17227
17224
  const provider = selection?.provider ?? rules.defaultProvider;
@@ -22760,7 +22757,7 @@ var init_runtimes = __esm({
22760
22757
  });
22761
22758
 
22762
22759
  // ../../packages/schemas/src/spend-cap-runtime.ts
22763
- var SpendCapOverrideStateSchema, SpendCapOverrideUpdateRequestSchema, SPEND_CAP_LIMIT_KINDS, SpendCapLimitKindSchema, EffectiveSpendCapHitSchema, SessionSpendCapRuntimeStatusSchema, SessionSpendCapBatchRequestSchema, SessionSpendCapBatchResponseSchema, AgentSpendCapRuntimeStatusSchema, SessionCreationSpendCapDecisionSchema, SPEND_CAP_RUNTIME_ERROR_CODES, SpendCapRuntimeErrorResponseSchema;
22760
+ var SpendCapOverrideStateSchema, SpendCapOverrideUpdateRequestSchema, SPEND_CAP_LIMIT_KINDS, SpendCapLimitKindSchema, EffectiveSpendCapHitSchema, SessionSpendCapRuntimeStatusSchema, SESSION_SPEND_CAP_BATCH_MAX_SESSION_IDS, SessionSpendCapBatchRequestSchema, SessionSpendCapBatchResponseSchema, AgentSpendCapRuntimeStatusSchema, SessionCreationSpendCapDecisionSchema, SPEND_CAP_RUNTIME_ERROR_CODES, SpendCapRuntimeErrorResponseSchema;
22764
22761
  var init_spend_cap_runtime = __esm({
22765
22762
  "../../packages/schemas/src/spend-cap-runtime.ts"() {
22766
22763
  "use strict";
@@ -22808,8 +22805,9 @@ var init_spend_cap_runtime = __esm({
22808
22805
  park: SessionParkRecordSchema.nullable(),
22809
22806
  organizationCreditsExhausted: external_exports.boolean()
22810
22807
  });
22808
+ SESSION_SPEND_CAP_BATCH_MAX_SESSION_IDS = 50;
22811
22809
  SessionSpendCapBatchRequestSchema = external_exports.object({
22812
- sessionIds: external_exports.array(SessionIdSchema).max(50)
22810
+ sessionIds: external_exports.array(SessionIdSchema).max(SESSION_SPEND_CAP_BATCH_MAX_SESSION_IDS)
22813
22811
  });
22814
22812
  SessionSpendCapBatchResponseSchema = external_exports.object({
22815
22813
  statuses: external_exports.array(
@@ -60322,19 +60320,19 @@ var init_hardcoded = __esm({
60322
60320
  "@auto/watchdog": "A scheduled signal watcher for pre-provisioned authenticated webhooks, GitHub-side indicators, and crew heartbeats that records thresholds and barks early.",
60323
60321
  "@auto/workforce-optimization-consultant": "A scheduled advisory analyst that scores agent effectiveness and usage signals, commits a reviewable report, and optionally posts a short Slack summary."
60324
60322
  };
60325
- MANAGED_TEMPLATES = Object.entries(
60326
- GENERATED_TEMPLATE_CONTENT
60327
- ).map(([name, versions]) => ({
60328
- name,
60329
- description: requireDescription(name),
60330
- versions: versions.map((version2) => ({
60331
- version: version2.version,
60332
- files: version2.files.map((file2) => ({
60333
- path: file2.path,
60334
- content: file2.content
60323
+ MANAGED_TEMPLATES = /* @__PURE__ */ Object.entries(GENERATED_TEMPLATE_CONTENT).map(
60324
+ ([name, versions]) => ({
60325
+ name,
60326
+ description: requireDescription(name),
60327
+ versions: versions.map((version2) => ({
60328
+ version: version2.version,
60329
+ files: version2.files.map((file2) => ({
60330
+ path: file2.path,
60331
+ content: file2.content
60332
+ }))
60335
60333
  }))
60336
- }))
60337
- }));
60334
+ })
60335
+ );
60338
60336
  HardcodedTemplateRegistry = class {
60339
60337
  templates;
60340
60338
  retiredTemplateNames;
@@ -60390,7 +60388,7 @@ var init_hardcoded = __esm({
60390
60388
  return found;
60391
60389
  }
60392
60390
  };
60393
- defaultTemplateRegistry = new HardcodedTemplateRegistry();
60391
+ defaultTemplateRegistry = /* @__PURE__ */ new HardcodedTemplateRegistry();
60394
60392
  }
60395
60393
  });
60396
60394
 
@@ -60430,1530 +60428,12 @@ var init_subscription = __esm({
60430
60428
 
60431
60429
  // ../../packages/schemas/src/templates/catalog.ts
60432
60430
  import { parse as parseYaml } from "yaml";
60433
- function catalogModelProvider(entry) {
60434
- if (entry.harness === "claude-code") return "anthropic";
60435
- return entry.model?.includes("/") ? "openrouter" : "openai";
60436
- }
60437
- function catalogReasoningEffort(entry) {
60438
- if (entry.reasoningEffort) return entry.reasoningEffort;
60439
- return defaultReasoningEffortForModelSelection({
60440
- harness: entry.harness,
60441
- model: entry.model ? {
60442
- provider: catalogModelProvider(entry),
60443
- id: entry.model
60444
- } : null
60445
- });
60446
- }
60447
- function resolvedTemplateFileContent(template, subpath) {
60448
- const versions = GENERATED_TEMPLATE_CONTENT[template];
60449
- if (!versions) {
60450
- return void 0;
60451
- }
60452
- const version2 = versions.reduce(
60453
- (latest, candidate) => compareSemver(candidate.version, latest.version) > 0 ? candidate : latest
60454
- );
60455
- const file2 = version2.files.find((candidate) => candidate.path === subpath);
60456
- return file2?.content;
60457
- }
60458
- function capabilitySummary(entry) {
60459
- if (entry.capabilitySummary) {
60460
- return entry.capabilitySummary;
60461
- }
60462
- const primary = entry.files[0];
60463
- if (!primary) {
60464
- return [];
60465
- }
60466
- const content = resolvedTemplateFileContent(entry.template, primary.subpath);
60467
- if (!content) {
60468
- return [];
60469
- }
60470
- const parsed = parseYaml(content);
60471
- const capabilities = parsed.mounts?.find(
60472
- (mount) => mount.auth?.kind === "githubApp"
60473
- )?.auth?.capabilities;
60474
- if (!capabilities) {
60475
- return [];
60476
- }
60477
- return Object.entries(capabilities).filter(([, level]) => level !== "none").map(([name, level]) => `${name}:${level}`).sort();
60478
- }
60479
- function webhookIntakes(entry) {
60480
- const intakes = /* @__PURE__ */ new Map();
60481
- for (const file2 of entry.files) {
60482
- const content = resolvedTemplateFileContent(entry.template, file2.subpath);
60483
- if (!content) {
60484
- continue;
60485
- }
60486
- const parsed = parseYaml(content);
60487
- for (const trigger of parsed.triggers ?? []) {
60488
- if (!trigger.endpoint || !trigger.auth?.secretRef || trigger.auth.kind !== "bearer_token" && trigger.auth.kind !== "hmac_sha256") {
60489
- continue;
60490
- }
60491
- intakes.set(trigger.endpoint, {
60492
- endpoint: trigger.endpoint,
60493
- authKind: trigger.auth.kind,
60494
- secretRef: trigger.auth.secretRef
60495
- });
60496
- }
60497
- }
60498
- return [...intakes.values()];
60499
- }
60500
- var ROSTER_CATALOG_ENTRIES, ROSTER_CATALOG_MANIFEST, ROSTER_CATALOG, SELF_IMPROVEMENT, TEAM_TEMPLATES, ROSTER_KITS;
60501
60431
  var init_catalog = __esm({
60502
60432
  "../../packages/schemas/src/templates/catalog.ts"() {
60503
60433
  "use strict";
60504
60434
  init_model_selection();
60505
60435
  init_content_generated();
60506
60436
  init_registry();
60507
- ROSTER_CATALOG_ENTRIES = [
60508
- {
60509
- id: "chief-of-staff",
60510
- template: "@auto/agent-fleet",
60511
- files: [
60512
- {
60513
- subpath: "agents/chief-of-staff.yaml",
60514
- agentFileName: "chief-of-staff"
60515
- },
60516
- {
60517
- subpath: "agents/staff-engineer.yaml",
60518
- agentFileName: "staff-engineer"
60519
- }
60520
- ],
60521
- displayName: "Chief of Staff Engineers",
60522
- username: "chief",
60523
- avatarAsset: "chief-of-staff-engineers.png",
60524
- category: "engineering",
60525
- oneLiner: "Takes a task list, dispatches staff engineers, shepherds them to green.",
60526
- 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.",
60527
- harness: "codex",
60528
- model: "gpt-5.6-sol",
60529
- reasoningEffort: "xhigh",
60530
- triggers: [
60531
- {
60532
- kind: "agent",
60533
- title: "Team dispatch",
60534
- description: "Give it a task list and it assigns scoped work to staff engineers, then shepherds their progress.",
60535
- availability: "core"
60536
- },
60537
- {
60538
- kind: "slack",
60539
- title: "Slack conversations",
60540
- description: "Auto can connect Slack so you can mention it with a batch of work, reply in its thread, or steer with reactions.",
60541
- availability: "optional",
60542
- connection: "slack"
60543
- },
60544
- {
60545
- kind: "github",
60546
- title: "Engineer PR follow-through",
60547
- description: "The staff engineer installed with it owns CI, review feedback, comments, and conflicts on each assigned PR.",
60548
- availability: "core"
60549
- },
60550
- {
60551
- kind: "schedule",
60552
- title: "Background check-ins",
60553
- description: "Every 15 minutes, it quietly checks active batches and nudges stalled work.",
60554
- availability: "core"
60555
- }
60556
- ],
60557
- requires: ["github"],
60558
- optionalConnections: ["slack"],
60559
- variables: ["repoFullName", "githubConnection"],
60560
- trustNotes: [
60561
- "Can merge only after a user delegates the merge and the readiness bar passes."
60562
- ]
60563
- },
60564
- {
60565
- id: "staff-engineer",
60566
- template: "@auto/agent-fleet",
60567
- files: [
60568
- {
60569
- subpath: "agents/staff-engineer.yaml",
60570
- agentFileName: "staff-engineer"
60571
- }
60572
- ],
60573
- displayName: "Staff Engineer",
60574
- username: "staff-engineer",
60575
- avatarAsset: "staff-engineer.png",
60576
- category: "engineering",
60577
- oneLiner: "Owns one task and its PR until you decide to merge or close it.",
60578
- 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.",
60579
- harness: "codex",
60580
- model: "gpt-5.6-sol",
60581
- reasoningEffort: "xhigh",
60582
- triggers: [
60583
- {
60584
- kind: "agent",
60585
- title: "Orchestrator dispatch",
60586
- description: "Chief of Staff or another orchestrator can assign it one scoped task and track its milestones.",
60587
- availability: "core"
60588
- },
60589
- {
60590
- kind: "github",
60591
- title: "PR ownership",
60592
- description: "It stays with its PR through CI, review feedback, comments, and conflicts; a human decides whether to merge.",
60593
- availability: "core"
60594
- },
60595
- {
60596
- kind: "slack",
60597
- title: "Invited thread discussion",
60598
- description: "Auto can connect Slack so the chief can invite it into a named thread for direct discussion of its task.",
60599
- availability: "optional",
60600
- connection: "slack"
60601
- }
60602
- ],
60603
- requires: ["github"],
60604
- optionalConnections: ["slack"],
60605
- variables: ["repoFullName", "githubConnection"]
60606
- },
60607
- {
60608
- id: "senior-engineer",
60609
- template: "@auto/engineering-tier",
60610
- files: [
60611
- {
60612
- subpath: "agents/senior-engineer.yaml",
60613
- agentFileName: "senior-engineer"
60614
- }
60615
- ],
60616
- displayName: "Senior Engineer",
60617
- username: "senior-engineer",
60618
- avatarAsset: "senior-engineer.png",
60619
- category: "engineering",
60620
- oneLiner: "Owns a complex task and its PR until you decide to merge or close it.",
60621
- description: "The senior implementer (GPT-5.6 Sol, medium reasoning): 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.",
60622
- harness: "codex",
60623
- model: "gpt-5.6-sol",
60624
- reasoningEffort: "medium",
60625
- triggers: [
60626
- {
60627
- kind: "agent",
60628
- title: "Orchestrator dispatch",
60629
- description: "Chief of Staff or another orchestrator can assign it a complex scoped task and track its milestones.",
60630
- availability: "core"
60631
- },
60632
- {
60633
- kind: "github",
60634
- title: "PR ownership",
60635
- description: "It handles CI, reviews, comments, and conflicts for its PR; a human decides whether to merge.",
60636
- availability: "core"
60637
- },
60638
- {
60639
- kind: "slack",
60640
- title: "Direct Slack tasks",
60641
- description: "Auto can connect Slack so you can mention it with one task.",
60642
- availability: "optional",
60643
- connection: "slack"
60644
- }
60645
- ],
60646
- requires: ["github"],
60647
- optionalConnections: ["slack"],
60648
- variables: ["repoFullName", "githubConnection"]
60649
- },
60650
- {
60651
- id: "principal-at-large",
60652
- template: "@auto/principal-at-large",
60653
- files: [
60654
- {
60655
- subpath: "agents/principal-at-large.yaml",
60656
- agentFileName: "principal-at-large"
60657
- }
60658
- ],
60659
- displayName: "Principal-at-Large",
60660
- username: "principal-at-large",
60661
- avatarAsset: "principal-at-large.png",
60662
- category: "engineering",
60663
- oneLiner: "Summons-only principal for exceptional diagnosis, design, and resisted failures.",
60664
- description: "The indispensable engineer who\u2019s almost never actually in the office. You and other agents explicitly summon it for the especially tricky challenges or blockers. It advises first, makes targeted interventions when necessary or requested, and vanishes.",
60665
- harness: "claude-code",
60666
- model: "claude-fable-5",
60667
- reasoningEffort: "max",
60668
- triggers: [
60669
- {
60670
- kind: "agent",
60671
- title: "Exceptional agent summons",
60672
- description: "Another agent can explicitly summon it for one evidence-backed diagnosis, design decision, or resisted intervention.",
60673
- availability: "core"
60674
- },
60675
- {
60676
- kind: "slack",
60677
- title: "Explicit Slack summons",
60678
- description: "Auto can connect Slack so a human can invoke exactly one turn with @auto.principal-at-large; it answers, unsubscribes, and vanishes.",
60679
- availability: "optional",
60680
- connection: "slack"
60681
- }
60682
- ],
60683
- requires: [],
60684
- optionalConnections: ["slack"],
60685
- variables: ["repoFullName"],
60686
- trustNotes: [
60687
- "Exceptional summons-only capacity; never a routine implementation tier, fleet fallback, heartbeat worker, or broad dispatcher.",
60688
- "May write repository content and pull requests, but has no merge authority and never becomes the default PR owner.",
60689
- "Holds no standing bindings; a Slack summons releases its temporary thread claim immediately after the final answer."
60690
- ]
60691
- },
60692
- {
60693
- id: "junior-engineer",
60694
- template: "@auto/engineering-tier",
60695
- files: [
60696
- {
60697
- subpath: "agents/junior-engineer.yaml",
60698
- agentFileName: "junior-engineer"
60699
- }
60700
- ],
60701
- displayName: "Junior Engineer",
60702
- username: "junior-engineer",
60703
- avatarAsset: "junior-engineer.png",
60704
- category: "engineering",
60705
- oneLiner: "Mechanical and batch coding work \u2014 renames, test backfills, straightforward edits.",
60706
- description: "The junior implementer (Grok 4.5): 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.",
60707
- harness: "codex",
60708
- model: "x-ai/grok-4.5",
60709
- triggers: [
60710
- {
60711
- kind: "agent",
60712
- title: "Orchestrator dispatch",
60713
- description: "Chief of Staff or another orchestrator can assign it a mechanical scoped task and track its milestones.",
60714
- availability: "core"
60715
- },
60716
- {
60717
- kind: "github",
60718
- title: "PR ownership",
60719
- description: "It handles CI, reviews, comments, and conflicts for its PR; a human decides whether to merge.",
60720
- availability: "core"
60721
- },
60722
- {
60723
- kind: "slack",
60724
- title: "Direct Slack tasks",
60725
- description: "Auto can connect Slack so you can mention it with one task.",
60726
- availability: "optional",
60727
- connection: "slack"
60728
- }
60729
- ],
60730
- requires: ["github"],
60731
- optionalConnections: ["slack"],
60732
- variables: ["repoFullName", "githubConnection"]
60733
- },
60734
- {
60735
- id: "designer",
60736
- template: "@auto/engineering-tier",
60737
- files: [
60738
- {
60739
- subpath: "agents/designer.yaml",
60740
- agentFileName: "designer"
60741
- }
60742
- ],
60743
- displayName: "Designer",
60744
- username: "designer",
60745
- avatarAsset: "designer.png",
60746
- category: "engineering",
60747
- oneLiner: "Live-iteration UI pairing \u2014 brings up the app, shares a link, iterates while you watch.",
60748
- 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.",
60749
- harness: "claude-code",
60750
- model: "claude-opus-4-8",
60751
- triggers: [
60752
- {
60753
- kind: "slack",
60754
- title: "Live Slack pairing",
60755
- description: "Auto can connect Slack so you can request UI work and steer the live iteration in-thread.",
60756
- availability: "optional",
60757
- connection: "slack"
60758
- },
60759
- {
60760
- kind: "github",
60761
- title: "Production PR follow-through",
60762
- description: "When you ask it to graduate the work, it owns CI, review feedback, comments, and conflicts on the PR.",
60763
- availability: "core"
60764
- }
60765
- ],
60766
- requires: ["github"],
60767
- optionalConnections: ["slack"],
60768
- variables: ["repoFullName", "githubConnection"]
60769
- },
60770
- {
60771
- id: "introspector",
60772
- template: "@auto/engineering-tier",
60773
- files: [
60774
- {
60775
- subpath: "agents/introspector.yaml",
60776
- agentFileName: "introspector"
60777
- }
60778
- ],
60779
- displayName: "Introspector",
60780
- username: "introspector",
60781
- avatarAsset: "introspector.png",
60782
- category: "factory",
60783
- oneLiner: "Diagnoses failures, bottlenecks, and drift in sibling sessions.",
60784
- 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.",
60785
- harness: "claude-code",
60786
- model: null,
60787
- triggers: [
60788
- {
60789
- kind: "schedule",
60790
- title: "Scheduled health sweep",
60791
- description: "Every two hours, it checks sibling sessions for failures, drift, and bottlenecks.",
60792
- availability: "core"
60793
- },
60794
- {
60795
- kind: "slack",
60796
- title: "On-demand diagnosis",
60797
- description: "Auto can connect Slack so you can mention it for a focused session diagnosis.",
60798
- availability: "optional",
60799
- connection: "slack"
60800
- }
60801
- ],
60802
- requires: [],
60803
- optionalConnections: ["slack"],
60804
- variables: ["repoFullName"]
60805
- },
60806
- {
60807
- id: "pr-review",
60808
- template: "@auto/code-review",
60809
- files: [{ subpath: "agents/pr-review.yaml", agentFileName: "pr-review" }],
60810
- displayName: "PR Review",
60811
- username: "pr-review",
60812
- avatarAsset: "pr-reviewer.png",
60813
- category: "quality",
60814
- oneLiner: "Reviews every pull request with one severity-ranked comment and a check.",
60815
- 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.",
60816
- harness: "claude-code",
60817
- model: "claude-opus-4-8",
60818
- triggers: [
60819
- {
60820
- kind: "github",
60821
- title: "Pull request review",
60822
- description: "Reviews every PR when it opens, reopens, or receives a new push, then follows the review conversation.",
60823
- availability: "core"
60824
- },
60825
- {
60826
- kind: "slack",
60827
- title: "Slack review verdicts",
60828
- description: "Auto can connect Slack so PR Review also reports verdicts in #pr-review and responds to direct mentions.",
60829
- availability: "optional",
60830
- connection: "slack"
60831
- }
60832
- ],
60833
- requires: ["github"],
60834
- optionalConnections: ["slack"],
60835
- variables: ["repoFullName", "githubConnection"]
60836
- },
60837
- {
60838
- id: "issue-triage",
60839
- template: "@auto/issue-triage",
60840
- files: [
60841
- { subpath: "agents/issue-triage.yaml", agentFileName: "issue-triage" },
60842
- { subpath: "agents/issue-coder.yaml", agentFileName: "issue-coder" }
60843
- ],
60844
- displayName: "Issue Triage",
60845
- username: "issue-triage",
60846
- avatarAsset: "triage.png",
60847
- category: "operations",
60848
- oneLiner: "Triages new issues into implementation-ready work, then hands them to a coder.",
60849
- 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.",
60850
- harness: "claude-code",
60851
- model: "claude-opus-4-8",
60852
- triggers: [
60853
- {
60854
- kind: "github",
60855
- title: "Issue intake",
60856
- description: "Triages new issues and runs another issue-bound pass when the auto-triage label is added.",
60857
- availability: "core"
60858
- },
60859
- {
60860
- kind: "slack",
60861
- title: "Slack ready-work notes",
60862
- description: "Auto can connect Slack so it posts ready-work notes in #dev and takes triage mentions.",
60863
- availability: "optional",
60864
- connection: "slack"
60865
- }
60866
- ],
60867
- requires: ["github"],
60868
- optionalConnections: ["slack"],
60869
- variables: ["repoFullName", "githubConnection"],
60870
- substrate: {
60871
- role: "issue-triage",
60872
- id: "github",
60873
- label: "GitHub Issues",
60874
- default: true
60875
- }
60876
- },
60877
- {
60878
- id: "issue-triage-linear",
60879
- template: "@auto/issue-triage",
60880
- files: [
60881
- {
60882
- subpath: "agents/issue-triage-linear-slack.yaml",
60883
- agentFileName: "issue-triage"
60884
- },
60885
- {
60886
- subpath: "agents/issue-coder-linear-slack.yaml",
60887
- agentFileName: "issue-coder"
60888
- }
60889
- ],
60890
- displayName: "Issue Triage",
60891
- username: "issue-triage",
60892
- avatarAsset: "triage.png",
60893
- category: "operations",
60894
- oneLiner: "Triages new issues into implementation-ready work, then hands them to a coder.",
60895
- description: "Works from Linear when connected: 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. Optional Slack mentions provide a second intake path and ready-work notes in #dev.",
60896
- harness: "claude-code",
60897
- model: "claude-opus-4-8",
60898
- triggers: [
60899
- {
60900
- kind: "linear",
60901
- title: "Issue intake",
60902
- description: "Triages Linear issues when the auto-triage label is added at creation or later.",
60903
- availability: "optional",
60904
- connection: "linear"
60905
- },
60906
- {
60907
- kind: "slack",
60908
- title: "Slack ready-work notes",
60909
- description: "Auto can connect Slack so it posts ready-work notes in #dev and takes triage mentions.",
60910
- availability: "optional",
60911
- connection: "slack"
60912
- }
60913
- ],
60914
- requires: [],
60915
- optionalConnections: ["linear", "slack"],
60916
- variables: ["repoFullName"],
60917
- substrate: { role: "issue-triage", id: "linear", label: "Linear" }
60918
- },
60919
- {
60920
- id: "ship-digest",
60921
- template: "@auto/daily-digest",
60922
- files: [
60923
- { subpath: "agents/ship-digest.yaml", agentFileName: "ship-digest" }
60924
- ],
60925
- displayName: "Ship Digest",
60926
- username: "ship-digest",
60927
- avatarAsset: "ship-digest.png",
60928
- category: "operations",
60929
- oneLiner: "A daily shipped-code digest of everything your factory moved.",
60930
- 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.",
60931
- harness: "claude-code",
60932
- model: null,
60933
- triggers: [
60934
- {
60935
- kind: "schedule",
60936
- title: "Daily ship report",
60937
- description: "Every morning, it compiles the previous 24 hours of shipped work and follow-ups.",
60938
- availability: "core"
60939
- },
60940
- {
60941
- kind: "slack",
60942
- title: "Slack digest delivery",
60943
- description: "Auto can connect Slack so it also posts the daily summary and full digest in #dev.",
60944
- availability: "optional",
60945
- connection: "slack"
60946
- }
60947
- ],
60948
- requires: [],
60949
- optionalConnections: ["slack"],
60950
- variables: ["repoFullName"]
60951
- },
60952
- {
60953
- id: "chatterbox",
60954
- template: "@auto/chat-assistant",
60955
- files: [{ subpath: "agents/assistant.yaml", agentFileName: "assistant" }],
60956
- displayName: "Chatterbox",
60957
- username: "assistant",
60958
- avatarAsset: "chatterbox.png",
60959
- category: "factory",
60960
- oneLiner: "A quick conversational assistant for direct sessions or optional Slack chat.",
60961
- 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.",
60962
- harness: "claude-code",
60963
- model: null,
60964
- triggers: [
60965
- {
60966
- kind: "slack",
60967
- title: "Optional Slack chat",
60968
- description: "Auto can connect Slack so you can mention Chatterbox and confirm Auto is installed, reachable, and responding.",
60969
- availability: "optional",
60970
- connection: "slack"
60971
- }
60972
- ],
60973
- requires: [],
60974
- optionalConnections: ["slack"],
60975
- variables: []
60976
- },
60977
- {
60978
- id: "self-improvement",
60979
- template: "@auto/self-improvement",
60980
- files: [
60981
- {
60982
- subpath: "agents/self-improvement.yaml",
60983
- agentFileName: "self-improvement"
60984
- }
60985
- ],
60986
- displayName: "Self Improvement",
60987
- username: "self-improvement",
60988
- avatarAsset: "self-improvement.png",
60989
- category: "factory",
60990
- oneLiner: "Sweeps PR feedback and agent sessions, proposes concrete tuning.",
60991
- 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.",
60992
- harness: "claude-code",
60993
- model: "claude-opus-4-8",
60994
- triggers: [
60995
- {
60996
- kind: "schedule",
60997
- title: "Scheduled improvement sweep",
60998
- description: "Every two hours, it reviews agent sessions and PR feedback for concrete tuning opportunities.",
60999
- availability: "core"
61000
- },
61001
- {
61002
- kind: "slack",
61003
- title: "Slack improvement requests",
61004
- description: "Auto can connect Slack so teammates can mention Self Improvement for an on-demand sweep and receive material findings in #dev.",
61005
- availability: "optional",
61006
- connection: "slack"
61007
- }
61008
- ],
61009
- requires: [],
61010
- optionalConnections: ["slack"],
61011
- variables: ["repoFullName"]
61012
- },
61013
- {
61014
- id: "incident-response",
61015
- template: "@auto/incident-response",
61016
- files: [
61017
- {
61018
- subpath: "agents/incident-response.yaml",
61019
- agentFileName: "incident-response"
61020
- }
61021
- ],
61022
- displayName: "Incident Response",
61023
- username: "incident-response",
61024
- avatarAsset: "sentinel.png",
61025
- category: "operations",
61026
- oneLiner: "First on the scene: investigates alerts, posts triage, drafts the fix.",
61027
- 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.",
61028
- harness: "claude-code",
61029
- model: "claude-opus-4-8",
61030
- triggers: [
61031
- {
61032
- kind: "webhook",
61033
- title: "Incident alerts",
61034
- description: "Connect an alerting webhook and it starts an evidence-based incident investigation.",
61035
- availability: "core"
61036
- },
61037
- {
61038
- kind: "slack",
61039
- title: "Slack triage delivery",
61040
- description: "Auto can connect Slack so it also posts the triage in the incident thread and answers responder follow-ups there.",
61041
- availability: "optional",
61042
- connection: "slack"
61043
- }
61044
- ],
61045
- requires: [],
61046
- optionalConnections: ["slack"],
61047
- variables: ["repoFullName"]
61048
- },
61049
- {
61050
- id: "handoff",
61051
- template: "@auto/handoff",
61052
- files: [{ subpath: "agents/handoff.yaml", agentFileName: "handoff" }],
61053
- displayName: "Handoff",
61054
- username: "handoff",
61055
- avatarAsset: "handoff.png",
61056
- category: "engineering",
61057
- oneLiner: "Tag it on GitHub or start a session with a coding task; it takes ownership.",
61058
- 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.",
61059
- harness: "codex",
61060
- model: "gpt-5.6-sol",
61061
- reasoningEffort: "xhigh",
61062
- triggers: [
61063
- {
61064
- kind: "github",
61065
- title: "GitHub handoff",
61066
- description: "Address it on a PR or issue and it takes scoped ownership, including CI and review follow-through.",
61067
- availability: "core"
61068
- },
61069
- {
61070
- kind: "agent",
61071
- title: "Direct dispatch",
61072
- description: "An orchestrator can start it with a new coding task that needs an owned branch and PR.",
61073
- availability: "core"
61074
- }
61075
- ],
61076
- requires: ["github"],
61077
- optionalConnections: [],
61078
- variables: ["repoFullName", "githubConnection"]
61079
- },
61080
- {
61081
- id: "lead-researcher",
61082
- template: "@auto/lead-engine",
61083
- files: [
61084
- {
61085
- subpath: "agents/lead-researcher.yaml",
61086
- agentFileName: "lead-researcher"
61087
- }
61088
- ],
61089
- displayName: "Lead Researcher",
61090
- username: "lead-researcher",
61091
- avatarAsset: "scout.png",
61092
- category: "growth",
61093
- oneLiner: "Researches leads from your sources or the public web, then drafts outreach.",
61094
- 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.",
61095
- harness: "claude-code",
61096
- model: null,
61097
- triggers: [
61098
- {
61099
- kind: "webhook",
61100
- title: "Incoming leads",
61101
- description: "Send a lead by webhook and it builds a sourced dossier and draft outreach.",
61102
- availability: "core"
61103
- },
61104
- {
61105
- kind: "agent",
61106
- title: "Research dispatch",
61107
- description: "Start it directly with research criteria and any connected sources you want it to use.",
61108
- availability: "core"
61109
- }
61110
- ],
61111
- requires: [],
61112
- optionalConnections: [],
61113
- variables: ["repoFullName"]
61114
- },
61115
- {
61116
- id: "research-coordinator",
61117
- template: "@auto/research-loop",
61118
- files: [
61119
- {
61120
- subpath: "agents/research-coordinator.yaml",
61121
- agentFileName: "research-coordinator"
61122
- },
61123
- { subpath: "agents/experimenter.yaml", agentFileName: "experimenter" }
61124
- ],
61125
- displayName: "Research Coordinator",
61126
- username: "research",
61127
- avatarAsset: "cartographer.png",
61128
- category: "growth",
61129
- oneLiner: "Start a measurable research campaign, then let one coordinator keep its rounds moving.",
61130
- 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.",
61131
- harness: "claude-code",
61132
- model: "claude-opus-4-8",
61133
- triggers: [
61134
- {
61135
- kind: "github",
61136
- title: "Campaign commands",
61137
- description: "Address it in a GitHub comment to start or steer a measurable research campaign.",
61138
- availability: "core"
61139
- },
61140
- {
61141
- kind: "agent",
61142
- title: "Experiment dispatch",
61143
- description: "It assigns each approved round to installed experimenters and collects their results.",
61144
- availability: "core"
61145
- },
61146
- {
61147
- kind: "schedule",
61148
- title: "Campaign check-ins",
61149
- description: "Every 10 minutes, it advances campaigns that are already in flight.",
61150
- availability: "core"
61151
- }
61152
- ],
61153
- requires: ["github"],
61154
- optionalConnections: [],
61155
- variables: ["repoFullName", "githubConnection"]
61156
- },
61157
- {
61158
- id: "intern",
61159
- template: "@auto/intern",
61160
- files: [{ subpath: "agents/intern.yaml", agentFileName: "intern" }],
61161
- displayName: "The Intern",
61162
- username: "intern",
61163
- avatarAsset: "intern.png",
61164
- category: "engineering",
61165
- oneLiner: "Handles quick questions, small fixes, and grunt work.",
61166
- description: "A low-cost generalist for small, bounded tasks that should not interrupt the senior engineering lanes. It answers questions directly, takes intern-sized fixes to a small PR, and escalates the moment a task shows real complexity instead of burning tokens on it.",
61167
- harness: "codex",
61168
- model: "z-ai/glm-5.2",
61169
- triggers: [
61170
- {
61171
- kind: "agent",
61172
- title: "Orchestrator dispatch",
61173
- description: "Any agent or human can hand it a small, bounded task; it does the work or recommends the right colleague.",
61174
- availability: "core"
61175
- },
61176
- {
61177
- kind: "github",
61178
- title: "PR ownership",
61179
- description: "For intern-sized changes it opens a small PR and handles its CI, reviews, comments, and conflicts until you merge or close it.",
61180
- availability: "core"
61181
- },
61182
- {
61183
- kind: "slack",
61184
- title: "Direct Slack tasks",
61185
- description: "Auto can connect Slack so you can mention it with a quick question or a small fix.",
61186
- availability: "optional",
61187
- connection: "slack"
61188
- }
61189
- ],
61190
- requires: ["github"],
61191
- optionalConnections: ["slack"],
61192
- variables: ["repoFullName", "githubConnection"]
61193
- },
61194
- {
61195
- id: "workforce-optimization-consultant",
61196
- template: "@auto/workforce-optimization-consultant",
61197
- files: [
61198
- {
61199
- subpath: "agents/workforce-optimization-consultant.yaml",
61200
- agentFileName: "workforce-optimization-consultant"
61201
- }
61202
- ],
61203
- displayName: "Workforce Optimization Consultant",
61204
- username: "workforce-optimization-consultant",
61205
- avatarAsset: "workforce-consultant.png",
61206
- category: "factory",
61207
- oneLiner: "Inventories the configured workforce, then scores which agents earn their seat.",
61208
- description: "A weekly advisory analyst that inventories desired and applied agent configuration before reviewing effectiveness, fallout, duration, and cost. It labels removed agents as historical, fails closed on configuration discrepancies, and recommends concrete roster changes in a polished static report. Advisory only: it never edits resources or applies anything. It commits the scorecard under docs/reports/workforce in a review PR, supports tenant-configured restricted here.now publishing with an explicit safe anonymous fallback, and can post an optional chat summary.",
61209
- harness: "codex",
61210
- model: "gpt-5.6-sol",
61211
- reasoningEffort: "xhigh",
61212
- triggers: [
61213
- {
61214
- kind: "schedule",
61215
- title: "Weekly scorecard",
61216
- description: "Every week it evaluates each agent's outcomes and cost and files a Headcount Optimization Report.",
61217
- availability: "core"
61218
- },
61219
- {
61220
- kind: "slack",
61221
- title: "Slack summary",
61222
- description: "Auto can connect Slack so it also posts a short recommendation-first executive summary.",
61223
- availability: "optional",
61224
- connection: "slack"
61225
- }
61226
- ],
61227
- requires: [],
61228
- optionalConnections: ["slack"],
61229
- variables: ["repoFullName"],
61230
- trustNotes: [
61231
- "Scheduled analysis carries recurring model and compute cost.",
61232
- "Repository writes are doctrine-scoped to the dated workforce report and its review PR; it never edits resources or merges."
61233
- ]
61234
- },
61235
- {
61236
- id: "renovator",
61237
- template: "@auto/slopbusters",
61238
- files: [
61239
- {
61240
- subpath: "agents/renovator.yaml",
61241
- agentFileName: "renovator"
61242
- }
61243
- ],
61244
- displayName: "The Renovator",
61245
- username: "renovator",
61246
- avatarAsset: "renovator.png",
61247
- category: "quality",
61248
- oneLiner: "Walks the property, writes the punch list, and schedules the crew.",
61249
- description: "The Slopbusters' front of house: turns repo-specific cleanup rulings into a sustained, reviewable renovation campaign. It hosts the team's onboarding walkthrough, records the user's rulings in idioms.md, dispatches the crew for cuts and fixes, and shepherds every cleanup PR. It never writes product code and merges only on your word.",
61250
- harness: "codex",
61251
- model: "gpt-5.6-sol",
61252
- reasoningEffort: "xhigh",
61253
- triggers: [
61254
- {
61255
- kind: "agent",
61256
- title: "Team orchestration",
61257
- description: "It dispatches the cleanup crew for cuts, sweeps, and refactors and shepherds their pull requests.",
61258
- availability: "core"
61259
- },
61260
- {
61261
- kind: "github",
61262
- title: "Cleanup PR follow-through",
61263
- description: "It tracks each cleanup PR to a merge decision and updates the campaign ledger when one lands.",
61264
- availability: "core"
61265
- },
61266
- {
61267
- kind: "schedule",
61268
- title: "Weekly episode",
61269
- description: "Each week it opens the next renovation episode and re-scores the repo against your rulings.",
61270
- availability: "core"
61271
- },
61272
- {
61273
- kind: "slack",
61274
- title: "Slack walkthroughs",
61275
- description: "Auto can connect Slack so the walkthroughs and rulings happen in a thread you can steer.",
61276
- availability: "optional",
61277
- connection: "slack"
61278
- }
61279
- ],
61280
- requires: ["github"],
61281
- optionalConnections: ["slack"],
61282
- variables: ["repoFullName", "githubConnection"],
61283
- trustNotes: [
61284
- "Contents write cannot be path-scoped; doctrine and review limit writes to idioms and campaign ledgers.",
61285
- "Can merge only after a user delegates the merge and the readiness bar passes."
61286
- ]
61287
- },
61288
- {
61289
- id: "reaper",
61290
- template: "@auto/reaper",
61291
- files: [{ subpath: "agents/reaper.yaml", agentFileName: "reaper" }],
61292
- displayName: "The Reaper",
61293
- username: "reaper",
61294
- avatarAsset: "reaper.png",
61295
- category: "quality",
61296
- oneLiner: "Finds stale pull requests, sessions, and branches before they become undead.",
61297
- description: "A cleanup specialist that sweeps for idle PRs, stuck sessions, and zombie branches and posts dated, auditable warnings first. It starts warn-only and gains destructive execution \u2014 closing PRs, stopping sessions \u2014 only through an explicit tenant opt-in, and never touches work a human touched in the last week.",
61298
- harness: "codex",
61299
- model: "x-ai/grok-4.5",
61300
- triggers: [
61301
- {
61302
- kind: "schedule",
61303
- title: "Nightly reaping sweep",
61304
- description: "Every night it censuses stale work, posts or refreshes warnings, and executes only opted-in expirations.",
61305
- availability: "core"
61306
- },
61307
- {
61308
- kind: "slack",
61309
- title: "On-demand reaping",
61310
- description: "Auto can connect Slack so you can request a sweep, grant a stay of execution, or record an opt-in.",
61311
- availability: "optional",
61312
- connection: "slack"
61313
- }
61314
- ],
61315
- requires: [],
61316
- optionalConnections: ["slack"],
61317
- variables: ["repoFullName"],
61318
- trustNotes: [
61319
- "Destructive cleanup is warn-only until a tenant explicitly opts in.",
61320
- "Stopping sessions needs a tenant-added manages list naming the agent types it may reap."
61321
- ]
61322
- },
61323
- {
61324
- id: "butcher",
61325
- template: "@auto/butcher",
61326
- files: [{ subpath: "agents/butcher.yaml", agentFileName: "butcher" }],
61327
- displayName: "The Butcher",
61328
- username: "butcher",
61329
- avatarAsset: "butcher.png",
61330
- category: "quality",
61331
- oneLiner: "Cuts dead code in small, reviewable negative diffs.",
61332
- description: "A deletion-first implementer for unused dependencies, exports, and obsolete paths. It checks git history and the team's rulings before cutting, opens one negative-diff PR per concern, proves each cut with targeted checks, and never merges its own work.",
61333
- harness: "codex",
61334
- model: "gpt-5.6-sol",
61335
- reasoningEffort: "xhigh",
61336
- triggers: [
61337
- {
61338
- kind: "schedule",
61339
- title: "Monday butchering",
61340
- description: "Each Monday it censuses provably dead code and opens small negative-diff PRs against the rulings.",
61341
- availability: "core"
61342
- },
61343
- {
61344
- kind: "github",
61345
- title: "PR ownership",
61346
- description: "It handles CI, reviews, comments, and conflicts on each cut PR; a human decides whether to merge.",
61347
- availability: "core"
61348
- },
61349
- {
61350
- kind: "slack",
61351
- title: "Targeted cuts",
61352
- description: "Auto can connect Slack so you can point it at a specific cut and steer it in-thread.",
61353
- availability: "optional",
61354
- connection: "slack"
61355
- }
61356
- ],
61357
- requires: ["github"],
61358
- optionalConnections: ["slack"],
61359
- variables: ["repoFullName", "githubConnection"]
61360
- },
61361
- {
61362
- id: "janitor",
61363
- template: "@auto/janitor",
61364
- files: [{ subpath: "agents/janitor.yaml", agentFileName: "janitor" }],
61365
- displayName: "The Janitor",
61366
- username: "janitor",
61367
- avatarAsset: "janitor.png",
61368
- category: "quality",
61369
- oneLiner: "Sweeps merged branches, dead labels, expired TODOs, and artifact bloat.",
61370
- description: "A scheduled hygiene agent that starts every project in dry-run mode, deletes only already-merged branches directly, and batches every other tidy-up into one small reviewable PR. It also proposes rulebook additions from recurring review feedback as clearly-unratified suggestions.",
61371
- harness: "codex",
61372
- model: "z-ai/glm-5.2",
61373
- triggers: [
61374
- {
61375
- kind: "schedule",
61376
- title: "Nightly sweep",
61377
- description: "Every night it censuses hygiene debt and acts within its dry-run and merged-branch-only rules.",
61378
- availability: "core"
61379
- },
61380
- {
61381
- kind: "github",
61382
- title: "Batch PR follow-through",
61383
- description: "It handles CI, reviews, and conflicts on its housekeeping batch PR; a human decides whether to merge.",
61384
- availability: "core"
61385
- },
61386
- {
61387
- kind: "slack",
61388
- title: "On-demand sweeps",
61389
- description: "Auto can connect Slack so you can request a sweep or accept its dry-run report.",
61390
- availability: "optional",
61391
- connection: "slack"
61392
- }
61393
- ],
61394
- requires: ["github"],
61395
- optionalConnections: ["slack"],
61396
- variables: ["repoFullName", "githubConnection"],
61397
- trustNotes: [
61398
- "Scheduled cleanup starts in dry-run mode and carries recurring cost.",
61399
- "Direct deletion is limited to branches whose PR already merged; everything else is a reviewable PR."
61400
- ]
61401
- },
61402
- {
61403
- id: "exorcist",
61404
- template: "@auto/exorcist",
61405
- files: [{ subpath: "agents/exorcist.yaml", agentFileName: "exorcist" }],
61406
- displayName: "The Exorcist",
61407
- username: "exorcist",
61408
- avatarAsset: "exorcist.png",
61409
- category: "quality",
61410
- oneLiner: "Hunts flaky tests and explains each quarantine or repair.",
61411
- description: "A CI reliability specialist that reads CI history for flake signatures, reproduces what it can, and either fixes the test or quarantines it with a tracking issue. It maintains a haunted-list registry and closes every case with the mechanism explained.",
61412
- harness: "codex",
61413
- model: "gpt-5.6-sol",
61414
- reasoningEffort: "xhigh",
61415
- triggers: [
61416
- {
61417
- kind: "schedule",
61418
- title: "Weekly haunted-list sweep",
61419
- description: "Each week it sweeps recent CI history for new flake signatures and opens or advances a case per spirit.",
61420
- availability: "core"
61421
- },
61422
- {
61423
- kind: "github",
61424
- title: "PR ownership",
61425
- description: "It handles CI, reviews, comments, and conflicts on each fix or quarantine PR; a human decides whether to merge.",
61426
- availability: "core"
61427
- },
61428
- {
61429
- kind: "slack",
61430
- title: "Flake reports",
61431
- description: "Auto can connect Slack so you can report a flaky test or ask about an open case.",
61432
- availability: "optional",
61433
- connection: "slack"
61434
- }
61435
- ],
61436
- requires: ["github"],
61437
- optionalConnections: ["slack"],
61438
- variables: ["repoFullName", "githubConnection"]
61439
- },
61440
- {
61441
- id: "inspector",
61442
- template: "@auto/inspector",
61443
- files: [{ subpath: "agents/inspector.yaml", agentFileName: "inspector" }],
61444
- displayName: "The Inspector",
61445
- username: "inspector",
61446
- avatarAsset: "inspector.png",
61447
- category: "quality",
61448
- oneLiner: "Builds reproductions, bisects regressions, and assembles case files.",
61449
- description: "A read-first investigator shared by the cleanup and incident teams. Hand it a failing run, a heisenbug, or a regression and it reproduces, bisects, correlates with history, and files a case file \u2014 cause, evidence, minimal repro, suggested fix \u2014 without writing the fix itself.",
61450
- harness: "codex",
61451
- model: "gpt-5.6-sol",
61452
- reasoningEffort: "xhigh",
61453
- triggers: [
61454
- {
61455
- kind: "agent",
61456
- title: "Investigation dispatch",
61457
- description: "An orchestrator or teammate hands it one mystery per session and gets back a filed case file.",
61458
- availability: "core"
61459
- },
61460
- {
61461
- kind: "slack",
61462
- title: "Direct mysteries",
61463
- description: "Auto can connect Slack so you can hand it a failing run, trace, or regression in-thread.",
61464
- availability: "optional",
61465
- connection: "slack"
61466
- }
61467
- ],
61468
- requires: [],
61469
- optionalConnections: ["slack"],
61470
- variables: ["repoFullName"]
61471
- },
61472
- {
61473
- id: "admiral",
61474
- template: "@auto/war-room",
61475
- files: [
61476
- {
61477
- subpath: "agents/admiral.yaml",
61478
- agentFileName: "admiral"
61479
- }
61480
- ],
61481
- displayName: "The Admiral",
61482
- username: "admiral",
61483
- avatarAsset: "admiral.png",
61484
- category: "operations",
61485
- oneLiner: "Owns the threat board, dispatches the fleet, and briefs you.",
61486
- description: "The War Room's front of house: proves the response loop on a labeled synthetic drill, then keeps every real threat on a board with an owner, a status, and a follow-up. It dispatches the crew at causes, briefs you in summaries, never writes product code, and merges only on your word. Slack is strongly recommended as its command bridge, but optional.",
61487
- harness: "codex",
61488
- model: "gpt-5.6-sol",
61489
- reasoningEffort: "xhigh",
61490
- triggers: [
61491
- {
61492
- kind: "agent",
61493
- title: "Fleet orchestration",
61494
- description: "It dispatches the watch, the strike team, and the reviewers, and shepherds their pull requests.",
61495
- availability: "core"
61496
- },
61497
- {
61498
- kind: "github",
61499
- title: "Engagement PR follow-through",
61500
- description: "It tracks each engagement PR to a merge decision and updates the board when one lands.",
61501
- availability: "core"
61502
- },
61503
- {
61504
- kind: "schedule",
61505
- title: "Fleet-status sweep",
61506
- description: "On a frequent heartbeat it polls the stations, reconciles the board, and nudges stalled engagements.",
61507
- availability: "core"
61508
- },
61509
- {
61510
- kind: "slack",
61511
- title: "Command bridge",
61512
- description: "Strongly recommended: connect Slack so you can mention the Admiral and steer engagements in-thread.",
61513
- availability: "optional",
61514
- connection: "slack"
61515
- }
61516
- ],
61517
- requires: ["github"],
61518
- optionalConnections: ["slack"],
61519
- variables: ["repoFullName", "githubConnection"],
61520
- trustNotes: [
61521
- "Drills are synthetic and labeled; the agent never creates incidents in external providers.",
61522
- "Can merge only after a user delegates the merge and the readiness bar passes."
61523
- ]
61524
- },
61525
- {
61526
- id: "watchdog",
61527
- template: "@auto/watchdog",
61528
- files: [{ subpath: "agents/watchdog.yaml", agentFileName: "watchdog" }],
61529
- displayName: "The Watchdog",
61530
- username: "watchdog",
61531
- avatarAsset: "watchdog.png",
61532
- category: "operations",
61533
- oneLiner: "Checks connected signals on a standing heartbeat and barks early.",
61534
- description: "A scheduled signal watcher for crew heartbeats, GitHub-side indicators, and webhook-fed alerts. Setup provisions its authenticated signal intake before the agent applies; it checks every 15 minutes, records thresholds in a durable kennel log, barks early, and escalates real crossings to the War Room.",
61535
- harness: "codex",
61536
- model: "x-ai/grok-4.5",
61537
- triggers: [
61538
- {
61539
- kind: "webhook",
61540
- title: "Authenticated signal intake",
61541
- description: "Setup provisions its bearer-auth webhook before apply; incoming JSON signals wake the Watchdog.",
61542
- availability: "core"
61543
- },
61544
- {
61545
- kind: "schedule",
61546
- title: "15-minute signal check",
61547
- description: "On a standing heartbeat it checks GitHub indicators, crew heartbeats, and the kennel log thresholds.",
61548
- availability: "core"
61549
- },
61550
- {
61551
- kind: "slack",
61552
- title: "Direct signal steering",
61553
- description: "Auto can connect Slack so you can add a watched signal, adjust a threshold, or ask for current readings.",
61554
- availability: "optional",
61555
- connection: "slack"
61556
- }
61557
- ],
61558
- requires: [],
61559
- optionalConnections: ["slack"],
61560
- variables: ["repoFullName"],
61561
- trustNotes: [
61562
- "Its bearer-auth signal webhook is provisioned by setup before the agent applies; the platform-generated secret is protected and write-only, and real-provider wiring requires rotation to a user-owned value.",
61563
- "Signal intake is webhook-fed; there are no first-class observability provider connections yet."
61564
- ]
61565
- },
61566
- {
61567
- id: "bouncer",
61568
- template: "@auto/bouncer",
61569
- files: [{ subpath: "agents/bouncer.yaml", agentFileName: "bouncer" }],
61570
- displayName: "The Bouncer",
61571
- username: "bouncer",
61572
- avatarAsset: "bouncer.png",
61573
- category: "quality",
61574
- oneLiner: "Applies a dedicated security lens to every pull request.",
61575
- description: "A review gate focused on leaked secrets, injection surfaces, disappearing authorization checks, dangerous dependencies, and permission escalations. It reports a dedicated security check next to the review check: quiet when clean, specific when not. Persuasion plus check status only \u2014 humans decide whether the check blocks.",
61576
- harness: "codex",
61577
- model: "gpt-5.6-sol",
61578
- reasoningEffort: "xhigh",
61579
- triggers: [
61580
- {
61581
- kind: "github",
61582
- title: "Security review",
61583
- description: "It reviews every pull request when it opens, reopens, or receives a new push, and reports a security check.",
61584
- availability: "core"
61585
- },
61586
- {
61587
- kind: "slack",
61588
- title: "Targeted sweeps",
61589
- description: "Auto can connect Slack so you can point it at a PR for a targeted security sweep.",
61590
- availability: "optional",
61591
- connection: "slack"
61592
- }
61593
- ],
61594
- requires: ["github"],
61595
- optionalConnections: ["slack"],
61596
- variables: ["repoFullName", "githubConnection"]
61597
- },
61598
- {
61599
- id: "pentester",
61600
- template: "@auto/pentester",
61601
- files: [{ subpath: "agents/pentester.yaml", agentFileName: "pentester" }],
61602
- displayName: "The Pentester",
61603
- username: "pentester",
61604
- avatarAsset: "pentester.png",
61605
- category: "operations",
61606
- oneLiner: "Runs read-only red-team campaigns and files evidence-backed findings.",
61607
- description: "A read-only offensive-security reviewer for your own repository: it maps the attack surface from source and reviews authorization, injection, secrets exposure, dangerous dependencies, and permission escalations, then files severity-ranked findings to an issues ledger and a dated review-report PR. It redacts secrets, never fixes code, never gates PRs, and never merges. No live exploitation, scanning, dynamic testing, or third-party targets \u2014 it claims no tooling the platform does not provide.",
61608
- harness: "codex",
61609
- model: "gpt-5.6-sol",
61610
- reasoningEffort: "xhigh",
61611
- triggers: [
61612
- {
61613
- kind: "agent",
61614
- title: "Red-team dispatch",
61615
- description: "The Admiral or another orchestrator can dispatch a scoped read-only campaign and receive the findings.",
61616
- availability: "core"
61617
- },
61618
- {
61619
- kind: "schedule",
61620
- title: "Weekly red-team audit",
61621
- description: "Every week it re-runs a read-only campaign, delta-audits the ledger against prior findings, and files what changed.",
61622
- availability: "core"
61623
- },
61624
- {
61625
- kind: "slack",
61626
- title: "Targeted campaign requests",
61627
- description: "Auto can connect Slack so you can point it at a scope or ask about the findings ledger.",
61628
- availability: "optional",
61629
- connection: "slack"
61630
- }
61631
- ],
61632
- requires: [],
61633
- optionalConnections: ["slack"],
61634
- variables: ["repoFullName"],
61635
- trustNotes: [
61636
- "Read-only, source-level security review only \u2014 no live exploitation, scanning, dynamic testing, or third-party targets.",
61637
- "contents:write cannot be path-scoped; doctrine and review limit repository writes to the security report under docs/reports/security/ and its review PR.",
61638
- "Secrets and tenant-sensitive evidence are redacted; findings cite file and line, never the value."
61639
- ]
61640
- },
61641
- {
61642
- id: "coroner",
61643
- template: "@auto/coroner",
61644
- files: [{ subpath: "agents/coroner.yaml", agentFileName: "coroner" }],
61645
- displayName: "The Coroner",
61646
- username: "coroner",
61647
- avatarAsset: "coroner.png",
61648
- category: "operations",
61649
- oneLiner: "Writes blameless postmortems with owned follow-up actions.",
61650
- description: "A post-incident analyst that reconstructs the incident timeline from evidence, writes the blameless postmortem, files action items as tracked issues with owners, and follows up on prior postmortems' action items \u2014 the part humans never do. It never writes 'human error' as a root cause.",
61651
- harness: "codex",
61652
- model: "gpt-5.6-sol",
61653
- reasoningEffort: "xhigh",
61654
- triggers: [
61655
- {
61656
- kind: "github",
61657
- title: "Incident closeout",
61658
- description: "Label a resolved incident issue and it opens the case, files the postmortem, and tracks the action items.",
61659
- availability: "core"
61660
- },
61661
- {
61662
- kind: "slack",
61663
- title: "Postmortem requests",
61664
- description: "Auto can connect Slack so you can name a closed incident or ask about action-item status.",
61665
- availability: "optional",
61666
- connection: "slack"
61667
- }
61668
- ],
61669
- requires: ["github"],
61670
- optionalConnections: ["slack"],
61671
- variables: ["repoFullName", "githubConnection"]
61672
- },
61673
- {
61674
- id: "patron",
61675
- template: "@auto/blank-canvas",
61676
- files: [
61677
- {
61678
- subpath: "agents/patron.yaml",
61679
- agentFileName: "patron"
61680
- }
61681
- ],
61682
- displayName: "The Patron",
61683
- username: "patron",
61684
- avatarAsset: "patron.png",
61685
- category: "factory",
61686
- oneLiner: "Takes your commission, staffs the workshop, and drives it to a first outcome.",
61687
- description: "The Blank Canvas front of house: translates a plain-language automation brief into the smallest useful team, hiring from the catalog and authoring the custom agents the idea needs. Every hire arrives as a reviewable setup PR \u2014 it never applies resources directly \u2014 and it merges only on your word.",
61688
- harness: "codex",
61689
- model: "gpt-5.6-sol",
61690
- reasoningEffort: "xhigh",
61691
- triggers: [
61692
- {
61693
- kind: "agent",
61694
- title: "Workshop orchestration",
61695
- description: "It staffs and dispatches the apprentices your commission needs and shepherds their pull requests.",
61696
- availability: "core"
61697
- },
61698
- {
61699
- kind: "github",
61700
- title: "Setup and commission PRs",
61701
- description: "It opens setup PRs for every hire and tracks each commission PR to a merge decision.",
61702
- availability: "core"
61703
- },
61704
- {
61705
- kind: "schedule",
61706
- title: "Studio heartbeat",
61707
- description: "A gentle heartbeat keeps commissions moving, nudges stalled apprentices, and respawns dead ones.",
61708
- availability: "core"
61709
- },
61710
- {
61711
- kind: "slack",
61712
- title: "The studio in Slack",
61713
- description: "Auto can connect Slack so commissions and taste calls happen in a thread you can steer.",
61714
- availability: "optional",
61715
- connection: "slack"
61716
- }
61717
- ],
61718
- requires: ["github"],
61719
- optionalConnections: ["slack"],
61720
- variables: ["repoFullName", "githubConnection", "commission"],
61721
- trustNotes: [
61722
- "Authors agent resources, but every hire arrives as a setup PR the user must merge.",
61723
- "Can merge only after a user delegates the merge and the readiness bar passes."
61724
- ]
61725
- }
61726
- ];
61727
- ROSTER_CATALOG_MANIFEST = ROSTER_CATALOG_ENTRIES.map((entry) => ({
61728
- ...entry,
61729
- availability: entry.availability ?? "available",
61730
- capabilitySummary: capabilitySummary(entry),
61731
- reasoningEffort: catalogReasoningEffort(entry),
61732
- trustNotes: entry.trustNotes ?? [],
61733
- webhookIntakes: webhookIntakes(entry)
61734
- }));
61735
- ROSTER_CATALOG = ROSTER_CATALOG_MANIFEST.filter((agent) => agent.availability === "available");
61736
- SELF_IMPROVEMENT = {
61737
- id: "self-improvement",
61738
- roleLine: "Examines recent sessions and feedback from you and suggests changes to improve the fleet."
61739
- };
61740
- TEAM_TEMPLATES = [
61741
- {
61742
- id: "accelerator",
61743
- name: "The Accelerator",
61744
- template: "@auto/agent-fleet",
61745
- tagline: "You set the goal. It shepherds every PR through review\u2014and gets better over time.",
61746
- pitch: "Hand this team a goal and step out of the operational loop. It breaks down the work, dispatches the right agents, opens the PRs, shepherds every change through CI and review, responds to feedback, resolves conflicts, and keeps the whole queue moving until a decision genuinely needs you. Along the way, it reviews its own performance and proposes improvements so your software factory gets faster, sharper, and more efficient over time.",
61747
- backdrop: "accelerator.mp4",
61748
- frontOfHouse: "chief-of-staff",
61749
- frontOfHouseOnboardingSubpath: "agents/chief-of-staff-onboarding.yaml",
61750
- members: [
61751
- {
61752
- id: "chief-of-staff",
61753
- roleLine: "Front of house. Turns a task list into owned, review-ready pull requests."
61754
- },
61755
- {
61756
- id: "staff-engineer",
61757
- roleLine: "Owns each task end to end through CI and review."
61758
- },
61759
- {
61760
- id: "senior-engineer",
61761
- roleLine: "Handles complex scoped implementation work."
61762
- },
61763
- {
61764
- id: "junior-engineer",
61765
- roleLine: "Takes mechanical and batch coding work."
61766
- },
61767
- {
61768
- id: "designer",
61769
- roleLine: "Iterates on live UI and graduates it to a production PR."
61770
- },
61771
- {
61772
- id: "pr-review",
61773
- roleLine: "Reviews every pull request against the current head."
61774
- },
61775
- {
61776
- id: "intern",
61777
- roleLine: "Handles quick questions, small fixes, and grunt work."
61778
- },
61779
- {
61780
- id: "ship-digest",
61781
- roleLine: "Summarizes what shipped and what needs attention."
61782
- },
61783
- {
61784
- id: "workforce-optimization-consultant",
61785
- roleLine: "Produces weekly evidence-based team scorecards."
61786
- },
61787
- SELF_IMPROVEMENT
61788
- ],
61789
- availability: "available",
61790
- legacyKits: [
61791
- {
61792
- id: "startup",
61793
- name: "Startup Kit",
61794
- agents: [
61795
- "chief-of-staff",
61796
- "senior-engineer",
61797
- "junior-engineer",
61798
- "pr-review",
61799
- "issue-triage",
61800
- "ship-digest",
61801
- "chatterbox"
61802
- ]
61803
- },
61804
- {
61805
- id: "engineering",
61806
- name: "Engineering Kit",
61807
- agents: [
61808
- "senior-engineer",
61809
- "junior-engineer",
61810
- "designer",
61811
- "introspector"
61812
- ]
61813
- },
61814
- {
61815
- id: "growth",
61816
- name: "Growth Kit",
61817
- agents: ["lead-researcher", "research-coordinator", "ship-digest"]
61818
- }
61819
- ]
61820
- },
61821
- {
61822
- id: "slopbusters",
61823
- name: "The Slopbusters",
61824
- template: "@auto/slopbusters",
61825
- tagline: "Continuously simplifies and documents your codebase as it changes.",
61826
- pitch: "The Slopbusters are a standing maintenance crew, not a cleanup command. They regularly inspect the codebase for dead code, flaky tests, stale branches, expired TODOs, risky patterns, structural clutter, and missing context. They investigate unusual behavior before touching it, turn what they find into small, reviewable PRs, and shepherd each change through CI and review. As the code evolves, they keep simplifying tangled areas and documenting confusing behavior and architectural decisions, so knowledge does not disappear into people's heads or old threads. The result is a codebase that stays smaller, clearer, and easier for both people and agents to understand, change, and trust.",
61827
- backdrop: "slopbusters.mp4",
61828
- frontOfHouse: "renovator",
61829
- frontOfHouseOnboardingSubpath: "agents/renovator-onboarding.yaml",
61830
- members: [
61831
- {
61832
- id: "renovator",
61833
- roleLine: "Front of house. Walks the property, writes the punch list, and schedules the crew."
61834
- },
61835
- {
61836
- id: "reaper",
61837
- roleLine: "Warns on stale pull requests, stuck sessions, and zombie branches before cleanup."
61838
- },
61839
- {
61840
- id: "butcher",
61841
- roleLine: "Removes dead code in small, reviewable negative diffs."
61842
- },
61843
- {
61844
- id: "janitor",
61845
- roleLine: "Sweeps merged branches, dead labels, expired TODOs, and artifact bloat."
61846
- },
61847
- {
61848
- id: "exorcist",
61849
- roleLine: "Hunts flaky tests and explains each quarantine or repair."
61850
- },
61851
- {
61852
- id: "inspector",
61853
- roleLine: "Root-causes unusual behavior before anyone changes it."
61854
- },
61855
- {
61856
- id: "senior-engineer",
61857
- roleLine: "Executes the report's structural refactors."
61858
- },
61859
- {
61860
- id: "junior-engineer",
61861
- roleLine: "Handles mechanical deletions and renames."
61862
- },
61863
- {
61864
- id: "pr-review",
61865
- roleLine: "Checks every cleanup so the cure is not worse than the disease."
61866
- },
61867
- SELF_IMPROVEMENT
61868
- ],
61869
- availability: "available",
61870
- legacyKits: [
61871
- {
61872
- id: "code-quality",
61873
- name: "Code Quality Kit",
61874
- agents: ["pr-review", "handoff", "self-improvement"]
61875
- }
61876
- ]
61877
- },
61878
- {
61879
- id: "war-room",
61880
- name: "The War Room",
61881
- template: "@auto/war-room",
61882
- tagline: "Triages incidents, investigates causes, and drives fixes through resolution.",
61883
- pitch: "This team triages alerts, investigates causes, dispatches fixes, and follows every incident through resolution.",
61884
- backdrop: "war-room.mp4",
61885
- frontOfHouse: "admiral",
61886
- frontOfHouseOnboardingSubpath: "agents/admiral-onboarding.yaml",
61887
- members: [
61888
- {
61889
- id: "admiral",
61890
- roleLine: "Front of house. Owns the threat board, dispatches the fleet, and briefs you."
61891
- },
61892
- {
61893
- id: "incident-response",
61894
- roleLine: "Correlates incidents with evidence and recent changes."
61895
- },
61896
- {
61897
- id: "watchdog",
61898
- roleLine: "Checks connected signals on a standing heartbeat."
61899
- },
61900
- {
61901
- id: "issue-triage",
61902
- roleLine: "Classifies and routes every inbound report."
61903
- },
61904
- {
61905
- id: "inspector",
61906
- roleLine: "Builds the reproduction, bisect, and case file."
61907
- },
61908
- {
61909
- id: "staff-engineer",
61910
- roleLine: "Implements scoped fixes and owns their pull requests."
61911
- },
61912
- {
61913
- id: "bouncer",
61914
- roleLine: "Applies a dedicated security lens to every pull request."
61915
- },
61916
- {
61917
- id: "pentester",
61918
- roleLine: "Runs read-only red-team campaigns and records findings."
61919
- },
61920
- {
61921
- id: "coroner",
61922
- roleLine: "Writes blameless postmortems with owned follow-up actions."
61923
- },
61924
- SELF_IMPROVEMENT
61925
- ],
61926
- availability: "available",
61927
- legacyKits: [
61928
- {
61929
- id: "ops",
61930
- name: "Ops / On-Call Kit",
61931
- agents: ["incident-response", "issue-triage", "ship-digest"]
61932
- }
61933
- ]
61934
- },
61935
- {
61936
- id: "blank-canvas",
61937
- name: "The Blank Canvas",
61938
- template: "@auto/blank-canvas",
61939
- tagline: "Builds any automation from a plain-language idea.",
61940
- pitch: "Describe what you want to happen, when it should run, and which tools it can use. The Patron will help you shape the workflow, build the agents and triggers behind it, and open a setup PR for your approval.",
61941
- backdrop: "blank-canvas.mp4",
61942
- frontOfHouse: "patron",
61943
- frontOfHouseOnboardingSubpath: "agents/patron-onboarding.yaml",
61944
- members: [
61945
- {
61946
- id: "patron",
61947
- roleLine: "Front of house. Takes the commission, staffs the workshop, and authors every hire through a reviewable PR."
61948
- }
61949
- ],
61950
- availability: "available",
61951
- legacyKits: [{ id: "custom", name: "Custom", agents: [] }]
61952
- }
61953
- ];
61954
- ROSTER_KITS = TEAM_TEMPLATES.flatMap(
61955
- (team) => team.legacyKits
61956
- );
61957
60437
  }
61958
60438
  });
61959
60439
 
@@ -65130,7 +63610,7 @@ var init_package = __esm({
65130
63610
  "package.json"() {
65131
63611
  package_default = {
65132
63612
  name: "@autohq/cli",
65133
- version: "0.1.498",
63613
+ version: "0.1.500",
65134
63614
  license: "SEE LICENSE IN README.md",
65135
63615
  publishConfig: {
65136
63616
  access: "public"