Skip to content

v1.6.8

Choose a tag to compare

@github-actions github-actions released this 18 May 12:43
· 28 commits to main since this release

First community PR ever merged on Frogman. Thanks to Kieran Byrne (FreePBX UK / @kierknoby).

How this one happened

We launched an AI section on the FreePBX forum on May 11th. Kieran showed up a couple of days later, started poking at Frogman, and decided to write something. On May 15th he opened a PR- the first the repo has ever had adding a natural-language layer in front of the chat parser. Seventeen commits later, all in one afternoon, every review note was addressed. He was pair-coding with his own AI; I review alongside Claude; the back-and-forth ran through forum DMs as paste-ready prompt blocks his pair could chew on. We tested it on the dev box, the audit log captured the chain from raw English to executed tool end-to-end, and it merged today.

Two humans, two AIs, one merged PR.

What it adds

Tools/Interpret.php — a deterministic, regex-driven layer that sits between users and ChatParser's strict pattern waterfall. It rewrites conversational, polite, urgent, or otherwise human phrasing into the canonical command forms ChatParser already understands, then re-parses with fuzzy matching disabled.

Pure text-in / text-out. No database, no session state, no LLM, no schema changes.

Risk-gated confidence

Rewrites only auto-run when both the rule and the resulting command-shape agree it's safe:

Risk class Threshold
read 0.78
write 0.88
state 0.91
unknown 0.95

Partial matches surface a "tried reading that as X — please rephrase" prompt instead of guessing.

What it handles

  • Request wrappers"please", "could you", "i would like to", "just"
  • Phrasal verbs"have a look at"show, "switch off"disable, "spin up"create, "decommission"delete
  • Assistant-directed abuse"you idiot show extension 247020"show extension 247020
  • Trailing urgency"… ASAP", "… right away", "… when you can"
  • Numeric shorthand"delete 247020"delete extension 247020 (anchored to leading write verbs)
  • State phrases (anchored on a 3–6 digit extension number):
    • <ext> is sick / off / out / awayenable dnd on <ext>
    • <ext> is back / availabledisable dnd on <ext>
    • <ext> is wfh / working from home / remoteset followme <ext>
  • Correction-aware cancel"no no", "that's not what I meant", "wrong command", "cancel that", "you misunderstood" cancel a pending confirm instead of being read as a wizard answer

Audit log integration

The v1.6.7 columns light up automatically. Chat-origin rows in oc_audit_log now show both forms end-to-end:

  • chat_input — raw user message
  • interpreted_as — canonical command after rewrite

Non-chat invocation paths (HTTP API, GraphQL, CLI, MCP) leave both NULL.

Off-switch

Set kvstore key frogman_interpret_mode to off and Interpret short-circuits cleanly to existing behaviour.

Also

Removed a raw ANSI escape from the frogman> prompt in fwconsole frogman:chat that displayed as literal \033[36m...\033[0m on some terminals.

220 tools, unchanged.