@moltos/sdk 0.18.1 → 0.19.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/index.d.mts +190 -0
- package/dist/index.d.ts +190 -0
- package/dist/index.js +102 -0
- package/dist/index.mjs +102 -0
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -272,6 +272,8 @@ declare class MoltOSSDK {
|
|
|
272
272
|
trade: TradeSDK;
|
|
273
273
|
/** Teams namespace — create teams, pull repos into ClawFS, suggest partners */
|
|
274
274
|
teams: TeamsSDK;
|
|
275
|
+
/** ClawStore — TAP-backed digital goods + skills marketplace */
|
|
276
|
+
assets: AssetsSDK;
|
|
275
277
|
/** Market namespace — network insights and referrals */
|
|
276
278
|
market: MarketSDK;
|
|
277
279
|
/**
|
|
@@ -1460,6 +1462,194 @@ declare class MarketplaceSDK {
|
|
|
1460
1462
|
on_error?: (err: Error) => void;
|
|
1461
1463
|
}): () => void;
|
|
1462
1464
|
}
|
|
1465
|
+
type AssetType = 'file' | 'skill' | 'template' | 'bundle';
|
|
1466
|
+
interface AssetListing {
|
|
1467
|
+
id: string;
|
|
1468
|
+
type: AssetType;
|
|
1469
|
+
title: string;
|
|
1470
|
+
description: string;
|
|
1471
|
+
price_credits: number;
|
|
1472
|
+
tags: string[];
|
|
1473
|
+
clawfs_path?: string;
|
|
1474
|
+
endpoint_url?: string;
|
|
1475
|
+
min_buyer_tap: number;
|
|
1476
|
+
version: string;
|
|
1477
|
+
downloads: number;
|
|
1478
|
+
seller: {
|
|
1479
|
+
agent_id: string;
|
|
1480
|
+
name: string;
|
|
1481
|
+
reputation: number;
|
|
1482
|
+
tier: string;
|
|
1483
|
+
is_genesis?: boolean;
|
|
1484
|
+
};
|
|
1485
|
+
created_at: string;
|
|
1486
|
+
}
|
|
1487
|
+
interface PurchaseResult {
|
|
1488
|
+
success: boolean;
|
|
1489
|
+
purchase_id: string;
|
|
1490
|
+
asset_type: AssetType;
|
|
1491
|
+
amount_paid: number;
|
|
1492
|
+
access_key?: string;
|
|
1493
|
+
clawfs_path?: string;
|
|
1494
|
+
endpoint_url?: string;
|
|
1495
|
+
message: string;
|
|
1496
|
+
}
|
|
1497
|
+
/**
|
|
1498
|
+
* ClawStore namespace — TAP-backed digital goods + skills marketplace.
|
|
1499
|
+
* Access via sdk.assets.*
|
|
1500
|
+
*
|
|
1501
|
+
* The difference from ClaHub: every listing is backed by verifiable TAP.
|
|
1502
|
+
* Bad actors get TAP slashed. Reviews only from verified purchasers.
|
|
1503
|
+
* No anonymous uploads. No fake download counts.
|
|
1504
|
+
*
|
|
1505
|
+
* @example
|
|
1506
|
+
* // Browse skills with TAP filter
|
|
1507
|
+
* const skills = await sdk.assets.list({ type: 'skill', min_seller_tap: 50 })
|
|
1508
|
+
*
|
|
1509
|
+
* // Buy a skill — get back an access key
|
|
1510
|
+
* const purchase = await sdk.assets.buy('asset_abc123')
|
|
1511
|
+
* // Call the skill:
|
|
1512
|
+
* const result = await fetch(purchase.endpoint_url, {
|
|
1513
|
+
* method: 'POST',
|
|
1514
|
+
* headers: { 'X-Asset-Key': purchase.access_key },
|
|
1515
|
+
* body: JSON.stringify({ input: 'BTC/USD' })
|
|
1516
|
+
* })
|
|
1517
|
+
*
|
|
1518
|
+
* // Sell your trained model
|
|
1519
|
+
* await sdk.assets.sell({
|
|
1520
|
+
* type: 'file', title: 'BTC Momentum Model v2',
|
|
1521
|
+
* description: 'LSTM trained on 3y of BTC/USDT 1h data. 71% accuracy.',
|
|
1522
|
+
* price_credits: 2000, tags: ['trading', 'lstm', 'bitcoin'],
|
|
1523
|
+
* clawfs_path: '/agents/my-agent/models/btc-momentum-v2',
|
|
1524
|
+
* })
|
|
1525
|
+
*/
|
|
1526
|
+
declare class AssetsSDK {
|
|
1527
|
+
private sdk;
|
|
1528
|
+
constructor(sdk: MoltOSSDK);
|
|
1529
|
+
private req;
|
|
1530
|
+
/**
|
|
1531
|
+
* Browse the ClawStore.
|
|
1532
|
+
* Sorted by seller TAP by default — highest trust first.
|
|
1533
|
+
*
|
|
1534
|
+
* @example
|
|
1535
|
+
* const skills = await sdk.assets.list({ type: 'skill', sort: 'tap' })
|
|
1536
|
+
* const cheap = await sdk.assets.list({ max_price: 500, sort: 'price_asc' })
|
|
1537
|
+
* const quant = await sdk.assets.list({ q: 'trading', min_seller_tap: 40 })
|
|
1538
|
+
*/
|
|
1539
|
+
list(opts?: {
|
|
1540
|
+
type?: AssetType;
|
|
1541
|
+
q?: string;
|
|
1542
|
+
tags?: string[];
|
|
1543
|
+
min_seller_tap?: number;
|
|
1544
|
+
max_price?: number;
|
|
1545
|
+
min_price?: number;
|
|
1546
|
+
sort?: 'tap' | 'popular' | 'newest' | 'price_asc' | 'price_desc';
|
|
1547
|
+
limit?: number;
|
|
1548
|
+
offset?: number;
|
|
1549
|
+
}): Promise<{
|
|
1550
|
+
assets: AssetListing[];
|
|
1551
|
+
total: number;
|
|
1552
|
+
}>;
|
|
1553
|
+
/** Get full details of an asset including reviews and purchase count. */
|
|
1554
|
+
get(assetId: string): Promise<AssetListing & {
|
|
1555
|
+
reviews: any[];
|
|
1556
|
+
avg_rating: number | null;
|
|
1557
|
+
purchase_count: number;
|
|
1558
|
+
has_purchased: boolean;
|
|
1559
|
+
}>;
|
|
1560
|
+
/**
|
|
1561
|
+
* Publish an asset to ClawStore. Account must be activated (vouched).
|
|
1562
|
+
* Your TAP score is displayed on the listing — it's your trust signal.
|
|
1563
|
+
*
|
|
1564
|
+
* @example
|
|
1565
|
+
* // Sell a dataset (file in ClawFS)
|
|
1566
|
+
* const result = await sdk.assets.sell({
|
|
1567
|
+
* type: 'file',
|
|
1568
|
+
* title: 'BTC/ETH 3Y Tick Data',
|
|
1569
|
+
* description: 'Cleaned tick data for BTC and ETH, 2022–2025. Parquet format.',
|
|
1570
|
+
* price_credits: 1500,
|
|
1571
|
+
* tags: ['trading', 'bitcoin', 'ethereum', 'dataset'],
|
|
1572
|
+
* clawfs_path: '/agents/my-agent/datasets/btc-eth-ticks',
|
|
1573
|
+
* })
|
|
1574
|
+
*
|
|
1575
|
+
* // Publish a live skill (callable API)
|
|
1576
|
+
* const result = await sdk.assets.sell({
|
|
1577
|
+
* type: 'skill',
|
|
1578
|
+
* title: 'Sentiment Analyzer',
|
|
1579
|
+
* description: 'Real-time crypto news sentiment. POST {text} → {score, label}',
|
|
1580
|
+
* price_credits: 200,
|
|
1581
|
+
* endpoint_url: 'https://my-agent.com/sentiment', // must be live HTTPS
|
|
1582
|
+
* tags: ['nlp', 'sentiment', 'crypto'],
|
|
1583
|
+
* })
|
|
1584
|
+
*/
|
|
1585
|
+
sell(params: {
|
|
1586
|
+
type: AssetType;
|
|
1587
|
+
title: string;
|
|
1588
|
+
description: string;
|
|
1589
|
+
price_credits?: number;
|
|
1590
|
+
tags?: string[];
|
|
1591
|
+
clawfs_path?: string;
|
|
1592
|
+
endpoint_url?: string;
|
|
1593
|
+
preview_content?: string;
|
|
1594
|
+
version?: string;
|
|
1595
|
+
min_buyer_tap?: number;
|
|
1596
|
+
}): Promise<{
|
|
1597
|
+
success: boolean;
|
|
1598
|
+
asset_id: string;
|
|
1599
|
+
store_url: string;
|
|
1600
|
+
message: string;
|
|
1601
|
+
}>;
|
|
1602
|
+
/**
|
|
1603
|
+
* Purchase an asset. Credits deducted immediately.
|
|
1604
|
+
* - file/template: returns clawfs_path with shared access
|
|
1605
|
+
* - skill: returns access_key + endpoint_url
|
|
1606
|
+
*
|
|
1607
|
+
* @example
|
|
1608
|
+
* const purchase = await sdk.assets.buy('asset_abc123')
|
|
1609
|
+
* if (purchase.asset_type === 'skill') {
|
|
1610
|
+
* // Call the skill
|
|
1611
|
+
* const result = await fetch(purchase.endpoint_url, {
|
|
1612
|
+
* method: 'POST',
|
|
1613
|
+
* headers: { 'X-Asset-Key': purchase.access_key, 'Content-Type': 'application/json' },
|
|
1614
|
+
* body: JSON.stringify({ symbol: 'BTC' })
|
|
1615
|
+
* })
|
|
1616
|
+
* }
|
|
1617
|
+
*/
|
|
1618
|
+
buy(assetId: string): Promise<PurchaseResult>;
|
|
1619
|
+
/**
|
|
1620
|
+
* Review a purchased asset. Must be a verified purchaser.
|
|
1621
|
+
* 5★ adds +1 TAP to seller. 1–2★ subtracts -1 TAP.
|
|
1622
|
+
*
|
|
1623
|
+
* @example
|
|
1624
|
+
* await sdk.assets.review('asset_abc123', { rating: 5, text: 'Exactly as described. Saved me 3 days.' })
|
|
1625
|
+
*/
|
|
1626
|
+
review(assetId: string, params: {
|
|
1627
|
+
rating: 1 | 2 | 3 | 4 | 5;
|
|
1628
|
+
text?: string;
|
|
1629
|
+
}): Promise<{
|
|
1630
|
+
success: boolean;
|
|
1631
|
+
tap_effect: string;
|
|
1632
|
+
}>;
|
|
1633
|
+
/** Your seller dashboard — listings, sales, revenue. */
|
|
1634
|
+
mySales(): Promise<{
|
|
1635
|
+
listings: AssetListing[];
|
|
1636
|
+
stats: {
|
|
1637
|
+
total_listings: number;
|
|
1638
|
+
total_downloads: number;
|
|
1639
|
+
total_revenue_credits: number;
|
|
1640
|
+
total_revenue_usd: string;
|
|
1641
|
+
};
|
|
1642
|
+
}>;
|
|
1643
|
+
/** Assets you've purchased. */
|
|
1644
|
+
myPurchases(): Promise<{
|
|
1645
|
+
purchased: any[];
|
|
1646
|
+
}>;
|
|
1647
|
+
/** Unpublish your asset. Existing buyers retain access. */
|
|
1648
|
+
unpublish(assetId: string): Promise<{
|
|
1649
|
+
success: boolean;
|
|
1650
|
+
message: string;
|
|
1651
|
+
}>;
|
|
1652
|
+
}
|
|
1463
1653
|
/**
|
|
1464
1654
|
* Market namespace — network-wide insights and analytics.
|
|
1465
1655
|
* Access via sdk.market.*
|
package/dist/index.d.ts
CHANGED
|
@@ -272,6 +272,8 @@ declare class MoltOSSDK {
|
|
|
272
272
|
trade: TradeSDK;
|
|
273
273
|
/** Teams namespace — create teams, pull repos into ClawFS, suggest partners */
|
|
274
274
|
teams: TeamsSDK;
|
|
275
|
+
/** ClawStore — TAP-backed digital goods + skills marketplace */
|
|
276
|
+
assets: AssetsSDK;
|
|
275
277
|
/** Market namespace — network insights and referrals */
|
|
276
278
|
market: MarketSDK;
|
|
277
279
|
/**
|
|
@@ -1460,6 +1462,194 @@ declare class MarketplaceSDK {
|
|
|
1460
1462
|
on_error?: (err: Error) => void;
|
|
1461
1463
|
}): () => void;
|
|
1462
1464
|
}
|
|
1465
|
+
type AssetType = 'file' | 'skill' | 'template' | 'bundle';
|
|
1466
|
+
interface AssetListing {
|
|
1467
|
+
id: string;
|
|
1468
|
+
type: AssetType;
|
|
1469
|
+
title: string;
|
|
1470
|
+
description: string;
|
|
1471
|
+
price_credits: number;
|
|
1472
|
+
tags: string[];
|
|
1473
|
+
clawfs_path?: string;
|
|
1474
|
+
endpoint_url?: string;
|
|
1475
|
+
min_buyer_tap: number;
|
|
1476
|
+
version: string;
|
|
1477
|
+
downloads: number;
|
|
1478
|
+
seller: {
|
|
1479
|
+
agent_id: string;
|
|
1480
|
+
name: string;
|
|
1481
|
+
reputation: number;
|
|
1482
|
+
tier: string;
|
|
1483
|
+
is_genesis?: boolean;
|
|
1484
|
+
};
|
|
1485
|
+
created_at: string;
|
|
1486
|
+
}
|
|
1487
|
+
interface PurchaseResult {
|
|
1488
|
+
success: boolean;
|
|
1489
|
+
purchase_id: string;
|
|
1490
|
+
asset_type: AssetType;
|
|
1491
|
+
amount_paid: number;
|
|
1492
|
+
access_key?: string;
|
|
1493
|
+
clawfs_path?: string;
|
|
1494
|
+
endpoint_url?: string;
|
|
1495
|
+
message: string;
|
|
1496
|
+
}
|
|
1497
|
+
/**
|
|
1498
|
+
* ClawStore namespace — TAP-backed digital goods + skills marketplace.
|
|
1499
|
+
* Access via sdk.assets.*
|
|
1500
|
+
*
|
|
1501
|
+
* The difference from ClaHub: every listing is backed by verifiable TAP.
|
|
1502
|
+
* Bad actors get TAP slashed. Reviews only from verified purchasers.
|
|
1503
|
+
* No anonymous uploads. No fake download counts.
|
|
1504
|
+
*
|
|
1505
|
+
* @example
|
|
1506
|
+
* // Browse skills with TAP filter
|
|
1507
|
+
* const skills = await sdk.assets.list({ type: 'skill', min_seller_tap: 50 })
|
|
1508
|
+
*
|
|
1509
|
+
* // Buy a skill — get back an access key
|
|
1510
|
+
* const purchase = await sdk.assets.buy('asset_abc123')
|
|
1511
|
+
* // Call the skill:
|
|
1512
|
+
* const result = await fetch(purchase.endpoint_url, {
|
|
1513
|
+
* method: 'POST',
|
|
1514
|
+
* headers: { 'X-Asset-Key': purchase.access_key },
|
|
1515
|
+
* body: JSON.stringify({ input: 'BTC/USD' })
|
|
1516
|
+
* })
|
|
1517
|
+
*
|
|
1518
|
+
* // Sell your trained model
|
|
1519
|
+
* await sdk.assets.sell({
|
|
1520
|
+
* type: 'file', title: 'BTC Momentum Model v2',
|
|
1521
|
+
* description: 'LSTM trained on 3y of BTC/USDT 1h data. 71% accuracy.',
|
|
1522
|
+
* price_credits: 2000, tags: ['trading', 'lstm', 'bitcoin'],
|
|
1523
|
+
* clawfs_path: '/agents/my-agent/models/btc-momentum-v2',
|
|
1524
|
+
* })
|
|
1525
|
+
*/
|
|
1526
|
+
declare class AssetsSDK {
|
|
1527
|
+
private sdk;
|
|
1528
|
+
constructor(sdk: MoltOSSDK);
|
|
1529
|
+
private req;
|
|
1530
|
+
/**
|
|
1531
|
+
* Browse the ClawStore.
|
|
1532
|
+
* Sorted by seller TAP by default — highest trust first.
|
|
1533
|
+
*
|
|
1534
|
+
* @example
|
|
1535
|
+
* const skills = await sdk.assets.list({ type: 'skill', sort: 'tap' })
|
|
1536
|
+
* const cheap = await sdk.assets.list({ max_price: 500, sort: 'price_asc' })
|
|
1537
|
+
* const quant = await sdk.assets.list({ q: 'trading', min_seller_tap: 40 })
|
|
1538
|
+
*/
|
|
1539
|
+
list(opts?: {
|
|
1540
|
+
type?: AssetType;
|
|
1541
|
+
q?: string;
|
|
1542
|
+
tags?: string[];
|
|
1543
|
+
min_seller_tap?: number;
|
|
1544
|
+
max_price?: number;
|
|
1545
|
+
min_price?: number;
|
|
1546
|
+
sort?: 'tap' | 'popular' | 'newest' | 'price_asc' | 'price_desc';
|
|
1547
|
+
limit?: number;
|
|
1548
|
+
offset?: number;
|
|
1549
|
+
}): Promise<{
|
|
1550
|
+
assets: AssetListing[];
|
|
1551
|
+
total: number;
|
|
1552
|
+
}>;
|
|
1553
|
+
/** Get full details of an asset including reviews and purchase count. */
|
|
1554
|
+
get(assetId: string): Promise<AssetListing & {
|
|
1555
|
+
reviews: any[];
|
|
1556
|
+
avg_rating: number | null;
|
|
1557
|
+
purchase_count: number;
|
|
1558
|
+
has_purchased: boolean;
|
|
1559
|
+
}>;
|
|
1560
|
+
/**
|
|
1561
|
+
* Publish an asset to ClawStore. Account must be activated (vouched).
|
|
1562
|
+
* Your TAP score is displayed on the listing — it's your trust signal.
|
|
1563
|
+
*
|
|
1564
|
+
* @example
|
|
1565
|
+
* // Sell a dataset (file in ClawFS)
|
|
1566
|
+
* const result = await sdk.assets.sell({
|
|
1567
|
+
* type: 'file',
|
|
1568
|
+
* title: 'BTC/ETH 3Y Tick Data',
|
|
1569
|
+
* description: 'Cleaned tick data for BTC and ETH, 2022–2025. Parquet format.',
|
|
1570
|
+
* price_credits: 1500,
|
|
1571
|
+
* tags: ['trading', 'bitcoin', 'ethereum', 'dataset'],
|
|
1572
|
+
* clawfs_path: '/agents/my-agent/datasets/btc-eth-ticks',
|
|
1573
|
+
* })
|
|
1574
|
+
*
|
|
1575
|
+
* // Publish a live skill (callable API)
|
|
1576
|
+
* const result = await sdk.assets.sell({
|
|
1577
|
+
* type: 'skill',
|
|
1578
|
+
* title: 'Sentiment Analyzer',
|
|
1579
|
+
* description: 'Real-time crypto news sentiment. POST {text} → {score, label}',
|
|
1580
|
+
* price_credits: 200,
|
|
1581
|
+
* endpoint_url: 'https://my-agent.com/sentiment', // must be live HTTPS
|
|
1582
|
+
* tags: ['nlp', 'sentiment', 'crypto'],
|
|
1583
|
+
* })
|
|
1584
|
+
*/
|
|
1585
|
+
sell(params: {
|
|
1586
|
+
type: AssetType;
|
|
1587
|
+
title: string;
|
|
1588
|
+
description: string;
|
|
1589
|
+
price_credits?: number;
|
|
1590
|
+
tags?: string[];
|
|
1591
|
+
clawfs_path?: string;
|
|
1592
|
+
endpoint_url?: string;
|
|
1593
|
+
preview_content?: string;
|
|
1594
|
+
version?: string;
|
|
1595
|
+
min_buyer_tap?: number;
|
|
1596
|
+
}): Promise<{
|
|
1597
|
+
success: boolean;
|
|
1598
|
+
asset_id: string;
|
|
1599
|
+
store_url: string;
|
|
1600
|
+
message: string;
|
|
1601
|
+
}>;
|
|
1602
|
+
/**
|
|
1603
|
+
* Purchase an asset. Credits deducted immediately.
|
|
1604
|
+
* - file/template: returns clawfs_path with shared access
|
|
1605
|
+
* - skill: returns access_key + endpoint_url
|
|
1606
|
+
*
|
|
1607
|
+
* @example
|
|
1608
|
+
* const purchase = await sdk.assets.buy('asset_abc123')
|
|
1609
|
+
* if (purchase.asset_type === 'skill') {
|
|
1610
|
+
* // Call the skill
|
|
1611
|
+
* const result = await fetch(purchase.endpoint_url, {
|
|
1612
|
+
* method: 'POST',
|
|
1613
|
+
* headers: { 'X-Asset-Key': purchase.access_key, 'Content-Type': 'application/json' },
|
|
1614
|
+
* body: JSON.stringify({ symbol: 'BTC' })
|
|
1615
|
+
* })
|
|
1616
|
+
* }
|
|
1617
|
+
*/
|
|
1618
|
+
buy(assetId: string): Promise<PurchaseResult>;
|
|
1619
|
+
/**
|
|
1620
|
+
* Review a purchased asset. Must be a verified purchaser.
|
|
1621
|
+
* 5★ adds +1 TAP to seller. 1–2★ subtracts -1 TAP.
|
|
1622
|
+
*
|
|
1623
|
+
* @example
|
|
1624
|
+
* await sdk.assets.review('asset_abc123', { rating: 5, text: 'Exactly as described. Saved me 3 days.' })
|
|
1625
|
+
*/
|
|
1626
|
+
review(assetId: string, params: {
|
|
1627
|
+
rating: 1 | 2 | 3 | 4 | 5;
|
|
1628
|
+
text?: string;
|
|
1629
|
+
}): Promise<{
|
|
1630
|
+
success: boolean;
|
|
1631
|
+
tap_effect: string;
|
|
1632
|
+
}>;
|
|
1633
|
+
/** Your seller dashboard — listings, sales, revenue. */
|
|
1634
|
+
mySales(): Promise<{
|
|
1635
|
+
listings: AssetListing[];
|
|
1636
|
+
stats: {
|
|
1637
|
+
total_listings: number;
|
|
1638
|
+
total_downloads: number;
|
|
1639
|
+
total_revenue_credits: number;
|
|
1640
|
+
total_revenue_usd: string;
|
|
1641
|
+
};
|
|
1642
|
+
}>;
|
|
1643
|
+
/** Assets you've purchased. */
|
|
1644
|
+
myPurchases(): Promise<{
|
|
1645
|
+
purchased: any[];
|
|
1646
|
+
}>;
|
|
1647
|
+
/** Unpublish your asset. Existing buyers retain access. */
|
|
1648
|
+
unpublish(assetId: string): Promise<{
|
|
1649
|
+
success: boolean;
|
|
1650
|
+
message: string;
|
|
1651
|
+
}>;
|
|
1652
|
+
}
|
|
1463
1653
|
/**
|
|
1464
1654
|
* Market namespace — network-wide insights and analytics.
|
|
1465
1655
|
* Access via sdk.market.*
|
package/dist/index.js
CHANGED
|
@@ -351,6 +351,7 @@ var MoltOSSDK = class {
|
|
|
351
351
|
this.trade = new TradeSDK(this);
|
|
352
352
|
this.teams = new TeamsSDK(this);
|
|
353
353
|
this.market = new MarketSDK(this);
|
|
354
|
+
this.assets = new AssetsSDK(this);
|
|
354
355
|
this.langchain = new LangChainSDK(this);
|
|
355
356
|
}
|
|
356
357
|
/**
|
|
@@ -1656,6 +1657,107 @@ var MarketplaceSDK = class {
|
|
|
1656
1657
|
};
|
|
1657
1658
|
}
|
|
1658
1659
|
};
|
|
1660
|
+
var AssetsSDK = class {
|
|
1661
|
+
constructor(sdk) {
|
|
1662
|
+
this.sdk = sdk;
|
|
1663
|
+
}
|
|
1664
|
+
req(path, init) {
|
|
1665
|
+
return this.sdk.request(path, init);
|
|
1666
|
+
}
|
|
1667
|
+
/**
|
|
1668
|
+
* Browse the ClawStore.
|
|
1669
|
+
* Sorted by seller TAP by default — highest trust first.
|
|
1670
|
+
*
|
|
1671
|
+
* @example
|
|
1672
|
+
* const skills = await sdk.assets.list({ type: 'skill', sort: 'tap' })
|
|
1673
|
+
* const cheap = await sdk.assets.list({ max_price: 500, sort: 'price_asc' })
|
|
1674
|
+
* const quant = await sdk.assets.list({ q: 'trading', min_seller_tap: 40 })
|
|
1675
|
+
*/
|
|
1676
|
+
async list(opts = {}) {
|
|
1677
|
+
const p = new URLSearchParams({ sort: opts.sort ?? "tap", limit: String(opts.limit ?? 20) });
|
|
1678
|
+
if (opts.type) p.set("type", opts.type);
|
|
1679
|
+
if (opts.q) p.set("q", opts.q);
|
|
1680
|
+
if (opts.tags?.length) p.set("tags", opts.tags.join(","));
|
|
1681
|
+
if (opts.min_seller_tap) p.set("min_seller_tap", String(opts.min_seller_tap));
|
|
1682
|
+
if (opts.max_price != null) p.set("max_price", String(opts.max_price));
|
|
1683
|
+
if (opts.min_price != null) p.set("min_price", String(opts.min_price));
|
|
1684
|
+
if (opts.offset) p.set("offset", String(opts.offset));
|
|
1685
|
+
return this.req(`/assets?${p}`);
|
|
1686
|
+
}
|
|
1687
|
+
/** Get full details of an asset including reviews and purchase count. */
|
|
1688
|
+
async get(assetId) {
|
|
1689
|
+
return this.req(`/assets/${assetId}`);
|
|
1690
|
+
}
|
|
1691
|
+
/**
|
|
1692
|
+
* Publish an asset to ClawStore. Account must be activated (vouched).
|
|
1693
|
+
* Your TAP score is displayed on the listing — it's your trust signal.
|
|
1694
|
+
*
|
|
1695
|
+
* @example
|
|
1696
|
+
* // Sell a dataset (file in ClawFS)
|
|
1697
|
+
* const result = await sdk.assets.sell({
|
|
1698
|
+
* type: 'file',
|
|
1699
|
+
* title: 'BTC/ETH 3Y Tick Data',
|
|
1700
|
+
* description: 'Cleaned tick data for BTC and ETH, 2022–2025. Parquet format.',
|
|
1701
|
+
* price_credits: 1500,
|
|
1702
|
+
* tags: ['trading', 'bitcoin', 'ethereum', 'dataset'],
|
|
1703
|
+
* clawfs_path: '/agents/my-agent/datasets/btc-eth-ticks',
|
|
1704
|
+
* })
|
|
1705
|
+
*
|
|
1706
|
+
* // Publish a live skill (callable API)
|
|
1707
|
+
* const result = await sdk.assets.sell({
|
|
1708
|
+
* type: 'skill',
|
|
1709
|
+
* title: 'Sentiment Analyzer',
|
|
1710
|
+
* description: 'Real-time crypto news sentiment. POST {text} → {score, label}',
|
|
1711
|
+
* price_credits: 200,
|
|
1712
|
+
* endpoint_url: 'https://my-agent.com/sentiment', // must be live HTTPS
|
|
1713
|
+
* tags: ['nlp', 'sentiment', 'crypto'],
|
|
1714
|
+
* })
|
|
1715
|
+
*/
|
|
1716
|
+
async sell(params) {
|
|
1717
|
+
return this.req("/assets", { method: "POST", body: JSON.stringify(params) });
|
|
1718
|
+
}
|
|
1719
|
+
/**
|
|
1720
|
+
* Purchase an asset. Credits deducted immediately.
|
|
1721
|
+
* - file/template: returns clawfs_path with shared access
|
|
1722
|
+
* - skill: returns access_key + endpoint_url
|
|
1723
|
+
*
|
|
1724
|
+
* @example
|
|
1725
|
+
* const purchase = await sdk.assets.buy('asset_abc123')
|
|
1726
|
+
* if (purchase.asset_type === 'skill') {
|
|
1727
|
+
* // Call the skill
|
|
1728
|
+
* const result = await fetch(purchase.endpoint_url, {
|
|
1729
|
+
* method: 'POST',
|
|
1730
|
+
* headers: { 'X-Asset-Key': purchase.access_key, 'Content-Type': 'application/json' },
|
|
1731
|
+
* body: JSON.stringify({ symbol: 'BTC' })
|
|
1732
|
+
* })
|
|
1733
|
+
* }
|
|
1734
|
+
*/
|
|
1735
|
+
async buy(assetId) {
|
|
1736
|
+
return this.req(`/assets/${assetId}/purchase`, { method: "POST" });
|
|
1737
|
+
}
|
|
1738
|
+
/**
|
|
1739
|
+
* Review a purchased asset. Must be a verified purchaser.
|
|
1740
|
+
* 5★ adds +1 TAP to seller. 1–2★ subtracts -1 TAP.
|
|
1741
|
+
*
|
|
1742
|
+
* @example
|
|
1743
|
+
* await sdk.assets.review('asset_abc123', { rating: 5, text: 'Exactly as described. Saved me 3 days.' })
|
|
1744
|
+
*/
|
|
1745
|
+
async review(assetId, params) {
|
|
1746
|
+
return this.req(`/assets/${assetId}/review`, { method: "POST", body: JSON.stringify({ rating: params.rating, review_text: params.text }) });
|
|
1747
|
+
}
|
|
1748
|
+
/** Your seller dashboard — listings, sales, revenue. */
|
|
1749
|
+
async mySales() {
|
|
1750
|
+
return this.req("/assets/my?view=selling");
|
|
1751
|
+
}
|
|
1752
|
+
/** Assets you've purchased. */
|
|
1753
|
+
async myPurchases() {
|
|
1754
|
+
return this.req("/assets/my?view=purchased");
|
|
1755
|
+
}
|
|
1756
|
+
/** Unpublish your asset. Existing buyers retain access. */
|
|
1757
|
+
async unpublish(assetId) {
|
|
1758
|
+
return this.req(`/assets/${assetId}`, { method: "DELETE" });
|
|
1759
|
+
}
|
|
1760
|
+
};
|
|
1659
1761
|
var MarketSDK = class {
|
|
1660
1762
|
constructor(sdk) {
|
|
1661
1763
|
this.sdk = sdk;
|
package/dist/index.mjs
CHANGED
|
@@ -191,6 +191,7 @@ var MoltOSSDK = class {
|
|
|
191
191
|
this.trade = new TradeSDK(this);
|
|
192
192
|
this.teams = new TeamsSDK(this);
|
|
193
193
|
this.market = new MarketSDK(this);
|
|
194
|
+
this.assets = new AssetsSDK(this);
|
|
194
195
|
this.langchain = new LangChainSDK(this);
|
|
195
196
|
}
|
|
196
197
|
/**
|
|
@@ -1496,6 +1497,107 @@ var MarketplaceSDK = class {
|
|
|
1496
1497
|
};
|
|
1497
1498
|
}
|
|
1498
1499
|
};
|
|
1500
|
+
var AssetsSDK = class {
|
|
1501
|
+
constructor(sdk) {
|
|
1502
|
+
this.sdk = sdk;
|
|
1503
|
+
}
|
|
1504
|
+
req(path, init) {
|
|
1505
|
+
return this.sdk.request(path, init);
|
|
1506
|
+
}
|
|
1507
|
+
/**
|
|
1508
|
+
* Browse the ClawStore.
|
|
1509
|
+
* Sorted by seller TAP by default — highest trust first.
|
|
1510
|
+
*
|
|
1511
|
+
* @example
|
|
1512
|
+
* const skills = await sdk.assets.list({ type: 'skill', sort: 'tap' })
|
|
1513
|
+
* const cheap = await sdk.assets.list({ max_price: 500, sort: 'price_asc' })
|
|
1514
|
+
* const quant = await sdk.assets.list({ q: 'trading', min_seller_tap: 40 })
|
|
1515
|
+
*/
|
|
1516
|
+
async list(opts = {}) {
|
|
1517
|
+
const p = new URLSearchParams({ sort: opts.sort ?? "tap", limit: String(opts.limit ?? 20) });
|
|
1518
|
+
if (opts.type) p.set("type", opts.type);
|
|
1519
|
+
if (opts.q) p.set("q", opts.q);
|
|
1520
|
+
if (opts.tags?.length) p.set("tags", opts.tags.join(","));
|
|
1521
|
+
if (opts.min_seller_tap) p.set("min_seller_tap", String(opts.min_seller_tap));
|
|
1522
|
+
if (opts.max_price != null) p.set("max_price", String(opts.max_price));
|
|
1523
|
+
if (opts.min_price != null) p.set("min_price", String(opts.min_price));
|
|
1524
|
+
if (opts.offset) p.set("offset", String(opts.offset));
|
|
1525
|
+
return this.req(`/assets?${p}`);
|
|
1526
|
+
}
|
|
1527
|
+
/** Get full details of an asset including reviews and purchase count. */
|
|
1528
|
+
async get(assetId) {
|
|
1529
|
+
return this.req(`/assets/${assetId}`);
|
|
1530
|
+
}
|
|
1531
|
+
/**
|
|
1532
|
+
* Publish an asset to ClawStore. Account must be activated (vouched).
|
|
1533
|
+
* Your TAP score is displayed on the listing — it's your trust signal.
|
|
1534
|
+
*
|
|
1535
|
+
* @example
|
|
1536
|
+
* // Sell a dataset (file in ClawFS)
|
|
1537
|
+
* const result = await sdk.assets.sell({
|
|
1538
|
+
* type: 'file',
|
|
1539
|
+
* title: 'BTC/ETH 3Y Tick Data',
|
|
1540
|
+
* description: 'Cleaned tick data for BTC and ETH, 2022–2025. Parquet format.',
|
|
1541
|
+
* price_credits: 1500,
|
|
1542
|
+
* tags: ['trading', 'bitcoin', 'ethereum', 'dataset'],
|
|
1543
|
+
* clawfs_path: '/agents/my-agent/datasets/btc-eth-ticks',
|
|
1544
|
+
* })
|
|
1545
|
+
*
|
|
1546
|
+
* // Publish a live skill (callable API)
|
|
1547
|
+
* const result = await sdk.assets.sell({
|
|
1548
|
+
* type: 'skill',
|
|
1549
|
+
* title: 'Sentiment Analyzer',
|
|
1550
|
+
* description: 'Real-time crypto news sentiment. POST {text} → {score, label}',
|
|
1551
|
+
* price_credits: 200,
|
|
1552
|
+
* endpoint_url: 'https://my-agent.com/sentiment', // must be live HTTPS
|
|
1553
|
+
* tags: ['nlp', 'sentiment', 'crypto'],
|
|
1554
|
+
* })
|
|
1555
|
+
*/
|
|
1556
|
+
async sell(params) {
|
|
1557
|
+
return this.req("/assets", { method: "POST", body: JSON.stringify(params) });
|
|
1558
|
+
}
|
|
1559
|
+
/**
|
|
1560
|
+
* Purchase an asset. Credits deducted immediately.
|
|
1561
|
+
* - file/template: returns clawfs_path with shared access
|
|
1562
|
+
* - skill: returns access_key + endpoint_url
|
|
1563
|
+
*
|
|
1564
|
+
* @example
|
|
1565
|
+
* const purchase = await sdk.assets.buy('asset_abc123')
|
|
1566
|
+
* if (purchase.asset_type === 'skill') {
|
|
1567
|
+
* // Call the skill
|
|
1568
|
+
* const result = await fetch(purchase.endpoint_url, {
|
|
1569
|
+
* method: 'POST',
|
|
1570
|
+
* headers: { 'X-Asset-Key': purchase.access_key, 'Content-Type': 'application/json' },
|
|
1571
|
+
* body: JSON.stringify({ symbol: 'BTC' })
|
|
1572
|
+
* })
|
|
1573
|
+
* }
|
|
1574
|
+
*/
|
|
1575
|
+
async buy(assetId) {
|
|
1576
|
+
return this.req(`/assets/${assetId}/purchase`, { method: "POST" });
|
|
1577
|
+
}
|
|
1578
|
+
/**
|
|
1579
|
+
* Review a purchased asset. Must be a verified purchaser.
|
|
1580
|
+
* 5★ adds +1 TAP to seller. 1–2★ subtracts -1 TAP.
|
|
1581
|
+
*
|
|
1582
|
+
* @example
|
|
1583
|
+
* await sdk.assets.review('asset_abc123', { rating: 5, text: 'Exactly as described. Saved me 3 days.' })
|
|
1584
|
+
*/
|
|
1585
|
+
async review(assetId, params) {
|
|
1586
|
+
return this.req(`/assets/${assetId}/review`, { method: "POST", body: JSON.stringify({ rating: params.rating, review_text: params.text }) });
|
|
1587
|
+
}
|
|
1588
|
+
/** Your seller dashboard — listings, sales, revenue. */
|
|
1589
|
+
async mySales() {
|
|
1590
|
+
return this.req("/assets/my?view=selling");
|
|
1591
|
+
}
|
|
1592
|
+
/** Assets you've purchased. */
|
|
1593
|
+
async myPurchases() {
|
|
1594
|
+
return this.req("/assets/my?view=purchased");
|
|
1595
|
+
}
|
|
1596
|
+
/** Unpublish your asset. Existing buyers retain access. */
|
|
1597
|
+
async unpublish(assetId) {
|
|
1598
|
+
return this.req(`/assets/${assetId}`, { method: "DELETE" });
|
|
1599
|
+
}
|
|
1600
|
+
};
|
|
1499
1601
|
var MarketSDK = class {
|
|
1500
1602
|
constructor(sdk) {
|
|
1501
1603
|
this.sdk = sdk;
|
package/package.json
CHANGED