@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.
- package/dist/commands/build.d.ts +5 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +173 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +9 -31
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/claim.d.ts +7 -1
- package/dist/commands/claim.d.ts.map +1 -1
- package/dist/commands/claim.js +196 -44
- package/dist/commands/claim.js.map +1 -1
- package/dist/commands/demo.d.ts +10 -0
- package/dist/commands/demo.d.ts.map +1 -0
- package/dist/commands/demo.js +584 -0
- package/dist/commands/demo.js.map +1 -0
- package/dist/commands/dev.d.ts +5 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +111 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/doctor.d.ts +11 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +530 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/env.d.ts +1 -1
- package/dist/commands/env.d.ts.map +1 -1
- package/dist/commands/env.js +113 -15
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/identity.d.ts +14 -0
- package/dist/commands/identity.d.ts.map +1 -0
- package/dist/commands/identity.js +204 -0
- package/dist/commands/identity.js.map +1 -0
- package/dist/commands/init.d.ts +6 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +86 -670
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/receipts.d.ts +11 -0
- package/dist/commands/receipts.d.ts.map +1 -0
- package/dist/commands/receipts.js +179 -0
- package/dist/commands/receipts.js.map +1 -0
- package/dist/commands/register.d.ts +15 -0
- package/dist/commands/register.d.ts.map +1 -0
- package/dist/commands/register.js +220 -0
- package/dist/commands/register.js.map +1 -0
- package/dist/commands/rotate.d.ts +7 -1
- package/dist/commands/rotate.d.ts.map +1 -1
- package/dist/commands/rotate.js +149 -109
- package/dist/commands/rotate.js.map +1 -1
- package/dist/commands/start.d.ts +5 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +129 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +9 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +177 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/verify.d.ts +22 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +491 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/components/claim-experience.d.ts +21 -0
- package/dist/components/claim-experience.d.ts.map +1 -0
- package/dist/components/claim-experience.js +138 -0
- package/dist/components/claim-experience.js.map +1 -0
- package/dist/effects/animation-engine.d.ts +173 -0
- package/dist/effects/animation-engine.d.ts.map +1 -0
- package/dist/effects/animation-engine.js +254 -0
- package/dist/effects/animation-engine.js.map +1 -0
- package/dist/effects/cli-integration.js +8 -8
- package/dist/effects/cli-integration.js.map +1 -1
- package/dist/effects/config.d.ts +86 -10
- package/dist/effects/config.d.ts.map +1 -1
- package/dist/effects/config.js +201 -18
- package/dist/effects/config.js.map +1 -1
- package/dist/effects/effect-runner.d.ts +69 -0
- package/dist/effects/effect-runner.d.ts.map +1 -0
- package/dist/effects/effect-runner.js +255 -0
- package/dist/effects/effect-runner.js.map +1 -0
- package/dist/effects/gradient.d.ts +131 -0
- package/dist/effects/gradient.d.ts.map +1 -0
- package/dist/effects/gradient.js +236 -0
- package/dist/effects/gradient.js.map +1 -0
- package/dist/effects/implementations/beams.d.ts +80 -0
- package/dist/effects/implementations/beams.d.ts.map +1 -0
- package/dist/effects/implementations/beams.js +221 -0
- package/dist/effects/implementations/beams.js.map +1 -0
- package/dist/effects/implementations/blackhole.d.ts +98 -0
- package/dist/effects/implementations/blackhole.d.ts.map +1 -0
- package/dist/effects/implementations/blackhole.js +421 -0
- package/dist/effects/implementations/blackhole.js.map +1 -0
- package/dist/effects/implementations/burn.d.ts +74 -0
- package/dist/effects/implementations/burn.d.ts.map +1 -0
- package/dist/effects/implementations/burn.js +234 -0
- package/dist/effects/implementations/burn.js.map +1 -0
- package/dist/effects/implementations/decrypt.d.ts +115 -0
- package/dist/effects/implementations/decrypt.d.ts.map +1 -0
- package/dist/effects/implementations/decrypt.js +394 -0
- package/dist/effects/implementations/decrypt.js.map +1 -0
- package/dist/effects/implementations/waves.d.ts +78 -0
- package/dist/effects/implementations/waves.d.ts.map +1 -0
- package/dist/effects/implementations/waves.js +278 -0
- package/dist/effects/implementations/waves.js.map +1 -0
- package/dist/effects/index.d.ts +34 -0
- package/dist/effects/index.d.ts.map +1 -0
- package/dist/effects/index.js +114 -0
- package/dist/effects/index.js.map +1 -0
- package/dist/effects/motion-engine.d.ts +168 -0
- package/dist/effects/motion-engine.d.ts.map +1 -0
- package/dist/effects/motion-engine.js +353 -0
- package/dist/effects/motion-engine.js.map +1 -0
- package/dist/effects/safe-executor.d.ts +55 -0
- package/dist/effects/safe-executor.d.ts.map +1 -0
- package/dist/effects/safe-executor.js +210 -0
- package/dist/effects/safe-executor.js.map +1 -0
- package/dist/effects/types.d.ts +199 -0
- package/dist/effects/types.d.ts.map +1 -0
- package/dist/effects/types.js +80 -0
- package/dist/effects/types.js.map +1 -0
- package/dist/effects/utils.d.ts +104 -0
- package/dist/effects/utils.d.ts.map +1 -0
- package/dist/effects/utils.js +280 -0
- package/dist/effects/utils.js.map +1 -0
- package/dist/index.js +154 -19
- package/dist/utils/env-manager.d.ts +6 -7
- package/dist/utils/env-manager.d.ts.map +1 -1
- package/dist/utils/env-manager.js +52 -40
- package/dist/utils/env-manager.js.map +1 -1
- package/dist/utils/identity-manager.d.ts +41 -0
- package/dist/utils/identity-manager.d.ts.map +1 -0
- package/dist/utils/identity-manager.js +159 -0
- package/dist/utils/identity-manager.js.map +1 -0
- package/dist/utils/kta-api.d.ts +67 -0
- package/dist/utils/kta-api.d.ts.map +1 -0
- package/dist/utils/kta-api.js +137 -0
- package/dist/utils/kta-api.js.map +1 -0
- package/package.json +8 -7
- package/dist/utils/validation.d.ts +0 -101
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -109
- 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.
|
|
4
|
-
"description": "CLI for
|
|
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
|
-
"
|
|
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/
|
|
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": "^
|
|
65
|
+
"@vitest/coverage-v8": "^2.0.0",
|
|
65
66
|
"tsx": "^4.0.0",
|
|
66
67
|
"typescript": "^5.0.0",
|
|
67
|
-
"vitest": "^
|
|
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"}
|
package/dist/utils/validation.js
DELETED
|
@@ -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":"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"}
|