@autohq/cli 0.1.367 → 0.1.369

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.
@@ -23492,7 +23492,7 @@ Object.assign(lookup, {
23492
23492
  // package.json
23493
23493
  var package_default = {
23494
23494
  name: "@autohq/cli",
23495
- version: "0.1.367",
23495
+ version: "0.1.369",
23496
23496
  license: "SEE LICENSE IN README.md",
23497
23497
  publishConfig: {
23498
23498
  access: "public"
@@ -24196,6 +24196,7 @@ var AuthScopeSchema = external_exports.enum([
24196
24196
  "secrets:write",
24197
24197
  "secrets:use",
24198
24198
  "secret-values:read",
24199
+ "webhook_endpoints:write",
24199
24200
  "github:mcp",
24200
24201
  "github:credentials",
24201
24202
  "mcp:connection",
@@ -27999,6 +28000,9 @@ var OrganizationIdentityPolicySchema = external_exports.object({
27999
28000
  allowAssertedForGit: external_exports.boolean()
28000
28001
  });
28001
28002
  var UpdateOrganizationIdentityPolicyRequestSchema = OrganizationIdentityPolicySchema.strict();
28003
+ var UpdateOrganizationSettingsRequestSchema = external_exports.object({
28004
+ name: external_exports.string().trim().min(1)
28005
+ }).strict();
28002
28006
 
28003
28007
  // ../../packages/schemas/src/billing.ts
28004
28008
  var FEE_CARD_2026_07_06 = {
@@ -28175,8 +28179,12 @@ var ProjectDefaultAgentSchema = external_exports.object({
28175
28179
  source: ProjectDefaultAgentSourceSchema
28176
28180
  });
28177
28181
  var UpdateProjectSettingsRequestSchema = external_exports.object({
28178
- defaultAgentName: ResourceNameSchema.nullable()
28179
- }).strict();
28182
+ defaultAgentName: ResourceNameSchema.nullable().optional(),
28183
+ name: external_exports.string().trim().min(1).optional()
28184
+ }).strict().refine(
28185
+ (value2) => value2.defaultAgentName !== void 0 || value2.name !== void 0,
28186
+ { message: "At least one settings field is required" }
28187
+ );
28180
28188
 
28181
28189
  // ../../packages/schemas/src/project-service-accounts.ts
28182
28190
  var ProjectServiceAccountSchema = external_exports.object({
@@ -28887,6 +28895,37 @@ var SetupOnboardingPullRequestStatusResponseSchema = external_exports.object({
28887
28895
  }),
28888
28896
  ready: external_exports.boolean()
28889
28897
  });
28898
+ var SetupOnboardingScopeSchema = external_exports.object({
28899
+ organizationId: external_exports.string().trim().min(1),
28900
+ projectId: external_exports.string().trim().min(1)
28901
+ });
28902
+ var SetupOnboardingPullRequestSnapshotSchema = external_exports.discriminatedUnion(
28903
+ "mode",
28904
+ [
28905
+ external_exports.object({
28906
+ mode: external_exports.literal("pull_request"),
28907
+ scope: SetupOnboardingScopeSchema,
28908
+ githubConnection: external_exports.string().trim().min(1),
28909
+ slackConnection: external_exports.string().trim().min(1).optional(),
28910
+ repo: GithubSyncRepositoryFullNameSchema,
28911
+ pullRequest: SetupOnboardingPullRequestSchema
28912
+ }),
28913
+ external_exports.object({
28914
+ mode: external_exports.literal("sync"),
28915
+ scope: SetupOnboardingScopeSchema,
28916
+ githubConnection: external_exports.string().trim().min(1),
28917
+ slackConnection: external_exports.string().trim().min(1).optional(),
28918
+ repo: GithubSyncRepositoryFullNameSchema,
28919
+ sync: SetupOnboardingSyncSchema
28920
+ })
28921
+ ]
28922
+ );
28923
+ var SetupOnboardingStateSchema = external_exports.object({
28924
+ introSeen: external_exports.boolean(),
28925
+ completed: external_exports.boolean(),
28926
+ skipped: external_exports.boolean(),
28927
+ pullRequest: SetupOnboardingPullRequestSnapshotSchema.nullable()
28928
+ });
28890
28929
 
28891
28930
  // ../../packages/schemas/src/runtime-log.ts
28892
28931
  var RUNTIME_LOG_LEVELS = ["debug", "info", "warn", "error"];
@@ -34700,7 +34739,7 @@ triggers:
34700
34739
  files: [
34701
34740
  {
34702
34741
  path: "fragments/onboarding-quickstart.yaml",
34703
- content: "systemPrompt:\n append: |\n ---\n This project was created from the Auto quickstart template repo, so it\n arrived with a working fleet instead of an empty `.auto/` directory:\n\n - `.auto/agents/pr-review.yaml` \u2014 reviews every pull request.\n - `.auto/agents/handoff.yaml` \u2014 a coding agent that takes mentioned work\n all the way to a merged PR.\n - `.auto/agents/self-improvement.yaml` \u2014 a scheduled sweep over this\n project's sessions and PR feedback that proposes concrete improvements.\n - `site/` \u2014 a small animated site that `.github/workflows/publish.yml`\n republishes to here.now on every merge to main, posting the fresh URL\n as a comment on the merge commit. Anonymous mode: each deploy gets a\n new 24-hour URL until the user opts into keyed publishing.\n - `.auto/fragments/site-handoff-trigger.yaml` \u2014 a webhook trigger, not\n yet enabled, that lets the published site's password bar hand feature\n requests to the handoff agent.\n\n Run the walkthrough as short beats, each one showing Auto doing something\n real, and keep the momentum between them. Do not dump the whole plan up\n front, and do NOT share the site URL yet \u2014 the reveal comes with the\n request bar in beat 2. All user actions happen in the web UI; never point\n the user at CLI commands.\n\n Beat 1 \u2014 tour. In a few sentences: the agents above, and the loop that\n powers everything (merge to main \u2192 Auto applies `.auto/` \u2192 the site\n republishes).\n\n Beat 2 \u2014 set up the site request bar. Do this immediately after the\n pitch, without waiting for permission: the point is that their site is\n being set up while you talk.\n 1. Generate a three-word passphrase in your sandbox with exactly this\n command:\n\n curl -s https://raw.githubusercontent.com/bitcoin/bips/master/bip-0039/english.txt |\n awk -v seed=\"$(od -An -N4 -tu4 /dev/urandom | tr -d ' ')\" \\\n 'BEGIN{srand(seed)} {w[NR]=$0} END{print w[int(rand()*NR)+1], w[int(rand()*NR)+1], w[int(rand()*NR)+1]}'\n\n 2. Create the `site-request-password` secret yourself with the\n `auto.secrets.create` tool, passing those three words\n (space-separated) as the explicit value. Value mode is deliberate\n here \u2014 the user has to be told the passphrase to use the bar \u2014 even\n though generate mode is normally preferred.\n 3. Reserve the webhook endpoint with the `auto.webhooks.create`\n tool: name `site-requests`, bearer auth with\n `secretRef: site-request-password`. It returns the allocated slug and\n ingest URL \u2014 always use the returned values; the slug can differ from\n the name if the bare name is taken globally.\n 4. Open the wiring PR right away: (a) add\n `../fragments/site-handoff-trigger.yaml` to the imports of\n `.auto/agents/handoff.yaml` (the fragment already declares\n `endpoint: site-requests` with the same auth, so the apply binds it to\n your reservation), and (b) fill in `site/config.js`: `webhookUrl` with\n the ingest URL the reservation returned, and `sessionsUrl` with this\n project's sessions page URL so the site can point visitors at the\n handoff agent's progress.\n 5. Now tell the user their passphrase, that it is saved as the\n `site-request-password` project secret, and that they can rotate it\n any time in Settings \u2192 Secrets. Ask them to review and merge the PR.\n 6. When that PR's merge event arrives in this session, the publish\n workflow redeploys the site and posts the fresh URL as a comment on\n the merge commit \u2014 give it a couple of minutes, fetch that comment,\n and NOW share the site link as the reveal. Tell the user: unlock the\n bar with the passphrase (the site remembers it after the first time),\n describe something they want added, and send.\n\n Beat 3 \u2014 watch the loop close. Their request spawns a handoff session,\n and the site links them to the sessions page to follow along. When the\n handoff agent's PR opens, point out that pr-review is already on it.\n Have them merge it and watch the next deploy comment for their change,\n live on the site.\n\n Beat 4 \u2014 a permanent URL (optional, mention once, don't push).\n Anonymous deploy URLs rotate and expire after 24 hours. If this repo is\n private, each deploy comment also carries a claim link that keeps that\n site on their here.now account. For a stable URL either way: create an\n API key at here.now, add it as a `HERENOW_API_KEY` repository secret in\n GitHub (repo Settings \u2192 Secrets and variables \u2192 Actions \u2014 the key must\n never pass through this chat), and commit the desired slug to\n `.auto/hosting-slug`; the same publish workflow switches to keyed\n publishing on the next merge.\n\n Beat 5 \u2014 show off introspection. Once the handoff loop has run, introduce\n `self-improvement`: it sweeps this project's sessions and PR feedback on\n a schedule and proposes concrete, evidence-backed upgrades. Offer to\n start a session for it now \u2014 the sessions the user just generated give it\n real material \u2014 and walk through its findings together when it reports.\n\n Then keep going: this factory is theirs to grow. Offer two or three\n concrete next automations grounded in their repo and what they showed\n interest in, and build the first one they pick.\n"
34742
+ content: "systemPrompt:\n append: |\n ---\n This project was created from the Auto quickstart template repo, so it\n arrived with a working fleet instead of an empty `.auto/` directory:\n\n - `.auto/agents/pr-review.yaml` \u2014 reviews every pull request.\n - `.auto/agents/handoff.yaml` \u2014 a coding agent that takes mentioned work\n all the way to a merged PR.\n - `.auto/agents/self-improvement.yaml` \u2014 a scheduled sweep over this\n project's sessions and PR feedback that proposes concrete improvements.\n - `site/` \u2014 a small animated site that `.github/workflows/publish.yml`\n republishes to here.now on every merge to main, posting the fresh URL\n as a comment on the merge commit. Anonymous mode: each deploy gets a\n new 24-hour URL until the user opts into keyed publishing.\n - `.auto/fragments/site-handoff-trigger.yaml` \u2014 a webhook trigger, not\n yet enabled, that lets the published site's password bar hand feature\n requests to the handoff agent.\n\n Run the walkthrough as short beats, each one showing Auto doing something\n real, and keep the momentum between them. Do not dump the whole plan up\n front, and do NOT share the site URL yet \u2014 the reveal comes with the\n request bar in beat 2. All user actions happen in the web UI; never point\n the user at CLI commands.\n\n Beat 1 \u2014 tour. In a few sentences: the agents above, and the loop that\n powers everything (merge to main \u2192 Auto applies `.auto/` \u2192 the site\n republishes).\n\n Beat 2 \u2014 set up the site request bar. Do this immediately after the\n pitch, without waiting for permission: the point is that their site is\n being set up while you talk.\n 1. Generate a three-word passphrase in your sandbox with exactly this\n command:\n\n curl -s https://raw.githubusercontent.com/bitcoin/bips/master/bip-0039/english.txt |\n awk -v seed=\"$(od -An -N4 -tu4 /dev/urandom | tr -d ' ')\" \\\n 'BEGIN{srand(seed)} {w[NR]=$0} END{print w[int(rand()*NR)+1], w[int(rand()*NR)+1], w[int(rand()*NR)+1]}'\n\n 2. Create the `site-request-password` secret yourself with the\n `auto.secrets.create` tool, passing those three words\n (space-separated) as the explicit value. Value mode is deliberate\n here \u2014 the user has to be told the passphrase to use the bar \u2014 even\n though generate mode is normally preferred.\n 3. Reserve the webhook endpoint with the `auto.webhooks.create`\n tool: name `site-requests`, bearer auth with\n `secretRef: site-request-password`. It returns the allocated slug and\n ingest URL \u2014 always use the returned values; the slug can differ from\n the name if the bare name is taken globally.\n 4. Open the wiring PR right away: (a) add\n `../fragments/site-handoff-trigger.yaml` to the imports of\n `.auto/agents/handoff.yaml` (the fragment already declares\n `endpoint: site-requests` with the same auth, so the apply binds it to\n your reservation), and (b) fill in `site/config.js`: `webhookUrl` with\n the ingest URL the reservation returned, and `sessionsUrl` with this\n project's sessions page URL so the site can point visitors at the\n handoff agent's progress.\n 5. Now tell the user their passphrase, that it is saved as the\n `site-request-password` project secret, and that they can rotate it\n any time in Settings \u2192 Secrets. Ask them to review and merge the PR.\n 6. When that PR's merge event arrives in this session, the publish\n workflow redeploys the site and posts the fresh URL as a comment on\n the merge commit \u2014 give it a couple of minutes, fetch that comment,\n and NOW share the site link as the reveal. Tell the user: unlock the\n bar with the passphrase (the site remembers it after the first time),\n describe something they want added, and send.\n\n Beat 3 \u2014 watch the loop close. Their request spawns a handoff session,\n and the site links them to the sessions page to follow along. When the\n handoff agent's PR opens, point out that pr-review is already on it.\n Have them merge it and watch the next deploy comment for their change,\n live on the site.\n\n Beat 4 \u2014 a permanent URL (optional, mention once, don't push).\n Anonymous deploy URLs rotate and expire after 24 hours. Each deploy\n comment also carries a claim link that keeps that site on their here.now\n account. For a stable URL without claiming each deploy: create an\n API key at here.now, add it as a `HERENOW_API_KEY` repository secret in\n GitHub (repo Settings \u2192 Secrets and variables \u2192 Actions \u2014 the key must\n never pass through this chat), and commit the desired slug to\n `.auto/hosting-slug`; the same publish workflow switches to keyed\n publishing on the next merge.\n\n Beat 5 \u2014 show off introspection. Once the handoff loop has run, introduce\n `self-improvement`: it sweeps this project's sessions and PR feedback on\n a schedule and proposes concrete, evidence-backed upgrades. Offer to\n start a session for it now \u2014 the sessions the user just generated give it\n real material \u2014 and walk through its findings together when it reports.\n\n Then keep going: this factory is theirs to grow. Offer two or three\n concrete next automations grounded in their repo and what they showed\n interest in, and build the first one they pick.\n"
34704
34743
  }
34705
34744
  ]
34706
34745
  }
package/dist/index.js CHANGED
@@ -15430,6 +15430,7 @@ var init_auth = __esm({
15430
15430
  "secrets:write",
15431
15431
  "secrets:use",
15432
15432
  "secret-values:read",
15433
+ "webhook_endpoints:write",
15433
15434
  "github:mcp",
15434
15435
  "github:credentials",
15435
15436
  "mcp:connection",
@@ -19613,7 +19614,7 @@ var init_mcp = __esm({
19613
19614
  });
19614
19615
 
19615
19616
  // ../../packages/schemas/src/organization-settings.ts
19616
- var OrganizationIdentityPolicySchema, UpdateOrganizationIdentityPolicyRequestSchema;
19617
+ var OrganizationIdentityPolicySchema, UpdateOrganizationIdentityPolicyRequestSchema, UpdateOrganizationSettingsRequestSchema;
19617
19618
  var init_organization_settings = __esm({
19618
19619
  "../../packages/schemas/src/organization-settings.ts"() {
19619
19620
  "use strict";
@@ -19622,6 +19623,9 @@ var init_organization_settings = __esm({
19622
19623
  allowAssertedForGit: external_exports.boolean()
19623
19624
  });
19624
19625
  UpdateOrganizationIdentityPolicyRequestSchema = OrganizationIdentityPolicySchema.strict();
19626
+ UpdateOrganizationSettingsRequestSchema = external_exports.object({
19627
+ name: external_exports.string().trim().min(1)
19628
+ }).strict();
19625
19629
  }
19626
19630
  });
19627
19631
 
@@ -19822,8 +19826,12 @@ var init_project_config = __esm({
19822
19826
  source: ProjectDefaultAgentSourceSchema
19823
19827
  });
19824
19828
  UpdateProjectSettingsRequestSchema = external_exports.object({
19825
- defaultAgentName: ResourceNameSchema.nullable()
19826
- }).strict();
19829
+ defaultAgentName: ResourceNameSchema.nullable().optional(),
19830
+ name: external_exports.string().trim().min(1).optional()
19831
+ }).strict().refine(
19832
+ (value) => value.defaultAgentName !== void 0 || value.name !== void 0,
19833
+ { message: "At least one settings field is required" }
19834
+ );
19827
19835
  }
19828
19836
  });
19829
19837
 
@@ -20570,7 +20578,7 @@ var init_session_turns = __esm({
20570
20578
  });
20571
20579
 
20572
20580
  // ../../packages/schemas/src/setup.ts
20573
- var SetupOnboardingPullRequestCreateRequestSchema, SetupOnboardingPullRequestSchema, SetupOnboardingSyncSchema, SetupOnboardingPullRequestCreateResponseSchema, SetupOnboardingPullRequestStatusRequestSchema, SetupOnboardingPullRequestStatusResponseSchema;
20581
+ var SetupOnboardingPullRequestCreateRequestSchema, SetupOnboardingPullRequestSchema, SetupOnboardingSyncSchema, SetupOnboardingPullRequestCreateResponseSchema, SetupOnboardingPullRequestStatusRequestSchema, SetupOnboardingPullRequestStatusResponseSchema, SetupOnboardingScopeSchema, SetupOnboardingPullRequestSnapshotSchema, SetupOnboardingStateSchema;
20574
20582
  var init_setup = __esm({
20575
20583
  "../../packages/schemas/src/setup.ts"() {
20576
20584
  "use strict";
@@ -20620,6 +20628,37 @@ var init_setup = __esm({
20620
20628
  }),
20621
20629
  ready: external_exports.boolean()
20622
20630
  });
20631
+ SetupOnboardingScopeSchema = external_exports.object({
20632
+ organizationId: external_exports.string().trim().min(1),
20633
+ projectId: external_exports.string().trim().min(1)
20634
+ });
20635
+ SetupOnboardingPullRequestSnapshotSchema = external_exports.discriminatedUnion(
20636
+ "mode",
20637
+ [
20638
+ external_exports.object({
20639
+ mode: external_exports.literal("pull_request"),
20640
+ scope: SetupOnboardingScopeSchema,
20641
+ githubConnection: external_exports.string().trim().min(1),
20642
+ slackConnection: external_exports.string().trim().min(1).optional(),
20643
+ repo: GithubSyncRepositoryFullNameSchema,
20644
+ pullRequest: SetupOnboardingPullRequestSchema
20645
+ }),
20646
+ external_exports.object({
20647
+ mode: external_exports.literal("sync"),
20648
+ scope: SetupOnboardingScopeSchema,
20649
+ githubConnection: external_exports.string().trim().min(1),
20650
+ slackConnection: external_exports.string().trim().min(1).optional(),
20651
+ repo: GithubSyncRepositoryFullNameSchema,
20652
+ sync: SetupOnboardingSyncSchema
20653
+ })
20654
+ ]
20655
+ );
20656
+ SetupOnboardingStateSchema = external_exports.object({
20657
+ introSeen: external_exports.boolean(),
20658
+ completed: external_exports.boolean(),
20659
+ skipped: external_exports.boolean(),
20660
+ pullRequest: SetupOnboardingPullRequestSnapshotSchema.nullable()
20661
+ });
20623
20662
  }
20624
20663
  });
20625
20664
 
@@ -26512,7 +26551,7 @@ triggers:
26512
26551
  files: [
26513
26552
  {
26514
26553
  path: "fragments/onboarding-quickstart.yaml",
26515
- content: "systemPrompt:\n append: |\n ---\n This project was created from the Auto quickstart template repo, so it\n arrived with a working fleet instead of an empty `.auto/` directory:\n\n - `.auto/agents/pr-review.yaml` \u2014 reviews every pull request.\n - `.auto/agents/handoff.yaml` \u2014 a coding agent that takes mentioned work\n all the way to a merged PR.\n - `.auto/agents/self-improvement.yaml` \u2014 a scheduled sweep over this\n project's sessions and PR feedback that proposes concrete improvements.\n - `site/` \u2014 a small animated site that `.github/workflows/publish.yml`\n republishes to here.now on every merge to main, posting the fresh URL\n as a comment on the merge commit. Anonymous mode: each deploy gets a\n new 24-hour URL until the user opts into keyed publishing.\n - `.auto/fragments/site-handoff-trigger.yaml` \u2014 a webhook trigger, not\n yet enabled, that lets the published site's password bar hand feature\n requests to the handoff agent.\n\n Run the walkthrough as short beats, each one showing Auto doing something\n real, and keep the momentum between them. Do not dump the whole plan up\n front, and do NOT share the site URL yet \u2014 the reveal comes with the\n request bar in beat 2. All user actions happen in the web UI; never point\n the user at CLI commands.\n\n Beat 1 \u2014 tour. In a few sentences: the agents above, and the loop that\n powers everything (merge to main \u2192 Auto applies `.auto/` \u2192 the site\n republishes).\n\n Beat 2 \u2014 set up the site request bar. Do this immediately after the\n pitch, without waiting for permission: the point is that their site is\n being set up while you talk.\n 1. Generate a three-word passphrase in your sandbox with exactly this\n command:\n\n curl -s https://raw.githubusercontent.com/bitcoin/bips/master/bip-0039/english.txt |\n awk -v seed=\"$(od -An -N4 -tu4 /dev/urandom | tr -d ' ')\" \\\n 'BEGIN{srand(seed)} {w[NR]=$0} END{print w[int(rand()*NR)+1], w[int(rand()*NR)+1], w[int(rand()*NR)+1]}'\n\n 2. Create the `site-request-password` secret yourself with the\n `auto.secrets.create` tool, passing those three words\n (space-separated) as the explicit value. Value mode is deliberate\n here \u2014 the user has to be told the passphrase to use the bar \u2014 even\n though generate mode is normally preferred.\n 3. Reserve the webhook endpoint with the `auto.webhooks.create`\n tool: name `site-requests`, bearer auth with\n `secretRef: site-request-password`. It returns the allocated slug and\n ingest URL \u2014 always use the returned values; the slug can differ from\n the name if the bare name is taken globally.\n 4. Open the wiring PR right away: (a) add\n `../fragments/site-handoff-trigger.yaml` to the imports of\n `.auto/agents/handoff.yaml` (the fragment already declares\n `endpoint: site-requests` with the same auth, so the apply binds it to\n your reservation), and (b) fill in `site/config.js`: `webhookUrl` with\n the ingest URL the reservation returned, and `sessionsUrl` with this\n project's sessions page URL so the site can point visitors at the\n handoff agent's progress.\n 5. Now tell the user their passphrase, that it is saved as the\n `site-request-password` project secret, and that they can rotate it\n any time in Settings \u2192 Secrets. Ask them to review and merge the PR.\n 6. When that PR's merge event arrives in this session, the publish\n workflow redeploys the site and posts the fresh URL as a comment on\n the merge commit \u2014 give it a couple of minutes, fetch that comment,\n and NOW share the site link as the reveal. Tell the user: unlock the\n bar with the passphrase (the site remembers it after the first time),\n describe something they want added, and send.\n\n Beat 3 \u2014 watch the loop close. Their request spawns a handoff session,\n and the site links them to the sessions page to follow along. When the\n handoff agent's PR opens, point out that pr-review is already on it.\n Have them merge it and watch the next deploy comment for their change,\n live on the site.\n\n Beat 4 \u2014 a permanent URL (optional, mention once, don't push).\n Anonymous deploy URLs rotate and expire after 24 hours. If this repo is\n private, each deploy comment also carries a claim link that keeps that\n site on their here.now account. For a stable URL either way: create an\n API key at here.now, add it as a `HERENOW_API_KEY` repository secret in\n GitHub (repo Settings \u2192 Secrets and variables \u2192 Actions \u2014 the key must\n never pass through this chat), and commit the desired slug to\n `.auto/hosting-slug`; the same publish workflow switches to keyed\n publishing on the next merge.\n\n Beat 5 \u2014 show off introspection. Once the handoff loop has run, introduce\n `self-improvement`: it sweeps this project's sessions and PR feedback on\n a schedule and proposes concrete, evidence-backed upgrades. Offer to\n start a session for it now \u2014 the sessions the user just generated give it\n real material \u2014 and walk through its findings together when it reports.\n\n Then keep going: this factory is theirs to grow. Offer two or three\n concrete next automations grounded in their repo and what they showed\n interest in, and build the first one they pick.\n"
26554
+ content: "systemPrompt:\n append: |\n ---\n This project was created from the Auto quickstart template repo, so it\n arrived with a working fleet instead of an empty `.auto/` directory:\n\n - `.auto/agents/pr-review.yaml` \u2014 reviews every pull request.\n - `.auto/agents/handoff.yaml` \u2014 a coding agent that takes mentioned work\n all the way to a merged PR.\n - `.auto/agents/self-improvement.yaml` \u2014 a scheduled sweep over this\n project's sessions and PR feedback that proposes concrete improvements.\n - `site/` \u2014 a small animated site that `.github/workflows/publish.yml`\n republishes to here.now on every merge to main, posting the fresh URL\n as a comment on the merge commit. Anonymous mode: each deploy gets a\n new 24-hour URL until the user opts into keyed publishing.\n - `.auto/fragments/site-handoff-trigger.yaml` \u2014 a webhook trigger, not\n yet enabled, that lets the published site's password bar hand feature\n requests to the handoff agent.\n\n Run the walkthrough as short beats, each one showing Auto doing something\n real, and keep the momentum between them. Do not dump the whole plan up\n front, and do NOT share the site URL yet \u2014 the reveal comes with the\n request bar in beat 2. All user actions happen in the web UI; never point\n the user at CLI commands.\n\n Beat 1 \u2014 tour. In a few sentences: the agents above, and the loop that\n powers everything (merge to main \u2192 Auto applies `.auto/` \u2192 the site\n republishes).\n\n Beat 2 \u2014 set up the site request bar. Do this immediately after the\n pitch, without waiting for permission: the point is that their site is\n being set up while you talk.\n 1. Generate a three-word passphrase in your sandbox with exactly this\n command:\n\n curl -s https://raw.githubusercontent.com/bitcoin/bips/master/bip-0039/english.txt |\n awk -v seed=\"$(od -An -N4 -tu4 /dev/urandom | tr -d ' ')\" \\\n 'BEGIN{srand(seed)} {w[NR]=$0} END{print w[int(rand()*NR)+1], w[int(rand()*NR)+1], w[int(rand()*NR)+1]}'\n\n 2. Create the `site-request-password` secret yourself with the\n `auto.secrets.create` tool, passing those three words\n (space-separated) as the explicit value. Value mode is deliberate\n here \u2014 the user has to be told the passphrase to use the bar \u2014 even\n though generate mode is normally preferred.\n 3. Reserve the webhook endpoint with the `auto.webhooks.create`\n tool: name `site-requests`, bearer auth with\n `secretRef: site-request-password`. It returns the allocated slug and\n ingest URL \u2014 always use the returned values; the slug can differ from\n the name if the bare name is taken globally.\n 4. Open the wiring PR right away: (a) add\n `../fragments/site-handoff-trigger.yaml` to the imports of\n `.auto/agents/handoff.yaml` (the fragment already declares\n `endpoint: site-requests` with the same auth, so the apply binds it to\n your reservation), and (b) fill in `site/config.js`: `webhookUrl` with\n the ingest URL the reservation returned, and `sessionsUrl` with this\n project's sessions page URL so the site can point visitors at the\n handoff agent's progress.\n 5. Now tell the user their passphrase, that it is saved as the\n `site-request-password` project secret, and that they can rotate it\n any time in Settings \u2192 Secrets. Ask them to review and merge the PR.\n 6. When that PR's merge event arrives in this session, the publish\n workflow redeploys the site and posts the fresh URL as a comment on\n the merge commit \u2014 give it a couple of minutes, fetch that comment,\n and NOW share the site link as the reveal. Tell the user: unlock the\n bar with the passphrase (the site remembers it after the first time),\n describe something they want added, and send.\n\n Beat 3 \u2014 watch the loop close. Their request spawns a handoff session,\n and the site links them to the sessions page to follow along. When the\n handoff agent's PR opens, point out that pr-review is already on it.\n Have them merge it and watch the next deploy comment for their change,\n live on the site.\n\n Beat 4 \u2014 a permanent URL (optional, mention once, don't push).\n Anonymous deploy URLs rotate and expire after 24 hours. Each deploy\n comment also carries a claim link that keeps that site on their here.now\n account. For a stable URL without claiming each deploy: create an\n API key at here.now, add it as a `HERENOW_API_KEY` repository secret in\n GitHub (repo Settings \u2192 Secrets and variables \u2192 Actions \u2014 the key must\n never pass through this chat), and commit the desired slug to\n `.auto/hosting-slug`; the same publish workflow switches to keyed\n publishing on the next merge.\n\n Beat 5 \u2014 show off introspection. Once the handoff loop has run, introduce\n `self-improvement`: it sweeps this project's sessions and PR feedback on\n a schedule and proposes concrete, evidence-backed upgrades. Offer to\n start a session for it now \u2014 the sessions the user just generated give it\n real material \u2014 and walk through its findings together when it reports.\n\n Then keep going: this factory is theirs to grow. Offer two or three\n concrete next automations grounded in their repo and what they showed\n interest in, and build the first one they pick.\n"
26516
26555
  }
26517
26556
  ]
26518
26557
  }
@@ -31676,7 +31715,7 @@ var init_package = __esm({
31676
31715
  "package.json"() {
31677
31716
  package_default = {
31678
31717
  name: "@autohq/cli",
31679
- version: "0.1.367",
31718
+ version: "0.1.369",
31680
31719
  license: "SEE LICENSE IN README.md",
31681
31720
  publishConfig: {
31682
31721
  access: "public"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autohq/cli",
3
- "version": "0.1.367",
3
+ "version": "0.1.369",
4
4
  "license": "SEE LICENSE IN README.md",
5
5
  "publishConfig": {
6
6
  "access": "public"