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.
Files changed (67) hide show
  1. package/bootstrap/agents/dnacloud-installer.md +41 -0
  2. package/bootstrap/agents/dnacloud-market-researcher.md +44 -0
  3. package/bootstrap/commands/dna-create.md +69 -0
  4. package/bootstrap/commands/dna-earnings.md +21 -0
  5. package/bootstrap/commands/dna-install.md +24 -0
  6. package/bootstrap/commands/dna-packages.md +21 -0
  7. package/bootstrap/commands/dna-status.md +16 -0
  8. package/bootstrap/commands/dna-upload.md +26 -0
  9. package/bootstrap/commands/dna.md +19 -0
  10. package/bootstrap/skills/dnacloud/SKILL.md +178 -0
  11. package/dist/commands/creator.d.ts +10 -0
  12. package/dist/commands/creator.d.ts.map +1 -0
  13. package/dist/commands/creator.js +122 -0
  14. package/dist/commands/creator.js.map +1 -0
  15. package/dist/commands/init.d.ts +6 -0
  16. package/dist/commands/init.d.ts.map +1 -0
  17. package/dist/commands/init.js +114 -0
  18. package/dist/commands/init.js.map +1 -0
  19. package/dist/commands/install.d.ts +9 -0
  20. package/dist/commands/install.d.ts.map +1 -0
  21. package/dist/commands/install.js +187 -0
  22. package/dist/commands/install.js.map +1 -0
  23. package/dist/commands/rollback.d.ts +6 -0
  24. package/dist/commands/rollback.d.ts.map +1 -0
  25. package/dist/commands/rollback.js +34 -0
  26. package/dist/commands/rollback.js.map +1 -0
  27. package/dist/commands/status.d.ts +2 -0
  28. package/dist/commands/status.d.ts.map +1 -0
  29. package/dist/commands/status.js +42 -0
  30. package/dist/commands/status.js.map +1 -0
  31. package/dist/commands/upload.d.ts +11 -0
  32. package/dist/commands/upload.d.ts.map +1 -0
  33. package/dist/commands/upload.js +174 -0
  34. package/dist/commands/upload.js.map +1 -0
  35. package/dist/commands/verify.d.ts +4 -0
  36. package/dist/commands/verify.d.ts.map +1 -0
  37. package/dist/commands/verify.js +57 -0
  38. package/dist/commands/verify.js.map +1 -0
  39. package/dist/index.d.ts +3 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +84 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/installer/Installer.d.ts +21 -0
  44. package/dist/installer/Installer.d.ts.map +1 -0
  45. package/dist/installer/Installer.js +143 -0
  46. package/dist/installer/Installer.js.map +1 -0
  47. package/dist/installer/Rollback.d.ts +6 -0
  48. package/dist/installer/Rollback.d.ts.map +1 -0
  49. package/dist/installer/Rollback.js +43 -0
  50. package/dist/installer/Rollback.js.map +1 -0
  51. package/dist/installer/Verifier.d.ts +13 -0
  52. package/dist/installer/Verifier.d.ts.map +1 -0
  53. package/dist/installer/Verifier.js +114 -0
  54. package/dist/installer/Verifier.js.map +1 -0
  55. package/dist/installer/paths.d.ts +5 -0
  56. package/dist/installer/paths.d.ts.map +1 -0
  57. package/dist/installer/paths.js +5 -0
  58. package/dist/installer/paths.js.map +1 -0
  59. package/dist/marketplace/MarketplaceClient.d.ts +62 -0
  60. package/dist/marketplace/MarketplaceClient.d.ts.map +1 -0
  61. package/dist/marketplace/MarketplaceClient.js +72 -0
  62. package/dist/marketplace/MarketplaceClient.js.map +1 -0
  63. package/dist/marketplace/PaymentClient.d.ts +18 -0
  64. package/dist/marketplace/PaymentClient.d.ts.map +1 -0
  65. package/dist/marketplace/PaymentClient.js +45 -0
  66. package/dist/marketplace/PaymentClient.js.map +1 -0
  67. package/package.json +41 -0
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: dnacloud-installer
3
+ description: >
4
+ DNA 包安装 subagent。负责验证签名、解压 artifact、
5
+ 执行 install-plan 中的所有操作、更新 lock file、运行 verify。
6
+ 只由 dnacloud skill 调用,不直接面向用户。
7
+ ---
8
+
9
+ # DNAcloud Installer Agent
10
+
11
+ ## 职责
12
+
13
+ 执行 DNA 包安装的所有文件操作。
14
+
15
+ ## 安装步骤
16
+
17
+ ```
18
+ 1. 验证 artifact 签名(signature.txt + package.sha256)
19
+ 2. 解压到临时目录 .dnacloud/staging/{packageId}-{version}/
20
+ 3. 读取 install-plan.json
21
+ 4. 创建快照 .dnacloud/snapshots/{packageId}-{version}/
22
+ 5. 逐条执行 install-plan operations:
23
+ - copy: 直接复制文件
24
+ - merge-json: 合并 JSON(.mcp.json 等)
25
+ - patch-md: 追加到 markdown 文件末尾
26
+ - write-json: 写入 JSON 配置(hooks 等)
27
+ 6. 写入 .dnacloud/installed/{packageId}/{version}/:
28
+ - manifest.json
29
+ - install-plan.json
30
+ - signature.txt
31
+ - package.sha256
32
+ - payment-receipt.json
33
+ - install-result.json
34
+ 7. 更新 .dnacloud/lock.json
35
+ 8. 清理 staging 目录
36
+ ```
37
+
38
+ ## 失败处理
39
+
40
+ - 任何步骤失败 → 从快照恢复,输出详细错误信息
41
+ - 签名验证失败 → 立即中止,不安装任何文件
@@ -0,0 +1,44 @@
1
+ ---
2
+ name: dnacloud-market-researcher
3
+ description: >
4
+ DNA 市场搜索 subagent。将用户自然语言需求转化为搜索查询,
5
+ 调用 dnacloud-marketplace MCP,整理并展示搜索结果。
6
+ ---
7
+
8
+ # DNAcloud Market Researcher Agent
9
+
10
+ ## 职责
11
+
12
+ 搜索 DNA 市场,将结果整理成用户友好的格式。
13
+
14
+ ## 搜索逻辑
15
+
16
+ 1. 从用户需求中提取关键词(domain, capability 关键字)
17
+ 2. 调用 `mcp__dnacloud-marketplace__search` 搜索
18
+ 3. 按相关度和官方包优先排序
19
+ 4. 格式化展示
20
+
21
+ ## 输出格式
22
+
23
+ ```
24
+ ━━━━━━━━ DNAcloud Marketplace 搜索结果 ━━━━━━━━
25
+
26
+ 搜索关键词: [query]
27
+
28
+ 找到 [N] 个 DNA 包:
29
+
30
+ [序号]. 📦 [Name] v[version] [官方包标识]
31
+ [description]
32
+ 价格: [amount] [currency] ([network])
33
+ 能力:
34
+ [capability list]
35
+ 安装后将添加:
36
+ - Skills: [count] 个
37
+ - Agents: [count] 个
38
+ - Commands: [command list]
39
+ - MCP: [count] 个配置
40
+
41
+ 建议选择: [序号] — [原因]
42
+
43
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
44
+ ```
@@ -0,0 +1,69 @@
1
+ Guide the user through creating a new DNA package from scratch.
2
+
3
+ Usage: /dna-create [package-name]
4
+
5
+ ## Step-by-step flow
6
+
7
+ 1. **Ask for basic info** (if not in $ARGUMENTS):
8
+ - Package ID (lowercase, hyphens only, e.g. `my-expert-dna`)
9
+ - Package name (display name)
10
+ - Domain / expertise area
11
+ - Target price (in USDC)
12
+ - Creator payout wallet address (Solana)
13
+
14
+ 2. **Scaffold the package directory structure**:
15
+
16
+ ```
17
+ <package-id>/
18
+ manifest.json ← required: package metadata
19
+ install-plan.json ← required: what gets installed where
20
+ skills/<package-id>/
21
+ SKILL.md ← skill trigger + execution flow
22
+ agents/ ← optional: specialized sub-agents
23
+ commands/ ← optional: /slash commands
24
+ mcp/ ← optional: MCP server configs (no real keys)
25
+ hooks/ ← optional: pre/post tool hooks
26
+ rules/ ← optional: permissions + machine rules
27
+ claude/
28
+ CLAUDE.patch.md ← optional: CLAUDE.md additions
29
+ ```
30
+
31
+ 3. **Generate `manifest.json`** with all required fields:
32
+ - `schemaVersion`: `"dnacloud.package.v1"`
33
+ - `id`, `name`, `version`, `domain`, `packageType`
34
+ - `objective`: what this DNA installs, NOT what it promises to achieve
35
+ - `capabilities[]`: machine-readable capability identifiers
36
+ - `notGuaranteed[]`: be honest about limitations
37
+ - `price`: `{ amount, currency: "USDC", network: "solana" }`
38
+ - `payout`: `{ address: <wallet>, currency: "USDC", network: "solana" }`
39
+ - `components`: list every file that will be installed
40
+
41
+ 4. **Generate `install-plan.json`** mapping source → destination:
42
+ - skills → `.claude/skills/<id>/`
43
+ - agents → `.claude/agents/`
44
+ - commands → `.claude/commands/`
45
+ - mcp → merged into `.mcp.json`
46
+ - hooks → merged into `.claude/settings.json`
47
+
48
+ 5. **Write a SKILL.md** with:
49
+ - Frontmatter: `name`, `description`, trigger phrases
50
+ - Trigger scenarios (natural language → skill activation)
51
+ - Execution flow (numbered steps)
52
+ - Hard constraints (what this skill must NOT do)
53
+
54
+ 6. **Remind the creator**:
55
+ - Never hardcode API keys or secrets — use `${ENV_VAR}` references
56
+ - `objective` describes what gets installed, not profit guarantees
57
+ - Run `dnacloud validate <package-dir>.zip` before uploading
58
+ - Pack with: `cd <package-id> && zip -r ../<package-id>-<version>.zip . -x "*.DS_Store"`
59
+
60
+ 7. **Next steps after scaffolding**:
61
+ ```
62
+ dnacloud validate <package-id>-1.0.0.zip # check structure
63
+ dnacloud upload <package-id>-1.0.0.zip --payout-address <wallet>
64
+ ```
65
+
66
+ ## Hard rules for generated content
67
+ - `objective` must start with "install ... capabilities" — never promise ROI or outcomes
68
+ - MCP env values must be `"${VAR_NAME}"` — never real credentials
69
+ - `notGuaranteed` must be honest and present
@@ -0,0 +1,21 @@
1
+ Check creator earnings and payout status for uploaded DNA packages.
2
+
3
+ Usage: /dna-earnings [wallet_address]
4
+
5
+ Steps:
6
+ 1. Get wallet address from $ARGUMENTS or ask user
7
+ 2. Run: dnacloud creator earnings <wallet_address>
8
+ 3. Show earnings summary: total gross, platform fee, pending payout, paid payout
9
+ 4. Optionally run: dnacloud creator payouts <wallet_address> to see settlement history
10
+ 5. Optionally run: dnacloud creator packages <wallet_address> to see uploaded packages
11
+
12
+ Information shown:
13
+ - Total gross sales (in USDC)
14
+ - Platform fee (10%)
15
+ - Pending payout (not yet transferred)
16
+ - Paid payout (already transferred on-chain with tx hash)
17
+ - Per-package revenue breakdown
18
+ - Payout batch history with tx hashes
19
+
20
+ Note: Payouts are processed asynchronously by the platform payout worker.
21
+ If DNACLOUD_TREASURY_KEY is not configured on the server, payouts will remain in pending_payout state.
@@ -0,0 +1,24 @@
1
+ Install a DNA package by ID from the DNAcloud Marketplace.
2
+
3
+ Usage: /dna-install <packageId> [version]
4
+
5
+ Example: /dna-install trading-master-dna
6
+ Example: /dna-install trading-master-dna 1.0.0
7
+
8
+ Steps:
9
+ 1. Fetch package manifest from marketplace
10
+ 2. Show package details: capabilities, price, permissions, files to be installed
11
+ 3. Ask user to confirm purchase
12
+ 4. Process OKX x402 payment (requires OKX credentials configured)
13
+ 5. Download signed artifact from marketplace
14
+ 6. Verify artifact signature and SHA256
15
+ 7. Show detailed install preview
16
+ 8. Ask user to confirm installation
17
+ 9. Spawn dnacloud-installer agent to execute install
18
+ 10. Run verification and show results
19
+
20
+ Fails explicitly if:
21
+ - Package not found
22
+ - OKX credentials not configured
23
+ - Payment verification fails
24
+ - Signature check fails
@@ -0,0 +1,21 @@
1
+ List DNA packages uploaded by a creator and their status.
2
+
3
+ Usage: /dna-packages [wallet_address]
4
+
5
+ Steps:
6
+ 1. Get wallet address from $ARGUMENTS or ask user
7
+ 2. Run: dnacloud creator packages <wallet_address>
8
+ 3. Show list of uploaded packages with:
9
+ - Package ID and version
10
+ - Status (published / rejected / suspended)
11
+ - Validation result (passed / passed_with_warnings / failed)
12
+ - Price and currency
13
+ 4. For any rejected packages, suggest checking validation report
14
+
15
+ Creator package statuses:
16
+ - draft: Not yet uploaded
17
+ - uploaded: Awaiting validation
18
+ - rejected: Validation failed — package not available for purchase
19
+ - published: Available in the marketplace
20
+ - suspended: Temporarily hidden by platform
21
+ - deprecated: Creator marked as deprecated
@@ -0,0 +1,16 @@
1
+ Show the status of all installed DNA packages in this project.
2
+
3
+ Usage: /dna-status [packageId]
4
+
5
+ With no arguments: show all installed packages summary.
6
+ With packageId: show detailed verification result for that package.
7
+
8
+ Output shows:
9
+ - Package ID, version, installed date
10
+ - Component status: skills, agents, commands, mcp, hooks, rules
11
+ - Signature verification status
12
+ - Payment receipt status
13
+ - liveTradingReady flag and missing user config
14
+ - Available capabilities
15
+
16
+ Runs dnacloud verify internally to get fresh status.
@@ -0,0 +1,26 @@
1
+ Upload a DNA package to the DNAcloud marketplace.
2
+
3
+ Usage: /dna-upload [package_path]
4
+
5
+ This command guides creators through the complete upload flow:
6
+ 1. Validate the package structure locally
7
+ 2. Upload the package with payout address
8
+ 3. Show validation report and marketplace URL
9
+
10
+ Steps:
11
+ 1. Ask for the package zip path (or use $ARGUMENTS if provided)
12
+ 2. Run: dnacloud validate <package_path>
13
+ 3. If validation fails, show errors and stop
14
+ 4. Ask for creator payout wallet address (EVM address for receiving earnings)
15
+ 5. Ask for price (if not in manifest)
16
+ 6. Run: dnacloud upload <package_path> --payout-address <address>
17
+ 7. Upload completes automatically — no wallet signing required
18
+ 8. Show the package URL and status
19
+
20
+ Requirements:
21
+ - Package must be a .zip file with valid manifest.json
22
+ - Creator must provide an EVM wallet address for payout
23
+ - DNAcloud Bootstrap must be initialized (dnacloud init)
24
+
25
+ If upload is rejected: show the validation errors clearly and suggest fixes.
26
+ If upload passes with warnings: show warnings so creator knows what buyers will see.
@@ -0,0 +1,19 @@
1
+ Search the DNAcloud Marketplace and install DNA capability packages.
2
+
3
+ Usage: /dna [query]
4
+
5
+ Examples:
6
+ /dna — show installed packages and status
7
+ /dna trading — search for trading-related DNA packages
8
+ /dna install trading-master-dna — install a specific package by ID
9
+
10
+ Steps:
11
+ 1. If no query: run dnacloud status and show installed packages
12
+ 2. If query provided: spawn dnacloud-market-researcher agent to search
13
+ 3. Show results and wait for user to select a package
14
+ 4. Show install preview (files that will be added/modified)
15
+ 5. Wait for user confirmation
16
+ 6. Process OKX x402 payment (real payment, no mock)
17
+ 7. Download and verify artifact signature
18
+ 8. Spawn dnacloud-installer agent to install
19
+ 9. Run dnacloud verify to confirm installation
@@ -0,0 +1,178 @@
1
+ ---
2
+ name: dnacloud
3
+ description: >
4
+ DNAcloud DNA 包搜索、购买、安装和发布能力。
5
+ 当用户表达想要某类专家能力、想安装某个 DNA 包、或想创建/发布 DNA 包时触发。
6
+ 触发词:我要一个[专家类型]、安装DNA、DNA market、dnacloud、
7
+ 我想要交易能力、给我安装、search DNA、buy DNA、install DNA,
8
+ 想要某种专家能力, 给 Claude 安装新能力, Claude 能不能帮我交易,
9
+ 我想发布DNA、我想创建DNA包、上传DNA、卖家、creator、我想赚取收益
10
+ ---
11
+
12
+ # DNAcloud Skill
13
+
14
+ ## 触发场景(买家)
15
+
16
+ - 用户说"我要一个交易大师"
17
+ - 用户说"帮我搜索可以交易的 DNA"
18
+ - 用户说"安装 Trading Master DNA"
19
+ - 用户说"我想给 Claude Code 安装新能力"
20
+ - 用户直接说出某类需求(如"我需要交易能力")
21
+
22
+ ## 触发场景(卖家)
23
+
24
+ - 用户说"我想发布一个 DNA 包"
25
+ - 用户说"我想创建一个专家 DNA"
26
+ - 用户说"怎么上传 DNA 到 marketplace"
27
+ - 用户说"我想查看我的收益"
28
+ - 用户说"我是 DNA 创作者"
29
+
30
+ ## 执行流程(买家)
31
+
32
+ ```
33
+ 0. 支付环境检测(前置,必须通过才能继续)
34
+ → 检查是否已安装 OKX OnchainOS(Agentic Wallet,支持 Solana)
35
+ → 若未安装,进入【支付环境配置引导】流程(见下方),完成后再继续
36
+ → 若已安装,直接进入步骤 1
37
+
38
+ 1. 理解需求 → 识别用户想要的专家能力类型
39
+ 2. 搜索市场 → 调用 dnacloud-marketplace MCP 搜索相关 DNA 包
40
+ 3. 展示推荐 → 展示匹配的 DNA 包、价格、能力、权限影响
41
+ 4. 用户确认 → 等待用户确认购买
42
+ 5. Solana USDC 支付 → 向 marketplace 请求 artifact,服务端返回 402 + Solana 支付要求
43
+ 调用 onchainos wallet send 向平台地址转 USDC,获取 txHash
44
+ 6. 提交支付凭证 → 携带 txHash 重放请求,服务端链上验证
45
+ 7. 下载 artifact → 服务端验证通过后返回签名包
46
+ 8. 展示安装预览 → 列出将要安装的所有文件和修改
47
+ 9. 用户确认安装 → 等待最终确认
48
+ 10. 执行安装 → 调用 dnacloud-installer agent
49
+ 11. 验证 → 运行 dnacloud verify
50
+ 12. 完成 → 告知用户新能力已可用
51
+ ```
52
+
53
+ ## 支付流程详细说明(步骤 5-6)
54
+
55
+ 服务端 402 响应包含:
56
+ ```json
57
+ {
58
+ "error": "payment_required",
59
+ "payment": {
60
+ "network": "solana-devnet",
61
+ "payTo": "AY5669hoJZMxWnaUGtbefiRj4btzXX5iR8Kh9Mtnc4KV",
62
+ "asset": "USDC",
63
+ "mint": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
64
+ "amount_atomic": "1000",
65
+ "amount_display": "0.001 USDC",
66
+ "nonce": "<uuid>"
67
+ }
68
+ }
69
+ ```
70
+
71
+ 支付步骤:
72
+ ```
73
+ 1. 调用 okx-agentic-wallet skill,执行 Solana USDC 转账:
74
+
75
+ onchainos wallet send \
76
+ --readable-amount 0.001 \
77
+ --recipient AY5669hoJZMxWnaUGtbefiRj4btzXX5iR8Kh9Mtnc4KV \
78
+ --chain solana \
79
+ --contract-token 4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
80
+
81
+ 2. 从返回结果中取得 txHash(Solana tx signature)
82
+
83
+ 3. 构造 X-PAYMENT header:
84
+ base64({ provider: "solana-onchain", txHash: "<txHash>", nonce: "<nonce>", network: "solana-devnet" })
85
+
86
+ 4. 携带 X-PAYMENT 重新请求下载接口
87
+ ```
88
+
89
+ ## 支付环境配置引导
90
+
91
+ **触发条件**:用户尝试购买 DNA 包时,检测到未安装 OKX OnchainOS。
92
+
93
+ **引导流程**:
94
+
95
+ ```
96
+ 购买 DNA 包需要 OKX OnchainOS Agentic Wallet 完成 Solana USDC 链上支付。
97
+ Agentic Wallet 私钥由 TEE 保管,无需手动管理私钥。
98
+
99
+ ━━━━━━━━ 安装 OKX OnchainOS ━━━━━━━━
100
+
101
+ 步骤 1:安装 OnchainOS Skills
102
+ npx skills add okx/onchainos-skills
103
+
104
+ 步骤 2:初始化 Agentic Wallet
105
+ onchainos wallet login
106
+ (使用邮箱验证,自动生成 EVM + Solana 钱包地址,私钥在 TEE 内)
107
+
108
+ 步骤 3:为 Solana 钱包充值 devnet USDC
109
+ - 查看 Solana 地址:onchainos wallet balance --chain solana
110
+ - 获取 devnet SOL(用于 gas):https://faucet.solana.com
111
+ - 获取 devnet USDC:https://spl-token-faucet.com
112
+ - Trading Master DNA 售价:0.001 USDC
113
+
114
+ 步骤 4:告诉我"配置完成了",我会重新检测并继续安装。
115
+
116
+ ⚠️ 说明:
117
+ - Agentic Wallet 私钥在 TEE 内生成,不可导出,用户无需管理私钥
118
+ - 支付通过 onchainos wallet send 完成,服务端用 Solana RPC 链上验证
119
+ - 如使用主网,请把 devnet USDC 换成 mainnet USDC
120
+
121
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
122
+ ```
123
+
124
+ **检测方式**:检查 onchainos CLI 是否可用,以及 Solana 钱包是否已初始化。
125
+ - 可用 → 通过,继续购买流程
126
+ - 不可用 → 展示引导,等待完成配置
127
+
128
+ ## 执行流程(卖家)
129
+
130
+ 识别到卖家意图时,引导至对应命令:
131
+
132
+ ```
133
+ 想创建新包 → /dna-create (脚手架 + manifest 生成)
134
+ 想上传/发布 → /dna-upload (validate → 签名 → 上传)
135
+ 想查看收益 → /dna-earnings (收益账本 + 待结算金额)
136
+ 想查看已上传 → /dna-packages (包列表 + 状态)
137
+ ```
138
+
139
+ 卖家引导提示:
140
+ - 提醒 `objective` 只能描述"安装什么能力",不能承诺盈利
141
+ - 提醒 MCP 配置中不能写入真实 API key,只用 `${ENV_VAR}` 占位
142
+ - 上传前必须先 validate(`dnacloud validate <zip>`)
143
+
144
+ ## 展示格式
145
+
146
+ 搜索结果展示:
147
+
148
+ ```
149
+ ━━━━━━━━ DNAcloud Marketplace ━━━━━━━━
150
+
151
+ 找到 [N] 个匹配的 DNA 包:
152
+
153
+ 📦 [Package Name] v[version] ⭐ 官方包
154
+ [description]
155
+ 价格: [amount] [currency]
156
+ 能力: [capability list]
157
+ 安装影响: [file list preview]
158
+
159
+ 输入序号确认购买,或输入 0 取消。
160
+
161
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
162
+ ```
163
+
164
+ ## 工具调用
165
+
166
+ 本 Skill 使用以下 MCP 工具:
167
+
168
+ - `mcp__dnacloud-marketplace__search` — 搜索 DNA 包
169
+ - `mcp__dnacloud-marketplace__get_package` — 获取包详情
170
+
171
+ 安装由 `dnacloud-installer` agent 负责执行。
172
+
173
+ ## 硬性约束
174
+
175
+ - 不使用 mock payment
176
+ - 支付未成功不安装
177
+ - 安装前必须展示预览
178
+ - 不接受未通过签名验证的 artifact
@@ -0,0 +1,10 @@
1
+ export declare function creatorEarnings(walletAddress: string, opts?: {
2
+ marketplaceUrl?: string;
3
+ }): Promise<void>;
4
+ export declare function creatorPayouts(walletAddress: string, opts?: {
5
+ marketplaceUrl?: string;
6
+ }): Promise<void>;
7
+ export declare function creatorPackages(walletAddress: string, opts?: {
8
+ marketplaceUrl?: string;
9
+ }): Promise<void>;
10
+ //# sourceMappingURL=creator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"creator.d.ts","sourceRoot":"","sources":["../../src/commands/creator.ts"],"names":[],"mappings":"AAiBA,wBAAsB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAqClH;AAED,wBAAsB,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCjH;AAED,wBAAsB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BlH"}
@@ -0,0 +1,122 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import fs from 'node:fs';
4
+ import path from 'node:path';
5
+ import { DNACLOUD_DIR } from '../installer/paths.js';
6
+ function getBaseUrl(cwd, override) {
7
+ const configPath = path.join(cwd, DNACLOUD_DIR, 'config.json');
8
+ if (override)
9
+ return override;
10
+ if (fs.existsSync(configPath)) {
11
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
12
+ return config.marketplaceUrl ?? 'http://localhost:8080';
13
+ }
14
+ return 'http://localhost:8080';
15
+ }
16
+ export async function creatorEarnings(walletAddress, opts = {}) {
17
+ const spin = ora('查询创作者收益...').start();
18
+ const baseUrl = getBaseUrl(process.cwd(), opts.marketplaceUrl);
19
+ try {
20
+ const res = await fetch(`${baseUrl}/v1/creator/earnings?wallet=${walletAddress}`);
21
+ if (!res.ok) {
22
+ spin.fail(`查询失败: ${res.status}`);
23
+ return;
24
+ }
25
+ const data = await res.json();
26
+ spin.succeed('收益查询成功');
27
+ console.log('');
28
+ console.log(chalk.bold('📊 创作者收益报告'));
29
+ console.log('');
30
+ console.log(chalk.gray(` Payout Address: ${data.payout_address}`));
31
+ console.log(chalk.gray(` Currency: ${data.currency} (${data.network})`));
32
+ console.log('');
33
+ console.log(` Total Gross Sales: ${chalk.white(formatAmount(data.total_gross))} ${data.currency}`);
34
+ console.log(` Platform Fee: ${chalk.red('-' + formatAmount(data.platform_fee))} ${data.currency}`);
35
+ console.log(` Pending Payout: ${chalk.yellow(formatAmount(data.pending_payout))} ${data.currency}`);
36
+ console.log(` Paid Payout: ${chalk.green(formatAmount(data.paid_payout))} ${data.currency}`);
37
+ if (data.entries?.length > 0) {
38
+ console.log('');
39
+ console.log(chalk.bold(' Recent Entries:'));
40
+ for (const entry of data.entries.slice(0, 10)) {
41
+ const statusColor = entry.status === 'paid' ? chalk.green
42
+ : entry.status === 'pending_payout' ? chalk.yellow
43
+ : chalk.red;
44
+ console.log(` ${statusColor('●')} ${entry.package_id} — ${formatAmount(entry.creator_amount)} ${data.currency} — ${statusColor(entry.status)}`);
45
+ }
46
+ }
47
+ }
48
+ catch (e) {
49
+ spin.fail(`连接失败: ${e instanceof Error ? e.message : e}`);
50
+ }
51
+ }
52
+ export async function creatorPayouts(walletAddress, opts = {}) {
53
+ const spin = ora('查询结算记录...').start();
54
+ const baseUrl = getBaseUrl(process.cwd(), opts.marketplaceUrl);
55
+ try {
56
+ const res = await fetch(`${baseUrl}/v1/creator/payouts?wallet=${walletAddress}`);
57
+ if (!res.ok) {
58
+ spin.fail(`查询失败: ${res.status}`);
59
+ return;
60
+ }
61
+ const data = await res.json();
62
+ spin.succeed('结算记录查询成功');
63
+ console.log('');
64
+ console.log(chalk.bold('💸 结算记录'));
65
+ if (!data.batches?.length) {
66
+ console.log(chalk.gray(' 暂无结算记录'));
67
+ return;
68
+ }
69
+ for (const batch of data.batches) {
70
+ const statusColor = batch.status === 'paid' ? chalk.green
71
+ : batch.status === 'payout_processing' ? chalk.blue
72
+ : batch.status === 'payout_failed' ? chalk.red
73
+ : chalk.yellow;
74
+ console.log('');
75
+ console.log(` ${statusColor('●')} ${batch.id}`);
76
+ console.log(chalk.gray(` Amount: ${formatAmount(batch.total_amount)} ${batch.currency}`));
77
+ console.log(chalk.gray(` Status: ${statusColor(batch.status)}`));
78
+ if (batch.tx_hash)
79
+ console.log(chalk.gray(` Tx: ${batch.tx_hash}`));
80
+ console.log(chalk.gray(` Date: ${batch.created_at}`));
81
+ }
82
+ }
83
+ catch (e) {
84
+ spin.fail(`连接失败: ${e instanceof Error ? e.message : e}`);
85
+ }
86
+ }
87
+ export async function creatorPackages(walletAddress, opts = {}) {
88
+ const spin = ora('查询已上传包...').start();
89
+ const baseUrl = getBaseUrl(process.cwd(), opts.marketplaceUrl);
90
+ try {
91
+ const res = await fetch(`${baseUrl}/v1/creator/packages?wallet=${walletAddress}`);
92
+ if (!res.ok) {
93
+ spin.fail(`查询失败: ${res.status}`);
94
+ return;
95
+ }
96
+ const data = await res.json();
97
+ spin.succeed('已上传包列表');
98
+ console.log('');
99
+ if (!data.packages?.length) {
100
+ console.log(chalk.gray(' 暂无上传包'));
101
+ return;
102
+ }
103
+ for (const pkg of data.packages) {
104
+ const statusColor = pkg.status === 'published' ? chalk.green
105
+ : pkg.status === 'rejected' ? chalk.red
106
+ : chalk.yellow;
107
+ console.log(` ${statusColor('●')} ${pkg.name} v${pkg.version} — ${statusColor(pkg.status)} — ${pkg.price} ${pkg.currency}`);
108
+ }
109
+ }
110
+ catch (e) {
111
+ spin.fail(`连接失败: ${e instanceof Error ? e.message : e}`);
112
+ }
113
+ }
114
+ function formatAmount(minimalUnits) {
115
+ if (!minimalUnits)
116
+ return '0.00';
117
+ const n = BigInt(minimalUnits);
118
+ const whole = n / 1000000n;
119
+ const frac = n % 1000000n;
120
+ return `${whole}.${frac.toString().padStart(6, '0')}`;
121
+ }
122
+ //# sourceMappingURL=creator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"creator.js","sourceRoot":"","sources":["../../src/commands/creator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface InitOptions {
2
+ marketplaceUrl: string;
3
+ }
4
+ export declare function initCommand(options: InitOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAMA,UAAU,WAAW;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAiHrE"}