Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ version: 2
before:
hooks:
- go mod download
- go run ./internal/pindepversions --version {{ .Version }}

builds:
- env:
Expand Down
17 changes: 13 additions & 4 deletions cmd/apps/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,14 @@ import (
"github.com/databricks/cli/cmd/root"
"github.com/databricks/cli/experimental/aitools/lib/agents"
"github.com/databricks/cli/experimental/aitools/lib/installer"
"github.com/databricks/cli/internal/build"
"github.com/databricks/cli/libs/apps/generator"
"github.com/databricks/cli/libs/apps/initializer"
"github.com/databricks/cli/libs/apps/manifest"
"github.com/databricks/cli/libs/apps/prompt"
"github.com/databricks/cli/libs/cmdctx"
"github.com/databricks/cli/libs/cmdio"
"github.com/databricks/cli/libs/depversions"
"github.com/databricks/cli/libs/env"
"github.com/databricks/cli/libs/git"
"github.com/databricks/cli/libs/log"
Expand All @@ -38,7 +40,6 @@ const (
appkitTemplateDir = "template"
appkitDefaultBranch = "main"
appkitTemplateTagPfx = "template-v"
appkitDefaultVersion = "template-v0.24.0"
defaultProfile = "DEFAULT"
)

Expand Down Expand Up @@ -169,7 +170,11 @@ Environment variables:

cmd.Flags().StringVar(&templatePath, "template", "", "Template path (local directory or GitHub URL)")
cmd.Flags().StringVar(&branch, "branch", "", "Git branch or tag (for GitHub templates, mutually exclusive with --version)")
cmd.Flags().StringVar(&version, "version", "", fmt.Sprintf("AppKit version to use (default: %s, use 'latest' for main branch)", appkitDefaultVersion))
versionDesc := "AppKit version to use (use 'latest' for main branch)"
if v := build.GetDepVersions().AppKit; v != "" {
versionDesc = fmt.Sprintf("AppKit version to use (default: %s, use 'latest' for main branch)", v)
}
cmd.Flags().StringVar(&version, "version", "", versionDesc)
cmd.Flags().StringVar(&name, "name", "", "Project name (prompts if not provided)")
cmd.Flags().StringVar(&warehouseID, "warehouse-id", "", "SQL warehouse ID")
_ = cmd.Flags().MarkDeprecated("warehouse-id", "use --set <plugin>.sql-warehouse.id=<value> instead")
Expand Down Expand Up @@ -776,8 +781,12 @@ func runCreate(ctx context.Context, opts createOptions) error {
case opts.version != "":
gitRef = normalizeVersion(opts.version)
default:
// Default: use pinned version
gitRef = appkitDefaultVersion
appkitVersion, err := depversions.ResolveAppKitVersion(ctx)
if err != nil {
return fmt.Errorf("could not resolve AppKit template version: %w. Use --version to specify a version manually", err)
}
gitRef = normalizeVersion(appkitVersion)
cmdio.LogString(ctx, "Using AppKit template version "+appkitVersion)
}
templateSrc = appkitRepoURL
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/apps/init_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ func TestNormalizeVersion(t *testing.T) {
{"", ""},
{"main", "main"},
{"feat/something", "feat/something"},
{appkitDefaultVersion, appkitDefaultVersion},
{"template-v0.24.0", "template-v0.24.0"},
}

for _, tt := range tests {
Expand Down
7 changes: 6 additions & 1 deletion cmd/apps/manifest.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"path/filepath"

"github.com/databricks/cli/libs/apps/manifest"
"github.com/databricks/cli/libs/depversions"
"github.com/databricks/cli/libs/env"
"github.com/spf13/cobra"
)
Expand All @@ -27,7 +28,11 @@ func runManifestOnly(ctx context.Context, templatePath, branch, version string)
case version != "":
gitRef = normalizeVersion(version)
default:
gitRef = appkitDefaultVersion
appkitVersion, err := depversions.ResolveAppKitVersion(ctx)
if err != nil {
return fmt.Errorf("could not resolve AppKit template version: %w. Use --version to specify a version manually", err)
}
gitRef = normalizeVersion(appkitVersion)
}
templateSrc = appkitRepoURL
}
Expand Down
5 changes: 4 additions & 1 deletion experimental/aitools/cmd/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,10 @@ func newListCmd() *cobra.Command {
func defaultListSkills(cmd *cobra.Command, scope string) error {
ctx := cmd.Context()

ref := installer.GetSkillsRef(ctx)
ref, err := installer.GetSkillsRef(ctx)
if err != nil {
return err
}

src := &installer.GitHubManifestSource{}
manifest, err := src.FetchManifest(ctx, ref)
Expand Down
6 changes: 5 additions & 1 deletion experimental/aitools/cmd/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (

"github.com/databricks/cli/experimental/aitools/lib/installer"
"github.com/databricks/cli/libs/cmdio"
"github.com/databricks/cli/libs/log"
"github.com/spf13/cobra"
)

Expand Down Expand Up @@ -44,7 +45,10 @@ func newVersionCmd() *cobra.Command {
return nil
}

latestRef := installer.GetSkillsRef(ctx)
latestRef, err := installer.GetSkillsRef(ctx)
if err != nil {
log.Debugf(ctx, "could not resolve skills version: %v", err)
}
bothScopes := globalState != nil && projectState != nil

cmdio.LogString(ctx, "Databricks AI Tools:")
Expand Down
1 change: 0 additions & 1 deletion experimental/aitools/lib/installer/SKILLS_VERSION

This file was deleted.

25 changes: 17 additions & 8 deletions experimental/aitools/lib/installer/installer.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
"github.com/databricks/cli/experimental/aitools/lib/agents"
"github.com/databricks/cli/internal/build"
"github.com/databricks/cli/libs/cmdio"
"github.com/databricks/cli/libs/depversions"
"github.com/databricks/cli/libs/env"
"github.com/databricks/cli/libs/log"
"github.com/fatih/color"
Expand All @@ -33,13 +34,17 @@ const (
// It is a package-level var so tests can replace it with a mock.
var fetchFileFn = fetchSkillFile

// GetSkillsRef returns the skills repo ref to use. If DATABRICKS_SKILLS_REF
// is set, it returns that value; otherwise it returns the default ref.
func GetSkillsRef(ctx context.Context) string {
// GetSkillsRef returns the skills repo ref to use.
// Resolution order: DATABRICKS_SKILLS_REF env var → compatibility manifest → error.
func GetSkillsRef(ctx context.Context) (string, error) {
if ref := env.Get(ctx, "DATABRICKS_SKILLS_REF"); ref != "" {
return ref
return ref, nil
}
return defaultSkillsRepoRef
v, err := depversions.ResolveAgentSkillsVersion(ctx)
if err != nil {
return "", fmt.Errorf("could not resolve skills version: %w", err)
}
return "v" + v, nil
}

// Manifest describes the skills manifest fetched from the skills repo.
Expand Down Expand Up @@ -93,7 +98,12 @@ func fetchSkillFile(ctx context.Context, ref, skillName, filePath string) ([]byt
// This is the core installation function. Callers are responsible for agent detection,
// prompting, and printing the "Installing..." header.
func InstallSkillsForAgents(ctx context.Context, src ManifestSource, targetAgents []*agents.Agent, opts InstallOptions) error {
ref := GetSkillsRef(ctx)
ref, err := GetSkillsRef(ctx)
if err != nil {
return err
}
tag := strings.TrimPrefix(ref, "v")
cmdio.LogString(ctx, "Using skills version "+tag)
manifest, err := src.FetchManifest(ctx, ref)
if err != nil {
return err
Expand Down Expand Up @@ -194,12 +204,11 @@ func InstallSkillsForAgents(ctx context.Context, src ManifestSource, targetAgent
return err
}

tag := strings.TrimPrefix(ref, "v")
noun := "skills"
if len(targetSkills) == 1 {
noun = "skill"
}
cmdio.LogString(ctx, fmt.Sprintf("Installed %d %s (v%s).", len(targetSkills), noun, tag))
cmdio.LogString(ctx, fmt.Sprintf("Installed %d %s.", len(targetSkills), noun))
return nil
}

Expand Down
Loading
Loading