mirror of
https://github.com/hanzoai/extension.git
synced 2026-11-02 23:32:11 +00:00
A Bot Framework (botbuilder) app bringing Hanzo AI into Microsoft Teams, built on the shared foundation — @hanzo/ai (headless client), @hanzo/iam (identity), @hanzo/cards (canonical PanelSpec -> Adaptive Card). - Bot (TeamsActivityHandler): 1:1 + channel chat; @mention/DM a prompt -> completion -> reply as a Hanzo assistant Adaptive Card panel. - Adaptive Card actions: model picker (Input.ChoiceSet), quick actions (Draft/Summarize/Explain/Extract action items), prompt input + submit, all routed by dispatch() on data.action (from @hanzo/cards). - Message extension "Ask Hanzo" (action) on a message + "Compose with Hanzo" (query) to insert an AI draft; pulls message/thread context. - Teams app manifest (schema v1.16) + color/outline icons + a dependency- free zip build step for the sideloadable app package. - Pure logic modules (dispatch/panels/context/hanzo/identity/config) with vitest coverage; tsc clean; tsup build (library + runnable server). api.hanzo.ai /v1 via @hanzo/ai only; secrets are env-only (never committed).
102 lines
3.2 KiB
JSON
102 lines
3.2 KiB
JSON
{
|
|
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.16/MicrosoftTeams.schema.json",
|
|
"manifestVersion": "1.16",
|
|
"version": "0.1.0",
|
|
"id": "${{TEAMS_APP_ID}}",
|
|
"packageName": "ai.hanzo.teams",
|
|
"developer": {
|
|
"name": "Hanzo AI",
|
|
"websiteUrl": "https://hanzo.ai",
|
|
"privacyUrl": "https://hanzo.ai/privacy",
|
|
"termsOfUseUrl": "https://hanzo.ai/terms"
|
|
},
|
|
"name": {
|
|
"short": "Hanzo",
|
|
"full": "Hanzo AI Assistant"
|
|
},
|
|
"description": {
|
|
"short": "AI assistant for Teams — chat, summarize, draft, extract action items.",
|
|
"full": "Hanzo brings frontier AI into Microsoft Teams. Chat with Hanzo in a DM or @mention it in a channel, run quick actions (draft a reply, summarize, explain, extract action items) on any message, and insert an AI draft while composing — all answered by Hanzo AI (api.hanzo.ai) and rendered as native Adaptive Cards."
|
|
},
|
|
"icons": {
|
|
"color": "color.png",
|
|
"outline": "outline.png"
|
|
},
|
|
"accentColor": "#0B0B0F",
|
|
"bots": [
|
|
{
|
|
"botId": "${{MICROSOFT_APP_ID}}",
|
|
"scopes": ["personal", "team", "groupChat"],
|
|
"supportsFiles": false,
|
|
"isNotificationOnly": false,
|
|
"commandLists": [
|
|
{
|
|
"scopes": ["personal", "team", "groupChat"],
|
|
"commands": [
|
|
{
|
|
"title": "Ask Hanzo",
|
|
"description": "Ask Hanzo AI anything"
|
|
},
|
|
{
|
|
"title": "Summarize",
|
|
"description": "Summarize the message or thread"
|
|
},
|
|
{
|
|
"title": "Draft reply",
|
|
"description": "Draft a reply to the message"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"composeExtensions": [
|
|
{
|
|
"botId": "${{MICROSOFT_APP_ID}}",
|
|
"commands": [
|
|
{
|
|
"id": "askHanzo",
|
|
"type": "action",
|
|
"title": "Ask Hanzo",
|
|
"description": "Run a Hanzo quick action on this message",
|
|
"context": ["message", "compose", "commandBox"],
|
|
"fetchTask": false,
|
|
"parameters": [
|
|
{
|
|
"name": "chip",
|
|
"title": "Action",
|
|
"description": "Which Hanzo action to run",
|
|
"inputType": "choiceset",
|
|
"value": "summarize",
|
|
"choices": [
|
|
{ "title": "Summarize", "value": "summarize" },
|
|
{ "title": "Draft reply", "value": "draft" },
|
|
{ "title": "Explain", "value": "explain" },
|
|
{ "title": "Extract action items", "value": "action_items" }
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "composeHanzo",
|
|
"type": "query",
|
|
"title": "Compose with Hanzo",
|
|
"description": "Generate an AI draft to insert into your message",
|
|
"initialRun": false,
|
|
"context": ["compose", "commandBox"],
|
|
"parameters": [
|
|
{
|
|
"name": "prompt",
|
|
"title": "Prompt",
|
|
"description": "What should Hanzo write?",
|
|
"inputType": "text"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"permissions": ["identity", "messageTeamMembers"],
|
|
"validDomains": ["api.hanzo.ai", "token.botframework.com"]
|
|
}
|