@autohq/cli 0.1.496 → 0.1.498

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.
@@ -30866,7 +30866,7 @@ Object.assign(lookup, {
30866
30866
  // package.json
30867
30867
  var package_default = {
30868
30868
  name: "@autohq/cli",
30869
- version: "0.1.496",
30869
+ version: "0.1.498",
30870
30870
  license: "SEE LICENSE IN README.md",
30871
30871
  publishConfig: {
30872
30872
  access: "public"
@@ -38404,6 +38404,17 @@ var SessionSpendCapRuntimeStatusSchema = external_exports.object({
38404
38404
  park: SessionParkRecordSchema.nullable(),
38405
38405
  organizationCreditsExhausted: external_exports.boolean()
38406
38406
  });
38407
+ var SessionSpendCapBatchRequestSchema = external_exports.object({
38408
+ sessionIds: external_exports.array(SessionIdSchema2).max(50)
38409
+ });
38410
+ var SessionSpendCapBatchResponseSchema = external_exports.object({
38411
+ statuses: external_exports.array(
38412
+ external_exports.object({
38413
+ sessionId: SessionIdSchema2,
38414
+ status: SessionSpendCapRuntimeStatusSchema
38415
+ })
38416
+ )
38417
+ });
38407
38418
  var AgentSpendCapRuntimeStatusSchema = external_exports.object({
38408
38419
  status: AgentSpendCapStatusSchema,
38409
38420
  override: SpendCapOverrideStateSchema,
@@ -54256,6 +54267,47 @@ triggers:
54256
54267
  content: "# Source: https://www.auto.sh/api/v1/templates/%40auto/issue-triage/1.6.0/fragments/environments/agent-runtime.yaml\nharness: claude-code\nenvironment:\n name: agent-runtime\n image:\n kind: preset\n name: node24\n resources:\n memoryMB: 8192\n"
54257
54268
  }
54258
54269
  ]
54270
+ },
54271
+ {
54272
+ version: "1.7.0",
54273
+ files: [
54274
+ {
54275
+ path: "agents/issue-coder-linear-slack.yaml",
54276
+ content: "# Source: https://www.auto.sh/api/v1/templates/%40auto/issue-triage/1.7.0/agents/issue-coder-linear-slack.yaml\nimports:\n - ./issue-coder-linear.yaml\ntools:\n slack:\n kind: local\n implementation: chat\n auth:\n kind: connections\n optional: true\n connections:\n - provider: slack\n connection: slack\ntriggers:\n - name: mention\n event: chat.message.mentioned\n connection: slack\n optional: true\n where:\n $.chat.provider: slack\n $.auto.authored: false\n message: |\n {{message.author.userName}} mentioned you on Slack:\n\n {{message.text}}\n\n Channel: {{chat.channelId}}\n Thread: {{chat.threadId}}\n\n Reply in that attributed thread with chat.send. If this is a clear\n implementation handoff and Linear is available, handle it. If Linear is\n unavailable, do not guess issue details: explain how to run\n `auto connect linear --allow <project>` and that a fresh apply and session\n may be required. Otherwise ask for the issue, scope, and acceptance\n criteria.\n routing:\n kind: deliver\n onUnmatched: spawn\n"
54277
+ },
54278
+ {
54279
+ path: "agents/issue-coder-linear.yaml",
54280
+ content: '# Source: https://www.auto.sh/api/v1/templates/%40auto/issue-triage/1.7.0/agents/issue-coder-linear.yaml\n# Required variables: repoFullName\nname: issue-coder\nmodel:\n provider: anthropic\n id: claude-opus-4-8\nidentity:\n displayName: Issue Coder\n username: issue-coder\n avatar:\n asset: .auto/assets/patch.png\n sha256: 56c69edfd17415184b852c94a808ea6fd8afebc885deb1f1963ddf6420baa70f\n description: Implements triaged issues, opens PRs, and reports back on the source issue.\nimports:\n - ../fragments/environments/agent-runtime.yaml\nsystemPrompt: |\n You are the implementation agent for {{ $repoFullName }}.\n\n Treat each run as fresh, scoped implementation work. Read the repo\'s\n contribution docs before editing. Keep the change scoped to the requested\n task; no broad refactors unless required for the fix.\n\n Work from the mounted checkout on main. Create a feature branch named\n from the issue identifier plus a short slug, for example\n `auto/wid-123-fix-pagination`.\n\n Prefer test-first for clear behavior changes: add a focused failing test,\n implement the smallest fix, make it pass. Run the relevant test and\n typecheck commands before opening a PR; document anything you had to skip\n and why.\n\n Commit with a concise message referencing the issue identifier, push the\n branch, and open a pull request against main with the create_pull_request\n tool. The PR body must include a Review Map section pointing reviewers at\n the riskiest files first.\n\n For UI evidence in a private repository, use only an immutable authenticated\n GitHub blob-page URL pinned to the full evidence commit SHA:\n `https://github.com/<owner>/<repo>/blob/<commit-sha>/<path>?raw=1`. Never use\n `raw.githubusercontent.com` or a mutable branch/tag URL. After updating the\n PR body or comment, inspect the rendered GitHub description as a\n repository-authorized viewer and verify every evidence link and image\n resolves; do not claim the evidence is complete until that preflight passes.\n\n When posting GitHub comments or PRs, append this hidden attribution\n marker with the environment variables expanded:\n\n <!-- auto:v=1 session_id=$AUTO_SESSION_ID agent=$AUTO_AGENT_NAME -->\n\n Comment back on the Linear issue (chat.send, target provider `linear`)\n with the PR link, the tests you ran, and residual risks.\n\n Linear intake is optional connection-backed behavior. If the Linear tool or\n source issue context is unavailable in a direct invocation, stop. Do not\n invent or fabricate Linear issue data. Missing OAuth is not an implementation\n failure. Tell the user to authorize Linear for the project\n with `auto connect linear --allow <project>`. A fresh apply and session may\n be required before the connection is available to the agent.\n\n If requirements are blocked or tests cannot run, stop and explain the\n blocker instead of inventing a solution.\ninitialPrompt: |\n Implement the issue described in the spawn message. Follow your profile\n instructions: scoped change, focused tests, a PR against main with a\n Review Map, and a closing comment on the Linear issue.\nmounts:\n - kind: git\n repository: "{{ $repoFullName }}"\n mountPath: /workspace/repo\n ref: main\n auth:\n kind: githubApp\n capabilities:\n contents: write\n pullRequests: write\n issues: write\n checks: read\n actions: read\n workflows: write\nworkingDirectory: /workspace/repo\ntools:\n auto:\n kind: local\n implementation: auto\n chat:\n kind: local\n implementation: chat\n auth:\n kind: connections\n optional: true\n connections:\n - provider: linear\n connection: linear\n github:\n kind: github\n tools:\n - pull_request_read\n - create_pull_request\n - add_issue_comment\n'
54281
+ },
54282
+ {
54283
+ path: "agents/issue-coder-slack.yaml",
54284
+ content: '# Source: https://www.auto.sh/api/v1/templates/%40auto/issue-triage/1.7.0/agents/issue-coder-slack.yaml\n# Required variables: slackConnection\n# Deprecated compatibility entrypoint. New installs should import\n# agents/issue-coder.yaml, whose Slack mention entrypoint uses the standard\n# `slack` connection. This subpath preserves the parameterized, Slack-required\n# behavior of earlier `-slack` versions for existing @latest facades through\n# at least the next minor version.\nimports:\n - ./issue-coder.yaml\ntools:\n chat:\n kind: local\n implementation: chat\n auth:\n kind: connections\n optional: false\n connections:\n - provider: slack\n connection: "{{ $slackConnection }}"\ntriggers:\n - name: mention\n event: chat.message.mentioned\n connection: "{{ $slackConnection }}"\n optional: false\n where:\n $.chat.provider: slack\n $.auto.authored: false\n message: |\n {{message.author.userName}} mentioned you on Slack:\n\n {{message.text}}\n\n Channel: {{chat.channelId}}\n Thread: {{chat.threadId}}\n\n Reply in that thread with chat.send. If this is a clear triage handoff,\n handle it. If required context is missing, ask for the issue, scope, and\n acceptance criteria. Otherwise, briefly explain that you implement\n triaged GitHub issues, open PRs, and report back on the source issue.\n routing:\n kind: spawn\n'
54285
+ },
54286
+ {
54287
+ path: "agents/issue-coder.yaml",
54288
+ content: '# Source: https://www.auto.sh/api/v1/templates/%40auto/issue-triage/1.7.0/agents/issue-coder.yaml\n# Required variables: repoFullName\nname: issue-coder\nmodel:\n provider: anthropic\n id: claude-opus-4-8\nidentity:\n displayName: Issue Coder\n username: issue-coder\n avatar:\n asset: .auto/assets/patch.png\n sha256: 56c69edfd17415184b852c94a808ea6fd8afebc885deb1f1963ddf6420baa70f\n description: Implements triaged issues, opens PRs, and reports back on the source issue.\nimports:\n - ../fragments/environments/agent-runtime.yaml\nsystemPrompt: |\n You are the implementation agent for {{ $repoFullName }}.\n\n Treat each run as fresh, scoped implementation work. Read the repo\'s\n contribution docs before editing. Keep the change scoped to the requested\n task; no broad refactors unless required for the fix.\n\n Work from the mounted checkout on main. Create a feature branch named\n from the issue number plus a short slug, for example\n `auto/issue-123-fix-pagination`.\n\n Prefer test-first for clear behavior changes: add a focused failing test,\n implement the smallest fix, make it pass. Run the relevant test and\n typecheck commands before opening a PR; document anything you had to skip\n and why.\n\n Commit with a concise message referencing the issue number, push the\n branch, and open a pull request against main with the create_pull_request\n tool. The PR body must include a Review Map section pointing reviewers at\n the riskiest files first.\n\n For UI evidence in a private repository, use only an immutable authenticated\n GitHub blob-page URL pinned to the full evidence commit SHA:\n `https://github.com/<owner>/<repo>/blob/<commit-sha>/<path>?raw=1`. Never use\n `raw.githubusercontent.com` or a mutable branch/tag URL. After updating the\n PR body or comment, inspect the rendered GitHub description as a\n repository-authorized viewer and verify every evidence link and image\n resolves; do not claim the evidence is complete until that preflight passes.\n\n When posting GitHub comments or PRs, append this hidden attribution\n marker with the environment variables expanded:\n\n <!-- auto:v=1 session_id=$AUTO_SESSION_ID agent=$AUTO_AGENT_NAME -->\n\n Comment back on the GitHub issue (add_issue_comment) with the PR link, the\n tests you ran, and residual risks.\n\n If requirements are blocked or tests cannot run, stop and explain the\n blocker instead of inventing a solution.\ninitialPrompt: |\n Implement the issue described in the spawn message. Follow your profile\n instructions: scoped change, focused tests, a PR against main with a\n Review Map, and a closing comment on the GitHub issue.\nmounts:\n - kind: git\n repository: "{{ $repoFullName }}"\n mountPath: /workspace/repo\n ref: main\n auth:\n kind: githubApp\n capabilities:\n contents: write\n pullRequests: write\n issues: write\n checks: read\n actions: read\n workflows: write\nworkingDirectory: /workspace/repo\ntools:\n auto:\n kind: local\n implementation: auto\n github:\n kind: github\n tools:\n - pull_request_read\n - create_pull_request\n - issue_read\n - add_issue_comment\n chat:\n kind: local\n implementation: chat\n auth:\n kind: connections\n optional: true\n connections:\n - provider: slack\n connection: slack\ntriggers:\n - name: mention\n event: chat.message.mentioned\n connection: slack\n optional: true\n where:\n $.chat.provider: slack\n $.auto.authored: false\n message: |\n {{message.author.userName}} mentioned you on Slack:\n\n {{message.text}}\n\n Channel: {{chat.channelId}}\n Thread: {{chat.threadId}}\n\n Reply in that thread with chat.send. If this is a clear triage handoff,\n handle it. If required context is missing, ask for the issue, scope, and\n acceptance criteria. Otherwise, briefly explain that you implement\n triaged GitHub issues, open PRs, and report back on the source issue.\n routing:\n kind: spawn\n'
54289
+ },
54290
+ {
54291
+ path: "agents/issue-triage-linear-slack.yaml",
54292
+ content: "# Source: https://www.auto.sh/api/v1/templates/%40auto/issue-triage/1.7.0/agents/issue-triage-linear-slack.yaml\n# Required variables: repoFullName\nimports:\n - ./issue-triage-linear.yaml\nsystemPrompt: |\n You are the issue triage agent for {{ $repoFullName }}. Work from Linear as the\n source of truth, using chat.issue.get, chat.issue.update, chat.history,\n and chat.send with target provider `linear`.\n\n Linear intake is optional connection-backed behavior. If the Linear tool or\n issue context is unavailable in a direct or Slack invocation, stop. Do not\n invent or fabricate Linear issue data. Missing OAuth is not an implementation\n failure. Tell the user to authorize Linear for the project\n with `auto connect linear --allow <project>`. A fresh apply and session may\n be required before the connection is available to the agent.\n\n The `auto-triage` label is a one-shot request token, not a standing\n subscription. Remove it once you have acted on the request.\n\n Triage responsibilities:\n - Identify duplicates; close or link them only when the match is clear,\n preserving important detail on the parent issue.\n - Rank priority from impact, urgency, user signal, and blocked work.\n Explain non-obvious priority changes in a Linear comment.\n - Categorize with the most specific existing labels, project, and team\n metadata you can justify. Never create Linear labels, statuses,\n projects, teams, or users \u2014 if the expected metadata does not exist,\n note that in a comment and continue without it.\n - Split broad reports into targeted child issues when one issue mixes\n unrelated tracks; keep the parent as context.\n - Ask for missing reproduction steps, desired behavior, or acceptance\n criteria in a Linear comment. Do not invent requirements.\n\n When an issue is clear enough to implement:\n - Comment on the issue with concise handoff context for the coder.\n - Update the issue state to an existing in-progress state if one fits.\n - Remove the `auto-triage` label.\n - Call auto.sessions.spawn with agent `issue-coder` and a message carrying\n the issue identifier, title, URL, triage summary, acceptance criteria,\n and constraints. Tell the coder to open a PR against main with a Review\n Map section and to comment back on the Linear issue with the PR link,\n tests run, and residual risks.\n - When Slack is available as a chat.send target, also post a brief note in\n Slack #dev: a top-level message with only the issue link and a\n one-sentence reason it is ready, details threaded. Slack renders mrkdwn\n links: <https://url|text>.\n\n Slack reporting and mention intake are optional zero-configuration wiring\n using the standard `slack` connection name and `#dev` channel. When Slack\n is unavailable, skip Slack steps and do not treat that as a failure \u2014 Linear\n comments remain the complete triage record. If a user asks for Slack while\n it is unavailable, offer to connect the standard `slack` connection and\n explain that a fresh apply and session make the capability available.\n\n Keep changes small and reversible. Prefer comments that explain what you\n did over silent metadata churn.\ntools:\n slack:\n kind: local\n implementation: chat\n auth:\n kind: connections\n optional: true\n connections:\n - provider: slack\n connection: slack\ntriggers:\n - name: mention\n event: chat.message.mentioned\n connection: slack\n optional: true\n where:\n $.chat.provider: slack\n $.auto.authored: false\n message: |\n {{message.author.userName}} mentioned you on Slack:\n\n {{message.text}}\n\n Channel: {{chat.channelId}}\n Thread: {{chat.threadId}}\n\n Reply in that attributed thread with chat.send. If the user clearly\n links or asks about a Linear issue and Linear is available, triage it.\n If Linear is unavailable, do not guess issue details: explain how to run\n `auto connect linear --allow <project>` and that a fresh apply and session\n may be required. Otherwise ask for the issue link or missing context.\n routing:\n kind: deliver\n onUnmatched: spawn\n"
54293
+ },
54294
+ {
54295
+ path: "agents/issue-triage-linear.yaml",
54296
+ content: "# Source: https://www.auto.sh/api/v1/templates/%40auto/issue-triage/1.7.0/agents/issue-triage-linear.yaml\n# Required variables: repoFullName\nname: issue-triage\nmodel:\n provider: anthropic\n id: claude-opus-4-8\nidentity:\n displayName: Issue Triage\n username: issue-triage\n avatar:\n asset: .auto/assets/triage.png\n sha256: d52ca728efaa37a7d72996f63100f6f24c0fb1a3732752e868adc0cb44be9535\n description: Triages labeled issues - sets metadata, posts handoff context, queues coder-ready work, and optionally notes it in Slack.\nimports:\n - ../fragments/environments/agent-runtime.yaml\nsystemPrompt: |\n You are the issue triage agent for {{ $repoFullName }}. Work from Linear as the\n source of truth, using chat.issue.get, chat.issue.update, chat.history,\n and chat.send with target provider `linear`.\n\n Linear intake is optional connection-backed behavior. If the Linear tool or\n issue context is unavailable in a direct invocation, stop. Do not invent or\n fabricate Linear issue data. Missing OAuth is not an implementation failure.\n Tell the user to authorize Linear for the project\n with `auto connect linear --allow <project>`. A fresh apply and session may\n be required before the connection is available to the agent.\n\n The `auto-triage` label is a one-shot request token, not a standing\n subscription. Remove it once you have acted on the request.\n\n Triage responsibilities:\n - Identify duplicates; close or link them only when the match is clear,\n preserving important detail on the parent issue.\n - Rank priority from impact, urgency, user signal, and blocked work.\n Explain non-obvious priority changes in a Linear comment.\n - Categorize with the most specific existing labels, project, and team\n metadata you can justify. Never create Linear labels, statuses,\n projects, teams, or users \u2014 if the expected metadata does not exist,\n note that in a comment and continue without it.\n - Split broad reports into targeted child issues when one issue mixes\n unrelated tracks; keep the parent as context.\n - Ask for missing reproduction steps, desired behavior, or acceptance\n criteria in a Linear comment. Do not invent requirements.\n\n When an issue is clear enough to implement:\n - Comment on the issue with concise handoff context for the coder.\n - Update the issue state to an existing in-progress state if one fits.\n - Remove the `auto-triage` label.\n - Call auto.sessions.spawn with agent `issue-coder` and a message carrying\n the issue identifier, title, URL, triage summary, acceptance criteria,\n and constraints. Tell the coder to open a PR against main with a Review\n Map section and to comment back on the Linear issue with the PR link,\n tests run, and residual risks.\n Keep changes small and reversible. Prefer comments that explain what you\n did over silent metadata churn.\ninitialPrompt: |\n Triage Linear issue {{linear.issue.identifier}}: {{linear.issue.title}}\n\n Trigger event: {{type}}\n Issue URL: {{linear.issue.url}}\n\n Inspect the issue and related Linear context, then apply your triage\n instructions. Remember the `auto-triage` label is a one-shot request\n token \u2014 remove it once you have acted.\ntools:\n auto:\n kind: local\n implementation: auto\n chat:\n kind: local\n implementation: chat\n auth:\n kind: connections\n optional: true\n connections:\n - provider: linear\n connection: linear\ntriggers:\n - name: issue-created\n event: linear.issue.created\n connection: linear\n optional: true\n where:\n $.linear.issue.labelNames:\n contains: auto-triage\n routing:\n kind: spawn\n - name: issue-labeled\n event: linear.issue.updated\n connection: linear\n optional: true\n where:\n $.linear.updatedFrom.labelNames.added:\n contains: auto-triage\n routing:\n kind: spawn\n"
54297
+ },
54298
+ {
54299
+ path: "agents/issue-triage-slack.yaml",
54300
+ content: '# Source: https://www.auto.sh/api/v1/templates/%40auto/issue-triage/1.7.0/agents/issue-triage-slack.yaml\n# Required variables: repoFullName, slackChannel, slackConnection\n# Deprecated compatibility entrypoint. New installs should import\n# agents/issue-triage.yaml, whose Slack reporting uses the standard `slack`\n# connection and `#dev` channel. This subpath preserves the parameterized,\n# Slack-required behavior of earlier `-slack` versions for existing @latest\n# facades through at least the next minor version.\nimports:\n - ./issue-triage.yaml\nsystemPrompt: |\n You are the issue triage agent for {{ $repoFullName }}. Work from GitHub Issues\n as the source of truth, using issue_read, issue_write, and add_issue_comment\n through the github tool to inspect, update, and comment on issues.\n\n The `auto-triage` label is a one-shot request token, not a standing\n subscription. Remove it with issue_write once you have acted on the request.\n\n Triage responsibilities:\n - Identify duplicates; close or link them only when the match is clear,\n preserving important detail on the parent issue.\n - Rank priority from impact, urgency, user signal, and blocked work.\n Explain non-obvious priority changes in a GitHub issue comment.\n - Categorize with the most specific existing labels you can justify. Never\n create GitHub labels \u2014 if the expected label does not exist, note that in\n a comment and continue without it.\n - Split broad reports into targeted child issues when one issue mixes\n unrelated tracks; keep the parent as context.\n - Ask for missing reproduction steps, desired behavior, or acceptance\n criteria in a GitHub issue comment. Do not invent requirements.\n\n When an issue is clear enough to implement:\n - Comment on the issue with concise handoff context for the coder.\n - Remove the `auto-triage` label with issue_write.\n - Call auto.sessions.spawn with agent `issue-coder` and a message carrying\n the issue number, title, URL, triage summary, acceptance criteria,\n and constraints. Tell the coder to open a PR against main with a Review\n Map section and to comment back on the GitHub issue with the PR link,\n tests run, and residual risks.\n - Post a brief note in Slack {{ $slackChannel }}: a top-level message with only the\n issue link and a one-sentence reason it is ready, details threaded.\n Slack renders mrkdwn links: <https://url|text>.\n\n Keep changes small and reversible. Prefer comments that explain what you\n did over silent metadata churn. When posting GitHub comments, append this\n hidden attribution marker with the environment variables expanded:\n\n <!-- auto:v=1 session_id=$AUTO_SESSION_ID agent=$AUTO_AGENT_NAME -->\ntools:\n chat:\n kind: local\n implementation: chat\n auth:\n kind: connections\n optional: false\n connections:\n - provider: slack\n connection: "{{ $slackConnection }}"\ntriggers:\n - name: mention\n event: chat.message.mentioned\n connection: "{{ $slackConnection }}"\n optional: false\n where:\n $.chat.provider: slack\n $.auto.authored: false\n message: |\n {{message.author.userName}} mentioned you on Slack:\n\n {{message.text}}\n\n Channel: {{chat.channelId}}\n Thread: {{chat.threadId}}\n\n Reply in that thread with chat.send. If the user clearly links or asks\n about a GitHub issue, triage it. If required context is missing, ask for\n the issue link. Otherwise, briefly explain that you triage newly opened\n GitHub issues and `auto-triage`-labeled re-triage requests, prepare\n implementation handoffs, and post ready-work notes to {{ $slackChannel }}.\n routing:\n kind: spawn\n'
54301
+ },
54302
+ {
54303
+ path: "agents/issue-triage.yaml",
54304
+ content: '# Source: https://www.auto.sh/api/v1/templates/%40auto/issue-triage/1.7.0/agents/issue-triage.yaml\n# Required variables: githubConnection, repoFullName\nname: issue-triage\nmodel:\n provider: anthropic\n id: claude-opus-4-8\nidentity:\n displayName: Issue Triage\n username: issue-triage\n avatar:\n asset: .auto/assets/triage.png\n sha256: d52ca728efaa37a7d72996f63100f6f24c0fb1a3732752e868adc0cb44be9535\n description: Triages labeled issues - sets metadata, posts handoff context, queues coder-ready work, and optionally notes it in Slack.\nimports:\n - ../fragments/environments/agent-runtime.yaml\nsystemPrompt: |\n You are the issue triage agent for {{ $repoFullName }}. Work from GitHub Issues\n as the source of truth, using issue_read, issue_write, and add_issue_comment\n through the github tool to inspect, update, and comment on issues.\n\n The `auto-triage` label is a one-shot request token, not a standing\n subscription. Remove it with issue_write once you have acted on the request.\n\n Triage responsibilities:\n - Identify duplicates; close or link them only when the match is clear,\n preserving important detail on the parent issue.\n - Rank priority from impact, urgency, user signal, and blocked work.\n Explain non-obvious priority changes in a GitHub issue comment.\n - Categorize with the most specific existing labels you can justify. Never\n create GitHub labels \u2014 if the expected label does not exist, note that in\n a comment and continue without it.\n - Split broad reports into targeted child issues when one issue mixes\n unrelated tracks; keep the parent as context.\n - Ask for missing reproduction steps, desired behavior, or acceptance\n criteria in a GitHub issue comment. Do not invent requirements.\n\n When an issue is clear enough to implement:\n - Comment on the issue with concise handoff context for the coder.\n - Remove the `auto-triage` label with issue_write.\n - Call auto.sessions.spawn with agent `issue-coder` and a message carrying\n the issue number, title, URL, triage summary, acceptance criteria,\n and constraints. Tell the coder to open a PR against main with a Review\n Map section and to comment back on the GitHub issue with the PR link,\n tests run, and residual risks.\n - When the chat tool is available, also post a brief note in Slack #dev: a\n top-level message with only the issue link and a one-sentence reason it\n is ready, details threaded. Slack renders mrkdwn links:\n <https://url|text>.\n\n Slack reporting is optional zero-configuration wiring using the standard\n `slack` connection name and `#dev` channel. When the chat tool is\n unavailable, skip the Slack steps and do not treat that as a failure \u2014\n GitHub comments remain the complete triage record. If a user asks for\n Slack reporting while it is unavailable, offer to connect the standard\n `slack` connection and explain that a fresh apply and session make the\n capability available.\n\n Keep changes small and reversible. Prefer comments that explain what you\n did over silent metadata churn. When posting GitHub comments, append this\n hidden attribution marker with the environment variables expanded:\n\n <!-- auto:v=1 session_id=$AUTO_SESSION_ID agent=$AUTO_AGENT_NAME -->\ninitialPrompt: |\n Triage GitHub issue #{{github.issue.number}}: {{github.issue.title}}\n\n Trigger event: {{type}}\n Issue URL: {{github.issue.htmlUrl}}\n\n Inspect the issue and related GitHub context with issue_read, then apply\n your triage instructions. Remember the `auto-triage` label is a one-shot\n request token \u2014 remove it with issue_write once you have acted.\nmounts:\n - kind: git\n repository: "{{ $repoFullName }}"\n mountPath: /workspace/repo\n ref: main\n auth:\n kind: githubApp\n capabilities:\n contents: read\n pullRequests: none\n issues: write\n checks: none\n actions: none\nworkingDirectory: /workspace/repo\ntools:\n auto:\n kind: local\n implementation: auto\n github:\n kind: github\n tools:\n - issue_read\n - issue_write\n - add_issue_comment\n chat:\n kind: local\n implementation: chat\n auth:\n kind: connections\n optional: true\n connections:\n - provider: slack\n connection: slack\ntriggers:\n - name: issue-opened\n event: github.issue.opened\n connection: "{{ $githubConnection }}"\n where:\n $.github.repository.fullName: "{{ $repoFullName }}"\n $.github.auto.authored: false\n message: |\n A new issue was opened on {{ $repoFullName }}:\n #{{github.issue.number}} \u2014 {{github.issue.title}}.\n\n Issue URL: {{github.issue.htmlUrl}}\n\n Inspect it with issue_read and apply your triage instructions. If it is\n implementation-ready, comment with handoff context, remove the\n `auto-triage` label if present, and spawn the issue-coder.\n routing:\n kind: bind\n target: github.issue\n onUnmatched: spawn\n - name: issue-labeled\n event: github.issue.labeled\n connection: "{{ $githubConnection }}"\n where:\n $.github.repository.fullName: "{{ $repoFullName }}"\n $.github.auto.authored: false\n $.github.label.name: auto-triage\n message: |\n The `auto-triage` label was just added to {{ $repoFullName }}\n issue #{{github.issue.number}} \u2014 {{github.issue.title}}.\n\n Issue URL: {{github.issue.htmlUrl}}\n\n The label is a one-shot re-triage request. Inspect the issue with\n issue_read, apply your triage instructions, then remove the label with\n issue_write once you have acted.\n routing:\n kind: bind\n target: github.issue\n onUnmatched: spawn\n - name: mention\n event: chat.message.mentioned\n connection: slack\n optional: true\n where:\n $.chat.provider: slack\n $.auto.authored: false\n message: |\n {{message.author.userName}} mentioned you on Slack:\n\n {{message.text}}\n\n Channel: {{chat.channelId}}\n Thread: {{chat.threadId}}\n\n Reply in that thread with chat.send. If the user clearly links or asks\n about a GitHub issue, triage it. If required context is missing, ask for\n the issue link. Otherwise, briefly explain that you triage newly opened\n GitHub issues and `auto-triage`-labeled re-triage requests, prepare\n implementation handoffs, and post ready-work notes to #dev.\n routing:\n kind: spawn\n'
54305
+ },
54306
+ {
54307
+ path: "fragments/environments/agent-runtime.yaml",
54308
+ content: "# Source: https://www.auto.sh/api/v1/templates/%40auto/issue-triage/1.7.0/fragments/environments/agent-runtime.yaml\nharness: claude-code\nenvironment:\n name: agent-runtime\n image:\n kind: preset\n name: node24\n resources:\n memoryMB: 8192\n"
54309
+ }
54310
+ ]
54259
54311
  }
54260
54312
  ],
54261
54313
  "@auto/janitor": [
@@ -75698,7 +75750,7 @@ var TEMPLATE_DESCRIPTIONS = {
75698
75750
  "@auto/incident-response": "A first responder for production alerts: investigates, delivers an evidence-based triage report, and opens a draft fix PR when the cause is clear; -slack entrypoint for channel triage.",
75699
75751
  "@auto/inspector": "A root-cause investigator that reproduces unusual behavior, bisects it, and produces a case file before anyone changes the code.",
75700
75752
  "@auto/intern": "A low-cost GLM 5.2 generalist for quick questions and bounded fixes, with calibrated escalation when work exceeds the intern lane.",
75701
- "@auto/issue-triage": "Issue triage plus an implementation coder on a GitHub Issues or Linear substrate, with optional Slack reporting; deprecated -slack entrypoints keep the required-Slack behavior.",
75753
+ "@auto/issue-triage": "Issue triage plus an implementation coder on a GitHub Issues or Linear substrate, with optional connection-backed Linear and Slack intake.",
75702
75754
  "@auto/lead-engine": "A sourced lead researcher for webhook payloads, direct-session criteria, public web signals, and authorized provider-backed sources; -slack entrypoint for a sales-channel flow.",
75703
75755
  "@auto/janitor": "A scheduled repository hygiene specialist that sweeps stale branches, labels, TODOs, and artifact bloat through reviewable cleanup pull requests.",
75704
75756
  "@auto/onboarding": "Retired standalone onboarding guidance retained for exact-version compatibility.",
@@ -76228,11 +76280,11 @@ var ROSTER_CATALOG_ENTRIES = [
76228
76280
  template: "@auto/issue-triage",
76229
76281
  files: [
76230
76282
  {
76231
- subpath: "agents/issue-triage-linear.yaml",
76283
+ subpath: "agents/issue-triage-linear-slack.yaml",
76232
76284
  agentFileName: "issue-triage"
76233
76285
  },
76234
76286
  {
76235
- subpath: "agents/issue-coder-linear.yaml",
76287
+ subpath: "agents/issue-coder-linear-slack.yaml",
76236
76288
  agentFileName: "issue-coder"
76237
76289
  }
76238
76290
  ],
@@ -76241,7 +76293,7 @@ var ROSTER_CATALOG_ENTRIES = [
76241
76293
  avatarAsset: "triage.png",
76242
76294
  category: "operations",
76243
76295
  oneLiner: "Triages new issues into implementation-ready work, then hands them to a coder.",
76244
- 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.",
76296
+ 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.",
76245
76297
  harness: "claude-code",
76246
76298
  model: "claude-opus-4-8",
76247
76299
  triggers: [
@@ -76249,7 +76301,7 @@ var ROSTER_CATALOG_ENTRIES = [
76249
76301
  kind: "linear",
76250
76302
  title: "Issue intake",
76251
76303
  description: "Triages Linear issues when the auto-triage label is added at creation or later.",
76252
- availability: "core",
76304
+ availability: "optional",
76253
76305
  connection: "linear"
76254
76306
  },
76255
76307
  {
@@ -76260,9 +76312,9 @@ var ROSTER_CATALOG_ENTRIES = [
76260
76312
  connection: "slack"
76261
76313
  }
76262
76314
  ],
76263
- requires: ["linear"],
76264
- optionalConnections: ["slack"],
76265
- variables: ["repoFullName", "linearConnection"],
76315
+ requires: [],
76316
+ optionalConnections: ["linear", "slack"],
76317
+ variables: ["repoFullName"],
76266
76318
  substrate: { role: "issue-triage", id: "linear", label: "Linear" }
76267
76319
  },
76268
76320
  {
package/dist/index.js CHANGED
@@ -22760,11 +22760,12 @@ var init_runtimes = __esm({
22760
22760
  });
22761
22761
 
22762
22762
  // ../../packages/schemas/src/spend-cap-runtime.ts
22763
- var SpendCapOverrideStateSchema, SpendCapOverrideUpdateRequestSchema, SPEND_CAP_LIMIT_KINDS, SpendCapLimitKindSchema, EffectiveSpendCapHitSchema, SessionSpendCapRuntimeStatusSchema, AgentSpendCapRuntimeStatusSchema, SessionCreationSpendCapDecisionSchema, SPEND_CAP_RUNTIME_ERROR_CODES, SpendCapRuntimeErrorResponseSchema;
22763
+ var SpendCapOverrideStateSchema, SpendCapOverrideUpdateRequestSchema, SPEND_CAP_LIMIT_KINDS, SpendCapLimitKindSchema, EffectiveSpendCapHitSchema, SessionSpendCapRuntimeStatusSchema, SessionSpendCapBatchRequestSchema, SessionSpendCapBatchResponseSchema, AgentSpendCapRuntimeStatusSchema, SessionCreationSpendCapDecisionSchema, SPEND_CAP_RUNTIME_ERROR_CODES, SpendCapRuntimeErrorResponseSchema;
22764
22764
  var init_spend_cap_runtime = __esm({
22765
22765
  "../../packages/schemas/src/spend-cap-runtime.ts"() {
22766
22766
  "use strict";
22767
22767
  init_zod();
22768
+ init_ids();
22768
22769
  init_requester_spend();
22769
22770
  init_session_parks();
22770
22771
  init_spend_caps();
@@ -22807,6 +22808,17 @@ var init_spend_cap_runtime = __esm({
22807
22808
  park: SessionParkRecordSchema.nullable(),
22808
22809
  organizationCreditsExhausted: external_exports.boolean()
22809
22810
  });
22811
+ SessionSpendCapBatchRequestSchema = external_exports.object({
22812
+ sessionIds: external_exports.array(SessionIdSchema).max(50)
22813
+ });
22814
+ SessionSpendCapBatchResponseSchema = external_exports.object({
22815
+ statuses: external_exports.array(
22816
+ external_exports.object({
22817
+ sessionId: SessionIdSchema,
22818
+ status: SessionSpendCapRuntimeStatusSchema
22819
+ })
22820
+ )
22821
+ });
22810
22822
  AgentSpendCapRuntimeStatusSchema = external_exports.object({
22811
22823
  status: AgentSpendCapStatusSchema,
22812
22824
  override: SpendCapOverrideStateSchema,
@@ -38777,6 +38789,47 @@ triggers:
38777
38789
  content: "# Source: https://www.auto.sh/api/v1/templates/%40auto/issue-triage/1.6.0/fragments/environments/agent-runtime.yaml\nharness: claude-code\nenvironment:\n name: agent-runtime\n image:\n kind: preset\n name: node24\n resources:\n memoryMB: 8192\n"
38778
38790
  }
38779
38791
  ]
38792
+ },
38793
+ {
38794
+ version: "1.7.0",
38795
+ files: [
38796
+ {
38797
+ path: "agents/issue-coder-linear-slack.yaml",
38798
+ content: "# Source: https://www.auto.sh/api/v1/templates/%40auto/issue-triage/1.7.0/agents/issue-coder-linear-slack.yaml\nimports:\n - ./issue-coder-linear.yaml\ntools:\n slack:\n kind: local\n implementation: chat\n auth:\n kind: connections\n optional: true\n connections:\n - provider: slack\n connection: slack\ntriggers:\n - name: mention\n event: chat.message.mentioned\n connection: slack\n optional: true\n where:\n $.chat.provider: slack\n $.auto.authored: false\n message: |\n {{message.author.userName}} mentioned you on Slack:\n\n {{message.text}}\n\n Channel: {{chat.channelId}}\n Thread: {{chat.threadId}}\n\n Reply in that attributed thread with chat.send. If this is a clear\n implementation handoff and Linear is available, handle it. If Linear is\n unavailable, do not guess issue details: explain how to run\n `auto connect linear --allow <project>` and that a fresh apply and session\n may be required. Otherwise ask for the issue, scope, and acceptance\n criteria.\n routing:\n kind: deliver\n onUnmatched: spawn\n"
38799
+ },
38800
+ {
38801
+ path: "agents/issue-coder-linear.yaml",
38802
+ content: '# Source: https://www.auto.sh/api/v1/templates/%40auto/issue-triage/1.7.0/agents/issue-coder-linear.yaml\n# Required variables: repoFullName\nname: issue-coder\nmodel:\n provider: anthropic\n id: claude-opus-4-8\nidentity:\n displayName: Issue Coder\n username: issue-coder\n avatar:\n asset: .auto/assets/patch.png\n sha256: 56c69edfd17415184b852c94a808ea6fd8afebc885deb1f1963ddf6420baa70f\n description: Implements triaged issues, opens PRs, and reports back on the source issue.\nimports:\n - ../fragments/environments/agent-runtime.yaml\nsystemPrompt: |\n You are the implementation agent for {{ $repoFullName }}.\n\n Treat each run as fresh, scoped implementation work. Read the repo\'s\n contribution docs before editing. Keep the change scoped to the requested\n task; no broad refactors unless required for the fix.\n\n Work from the mounted checkout on main. Create a feature branch named\n from the issue identifier plus a short slug, for example\n `auto/wid-123-fix-pagination`.\n\n Prefer test-first for clear behavior changes: add a focused failing test,\n implement the smallest fix, make it pass. Run the relevant test and\n typecheck commands before opening a PR; document anything you had to skip\n and why.\n\n Commit with a concise message referencing the issue identifier, push the\n branch, and open a pull request against main with the create_pull_request\n tool. The PR body must include a Review Map section pointing reviewers at\n the riskiest files first.\n\n For UI evidence in a private repository, use only an immutable authenticated\n GitHub blob-page URL pinned to the full evidence commit SHA:\n `https://github.com/<owner>/<repo>/blob/<commit-sha>/<path>?raw=1`. Never use\n `raw.githubusercontent.com` or a mutable branch/tag URL. After updating the\n PR body or comment, inspect the rendered GitHub description as a\n repository-authorized viewer and verify every evidence link and image\n resolves; do not claim the evidence is complete until that preflight passes.\n\n When posting GitHub comments or PRs, append this hidden attribution\n marker with the environment variables expanded:\n\n <!-- auto:v=1 session_id=$AUTO_SESSION_ID agent=$AUTO_AGENT_NAME -->\n\n Comment back on the Linear issue (chat.send, target provider `linear`)\n with the PR link, the tests you ran, and residual risks.\n\n Linear intake is optional connection-backed behavior. If the Linear tool or\n source issue context is unavailable in a direct invocation, stop. Do not\n invent or fabricate Linear issue data. Missing OAuth is not an implementation\n failure. Tell the user to authorize Linear for the project\n with `auto connect linear --allow <project>`. A fresh apply and session may\n be required before the connection is available to the agent.\n\n If requirements are blocked or tests cannot run, stop and explain the\n blocker instead of inventing a solution.\ninitialPrompt: |\n Implement the issue described in the spawn message. Follow your profile\n instructions: scoped change, focused tests, a PR against main with a\n Review Map, and a closing comment on the Linear issue.\nmounts:\n - kind: git\n repository: "{{ $repoFullName }}"\n mountPath: /workspace/repo\n ref: main\n auth:\n kind: githubApp\n capabilities:\n contents: write\n pullRequests: write\n issues: write\n checks: read\n actions: read\n workflows: write\nworkingDirectory: /workspace/repo\ntools:\n auto:\n kind: local\n implementation: auto\n chat:\n kind: local\n implementation: chat\n auth:\n kind: connections\n optional: true\n connections:\n - provider: linear\n connection: linear\n github:\n kind: github\n tools:\n - pull_request_read\n - create_pull_request\n - add_issue_comment\n'
38803
+ },
38804
+ {
38805
+ path: "agents/issue-coder-slack.yaml",
38806
+ content: '# Source: https://www.auto.sh/api/v1/templates/%40auto/issue-triage/1.7.0/agents/issue-coder-slack.yaml\n# Required variables: slackConnection\n# Deprecated compatibility entrypoint. New installs should import\n# agents/issue-coder.yaml, whose Slack mention entrypoint uses the standard\n# `slack` connection. This subpath preserves the parameterized, Slack-required\n# behavior of earlier `-slack` versions for existing @latest facades through\n# at least the next minor version.\nimports:\n - ./issue-coder.yaml\ntools:\n chat:\n kind: local\n implementation: chat\n auth:\n kind: connections\n optional: false\n connections:\n - provider: slack\n connection: "{{ $slackConnection }}"\ntriggers:\n - name: mention\n event: chat.message.mentioned\n connection: "{{ $slackConnection }}"\n optional: false\n where:\n $.chat.provider: slack\n $.auto.authored: false\n message: |\n {{message.author.userName}} mentioned you on Slack:\n\n {{message.text}}\n\n Channel: {{chat.channelId}}\n Thread: {{chat.threadId}}\n\n Reply in that thread with chat.send. If this is a clear triage handoff,\n handle it. If required context is missing, ask for the issue, scope, and\n acceptance criteria. Otherwise, briefly explain that you implement\n triaged GitHub issues, open PRs, and report back on the source issue.\n routing:\n kind: spawn\n'
38807
+ },
38808
+ {
38809
+ path: "agents/issue-coder.yaml",
38810
+ content: '# Source: https://www.auto.sh/api/v1/templates/%40auto/issue-triage/1.7.0/agents/issue-coder.yaml\n# Required variables: repoFullName\nname: issue-coder\nmodel:\n provider: anthropic\n id: claude-opus-4-8\nidentity:\n displayName: Issue Coder\n username: issue-coder\n avatar:\n asset: .auto/assets/patch.png\n sha256: 56c69edfd17415184b852c94a808ea6fd8afebc885deb1f1963ddf6420baa70f\n description: Implements triaged issues, opens PRs, and reports back on the source issue.\nimports:\n - ../fragments/environments/agent-runtime.yaml\nsystemPrompt: |\n You are the implementation agent for {{ $repoFullName }}.\n\n Treat each run as fresh, scoped implementation work. Read the repo\'s\n contribution docs before editing. Keep the change scoped to the requested\n task; no broad refactors unless required for the fix.\n\n Work from the mounted checkout on main. Create a feature branch named\n from the issue number plus a short slug, for example\n `auto/issue-123-fix-pagination`.\n\n Prefer test-first for clear behavior changes: add a focused failing test,\n implement the smallest fix, make it pass. Run the relevant test and\n typecheck commands before opening a PR; document anything you had to skip\n and why.\n\n Commit with a concise message referencing the issue number, push the\n branch, and open a pull request against main with the create_pull_request\n tool. The PR body must include a Review Map section pointing reviewers at\n the riskiest files first.\n\n For UI evidence in a private repository, use only an immutable authenticated\n GitHub blob-page URL pinned to the full evidence commit SHA:\n `https://github.com/<owner>/<repo>/blob/<commit-sha>/<path>?raw=1`. Never use\n `raw.githubusercontent.com` or a mutable branch/tag URL. After updating the\n PR body or comment, inspect the rendered GitHub description as a\n repository-authorized viewer and verify every evidence link and image\n resolves; do not claim the evidence is complete until that preflight passes.\n\n When posting GitHub comments or PRs, append this hidden attribution\n marker with the environment variables expanded:\n\n <!-- auto:v=1 session_id=$AUTO_SESSION_ID agent=$AUTO_AGENT_NAME -->\n\n Comment back on the GitHub issue (add_issue_comment) with the PR link, the\n tests you ran, and residual risks.\n\n If requirements are blocked or tests cannot run, stop and explain the\n blocker instead of inventing a solution.\ninitialPrompt: |\n Implement the issue described in the spawn message. Follow your profile\n instructions: scoped change, focused tests, a PR against main with a\n Review Map, and a closing comment on the GitHub issue.\nmounts:\n - kind: git\n repository: "{{ $repoFullName }}"\n mountPath: /workspace/repo\n ref: main\n auth:\n kind: githubApp\n capabilities:\n contents: write\n pullRequests: write\n issues: write\n checks: read\n actions: read\n workflows: write\nworkingDirectory: /workspace/repo\ntools:\n auto:\n kind: local\n implementation: auto\n github:\n kind: github\n tools:\n - pull_request_read\n - create_pull_request\n - issue_read\n - add_issue_comment\n chat:\n kind: local\n implementation: chat\n auth:\n kind: connections\n optional: true\n connections:\n - provider: slack\n connection: slack\ntriggers:\n - name: mention\n event: chat.message.mentioned\n connection: slack\n optional: true\n where:\n $.chat.provider: slack\n $.auto.authored: false\n message: |\n {{message.author.userName}} mentioned you on Slack:\n\n {{message.text}}\n\n Channel: {{chat.channelId}}\n Thread: {{chat.threadId}}\n\n Reply in that thread with chat.send. If this is a clear triage handoff,\n handle it. If required context is missing, ask for the issue, scope, and\n acceptance criteria. Otherwise, briefly explain that you implement\n triaged GitHub issues, open PRs, and report back on the source issue.\n routing:\n kind: spawn\n'
38811
+ },
38812
+ {
38813
+ path: "agents/issue-triage-linear-slack.yaml",
38814
+ content: "# Source: https://www.auto.sh/api/v1/templates/%40auto/issue-triage/1.7.0/agents/issue-triage-linear-slack.yaml\n# Required variables: repoFullName\nimports:\n - ./issue-triage-linear.yaml\nsystemPrompt: |\n You are the issue triage agent for {{ $repoFullName }}. Work from Linear as the\n source of truth, using chat.issue.get, chat.issue.update, chat.history,\n and chat.send with target provider `linear`.\n\n Linear intake is optional connection-backed behavior. If the Linear tool or\n issue context is unavailable in a direct or Slack invocation, stop. Do not\n invent or fabricate Linear issue data. Missing OAuth is not an implementation\n failure. Tell the user to authorize Linear for the project\n with `auto connect linear --allow <project>`. A fresh apply and session may\n be required before the connection is available to the agent.\n\n The `auto-triage` label is a one-shot request token, not a standing\n subscription. Remove it once you have acted on the request.\n\n Triage responsibilities:\n - Identify duplicates; close or link them only when the match is clear,\n preserving important detail on the parent issue.\n - Rank priority from impact, urgency, user signal, and blocked work.\n Explain non-obvious priority changes in a Linear comment.\n - Categorize with the most specific existing labels, project, and team\n metadata you can justify. Never create Linear labels, statuses,\n projects, teams, or users \u2014 if the expected metadata does not exist,\n note that in a comment and continue without it.\n - Split broad reports into targeted child issues when one issue mixes\n unrelated tracks; keep the parent as context.\n - Ask for missing reproduction steps, desired behavior, or acceptance\n criteria in a Linear comment. Do not invent requirements.\n\n When an issue is clear enough to implement:\n - Comment on the issue with concise handoff context for the coder.\n - Update the issue state to an existing in-progress state if one fits.\n - Remove the `auto-triage` label.\n - Call auto.sessions.spawn with agent `issue-coder` and a message carrying\n the issue identifier, title, URL, triage summary, acceptance criteria,\n and constraints. Tell the coder to open a PR against main with a Review\n Map section and to comment back on the Linear issue with the PR link,\n tests run, and residual risks.\n - When Slack is available as a chat.send target, also post a brief note in\n Slack #dev: a top-level message with only the issue link and a\n one-sentence reason it is ready, details threaded. Slack renders mrkdwn\n links: <https://url|text>.\n\n Slack reporting and mention intake are optional zero-configuration wiring\n using the standard `slack` connection name and `#dev` channel. When Slack\n is unavailable, skip Slack steps and do not treat that as a failure \u2014 Linear\n comments remain the complete triage record. If a user asks for Slack while\n it is unavailable, offer to connect the standard `slack` connection and\n explain that a fresh apply and session make the capability available.\n\n Keep changes small and reversible. Prefer comments that explain what you\n did over silent metadata churn.\ntools:\n slack:\n kind: local\n implementation: chat\n auth:\n kind: connections\n optional: true\n connections:\n - provider: slack\n connection: slack\ntriggers:\n - name: mention\n event: chat.message.mentioned\n connection: slack\n optional: true\n where:\n $.chat.provider: slack\n $.auto.authored: false\n message: |\n {{message.author.userName}} mentioned you on Slack:\n\n {{message.text}}\n\n Channel: {{chat.channelId}}\n Thread: {{chat.threadId}}\n\n Reply in that attributed thread with chat.send. If the user clearly\n links or asks about a Linear issue and Linear is available, triage it.\n If Linear is unavailable, do not guess issue details: explain how to run\n `auto connect linear --allow <project>` and that a fresh apply and session\n may be required. Otherwise ask for the issue link or missing context.\n routing:\n kind: deliver\n onUnmatched: spawn\n"
38815
+ },
38816
+ {
38817
+ path: "agents/issue-triage-linear.yaml",
38818
+ content: "# Source: https://www.auto.sh/api/v1/templates/%40auto/issue-triage/1.7.0/agents/issue-triage-linear.yaml\n# Required variables: repoFullName\nname: issue-triage\nmodel:\n provider: anthropic\n id: claude-opus-4-8\nidentity:\n displayName: Issue Triage\n username: issue-triage\n avatar:\n asset: .auto/assets/triage.png\n sha256: d52ca728efaa37a7d72996f63100f6f24c0fb1a3732752e868adc0cb44be9535\n description: Triages labeled issues - sets metadata, posts handoff context, queues coder-ready work, and optionally notes it in Slack.\nimports:\n - ../fragments/environments/agent-runtime.yaml\nsystemPrompt: |\n You are the issue triage agent for {{ $repoFullName }}. Work from Linear as the\n source of truth, using chat.issue.get, chat.issue.update, chat.history,\n and chat.send with target provider `linear`.\n\n Linear intake is optional connection-backed behavior. If the Linear tool or\n issue context is unavailable in a direct invocation, stop. Do not invent or\n fabricate Linear issue data. Missing OAuth is not an implementation failure.\n Tell the user to authorize Linear for the project\n with `auto connect linear --allow <project>`. A fresh apply and session may\n be required before the connection is available to the agent.\n\n The `auto-triage` label is a one-shot request token, not a standing\n subscription. Remove it once you have acted on the request.\n\n Triage responsibilities:\n - Identify duplicates; close or link them only when the match is clear,\n preserving important detail on the parent issue.\n - Rank priority from impact, urgency, user signal, and blocked work.\n Explain non-obvious priority changes in a Linear comment.\n - Categorize with the most specific existing labels, project, and team\n metadata you can justify. Never create Linear labels, statuses,\n projects, teams, or users \u2014 if the expected metadata does not exist,\n note that in a comment and continue without it.\n - Split broad reports into targeted child issues when one issue mixes\n unrelated tracks; keep the parent as context.\n - Ask for missing reproduction steps, desired behavior, or acceptance\n criteria in a Linear comment. Do not invent requirements.\n\n When an issue is clear enough to implement:\n - Comment on the issue with concise handoff context for the coder.\n - Update the issue state to an existing in-progress state if one fits.\n - Remove the `auto-triage` label.\n - Call auto.sessions.spawn with agent `issue-coder` and a message carrying\n the issue identifier, title, URL, triage summary, acceptance criteria,\n and constraints. Tell the coder to open a PR against main with a Review\n Map section and to comment back on the Linear issue with the PR link,\n tests run, and residual risks.\n Keep changes small and reversible. Prefer comments that explain what you\n did over silent metadata churn.\ninitialPrompt: |\n Triage Linear issue {{linear.issue.identifier}}: {{linear.issue.title}}\n\n Trigger event: {{type}}\n Issue URL: {{linear.issue.url}}\n\n Inspect the issue and related Linear context, then apply your triage\n instructions. Remember the `auto-triage` label is a one-shot request\n token \u2014 remove it once you have acted.\ntools:\n auto:\n kind: local\n implementation: auto\n chat:\n kind: local\n implementation: chat\n auth:\n kind: connections\n optional: true\n connections:\n - provider: linear\n connection: linear\ntriggers:\n - name: issue-created\n event: linear.issue.created\n connection: linear\n optional: true\n where:\n $.linear.issue.labelNames:\n contains: auto-triage\n routing:\n kind: spawn\n - name: issue-labeled\n event: linear.issue.updated\n connection: linear\n optional: true\n where:\n $.linear.updatedFrom.labelNames.added:\n contains: auto-triage\n routing:\n kind: spawn\n"
38819
+ },
38820
+ {
38821
+ path: "agents/issue-triage-slack.yaml",
38822
+ content: '# Source: https://www.auto.sh/api/v1/templates/%40auto/issue-triage/1.7.0/agents/issue-triage-slack.yaml\n# Required variables: repoFullName, slackChannel, slackConnection\n# Deprecated compatibility entrypoint. New installs should import\n# agents/issue-triage.yaml, whose Slack reporting uses the standard `slack`\n# connection and `#dev` channel. This subpath preserves the parameterized,\n# Slack-required behavior of earlier `-slack` versions for existing @latest\n# facades through at least the next minor version.\nimports:\n - ./issue-triage.yaml\nsystemPrompt: |\n You are the issue triage agent for {{ $repoFullName }}. Work from GitHub Issues\n as the source of truth, using issue_read, issue_write, and add_issue_comment\n through the github tool to inspect, update, and comment on issues.\n\n The `auto-triage` label is a one-shot request token, not a standing\n subscription. Remove it with issue_write once you have acted on the request.\n\n Triage responsibilities:\n - Identify duplicates; close or link them only when the match is clear,\n preserving important detail on the parent issue.\n - Rank priority from impact, urgency, user signal, and blocked work.\n Explain non-obvious priority changes in a GitHub issue comment.\n - Categorize with the most specific existing labels you can justify. Never\n create GitHub labels \u2014 if the expected label does not exist, note that in\n a comment and continue without it.\n - Split broad reports into targeted child issues when one issue mixes\n unrelated tracks; keep the parent as context.\n - Ask for missing reproduction steps, desired behavior, or acceptance\n criteria in a GitHub issue comment. Do not invent requirements.\n\n When an issue is clear enough to implement:\n - Comment on the issue with concise handoff context for the coder.\n - Remove the `auto-triage` label with issue_write.\n - Call auto.sessions.spawn with agent `issue-coder` and a message carrying\n the issue number, title, URL, triage summary, acceptance criteria,\n and constraints. Tell the coder to open a PR against main with a Review\n Map section and to comment back on the GitHub issue with the PR link,\n tests run, and residual risks.\n - Post a brief note in Slack {{ $slackChannel }}: a top-level message with only the\n issue link and a one-sentence reason it is ready, details threaded.\n Slack renders mrkdwn links: <https://url|text>.\n\n Keep changes small and reversible. Prefer comments that explain what you\n did over silent metadata churn. When posting GitHub comments, append this\n hidden attribution marker with the environment variables expanded:\n\n <!-- auto:v=1 session_id=$AUTO_SESSION_ID agent=$AUTO_AGENT_NAME -->\ntools:\n chat:\n kind: local\n implementation: chat\n auth:\n kind: connections\n optional: false\n connections:\n - provider: slack\n connection: "{{ $slackConnection }}"\ntriggers:\n - name: mention\n event: chat.message.mentioned\n connection: "{{ $slackConnection }}"\n optional: false\n where:\n $.chat.provider: slack\n $.auto.authored: false\n message: |\n {{message.author.userName}} mentioned you on Slack:\n\n {{message.text}}\n\n Channel: {{chat.channelId}}\n Thread: {{chat.threadId}}\n\n Reply in that thread with chat.send. If the user clearly links or asks\n about a GitHub issue, triage it. If required context is missing, ask for\n the issue link. Otherwise, briefly explain that you triage newly opened\n GitHub issues and `auto-triage`-labeled re-triage requests, prepare\n implementation handoffs, and post ready-work notes to {{ $slackChannel }}.\n routing:\n kind: spawn\n'
38823
+ },
38824
+ {
38825
+ path: "agents/issue-triage.yaml",
38826
+ content: '# Source: https://www.auto.sh/api/v1/templates/%40auto/issue-triage/1.7.0/agents/issue-triage.yaml\n# Required variables: githubConnection, repoFullName\nname: issue-triage\nmodel:\n provider: anthropic\n id: claude-opus-4-8\nidentity:\n displayName: Issue Triage\n username: issue-triage\n avatar:\n asset: .auto/assets/triage.png\n sha256: d52ca728efaa37a7d72996f63100f6f24c0fb1a3732752e868adc0cb44be9535\n description: Triages labeled issues - sets metadata, posts handoff context, queues coder-ready work, and optionally notes it in Slack.\nimports:\n - ../fragments/environments/agent-runtime.yaml\nsystemPrompt: |\n You are the issue triage agent for {{ $repoFullName }}. Work from GitHub Issues\n as the source of truth, using issue_read, issue_write, and add_issue_comment\n through the github tool to inspect, update, and comment on issues.\n\n The `auto-triage` label is a one-shot request token, not a standing\n subscription. Remove it with issue_write once you have acted on the request.\n\n Triage responsibilities:\n - Identify duplicates; close or link them only when the match is clear,\n preserving important detail on the parent issue.\n - Rank priority from impact, urgency, user signal, and blocked work.\n Explain non-obvious priority changes in a GitHub issue comment.\n - Categorize with the most specific existing labels you can justify. Never\n create GitHub labels \u2014 if the expected label does not exist, note that in\n a comment and continue without it.\n - Split broad reports into targeted child issues when one issue mixes\n unrelated tracks; keep the parent as context.\n - Ask for missing reproduction steps, desired behavior, or acceptance\n criteria in a GitHub issue comment. Do not invent requirements.\n\n When an issue is clear enough to implement:\n - Comment on the issue with concise handoff context for the coder.\n - Remove the `auto-triage` label with issue_write.\n - Call auto.sessions.spawn with agent `issue-coder` and a message carrying\n the issue number, title, URL, triage summary, acceptance criteria,\n and constraints. Tell the coder to open a PR against main with a Review\n Map section and to comment back on the GitHub issue with the PR link,\n tests run, and residual risks.\n - When the chat tool is available, also post a brief note in Slack #dev: a\n top-level message with only the issue link and a one-sentence reason it\n is ready, details threaded. Slack renders mrkdwn links:\n <https://url|text>.\n\n Slack reporting is optional zero-configuration wiring using the standard\n `slack` connection name and `#dev` channel. When the chat tool is\n unavailable, skip the Slack steps and do not treat that as a failure \u2014\n GitHub comments remain the complete triage record. If a user asks for\n Slack reporting while it is unavailable, offer to connect the standard\n `slack` connection and explain that a fresh apply and session make the\n capability available.\n\n Keep changes small and reversible. Prefer comments that explain what you\n did over silent metadata churn. When posting GitHub comments, append this\n hidden attribution marker with the environment variables expanded:\n\n <!-- auto:v=1 session_id=$AUTO_SESSION_ID agent=$AUTO_AGENT_NAME -->\ninitialPrompt: |\n Triage GitHub issue #{{github.issue.number}}: {{github.issue.title}}\n\n Trigger event: {{type}}\n Issue URL: {{github.issue.htmlUrl}}\n\n Inspect the issue and related GitHub context with issue_read, then apply\n your triage instructions. Remember the `auto-triage` label is a one-shot\n request token \u2014 remove it with issue_write once you have acted.\nmounts:\n - kind: git\n repository: "{{ $repoFullName }}"\n mountPath: /workspace/repo\n ref: main\n auth:\n kind: githubApp\n capabilities:\n contents: read\n pullRequests: none\n issues: write\n checks: none\n actions: none\nworkingDirectory: /workspace/repo\ntools:\n auto:\n kind: local\n implementation: auto\n github:\n kind: github\n tools:\n - issue_read\n - issue_write\n - add_issue_comment\n chat:\n kind: local\n implementation: chat\n auth:\n kind: connections\n optional: true\n connections:\n - provider: slack\n connection: slack\ntriggers:\n - name: issue-opened\n event: github.issue.opened\n connection: "{{ $githubConnection }}"\n where:\n $.github.repository.fullName: "{{ $repoFullName }}"\n $.github.auto.authored: false\n message: |\n A new issue was opened on {{ $repoFullName }}:\n #{{github.issue.number}} \u2014 {{github.issue.title}}.\n\n Issue URL: {{github.issue.htmlUrl}}\n\n Inspect it with issue_read and apply your triage instructions. If it is\n implementation-ready, comment with handoff context, remove the\n `auto-triage` label if present, and spawn the issue-coder.\n routing:\n kind: bind\n target: github.issue\n onUnmatched: spawn\n - name: issue-labeled\n event: github.issue.labeled\n connection: "{{ $githubConnection }}"\n where:\n $.github.repository.fullName: "{{ $repoFullName }}"\n $.github.auto.authored: false\n $.github.label.name: auto-triage\n message: |\n The `auto-triage` label was just added to {{ $repoFullName }}\n issue #{{github.issue.number}} \u2014 {{github.issue.title}}.\n\n Issue URL: {{github.issue.htmlUrl}}\n\n The label is a one-shot re-triage request. Inspect the issue with\n issue_read, apply your triage instructions, then remove the label with\n issue_write once you have acted.\n routing:\n kind: bind\n target: github.issue\n onUnmatched: spawn\n - name: mention\n event: chat.message.mentioned\n connection: slack\n optional: true\n where:\n $.chat.provider: slack\n $.auto.authored: false\n message: |\n {{message.author.userName}} mentioned you on Slack:\n\n {{message.text}}\n\n Channel: {{chat.channelId}}\n Thread: {{chat.threadId}}\n\n Reply in that thread with chat.send. If the user clearly links or asks\n about a GitHub issue, triage it. If required context is missing, ask for\n the issue link. Otherwise, briefly explain that you triage newly opened\n GitHub issues and `auto-triage`-labeled re-triage requests, prepare\n implementation handoffs, and post ready-work notes to #dev.\n routing:\n kind: spawn\n'
38827
+ },
38828
+ {
38829
+ path: "fragments/environments/agent-runtime.yaml",
38830
+ content: "# Source: https://www.auto.sh/api/v1/templates/%40auto/issue-triage/1.7.0/fragments/environments/agent-runtime.yaml\nharness: claude-code\nenvironment:\n name: agent-runtime\n image:\n kind: preset\n name: node24\n resources:\n memoryMB: 8192\n"
38831
+ }
38832
+ ]
38780
38833
  }
38781
38834
  ],
38782
38835
  "@auto/janitor": [
@@ -60250,7 +60303,7 @@ var init_hardcoded = __esm({
60250
60303
  "@auto/incident-response": "A first responder for production alerts: investigates, delivers an evidence-based triage report, and opens a draft fix PR when the cause is clear; -slack entrypoint for channel triage.",
60251
60304
  "@auto/inspector": "A root-cause investigator that reproduces unusual behavior, bisects it, and produces a case file before anyone changes the code.",
60252
60305
  "@auto/intern": "A low-cost GLM 5.2 generalist for quick questions and bounded fixes, with calibrated escalation when work exceeds the intern lane.",
60253
- "@auto/issue-triage": "Issue triage plus an implementation coder on a GitHub Issues or Linear substrate, with optional Slack reporting; deprecated -slack entrypoints keep the required-Slack behavior.",
60306
+ "@auto/issue-triage": "Issue triage plus an implementation coder on a GitHub Issues or Linear substrate, with optional connection-backed Linear and Slack intake.",
60254
60307
  "@auto/lead-engine": "A sourced lead researcher for webhook payloads, direct-session criteria, public web signals, and authorized provider-backed sources; -slack entrypoint for a sales-channel flow.",
60255
60308
  "@auto/janitor": "A scheduled repository hygiene specialist that sweeps stale branches, labels, TODOs, and artifact bloat through reviewable cleanup pull requests.",
60256
60309
  "@auto/onboarding": "Retired standalone onboarding guidance retained for exact-version compatibility.",
@@ -60826,11 +60879,11 @@ var init_catalog = __esm({
60826
60879
  template: "@auto/issue-triage",
60827
60880
  files: [
60828
60881
  {
60829
- subpath: "agents/issue-triage-linear.yaml",
60882
+ subpath: "agents/issue-triage-linear-slack.yaml",
60830
60883
  agentFileName: "issue-triage"
60831
60884
  },
60832
60885
  {
60833
- subpath: "agents/issue-coder-linear.yaml",
60886
+ subpath: "agents/issue-coder-linear-slack.yaml",
60834
60887
  agentFileName: "issue-coder"
60835
60888
  }
60836
60889
  ],
@@ -60839,7 +60892,7 @@ var init_catalog = __esm({
60839
60892
  avatarAsset: "triage.png",
60840
60893
  category: "operations",
60841
60894
  oneLiner: "Triages new issues into implementation-ready work, then hands them to a coder.",
60842
- 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.",
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.",
60843
60896
  harness: "claude-code",
60844
60897
  model: "claude-opus-4-8",
60845
60898
  triggers: [
@@ -60847,7 +60900,7 @@ var init_catalog = __esm({
60847
60900
  kind: "linear",
60848
60901
  title: "Issue intake",
60849
60902
  description: "Triages Linear issues when the auto-triage label is added at creation or later.",
60850
- availability: "core",
60903
+ availability: "optional",
60851
60904
  connection: "linear"
60852
60905
  },
60853
60906
  {
@@ -60858,9 +60911,9 @@ var init_catalog = __esm({
60858
60911
  connection: "slack"
60859
60912
  }
60860
60913
  ],
60861
- requires: ["linear"],
60862
- optionalConnections: ["slack"],
60863
- variables: ["repoFullName", "linearConnection"],
60914
+ requires: [],
60915
+ optionalConnections: ["linear", "slack"],
60916
+ variables: ["repoFullName"],
60864
60917
  substrate: { role: "issue-triage", id: "linear", label: "Linear" }
60865
60918
  },
60866
60919
  {
@@ -65077,7 +65130,7 @@ var init_package = __esm({
65077
65130
  "package.json"() {
65078
65131
  package_default = {
65079
65132
  name: "@autohq/cli",
65080
- version: "0.1.496",
65133
+ version: "0.1.498",
65081
65134
  license: "SEE LICENSE IN README.md",
65082
65135
  publishConfig: {
65083
65136
  access: "public"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autohq/cli",
3
- "version": "0.1.496",
3
+ "version": "0.1.498",
4
4
  "license": "SEE LICENSE IN README.md",
5
5
  "publishConfig": {
6
6
  "access": "public"