diff --git a/agents/prompts/_generated/auditor.md b/agents/prompts/_generated/auditor.md index a0b5c851..0fd9b54f 100644 --- a/agents/prompts/_generated/auditor.md +++ b/agents/prompts/_generated/auditor.md @@ -7,12 +7,15 @@ | Verb | Body schema | |------|-------------| -| `triage` | `triage()` | | `i_am_idle` | `i_am_idle()` | +| `triage` | `triage()` | ### Content (do) tools | Tool | Body schema | |------|-------------| -| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None)` | +| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None, title: str | None = None, context: str = '', options: list[str | str] | None = None, chosen: str = '', rationale: str = '', consequences: list[str] | None = None, what_done: str = '', what_learned: str = '', what_struggled: str = '', next_steps: list[str] | None = None)` | | `evidence` | `evidence(task_id: UUID)` | +| `notify_list` | `notify_list(unread_only: bool = True, pending_ack_only: bool = False, limit: int = 20)` | +| `notify_get` | `notify_get(notification_id: UUID)` | +| `channels` | `channels()` | diff --git a/agents/prompts/_generated/cell_pm.md b/agents/prompts/_generated/cell_pm.md index e0105aaf..fec58a25 100644 --- a/agents/prompts/_generated/cell_pm.md +++ b/agents/prompts/_generated/cell_pm.md @@ -7,24 +7,31 @@ | Verb | Body schema | |------|-------------| +| `complete` | `complete(task_id: UUID, notes: str)` | +| `delegate` | `delegate(parent_task_id: UUID, title: str, description: str, assigned_to: str, team: str, task_type: str, nature: str, estimated_complexity: str, acceptance_criteria: list[str], project_id: UUID | None = None)` | +| `escalate_up` | `escalate_up(task_id: UUID, reason: str)` | | `give_me_work` | `give_me_work()` | -| `i_will_plan` | `i_will_plan(task_id: UUID, plan: str)` | -| `delegate` | `delegate(parent_task_id: UUID, title: str, description: str, assigned_to: str, team: str, task_type: str = 'code', acceptance_criteria: list[str] | None = None, estimated_complexity: str = 'medium')` | +| `i_am_idle` | `i_am_idle()` | +| `i_will_plan` | `i_will_plan(task_id: UUID, plan: str, approach: str, sub_tasks: list[str | str] = PydanticUndefined, technical_considerations: list[str] = PydanticUndefined, risks: list[str | str] = PydanticUndefined, open_questions: list[str | str | bool] = PydanticUndefined)` | +| `resume` | `resume(task_id: UUID)` | | `submit_up` | `submit_up(task_id: UUID, notes: str)` | | `triage` | `triage()` | | `unblock` | `unblock(task_id: UUID, restore: bool = True)` | -| `complete` | `complete(task_id: UUID, notes: str)` | -| `escalate_up` | `escalate_up(task_id: UUID, reason: str)` | | `unclaim` | `unclaim(task_id: UUID)` | -| `resume` | `resume(task_id: UUID)` | -| `i_am_idle` | `i_am_idle()` | ### Content (do) tools | Tool | Body schema | |------|-------------| -| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None)` | +| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None, title: str | None = None, context: str = '', options: list[str | str] | None = None, chosen: str = '', rationale: str = '', consequences: list[str] | None = None, what_done: str = '', what_learned: str = '', what_struggled: str = '', next_steps: list[str] | None = None)` | | `say` | `say(channel: str, text: str, task_id: UUID | None = None)` | | `dm` | `dm(recipient: str, text: str, task_id: UUID | None = None, skill: str | None = None)` | | `notify` | `notify(target: str, text: str, priority: str = 'normal', task_id: UUID | None = None)` | | `evidence` | `evidence(task_id: UUID)` | +| `open_session` | `open_session(task_id: UUID, channel: str, topic: str, relationship_type: str = 'discussion', group_id: UUID | None = None)` | +| `link_session` | `link_session(session_id: UUID, task_id: UUID, is_primary: bool = False, relationship_type: str = 'discussion')` | +| `pr_update` | `pr_update(see do_server)` | +| `notify_list` | `notify_list(unread_only: bool = True, pending_ack_only: bool = False, limit: int = 20)` | +| `notify_get` | `notify_get(notification_id: UUID)` | +| `notify_ack` | `notify_ack(notification_id: UUID)` | +| `channels` | `channels()` | diff --git a/agents/prompts/_generated/developer.md b/agents/prompts/_generated/developer.md index e0558bde..cf5047a8 100644 --- a/agents/prompts/_generated/developer.md +++ b/agents/prompts/_generated/developer.md @@ -8,20 +8,26 @@ | Verb | Body schema | |------|-------------| | `give_me_work` | `give_me_work()` | -| `i_will_work_on` | `i_will_work_on(task_id: UUID, plan: str | None = None)` | -| `open_pr` | `open_pr(task_id: UUID)` | +| `i_am_blocked` | `i_am_blocked(task_id: UUID, reason: str, blocker_type: str | None = None, what_needed: str | None = None)` | | `i_am_done` | `i_am_done(task_id: UUID, notes: str = '')` | -| `i_am_blocked` | `i_am_blocked(task_id: UUID, reason: str)` | -| `unclaim` | `unclaim(task_id: UUID)` | -| `resume` | `resume(task_id: UUID)` | | `i_am_idle` | `i_am_idle()` | +| `i_will_work_on` | `i_will_work_on(task_id: UUID, plan: str | None = None, steps: list[str | str] = PydanticUndefined, technical_considerations: list[str] = PydanticUndefined, risks: list[str | str] = PydanticUndefined, open_questions: list[str | str | bool] = PydanticUndefined)` | +| `open_pr` | `open_pr(task_id: UUID)` | +| `resume` | `resume(task_id: UUID)` | +| `unclaim` | `unclaim(task_id: UUID)` | ### Content (do) tools | Tool | Body schema | |------|-------------| | `commit` | `commit(message: str, files: list[str] | None = None)` | -| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None)` | +| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None, title: str | None = None, context: str = '', options: list[str | str] | None = None, chosen: str = '', rationale: str = '', consequences: list[str] | None = None, what_done: str = '', what_learned: str = '', what_struggled: str = '', next_steps: list[str] | None = None)` | | `say` | `say(channel: str, text: str, task_id: UUID | None = None)` | | `dm` | `dm(recipient: str, text: str, task_id: UUID | None = None, skill: str | None = None)` | | `evidence` | `evidence(task_id: UUID)` | +| `progress` | `progress(task_id: UUID, message: str, plan_step: str | None = None, percentage: int | None = None)` | +| `pr_update` | `pr_update(see do_server)` | +| `notify_list` | `notify_list(unread_only: bool = True, pending_ack_only: bool = False, limit: int = 20)` | +| `notify_get` | `notify_get(notification_id: UUID)` | +| `notify_ack` | `notify_ack(notification_id: UUID)` | +| `channels` | `channels()` | diff --git a/agents/prompts/_generated/documenter.md b/agents/prompts/_generated/documenter.md index 8ec87679..3ff30267 100644 --- a/agents/prompts/_generated/documenter.md +++ b/agents/prompts/_generated/documenter.md @@ -7,19 +7,26 @@ | Verb | Body schema | |------|-------------| -| `give_me_work` | `give_me_work()` | | `claim_doc_task` | `claim_doc_task(task_id: UUID)` | -| `i_documented` | `i_documented(task_id: UUID, notes: str, files: list[str])` | -| `unclaim` | `unclaim(task_id: UUID)` | -| `resume` | `resume(task_id: UUID)` | +| `give_me_work` | `give_me_work()` | +| `i_am_blocked` | `i_am_blocked(task_id: UUID, reason: str, blocker_type: str | None = None, what_needed: str | None = None)` | | `i_am_idle` | `i_am_idle()` | +| `i_documented` | `i_documented(task_id: UUID, notes: str, files: list[str])` | +| `resume` | `resume(task_id: UUID)` | +| `unclaim` | `unclaim(task_id: UUID)` | ### Content (do) tools | Tool | Body schema | |------|-------------| | `commit` | `commit(message: str, files: list[str] | None = None)` | -| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None)` | +| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None, title: str | None = None, context: str = '', options: list[str | str] | None = None, chosen: str = '', rationale: str = '', consequences: list[str] | None = None, what_done: str = '', what_learned: str = '', what_struggled: str = '', next_steps: list[str] | None = None)` | | `say` | `say(channel: str, text: str, task_id: UUID | None = None)` | | `dm` | `dm(recipient: str, text: str, task_id: UUID | None = None, skill: str | None = None)` | | `evidence` | `evidence(task_id: UUID)` | +| `progress` | `progress(task_id: UUID, message: str, plan_step: str | None = None, percentage: int | None = None)` | +| `pr_update` | `pr_update(see do_server)` | +| `notify_list` | `notify_list(unread_only: bool = True, pending_ack_only: bool = False, limit: int = 20)` | +| `notify_get` | `notify_get(notification_id: UUID)` | +| `notify_ack` | `notify_ack(notification_id: UUID)` | +| `channels` | `channels()` | diff --git a/agents/prompts/_generated/head_marketing.md b/agents/prompts/_generated/head_marketing.md index 8c530863..195bf5d7 100644 --- a/agents/prompts/_generated/head_marketing.md +++ b/agents/prompts/_generated/head_marketing.md @@ -7,16 +7,21 @@ | Verb | Body schema | |------|-------------| -| `triage` | `triage()` | | `escalate_to_ceo` | `escalate_to_ceo(task_id: UUID, reason: str)` | | `i_am_idle` | `i_am_idle()` | +| `triage` | `triage()` | ### Content (do) tools | Tool | Body schema | |------|-------------| -| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None)` | +| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None, title: str | None = None, context: str = '', options: list[str | str] | None = None, chosen: str = '', rationale: str = '', consequences: list[str] | None = None, what_done: str = '', what_learned: str = '', what_struggled: str = '', next_steps: list[str] | None = None)` | | `say` | `say(channel: str, text: str, task_id: UUID | None = None)` | | `dm` | `dm(recipient: str, text: str, task_id: UUID | None = None, skill: str | None = None)` | | `notify` | `notify(target: str, text: str, priority: str = 'normal', task_id: UUID | None = None)` | | `evidence` | `evidence(task_id: UUID)` | +| `open_session` | `open_session(task_id: UUID, channel: str, topic: str, relationship_type: str = 'discussion', group_id: UUID | None = None)` | +| `notify_list` | `notify_list(unread_only: bool = True, pending_ack_only: bool = False, limit: int = 20)` | +| `notify_get` | `notify_get(notification_id: UUID)` | +| `notify_ack` | `notify_ack(notification_id: UUID)` | +| `channels` | `channels()` | diff --git a/agents/prompts/_generated/main_pm.md b/agents/prompts/_generated/main_pm.md index 349e6c0e..f282c0b5 100644 --- a/agents/prompts/_generated/main_pm.md +++ b/agents/prompts/_generated/main_pm.md @@ -7,24 +7,32 @@ | Verb | Body schema | |------|-------------| +| `complete` | `complete(task_id: UUID, notes: str)` | +| `delegate` | `delegate(parent_task_id: UUID, title: str, description: str, assigned_to: str, team: str, task_type: str, nature: str, estimated_complexity: str, acceptance_criteria: list[str], project_id: UUID | None = None)` | +| `escalate_to_ceo` | `escalate_to_ceo(task_id: UUID, reason: str)` | +| `escalate_up` | `escalate_up(task_id: UUID, reason: str)` | | `give_me_work` | `give_me_work()` | -| `i_will_plan` | `i_will_plan(task_id: UUID, plan: str)` | -| `delegate` | `delegate(parent_task_id: UUID, title: str, description: str, assigned_to: str, team: str, task_type: str = 'code', acceptance_criteria: list[str] | None = None, estimated_complexity: str = 'medium')` | +| `i_am_idle` | `i_am_idle()` | +| `i_will_plan` | `i_will_plan(task_id: UUID, plan: str, approach: str, sub_tasks: list[str | str] = PydanticUndefined, technical_considerations: list[str] = PydanticUndefined, risks: list[str | str] = PydanticUndefined, open_questions: list[str | str | bool] = PydanticUndefined)` | +| `resume` | `resume(task_id: UUID)` | +| `triage` | `triage()` | | `triage_all` | `triage_all()` | | `unblock` | `unblock(task_id: UUID, restore: bool = True)` | -| `complete` | `complete(task_id: UUID, notes: str)` | -| `escalate_up` | `escalate_up(task_id: UUID, reason: str)` | -| `escalate_to_ceo` | `escalate_to_ceo(task_id: UUID, reason: str)` | | `unclaim` | `unclaim(task_id: UUID)` | -| `resume` | `resume(task_id: UUID)` | -| `i_am_idle` | `i_am_idle()` | ### Content (do) tools | Tool | Body schema | |------|-------------| -| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None)` | +| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None, title: str | None = None, context: str = '', options: list[str | str] | None = None, chosen: str = '', rationale: str = '', consequences: list[str] | None = None, what_done: str = '', what_learned: str = '', what_struggled: str = '', next_steps: list[str] | None = None)` | | `say` | `say(channel: str, text: str, task_id: UUID | None = None)` | | `dm` | `dm(recipient: str, text: str, task_id: UUID | None = None, skill: str | None = None)` | | `notify` | `notify(target: str, text: str, priority: str = 'normal', task_id: UUID | None = None)` | | `evidence` | `evidence(task_id: UUID)` | +| `open_session` | `open_session(task_id: UUID, channel: str, topic: str, relationship_type: str = 'discussion', group_id: UUID | None = None)` | +| `link_session` | `link_session(session_id: UUID, task_id: UUID, is_primary: bool = False, relationship_type: str = 'discussion')` | +| `pr_update` | `pr_update(see do_server)` | +| `notify_list` | `notify_list(unread_only: bool = True, pending_ack_only: bool = False, limit: int = 20)` | +| `notify_get` | `notify_get(notification_id: UUID)` | +| `notify_ack` | `notify_ack(notification_id: UUID)` | +| `channels` | `channels()` | diff --git a/agents/prompts/_generated/product_owner.md b/agents/prompts/_generated/product_owner.md index 8c530863..195bf5d7 100644 --- a/agents/prompts/_generated/product_owner.md +++ b/agents/prompts/_generated/product_owner.md @@ -7,16 +7,21 @@ | Verb | Body schema | |------|-------------| -| `triage` | `triage()` | | `escalate_to_ceo` | `escalate_to_ceo(task_id: UUID, reason: str)` | | `i_am_idle` | `i_am_idle()` | +| `triage` | `triage()` | ### Content (do) tools | Tool | Body schema | |------|-------------| -| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None)` | +| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None, title: str | None = None, context: str = '', options: list[str | str] | None = None, chosen: str = '', rationale: str = '', consequences: list[str] | None = None, what_done: str = '', what_learned: str = '', what_struggled: str = '', next_steps: list[str] | None = None)` | | `say` | `say(channel: str, text: str, task_id: UUID | None = None)` | | `dm` | `dm(recipient: str, text: str, task_id: UUID | None = None, skill: str | None = None)` | | `notify` | `notify(target: str, text: str, priority: str = 'normal', task_id: UUID | None = None)` | | `evidence` | `evidence(task_id: UUID)` | +| `open_session` | `open_session(task_id: UUID, channel: str, topic: str, relationship_type: str = 'discussion', group_id: UUID | None = None)` | +| `notify_list` | `notify_list(unread_only: bool = True, pending_ack_only: bool = False, limit: int = 20)` | +| `notify_get` | `notify_get(notification_id: UUID)` | +| `notify_ack` | `notify_ack(notification_id: UUID)` | +| `channels` | `channels()` | diff --git a/agents/prompts/_generated/qa.md b/agents/prompts/_generated/qa.md index 8306452d..11b9b6d0 100644 --- a/agents/prompts/_generated/qa.md +++ b/agents/prompts/_generated/qa.md @@ -7,19 +7,24 @@ | Verb | Body schema | |------|-------------| -| `give_me_work` | `give_me_work()` | | `claim_review` | `claim_review(task_id: UUID)` | -| `pass` | `pass(task_id: UUID, notes: str)` | -| `fail` | `fail(task_id: UUID, issues: list[str])` | -| `unclaim` | `unclaim(task_id: UUID)` | -| `resume` | `resume(task_id: UUID)` | +| `fail_review` | `fail_review(task_id: UUID, issues: list[str])` | +| `give_me_work` | `give_me_work()` | +| `i_am_blocked` | `i_am_blocked(task_id: UUID, reason: str, blocker_type: str | None = None, what_needed: str | None = None)` | | `i_am_idle` | `i_am_idle()` | +| `pass_review` | `pass_review(task_id: UUID, notes: str)` | +| `resume` | `resume(task_id: UUID)` | +| `unclaim` | `unclaim(task_id: UUID)` | ### Content (do) tools | Tool | Body schema | |------|-------------| -| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None)` | +| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None, title: str | None = None, context: str = '', options: list[str | str] | None = None, chosen: str = '', rationale: str = '', consequences: list[str] | None = None, what_done: str = '', what_learned: str = '', what_struggled: str = '', next_steps: list[str] | None = None)` | | `say` | `say(channel: str, text: str, task_id: UUID | None = None)` | | `dm` | `dm(recipient: str, text: str, task_id: UUID | None = None, skill: str | None = None)` | | `evidence` | `evidence(task_id: UUID)` | +| `notify_list` | `notify_list(unread_only: bool = True, pending_ack_only: bool = False, limit: int = 20)` | +| `notify_get` | `notify_get(notification_id: UUID)` | +| `notify_ack` | `notify_ack(notification_id: UUID)` | +| `channels` | `channels()` | diff --git a/agents/prompts/_generated/verbs.md b/agents/prompts/_generated/verbs.md index 8b86fbe4..2a5ff357 100644 --- a/agents/prompts/_generated/verbs.md +++ b/agents/prompts/_generated/verbs.md @@ -1,5 +1,5 @@ - + # Per-role verb shapes (autogenerated) @@ -14,23 +14,29 @@ as the source of truth for verb signatures. | Verb | Body schema | |------|-------------| | `give_me_work` | `give_me_work()` | -| `i_will_work_on` | `i_will_work_on(task_id: UUID, plan: str | None = None)` | -| `open_pr` | `open_pr(task_id: UUID)` | +| `i_am_blocked` | `i_am_blocked(task_id: UUID, reason: str, blocker_type: str | None = None, what_needed: str | None = None)` | | `i_am_done` | `i_am_done(task_id: UUID, notes: str = '')` | -| `i_am_blocked` | `i_am_blocked(task_id: UUID, reason: str)` | -| `unclaim` | `unclaim(task_id: UUID)` | -| `resume` | `resume(task_id: UUID)` | | `i_am_idle` | `i_am_idle()` | +| `i_will_work_on` | `i_will_work_on(task_id: UUID, plan: str | None = None, steps: list[str | str] = PydanticUndefined, technical_considerations: list[str] = PydanticUndefined, risks: list[str | str] = PydanticUndefined, open_questions: list[str | str | bool] = PydanticUndefined)` | +| `open_pr` | `open_pr(task_id: UUID)` | +| `resume` | `resume(task_id: UUID)` | +| `unclaim` | `unclaim(task_id: UUID)` | ### Content (do) tools | Tool | Body schema | |------|-------------| | `commit` | `commit(message: str, files: list[str] | None = None)` | -| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None)` | +| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None, title: str | None = None, context: str = '', options: list[str | str] | None = None, chosen: str = '', rationale: str = '', consequences: list[str] | None = None, what_done: str = '', what_learned: str = '', what_struggled: str = '', next_steps: list[str] | None = None)` | | `say` | `say(channel: str, text: str, task_id: UUID | None = None)` | | `dm` | `dm(recipient: str, text: str, task_id: UUID | None = None, skill: str | None = None)` | | `evidence` | `evidence(task_id: UUID)` | +| `progress` | `progress(task_id: UUID, message: str, plan_step: str | None = None, percentage: int | None = None)` | +| `pr_update` | `pr_update(see do_server)` | +| `notify_list` | `notify_list(unread_only: bool = True, pending_ack_only: bool = False, limit: int = 20)` | +| `notify_get` | `notify_get(notification_id: UUID)` | +| `notify_ack` | `notify_ack(notification_id: UUID)` | +| `channels` | `channels()` | ## qa @@ -38,22 +44,27 @@ as the source of truth for verb signatures. | Verb | Body schema | |------|-------------| -| `give_me_work` | `give_me_work()` | | `claim_review` | `claim_review(task_id: UUID)` | -| `pass` | `pass(task_id: UUID, notes: str)` | -| `fail` | `fail(task_id: UUID, issues: list[str])` | -| `unclaim` | `unclaim(task_id: UUID)` | -| `resume` | `resume(task_id: UUID)` | +| `fail_review` | `fail_review(task_id: UUID, issues: list[str])` | +| `give_me_work` | `give_me_work()` | +| `i_am_blocked` | `i_am_blocked(task_id: UUID, reason: str, blocker_type: str | None = None, what_needed: str | None = None)` | | `i_am_idle` | `i_am_idle()` | +| `pass_review` | `pass_review(task_id: UUID, notes: str)` | +| `resume` | `resume(task_id: UUID)` | +| `unclaim` | `unclaim(task_id: UUID)` | ### Content (do) tools | Tool | Body schema | |------|-------------| -| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None)` | +| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None, title: str | None = None, context: str = '', options: list[str | str] | None = None, chosen: str = '', rationale: str = '', consequences: list[str] | None = None, what_done: str = '', what_learned: str = '', what_struggled: str = '', next_steps: list[str] | None = None)` | | `say` | `say(channel: str, text: str, task_id: UUID | None = None)` | | `dm` | `dm(recipient: str, text: str, task_id: UUID | None = None, skill: str | None = None)` | | `evidence` | `evidence(task_id: UUID)` | +| `notify_list` | `notify_list(unread_only: bool = True, pending_ack_only: bool = False, limit: int = 20)` | +| `notify_get` | `notify_get(notification_id: UUID)` | +| `notify_ack` | `notify_ack(notification_id: UUID)` | +| `channels` | `channels()` | ## documenter @@ -61,22 +72,29 @@ as the source of truth for verb signatures. | Verb | Body schema | |------|-------------| -| `give_me_work` | `give_me_work()` | | `claim_doc_task` | `claim_doc_task(task_id: UUID)` | -| `i_documented` | `i_documented(task_id: UUID, notes: str, files: list[str])` | -| `unclaim` | `unclaim(task_id: UUID)` | -| `resume` | `resume(task_id: UUID)` | +| `give_me_work` | `give_me_work()` | +| `i_am_blocked` | `i_am_blocked(task_id: UUID, reason: str, blocker_type: str | None = None, what_needed: str | None = None)` | | `i_am_idle` | `i_am_idle()` | +| `i_documented` | `i_documented(task_id: UUID, notes: str, files: list[str])` | +| `resume` | `resume(task_id: UUID)` | +| `unclaim` | `unclaim(task_id: UUID)` | ### Content (do) tools | Tool | Body schema | |------|-------------| | `commit` | `commit(message: str, files: list[str] | None = None)` | -| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None)` | +| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None, title: str | None = None, context: str = '', options: list[str | str] | None = None, chosen: str = '', rationale: str = '', consequences: list[str] | None = None, what_done: str = '', what_learned: str = '', what_struggled: str = '', next_steps: list[str] | None = None)` | | `say` | `say(channel: str, text: str, task_id: UUID | None = None)` | | `dm` | `dm(recipient: str, text: str, task_id: UUID | None = None, skill: str | None = None)` | | `evidence` | `evidence(task_id: UUID)` | +| `progress` | `progress(task_id: UUID, message: str, plan_step: str | None = None, percentage: int | None = None)` | +| `pr_update` | `pr_update(see do_server)` | +| `notify_list` | `notify_list(unread_only: bool = True, pending_ack_only: bool = False, limit: int = 20)` | +| `notify_get` | `notify_get(notification_id: UUID)` | +| `notify_ack` | `notify_ack(notification_id: UUID)` | +| `channels` | `channels()` | ## cell_pm @@ -84,27 +102,34 @@ as the source of truth for verb signatures. | Verb | Body schema | |------|-------------| +| `complete` | `complete(task_id: UUID, notes: str)` | +| `delegate` | `delegate(parent_task_id: UUID, title: str, description: str, assigned_to: str, team: str, task_type: str, nature: str, estimated_complexity: str, acceptance_criteria: list[str], project_id: UUID | None = None)` | +| `escalate_up` | `escalate_up(task_id: UUID, reason: str)` | | `give_me_work` | `give_me_work()` | -| `i_will_plan` | `i_will_plan(task_id: UUID, plan: str)` | -| `delegate` | `delegate(parent_task_id: UUID, title: str, description: str, assigned_to: str, team: str, task_type: str = 'code', acceptance_criteria: list[str] | None = None, estimated_complexity: str = 'medium')` | +| `i_am_idle` | `i_am_idle()` | +| `i_will_plan` | `i_will_plan(task_id: UUID, plan: str, approach: str, sub_tasks: list[str | str] = PydanticUndefined, technical_considerations: list[str] = PydanticUndefined, risks: list[str | str] = PydanticUndefined, open_questions: list[str | str | bool] = PydanticUndefined)` | +| `resume` | `resume(task_id: UUID)` | | `submit_up` | `submit_up(task_id: UUID, notes: str)` | | `triage` | `triage()` | | `unblock` | `unblock(task_id: UUID, restore: bool = True)` | -| `complete` | `complete(task_id: UUID, notes: str)` | -| `escalate_up` | `escalate_up(task_id: UUID, reason: str)` | | `unclaim` | `unclaim(task_id: UUID)` | -| `resume` | `resume(task_id: UUID)` | -| `i_am_idle` | `i_am_idle()` | ### Content (do) tools | Tool | Body schema | |------|-------------| -| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None)` | +| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None, title: str | None = None, context: str = '', options: list[str | str] | None = None, chosen: str = '', rationale: str = '', consequences: list[str] | None = None, what_done: str = '', what_learned: str = '', what_struggled: str = '', next_steps: list[str] | None = None)` | | `say` | `say(channel: str, text: str, task_id: UUID | None = None)` | | `dm` | `dm(recipient: str, text: str, task_id: UUID | None = None, skill: str | None = None)` | | `notify` | `notify(target: str, text: str, priority: str = 'normal', task_id: UUID | None = None)` | | `evidence` | `evidence(task_id: UUID)` | +| `open_session` | `open_session(task_id: UUID, channel: str, topic: str, relationship_type: str = 'discussion', group_id: UUID | None = None)` | +| `link_session` | `link_session(session_id: UUID, task_id: UUID, is_primary: bool = False, relationship_type: str = 'discussion')` | +| `pr_update` | `pr_update(see do_server)` | +| `notify_list` | `notify_list(unread_only: bool = True, pending_ack_only: bool = False, limit: int = 20)` | +| `notify_get` | `notify_get(notification_id: UUID)` | +| `notify_ack` | `notify_ack(notification_id: UUID)` | +| `channels` | `channels()` | ## main_pm @@ -112,27 +137,35 @@ as the source of truth for verb signatures. | Verb | Body schema | |------|-------------| +| `complete` | `complete(task_id: UUID, notes: str)` | +| `delegate` | `delegate(parent_task_id: UUID, title: str, description: str, assigned_to: str, team: str, task_type: str, nature: str, estimated_complexity: str, acceptance_criteria: list[str], project_id: UUID | None = None)` | +| `escalate_to_ceo` | `escalate_to_ceo(task_id: UUID, reason: str)` | +| `escalate_up` | `escalate_up(task_id: UUID, reason: str)` | | `give_me_work` | `give_me_work()` | -| `i_will_plan` | `i_will_plan(task_id: UUID, plan: str)` | -| `delegate` | `delegate(parent_task_id: UUID, title: str, description: str, assigned_to: str, team: str, task_type: str = 'code', acceptance_criteria: list[str] | None = None, estimated_complexity: str = 'medium')` | +| `i_am_idle` | `i_am_idle()` | +| `i_will_plan` | `i_will_plan(task_id: UUID, plan: str, approach: str, sub_tasks: list[str | str] = PydanticUndefined, technical_considerations: list[str] = PydanticUndefined, risks: list[str | str] = PydanticUndefined, open_questions: list[str | str | bool] = PydanticUndefined)` | +| `resume` | `resume(task_id: UUID)` | +| `triage` | `triage()` | | `triage_all` | `triage_all()` | | `unblock` | `unblock(task_id: UUID, restore: bool = True)` | -| `complete` | `complete(task_id: UUID, notes: str)` | -| `escalate_up` | `escalate_up(task_id: UUID, reason: str)` | -| `escalate_to_ceo` | `escalate_to_ceo(task_id: UUID, reason: str)` | | `unclaim` | `unclaim(task_id: UUID)` | -| `resume` | `resume(task_id: UUID)` | -| `i_am_idle` | `i_am_idle()` | ### Content (do) tools | Tool | Body schema | |------|-------------| -| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None)` | +| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None, title: str | None = None, context: str = '', options: list[str | str] | None = None, chosen: str = '', rationale: str = '', consequences: list[str] | None = None, what_done: str = '', what_learned: str = '', what_struggled: str = '', next_steps: list[str] | None = None)` | | `say` | `say(channel: str, text: str, task_id: UUID | None = None)` | | `dm` | `dm(recipient: str, text: str, task_id: UUID | None = None, skill: str | None = None)` | | `notify` | `notify(target: str, text: str, priority: str = 'normal', task_id: UUID | None = None)` | | `evidence` | `evidence(task_id: UUID)` | +| `open_session` | `open_session(task_id: UUID, channel: str, topic: str, relationship_type: str = 'discussion', group_id: UUID | None = None)` | +| `link_session` | `link_session(session_id: UUID, task_id: UUID, is_primary: bool = False, relationship_type: str = 'discussion')` | +| `pr_update` | `pr_update(see do_server)` | +| `notify_list` | `notify_list(unread_only: bool = True, pending_ack_only: bool = False, limit: int = 20)` | +| `notify_get` | `notify_get(notification_id: UUID)` | +| `notify_ack` | `notify_ack(notification_id: UUID)` | +| `channels` | `channels()` | ## product_owner @@ -140,19 +173,24 @@ as the source of truth for verb signatures. | Verb | Body schema | |------|-------------| -| `triage` | `triage()` | | `escalate_to_ceo` | `escalate_to_ceo(task_id: UUID, reason: str)` | | `i_am_idle` | `i_am_idle()` | +| `triage` | `triage()` | ### Content (do) tools | Tool | Body schema | |------|-------------| -| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None)` | +| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None, title: str | None = None, context: str = '', options: list[str | str] | None = None, chosen: str = '', rationale: str = '', consequences: list[str] | None = None, what_done: str = '', what_learned: str = '', what_struggled: str = '', next_steps: list[str] | None = None)` | | `say` | `say(channel: str, text: str, task_id: UUID | None = None)` | | `dm` | `dm(recipient: str, text: str, task_id: UUID | None = None, skill: str | None = None)` | | `notify` | `notify(target: str, text: str, priority: str = 'normal', task_id: UUID | None = None)` | | `evidence` | `evidence(task_id: UUID)` | +| `open_session` | `open_session(task_id: UUID, channel: str, topic: str, relationship_type: str = 'discussion', group_id: UUID | None = None)` | +| `notify_list` | `notify_list(unread_only: bool = True, pending_ack_only: bool = False, limit: int = 20)` | +| `notify_get` | `notify_get(notification_id: UUID)` | +| `notify_ack` | `notify_ack(notification_id: UUID)` | +| `channels` | `channels()` | ## head_marketing @@ -160,19 +198,24 @@ as the source of truth for verb signatures. | Verb | Body schema | |------|-------------| -| `triage` | `triage()` | | `escalate_to_ceo` | `escalate_to_ceo(task_id: UUID, reason: str)` | | `i_am_idle` | `i_am_idle()` | +| `triage` | `triage()` | ### Content (do) tools | Tool | Body schema | |------|-------------| -| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None)` | +| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None, title: str | None = None, context: str = '', options: list[str | str] | None = None, chosen: str = '', rationale: str = '', consequences: list[str] | None = None, what_done: str = '', what_learned: str = '', what_struggled: str = '', next_steps: list[str] | None = None)` | | `say` | `say(channel: str, text: str, task_id: UUID | None = None)` | | `dm` | `dm(recipient: str, text: str, task_id: UUID | None = None, skill: str | None = None)` | | `notify` | `notify(target: str, text: str, priority: str = 'normal', task_id: UUID | None = None)` | | `evidence` | `evidence(task_id: UUID)` | +| `open_session` | `open_session(task_id: UUID, channel: str, topic: str, relationship_type: str = 'discussion', group_id: UUID | None = None)` | +| `notify_list` | `notify_list(unread_only: bool = True, pending_ack_only: bool = False, limit: int = 20)` | +| `notify_get` | `notify_get(notification_id: UUID)` | +| `notify_ack` | `notify_ack(notification_id: UUID)` | +| `channels` | `channels()` | ## auditor @@ -180,13 +223,16 @@ as the source of truth for verb signatures. | Verb | Body schema | |------|-------------| -| `triage` | `triage()` | | `i_am_idle` | `i_am_idle()` | +| `triage` | `triage()` | ### Content (do) tools | Tool | Body schema | |------|-------------| -| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None)` | +| `note` | `note(text: str, scope: str = 'note', task_id: UUID | None = None, title: str | None = None, context: str = '', options: list[str | str] | None = None, chosen: str = '', rationale: str = '', consequences: list[str] | None = None, what_done: str = '', what_learned: str = '', what_struggled: str = '', next_steps: list[str] | None = None)` | | `evidence` | `evidence(task_id: UUID)` | +| `notify_list` | `notify_list(unread_only: bool = True, pending_ack_only: bool = False, limit: int = 20)` | +| `notify_get` | `notify_get(notification_id: UUID)` | +| `channels` | `channels()` | diff --git a/scripts/regenerate_verb_tables.py b/scripts/regenerate_verb_tables.py index 3fdf7911..60101577 100644 --- a/scripts/regenerate_verb_tables.py +++ b/scripts/regenerate_verb_tables.py @@ -14,8 +14,8 @@ Usage: The script reads from: - ``roboco.services.gateway.role_config.ROLE_CONFIGS`` for role -> verb list - - ``roboco.api.schemas.v2.flow`` for flow verb body schemas - - ``roboco.api.schemas.v2.do`` for content tool body schemas + - ``roboco.api.schemas.v1.flow`` for flow verb body schemas + - ``roboco.api.schemas.v1.do`` for content tool body schemas """ from __future__ import annotations @@ -25,8 +25,8 @@ from pathlib import Path from typing import Any, get_args, get_origin from pydantic import BaseModel -from roboco.api.schemas.v2 import do as do_schemas -from roboco.api.schemas.v2 import flow as flow_schemas +from roboco.api.schemas.v1 import do as do_schemas +from roboco.api.schemas.v1 import flow as flow_schemas from roboco.services.gateway.role_config import ROLE_CONFIGS _OUT_DIR = Path(__file__).resolve().parents[1] / "agents/prompts/_generated" @@ -40,7 +40,7 @@ _VERB_TO_SCHEMA: dict[str, type[BaseModel]] = { # Flow — dev "give_me_work": flow_schemas.GiveMeWorkRequest, "i_will_work_on": flow_schemas.IWillWorkOnRequest, - "submit_for_qa": flow_schemas.SubmitForQaRequest, + "open_pr": flow_schemas.OpenPrRequest, "i_am_done": flow_schemas.IAmDoneRequest, "i_am_blocked": flow_schemas.IAmBlockedRequest, "unclaim": flow_schemas.UnclaimRequest, @@ -169,7 +169,7 @@ def _render_role_section(role: str) -> str: def main() -> None: sections = [ "", - "", + "", "", "# Per-role verb shapes (autogenerated)", "",