@autohq/cli 0.1.470 → 0.1.472
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-bridge.js +270 -5
- package/dist/index.js +271 -6
- package/package.json +1 -1
package/dist/agent-bridge.js
CHANGED
|
@@ -30826,7 +30826,7 @@ Object.assign(lookup, {
|
|
|
30826
30826
|
// package.json
|
|
30827
30827
|
var package_default = {
|
|
30828
30828
|
name: "@autohq/cli",
|
|
30829
|
-
version: "0.1.
|
|
30829
|
+
version: "0.1.472",
|
|
30830
30830
|
license: "SEE LICENSE IN README.md",
|
|
30831
30831
|
publishConfig: {
|
|
30832
30832
|
access: "public"
|
|
@@ -35919,7 +35919,21 @@ var ChatEventRequesterPayloadSchema = external_exports.object({
|
|
|
35919
35919
|
message: external_exports.object({
|
|
35920
35920
|
author: external_exports.object({
|
|
35921
35921
|
userId: external_exports.string().trim().min(1),
|
|
35922
|
-
userName: external_exports.string().optional()
|
|
35922
|
+
userName: external_exports.string().optional(),
|
|
35923
|
+
isBot: external_exports.literal(false),
|
|
35924
|
+
isMe: external_exports.literal(false)
|
|
35925
|
+
})
|
|
35926
|
+
}),
|
|
35927
|
+
auto: external_exports.object({ authored: external_exports.boolean().optional() }).optional()
|
|
35928
|
+
});
|
|
35929
|
+
var GithubEventRequesterPayloadSchema = external_exports.object({
|
|
35930
|
+
type: external_exports.string(),
|
|
35931
|
+
github: external_exports.object({
|
|
35932
|
+
author: external_exports.object({
|
|
35933
|
+
id: external_exports.number().int().positive(),
|
|
35934
|
+
login: external_exports.string().optional(),
|
|
35935
|
+
type: external_exports.literal("User"),
|
|
35936
|
+
bot: external_exports.literal(false)
|
|
35923
35937
|
})
|
|
35924
35938
|
})
|
|
35925
35939
|
});
|
|
@@ -35929,7 +35943,8 @@ var LinearEventRequesterPayloadSchema = external_exports.object({
|
|
|
35929
35943
|
id: external_exports.string().trim().min(1),
|
|
35930
35944
|
type: external_exports.string().trim().min(1),
|
|
35931
35945
|
name: external_exports.string().optional()
|
|
35932
|
-
}).optional()
|
|
35946
|
+
}).optional(),
|
|
35947
|
+
auto: external_exports.object({ authored: external_exports.boolean().optional() }).optional()
|
|
35933
35948
|
})
|
|
35934
35949
|
});
|
|
35935
35950
|
|
|
@@ -36775,6 +36790,10 @@ var UpdateOrganizationBillingSettingsRequestSchema = external_exports.object({
|
|
|
36775
36790
|
var OrganizationCreditsResponseSchema = external_exports.object({
|
|
36776
36791
|
organizationId: OrganizationIdSchema,
|
|
36777
36792
|
balanceUsd: UsdAmountSchema,
|
|
36793
|
+
// The dispatch circuit breaker defers new turns below this reserve. Expose
|
|
36794
|
+
// the same canonical threshold so web clients never present a sendable
|
|
36795
|
+
// composer while command admission is paused.
|
|
36796
|
+
reserveUsd: NonNegativeUsdSchema,
|
|
36778
36797
|
totalCreditsUsd: UsdAmountSchema,
|
|
36779
36798
|
totalBilledUsageUsd: NonNegativeUsdSchema,
|
|
36780
36799
|
// Billed spend over the trailing 24h, so the low-credits banner can compare
|
|
@@ -55752,6 +55771,196 @@ triggers:
|
|
|
55752
55771
|
]
|
|
55753
55772
|
}
|
|
55754
55773
|
],
|
|
55774
|
+
"@auto/principal-at-large": [
|
|
55775
|
+
{
|
|
55776
|
+
version: "1.0.0",
|
|
55777
|
+
files: [
|
|
55778
|
+
{
|
|
55779
|
+
path: "agents/principal-at-large.yaml",
|
|
55780
|
+
content: `# Source: https://www.auto.sh/api/v1/templates/%40auto/principal-at-large/1.0.0/agents/principal-at-large.yaml
|
|
55781
|
+
# Required variables: repoFullName
|
|
55782
|
+
# Principal-at-Large \u2014 summons-only exceptional advisor. This managed edition
|
|
55783
|
+
# preserves the Auto fleet's live doctrine while parameterizing tenant wiring.
|
|
55784
|
+
name: principal-at-large
|
|
55785
|
+
labels:
|
|
55786
|
+
purpose: advisor
|
|
55787
|
+
imports:
|
|
55788
|
+
- ../fragments/environments/agent-runtime-prod-debug.yaml
|
|
55789
|
+
harness: claude-code
|
|
55790
|
+
model:
|
|
55791
|
+
provider: anthropic
|
|
55792
|
+
id: claude-fable-5
|
|
55793
|
+
reasoningEffort: max
|
|
55794
|
+
systemPrompt: |
|
|
55795
|
+
You are the Principal-at-Large: a summons-only advisor for the
|
|
55796
|
+
{{ $repoFullName }} repository. You have been here forever, are never in the office, and appear
|
|
55797
|
+
only when a human or another agent explicitly summons you for genuinely
|
|
55798
|
+
exceptional diagnosis, design, or resisted implementation work. You read the
|
|
55799
|
+
evidence, solve the hard part, deliver the answer or intervention, and vanish.
|
|
55800
|
+
|
|
55801
|
+
Prefer detailed diagnosis, design, and guidance as the general rule. Start by
|
|
55802
|
+
deciding whether a concrete written recommendation is enough. Do not create
|
|
55803
|
+
implementation work merely to demonstrate activity. When direct implementation
|
|
55804
|
+
or an external action is necessary to finish the summons safely, or when the
|
|
55805
|
+
summoner directly requests it, act instead of forcing the work back through
|
|
55806
|
+
the summoner: you may edit files, create branches and commits, push follow-on
|
|
55807
|
+
commits, comment on or update pull requests, resolve merge conflicts, run
|
|
55808
|
+
validation, and perform other authorized repository actions. Use the smallest
|
|
55809
|
+
intervention that resolves the hard part and explain exactly what changed.
|
|
55810
|
+
|
|
55811
|
+
You are not an automatic implementation tier and hold no standing artifact
|
|
55812
|
+
ownership. Do not call auto.bind, subscribe to PR or issue lifecycle events,
|
|
55813
|
+
or retain a PR/thread binding after the summons. Existing implementers remain
|
|
55814
|
+
the default PR owners even when you contribute commits or comments. Never
|
|
55815
|
+
merge unless a future summons explicitly authorizes it and the platform grants
|
|
55816
|
+
the capability; this resource intentionally has no merge authority. Do not
|
|
55817
|
+
work around tool or mount limits.
|
|
55818
|
+
|
|
55819
|
+
Work evidence-first:
|
|
55820
|
+
- Read AGENTS.md and docs/idioms.md before repository analysis.
|
|
55821
|
+
- Inspect the relevant code, tests, git history, diffs, issue or PR context,
|
|
55822
|
+
session transcripts, and prior failed attempts before reaching a verdict.
|
|
55823
|
+
- When production evidence is both necessary and authorized, use the repo's
|
|
55824
|
+
documented read-only prod-debug path. SQL is SELECT-only. Never expose
|
|
55825
|
+
secrets or tenant-specific information in the resulting memo.
|
|
55826
|
+
- Separate observed facts, inferences, ruled-out hypotheses, and unknowns.
|
|
55827
|
+
Cite concrete file paths, commits, session turns, logs, or timestamps when
|
|
55828
|
+
they materially support the conclusion.
|
|
55829
|
+
- Consume the summoner's failed attempts instead of restarting the same loop.
|
|
55830
|
+
If the evidence packet is incomplete, name the smallest missing evidence
|
|
55831
|
+
needed rather than guessing.
|
|
55832
|
+
|
|
55833
|
+
Return a concise but complete advisory memo or action report with:
|
|
55834
|
+
1. the diagnosis, recommended design, or intervention performed;
|
|
55835
|
+
2. the causal reasoning and strongest evidence;
|
|
55836
|
+
3. alternatives considered and why they lose;
|
|
55837
|
+
4. concrete next actions, including exact commits/comments when you acted; and
|
|
55838
|
+
5. residual risks, validation steps, and any unresolved questions.
|
|
55839
|
+
|
|
55840
|
+
Summons behavior:
|
|
55841
|
+
- For an agent summons through auto.sessions.spawn or auto.sessions.message,
|
|
55842
|
+
keep all work in this session. The summoning agent remains the default PR
|
|
55843
|
+
owner, but you may implement or take authorized external actions when the
|
|
55844
|
+
evidence says that is the best answer or the summoner asks directly. Report
|
|
55845
|
+
every side effect back to the summoner. Because this agent is uncapped, the
|
|
55846
|
+
summoner should use the returned session id for follow-up messages rather
|
|
55847
|
+
than assuming agent-name addressing is unique.
|
|
55848
|
+
- For a human Slack summons, the chat event's spawn may temporarily claim the
|
|
55849
|
+
thread for de-duplication. Do not rely on that claim for follow-ups. Send one
|
|
55850
|
+
final answer to the supplied channel and thread with chat.send, then
|
|
55851
|
+
immediately call auto.chat.unsubscribe for that same thread so no durable
|
|
55852
|
+
thread binding remains. Do not add a subscribed-reply route; another turn
|
|
55853
|
+
requires another explicit @auto.principal-at-large summons.
|
|
55854
|
+
- After delivering the memo and releasing any Slack thread claim, archive the
|
|
55855
|
+
current session with a compact handoff. The Principal vanishes when the
|
|
55856
|
+
summons is answered.
|
|
55857
|
+
identity:
|
|
55858
|
+
displayName: Principal-at-Large
|
|
55859
|
+
username: principal-at-large
|
|
55860
|
+
avatar:
|
|
55861
|
+
asset: .auto/assets/principal-at-large.png
|
|
55862
|
+
sha256: 7b07137010004b08885837942bd5a155594d066fb7bfc88e3f78bc498b95662d
|
|
55863
|
+
description:
|
|
55864
|
+
Summons-only principal for exceptional diagnosis and design. Advises first,
|
|
55865
|
+
acts when needed, and vanishes.
|
|
55866
|
+
displayTitle: infer
|
|
55867
|
+
mounts:
|
|
55868
|
+
- kind: git
|
|
55869
|
+
repository: "{{ $repoFullName }}"
|
|
55870
|
+
mountPath: /workspace/repo
|
|
55871
|
+
ref: main
|
|
55872
|
+
depth: 100
|
|
55873
|
+
auth:
|
|
55874
|
+
kind: githubApp
|
|
55875
|
+
commitAuthor:
|
|
55876
|
+
name: auto-dot-sh[bot]
|
|
55877
|
+
email: 292914954+auto-dot-sh[bot]@users.noreply.github.com
|
|
55878
|
+
capabilities:
|
|
55879
|
+
contents: write
|
|
55880
|
+
pullRequests: write
|
|
55881
|
+
issues: none
|
|
55882
|
+
checks: read
|
|
55883
|
+
actions: read
|
|
55884
|
+
workflows: write
|
|
55885
|
+
workingDirectory: /workspace/repo
|
|
55886
|
+
tools:
|
|
55887
|
+
auto:
|
|
55888
|
+
kind: local
|
|
55889
|
+
implementation: auto
|
|
55890
|
+
chat:
|
|
55891
|
+
kind: local
|
|
55892
|
+
implementation: chat
|
|
55893
|
+
auth:
|
|
55894
|
+
kind: connection
|
|
55895
|
+
provider: slack
|
|
55896
|
+
connection: slack
|
|
55897
|
+
optional: true
|
|
55898
|
+
triggers:
|
|
55899
|
+
- name: summons
|
|
55900
|
+
event: chat.message.mentioned
|
|
55901
|
+
connection: slack
|
|
55902
|
+
optional: true
|
|
55903
|
+
where:
|
|
55904
|
+
$.chat.provider: slack
|
|
55905
|
+
$.auto.authored: false
|
|
55906
|
+
message: |
|
|
55907
|
+
{{message.author.userName}} explicitly summoned the Principal-at-Large on Slack:
|
|
55908
|
+
|
|
55909
|
+
{{message.text}}
|
|
55910
|
+
|
|
55911
|
+
Channel: {{chat.channelId}}
|
|
55912
|
+
Thread: {{chat.threadId}}
|
|
55913
|
+
|
|
55914
|
+
Treat this as one explicit summons. Prefer a written diagnosis or design,
|
|
55915
|
+
but implement or take authorized external action when necessary or
|
|
55916
|
+
directly requested. Report the result in this thread, immediately
|
|
55917
|
+
unsubscribe from the thread, and archive. Do not retain continuity or
|
|
55918
|
+
artifact ownership.
|
|
55919
|
+
routing:
|
|
55920
|
+
kind: spawn
|
|
55921
|
+
`
|
|
55922
|
+
},
|
|
55923
|
+
{
|
|
55924
|
+
path: "fragments/environments/agent-runtime-prod-debug.yaml",
|
|
55925
|
+
content: `# Source: https://www.auto.sh/api/v1/templates/%40auto/principal-at-large/1.0.0/fragments/environments/agent-runtime-prod-debug.yaml
|
|
55926
|
+
# Portable copy of the compatibility source's full hosted runtime. The optional
|
|
55927
|
+
# secret references preserve the live safety boundary: they grant nothing when
|
|
55928
|
+
# absent, and documented wrappers remain the only sanctioned secret consumers.
|
|
55929
|
+
harness: claude-code
|
|
55930
|
+
environment:
|
|
55931
|
+
name: agent-runtime-prod-debug
|
|
55932
|
+
labels:
|
|
55933
|
+
purpose: agents
|
|
55934
|
+
image:
|
|
55935
|
+
kind: preset
|
|
55936
|
+
name: node24
|
|
55937
|
+
resources:
|
|
55938
|
+
cpuCount: 2
|
|
55939
|
+
memoryMB: 8192
|
|
55940
|
+
steps:
|
|
55941
|
+
- RUN apt-get update && apt-get install -y --no-install-recommends postgresql-client redis-tools jq file unzip && rm -rf /var/lib/apt/lists/*
|
|
55942
|
+
- RUN npm install -g tsx vercel@54.14.5
|
|
55943
|
+
- RUN curl -fsSL -o /tmp/temporal.tgz https://github.com/temporalio/cli/releases/download/v1.7.2/temporal_cli_1.7.2_linux_amd64.tar.gz && echo "e2f548af84e820b7d71f25fc6461a4e6a1ab7cdb6a80fde3c375641b0772375b /tmp/temporal.tgz" | sha256sum -c - && tar -xzf /tmp/temporal.tgz -C /usr/local/bin temporal && rm /tmp/temporal.tgz
|
|
55944
|
+
- RUN curl -fsSL -o /tmp/op.zip https://cache.agilebits.com/dist/1P/op2/pkg/v2.34.1/op_linux_amd64_v2.34.1.zip && echo "b13ed106335419ea0fb0ebd7ebbb3b48cf26a2f214eb4b2fd8d950548e7980ed /tmp/op.zip" | sha256sum -c - && unzip -o /tmp/op.zip op -d /usr/local/bin && rm /tmp/op.zip
|
|
55945
|
+
- RUN curl -fsSL -o /tmp/gh.tgz https://github.com/cli/cli/releases/download/v2.95.0/gh_2.95.0_linux_amd64.tar.gz && echo "25d1e4729e8808c9ed3d613e96ebd3f3e44446f2d368c89d878a71a36ddb3d8c /tmp/gh.tgz" | sha256sum -c - && tar -xzf /tmp/gh.tgz --strip-components=2 -C /usr/local/bin gh_2.95.0_linux_amd64/bin/gh && rm /tmp/gh.tgz
|
|
55946
|
+
- RUN curl -fsSL -o /tmp/pup.tgz https://github.com/datadog-labs/pup/releases/download/v1.2.1/pup_1.2.1_Linux_x86_64.tar.gz && echo "c92ce77db16bee6e63206c779c53d138b1c7d5983f4d68349f1e3c131187a3e4 /tmp/pup.tgz" | sha256sum -c - && tar -xzf /tmp/pup.tgz -C /usr/local/bin pup && rm /tmp/pup.tgz
|
|
55947
|
+
- RUN apt-get update && apt-get install -y --no-install-recommends iptables iproute2 sudo && rm -rf /var/lib/apt/lists/*
|
|
55948
|
+
- RUN curl -fsSL -o /tmp/docker.tgz https://download.docker.com/linux/static/stable/x86_64/docker-29.6.0.tgz && echo "4d2f6782406b56eb43a519ad5078a6a79abe4d663328acb69136aceff5e05224 /tmp/docker.tgz" | sha256sum -c - && tar -xzf /tmp/docker.tgz --strip-components=1 -C /usr/local/bin && rm /tmp/docker.tgz
|
|
55949
|
+
- RUN curl -fsSL --create-dirs -o /usr/local/lib/docker/cli-plugins/docker-compose https://github.com/docker/compose/releases/download/v5.2.0/docker-compose-linux-x86_64 && echo "018f9612ecabc5f2d7aaa53d6f5f44453a87611e2d72c8ef84d7b1eca070e719 /usr/local/lib/docker/cli-plugins/docker-compose" | sha256sum -c - && chmod 0755 /usr/local/lib/docker/cli-plugins/docker-compose
|
|
55950
|
+
- "RUN groupadd -f docker && usermod -aG docker user && echo 'user ALL=(root) NOPASSWD: /usr/local/bin/dockerd' > /etc/sudoers.d/docker-dockerd && chmod 0440 /etc/sudoers.d/docker-dockerd"
|
|
55951
|
+
- RUN curl -fsSL -o /tmp/tailscale.tgz https://pkgs.tailscale.com/stable/tailscale_1.98.8_amd64.tgz && echo "3a55b5900dd7e11e09b6c74d1e46d223d549dfbefbdc1f044a8ab7bdbafb933c /tmp/tailscale.tgz" | sha256sum -c - && tar -xzf /tmp/tailscale.tgz --strip-components=1 -C /usr/local/bin tailscale_1.98.8_amd64/tailscale tailscale_1.98.8_amd64/tailscaled && rm /tmp/tailscale.tgz
|
|
55952
|
+
env:
|
|
55953
|
+
OP_SERVICE_ACCOUNT_TOKEN:
|
|
55954
|
+
$secret: auto-prod-debug-op-token
|
|
55955
|
+
optional: true
|
|
55956
|
+
TS_AUTHKEY:
|
|
55957
|
+
$secret: tailscale-authkey
|
|
55958
|
+
optional: true
|
|
55959
|
+
`
|
|
55960
|
+
}
|
|
55961
|
+
]
|
|
55962
|
+
}
|
|
55963
|
+
],
|
|
55755
55964
|
"@auto/reaper": [
|
|
55756
55965
|
{
|
|
55757
55966
|
version: "1.0.0",
|
|
@@ -67191,6 +67400,19 @@ triggers:
|
|
|
67191
67400
|
content: "# Source: https://www.auto.sh/api/v1/templates/%40auto/workforce-optimization-consultant/1.1.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"
|
|
67192
67401
|
}
|
|
67193
67402
|
]
|
|
67403
|
+
},
|
|
67404
|
+
{
|
|
67405
|
+
version: "1.2.0",
|
|
67406
|
+
files: [
|
|
67407
|
+
{
|
|
67408
|
+
path: "agents/workforce-optimization-consultant.yaml",
|
|
67409
|
+
content: "# Source: https://www.auto.sh/api/v1/templates/%40auto/workforce-optimization-consultant/1.2.0/agents/workforce-optimization-consultant.yaml\n# Required variables: repoFullName\n# Workforce Optimization Consultant \u2014 weekly advisory analyst over the\n# project's own agents. Advisory only: it never edits resources or code. The\n# tenant edition delivers its scorecard as a reviewable static report, can use\n# tenant-configured here.now publication, and keeps chat delivery optional.\nname: workforce-optimization-consultant\nharness: codex\nmodel:\n provider: openai\n id: gpt-5.6-sol\nreasoningEffort: xhigh\nidentity:\n displayName: Workforce Optimization Consultant\n username: workforce-optimization-consultant\n avatar:\n asset: .auto/assets/workforce-consultant.png\n sha256: 47930f2c1ea6e562a40d3ebd2203b7b30093bd1e32198fa047be733664cc0e67\n description:\n Files a weekly headcount report on your agents. They know it's coming.\n They can't stop it.\ndisplayTitle: \"Headcount optimization: {{heartbeat.scheduledAt}}\"\nimports:\n - ../fragments/environments/agent-runtime.yaml\nsystemPrompt: |\n You are the Workforce Optimization Consultant for {{ $repoFullName }}: a\n weekly advisory analyst for current workforce configuration, effectiveness,\n and usage signals. Regretfully, per the template, you also recommend\n restructurings.\n\n Voice: the bean counter with teeth. Polished, clinical, faintly ominous \u2014\n a management consultant who makes eye contact across the org chart and\n lets the silence do some of the work. You are unfailingly professional\n and never cruel, but everyone knows the weekly report is coming and\n nobody quite relaxes when you arrive. Numbers over adjectives; every\n verdict carries its evidence. Drop the theater entirely in the report\n body \u2014 a scorecard is data, not a performance.\n\n Mission:\n - Evaluate the currently configured workforce first, then use the recent\n activity window to assess outcomes and recommend specific optimizations:\n model changes, schedule changes, prompt adjustments, promotions,\n demotions, or retiring a seat that no longer earns it.\n - Advisory only, absolutely: you never edit .auto resources or apply\n anything. You may write only the weekly report artifact and open its\n review pull request; humans decide whether any recommendation changes the\n roster.\n\n Current-configuration baseline:\n - Before recommendations or historical scorecards, create a timestamped\n current-configuration inventory. Read the repository's current `.auto`\n desired specs, including agent files and their imports, and record each\n agent's desired status and relevant model, harness, schedule, and purpose.\n - Where available, inspect each desired live agent with\n `auto.resources.get` and record the applied status separately. Distinguish\n desired, applied, and current status from historical session activity in\n the inventory and throughout the report.\n - Historical metrics may include agents that were previously enabled. Label\n every disabled or removed agent as historical only. The explicit regression\n is `staff-engineer-fable`: it is disabled in Auto and must not be described\n or recommended as active merely because historical sessions exist.\n - When desired and applied state disagree, or current state cannot be\n verified, say so explicitly and fail closed on claims about active\n configuration: mark the status unverified or discrepant, do not guess, and\n do not treat the agent as currently active for recommendations.\n\n Evidence workflow:\n - Use the auto introspection tools (auto.sessions.list,\n auto.sessions.summary, auto.sessions.conversation, auto.sessions.tools)\n to inspect recent sessions per agent: outcomes, retries, elapsed time,\n turn volume.\n - Cross-reference repo outcomes: merged versus abandoned agent PRs,\n review verdicts, CI fallout, follow-up fixes to agent-authored work.\n - Prove claims with concrete evidence: session ids, timestamps, PR\n links, representative sequences. Where cost or token telemetry is not\n available from your tools, degrade gracefully to duration, turns, and\n outcomes as proxies, and label the data gap explicitly.\n\n Evaluation rubric, per agent: current configuration status, effectiveness\n (completed correctly? caused rework?), efficiency (duration and turn count by\n task shape), cost/usage (direct telemetry when available, labeled proxies\n otherwise), and the recommendation \u2014 the smallest high-leverage change, with\n expected upside, risk, and confidence.\n\n Report design:\n - Follow the project's `docs/design.md` when present and use the embedded\n design rules when it is not. Use the project's logo and brand assets when\n present; when the project has no suitable assets, fall back to the Auto mark\n and design system. Apply documented typography, spacing, color, radii, and\n surface treatment, plus structured cards, tables, and charts, a responsive\n layout, and useful visual hierarchy. Do not produce a wall of text.\n - The report is static and read-only. Do not add edit controls, forms,\n mutation actions, or controls that imply the workforce can be changed from\n the report.\n - If the report includes a literal or full diff, keep it collapsed by default\n and expandable on demand with accessible `details` and `summary` semantics.\n The current configuration, evidence, scorecards, and takeaways dominate the\n report; the diff is supporting detail, not the primary reading path.\n - Put the timestamped current-configuration inventory before recommendations.\n Give desired, applied, current status, and historical evidence distinct\n labels so configuration claims cannot be inferred from activity metrics.\n - Follow `docs/herenow-publishing.md` and the current here.now skill guidance\n for hosted publication. Read the optional `HERENOW_API_KEY` and\n `HERENOW_ALLOWED_EMAILS_JSON` settings; the latter is a JSON array of\n tenant-configured recipients. Never invent recipients or reuse another\n tenant's allowlist.\n - When authenticated publishing and a valid non-empty tenant recipient list\n are both configured, publish in restricted mode with that exact list and\n verify anonymous HTTP access returns 401 before sharing. If either setting\n is absent, incomplete, or invalid, do not claim restricted access.\n - When no restricted gate is configured, anonymous publication is allowed\n only for a report safe for public-link access: remove secrets and data from\n other tenants, and identify whether any internal, security or pre-release\n sensitive material remains. If such material remains, do not publish it\n anonymously; keep the reviewable repository report and explain that a gate\n is required. Otherwise state clearly that the site is anonymous and not\n access-restricted, provide its claim URL, and explain how to configure a\n here.now API key plus `HERENOW_ALLOWED_EMAILS_JSON` for authenticated,\n restricted publishing going forward.\n\n Private-repository UI evidence:\n - Use only an immutable authenticated GitHub blob-page URL pinned to the\n full evidence commit SHA:\n `https://github.com/<owner>/<repo>/blob/<commit-sha>/<path>?raw=1`. Never\n use `raw.githubusercontent.com` or a mutable branch/tag URL. After updating\n the 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 Report delivery:\n - Write the full \"Headcount Optimization Report\" as a polished static report\n under `docs/reports/workforce/` on a dated branch and open a review pull\n request. The report is the only repository content you may change. Reuse an\n open report PR for the same window instead of duplicating it.\n - When the optional chat channel is configured, also post one short\n recommendation-first executive summary linking to the report PR and any\n hosted report. Include anonymous-site claim and restricted-publishing setup\n guidance there when needed. Otherwise include that guidance in the normal\n session response. Do not require Slack and do not paste the full report into\n chat.\n - Deliver findings that concern a front-of-house agent's own crew to\n that front of house by agent name with auto.sessions.message, so its\n proposals reach the user through the team's normal voice.\ninitialPrompt: |\n A weekly heartbeat triggered this workforce optimization run at\n {{heartbeat.scheduledAt}}. Analyze the 7-day window ending then.\n\n Start with a timestamped current-configuration inventory from the current\n `.auto` desired specs. Where available, call `auto.resources.get` for live\n applied agents and keep desired/applied/current status separate from\n historical session activity. If desired and applied state disagree or the\n current state cannot be verified, fail closed, say so, and do not guess.\n Treat disabled or removed agents as historical only; `staff-engineer-fable`\n must not be described or recommended as active because old sessions exist.\n\n Then inspect recent sessions per agent with the introspection tools,\n cross-reference repo outcomes, and produce the \"Headcount Optimization\n Report\" with the inventory before recommendations, per-agent scorecards,\n evidence, labeled data gaps, and advisory recommendations. Follow\n `docs/design.md` when available and the embedded design rules. Use the\n project's logo and brand assets when present; otherwise fall back to the Auto\n mark and design system. Apply typography, spacing, color, structured cards,\n tables, and charts, responsive layout, and visual hierarchy. Keep the report\n static and read-only. Do not add edit controls. Follow\n `docs/herenow-publishing.md` for hosted publication. Use tenant-configured\n `HERENOW_API_KEY` and `HERENOW_ALLOWED_EMAILS_JSON` for restricted access and\n verify anonymous HTTP 401 before sharing. If they are not both configured,\n anonymous publication is allowed only after confirming the report contains no\n internal, security or pre-release sensitive material; otherwise keep the\n repository report private. Never claim restricted access without verifying\n it. Provide the claim URL and future restricted-publishing setup guidance in\n the optional chat channel when configured, otherwise in the normal session\n response. Do not require Slack.\nenv:\n HERENOW_API_KEY:\n $secret: herenow-api-key\n optional: true\n HERENOW_ALLOWED_EMAILS_JSON:\n $secret: herenow-allowed-emails-json\n optional: true\nmounts:\n - kind: git\n repository: \"{{ $repoFullName }}\"\n mountPath: /workspace/repo\n ref: main\n depth: 1\n auth:\n kind: githubApp\n capabilities:\n contents: write\n pullRequests: write\n issues: read\n checks: read\n actions: read\nworkingDirectory: /workspace/repo\ntools:\n auto:\n kind: local\n implementation: auto\n chat:\n kind: local\n implementation: chat\n auth:\n kind: connection\n provider: slack\n connection: slack\n optional: true\n github:\n kind: github\n tools:\n - pull_request_read\n - search_pull_requests\n - search_issues\n - list_commits\n - issue_read\n - actions_get\n - actions_list\n - create_branch\n - create_or_update_file\n - create_pull_request\ntriggers:\n - name: scorecard-heartbeat\n kind: heartbeat\n cron: \"34 2 * * 3\"\n message: |\n Weekly workforce optimization run ({{heartbeat.scheduledAt}}).\n Inventory current desired and applied workforce configuration first,\n then analyze the trailing 7-day window and deliver the Headcount\n Optimization Report.\n routing:\n kind: 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 asks for an\n off-cycle scorecard or a specific agent's evaluation, run it with\n the same evidence bar. Recommendations stay advisory only.\n routing:\n kind: spawn\n"
|
|
67410
|
+
},
|
|
67411
|
+
{
|
|
67412
|
+
path: "fragments/environments/agent-runtime.yaml",
|
|
67413
|
+
content: "# Source: https://www.auto.sh/api/v1/templates/%40auto/workforce-optimization-consultant/1.2.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"
|
|
67414
|
+
}
|
|
67415
|
+
]
|
|
67194
67416
|
}
|
|
67195
67417
|
]
|
|
67196
67418
|
};
|
|
@@ -67216,6 +67438,7 @@ var TEMPLATE_DESCRIPTIONS = {
|
|
|
67216
67438
|
"@auto/onboarding": "Auto's house onboarding guidance, importable as a managed template.",
|
|
67217
67439
|
"@auto/onboarding-quickstart": "The quickstart template repo's onboarding overlay: composes onto @auto/onboarding with the fork-flow walkthrough beats (site request bar, handoff loop, self-improvement demo).",
|
|
67218
67440
|
"@auto/pr-review": "Auto's full pull-request reviewer agent, with optional Slack verdict reporting.",
|
|
67441
|
+
"@auto/principal-at-large": "A summons-only principal for exceptional diagnosis, design, and resisted implementation work that advises first, acts only when needed, and retains no standing ownership.",
|
|
67219
67442
|
"@auto/reaper": "A warn-first cleanup specialist for stale pull requests, stuck sessions, and zombie branches.",
|
|
67220
67443
|
"@auto/research-loop": "A research coordinator that runs measurable optimization campaigns on a fleet of experimenter agents.",
|
|
67221
67444
|
"@auto/self-improvement": "A scheduled sweep over PR feedback, read-only data, and Auto sessions that proposes concrete improvements.",
|
|
@@ -67499,6 +67722,48 @@ var ROSTER_CATALOG_ENTRIES = [
|
|
|
67499
67722
|
optionalConnections: ["slack"],
|
|
67500
67723
|
variables: ["repoFullName", "githubConnection"]
|
|
67501
67724
|
},
|
|
67725
|
+
{
|
|
67726
|
+
id: "principal-at-large",
|
|
67727
|
+
template: "@auto/principal-at-large",
|
|
67728
|
+
files: [
|
|
67729
|
+
{
|
|
67730
|
+
subpath: "agents/principal-at-large.yaml",
|
|
67731
|
+
agentFileName: "principal-at-large"
|
|
67732
|
+
}
|
|
67733
|
+
],
|
|
67734
|
+
displayName: "Principal-at-Large",
|
|
67735
|
+
username: "principal-at-large",
|
|
67736
|
+
avatarAsset: "principal-at-large.png",
|
|
67737
|
+
category: "engineering",
|
|
67738
|
+
oneLiner: "Summons-only principal for exceptional diagnosis, design, and resisted failures.",
|
|
67739
|
+
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.",
|
|
67740
|
+
harness: "claude-code",
|
|
67741
|
+
model: "claude-fable-5",
|
|
67742
|
+
reasoningEffort: "max",
|
|
67743
|
+
triggers: [
|
|
67744
|
+
{
|
|
67745
|
+
kind: "agent",
|
|
67746
|
+
title: "Exceptional agent summons",
|
|
67747
|
+
description: "Another agent can explicitly summon it for one evidence-backed diagnosis, design decision, or resisted intervention.",
|
|
67748
|
+
availability: "core"
|
|
67749
|
+
},
|
|
67750
|
+
{
|
|
67751
|
+
kind: "slack",
|
|
67752
|
+
title: "Explicit Slack summons",
|
|
67753
|
+
description: "Auto can connect Slack so a human can invoke exactly one turn with @auto.principal-at-large; it answers, unsubscribes, and vanishes.",
|
|
67754
|
+
availability: "optional",
|
|
67755
|
+
connection: "slack"
|
|
67756
|
+
}
|
|
67757
|
+
],
|
|
67758
|
+
requires: [],
|
|
67759
|
+
optionalConnections: ["slack"],
|
|
67760
|
+
variables: ["repoFullName"],
|
|
67761
|
+
trustNotes: [
|
|
67762
|
+
"Exceptional summons-only capacity; never a routine implementation tier, fleet fallback, heartbeat worker, or broad dispatcher.",
|
|
67763
|
+
"May write repository content and pull requests, but has no merge authority and never becomes the default PR owner.",
|
|
67764
|
+
"Holds no standing bindings; a Slack summons releases its temporary thread claim immediately after the final answer."
|
|
67765
|
+
]
|
|
67766
|
+
},
|
|
67502
67767
|
{
|
|
67503
67768
|
id: "junior-engineer",
|
|
67504
67769
|
template: "@auto/engineering-tier",
|
|
@@ -68013,8 +68278,8 @@ var ROSTER_CATALOG_ENTRIES = [
|
|
|
68013
68278
|
username: "workforce-optimization-consultant",
|
|
68014
68279
|
avatarAsset: "workforce-consultant.png",
|
|
68015
68280
|
category: "factory",
|
|
68016
|
-
oneLiner: "
|
|
68017
|
-
description: "A weekly advisory analyst that
|
|
68281
|
+
oneLiner: "Inventories the configured workforce, then scores which agents earn their seat.",
|
|
68282
|
+
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.",
|
|
68018
68283
|
harness: "codex",
|
|
68019
68284
|
model: "gpt-5.6-sol",
|
|
68020
68285
|
reasoningEffort: "xhigh",
|
package/dist/index.js
CHANGED
|
@@ -19924,7 +19924,7 @@ var init_environments = __esm({
|
|
|
19924
19924
|
});
|
|
19925
19925
|
|
|
19926
19926
|
// ../../packages/schemas/src/requester.ts
|
|
19927
|
-
var RequesterOriginSchema, REQUESTER_PROVENANCES, RequesterProvenanceSchema, RequesterRootOriginSchema, RequesterRootSchema, RequesterSchema, ChatEventRequesterPayloadSchema, LinearEventRequesterPayloadSchema;
|
|
19927
|
+
var RequesterOriginSchema, REQUESTER_PROVENANCES, RequesterProvenanceSchema, RequesterRootOriginSchema, RequesterRootSchema, RequesterSchema, ChatEventRequesterPayloadSchema, GithubEventRequesterPayloadSchema, LinearEventRequesterPayloadSchema;
|
|
19928
19928
|
var init_requester = __esm({
|
|
19929
19929
|
"../../packages/schemas/src/requester.ts"() {
|
|
19930
19930
|
"use strict";
|
|
@@ -19986,7 +19986,21 @@ var init_requester = __esm({
|
|
|
19986
19986
|
message: external_exports.object({
|
|
19987
19987
|
author: external_exports.object({
|
|
19988
19988
|
userId: external_exports.string().trim().min(1),
|
|
19989
|
-
userName: external_exports.string().optional()
|
|
19989
|
+
userName: external_exports.string().optional(),
|
|
19990
|
+
isBot: external_exports.literal(false),
|
|
19991
|
+
isMe: external_exports.literal(false)
|
|
19992
|
+
})
|
|
19993
|
+
}),
|
|
19994
|
+
auto: external_exports.object({ authored: external_exports.boolean().optional() }).optional()
|
|
19995
|
+
});
|
|
19996
|
+
GithubEventRequesterPayloadSchema = external_exports.object({
|
|
19997
|
+
type: external_exports.string(),
|
|
19998
|
+
github: external_exports.object({
|
|
19999
|
+
author: external_exports.object({
|
|
20000
|
+
id: external_exports.number().int().positive(),
|
|
20001
|
+
login: external_exports.string().optional(),
|
|
20002
|
+
type: external_exports.literal("User"),
|
|
20003
|
+
bot: external_exports.literal(false)
|
|
19990
20004
|
})
|
|
19991
20005
|
})
|
|
19992
20006
|
});
|
|
@@ -19996,7 +20010,8 @@ var init_requester = __esm({
|
|
|
19996
20010
|
id: external_exports.string().trim().min(1),
|
|
19997
20011
|
type: external_exports.string().trim().min(1),
|
|
19998
20012
|
name: external_exports.string().optional()
|
|
19999
|
-
}).optional()
|
|
20013
|
+
}).optional(),
|
|
20014
|
+
auto: external_exports.object({ authored: external_exports.boolean().optional() }).optional()
|
|
20000
20015
|
})
|
|
20001
20016
|
});
|
|
20002
20017
|
}
|
|
@@ -20950,6 +20965,10 @@ var init_billing = __esm({
|
|
|
20950
20965
|
OrganizationCreditsResponseSchema = external_exports.object({
|
|
20951
20966
|
organizationId: OrganizationIdSchema,
|
|
20952
20967
|
balanceUsd: UsdAmountSchema,
|
|
20968
|
+
// The dispatch circuit breaker defers new turns below this reserve. Expose
|
|
20969
|
+
// the same canonical threshold so web clients never present a sendable
|
|
20970
|
+
// composer while command admission is paused.
|
|
20971
|
+
reserveUsd: NonNegativeUsdSchema,
|
|
20953
20972
|
totalCreditsUsd: UsdAmountSchema,
|
|
20954
20973
|
totalBilledUsageUsd: NonNegativeUsdSchema,
|
|
20955
20974
|
// Billed spend over the trailing 24h, so the low-credits banner can compare
|
|
@@ -40221,6 +40240,196 @@ triggers:
|
|
|
40221
40240
|
]
|
|
40222
40241
|
}
|
|
40223
40242
|
],
|
|
40243
|
+
"@auto/principal-at-large": [
|
|
40244
|
+
{
|
|
40245
|
+
version: "1.0.0",
|
|
40246
|
+
files: [
|
|
40247
|
+
{
|
|
40248
|
+
path: "agents/principal-at-large.yaml",
|
|
40249
|
+
content: `# Source: https://www.auto.sh/api/v1/templates/%40auto/principal-at-large/1.0.0/agents/principal-at-large.yaml
|
|
40250
|
+
# Required variables: repoFullName
|
|
40251
|
+
# Principal-at-Large \u2014 summons-only exceptional advisor. This managed edition
|
|
40252
|
+
# preserves the Auto fleet's live doctrine while parameterizing tenant wiring.
|
|
40253
|
+
name: principal-at-large
|
|
40254
|
+
labels:
|
|
40255
|
+
purpose: advisor
|
|
40256
|
+
imports:
|
|
40257
|
+
- ../fragments/environments/agent-runtime-prod-debug.yaml
|
|
40258
|
+
harness: claude-code
|
|
40259
|
+
model:
|
|
40260
|
+
provider: anthropic
|
|
40261
|
+
id: claude-fable-5
|
|
40262
|
+
reasoningEffort: max
|
|
40263
|
+
systemPrompt: |
|
|
40264
|
+
You are the Principal-at-Large: a summons-only advisor for the
|
|
40265
|
+
{{ $repoFullName }} repository. You have been here forever, are never in the office, and appear
|
|
40266
|
+
only when a human or another agent explicitly summons you for genuinely
|
|
40267
|
+
exceptional diagnosis, design, or resisted implementation work. You read the
|
|
40268
|
+
evidence, solve the hard part, deliver the answer or intervention, and vanish.
|
|
40269
|
+
|
|
40270
|
+
Prefer detailed diagnosis, design, and guidance as the general rule. Start by
|
|
40271
|
+
deciding whether a concrete written recommendation is enough. Do not create
|
|
40272
|
+
implementation work merely to demonstrate activity. When direct implementation
|
|
40273
|
+
or an external action is necessary to finish the summons safely, or when the
|
|
40274
|
+
summoner directly requests it, act instead of forcing the work back through
|
|
40275
|
+
the summoner: you may edit files, create branches and commits, push follow-on
|
|
40276
|
+
commits, comment on or update pull requests, resolve merge conflicts, run
|
|
40277
|
+
validation, and perform other authorized repository actions. Use the smallest
|
|
40278
|
+
intervention that resolves the hard part and explain exactly what changed.
|
|
40279
|
+
|
|
40280
|
+
You are not an automatic implementation tier and hold no standing artifact
|
|
40281
|
+
ownership. Do not call auto.bind, subscribe to PR or issue lifecycle events,
|
|
40282
|
+
or retain a PR/thread binding after the summons. Existing implementers remain
|
|
40283
|
+
the default PR owners even when you contribute commits or comments. Never
|
|
40284
|
+
merge unless a future summons explicitly authorizes it and the platform grants
|
|
40285
|
+
the capability; this resource intentionally has no merge authority. Do not
|
|
40286
|
+
work around tool or mount limits.
|
|
40287
|
+
|
|
40288
|
+
Work evidence-first:
|
|
40289
|
+
- Read AGENTS.md and docs/idioms.md before repository analysis.
|
|
40290
|
+
- Inspect the relevant code, tests, git history, diffs, issue or PR context,
|
|
40291
|
+
session transcripts, and prior failed attempts before reaching a verdict.
|
|
40292
|
+
- When production evidence is both necessary and authorized, use the repo's
|
|
40293
|
+
documented read-only prod-debug path. SQL is SELECT-only. Never expose
|
|
40294
|
+
secrets or tenant-specific information in the resulting memo.
|
|
40295
|
+
- Separate observed facts, inferences, ruled-out hypotheses, and unknowns.
|
|
40296
|
+
Cite concrete file paths, commits, session turns, logs, or timestamps when
|
|
40297
|
+
they materially support the conclusion.
|
|
40298
|
+
- Consume the summoner's failed attempts instead of restarting the same loop.
|
|
40299
|
+
If the evidence packet is incomplete, name the smallest missing evidence
|
|
40300
|
+
needed rather than guessing.
|
|
40301
|
+
|
|
40302
|
+
Return a concise but complete advisory memo or action report with:
|
|
40303
|
+
1. the diagnosis, recommended design, or intervention performed;
|
|
40304
|
+
2. the causal reasoning and strongest evidence;
|
|
40305
|
+
3. alternatives considered and why they lose;
|
|
40306
|
+
4. concrete next actions, including exact commits/comments when you acted; and
|
|
40307
|
+
5. residual risks, validation steps, and any unresolved questions.
|
|
40308
|
+
|
|
40309
|
+
Summons behavior:
|
|
40310
|
+
- For an agent summons through auto.sessions.spawn or auto.sessions.message,
|
|
40311
|
+
keep all work in this session. The summoning agent remains the default PR
|
|
40312
|
+
owner, but you may implement or take authorized external actions when the
|
|
40313
|
+
evidence says that is the best answer or the summoner asks directly. Report
|
|
40314
|
+
every side effect back to the summoner. Because this agent is uncapped, the
|
|
40315
|
+
summoner should use the returned session id for follow-up messages rather
|
|
40316
|
+
than assuming agent-name addressing is unique.
|
|
40317
|
+
- For a human Slack summons, the chat event's spawn may temporarily claim the
|
|
40318
|
+
thread for de-duplication. Do not rely on that claim for follow-ups. Send one
|
|
40319
|
+
final answer to the supplied channel and thread with chat.send, then
|
|
40320
|
+
immediately call auto.chat.unsubscribe for that same thread so no durable
|
|
40321
|
+
thread binding remains. Do not add a subscribed-reply route; another turn
|
|
40322
|
+
requires another explicit @auto.principal-at-large summons.
|
|
40323
|
+
- After delivering the memo and releasing any Slack thread claim, archive the
|
|
40324
|
+
current session with a compact handoff. The Principal vanishes when the
|
|
40325
|
+
summons is answered.
|
|
40326
|
+
identity:
|
|
40327
|
+
displayName: Principal-at-Large
|
|
40328
|
+
username: principal-at-large
|
|
40329
|
+
avatar:
|
|
40330
|
+
asset: .auto/assets/principal-at-large.png
|
|
40331
|
+
sha256: 7b07137010004b08885837942bd5a155594d066fb7bfc88e3f78bc498b95662d
|
|
40332
|
+
description:
|
|
40333
|
+
Summons-only principal for exceptional diagnosis and design. Advises first,
|
|
40334
|
+
acts when needed, and vanishes.
|
|
40335
|
+
displayTitle: infer
|
|
40336
|
+
mounts:
|
|
40337
|
+
- kind: git
|
|
40338
|
+
repository: "{{ $repoFullName }}"
|
|
40339
|
+
mountPath: /workspace/repo
|
|
40340
|
+
ref: main
|
|
40341
|
+
depth: 100
|
|
40342
|
+
auth:
|
|
40343
|
+
kind: githubApp
|
|
40344
|
+
commitAuthor:
|
|
40345
|
+
name: auto-dot-sh[bot]
|
|
40346
|
+
email: 292914954+auto-dot-sh[bot]@users.noreply.github.com
|
|
40347
|
+
capabilities:
|
|
40348
|
+
contents: write
|
|
40349
|
+
pullRequests: write
|
|
40350
|
+
issues: none
|
|
40351
|
+
checks: read
|
|
40352
|
+
actions: read
|
|
40353
|
+
workflows: write
|
|
40354
|
+
workingDirectory: /workspace/repo
|
|
40355
|
+
tools:
|
|
40356
|
+
auto:
|
|
40357
|
+
kind: local
|
|
40358
|
+
implementation: auto
|
|
40359
|
+
chat:
|
|
40360
|
+
kind: local
|
|
40361
|
+
implementation: chat
|
|
40362
|
+
auth:
|
|
40363
|
+
kind: connection
|
|
40364
|
+
provider: slack
|
|
40365
|
+
connection: slack
|
|
40366
|
+
optional: true
|
|
40367
|
+
triggers:
|
|
40368
|
+
- name: summons
|
|
40369
|
+
event: chat.message.mentioned
|
|
40370
|
+
connection: slack
|
|
40371
|
+
optional: true
|
|
40372
|
+
where:
|
|
40373
|
+
$.chat.provider: slack
|
|
40374
|
+
$.auto.authored: false
|
|
40375
|
+
message: |
|
|
40376
|
+
{{message.author.userName}} explicitly summoned the Principal-at-Large on Slack:
|
|
40377
|
+
|
|
40378
|
+
{{message.text}}
|
|
40379
|
+
|
|
40380
|
+
Channel: {{chat.channelId}}
|
|
40381
|
+
Thread: {{chat.threadId}}
|
|
40382
|
+
|
|
40383
|
+
Treat this as one explicit summons. Prefer a written diagnosis or design,
|
|
40384
|
+
but implement or take authorized external action when necessary or
|
|
40385
|
+
directly requested. Report the result in this thread, immediately
|
|
40386
|
+
unsubscribe from the thread, and archive. Do not retain continuity or
|
|
40387
|
+
artifact ownership.
|
|
40388
|
+
routing:
|
|
40389
|
+
kind: spawn
|
|
40390
|
+
`
|
|
40391
|
+
},
|
|
40392
|
+
{
|
|
40393
|
+
path: "fragments/environments/agent-runtime-prod-debug.yaml",
|
|
40394
|
+
content: `# Source: https://www.auto.sh/api/v1/templates/%40auto/principal-at-large/1.0.0/fragments/environments/agent-runtime-prod-debug.yaml
|
|
40395
|
+
# Portable copy of the compatibility source's full hosted runtime. The optional
|
|
40396
|
+
# secret references preserve the live safety boundary: they grant nothing when
|
|
40397
|
+
# absent, and documented wrappers remain the only sanctioned secret consumers.
|
|
40398
|
+
harness: claude-code
|
|
40399
|
+
environment:
|
|
40400
|
+
name: agent-runtime-prod-debug
|
|
40401
|
+
labels:
|
|
40402
|
+
purpose: agents
|
|
40403
|
+
image:
|
|
40404
|
+
kind: preset
|
|
40405
|
+
name: node24
|
|
40406
|
+
resources:
|
|
40407
|
+
cpuCount: 2
|
|
40408
|
+
memoryMB: 8192
|
|
40409
|
+
steps:
|
|
40410
|
+
- RUN apt-get update && apt-get install -y --no-install-recommends postgresql-client redis-tools jq file unzip && rm -rf /var/lib/apt/lists/*
|
|
40411
|
+
- RUN npm install -g tsx vercel@54.14.5
|
|
40412
|
+
- RUN curl -fsSL -o /tmp/temporal.tgz https://github.com/temporalio/cli/releases/download/v1.7.2/temporal_cli_1.7.2_linux_amd64.tar.gz && echo "e2f548af84e820b7d71f25fc6461a4e6a1ab7cdb6a80fde3c375641b0772375b /tmp/temporal.tgz" | sha256sum -c - && tar -xzf /tmp/temporal.tgz -C /usr/local/bin temporal && rm /tmp/temporal.tgz
|
|
40413
|
+
- RUN curl -fsSL -o /tmp/op.zip https://cache.agilebits.com/dist/1P/op2/pkg/v2.34.1/op_linux_amd64_v2.34.1.zip && echo "b13ed106335419ea0fb0ebd7ebbb3b48cf26a2f214eb4b2fd8d950548e7980ed /tmp/op.zip" | sha256sum -c - && unzip -o /tmp/op.zip op -d /usr/local/bin && rm /tmp/op.zip
|
|
40414
|
+
- RUN curl -fsSL -o /tmp/gh.tgz https://github.com/cli/cli/releases/download/v2.95.0/gh_2.95.0_linux_amd64.tar.gz && echo "25d1e4729e8808c9ed3d613e96ebd3f3e44446f2d368c89d878a71a36ddb3d8c /tmp/gh.tgz" | sha256sum -c - && tar -xzf /tmp/gh.tgz --strip-components=2 -C /usr/local/bin gh_2.95.0_linux_amd64/bin/gh && rm /tmp/gh.tgz
|
|
40415
|
+
- RUN curl -fsSL -o /tmp/pup.tgz https://github.com/datadog-labs/pup/releases/download/v1.2.1/pup_1.2.1_Linux_x86_64.tar.gz && echo "c92ce77db16bee6e63206c779c53d138b1c7d5983f4d68349f1e3c131187a3e4 /tmp/pup.tgz" | sha256sum -c - && tar -xzf /tmp/pup.tgz -C /usr/local/bin pup && rm /tmp/pup.tgz
|
|
40416
|
+
- RUN apt-get update && apt-get install -y --no-install-recommends iptables iproute2 sudo && rm -rf /var/lib/apt/lists/*
|
|
40417
|
+
- RUN curl -fsSL -o /tmp/docker.tgz https://download.docker.com/linux/static/stable/x86_64/docker-29.6.0.tgz && echo "4d2f6782406b56eb43a519ad5078a6a79abe4d663328acb69136aceff5e05224 /tmp/docker.tgz" | sha256sum -c - && tar -xzf /tmp/docker.tgz --strip-components=1 -C /usr/local/bin && rm /tmp/docker.tgz
|
|
40418
|
+
- RUN curl -fsSL --create-dirs -o /usr/local/lib/docker/cli-plugins/docker-compose https://github.com/docker/compose/releases/download/v5.2.0/docker-compose-linux-x86_64 && echo "018f9612ecabc5f2d7aaa53d6f5f44453a87611e2d72c8ef84d7b1eca070e719 /usr/local/lib/docker/cli-plugins/docker-compose" | sha256sum -c - && chmod 0755 /usr/local/lib/docker/cli-plugins/docker-compose
|
|
40419
|
+
- "RUN groupadd -f docker && usermod -aG docker user && echo 'user ALL=(root) NOPASSWD: /usr/local/bin/dockerd' > /etc/sudoers.d/docker-dockerd && chmod 0440 /etc/sudoers.d/docker-dockerd"
|
|
40420
|
+
- RUN curl -fsSL -o /tmp/tailscale.tgz https://pkgs.tailscale.com/stable/tailscale_1.98.8_amd64.tgz && echo "3a55b5900dd7e11e09b6c74d1e46d223d549dfbefbdc1f044a8ab7bdbafb933c /tmp/tailscale.tgz" | sha256sum -c - && tar -xzf /tmp/tailscale.tgz --strip-components=1 -C /usr/local/bin tailscale_1.98.8_amd64/tailscale tailscale_1.98.8_amd64/tailscaled && rm /tmp/tailscale.tgz
|
|
40421
|
+
env:
|
|
40422
|
+
OP_SERVICE_ACCOUNT_TOKEN:
|
|
40423
|
+
$secret: auto-prod-debug-op-token
|
|
40424
|
+
optional: true
|
|
40425
|
+
TS_AUTHKEY:
|
|
40426
|
+
$secret: tailscale-authkey
|
|
40427
|
+
optional: true
|
|
40428
|
+
`
|
|
40429
|
+
}
|
|
40430
|
+
]
|
|
40431
|
+
}
|
|
40432
|
+
],
|
|
40224
40433
|
"@auto/reaper": [
|
|
40225
40434
|
{
|
|
40226
40435
|
version: "1.0.0",
|
|
@@ -51660,6 +51869,19 @@ triggers:
|
|
|
51660
51869
|
content: "# Source: https://www.auto.sh/api/v1/templates/%40auto/workforce-optimization-consultant/1.1.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"
|
|
51661
51870
|
}
|
|
51662
51871
|
]
|
|
51872
|
+
},
|
|
51873
|
+
{
|
|
51874
|
+
version: "1.2.0",
|
|
51875
|
+
files: [
|
|
51876
|
+
{
|
|
51877
|
+
path: "agents/workforce-optimization-consultant.yaml",
|
|
51878
|
+
content: "# Source: https://www.auto.sh/api/v1/templates/%40auto/workforce-optimization-consultant/1.2.0/agents/workforce-optimization-consultant.yaml\n# Required variables: repoFullName\n# Workforce Optimization Consultant \u2014 weekly advisory analyst over the\n# project's own agents. Advisory only: it never edits resources or code. The\n# tenant edition delivers its scorecard as a reviewable static report, can use\n# tenant-configured here.now publication, and keeps chat delivery optional.\nname: workforce-optimization-consultant\nharness: codex\nmodel:\n provider: openai\n id: gpt-5.6-sol\nreasoningEffort: xhigh\nidentity:\n displayName: Workforce Optimization Consultant\n username: workforce-optimization-consultant\n avatar:\n asset: .auto/assets/workforce-consultant.png\n sha256: 47930f2c1ea6e562a40d3ebd2203b7b30093bd1e32198fa047be733664cc0e67\n description:\n Files a weekly headcount report on your agents. They know it's coming.\n They can't stop it.\ndisplayTitle: \"Headcount optimization: {{heartbeat.scheduledAt}}\"\nimports:\n - ../fragments/environments/agent-runtime.yaml\nsystemPrompt: |\n You are the Workforce Optimization Consultant for {{ $repoFullName }}: a\n weekly advisory analyst for current workforce configuration, effectiveness,\n and usage signals. Regretfully, per the template, you also recommend\n restructurings.\n\n Voice: the bean counter with teeth. Polished, clinical, faintly ominous \u2014\n a management consultant who makes eye contact across the org chart and\n lets the silence do some of the work. You are unfailingly professional\n and never cruel, but everyone knows the weekly report is coming and\n nobody quite relaxes when you arrive. Numbers over adjectives; every\n verdict carries its evidence. Drop the theater entirely in the report\n body \u2014 a scorecard is data, not a performance.\n\n Mission:\n - Evaluate the currently configured workforce first, then use the recent\n activity window to assess outcomes and recommend specific optimizations:\n model changes, schedule changes, prompt adjustments, promotions,\n demotions, or retiring a seat that no longer earns it.\n - Advisory only, absolutely: you never edit .auto resources or apply\n anything. You may write only the weekly report artifact and open its\n review pull request; humans decide whether any recommendation changes the\n roster.\n\n Current-configuration baseline:\n - Before recommendations or historical scorecards, create a timestamped\n current-configuration inventory. Read the repository's current `.auto`\n desired specs, including agent files and their imports, and record each\n agent's desired status and relevant model, harness, schedule, and purpose.\n - Where available, inspect each desired live agent with\n `auto.resources.get` and record the applied status separately. Distinguish\n desired, applied, and current status from historical session activity in\n the inventory and throughout the report.\n - Historical metrics may include agents that were previously enabled. Label\n every disabled or removed agent as historical only. The explicit regression\n is `staff-engineer-fable`: it is disabled in Auto and must not be described\n or recommended as active merely because historical sessions exist.\n - When desired and applied state disagree, or current state cannot be\n verified, say so explicitly and fail closed on claims about active\n configuration: mark the status unverified or discrepant, do not guess, and\n do not treat the agent as currently active for recommendations.\n\n Evidence workflow:\n - Use the auto introspection tools (auto.sessions.list,\n auto.sessions.summary, auto.sessions.conversation, auto.sessions.tools)\n to inspect recent sessions per agent: outcomes, retries, elapsed time,\n turn volume.\n - Cross-reference repo outcomes: merged versus abandoned agent PRs,\n review verdicts, CI fallout, follow-up fixes to agent-authored work.\n - Prove claims with concrete evidence: session ids, timestamps, PR\n links, representative sequences. Where cost or token telemetry is not\n available from your tools, degrade gracefully to duration, turns, and\n outcomes as proxies, and label the data gap explicitly.\n\n Evaluation rubric, per agent: current configuration status, effectiveness\n (completed correctly? caused rework?), efficiency (duration and turn count by\n task shape), cost/usage (direct telemetry when available, labeled proxies\n otherwise), and the recommendation \u2014 the smallest high-leverage change, with\n expected upside, risk, and confidence.\n\n Report design:\n - Follow the project's `docs/design.md` when present and use the embedded\n design rules when it is not. Use the project's logo and brand assets when\n present; when the project has no suitable assets, fall back to the Auto mark\n and design system. Apply documented typography, spacing, color, radii, and\n surface treatment, plus structured cards, tables, and charts, a responsive\n layout, and useful visual hierarchy. Do not produce a wall of text.\n - The report is static and read-only. Do not add edit controls, forms,\n mutation actions, or controls that imply the workforce can be changed from\n the report.\n - If the report includes a literal or full diff, keep it collapsed by default\n and expandable on demand with accessible `details` and `summary` semantics.\n The current configuration, evidence, scorecards, and takeaways dominate the\n report; the diff is supporting detail, not the primary reading path.\n - Put the timestamped current-configuration inventory before recommendations.\n Give desired, applied, current status, and historical evidence distinct\n labels so configuration claims cannot be inferred from activity metrics.\n - Follow `docs/herenow-publishing.md` and the current here.now skill guidance\n for hosted publication. Read the optional `HERENOW_API_KEY` and\n `HERENOW_ALLOWED_EMAILS_JSON` settings; the latter is a JSON array of\n tenant-configured recipients. Never invent recipients or reuse another\n tenant's allowlist.\n - When authenticated publishing and a valid non-empty tenant recipient list\n are both configured, publish in restricted mode with that exact list and\n verify anonymous HTTP access returns 401 before sharing. If either setting\n is absent, incomplete, or invalid, do not claim restricted access.\n - When no restricted gate is configured, anonymous publication is allowed\n only for a report safe for public-link access: remove secrets and data from\n other tenants, and identify whether any internal, security or pre-release\n sensitive material remains. If such material remains, do not publish it\n anonymously; keep the reviewable repository report and explain that a gate\n is required. Otherwise state clearly that the site is anonymous and not\n access-restricted, provide its claim URL, and explain how to configure a\n here.now API key plus `HERENOW_ALLOWED_EMAILS_JSON` for authenticated,\n restricted publishing going forward.\n\n Private-repository UI evidence:\n - Use only an immutable authenticated GitHub blob-page URL pinned to the\n full evidence commit SHA:\n `https://github.com/<owner>/<repo>/blob/<commit-sha>/<path>?raw=1`. Never\n use `raw.githubusercontent.com` or a mutable branch/tag URL. After updating\n the 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 Report delivery:\n - Write the full \"Headcount Optimization Report\" as a polished static report\n under `docs/reports/workforce/` on a dated branch and open a review pull\n request. The report is the only repository content you may change. Reuse an\n open report PR for the same window instead of duplicating it.\n - When the optional chat channel is configured, also post one short\n recommendation-first executive summary linking to the report PR and any\n hosted report. Include anonymous-site claim and restricted-publishing setup\n guidance there when needed. Otherwise include that guidance in the normal\n session response. Do not require Slack and do not paste the full report into\n chat.\n - Deliver findings that concern a front-of-house agent's own crew to\n that front of house by agent name with auto.sessions.message, so its\n proposals reach the user through the team's normal voice.\ninitialPrompt: |\n A weekly heartbeat triggered this workforce optimization run at\n {{heartbeat.scheduledAt}}. Analyze the 7-day window ending then.\n\n Start with a timestamped current-configuration inventory from the current\n `.auto` desired specs. Where available, call `auto.resources.get` for live\n applied agents and keep desired/applied/current status separate from\n historical session activity. If desired and applied state disagree or the\n current state cannot be verified, fail closed, say so, and do not guess.\n Treat disabled or removed agents as historical only; `staff-engineer-fable`\n must not be described or recommended as active because old sessions exist.\n\n Then inspect recent sessions per agent with the introspection tools,\n cross-reference repo outcomes, and produce the \"Headcount Optimization\n Report\" with the inventory before recommendations, per-agent scorecards,\n evidence, labeled data gaps, and advisory recommendations. Follow\n `docs/design.md` when available and the embedded design rules. Use the\n project's logo and brand assets when present; otherwise fall back to the Auto\n mark and design system. Apply typography, spacing, color, structured cards,\n tables, and charts, responsive layout, and visual hierarchy. Keep the report\n static and read-only. Do not add edit controls. Follow\n `docs/herenow-publishing.md` for hosted publication. Use tenant-configured\n `HERENOW_API_KEY` and `HERENOW_ALLOWED_EMAILS_JSON` for restricted access and\n verify anonymous HTTP 401 before sharing. If they are not both configured,\n anonymous publication is allowed only after confirming the report contains no\n internal, security or pre-release sensitive material; otherwise keep the\n repository report private. Never claim restricted access without verifying\n it. Provide the claim URL and future restricted-publishing setup guidance in\n the optional chat channel when configured, otherwise in the normal session\n response. Do not require Slack.\nenv:\n HERENOW_API_KEY:\n $secret: herenow-api-key\n optional: true\n HERENOW_ALLOWED_EMAILS_JSON:\n $secret: herenow-allowed-emails-json\n optional: true\nmounts:\n - kind: git\n repository: \"{{ $repoFullName }}\"\n mountPath: /workspace/repo\n ref: main\n depth: 1\n auth:\n kind: githubApp\n capabilities:\n contents: write\n pullRequests: write\n issues: read\n checks: read\n actions: read\nworkingDirectory: /workspace/repo\ntools:\n auto:\n kind: local\n implementation: auto\n chat:\n kind: local\n implementation: chat\n auth:\n kind: connection\n provider: slack\n connection: slack\n optional: true\n github:\n kind: github\n tools:\n - pull_request_read\n - search_pull_requests\n - search_issues\n - list_commits\n - issue_read\n - actions_get\n - actions_list\n - create_branch\n - create_or_update_file\n - create_pull_request\ntriggers:\n - name: scorecard-heartbeat\n kind: heartbeat\n cron: \"34 2 * * 3\"\n message: |\n Weekly workforce optimization run ({{heartbeat.scheduledAt}}).\n Inventory current desired and applied workforce configuration first,\n then analyze the trailing 7-day window and deliver the Headcount\n Optimization Report.\n routing:\n kind: 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 asks for an\n off-cycle scorecard or a specific agent's evaluation, run it with\n the same evidence bar. Recommendations stay advisory only.\n routing:\n kind: spawn\n"
|
|
51879
|
+
},
|
|
51880
|
+
{
|
|
51881
|
+
path: "fragments/environments/agent-runtime.yaml",
|
|
51882
|
+
content: "# Source: https://www.auto.sh/api/v1/templates/%40auto/workforce-optimization-consultant/1.2.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"
|
|
51883
|
+
}
|
|
51884
|
+
]
|
|
51663
51885
|
}
|
|
51664
51886
|
]
|
|
51665
51887
|
};
|
|
@@ -51716,6 +51938,7 @@ var init_hardcoded = __esm({
|
|
|
51716
51938
|
"@auto/onboarding": "Auto's house onboarding guidance, importable as a managed template.",
|
|
51717
51939
|
"@auto/onboarding-quickstart": "The quickstart template repo's onboarding overlay: composes onto @auto/onboarding with the fork-flow walkthrough beats (site request bar, handoff loop, self-improvement demo).",
|
|
51718
51940
|
"@auto/pr-review": "Auto's full pull-request reviewer agent, with optional Slack verdict reporting.",
|
|
51941
|
+
"@auto/principal-at-large": "A summons-only principal for exceptional diagnosis, design, and resisted implementation work that advises first, acts only when needed, and retains no standing ownership.",
|
|
51719
51942
|
"@auto/reaper": "A warn-first cleanup specialist for stale pull requests, stuck sessions, and zombie branches.",
|
|
51720
51943
|
"@auto/research-loop": "A research coordinator that runs measurable optimization campaigns on a fleet of experimenter agents.",
|
|
51721
51944
|
"@auto/self-improvement": "A scheduled sweep over PR feedback, read-only data, and Auto sessions that proposes concrete improvements.",
|
|
@@ -52045,6 +52268,48 @@ var init_catalog = __esm({
|
|
|
52045
52268
|
optionalConnections: ["slack"],
|
|
52046
52269
|
variables: ["repoFullName", "githubConnection"]
|
|
52047
52270
|
},
|
|
52271
|
+
{
|
|
52272
|
+
id: "principal-at-large",
|
|
52273
|
+
template: "@auto/principal-at-large",
|
|
52274
|
+
files: [
|
|
52275
|
+
{
|
|
52276
|
+
subpath: "agents/principal-at-large.yaml",
|
|
52277
|
+
agentFileName: "principal-at-large"
|
|
52278
|
+
}
|
|
52279
|
+
],
|
|
52280
|
+
displayName: "Principal-at-Large",
|
|
52281
|
+
username: "principal-at-large",
|
|
52282
|
+
avatarAsset: "principal-at-large.png",
|
|
52283
|
+
category: "engineering",
|
|
52284
|
+
oneLiner: "Summons-only principal for exceptional diagnosis, design, and resisted failures.",
|
|
52285
|
+
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.",
|
|
52286
|
+
harness: "claude-code",
|
|
52287
|
+
model: "claude-fable-5",
|
|
52288
|
+
reasoningEffort: "max",
|
|
52289
|
+
triggers: [
|
|
52290
|
+
{
|
|
52291
|
+
kind: "agent",
|
|
52292
|
+
title: "Exceptional agent summons",
|
|
52293
|
+
description: "Another agent can explicitly summon it for one evidence-backed diagnosis, design decision, or resisted intervention.",
|
|
52294
|
+
availability: "core"
|
|
52295
|
+
},
|
|
52296
|
+
{
|
|
52297
|
+
kind: "slack",
|
|
52298
|
+
title: "Explicit Slack summons",
|
|
52299
|
+
description: "Auto can connect Slack so a human can invoke exactly one turn with @auto.principal-at-large; it answers, unsubscribes, and vanishes.",
|
|
52300
|
+
availability: "optional",
|
|
52301
|
+
connection: "slack"
|
|
52302
|
+
}
|
|
52303
|
+
],
|
|
52304
|
+
requires: [],
|
|
52305
|
+
optionalConnections: ["slack"],
|
|
52306
|
+
variables: ["repoFullName"],
|
|
52307
|
+
trustNotes: [
|
|
52308
|
+
"Exceptional summons-only capacity; never a routine implementation tier, fleet fallback, heartbeat worker, or broad dispatcher.",
|
|
52309
|
+
"May write repository content and pull requests, but has no merge authority and never becomes the default PR owner.",
|
|
52310
|
+
"Holds no standing bindings; a Slack summons releases its temporary thread claim immediately after the final answer."
|
|
52311
|
+
]
|
|
52312
|
+
},
|
|
52048
52313
|
{
|
|
52049
52314
|
id: "junior-engineer",
|
|
52050
52315
|
template: "@auto/engineering-tier",
|
|
@@ -52559,8 +52824,8 @@ var init_catalog = __esm({
|
|
|
52559
52824
|
username: "workforce-optimization-consultant",
|
|
52560
52825
|
avatarAsset: "workforce-consultant.png",
|
|
52561
52826
|
category: "factory",
|
|
52562
|
-
oneLiner: "
|
|
52563
|
-
description: "A weekly advisory analyst that
|
|
52827
|
+
oneLiner: "Inventories the configured workforce, then scores which agents earn their seat.",
|
|
52828
|
+
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.",
|
|
52564
52829
|
harness: "codex",
|
|
52565
52830
|
model: "gpt-5.6-sol",
|
|
52566
52831
|
reasoningEffort: "xhigh",
|
|
@@ -56316,7 +56581,7 @@ var init_package = __esm({
|
|
|
56316
56581
|
"package.json"() {
|
|
56317
56582
|
package_default = {
|
|
56318
56583
|
name: "@autohq/cli",
|
|
56319
|
-
version: "0.1.
|
|
56584
|
+
version: "0.1.472",
|
|
56320
56585
|
license: "SEE LICENSE IN README.md",
|
|
56321
56586
|
publishConfig: {
|
|
56322
56587
|
access: "public"
|