@sema-agent/core 1.326.0 → 1.328.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -73,6 +73,10 @@ const ungatedWarnedShapes = new WeakMap();
73
73
  const advisedPolicyNames = new WeakMap();
74
74
  const ADVISED_KEYS_CAP = 64;
75
75
  export const DEFAULT_IRREVERSIBLE_SCOPE = "irreversible";
76
+ export function isFableFamilyModelId(id) {
77
+ const tail = id.toLowerCase().split("/").pop() ?? "";
78
+ return /^claude-fable-\d/.test(tail) || /^claude-mythos-5(?!\d)/.test(tail);
79
+ }
76
80
  function batchContextAt(messages, currentId) {
77
81
  let batch = [];
78
82
  for (const m of messages) {
@@ -141,6 +145,7 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
141
145
  exclude: spec.excludeTools ? Object.freeze([...spec.excludeTools]) : undefined,
142
146
  defer: spec.deferTools ? Object.freeze([...spec.deferTools]) : undefined,
143
147
  };
148
+ const promptProfile = spec.promptProfile ?? internals?.promptProfile ?? "simple";
144
149
  if (spec.resumeAt !== undefined) {
145
150
  if (resume) {
146
151
  const e = new Error("resumeAt cannot be combined with a durable resume");
@@ -182,6 +187,7 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
182
187
  }
183
188
  const resolvedRole = resolveTaskModel(spec, deps);
184
189
  const model = resolvedRole.model;
190
+ const fableMitigations = isFableFamilyModelId(model.id);
185
191
  const thinking = spec.thinking ?? resolvedRole.thinking ?? model.defaultThinking;
186
192
  const compModel = spec.compactionModel
187
193
  ? resolveModel(spec.compactionModel, deps.models)
@@ -670,6 +676,7 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
670
676
  clientContext: spec.clientContext,
671
677
  excludeTools: toolFaceSnapshot.exclude,
672
678
  deferTools: toolFaceSnapshot.defer,
679
+ promptProfile,
673
680
  getApiKeyAndHeaders: spec.getApiKeyAndHeaders,
674
681
  parentCwd: taskRootPath,
675
682
  activeSkillScope: () => skillScope.active(),
@@ -766,6 +773,7 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
766
773
  governanceBaseline: deps.workflowGovernanceBaseline,
767
774
  parentExcludeTools: toolFaceSnapshot.exclude,
768
775
  parentDeferTools: toolFaceSnapshot.defer,
776
+ parentPromptProfile: promptProfile,
769
777
  models: deps.models,
770
778
  agents: deps.agents,
771
779
  builtinAgents: deps.builtinAgents,
@@ -1500,6 +1508,13 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
1500
1508
  if (excluded.has(tools[i].name))
1501
1509
  tools.splice(i, 1);
1502
1510
  }
1511
+ if (promptProfile === "classic") {
1512
+ for (let i = 0; i < tools.length; i++) {
1513
+ const t = tools[i];
1514
+ if (t.descriptionClassic !== undefined)
1515
+ tools[i] = { ...t, description: t.descriptionClassic };
1516
+ }
1517
+ }
1503
1518
  const assembled = assemblePrompt({
1504
1519
  provider,
1505
1520
  isDefaultProvider: provider === defaultPromptProvider,
@@ -1512,6 +1527,8 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
1512
1527
  ...featureFlags,
1513
1528
  orchestrationEnabled: featureFlags.orchestrationEnabled && tools.some((t) => t.name === "Workflow"),
1514
1529
  orchestrationDeferred: featureFlags.orchestrationDeferred && tools.some((t) => t.name === "Workflow"),
1530
+ promptProfile,
1531
+ fableMitigations,
1515
1532
  },
1516
1533
  mcpInstructionsBlock,
1517
1534
  memoryBlock,