opencastle 0.2.0 → 0.3.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/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +16 -3
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/stack-config.d.ts +13 -0
- package/dist/cli/stack-config.d.ts.map +1 -1
- package/dist/cli/stack-config.js +20 -0
- package/dist/cli/stack-config.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/init.ts +19 -3
- package/src/cli/stack-config.ts +33 -0
package/dist/cli/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAuE,MAAM,YAAY,CAAA;AASjH,wBAA8B,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAyL/E"}
|
package/dist/cli/init.js
CHANGED
|
@@ -5,6 +5,7 @@ import { select, confirm, closePrompts } from './prompt.js';
|
|
|
5
5
|
import { readManifest, writeManifest, createManifest } from './manifest.js';
|
|
6
6
|
import { removeDirIfExists } from './copy.js';
|
|
7
7
|
import { updateGitignore } from './gitignore.js';
|
|
8
|
+
import { getRequiredMcpEnvVars } from './stack-config.js';
|
|
8
9
|
const ADAPTERS = {
|
|
9
10
|
vscode: () => import('./adapters/vscode.js'),
|
|
10
11
|
cursor: () => import('./adapters/cursor.js'),
|
|
@@ -139,6 +140,15 @@ export default async function init({ pkgRoot, args }) {
|
|
|
139
140
|
if (skipped > 0) {
|
|
140
141
|
console.log(` → Skipped ${skipped} existing files`);
|
|
141
142
|
}
|
|
143
|
+
// ── Env var notice ──────────────────────────────────────────────
|
|
144
|
+
const envVars = getRequiredMcpEnvVars(stack);
|
|
145
|
+
if (envVars.length > 0) {
|
|
146
|
+
console.log(`\n ⚠ Required environment variables for MCP servers:\n`);
|
|
147
|
+
for (const { envVar, hint } of envVars) {
|
|
148
|
+
console.log(` ${envVar}`);
|
|
149
|
+
console.log(` └ ${hint}\n`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
142
152
|
console.log(`\n Next steps:`);
|
|
143
153
|
if (ide === 'vscode') {
|
|
144
154
|
console.log(' 0. Reload VS Code window (Cmd+Shift+P → "Reload Window") to pick up agents');
|
|
@@ -146,9 +156,12 @@ export default async function init({ pkgRoot, args }) {
|
|
|
146
156
|
else if (ide === 'cursor') {
|
|
147
157
|
console.log(' 0. Reload Cursor window to pick up the new rule files');
|
|
148
158
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
159
|
+
if (envVars.length > 0) {
|
|
160
|
+
console.log(` 1. Set the environment variable${envVars.length > 1 ? 's' : ''} listed above`);
|
|
161
|
+
}
|
|
162
|
+
console.log(` ${envVars.length > 0 ? '2' : '1'}. Run the "Bootstrap Customizations" prompt to configure for your project`);
|
|
163
|
+
console.log(` ${envVars.length > 0 ? '3' : '2'}. Customize agent definitions for your tech stack`);
|
|
164
|
+
console.log(` ${envVars.length > 0 ? '4' : '3'}. Commit the generated files to your repository`);
|
|
152
165
|
console.log();
|
|
153
166
|
closePrompts();
|
|
154
167
|
}
|
package/dist/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
import type { StackConfig, CopyDirOptions } from './types.js';
|
|
2
|
+
export interface McpEnvRequirement {
|
|
3
|
+
/** MCP server key (must match mcp.json) */
|
|
4
|
+
server: string;
|
|
5
|
+
/** Environment variable name */
|
|
6
|
+
envVar: string;
|
|
7
|
+
/** Short description of where to get the key */
|
|
8
|
+
hint: string;
|
|
9
|
+
}
|
|
2
10
|
export declare function getExcludedSkills(stack: StackConfig): Set<string>;
|
|
3
11
|
export declare function getExcludedAgents(stack: StackConfig): Set<string>;
|
|
4
12
|
export declare function getIncludedMcpServers(stack: StackConfig): Set<string>;
|
|
13
|
+
/**
|
|
14
|
+
* Returns env var requirements for the MCP servers included in the stack.
|
|
15
|
+
* Only returns entries for servers that actually need API keys.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getRequiredMcpEnvVars(stack: StackConfig): McpEnvRequirement[];
|
|
5
18
|
/**
|
|
6
19
|
* Return a transform callback that pre-populates customization files
|
|
7
20
|
* based on the user's stack selection.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack-config.d.ts","sourceRoot":"","sources":["../../src/cli/stack-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA8C,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"stack-config.d.ts","sourceRoot":"","sources":["../../src/cli/stack-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA8C,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA6G1G,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;CACd;AAeD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAOjE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAKjE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAQrE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,iBAAiB,EAAE,CAG7E;AAID;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,WAAW,GACjB,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAQ1C"}
|
package/dist/cli/stack-config.js
CHANGED
|
@@ -86,6 +86,18 @@ const NOTIF_MCP_MAP = {
|
|
|
86
86
|
};
|
|
87
87
|
/** Always-included MCP servers */
|
|
88
88
|
const CORE_MCP_SERVERS = ['chrome-devtools', 'Vercel'];
|
|
89
|
+
/**
|
|
90
|
+
* Registry of MCP servers that require API keys via environment variables.
|
|
91
|
+
* Only servers with `env` fields in mcp.json need to be listed here.
|
|
92
|
+
* HTTP-based servers (Sanity, Slack, Vercel, etc.) handle auth via OAuth.
|
|
93
|
+
*/
|
|
94
|
+
const MCP_ENV_REQUIREMENTS = [
|
|
95
|
+
{
|
|
96
|
+
server: 'Linear',
|
|
97
|
+
envVar: 'LINEAR_API_KEY',
|
|
98
|
+
hint: 'Create at linear.app → Settings → API → Personal API keys',
|
|
99
|
+
},
|
|
100
|
+
];
|
|
89
101
|
export function getExcludedSkills(stack) {
|
|
90
102
|
return new Set([
|
|
91
103
|
...CMS_SKILL_MAP[stack.cms],
|
|
@@ -109,6 +121,14 @@ export function getIncludedMcpServers(stack) {
|
|
|
109
121
|
...NOTIF_MCP_MAP[stack.notifications],
|
|
110
122
|
]);
|
|
111
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Returns env var requirements for the MCP servers included in the stack.
|
|
126
|
+
* Only returns entries for servers that actually need API keys.
|
|
127
|
+
*/
|
|
128
|
+
export function getRequiredMcpEnvVars(stack) {
|
|
129
|
+
const included = getIncludedMcpServers(stack);
|
|
130
|
+
return MCP_ENV_REQUIREMENTS.filter((req) => included.has(req.server));
|
|
131
|
+
}
|
|
112
132
|
// ── Customization file transforms ─────────────────────────────
|
|
113
133
|
/**
|
|
114
134
|
* Return a transform callback that pre-populates customization files
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack-config.js","sourceRoot":"","sources":["../../src/cli/stack-config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"stack-config.js","sourceRoot":"","sources":["../../src/cli/stack-config.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/cli/init.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { select, confirm, closePrompts } from './prompt.js'
|
|
|
5
5
|
import { readManifest, writeManifest, createManifest } from './manifest.js'
|
|
6
6
|
import { removeDirIfExists } from './copy.js'
|
|
7
7
|
import { updateGitignore } from './gitignore.js'
|
|
8
|
+
import { getRequiredMcpEnvVars } from './stack-config.js'
|
|
8
9
|
import type { CliContext, IdeAdapter, CmsChoice, DbChoice, PmChoice, NotifChoice, StackConfig } from './types.js'
|
|
9
10
|
|
|
10
11
|
const ADAPTERS: Record<string, () => Promise<IdeAdapter>> = {
|
|
@@ -166,6 +167,16 @@ export default async function init({ pkgRoot, args }: CliContext): Promise<void>
|
|
|
166
167
|
console.log(` → Skipped ${skipped} existing files`)
|
|
167
168
|
}
|
|
168
169
|
|
|
170
|
+
// ── Env var notice ──────────────────────────────────────────────
|
|
171
|
+
const envVars = getRequiredMcpEnvVars(stack)
|
|
172
|
+
if (envVars.length > 0) {
|
|
173
|
+
console.log(`\n ⚠ Required environment variables for MCP servers:\n`)
|
|
174
|
+
for (const { envVar, hint } of envVars) {
|
|
175
|
+
console.log(` ${envVar}`)
|
|
176
|
+
console.log(` └ ${hint}\n`)
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
169
180
|
console.log(`\n Next steps:`)
|
|
170
181
|
if (ide === 'vscode') {
|
|
171
182
|
console.log(
|
|
@@ -176,11 +187,16 @@ export default async function init({ pkgRoot, args }: CliContext): Promise<void>
|
|
|
176
187
|
' 0. Reload Cursor window to pick up the new rule files'
|
|
177
188
|
)
|
|
178
189
|
}
|
|
190
|
+
if (envVars.length > 0) {
|
|
191
|
+
console.log(
|
|
192
|
+
` 1. Set the environment variable${envVars.length > 1 ? 's' : ''} listed above`
|
|
193
|
+
)
|
|
194
|
+
}
|
|
179
195
|
console.log(
|
|
180
|
-
'
|
|
196
|
+
` ${envVars.length > 0 ? '2' : '1'}. Run the "Bootstrap Customizations" prompt to configure for your project`
|
|
181
197
|
)
|
|
182
|
-
console.log('
|
|
183
|
-
console.log('
|
|
198
|
+
console.log(` ${envVars.length > 0 ? '3' : '2'}. Customize agent definitions for your tech stack`)
|
|
199
|
+
console.log(` ${envVars.length > 0 ? '4' : '3'}. Commit the generated files to your repository`)
|
|
184
200
|
console.log()
|
|
185
201
|
|
|
186
202
|
closePrompts()
|
package/src/cli/stack-config.ts
CHANGED
|
@@ -105,6 +105,30 @@ const NOTIF_MCP_MAP: Record<NotifChoice, string[]> = {
|
|
|
105
105
|
/** Always-included MCP servers */
|
|
106
106
|
const CORE_MCP_SERVERS = ['chrome-devtools', 'Vercel'];
|
|
107
107
|
|
|
108
|
+
// ── MCP environment variable requirements ─────────────────────
|
|
109
|
+
|
|
110
|
+
export interface McpEnvRequirement {
|
|
111
|
+
/** MCP server key (must match mcp.json) */
|
|
112
|
+
server: string;
|
|
113
|
+
/** Environment variable name */
|
|
114
|
+
envVar: string;
|
|
115
|
+
/** Short description of where to get the key */
|
|
116
|
+
hint: string;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Registry of MCP servers that require API keys via environment variables.
|
|
121
|
+
* Only servers with `env` fields in mcp.json need to be listed here.
|
|
122
|
+
* HTTP-based servers (Sanity, Slack, Vercel, etc.) handle auth via OAuth.
|
|
123
|
+
*/
|
|
124
|
+
const MCP_ENV_REQUIREMENTS: McpEnvRequirement[] = [
|
|
125
|
+
{
|
|
126
|
+
server: 'Linear',
|
|
127
|
+
envVar: 'LINEAR_API_KEY',
|
|
128
|
+
hint: 'Create at linear.app → Settings → API → Personal API keys',
|
|
129
|
+
},
|
|
130
|
+
];
|
|
131
|
+
|
|
108
132
|
export function getExcludedSkills(stack: StackConfig): Set<string> {
|
|
109
133
|
return new Set([
|
|
110
134
|
...CMS_SKILL_MAP[stack.cms],
|
|
@@ -131,6 +155,15 @@ export function getIncludedMcpServers(stack: StackConfig): Set<string> {
|
|
|
131
155
|
]);
|
|
132
156
|
}
|
|
133
157
|
|
|
158
|
+
/**
|
|
159
|
+
* Returns env var requirements for the MCP servers included in the stack.
|
|
160
|
+
* Only returns entries for servers that actually need API keys.
|
|
161
|
+
*/
|
|
162
|
+
export function getRequiredMcpEnvVars(stack: StackConfig): McpEnvRequirement[] {
|
|
163
|
+
const included = getIncludedMcpServers(stack);
|
|
164
|
+
return MCP_ENV_REQUIREMENTS.filter((req) => included.has(req.server));
|
|
165
|
+
}
|
|
166
|
+
|
|
134
167
|
// ── Customization file transforms ─────────────────────────────
|
|
135
168
|
|
|
136
169
|
/**
|