@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.
Files changed (110) hide show
  1. package/.eslintrc.cjs +10 -0
  2. package/.turbo/turbo-build.log +25 -0
  3. package/README.md +290 -0
  4. package/dist/bundles/blank.js +98817 -0
  5. package/dist/bundles/ecommerce.js +98891 -0
  6. package/dist/bundles/hardware-world.js +99289 -0
  7. package/dist/bundles/manifest.json +23 -0
  8. package/dist/cli-runner.d.ts +2 -0
  9. package/dist/cli-runner.d.ts.map +1 -0
  10. package/dist/cli-runner.js +407 -0
  11. package/dist/cli-runner.js.map +1 -0
  12. package/dist/effects/index.d.ts +14 -0
  13. package/dist/effects/index.d.ts.map +1 -0
  14. package/dist/effects/index.js +51 -0
  15. package/dist/effects/index.js.map +1 -0
  16. package/dist/helpers/apply-identity-preset.d.ts +14 -0
  17. package/dist/helpers/apply-identity-preset.d.ts.map +1 -0
  18. package/dist/helpers/apply-identity-preset.js +169 -0
  19. package/dist/helpers/apply-identity-preset.js.map +1 -0
  20. package/dist/helpers/config-builder.d.ts +53 -0
  21. package/dist/helpers/config-builder.d.ts.map +1 -0
  22. package/dist/helpers/config-builder.js +46 -0
  23. package/dist/helpers/config-builder.js.map +1 -0
  24. package/dist/helpers/copy-template.d.ts +2 -0
  25. package/dist/helpers/copy-template.d.ts.map +1 -0
  26. package/dist/helpers/copy-template.js +11 -0
  27. package/dist/helpers/copy-template.js.map +1 -0
  28. package/dist/helpers/create.d.ts +31 -0
  29. package/dist/helpers/create.d.ts.map +1 -0
  30. package/dist/helpers/create.js +136 -0
  31. package/dist/helpers/create.js.map +1 -0
  32. package/dist/helpers/fetch-cloudflare-mcpi-template.d.ts +25 -0
  33. package/dist/helpers/fetch-cloudflare-mcpi-template.d.ts.map +1 -0
  34. package/dist/helpers/fetch-cloudflare-mcpi-template.js +558 -0
  35. package/dist/helpers/fetch-cloudflare-mcpi-template.js.map +1 -0
  36. package/dist/helpers/fetch-cloudflare-template.d.ts +11 -0
  37. package/dist/helpers/fetch-cloudflare-template.d.ts.map +1 -0
  38. package/dist/helpers/fetch-cloudflare-template.js +338 -0
  39. package/dist/helpers/fetch-cloudflare-template.js.map +1 -0
  40. package/dist/helpers/fetch-mcpi-template.d.ts +13 -0
  41. package/dist/helpers/fetch-mcpi-template.d.ts.map +1 -0
  42. package/dist/helpers/fetch-mcpi-template.js +237 -0
  43. package/dist/helpers/fetch-mcpi-template.js.map +1 -0
  44. package/dist/helpers/fetch-xmcp-template.d.ts +13 -0
  45. package/dist/helpers/fetch-xmcp-template.d.ts.map +1 -0
  46. package/dist/helpers/fetch-xmcp-template.js +127 -0
  47. package/dist/helpers/fetch-xmcp-template.js.map +1 -0
  48. package/dist/helpers/generate-cloudflare-files.d.ts +89 -0
  49. package/dist/helpers/generate-cloudflare-files.d.ts.map +1 -0
  50. package/dist/helpers/generate-cloudflare-files.js +1541 -0
  51. package/dist/helpers/generate-cloudflare-files.js.map +1 -0
  52. package/dist/helpers/generate-config.d.ts +2 -0
  53. package/dist/helpers/generate-config.d.ts.map +1 -0
  54. package/dist/helpers/generate-config.js +105 -0
  55. package/dist/helpers/generate-config.js.map +1 -0
  56. package/dist/helpers/generate-identity.d.ts +38 -0
  57. package/dist/helpers/generate-identity.d.ts.map +1 -0
  58. package/dist/helpers/generate-identity.js +123 -0
  59. package/dist/helpers/generate-identity.js.map +1 -0
  60. package/dist/helpers/get-package-versions.d.ts +37 -0
  61. package/dist/helpers/get-package-versions.d.ts.map +1 -0
  62. package/dist/helpers/get-package-versions.js +92 -0
  63. package/dist/helpers/get-package-versions.js.map +1 -0
  64. package/dist/helpers/identity-manager.d.ts +23 -0
  65. package/dist/helpers/identity-manager.d.ts.map +1 -0
  66. package/dist/helpers/identity-manager.js +144 -0
  67. package/dist/helpers/identity-manager.js.map +1 -0
  68. package/dist/helpers/index.d.ts +14 -0
  69. package/dist/helpers/index.d.ts.map +1 -0
  70. package/dist/helpers/index.js +18 -0
  71. package/dist/helpers/index.js.map +1 -0
  72. package/dist/helpers/install.d.ts +3 -0
  73. package/dist/helpers/install.d.ts.map +1 -0
  74. package/dist/helpers/install.js +57 -0
  75. package/dist/helpers/install.js.map +1 -0
  76. package/dist/helpers/kta-registration.d.ts +58 -0
  77. package/dist/helpers/kta-registration.d.ts.map +1 -0
  78. package/dist/helpers/kta-registration.js +77 -0
  79. package/dist/helpers/kta-registration.js.map +1 -0
  80. package/dist/helpers/rename.d.ts +2 -0
  81. package/dist/helpers/rename.d.ts.map +1 -0
  82. package/dist/helpers/rename.js +15 -0
  83. package/dist/helpers/rename.js.map +1 -0
  84. package/dist/helpers/validate-project-structure.d.ts +14 -0
  85. package/dist/helpers/validate-project-structure.d.ts.map +1 -0
  86. package/dist/helpers/validate-project-structure.js +102 -0
  87. package/dist/helpers/validate-project-structure.js.map +1 -0
  88. package/dist/index.d.ts +3 -0
  89. package/dist/index.d.ts.map +1 -0
  90. package/dist/index.js +18 -0
  91. package/dist/index.js.map +1 -0
  92. package/dist/utils/check-node.d.ts +2 -0
  93. package/dist/utils/check-node.d.ts.map +1 -0
  94. package/dist/utils/check-node.js +12 -0
  95. package/dist/utils/check-node.js.map +1 -0
  96. package/dist/utils/fetch-remote-config.d.ts +74 -0
  97. package/dist/utils/fetch-remote-config.d.ts.map +1 -0
  98. package/dist/utils/fetch-remote-config.js +109 -0
  99. package/dist/utils/fetch-remote-config.js.map +1 -0
  100. package/dist/utils/is-folder-empty.d.ts +2 -0
  101. package/dist/utils/is-folder-empty.d.ts.map +1 -0
  102. package/dist/utils/is-folder-empty.js +55 -0
  103. package/dist/utils/is-folder-empty.js.map +1 -0
  104. package/dist/utils/validate-project-name.d.ts +15 -0
  105. package/dist/utils/validate-project-name.d.ts.map +1 -0
  106. package/dist/utils/validate-project-name.js +106 -0
  107. package/dist/utils/validate-project-name.js.map +1 -0
  108. package/index.js +4 -0
  109. package/package.json +73 -0
  110. 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,2 @@
1
+ export declare function copyTemplate(templateDir: string, projectPath: string): void;
2
+ //# sourceMappingURL=copy-template.d.ts.map
@@ -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"}