copilotkit 0.0.57 → 0.0.59

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 (66) hide show
  1. package/LICENSE +21 -0
  2. package/dist/commands/base-command.js +9 -6
  3. package/dist/commands/base-command.js.map +1 -1
  4. package/dist/commands/create.d.ts +1 -1
  5. package/dist/commands/create.js +234 -59
  6. package/dist/commands/create.js.map +1 -1
  7. package/dist/commands/dev.js +94 -35
  8. package/dist/commands/dev.js.map +1 -1
  9. package/dist/commands/init.d.ts +0 -20
  10. package/dist/commands/init.js +243 -209
  11. package/dist/commands/init.js.map +1 -1
  12. package/dist/commands/login.js +44 -20
  13. package/dist/commands/login.js.map +1 -1
  14. package/dist/commands/logout.js +44 -20
  15. package/dist/commands/logout.js.map +1 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/lib/init/ide-docs.d.ts +1 -1
  18. package/dist/lib/init/ide-docs.js +19 -5
  19. package/dist/lib/init/ide-docs.js.map +1 -1
  20. package/dist/lib/init/index.js +171 -67
  21. package/dist/lib/init/index.js.map +1 -1
  22. package/dist/lib/init/questions.d.ts +1 -1
  23. package/dist/lib/init/questions.js +77 -18
  24. package/dist/lib/init/questions.js.map +1 -1
  25. package/dist/lib/init/scaffold/agent.js +30 -23
  26. package/dist/lib/init/scaffold/agent.js.map +1 -1
  27. package/dist/lib/init/scaffold/crew-inputs.js +17 -4
  28. package/dist/lib/init/scaffold/crew-inputs.js.map +1 -1
  29. package/dist/lib/init/scaffold/env.js +14 -11
  30. package/dist/lib/init/scaffold/env.js.map +1 -1
  31. package/dist/lib/init/scaffold/github.js +27 -6
  32. package/dist/lib/init/scaffold/github.js.map +1 -1
  33. package/dist/lib/init/scaffold/index.js +152 -62
  34. package/dist/lib/init/scaffold/index.js.map +1 -1
  35. package/dist/lib/init/scaffold/langgraph-assistants.js +14 -11
  36. package/dist/lib/init/scaffold/langgraph-assistants.js.map +1 -1
  37. package/dist/lib/init/scaffold/packages.js +3 -1
  38. package/dist/lib/init/scaffold/packages.js.map +1 -1
  39. package/dist/lib/init/scaffold/shadcn.js +88 -23
  40. package/dist/lib/init/scaffold/shadcn.js.map +1 -1
  41. package/dist/lib/init/types/index.js +77 -18
  42. package/dist/lib/init/types/index.js.map +1 -1
  43. package/dist/lib/init/types/questions.d.ts +19 -19
  44. package/dist/lib/init/types/questions.js +73 -17
  45. package/dist/lib/init/types/questions.js.map +1 -1
  46. package/dist/lib/init/types/templates.d.ts +2 -2
  47. package/dist/lib/init/types/templates.js +4 -1
  48. package/dist/lib/init/types/templates.js.map +1 -1
  49. package/dist/lib/init/utils.js.map +1 -1
  50. package/dist/services/analytics.service.d.ts +1 -1
  51. package/dist/services/analytics.service.js +4 -1
  52. package/dist/services/analytics.service.js.map +1 -1
  53. package/dist/services/auth.service.d.ts +1 -1
  54. package/dist/services/auth.service.js +35 -14
  55. package/dist/services/auth.service.js.map +1 -1
  56. package/dist/services/events.d.ts +33 -33
  57. package/dist/services/tunnel.service.js.map +1 -1
  58. package/dist/utils/detect-endpoint-type.utils.d.ts +1 -1
  59. package/dist/utils/detect-endpoint-type.utils.js +11 -4
  60. package/dist/utils/detect-endpoint-type.utils.js.map +1 -1
  61. package/dist/utils/trpc.js.map +1 -1
  62. package/dist/utils/version.d.ts +1 -1
  63. package/dist/utils/version.js +1 -1
  64. package/dist/utils/version.js.map +1 -1
  65. package/oclif.manifest.json +6 -163
  66. package/package.json +8 -4
@@ -1,113 +1,113 @@
1
1
  import { RemoteEndpointType } from '../utils/detect-endpoint-type.utils.js';
2
2
 
3
3
  type AnalyticsEvents = {
4
- 'cli.login.initiated': {};
5
- 'cli.login.success': {
4
+ "cli.login.initiated": {};
5
+ "cli.login.success": {
6
6
  organizationId: string;
7
7
  userId: string;
8
8
  email: string;
9
9
  };
10
- 'cli.logout': {
10
+ "cli.logout": {
11
11
  organizationId: string;
12
12
  userId: string;
13
13
  email: string;
14
14
  };
15
- 'cli.dev.initiatied': {
15
+ "cli.dev.initiatied": {
16
16
  port: string;
17
17
  projectId: string;
18
18
  endpointType: RemoteEndpointType.LangGraphPlatform | RemoteEndpointType.CopilotKit | RemoteEndpointType.CrewAI | RemoteEndpointType.MCP;
19
19
  };
20
- 'cli.dev.tunnel.created': {
20
+ "cli.dev.tunnel.created": {
21
21
  tunnelId: string;
22
22
  port: string;
23
23
  projectId: string;
24
24
  endpointType: RemoteEndpointType.LangGraphPlatform | RemoteEndpointType.CopilotKit | RemoteEndpointType.CrewAI | RemoteEndpointType.MCP;
25
25
  };
26
- 'cli.dev.tunnel.closed': {
26
+ "cli.dev.tunnel.closed": {
27
27
  tunnelId: string;
28
28
  };
29
- 'cli.init.started': {
29
+ "cli.init.started": {
30
30
  nextjs_detected: boolean;
31
31
  flags_used?: string[];
32
32
  };
33
- 'cli.init.abc_branch_selected': {
34
- branch: 'A' | 'B' | 'C';
33
+ "cli.init.abc_branch_selected": {
34
+ branch: "A" | "B" | "C";
35
35
  };
36
- 'cli.init.branch_a_cloud_setup_completed': {
37
- branch: 'A';
36
+ "cli.init.branch_a_cloud_setup_completed": {
37
+ branch: "A";
38
38
  projectId: string;
39
39
  api_key_retrieved: boolean;
40
40
  };
41
- 'cli.init.branch_a_cloud_setup_failed': {
42
- branch: 'A';
41
+ "cli.init.branch_a_cloud_setup_failed": {
42
+ branch: "A";
43
43
  error: string;
44
44
  };
45
- 'cli.init.branch_b_api_key_setup_completed': {
46
- branch: 'B';
45
+ "cli.init.branch_b_api_key_setup_completed": {
46
+ branch: "B";
47
47
  projectId: string;
48
48
  api_key_retrieved: boolean;
49
49
  };
50
- 'cli.init.branch_b_api_key_setup_failed': {
51
- branch: 'B';
50
+ "cli.init.branch_b_api_key_setup_failed": {
51
+ branch: "B";
52
52
  error: string;
53
53
  };
54
- 'cli.init.mode_selected': {
55
- mode: 'LangGraph' | 'CrewAI' | 'Standard' | 'MCP' | 'Mastra' | 'LlamaIndex' | 'Agno' | 'AG2';
54
+ "cli.init.mode_selected": {
55
+ mode: "LangGraph" | "CrewAI" | "Standard" | "MCP" | "Mastra" | "LlamaIndex" | "Agno" | "AG2";
56
56
  cloud_setup_completed?: boolean;
57
- deployment_choice?: 'Copilot Cloud' | 'Self-hosted';
57
+ deployment_choice?: "Copilot Cloud" | "Self-hosted";
58
58
  };
59
- 'cli.init.cloud_deployment_selected': {
60
- deployment_choice?: 'Copilot Cloud' | 'Self-hosted';
61
- use_copilot_cloud?: 'Yes' | 'No';
59
+ "cli.init.cloud_deployment_selected": {
60
+ deployment_choice?: "Copilot Cloud" | "Self-hosted";
61
+ use_copilot_cloud?: "Yes" | "No";
62
62
  needs_cloud_deployment: boolean;
63
63
  mode: string;
64
64
  };
65
- 'cli.init.completed': {
65
+ "cli.init.completed": {
66
66
  mode: string;
67
67
  cloud_setup_completed: boolean;
68
68
  cloud_deployment: boolean;
69
- deployment_choice?: 'Copilot Cloud' | 'Self-hosted';
69
+ deployment_choice?: "Copilot Cloud" | "Self-hosted";
70
70
  agent_scaffolded: boolean;
71
71
  api_key_in_env: boolean;
72
72
  duration_ms: number;
73
73
  };
74
- 'cli.init.failed': {
74
+ "cli.init.failed": {
75
75
  error: string;
76
76
  step: string;
77
77
  mode?: string;
78
78
  cloud_setup_completed?: boolean;
79
79
  };
80
- 'cli.init.cloud_used': {
80
+ "cli.init.cloud_used": {
81
81
  userId: string;
82
82
  };
83
- 'cli.create.started': {
83
+ "cli.create.started": {
84
84
  framework_selected?: string;
85
85
  project_name?: string;
86
86
  flags_used?: string[];
87
87
  };
88
- 'cli.create.cloud_setup_completed': {
88
+ "cli.create.cloud_setup_completed": {
89
89
  framework: string;
90
90
  project_id: string;
91
91
  api_key_retrieved: boolean;
92
92
  };
93
- 'cli.create.cloud_setup_failed': {
93
+ "cli.create.cloud_setup_failed": {
94
94
  framework: string;
95
95
  error: string;
96
96
  };
97
- 'cli.create.project_created': {
97
+ "cli.create.project_created": {
98
98
  framework: string;
99
99
  project_name: string;
100
100
  has_api_key: boolean;
101
101
  duration_ms: number;
102
102
  };
103
- 'cli.create.completed': {
103
+ "cli.create.completed": {
104
104
  framework: string;
105
105
  project_name: string;
106
106
  cloud_setup_completed: boolean;
107
107
  api_key_configured: boolean;
108
108
  duration_ms: number;
109
109
  };
110
- 'cli.create.failed': {
110
+ "cli.create.failed": {
111
111
  framework?: string;
112
112
  project_name?: string;
113
113
  error: string;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/services/tunnel.service.ts"],"sourcesContent":["import type {Tunnel} from 'localtunnel'\n\nimport axios from 'axios'\nimport localtunnel from 'localtunnel'\n\nexport interface TunnelOptions {\n port: number\n subdomain?: string\n}\n\nexport class TunnelService {\n private readonly META_DATA_URL = 'https://metadata-cdn.copilotkit.ai/cloud.config.json'\n\n async create(options: TunnelOptions): Promise<Tunnel> {\n const metadata = await this.getMetaData()\n\n return localtunnel({\n ...options,\n host: metadata.tunnelHost,\n })\n }\n\n async getMetaData() {\n const response = await axios.get<{\n tunnelHost: string\n }>(this.META_DATA_URL)\n return response.data\n }\n}\n"],"mappings":";AAEA,OAAO,WAAW;AAClB,OAAO,iBAAiB;AAOjB,IAAM,gBAAN,MAAoB;AAAA,EACR,gBAAgB;AAAA,EAEjC,MAAM,OAAO,SAAyC;AACpD,UAAM,WAAW,MAAM,KAAK,YAAY;AAExC,WAAO,YAAY;AAAA,MACjB,GAAG;AAAA,MACH,MAAM,SAAS;AAAA,IACjB,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,cAAc;AAClB,UAAM,WAAW,MAAM,MAAM,IAE1B,KAAK,aAAa;AACrB,WAAO,SAAS;AAAA,EAClB;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/services/tunnel.service.ts"],"sourcesContent":["import type { Tunnel } from \"localtunnel\";\n\nimport axios from \"axios\";\nimport localtunnel from \"localtunnel\";\n\nexport interface TunnelOptions {\n port: number;\n subdomain?: string;\n}\n\nexport class TunnelService {\n private readonly META_DATA_URL =\n \"https://metadata-cdn.copilotkit.ai/cloud.config.json\";\n\n async create(options: TunnelOptions): Promise<Tunnel> {\n const metadata = await this.getMetaData();\n\n return localtunnel({\n ...options,\n host: metadata.tunnelHost,\n });\n }\n\n async getMetaData() {\n const response = await axios.get<{\n tunnelHost: string;\n }>(this.META_DATA_URL);\n return response.data;\n }\n}\n"],"mappings":";AAEA,OAAO,WAAW;AAClB,OAAO,iBAAiB;AAOjB,IAAM,gBAAN,MAAoB;AAAA,EACR,gBACf;AAAA,EAEF,MAAM,OAAO,SAAyC;AACpD,UAAM,WAAW,MAAM,KAAK,YAAY;AAExC,WAAO,YAAY;AAAA,MACjB,GAAG;AAAA,MACH,MAAM,SAAS;AAAA,IACjB,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,cAAc;AAClB,UAAM,WAAW,MAAM,MAAM,IAE1B,KAAK,aAAa;AACrB,WAAO,SAAS;AAAA,EAClB;AACF;","names":[]}
@@ -5,7 +5,7 @@ declare enum RemoteEndpointType {
5
5
  MCP = "MCP",
6
6
  Invalid = "Invalid"
7
7
  }
8
- declare const getHumanReadableEndpointType: (type: RemoteEndpointType) => "CopilotKit" | "CrewAI" | "MCP" | "Invalid" | "LangGraph Platform";
8
+ declare const getHumanReadableEndpointType: (type: RemoteEndpointType) => "CrewAI" | "MCP" | "CopilotKit" | "Invalid" | "LangGraph Platform";
9
9
  declare function detectRemoteEndpointType(url: string): Promise<{
10
10
  url: string;
11
11
  type: RemoteEndpointType;
@@ -23,14 +23,14 @@ var getHumanReadableEndpointType = (type) => {
23
23
  }
24
24
  };
25
25
  async function detectRemoteEndpointType(url) {
26
- const [isLangGraph, isCopilot, isCrewAI, isMCP] = await Promise.all([
26
+ const [isLangGraph, isLangGraphFastAPI, isCopilot, isCrewAI, isMCP] = await Promise.all([
27
27
  isLangGraphPlatformEndpoint(url),
28
28
  isLangGraphFastAPIEndpoint(url),
29
29
  isCopilotKitEndpoint(url),
30
30
  isCrewAIEndpoint(url),
31
31
  isMCPEndpoint(url)
32
32
  ]);
33
- if (isLangGraph) {
33
+ if (isLangGraph || isLangGraphFastAPI) {
34
34
  return {
35
35
  url,
36
36
  type: "LangGraphPlatform" /* LangGraphPlatform */,
@@ -51,6 +51,13 @@ async function detectRemoteEndpointType(url) {
51
51
  humanReadableType: "CrewAI"
52
52
  };
53
53
  }
54
+ if (isMCP) {
55
+ return {
56
+ url,
57
+ type: "MCP" /* MCP */,
58
+ humanReadableType: "MCP"
59
+ };
60
+ }
54
61
  if (!url.endsWith("/copilotkit")) {
55
62
  const copilotKitUrl = `${removeTrailingSlash(url)}/copilotkit`;
56
63
  const isCopilotWithPath = await isCopilotKitEndpoint(copilotKitUrl);
@@ -100,7 +107,7 @@ async function isLangGraphPlatformEndpoint(url, retries = 0) {
100
107
  }
101
108
  return false;
102
109
  }
103
- async function isLangGraphFastAPIEndpoint(url, retries = 0) {
110
+ async function isLangGraphFastAPIEndpoint(url) {
104
111
  let response;
105
112
  try {
106
113
  response = await fetch(`${url}/health`, {
@@ -139,7 +146,7 @@ async function isCopilotKitEndpoint(url, retries = 0) {
139
146
  async function isCrewAIEndpoint(url) {
140
147
  return url.toLowerCase().includes("crew");
141
148
  }
142
- async function isMCPEndpoint(url) {
149
+ async function isMCPEndpoint(_url) {
143
150
  return true;
144
151
  }
145
152
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/detect-endpoint-type.utils.ts"],"sourcesContent":["export enum RemoteEndpointType {\n LangGraphPlatform = 'LangGraphPlatform',\n CopilotKit = 'CopilotKit',\n CrewAI = 'CrewAI',\n MCP = 'MCP',\n Invalid = 'Invalid',\n}\n\nconst removeTrailingSlash = (url: string) => url.replace(/\\/$/, '')\n\nexport const getHumanReadableEndpointType = (type: RemoteEndpointType) => {\n switch (type) {\n case RemoteEndpointType.LangGraphPlatform:\n return 'LangGraph Platform'\n case RemoteEndpointType.CopilotKit:\n return 'CopilotKit'\n case RemoteEndpointType.CrewAI:\n return 'CrewAI'\n case RemoteEndpointType.MCP:\n return 'MCP'\n default:\n return 'Invalid'\n }\n}\n\nexport async function detectRemoteEndpointType(url: string): Promise<{\n url: string\n type: RemoteEndpointType\n humanReadableType: string\n}> {\n // First check base URL\n const [isLangGraph, isCopilot, isCrewAI, isMCP] = await Promise.all([\n isLangGraphPlatformEndpoint(url),\n isLangGraphFastAPIEndpoint(url),\n isCopilotKitEndpoint(url),\n isCrewAIEndpoint(url),\n isMCPEndpoint(url),\n ])\n\n // Check base endpoints first\n if (isLangGraph) {\n return {\n url,\n type: RemoteEndpointType.LangGraphPlatform,\n humanReadableType: 'LangGraph Platform',\n }\n }\n\n if (isCopilot) {\n return {\n url,\n type: RemoteEndpointType.CopilotKit,\n humanReadableType: 'CopilotKit',\n }\n }\n\n if (isCrewAI) {\n return {\n url,\n type: RemoteEndpointType.CrewAI,\n humanReadableType: 'CrewAI',\n }\n }\n\n // If no match and URL doesn't already end with /copilotkit, try that path\n if (!url.endsWith('/copilotkit')) {\n const copilotKitUrl = `${removeTrailingSlash(url)}/copilotkit`\n const isCopilotWithPath = await isCopilotKitEndpoint(copilotKitUrl)\n\n if (isCopilotWithPath) {\n return {\n url: copilotKitUrl,\n type: RemoteEndpointType.CopilotKit,\n humanReadableType: 'CopilotKit',\n }\n }\n }\n\n return {\n url,\n type: RemoteEndpointType.Invalid,\n humanReadableType: 'Invalid',\n }\n}\n\nasync function isLangGraphPlatformEndpoint(url: string, retries: number = 0): Promise<boolean> {\n let response\n\n try {\n response = await fetch(`${url}/assistants/search`, {\n method: 'POST',\n\n body: JSON.stringify({\n metadata: {},\n limit: 99,\n offset: 0,\n }),\n })\n } catch (error) {\n return false\n }\n\n if (!response.ok) {\n if (response.status === 502) {\n if (retries < 3) {\n console.log('RETRYING LGC', retries + 1)\n return isLangGraphPlatformEndpoint(url, retries + 1)\n }\n }\n\n if (response.status === 403) {\n return true\n }\n\n return false\n }\n\n const data = await response.json()\n\n if (data[0].assistant_id) {\n return true\n }\n\n return false\n}\n\nasync function isLangGraphFastAPIEndpoint(url: string, retries: number = 0): Promise<boolean> {\n let response\n\n try {\n response = await fetch(`${url}/health`, {\n method: 'GET',\n })\n } catch (error) {\n return false\n }\n\n return response.ok\n}\n\nasync function isCopilotKitEndpoint(url: string, retries: number = 0): Promise<boolean> {\n let response\n\n try {\n response = await fetch(`${url}/info`, {\n method: 'POST',\n body: JSON.stringify({}),\n })\n } catch (error) {\n return false\n }\n\n if (!response.ok) {\n if (response.status === 502) {\n if (retries < 3) {\n console.log('RETRYING CK', retries + 1)\n return isCopilotKitEndpoint(url, retries + 1)\n }\n }\n\n return false\n }\n\n const data = await response.json()\n\n if (data.agents && data.actions) {\n return true\n }\n\n return false\n}\n\nasync function isCrewAIEndpoint(url: string): Promise<boolean> {\n return url.toLowerCase().includes('crew')\n}\n\nasync function isMCPEndpoint(url: string): Promise<boolean> {\n return true\n}\n"],"mappings":"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","names":["RemoteEndpointType"]}
1
+ {"version":3,"sources":["../../src/utils/detect-endpoint-type.utils.ts"],"sourcesContent":["export enum RemoteEndpointType {\n LangGraphPlatform = \"LangGraphPlatform\",\n CopilotKit = \"CopilotKit\",\n CrewAI = \"CrewAI\",\n MCP = \"MCP\",\n Invalid = \"Invalid\",\n}\n\nconst removeTrailingSlash = (url: string) => url.replace(/\\/$/, \"\");\n\nexport const getHumanReadableEndpointType = (type: RemoteEndpointType) => {\n switch (type) {\n case RemoteEndpointType.LangGraphPlatform:\n return \"LangGraph Platform\";\n case RemoteEndpointType.CopilotKit:\n return \"CopilotKit\";\n case RemoteEndpointType.CrewAI:\n return \"CrewAI\";\n case RemoteEndpointType.MCP:\n return \"MCP\";\n default:\n return \"Invalid\";\n }\n};\n\nexport async function detectRemoteEndpointType(url: string): Promise<{\n url: string;\n type: RemoteEndpointType;\n humanReadableType: string;\n}> {\n // First check base URL\n const [isLangGraph, isLangGraphFastAPI, isCopilot, isCrewAI, isMCP] =\n await Promise.all([\n isLangGraphPlatformEndpoint(url),\n isLangGraphFastAPIEndpoint(url),\n isCopilotKitEndpoint(url),\n isCrewAIEndpoint(url),\n isMCPEndpoint(url),\n ]);\n\n // Check base endpoints first\n if (isLangGraph || isLangGraphFastAPI) {\n return {\n url,\n type: RemoteEndpointType.LangGraphPlatform,\n humanReadableType: \"LangGraph Platform\",\n };\n }\n\n if (isCopilot) {\n return {\n url,\n type: RemoteEndpointType.CopilotKit,\n humanReadableType: \"CopilotKit\",\n };\n }\n\n if (isCrewAI) {\n return {\n url,\n type: RemoteEndpointType.CrewAI,\n humanReadableType: \"CrewAI\",\n };\n }\n\n if (isMCP) {\n return {\n url,\n type: RemoteEndpointType.MCP,\n humanReadableType: \"MCP\",\n };\n }\n\n // If no match and URL doesn't already end with /copilotkit, try that path\n if (!url.endsWith(\"/copilotkit\")) {\n const copilotKitUrl = `${removeTrailingSlash(url)}/copilotkit`;\n const isCopilotWithPath = await isCopilotKitEndpoint(copilotKitUrl);\n\n if (isCopilotWithPath) {\n return {\n url: copilotKitUrl,\n type: RemoteEndpointType.CopilotKit,\n humanReadableType: \"CopilotKit\",\n };\n }\n }\n\n return {\n url,\n type: RemoteEndpointType.Invalid,\n humanReadableType: \"Invalid\",\n };\n}\n\nasync function isLangGraphPlatformEndpoint(\n url: string,\n retries: number = 0,\n): Promise<boolean> {\n let response;\n\n try {\n response = await fetch(`${url}/assistants/search`, {\n method: \"POST\",\n\n body: JSON.stringify({\n metadata: {},\n limit: 99,\n offset: 0,\n }),\n });\n } catch (error) {\n return false;\n }\n\n if (!response.ok) {\n if (response.status === 502) {\n if (retries < 3) {\n console.log(\"RETRYING LGC\", retries + 1);\n return isLangGraphPlatformEndpoint(url, retries + 1);\n }\n }\n\n if (response.status === 403) {\n return true;\n }\n\n return false;\n }\n\n const data = await response.json();\n\n if (data[0].assistant_id) {\n return true;\n }\n\n return false;\n}\n\nasync function isLangGraphFastAPIEndpoint(url: string): Promise<boolean> {\n let response;\n\n try {\n response = await fetch(`${url}/health`, {\n method: \"GET\",\n });\n } catch (error) {\n return false;\n }\n\n return response.ok;\n}\n\nasync function isCopilotKitEndpoint(\n url: string,\n retries: number = 0,\n): Promise<boolean> {\n let response;\n\n try {\n response = await fetch(`${url}/info`, {\n method: \"POST\",\n body: JSON.stringify({}),\n });\n } catch (error) {\n return false;\n }\n\n if (!response.ok) {\n if (response.status === 502) {\n if (retries < 3) {\n console.log(\"RETRYING CK\", retries + 1);\n return isCopilotKitEndpoint(url, retries + 1);\n }\n }\n\n return false;\n }\n\n const data = await response.json();\n\n if (data.agents && data.actions) {\n return true;\n }\n\n return false;\n}\n\nasync function isCrewAIEndpoint(url: string): Promise<boolean> {\n return url.toLowerCase().includes(\"crew\");\n}\n\nasync function isMCPEndpoint(_url: string): Promise<boolean> {\n return true;\n}\n"],"mappings":"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","names":["RemoteEndpointType"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/trpc.ts"],"sourcesContent":["import {createTRPCClient as trpcClient, httpBatchLink} from '@trpc/client'\nimport superjson from 'superjson'\n\nexport const COPILOT_CLOUD_BASE_URL = process.env.COPILOT_CLOUD_BASE_URL || 'https://cloud.copilotkit.ai'\n\nexport function createTRPCClient(cliToken: string): any {\n return trpcClient({\n links: [\n httpBatchLink({\n url: `${COPILOT_CLOUD_BASE_URL}/api/trpc-cli`,\n transformer: superjson,\n headers: () => {\n return {\n 'x-trpc-source': 'cli',\n 'x-cli-token': cliToken,\n }\n },\n }),\n ],\n })\n}\n"],"mappings":";AAAA,SAAQ,oBAAoB,YAAY,qBAAoB;AAC5D,OAAO,eAAe;AAEf,IAAM,yBAAyB,QAAQ,IAAI,0BAA0B;AAErE,SAAS,iBAAiB,UAAuB;AACtD,SAAO,WAAW;AAAA,IAChB,OAAO;AAAA,MACL,cAAc;AAAA,QACZ,KAAK,GAAG,sBAAsB;AAAA,QAC9B,aAAa;AAAA,QACb,SAAS,MAAM;AACb,iBAAO;AAAA,YACL,iBAAiB;AAAA,YACjB,eAAe;AAAA,UACjB;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../src/utils/trpc.ts"],"sourcesContent":["import { createTRPCClient as trpcClient, httpBatchLink } from \"@trpc/client\";\nimport superjson from \"superjson\";\n\nexport const COPILOT_CLOUD_BASE_URL =\n process.env.COPILOT_CLOUD_BASE_URL || \"https://cloud.copilotkit.ai\";\n\nexport function createTRPCClient(cliToken: string): any {\n return trpcClient({\n links: [\n httpBatchLink({\n url: `${COPILOT_CLOUD_BASE_URL}/api/trpc-cli`,\n transformer: superjson,\n headers: () => {\n return {\n \"x-trpc-source\": \"cli\",\n \"x-cli-token\": cliToken,\n };\n },\n }),\n ],\n });\n}\n"],"mappings":";AAAA,SAAS,oBAAoB,YAAY,qBAAqB;AAC9D,OAAO,eAAe;AAEf,IAAM,yBACX,QAAQ,IAAI,0BAA0B;AAEjC,SAAS,iBAAiB,UAAuB;AACtD,SAAO,WAAW;AAAA,IAChB,OAAO;AAAA,MACL,cAAc;AAAA,QACZ,KAAK,GAAG,sBAAsB;AAAA,QAC9B,aAAa;AAAA,QACb,SAAS,MAAM;AACb,iBAAO;AAAA,YACL,iBAAiB;AAAA,YACjB,eAAe;AAAA,UACjB;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -1,3 +1,3 @@
1
- declare const LIB_VERSION = "0.0.57";
1
+ declare const LIB_VERSION = "0.0.59";
2
2
 
3
3
  export { LIB_VERSION };
@@ -1,5 +1,5 @@
1
1
  // src/utils/version.ts
2
- var LIB_VERSION = "0.0.57";
2
+ var LIB_VERSION = "0.0.59";
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.57\";\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.59\";\n"],"mappings":";AACO,IAAM,cAAc;","names":[]}
@@ -55,7 +55,8 @@
55
55
  "aws-strands-py",
56
56
  "a2a",
57
57
  "microsoft-agent-framework-dotnet",
58
- "microsoft-agent-framework-py"
58
+ "microsoft-agent-framework-py",
59
+ "mcp-apps"
59
60
  ],
60
61
  "type": "option"
61
62
  },
@@ -139,169 +140,11 @@
139
140
  "init": {
140
141
  "aliases": [],
141
142
  "args": {},
142
- "description": "Set up CopilotKit in your Next.js project, or create a new project if none exists",
143
+ "description": "`init` is deprecated use `create` instead.",
143
144
  "examples": [
144
- "<%= config.bin %> init",
145
- "<%= config.bin %> init --dir ./my-app"
145
+ "<%= config.bin %> create"
146
146
  ],
147
- "flags": {
148
- "booth": {
149
- "char": "b",
150
- "description": "Use CopilotKit in booth mode",
151
- "name": "booth",
152
- "allowNo": false,
153
- "type": "boolean"
154
- },
155
- "mode": {
156
- "char": "m",
157
- "description": "How you will be interacting with AI",
158
- "name": "mode",
159
- "hasDynamicHelp": false,
160
- "multiple": false,
161
- "options": [
162
- "LangGraph",
163
- "CrewAI",
164
- "Mastra",
165
- "LlamaIndex",
166
- "Agno",
167
- "AG2",
168
- "MCP",
169
- "Standard"
170
- ],
171
- "type": "option"
172
- },
173
- "copilotkit-version": {
174
- "description": "CopilotKit version to use (e.g. 1.7.0)",
175
- "name": "copilotkit-version",
176
- "hasDynamicHelp": false,
177
- "multiple": false,
178
- "type": "option"
179
- },
180
- "use-copilot-cloud": {
181
- "description": "Use Copilot Cloud for production-ready hosting",
182
- "name": "use-copilot-cloud",
183
- "hasDynamicHelp": false,
184
- "multiple": false,
185
- "options": [
186
- "Yes",
187
- "No"
188
- ],
189
- "type": "option"
190
- },
191
- "langgraph-agent": {
192
- "description": "LangGraph agent template to use",
193
- "name": "langgraph-agent",
194
- "hasDynamicHelp": false,
195
- "multiple": false,
196
- "options": [
197
- "Python Starter",
198
- "TypeScript Starter"
199
- ],
200
- "type": "option"
201
- },
202
- "crew-type": {
203
- "description": "CrewAI implementation type",
204
- "name": "crew-type",
205
- "hasDynamicHelp": false,
206
- "multiple": false,
207
- "options": [
208
- "Crews",
209
- "Flows"
210
- ],
211
- "type": "option"
212
- },
213
- "crew-name": {
214
- "description": "Name for your CrewAI agent",
215
- "name": "crew-name",
216
- "hasDynamicHelp": false,
217
- "multiple": false,
218
- "type": "option"
219
- },
220
- "crew-url": {
221
- "description": "URL endpoint for your CrewAI agent",
222
- "name": "crew-url",
223
- "hasDynamicHelp": false,
224
- "multiple": false,
225
- "type": "option"
226
- },
227
- "crew-bearer-token": {
228
- "description": "Bearer token for CrewAI authentication",
229
- "name": "crew-bearer-token",
230
- "hasDynamicHelp": false,
231
- "multiple": false,
232
- "type": "option"
233
- },
234
- "langsmith-api-key": {
235
- "description": "LangSmith API key for LangGraph observability",
236
- "name": "langsmith-api-key",
237
- "hasDynamicHelp": false,
238
- "multiple": false,
239
- "type": "option"
240
- },
241
- "llm-token": {
242
- "description": "API key for your preferred LLM provider",
243
- "name": "llm-token",
244
- "hasDynamicHelp": false,
245
- "multiple": false,
246
- "type": "option"
247
- },
248
- "setup-ide-docs": {
249
- "description": "Setup IDE documentation rules for AI assistance",
250
- "name": "setup-ide-docs",
251
- "hasDynamicHelp": false,
252
- "multiple": false,
253
- "options": [
254
- "Yes",
255
- "No"
256
- ],
257
- "type": "option"
258
- },
259
- "selected-ide": {
260
- "description": "IDE to configure with documentation rules",
261
- "name": "selected-ide",
262
- "hasDynamicHelp": false,
263
- "multiple": false,
264
- "options": [
265
- "cursor",
266
- "windsurf",
267
- "skip"
268
- ],
269
- "type": "option"
270
- },
271
- "deployment-choice": {
272
- "description": "Choose between Copilot Cloud or Self-hosted deployment",
273
- "name": "deployment-choice",
274
- "hasDynamicHelp": false,
275
- "multiple": false,
276
- "options": [
277
- "Copilot Cloud",
278
- "Self-hosted"
279
- ],
280
- "type": "option"
281
- },
282
- "runtimeUrl": {
283
- "description": "runtime URL",
284
- "name": "runtimeUrl",
285
- "hasDynamicHelp": false,
286
- "multiple": false,
287
- "type": "option"
288
- },
289
- "project": {
290
- "description": "project ID (can be found in the Copilot Cloud dashboard)",
291
- "name": "project",
292
- "hasDynamicHelp": false,
293
- "multiple": false,
294
- "type": "option"
295
- },
296
- "dir": {
297
- "description": "directory of the Next.js project",
298
- "name": "dir",
299
- "default": ".",
300
- "hasDynamicHelp": false,
301
- "multiple": false,
302
- "type": "option"
303
- }
304
- },
147
+ "flags": {},
305
148
  "hasDynamicHelp": false,
306
149
  "hiddenAliases": [],
307
150
  "id": "init",
@@ -361,5 +204,5 @@
361
204
  ]
362
205
  }
363
206
  },
364
- "version": "0.0.57"
207
+ "version": "0.0.59"
365
208
  }
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "copilotkit",
3
3
  "description": "CopilotKit CLI",
4
- "version": "0.0.57",
4
+ "version": "0.0.59",
5
5
  "author": "CopilotKit",
6
6
  "bin": {
7
7
  "copilotkit": "./bin/run.js",
8
8
  "cpk": "./bin/run.js"
9
9
  },
10
- "bugs": "https://github.com/copilotkit/cli/issues",
10
+ "bugs": "https://github.com/CopilotKit/CopilotKit/issues",
11
11
  "dependencies": {
12
12
  "@oclif/core": "^4.2.0",
13
13
  "@paralleldrive/cuid2": "^2.2.2",
@@ -74,7 +74,7 @@
74
74
  "/dist",
75
75
  "/oclif.manifest.json"
76
76
  ],
77
- "homepage": "https://github.com/copilotkit/cli",
77
+ "homepage": "https://github.com/CopilotKit/CopilotKit/tree/main/packages/v1/cli",
78
78
  "keywords": [
79
79
  "oclif"
80
80
  ],
@@ -95,7 +95,11 @@
95
95
  }
96
96
  }
97
97
  },
98
- "repository": "https://github.com/copilotkit/cli",
98
+ "repository": {
99
+ "type": "git",
100
+ "url": "https://github.com/CopilotKit/CopilotKit.git",
101
+ "directory": "packages/v1/cli"
102
+ },
99
103
  "types": "dist/index.d.ts",
100
104
  "publishConfig": {
101
105
  "access": "public"