mirror of
https://github.com/openai/codex.git
synced 2026-11-13 06:45:07 +00:00
Add managed developer instructions to requirements (#39755)
## What changed - Add `additional_developer_instructions` to managed requirements and expose it through `configRequirements/read` as `additionalDeveloperInstructions`, independently of ordinary developer instructions. - Include the managed instructions in model context, emit explicit replacement or removal messages when requirements change, and preserve the current value across compaction, resume, and agent forks without duplication. - Reject managed instructions whose rendered context exceeds 10,000 estimated tokens. ## Testing - Cover requirements layering and API serialization, context updates and removal, size validation, repeated model requests, compaction and resume, rollout migration, and agent forks. GitOrigin-RevId: bc0b70fb7988944c2f68176dff55f5ed61eb46c8
This commit is contained in:
1 parent
85a1b0e33d
commit
ce950dcf26
31 files changed
+540
-19
No files matched your search
@@ -21,6 +21,7 @@ use crate::compact::CompactedHistoryMetadata;
|
||||
use crate::config::ManagedFeatures;
|
||||
use crate::config::resolve_tool_suggest_config_from_layer_stack;
|
||||
use crate::context::ContextualUserFragment;
|
||||
use crate::context::ManagedDeveloperInstructions;
|
||||
use crate::context::ModelSwitchInstructions;
|
||||
use crate::context::MultiAgentRoleInstructions;
|
||||
use crate::context::NetworkRuleSaved;
|
||||
@@ -3646,6 +3647,7 @@ impl Session {
|
||||
}
|
||||
// Render the active mode after the usage hint so it can override that hint.
|
||||
let mut initial_multi_agent_mode = None;
|
||||
let mut managed_developer_instructions = None;
|
||||
for fragment in world_state.render_full() {
|
||||
match fragment.role() {
|
||||
"developer"
|
||||
@@ -3657,6 +3659,11 @@ impl Session {
|
||||
"developer" if fragment.markers().0 == MULTI_AGENT_MODE_OPEN_TAG => {
|
||||
initial_multi_agent_mode = Some(fragment);
|
||||
}
|
||||
"developer"
|
||||
if fragment.markers().0 == ManagedDeveloperInstructions::type_markers().0 =>
|
||||
{
|
||||
managed_developer_instructions = Some(fragment);
|
||||
}
|
||||
"developer"
|
||||
if fragment.markers().0 == MultiAgentRoleInstructions::type_markers().0 =>
|
||||
{
|
||||
@@ -3706,6 +3713,9 @@ impl Session {
|
||||
{
|
||||
items.push(guardian_developer_message);
|
||||
}
|
||||
if let Some(managed_developer_instructions) = managed_developer_instructions {
|
||||
items.push(managed_developer_instructions.into_boxed_response_item());
|
||||
}
|
||||
// New context windows and compaction install these items directly into replacement history.
|
||||
for item in &mut items {
|
||||
item.set_turn_id_if_missing(&turn_context.sub_id);
|
||||
|
||||
Reference in new issue
Block a user