@1sat/actions 0.0.61 → 0.0.62
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/balance/index.d.ts +41 -0
- package/dist/balance/index.d.ts.map +1 -0
- package/dist/balance/index.js +111 -0
- package/dist/balance/index.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/registry/index.d.ts +11 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +10 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/package-tx.d.ts +19 -0
- package/dist/registry/package-tx.d.ts.map +1 -0
- package/dist/registry/package-tx.js +267 -0
- package/dist/registry/package-tx.js.map +1 -0
- package/dist/registry.d.ts +62 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +75 -0
- package/dist/registry.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Balance Module
|
|
3
|
+
*
|
|
4
|
+
* Actions for querying wallet balance and payment UTXOs.
|
|
5
|
+
*/
|
|
6
|
+
import type { Action } from '../types';
|
|
7
|
+
export interface Balance {
|
|
8
|
+
/** Balance in satoshis */
|
|
9
|
+
satoshis: number;
|
|
10
|
+
/** Balance in BSV */
|
|
11
|
+
bsv: number;
|
|
12
|
+
/** Balance in USD cents */
|
|
13
|
+
usdInCents: number;
|
|
14
|
+
}
|
|
15
|
+
export interface PaymentUtxo {
|
|
16
|
+
txid: string;
|
|
17
|
+
vout: number;
|
|
18
|
+
satoshis: number;
|
|
19
|
+
script: string;
|
|
20
|
+
}
|
|
21
|
+
/** Input for getBalance action (no required params) */
|
|
22
|
+
export type GetBalanceInput = Record<string, never>;
|
|
23
|
+
/**
|
|
24
|
+
* Get wallet balance with USD conversion.
|
|
25
|
+
*/
|
|
26
|
+
export declare const getBalance: Action<GetBalanceInput, Balance>;
|
|
27
|
+
/** Input for getPaymentUtxos action (no required params) */
|
|
28
|
+
export type GetPaymentUtxosInput = Record<string, never>;
|
|
29
|
+
/**
|
|
30
|
+
* Get payment UTXOs for external use.
|
|
31
|
+
*/
|
|
32
|
+
export declare const getPaymentUtxos: Action<GetPaymentUtxosInput, PaymentUtxo[]>;
|
|
33
|
+
/** Input for getExchangeRate action (no required params) */
|
|
34
|
+
export type GetExchangeRateInput = Record<string, never>;
|
|
35
|
+
/**
|
|
36
|
+
* Get current BSV/USD exchange rate.
|
|
37
|
+
*/
|
|
38
|
+
export declare const getExchangeRate: Action<GetExchangeRateInput, number>;
|
|
39
|
+
/** All balance actions for registry */
|
|
40
|
+
export declare const balanceActions: (Action<GetBalanceInput, Balance> | Action<GetPaymentUtxosInput, PaymentUtxo[]> | Action<GetExchangeRateInput, number>)[];
|
|
41
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/balance/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAMtC,MAAM,WAAW,OAAO;IACvB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,qBAAqB;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACd;AAyCD,uDAAuD;AACvD,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AAEnD;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,eAAe,EAAE,OAAO,CAqBvD,CAAA;AAED,4DAA4D;AAC5D,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AAExD;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,oBAAoB,EAAE,WAAW,EAAE,CA0BvE,CAAA;AAED,4DAA4D;AAC5D,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AAExD;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAahE,CAAA;AAMD,uCAAuC;AACvC,eAAO,MAAM,cAAc,2HAAiD,CAAA"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Balance Module
|
|
3
|
+
*
|
|
4
|
+
* Actions for querying wallet balance and payment UTXOs.
|
|
5
|
+
*/
|
|
6
|
+
import { EXCHANGE_RATE_CACHE_TTL, FUNDING_BASKET, WOC_MAINNET_URL, WOC_TESTNET_URL, } from '../constants';
|
|
7
|
+
// Module-level cache for exchange rate
|
|
8
|
+
let exchangeRateCache = null;
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// Internal helpers
|
|
11
|
+
// ============================================================================
|
|
12
|
+
async function fetchExchangeRate(chain, wocApiKey) {
|
|
13
|
+
if (exchangeRateCache &&
|
|
14
|
+
Date.now() - exchangeRateCache.timestamp < EXCHANGE_RATE_CACHE_TTL) {
|
|
15
|
+
return exchangeRateCache.rate;
|
|
16
|
+
}
|
|
17
|
+
const baseUrl = chain === 'main' ? WOC_MAINNET_URL : WOC_TESTNET_URL;
|
|
18
|
+
const headers = {};
|
|
19
|
+
if (wocApiKey)
|
|
20
|
+
headers['woc-api-key'] = wocApiKey;
|
|
21
|
+
try {
|
|
22
|
+
const response = await fetch(`${baseUrl}/exchangerate`, { headers });
|
|
23
|
+
if (!response.ok)
|
|
24
|
+
throw new Error(`Failed to fetch: ${response.statusText}`);
|
|
25
|
+
const data = await response.json();
|
|
26
|
+
const rate = Number(data.rate.toFixed(2));
|
|
27
|
+
exchangeRateCache = { rate, timestamp: Date.now() };
|
|
28
|
+
return rate;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return exchangeRateCache?.rate ?? 0;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get wallet balance with USD conversion.
|
|
36
|
+
*/
|
|
37
|
+
export const getBalance = {
|
|
38
|
+
meta: {
|
|
39
|
+
name: 'getBalance',
|
|
40
|
+
description: 'Get wallet balance in satoshis, BSV, and USD cents',
|
|
41
|
+
category: 'balance',
|
|
42
|
+
inputSchema: {
|
|
43
|
+
type: 'object',
|
|
44
|
+
properties: {},
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
async execute(ctx) {
|
|
48
|
+
const exchangeRate = await fetchExchangeRate(ctx.chain, ctx.wocApiKey);
|
|
49
|
+
const result = await ctx.wallet.listOutputs({
|
|
50
|
+
basket: FUNDING_BASKET,
|
|
51
|
+
limit: 10000,
|
|
52
|
+
});
|
|
53
|
+
const satoshis = result.outputs.reduce((sum, o) => sum + o.satoshis, 0);
|
|
54
|
+
const bsv = satoshis / 100_000_000;
|
|
55
|
+
const usdInCents = Math.round(bsv * exchangeRate * 100);
|
|
56
|
+
return { satoshis, bsv, usdInCents };
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Get payment UTXOs for external use.
|
|
61
|
+
*/
|
|
62
|
+
export const getPaymentUtxos = {
|
|
63
|
+
meta: {
|
|
64
|
+
name: 'getPaymentUtxos',
|
|
65
|
+
description: 'Get payment UTXOs from the wallet for external use',
|
|
66
|
+
category: 'balance',
|
|
67
|
+
inputSchema: {
|
|
68
|
+
type: 'object',
|
|
69
|
+
properties: {},
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
async execute(ctx) {
|
|
73
|
+
const result = await ctx.wallet.listOutputs({
|
|
74
|
+
basket: FUNDING_BASKET,
|
|
75
|
+
include: 'locking scripts',
|
|
76
|
+
limit: 10000,
|
|
77
|
+
});
|
|
78
|
+
return result.outputs.map((o) => {
|
|
79
|
+
const [txid, voutStr] = o.outpoint.split('.');
|
|
80
|
+
return {
|
|
81
|
+
txid,
|
|
82
|
+
vout: Number.parseInt(voutStr, 10),
|
|
83
|
+
satoshis: o.satoshis,
|
|
84
|
+
script: o.lockingScript || '',
|
|
85
|
+
};
|
|
86
|
+
});
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Get current BSV/USD exchange rate.
|
|
91
|
+
*/
|
|
92
|
+
export const getExchangeRate = {
|
|
93
|
+
meta: {
|
|
94
|
+
name: 'getExchangeRate',
|
|
95
|
+
description: 'Get current BSV/USD exchange rate from WhatsOnChain',
|
|
96
|
+
category: 'balance',
|
|
97
|
+
inputSchema: {
|
|
98
|
+
type: 'object',
|
|
99
|
+
properties: {},
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
async execute(ctx) {
|
|
103
|
+
return fetchExchangeRate(ctx.chain, ctx.wocApiKey);
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
// ============================================================================
|
|
107
|
+
// Module exports
|
|
108
|
+
// ============================================================================
|
|
109
|
+
/** All balance actions for registry */
|
|
110
|
+
export const balanceActions = [getBalance, getPaymentUtxos, getExchangeRate];
|
|
111
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/balance/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -25,5 +25,6 @@ export * from './identity';
|
|
|
25
25
|
export * from './opns';
|
|
26
26
|
export * from './sweep';
|
|
27
27
|
export * from './sync';
|
|
28
|
+
export * from './registry';
|
|
28
29
|
export type { CreateActionArgs, CreateActionInput, CreateActionOutput, CreateActionResult, ListOutputsArgs, ListOutputsResult, WalletInterface, WalletOutput, } from '@bsv/sdk';
|
|
29
30
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACN,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,aAAa,GACb,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAGhF,cAAc,aAAa,CAAA;AAG3B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EACN,oBAAoB,EACpB,KAAK,0BAA0B,EAC/B,KAAK,eAAe,GACpB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACN,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,GACd,MAAM,6BAA6B,CAAA;AAGpC,YAAY,EACX,eAAe,EACf,aAAa,GACb,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EACN,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACrB,MAAM,yBAAyB,CAAA;AAGhC,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AAGtB,cAAc,SAAS,CAAA;AAGvB,cAAc,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACN,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,aAAa,GACb,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAGhF,cAAc,aAAa,CAAA;AAG3B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EACN,oBAAoB,EACpB,KAAK,0BAA0B,EAC/B,KAAK,eAAe,GACpB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACN,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,GACd,MAAM,6BAA6B,CAAA;AAGpC,YAAY,EACX,eAAe,EACf,aAAa,GACb,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EACN,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACrB,MAAM,yBAAyB,CAAA;AAGhC,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AAGtB,cAAc,SAAS,CAAA;AAGvB,cAAc,QAAQ,CAAA;AAGtB,cAAc,YAAY,CAAA;AAgC1B,YAAY,EACX,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,YAAY,GACZ,MAAM,UAAU,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -31,6 +31,8 @@ export * from './opns';
|
|
|
31
31
|
export * from './sweep';
|
|
32
32
|
// Export sync module
|
|
33
33
|
export * from './sync';
|
|
34
|
+
// Export registry module (on-chain package builder)
|
|
35
|
+
export * from './registry';
|
|
34
36
|
import { addressesActions } from './addresses';
|
|
35
37
|
import { identityActions } from './identity';
|
|
36
38
|
import { inscriptionsActions } from './inscriptions';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kCAAkC;AAClC,OAAO,EAQN,aAAa,GACb,MAAM,SAAS,CAAA;AAEhB,yBAAyB;AACzB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAgB,MAAM,mBAAmB,CAAA;AAEhF,mBAAmB;AACnB,cAAc,aAAa,CAAA;AAE3B,0BAA0B;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EACN,oBAAoB,GAGpB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACN,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,GACd,MAAM,6BAA6B,CAAA;AAOpC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EACN,eAAe,GAIf,MAAM,yBAAyB,CAAA;AAEhC,kCAAkC;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AAEtB,gEAAgE;AAChE,cAAc,SAAS,CAAA;AAEvB,qBAAqB;AACrB,cAAc,QAAQ,CAAA;AAEtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,cAAc,CAAC,WAAW,CAAC;IAC1B,GAAG,gBAAgB;IACnB,GAAG,eAAe;IAClB,GAAG,eAAe;IAClB,GAAG,eAAe;IAClB,GAAG,aAAa;IAChB,GAAG,mBAAmB;IACtB,GAAG,YAAY;IACf,GAAG,cAAc;IACjB,GAAG,aAAa;IAChB,GAAG,YAAY;IACf,GAAG,WAAW;IACd,GAAG,WAAW;CACd,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kCAAkC;AAClC,OAAO,EAQN,aAAa,GACb,MAAM,SAAS,CAAA;AAEhB,yBAAyB;AACzB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAgB,MAAM,mBAAmB,CAAA;AAEhF,mBAAmB;AACnB,cAAc,aAAa,CAAA;AAE3B,0BAA0B;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EACN,oBAAoB,GAGpB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACN,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,GACd,MAAM,6BAA6B,CAAA;AAOpC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EACN,eAAe,GAIf,MAAM,yBAAyB,CAAA;AAEhC,kCAAkC;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AAEtB,gEAAgE;AAChE,cAAc,SAAS,CAAA;AAEvB,qBAAqB;AACrB,cAAc,QAAQ,CAAA;AAEtB,oDAAoD;AACpD,cAAc,YAAY,CAAA;AAE1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,cAAc,CAAC,WAAW,CAAC;IAC1B,GAAG,gBAAgB;IACnB,GAAG,eAAe;IAClB,GAAG,eAAe;IAClB,GAAG,eAAe;IAClB,GAAG,aAAa;IAChB,GAAG,mBAAmB;IACtB,GAAG,YAAY;IACf,GAAG,cAAc;IACjB,GAAG,aAAa;IAChB,GAAG,YAAY;IACf,GAAG,WAAW;IACd,GAAG,WAAW;CACd,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry Module
|
|
3
|
+
*
|
|
4
|
+
* Shared infrastructure for building on-chain registry packages.
|
|
5
|
+
* Used by clawnet (skills, agents), theme-token (fonts, themes),
|
|
6
|
+
* and any publisher creating ord-fs/json registry items.
|
|
7
|
+
*/
|
|
8
|
+
export { buildPackageOutputs, detectContentType } from './package-tx';
|
|
9
|
+
export type { PackageBroadcastResult, PackageFile, PackageMapMetadata, PackageTxOutput, PackageTxResult, } from './types';
|
|
10
|
+
export { MANIFEST_CONTENT_TYPE, REGISTRY_TYPE_SET, REGISTRY_TYPES, type RegistryType, } from './constants';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAErE,YAAY,EACX,sBAAsB,EACtB,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,eAAe,GACf,MAAM,SAAS,CAAA;AAEhB,OAAO,EACN,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,KAAK,YAAY,GACjB,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry Module
|
|
3
|
+
*
|
|
4
|
+
* Shared infrastructure for building on-chain registry packages.
|
|
5
|
+
* Used by clawnet (skills, agents), theme-token (fonts, themes),
|
|
6
|
+
* and any publisher creating ord-fs/json registry items.
|
|
7
|
+
*/
|
|
8
|
+
export { buildPackageOutputs, detectContentType } from './package-tx';
|
|
9
|
+
export { MANIFEST_CONTENT_TYPE, REGISTRY_TYPE_SET, REGISTRY_TYPES, } from './constants';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAUrE,OAAO,EACN,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,GAEd,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type PrivateKey } from '@bsv/sdk';
|
|
2
|
+
import type { PackageFile, PackageMapMetadata, PackageTxResult } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Build ordinal inscription outputs for a package publish transaction.
|
|
5
|
+
*
|
|
6
|
+
* Each file becomes a 1-sat inscription output. The manifest (ord-fs/json)
|
|
7
|
+
* is the LAST output and carries the MAP metadata + AIP signature as a
|
|
8
|
+
* script suffix after the inscription envelope.
|
|
9
|
+
*
|
|
10
|
+
* Output layout:
|
|
11
|
+
* [0..N-1] file inscriptions (1 sat each)
|
|
12
|
+
* [N] manifest inscription with MAP + AIP suffix (1 sat, tracked ordinal)
|
|
13
|
+
*/
|
|
14
|
+
export declare function buildPackageOutputs(files: PackageFile[], metadata: PackageMapMetadata, privateKey: PrivateKey): Promise<PackageTxResult>;
|
|
15
|
+
/**
|
|
16
|
+
* Detect MIME content type from a file path extension.
|
|
17
|
+
*/
|
|
18
|
+
export declare function detectContentType(filePath: string): string;
|
|
19
|
+
//# sourceMappingURL=package-tx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-tx.d.ts","sourceRoot":"","sources":["../../src/registry/package-tx.ts"],"names":[],"mappings":"AAQA,OAAO,EAAS,KAAK,UAAU,EAAiB,MAAM,UAAU,CAAA;AAEhE,OAAO,KAAK,EACX,WAAW,EACX,kBAAkB,EAElB,eAAe,EACf,MAAM,SAAS,CAAA;AA0BhB;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACxC,KAAK,EAAE,WAAW,EAAE,EACpB,QAAQ,EAAE,kBAAkB,EAC5B,UAAU,EAAE,UAAU,GACpB,OAAO,CAAC,eAAe,CAAC,CA0L1B;AA8CD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA0B1D"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { AIP, AIP_PREFIX, Inscription, MAP, MAP_PREFIX, PrivateKeySigner, } from '@1sat/templates';
|
|
2
|
+
import { P2PKH, Script, Utils } from '@bsv/sdk';
|
|
3
|
+
import { MANIFEST_CONTENT_TYPE } from './constants';
|
|
4
|
+
/**
|
|
5
|
+
* Known fields on PackageMapMetadata that are handled explicitly
|
|
6
|
+
* when building MAP metadata. Any other string keys on the metadata
|
|
7
|
+
* object are treated as extra MAP fields (e.g. font.family).
|
|
8
|
+
*/
|
|
9
|
+
const KNOWN_METADATA_FIELDS = new Set([
|
|
10
|
+
'app',
|
|
11
|
+
'type',
|
|
12
|
+
'name',
|
|
13
|
+
'version',
|
|
14
|
+
'description',
|
|
15
|
+
'language',
|
|
16
|
+
'homepage',
|
|
17
|
+
'prev',
|
|
18
|
+
'opns.name',
|
|
19
|
+
'opns.outpoint',
|
|
20
|
+
'title',
|
|
21
|
+
'author',
|
|
22
|
+
'dependencies',
|
|
23
|
+
'devDependencies',
|
|
24
|
+
'registryDependencies',
|
|
25
|
+
'categories',
|
|
26
|
+
]);
|
|
27
|
+
/**
|
|
28
|
+
* Build ordinal inscription outputs for a package publish transaction.
|
|
29
|
+
*
|
|
30
|
+
* Each file becomes a 1-sat inscription output. The manifest (ord-fs/json)
|
|
31
|
+
* is the LAST output and carries the MAP metadata + AIP signature as a
|
|
32
|
+
* script suffix after the inscription envelope.
|
|
33
|
+
*
|
|
34
|
+
* Output layout:
|
|
35
|
+
* [0..N-1] file inscriptions (1 sat each)
|
|
36
|
+
* [N] manifest inscription with MAP + AIP suffix (1 sat, tracked ordinal)
|
|
37
|
+
*/
|
|
38
|
+
export async function buildPackageOutputs(files, metadata, privateKey) {
|
|
39
|
+
const outputs = [];
|
|
40
|
+
// P2PKH locking script derived from the signing key -- used as the
|
|
41
|
+
// scriptPrefix on every inscription so the outputs are spendable.
|
|
42
|
+
const p2pkhPrefix = new P2PKH().lock(privateKey.toAddress());
|
|
43
|
+
// -------------------------------------------------------------------
|
|
44
|
+
// 1. File inscription outputs
|
|
45
|
+
// -------------------------------------------------------------------
|
|
46
|
+
for (const file of files) {
|
|
47
|
+
const inscription = Inscription.create(file.content, file.contentType, {
|
|
48
|
+
scriptPrefix: p2pkhPrefix,
|
|
49
|
+
});
|
|
50
|
+
const lockingScript = inscription.lock();
|
|
51
|
+
outputs.push({
|
|
52
|
+
lockingScriptHex: Utils.toHex(lockingScript.toBinary()),
|
|
53
|
+
satoshis: 1,
|
|
54
|
+
description: `file: ${file.path}`,
|
|
55
|
+
isManifest: false,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
// -------------------------------------------------------------------
|
|
59
|
+
// 2. Build the ord-fs directory tree
|
|
60
|
+
// Root-level files get `_N` references. Files in subdirectories
|
|
61
|
+
// get their own ord-fs/json manifest inscriptions so ORDFS can
|
|
62
|
+
// traverse nested directories and unchanged branches can be
|
|
63
|
+
// re-referenced in version updates.
|
|
64
|
+
// -------------------------------------------------------------------
|
|
65
|
+
// Group files by their top-level directory
|
|
66
|
+
const rootFiles = [];
|
|
67
|
+
const subdirs = new Map();
|
|
68
|
+
for (let i = 0; i < files.length; i++) {
|
|
69
|
+
const parts = files[i].path.split('/');
|
|
70
|
+
if (parts.length === 1) {
|
|
71
|
+
// Root-level file
|
|
72
|
+
rootFiles.push({ name: parts[0], vout: i });
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// Nested file -- group by first directory segment
|
|
76
|
+
const dir = parts[0];
|
|
77
|
+
const rest = parts.slice(1).join('/');
|
|
78
|
+
if (!subdirs.has(dir))
|
|
79
|
+
subdirs.set(dir, []);
|
|
80
|
+
subdirs.get(dir).push({ name: rest, vout: i });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// Create subdirectory manifest inscriptions (one per subdirectory)
|
|
84
|
+
const subdirVouts = new Map();
|
|
85
|
+
for (const [dirName, entries] of subdirs) {
|
|
86
|
+
const subdirManifest = {};
|
|
87
|
+
for (const entry of entries) {
|
|
88
|
+
subdirManifest[entry.name] = `_${entry.vout}`;
|
|
89
|
+
}
|
|
90
|
+
const subdirBytes = new Uint8Array(Utils.toArray(JSON.stringify(subdirManifest), 'utf8'));
|
|
91
|
+
const subdirInscription = Inscription.create(subdirBytes, MANIFEST_CONTENT_TYPE, { scriptPrefix: p2pkhPrefix });
|
|
92
|
+
const subdirVout = outputs.length;
|
|
93
|
+
outputs.push({
|
|
94
|
+
lockingScriptHex: Utils.toHex(subdirInscription.lock().toBinary()),
|
|
95
|
+
satoshis: 1,
|
|
96
|
+
description: `dir: ${dirName}/`,
|
|
97
|
+
isManifest: false,
|
|
98
|
+
});
|
|
99
|
+
subdirVouts.set(dirName, subdirVout);
|
|
100
|
+
}
|
|
101
|
+
// Build root manifest -- references root files and subdirectory manifests
|
|
102
|
+
const manifest = {};
|
|
103
|
+
for (const entry of rootFiles) {
|
|
104
|
+
manifest[entry.name] = `_${entry.vout}`;
|
|
105
|
+
}
|
|
106
|
+
for (const [dirName, vout] of subdirVouts) {
|
|
107
|
+
manifest[dirName] = `_${vout}`;
|
|
108
|
+
}
|
|
109
|
+
const manifestBytes = new Uint8Array(Utils.toArray(JSON.stringify(manifest), 'utf8'));
|
|
110
|
+
// -------------------------------------------------------------------
|
|
111
|
+
// 3. MAP metadata -- build protocol chunks for the suffix
|
|
112
|
+
// -------------------------------------------------------------------
|
|
113
|
+
const mapFields = {
|
|
114
|
+
app: metadata.app,
|
|
115
|
+
type: metadata.type,
|
|
116
|
+
name: metadata.name,
|
|
117
|
+
version: metadata.version,
|
|
118
|
+
description: metadata.description,
|
|
119
|
+
};
|
|
120
|
+
if (metadata.language)
|
|
121
|
+
mapFields.language = metadata.language;
|
|
122
|
+
if (metadata.homepage)
|
|
123
|
+
mapFields.homepage = metadata.homepage;
|
|
124
|
+
if (metadata.prev)
|
|
125
|
+
mapFields.prev = metadata.prev;
|
|
126
|
+
if (metadata['opns.name'])
|
|
127
|
+
mapFields['opns.name'] = metadata['opns.name'];
|
|
128
|
+
if (metadata['opns.outpoint'])
|
|
129
|
+
mapFields['opns.outpoint'] = metadata['opns.outpoint'];
|
|
130
|
+
if (metadata.title)
|
|
131
|
+
mapFields.title = metadata.title;
|
|
132
|
+
if (metadata.author)
|
|
133
|
+
mapFields.author = metadata.author;
|
|
134
|
+
if (metadata.dependencies)
|
|
135
|
+
mapFields.dependencies = metadata.dependencies;
|
|
136
|
+
if (metadata.devDependencies)
|
|
137
|
+
mapFields.devDependencies = metadata.devDependencies;
|
|
138
|
+
if (metadata.registryDependencies)
|
|
139
|
+
mapFields.registryDependencies = metadata.registryDependencies;
|
|
140
|
+
if (metadata.categories)
|
|
141
|
+
mapFields.categories = metadata.categories;
|
|
142
|
+
// Include any extra MAP fields from the index signature (e.g. font.family)
|
|
143
|
+
for (const key of Object.keys(metadata)) {
|
|
144
|
+
if (!KNOWN_METADATA_FIELDS.has(key) && metadata[key] != null) {
|
|
145
|
+
mapFields[key] = metadata[key];
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const mapScript = MAP.set(mapFields);
|
|
149
|
+
// MAP.set() returns an OP_RETURN | MAP_PREFIX | data locking script.
|
|
150
|
+
// We need just the data chunks (skip OP_RETURN and MAP_PREFIX pushdata).
|
|
151
|
+
const mapDataChunks = mapScript.chunks.slice(2);
|
|
152
|
+
const mapDataScript = new Script(mapDataChunks);
|
|
153
|
+
const mapProtocol = {
|
|
154
|
+
protocol: MAP_PREFIX,
|
|
155
|
+
script: mapDataScript.toBinary(),
|
|
156
|
+
pos: 0,
|
|
157
|
+
};
|
|
158
|
+
// -------------------------------------------------------------------
|
|
159
|
+
// 4. AIP signature -- signs MAP protocol data so authorship is verifiable
|
|
160
|
+
// -------------------------------------------------------------------
|
|
161
|
+
const signatureData = [];
|
|
162
|
+
signatureData.push(...Utils.toArray(mapProtocol.protocol, 'utf8'));
|
|
163
|
+
signatureData.push(...mapProtocol.script);
|
|
164
|
+
signatureData.push(0x7c); // pipe separator
|
|
165
|
+
const aipData = await AIP.sign(signatureData, new PrivateKeySigner(privateKey));
|
|
166
|
+
const aipScript = aipData.lock();
|
|
167
|
+
// AIP.lock() wraps in BitCom (OP_RETURN | AIP_PREFIX | data).
|
|
168
|
+
// Extract only the data chunks after OP_RETURN and AIP_PREFIX.
|
|
169
|
+
const aipDataChunks = aipScript.chunks.slice(2);
|
|
170
|
+
const aipDataScript = new Script(aipDataChunks);
|
|
171
|
+
const aipProtocol = {
|
|
172
|
+
protocol: AIP_PREFIX,
|
|
173
|
+
script: aipDataScript.toBinary(),
|
|
174
|
+
pos: 1,
|
|
175
|
+
};
|
|
176
|
+
// -------------------------------------------------------------------
|
|
177
|
+
// 5. Compose the suffix script: OP_RETURN MAP_PREFIX <map-data> | AIP_PREFIX <aip-data>
|
|
178
|
+
// This goes AFTER the inscription envelope's OP_ENDIF.
|
|
179
|
+
// -------------------------------------------------------------------
|
|
180
|
+
const suffix = buildBitComSuffix([mapProtocol, aipProtocol]);
|
|
181
|
+
// -------------------------------------------------------------------
|
|
182
|
+
// 6. Create the manifest inscription with the MAP+AIP suffix
|
|
183
|
+
// -------------------------------------------------------------------
|
|
184
|
+
const manifestInscription = Inscription.create(manifestBytes, MANIFEST_CONTENT_TYPE, {
|
|
185
|
+
scriptPrefix: p2pkhPrefix,
|
|
186
|
+
scriptSuffix: suffix,
|
|
187
|
+
});
|
|
188
|
+
const manifestLockingScript = manifestInscription.lock();
|
|
189
|
+
const manifestVout = outputs.length;
|
|
190
|
+
outputs.push({
|
|
191
|
+
lockingScriptHex: Utils.toHex(manifestLockingScript.toBinary()),
|
|
192
|
+
satoshis: 1,
|
|
193
|
+
description: 'manifest (ord-fs/json)',
|
|
194
|
+
isManifest: true,
|
|
195
|
+
});
|
|
196
|
+
return {
|
|
197
|
+
outputs,
|
|
198
|
+
manifestVout,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Build an OP_RETURN + piped-protocol suffix script from protocol descriptors.
|
|
203
|
+
*
|
|
204
|
+
* Produces: OP_RETURN <proto1_prefix> <proto1_data> "|" <proto2_prefix> <proto2_data> ...
|
|
205
|
+
*
|
|
206
|
+
* This is the same format BitCom.lock() produces, but as a raw Script
|
|
207
|
+
* suitable for use as an Inscription scriptSuffix.
|
|
208
|
+
*/
|
|
209
|
+
function buildBitComSuffix(protocols) {
|
|
210
|
+
const script = new Script();
|
|
211
|
+
// OP_RETURN marks the start of the data section
|
|
212
|
+
script.writeOpCode(0x6a); // OP_RETURN
|
|
213
|
+
for (let i = 0; i < protocols.length; i++) {
|
|
214
|
+
const proto = protocols[i];
|
|
215
|
+
// Protocol identifier as pushdata
|
|
216
|
+
script.writeBin(Utils.toArray(proto.protocol, 'utf8'));
|
|
217
|
+
// Protocol data -- re-parse into chunks and append individually
|
|
218
|
+
// so that pushdata opcodes are preserved correctly.
|
|
219
|
+
if (proto.script.length > 0) {
|
|
220
|
+
const protoScript = Script.fromBinary(proto.script);
|
|
221
|
+
for (const chunk of protoScript.chunks) {
|
|
222
|
+
if (chunk.data != null) {
|
|
223
|
+
script.writeBin(chunk.data);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
script.writeOpCode(chunk.op);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
// Pipe delimiter between protocols (not after the last one)
|
|
231
|
+
if (i < protocols.length - 1) {
|
|
232
|
+
script.writeBin(Utils.toArray('|', 'utf8'));
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return script;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Detect MIME content type from a file path extension.
|
|
239
|
+
*/
|
|
240
|
+
export function detectContentType(filePath) {
|
|
241
|
+
const ext = filePath.split('.').pop()?.toLowerCase() ?? '';
|
|
242
|
+
const mimeTypes = {
|
|
243
|
+
md: 'text/markdown',
|
|
244
|
+
txt: 'text/plain',
|
|
245
|
+
json: 'application/json',
|
|
246
|
+
js: 'application/javascript',
|
|
247
|
+
ts: 'application/typescript',
|
|
248
|
+
tsx: 'application/typescript',
|
|
249
|
+
jsx: 'application/javascript',
|
|
250
|
+
css: 'text/css',
|
|
251
|
+
html: 'text/html',
|
|
252
|
+
xml: 'text/xml',
|
|
253
|
+
yaml: 'text/yaml',
|
|
254
|
+
yml: 'text/yaml',
|
|
255
|
+
svg: 'image/svg+xml',
|
|
256
|
+
png: 'image/png',
|
|
257
|
+
jpg: 'image/jpeg',
|
|
258
|
+
jpeg: 'image/jpeg',
|
|
259
|
+
gif: 'image/gif',
|
|
260
|
+
webp: 'image/webp',
|
|
261
|
+
woff2: 'font/woff2',
|
|
262
|
+
woff: 'font/woff',
|
|
263
|
+
ttf: 'font/ttf',
|
|
264
|
+
};
|
|
265
|
+
return mimeTypes[ext] ?? 'application/octet-stream';
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=package-tx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-tx.js","sourceRoot":"","sources":["../../src/registry/package-tx.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Action registry for runtime discovery and MCP integration.
|
|
3
|
+
*/
|
|
4
|
+
import type { Action, ActionCategory } from './types';
|
|
5
|
+
type AnyAction = Action<any, any>;
|
|
6
|
+
/**
|
|
7
|
+
* MCP-compatible tool definition.
|
|
8
|
+
*/
|
|
9
|
+
export interface McpTool {
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
inputSchema: object;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Registry for collecting and discovering actions at runtime.
|
|
16
|
+
*/
|
|
17
|
+
export declare class ActionRegistry {
|
|
18
|
+
private actions;
|
|
19
|
+
/**
|
|
20
|
+
* Register an action.
|
|
21
|
+
*/
|
|
22
|
+
register(action: AnyAction): void;
|
|
23
|
+
/**
|
|
24
|
+
* Register multiple actions.
|
|
25
|
+
*/
|
|
26
|
+
registerAll(actions: AnyAction[]): void;
|
|
27
|
+
/**
|
|
28
|
+
* Get an action by name.
|
|
29
|
+
*/
|
|
30
|
+
get(name: string): AnyAction | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Check if an action exists.
|
|
33
|
+
*/
|
|
34
|
+
has(name: string): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* List all registered actions.
|
|
37
|
+
*/
|
|
38
|
+
list(): Action[];
|
|
39
|
+
/**
|
|
40
|
+
* List actions by category.
|
|
41
|
+
*/
|
|
42
|
+
listByCategory(category: ActionCategory): Action[];
|
|
43
|
+
/**
|
|
44
|
+
* Get action names.
|
|
45
|
+
*/
|
|
46
|
+
names(): string[];
|
|
47
|
+
/**
|
|
48
|
+
* Convert to MCP-compatible tool list.
|
|
49
|
+
* Prefixes names with "1sat__" for namespace isolation.
|
|
50
|
+
*/
|
|
51
|
+
toMcpTools(): McpTool[];
|
|
52
|
+
/**
|
|
53
|
+
* Number of registered actions.
|
|
54
|
+
*/
|
|
55
|
+
get size(): number;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Global action registry singleton.
|
|
59
|
+
*/
|
|
60
|
+
export declare const actionRegistry: ActionRegistry;
|
|
61
|
+
export {};
|
|
62
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAGrD,KAAK,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;AAEjC;;GAEG;AACH,MAAM,WAAW,OAAO;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,qBAAa,cAAc;IAC1B,OAAO,CAAC,OAAO,CAA+B;IAE9C;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAIjC;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;IAMvC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIxC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;IAIhB;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,EAAE;IAIlD;;OAEG;IACH,KAAK,IAAI,MAAM,EAAE;IAIjB;;;OAGG;IACH,UAAU,IAAI,OAAO,EAAE;IAQvB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACD;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,gBAAuB,CAAA"}
|
package/dist/registry.js
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Action registry for runtime discovery and MCP integration.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Registry for collecting and discovering actions at runtime.
|
|
6
|
+
*/
|
|
7
|
+
export class ActionRegistry {
|
|
8
|
+
actions = new Map();
|
|
9
|
+
/**
|
|
10
|
+
* Register an action.
|
|
11
|
+
*/
|
|
12
|
+
register(action) {
|
|
13
|
+
this.actions.set(action.meta.name, action);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Register multiple actions.
|
|
17
|
+
*/
|
|
18
|
+
registerAll(actions) {
|
|
19
|
+
for (const action of actions) {
|
|
20
|
+
this.register(action);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get an action by name.
|
|
25
|
+
*/
|
|
26
|
+
get(name) {
|
|
27
|
+
return this.actions.get(name);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Check if an action exists.
|
|
31
|
+
*/
|
|
32
|
+
has(name) {
|
|
33
|
+
return this.actions.has(name);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* List all registered actions.
|
|
37
|
+
*/
|
|
38
|
+
list() {
|
|
39
|
+
return Array.from(this.actions.values());
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* List actions by category.
|
|
43
|
+
*/
|
|
44
|
+
listByCategory(category) {
|
|
45
|
+
return this.list().filter((a) => a.meta.category === category);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get action names.
|
|
49
|
+
*/
|
|
50
|
+
names() {
|
|
51
|
+
return Array.from(this.actions.keys());
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Convert to MCP-compatible tool list.
|
|
55
|
+
* Prefixes names with "1sat__" for namespace isolation.
|
|
56
|
+
*/
|
|
57
|
+
toMcpTools() {
|
|
58
|
+
return this.list().map((action) => ({
|
|
59
|
+
name: `1sat__${action.meta.name}`,
|
|
60
|
+
description: action.meta.description,
|
|
61
|
+
inputSchema: action.meta.inputSchema,
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Number of registered actions.
|
|
66
|
+
*/
|
|
67
|
+
get size() {
|
|
68
|
+
return this.actions.size;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Global action registry singleton.
|
|
73
|
+
*/
|
|
74
|
+
export const actionRegistry = new ActionRegistry();
|
|
75
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH;;GAEG;AACH,MAAM,OAAO,cAAc;IAClB,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAA;IAE9C;;OAEG;IACH,QAAQ,CAAC,MAAiB;QACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC3C,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,OAAoB;QAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACtB,CAAC;IACF,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED;;OAEG;IACH,IAAI;QACH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACzC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,QAAwB;QACtC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAA;IAC/D,CAAC;IAED;;OAEG;IACH,KAAK;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IACvC,CAAC;IAED;;;OAGG;IACH,UAAU;QACT,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACnC,IAAI,EAAE,SAAS,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;YACjC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW;YACpC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW;SACpC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA;IACzB,CAAC;CACD;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAA"}
|