@liquidmetal-ai/raindrop 0.6.4 → 0.8.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/README.md +440 -73
- package/bin/cjs-shims.js +7 -0
- package/bin/run.js +20 -2
- package/bundle/chunk-5GH4FS6C.js +12148 -0
- package/bundle/chunk-6B4I2CKP.js +231 -0
- package/bundle/chunk-6UE75KX2.js +4481 -0
- package/bundle/chunk-AU3EGGJP.js +44 -0
- package/bundle/chunk-CDQRD3JA.js +75 -0
- package/bundle/chunk-CMCEP64V.js +380 -0
- package/bundle/chunk-CW5ZHVPX.js +292 -0
- package/bundle/chunk-G6NE675D.js +238720 -0
- package/bundle/chunk-GLIYVKQA.js +48 -0
- package/bundle/chunk-KXEV6E63.js +133 -0
- package/bundle/chunk-MCRKUPJY.js +4515 -0
- package/bundle/chunk-MGM2L2T3.js +805 -0
- package/bundle/chunk-MVQYQJHI.js +502 -0
- package/bundle/chunk-NG7CZTTE.js +147 -0
- package/bundle/chunk-PU4RCSXF.js +22452 -0
- package/bundle/chunk-VXAZKB3J.js +292 -0
- package/bundle/chunk-W2L3MYN6.js +4480 -0
- package/bundle/chunk-XYJACVNA.js +231 -0
- package/bundle/commands/annotation/get.js +153 -0
- package/bundle/commands/annotation/list.js +226 -0
- package/bundle/commands/annotation/put.js +177 -0
- package/bundle/commands/auth/list.js +75 -0
- package/bundle/commands/auth/login.js +1654 -0
- package/bundle/commands/auth/logout.js +27 -0
- package/bundle/commands/auth/select.js +53 -0
- package/bundle/commands/bucket/create-credential.js +173 -0
- package/bundle/commands/bucket/delete-credential.js +140 -0
- package/bundle/commands/bucket/get-credential.js +151 -0
- package/bundle/commands/bucket/list-credentials.js +148 -0
- package/bundle/commands/build/branch.js +126 -0
- package/bundle/commands/build/checkout.js +198 -0
- package/bundle/commands/build/clone.js +153 -0
- package/bundle/commands/build/delete.js +227 -0
- package/bundle/commands/build/deploy.js +160 -0
- package/bundle/commands/build/env/get.js +105 -0
- package/bundle/commands/build/env/set.js +115 -0
- package/bundle/commands/build/find.js +333 -0
- package/bundle/commands/build/generate.js +75 -0
- package/bundle/commands/build/init.js +76 -0
- package/bundle/commands/build/list.js +11 -0
- package/bundle/commands/build/sandbox.js +65 -0
- package/bundle/commands/build/start.js +84 -0
- package/bundle/commands/build/status.js +1839 -0
- package/bundle/commands/build/stop.js +84 -0
- package/bundle/commands/build/tools/check.js +32 -0
- package/bundle/commands/build/tools/fmt.js +49 -0
- package/bundle/commands/build/unsandbox.js +65 -0
- package/bundle/commands/build/upload.js +83 -0
- package/bundle/commands/build/validate.js +71 -0
- package/bundle/commands/build/workos/delete.js +86 -0
- package/bundle/commands/build/workos/env/attach.js +134 -0
- package/bundle/commands/build/workos/env/create.js +176 -0
- package/bundle/commands/build/workos/env/delete.js +84 -0
- package/bundle/commands/build/workos/env/detach.js +115 -0
- package/bundle/commands/build/workos/env/get.js +117 -0
- package/bundle/commands/build/workos/env/list.js +139 -0
- package/bundle/commands/build/workos/env/set.js +138 -0
- package/bundle/commands/build/workos/invite.js +91 -0
- package/bundle/commands/build/workos/setup.js +124 -0
- package/bundle/commands/build/workos/status.js +93 -0
- package/bundle/commands/dns/create.js +128 -0
- package/bundle/commands/dns/delete.js +80 -0
- package/bundle/commands/dns/get.js +167 -0
- package/bundle/commands/dns/list.js +193 -0
- package/bundle/commands/dns/records/create.js +150 -0
- package/bundle/commands/dns/records/delete.js +76 -0
- package/bundle/commands/dns/records/get.js +118 -0
- package/bundle/commands/dns/records/list.js +153 -0
- package/bundle/commands/dns/records/update.js +146 -0
- package/bundle/commands/logs/query.js +237 -0
- package/bundle/commands/logs/tail.js +155 -0
- package/bundle/commands/mcp/install-claude.js +220 -0
- package/bundle/commands/mcp/install-gemini.js +220 -0
- package/bundle/commands/mcp/install-goose.js +232 -0
- package/bundle/commands/mcp/status.js +153 -0
- package/bundle/commands/object/delete.js +180 -0
- package/bundle/commands/object/get.js +209 -0
- package/bundle/commands/object/list.js +206 -0
- package/bundle/commands/object/put.js +211 -0
- package/bundle/commands/query/chunk-search.js +123 -0
- package/bundle/commands/query/document.js +126 -0
- package/bundle/commands/query/events.js +98 -0
- package/bundle/commands/query/reindex.js +147 -0
- package/bundle/commands/query/search.js +169 -0
- package/bundle/commands/tail.js +31 -0
- package/bundle/index.js +51 -0
- package/dist/base-command.d.ts +6 -0
- package/dist/base-command.d.ts.map +1 -1
- package/dist/base-command.js +21 -8
- package/dist/build.d.ts +2 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +169 -51
- package/dist/codegen.d.ts +1 -1
- package/dist/codegen.d.ts.map +1 -1
- package/dist/codegen.js +20 -3
- package/dist/codegen.test.js +59 -1
- package/dist/commands/build/checkout.d.ts +17 -0
- package/dist/commands/build/checkout.d.ts.map +1 -1
- package/dist/commands/build/checkout.js +144 -7
- package/dist/commands/build/delete.d.ts +15 -0
- package/dist/commands/build/delete.d.ts.map +1 -1
- package/dist/commands/build/delete.js +133 -0
- package/dist/commands/build/deploy.d.ts.map +1 -1
- package/dist/commands/build/deploy.js +10 -2
- package/dist/commands/build/find.d.ts +1 -0
- package/dist/commands/build/find.d.ts.map +1 -1
- package/dist/commands/build/find.js +33 -2
- package/dist/commands/build/validate.d.ts.map +1 -1
- package/dist/commands/build/validate.js +0 -1
- package/dist/commands/build/workos/delete.d.ts +18 -0
- package/dist/commands/build/workos/delete.d.ts.map +1 -0
- package/dist/commands/build/workos/delete.js +72 -0
- package/dist/commands/build/workos/env/attach.d.ts +24 -0
- package/dist/commands/build/workos/env/attach.d.ts.map +1 -0
- package/dist/commands/build/workos/env/attach.js +111 -0
- package/dist/commands/build/workos/env/create.d.ts +26 -0
- package/dist/commands/build/workos/env/create.d.ts.map +1 -0
- package/dist/commands/build/workos/env/create.js +156 -0
- package/dist/commands/build/workos/env/delete.d.ts +20 -0
- package/dist/commands/build/workos/env/delete.d.ts.map +1 -0
- package/dist/commands/build/workos/env/delete.js +61 -0
- package/dist/commands/build/workos/env/detach.d.ts +21 -0
- package/dist/commands/build/workos/env/detach.d.ts.map +1 -0
- package/dist/commands/build/workos/env/detach.js +94 -0
- package/dist/commands/build/workos/env/get.d.ts +20 -0
- package/dist/commands/build/workos/env/get.d.ts.map +1 -0
- package/dist/commands/build/workos/env/get.js +94 -0
- package/dist/commands/build/workos/env/list.d.ts +18 -0
- package/dist/commands/build/workos/env/list.d.ts.map +1 -0
- package/dist/commands/build/workos/env/list.js +114 -0
- package/dist/commands/build/workos/env/set.d.ts +27 -0
- package/dist/commands/build/workos/env/set.d.ts.map +1 -0
- package/dist/commands/build/workos/env/set.js +115 -0
- package/dist/commands/build/workos/invite.d.ts +21 -0
- package/dist/commands/build/workos/invite.d.ts.map +1 -0
- package/dist/commands/build/workos/invite.js +68 -0
- package/dist/commands/build/workos/setup.d.ts +20 -0
- package/dist/commands/build/workos/setup.d.ts.map +1 -0
- package/dist/commands/build/workos/setup.js +106 -0
- package/dist/commands/build/workos/status.d.ts +18 -0
- package/dist/commands/build/workos/status.d.ts.map +1 -0
- package/dist/commands/build/workos/status.js +70 -0
- package/dist/commands/mcp/install-claude.d.ts.map +1 -1
- package/dist/commands/mcp/install-claude.js +2 -2
- package/dist/commands/mcp/install-gemini.d.ts.map +1 -1
- package/dist/commands/mcp/install-gemini.js +2 -2
- package/dist/commands/mcp/install-goose.d.ts +22 -0
- package/dist/commands/mcp/install-goose.d.ts.map +1 -0
- package/dist/commands/mcp/install-goose.js +252 -0
- package/dist/commands/object/delete.d.ts.map +1 -1
- package/dist/commands/object/delete.js +20 -12
- package/dist/commands/object/get.d.ts.map +1 -1
- package/dist/commands/object/get.js +20 -12
- package/dist/commands/object/list.d.ts.map +1 -1
- package/dist/commands/object/list.js +20 -12
- package/dist/commands/object/put.d.ts.map +1 -1
- package/dist/commands/object/put.js +20 -12
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +2 -2
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -4
- package/dist/index.test.js +54 -2
- package/oclif.manifest.json +4533 -2284
- package/package.json +8 -5
- package/templates/claude-code/debug-raindrop-app.md +89 -0
- package/templates/claude-code/new-raindrop-app.md +12 -4
- package/templates/claude-code/reattach-raindrop-session.md +50 -12
- package/templates/claude-code/update-raindrop-app.md +61 -9
- package/templates/db/node_modules/.bin/prisma +2 -2
- package/templates/db/node_modules/.bin/prisma-kysely +2 -2
- package/templates/db/node_modules/.bin/tsc +2 -2
- package/templates/db/node_modules/.bin/tsserver +2 -2
- package/templates/db/node_modules/.bin/zx +2 -2
- package/templates/gemini-code/debug-raindrop-app.toml +86 -0
- package/templates/gemini-code/new-raindrop-app.toml +10 -3
- package/templates/gemini-code/reattach-raindrop-session.toml +9 -11
- package/templates/gemini-code/update-raindrop-app.toml +55 -10
- package/templates/goose/debug-raindrop-app.yaml +91 -0
- package/templates/goose/new-raindrop-app.yaml +21 -0
- package/templates/goose/reattach-raindrop-session.yaml +20 -0
- package/templates/goose/update-raindrop-app.yaml +65 -0
- package/templates/init/src/_app/auth.ts +18 -0
- package/templates/init/src/_app/cors.ts +64 -0
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/templates/claude-code/raindrop-guidelines.md +0 -322
- package/templates/gemini-code/raindrop-guidelines.md +0 -322
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
import { EnvironmentType } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/workos_integration_pb';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { BaseCommand } from '../../../../base-command.js';
|
|
5
|
+
export default class List extends BaseCommand {
|
|
6
|
+
static args = {};
|
|
7
|
+
static description = 'List all WorkOS environments for the organization';
|
|
8
|
+
static examples = [
|
|
9
|
+
`<%= config.bin %> <%= command.id %>
|
|
10
|
+
List all WorkOS environments in compact format (default)
|
|
11
|
+
|
|
12
|
+
<%= config.bin %> <%= command.id %> --output table
|
|
13
|
+
List all environments in table format
|
|
14
|
+
|
|
15
|
+
<%= config.bin %> <%= command.id %> --output json
|
|
16
|
+
List all environments in JSON format
|
|
17
|
+
`,
|
|
18
|
+
];
|
|
19
|
+
static flags = {
|
|
20
|
+
...BaseCommand.HIDDEN_FLAGS,
|
|
21
|
+
output: Flags.string({
|
|
22
|
+
char: 'o',
|
|
23
|
+
description: 'output format',
|
|
24
|
+
default: 'compact',
|
|
25
|
+
options: ['text', 'table', 'json', 'compact'],
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
28
|
+
async run() {
|
|
29
|
+
const { client: workosService, userId, organizationId } = await this.workosIntegrationService();
|
|
30
|
+
try {
|
|
31
|
+
const response = await workosService.listEnvironments({
|
|
32
|
+
userId,
|
|
33
|
+
organizationId,
|
|
34
|
+
});
|
|
35
|
+
if (!response.environments || response.environments.length === 0) {
|
|
36
|
+
this.log(chalk.dim('No WorkOS environments found in this organization'));
|
|
37
|
+
this.log(chalk.dim('Create a new environment with: raindrop build workos env create <app-name>'));
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
switch (this.flags.output) {
|
|
41
|
+
case 'compact':
|
|
42
|
+
for (const env of response.environments) {
|
|
43
|
+
const envTypeStr = env.environmentType === EnvironmentType.STAGING ? 'staging' : 'production';
|
|
44
|
+
const typeColor = env.environmentType === EnvironmentType.STAGING ? chalk.yellow : chalk.green;
|
|
45
|
+
console.log(`\n${chalk.bold(env.name)}`);
|
|
46
|
+
console.log(` └─ ${typeColor(envTypeStr)} - ${chalk.dim(env.environmentId)}`);
|
|
47
|
+
console.log(` ${chalk.dim(`Client ID: ${env.clientId}`)}`);
|
|
48
|
+
if (env.workosConnectHostname) {
|
|
49
|
+
console.log(` ${chalk.dim(`Connect: ${env.workosConnectHostname}`)}`);
|
|
50
|
+
}
|
|
51
|
+
if (env.workosApiHostname) {
|
|
52
|
+
console.log(` ${chalk.dim(`API: ${env.workosApiHostname}`)}`);
|
|
53
|
+
}
|
|
54
|
+
if (env.workosOrganizationId) {
|
|
55
|
+
console.log(` ${chalk.dim(`Org ID: ${env.workosOrganizationId}`)}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
console.log('');
|
|
59
|
+
console.log(chalk.dim('─'.repeat(50)));
|
|
60
|
+
console.log(chalk.dim(`Total: ${response.environments.length} environments`));
|
|
61
|
+
break;
|
|
62
|
+
case 'text':
|
|
63
|
+
for (const env of response.environments) {
|
|
64
|
+
console.log(`App: ${chalk.bold(env.name)}`);
|
|
65
|
+
console.log(` Environment ID: ${chalk.dim(env.environmentId)}`);
|
|
66
|
+
console.log(` Client ID: ${chalk.dim(env.clientId)}`);
|
|
67
|
+
console.log(` Type: ${chalk.cyan(env.environmentType || 'staging')}`);
|
|
68
|
+
if (env.workosConnectHostname) {
|
|
69
|
+
console.log(` Connect: ${chalk.dim(env.workosConnectHostname)}`);
|
|
70
|
+
}
|
|
71
|
+
if (env.workosApiHostname) {
|
|
72
|
+
console.log(` API: ${chalk.dim(env.workosApiHostname)}`);
|
|
73
|
+
}
|
|
74
|
+
if (env.workosOrganizationId) {
|
|
75
|
+
console.log(` Org ID: ${chalk.dim(env.workosOrganizationId)}`);
|
|
76
|
+
}
|
|
77
|
+
console.log(chalk.dim('─'.repeat(50)));
|
|
78
|
+
}
|
|
79
|
+
this.log(chalk.bold(`\nTotal environments: ${response.environments.length}`));
|
|
80
|
+
break;
|
|
81
|
+
case 'json':
|
|
82
|
+
console.log(JSON.stringify({
|
|
83
|
+
environments: response.environments.map((env) => ({
|
|
84
|
+
name: env.name,
|
|
85
|
+
environmentId: env.environmentId,
|
|
86
|
+
clientId: env.clientId,
|
|
87
|
+
environmentType: env.environmentType,
|
|
88
|
+
connect: env.workosConnectHostname,
|
|
89
|
+
apiHostname: env.workosApiHostname,
|
|
90
|
+
organizationId: env.workosOrganizationId,
|
|
91
|
+
})),
|
|
92
|
+
totalCount: response.environments.length,
|
|
93
|
+
}, null, 2));
|
|
94
|
+
break;
|
|
95
|
+
case 'table':
|
|
96
|
+
console.table(response.environments.map((env) => ({
|
|
97
|
+
'App Name': env.name,
|
|
98
|
+
'Environment ID': env.environmentId,
|
|
99
|
+
'Client ID': env.clientId,
|
|
100
|
+
'Type': env.environmentType || 'staging',
|
|
101
|
+
'Connect': env.workosConnectHostname || '',
|
|
102
|
+
'API': env.workosApiHostname || '',
|
|
103
|
+
'Org ID': env.workosOrganizationId || '',
|
|
104
|
+
})));
|
|
105
|
+
this.log(chalk.bold(`\nTotal environments: ${response.environments.length}`));
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
const err = error;
|
|
111
|
+
this.error(`Failed to list WorkOS environments: ${err.message}`, { exit: 1 });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { BaseCommand } from '../../../../base-command.js';
|
|
2
|
+
export default class Set extends BaseCommand<typeof Set> {
|
|
3
|
+
static args: {
|
|
4
|
+
appName: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
5
|
+
};
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static flags: {
|
|
9
|
+
environmentId: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
clientId: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
apiKey: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
workosOrganizationId: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
workosConnectHostname: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
workosApiHostname: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
type: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
config: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
+
rainbowAuthService: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
19
|
+
raindropCatalogService: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
20
|
+
rainbowAuthToken: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
21
|
+
rainbowOrganizationId: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
22
|
+
rainbowUserId: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
23
|
+
sendVersionMetadata: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
24
|
+
};
|
|
25
|
+
run(): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=set.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../../../src/commands/build/workos/env/set.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,MAAM,CAAC,OAAO,OAAO,GAAI,SAAQ,WAAW,CAAC,OAAO,GAAG,CAAC;IACtD,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,WAAW,SAAkG;IAEpH,MAAM,CAAC,QAAQ,WAWb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;MAqCV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA+D3B"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Args, Flags } from '@oclif/core';
|
|
2
|
+
import { EnvironmentType } from '@liquidmetal-ai/drizzle/liquidmetal/v1alpha1/workos_integration_pb';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { BaseCommand } from '../../../../base-command.js';
|
|
5
|
+
export default class Set extends BaseCommand {
|
|
6
|
+
static args = {
|
|
7
|
+
appName: Args.string({
|
|
8
|
+
description: 'raindrop app name',
|
|
9
|
+
required: true,
|
|
10
|
+
}),
|
|
11
|
+
};
|
|
12
|
+
static description = 'Configure complete WorkOS environment for a Raindrop app (including production environments)';
|
|
13
|
+
static examples = [
|
|
14
|
+
`<%= config.bin %> <%= command.id %> my-app \\
|
|
15
|
+
--environment-id env_123 \\
|
|
16
|
+
--client-id client_123 \\
|
|
17
|
+
--api-key sk_test_123 \\
|
|
18
|
+
--workos-organization-id org_456 \\
|
|
19
|
+
--workos-connect-hostname auth.myapp.com \\
|
|
20
|
+
--type production
|
|
21
|
+
|
|
22
|
+
Configure a production WorkOS environment
|
|
23
|
+
`,
|
|
24
|
+
];
|
|
25
|
+
static flags = {
|
|
26
|
+
...BaseCommand.HIDDEN_FLAGS,
|
|
27
|
+
environmentId: Flags.string({
|
|
28
|
+
description: 'WorkOS environment ID',
|
|
29
|
+
required: true,
|
|
30
|
+
}),
|
|
31
|
+
clientId: Flags.string({
|
|
32
|
+
description: 'WorkOS client ID',
|
|
33
|
+
required: true,
|
|
34
|
+
}),
|
|
35
|
+
apiKey: Flags.string({
|
|
36
|
+
description: 'WorkOS API key value',
|
|
37
|
+
required: true,
|
|
38
|
+
}),
|
|
39
|
+
workosOrganizationId: Flags.string({
|
|
40
|
+
description: 'WorkOS organization ID',
|
|
41
|
+
required: true,
|
|
42
|
+
}),
|
|
43
|
+
workosConnectHostname: Flags.string({
|
|
44
|
+
description: 'WorkOS Connect hostname (e.g., auth.myapp.com)',
|
|
45
|
+
required: true,
|
|
46
|
+
}),
|
|
47
|
+
workosApiHostname: Flags.string({
|
|
48
|
+
description: 'WorkOS API hostname',
|
|
49
|
+
default: 'api.workos.com',
|
|
50
|
+
}),
|
|
51
|
+
type: Flags.string({
|
|
52
|
+
description: 'environment type',
|
|
53
|
+
default: 'staging',
|
|
54
|
+
options: ['staging', 'production'],
|
|
55
|
+
}),
|
|
56
|
+
output: Flags.string({
|
|
57
|
+
char: 'o',
|
|
58
|
+
description: 'output format',
|
|
59
|
+
default: 'text',
|
|
60
|
+
options: ['text', 'json'],
|
|
61
|
+
}),
|
|
62
|
+
};
|
|
63
|
+
async run() {
|
|
64
|
+
const { client: workosService, userId, organizationId } = await this.workosIntegrationService();
|
|
65
|
+
try {
|
|
66
|
+
await workosService.setEnvironment({
|
|
67
|
+
userId,
|
|
68
|
+
organizationId,
|
|
69
|
+
environmentName: this.args.appName,
|
|
70
|
+
environmentId: this.flags.environmentId,
|
|
71
|
+
clientId: this.flags.clientId,
|
|
72
|
+
apiKeyValue: this.flags.apiKey,
|
|
73
|
+
environmentType: this.flags.type === 'staging' ? EnvironmentType.STAGING : EnvironmentType.PRODUCTION,
|
|
74
|
+
workosOrganizationId: this.flags.workosOrganizationId,
|
|
75
|
+
workosConnectHostname: this.flags.workosConnectHostname,
|
|
76
|
+
workosApiHostname: this.flags.workosApiHostname,
|
|
77
|
+
});
|
|
78
|
+
switch (this.flags.output) {
|
|
79
|
+
case 'json':
|
|
80
|
+
console.log(JSON.stringify({
|
|
81
|
+
success: true,
|
|
82
|
+
appName: this.args.appName,
|
|
83
|
+
environmentId: this.flags.environmentId,
|
|
84
|
+
clientId: this.flags.clientId,
|
|
85
|
+
environmentType: this.flags.type,
|
|
86
|
+
workosOrganizationId: this.flags.workosOrganizationId,
|
|
87
|
+
workosConnectHostname: this.flags.workosConnectHostname,
|
|
88
|
+
workosApiHostname: this.flags.workosApiHostname,
|
|
89
|
+
}, null, 2));
|
|
90
|
+
break;
|
|
91
|
+
case 'text':
|
|
92
|
+
default:
|
|
93
|
+
this.log(chalk.green('✓') + ` WorkOS environment configured for ${chalk.bold(this.args.appName)}`);
|
|
94
|
+
this.log('');
|
|
95
|
+
this.log(` ${chalk.cyan('App Name:')} ${this.args.appName}`);
|
|
96
|
+
this.log(` ${chalk.cyan('Environment ID:')} ${this.flags.environmentId}`);
|
|
97
|
+
this.log(` ${chalk.cyan('Client ID:')} ${this.flags.clientId}`);
|
|
98
|
+
this.log(` ${chalk.cyan('Environment:')} ${this.flags.type}`);
|
|
99
|
+
this.log(` ${chalk.cyan('WorkOS Organization:')} ${this.flags.workosOrganizationId}`);
|
|
100
|
+
this.log(` ${chalk.cyan('Connect Hostname:')} ${this.flags.workosConnectHostname}`);
|
|
101
|
+
this.log(` ${chalk.cyan('API Hostname:')} ${this.flags.workosApiHostname}`);
|
|
102
|
+
this.log('');
|
|
103
|
+
this.log(chalk.dim('API key has been stored securely.'));
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
const err = error;
|
|
109
|
+
if (err.message.includes('team not found')) {
|
|
110
|
+
this.error('WorkOS integration not activated. Run: raindrop build workos setup --admin-email <email>', { exit: 1 });
|
|
111
|
+
}
|
|
112
|
+
this.error(`Failed to configure WorkOS environment: ${err.message}`, { exit: 1 });
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BaseCommand } from '../../../base-command.js';
|
|
2
|
+
export default class Invite extends BaseCommand<typeof Invite> {
|
|
3
|
+
static args: {
|
|
4
|
+
email: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
5
|
+
};
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static flags: {
|
|
9
|
+
role: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
config: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
rainbowAuthService: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
raindropCatalogService: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
rainbowAuthToken: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
rainbowOrganizationId: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
rainbowUserId: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
sendVersionMetadata: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
+
};
|
|
19
|
+
run(): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=invite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invite.d.ts","sourceRoot":"","sources":["../../../../src/commands/build/workos/invite.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW,CAAC,OAAO,MAAM,CAAC;IAC5D,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,WAAW,SAA2C;IAE7D,MAAM,CAAC,QAAQ,WAOb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;MAYV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8C3B"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Args, Flags } from '@oclif/core';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { BaseCommand } from '../../../base-command.js';
|
|
4
|
+
export default class Invite extends BaseCommand {
|
|
5
|
+
static args = {
|
|
6
|
+
email: Args.string({
|
|
7
|
+
description: 'email address to invite',
|
|
8
|
+
required: true,
|
|
9
|
+
}),
|
|
10
|
+
};
|
|
11
|
+
static description = 'Invite a user to join the WorkOS team';
|
|
12
|
+
static examples = [
|
|
13
|
+
`<%= config.bin %> <%= command.id %> user@example.com --role admin
|
|
14
|
+
Invite a user as admin
|
|
15
|
+
|
|
16
|
+
<%= config.bin %> <%= command.id %> user@example.com --role member
|
|
17
|
+
Invite a user as member
|
|
18
|
+
`,
|
|
19
|
+
];
|
|
20
|
+
static flags = {
|
|
21
|
+
...BaseCommand.HIDDEN_FLAGS,
|
|
22
|
+
role: Flags.string({
|
|
23
|
+
description: 'role slug for the invited user (e.g., admin, member)',
|
|
24
|
+
required: true,
|
|
25
|
+
}),
|
|
26
|
+
output: Flags.string({
|
|
27
|
+
char: 'o',
|
|
28
|
+
description: 'output format',
|
|
29
|
+
default: 'text',
|
|
30
|
+
options: ['text', 'json'],
|
|
31
|
+
}),
|
|
32
|
+
};
|
|
33
|
+
async run() {
|
|
34
|
+
const { client: workosService, userId, organizationId } = await this.workosIntegrationService();
|
|
35
|
+
try {
|
|
36
|
+
await workosService.inviteTeamMember({
|
|
37
|
+
userId,
|
|
38
|
+
organizationId,
|
|
39
|
+
email: this.args.email,
|
|
40
|
+
roleSlug: this.flags.role,
|
|
41
|
+
});
|
|
42
|
+
switch (this.flags.output) {
|
|
43
|
+
case 'json':
|
|
44
|
+
console.log(JSON.stringify({
|
|
45
|
+
success: true,
|
|
46
|
+
email: this.args.email,
|
|
47
|
+
role: this.flags.role,
|
|
48
|
+
}, null, 2));
|
|
49
|
+
break;
|
|
50
|
+
case 'text':
|
|
51
|
+
default:
|
|
52
|
+
this.log(chalk.green('✓') + ` Invitation sent to ${chalk.bold(this.args.email)}`);
|
|
53
|
+
this.log('');
|
|
54
|
+
this.log(` ${chalk.cyan('Role:')} ${this.flags.role}`);
|
|
55
|
+
this.log('');
|
|
56
|
+
this.log(chalk.dim('The user will receive an email invitation to join the team.'));
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
const err = error;
|
|
62
|
+
if (err.message.includes('not found')) {
|
|
63
|
+
this.error('WorkOS integration not activated. Run: raindrop build workos setup --admin-email <email>', { exit: 1 });
|
|
64
|
+
}
|
|
65
|
+
this.error(`Failed to invite team member: ${err.message}`, { exit: 1 });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BaseCommand } from '../../../base-command.js';
|
|
2
|
+
export default class Setup extends BaseCommand<typeof Setup> {
|
|
3
|
+
static args: {};
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: string[];
|
|
6
|
+
static flags: {
|
|
7
|
+
adminEmail: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
config: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
rainbowAuthService: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
raindropCatalogService: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
rainbowAuthToken: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
rainbowOrganizationId: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
rainbowUserId: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
sendVersionMetadata: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
+
};
|
|
18
|
+
run(): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../../src/commands/build/workos/setup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW,CAAC,OAAO,KAAK,CAAC;IAC1D,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,WAAW,SAAoD;IAEtE,MAAM,CAAC,QAAQ,WAab;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;MAgBV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiF3B"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { BaseCommand } from '../../../base-command.js';
|
|
4
|
+
import { readState } from '../../../index.js';
|
|
5
|
+
export default class Setup extends BaseCommand {
|
|
6
|
+
static args = {};
|
|
7
|
+
static description = 'Activate WorkOS integration by creating a team';
|
|
8
|
+
static examples = [
|
|
9
|
+
`<%= config.bin %> <%= command.id %>
|
|
10
|
+
Activate WorkOS integration using defaults from config
|
|
11
|
+
|
|
12
|
+
<%= config.bin %> <%= command.id %> --admin-email admin@example.com
|
|
13
|
+
Activate with explicit admin email
|
|
14
|
+
|
|
15
|
+
<%= config.bin %> <%= command.id %> --admin-email admin@example.com --name "Acme Inc"
|
|
16
|
+
Activate with explicit organization name
|
|
17
|
+
|
|
18
|
+
<%= config.bin %> <%= command.id %> --output json
|
|
19
|
+
Get JSON output with team details
|
|
20
|
+
`,
|
|
21
|
+
];
|
|
22
|
+
static flags = {
|
|
23
|
+
...BaseCommand.HIDDEN_FLAGS,
|
|
24
|
+
adminEmail: Flags.string({
|
|
25
|
+
description: 'email address for the team admin (defaults to user email from config)',
|
|
26
|
+
required: false,
|
|
27
|
+
}),
|
|
28
|
+
name: Flags.string({
|
|
29
|
+
description: 'organization name (defaults to organization name from config)',
|
|
30
|
+
required: false,
|
|
31
|
+
}),
|
|
32
|
+
output: Flags.string({
|
|
33
|
+
char: 'o',
|
|
34
|
+
description: 'output format',
|
|
35
|
+
default: 'text',
|
|
36
|
+
options: ['text', 'json', 'table'],
|
|
37
|
+
}),
|
|
38
|
+
};
|
|
39
|
+
async run() {
|
|
40
|
+
// Read config to get defaults
|
|
41
|
+
const state = await readState(this.config.configDir);
|
|
42
|
+
let defaultAdminEmail;
|
|
43
|
+
let defaultOrgName;
|
|
44
|
+
if (state.currentOrganizationId) {
|
|
45
|
+
const token = state.organizationIdToBearerToken[state.currentOrganizationId];
|
|
46
|
+
if (token) {
|
|
47
|
+
defaultAdminEmail = token.userEmail;
|
|
48
|
+
defaultOrgName = token.organizationName;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Use flag values or fall back to defaults
|
|
52
|
+
const adminEmail = this.flags.adminEmail || defaultAdminEmail;
|
|
53
|
+
const name = this.flags.name || defaultOrgName;
|
|
54
|
+
if (!adminEmail) {
|
|
55
|
+
this.error('Admin email is required. Please specify --admin-email or ensure you are logged in.', { exit: 1 });
|
|
56
|
+
}
|
|
57
|
+
const { client: workosService, userId, organizationId } = await this.workosIntegrationService();
|
|
58
|
+
try {
|
|
59
|
+
const response = await workosService.createTeam({
|
|
60
|
+
userId,
|
|
61
|
+
organizationId,
|
|
62
|
+
adminEmail,
|
|
63
|
+
name,
|
|
64
|
+
});
|
|
65
|
+
if (!response.team) {
|
|
66
|
+
this.error('Failed to create WorkOS team: no team returned', { exit: 1 });
|
|
67
|
+
}
|
|
68
|
+
switch (this.flags.output) {
|
|
69
|
+
case 'json':
|
|
70
|
+
console.log(JSON.stringify({
|
|
71
|
+
id: response.team.id,
|
|
72
|
+
name: response.team.name,
|
|
73
|
+
createdAt: response.team.createdAt,
|
|
74
|
+
updatedAt: response.team.updatedAt,
|
|
75
|
+
}, null, 2));
|
|
76
|
+
break;
|
|
77
|
+
case 'table':
|
|
78
|
+
console.table({
|
|
79
|
+
'Team ID': response.team.id,
|
|
80
|
+
'Team Name': response.team.name,
|
|
81
|
+
'Created': response.team.createdAt ? new Date(Number(response.team.createdAt.seconds) * 1000).toLocaleString() : 'N/A',
|
|
82
|
+
'Updated': response.team.updatedAt ? new Date(Number(response.team.updatedAt.seconds) * 1000).toLocaleString() : 'N/A',
|
|
83
|
+
});
|
|
84
|
+
break;
|
|
85
|
+
case 'text':
|
|
86
|
+
default:
|
|
87
|
+
this.log(chalk.green('✓') + ' WorkOS integration activated successfully!');
|
|
88
|
+
this.log('');
|
|
89
|
+
this.log(chalk.bold('Team Details:'));
|
|
90
|
+
this.log(` ${chalk.cyan('Team ID:')} ${response.team.id}`);
|
|
91
|
+
this.log(` ${chalk.cyan('Team Name:')} ${response.team.name}`);
|
|
92
|
+
this.log(` ${chalk.cyan('Created:')} ${response.team.createdAt ? new Date(Number(response.team.createdAt.seconds) * 1000).toLocaleString() : 'N/A'}`);
|
|
93
|
+
this.log('');
|
|
94
|
+
this.log(chalk.dim('Next steps:'));
|
|
95
|
+
this.log(chalk.dim(' • Check your email for the team admin invitation'));
|
|
96
|
+
this.log(chalk.dim(' • Create environments for your apps: raindrop build workos env create <app-name>'));
|
|
97
|
+
this.log(chalk.dim(' • Invite team members: raindrop build workos invite <email> --role <role>'));
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
const err = error;
|
|
103
|
+
this.error(`Failed to create WorkOS team: ${err.message}`, { exit: 1 });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BaseCommand } from '../../../base-command.js';
|
|
2
|
+
export default class Status extends BaseCommand<typeof Status> {
|
|
3
|
+
static args: {};
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: string[];
|
|
6
|
+
static flags: {
|
|
7
|
+
output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
config: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
rainbowAuthService: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
raindropCatalogService: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
rainbowAuthToken: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
rainbowOrganizationId: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
rainbowUserId: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
+
sendVersionMetadata: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
};
|
|
16
|
+
run(): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../../src/commands/build/workos/status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW,CAAC,OAAO,MAAM,CAAC;IAC5D,MAAM,CAAC,IAAI,KAAM;IAEjB,MAAM,CAAC,WAAW,SAAkC;IAEpD,MAAM,CAAC,QAAQ,WAOb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;MAQV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA2D3B"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { BaseCommand } from '../../../base-command.js';
|
|
4
|
+
export default class Status extends BaseCommand {
|
|
5
|
+
static args = {};
|
|
6
|
+
static description = 'View WorkOS team information';
|
|
7
|
+
static examples = [
|
|
8
|
+
`<%= config.bin %> <%= command.id %>
|
|
9
|
+
View WorkOS team status
|
|
10
|
+
|
|
11
|
+
<%= config.bin %> <%= command.id %> --output json
|
|
12
|
+
Get JSON output with team details
|
|
13
|
+
`,
|
|
14
|
+
];
|
|
15
|
+
static flags = {
|
|
16
|
+
...BaseCommand.HIDDEN_FLAGS,
|
|
17
|
+
output: Flags.string({
|
|
18
|
+
char: 'o',
|
|
19
|
+
description: 'output format',
|
|
20
|
+
default: 'text',
|
|
21
|
+
options: ['text', 'json', 'table'],
|
|
22
|
+
}),
|
|
23
|
+
};
|
|
24
|
+
async run() {
|
|
25
|
+
const { client: workosService, userId, organizationId } = await this.workosIntegrationService();
|
|
26
|
+
try {
|
|
27
|
+
const response = await workosService.getTeam({
|
|
28
|
+
userId,
|
|
29
|
+
organizationId,
|
|
30
|
+
});
|
|
31
|
+
if (!response.team) {
|
|
32
|
+
this.error('No WorkOS team found for this organization', { exit: 1 });
|
|
33
|
+
}
|
|
34
|
+
switch (this.flags.output) {
|
|
35
|
+
case 'json':
|
|
36
|
+
console.log(JSON.stringify({
|
|
37
|
+
id: response.team.id,
|
|
38
|
+
name: response.team.name,
|
|
39
|
+
createdAt: response.team.createdAt,
|
|
40
|
+
updatedAt: response.team.updatedAt,
|
|
41
|
+
}, null, 2));
|
|
42
|
+
break;
|
|
43
|
+
case 'table':
|
|
44
|
+
console.table({
|
|
45
|
+
'Team ID': response.team.id,
|
|
46
|
+
'Team Name': response.team.name,
|
|
47
|
+
'Created': response.team.createdAt ? new Date(Number(response.team.createdAt.seconds) * 1000).toLocaleString() : 'N/A',
|
|
48
|
+
'Updated': response.team.updatedAt ? new Date(Number(response.team.updatedAt.seconds) * 1000).toLocaleString() : 'N/A',
|
|
49
|
+
});
|
|
50
|
+
break;
|
|
51
|
+
case 'text':
|
|
52
|
+
default:
|
|
53
|
+
this.log(chalk.bold('WorkOS Team Status'));
|
|
54
|
+
this.log('');
|
|
55
|
+
this.log(` ${chalk.cyan('Team ID:')} ${response.team.id}`);
|
|
56
|
+
this.log(` ${chalk.cyan('Team Name:')} ${response.team.name}`);
|
|
57
|
+
this.log(` ${chalk.cyan('Created:')} ${response.team.createdAt ? new Date(Number(response.team.createdAt.seconds) * 1000).toLocaleString() : 'N/A'}`);
|
|
58
|
+
this.log(` ${chalk.cyan('Updated:')} ${response.team.updatedAt ? new Date(Number(response.team.updatedAt.seconds) * 1000).toLocaleString() : 'N/A'}`);
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
const err = error;
|
|
64
|
+
if (err.message.includes('not found')) {
|
|
65
|
+
this.error('WorkOS integration not activated. Run: raindrop build workos setup --admin-email <email>', { exit: 1 });
|
|
66
|
+
}
|
|
67
|
+
this.error(`Failed to get WorkOS team: ${err.message}`, { exit: 1 });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-claude.d.ts","sourceRoot":"","sources":["../../../src/commands/mcp/install-claude.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,WAAW,CAAC,OAAO,gBAAgB,CAAC;IAChF,MAAM,CAAC,WAAW,SAA+D;IAEjF,MAAM,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"install-claude.d.ts","sourceRoot":"","sources":["../../../src/commands/mcp/install-claude.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,WAAW,CAAC,OAAO,gBAAgB,CAAC;IAChF,MAAM,CAAC,WAAW,SAA+D;IAEjF,MAAM,CAAC,QAAQ,WAiBb;IAEF,MAAM,CAAC,KAAK;;;;;;;;MAEV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAKZ,wBAAwB;YA6DxB,uBAAuB;YAsFvB,oBAAoB;YAQpB,oBAAoB;YAqBpB,oBAAoB;YAoBpB,yBAAyB;CA2BxC"}
|
|
@@ -16,7 +16,6 @@ This command will:
|
|
|
16
16
|
- Check if Claude CLI is installed and accessible
|
|
17
17
|
- Verify if raindrop-mcp server already exists (prevents duplicates)
|
|
18
18
|
- Add the raindrop-mcp server to your Claude Code MCP configuration
|
|
19
|
-
- Create ~/.claude/RAINDROP.md with complete Raindrop workflow guidelines
|
|
20
19
|
- Create Claude Code slash commands in ~/.claude/commands/:
|
|
21
20
|
• /new-raindrop-app - Start new Raindrop application development
|
|
22
21
|
• /update-raindrop-app - Update existing Raindrop applications
|
|
@@ -90,9 +89,11 @@ Requirements:
|
|
|
90
89
|
async createClaudeConfigFiles() {
|
|
91
90
|
try {
|
|
92
91
|
const home = homedir();
|
|
92
|
+
const raindropDir = join(home, '.raindrop');
|
|
93
93
|
const claudeDir = join(home, '.claude');
|
|
94
94
|
const commandsDir = join(claudeDir, 'commands');
|
|
95
95
|
// Create directories if they don't exist
|
|
96
|
+
await mkdir(raindropDir, { recursive: true });
|
|
96
97
|
await mkdir(claudeDir, { recursive: true });
|
|
97
98
|
await mkdir(commandsDir, { recursive: true });
|
|
98
99
|
// Get templates directory from package root
|
|
@@ -112,7 +113,6 @@ Requirements:
|
|
|
112
113
|
const templatesDir = join(packageRoot, 'templates', 'claude-code');
|
|
113
114
|
// File mappings: [template file, destination file, description]
|
|
114
115
|
const fileMap = [
|
|
115
|
-
['raindrop-guidelines.md', join(claudeDir, 'RAINDROP.md'), 'Raindrop workflow guidelines'],
|
|
116
116
|
['new-raindrop-app.md', join(commandsDir, 'new-raindrop-app.md'), 'New app command'],
|
|
117
117
|
['update-raindrop-app.md', join(commandsDir, 'update-raindrop-app.md'), 'Update app command'],
|
|
118
118
|
['reattach-raindrop-session.md', join(commandsDir, 'reattach-raindrop-session.md'), 'Reattach session command'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-gemini.d.ts","sourceRoot":"","sources":["../../../src/commands/mcp/install-gemini.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,WAAW,CAAC,OAAO,gBAAgB,CAAC;IAChF,MAAM,CAAC,WAAW,SAA0D;IAE5E,MAAM,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"install-gemini.d.ts","sourceRoot":"","sources":["../../../src/commands/mcp/install-gemini.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,WAAW,CAAC,OAAO,gBAAgB,CAAC;IAChF,MAAM,CAAC,WAAW,SAA0D;IAE5E,MAAM,CAAC,QAAQ,WAiBb;IAEF,MAAM,CAAC,KAAK;;;;;;;;MAEV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAKZ,wBAAwB;YA6DxB,uBAAuB;YAsFvB,oBAAoB;YAQpB,oBAAoB;YAqBpB,oBAAoB;YAoBpB,yBAAyB;CA2BxC"}
|