eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
7 lines (6 loc) • 1.65 kB
JavaScript
import{defineSetupIntegration}from"../types.js";import{provisionTeamsConnector}from"./connect.js";import{join}from"node:path";import{writeTextFile}from"#setup/scaffold/files.js";import{text}from"#setup/ask.js";import{runVercel,runVercelCaptureStdout}from"#setup/primitives/run-vercel.js";const defaultDeps={provisionConnector:provisionTeamsConnector,runVercel,runVercelCaptureStdout,writeTextFile};function connectTemplate(e){return`import { connectTeamsCredentials } from "@vercel/connect/eve";
import { teamsChannel } from "eve/channels/teams";
export default teamsChannel({
credentials: connectTeamsCredentials(${JSON.stringify(e)}),
});
`}async function prepareTeamsSetup(e){let t=await e.asker.ask(text({key:`teams.bot-name`,message:`Microsoft Teams bot name`,detected:`eve agent`,required:!0,validate:e=>e.trim().length===0?`A bot name is required.`:null})),n=await e.resolveVercelProject(`Microsoft Teams`);return{name:t.trim(),project:n}}async function applyTeamsSetup(e,t,n=defaultDeps){let r=await n.provisionConnector({...e,log:t.presenter.log,projectRoot:t.projectRoot,signal:t.signal,deps:n});return await n.writeTextFile(join(t.appRoot,`agent/channels/teams.ts`),connectTemplate(r.uid),{force:t.force}),t.presenter.log.success(`Scaffolded channel: teams`),t.presenter.nextSteps([`Deploy the agent.`,`Mention the bot in a channel, or send it a message in a personal chat.`]),{facts:[],deploymentRequired:!0}}const TEAMS_SETUP=defineSetupIntegration({kind:`teams`,label:`Microsoft Teams`,hint:`Managed Teams bot with Vercel Connect`,prepare:prepareTeamsSetup,apply:applyTeamsSetup});export{TEAMS_SETUP,applyTeamsSetup,prepareTeamsSetup};