@kya-os/cli 1.1.0 → 1.2.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.
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
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Identity management utilities for key rotation and archiving
3
+ */
4
+ import { existsSync, mkdirSync, writeFileSync, readFileSync, unlinkSync, } from "fs";
5
+ import { join } from "path";
6
+ import crypto from "crypto";
7
+ /**
8
+ * Generate a new Ed25519 keypair
9
+ */
10
+ export function generateKeyPair() {
11
+ // Generate Ed25519 keypair
12
+ const { privateKey, publicKey } = crypto.generateKeyPairSync("ed25519", {
13
+ privateKeyEncoding: { type: "pkcs8", format: "der" },
14
+ publicKeyEncoding: { type: "spki", format: "der" },
15
+ });
16
+ // Convert to base64
17
+ const privateKeyBase64 = Buffer.from(privateKey).toString("base64");
18
+ const publicKeyBase64 = Buffer.from(publicKey).toString("base64");
19
+ // Generate key ID (first 8 chars of public key hash)
20
+ const keyId = `key-${crypto.createHash("sha256").update(publicKey).digest("hex").slice(0, 8)}`;
21
+ return {
22
+ privateKey: privateKeyBase64,
23
+ publicKey: publicKeyBase64,
24
+ keyId,
25
+ };
26
+ }
27
+ /**
28
+ * Generate a new DID based on the current environment
29
+ */
30
+ export function generateDID(keyId) {
31
+ const isDev = !process.env.AGENT_PRIVATE_KEY;
32
+ if (isDev) {
33
+ // Development DID
34
+ return `did:web:localhost:3000:agents:${keyId}`;
35
+ }
36
+ else {
37
+ // Production DID - should be configured via environment
38
+ const existingDID = process.env.AGENT_DID;
39
+ if (existingDID) {
40
+ return existingDID;
41
+ }
42
+ throw new Error("AGENT_DID environment variable is required in production");
43
+ }
44
+ }
45
+ /**
46
+ * Load current identity from file or environment
47
+ */
48
+ export function loadCurrentIdentity() {
49
+ const isDev = !process.env.AGENT_PRIVATE_KEY;
50
+ if (isDev) {
51
+ // Load from .mcpi/identity.json
52
+ const identityFile = join(process.cwd(), ".mcpi", "identity.json");
53
+ if (!existsSync(identityFile)) {
54
+ return null;
55
+ }
56
+ try {
57
+ const data = JSON.parse(readFileSync(identityFile, "utf-8"));
58
+ return data;
59
+ }
60
+ catch (error) {
61
+ console.warn(`Warning: Could not load identity file: ${error}`);
62
+ return null;
63
+ }
64
+ }
65
+ else {
66
+ // Load from environment variables
67
+ const privateKey = process.env.AGENT_PRIVATE_KEY;
68
+ const keyId = process.env.AGENT_KEY_ID;
69
+ const did = process.env.AGENT_DID;
70
+ if (!privateKey || !keyId || !did) {
71
+ return null;
72
+ }
73
+ // We don't have public key in env, but we can derive it from private key if needed
74
+ return {
75
+ version: "1.0",
76
+ did,
77
+ keyId,
78
+ privateKey,
79
+ publicKey: "", // Not available from env
80
+ createdAt: new Date().toISOString(),
81
+ lastRotated: new Date().toISOString(),
82
+ };
83
+ }
84
+ }
85
+ /**
86
+ * Archive old key to .mcpi/keys/YYYY-MM-DD.json
87
+ */
88
+ export function archiveOldKey(identity, reason) {
89
+ const keysDir = join(process.cwd(), ".mcpi", "keys");
90
+ if (!existsSync(keysDir)) {
91
+ mkdirSync(keysDir, { recursive: true });
92
+ }
93
+ // Create archive filename with timestamp
94
+ const timestamp = new Date().toISOString().split("T")[0]; // YYYY-MM-DD
95
+ let archiveFile = join(keysDir, `${timestamp}.json`);
96
+ // If file exists, add a counter
97
+ let counter = 1;
98
+ while (existsSync(archiveFile)) {
99
+ archiveFile = join(keysDir, `${timestamp}-${counter}.json`);
100
+ counter++;
101
+ }
102
+ const archiveData = {
103
+ did: identity.did,
104
+ keyId: identity.keyId,
105
+ privateKey: identity.privateKey,
106
+ publicKey: identity.publicKey,
107
+ archivedAt: new Date().toISOString(),
108
+ reason: reason || "Key rotation",
109
+ originalCreatedAt: identity.createdAt,
110
+ originalLastRotated: identity.lastRotated,
111
+ };
112
+ writeFileSync(archiveFile, JSON.stringify(archiveData, null, 2));
113
+ return archiveFile;
114
+ }
115
+ /**
116
+ * Generate new identity with optional DID preservation
117
+ */
118
+ export function generateNewIdentity(preserveDID) {
119
+ const { privateKey, publicKey, keyId } = generateKeyPair();
120
+ const did = preserveDID || generateDID(keyId);
121
+ const now = new Date().toISOString();
122
+ return {
123
+ version: "1.0",
124
+ did,
125
+ keyId,
126
+ privateKey,
127
+ publicKey,
128
+ createdAt: now,
129
+ lastRotated: now,
130
+ };
131
+ }
132
+ /**
133
+ * Save identity to development file
134
+ */
135
+ export function saveIdentityToDev(identity) {
136
+ const mcpiDir = join(process.cwd(), ".mcpi");
137
+ if (!existsSync(mcpiDir)) {
138
+ mkdirSync(mcpiDir, { recursive: true });
139
+ }
140
+ const identityFile = join(mcpiDir, "identity.json");
141
+ writeFileSync(identityFile, JSON.stringify(identity, null, 2));
142
+ }
143
+ /**
144
+ * Clear development identity file
145
+ */
146
+ export function clearDevIdentity() {
147
+ const identityFile = join(process.cwd(), ".mcpi", "identity.json");
148
+ if (existsSync(identityFile)) {
149
+ unlinkSync(identityFile);
150
+ }
151
+ }
152
+ /**
153
+ * Generate audit line for key rotation
154
+ */
155
+ export function generateAuditLine(oldKeyId, newKeyId, did, mode, delegated, forced) {
156
+ const ts = Math.floor(Date.now() / 1000);
157
+ return `keys.rotate.v1 ts=${ts} did=${did} oldKid=${oldKeyId} newKid=${newKeyId} mode=${mode} delegated=${delegated ? "yes" : "no"} force=${forced ? "yes" : "no"}`;
158
+ }
159
+ //# sourceMappingURL=identity-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-manager.js","sourceRoot":"","sources":["../../src/utils/identity-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Know-That-AI (KTA) API utilities
3
+ * Handles delegation checking and other KTA API interactions
4
+ */
5
+ import { z } from "zod";
6
+ import type { AgentStatus } from "@kya-os/contracts/registry";
7
+ /**
8
+ * Delegation status response from KTA
9
+ */
10
+ export declare const DelegationStatusSchema: z.ZodObject<{
11
+ did: z.ZodString;
12
+ keyId: z.ZodString;
13
+ status: z.ZodEnum<["active", "revoked", "not_found"]>;
14
+ delegatedTo: z.ZodOptional<z.ZodString>;
15
+ expiresAt: z.ZodOptional<z.ZodNumber>;
16
+ lastUpdated: z.ZodNumber;
17
+ }, "strip", z.ZodTypeAny, {
18
+ did: string;
19
+ keyId: string;
20
+ status: "active" | "revoked" | "not_found";
21
+ lastUpdated: number;
22
+ delegatedTo?: string | undefined;
23
+ expiresAt?: number | undefined;
24
+ }, {
25
+ did: string;
26
+ keyId: string;
27
+ status: "active" | "revoked" | "not_found";
28
+ lastUpdated: number;
29
+ delegatedTo?: string | undefined;
30
+ expiresAt?: number | undefined;
31
+ }>;
32
+ export type DelegationStatus = z.infer<typeof DelegationStatusSchema>;
33
+ /**
34
+ * KTA API client for delegation checking
35
+ */
36
+ export declare class KTAApiClient {
37
+ private baseURL;
38
+ private apiKey?;
39
+ constructor(baseURL?: string, apiKey?: string);
40
+ /**
41
+ * Check delegation status for a DID/KeyID pair
42
+ * This is the exact KTA lookup API used for delegation confirmation
43
+ */
44
+ checkDelegation(did: string, keyId: string): Promise<DelegationStatus>;
45
+ /**
46
+ * Check if KTA is reachable
47
+ */
48
+ isReachable(): Promise<boolean>;
49
+ /**
50
+ * Get agent status from KTA
51
+ */
52
+ getAgentStatus(did: string): Promise<AgentStatus>;
53
+ }
54
+ /**
55
+ * Default KTA API client instance
56
+ */
57
+ export declare const ktaApi: KTAApiClient;
58
+ /**
59
+ * Check if a delegation exists for the given DID/KeyID pair
60
+ * Returns true if delegation is active, false otherwise
61
+ */
62
+ export declare function hasDelegation(did: string, keyId: string): Promise<boolean>;
63
+ /**
64
+ * Check if KTA is available
65
+ */
66
+ export declare function isKTAAvailable(): Promise<boolean>;
67
+ //# sourceMappingURL=kta-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kta-api.d.ts","sourceRoot":"","sources":["../../src/utils/kta-api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;EAOjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,OAAO,GAAE,MAAqB,EAAE,MAAM,CAAC,EAAE,MAAM;IAM3D;;;OAGG;IACG,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA4C5E;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAgBrC;;OAEG;IACG,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CA2BxD;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,cAAqB,CAAC;AAEzC;;;GAGG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC,CASlB;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAEvD"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Know-That-AI (KTA) API utilities
3
+ * Handles delegation checking and other KTA API interactions
4
+ */
5
+ import { z } from "zod";
6
+ import contractsRegistry from "@kya-os/contracts/registry";
7
+ const { KTA_BASE_URL, AgentStatusSchema } = contractsRegistry;
8
+ /**
9
+ * Delegation status response from KTA
10
+ */
11
+ export const DelegationStatusSchema = z.object({
12
+ did: z.string(),
13
+ keyId: z.string(),
14
+ status: z.enum(["active", "revoked", "not_found"]),
15
+ delegatedTo: z.string().optional(),
16
+ expiresAt: z.number().optional(),
17
+ lastUpdated: z.number(),
18
+ });
19
+ /**
20
+ * KTA API client for delegation checking
21
+ */
22
+ export class KTAApiClient {
23
+ constructor(baseURL = KTA_BASE_URL, apiKey) {
24
+ this.baseURL = baseURL;
25
+ this.apiKey =
26
+ apiKey || process.env.KYA_VOUCHED_API_KEY || process.env.VOUCHED_API_KEY;
27
+ }
28
+ /**
29
+ * Check delegation status for a DID/KeyID pair
30
+ * This is the exact KTA lookup API used for delegation confirmation
31
+ */
32
+ async checkDelegation(did, keyId) {
33
+ const url = new URL(`/api/v1/delegations/status`, this.baseURL);
34
+ url.searchParams.set("did", did);
35
+ url.searchParams.set("keyId", keyId);
36
+ const headers = {
37
+ "Content-Type": "application/json",
38
+ "User-Agent": "mcpi-cli/1.0.0",
39
+ };
40
+ if (this.apiKey) {
41
+ headers["Authorization"] = `Bearer ${this.apiKey}`;
42
+ }
43
+ try {
44
+ const response = await fetch(url.toString(), {
45
+ method: "GET",
46
+ headers,
47
+ });
48
+ if (!response.ok) {
49
+ if (response.status === 404) {
50
+ return {
51
+ did,
52
+ keyId,
53
+ status: "not_found",
54
+ lastUpdated: Date.now(),
55
+ };
56
+ }
57
+ throw new Error(`KTA API error: ${response.status} ${response.statusText}`);
58
+ }
59
+ const data = await response.json();
60
+ return DelegationStatusSchema.parse(data);
61
+ }
62
+ catch (error) {
63
+ if (error instanceof Error) {
64
+ throw new Error(`Failed to check delegation: ${error.message}`);
65
+ }
66
+ throw new Error("Failed to check delegation: Unknown error");
67
+ }
68
+ }
69
+ /**
70
+ * Check if KTA is reachable
71
+ */
72
+ async isReachable() {
73
+ try {
74
+ const response = await fetch(`${this.baseURL}/api/health`, {
75
+ method: "GET",
76
+ headers: {
77
+ "User-Agent": "mcpi-cli/1.0.0",
78
+ },
79
+ // Short timeout for health check
80
+ signal: AbortSignal.timeout(5000),
81
+ });
82
+ return response.ok;
83
+ }
84
+ catch {
85
+ return false;
86
+ }
87
+ }
88
+ /**
89
+ * Get agent status from KTA
90
+ */
91
+ async getAgentStatus(did) {
92
+ const url = new URL(`/api/v1/agents/status`, this.baseURL);
93
+ url.searchParams.set("did", did);
94
+ const headers = {
95
+ "Content-Type": "application/json",
96
+ "User-Agent": "mcpi-cli/1.0.0",
97
+ };
98
+ if (this.apiKey) {
99
+ headers["Authorization"] = `Bearer ${this.apiKey}`;
100
+ }
101
+ const response = await fetch(url.toString(), {
102
+ method: "GET",
103
+ headers,
104
+ });
105
+ if (!response.ok) {
106
+ throw new Error(`KTA API error: ${response.status} ${response.statusText}`);
107
+ }
108
+ const data = await response.json();
109
+ return AgentStatusSchema.parse(data);
110
+ }
111
+ }
112
+ /**
113
+ * Default KTA API client instance
114
+ */
115
+ export const ktaApi = new KTAApiClient();
116
+ /**
117
+ * Check if a delegation exists for the given DID/KeyID pair
118
+ * Returns true if delegation is active, false otherwise
119
+ */
120
+ export async function hasDelegation(did, keyId) {
121
+ try {
122
+ const status = await ktaApi.checkDelegation(did, keyId);
123
+ return status.status === "active";
124
+ }
125
+ catch (error) {
126
+ // If we can't check delegation, assume false for safety
127
+ console.warn(`Warning: Could not check delegation status: ${error}`);
128
+ return false;
129
+ }
130
+ }
131
+ /**
132
+ * Check if KTA is available
133
+ */
134
+ export async function isKTAAvailable() {
135
+ return ktaApi.isReachable();
136
+ }
137
+ //# sourceMappingURL=kta-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kta-api.js","sourceRoot":"","sources":["../../src/utils/kta-api.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kya-os/cli",
3
- "version": "1.1.0",
4
- "description": "CLI for KYA-OS MCP-I setup and management",
3
+ "version": "1.2.0",
4
+ "description": "CLI for MCP-I setup and management",
5
5
  "keywords": [
6
6
  "cli",
7
7
  "kya-os",
@@ -19,7 +19,7 @@
19
19
  "main": "dist/index.js",
20
20
  "type": "module",
21
21
  "bin": {
22
- "kya-os": "./dist/index.js"
22
+ "mcpi": "./dist/index.js"
23
23
  },
24
24
  "files": [
25
25
  "dist",
@@ -41,8 +41,7 @@
41
41
  "demo:fast": "tsx src/index.ts demo --init --fast"
42
42
  },
43
43
  "dependencies": {
44
- "@kya-os/cli-effects": "^1.0.9",
45
- "@kya-os/mcp-i": "^0.1.0-alpha.3.8",
44
+ "@kya-os/contracts": "workspace:*",
46
45
  "boxen": "^8.0.1",
47
46
  "chalk": "^5.3.0",
48
47
  "cli-table3": "^0.6.5",
@@ -50,10 +49,12 @@
50
49
  "figlet": "^1.8.0",
51
50
  "gradient-string": "^3.0.0",
52
51
  "inquirer": "^9.2.23",
52
+ "jose": "^5.10.0",
53
53
  "node-fetch": "^3.3.2",
54
54
  "open": "^10.1.2",
55
55
  "ora": "^8.0.1",
56
56
  "terminal-image": "^3.1.1",
57
+ "@kya-os/mcp-i": "workspace:*",
57
58
  "zod": "^3.23.8"
58
59
  },
59
60
  "devDependencies": {
@@ -61,10 +62,10 @@
61
62
  "@types/inquirer": "^9.0.0",
62
63
  "@types/node": "^20.0.0",
63
64
  "@types/node-fetch": "^2.6.11",
64
- "@vitest/coverage-v8": "^1.2.0",
65
+ "@vitest/coverage-v8": "^2.0.0",
65
66
  "tsx": "^4.0.0",
66
67
  "typescript": "^5.0.0",
67
- "vitest": "^1.2.0"
68
+ "vitest": "^2.0.0"
68
69
  },
69
70
  "engines": {
70
71
  "node": ">=16.0.0"
@@ -1,101 +0,0 @@
1
- /**
2
- * Validation Schemas
3
- * Using Zod for runtime validation of CLI inputs
4
- */
5
- import { z } from "zod";
6
- /**
7
- * Agent name validation
8
- * - Must be 3-64 characters
9
- * - Only lowercase letters, numbers, and hyphens
10
- * - Must start with a letter
11
- * - Cannot end with a hyphen
12
- */
13
- export declare const agentNameSchema: z.ZodString;
14
- /**
15
- * Agent description validation
16
- */
17
- export declare const agentDescriptionSchema: z.ZodOptional<z.ZodString>;
18
- /**
19
- * Repository URL validation
20
- */
21
- export declare const repositoryUrlSchema: z.ZodOptional<z.ZodString>;
22
- /**
23
- * DID validation
24
- */
25
- export declare const didSchema: z.ZodString;
26
- /**
27
- * Environment variable validation
28
- */
29
- export declare const envVariableSchema: z.ZodObject<{
30
- MCP_IDENTITY_AGENT_DID: z.ZodString;
31
- MCP_IDENTITY_AGENT_PUBLIC_KEY: z.ZodString;
32
- MCP_IDENTITY_AGENT_PRIVATE_KEY: z.ZodString;
33
- MCP_IDENTITY_AGENT_ID: z.ZodString;
34
- MCP_IDENTITY_AGENT_SLUG: z.ZodString;
35
- }, "strip", z.ZodTypeAny, {
36
- MCP_IDENTITY_AGENT_DID: string;
37
- MCP_IDENTITY_AGENT_PUBLIC_KEY: string;
38
- MCP_IDENTITY_AGENT_PRIVATE_KEY: string;
39
- MCP_IDENTITY_AGENT_ID: string;
40
- MCP_IDENTITY_AGENT_SLUG: string;
41
- }, {
42
- MCP_IDENTITY_AGENT_DID: string;
43
- MCP_IDENTITY_AGENT_PUBLIC_KEY: string;
44
- MCP_IDENTITY_AGENT_PRIVATE_KEY: string;
45
- MCP_IDENTITY_AGENT_ID: string;
46
- MCP_IDENTITY_AGENT_SLUG: string;
47
- }>;
48
- /**
49
- * Init command options validation
50
- */
51
- export declare const initOptionsSchema: z.ZodObject<{
52
- name: z.ZodOptional<z.ZodString>;
53
- description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
54
- repository: z.ZodOptional<z.ZodOptional<z.ZodString>>;
55
- platform: z.ZodOptional<z.ZodString>;
56
- skipRegistration: z.ZodOptional<z.ZodBoolean>;
57
- force: z.ZodOptional<z.ZodBoolean>;
58
- verbose: z.ZodOptional<z.ZodBoolean>;
59
- local: z.ZodOptional<z.ZodBoolean>;
60
- endpoint: z.ZodOptional<z.ZodString>;
61
- skipClaimCheck: z.ZodOptional<z.ZodBoolean>;
62
- }, "strip", z.ZodTypeAny, {
63
- name?: string | undefined;
64
- description?: string | undefined;
65
- repository?: string | undefined;
66
- platform?: string | undefined;
67
- skipRegistration?: boolean | undefined;
68
- force?: boolean | undefined;
69
- verbose?: boolean | undefined;
70
- local?: boolean | undefined;
71
- endpoint?: string | undefined;
72
- skipClaimCheck?: boolean | undefined;
73
- }, {
74
- name?: string | undefined;
75
- description?: string | undefined;
76
- repository?: string | undefined;
77
- platform?: string | undefined;
78
- skipRegistration?: boolean | undefined;
79
- force?: boolean | undefined;
80
- verbose?: boolean | undefined;
81
- local?: boolean | undefined;
82
- endpoint?: string | undefined;
83
- skipClaimCheck?: boolean | undefined;
84
- }>;
85
- /**
86
- * Platform validation
87
- */
88
- export declare const platformSchema: z.ZodEnum<["vercel", "nextjs", "netlify", "cloudflare", "aws-lambda", "heroku", "docker", "nodejs", "other"]>;
89
- /**
90
- * Directory configuration validation
91
- */
92
- export declare const directoryConfigSchema: z.ZodUnion<[z.ZodLiteral<"verified">, z.ZodLiteral<"none">, z.ZodArray<z.ZodString, "many">]>;
93
- /**
94
- * Validate input with helpful error messages
95
- */
96
- export declare function validateInput<T>(schema: z.ZodSchema<T>, data: unknown, fieldName: string): T;
97
- /**
98
- * Safe parse with default value
99
- */
100
- export declare function safeParseWithDefault<T>(schema: z.ZodSchema<T>, data: unknown, defaultValue: T): T;
101
- //# sourceMappingURL=validation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,aAOzB,CAAC;AAEJ;;GAEG;AACH,eAAO,MAAM,sBAAsB,4BAItB,CAAC;AAEd;;GAEG;AACH,eAAO,MAAM,mBAAmB,4BAOnB,CAAC;AAEd;;GAEG;AACH,eAAO,MAAM,SAAS,aAEwC,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;EAM5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc,+GAUzB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,qBAAqB,+FAIhC,CAAC;AAEH;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EACtB,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,MAAM,GAChB,CAAC,CAUH;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EACtB,IAAI,EAAE,OAAO,EACb,YAAY,EAAE,CAAC,GACd,CAAC,CAGH"}
@@ -1,109 +0,0 @@
1
- /**
2
- * Validation Schemas
3
- * Using Zod for runtime validation of CLI inputs
4
- */
5
- import { z } from "zod";
6
- /**
7
- * Agent name validation
8
- * - Must be 3-64 characters
9
- * - Only lowercase letters, numbers, and hyphens
10
- * - Must start with a letter
11
- * - Cannot end with a hyphen
12
- */
13
- export const agentNameSchema = z
14
- .string()
15
- .min(3, "Agent name must be at least 3 characters")
16
- .max(64, "Agent name must be less than 64 characters")
17
- .regex(/^[a-z][a-z0-9-]*[a-z0-9]$/, "Agent name must start with a letter, contain only lowercase letters, numbers, and hyphens, and not end with a hyphen");
18
- /**
19
- * Agent description validation
20
- */
21
- export const agentDescriptionSchema = z
22
- .string()
23
- .min(1, "Description cannot be empty")
24
- .max(500, "Description must be less than 500 characters")
25
- .optional();
26
- /**
27
- * Repository URL validation
28
- */
29
- export const repositoryUrlSchema = z
30
- .string()
31
- .url("Invalid URL format")
32
- .regex(/^https?:\/\/(github\.com|gitlab\.com|bitbucket\.org)\/.+/, "Repository URL must be from GitHub, GitLab, or Bitbucket")
33
- .optional();
34
- /**
35
- * DID validation
36
- */
37
- export const didSchema = z
38
- .string()
39
- .regex(/^did:[a-z]+:[a-zA-Z0-9._\-]+/, "Invalid DID format");
40
- /**
41
- * Environment variable validation
42
- */
43
- export const envVariableSchema = z.object({
44
- MCP_IDENTITY_AGENT_DID: didSchema,
45
- MCP_IDENTITY_AGENT_PUBLIC_KEY: z.string().min(1),
46
- MCP_IDENTITY_AGENT_PRIVATE_KEY: z.string().min(1),
47
- MCP_IDENTITY_AGENT_ID: z.string().min(1),
48
- MCP_IDENTITY_AGENT_SLUG: z.string().min(1),
49
- });
50
- /**
51
- * Init command options validation
52
- */
53
- export const initOptionsSchema = z.object({
54
- name: agentNameSchema.optional(),
55
- description: agentDescriptionSchema.optional(),
56
- repository: repositoryUrlSchema.optional(),
57
- platform: z.string().optional(),
58
- skipRegistration: z.boolean().optional(),
59
- force: z.boolean().optional(),
60
- verbose: z.boolean().optional(),
61
- local: z.boolean().optional(),
62
- endpoint: z.string().url("Invalid endpoint URL").optional(),
63
- skipClaimCheck: z.boolean().optional(),
64
- });
65
- /**
66
- * Platform validation
67
- */
68
- export const platformSchema = z.enum([
69
- "vercel",
70
- "nextjs",
71
- "netlify",
72
- "cloudflare",
73
- "aws-lambda",
74
- "heroku",
75
- "docker",
76
- "nodejs",
77
- "other",
78
- ]);
79
- /**
80
- * Directory configuration validation
81
- */
82
- export const directoryConfigSchema = z.union([
83
- z.literal("verified"),
84
- z.literal("none"),
85
- z.array(z.string().url()),
86
- ]);
87
- /**
88
- * Validate input with helpful error messages
89
- */
90
- export function validateInput(schema, data, fieldName) {
91
- try {
92
- return schema.parse(data);
93
- }
94
- catch (error) {
95
- if (error instanceof z.ZodError) {
96
- const messages = error.errors.map((e) => ` • ${e.message}`).join("\n");
97
- throw new Error(`Invalid ${fieldName}:\n${messages}`);
98
- }
99
- throw error;
100
- }
101
- }
102
- /**
103
- * Safe parse with default value
104
- */
105
- export function safeParseWithDefault(schema, data, defaultValue) {
106
- const result = schema.safeParse(data);
107
- return result.success ? result.data : defaultValue;
108
- }
109
- //# sourceMappingURL=validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,EAAE,0CAA0C,CAAC;KAClD,GAAG,CAAC,EAAE,EAAE,4CAA4C,CAAC;KACrD,KAAK,CACJ,2BAA2B,EAC3B,sHAAsH,CACvH,CAAC;AAEJ;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,EAAE,6BAA6B,CAAC;KACrC,GAAG,CAAC,GAAG,EAAE,8CAA8C,CAAC;KACxD,QAAQ,EAAE,CAAC;AAEd;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,EAAE;KACR,GAAG,CAAC,oBAAoB,CAAC;KACzB,KAAK,CACJ,0DAA0D,EAC1D,0DAA0D,CAC3D;KACA,QAAQ,EAAE,CAAC;AAEd;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC;KACvB,MAAM,EAAE;KACR,KAAK,CAAC,8BAA8B,EAAE,oBAAoB,CAAC,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,sBAAsB,EAAE,SAAS;IACjC,6BAA6B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,8BAA8B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3C,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,eAAe,CAAC,QAAQ,EAAE;IAChC,WAAW,EAAE,sBAAsB,CAAC,QAAQ,EAAE;IAC9C,UAAU,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACxC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE;IAC3D,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC;IACnC,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;CACR,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC;IAC3C,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IACrB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACjB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;CAC1B,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAsB,EACtB,IAAa,EACb,SAAiB;IAEjB,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxE,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,MAAM,QAAQ,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAsB,EACtB,IAAa,EACb,YAAe;IAEf,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;AACrD,CAAC"}