@kya-os/create-mcpi-app 0.6.4-canary.1
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/.eslintrc.cjs +10 -0
- package/.turbo/turbo-build.log +25 -0
- package/README.md +290 -0
- package/dist/bundles/blank.js +98817 -0
- package/dist/bundles/ecommerce.js +98891 -0
- package/dist/bundles/hardware-world.js +99289 -0
- package/dist/bundles/manifest.json +23 -0
- package/dist/cli-runner.d.ts +2 -0
- package/dist/cli-runner.d.ts.map +1 -0
- package/dist/cli-runner.js +407 -0
- package/dist/cli-runner.js.map +1 -0
- package/dist/effects/index.d.ts +14 -0
- package/dist/effects/index.d.ts.map +1 -0
- package/dist/effects/index.js +51 -0
- package/dist/effects/index.js.map +1 -0
- package/dist/helpers/apply-identity-preset.d.ts +14 -0
- package/dist/helpers/apply-identity-preset.d.ts.map +1 -0
- package/dist/helpers/apply-identity-preset.js +169 -0
- package/dist/helpers/apply-identity-preset.js.map +1 -0
- package/dist/helpers/config-builder.d.ts +53 -0
- package/dist/helpers/config-builder.d.ts.map +1 -0
- package/dist/helpers/config-builder.js +46 -0
- package/dist/helpers/config-builder.js.map +1 -0
- package/dist/helpers/copy-template.d.ts +2 -0
- package/dist/helpers/copy-template.d.ts.map +1 -0
- package/dist/helpers/copy-template.js +11 -0
- package/dist/helpers/copy-template.js.map +1 -0
- package/dist/helpers/create.d.ts +31 -0
- package/dist/helpers/create.d.ts.map +1 -0
- package/dist/helpers/create.js +136 -0
- package/dist/helpers/create.js.map +1 -0
- package/dist/helpers/fetch-cloudflare-mcpi-template.d.ts +25 -0
- package/dist/helpers/fetch-cloudflare-mcpi-template.d.ts.map +1 -0
- package/dist/helpers/fetch-cloudflare-mcpi-template.js +558 -0
- package/dist/helpers/fetch-cloudflare-mcpi-template.js.map +1 -0
- package/dist/helpers/fetch-cloudflare-template.d.ts +11 -0
- package/dist/helpers/fetch-cloudflare-template.d.ts.map +1 -0
- package/dist/helpers/fetch-cloudflare-template.js +338 -0
- package/dist/helpers/fetch-cloudflare-template.js.map +1 -0
- package/dist/helpers/fetch-mcpi-template.d.ts +13 -0
- package/dist/helpers/fetch-mcpi-template.d.ts.map +1 -0
- package/dist/helpers/fetch-mcpi-template.js +237 -0
- package/dist/helpers/fetch-mcpi-template.js.map +1 -0
- package/dist/helpers/fetch-xmcp-template.d.ts +13 -0
- package/dist/helpers/fetch-xmcp-template.d.ts.map +1 -0
- package/dist/helpers/fetch-xmcp-template.js +127 -0
- package/dist/helpers/fetch-xmcp-template.js.map +1 -0
- package/dist/helpers/generate-cloudflare-files.d.ts +89 -0
- package/dist/helpers/generate-cloudflare-files.d.ts.map +1 -0
- package/dist/helpers/generate-cloudflare-files.js +1541 -0
- package/dist/helpers/generate-cloudflare-files.js.map +1 -0
- package/dist/helpers/generate-config.d.ts +2 -0
- package/dist/helpers/generate-config.d.ts.map +1 -0
- package/dist/helpers/generate-config.js +105 -0
- package/dist/helpers/generate-config.js.map +1 -0
- package/dist/helpers/generate-identity.d.ts +38 -0
- package/dist/helpers/generate-identity.d.ts.map +1 -0
- package/dist/helpers/generate-identity.js +123 -0
- package/dist/helpers/generate-identity.js.map +1 -0
- package/dist/helpers/get-package-versions.d.ts +37 -0
- package/dist/helpers/get-package-versions.d.ts.map +1 -0
- package/dist/helpers/get-package-versions.js +92 -0
- package/dist/helpers/get-package-versions.js.map +1 -0
- package/dist/helpers/identity-manager.d.ts +23 -0
- package/dist/helpers/identity-manager.d.ts.map +1 -0
- package/dist/helpers/identity-manager.js +144 -0
- package/dist/helpers/identity-manager.js.map +1 -0
- package/dist/helpers/index.d.ts +14 -0
- package/dist/helpers/index.d.ts.map +1 -0
- package/dist/helpers/index.js +18 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/helpers/install.d.ts +3 -0
- package/dist/helpers/install.d.ts.map +1 -0
- package/dist/helpers/install.js +57 -0
- package/dist/helpers/install.js.map +1 -0
- package/dist/helpers/kta-registration.d.ts +58 -0
- package/dist/helpers/kta-registration.d.ts.map +1 -0
- package/dist/helpers/kta-registration.js +77 -0
- package/dist/helpers/kta-registration.js.map +1 -0
- package/dist/helpers/rename.d.ts +2 -0
- package/dist/helpers/rename.d.ts.map +1 -0
- package/dist/helpers/rename.js +15 -0
- package/dist/helpers/rename.js.map +1 -0
- package/dist/helpers/validate-project-structure.d.ts +14 -0
- package/dist/helpers/validate-project-structure.d.ts.map +1 -0
- package/dist/helpers/validate-project-structure.js +102 -0
- package/dist/helpers/validate-project-structure.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/check-node.d.ts +2 -0
- package/dist/utils/check-node.d.ts.map +1 -0
- package/dist/utils/check-node.js +12 -0
- package/dist/utils/check-node.js.map +1 -0
- package/dist/utils/fetch-remote-config.d.ts +74 -0
- package/dist/utils/fetch-remote-config.d.ts.map +1 -0
- package/dist/utils/fetch-remote-config.js +109 -0
- package/dist/utils/fetch-remote-config.js.map +1 -0
- package/dist/utils/is-folder-empty.d.ts +2 -0
- package/dist/utils/is-folder-empty.d.ts.map +1 -0
- package/dist/utils/is-folder-empty.js +55 -0
- package/dist/utils/is-folder-empty.js.map +1 -0
- package/dist/utils/validate-project-name.d.ts +15 -0
- package/dist/utils/validate-project-name.d.ts.map +1 -0
- package/dist/utils/validate-project-name.js +106 -0
- package/dist/utils/validate-project-name.js.map +1 -0
- package/index.js +4 -0
- package/package.json +73 -0
- package/vitest.integration.config.ts +16 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import fs from "fs-extra";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import { getPackageVersions } from "./get-package-versions.js";
|
|
5
|
+
/**
|
|
6
|
+
* Apply identity preset to an XMCP project
|
|
7
|
+
* This enhances the upstream XMCP template with identity features
|
|
8
|
+
* If noIdentity is true, leaves the XMCP project unchanged
|
|
9
|
+
*/
|
|
10
|
+
export async function applyIdentityPreset(options) {
|
|
11
|
+
const { projectPath, projectName, transports, noIdentity = false } = options;
|
|
12
|
+
if (noIdentity) {
|
|
13
|
+
console.log(chalk.blue("📦 Keeping plain XMCP project (--no-identity flag)"));
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
console.log(chalk.blue("🔐 Applying identity preset..."));
|
|
17
|
+
const srcDir = path.join(projectPath, "src");
|
|
18
|
+
const toolsDir = path.join(srcDir, "tools");
|
|
19
|
+
// Skip middleware creation for now since xmcp has issues with middleware imports
|
|
20
|
+
// The identity features will be integrated differently in the future
|
|
21
|
+
// TODO: Once xmcp supports middleware properly, we can re-enable this
|
|
22
|
+
/*
|
|
23
|
+
const middlewarePath = path.join(srcDir, "middleware.ts");
|
|
24
|
+
if (await fs.pathExists(middlewarePath)) {
|
|
25
|
+
// Enhance existing middleware.ts with identity features
|
|
26
|
+
console.log(
|
|
27
|
+
chalk.gray(
|
|
28
|
+
"📝 Enhancing existing middleware.ts with identity features..."
|
|
29
|
+
)
|
|
30
|
+
);
|
|
31
|
+
// ... middleware enhancement code ...
|
|
32
|
+
} else {
|
|
33
|
+
// Create middleware.ts with identity features
|
|
34
|
+
// ... middleware creation code ...
|
|
35
|
+
}
|
|
36
|
+
*/
|
|
37
|
+
// Enhance existing tools or create identity-aware tools
|
|
38
|
+
if (await fs.pathExists(toolsDir)) {
|
|
39
|
+
console.log(chalk.gray("🔧 Enhancing existing tools with identity features..."));
|
|
40
|
+
// Check for existing tools and enhance them
|
|
41
|
+
const toolFiles = await fs.readdir(toolsDir);
|
|
42
|
+
const tsFiles = toolFiles.filter((f) => f.endsWith(".ts") && f !== "index.ts");
|
|
43
|
+
if (tsFiles.length > 0) {
|
|
44
|
+
// Enhance existing tools
|
|
45
|
+
for (const toolFile of tsFiles) {
|
|
46
|
+
const toolPath = path.join(toolsDir, toolFile);
|
|
47
|
+
let toolContent = await fs.readFile(toolPath, "utf-8");
|
|
48
|
+
// Add identity comment to existing tools
|
|
49
|
+
const identityComment = `// Enhanced with XMCP-I identity features\n`;
|
|
50
|
+
toolContent = identityComment + toolContent;
|
|
51
|
+
await fs.writeFile(toolPath, toolContent);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// Create identity-aware hello tool if no tools exist
|
|
56
|
+
await createIdentityHelloTool(toolsDir);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
// Create tools directory and identity-aware tools
|
|
61
|
+
await fs.ensureDir(toolsDir);
|
|
62
|
+
await createIdentityHelloTool(toolsDir);
|
|
63
|
+
}
|
|
64
|
+
// Update package.json with identity dependencies and scripts
|
|
65
|
+
await updatePackageJsonForIdentity(projectPath, projectName, transports);
|
|
66
|
+
// Create .mcpi directory for identity files
|
|
67
|
+
const mcpiDir = path.join(projectPath, ".mcpi");
|
|
68
|
+
await fs.ensureDir(mcpiDir);
|
|
69
|
+
// Create .gitignore with identity-specific entries
|
|
70
|
+
await updateGitignore(projectPath);
|
|
71
|
+
console.log(chalk.green("✅ Identity preset applied"));
|
|
72
|
+
}
|
|
73
|
+
async function createIdentityHelloTool(toolsDir) {
|
|
74
|
+
// Create tools/hello.ts with identity features
|
|
75
|
+
const helloToolContent = `// Enhanced with XMCP-I identity features
|
|
76
|
+
import { z } from "zod";
|
|
77
|
+
|
|
78
|
+
export const hello = {
|
|
79
|
+
name: "hello",
|
|
80
|
+
description: "Say hello with identity verification",
|
|
81
|
+
inputSchema: z.object({
|
|
82
|
+
name: z.string().describe("Name to greet"),
|
|
83
|
+
}),
|
|
84
|
+
handler: async ({ name }: { name: string }) => {
|
|
85
|
+
return {
|
|
86
|
+
content: [
|
|
87
|
+
{
|
|
88
|
+
type: "text" as const,
|
|
89
|
+
text: \`Hello, \${name}! This message is cryptographically signed.\`,
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
};
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
`;
|
|
96
|
+
await fs.writeFile(path.join(toolsDir, "hello.ts"), helloToolContent);
|
|
97
|
+
// Create or update tools/index.ts
|
|
98
|
+
const indexPath = path.join(toolsDir, "index.ts");
|
|
99
|
+
let indexContent = "";
|
|
100
|
+
if (await fs.pathExists(indexPath)) {
|
|
101
|
+
indexContent = await fs.readFile(indexPath, "utf-8");
|
|
102
|
+
}
|
|
103
|
+
// Add hello export if not already present (no .js extension for TypeScript)
|
|
104
|
+
if (!indexContent.includes("hello")) {
|
|
105
|
+
indexContent += `\nexport * from "./hello";`;
|
|
106
|
+
await fs.writeFile(indexPath, indexContent);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
async function updatePackageJsonForIdentity(projectPath, projectName, transports) {
|
|
110
|
+
const packageJsonPath = path.join(projectPath, "package.json");
|
|
111
|
+
const packageJson = await fs.readJson(packageJsonPath);
|
|
112
|
+
// Add identity dependencies
|
|
113
|
+
// Use workspace dependencies for local testing, published versions for production
|
|
114
|
+
const useWorkspace = process.env.MCPI_USE_WORKSPACE === "true";
|
|
115
|
+
// Get versions from scaffolder's package.json (single source of truth)
|
|
116
|
+
// This ensures scaffolded projects use tested, consistent versions
|
|
117
|
+
const versions = await getPackageVersions();
|
|
118
|
+
// Add @kya-os dependencies - packages are now published!
|
|
119
|
+
if (useWorkspace) {
|
|
120
|
+
packageJson.dependencies = {
|
|
121
|
+
...packageJson.dependencies,
|
|
122
|
+
"@kya-os/mcp-i": "workspace:*",
|
|
123
|
+
"@kya-os/cli": "workspace:*",
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
// Add published packages (versions from scaffolder's package.json)
|
|
128
|
+
packageJson.dependencies = {
|
|
129
|
+
...packageJson.dependencies,
|
|
130
|
+
"@kya-os/mcp-i": versions["@kya-os/mcp-i"],
|
|
131
|
+
"@kya-os/cli": versions["@kya-os/cli"],
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
// Add exactly 8 scripts as required by spec
|
|
135
|
+
// Now using actual mcpi commands since @kya-os/cli is published
|
|
136
|
+
packageJson.scripts = {
|
|
137
|
+
dev: "xmcp dev",
|
|
138
|
+
build: "xmcp build",
|
|
139
|
+
start: "xmcp start",
|
|
140
|
+
init: "mcpi init",
|
|
141
|
+
register: "mcpi register",
|
|
142
|
+
"keys:rotate": "mcpi rotate",
|
|
143
|
+
"identity:clean": "rm -rf .mcpi",
|
|
144
|
+
status: "mcpi status",
|
|
145
|
+
};
|
|
146
|
+
await fs.writeJson(packageJsonPath, packageJson, { spaces: 2 });
|
|
147
|
+
}
|
|
148
|
+
async function updateGitignore(projectPath) {
|
|
149
|
+
const gitignorePath = path.join(projectPath, ".gitignore");
|
|
150
|
+
let gitignoreContent = "";
|
|
151
|
+
if (await fs.pathExists(gitignorePath)) {
|
|
152
|
+
gitignoreContent = await fs.readFile(gitignorePath, "utf-8");
|
|
153
|
+
}
|
|
154
|
+
// Add identity-specific gitignore entries if not already present
|
|
155
|
+
const identityEntries = [
|
|
156
|
+
"# MCP-I Identity",
|
|
157
|
+
".mcpi/",
|
|
158
|
+
".env.local",
|
|
159
|
+
"generated-identity.json",
|
|
160
|
+
".mcp-identity.json",
|
|
161
|
+
];
|
|
162
|
+
for (const entry of identityEntries) {
|
|
163
|
+
if (!gitignoreContent.includes(entry)) {
|
|
164
|
+
gitignoreContent += `\n${entry}`;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
await fs.writeFile(gitignorePath, gitignoreContent);
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=apply-identity-preset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-identity-preset.js","sourceRoot":"","sources":["../../src/helpers/apply-identity-preset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Builder Utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for building MCP-I configuration that works across
|
|
5
|
+
* all platforms (Node.js, Cloudflare Workers, etc.).
|
|
6
|
+
*
|
|
7
|
+
* @module @kya-os/create-mcpi-app/config-builder
|
|
8
|
+
*
|
|
9
|
+
* NOTE: buildBaseConfig has been moved to @kya-os/contracts/config for shared use.
|
|
10
|
+
* This module re-exports it for backward compatibility and adds remote fetching support.
|
|
11
|
+
*/
|
|
12
|
+
import { buildBaseConfig } from '@kya-os/contracts/config';
|
|
13
|
+
export { buildBaseConfig };
|
|
14
|
+
import type { MCPIConfig } from '@kya-os/contracts/config';
|
|
15
|
+
import { type RemoteConfigCache } from '../utils/fetch-remote-config.js';
|
|
16
|
+
/**
|
|
17
|
+
* Options for building configuration with remote fetching support
|
|
18
|
+
*/
|
|
19
|
+
export interface ConfigBuilderOptions {
|
|
20
|
+
/**
|
|
21
|
+
* Environment variables object
|
|
22
|
+
* Works with process.env (Node.js) or Cloudflare env bindings
|
|
23
|
+
*/
|
|
24
|
+
env: Record<string, any>;
|
|
25
|
+
/**
|
|
26
|
+
* Fetch provider function
|
|
27
|
+
* Platform-agnostic fetch implementation
|
|
28
|
+
* Required for remote config fetching
|
|
29
|
+
*/
|
|
30
|
+
fetchProvider?: (url: string, options: RequestInit) => Promise<Response>;
|
|
31
|
+
/**
|
|
32
|
+
* Cache implementation for remote config
|
|
33
|
+
* Optional, but recommended for performance
|
|
34
|
+
*/
|
|
35
|
+
cache?: RemoteConfigCache;
|
|
36
|
+
/**
|
|
37
|
+
* Agent DID for agent-scoped config fetching
|
|
38
|
+
* Used when projectId is not available
|
|
39
|
+
*/
|
|
40
|
+
agentDid?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Build config with remote fetching support
|
|
44
|
+
*
|
|
45
|
+
* Attempts to fetch configuration from remote API (AgentShield dashboard)
|
|
46
|
+
* first, then falls back to local environment-based configuration if remote
|
|
47
|
+
* fetch fails or is not configured.
|
|
48
|
+
*
|
|
49
|
+
* @param options - Configuration builder options
|
|
50
|
+
* @returns Promise resolving to MCPIConfig
|
|
51
|
+
*/
|
|
52
|
+
export declare function buildConfigWithRemote(options: ConfigBuilderOptions): Promise<MCPIConfig>;
|
|
53
|
+
//# sourceMappingURL=config-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-builder.d.ts","sourceRoot":"","sources":["../../src/helpers/config-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG3D,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,OAAO,KAAK,EACV,UAAU,EAQX,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,iCAAiC,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEzE;;;OAGG;IACH,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAE1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,UAAU,CAAC,CAwBrB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Builder Utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for building MCP-I configuration that works across
|
|
5
|
+
* all platforms (Node.js, Cloudflare Workers, etc.).
|
|
6
|
+
*
|
|
7
|
+
* @module @kya-os/create-mcpi-app/config-builder
|
|
8
|
+
*
|
|
9
|
+
* NOTE: buildBaseConfig has been moved to @kya-os/contracts/config for shared use.
|
|
10
|
+
* This module re-exports it for backward compatibility and adds remote fetching support.
|
|
11
|
+
*/
|
|
12
|
+
// Import buildBaseConfig from contracts for local use and re-export
|
|
13
|
+
import { buildBaseConfig } from '@kya-os/contracts/config';
|
|
14
|
+
// Re-export buildBaseConfig for backward compatibility
|
|
15
|
+
export { buildBaseConfig };
|
|
16
|
+
import { fetchRemoteConfig } from '../utils/fetch-remote-config.js';
|
|
17
|
+
/**
|
|
18
|
+
* Build config with remote fetching support
|
|
19
|
+
*
|
|
20
|
+
* Attempts to fetch configuration from remote API (AgentShield dashboard)
|
|
21
|
+
* first, then falls back to local environment-based configuration if remote
|
|
22
|
+
* fetch fails or is not configured.
|
|
23
|
+
*
|
|
24
|
+
* @param options - Configuration builder options
|
|
25
|
+
* @returns Promise resolving to MCPIConfig
|
|
26
|
+
*/
|
|
27
|
+
export async function buildConfigWithRemote(options) {
|
|
28
|
+
const { env, fetchProvider, cache, agentDid } = options;
|
|
29
|
+
// Try remote fetch first if API key and fetch provider are configured
|
|
30
|
+
if (env.AGENTSHIELD_API_KEY && fetchProvider) {
|
|
31
|
+
const remote = await fetchRemoteConfig({
|
|
32
|
+
apiUrl: env.AGENTSHIELD_API_URL || 'https://kya.vouched.id',
|
|
33
|
+
apiKey: env.AGENTSHIELD_API_KEY,
|
|
34
|
+
projectId: env.AGENTSHIELD_PROJECT_ID,
|
|
35
|
+
agentDid,
|
|
36
|
+
cacheTtl: 300000, // 5 minutes
|
|
37
|
+
fetchProvider
|
|
38
|
+
}, cache);
|
|
39
|
+
if (remote) {
|
|
40
|
+
return remote;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Fallback to local env-based config (using buildBaseConfig from contracts)
|
|
44
|
+
return buildBaseConfig(env);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=config-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-builder.js","sourceRoot":"","sources":["../../src/helpers/config-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,oEAAoE;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,uDAAuD;AACvD,OAAO,EAAE,eAAe,EAAE,CAAC;AAa3B,OAAO,EACL,iBAAiB,EAGlB,MAAM,iCAAiC,CAAC;AAgCzC;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAA6B;IAE7B,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAExD,sEAAsE;IACtE,IAAI,GAAG,CAAC,mBAAmB,IAAI,aAAa,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC;YACE,MAAM,EAAE,GAAG,CAAC,mBAAmB,IAAI,wBAAwB;YAC3D,MAAM,EAAE,GAAG,CAAC,mBAAmB;YAC/B,SAAS,EAAE,GAAG,CAAC,sBAAsB;YACrC,QAAQ;YACR,QAAQ,EAAE,MAAM,EAAE,YAAY;YAC9B,aAAa;SACd,EACD,KAAK,CACN,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy-template.d.ts","sourceRoot":"","sources":["../../src/helpers/copy-template.ts"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAO3E"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import fs from "fs-extra";
|
|
2
|
+
import path from "path";
|
|
3
|
+
export function copyTemplate(templateDir, projectPath) {
|
|
4
|
+
fs.copySync(templateDir, projectPath, {
|
|
5
|
+
filter: (src) => {
|
|
6
|
+
const basename = path.basename(src);
|
|
7
|
+
return !basename.startsWith(".");
|
|
8
|
+
},
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=copy-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy-template.js","sourceRoot":"","sources":["../../src/helpers/copy-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,UAAU,YAAY,CAAC,WAAmB,EAAE,WAAmB;IACnE,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE;QACpC,MAAM,EAAE,CAAC,GAAW,EAAE,EAAE;YACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ScaffolderResult } from "@kya-os/contracts";
|
|
2
|
+
interface CreateProjectOptions {
|
|
3
|
+
projectPath: string;
|
|
4
|
+
projectName: string;
|
|
5
|
+
packageManager: string;
|
|
6
|
+
transports: string[];
|
|
7
|
+
packageVersion: string;
|
|
8
|
+
useLocalXmcp?: boolean;
|
|
9
|
+
mcpiVersion?: string;
|
|
10
|
+
deployToVercel?: boolean;
|
|
11
|
+
skipInstall?: boolean;
|
|
12
|
+
agentName?: string;
|
|
13
|
+
agentDescription?: string;
|
|
14
|
+
agentRepository?: string;
|
|
15
|
+
skipIdentity?: boolean;
|
|
16
|
+
skipAnimation?: boolean;
|
|
17
|
+
fastAnimation?: boolean;
|
|
18
|
+
spinner?: any;
|
|
19
|
+
platform?: string;
|
|
20
|
+
mode?: string;
|
|
21
|
+
template?: string;
|
|
22
|
+
apikey?: string;
|
|
23
|
+
projectId?: string;
|
|
24
|
+
register?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Create a new MCP-I project with identity features
|
|
28
|
+
*/
|
|
29
|
+
export declare function createProject(options: CreateProjectOptions): Promise<ScaffolderResult>;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/helpers/create.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAI1D,UAAU,oBAAoB;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AASD;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAwJ3B"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import fs from "fs-extra";
|
|
3
|
+
import { fetchMCPITemplate } from "./fetch-mcpi-template.js";
|
|
4
|
+
import { fetchCloudflareTemplate } from "./fetch-cloudflare-template.js";
|
|
5
|
+
import { fetchCloudflareMcpiTemplate } from "./fetch-cloudflare-mcpi-template.js";
|
|
6
|
+
import { renameFiles } from "./rename.js";
|
|
7
|
+
import { install } from "./install.js";
|
|
8
|
+
import { validateProjectStructure, ensureLockfile, } from "./validate-project-structure.js";
|
|
9
|
+
import chalk from "chalk";
|
|
10
|
+
/**
|
|
11
|
+
* Create necessary project directories
|
|
12
|
+
*/
|
|
13
|
+
function createProjectDirectories(projectPath) {
|
|
14
|
+
fs.ensureDirSync(path.join(projectPath, ".mcpi"));
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Create a new MCP-I project with identity features
|
|
18
|
+
*/
|
|
19
|
+
export async function createProject(options) {
|
|
20
|
+
const { projectPath, projectName, packageManager, transports, packageVersion, useLocalXmcp, mcpiVersion, deployToVercel, skipInstall, agentName = projectName, agentDescription = "MCP-I server with identity features", agentRepository = "", skipIdentity = false, skipAnimation = false, fastAnimation = false, platform = "node", mode = "mcp-i", template = "default", apikey, projectId, register, } = options;
|
|
21
|
+
const warnings = [];
|
|
22
|
+
let resolvedMcpiVersion = mcpiVersion;
|
|
23
|
+
try {
|
|
24
|
+
// Ensure the project directory exists
|
|
25
|
+
fs.ensureDirSync(projectPath);
|
|
26
|
+
// Scaffold project based on platform/mode
|
|
27
|
+
console.log(chalk.blue("\n📁 Scaffolding project..."));
|
|
28
|
+
if (platform === "cloudflare" && mode === "verifier") {
|
|
29
|
+
// Cloudflare Worker verifier template (standalone verifier)
|
|
30
|
+
await fetchCloudflareTemplate(projectPath, {
|
|
31
|
+
packageManager,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
else if (platform === "cloudflare" && mode === "mcp-i") {
|
|
35
|
+
// Cloudflare Worker MCP-I server template (NEW)
|
|
36
|
+
await fetchCloudflareMcpiTemplate(projectPath, {
|
|
37
|
+
packageManager,
|
|
38
|
+
projectName,
|
|
39
|
+
apikey,
|
|
40
|
+
projectId,
|
|
41
|
+
skipIdentity,
|
|
42
|
+
skipCommands: skipInstall, // Map CLI skipInstall to template skipCommands
|
|
43
|
+
register,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
else if (platform === "node" && mode === "mcp-i") {
|
|
47
|
+
// Node.js MCP-I server template (default)
|
|
48
|
+
await fetchMCPITemplate(projectPath, {
|
|
49
|
+
mcpiVersion,
|
|
50
|
+
packageManager,
|
|
51
|
+
skipIdentity,
|
|
52
|
+
register,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
throw new Error(`Unsupported platform/mode combination: ${platform}/${mode}`);
|
|
57
|
+
}
|
|
58
|
+
// Capture the resolved version for the result
|
|
59
|
+
const packageJsonPath = path.join(projectPath, "package.json");
|
|
60
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
61
|
+
const packageJson = fs.readJsonSync(packageJsonPath);
|
|
62
|
+
// Try to extract version from dependencies
|
|
63
|
+
resolvedMcpiVersion =
|
|
64
|
+
packageJson.dependencies?.["@kya-os/mcp-i"] || mcpiVersion || "unknown";
|
|
65
|
+
}
|
|
66
|
+
// Rename special files (e.g., _gitignore to .gitignore)
|
|
67
|
+
renameFiles(projectPath);
|
|
68
|
+
// Add vercel.json if deployToVercel is true
|
|
69
|
+
if (deployToVercel) {
|
|
70
|
+
// Create a basic vercel.json for MCP-I deployment
|
|
71
|
+
const vercelConfig = {
|
|
72
|
+
functions: {
|
|
73
|
+
"src/server.ts": {
|
|
74
|
+
runtime: "@vercel/node@3",
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
rewrites: [
|
|
78
|
+
{
|
|
79
|
+
source: "/(.*)",
|
|
80
|
+
destination: "/src/server.ts",
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
};
|
|
84
|
+
fs.writeJsonSync(path.join(projectPath, "vercel.json"), vercelConfig, {
|
|
85
|
+
spaces: 2,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
// Create necessary project directories (skip for cloudflare templates)
|
|
89
|
+
const isCloudflare = platform === "cloudflare";
|
|
90
|
+
if (!isCloudflare) {
|
|
91
|
+
createProjectDirectories(projectPath);
|
|
92
|
+
}
|
|
93
|
+
// Install project dependencies
|
|
94
|
+
if (!skipInstall) {
|
|
95
|
+
install(projectPath, packageManager, packageVersion);
|
|
96
|
+
// Ensure lockfile is properly created
|
|
97
|
+
ensureLockfile(projectPath, packageManager);
|
|
98
|
+
}
|
|
99
|
+
// Validate project structure meets requirements (skip for cloudflare)
|
|
100
|
+
if (!isCloudflare) {
|
|
101
|
+
const validation = validateProjectStructure(projectPath, !skipIdentity);
|
|
102
|
+
if (!validation.valid) {
|
|
103
|
+
console.warn(chalk.yellow("⚠️ Project structure validation issues:"));
|
|
104
|
+
for (const issue of validation.issues) {
|
|
105
|
+
console.warn(chalk.yellow(` - ${issue}`));
|
|
106
|
+
warnings.push(...validation.issues);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// Identity setup is now handled by the CLI after scaffolding (not for cloudflare)
|
|
111
|
+
if (!skipIdentity && !isCloudflare) {
|
|
112
|
+
console.log(chalk.blue("\n🔐 Identity setup will be handled by the CLI"));
|
|
113
|
+
console.log(chalk.gray(" Run 'mcpi init' after scaffolding to set up identity"));
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
success: true,
|
|
117
|
+
projectPath,
|
|
118
|
+
xmcpVersion: resolvedMcpiVersion || "unknown",
|
|
119
|
+
identityEnabled: !skipIdentity,
|
|
120
|
+
warnings: warnings.length > 0 ? warnings : undefined,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
console.error(chalk.red("Failed to create project:"), error);
|
|
125
|
+
return {
|
|
126
|
+
success: false,
|
|
127
|
+
projectPath,
|
|
128
|
+
xmcpVersion: resolvedMcpiVersion || "unknown",
|
|
129
|
+
identityEnabled: !skipIdentity,
|
|
130
|
+
warnings: [
|
|
131
|
+
`Project creation failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
132
|
+
],
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/helpers/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
interface CloudflareTemplateOptions {
|
|
2
|
+
packageManager: string;
|
|
3
|
+
projectName: string;
|
|
4
|
+
apikey?: string;
|
|
5
|
+
projectId?: string;
|
|
6
|
+
skipIdentity?: boolean;
|
|
7
|
+
skipCommands?: boolean;
|
|
8
|
+
register?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Fetches the Cloudflare MCP-I template
|
|
12
|
+
*
|
|
13
|
+
* Generates a complete project structure:
|
|
14
|
+
* - package.json with all scripts
|
|
15
|
+
* - wrangler.toml with all KV namespaces configured
|
|
16
|
+
* - .dev.vars with all secrets
|
|
17
|
+
* - src/index.ts
|
|
18
|
+
* - src/agent.ts
|
|
19
|
+
* - src/tools/greet.ts
|
|
20
|
+
* - src/mcpi-runtime-config.ts
|
|
21
|
+
* - KV namespaces auto-provisioned by Wrangler v4 on first deploy
|
|
22
|
+
*/
|
|
23
|
+
export declare function fetchCloudflareMcpiTemplate(targetDir: string, options: CloudflareTemplateOptions | string): Promise<void>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=fetch-cloudflare-mcpi-template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-cloudflare-mcpi-template.d.ts","sourceRoot":"","sources":["../../src/helpers/fetch-cloudflare-mcpi-template.ts"],"names":[],"mappings":"AAaA,UAAU,yBAAyB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,yBAAyB,GAAG,MAAM,GAC1C,OAAO,CAAC,IAAI,CAAC,CAulBf"}
|