copilotkit 0.0.29 → 0.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/commands/base-command.js +1 -1
  2. package/dist/commands/base-command.js.map +1 -1
  3. package/dist/commands/dev.js +1 -1
  4. package/dist/commands/dev.js.map +1 -1
  5. package/dist/commands/init.d.ts +1 -0
  6. package/dist/commands/init.js +61 -27
  7. package/dist/commands/init.js.map +1 -1
  8. package/dist/commands/login.js +1 -1
  9. package/dist/commands/login.js.map +1 -1
  10. package/dist/commands/logout.js +1 -1
  11. package/dist/commands/logout.js.map +1 -1
  12. package/dist/lib/init/index.js +31 -21
  13. package/dist/lib/init/index.js.map +1 -1
  14. package/dist/lib/init/questions.js +18 -20
  15. package/dist/lib/init/questions.js.map +1 -1
  16. package/dist/lib/init/scaffold/agent.js +1 -1
  17. package/dist/lib/init/scaffold/agent.js.map +1 -1
  18. package/dist/lib/init/scaffold/index.js +27 -9
  19. package/dist/lib/init/scaffold/index.js.map +1 -1
  20. package/dist/lib/init/scaffold/shadcn.js +26 -8
  21. package/dist/lib/init/scaffold/shadcn.js.map +1 -1
  22. package/dist/lib/init/types/index.js +14 -8
  23. package/dist/lib/init/types/index.js.map +1 -1
  24. package/dist/lib/init/types/questions.d.ts +10 -9
  25. package/dist/lib/init/types/questions.js +2 -1
  26. package/dist/lib/init/types/questions.js.map +1 -1
  27. package/dist/lib/init/types/templates.d.ts +6 -6
  28. package/dist/lib/init/types/templates.js +12 -7
  29. package/dist/lib/init/types/templates.js.map +1 -1
  30. package/dist/utils/detect-endpoint-type.utils.d.ts +1 -1
  31. package/dist/utils/version.d.ts +1 -1
  32. package/dist/utils/version.js +1 -1
  33. package/dist/utils/version.js.map +1 -1
  34. package/oclif.manifest.json +11 -2
  35. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/init/scaffold/shadcn.ts","../../../../src/lib/init/types/questions.ts","../../../../src/lib/init/types/templates.ts"],"sourcesContent":["import spawn from \"cross-spawn\"\nimport { \n templateMapping, \n Config \n} from \"../types/index.js\"\n\nexport async function scaffoldShadCN(userAnswers: Config) {\n try {\n // Determine which components to install based on user choices\n const components: string[] = []\n \n // Add additional components based on agent framework\n switch (userAnswers.agentFramework) {\n case 'LangGraph':\n if (userAnswers.langGraphAgent) {\n components.push(...templateMapping.LangGraphStarter)\n } else {\n components.push(templateMapping.LangGraphGeneric)\n if (userAnswers.useCopilotCloud !== 'Yes') {\n if (userAnswers.langGraphPlatform === 'Yes') {\n components.push(templateMapping.LangGraphPlatformRuntime)\n } else {\n components.push(templateMapping.RemoteEndpoint)\n }\n }\n }\n break\n case 'CrewAI':\n if (userAnswers.crewType === 'Crews') {\n components.push(...templateMapping.CrewEnterprise)\n } else if (userAnswers.crewFlowAgent) {\n components.push(...templateMapping.CrewFlowsStarter)\n } else {\n components.push(templateMapping.RemoteEndpoint)\n }\n break\n default:\n components.push(templateMapping.RemoteEndpoint)\n break\n }\n \n // Small pause before running shadcn\n await new Promise(resolve => setTimeout(resolve, 100));\n \n try {\n // Run shadcn with inherited stdio for all streams to allow for user input\n const result = spawn.sync('npx', ['shadcn@latest', 'add', ...components], { \n stdio: 'inherit' // This ensures stdin/stdout/stderr are all passed through\n });\n \n if (result.status !== 0) {\n throw new Error(`The shadcn installation process exited with code ${result.status}`);\n }\n } catch (error) {\n throw error;\n }\n } catch (error) {\n throw error;\n }\n}","import { z } from 'zod';\nimport { Flags } from \"@oclif/core\"\n\n// ===== Core Constants =====\nexport const AGENT_FRAMEWORKS = ['CrewAI', 'LangGraph'] as const;\nexport const CREW_TYPES = ['Crews', 'Flows'] as const;\nexport const CHAT_COMPONENTS = ['CopilotChat','CopilotSidebar', 'Headless', 'CopilotPopup'] as const;\nexport const LANGGRAPH_AGENTS = ['Python Starter', 'TypeScript Starter'] as const;\nexport const CREW_FLOW_TEMPLATES = ['Starter'] as const;\nexport const YES_NO = ['Yes', 'No'] as const;\n\n// ===== Sanitizers =====\nexport const sanitizers = {\n // Remove trailing slash from URLs\n url: (value: string): string => {\n if (!value) return value;\n return value.trim().replace(/\\/+$/, '');\n },\n \n // Trim whitespace from strings\n trim: (value: string): string => {\n if (!value) return value;\n return value.trim();\n },\n \n // Lowercase strings\n lowercase: (value: string): string => {\n if (!value) return value;\n return value.toLowerCase().trim();\n },\n \n // Clean API keys (remove whitespace)\n apiKey: (value: string): string => {\n if (!value) return value;\n return value.trim().replace(/\\s/g, '');\n }\n};\n\n// ===== Zod Schemas =====\n\n// Basic schemas\nexport const AgentFrameworkSchema = z.enum(AGENT_FRAMEWORKS);\nexport const CrewTypeSchema = z.enum(CREW_TYPES);\nexport const ChatComponentSchema = z.enum(CHAT_COMPONENTS);\nexport const LangGraphAgentSchema = z.enum(LANGGRAPH_AGENTS);\nexport const CrewFlowTemplateSchema = z.enum(CREW_FLOW_TEMPLATES);\nexport const YesNoSchema = z.enum(YES_NO);\n\n// URL validation schema with preprocessing to remove trailing slash\nexport const UrlSchema = z.preprocess(\n val => sanitizers.url(String(val)),\n z.string().url('Please enter a valid URL').min(1, 'URL is required')\n);\n\n// Token validation schema with preprocessing to trim\nexport const TokenSchema = z.preprocess(\n val => sanitizers.trim(String(val)),\n z.string().min(1, 'Token is required')\n);\n\n// API key validation schema with preprocessing to remove whitespace\nexport const ApiKeySchema = z.preprocess(\n val => sanitizers.apiKey(String(val)),\n z.string().min(1, 'API key is required')\n);\n\n// Name validation schema with preprocessing to trim\nexport const NameSchema = z.preprocess(\n val => sanitizers.trim(String(val)),\n z.string().min(1, 'Name is required')\n);\n\n// Config schema\nexport const ConfigSchema = z.object({\n // Core fields\n copilotKitVersion: z.string().optional(),\n agentFramework: AgentFrameworkSchema,\n chatUi: ChatComponentSchema.optional(),\n \n // Yes/No fields\n alreadyDeployed: YesNoSchema.optional(),\n fastApiEnabled: YesNoSchema.optional(),\n useCopilotCloud: YesNoSchema.optional(),\n \n // LangGraph specific fields \n langGraphAgent: LangGraphAgentSchema.optional(),\n langGraphPlatform: YesNoSchema.optional(),\n langGraphPlatformUrl: UrlSchema.optional(),\n langGraphRemoteEndpointURL: UrlSchema.optional(),\n \n // CrewAI specific fields\n crewType: CrewTypeSchema.optional(),\n crewName: NameSchema.optional(),\n crewUrl: UrlSchema.optional(),\n crewBearerToken: TokenSchema.optional(),\n crewFlowAgent: CrewFlowTemplateSchema.optional(),\n \n // API keys and tokens\n copilotCloudPublicApiKey: z.string().optional(),\n langSmithApiKey: ApiKeySchema.optional(),\n llmToken: ApiKeySchema.optional(),\n})\n.refine(\n (data) => {\n // If CrewAI is selected with Crews type, require crew URL and bearer token\n if (data.agentFramework === 'CrewAI' && data.crewType === 'Crews') {\n return !!data.crewUrl && !!data.crewBearerToken;\n }\n return true;\n },\n {\n message: \"Crew URL and bearer token are required for CrewAI Crews\",\n path: [\"crewUrl\", \"crewBearerToken\"],\n }\n)\n.refine(\n (data) => {\n // If LangGraph is selected with LangGraph Platform, require platform URL and LangSmith API key\n if (\n data.agentFramework === 'LangGraph' && \n data.alreadyDeployed === 'Yes' && \n data.langGraphPlatform === 'Yes'\n ) {\n return !!data.langGraphPlatformUrl && !!data.langSmithApiKey;\n }\n return true;\n },\n {\n message: \"LangGraph Platform URL and LangSmith API key are required\",\n path: [\"langGraphPlatformUrl\", \"langSmithApiKey\"],\n }\n);\n\n// Export the inferred type from the schema\nexport type Config = z.infer<typeof ConfigSchema>;\n\n// Question type definition with improved validation and sanitization\nexport type Question = {\n type: 'input' | 'yes/no' | 'select';\n name: keyof Config;\n message: string;\n choices?: readonly string[];\n default?: string;\n when?: (answers: Partial<Config>) => boolean;\n sensitive?: boolean;\n validate?: (input: string) => true | string; // Return true if valid, error message string if invalid\n sanitize?: (input: string) => string; // Function to sanitize input before validation\n};\n\n// CLI flags definition with descriptions\nexport const ConfigFlags = {\n copilotKitVersion: Flags.string({description: 'CopilotKit version to use (e.g. 1.7.0)'}),\n agentFramework: Flags.string({description: 'Agent framework to power your copilot', options: AGENT_FRAMEWORKS}),\n fastApiEnabled: Flags.string({description: 'Use FastAPI to serve your agent locally', options: YES_NO}),\n useCopilotCloud: Flags.string({description: 'Use Copilot Cloud for production-ready hosting', options: YES_NO}),\n chatUi: Flags.string({description: 'Chat UI component to add to your app', options: CHAT_COMPONENTS}),\n langGraphAgent: Flags.string({description: 'LangGraph agent template to use', options: LANGGRAPH_AGENTS}),\n crewType: Flags.string({description: 'CrewAI implementation type', options: CREW_TYPES}),\n crewName: Flags.string({description: 'Name for your CrewAI agent'}),\n crewUrl: Flags.string({description: 'URL endpoint for your CrewAI agent'}),\n crewBearerToken: Flags.string({description: 'Bearer token for CrewAI authentication'}),\n langSmithApiKey: Flags.string({description: 'LangSmith API key for LangGraph observability'}),\n llmToken: Flags.string({description: 'API key for your preferred LLM provider'}),\n crewFlowAgent: Flags.string({description: 'CrewAI Flow template to use', options: CREW_FLOW_TEMPLATES}),\n}","export type ChatTemplate = \n \"CopilotChat\" |\n \"CopilotPopup\" |\n \"CopilotSidebar\"\n\nexport type StarterTemplate = \n \"LangGraphPlatform\" |\n \"RemoteEndpoint\" |\n \"Standard\" |\n \"CrewEnterprise\" |\n \"CrewFlowsStarter\"\n\nexport type Template = ChatTemplate | StarterTemplate\n\nconst BASE_URL = \"http://registry.copilotkit.ai/r\"\n\nexport const templateMapping = {\n \"LangGraphPlatformRuntime\": `${BASE_URL}/langgraph-platform-starter.json`,\n \"RemoteEndpoint\": `${BASE_URL}/remote-endpoint-starter.json`,\n \"CrewEnterprise\": [\n `${BASE_URL}/coagents-crew-starter.json`,\n ],\n\n \"LangGraphGeneric\": `${BASE_URL}/generic-lg-starter-with-cloud.json`,\n\n \"CrewFlowsStarter\": [\n `${BASE_URL}/coagents-starter-ui.json`,\n `${BASE_URL}/agent-layout.json`,\n `${BASE_URL}/remote-endpoint.json`\n ],\n\n \"LangGraphStarter\": [\n `${BASE_URL}/langgraph-platform-starter.json`,\n `${BASE_URL}/coagents-starter-ui.json`,\n ],\n\n \"Standard\": `${BASE_URL}/standard-starter.json`,\n \"CopilotChat\": `${BASE_URL}/chat.json`,\n \"CopilotPopup\": `${BASE_URL}/popup.json`,\n \"CopilotSidebar\": `${BASE_URL}/sidebar.json`,\n}"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/lib/init/scaffold/shadcn.ts","../../../../src/lib/init/types/questions.ts","../../../../src/lib/init/types/templates.ts"],"sourcesContent":["import spawn from \"cross-spawn\"\nimport { \n templateMapping, \n Config \n} from \"../types/index.js\"\n\nexport async function scaffoldShadCN(userAnswers: Config) {\n try {\n // Determine which components to install based on user choices\n const components: string[] = []\n \n // Add additional components based on agent framework\n switch (userAnswers.agentFramework) {\n case 'LangGraph':\n if (userAnswers.langGraphAgent) {\n components.push(...templateMapping.LangGraphStarter)\n } else {\n components.push(templateMapping.LangGraphGeneric)\n if (userAnswers.useCopilotCloud !== 'Yes') {\n if (userAnswers.langGraphPlatform === 'Yes') {\n components.push(templateMapping.LangGraphPlatformRuntime)\n } else {\n components.push(templateMapping.RemoteEndpoint)\n }\n }\n }\n break\n case 'CrewAI':\n if (userAnswers.crewType === 'Crews') {\n components.push(...templateMapping.CrewEnterprise)\n } else if (userAnswers.crewFlowAgent) {\n components.push(...templateMapping.CrewFlowsStarter)\n } else {\n components.push(templateMapping.RemoteEndpoint)\n }\n break\n case 'MCP':\n components.push(templateMapping.McpStarter)\n if (userAnswers.useCopilotCloud !== 'Yes') {\n components.push(templateMapping.McpRuntime)\n }\n break\n case 'None':\n components.push(templateMapping.StandardStarter)\n if (userAnswers.useCopilotCloud !== 'Yes') {\n components.push(templateMapping.StandardRuntime)\n }\n break\n default:\n components.push(templateMapping.RemoteEndpoint)\n break\n }\n \n // Small pause before running shadcn\n await new Promise(resolve => setTimeout(resolve, 100));\n \n try {\n // Run shadcn with inherited stdio for all streams to allow for user input\n const result = spawn.sync('npx', ['shadcn@latest', 'add', ...components], { \n stdio: 'inherit' // This ensures stdin/stdout/stderr are all passed through\n });\n \n if (result.status !== 0) {\n throw new Error(`The shadcn installation process exited with code ${result.status}`);\n }\n } catch (error) {\n throw error;\n }\n } catch (error) {\n throw error;\n }\n}","import { z } from 'zod';\nimport { Flags } from \"@oclif/core\"\n\n// ===== Core Constants =====\nexport const AGENT_FRAMEWORKS = ['CrewAI', 'LangGraph', \"MCP\", 'None'] as const;\nexport const CREW_TYPES = ['Crews', 'Flows'] as const;\nexport const CHAT_COMPONENTS = ['CopilotChat','CopilotSidebar', 'Headless', 'CopilotPopup'] as const;\nexport const LANGGRAPH_AGENTS = ['Python Starter', 'TypeScript Starter'] as const;\nexport const CREW_FLOW_TEMPLATES = ['Starter'] as const;\nexport const YES_NO = ['Yes', 'No'] as const;\n\n// ===== Sanitizers =====\nexport const sanitizers = {\n // Remove trailing slash from URLs\n url: (value: string): string => {\n if (!value) return value;\n return value.trim().replace(/\\/+$/, '');\n },\n \n // Trim whitespace from strings\n trim: (value: string): string => {\n if (!value) return value;\n return value.trim();\n },\n \n // Lowercase strings\n lowercase: (value: string): string => {\n if (!value) return value;\n return value.toLowerCase().trim();\n },\n \n // Clean API keys (remove whitespace)\n apiKey: (value: string): string => {\n if (!value) return value;\n return value.trim().replace(/\\s/g, '');\n }\n};\n\n// ===== Zod Schemas =====\n\n// Basic schemas\nexport const AgentFrameworkSchema = z.enum(AGENT_FRAMEWORKS);\nexport const CrewTypeSchema = z.enum(CREW_TYPES);\nexport const ChatComponentSchema = z.enum(CHAT_COMPONENTS);\nexport const LangGraphAgentSchema = z.enum(LANGGRAPH_AGENTS);\nexport const CrewFlowTemplateSchema = z.enum(CREW_FLOW_TEMPLATES);\nexport const YesNoSchema = z.enum(YES_NO);\n\n// URL validation schema with preprocessing to remove trailing slash\nexport const UrlSchema = z.preprocess(\n val => sanitizers.url(String(val)),\n z.string().url('Please enter a valid URL').min(1, 'URL is required')\n);\n\n// Token validation schema with preprocessing to trim\nexport const TokenSchema = z.preprocess(\n val => sanitizers.trim(String(val)),\n z.string().min(1, 'Token is required')\n);\n\n// API key validation schema with preprocessing to remove whitespace\nexport const ApiKeySchema = z.preprocess(\n val => sanitizers.apiKey(String(val)),\n z.string().min(1, 'API key is required')\n);\n\n// Name validation schema with preprocessing to trim\nexport const NameSchema = z.preprocess(\n val => sanitizers.trim(String(val)),\n z.string().min(1, 'Name is required')\n);\n\n// Config schema\nexport const ConfigSchema = z.object({\n // Core fields\n copilotKitVersion: z.string().optional(),\n agentFramework: AgentFrameworkSchema,\n chatUi: ChatComponentSchema.optional(),\n \n // Yes/No fields\n alreadyDeployed: YesNoSchema.optional(),\n fastApiEnabled: YesNoSchema.optional(),\n useCopilotCloud: YesNoSchema.optional(),\n \n // LangGraph specific fields \n langGraphAgent: LangGraphAgentSchema.optional(),\n langGraphPlatform: YesNoSchema.optional(),\n langGraphPlatformUrl: UrlSchema.optional(),\n langGraphRemoteEndpointURL: UrlSchema.optional(),\n \n // CrewAI specific fields\n crewType: CrewTypeSchema.optional(),\n crewName: NameSchema.optional(),\n crewUrl: UrlSchema.optional(),\n crewBearerToken: TokenSchema.optional(),\n crewFlowAgent: CrewFlowTemplateSchema.optional(),\n \n // API keys and tokens\n copilotCloudPublicApiKey: z.string().optional(),\n langSmithApiKey: ApiKeySchema.optional(),\n llmToken: ApiKeySchema.optional(),\n})\n.refine(\n (data) => {\n // If CrewAI is selected with Crews type, require crew URL and bearer token\n if (data.agentFramework === 'CrewAI' && data.crewType === 'Crews') {\n return !!data.crewUrl && !!data.crewBearerToken;\n }\n return true;\n },\n {\n message: \"Crew URL and bearer token are required for CrewAI Crews\",\n path: [\"crewUrl\", \"crewBearerToken\"],\n }\n)\n.refine(\n (data) => {\n // If LangGraph is selected with LangGraph Platform, require platform URL and LangSmith API key\n if (\n data.agentFramework === 'LangGraph' && \n data.alreadyDeployed === 'Yes' && \n data.langGraphPlatform === 'Yes'\n ) {\n return !!data.langGraphPlatformUrl && !!data.langSmithApiKey;\n }\n return true;\n },\n {\n message: \"LangGraph Platform URL and LangSmith API key are required\",\n path: [\"langGraphPlatformUrl\", \"langSmithApiKey\"],\n }\n);\n\n// Export the inferred type from the schema\nexport type Config = z.infer<typeof ConfigSchema>;\n\n// Question type definition with improved validation and sanitization\nexport type Question = {\n type: 'input' | 'yes/no' | 'select';\n name: keyof Config;\n message: string;\n choices?: readonly string[];\n default?: string;\n when?: (answers: Partial<Config>) => boolean;\n sensitive?: boolean;\n validate?: (input: string) => true | string; // Return true if valid, error message string if invalid\n sanitize?: (input: string) => string; // Function to sanitize input before validation\n};\n\n// CLI flags definition with descriptions\nexport const ConfigFlags = {\n mcp: Flags.string({description: 'Scaffold a CopilotKit project with MCP'}),\n copilotKitVersion: Flags.string({description: 'CopilotKit version to use (e.g. 1.7.0)'}),\n agentFramework: Flags.string({description: 'Agent framework to power your copilot', options: AGENT_FRAMEWORKS}),\n fastApiEnabled: Flags.string({description: 'Use FastAPI to serve your agent locally', options: YES_NO}),\n useCopilotCloud: Flags.string({description: 'Use Copilot Cloud for production-ready hosting', options: YES_NO}),\n chatUi: Flags.string({description: 'Chat UI component to add to your app', options: CHAT_COMPONENTS}),\n langGraphAgent: Flags.string({description: 'LangGraph agent template to use', options: LANGGRAPH_AGENTS}),\n crewType: Flags.string({description: 'CrewAI implementation type', options: CREW_TYPES}),\n crewName: Flags.string({description: 'Name for your CrewAI agent'}),\n crewUrl: Flags.string({description: 'URL endpoint for your CrewAI agent'}),\n crewBearerToken: Flags.string({description: 'Bearer token for CrewAI authentication'}),\n langSmithApiKey: Flags.string({description: 'LangSmith API key for LangGraph observability'}),\n llmToken: Flags.string({description: 'API key for your preferred LLM provider'}),\n crewFlowAgent: Flags.string({description: 'CrewAI Flow template to use', options: CREW_FLOW_TEMPLATES}),\n}","export type ChatTemplate = \n \"CopilotChat\" |\n \"CopilotPopup\" |\n \"CopilotSidebar\"\n\nexport type StarterTemplate = \n \"LangGraphPlatform\" |\n \"RemoteEndpoint\" |\n \"Standard\" |\n \"CrewEnterprise\" |\n \"CrewFlowsStarter\"\n\nexport type Template = ChatTemplate | StarterTemplate\n\nconst BASE_URL = \"https://registry.copilotkit.ai/r\"\n\nexport const templateMapping = {\n // Runtimes\n \"RemoteEndpoint\": `${BASE_URL}/remote-endpoint-starter.json`,\n \"LangGraphPlatformRuntime\": `${BASE_URL}/langgraph-platform-starter.json`,\n \n // CrewAI\n \"CrewEnterprise\": [\n `${BASE_URL}/coagents-crew-starter.json`,\n ], \n \"CrewFlowsStarter\": [\n `${BASE_URL}/coagents-starter-ui.json`,\n `${BASE_URL}/agent-layout.json`,\n `${BASE_URL}/remote-endpoint.json`\n ],\n \n // LangGraph\n \"LangGraphGeneric\": `${BASE_URL}/generic-lg-starter.json`,\n \"LangGraphStarter\": [\n `${BASE_URL}/langgraph-platform-starter.json`,\n `${BASE_URL}/coagents-starter-ui.json`,\n ],\n\n // No Agent\n \"StandardStarter\": `${BASE_URL}/standard-starter.json`,\n \"StandardRuntime\": `${BASE_URL}/standard-runtime.json`,\n\n // MCP\n \"McpStarter\": `${BASE_URL}/mcp-starter.json`,\n \"McpRuntime\": `${BASE_URL}/mcp-starter-runtime.json`\n}"],"mappings":"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","names":[]}
@@ -1,7 +1,7 @@
1
1
  // src/lib/init/types/questions.ts
2
2
  import { z } from "zod";
3
3
  import { Flags } from "@oclif/core";
4
- var AGENT_FRAMEWORKS = ["CrewAI", "LangGraph"];
4
+ var AGENT_FRAMEWORKS = ["CrewAI", "LangGraph", "MCP", "None"];
5
5
  var CREW_TYPES = ["Crews", "Flows"];
6
6
  var CHAT_COMPONENTS = ["CopilotChat", "CopilotSidebar", "Headless", "CopilotPopup"];
7
7
  var LANGGRAPH_AGENTS = ["Python Starter", "TypeScript Starter"];
@@ -99,6 +99,7 @@ var ConfigSchema = z.object({
99
99
  }
100
100
  );
101
101
  var ConfigFlags = {
102
+ mcp: Flags.string({ description: "Scaffold a CopilotKit project with MCP" }),
102
103
  copilotKitVersion: Flags.string({ description: "CopilotKit version to use (e.g. 1.7.0)" }),
103
104
  agentFramework: Flags.string({ description: "Agent framework to power your copilot", options: AGENT_FRAMEWORKS }),
104
105
  fastApiEnabled: Flags.string({ description: "Use FastAPI to serve your agent locally", options: YES_NO }),
@@ -115,27 +116,32 @@ var ConfigFlags = {
115
116
  };
116
117
 
117
118
  // src/lib/init/types/templates.ts
118
- var BASE_URL = "http://registry.copilotkit.ai/r";
119
+ var BASE_URL = "https://registry.copilotkit.ai/r";
119
120
  var templateMapping = {
120
- "LangGraphPlatformRuntime": `${BASE_URL}/langgraph-platform-starter.json`,
121
+ // Runtimes
121
122
  "RemoteEndpoint": `${BASE_URL}/remote-endpoint-starter.json`,
123
+ "LangGraphPlatformRuntime": `${BASE_URL}/langgraph-platform-starter.json`,
124
+ // CrewAI
122
125
  "CrewEnterprise": [
123
126
  `${BASE_URL}/coagents-crew-starter.json`
124
127
  ],
125
- "LangGraphGeneric": `${BASE_URL}/generic-lg-starter-with-cloud.json`,
126
128
  "CrewFlowsStarter": [
127
129
  `${BASE_URL}/coagents-starter-ui.json`,
128
130
  `${BASE_URL}/agent-layout.json`,
129
131
  `${BASE_URL}/remote-endpoint.json`
130
132
  ],
133
+ // LangGraph
134
+ "LangGraphGeneric": `${BASE_URL}/generic-lg-starter.json`,
131
135
  "LangGraphStarter": [
132
136
  `${BASE_URL}/langgraph-platform-starter.json`,
133
137
  `${BASE_URL}/coagents-starter-ui.json`
134
138
  ],
135
- "Standard": `${BASE_URL}/standard-starter.json`,
136
- "CopilotChat": `${BASE_URL}/chat.json`,
137
- "CopilotPopup": `${BASE_URL}/popup.json`,
138
- "CopilotSidebar": `${BASE_URL}/sidebar.json`
139
+ // No Agent
140
+ "StandardStarter": `${BASE_URL}/standard-starter.json`,
141
+ "StandardRuntime": `${BASE_URL}/standard-runtime.json`,
142
+ // MCP
143
+ "McpStarter": `${BASE_URL}/mcp-starter.json`,
144
+ "McpRuntime": `${BASE_URL}/mcp-starter-runtime.json`
139
145
  };
140
146
  export {
141
147
  AGENT_FRAMEWORKS,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/init/types/questions.ts","../../../../src/lib/init/types/templates.ts"],"sourcesContent":["import { z } from 'zod';\nimport { Flags } from \"@oclif/core\"\n\n// ===== Core Constants =====\nexport const AGENT_FRAMEWORKS = ['CrewAI', 'LangGraph'] as const;\nexport const CREW_TYPES = ['Crews', 'Flows'] as const;\nexport const CHAT_COMPONENTS = ['CopilotChat','CopilotSidebar', 'Headless', 'CopilotPopup'] as const;\nexport const LANGGRAPH_AGENTS = ['Python Starter', 'TypeScript Starter'] as const;\nexport const CREW_FLOW_TEMPLATES = ['Starter'] as const;\nexport const YES_NO = ['Yes', 'No'] as const;\n\n// ===== Sanitizers =====\nexport const sanitizers = {\n // Remove trailing slash from URLs\n url: (value: string): string => {\n if (!value) return value;\n return value.trim().replace(/\\/+$/, '');\n },\n \n // Trim whitespace from strings\n trim: (value: string): string => {\n if (!value) return value;\n return value.trim();\n },\n \n // Lowercase strings\n lowercase: (value: string): string => {\n if (!value) return value;\n return value.toLowerCase().trim();\n },\n \n // Clean API keys (remove whitespace)\n apiKey: (value: string): string => {\n if (!value) return value;\n return value.trim().replace(/\\s/g, '');\n }\n};\n\n// ===== Zod Schemas =====\n\n// Basic schemas\nexport const AgentFrameworkSchema = z.enum(AGENT_FRAMEWORKS);\nexport const CrewTypeSchema = z.enum(CREW_TYPES);\nexport const ChatComponentSchema = z.enum(CHAT_COMPONENTS);\nexport const LangGraphAgentSchema = z.enum(LANGGRAPH_AGENTS);\nexport const CrewFlowTemplateSchema = z.enum(CREW_FLOW_TEMPLATES);\nexport const YesNoSchema = z.enum(YES_NO);\n\n// URL validation schema with preprocessing to remove trailing slash\nexport const UrlSchema = z.preprocess(\n val => sanitizers.url(String(val)),\n z.string().url('Please enter a valid URL').min(1, 'URL is required')\n);\n\n// Token validation schema with preprocessing to trim\nexport const TokenSchema = z.preprocess(\n val => sanitizers.trim(String(val)),\n z.string().min(1, 'Token is required')\n);\n\n// API key validation schema with preprocessing to remove whitespace\nexport const ApiKeySchema = z.preprocess(\n val => sanitizers.apiKey(String(val)),\n z.string().min(1, 'API key is required')\n);\n\n// Name validation schema with preprocessing to trim\nexport const NameSchema = z.preprocess(\n val => sanitizers.trim(String(val)),\n z.string().min(1, 'Name is required')\n);\n\n// Config schema\nexport const ConfigSchema = z.object({\n // Core fields\n copilotKitVersion: z.string().optional(),\n agentFramework: AgentFrameworkSchema,\n chatUi: ChatComponentSchema.optional(),\n \n // Yes/No fields\n alreadyDeployed: YesNoSchema.optional(),\n fastApiEnabled: YesNoSchema.optional(),\n useCopilotCloud: YesNoSchema.optional(),\n \n // LangGraph specific fields \n langGraphAgent: LangGraphAgentSchema.optional(),\n langGraphPlatform: YesNoSchema.optional(),\n langGraphPlatformUrl: UrlSchema.optional(),\n langGraphRemoteEndpointURL: UrlSchema.optional(),\n \n // CrewAI specific fields\n crewType: CrewTypeSchema.optional(),\n crewName: NameSchema.optional(),\n crewUrl: UrlSchema.optional(),\n crewBearerToken: TokenSchema.optional(),\n crewFlowAgent: CrewFlowTemplateSchema.optional(),\n \n // API keys and tokens\n copilotCloudPublicApiKey: z.string().optional(),\n langSmithApiKey: ApiKeySchema.optional(),\n llmToken: ApiKeySchema.optional(),\n})\n.refine(\n (data) => {\n // If CrewAI is selected with Crews type, require crew URL and bearer token\n if (data.agentFramework === 'CrewAI' && data.crewType === 'Crews') {\n return !!data.crewUrl && !!data.crewBearerToken;\n }\n return true;\n },\n {\n message: \"Crew URL and bearer token are required for CrewAI Crews\",\n path: [\"crewUrl\", \"crewBearerToken\"],\n }\n)\n.refine(\n (data) => {\n // If LangGraph is selected with LangGraph Platform, require platform URL and LangSmith API key\n if (\n data.agentFramework === 'LangGraph' && \n data.alreadyDeployed === 'Yes' && \n data.langGraphPlatform === 'Yes'\n ) {\n return !!data.langGraphPlatformUrl && !!data.langSmithApiKey;\n }\n return true;\n },\n {\n message: \"LangGraph Platform URL and LangSmith API key are required\",\n path: [\"langGraphPlatformUrl\", \"langSmithApiKey\"],\n }\n);\n\n// Export the inferred type from the schema\nexport type Config = z.infer<typeof ConfigSchema>;\n\n// Question type definition with improved validation and sanitization\nexport type Question = {\n type: 'input' | 'yes/no' | 'select';\n name: keyof Config;\n message: string;\n choices?: readonly string[];\n default?: string;\n when?: (answers: Partial<Config>) => boolean;\n sensitive?: boolean;\n validate?: (input: string) => true | string; // Return true if valid, error message string if invalid\n sanitize?: (input: string) => string; // Function to sanitize input before validation\n};\n\n// CLI flags definition with descriptions\nexport const ConfigFlags = {\n copilotKitVersion: Flags.string({description: 'CopilotKit version to use (e.g. 1.7.0)'}),\n agentFramework: Flags.string({description: 'Agent framework to power your copilot', options: AGENT_FRAMEWORKS}),\n fastApiEnabled: Flags.string({description: 'Use FastAPI to serve your agent locally', options: YES_NO}),\n useCopilotCloud: Flags.string({description: 'Use Copilot Cloud for production-ready hosting', options: YES_NO}),\n chatUi: Flags.string({description: 'Chat UI component to add to your app', options: CHAT_COMPONENTS}),\n langGraphAgent: Flags.string({description: 'LangGraph agent template to use', options: LANGGRAPH_AGENTS}),\n crewType: Flags.string({description: 'CrewAI implementation type', options: CREW_TYPES}),\n crewName: Flags.string({description: 'Name for your CrewAI agent'}),\n crewUrl: Flags.string({description: 'URL endpoint for your CrewAI agent'}),\n crewBearerToken: Flags.string({description: 'Bearer token for CrewAI authentication'}),\n langSmithApiKey: Flags.string({description: 'LangSmith API key for LangGraph observability'}),\n llmToken: Flags.string({description: 'API key for your preferred LLM provider'}),\n crewFlowAgent: Flags.string({description: 'CrewAI Flow template to use', options: CREW_FLOW_TEMPLATES}),\n}","export type ChatTemplate = \n \"CopilotChat\" |\n \"CopilotPopup\" |\n \"CopilotSidebar\"\n\nexport type StarterTemplate = \n \"LangGraphPlatform\" |\n \"RemoteEndpoint\" |\n \"Standard\" |\n \"CrewEnterprise\" |\n \"CrewFlowsStarter\"\n\nexport type Template = ChatTemplate | StarterTemplate\n\nconst BASE_URL = \"http://registry.copilotkit.ai/r\"\n\nexport const templateMapping = {\n \"LangGraphPlatformRuntime\": `${BASE_URL}/langgraph-platform-starter.json`,\n \"RemoteEndpoint\": `${BASE_URL}/remote-endpoint-starter.json`,\n \"CrewEnterprise\": [\n `${BASE_URL}/coagents-crew-starter.json`,\n ],\n\n \"LangGraphGeneric\": `${BASE_URL}/generic-lg-starter-with-cloud.json`,\n\n \"CrewFlowsStarter\": [\n `${BASE_URL}/coagents-starter-ui.json`,\n `${BASE_URL}/agent-layout.json`,\n `${BASE_URL}/remote-endpoint.json`\n ],\n\n \"LangGraphStarter\": [\n `${BASE_URL}/langgraph-platform-starter.json`,\n `${BASE_URL}/coagents-starter-ui.json`,\n ],\n\n \"Standard\": `${BASE_URL}/standard-starter.json`,\n \"CopilotChat\": `${BASE_URL}/chat.json`,\n \"CopilotPopup\": `${BASE_URL}/popup.json`,\n \"CopilotSidebar\": `${BASE_URL}/sidebar.json`,\n}"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/lib/init/types/questions.ts","../../../../src/lib/init/types/templates.ts"],"sourcesContent":["import { z } from 'zod';\nimport { Flags } from \"@oclif/core\"\n\n// ===== Core Constants =====\nexport const AGENT_FRAMEWORKS = ['CrewAI', 'LangGraph', \"MCP\", 'None'] as const;\nexport const CREW_TYPES = ['Crews', 'Flows'] as const;\nexport const CHAT_COMPONENTS = ['CopilotChat','CopilotSidebar', 'Headless', 'CopilotPopup'] as const;\nexport const LANGGRAPH_AGENTS = ['Python Starter', 'TypeScript Starter'] as const;\nexport const CREW_FLOW_TEMPLATES = ['Starter'] as const;\nexport const YES_NO = ['Yes', 'No'] as const;\n\n// ===== Sanitizers =====\nexport const sanitizers = {\n // Remove trailing slash from URLs\n url: (value: string): string => {\n if (!value) return value;\n return value.trim().replace(/\\/+$/, '');\n },\n \n // Trim whitespace from strings\n trim: (value: string): string => {\n if (!value) return value;\n return value.trim();\n },\n \n // Lowercase strings\n lowercase: (value: string): string => {\n if (!value) return value;\n return value.toLowerCase().trim();\n },\n \n // Clean API keys (remove whitespace)\n apiKey: (value: string): string => {\n if (!value) return value;\n return value.trim().replace(/\\s/g, '');\n }\n};\n\n// ===== Zod Schemas =====\n\n// Basic schemas\nexport const AgentFrameworkSchema = z.enum(AGENT_FRAMEWORKS);\nexport const CrewTypeSchema = z.enum(CREW_TYPES);\nexport const ChatComponentSchema = z.enum(CHAT_COMPONENTS);\nexport const LangGraphAgentSchema = z.enum(LANGGRAPH_AGENTS);\nexport const CrewFlowTemplateSchema = z.enum(CREW_FLOW_TEMPLATES);\nexport const YesNoSchema = z.enum(YES_NO);\n\n// URL validation schema with preprocessing to remove trailing slash\nexport const UrlSchema = z.preprocess(\n val => sanitizers.url(String(val)),\n z.string().url('Please enter a valid URL').min(1, 'URL is required')\n);\n\n// Token validation schema with preprocessing to trim\nexport const TokenSchema = z.preprocess(\n val => sanitizers.trim(String(val)),\n z.string().min(1, 'Token is required')\n);\n\n// API key validation schema with preprocessing to remove whitespace\nexport const ApiKeySchema = z.preprocess(\n val => sanitizers.apiKey(String(val)),\n z.string().min(1, 'API key is required')\n);\n\n// Name validation schema with preprocessing to trim\nexport const NameSchema = z.preprocess(\n val => sanitizers.trim(String(val)),\n z.string().min(1, 'Name is required')\n);\n\n// Config schema\nexport const ConfigSchema = z.object({\n // Core fields\n copilotKitVersion: z.string().optional(),\n agentFramework: AgentFrameworkSchema,\n chatUi: ChatComponentSchema.optional(),\n \n // Yes/No fields\n alreadyDeployed: YesNoSchema.optional(),\n fastApiEnabled: YesNoSchema.optional(),\n useCopilotCloud: YesNoSchema.optional(),\n \n // LangGraph specific fields \n langGraphAgent: LangGraphAgentSchema.optional(),\n langGraphPlatform: YesNoSchema.optional(),\n langGraphPlatformUrl: UrlSchema.optional(),\n langGraphRemoteEndpointURL: UrlSchema.optional(),\n \n // CrewAI specific fields\n crewType: CrewTypeSchema.optional(),\n crewName: NameSchema.optional(),\n crewUrl: UrlSchema.optional(),\n crewBearerToken: TokenSchema.optional(),\n crewFlowAgent: CrewFlowTemplateSchema.optional(),\n \n // API keys and tokens\n copilotCloudPublicApiKey: z.string().optional(),\n langSmithApiKey: ApiKeySchema.optional(),\n llmToken: ApiKeySchema.optional(),\n})\n.refine(\n (data) => {\n // If CrewAI is selected with Crews type, require crew URL and bearer token\n if (data.agentFramework === 'CrewAI' && data.crewType === 'Crews') {\n return !!data.crewUrl && !!data.crewBearerToken;\n }\n return true;\n },\n {\n message: \"Crew URL and bearer token are required for CrewAI Crews\",\n path: [\"crewUrl\", \"crewBearerToken\"],\n }\n)\n.refine(\n (data) => {\n // If LangGraph is selected with LangGraph Platform, require platform URL and LangSmith API key\n if (\n data.agentFramework === 'LangGraph' && \n data.alreadyDeployed === 'Yes' && \n data.langGraphPlatform === 'Yes'\n ) {\n return !!data.langGraphPlatformUrl && !!data.langSmithApiKey;\n }\n return true;\n },\n {\n message: \"LangGraph Platform URL and LangSmith API key are required\",\n path: [\"langGraphPlatformUrl\", \"langSmithApiKey\"],\n }\n);\n\n// Export the inferred type from the schema\nexport type Config = z.infer<typeof ConfigSchema>;\n\n// Question type definition with improved validation and sanitization\nexport type Question = {\n type: 'input' | 'yes/no' | 'select';\n name: keyof Config;\n message: string;\n choices?: readonly string[];\n default?: string;\n when?: (answers: Partial<Config>) => boolean;\n sensitive?: boolean;\n validate?: (input: string) => true | string; // Return true if valid, error message string if invalid\n sanitize?: (input: string) => string; // Function to sanitize input before validation\n};\n\n// CLI flags definition with descriptions\nexport const ConfigFlags = {\n mcp: Flags.string({description: 'Scaffold a CopilotKit project with MCP'}),\n copilotKitVersion: Flags.string({description: 'CopilotKit version to use (e.g. 1.7.0)'}),\n agentFramework: Flags.string({description: 'Agent framework to power your copilot', options: AGENT_FRAMEWORKS}),\n fastApiEnabled: Flags.string({description: 'Use FastAPI to serve your agent locally', options: YES_NO}),\n useCopilotCloud: Flags.string({description: 'Use Copilot Cloud for production-ready hosting', options: YES_NO}),\n chatUi: Flags.string({description: 'Chat UI component to add to your app', options: CHAT_COMPONENTS}),\n langGraphAgent: Flags.string({description: 'LangGraph agent template to use', options: LANGGRAPH_AGENTS}),\n crewType: Flags.string({description: 'CrewAI implementation type', options: CREW_TYPES}),\n crewName: Flags.string({description: 'Name for your CrewAI agent'}),\n crewUrl: Flags.string({description: 'URL endpoint for your CrewAI agent'}),\n crewBearerToken: Flags.string({description: 'Bearer token for CrewAI authentication'}),\n langSmithApiKey: Flags.string({description: 'LangSmith API key for LangGraph observability'}),\n llmToken: Flags.string({description: 'API key for your preferred LLM provider'}),\n crewFlowAgent: Flags.string({description: 'CrewAI Flow template to use', options: CREW_FLOW_TEMPLATES}),\n}","export type ChatTemplate = \n \"CopilotChat\" |\n \"CopilotPopup\" |\n \"CopilotSidebar\"\n\nexport type StarterTemplate = \n \"LangGraphPlatform\" |\n \"RemoteEndpoint\" |\n \"Standard\" |\n \"CrewEnterprise\" |\n \"CrewFlowsStarter\"\n\nexport type Template = ChatTemplate | StarterTemplate\n\nconst BASE_URL = \"https://registry.copilotkit.ai/r\"\n\nexport const templateMapping = {\n // Runtimes\n \"RemoteEndpoint\": `${BASE_URL}/remote-endpoint-starter.json`,\n \"LangGraphPlatformRuntime\": `${BASE_URL}/langgraph-platform-starter.json`,\n \n // CrewAI\n \"CrewEnterprise\": [\n `${BASE_URL}/coagents-crew-starter.json`,\n ], \n \"CrewFlowsStarter\": [\n `${BASE_URL}/coagents-starter-ui.json`,\n `${BASE_URL}/agent-layout.json`,\n `${BASE_URL}/remote-endpoint.json`\n ],\n \n // LangGraph\n \"LangGraphGeneric\": `${BASE_URL}/generic-lg-starter.json`,\n \"LangGraphStarter\": [\n `${BASE_URL}/langgraph-platform-starter.json`,\n `${BASE_URL}/coagents-starter-ui.json`,\n ],\n\n // No Agent\n \"StandardStarter\": `${BASE_URL}/standard-starter.json`,\n \"StandardRuntime\": `${BASE_URL}/standard-runtime.json`,\n\n // MCP\n \"McpStarter\": `${BASE_URL}/mcp-starter.json`,\n \"McpRuntime\": `${BASE_URL}/mcp-starter-runtime.json`\n}"],"mappings":";AAAA,SAAS,SAAS;AAClB,SAAS,aAAa;AAGf,IAAM,mBAAmB,CAAC,UAAU,aAAa,OAAO,MAAM;AAC9D,IAAM,aAAa,CAAC,SAAS,OAAO;AACpC,IAAM,kBAAkB,CAAC,eAAc,kBAAkB,YAAY,cAAc;AACnF,IAAM,mBAAmB,CAAC,kBAAkB,oBAAoB;AAChE,IAAM,sBAAsB,CAAC,SAAS;AACtC,IAAM,SAAS,CAAC,OAAO,IAAI;AAG3B,IAAM,aAAa;AAAA;AAAA,EAExB,KAAK,CAAC,UAA0B;AAC9B,QAAI,CAAC,MAAO,QAAO;AACnB,WAAO,MAAM,KAAK,EAAE,QAAQ,QAAQ,EAAE;AAAA,EACxC;AAAA;AAAA,EAGA,MAAM,CAAC,UAA0B;AAC/B,QAAI,CAAC,MAAO,QAAO;AACnB,WAAO,MAAM,KAAK;AAAA,EACpB;AAAA;AAAA,EAGA,WAAW,CAAC,UAA0B;AACpC,QAAI,CAAC,MAAO,QAAO;AACnB,WAAO,MAAM,YAAY,EAAE,KAAK;AAAA,EAClC;AAAA;AAAA,EAGA,QAAQ,CAAC,UAA0B;AACjC,QAAI,CAAC,MAAO,QAAO;AACnB,WAAO,MAAM,KAAK,EAAE,QAAQ,OAAO,EAAE;AAAA,EACvC;AACF;AAKO,IAAM,uBAAuB,EAAE,KAAK,gBAAgB;AACpD,IAAM,iBAAiB,EAAE,KAAK,UAAU;AACxC,IAAM,sBAAsB,EAAE,KAAK,eAAe;AAClD,IAAM,uBAAuB,EAAE,KAAK,gBAAgB;AACpD,IAAM,yBAAyB,EAAE,KAAK,mBAAmB;AACzD,IAAM,cAAc,EAAE,KAAK,MAAM;AAGjC,IAAM,YAAY,EAAE;AAAA,EACzB,SAAO,WAAW,IAAI,OAAO,GAAG,CAAC;AAAA,EACjC,EAAE,OAAO,EAAE,IAAI,0BAA0B,EAAE,IAAI,GAAG,iBAAiB;AACrE;AAGO,IAAM,cAAc,EAAE;AAAA,EAC3B,SAAO,WAAW,KAAK,OAAO,GAAG,CAAC;AAAA,EAClC,EAAE,OAAO,EAAE,IAAI,GAAG,mBAAmB;AACvC;AAGO,IAAM,eAAe,EAAE;AAAA,EAC5B,SAAO,WAAW,OAAO,OAAO,GAAG,CAAC;AAAA,EACpC,EAAE,OAAO,EAAE,IAAI,GAAG,qBAAqB;AACzC;AAGO,IAAM,aAAa,EAAE;AAAA,EAC1B,SAAO,WAAW,KAAK,OAAO,GAAG,CAAC;AAAA,EAClC,EAAE,OAAO,EAAE,IAAI,GAAG,kBAAkB;AACtC;AAGO,IAAM,eAAe,EAAE,OAAO;AAAA;AAAA,EAEnC,mBAAmB,EAAE,OAAO,EAAE,SAAS;AAAA,EACvC,gBAAgB;AAAA,EAChB,QAAQ,oBAAoB,SAAS;AAAA;AAAA,EAGrC,iBAAiB,YAAY,SAAS;AAAA,EACtC,gBAAgB,YAAY,SAAS;AAAA,EACrC,iBAAiB,YAAY,SAAS;AAAA;AAAA,EAGtC,gBAAgB,qBAAqB,SAAS;AAAA,EAC9C,mBAAmB,YAAY,SAAS;AAAA,EACxC,sBAAsB,UAAU,SAAS;AAAA,EACzC,4BAA4B,UAAU,SAAS;AAAA;AAAA,EAG/C,UAAU,eAAe,SAAS;AAAA,EAClC,UAAU,WAAW,SAAS;AAAA,EAC9B,SAAS,UAAU,SAAS;AAAA,EAC5B,iBAAiB,YAAY,SAAS;AAAA,EACtC,eAAe,uBAAuB,SAAS;AAAA;AAAA,EAG/C,0BAA0B,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9C,iBAAiB,aAAa,SAAS;AAAA,EACvC,UAAU,aAAa,SAAS;AAClC,CAAC,EACA;AAAA,EACC,CAAC,SAAS;AAER,QAAI,KAAK,mBAAmB,YAAY,KAAK,aAAa,SAAS;AACjE,aAAO,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,KAAK;AAAA,IAClC;AACA,WAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,MAAM,CAAC,WAAW,iBAAiB;AAAA,EACrC;AACF,EACC;AAAA,EACC,CAAC,SAAS;AAER,QACE,KAAK,mBAAmB,eACxB,KAAK,oBAAoB,SACzB,KAAK,sBAAsB,OAC3B;AACA,aAAO,CAAC,CAAC,KAAK,wBAAwB,CAAC,CAAC,KAAK;AAAA,IAC/C;AACA,WAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,MAAM,CAAC,wBAAwB,iBAAiB;AAAA,EAClD;AACF;AAmBO,IAAM,cAAc;AAAA,EACzB,KAAK,MAAM,OAAO,EAAC,aAAa,yCAAwC,CAAC;AAAA,EACzE,mBAAmB,MAAM,OAAO,EAAC,aAAa,yCAAwC,CAAC;AAAA,EACvF,gBAAgB,MAAM,OAAO,EAAC,aAAa,yCAAyC,SAAS,iBAAgB,CAAC;AAAA,EAC9G,gBAAgB,MAAM,OAAO,EAAC,aAAa,2CAA2C,SAAS,OAAM,CAAC;AAAA,EACtG,iBAAiB,MAAM,OAAO,EAAC,aAAa,kDAAkD,SAAS,OAAM,CAAC;AAAA,EAC9G,QAAQ,MAAM,OAAO,EAAC,aAAa,wCAAwC,SAAS,gBAAe,CAAC;AAAA,EACpG,gBAAgB,MAAM,OAAO,EAAC,aAAa,mCAAmC,SAAS,iBAAgB,CAAC;AAAA,EACxG,UAAU,MAAM,OAAO,EAAC,aAAa,8BAA8B,SAAS,WAAU,CAAC;AAAA,EACvF,UAAU,MAAM,OAAO,EAAC,aAAa,6BAA4B,CAAC;AAAA,EAClE,SAAS,MAAM,OAAO,EAAC,aAAa,qCAAoC,CAAC;AAAA,EACzE,iBAAiB,MAAM,OAAO,EAAC,aAAa,yCAAwC,CAAC;AAAA,EACrF,iBAAiB,MAAM,OAAO,EAAC,aAAa,gDAA+C,CAAC;AAAA,EAC5F,UAAU,MAAM,OAAO,EAAC,aAAa,0CAAyC,CAAC;AAAA,EAC/E,eAAe,MAAM,OAAO,EAAC,aAAa,+BAA+B,SAAS,oBAAmB,CAAC;AACxG;;;ACvJA,IAAM,WAAW;AAEV,IAAM,kBAAkB;AAAA;AAAA,EAE3B,kBAAkB,GAAG,QAAQ;AAAA,EAC7B,4BAA4B,GAAG,QAAQ;AAAA;AAAA,EAGvC,kBAAkB;AAAA,IACd,GAAG,QAAQ;AAAA,EACf;AAAA,EACA,oBAAoB;AAAA,IAChB,GAAG,QAAQ;AAAA,IACX,GAAG,QAAQ;AAAA,IACX,GAAG,QAAQ;AAAA,EACf;AAAA;AAAA,EAGA,oBAAoB,GAAG,QAAQ;AAAA,EAC/B,oBAAoB;AAAA,IAChB,GAAG,QAAQ;AAAA,IACX,GAAG,QAAQ;AAAA,EACf;AAAA;AAAA,EAGA,mBAAmB,GAAG,QAAQ;AAAA,EAC9B,mBAAmB,GAAG,QAAQ;AAAA;AAAA,EAG9B,cAAc,GAAG,QAAQ;AAAA,EACzB,cAAc,GAAG,QAAQ;AAC7B;","names":[]}
@@ -1,7 +1,7 @@
1
1
  import * as _oclif_core_interfaces from '@oclif/core/interfaces';
2
2
  import { z } from 'zod';
3
3
 
4
- declare const AGENT_FRAMEWORKS: readonly ["CrewAI", "LangGraph"];
4
+ declare const AGENT_FRAMEWORKS: readonly ["CrewAI", "LangGraph", "MCP", "None"];
5
5
  declare const CREW_TYPES: readonly ["Crews", "Flows"];
6
6
  declare const CHAT_COMPONENTS: readonly ["CopilotChat", "CopilotSidebar", "Headless", "CopilotPopup"];
7
7
  declare const LANGGRAPH_AGENTS: readonly ["Python Starter", "TypeScript Starter"];
@@ -13,7 +13,7 @@ declare const sanitizers: {
13
13
  lowercase: (value: string) => string;
14
14
  apiKey: (value: string) => string;
15
15
  };
16
- declare const AgentFrameworkSchema: z.ZodEnum<["CrewAI", "LangGraph"]>;
16
+ declare const AgentFrameworkSchema: z.ZodEnum<["CrewAI", "LangGraph", "MCP", "None"]>;
17
17
  declare const CrewTypeSchema: z.ZodEnum<["Crews", "Flows"]>;
18
18
  declare const ChatComponentSchema: z.ZodEnum<["CopilotChat", "CopilotSidebar", "Headless", "CopilotPopup"]>;
19
19
  declare const LangGraphAgentSchema: z.ZodEnum<["Python Starter", "TypeScript Starter"]>;
@@ -25,7 +25,7 @@ declare const ApiKeySchema: z.ZodEffects<z.ZodString, string, unknown>;
25
25
  declare const NameSchema: z.ZodEffects<z.ZodString, string, unknown>;
26
26
  declare const ConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
27
27
  copilotKitVersion: z.ZodOptional<z.ZodString>;
28
- agentFramework: z.ZodEnum<["CrewAI", "LangGraph"]>;
28
+ agentFramework: z.ZodEnum<["CrewAI", "LangGraph", "MCP", "None"]>;
29
29
  chatUi: z.ZodOptional<z.ZodEnum<["CopilotChat", "CopilotSidebar", "Headless", "CopilotPopup"]>>;
30
30
  alreadyDeployed: z.ZodOptional<z.ZodEnum<["Yes", "No"]>>;
31
31
  fastApiEnabled: z.ZodOptional<z.ZodEnum<["Yes", "No"]>>;
@@ -43,7 +43,7 @@ declare const ConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
43
43
  langSmithApiKey: z.ZodOptional<z.ZodEffects<z.ZodString, string, unknown>>;
44
44
  llmToken: z.ZodOptional<z.ZodEffects<z.ZodString, string, unknown>>;
45
45
  }, "strip", z.ZodTypeAny, {
46
- agentFramework: "CrewAI" | "LangGraph";
46
+ agentFramework: "CrewAI" | "MCP" | "LangGraph" | "None";
47
47
  copilotKitVersion?: string | undefined;
48
48
  chatUi?: "CopilotChat" | "CopilotSidebar" | "Headless" | "CopilotPopup" | undefined;
49
49
  alreadyDeployed?: "Yes" | "No" | undefined;
@@ -62,7 +62,7 @@ declare const ConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
62
62
  langSmithApiKey?: string | undefined;
63
63
  llmToken?: string | undefined;
64
64
  }, {
65
- agentFramework: "CrewAI" | "LangGraph";
65
+ agentFramework: "CrewAI" | "MCP" | "LangGraph" | "None";
66
66
  copilotKitVersion?: string | undefined;
67
67
  chatUi?: "CopilotChat" | "CopilotSidebar" | "Headless" | "CopilotPopup" | undefined;
68
68
  alreadyDeployed?: "Yes" | "No" | undefined;
@@ -81,7 +81,7 @@ declare const ConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
81
81
  langSmithApiKey?: unknown;
82
82
  llmToken?: unknown;
83
83
  }>, {
84
- agentFramework: "CrewAI" | "LangGraph";
84
+ agentFramework: "CrewAI" | "MCP" | "LangGraph" | "None";
85
85
  copilotKitVersion?: string | undefined;
86
86
  chatUi?: "CopilotChat" | "CopilotSidebar" | "Headless" | "CopilotPopup" | undefined;
87
87
  alreadyDeployed?: "Yes" | "No" | undefined;
@@ -100,7 +100,7 @@ declare const ConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
100
100
  langSmithApiKey?: string | undefined;
101
101
  llmToken?: string | undefined;
102
102
  }, {
103
- agentFramework: "CrewAI" | "LangGraph";
103
+ agentFramework: "CrewAI" | "MCP" | "LangGraph" | "None";
104
104
  copilotKitVersion?: string | undefined;
105
105
  chatUi?: "CopilotChat" | "CopilotSidebar" | "Headless" | "CopilotPopup" | undefined;
106
106
  alreadyDeployed?: "Yes" | "No" | undefined;
@@ -119,7 +119,7 @@ declare const ConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
119
119
  langSmithApiKey?: unknown;
120
120
  llmToken?: unknown;
121
121
  }>, {
122
- agentFramework: "CrewAI" | "LangGraph";
122
+ agentFramework: "CrewAI" | "MCP" | "LangGraph" | "None";
123
123
  copilotKitVersion?: string | undefined;
124
124
  chatUi?: "CopilotChat" | "CopilotSidebar" | "Headless" | "CopilotPopup" | undefined;
125
125
  alreadyDeployed?: "Yes" | "No" | undefined;
@@ -138,7 +138,7 @@ declare const ConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
138
138
  langSmithApiKey?: string | undefined;
139
139
  llmToken?: string | undefined;
140
140
  }, {
141
- agentFramework: "CrewAI" | "LangGraph";
141
+ agentFramework: "CrewAI" | "MCP" | "LangGraph" | "None";
142
142
  copilotKitVersion?: string | undefined;
143
143
  chatUi?: "CopilotChat" | "CopilotSidebar" | "Headless" | "CopilotPopup" | undefined;
144
144
  alreadyDeployed?: "Yes" | "No" | undefined;
@@ -170,6 +170,7 @@ type Question = {
170
170
  sanitize?: (input: string) => string;
171
171
  };
172
172
  declare const ConfigFlags: {
173
+ mcp: _oclif_core_interfaces.OptionFlag<string | undefined, _oclif_core_interfaces.CustomOptions>;
173
174
  copilotKitVersion: _oclif_core_interfaces.OptionFlag<string | undefined, _oclif_core_interfaces.CustomOptions>;
174
175
  agentFramework: _oclif_core_interfaces.OptionFlag<string | undefined, _oclif_core_interfaces.CustomOptions>;
175
176
  fastApiEnabled: _oclif_core_interfaces.OptionFlag<string | undefined, _oclif_core_interfaces.CustomOptions>;
@@ -1,7 +1,7 @@
1
1
  // src/lib/init/types/questions.ts
2
2
  import { z } from "zod";
3
3
  import { Flags } from "@oclif/core";
4
- var AGENT_FRAMEWORKS = ["CrewAI", "LangGraph"];
4
+ var AGENT_FRAMEWORKS = ["CrewAI", "LangGraph", "MCP", "None"];
5
5
  var CREW_TYPES = ["Crews", "Flows"];
6
6
  var CHAT_COMPONENTS = ["CopilotChat", "CopilotSidebar", "Headless", "CopilotPopup"];
7
7
  var LANGGRAPH_AGENTS = ["Python Starter", "TypeScript Starter"];
@@ -99,6 +99,7 @@ var ConfigSchema = z.object({
99
99
  }
100
100
  );
101
101
  var ConfigFlags = {
102
+ mcp: Flags.string({ description: "Scaffold a CopilotKit project with MCP" }),
102
103
  copilotKitVersion: Flags.string({ description: "CopilotKit version to use (e.g. 1.7.0)" }),
103
104
  agentFramework: Flags.string({ description: "Agent framework to power your copilot", options: AGENT_FRAMEWORKS }),
104
105
  fastApiEnabled: Flags.string({ description: "Use FastAPI to serve your agent locally", options: YES_NO }),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/init/types/questions.ts"],"sourcesContent":["import { z } from 'zod';\nimport { Flags } from \"@oclif/core\"\n\n// ===== Core Constants =====\nexport const AGENT_FRAMEWORKS = ['CrewAI', 'LangGraph'] as const;\nexport const CREW_TYPES = ['Crews', 'Flows'] as const;\nexport const CHAT_COMPONENTS = ['CopilotChat','CopilotSidebar', 'Headless', 'CopilotPopup'] as const;\nexport const LANGGRAPH_AGENTS = ['Python Starter', 'TypeScript Starter'] as const;\nexport const CREW_FLOW_TEMPLATES = ['Starter'] as const;\nexport const YES_NO = ['Yes', 'No'] as const;\n\n// ===== Sanitizers =====\nexport const sanitizers = {\n // Remove trailing slash from URLs\n url: (value: string): string => {\n if (!value) return value;\n return value.trim().replace(/\\/+$/, '');\n },\n \n // Trim whitespace from strings\n trim: (value: string): string => {\n if (!value) return value;\n return value.trim();\n },\n \n // Lowercase strings\n lowercase: (value: string): string => {\n if (!value) return value;\n return value.toLowerCase().trim();\n },\n \n // Clean API keys (remove whitespace)\n apiKey: (value: string): string => {\n if (!value) return value;\n return value.trim().replace(/\\s/g, '');\n }\n};\n\n// ===== Zod Schemas =====\n\n// Basic schemas\nexport const AgentFrameworkSchema = z.enum(AGENT_FRAMEWORKS);\nexport const CrewTypeSchema = z.enum(CREW_TYPES);\nexport const ChatComponentSchema = z.enum(CHAT_COMPONENTS);\nexport const LangGraphAgentSchema = z.enum(LANGGRAPH_AGENTS);\nexport const CrewFlowTemplateSchema = z.enum(CREW_FLOW_TEMPLATES);\nexport const YesNoSchema = z.enum(YES_NO);\n\n// URL validation schema with preprocessing to remove trailing slash\nexport const UrlSchema = z.preprocess(\n val => sanitizers.url(String(val)),\n z.string().url('Please enter a valid URL').min(1, 'URL is required')\n);\n\n// Token validation schema with preprocessing to trim\nexport const TokenSchema = z.preprocess(\n val => sanitizers.trim(String(val)),\n z.string().min(1, 'Token is required')\n);\n\n// API key validation schema with preprocessing to remove whitespace\nexport const ApiKeySchema = z.preprocess(\n val => sanitizers.apiKey(String(val)),\n z.string().min(1, 'API key is required')\n);\n\n// Name validation schema with preprocessing to trim\nexport const NameSchema = z.preprocess(\n val => sanitizers.trim(String(val)),\n z.string().min(1, 'Name is required')\n);\n\n// Config schema\nexport const ConfigSchema = z.object({\n // Core fields\n copilotKitVersion: z.string().optional(),\n agentFramework: AgentFrameworkSchema,\n chatUi: ChatComponentSchema.optional(),\n \n // Yes/No fields\n alreadyDeployed: YesNoSchema.optional(),\n fastApiEnabled: YesNoSchema.optional(),\n useCopilotCloud: YesNoSchema.optional(),\n \n // LangGraph specific fields \n langGraphAgent: LangGraphAgentSchema.optional(),\n langGraphPlatform: YesNoSchema.optional(),\n langGraphPlatformUrl: UrlSchema.optional(),\n langGraphRemoteEndpointURL: UrlSchema.optional(),\n \n // CrewAI specific fields\n crewType: CrewTypeSchema.optional(),\n crewName: NameSchema.optional(),\n crewUrl: UrlSchema.optional(),\n crewBearerToken: TokenSchema.optional(),\n crewFlowAgent: CrewFlowTemplateSchema.optional(),\n \n // API keys and tokens\n copilotCloudPublicApiKey: z.string().optional(),\n langSmithApiKey: ApiKeySchema.optional(),\n llmToken: ApiKeySchema.optional(),\n})\n.refine(\n (data) => {\n // If CrewAI is selected with Crews type, require crew URL and bearer token\n if (data.agentFramework === 'CrewAI' && data.crewType === 'Crews') {\n return !!data.crewUrl && !!data.crewBearerToken;\n }\n return true;\n },\n {\n message: \"Crew URL and bearer token are required for CrewAI Crews\",\n path: [\"crewUrl\", \"crewBearerToken\"],\n }\n)\n.refine(\n (data) => {\n // If LangGraph is selected with LangGraph Platform, require platform URL and LangSmith API key\n if (\n data.agentFramework === 'LangGraph' && \n data.alreadyDeployed === 'Yes' && \n data.langGraphPlatform === 'Yes'\n ) {\n return !!data.langGraphPlatformUrl && !!data.langSmithApiKey;\n }\n return true;\n },\n {\n message: \"LangGraph Platform URL and LangSmith API key are required\",\n path: [\"langGraphPlatformUrl\", \"langSmithApiKey\"],\n }\n);\n\n// Export the inferred type from the schema\nexport type Config = z.infer<typeof ConfigSchema>;\n\n// Question type definition with improved validation and sanitization\nexport type Question = {\n type: 'input' | 'yes/no' | 'select';\n name: keyof Config;\n message: string;\n choices?: readonly string[];\n default?: string;\n when?: (answers: Partial<Config>) => boolean;\n sensitive?: boolean;\n validate?: (input: string) => true | string; // Return true if valid, error message string if invalid\n sanitize?: (input: string) => string; // Function to sanitize input before validation\n};\n\n// CLI flags definition with descriptions\nexport const ConfigFlags = {\n copilotKitVersion: Flags.string({description: 'CopilotKit version to use (e.g. 1.7.0)'}),\n agentFramework: Flags.string({description: 'Agent framework to power your copilot', options: AGENT_FRAMEWORKS}),\n fastApiEnabled: Flags.string({description: 'Use FastAPI to serve your agent locally', options: YES_NO}),\n useCopilotCloud: Flags.string({description: 'Use Copilot Cloud for production-ready hosting', options: YES_NO}),\n chatUi: Flags.string({description: 'Chat UI component to add to your app', options: CHAT_COMPONENTS}),\n langGraphAgent: Flags.string({description: 'LangGraph agent template to use', options: LANGGRAPH_AGENTS}),\n crewType: Flags.string({description: 'CrewAI implementation type', options: CREW_TYPES}),\n crewName: Flags.string({description: 'Name for your CrewAI agent'}),\n crewUrl: Flags.string({description: 'URL endpoint for your CrewAI agent'}),\n crewBearerToken: Flags.string({description: 'Bearer token for CrewAI authentication'}),\n langSmithApiKey: Flags.string({description: 'LangSmith API key for LangGraph observability'}),\n llmToken: Flags.string({description: 'API key for your preferred LLM provider'}),\n crewFlowAgent: Flags.string({description: 'CrewAI Flow template to use', options: CREW_FLOW_TEMPLATES}),\n}"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/lib/init/types/questions.ts"],"sourcesContent":["import { z } from 'zod';\nimport { Flags } from \"@oclif/core\"\n\n// ===== Core Constants =====\nexport const AGENT_FRAMEWORKS = ['CrewAI', 'LangGraph', \"MCP\", 'None'] as const;\nexport const CREW_TYPES = ['Crews', 'Flows'] as const;\nexport const CHAT_COMPONENTS = ['CopilotChat','CopilotSidebar', 'Headless', 'CopilotPopup'] as const;\nexport const LANGGRAPH_AGENTS = ['Python Starter', 'TypeScript Starter'] as const;\nexport const CREW_FLOW_TEMPLATES = ['Starter'] as const;\nexport const YES_NO = ['Yes', 'No'] as const;\n\n// ===== Sanitizers =====\nexport const sanitizers = {\n // Remove trailing slash from URLs\n url: (value: string): string => {\n if (!value) return value;\n return value.trim().replace(/\\/+$/, '');\n },\n \n // Trim whitespace from strings\n trim: (value: string): string => {\n if (!value) return value;\n return value.trim();\n },\n \n // Lowercase strings\n lowercase: (value: string): string => {\n if (!value) return value;\n return value.toLowerCase().trim();\n },\n \n // Clean API keys (remove whitespace)\n apiKey: (value: string): string => {\n if (!value) return value;\n return value.trim().replace(/\\s/g, '');\n }\n};\n\n// ===== Zod Schemas =====\n\n// Basic schemas\nexport const AgentFrameworkSchema = z.enum(AGENT_FRAMEWORKS);\nexport const CrewTypeSchema = z.enum(CREW_TYPES);\nexport const ChatComponentSchema = z.enum(CHAT_COMPONENTS);\nexport const LangGraphAgentSchema = z.enum(LANGGRAPH_AGENTS);\nexport const CrewFlowTemplateSchema = z.enum(CREW_FLOW_TEMPLATES);\nexport const YesNoSchema = z.enum(YES_NO);\n\n// URL validation schema with preprocessing to remove trailing slash\nexport const UrlSchema = z.preprocess(\n val => sanitizers.url(String(val)),\n z.string().url('Please enter a valid URL').min(1, 'URL is required')\n);\n\n// Token validation schema with preprocessing to trim\nexport const TokenSchema = z.preprocess(\n val => sanitizers.trim(String(val)),\n z.string().min(1, 'Token is required')\n);\n\n// API key validation schema with preprocessing to remove whitespace\nexport const ApiKeySchema = z.preprocess(\n val => sanitizers.apiKey(String(val)),\n z.string().min(1, 'API key is required')\n);\n\n// Name validation schema with preprocessing to trim\nexport const NameSchema = z.preprocess(\n val => sanitizers.trim(String(val)),\n z.string().min(1, 'Name is required')\n);\n\n// Config schema\nexport const ConfigSchema = z.object({\n // Core fields\n copilotKitVersion: z.string().optional(),\n agentFramework: AgentFrameworkSchema,\n chatUi: ChatComponentSchema.optional(),\n \n // Yes/No fields\n alreadyDeployed: YesNoSchema.optional(),\n fastApiEnabled: YesNoSchema.optional(),\n useCopilotCloud: YesNoSchema.optional(),\n \n // LangGraph specific fields \n langGraphAgent: LangGraphAgentSchema.optional(),\n langGraphPlatform: YesNoSchema.optional(),\n langGraphPlatformUrl: UrlSchema.optional(),\n langGraphRemoteEndpointURL: UrlSchema.optional(),\n \n // CrewAI specific fields\n crewType: CrewTypeSchema.optional(),\n crewName: NameSchema.optional(),\n crewUrl: UrlSchema.optional(),\n crewBearerToken: TokenSchema.optional(),\n crewFlowAgent: CrewFlowTemplateSchema.optional(),\n \n // API keys and tokens\n copilotCloudPublicApiKey: z.string().optional(),\n langSmithApiKey: ApiKeySchema.optional(),\n llmToken: ApiKeySchema.optional(),\n})\n.refine(\n (data) => {\n // If CrewAI is selected with Crews type, require crew URL and bearer token\n if (data.agentFramework === 'CrewAI' && data.crewType === 'Crews') {\n return !!data.crewUrl && !!data.crewBearerToken;\n }\n return true;\n },\n {\n message: \"Crew URL and bearer token are required for CrewAI Crews\",\n path: [\"crewUrl\", \"crewBearerToken\"],\n }\n)\n.refine(\n (data) => {\n // If LangGraph is selected with LangGraph Platform, require platform URL and LangSmith API key\n if (\n data.agentFramework === 'LangGraph' && \n data.alreadyDeployed === 'Yes' && \n data.langGraphPlatform === 'Yes'\n ) {\n return !!data.langGraphPlatformUrl && !!data.langSmithApiKey;\n }\n return true;\n },\n {\n message: \"LangGraph Platform URL and LangSmith API key are required\",\n path: [\"langGraphPlatformUrl\", \"langSmithApiKey\"],\n }\n);\n\n// Export the inferred type from the schema\nexport type Config = z.infer<typeof ConfigSchema>;\n\n// Question type definition with improved validation and sanitization\nexport type Question = {\n type: 'input' | 'yes/no' | 'select';\n name: keyof Config;\n message: string;\n choices?: readonly string[];\n default?: string;\n when?: (answers: Partial<Config>) => boolean;\n sensitive?: boolean;\n validate?: (input: string) => true | string; // Return true if valid, error message string if invalid\n sanitize?: (input: string) => string; // Function to sanitize input before validation\n};\n\n// CLI flags definition with descriptions\nexport const ConfigFlags = {\n mcp: Flags.string({description: 'Scaffold a CopilotKit project with MCP'}),\n copilotKitVersion: Flags.string({description: 'CopilotKit version to use (e.g. 1.7.0)'}),\n agentFramework: Flags.string({description: 'Agent framework to power your copilot', options: AGENT_FRAMEWORKS}),\n fastApiEnabled: Flags.string({description: 'Use FastAPI to serve your agent locally', options: YES_NO}),\n useCopilotCloud: Flags.string({description: 'Use Copilot Cloud for production-ready hosting', options: YES_NO}),\n chatUi: Flags.string({description: 'Chat UI component to add to your app', options: CHAT_COMPONENTS}),\n langGraphAgent: Flags.string({description: 'LangGraph agent template to use', options: LANGGRAPH_AGENTS}),\n crewType: Flags.string({description: 'CrewAI implementation type', options: CREW_TYPES}),\n crewName: Flags.string({description: 'Name for your CrewAI agent'}),\n crewUrl: Flags.string({description: 'URL endpoint for your CrewAI agent'}),\n crewBearerToken: Flags.string({description: 'Bearer token for CrewAI authentication'}),\n langSmithApiKey: Flags.string({description: 'LangSmith API key for LangGraph observability'}),\n llmToken: Flags.string({description: 'API key for your preferred LLM provider'}),\n crewFlowAgent: Flags.string({description: 'CrewAI Flow template to use', options: CREW_FLOW_TEMPLATES}),\n}"],"mappings":"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","names":[]}
@@ -2,16 +2,16 @@ type ChatTemplate = "CopilotChat" | "CopilotPopup" | "CopilotSidebar";
2
2
  type StarterTemplate = "LangGraphPlatform" | "RemoteEndpoint" | "Standard" | "CrewEnterprise" | "CrewFlowsStarter";
3
3
  type Template = ChatTemplate | StarterTemplate;
4
4
  declare const templateMapping: {
5
- LangGraphPlatformRuntime: string;
6
5
  RemoteEndpoint: string;
6
+ LangGraphPlatformRuntime: string;
7
7
  CrewEnterprise: string[];
8
- LangGraphGeneric: string;
9
8
  CrewFlowsStarter: string[];
9
+ LangGraphGeneric: string;
10
10
  LangGraphStarter: string[];
11
- Standard: string;
12
- CopilotChat: string;
13
- CopilotPopup: string;
14
- CopilotSidebar: string;
11
+ StandardStarter: string;
12
+ StandardRuntime: string;
13
+ McpStarter: string;
14
+ McpRuntime: string;
15
15
  };
16
16
 
17
17
  export { type ChatTemplate, type StarterTemplate, type Template, templateMapping };
@@ -1,25 +1,30 @@
1
1
  // src/lib/init/types/templates.ts
2
- var BASE_URL = "http://registry.copilotkit.ai/r";
2
+ var BASE_URL = "https://registry.copilotkit.ai/r";
3
3
  var templateMapping = {
4
- "LangGraphPlatformRuntime": `${BASE_URL}/langgraph-platform-starter.json`,
4
+ // Runtimes
5
5
  "RemoteEndpoint": `${BASE_URL}/remote-endpoint-starter.json`,
6
+ "LangGraphPlatformRuntime": `${BASE_URL}/langgraph-platform-starter.json`,
7
+ // CrewAI
6
8
  "CrewEnterprise": [
7
9
  `${BASE_URL}/coagents-crew-starter.json`
8
10
  ],
9
- "LangGraphGeneric": `${BASE_URL}/generic-lg-starter-with-cloud.json`,
10
11
  "CrewFlowsStarter": [
11
12
  `${BASE_URL}/coagents-starter-ui.json`,
12
13
  `${BASE_URL}/agent-layout.json`,
13
14
  `${BASE_URL}/remote-endpoint.json`
14
15
  ],
16
+ // LangGraph
17
+ "LangGraphGeneric": `${BASE_URL}/generic-lg-starter.json`,
15
18
  "LangGraphStarter": [
16
19
  `${BASE_URL}/langgraph-platform-starter.json`,
17
20
  `${BASE_URL}/coagents-starter-ui.json`
18
21
  ],
19
- "Standard": `${BASE_URL}/standard-starter.json`,
20
- "CopilotChat": `${BASE_URL}/chat.json`,
21
- "CopilotPopup": `${BASE_URL}/popup.json`,
22
- "CopilotSidebar": `${BASE_URL}/sidebar.json`
22
+ // No Agent
23
+ "StandardStarter": `${BASE_URL}/standard-starter.json`,
24
+ "StandardRuntime": `${BASE_URL}/standard-runtime.json`,
25
+ // MCP
26
+ "McpStarter": `${BASE_URL}/mcp-starter.json`,
27
+ "McpRuntime": `${BASE_URL}/mcp-starter-runtime.json`
23
28
  };
24
29
  export {
25
30
  templateMapping
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/init/types/templates.ts"],"sourcesContent":["export type ChatTemplate = \n \"CopilotChat\" |\n \"CopilotPopup\" |\n \"CopilotSidebar\"\n\nexport type StarterTemplate = \n \"LangGraphPlatform\" |\n \"RemoteEndpoint\" |\n \"Standard\" |\n \"CrewEnterprise\" |\n \"CrewFlowsStarter\"\n\nexport type Template = ChatTemplate | StarterTemplate\n\nconst BASE_URL = \"http://registry.copilotkit.ai/r\"\n\nexport const templateMapping = {\n \"LangGraphPlatformRuntime\": `${BASE_URL}/langgraph-platform-starter.json`,\n \"RemoteEndpoint\": `${BASE_URL}/remote-endpoint-starter.json`,\n \"CrewEnterprise\": [\n `${BASE_URL}/coagents-crew-starter.json`,\n ],\n\n \"LangGraphGeneric\": `${BASE_URL}/generic-lg-starter-with-cloud.json`,\n\n \"CrewFlowsStarter\": [\n `${BASE_URL}/coagents-starter-ui.json`,\n `${BASE_URL}/agent-layout.json`,\n `${BASE_URL}/remote-endpoint.json`\n ],\n\n \"LangGraphStarter\": [\n `${BASE_URL}/langgraph-platform-starter.json`,\n `${BASE_URL}/coagents-starter-ui.json`,\n ],\n\n \"Standard\": `${BASE_URL}/standard-starter.json`,\n \"CopilotChat\": `${BASE_URL}/chat.json`,\n \"CopilotPopup\": `${BASE_URL}/popup.json`,\n \"CopilotSidebar\": `${BASE_URL}/sidebar.json`,\n}"],"mappings":";AAcA,IAAM,WAAW;AAEV,IAAM,kBAAkB;AAAA,EAC3B,4BAA4B,GAAG,QAAQ;AAAA,EACvC,kBAAkB,GAAG,QAAQ;AAAA,EAC7B,kBAAkB;AAAA,IACd,GAAG,QAAQ;AAAA,EACf;AAAA,EAEA,oBAAoB,GAAG,QAAQ;AAAA,EAE/B,oBAAoB;AAAA,IAChB,GAAG,QAAQ;AAAA,IACX,GAAG,QAAQ;AAAA,IACX,GAAG,QAAQ;AAAA,EACf;AAAA,EAEA,oBAAoB;AAAA,IAChB,GAAG,QAAQ;AAAA,IACX,GAAG,QAAQ;AAAA,EACf;AAAA,EAEA,YAAY,GAAG,QAAQ;AAAA,EACvB,eAAe,GAAG,QAAQ;AAAA,EAC1B,gBAAgB,GAAG,QAAQ;AAAA,EAC3B,kBAAkB,GAAG,QAAQ;AACjC;","names":[]}
1
+ {"version":3,"sources":["../../../../src/lib/init/types/templates.ts"],"sourcesContent":["export type ChatTemplate = \n \"CopilotChat\" |\n \"CopilotPopup\" |\n \"CopilotSidebar\"\n\nexport type StarterTemplate = \n \"LangGraphPlatform\" |\n \"RemoteEndpoint\" |\n \"Standard\" |\n \"CrewEnterprise\" |\n \"CrewFlowsStarter\"\n\nexport type Template = ChatTemplate | StarterTemplate\n\nconst BASE_URL = \"https://registry.copilotkit.ai/r\"\n\nexport const templateMapping = {\n // Runtimes\n \"RemoteEndpoint\": `${BASE_URL}/remote-endpoint-starter.json`,\n \"LangGraphPlatformRuntime\": `${BASE_URL}/langgraph-platform-starter.json`,\n \n // CrewAI\n \"CrewEnterprise\": [\n `${BASE_URL}/coagents-crew-starter.json`,\n ], \n \"CrewFlowsStarter\": [\n `${BASE_URL}/coagents-starter-ui.json`,\n `${BASE_URL}/agent-layout.json`,\n `${BASE_URL}/remote-endpoint.json`\n ],\n \n // LangGraph\n \"LangGraphGeneric\": `${BASE_URL}/generic-lg-starter.json`,\n \"LangGraphStarter\": [\n `${BASE_URL}/langgraph-platform-starter.json`,\n `${BASE_URL}/coagents-starter-ui.json`,\n ],\n\n // No Agent\n \"StandardStarter\": `${BASE_URL}/standard-starter.json`,\n \"StandardRuntime\": `${BASE_URL}/standard-runtime.json`,\n\n // MCP\n \"McpStarter\": `${BASE_URL}/mcp-starter.json`,\n \"McpRuntime\": `${BASE_URL}/mcp-starter-runtime.json`\n}"],"mappings":";AAcA,IAAM,WAAW;AAEV,IAAM,kBAAkB;AAAA;AAAA,EAE3B,kBAAkB,GAAG,QAAQ;AAAA,EAC7B,4BAA4B,GAAG,QAAQ;AAAA;AAAA,EAGvC,kBAAkB;AAAA,IACd,GAAG,QAAQ;AAAA,EACf;AAAA,EACA,oBAAoB;AAAA,IAChB,GAAG,QAAQ;AAAA,IACX,GAAG,QAAQ;AAAA,IACX,GAAG,QAAQ;AAAA,EACf;AAAA;AAAA,EAGA,oBAAoB,GAAG,QAAQ;AAAA,EAC/B,oBAAoB;AAAA,IAChB,GAAG,QAAQ;AAAA,IACX,GAAG,QAAQ;AAAA,EACf;AAAA;AAAA,EAGA,mBAAmB,GAAG,QAAQ;AAAA,EAC9B,mBAAmB,GAAG,QAAQ;AAAA;AAAA,EAG9B,cAAc,GAAG,QAAQ;AAAA,EACzB,cAAc,GAAG,QAAQ;AAC7B;","names":[]}
@@ -5,7 +5,7 @@ declare enum RemoteEndpointType {
5
5
  MCP = "MCP",
6
6
  Invalid = "Invalid"
7
7
  }
8
- declare const getHumanReadableEndpointType: (type: RemoteEndpointType) => "LangGraph Platform" | "CopilotKit" | "CrewAI" | "MCP" | "Invalid";
8
+ declare const getHumanReadableEndpointType: (type: RemoteEndpointType) => "CopilotKit" | "CrewAI" | "MCP" | "Invalid" | "LangGraph Platform";
9
9
  declare function detectRemoteEndpointType(url: string): Promise<{
10
10
  url: string;
11
11
  type: RemoteEndpointType;
@@ -1,3 +1,3 @@
1
- declare const LIB_VERSION = "0.0.29";
1
+ declare const LIB_VERSION = "0.0.31";
2
2
 
3
3
  export { LIB_VERSION };
@@ -1,5 +1,5 @@
1
1
  // src/utils/version.ts
2
- var LIB_VERSION = "0.0.29";
2
+ var LIB_VERSION = "0.0.31";
3
3
  export {
4
4
  LIB_VERSION
5
5
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/version.ts"],"sourcesContent":["// This is auto generated!\nexport const LIB_VERSION = \"0.0.29\";\n"],"mappings":";AACO,IAAM,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../src/utils/version.ts"],"sourcesContent":["// This is auto generated!\nexport const LIB_VERSION = \"0.0.31\";\n"],"mappings":";AACO,IAAM,cAAc;","names":[]}
@@ -65,6 +65,13 @@
65
65
  "<%= config.bin %> init"
66
66
  ],
67
67
  "flags": {
68
+ "mcp": {
69
+ "description": "Scaffold a CopilotKit project with MCP",
70
+ "name": "mcp",
71
+ "hasDynamicHelp": false,
72
+ "multiple": false,
73
+ "type": "option"
74
+ },
68
75
  "copilotKitVersion": {
69
76
  "description": "CopilotKit version to use (e.g. 1.7.0)",
70
77
  "name": "copilotKitVersion",
@@ -79,7 +86,9 @@
79
86
  "multiple": false,
80
87
  "options": [
81
88
  "CrewAI",
82
- "LangGraph"
89
+ "LangGraph",
90
+ "MCP",
91
+ "None"
83
92
  ],
84
93
  "type": "option"
85
94
  },
@@ -267,5 +276,5 @@
267
276
  ]
268
277
  }
269
278
  },
270
- "version": "0.0.29"
279
+ "version": "0.0.31"
271
280
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "copilotkit",
3
3
  "description": "CopilotKit CLI",
4
- "version": "0.0.29",
4
+ "version": "0.0.31",
5
5
  "author": "CopilotKit",
6
6
  "bin": {
7
7
  "copilotkit": "./bin/run.js",