docs: update /docs for PRs merged 2026-06-22–23#3208
Conversation
PR #3184 replaced the blank-import opt-in pattern with an explicit toolset registry (pkg/teamloader/toolsets). The RAG toolset is now included in NewDefaultToolsetRegistry() by default. Document the opt-out pattern (delete creators["rag"] from the registry) for binaries that want a load-time warning rather than a deferred runtime error. Note that teamloader.Load() does not return an error for unknown toolset types — failures become load-time warnings attached to the agent. Clarify that pkg/rag/treesitter build-tag guards handle the cgo boundary automatically regardless of CGO_ENABLED.
PR #3189 decoupled the OS keyring token store from the embedder packages. The CLI calls keyringstore.Register() at startup; embedders that want persistent MCP OAuth tokens across restarts must call it before teamloader.Load() on configs with remote MCP toolsets. Document the Register() call, the panic trigger (MCP toolset construction, not OAuth lookup), and when to omit it.
docker-agent
left a comment
There was a problem hiding this comment.
Assessment: 🟡 NEEDS ATTENTION
| | Variable | Default | Description | | ||
| | -------- | ------- | ----------- | | ||
| | `OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT` | `false` | Set to `true` to capture prompt text, model responses, tool arguments, and tool results as span attributes. Off by default because these fields may contain PII. | | ||
| | `OTEL_SEMCONV_STABILITY_OPT_IN` | (dual-emit) | Set to `gen_ai_latest_experimental` to emit only the spec-defined `gen_ai.*` keys from the [GenAI semantic conventions](https://opentelemetry.io/docs/specs/semconv/gen-ai/). The default dual-emit mode emits both `gen_ai.*` and legacy keys so existing dashboards continue working. | |
There was a problem hiding this comment.
[HIGH] Incorrect OTEL_SEMCONV_STABILITY_OPT_IN value: gen_ai_latest_experimental is not a recognized OTel opt-in token
The documented value gen_ai_latest_experimental does not appear in the OpenTelemetry specification or the go.opentelemetry.io/contrib instrumentation libraries. The recognized values for OTEL_SEMCONV_STABILITY_OPT_IN in the GenAI semconv ecosystem are:
gen_ai— emit only the stable, spec-definedgen_ai.*keys (opt into the new semconv exclusively)gen_ai_experimental— used in some pre-stable contrib packages for experimental attributes
If a user follows this documentation and sets OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimental, the SDK will treat it as an unrecognized value and silently remain in dual-emit mode — the opposite of the documented behavior. Users trying to reduce cardinality or migrate away from legacy keys will be misled.
Suggested fix: Change gen_ai_latest_experimental to gen_ai (or gen_ai_experimental if this refers to pre-stable attributes). If this project's OTel instrumentation layer defines a custom value, add a note explaining that.
|
|
||
| // Opt out of the RAG toolset; a config that declares type: rag attaches | ||
| // a load-time warning to the agent instead of failing at document processing. | ||
| creators := loadertoolsets.DefaultToolsetCreators() |
There was a problem hiding this comment.
[MEDIUM] Go code snippet uses := outside a function body — invalid Go syntax
The snippet shows:
import (
"github.com/docker/docker-agent/pkg/teamloader"
loadertoolsets "github.com/docker/docker-agent/pkg/teamloader/toolsets"
)
creators := loadertoolsets.DefaultToolsetCreators()
delete(creators, "rag")
registry := teamloader.NewToolsetRegistry(creators)In Go, short variable declarations (:=) are only valid inside function bodies. At package scope only var declarations are allowed. As written, this snippet will not compile if copied into a Go source file.
This is inconsistent with the keyringstore.Register() snippet immediately below it in the same file, which is correctly wrapped in func main() { ... }.
Suggested fix: Wrap the statements in a function scope, e.g.:
import (
"github.com/docker/docker-agent/pkg/teamloader"
loadertoolsets "github.com/docker/docker-agent/pkg/teamloader/toolsets"
)
func main() {
creators := loadertoolsets.DefaultToolsetCreators()
delete(creators, "rag")
registry := teamloader.NewToolsetRegistry(creators)
// Pass to teamloader.Load via teamloader.WithToolsetRegistry(registry)
}
Updates documentation for two recently merged PRs:
PR #3192 — Add Miro to remote MCP service list
mcp.miro.com(streamable HTTP, OAuth DCR) to the Content & Media table in/features/remote-mcp/, with a note about the Enterprise plan requirement and a link to the official Miro MCP docs.PR #2620 — Document OTel traces + metrics + logs
--otelflag description from "Enable OpenTelemetry tracing" to "Enable OpenTelemetry observability: traces, metrics, and logs" in both thedocker agent runflags table and the Global Flags section.OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT(capture prompt/response PII, default off) andOTEL_SEMCONV_STABILITY_OPT_IN(switch to spec-onlygen_ai.*keys).This PR also carries forward two pending docs commits from the previous cycle (PRs #3184 and #3189).