Repository navigation
v0.18.0
Changed (breaking): OpenAI Agents SDK agents get their prompt and skills from load_agent()
- New:
decimalai.openai_agents.load_agent(name, fallback=..., on_unavailable="continue")
returnsinstructions(the agent's saved prompt, with{{placeholders}}filled from
Runner.run(context=...), then its skill list) andtools(load_skill, limited to the
agent's skills), which you pass into your ownAgent(...). Every run is routed on its own
latest message (read fromRunContextWrapper.turn_input; without it, a fixed order and one
warning): the first run before its model call, later runs from a local copy while their own
decision is recorded in the background, and an agent whose menu is cut to fit before every
model call. The prompt is re-read in the background at most once a minute. The prompt
version, its placeholder names (not values) and any skill outage are on the agent's span,
and the trace is filed under theload_agent()name. An unknown agent name raises. - Removed: every patch on the Agents SDK —
Agent.__init__,Agent.get_system_prompt,
Agent.get_all_tools,agents.run_internal.turn_resolution.check_for_final_output_from_tools
and the sandboxSkills.load_skill/Skills.instructions. They gave every agent in the
process skills and relied on SDK internals that may change in any patch release. init(openai_agents=True)andinstrument()now trace only.openai_agents.instrument()no
longer takesenable_skill_loader, andinit()'sskills=applies to thelangchain,adk
andcrewaiflags only.- DecimalAI's skills turn off for one agent, with one warning, when its
tool_use_behavior
is"stop_on_first_tool"(a skill's text would become the answer), it loads skills with the
sandboxSkillscapability, it has another tool namedload_skill, or its instructions are
support.instructionsbut its tools leave out*support.tools. The prompt still runs. - The tool's kill switch still works: with
DECIMALAI_LOAD_SKILL_TOOL=0or
init(load_skill_tool=False), the text of the skills picked for each run's message goes into
the instructions instead (inject_skill_body, which defaults to on once the tool is off). init(enabled=False)afterload_agent()stops routing and skills for that config; the
prompt it read keeps running.init(openai_agents=True)andinstrument()read the project's ownSKILL.mdfiles (and
sync the ones you wrote) only when asked:disk_sync=True,skill_dirs=, or the harness
skill authority.sandbox_skills()still records what it lists and loads, in its ownSkillssubclass; a
plainSkills(...)is no longer observed.decimalai init --framework openai-agentswrites the new shape.
Migration:
# before
decimalai.init(openai_agents=True, agent_name="support")
agent = Agent(name="support", instructions=BASE_INSTRUCTIONS, tools=[lookup_order])
# after
from decimalai.openai_agents import load_agent
support = load_agent("support", fallback=BASE_INSTRUCTIONS)
agent = Agent(name=support.name, instructions=support.instructions,
tools=[lookup_order, *support.tools])Removed (breaking): what only existed to ease the move from older releases
-
install(), the deprecated alias ofinstrument(), in all nine framework modules
(adk,anthropic,autogen,claude_agent_sdk,langchain,llamaindex,
openai_agents,otel,pydantic_ai). Callinstrument(). -
The 0.14 disk verbs, deprecated since 0.15. There is one way a registry skill reaches
disk:decimalai skills add(router.export(name)in Python).removed use decimalai skills export <ref>,decimalai skills install <ref>decimalai skills add <ref>SkillRouter.install(),install_skill(),export_to_disk()router.export(name)SkillRouter.pull_missing()decimalai skills installSkillRouter.pull_skill()router.preview(name)export(agents=..., scope=...)nothing: there is one root, .agents/skillsdecimalai.disk_export(export_skill_to_disk(),export_skills_to_disk(),AGENT_PATHS)decimalai skills adddecimalai skills installwith no name is unchanged; its hidden 0.14 options--agent,
--scopeand--outare gone. -
The version 1 lock fallback.
router.export()androuter.update_skills()refuse a
project whose.decimal/skills.lockdecimalai 0.14 wrote, as everydecimalai skills
command already did, and name the fix: rundecimalai skills migrateonce. -
SkillRouter.search_registry, a second name forsearch(). -
skill_router.should_auto_pull_to_disk(), which nothing called, and the one-time warning
thatinstrument(disk_sync=True)no longer writes skills to disk.disk_syncdecides
whether the project's ownSKILL.mdfiles are read and synced; it never wrote registry
skills in 0.15 or later. -
project=, deprecated since 0.10.0 and never read by the platform (traces are scoped
by the API key; group them with workspaces): ondecimalai.init(),DecimalAIClient(), the
LangChainCallbackHandler, ADK'sDecimalaiPlugin(), and the Claude Agent SDK's
trace_stream()andtraced_query(), plus the CLI's hidden--projectoption.
(decimalai init --project <dir>, which writes a Support project, is unchanged.) The trace
schema keeps itsprojectfield, unset. -
annotate_trace()'stext=(passnotes=), andannotation_type=andspan_id=, which
the endpoint never accepted. -
decimalai.skills.detect_skill_activations(), the deprecated alias of
detect_skills_present_in_prompt(): matching prompt text shows a skill was present, not
that it was activated.