| 109 |
109 |
|
|
| 110 |
110 |
|
#[async_trait]
|
| 111 |
111 |
|
impl Tool for ListProblems {
|
| 112 |
|
- |
fn name(&self) -> &str {
|
|
112 |
+ |
fn name(&self) -> &'static str {
|
| 113 |
113 |
|
"list_problems"
|
| 114 |
114 |
|
}
|
| 115 |
|
- |
fn description(&self) -> &str {
|
|
115 |
+ |
fn description(&self) -> &'static str {
|
| 116 |
116 |
|
"List problems, most urgent first. A problem is a candidate for work pulled from a source (wam tickets, audit and fuzz findings); it is not a task until promoted. Ranked by `painhours`, a 0-100 score computed from pain, scale, and age, so an untriaged problem climbs on its own. Filters: `source`, `status` (Open|Promoted|Dismissed|Resolved), `project_id`. Defaults to Open only; pass status explicitly to see settled ones."
|
| 117 |
117 |
|
}
|
| 118 |
118 |
|
fn kind(&self) -> ToolKind {
|
| 184 |
184 |
|
|
| 185 |
185 |
|
#[async_trait]
|
| 186 |
186 |
|
impl Tool for ReportProblems {
|
| 187 |
|
- |
fn name(&self) -> &str {
|
|
187 |
+ |
fn name(&self) -> &'static str {
|
| 188 |
188 |
|
"report_problems"
|
| 189 |
189 |
|
}
|
| 190 |
|
- |
fn description(&self) -> &str {
|
|
190 |
+ |
fn description(&self) -> &'static str {
|
| 191 |
191 |
|
"Report findings as problems (the /audit and /fuzz primitive). Each item: {title, body?, pain?, scale?, source_ref?, project?, tags?, resolved?}. `pain` (how much it hurts a hit user) and `scale` (how broadly it hits) are 1-5, defaulting to 3, and together with age drive the painhours ranking. `source` names the lens (audit, fuzz, deepaudit) and `source_ref` identifies the finding within it; re-reporting the same pair updates that problem instead of duplicating it, and never undoes a promotion or dismissal. Reporting does NOT create tasks: use promote_problem for the ones worth working."
|
| 192 |
192 |
|
}
|
| 193 |
193 |
|
fn kind(&self) -> ToolKind {
|
| 325 |
325 |
|
|
| 326 |
326 |
|
#[async_trait]
|
| 327 |
327 |
|
impl Tool for PromoteProblem {
|
| 328 |
|
- |
fn name(&self) -> &str {
|
|
328 |
+ |
fn name(&self) -> &'static str {
|
| 329 |
329 |
|
"promote_problem"
|
| 330 |
330 |
|
}
|
| 331 |
|
- |
fn description(&self) -> &str {
|
|
331 |
+ |
fn description(&self) -> &'static str {
|
| 332 |
332 |
|
"Turn a problem into a task: creates the task, links it back to the problem, and marks the problem Promoted so it stops climbing the ranking. `description` defaults to the problem's title and body. The task inherits the problem's project and tags plus a `problem:<source>:<ref>` provenance tag. This is the only path from a problem to a task; reporting one never creates work on its own."
|
| 333 |
333 |
|
}
|
| 334 |
334 |
|
fn kind(&self) -> ToolKind {
|
| 428 |
428 |
|
|
| 429 |
429 |
|
#[async_trait]
|
| 430 |
430 |
|
impl Tool for UpdateProblemTool {
|
| 431 |
|
- |
fn name(&self) -> &str {
|
|
431 |
+ |
fn name(&self) -> &'static str {
|
| 432 |
432 |
|
"update_problem"
|
| 433 |
433 |
|
}
|
| 434 |
|
- |
fn description(&self) -> &str {
|
|
434 |
+ |
fn description(&self) -> &'static str {
|
| 435 |
435 |
|
"Update a problem's triage state or project. `status` is Open|Promoted|Dismissed|Resolved: Dismissed is the 'seen it, not acting' verdict, and Open sends a settled problem back to the inbox (clearing any task backlink). Prefer dismissing over deleting, so a re-pull does not resurrect something already ruled on. Use promote_problem to create a task; setting status Promoted here only marks it, without one."
|
| 436 |
436 |
|
}
|
| 437 |
437 |
|
fn kind(&self) -> ToolKind {
|