@kya-os/cli 1.1.0 → 1.2.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 (139) hide show
  1. package/dist/commands/build.d.ts +5 -0
  2. package/dist/commands/build.d.ts.map +1 -0
  3. package/dist/commands/build.js +173 -0
  4. package/dist/commands/build.js.map +1 -0
  5. package/dist/commands/check.d.ts.map +1 -1
  6. package/dist/commands/check.js +9 -31
  7. package/dist/commands/check.js.map +1 -1
  8. package/dist/commands/claim.d.ts +7 -1
  9. package/dist/commands/claim.d.ts.map +1 -1
  10. package/dist/commands/claim.js +196 -44
  11. package/dist/commands/claim.js.map +1 -1
  12. package/dist/commands/demo.d.ts +10 -0
  13. package/dist/commands/demo.d.ts.map +1 -0
  14. package/dist/commands/demo.js +584 -0
  15. package/dist/commands/demo.js.map +1 -0
  16. package/dist/commands/dev.d.ts +5 -0
  17. package/dist/commands/dev.d.ts.map +1 -0
  18. package/dist/commands/dev.js +111 -0
  19. package/dist/commands/dev.js.map +1 -0
  20. package/dist/commands/doctor.d.ts +11 -0
  21. package/dist/commands/doctor.d.ts.map +1 -0
  22. package/dist/commands/doctor.js +530 -0
  23. package/dist/commands/doctor.js.map +1 -0
  24. package/dist/commands/env.d.ts +1 -1
  25. package/dist/commands/env.d.ts.map +1 -1
  26. package/dist/commands/env.js +113 -15
  27. package/dist/commands/env.js.map +1 -1
  28. package/dist/commands/identity.d.ts +14 -0
  29. package/dist/commands/identity.d.ts.map +1 -0
  30. package/dist/commands/identity.js +204 -0
  31. package/dist/commands/identity.js.map +1 -0
  32. package/dist/commands/init.d.ts +6 -2
  33. package/dist/commands/init.d.ts.map +1 -1
  34. package/dist/commands/init.js +86 -670
  35. package/dist/commands/init.js.map +1 -1
  36. package/dist/commands/receipts.d.ts +11 -0
  37. package/dist/commands/receipts.d.ts.map +1 -0
  38. package/dist/commands/receipts.js +179 -0
  39. package/dist/commands/receipts.js.map +1 -0
  40. package/dist/commands/register.d.ts +15 -0
  41. package/dist/commands/register.d.ts.map +1 -0
  42. package/dist/commands/register.js +220 -0
  43. package/dist/commands/register.js.map +1 -0
  44. package/dist/commands/rotate.d.ts +7 -1
  45. package/dist/commands/rotate.d.ts.map +1 -1
  46. package/dist/commands/rotate.js +149 -109
  47. package/dist/commands/rotate.js.map +1 -1
  48. package/dist/commands/start.d.ts +5 -0
  49. package/dist/commands/start.d.ts.map +1 -0
  50. package/dist/commands/start.js +129 -0
  51. package/dist/commands/start.js.map +1 -0
  52. package/dist/commands/status.d.ts +9 -0
  53. package/dist/commands/status.d.ts.map +1 -0
  54. package/dist/commands/status.js +177 -0
  55. package/dist/commands/status.js.map +1 -0
  56. package/dist/commands/verify.d.ts +22 -0
  57. package/dist/commands/verify.d.ts.map +1 -0
  58. package/dist/commands/verify.js +491 -0
  59. package/dist/commands/verify.js.map +1 -0
  60. package/dist/components/claim-experience.d.ts +21 -0
  61. package/dist/components/claim-experience.d.ts.map +1 -0
  62. package/dist/components/claim-experience.js +138 -0
  63. package/dist/components/claim-experience.js.map +1 -0
  64. package/dist/effects/animation-engine.d.ts +173 -0
  65. package/dist/effects/animation-engine.d.ts.map +1 -0
  66. package/dist/effects/animation-engine.js +254 -0
  67. package/dist/effects/animation-engine.js.map +1 -0
  68. package/dist/effects/cli-integration.js +8 -8
  69. package/dist/effects/cli-integration.js.map +1 -1
  70. package/dist/effects/config.d.ts +86 -10
  71. package/dist/effects/config.d.ts.map +1 -1
  72. package/dist/effects/config.js +201 -18
  73. package/dist/effects/config.js.map +1 -1
  74. package/dist/effects/effect-runner.d.ts +69 -0
  75. package/dist/effects/effect-runner.d.ts.map +1 -0
  76. package/dist/effects/effect-runner.js +255 -0
  77. package/dist/effects/effect-runner.js.map +1 -0
  78. package/dist/effects/gradient.d.ts +131 -0
  79. package/dist/effects/gradient.d.ts.map +1 -0
  80. package/dist/effects/gradient.js +236 -0
  81. package/dist/effects/gradient.js.map +1 -0
  82. package/dist/effects/implementations/beams.d.ts +80 -0
  83. package/dist/effects/implementations/beams.d.ts.map +1 -0
  84. package/dist/effects/implementations/beams.js +221 -0
  85. package/dist/effects/implementations/beams.js.map +1 -0
  86. package/dist/effects/implementations/blackhole.d.ts +98 -0
  87. package/dist/effects/implementations/blackhole.d.ts.map +1 -0
  88. package/dist/effects/implementations/blackhole.js +421 -0
  89. package/dist/effects/implementations/blackhole.js.map +1 -0
  90. package/dist/effects/implementations/burn.d.ts +74 -0
  91. package/dist/effects/implementations/burn.d.ts.map +1 -0
  92. package/dist/effects/implementations/burn.js +234 -0
  93. package/dist/effects/implementations/burn.js.map +1 -0
  94. package/dist/effects/implementations/decrypt.d.ts +115 -0
  95. package/dist/effects/implementations/decrypt.d.ts.map +1 -0
  96. package/dist/effects/implementations/decrypt.js +394 -0
  97. package/dist/effects/implementations/decrypt.js.map +1 -0
  98. package/dist/effects/implementations/waves.d.ts +78 -0
  99. package/dist/effects/implementations/waves.d.ts.map +1 -0
  100. package/dist/effects/implementations/waves.js +278 -0
  101. package/dist/effects/implementations/waves.js.map +1 -0
  102. package/dist/effects/index.d.ts +34 -0
  103. package/dist/effects/index.d.ts.map +1 -0
  104. package/dist/effects/index.js +114 -0
  105. package/dist/effects/index.js.map +1 -0
  106. package/dist/effects/motion-engine.d.ts +168 -0
  107. package/dist/effects/motion-engine.d.ts.map +1 -0
  108. package/dist/effects/motion-engine.js +353 -0
  109. package/dist/effects/motion-engine.js.map +1 -0
  110. package/dist/effects/safe-executor.d.ts +55 -0
  111. package/dist/effects/safe-executor.d.ts.map +1 -0
  112. package/dist/effects/safe-executor.js +210 -0
  113. package/dist/effects/safe-executor.js.map +1 -0
  114. package/dist/effects/types.d.ts +199 -0
  115. package/dist/effects/types.d.ts.map +1 -0
  116. package/dist/effects/types.js +80 -0
  117. package/dist/effects/types.js.map +1 -0
  118. package/dist/effects/utils.d.ts +104 -0
  119. package/dist/effects/utils.d.ts.map +1 -0
  120. package/dist/effects/utils.js +280 -0
  121. package/dist/effects/utils.js.map +1 -0
  122. package/dist/index.js +154 -19
  123. package/dist/utils/env-manager.d.ts +6 -7
  124. package/dist/utils/env-manager.d.ts.map +1 -1
  125. package/dist/utils/env-manager.js +52 -40
  126. package/dist/utils/env-manager.js.map +1 -1
  127. package/dist/utils/identity-manager.d.ts +41 -0
  128. package/dist/utils/identity-manager.d.ts.map +1 -0
  129. package/dist/utils/identity-manager.js +159 -0
  130. package/dist/utils/identity-manager.js.map +1 -0
  131. package/dist/utils/kta-api.d.ts +67 -0
  132. package/dist/utils/kta-api.d.ts.map +1 -0
  133. package/dist/utils/kta-api.js +137 -0
  134. package/dist/utils/kta-api.js.map +1 -0
  135. package/package.json +8 -7
  136. package/dist/utils/validation.d.ts +0 -101
  137. package/dist/utils/validation.d.ts.map +0 -1
  138. package/dist/utils/validation.js +0 -109
  139. package/dist/utils/validation.js.map +0 -1
@@ -1,127 +1,167 @@
1
1
  import chalk from "chalk";
2
2
  import ora from "ora";
3
- import { MCPIdentity } from "@kya-os/mcp-i";
4
- import { EnvManager } from "../utils/env-manager.js";
5
- import { confirmRotation, showSuccess, showError, showWarning, } from "../utils/prompts.js";
6
- import { cliEffects, EffectTrigger } from "../effects/cli-integration.js";
7
- export async function rotate(options) {
8
- console.log(chalk.cyan("\n🔄 Key Rotation\n"));
9
- // Check for existing identity
10
- const envManager = new EnvManager();
11
- const processVars = envManager.getFromProcess();
12
- if (!processVars.MCP_IDENTITY_AGENT_DID) {
13
- showError('No MCP-I identity found. Run "npx kya-os init" first.');
14
- return;
15
- }
16
- // Confirm rotation
17
- if (!options.force) {
18
- const { confirm, reason } = await confirmRotation();
19
- if (!confirm) {
20
- console.log(chalk.gray("\nRotation cancelled."));
21
- return;
22
- }
23
- options.reason = reason;
24
- }
25
- showWarning("Key rotation will generate new cryptographic keys.");
26
- console.log("The old keys will remain valid during a 7-day grace period.\n");
27
- const spinner = ora("Rotating keys...").start();
3
+ import inquirer from "inquirer";
4
+ import { showSuccess, showError, showInfo } from "../utils/prompts.js";
5
+ import { hasDelegation, isKTAAvailable } from "../utils/kta-api.js";
6
+ import { loadCurrentIdentity, archiveOldKey, generateNewIdentity, saveIdentityToDev, generateAuditLine, } from "../utils/identity-manager.js";
7
+ import contractsCli from "@kya-os/contracts/cli";
8
+ const { CLI_EXIT_CODES } = contractsCli;
9
+ /**
10
+ * Rotate identity keys with dev/prod mode handling
11
+ * Requirements: 2.3, 2.4, 2.5, 2.6
12
+ */
13
+ export async function rotate(options = {}) {
14
+ console.log(chalk.cyan("\n🔄 Rotating Identity Keys\n"));
15
+ const { force = false, reason, newDid = false, yes = false } = options;
28
16
  try {
29
- // Initialize identity from existing configuration
30
- const identity = await MCPIdentity.init();
31
- // Check if rotation is available
32
- const keyHealth = identity.checkKeyHealth();
33
- if (!keyHealth) {
34
- spinner.fail("Key rotation not available (using memory storage)");
35
- console.log(chalk.blue("ℹ️ Key rotation requires file storage. Serverless environments cannot rotate keys."));
36
- return;
17
+ // Determine environment
18
+ const isDev = !process.env.AGENT_PRIVATE_KEY;
19
+ const mode = isDev ? "dev" : "prod";
20
+ console.log(`${chalk.bold("Environment:")} ${chalk.gray(mode)}`);
21
+ if (reason) {
22
+ console.log(`${chalk.bold("Reason:")} ${chalk.gray(reason)}`);
37
23
  }
38
- // Show current key health
39
- spinner.info("Current key status:");
40
- console.log(` Age: ${Math.floor(keyHealth.age / (24 * 60 * 60 * 1000))} days`);
41
- console.log(` Signatures: ${keyHealth.signatureCount.toLocaleString()}`);
42
- console.log(` Should rotate: ${keyHealth.shouldRotate ? chalk.yellow("Yes") : chalk.green("No")}`);
43
- // Show burn effect for old keys
44
- spinner.stop();
45
- await cliEffects.showEffect(EffectTrigger.KEY_ROTATION, `🔥 Rotating cryptographic keys...\n\n` +
46
- `Old Key: ${processVars.MCP_IDENTITY_AGENT_PUBLIC_KEY?.substring(0, 16)}...\n` +
47
- `Status: BURNING`);
48
- // Perform rotation
49
- spinner.start("Contacting registry...");
50
- const result = await identity.rotateKeys(options.reason);
51
- if (result.success) {
52
- spinner.succeed("Keys rotated successfully!");
53
- // Show beams effect for new keys
54
- const newKeysText = `🔐 ${chalk.bold("New Keys Generated:")}\n` +
55
- ` Public Key: ${identity.publicKey.substring(0, 32)}...\n` +
56
- ` Grace period ends: ${new Date(result.gracePeriodEnd).toLocaleDateString()}\n` +
57
- ` Old keys remain valid until then`;
58
- await cliEffects.showCustomEffect("beams", newKeysText, {
59
- config: {
60
- duration: 3000,
61
- beamColors: ["00ff00", "00ffff", "ffffff"],
62
- beamCount: 5,
63
- baseColor: "404040",
64
- },
65
- });
66
- // Get new identity info
67
- const newVars = {
68
- MCP_IDENTITY_AGENT_DID: identity.did,
69
- MCP_IDENTITY_AGENT_PUBLIC_KEY: identity.publicKey,
70
- MCP_IDENTITY_AGENT_PRIVATE_KEY: identity.privateKey || "",
71
- MCP_IDENTITY_AGENT_ID: identity.agentId || "",
72
- MCP_IDENTITY_AGENT_SLUG: identity.agentSlug || "",
73
- };
74
- // Update environment files
75
- console.log(`\n${chalk.bold("📄 Updating Environment Files:")}`);
76
- try {
77
- const result = await envManager.smartInsertMcpVariables(newVars, {
78
- force: true,
79
- });
80
- if (result.success) {
81
- const operation = result.operation === "created"
82
- ? "Created"
83
- : result.operation === "updated"
84
- ? "Updated"
85
- : "Replaced variables in";
86
- console.log(` ✓ ${operation} ${chalk.green(result.targetFile)}`);
87
- // Show warnings if any
88
- if (result.warnings.length > 0) {
89
- result.warnings.forEach((warning) => {
90
- console.log(` ${chalk.yellow("⚠")} ${warning}`);
91
- });
24
+ // Load current identity
25
+ const currentIdentity = loadCurrentIdentity();
26
+ if (!currentIdentity) {
27
+ showError("No current identity found. Run 'mcpi init' first.");
28
+ process.exit(CLI_EXIT_CODES.NOIDENTITY);
29
+ }
30
+ console.log(`\n${chalk.bold("Current Identity:")}`);
31
+ console.log(` DID: ${chalk.gray(currentIdentity.did)}`);
32
+ console.log(` Key ID: ${chalk.gray(currentIdentity.keyId)}`);
33
+ // Production mode validation
34
+ if (!isDev) {
35
+ console.log(`\n${chalk.bold("🔒 Production Mode Detected")}`);
36
+ if (!force) {
37
+ // Check delegation via KTA lookup by DID/KID (Requirement 2.4)
38
+ const spinner = ora("Checking delegation status via KTA...").start();
39
+ try {
40
+ const ktaAvailable = await isKTAAvailable();
41
+ if (!ktaAvailable) {
42
+ spinner.fail("KTA is not reachable");
43
+ showError("Cannot verify delegation status - KTA is unavailable");
44
+ console.log(`\n${chalk.gray("To proceed:")}`);
45
+ console.log(`${chalk.gray("• Check your internet connection")}`);
46
+ console.log(`${chalk.gray("• Verify KTA service status")}`);
47
+ console.log(`${chalk.gray(" Or use --force with --yes for emergency rotation")}`);
48
+ process.exit(CLI_EXIT_CODES.CONFIG);
49
+ }
50
+ const delegationExists = await hasDelegation(currentIdentity.did, currentIdentity.keyId);
51
+ if (delegationExists) {
52
+ spinner.succeed("Delegation verified via KTA");
92
53
  }
54
+ else {
55
+ spinner.fail("No delegation found for current key");
56
+ showError("Key rotation requires delegation to new key ID or --force flag");
57
+ console.log(`\n${chalk.gray("To proceed:")}`);
58
+ console.log(`${chalk.gray("• Set up delegation via KTA for the new key")}`);
59
+ console.log(`${chalk.gray("• Or use --force with --yes for emergency rotation")}`);
60
+ process.exit(CLI_EXIT_CODES.CONFIG);
61
+ }
62
+ }
63
+ catch (error) {
64
+ spinner.fail("Failed to check delegation");
65
+ showError(`Delegation check failed: ${error}`);
66
+ console.log(`\n${chalk.gray("To proceed:")}`);
67
+ console.log(`${chalk.gray("• Check your KYA_VOUCHED_API_KEY environment variable")}`);
68
+ console.log(`${chalk.gray("• Verify your network connection")}`);
69
+ console.log(`${chalk.gray("• Or use --force with --yes for emergency rotation")}`);
70
+ process.exit(CLI_EXIT_CODES.CONFIG);
93
71
  }
94
- else {
95
- console.log(` ✗ Failed to update environment files: ${result.warnings.join(", ")}`);
72
+ }
73
+ else {
74
+ // Force mode requires confirmation (Requirement 2.5)
75
+ if (!yes) {
76
+ console.log(`\n${chalk.red("⚠️ FORCE ROTATION WARNING")}`);
77
+ console.log(`${chalk.gray("This will rotate keys without delegation check.")}`);
78
+ console.log(`${chalk.gray("Current DID:")} ${chalk.yellow(currentIdentity.did)}`);
79
+ console.log(`${chalk.gray("Current Key ID:")} ${chalk.yellow(currentIdentity.keyId)}`);
80
+ const { confirmed } = await inquirer.prompt([
81
+ {
82
+ type: "confirm",
83
+ name: "confirmed",
84
+ message: "Are you sure you want to force rotate keys?",
85
+ default: false,
86
+ },
87
+ ]);
88
+ if (!confirmed) {
89
+ console.log(chalk.yellow("Key rotation cancelled."));
90
+ return;
91
+ }
96
92
  }
97
93
  }
94
+ }
95
+ // Development mode - archive old key (Requirement 2.3)
96
+ let archiveFile;
97
+ if (isDev) {
98
+ const spinner = ora("Archiving old key...").start();
99
+ try {
100
+ archiveFile = archiveOldKey(currentIdentity, reason);
101
+ spinner.succeed(`Old key archived to: ${archiveFile}`);
102
+ }
98
103
  catch (error) {
99
- console.log(` ✗ Failed to update environment files: ${error.message}`);
104
+ spinner.fail("Failed to archive old key");
105
+ throw error;
106
+ }
107
+ }
108
+ // Generate new keys
109
+ const spinner = ora("Generating new keys...").start();
110
+ try {
111
+ // Generate new identity (keeping same DID unless --new-did)
112
+ const preserveDID = newDid ? undefined : currentIdentity.did;
113
+ const newIdentity = generateNewIdentity(preserveDID);
114
+ // Save new identity in development mode
115
+ if (isDev) {
116
+ saveIdentityToDev(newIdentity);
117
+ }
118
+ spinner.succeed("New keys generated successfully!");
119
+ console.log(`\n${chalk.bold("New Identity:")}`);
120
+ console.log(` DID: ${chalk.gray(newIdentity.did)}`);
121
+ console.log(` Key ID: ${chalk.gray(newIdentity.keyId)}`);
122
+ // Emit audit line (Requirement 2.6)
123
+ const delegated = !isDev && !force;
124
+ const auditLine = generateAuditLine(currentIdentity.keyId, newIdentity.keyId, newIdentity.did, mode, delegated, force);
125
+ console.log(`\n${chalk.bold("📋 Audit Log:")}`);
126
+ console.log(` ${chalk.gray(auditLine)}`);
127
+ showSuccess("Key rotation completed successfully!");
128
+ console.log(`\n${chalk.bold("🚀 Next Steps:")}`);
129
+ if (isDev) {
130
+ console.log(` ${chalk.gray("• Restart your development server")}`);
131
+ console.log(` ${chalk.gray("• Test with:")} ${chalk.cyan("mcpi dev")}`);
132
+ if (archiveFile) {
133
+ console.log(` ${chalk.gray("• Old key archived at:")} ${chalk.cyan(archiveFile)}`);
134
+ }
135
+ }
136
+ else {
137
+ console.log(` ${chalk.gray("• Update production environment variables:")}`);
138
+ console.log(` ${chalk.gray("AGENT_PRIVATE_KEY=")}${chalk.yellow(newIdentity.privateKey)}`);
139
+ console.log(` ${chalk.gray("AGENT_KEY_ID=")}${chalk.yellow(newIdentity.keyId)}`);
140
+ if (newDid) {
141
+ console.log(` ${chalk.gray("AGENT_DID=")}${chalk.yellow(newIdentity.did)}`);
142
+ }
143
+ console.log(` ${chalk.gray("• Deploy updated configuration")}`);
144
+ console.log(` ${chalk.gray("• Verify with:")} ${chalk.cyan("mcpi status")}`);
145
+ }
146
+ if (!newDid) {
147
+ showInfo("DID remained unchanged. Use --new-did to generate a new DID.");
148
+ }
149
+ if (newDid && isDev) {
150
+ showInfo("New DID generated. You may need to re-register with KTA.");
100
151
  }
101
- showSuccess("Key rotation complete!");
102
- console.log(`\n${chalk.bold("⚠️ Important Next Steps:")}`);
103
- console.log("\n1. Update production environment variables:");
104
- console.log(` ${chalk.cyan("npx kya-os env copy")}`);
105
- console.log("\n2. Deploy your application with new keys");
106
- console.log("\n3. Monitor for any authentication issues");
107
- console.log(`\n${chalk.yellow("Note:")} Both old and new keys will work for 7 days.`);
108
152
  }
109
- else {
153
+ catch (error) {
110
154
  spinner.fail("Key rotation failed");
111
- showError(result.error || "Unknown error during rotation");
155
+ throw error;
112
156
  }
113
157
  }
114
158
  catch (error) {
115
- spinner.fail("Key rotation failed");
116
- if (error.message?.includes("429")) {
117
- showError("Rate limit exceeded. Please try again later.");
118
- }
119
- else if (error.message?.includes("Network")) {
120
- showError("Network error. Check your internet connection.");
121
- }
122
- else {
123
- showError(error.message || "Failed to rotate keys");
124
- }
159
+ showError(`Key rotation failed: ${error.message}`);
160
+ console.log(`\n${chalk.gray("You can:")}`);
161
+ console.log(`${chalk.gray(" Check your current identity with:")} ${chalk.cyan("mcpi status")}`);
162
+ console.log(`${chalk.gray("• Try with --force flag (production only)")}`);
163
+ console.log(`${chalk.gray("• Check file permissions and network connectivity")}`);
164
+ process.exit(CLI_EXIT_CODES.GENERAL_ERROR);
125
165
  }
126
166
  }
127
167
  //# sourceMappingURL=rotate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rotate.js","sourceRoot":"","sources":["../../src/commands/rotate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rotate.js","sourceRoot":"","sources":["../../src/commands/rotate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Start the XMCP-I application in production mode
3
+ */
4
+ export declare function start(): Promise<void>;
5
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAsB,KAAK,kBA2J1B"}
@@ -0,0 +1,129 @@
1
+ import chalk from "chalk";
2
+ import { spawn } from "child_process";
3
+ import { existsSync, readFileSync } from "fs";
4
+ import { join } from "path";
5
+ import { showError, showInfo } from "../utils/prompts.js";
6
+ /**
7
+ * Start the XMCP-I application in production mode
8
+ */
9
+ export async function start() {
10
+ console.log(chalk.cyan("\n🚀 Starting Production Server\n"));
11
+ // Check if we're in a valid XMCP-I project
12
+ const packageJsonPath = join(process.cwd(), "package.json");
13
+ if (!existsSync(packageJsonPath)) {
14
+ showError("No package.json found. Are you in a valid project directory?");
15
+ process.exit(1);
16
+ }
17
+ // Check for mcpi dependency
18
+ try {
19
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
20
+ const hasmcpi = packageJson.dependencies?.mcpi ||
21
+ packageJson.devDependencies?.mcpi ||
22
+ packageJson.dependencies?.["@kya-os/mcp-i"] ||
23
+ packageJson.devDependencies?.["@kya-os/mcp-i"] ||
24
+ packageJson.dependencies?.["@kya-os/mcpi"] ||
25
+ packageJson.devDependencies?.["@kya-os/mcpi"];
26
+ if (!hasmcpi) {
27
+ showError("This doesn't appear to be an XMCP-I project. Missing mcpi dependency.");
28
+ console.log(`\n${chalk.gray("To create a new XMCP-I project:")}`);
29
+ console.log(`${chalk.cyan("npx @kya-os/create-mcpi-app my-agent")}`);
30
+ process.exit(1);
31
+ }
32
+ }
33
+ catch (error) {
34
+ showError("Failed to read package.json");
35
+ process.exit(1);
36
+ }
37
+ // Check for production environment variables
38
+ const requiredEnvVars = [
39
+ "AGENT_PRIVATE_KEY",
40
+ "AGENT_KEY_ID",
41
+ "AGENT_DID",
42
+ "KYA_VOUCHED_API_KEY",
43
+ ];
44
+ const missingVars = requiredEnvVars.filter((varName) => !process.env[varName]);
45
+ if (missingVars.length > 0) {
46
+ showError("Missing required production environment variables:");
47
+ missingVars.forEach((varName) => {
48
+ console.log(` ${chalk.red("✗")} ${chalk.gray(varName)}`);
49
+ });
50
+ console.log(`\n${chalk.gray("Set these environment variables or run in development mode:")}`);
51
+ console.log(`${chalk.cyan("mcpi dev")}`);
52
+ console.log(`\n${chalk.gray("For platform-specific variable names:")}`);
53
+ console.log(`${chalk.cyan("mcpi env show")}`);
54
+ process.exit(21); // XMCP_I_ENOIDENTITY
55
+ }
56
+ // Determine start command
57
+ let command = "npm";
58
+ let args = ["run", "start"];
59
+ try {
60
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
61
+ if (!packageJson.scripts?.start) {
62
+ // Try alternative start approaches
63
+ const outputDirs = ["dist", "build", "out"];
64
+ const foundOutput = outputDirs.find((dir) => existsSync(join(process.cwd(), dir)));
65
+ if (foundOutput) {
66
+ // Look for entry points in output directory
67
+ const entryPoints = ["server.js", "index.js", "main.js"];
68
+ const entryPoint = entryPoints.find((entry) => existsSync(join(process.cwd(), foundOutput, entry)));
69
+ if (entryPoint) {
70
+ command = "node";
71
+ args = [join(foundOutput, entryPoint)];
72
+ showInfo(`No start script found, running ${foundOutput}/${entryPoint} directly.`);
73
+ }
74
+ else {
75
+ showError(`Build output found in ${foundOutput}/ but no entry point detected.`);
76
+ console.log(`\n${chalk.gray("Expected one of:")}`);
77
+ entryPoints.forEach((entry) => {
78
+ console.log(`${chalk.gray(`• ${foundOutput}/${entry}`)}`);
79
+ });
80
+ process.exit(1);
81
+ }
82
+ }
83
+ else {
84
+ showError("No start script found and no build output detected.");
85
+ console.log(`\n${chalk.gray("Expected one of:")}`);
86
+ console.log(`${chalk.gray("• npm script 'start' in package.json")}`);
87
+ console.log(`${chalk.gray("• Built output in dist/, build/, or out/")}`);
88
+ console.log(`\n${chalk.gray("Try building first:")}`);
89
+ console.log(`${chalk.cyan("mcpi build")}`);
90
+ process.exit(1);
91
+ }
92
+ }
93
+ }
94
+ catch (error) {
95
+ showError("Failed to parse package.json");
96
+ process.exit(1);
97
+ }
98
+ console.log(`${chalk.gray("Running:")} ${chalk.cyan(`${command} ${args.join(" ")}`)}`);
99
+ console.log(`${chalk.gray("Environment:")} ${chalk.green("production")}`);
100
+ console.log(`${chalk.gray("Press Ctrl+C to stop")}\n`);
101
+ // Spawn the production process
102
+ const child = spawn(command, args, {
103
+ stdio: "inherit",
104
+ shell: true,
105
+ env: {
106
+ ...process.env,
107
+ NODE_ENV: "production",
108
+ },
109
+ });
110
+ // Handle process termination
111
+ process.on("SIGINT", () => {
112
+ console.log(chalk.yellow("\n\n🛑 Stopping production server..."));
113
+ child.kill("SIGINT");
114
+ });
115
+ process.on("SIGTERM", () => {
116
+ child.kill("SIGTERM");
117
+ });
118
+ child.on("error", (error) => {
119
+ showError(`Failed to start production server: ${error.message}`);
120
+ process.exit(1);
121
+ });
122
+ child.on("exit", (code) => {
123
+ if (code !== 0 && code !== null) {
124
+ showError(`Production server exited with code ${code}`);
125
+ process.exit(code);
126
+ }
127
+ });
128
+ }
129
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ interface StatusOptions {
2
+ json?: boolean;
3
+ }
4
+ /**
5
+ * Display agent status including DID, key ID, KTA URL, mirror status, and last handshake
6
+ */
7
+ export declare function status(options?: StatusOptions): Promise<void>;
8
+ export {};
9
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAOA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,iBAuNvD"}