@autohq/cli 0.1.481 → 0.1.483

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -30866,7 +30866,7 @@ Object.assign(lookup, {
30866
30866
  // package.json
30867
30867
  var package_default = {
30868
30868
  name: "@autohq/cli",
30869
- version: "0.1.481",
30869
+ version: "0.1.483",
30870
30870
  license: "SEE LICENSE IN README.md",
30871
30871
  publishConfig: {
30872
30872
  access: "public"
@@ -34809,6 +34809,44 @@ var InlineAgentToolSchema = RemoteMcpToolSchema.extend({
34809
34809
  var AgentToolRefSchema = InlineAgentToolSchema;
34810
34810
  var AgentToolsSchema = external_exports.record(ToolAliasSchema, AgentToolRefSchema);
34811
34811
 
34812
+ // ../../packages/schemas/src/trigger-filters.ts
34813
+ var TriggerFilterScalarSchema = external_exports.union([
34814
+ external_exports.null(),
34815
+ external_exports.string(),
34816
+ external_exports.number(),
34817
+ external_exports.boolean()
34818
+ ]);
34819
+ var TriggerFilterPathSchema = external_exports.string().refine(
34820
+ (path2) => {
34821
+ if (path2.length === 0 || path2.trim() !== path2) {
34822
+ return false;
34823
+ }
34824
+ if (path2.startsWith("$.")) {
34825
+ const segments = path2.slice(2).split(".");
34826
+ return segments.length > 0 && segments.every(
34827
+ (segment) => segment.length > 0 && segment.trim() === segment
34828
+ );
34829
+ }
34830
+ return !path2.includes(".");
34831
+ },
34832
+ {
34833
+ message: "Trigger filter paths must be a single bare key or use $.path.segments"
34834
+ }
34835
+ );
34836
+ var TriggerFilterClauseSchema = external_exports.union([
34837
+ TriggerFilterScalarSchema,
34838
+ external_exports.object({ contains: TriggerFilterScalarSchema }).strict(),
34839
+ external_exports.object({ exists: external_exports.boolean() }).strict(),
34840
+ external_exports.object({ in: external_exports.array(TriggerFilterScalarSchema).min(1) }).strict(),
34841
+ external_exports.object({ notIn: external_exports.array(TriggerFilterScalarSchema).min(1) }).strict(),
34842
+ external_exports.object({ changedTo: TriggerFilterScalarSchema }).strict()
34843
+ ]);
34844
+ var TriggerFilterRecordSchema = external_exports.record(
34845
+ TriggerFilterPathSchema,
34846
+ TriggerFilterClauseSchema
34847
+ );
34848
+ var TriggerFilterSchema = TriggerFilterRecordSchema.default({});
34849
+
34812
34850
  // ../../packages/schemas/src/trigger-router.ts
34813
34851
  var CANONICAL_ROUTE_BY_KINDS = [
34814
34852
  "allLiveSessions",
@@ -34864,11 +34902,13 @@ var TriggerReleaseSchema = external_exports.union([
34864
34902
  var ObservedTargetActionSchema = external_exports.discriminatedUnion("action", [
34865
34903
  external_exports.object({
34866
34904
  action: external_exports.literal("bind"),
34905
+ where: TriggerFilterRecordSchema.optional(),
34867
34906
  context: JsonObjectSchema.nullable().default(null),
34868
34907
  eventContext: JsonObjectSchema.nullable().default(null)
34869
34908
  }).strict(),
34870
34909
  external_exports.object({
34871
34910
  action: external_exports.literal("unbind"),
34911
+ where: TriggerFilterRecordSchema.optional(),
34872
34912
  eventContext: JsonObjectSchema.nullable().default(null)
34873
34913
  }).strict()
34874
34914
  ]);
@@ -35047,38 +35087,6 @@ function normalizeLegacyHeartbeatTickWorkflowInput(input) {
35047
35087
  var RESOURCE_KIND_AGENT = "agent";
35048
35088
  var AGENT_HARNESSES = ["claude-code", "codex"];
35049
35089
  var AgentHarnessSchema = external_exports.enum(AGENT_HARNESSES);
35050
- var TriggerFilterScalarSchema = external_exports.union([
35051
- external_exports.null(),
35052
- external_exports.string(),
35053
- external_exports.number(),
35054
- external_exports.boolean()
35055
- ]);
35056
- var TriggerFilterPathSchema = external_exports.string().refine(
35057
- (path2) => {
35058
- if (path2.length === 0 || path2.trim() !== path2) {
35059
- return false;
35060
- }
35061
- if (path2.startsWith("$.")) {
35062
- const segments = path2.slice(2).split(".");
35063
- return segments.length > 0 && segments.every(
35064
- (segment) => segment.length > 0 && segment.trim() === segment
35065
- );
35066
- }
35067
- return !path2.includes(".");
35068
- },
35069
- {
35070
- message: "Trigger filter paths must be a single bare key or use $.path.segments"
35071
- }
35072
- );
35073
- var TriggerFilterClauseSchema = external_exports.union([
35074
- TriggerFilterScalarSchema,
35075
- external_exports.object({ contains: TriggerFilterScalarSchema }).strict(),
35076
- external_exports.object({ exists: external_exports.boolean() }).strict(),
35077
- external_exports.object({ in: external_exports.array(TriggerFilterScalarSchema).min(1) }).strict(),
35078
- external_exports.object({ notIn: external_exports.array(TriggerFilterScalarSchema).min(1) }).strict(),
35079
- external_exports.object({ changedTo: TriggerFilterScalarSchema }).strict()
35080
- ]);
35081
- var TriggerFilterSchema = external_exports.record(TriggerFilterPathSchema, TriggerFilterClauseSchema).default({});
35082
35090
  var TriggerCheckTimeoutSchema = external_exports.object({
35083
35091
  seconds: external_exports.number().int().min(1).max(7 * 24 * 60 * 60),
35084
35092
  conclusion: external_exports.enum(["success", "failure", "skipped"])
@@ -37893,6 +37901,7 @@ var SessionTurnRecordSchema = external_exports.object({
37893
37901
  // ../../packages/schemas/src/setup.ts
37894
37902
  var SetupAutomationDescriptionSchema = external_exports.string().max(2e3).refine((value2) => value2.trim().length > 0);
37895
37903
  var SetupOnboardingPullRequestCreateRequestSchema = external_exports.object({
37904
+ operationId: external_exports.string().uuid().optional(),
37896
37905
  githubConnection: external_exports.string().trim().min(1).optional(),
37897
37906
  slackConnection: external_exports.string().trim().min(1).optional(),
37898
37907
  repo: GithubSyncRepositoryFullNameSchema,
@@ -37932,11 +37941,13 @@ var SetupOnboardingSyncSchema = external_exports.object({
37932
37941
  var SetupOnboardingPullRequestCreateResponseSchema = external_exports.discriminatedUnion("mode", [
37933
37942
  external_exports.object({
37934
37943
  mode: external_exports.literal("pull_request"),
37944
+ operationId: external_exports.string().uuid(),
37935
37945
  pullRequest: SetupOnboardingPullRequestSchema,
37936
37946
  onboardingRun: SetupOnboardingRunReferenceSchema.optional()
37937
37947
  }),
37938
37948
  external_exports.object({
37939
37949
  mode: external_exports.literal("sync"),
37950
+ operationId: external_exports.string().uuid(),
37940
37951
  sync: SetupOnboardingSyncSchema,
37941
37952
  onboardingRun: SetupOnboardingRunReferenceSchema.optional()
37942
37953
  })
@@ -71947,6 +71958,7 @@ triggers:
71947
71958
  };
71948
71959
 
71949
71960
  // ../../packages/schemas/src/templates/hardcoded.ts
71961
+ var RETIRED_TEMPLATE_NAMES = /* @__PURE__ */ new Set(["@auto/onboarding"]);
71950
71962
  var TEMPLATE_DESCRIPTIONS = {
71951
71963
  "@auto/agent-fleet": "An engineering fleet: a direct-session chief-of-staff orchestrator that dispatches and shepherds staff-engineer coding agents, with optional Slack intake and reporting.",
71952
71964
  "@auto/blank-canvas": "The Blank Canvas workshop: a Patron front of house that turns a plain-language commission into the smallest useful team, authoring every hire as a reviewable setup PR.",
@@ -71965,8 +71977,8 @@ var TEMPLATE_DESCRIPTIONS = {
71965
71977
  "@auto/issue-triage": "Issue triage plus an implementation coder on a GitHub Issues or Linear substrate, with optional Slack reporting; deprecated -slack entrypoints keep the required-Slack behavior.",
71966
71978
  "@auto/lead-engine": "A sourced lead researcher for webhook payloads, direct-session criteria, public web signals, and authorized provider-backed sources; -slack entrypoint for a sales-channel flow.",
71967
71979
  "@auto/janitor": "A scheduled repository hygiene specialist that sweeps stale branches, labels, TODOs, and artifact bloat through reviewable cleanup pull requests.",
71968
- "@auto/onboarding": "Auto's house onboarding guidance, importable as a managed template.",
71969
- "@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).",
71980
+ "@auto/onboarding": "Retired standalone onboarding guidance retained for exact-version compatibility.",
71981
+ "@auto/onboarding-quickstart": "The quickstart template repo's onboarding overlay: composes onto the final pinned standalone onboarding version with the fork-flow walkthrough beats (site request bar, handoff loop, self-improvement demo).",
71970
71982
  "@auto/pr-review": "Auto's full pull-request reviewer agent, with optional Slack verdict reporting.",
71971
71983
  "@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.",
71972
71984
  "@auto/reaper": "A warn-first cleanup specialist for stale pull requests, stuck sessions, and zombie branches.",
@@ -71996,13 +72008,15 @@ var MANAGED_TEMPLATES = Object.entries(
71996
72008
  }));
71997
72009
  var HardcodedTemplateRegistry = class {
71998
72010
  templates;
71999
- constructor(templates = MANAGED_TEMPLATES) {
72011
+ retiredTemplateNames;
72012
+ constructor(templates = MANAGED_TEMPLATES, retiredTemplateNames = RETIRED_TEMPLATE_NAMES) {
72000
72013
  this.templates = new Map(
72001
72014
  templates.map((template) => [template.name, template])
72002
72015
  );
72016
+ this.retiredTemplateNames = retiredTemplateNames;
72003
72017
  }
72004
72018
  listTemplates() {
72005
- return [...this.templates.values()].map(toManagedTemplate);
72019
+ return [...this.templates.values()].filter((template) => !this.retiredTemplateNames.has(template.name)).map(toManagedTemplate);
72006
72020
  }
72007
72021
  getTemplate(name23) {
72008
72022
  const template = this.templates.get(name23);
@@ -72013,6 +72027,11 @@ var HardcodedTemplateRegistry = class {
72013
72027
  if (track.kind === "pinned") {
72014
72028
  return toTemplateVersion(this.requireVersion(template, track.version));
72015
72029
  }
72030
+ if (this.retiredTemplateNames.has(name23)) {
72031
+ throw new Error(
72032
+ `Managed template ${name23} is retired; pin an exact version`
72033
+ );
72034
+ }
72016
72035
  return deriveLatestVersion(toManagedTemplate(template));
72017
72036
  }
72018
72037
  getFiles(name23, version2) {
package/dist/index.js CHANGED
@@ -18728,6 +18728,51 @@ var init_tools = __esm({
18728
18728
  }
18729
18729
  });
18730
18730
 
18731
+ // ../../packages/schemas/src/trigger-filters.ts
18732
+ var TriggerFilterScalarSchema, TriggerFilterPathSchema, TriggerFilterClauseSchema, TriggerFilterRecordSchema, TriggerFilterSchema;
18733
+ var init_trigger_filters = __esm({
18734
+ "../../packages/schemas/src/trigger-filters.ts"() {
18735
+ "use strict";
18736
+ init_zod();
18737
+ TriggerFilterScalarSchema = external_exports.union([
18738
+ external_exports.null(),
18739
+ external_exports.string(),
18740
+ external_exports.number(),
18741
+ external_exports.boolean()
18742
+ ]);
18743
+ TriggerFilterPathSchema = external_exports.string().refine(
18744
+ (path2) => {
18745
+ if (path2.length === 0 || path2.trim() !== path2) {
18746
+ return false;
18747
+ }
18748
+ if (path2.startsWith("$.")) {
18749
+ const segments = path2.slice(2).split(".");
18750
+ return segments.length > 0 && segments.every(
18751
+ (segment) => segment.length > 0 && segment.trim() === segment
18752
+ );
18753
+ }
18754
+ return !path2.includes(".");
18755
+ },
18756
+ {
18757
+ message: "Trigger filter paths must be a single bare key or use $.path.segments"
18758
+ }
18759
+ );
18760
+ TriggerFilterClauseSchema = external_exports.union([
18761
+ TriggerFilterScalarSchema,
18762
+ external_exports.object({ contains: TriggerFilterScalarSchema }).strict(),
18763
+ external_exports.object({ exists: external_exports.boolean() }).strict(),
18764
+ external_exports.object({ in: external_exports.array(TriggerFilterScalarSchema).min(1) }).strict(),
18765
+ external_exports.object({ notIn: external_exports.array(TriggerFilterScalarSchema).min(1) }).strict(),
18766
+ external_exports.object({ changedTo: TriggerFilterScalarSchema }).strict()
18767
+ ]);
18768
+ TriggerFilterRecordSchema = external_exports.record(
18769
+ TriggerFilterPathSchema,
18770
+ TriggerFilterClauseSchema
18771
+ );
18772
+ TriggerFilterSchema = TriggerFilterRecordSchema.default({});
18773
+ }
18774
+ });
18775
+
18731
18776
  // ../../packages/schemas/src/trigger-router.ts
18732
18777
  function normalizeLegacyHeartbeatTickWorkflowInput(input) {
18733
18778
  if (!input || typeof input !== "object" || Array.isArray(input)) {
@@ -18751,6 +18796,7 @@ var init_trigger_router = __esm({
18751
18796
  init_ids();
18752
18797
  init_primitives();
18753
18798
  init_session_bindings();
18799
+ init_trigger_filters();
18754
18800
  CANONICAL_ROUTE_BY_KINDS = [
18755
18801
  "allLiveSessions",
18756
18802
  "attributedSessions"
@@ -18805,11 +18851,13 @@ var init_trigger_router = __esm({
18805
18851
  ObservedTargetActionSchema = external_exports.discriminatedUnion("action", [
18806
18852
  external_exports.object({
18807
18853
  action: external_exports.literal("bind"),
18854
+ where: TriggerFilterRecordSchema.optional(),
18808
18855
  context: JsonObjectSchema.nullable().default(null),
18809
18856
  eventContext: JsonObjectSchema.nullable().default(null)
18810
18857
  }).strict(),
18811
18858
  external_exports.object({
18812
18859
  action: external_exports.literal("unbind"),
18860
+ where: TriggerFilterRecordSchema.optional(),
18813
18861
  eventContext: JsonObjectSchema.nullable().default(null)
18814
18862
  }).strict()
18815
18863
  ]);
@@ -19427,7 +19475,7 @@ function isChatMessageEvent(trigger) {
19427
19475
  function hasFilterValue(trigger, path2, expected) {
19428
19476
  return trigger.where?.[path2] === expected;
19429
19477
  }
19430
- var RESOURCE_KIND_AGENT, AGENT_HARNESSES, AgentHarnessSchema, TriggerFilterScalarSchema, TriggerFilterPathSchema, TriggerFilterClauseSchema, TriggerFilterSchema, TriggerCheckTimeoutSchema, AgentArchiveAfterInactiveSchema, AgentSessionPolicySchema, AgentConcurrencySchema, AgentReplacePolicySchema, AgentManagesSchema, TriggerEventSchema, TriggerEventsSchema, PAYLOAD_PREFIXED_TEMPLATE_TOKEN, TriggerChecksField, TriggerEventSourceFields, TriggerSchema, ApplyTriggerSchema, HeartbeatTriggerSchema, ApplyHeartbeatTriggerSchema, TriggerDefinitionSchema, ApplyTriggerDefinitionSchema, TriggersSchema, ApplyTriggersSchema, AVATAR_ASSET_EXTENSIONS, MAX_AVATAR_ASSET_BYTES, MIN_AVATAR_ASSET_DIMENSION_PX, MAX_AVATAR_ASSET_DIMENSION_PX, PNG_SIGNATURE, AGENT_IDENTITY_DESCRIPTION_MAX_LENGTH, SHA256_HEX_PATTERN, AgentIdentitySchema, BINDING_LIFECYCLE_VALUES, BindingLifecycleSpecSchema, AgentBindingsSchema, AgentSpecFieldsSchema, AgentSpecSchema, AgentApplySpecFieldsSchema, AgentApplySpecSchema, AgentStatusSchema, AgentResourceOriginSchema, AgentResourceSchema, AgentApplyRequestSchema, ApplyTriggerReceiptSchema, AgentApplyResponseSchema, AGENT_TELEGRAM_IDENTITY_STATUSES, AgentTelegramIdentityStatusSchema, AgentPresenceIdentitySchema, AgentPresenceResponseSchema, AgentPresenceConnectRequestSchema, AgentPresenceConnectPendingSchema, AgentPresenceConnectResponseSchema, AgentPresenceIconRequestSchema, AgentPresenceIconResponseSchema, AgentPresenceCompleteResponseSchema;
19478
+ var RESOURCE_KIND_AGENT, AGENT_HARNESSES, AgentHarnessSchema, TriggerCheckTimeoutSchema, AgentArchiveAfterInactiveSchema, AgentSessionPolicySchema, AgentConcurrencySchema, AgentReplacePolicySchema, AgentManagesSchema, TriggerEventSchema, TriggerEventsSchema, PAYLOAD_PREFIXED_TEMPLATE_TOKEN, TriggerChecksField, TriggerEventSourceFields, TriggerSchema, ApplyTriggerSchema, HeartbeatTriggerSchema, ApplyHeartbeatTriggerSchema, TriggerDefinitionSchema, ApplyTriggerDefinitionSchema, TriggersSchema, ApplyTriggersSchema, AVATAR_ASSET_EXTENSIONS, MAX_AVATAR_ASSET_BYTES, MIN_AVATAR_ASSET_DIMENSION_PX, MAX_AVATAR_ASSET_DIMENSION_PX, PNG_SIGNATURE, AGENT_IDENTITY_DESCRIPTION_MAX_LENGTH, SHA256_HEX_PATTERN, AgentIdentitySchema, BINDING_LIFECYCLE_VALUES, BindingLifecycleSpecSchema, AgentBindingsSchema, AgentSpecFieldsSchema, AgentSpecSchema, AgentApplySpecFieldsSchema, AgentApplySpecSchema, AgentStatusSchema, AgentResourceOriginSchema, AgentResourceSchema, AgentApplyRequestSchema, ApplyTriggerReceiptSchema, AgentApplyResponseSchema, AGENT_TELEGRAM_IDENTITY_STATUSES, AgentTelegramIdentityStatusSchema, AgentPresenceIdentitySchema, AgentPresenceResponseSchema, AgentPresenceConnectRequestSchema, AgentPresenceConnectPendingSchema, AgentPresenceConnectResponseSchema, AgentPresenceIconRequestSchema, AgentPresenceIconResponseSchema, AgentPresenceCompleteResponseSchema;
19431
19479
  var init_agents = __esm({
19432
19480
  "../../packages/schemas/src/agents.ts"() {
19433
19481
  "use strict";
@@ -19441,42 +19489,12 @@ var init_agents = __esm({
19441
19489
  init_session_bindings();
19442
19490
  init_spend_caps();
19443
19491
  init_tools();
19492
+ init_trigger_filters();
19444
19493
  init_trigger_router();
19494
+ init_trigger_filters();
19445
19495
  RESOURCE_KIND_AGENT = "agent";
19446
19496
  AGENT_HARNESSES = ["claude-code", "codex"];
19447
19497
  AgentHarnessSchema = external_exports.enum(AGENT_HARNESSES);
19448
- TriggerFilterScalarSchema = external_exports.union([
19449
- external_exports.null(),
19450
- external_exports.string(),
19451
- external_exports.number(),
19452
- external_exports.boolean()
19453
- ]);
19454
- TriggerFilterPathSchema = external_exports.string().refine(
19455
- (path2) => {
19456
- if (path2.length === 0 || path2.trim() !== path2) {
19457
- return false;
19458
- }
19459
- if (path2.startsWith("$.")) {
19460
- const segments = path2.slice(2).split(".");
19461
- return segments.length > 0 && segments.every(
19462
- (segment) => segment.length > 0 && segment.trim() === segment
19463
- );
19464
- }
19465
- return !path2.includes(".");
19466
- },
19467
- {
19468
- message: "Trigger filter paths must be a single bare key or use $.path.segments"
19469
- }
19470
- );
19471
- TriggerFilterClauseSchema = external_exports.union([
19472
- TriggerFilterScalarSchema,
19473
- external_exports.object({ contains: TriggerFilterScalarSchema }).strict(),
19474
- external_exports.object({ exists: external_exports.boolean() }).strict(),
19475
- external_exports.object({ in: external_exports.array(TriggerFilterScalarSchema).min(1) }).strict(),
19476
- external_exports.object({ notIn: external_exports.array(TriggerFilterScalarSchema).min(1) }).strict(),
19477
- external_exports.object({ changedTo: TriggerFilterScalarSchema }).strict()
19478
- ]);
19479
- TriggerFilterSchema = external_exports.record(TriggerFilterPathSchema, TriggerFilterClauseSchema).default({});
19480
19498
  TriggerCheckTimeoutSchema = external_exports.object({
19481
19499
  seconds: external_exports.number().int().min(1).max(7 * 24 * 60 * 60),
19482
19500
  conclusion: external_exports.enum(["success", "failure", "skipped"])
@@ -22227,6 +22245,7 @@ var init_setup = __esm({
22227
22245
  init_github_sync();
22228
22246
  SetupAutomationDescriptionSchema = external_exports.string().max(2e3).refine((value) => value.trim().length > 0);
22229
22247
  SetupOnboardingPullRequestCreateRequestSchema = external_exports.object({
22248
+ operationId: external_exports.string().uuid().optional(),
22230
22249
  githubConnection: external_exports.string().trim().min(1).optional(),
22231
22250
  slackConnection: external_exports.string().trim().min(1).optional(),
22232
22251
  repo: GithubSyncRepositoryFullNameSchema,
@@ -22266,11 +22285,13 @@ var init_setup = __esm({
22266
22285
  SetupOnboardingPullRequestCreateResponseSchema = external_exports.discriminatedUnion("mode", [
22267
22286
  external_exports.object({
22268
22287
  mode: external_exports.literal("pull_request"),
22288
+ operationId: external_exports.string().uuid(),
22269
22289
  pullRequest: SetupOnboardingPullRequestSchema,
22270
22290
  onboardingRun: SetupOnboardingRunReferenceSchema.optional()
22271
22291
  }),
22272
22292
  external_exports.object({
22273
22293
  mode: external_exports.literal("sync"),
22294
+ operationId: external_exports.string().uuid(),
22274
22295
  sync: SetupOnboardingSyncSchema,
22275
22296
  onboardingRun: SetupOnboardingRunReferenceSchema.optional()
22276
22297
  })
@@ -56464,12 +56485,13 @@ function toManagedTemplate(template) {
56464
56485
  versions: template.versions.map(toTemplateVersion)
56465
56486
  };
56466
56487
  }
56467
- var TEMPLATE_DESCRIPTIONS, MANAGED_TEMPLATES, HardcodedTemplateRegistry, defaultTemplateRegistry;
56488
+ var RETIRED_TEMPLATE_NAMES, TEMPLATE_DESCRIPTIONS, MANAGED_TEMPLATES, HardcodedTemplateRegistry, defaultTemplateRegistry;
56468
56489
  var init_hardcoded = __esm({
56469
56490
  "../../packages/schemas/src/templates/hardcoded.ts"() {
56470
56491
  "use strict";
56471
56492
  init_content_generated();
56472
56493
  init_registry();
56494
+ RETIRED_TEMPLATE_NAMES = /* @__PURE__ */ new Set(["@auto/onboarding"]);
56473
56495
  TEMPLATE_DESCRIPTIONS = {
56474
56496
  "@auto/agent-fleet": "An engineering fleet: a direct-session chief-of-staff orchestrator that dispatches and shepherds staff-engineer coding agents, with optional Slack intake and reporting.",
56475
56497
  "@auto/blank-canvas": "The Blank Canvas workshop: a Patron front of house that turns a plain-language commission into the smallest useful team, authoring every hire as a reviewable setup PR.",
@@ -56488,8 +56510,8 @@ var init_hardcoded = __esm({
56488
56510
  "@auto/issue-triage": "Issue triage plus an implementation coder on a GitHub Issues or Linear substrate, with optional Slack reporting; deprecated -slack entrypoints keep the required-Slack behavior.",
56489
56511
  "@auto/lead-engine": "A sourced lead researcher for webhook payloads, direct-session criteria, public web signals, and authorized provider-backed sources; -slack entrypoint for a sales-channel flow.",
56490
56512
  "@auto/janitor": "A scheduled repository hygiene specialist that sweeps stale branches, labels, TODOs, and artifact bloat through reviewable cleanup pull requests.",
56491
- "@auto/onboarding": "Auto's house onboarding guidance, importable as a managed template.",
56492
- "@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).",
56513
+ "@auto/onboarding": "Retired standalone onboarding guidance retained for exact-version compatibility.",
56514
+ "@auto/onboarding-quickstart": "The quickstart template repo's onboarding overlay: composes onto the final pinned standalone onboarding version with the fork-flow walkthrough beats (site request bar, handoff loop, self-improvement demo).",
56493
56515
  "@auto/pr-review": "Auto's full pull-request reviewer agent, with optional Slack verdict reporting.",
56494
56516
  "@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.",
56495
56517
  "@auto/reaper": "A warn-first cleanup specialist for stale pull requests, stuck sessions, and zombie branches.",
@@ -56519,13 +56541,15 @@ var init_hardcoded = __esm({
56519
56541
  }));
56520
56542
  HardcodedTemplateRegistry = class {
56521
56543
  templates;
56522
- constructor(templates = MANAGED_TEMPLATES) {
56544
+ retiredTemplateNames;
56545
+ constructor(templates = MANAGED_TEMPLATES, retiredTemplateNames = RETIRED_TEMPLATE_NAMES) {
56523
56546
  this.templates = new Map(
56524
56547
  templates.map((template) => [template.name, template])
56525
56548
  );
56549
+ this.retiredTemplateNames = retiredTemplateNames;
56526
56550
  }
56527
56551
  listTemplates() {
56528
- return [...this.templates.values()].map(toManagedTemplate);
56552
+ return [...this.templates.values()].filter((template) => !this.retiredTemplateNames.has(template.name)).map(toManagedTemplate);
56529
56553
  }
56530
56554
  getTemplate(name) {
56531
56555
  const template = this.templates.get(name);
@@ -56536,6 +56560,11 @@ var init_hardcoded = __esm({
56536
56560
  if (track.kind === "pinned") {
56537
56561
  return toTemplateVersion(this.requireVersion(template, track.version));
56538
56562
  }
56563
+ if (this.retiredTemplateNames.has(name)) {
56564
+ throw new Error(
56565
+ `Managed template ${name} is retired; pin an exact version`
56566
+ );
56567
+ }
56539
56568
  return deriveLatestVersion(toManagedTemplate(template));
56540
56569
  }
56541
56570
  getFiles(name, version2) {
@@ -61142,7 +61171,7 @@ var init_package = __esm({
61142
61171
  "package.json"() {
61143
61172
  package_default = {
61144
61173
  name: "@autohq/cli",
61145
- version: "0.1.481",
61174
+ version: "0.1.483",
61146
61175
  license: "SEE LICENSE IN README.md",
61147
61176
  publishConfig: {
61148
61177
  access: "public"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autohq/cli",
3
- "version": "0.1.481",
3
+ "version": "0.1.483",
4
4
  "license": "SEE LICENSE IN README.md",
5
5
  "publishConfig": {
6
6
  "access": "public"