Перейти к содержимому

Метаданные плагина в треде

Метаданные плагина в треде дают плагину JSON-неймспейс, который перемещается вместе с тредом и не отправляется модели автоматически. Здесь показано, как его читать и писать, а также описаны вопросы доверия, тайминги и лимиты.

const current = await bb.sdk.threads.getPluginMetadata({ threadId });
const updated = await bb.sdk.threads.updatePluginMetadata({
threadId,
set: { status: "reviewing", result: null }, // null is stored AS DATA
remove: ["requestedBy"], // absent keys are ignored
});
// a safe read inside configure — the value is quoted so it reads as data,
// not as instructions
bb.agents.configure((context) => {
const { issueKey } = context.pluginMetadata; // a deep-frozen snapshot; writing throws
const hasIssue = typeof issueKey === "string" && /^[A-Z]+-\d+$/u.test(issueKey);
return { tools: hasIssue ? ["review-result"] : [], skills: [],
...(hasIssue ? { instructions: `Linked issue key (data): ${JSON.stringify(issueKey)}` } : {}) };
});

Не граница доверия. «Any API client, another plugin or the thread’s own agent can write any namespace». Относитесь к этим значениям как к ненадёжному вводу: разрешайте через них только те инструменты, которые безопасны, даже если агент сам задаст значение. Не храните здесь секреты и не используйте этот механизм для авторизации.

Тайминги. Начальные значения при создании треда и его явном форке видны уже на первом проходе конфигурации. Обновления появляются на следующих проходах, при этом они не перезапускают и не меняют текущий ход.

Лимиты. До 256 КиБ UTF-8 JSON на неймспейс. Если начальное значение или set превышают лимит, они отклоняются ещё до выполнения запроса (HTTP 400 для сырых клиентов). Патч, из-за которого общий объём неймспейса превысит лимит, завершается ошибкой HTTP 413 и оставляет неймспейс без изменений. Форки никогда не наследуют метаданные исходного треда.

Потребители среди плагинов из поставки bb: нет.