Tell every bot its own id, in every run
The bot's id never reached its prompt: `composeBotPrompt` only took its instructions, the appendix, its memory and its workspace, and `grabBotPrompt` never passed `bot.id` or `bot.name` on. A bot could only learn its id by accident, from a tool description that named it, so "which bot am I" was unanswerable in most contexts. - Open the prompt with who the bot is (`composeIdentity`): its name, whether it's the coordinator or a worker, its role, and its id, said to be how tools and refs point back at it. `grabBotPrompt` now passes the bot, which covers chat replies, tasks, routines and delegated tasks, since both runners build their prompt there. - Turn the notes' example refs into functions bound to the running bot: `chatReplyNote`, `botFilesNote` and `coordinatorReplyNote` take its id, so the folder-ref example no longer points at a hardcoded `owner_id: 5` (another bot's folder) nor `[bot:3]`. ComputerFilesNote keeps the computer it's given. - Stop `create_task` from hiding the worker's own id in its own chat. Tests: four new `composeBotPrompt` cases pin the identity block (worker, coordinator, unnamed, no bot at all), and a new `harness-prompts.test.ts` checks each note's own-folder and self refs point at exactly the running bot, for three ids.
This commit is contained in:
@@ -19,10 +19,10 @@ type Params = {
|
||||
};
|
||||
|
||||
/**
|
||||
* The full prompt for one of the user's bots (`composeBotPrompt`): its
|
||||
* core instructions, the install-wide appendix, its memory, what it
|
||||
* remembers about this user, and in a workspace that workspace's context
|
||||
* and what the bot has for it.
|
||||
* The full prompt for one of the user's bots (`composeBotPrompt`): who it
|
||||
* is (its name and id), its core instructions, the install-wide appendix,
|
||||
* its memory, what it remembers about this user, and in a workspace that
|
||||
* workspace's context and what the bot has for it.
|
||||
*/
|
||||
export default async function grabBotPrompt({ bot_id, user_id, workspace_id }: Params) {
|
||||
const bot = await grabUserBot({ bot_id, user_id });
|
||||
@@ -40,6 +40,7 @@ export default async function grabBotPrompt({ bot_id, user_id, workspace_id }: P
|
||||
}
|
||||
|
||||
return composeBotPrompt({
|
||||
bot: { id: bot.id, name: bot.name, kind: bot.kind, role: bot.role },
|
||||
system_prompt: bot.system_prompt,
|
||||
appendix: await grabSystemPromptAppend(),
|
||||
memory: bot.memory,
|
||||
|
||||
Reference in New Issue
Block a user