copilotkit 1.54.0 → 2.0.0
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.
- package/index.js +89779 -0
- package/package.json +4 -114
- package/src/commands/docs.d.ts +17 -0
- package/src/commands/docs.d.ts.map +1 -0
- package/src/commands/init.d.ts +103 -0
- package/src/commands/init.d.ts.map +1 -0
- package/src/commands/kite.d.ts +8 -0
- package/src/commands/kite.d.ts.map +1 -0
- package/src/commands/license.d.ts +17 -0
- package/src/commands/license.d.ts.map +1 -0
- package/src/commands/login.d.ts +13 -0
- package/src/commands/login.d.ts.map +1 -0
- package/src/commands/logs.d.ts +32 -0
- package/src/commands/logs.d.ts.map +1 -0
- package/src/commands/version.d.ts +8 -0
- package/src/commands/version.d.ts.map +1 -0
- package/src/config.d.ts +31 -0
- package/src/config.d.ts.map +1 -0
- package/src/index.d.ts +21 -0
- package/src/index.d.ts.map +1 -0
- package/src/services/api-client.d.ts +106 -0
- package/src/services/api-client.d.ts.map +1 -0
- package/src/services/auth.service.d.ts +107 -0
- package/src/services/auth.service.d.ts.map +1 -0
- package/src/services/cli-auth-diagnostics.d.ts +71 -0
- package/src/services/cli-auth-diagnostics.d.ts.map +1 -0
- package/src/services/cli-logs.d.ts +45 -0
- package/src/services/cli-logs.d.ts.map +1 -0
- package/src/services/config.service.d.ts +53 -0
- package/src/services/config.service.d.ts.map +1 -0
- package/src/services/feature-flags.d.ts +14 -0
- package/src/services/feature-flags.d.ts.map +1 -0
- package/src/services/kite-game-engine.d.ts +99 -0
- package/src/services/kite-game-engine.d.ts.map +1 -0
- package/src/services/kite-game-score.d.ts +33 -0
- package/src/services/kite-game-score.d.ts.map +1 -0
- package/src/services/project-scaffold.d.ts +49 -0
- package/src/services/project-scaffold.d.ts.map +1 -0
- package/src/types.d.ts +205 -0
- package/src/types.d.ts.map +1 -0
- package/src/ui/banner.d.ts +3 -0
- package/src/ui/banner.d.ts.map +1 -0
- package/src/ui/browser-login.d.ts +71 -0
- package/src/ui/browser-login.d.ts.map +1 -0
- package/src/ui/init-flow.d.ts +35 -0
- package/src/ui/init-flow.d.ts.map +1 -0
- package/src/ui/kite-game.d.ts +26 -0
- package/src/ui/kite-game.d.ts.map +1 -0
- package/src/ui/login-flow.d.ts +22 -0
- package/src/ui/login-flow.d.ts.map +1 -0
- package/src/ui/spinner.d.ts +9 -0
- package/src/ui/spinner.d.ts.map +1 -0
- package/LICENSE +0 -21
- package/README.md +0 -83
- package/bin/dev.cmd +0 -3
- package/bin/dev.js +0 -8
- package/bin/run.cmd +0 -3
- package/bin/run.js +0 -17
- package/dist/commands/base-command.d.ts +0 -12
- package/dist/commands/base-command.js +0 -65
- package/dist/commands/base-command.js.map +0 -1
- package/dist/commands/create.d.ts +0 -24
- package/dist/commands/create.js +0 -507
- package/dist/commands/create.js.map +0 -1
- package/dist/commands/dev.d.ts +0 -25
- package/dist/commands/dev.js +0 -776
- package/dist/commands/dev.js.map +0 -1
- package/dist/commands/init.d.ts +0 -11
- package/dist/commands/init.js +0 -523
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/login.d.ts +0 -13
- package/dist/commands/login.js +0 -374
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/logout.d.ts +0 -13
- package/dist/commands/logout.js +0 -375
- package/dist/commands/logout.js.map +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -6
- package/dist/index.js.map +0 -1
- package/dist/lib/init/ide-docs.d.ts +0 -25
- package/dist/lib/init/ide-docs.js +0 -170
- package/dist/lib/init/ide-docs.js.map +0 -1
- package/dist/lib/init/index.d.ts +0 -14
- package/dist/lib/init/index.js +0 -1104
- package/dist/lib/init/index.js.map +0 -1
- package/dist/lib/init/questions.d.ts +0 -9
- package/dist/lib/init/questions.js +0 -508
- package/dist/lib/init/questions.js.map +0 -1
- package/dist/lib/init/scaffold/agent.d.ts +0 -20
- package/dist/lib/init/scaffold/agent.js +0 -173
- package/dist/lib/init/scaffold/agent.js.map +0 -1
- package/dist/lib/init/scaffold/crew-inputs.d.ts +0 -3
- package/dist/lib/init/scaffold/crew-inputs.js +0 -59
- package/dist/lib/init/scaffold/crew-inputs.js.map +0 -1
- package/dist/lib/init/scaffold/env.d.ts +0 -7
- package/dist/lib/init/scaffold/env.js +0 -124
- package/dist/lib/init/scaffold/env.js.map +0 -1
- package/dist/lib/init/scaffold/github.d.ts +0 -17
- package/dist/lib/init/scaffold/github.js +0 -114
- package/dist/lib/init/scaffold/github.js.map +0 -1
- package/dist/lib/init/scaffold/index.d.ts +0 -10
- package/dist/lib/init/scaffold/index.js +0 -690
- package/dist/lib/init/scaffold/index.js.map +0 -1
- package/dist/lib/init/scaffold/langgraph-assistants.d.ts +0 -18
- package/dist/lib/init/scaffold/langgraph-assistants.js +0 -26
- package/dist/lib/init/scaffold/langgraph-assistants.js.map +0 -1
- package/dist/lib/init/scaffold/packages.d.ts +0 -7
- package/dist/lib/init/scaffold/packages.js +0 -62
- package/dist/lib/init/scaffold/packages.js.map +0 -1
- package/dist/lib/init/scaffold/shadcn.d.ts +0 -7
- package/dist/lib/init/scaffold/shadcn.js +0 -279
- package/dist/lib/init/scaffold/shadcn.js.map +0 -1
- package/dist/lib/init/types/index.d.ts +0 -4
- package/dist/lib/init/types/index.js +0 -238
- package/dist/lib/init/types/index.js.map +0 -1
- package/dist/lib/init/types/questions.d.ts +0 -209
- package/dist/lib/init/types/questions.js +0 -214
- package/dist/lib/init/types/questions.js.map +0 -1
- package/dist/lib/init/types/templates.d.ts +0 -17
- package/dist/lib/init/types/templates.js +0 -26
- package/dist/lib/init/types/templates.js.map +0 -1
- package/dist/lib/init/utils.d.ts +0 -3
- package/dist/lib/init/utils.js +0 -8
- package/dist/lib/init/utils.js.map +0 -1
- package/dist/services/analytics.service.d.ts +0 -38
- package/dist/services/analytics.service.js +0 -134
- package/dist/services/analytics.service.js.map +0 -1
- package/dist/services/auth.service.d.ts +0 -26
- package/dist/services/auth.service.js +0 -299
- package/dist/services/auth.service.js.map +0 -1
- package/dist/services/events.d.ts +0 -119
- package/dist/services/events.js +0 -1
- package/dist/services/events.js.map +0 -1
- package/dist/services/tunnel.service.d.ts +0 -15
- package/dist/services/tunnel.service.js +0 -21
- package/dist/services/tunnel.service.js.map +0 -1
- package/dist/utils/detect-endpoint-type.utils.d.ts +0 -15
- package/dist/utils/detect-endpoint-type.utils.js +0 -157
- package/dist/utils/detect-endpoint-type.utils.js.map +0 -1
- package/dist/utils/trpc.d.ts +0 -4
- package/dist/utils/trpc.js +0 -25
- package/dist/utils/trpc.js.map +0 -1
- package/dist/utils/version.d.ts +0 -3
- package/dist/utils/version.js +0 -6
- package/dist/utils/version.js.map +0 -1
- package/oclif.manifest.json +0 -208
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
// src/lib/init/types/questions.ts
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
import { Flags } from "@oclif/core";
|
|
4
|
-
|
|
5
|
-
// src/lib/init/utils.ts
|
|
6
|
-
var isLocalhost = (url) => {
|
|
7
|
-
return url.includes("localhost") || url.includes("127.0.0.1") || url.includes("0.0.0.0");
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
// src/lib/init/types/questions.ts
|
|
11
|
-
var MODES = [
|
|
12
|
-
"LangGraph",
|
|
13
|
-
"CrewAI",
|
|
14
|
-
"Mastra",
|
|
15
|
-
"LlamaIndex",
|
|
16
|
-
"Agno",
|
|
17
|
-
"AG2",
|
|
18
|
-
"MCP",
|
|
19
|
-
"Standard"
|
|
20
|
-
];
|
|
21
|
-
var CREW_TYPES = ["Crews", "Flows"];
|
|
22
|
-
var CHAT_COMPONENTS = [
|
|
23
|
-
"CopilotChat",
|
|
24
|
-
"CopilotSidebar",
|
|
25
|
-
"Headless",
|
|
26
|
-
"CopilotPopup"
|
|
27
|
-
];
|
|
28
|
-
var LANGGRAPH_AGENTS = [
|
|
29
|
-
"Python Starter",
|
|
30
|
-
"TypeScript Starter"
|
|
31
|
-
];
|
|
32
|
-
var CREW_FLOW_TEMPLATES = ["Starter"];
|
|
33
|
-
var YES_NO = ["Yes", "No"];
|
|
34
|
-
var DEPLOYMENT_CHOICES = ["Copilot Cloud", "Self-hosted"];
|
|
35
|
-
var sanitizers = {
|
|
36
|
-
// Remove trailing slash from URLs
|
|
37
|
-
url: (value) => {
|
|
38
|
-
if (!value) return value;
|
|
39
|
-
return value.trim().replace(/\/+$/, "");
|
|
40
|
-
},
|
|
41
|
-
// Trim whitespace from strings
|
|
42
|
-
trim: (value) => {
|
|
43
|
-
if (!value) return value;
|
|
44
|
-
return value.trim();
|
|
45
|
-
},
|
|
46
|
-
// Lowercase strings
|
|
47
|
-
lowercase: (value) => {
|
|
48
|
-
if (!value) return value;
|
|
49
|
-
return value.toLowerCase().trim();
|
|
50
|
-
},
|
|
51
|
-
// Clean API keys (remove whitespace)
|
|
52
|
-
apiKey: (value) => {
|
|
53
|
-
if (!value) return value;
|
|
54
|
-
return value.trim().replace(/\s/g, "");
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
var ModeSchema = z.enum(MODES);
|
|
58
|
-
var CrewTypeSchema = z.enum(CREW_TYPES);
|
|
59
|
-
var ChatComponentSchema = z.enum(CHAT_COMPONENTS);
|
|
60
|
-
var LangGraphAgentSchema = z.enum(LANGGRAPH_AGENTS);
|
|
61
|
-
var CrewFlowTemplateSchema = z.enum(CREW_FLOW_TEMPLATES);
|
|
62
|
-
var YesNoSchema = z.enum(YES_NO);
|
|
63
|
-
var DeploymentChoiceSchema = z.enum(DEPLOYMENT_CHOICES);
|
|
64
|
-
var UrlSchema = z.preprocess(
|
|
65
|
-
(val) => sanitizers.url(String(val)),
|
|
66
|
-
z.string().url("Please enter a valid URL").min(1, "URL is required")
|
|
67
|
-
);
|
|
68
|
-
var TokenSchema = z.preprocess(
|
|
69
|
-
(val) => sanitizers.trim(String(val)),
|
|
70
|
-
z.string().min(1, "Token is required")
|
|
71
|
-
);
|
|
72
|
-
var ApiKeySchema = z.preprocess(
|
|
73
|
-
(val) => sanitizers.apiKey(String(val)),
|
|
74
|
-
z.string().min(1, "API key is required")
|
|
75
|
-
);
|
|
76
|
-
var LLMApiKeySchema = z.preprocess(
|
|
77
|
-
(val) => sanitizers.apiKey(String(val)),
|
|
78
|
-
z.string().optional()
|
|
79
|
-
);
|
|
80
|
-
var NameSchema = z.preprocess(
|
|
81
|
-
(val) => sanitizers.trim(String(val)),
|
|
82
|
-
z.string().min(1, "Name is required")
|
|
83
|
-
);
|
|
84
|
-
var ConfigSchema = z.object({
|
|
85
|
-
// Core fields
|
|
86
|
-
copilotKitVersion: z.string().optional(),
|
|
87
|
-
mode: ModeSchema,
|
|
88
|
-
chatUi: ChatComponentSchema.optional(),
|
|
89
|
-
// Yes/No fields
|
|
90
|
-
alreadyDeployed: YesNoSchema.optional(),
|
|
91
|
-
fastApiEnabled: YesNoSchema.optional(),
|
|
92
|
-
// DEPRECATED: useCopilotCloud - consolidated with signupForCopilotCloud
|
|
93
|
-
useCopilotCloud: YesNoSchema.optional(),
|
|
94
|
-
// LangGraph specific fields
|
|
95
|
-
langGraphAgent: LangGraphAgentSchema.optional(),
|
|
96
|
-
langGraphPlatform: YesNoSchema.optional(),
|
|
97
|
-
langGraphPlatformUrl: UrlSchema.optional(),
|
|
98
|
-
langGraphRemoteEndpointURL: UrlSchema.optional(),
|
|
99
|
-
// CrewAI specific fields
|
|
100
|
-
crewType: CrewTypeSchema.optional(),
|
|
101
|
-
crewName: NameSchema.optional(),
|
|
102
|
-
crewUrl: UrlSchema.optional(),
|
|
103
|
-
crewBearerToken: TokenSchema.optional(),
|
|
104
|
-
// API keys and tokens
|
|
105
|
-
copilotCloudPublicApiKey: z.string().optional(),
|
|
106
|
-
langSmithApiKey: ApiKeySchema.optional(),
|
|
107
|
-
llmToken: LLMApiKeySchema.optional(),
|
|
108
|
-
// IDE Documentation setup fields
|
|
109
|
-
setupIDEDocs: YesNoSchema.optional(),
|
|
110
|
-
selectedIDE: z.union([z.enum(["cursor", "windsurf"]), z.literal("skip")]).optional(),
|
|
111
|
-
// NEW: A/B/C test fields
|
|
112
|
-
deploymentChoice: DeploymentChoiceSchema.optional()
|
|
113
|
-
// For branch B only (Cloud vs Self-hosted)
|
|
114
|
-
}).refine(
|
|
115
|
-
(data) => {
|
|
116
|
-
if (data.mode === "CrewAI") {
|
|
117
|
-
return !!data.crewUrl && !!data.crewBearerToken;
|
|
118
|
-
}
|
|
119
|
-
return true;
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
message: "Crew URL and bearer token are required for CrewAI",
|
|
123
|
-
path: ["crewUrl", "crewBearerToken"]
|
|
124
|
-
}
|
|
125
|
-
).refine(
|
|
126
|
-
(data) => {
|
|
127
|
-
if (data.mode === "LangGraph" && data.alreadyDeployed === "Yes" && data.langGraphPlatform === "Yes") {
|
|
128
|
-
return !!data.langGraphPlatformUrl && !!data.langSmithApiKey || isLocalhost(data.langGraphPlatformUrl || "");
|
|
129
|
-
}
|
|
130
|
-
return true;
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
message: "LangGraph Platform URL and LangSmith API key are required",
|
|
134
|
-
path: ["langGraphPlatformUrl", "langSmithApiKey"]
|
|
135
|
-
}
|
|
136
|
-
);
|
|
137
|
-
var ConfigFlags = {
|
|
138
|
-
booth: Flags.boolean({
|
|
139
|
-
description: "Use CopilotKit in booth mode",
|
|
140
|
-
default: false,
|
|
141
|
-
char: "b"
|
|
142
|
-
}),
|
|
143
|
-
mode: Flags.string({
|
|
144
|
-
description: "How you will be interacting with AI",
|
|
145
|
-
options: MODES,
|
|
146
|
-
char: "m"
|
|
147
|
-
}),
|
|
148
|
-
"copilotkit-version": Flags.string({
|
|
149
|
-
description: "CopilotKit version to use (e.g. 1.7.0)"
|
|
150
|
-
}),
|
|
151
|
-
"use-copilot-cloud": Flags.string({
|
|
152
|
-
description: "Use Copilot Cloud for production-ready hosting",
|
|
153
|
-
options: YES_NO
|
|
154
|
-
}),
|
|
155
|
-
"langgraph-agent": Flags.string({
|
|
156
|
-
description: "LangGraph agent template to use",
|
|
157
|
-
options: LANGGRAPH_AGENTS
|
|
158
|
-
}),
|
|
159
|
-
"crew-type": Flags.string({
|
|
160
|
-
description: "CrewAI implementation type",
|
|
161
|
-
options: CREW_TYPES
|
|
162
|
-
}),
|
|
163
|
-
"crew-name": Flags.string({ description: "Name for your CrewAI agent" }),
|
|
164
|
-
"crew-url": Flags.string({
|
|
165
|
-
description: "URL endpoint for your CrewAI agent"
|
|
166
|
-
}),
|
|
167
|
-
"crew-bearer-token": Flags.string({
|
|
168
|
-
description: "Bearer token for CrewAI authentication"
|
|
169
|
-
}),
|
|
170
|
-
"langsmith-api-key": Flags.string({
|
|
171
|
-
description: "LangSmith API key for LangGraph observability"
|
|
172
|
-
}),
|
|
173
|
-
"llm-token": Flags.string({
|
|
174
|
-
description: "API key for your preferred LLM provider"
|
|
175
|
-
}),
|
|
176
|
-
"setup-ide-docs": Flags.string({
|
|
177
|
-
description: "Setup IDE documentation rules for AI assistance",
|
|
178
|
-
options: YES_NO
|
|
179
|
-
}),
|
|
180
|
-
"selected-ide": Flags.string({
|
|
181
|
-
description: "IDE to configure with documentation rules",
|
|
182
|
-
options: ["cursor", "windsurf", "skip"]
|
|
183
|
-
}),
|
|
184
|
-
// NEW: A/B/C test flags
|
|
185
|
-
"deployment-choice": Flags.string({
|
|
186
|
-
description: "Choose between Copilot Cloud or Self-hosted deployment",
|
|
187
|
-
options: DEPLOYMENT_CHOICES
|
|
188
|
-
})
|
|
189
|
-
};
|
|
190
|
-
export {
|
|
191
|
-
ApiKeySchema,
|
|
192
|
-
CHAT_COMPONENTS,
|
|
193
|
-
CREW_FLOW_TEMPLATES,
|
|
194
|
-
CREW_TYPES,
|
|
195
|
-
ChatComponentSchema,
|
|
196
|
-
ConfigFlags,
|
|
197
|
-
ConfigSchema,
|
|
198
|
-
CrewFlowTemplateSchema,
|
|
199
|
-
CrewTypeSchema,
|
|
200
|
-
DEPLOYMENT_CHOICES,
|
|
201
|
-
DeploymentChoiceSchema,
|
|
202
|
-
LANGGRAPH_AGENTS,
|
|
203
|
-
LLMApiKeySchema,
|
|
204
|
-
LangGraphAgentSchema,
|
|
205
|
-
MODES,
|
|
206
|
-
ModeSchema,
|
|
207
|
-
NameSchema,
|
|
208
|
-
TokenSchema,
|
|
209
|
-
UrlSchema,
|
|
210
|
-
YES_NO,
|
|
211
|
-
YesNoSchema,
|
|
212
|
-
sanitizers
|
|
213
|
-
};
|
|
214
|
-
//# sourceMappingURL=questions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/init/types/questions.ts","../../../../src/lib/init/utils.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { Flags } from \"@oclif/core\";\nimport { isLocalhost } from \"../utils.js\";\n\n// ===== Core Constants =====\nexport const MODES = [\n \"LangGraph\",\n \"CrewAI\",\n \"Mastra\",\n \"LlamaIndex\",\n \"Agno\",\n \"AG2\",\n \"MCP\",\n \"Standard\",\n] as const;\nexport const CREW_TYPES = [\"Crews\", \"Flows\"] as const;\nexport const CHAT_COMPONENTS = [\n \"CopilotChat\",\n \"CopilotSidebar\",\n \"Headless\",\n \"CopilotPopup\",\n] as const;\nexport const LANGGRAPH_AGENTS = [\n \"Python Starter\",\n \"TypeScript Starter\",\n] as const;\nexport const CREW_FLOW_TEMPLATES = [\"Starter\"] as const;\nexport const YES_NO = [\"Yes\", \"No\"] as const;\n// NEW: Deployment choice options for Branch B\nexport const DEPLOYMENT_CHOICES = [\"Copilot Cloud\", \"Self-hosted\"] 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 ModeSchema = z.enum(MODES);\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// NEW: Deployment choice schema for Branch B\nexport const DeploymentChoiceSchema = z.enum(DEPLOYMENT_CHOICES);\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\nexport const LLMApiKeySchema = z.preprocess(\n (val) => sanitizers.apiKey(String(val)),\n z.string().optional(),\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\n .object({\n // Core fields\n copilotKitVersion: z.string().optional(),\n mode: ModeSchema,\n chatUi: ChatComponentSchema.optional(),\n\n // Yes/No fields\n alreadyDeployed: YesNoSchema.optional(),\n fastApiEnabled: YesNoSchema.optional(),\n // DEPRECATED: useCopilotCloud - consolidated with signupForCopilotCloud\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\n // API keys and tokens\n copilotCloudPublicApiKey: z.string().optional(),\n langSmithApiKey: ApiKeySchema.optional(),\n llmToken: LLMApiKeySchema.optional(),\n\n // IDE Documentation setup fields\n setupIDEDocs: YesNoSchema.optional(),\n selectedIDE: z\n .union([z.enum([\"cursor\", \"windsurf\"]), z.literal(\"skip\")])\n .optional(),\n\n // NEW: A/B/C test fields\n deploymentChoice: DeploymentChoiceSchema.optional(), // For branch B only (Cloud vs Self-hosted)\n })\n .refine(\n (data) => {\n // If CrewAI is selected, require crew URL and bearer token\n if (data.mode === \"CrewAI\") {\n return !!data.crewUrl && !!data.crewBearerToken;\n }\n return true;\n },\n {\n message: \"Crew URL and bearer token are required for CrewAI\",\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.mode === \"LangGraph\" &&\n data.alreadyDeployed === \"Yes\" &&\n data.langGraphPlatform === \"Yes\"\n ) {\n return (\n (!!data.langGraphPlatformUrl && !!data.langSmithApiKey) ||\n isLocalhost(data.langGraphPlatformUrl || \"\")\n );\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?:\n | readonly string[]\n | (() => Promise<{ name: string; value: string }[]>);\n default?: string;\n when?: (answers: Partial<Config>) => boolean | Promise<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 booth: Flags.boolean({\n description: \"Use CopilotKit in booth mode\",\n default: false,\n char: \"b\",\n }),\n mode: Flags.string({\n description: \"How you will be interacting with AI\",\n options: MODES,\n char: \"m\",\n }),\n \"copilotkit-version\": Flags.string({\n description: \"CopilotKit version to use (e.g. 1.7.0)\",\n }),\n \"use-copilot-cloud\": Flags.string({\n description: \"Use Copilot Cloud for production-ready hosting\",\n options: YES_NO,\n }),\n \"langgraph-agent\": Flags.string({\n description: \"LangGraph agent template to use\",\n options: LANGGRAPH_AGENTS,\n }),\n \"crew-type\": Flags.string({\n description: \"CrewAI implementation type\",\n options: CREW_TYPES,\n }),\n \"crew-name\": Flags.string({ description: \"Name for your CrewAI agent\" }),\n \"crew-url\": Flags.string({\n description: \"URL endpoint for your CrewAI agent\",\n }),\n \"crew-bearer-token\": Flags.string({\n description: \"Bearer token for CrewAI authentication\",\n }),\n \"langsmith-api-key\": Flags.string({\n description: \"LangSmith API key for LangGraph observability\",\n }),\n \"llm-token\": Flags.string({\n description: \"API key for your preferred LLM provider\",\n }),\n \"setup-ide-docs\": Flags.string({\n description: \"Setup IDE documentation rules for AI assistance\",\n options: YES_NO,\n }),\n \"selected-ide\": Flags.string({\n description: \"IDE to configure with documentation rules\",\n options: [\"cursor\", \"windsurf\", \"skip\"],\n }),\n // NEW: A/B/C test flags\n \"deployment-choice\": Flags.string({\n description: \"Choose between Copilot Cloud or Self-hosted deployment\",\n options: DEPLOYMENT_CHOICES,\n }),\n};\n","export const isLocalhost = (url: string): boolean => {\n return (\n url.includes(\"localhost\") ||\n url.includes(\"127.0.0.1\") ||\n url.includes(\"0.0.0.0\")\n );\n};\n"],"mappings":"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","names":[]}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
type ChatTemplate = "CopilotChat" | "CopilotPopup" | "CopilotSidebar";
|
|
2
|
-
type StarterTemplate = "LangGraphPlatform" | "RemoteEndpoint" | "Standard" | "CrewEnterprise" | "CrewFlowsStarter";
|
|
3
|
-
type Template = ChatTemplate | StarterTemplate;
|
|
4
|
-
declare const templateMapping: {
|
|
5
|
-
RemoteEndpoint: string;
|
|
6
|
-
LangGraphPlatformRuntime: string;
|
|
7
|
-
CrewEnterprise: string[];
|
|
8
|
-
CrewFlowsEnterprise: string[];
|
|
9
|
-
LangGraphGeneric: string;
|
|
10
|
-
LangGraphStarter: string[];
|
|
11
|
-
StandardStarter: string;
|
|
12
|
-
StandardRuntime: string;
|
|
13
|
-
McpStarter: string;
|
|
14
|
-
McpRuntime: string;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export { type ChatTemplate, type StarterTemplate, type Template, templateMapping };
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
// src/lib/init/types/templates.ts
|
|
2
|
-
var BASE_URL = "https://registry.copilotkit.ai/r";
|
|
3
|
-
var templateMapping = {
|
|
4
|
-
// Runtimes
|
|
5
|
-
RemoteEndpoint: `${BASE_URL}/remote-endpoint.json`,
|
|
6
|
-
LangGraphPlatformRuntime: `${BASE_URL}/langgraph-platform-runtime.json`,
|
|
7
|
-
// CrewAI
|
|
8
|
-
CrewEnterprise: [`${BASE_URL}/coagents-crew-starter.json`],
|
|
9
|
-
CrewFlowsEnterprise: [`${BASE_URL}/coagents-starter-crewai-flows.json`],
|
|
10
|
-
// LangGraph
|
|
11
|
-
LangGraphGeneric: `${BASE_URL}/generic-lg-starter.json`,
|
|
12
|
-
LangGraphStarter: [
|
|
13
|
-
`${BASE_URL}/langgraph-platform-starter.json`,
|
|
14
|
-
`${BASE_URL}/coagents-starter-ui.json`
|
|
15
|
-
],
|
|
16
|
-
// No Agent
|
|
17
|
-
StandardStarter: `${BASE_URL}/standard-starter.json`,
|
|
18
|
-
StandardRuntime: `${BASE_URL}/standard-runtime.json`,
|
|
19
|
-
// MCP
|
|
20
|
-
McpStarter: `${BASE_URL}/mcp-starter.json`,
|
|
21
|
-
McpRuntime: `${BASE_URL}/mcp-starter-runtime.json`
|
|
22
|
-
};
|
|
23
|
-
export {
|
|
24
|
-
templateMapping
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=templates.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/init/types/templates.ts"],"sourcesContent":["export type ChatTemplate = \"CopilotChat\" | \"CopilotPopup\" | \"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.json`,\n LangGraphPlatformRuntime: `${BASE_URL}/langgraph-platform-runtime.json`,\n\n // CrewAI\n CrewEnterprise: [`${BASE_URL}/coagents-crew-starter.json`],\n CrewFlowsEnterprise: [`${BASE_URL}/coagents-starter-crewai-flows.json`],\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};\n"],"mappings":";AAWA,IAAM,WAAW;AAEV,IAAM,kBAAkB;AAAA;AAAA,EAE7B,gBAAgB,GAAG,QAAQ;AAAA,EAC3B,0BAA0B,GAAG,QAAQ;AAAA;AAAA,EAGrC,gBAAgB,CAAC,GAAG,QAAQ,6BAA6B;AAAA,EACzD,qBAAqB,CAAC,GAAG,QAAQ,qCAAqC;AAAA;AAAA,EAGtE,kBAAkB,GAAG,QAAQ;AAAA,EAC7B,kBAAkB;AAAA,IAChB,GAAG,QAAQ;AAAA,IACX,GAAG,QAAQ;AAAA,EACb;AAAA;AAAA,EAGA,iBAAiB,GAAG,QAAQ;AAAA,EAC5B,iBAAiB,GAAG,QAAQ;AAAA;AAAA,EAG5B,YAAY,GAAG,QAAQ;AAAA,EACvB,YAAY,GAAG,QAAQ;AACzB;","names":[]}
|
package/dist/lib/init/utils.d.ts
DELETED
package/dist/lib/init/utils.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/init/utils.ts"],"sourcesContent":["export const isLocalhost = (url: string): boolean => {\n return (\n url.includes(\"localhost\") ||\n url.includes(\"127.0.0.1\") ||\n url.includes(\"0.0.0.0\")\n );\n};\n"],"mappings":";AAAO,IAAM,cAAc,CAAC,QAAyB;AACnD,SACE,IAAI,SAAS,WAAW,KACxB,IAAI,SAAS,WAAW,KACxB,IAAI,SAAS,SAAS;AAE1B;","names":[]}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { Analytics } from '@segment/analytics-node';
|
|
2
|
-
import { AnalyticsEvents } from './events.js';
|
|
3
|
-
import '../utils/detect-endpoint-type.utils.js';
|
|
4
|
-
|
|
5
|
-
declare class AnalyticsService {
|
|
6
|
-
private readonly authData?;
|
|
7
|
-
private segment;
|
|
8
|
-
private posthog;
|
|
9
|
-
private globalProperties;
|
|
10
|
-
private userId;
|
|
11
|
-
private email;
|
|
12
|
-
private organizationId;
|
|
13
|
-
private config;
|
|
14
|
-
constructor(authData?: {
|
|
15
|
-
userId: string;
|
|
16
|
-
email: string;
|
|
17
|
-
organizationId: string;
|
|
18
|
-
} | undefined);
|
|
19
|
-
private getAnonymousId;
|
|
20
|
-
track<K extends keyof AnalyticsEvents>(event: Omit<Parameters<Analytics["track"]>[0], "userId"> & {
|
|
21
|
-
event: K;
|
|
22
|
-
properties: AnalyticsEvents[K];
|
|
23
|
-
}): Promise<void>;
|
|
24
|
-
/**
|
|
25
|
-
* Check if a feature flag is enabled
|
|
26
|
-
*/
|
|
27
|
-
isFeatureEnabled(flagKey: string): Promise<boolean>;
|
|
28
|
-
/**
|
|
29
|
-
* Get feature flag payload
|
|
30
|
-
*/
|
|
31
|
-
getFeatureFlagPayload(flagKey: string): Promise<any>;
|
|
32
|
-
/**
|
|
33
|
-
* Shutdown analytics services
|
|
34
|
-
*/
|
|
35
|
-
shutdown(): Promise<void>;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export { AnalyticsService };
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
// src/services/analytics.service.ts
|
|
2
|
-
import { Analytics } from "@segment/analytics-node";
|
|
3
|
-
import { PostHog } from "posthog-node";
|
|
4
|
-
import Conf from "conf";
|
|
5
|
-
var AnalyticsService = class {
|
|
6
|
-
constructor(authData) {
|
|
7
|
-
this.authData = authData;
|
|
8
|
-
if (process.env.SEGMENT_DISABLED === "true") {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
const segmentWriteKey = process.env.SEGMENT_WRITE_KEY || "9Pv6QyExYef2P4hPz4gks6QAvNMi2AOf";
|
|
12
|
-
this.globalProperties = {
|
|
13
|
-
service: "cli"
|
|
14
|
-
};
|
|
15
|
-
if (this.authData?.userId) {
|
|
16
|
-
this.userId = this.authData.userId;
|
|
17
|
-
}
|
|
18
|
-
if (this.authData?.email) {
|
|
19
|
-
this.email = this.authData.email;
|
|
20
|
-
this.globalProperties.email = this.authData.email;
|
|
21
|
-
}
|
|
22
|
-
if (this.authData?.organizationId) {
|
|
23
|
-
this.organizationId = this.authData.organizationId;
|
|
24
|
-
}
|
|
25
|
-
this.segment = new Analytics({
|
|
26
|
-
writeKey: segmentWriteKey,
|
|
27
|
-
disable: process.env.SEGMENT_DISABLE === "true"
|
|
28
|
-
});
|
|
29
|
-
if (process.env.POSTHOG_DISABLED !== "true") {
|
|
30
|
-
const posthogKey = process.env.POSTHOG_KEY || "phc_XZdymVYjrph9Mi0xZYGNyCKexxgblXRR1jMENCtdz5Q";
|
|
31
|
-
const posthogHost = process.env.POSTHOG_HOST || "https://eu.i.posthog.com";
|
|
32
|
-
this.posthog = new PostHog(posthogKey, {
|
|
33
|
-
host: posthogHost
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
const config = new Conf({ projectName: "CopilotKitCLI" });
|
|
37
|
-
if (!config.get("anonymousId")) {
|
|
38
|
-
config.set("anonymousId", crypto.randomUUID());
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
segment;
|
|
42
|
-
posthog;
|
|
43
|
-
globalProperties = {};
|
|
44
|
-
userId;
|
|
45
|
-
email;
|
|
46
|
-
organizationId;
|
|
47
|
-
config = new Conf({ projectName: "CopilotKitCLI" });
|
|
48
|
-
getAnonymousId() {
|
|
49
|
-
const anonymousId = this.config.get("anonymousId");
|
|
50
|
-
if (!anonymousId) {
|
|
51
|
-
const anonymousId2 = crypto.randomUUID();
|
|
52
|
-
this.config.set("anonymousId", anonymousId2);
|
|
53
|
-
return anonymousId2;
|
|
54
|
-
}
|
|
55
|
-
return anonymousId;
|
|
56
|
-
}
|
|
57
|
-
track(event) {
|
|
58
|
-
if (!this.segment) {
|
|
59
|
-
return Promise.resolve();
|
|
60
|
-
}
|
|
61
|
-
const payload = {
|
|
62
|
-
userId: this.userId ? this.userId : void 0,
|
|
63
|
-
email: this.email ? this.email : void 0,
|
|
64
|
-
anonymousId: this.getAnonymousId(),
|
|
65
|
-
event: event.event,
|
|
66
|
-
properties: {
|
|
67
|
-
...this.globalProperties,
|
|
68
|
-
...event.properties,
|
|
69
|
-
$groups: this.organizationId ? {
|
|
70
|
-
segment_group: this.organizationId
|
|
71
|
-
} : void 0,
|
|
72
|
-
eventProperties: {
|
|
73
|
-
...event.properties,
|
|
74
|
-
...this.globalProperties
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
return new Promise((resolve, reject) => {
|
|
79
|
-
this.segment.track(payload, (err) => {
|
|
80
|
-
if (err) {
|
|
81
|
-
resolve();
|
|
82
|
-
}
|
|
83
|
-
resolve();
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Check if a feature flag is enabled
|
|
89
|
-
*/
|
|
90
|
-
async isFeatureEnabled(flagKey) {
|
|
91
|
-
if (!this.posthog) {
|
|
92
|
-
return false;
|
|
93
|
-
}
|
|
94
|
-
try {
|
|
95
|
-
const distinctId = this.userId || this.getAnonymousId();
|
|
96
|
-
const flag = await this.posthog.isFeatureEnabled(flagKey, distinctId);
|
|
97
|
-
return Boolean(flag);
|
|
98
|
-
} catch (error) {
|
|
99
|
-
console.warn(`Failed to check feature flag ${flagKey}:`, error);
|
|
100
|
-
return false;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Get feature flag payload
|
|
105
|
-
*/
|
|
106
|
-
async getFeatureFlagPayload(flagKey) {
|
|
107
|
-
if (!this.posthog) {
|
|
108
|
-
return null;
|
|
109
|
-
}
|
|
110
|
-
try {
|
|
111
|
-
const distinctId = this.userId || this.getAnonymousId();
|
|
112
|
-
const payload = await this.posthog.getFeatureFlagPayload(
|
|
113
|
-
flagKey,
|
|
114
|
-
distinctId
|
|
115
|
-
);
|
|
116
|
-
return payload;
|
|
117
|
-
} catch (error) {
|
|
118
|
-
console.warn(`Failed to get feature flag payload ${flagKey}:`, error);
|
|
119
|
-
return null;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Shutdown analytics services
|
|
124
|
-
*/
|
|
125
|
-
async shutdown() {
|
|
126
|
-
if (this.posthog) {
|
|
127
|
-
await this.posthog.shutdown();
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
export {
|
|
132
|
-
AnalyticsService
|
|
133
|
-
};
|
|
134
|
-
//# sourceMappingURL=analytics.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/analytics.service.ts"],"sourcesContent":["import { Analytics } from \"@segment/analytics-node\";\nimport { PostHog } from \"posthog-node\";\nimport { AnalyticsEvents } from \"./events.js\";\nimport Conf from \"conf\";\n\nexport class AnalyticsService {\n private segment: Analytics | undefined;\n private posthog: PostHog | undefined;\n private globalProperties: Record<string, any> = {};\n private userId: string | undefined;\n private email: string | undefined;\n private organizationId: string | undefined;\n private config = new Conf({ projectName: \"CopilotKitCLI\" });\n\n constructor(\n private readonly authData?: {\n userId: string;\n email: string;\n organizationId: string;\n },\n ) {\n if (process.env.SEGMENT_DISABLED === \"true\") {\n return;\n }\n\n const segmentWriteKey =\n process.env.SEGMENT_WRITE_KEY || \"9Pv6QyExYef2P4hPz4gks6QAvNMi2AOf\";\n\n this.globalProperties = {\n service: \"cli\",\n };\n\n if (this.authData?.userId) {\n this.userId = this.authData.userId;\n }\n\n if (this.authData?.email) {\n this.email = this.authData.email;\n this.globalProperties.email = this.authData.email;\n }\n\n if (this.authData?.organizationId) {\n this.organizationId = this.authData.organizationId;\n }\n\n this.segment = new Analytics({\n writeKey: segmentWriteKey,\n disable: process.env.SEGMENT_DISABLE === \"true\",\n });\n\n // Initialize PostHog for feature flags\n if (process.env.POSTHOG_DISABLED !== \"true\") {\n const posthogKey =\n process.env.POSTHOG_KEY ||\n \"phc_XZdymVYjrph9Mi0xZYGNyCKexxgblXRR1jMENCtdz5Q\"; // Default key\n const posthogHost =\n process.env.POSTHOG_HOST || \"https://eu.i.posthog.com\";\n\n this.posthog = new PostHog(posthogKey, {\n host: posthogHost,\n });\n }\n\n const config = new Conf({ projectName: \"CopilotKitCLI\" });\n if (!config.get(\"anonymousId\")) {\n config.set(\"anonymousId\", crypto.randomUUID());\n }\n }\n\n private getAnonymousId(): string {\n const anonymousId = this.config.get(\"anonymousId\");\n if (!anonymousId) {\n const anonymousId = crypto.randomUUID();\n this.config.set(\"anonymousId\", anonymousId);\n return anonymousId;\n }\n\n return anonymousId as string;\n }\n\n public track<K extends keyof AnalyticsEvents>(\n event: Omit<Parameters<Analytics[\"track\"]>[0], \"userId\"> & {\n event: K;\n properties: AnalyticsEvents[K];\n },\n ): Promise<void> {\n if (!this.segment) {\n return Promise.resolve();\n }\n\n const payload = {\n userId: this.userId ? this.userId : undefined,\n email: this.email ? this.email : undefined,\n anonymousId: this.getAnonymousId(),\n event: event.event,\n properties: {\n ...this.globalProperties,\n ...event.properties,\n $groups: this.organizationId\n ? {\n segment_group: this.organizationId,\n }\n : undefined,\n eventProperties: {\n ...event.properties,\n ...this.globalProperties,\n },\n },\n };\n\n return new Promise((resolve, reject) => {\n this.segment!.track(payload, (err) => {\n if (err) {\n // Resolve anyway\n resolve();\n }\n\n resolve();\n });\n });\n }\n\n /**\n * Check if a feature flag is enabled\n */\n public async isFeatureEnabled(flagKey: string): Promise<boolean> {\n if (!this.posthog) {\n return false;\n }\n\n try {\n // Use authenticated user ID if available, otherwise use anonymous ID\n const distinctId = this.userId || this.getAnonymousId();\n const flag = await this.posthog.isFeatureEnabled(flagKey, distinctId);\n return Boolean(flag);\n } catch (error) {\n // If there's an error checking the flag, return false (flag disabled)\n console.warn(`Failed to check feature flag ${flagKey}:`, error);\n return false;\n }\n }\n\n /**\n * Get feature flag payload\n */\n public async getFeatureFlagPayload(flagKey: string): Promise<any> {\n if (!this.posthog) {\n return null;\n }\n\n try {\n // Use authenticated user ID if available, otherwise use anonymous ID\n const distinctId = this.userId || this.getAnonymousId();\n const payload = await this.posthog.getFeatureFlagPayload(\n flagKey,\n distinctId,\n );\n return payload;\n } catch (error) {\n // If there's an error getting the payload, return null\n console.warn(`Failed to get feature flag payload ${flagKey}:`, error);\n return null;\n }\n }\n\n /**\n * Shutdown analytics services\n */\n public async shutdown(): Promise<void> {\n if (this.posthog) {\n await this.posthog.shutdown();\n }\n }\n}\n"],"mappings":"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","names":["anonymousId"]}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Command } from '@oclif/core';
|
|
2
|
-
import { BaseCommand } from '../commands/base-command.js';
|
|
3
|
-
|
|
4
|
-
interface LoginResponse {
|
|
5
|
-
cliToken: string;
|
|
6
|
-
user: {
|
|
7
|
-
email: string;
|
|
8
|
-
id: string;
|
|
9
|
-
};
|
|
10
|
-
organization: {
|
|
11
|
-
id: string;
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
declare class AuthService {
|
|
15
|
-
private readonly config;
|
|
16
|
-
private readonly COPILOT_CLOUD_BASE_URL;
|
|
17
|
-
getToken(): string | undefined;
|
|
18
|
-
getCLIToken(): string | undefined;
|
|
19
|
-
logout(cmd: BaseCommand): Promise<void>;
|
|
20
|
-
requireLogin(cmd: Command, context?: "cloud-features" | "general"): Promise<LoginResponse>;
|
|
21
|
-
login({ exitAfterLogin }?: {
|
|
22
|
-
exitAfterLogin?: boolean;
|
|
23
|
-
}): Promise<LoginResponse>;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export { AuthService };
|