Skip to content

Commit c79f553

Browse files
committed
fix: improve fallback guards for AppKit and skills resolution
- Only fall back to embedded version when version was auto-resolved, not when user explicitly passed --version or --branch - Skip fallback if embedded version matches the one already tried - Log warning when embedded fallback resolution itself fails Co-authored-by: Isaac
1 parent 702d30e commit c79f553

3 files changed

Lines changed: 14 additions & 6 deletions

File tree

cmd/apps/init.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -863,15 +863,18 @@ func runCreate(ctx context.Context, opts createOptions) error {
863863

864864
// Step 2: Wait for template (may already be done if the user took time typing the name)
865865
resolvedPath, cleanup, err := awaitTemplate(ctx, templateCh)
866-
if err != nil && usingDefaultTemplate && clicompat.IsNotFoundError(err) {
867-
// The resolved version doesn't exist as a tag. Fall back to the
868-
// embedded manifest which ships a known-good version.
866+
// Only fall back to the embedded version when the version was auto-resolved
867+
// from the manifest, not when the user explicitly passed --version or --branch.
868+
versionAutoResolved := opts.version == "" && opts.branch == ""
869+
if err != nil && usingDefaultTemplate && versionAutoResolved && clicompat.IsNotFoundError(err) {
869870
fallbackVersion, fbErr := clicompat.ResolveEmbeddedAppKitVersion()
870-
if fbErr == nil && fallbackVersion != "" {
871+
if fbErr == nil && fallbackVersion != "" && normalizeVersion(fallbackVersion) != branchForClone {
871872
log.Warnf(ctx, "Template version not found, falling back to embedded version %s", fallbackVersion)
872873
fallbackRef := normalizeVersion(fallbackVersion)
873874
templateCh = resolveTemplateAsync(ctx, templateSrc, fallbackRef, appkitTemplateDir)
874875
resolvedPath, cleanup, err = awaitTemplate(ctx, templateCh)
876+
} else if fbErr != nil {
877+
log.Warnf(ctx, "Could not resolve embedded AppKit version: %v", fbErr)
875878
}
876879
}
877880
if err != nil {

cmd/apps/manifest.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,15 @@ func runManifestOnly(ctx context.Context, templatePath, branch, version string)
4545
subdirForClone = appkitTemplateDir
4646
}
4747
resolvedPath, cleanup, err := resolveTemplate(ctx, templateSrc, branchForClone, subdirForClone)
48-
if err != nil && usingDefaultTemplate && clicompat.IsNotFoundError(err) {
48+
versionAutoResolved := version == "" && branch == ""
49+
if err != nil && usingDefaultTemplate && versionAutoResolved && clicompat.IsNotFoundError(err) {
4950
fallbackVersion, fbErr := clicompat.ResolveEmbeddedAppKitVersion()
50-
if fbErr == nil && fallbackVersion != "" {
51+
if fbErr == nil && fallbackVersion != "" && normalizeVersion(fallbackVersion) != gitRef {
5152
log.Warnf(ctx, "Template version not found, falling back to embedded version %s", fallbackVersion)
5253
fallbackRef := normalizeVersion(fallbackVersion)
5354
resolvedPath, cleanup, err = resolveTemplate(ctx, templateSrc, fallbackRef, appkitTemplateDir)
55+
} else if fbErr != nil {
56+
log.Warnf(ctx, "Could not resolve embedded AppKit version: %v", fbErr)
5457
}
5558
}
5659
if err != nil {

experimental/aitools/lib/installer/installer.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ func FetchSkillsManifestWithFallback(ctx context.Context, src ManifestSource, re
106106
log.Warnf(ctx, "Skills version %s not found, falling back to embedded version %s", tag, fallbackVersion)
107107
ref = "v" + fallbackVersion
108108
manifest, err = src.FetchManifest(ctx, ref)
109+
} else if fbErr != nil {
110+
log.Warnf(ctx, "Could not resolve embedded skills version: %v", fbErr)
109111
}
110112
}
111113
return manifest, ref, err

0 commit comments

Comments
 (0)