Repository navigation
feat: mount OCI skills through Substrate image volumes - #3203
Conversation
supreme-gg-gg
left a comment
There was a problem hiding this comment.
This change LGTM, two minor comments found by Codex, and also this would need rebasing
| if selected != 1 { | ||
| return "", fmt.Errorf("exactly one artifact source is required") | ||
| } | ||
| if source.Directory != "" { |
There was a problem hiding this comment.
🤖 AI generated
Can we make validation and copying handle .git consistently? Mounted images can contain special files that the old extractor skipped. A FIFO under .git bypasses validation and blocks copySkill in os.ReadFile. Please validate everything we copy, or skip .git during copying too, and add regression coverage.
| require.NoError(t, os.WriteFile(filepath.Join(root, ".claude-plugin/plugin.json"), []byte(`{"name":"mounted-native"}`), 0o644)) | ||
| materialized, err := Materialize(t.Context(), agentplugin.Resources{Plugins: []agentplugin.Bundle{{Source: agentplugin.Source{Directory: root}}}}, Paths{Packages: t.TempDir(), Skills: t.TempDir()}) | ||
| require.NoError(t, err) | ||
| require.Equal(t, []string{root}, materialized.ClaudeFormatPluginRoots()) |
There was a problem hiding this comment.
🤖 AI generated
Can we resolve root with filepath.EvalSymlinks before comparing? This assertion fails on macOS because the returned plugin root is canonicalized from /var/... to /private/var/....
805f3db to
9a4a696
Compare
This comment has been minimized.
This comment has been minimized.
Yea, we started using it recently when github runners were super sparse, and these have been so much faster! |
e50a000 to
2af137c
Compare
Depends on kagent-dev#3203 which makes OCI skills work again Go ADK automatically registers bash when skills are loaded. Add `runtime.skill_tools.disable_bash` to disable it for the root agent and all subagents while preserving skill loading and file tools. Bash remains enabled by default. Group `file_search_tools`, `bash_venv_path`, and `disable_bash` into a shared `SkillToolsConfig` used by controller defaults and ADK runtime configuration. Update Go and Python consumers, Helm values, documentation, and generated protobuf outputs. Existing flat settings must move into the nested block. For controller-managed runtimes, set `config.runtimeDefaults.skillTools.disableBash: true`. --------- Signed-off-by: Jet Chiang <[email protected]>
Signed-off-by: Eitan Yarmush <[email protected]>
Signed-off-by: Eitan Yarmush <[email protected]>
Signed-off-by: Eitan Yarmush <[email protected]>
Signed-off-by: Eitan Yarmush <[email protected]>
Signed-off-by: Eitan Yarmush <[email protected]>
Signed-off-by: Eitan Yarmush <[email protected]>
2af137c to
8f025a8
Compare
…gent-dev#3203 Signed-off-by: QuentinBisson <[email protected]>
* docs(fork): ledger facts as of 2026-10-19 Signed-off-by: QuentinBisson <[email protected]> * docs(fork): the compiled-skills carried row superseded by upstream kagent-dev#3203 Signed-off-by: QuentinBisson <[email protected]> * docs(fork): a machine-readable header on every carried-change file (#720) * docs(fork): a machine-readable header on every carried-change file Every file under fork/carried/ opens with the YAML front-matter proposed in #719, seeded from the row and the 2026-10-19 state board; scripts/fork/carried.sh skips the front-matter before checking the row; FORK.md names the fields. Signed-off-by: QuentinBisson <[email protected]> * docs(fork): drop internal tracker numbers from the headers, add the Substrate counterpart edges Signed-off-by: QuentinBisson <[email protected]> * ci(fork): check the ledger header schema The fork-ledger check runs scripts/fork/ledger-header.sh on fork/carried next to carried.sh --check, with its --self-test fixtures, the same rules as fork-ledger validate (#719). Signed-off-by: QuentinBisson <[email protected]> --------- Signed-off-by: QuentinBisson <[email protected]> --------- Signed-off-by: QuentinBisson <[email protected]>
OCI skills currently pull from inside the golden runtime, where registry access is unavailable. This moves those pulls to Substrate image volumes so the worker mounts the package before preparation and restores it with the actor, using the same registry credentials as workload images.
The compiler deduplicates digest-pinned images across skills, plugins, and shared agents. Runtimes load selected skills from the mounted directories, and the old OCI fetcher is removed. The public
source.ociAPI stays the same.Adds local-registry E2E coverage across Go ADK, Codex, Claude, and BYO ADK: skill discovery, loading
SKILL.mdthrough each harness's normal tools, real script execution, excluded skills, and suspend/resume. Model responses are deterministic; pulls, mounts, and tool execution are real. This checks runtime wiring, not real-model selection quality.