soldnacloud 0.6.7
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/bootstrap/agents/dnacloud-installer.md +41 -0
- package/bootstrap/agents/dnacloud-market-researcher.md +44 -0
- package/bootstrap/commands/dna-create.md +69 -0
- package/bootstrap/commands/dna-earnings.md +21 -0
- package/bootstrap/commands/dna-install.md +24 -0
- package/bootstrap/commands/dna-packages.md +21 -0
- package/bootstrap/commands/dna-status.md +16 -0
- package/bootstrap/commands/dna-upload.md +26 -0
- package/bootstrap/commands/dna.md +19 -0
- package/bootstrap/skills/dnacloud/SKILL.md +178 -0
- package/dist/commands/creator.d.ts +10 -0
- package/dist/commands/creator.d.ts.map +1 -0
- package/dist/commands/creator.js +122 -0
- package/dist/commands/creator.js.map +1 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +114 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/install.d.ts +9 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +187 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/rollback.d.ts +6 -0
- package/dist/commands/rollback.d.ts.map +1 -0
- package/dist/commands/rollback.js +34 -0
- package/dist/commands/rollback.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +42 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/upload.d.ts +11 -0
- package/dist/commands/upload.d.ts.map +1 -0
- package/dist/commands/upload.js +174 -0
- package/dist/commands/upload.js.map +1 -0
- package/dist/commands/verify.d.ts +4 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +57 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +84 -0
- package/dist/index.js.map +1 -0
- package/dist/installer/Installer.d.ts +21 -0
- package/dist/installer/Installer.d.ts.map +1 -0
- package/dist/installer/Installer.js +143 -0
- package/dist/installer/Installer.js.map +1 -0
- package/dist/installer/Rollback.d.ts +6 -0
- package/dist/installer/Rollback.d.ts.map +1 -0
- package/dist/installer/Rollback.js +43 -0
- package/dist/installer/Rollback.js.map +1 -0
- package/dist/installer/Verifier.d.ts +13 -0
- package/dist/installer/Verifier.d.ts.map +1 -0
- package/dist/installer/Verifier.js +114 -0
- package/dist/installer/Verifier.js.map +1 -0
- package/dist/installer/paths.d.ts +5 -0
- package/dist/installer/paths.d.ts.map +1 -0
- package/dist/installer/paths.js +5 -0
- package/dist/installer/paths.js.map +1 -0
- package/dist/marketplace/MarketplaceClient.d.ts +62 -0
- package/dist/marketplace/MarketplaceClient.d.ts.map +1 -0
- package/dist/marketplace/MarketplaceClient.js +72 -0
- package/dist/marketplace/MarketplaceClient.js.map +1 -0
- package/dist/marketplace/PaymentClient.d.ts +18 -0
- package/dist/marketplace/PaymentClient.d.ts.map +1 -0
- package/dist/marketplace/PaymentClient.js +45 -0
- package/dist/marketplace/PaymentClient.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { DnaSearchResult, DnaManifest } from '@dnacloud/schema';
|
|
2
|
+
export interface MarketplaceClientConfig {
|
|
3
|
+
baseUrl: string;
|
|
4
|
+
}
|
|
5
|
+
/** Solana payment requirement returned in HTTP 402 response body. */
|
|
6
|
+
export interface SolanaPaymentRequirement {
|
|
7
|
+
network: string;
|
|
8
|
+
chain: string;
|
|
9
|
+
payTo: string;
|
|
10
|
+
asset: string;
|
|
11
|
+
mint: string;
|
|
12
|
+
amount_atomic: string;
|
|
13
|
+
amount_display: string;
|
|
14
|
+
nonce: string;
|
|
15
|
+
expires_at: string;
|
|
16
|
+
}
|
|
17
|
+
export declare class MarketplaceClient {
|
|
18
|
+
private readonly config;
|
|
19
|
+
constructor(config: MarketplaceClientConfig);
|
|
20
|
+
search(query: string): Promise<DnaSearchResult[]>;
|
|
21
|
+
getManifest(packageId: string): Promise<DnaManifest>;
|
|
22
|
+
/**
|
|
23
|
+
* First call without payment. Returns either the 402 payment requirement
|
|
24
|
+
* (Solana USDC) or the artifact data if the package is free.
|
|
25
|
+
*/
|
|
26
|
+
requestArtifact(packageId: string, version: string): Promise<{
|
|
27
|
+
type: 'payment_required';
|
|
28
|
+
requirement: SolanaPaymentRequirement;
|
|
29
|
+
} | {
|
|
30
|
+
type: 'success';
|
|
31
|
+
data: ArtifactData;
|
|
32
|
+
}>;
|
|
33
|
+
/**
|
|
34
|
+
* Retry with X-PAYMENT credential after the Solana tx is submitted.
|
|
35
|
+
* credential is base64({ provider, txHash, nonce, network, payer }).
|
|
36
|
+
*/
|
|
37
|
+
getArtifactWithPayment(packageId: string, version: string, paymentCredential: string): Promise<ArtifactData>;
|
|
38
|
+
}
|
|
39
|
+
export interface ArtifactData {
|
|
40
|
+
packageId: string;
|
|
41
|
+
version: string;
|
|
42
|
+
downloadUrl: string;
|
|
43
|
+
signature: string;
|
|
44
|
+
sha256: string;
|
|
45
|
+
paymentReceipt: {
|
|
46
|
+
txHash: string;
|
|
47
|
+
payer: string;
|
|
48
|
+
amount: string;
|
|
49
|
+
currency: string;
|
|
50
|
+
network: string;
|
|
51
|
+
verifiedAt: string;
|
|
52
|
+
settlementRef: string;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/** Build base64 X-PAYMENT credential from a confirmed Solana txHash. */
|
|
56
|
+
export declare function buildSolanaPaymentCredential(params: {
|
|
57
|
+
txHash: string;
|
|
58
|
+
nonce: string;
|
|
59
|
+
network: string;
|
|
60
|
+
payer?: string;
|
|
61
|
+
}): string;
|
|
62
|
+
//# sourceMappingURL=MarketplaceClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarketplaceClient.d.ts","sourceRoot":"","sources":["../../src/marketplace/MarketplaceClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAErE,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qEAAqE;AACrE,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,uBAAuB;IAEtD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAOjD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ1D;;;OAGG;IACG,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CACN;QAAE,IAAI,EAAE,kBAAkB,CAAC;QAAC,WAAW,EAAE,wBAAwB,CAAA;KAAE,GACnE;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,IAAI,EAAE,YAAY,CAAA;KAAE,CAC1C;IAiBD;;;OAGG;IACG,sBAAsB,CAC1B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,YAAY,CAAC;CAiBzB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,wEAAwE;AACxE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAST"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export class MarketplaceClient {
|
|
2
|
+
config;
|
|
3
|
+
constructor(config) {
|
|
4
|
+
this.config = config;
|
|
5
|
+
}
|
|
6
|
+
async search(query) {
|
|
7
|
+
const url = `${this.config.baseUrl}/v1/dna/search?q=${encodeURIComponent(query)}`;
|
|
8
|
+
const res = await fetch(url);
|
|
9
|
+
if (!res.ok)
|
|
10
|
+
throw new Error(`Marketplace search failed: ${res.status} ${res.statusText}`);
|
|
11
|
+
return res.json();
|
|
12
|
+
}
|
|
13
|
+
async getManifest(packageId) {
|
|
14
|
+
const url = `${this.config.baseUrl}/v1/dna/${packageId}`;
|
|
15
|
+
const res = await fetch(url);
|
|
16
|
+
if (res.status === 404)
|
|
17
|
+
throw new Error(`Package not found: ${packageId}`);
|
|
18
|
+
if (!res.ok)
|
|
19
|
+
throw new Error(`Failed to fetch package: ${res.status}`);
|
|
20
|
+
return res.json();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* First call without payment. Returns either the 402 payment requirement
|
|
24
|
+
* (Solana USDC) or the artifact data if the package is free.
|
|
25
|
+
*/
|
|
26
|
+
async requestArtifact(packageId, version) {
|
|
27
|
+
const url = `${this.config.baseUrl}/v1/dna/${packageId}/versions/${version}/artifact`;
|
|
28
|
+
const res = await fetch(url);
|
|
29
|
+
if (res.status === 402) {
|
|
30
|
+
const body = await res.json();
|
|
31
|
+
if (!body.payment)
|
|
32
|
+
throw new Error('Server returned 402 but missing payment requirement');
|
|
33
|
+
return { type: 'payment_required', requirement: body.payment };
|
|
34
|
+
}
|
|
35
|
+
if (!res.ok) {
|
|
36
|
+
const body = await res.json();
|
|
37
|
+
throw new Error(`Artifact request failed: ${body.error ?? res.statusText}`);
|
|
38
|
+
}
|
|
39
|
+
return { type: 'success', data: await res.json() };
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Retry with X-PAYMENT credential after the Solana tx is submitted.
|
|
43
|
+
* credential is base64({ provider, txHash, nonce, network, payer }).
|
|
44
|
+
*/
|
|
45
|
+
async getArtifactWithPayment(packageId, version, paymentCredential) {
|
|
46
|
+
const url = `${this.config.baseUrl}/v1/dna/${packageId}/versions/${version}/artifact`;
|
|
47
|
+
const res = await fetch(url, {
|
|
48
|
+
headers: { 'X-PAYMENT': paymentCredential },
|
|
49
|
+
});
|
|
50
|
+
if (res.status === 402) {
|
|
51
|
+
const body = await res.json();
|
|
52
|
+
throw new Error(`Payment rejected: ${body.message ?? body.error ?? 'unknown'}`);
|
|
53
|
+
}
|
|
54
|
+
if (!res.ok) {
|
|
55
|
+
const body = await res.json();
|
|
56
|
+
throw new Error(`Artifact download failed: ${body.error ?? res.statusText}`);
|
|
57
|
+
}
|
|
58
|
+
return res.json();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/** Build base64 X-PAYMENT credential from a confirmed Solana txHash. */
|
|
62
|
+
export function buildSolanaPaymentCredential(params) {
|
|
63
|
+
const payload = {
|
|
64
|
+
provider: 'solana-onchain',
|
|
65
|
+
txHash: params.txHash,
|
|
66
|
+
nonce: params.nonce,
|
|
67
|
+
network: params.network,
|
|
68
|
+
payer: params.payer ?? 'unknown',
|
|
69
|
+
};
|
|
70
|
+
return Buffer.from(JSON.stringify(payload)).toString('base64');
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=MarketplaceClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarketplaceClient.js","sourceRoot":"","sources":["../../src/marketplace/MarketplaceClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { SolanaPaymentRequirement } from './MarketplaceClient.js';
|
|
2
|
+
/**
|
|
3
|
+
* Payment for DNAcloud packages uses OKX OnchainOS Agentic Wallet (Solana USDC).
|
|
4
|
+
*
|
|
5
|
+
* Flow inside Claude Code:
|
|
6
|
+
* 1. Skill detects 402 from marketplace server
|
|
7
|
+
* 2. Skill calls `onchainos wallet send` to transfer USDC to merchant address
|
|
8
|
+
* 3. Gets back txHash (Solana tx signature)
|
|
9
|
+
* 4. Builds X-PAYMENT credential with txHash
|
|
10
|
+
* 5. Retries download request with X-PAYMENT header
|
|
11
|
+
* 6. Server verifies on-chain, returns DNA artifact
|
|
12
|
+
*
|
|
13
|
+
* CLI standalone mode:
|
|
14
|
+
* User manually runs `onchainos wallet send`, then provides txHash when prompted.
|
|
15
|
+
*/
|
|
16
|
+
export declare function buildOnchainOsCommand(req: SolanaPaymentRequirement): string;
|
|
17
|
+
export declare function getPaymentConfigError(req: SolanaPaymentRequirement): string;
|
|
18
|
+
//# sourceMappingURL=PaymentClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PaymentClient.d.ts","sourceRoot":"","sources":["../../src/marketplace/PaymentClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEvE;;;;;;;;;;;;;GAaG;AAEH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,wBAAwB,GAAG,MAAM,CAW3E;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,wBAAwB,GAAG,MAAM,CAkB3E"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Payment for DNAcloud packages uses OKX OnchainOS Agentic Wallet (Solana USDC).
|
|
3
|
+
*
|
|
4
|
+
* Flow inside Claude Code:
|
|
5
|
+
* 1. Skill detects 402 from marketplace server
|
|
6
|
+
* 2. Skill calls `onchainos wallet send` to transfer USDC to merchant address
|
|
7
|
+
* 3. Gets back txHash (Solana tx signature)
|
|
8
|
+
* 4. Builds X-PAYMENT credential with txHash
|
|
9
|
+
* 5. Retries download request with X-PAYMENT header
|
|
10
|
+
* 6. Server verifies on-chain, returns DNA artifact
|
|
11
|
+
*
|
|
12
|
+
* CLI standalone mode:
|
|
13
|
+
* User manually runs `onchainos wallet send`, then provides txHash when prompted.
|
|
14
|
+
*/
|
|
15
|
+
export function buildOnchainOsCommand(req) {
|
|
16
|
+
// readableAmount = amount_atomic / 10^6 (USDC has 6 decimals)
|
|
17
|
+
const readableAmount = (parseInt(req.amount_atomic, 10) / 1_000_000).toFixed(6).replace(/\.?0+$/, '');
|
|
18
|
+
return [
|
|
19
|
+
'onchainos wallet send',
|
|
20
|
+
` --readable-amount ${readableAmount}`,
|
|
21
|
+
` --recipient ${req.payTo}`,
|
|
22
|
+
` --chain solana`,
|
|
23
|
+
` --contract-token ${req.mint}`,
|
|
24
|
+
].join(' \\\n');
|
|
25
|
+
}
|
|
26
|
+
export function getPaymentConfigError(req) {
|
|
27
|
+
return [
|
|
28
|
+
'❌ 需要完成 Solana USDC 支付',
|
|
29
|
+
'',
|
|
30
|
+
'支付方式 A — OKX OnchainOS Agentic Wallet(推荐,TEE 钱包):',
|
|
31
|
+
'',
|
|
32
|
+
` ${buildOnchainOsCommand(req)}`,
|
|
33
|
+
'',
|
|
34
|
+
' 返回 txHash 后,在此处输入即可完成购买。',
|
|
35
|
+
'',
|
|
36
|
+
'支付方式 B — 任意 Solana 钱包手动转账:',
|
|
37
|
+
` 向地址 ${req.payTo}`,
|
|
38
|
+
` 转账 ${req.amount_display}(USDC, ${req.network})`,
|
|
39
|
+
` Mint: ${req.mint}`,
|
|
40
|
+
'',
|
|
41
|
+
'⚠️ 使用测试网(devnet)时请确保使用 devnet USDC。',
|
|
42
|
+
' 可从 https://spl-token-faucet.com 获取 devnet USDC。',
|
|
43
|
+
].join('\n');
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=PaymentClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PaymentClient.js","sourceRoot":"","sources":["../../src/marketplace/PaymentClient.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,MAAM,UAAU,qBAAqB,CAAC,GAA6B;IACjE,8DAA8D;IAC9D,MAAM,cAAc,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEtG,OAAO;QACL,uBAAuB;QACvB,uBAAuB,cAAc,EAAE;QACvC,iBAAiB,GAAG,CAAC,KAAK,EAAE;QAC5B,kBAAkB;QAClB,sBAAsB,GAAG,CAAC,IAAI,EAAE;KACjC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAA6B;IACjE,OAAO;QACL,uBAAuB;QACvB,EAAE;QACF,mDAAmD;QACnD,EAAE;QACF,KAAK,qBAAqB,CAAC,GAAG,CAAC,EAAE;QACjC,EAAE;QACF,4BAA4B;QAC5B,EAAE;QACF,4BAA4B;QAC5B,SAAS,GAAG,CAAC,KAAK,EAAE;QACpB,QAAQ,GAAG,CAAC,cAAc,UAAU,GAAG,CAAC,OAAO,GAAG;QAClD,WAAW,GAAG,CAAC,IAAI,EAAE;QACrB,EAAE;QACF,sCAAsC;QACtC,qDAAqD;KACtD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "soldnacloud",
|
|
3
|
+
"version": "0.6.7",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "DNAcloud CLI — install expert DNA capabilities into Claude Code",
|
|
6
|
+
"bin": {
|
|
7
|
+
"dnacloud": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"main": "./dist/index.js",
|
|
10
|
+
"files": [
|
|
11
|
+
"dist/",
|
|
12
|
+
"bootstrap/"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc && node scripts/copy-bootstrap.js",
|
|
16
|
+
"dev": "tsc --watch",
|
|
17
|
+
"test": "node --test dist/**/*.test.js",
|
|
18
|
+
"start": "node dist/index.js",
|
|
19
|
+
"prepublishOnly": "pnpm build"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@dnacloud/schema": "^1.0.0",
|
|
23
|
+
"@dnacloud/validator": "^0.6.0",
|
|
24
|
+
"adm-zip": "^0.5.16",
|
|
25
|
+
"chalk": "^5.3.0",
|
|
26
|
+
"commander": "^12.1.0",
|
|
27
|
+
"node-fetch": "^3.3.2",
|
|
28
|
+
"ora": "^8.1.0"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@types/adm-zip": "^0.5.7",
|
|
32
|
+
"@types/node": "^22.0.0",
|
|
33
|
+
"typescript": "^5.4.0"
|
|
34
|
+
},
|
|
35
|
+
"engines": {
|
|
36
|
+
"node": ">=18.0.0"
|
|
37
|
+
},
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"access": "public"
|
|
40
|
+
}
|
|
41
|
+
}
|