@itachisol/plugin-x402-swarms 0.1.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.
Files changed (175) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +323 -0
  3. package/dist/actions/delegateToSwarm.d.ts +8 -0
  4. package/dist/actions/delegateToSwarm.d.ts.map +1 -0
  5. package/dist/actions/delegateToSwarm.js +296 -0
  6. package/dist/actions/delegateToSwarm.js.map +1 -0
  7. package/dist/actions/delegateToSwarmWithPayment.d.ts +8 -0
  8. package/dist/actions/delegateToSwarmWithPayment.d.ts.map +1 -0
  9. package/dist/actions/delegateToSwarmWithPayment.js +323 -0
  10. package/dist/actions/delegateToSwarmWithPayment.js.map +1 -0
  11. package/dist/actions/discoverServices.d.ts +3 -0
  12. package/dist/actions/discoverServices.d.ts.map +1 -0
  13. package/dist/actions/discoverServices.js +63 -0
  14. package/dist/actions/discoverServices.js.map +1 -0
  15. package/dist/actions/index.d.ts +6 -0
  16. package/dist/actions/index.d.ts.map +1 -0
  17. package/dist/actions/index.js +6 -0
  18. package/dist/actions/index.js.map +1 -0
  19. package/dist/actions/payForService.d.ts +3 -0
  20. package/dist/actions/payForService.d.ts.map +1 -0
  21. package/dist/actions/payForService.js +115 -0
  22. package/dist/actions/payForService.js.map +1 -0
  23. package/dist/actions/runSwarmAgent.d.ts +7 -0
  24. package/dist/actions/runSwarmAgent.d.ts.map +1 -0
  25. package/dist/actions/runSwarmAgent.js +131 -0
  26. package/dist/actions/runSwarmAgent.js.map +1 -0
  27. package/dist/client/index.d.ts +512 -0
  28. package/dist/client/index.d.ts.map +1 -0
  29. package/dist/client/index.js +469 -0
  30. package/dist/client/index.js.map +1 -0
  31. package/dist/evaluators/paymentEvaluator.d.ts +7 -0
  32. package/dist/evaluators/paymentEvaluator.d.ts.map +1 -0
  33. package/dist/evaluators/paymentEvaluator.js +104 -0
  34. package/dist/evaluators/paymentEvaluator.js.map +1 -0
  35. package/dist/index.d.ts +29 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +60 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/marketing/index.d.ts +7 -0
  40. package/dist/marketing/index.d.ts.map +1 -0
  41. package/dist/marketing/index.js +7 -0
  42. package/dist/marketing/index.js.map +1 -0
  43. package/dist/marketing/milestoneAgent.d.ts +54 -0
  44. package/dist/marketing/milestoneAgent.d.ts.map +1 -0
  45. package/dist/marketing/milestoneAgent.js +121 -0
  46. package/dist/marketing/milestoneAgent.js.map +1 -0
  47. package/dist/marketing/tweetTemplates.d.ts +32 -0
  48. package/dist/marketing/tweetTemplates.d.ts.map +1 -0
  49. package/dist/marketing/tweetTemplates.js +60 -0
  50. package/dist/marketing/tweetTemplates.js.map +1 -0
  51. package/dist/marketing/xMonitor.d.ts +51 -0
  52. package/dist/marketing/xMonitor.d.ts.map +1 -0
  53. package/dist/marketing/xMonitor.js +141 -0
  54. package/dist/marketing/xMonitor.js.map +1 -0
  55. package/dist/providers/x402Provider.d.ts +7 -0
  56. package/dist/providers/x402Provider.d.ts.map +1 -0
  57. package/dist/providers/x402Provider.js +72 -0
  58. package/dist/providers/x402Provider.js.map +1 -0
  59. package/dist/providers/x402ServerProvider.d.ts +7 -0
  60. package/dist/providers/x402ServerProvider.d.ts.map +1 -0
  61. package/dist/providers/x402ServerProvider.js +48 -0
  62. package/dist/providers/x402ServerProvider.js.map +1 -0
  63. package/dist/routes/advancedRoutes.d.ts +5 -0
  64. package/dist/routes/advancedRoutes.d.ts.map +1 -0
  65. package/dist/routes/advancedRoutes.js +869 -0
  66. package/dist/routes/advancedRoutes.js.map +1 -0
  67. package/dist/routes/batchRoutes.d.ts +13 -0
  68. package/dist/routes/batchRoutes.d.ts.map +1 -0
  69. package/dist/routes/batchRoutes.js +496 -0
  70. package/dist/routes/batchRoutes.js.map +1 -0
  71. package/dist/routes/codeAuditRoutes.d.ts +6 -0
  72. package/dist/routes/codeAuditRoutes.d.ts.map +1 -0
  73. package/dist/routes/codeAuditRoutes.js +415 -0
  74. package/dist/routes/codeAuditRoutes.js.map +1 -0
  75. package/dist/routes/contentRoutes.d.ts +5 -0
  76. package/dist/routes/contentRoutes.d.ts.map +1 -0
  77. package/dist/routes/contentRoutes.js +370 -0
  78. package/dist/routes/contentRoutes.js.map +1 -0
  79. package/dist/routes/cryptoAnalysisRoutes.d.ts +5 -0
  80. package/dist/routes/cryptoAnalysisRoutes.d.ts.map +1 -0
  81. package/dist/routes/cryptoAnalysisRoutes.js +641 -0
  82. package/dist/routes/cryptoAnalysisRoutes.js.map +1 -0
  83. package/dist/routes/cryptoRoutes.d.ts +5 -0
  84. package/dist/routes/cryptoRoutes.d.ts.map +1 -0
  85. package/dist/routes/cryptoRoutes.js +1225 -0
  86. package/dist/routes/cryptoRoutes.js.map +1 -0
  87. package/dist/routes/heliusDataRoutes.d.ts +14 -0
  88. package/dist/routes/heliusDataRoutes.d.ts.map +1 -0
  89. package/dist/routes/heliusDataRoutes.js +388 -0
  90. package/dist/routes/heliusDataRoutes.js.map +1 -0
  91. package/dist/routes/taskRoutes.d.ts +5 -0
  92. package/dist/routes/taskRoutes.d.ts.map +1 -0
  93. package/dist/routes/taskRoutes.js +574 -0
  94. package/dist/routes/taskRoutes.js.map +1 -0
  95. package/dist/routes/tradingRoutes.d.ts +5 -0
  96. package/dist/routes/tradingRoutes.d.ts.map +1 -0
  97. package/dist/routes/tradingRoutes.js +500 -0
  98. package/dist/routes/tradingRoutes.js.map +1 -0
  99. package/dist/routes/walletAnalyzerRoutes.d.ts +12 -0
  100. package/dist/routes/walletAnalyzerRoutes.d.ts.map +1 -0
  101. package/dist/routes/walletAnalyzerRoutes.js +316 -0
  102. package/dist/routes/walletAnalyzerRoutes.js.map +1 -0
  103. package/dist/routes/x402Routes.d.ts +9 -0
  104. package/dist/routes/x402Routes.d.ts.map +1 -0
  105. package/dist/routes/x402Routes.js +474 -0
  106. package/dist/routes/x402Routes.js.map +1 -0
  107. package/dist/schemas/budgetState.d.ts +250 -0
  108. package/dist/schemas/budgetState.d.ts.map +1 -0
  109. package/dist/schemas/budgetState.js +20 -0
  110. package/dist/schemas/budgetState.js.map +1 -0
  111. package/dist/schemas/endpointScores.d.ts +182 -0
  112. package/dist/schemas/endpointScores.d.ts.map +1 -0
  113. package/dist/schemas/endpointScores.js +17 -0
  114. package/dist/schemas/endpointScores.js.map +1 -0
  115. package/dist/schemas/index.d.ts +4 -0
  116. package/dist/schemas/index.d.ts.map +1 -0
  117. package/dist/schemas/index.js +4 -0
  118. package/dist/schemas/index.js.map +1 -0
  119. package/dist/schemas/paymentHistory.d.ts +284 -0
  120. package/dist/schemas/paymentHistory.d.ts.map +1 -0
  121. package/dist/schemas/paymentHistory.js +24 -0
  122. package/dist/schemas/paymentHistory.js.map +1 -0
  123. package/dist/server/index.d.ts +3 -0
  124. package/dist/server/index.d.ts.map +1 -0
  125. package/dist/server/index.js +3 -0
  126. package/dist/server/index.js.map +1 -0
  127. package/dist/server/x402Gate.d.ts +56 -0
  128. package/dist/server/x402Gate.d.ts.map +1 -0
  129. package/dist/server/x402Gate.js +240 -0
  130. package/dist/server/x402Gate.js.map +1 -0
  131. package/dist/server/x402ServerService.d.ts +30 -0
  132. package/dist/server/x402ServerService.d.ts.map +1 -0
  133. package/dist/server/x402ServerService.js +79 -0
  134. package/dist/server/x402ServerService.js.map +1 -0
  135. package/dist/services/paymentMemoryService.d.ts +73 -0
  136. package/dist/services/paymentMemoryService.d.ts.map +1 -0
  137. package/dist/services/paymentMemoryService.js +247 -0
  138. package/dist/services/paymentMemoryService.js.map +1 -0
  139. package/dist/services/swarmsService.d.ts +66 -0
  140. package/dist/services/swarmsService.d.ts.map +1 -0
  141. package/dist/services/swarmsService.js +102 -0
  142. package/dist/services/swarmsService.js.map +1 -0
  143. package/dist/services/x402WalletService.d.ts +57 -0
  144. package/dist/services/x402WalletService.d.ts.map +1 -0
  145. package/dist/services/x402WalletService.js +258 -0
  146. package/dist/services/x402WalletService.js.map +1 -0
  147. package/dist/templates/index.d.ts +24 -0
  148. package/dist/templates/index.d.ts.map +1 -0
  149. package/dist/templates/index.js +51 -0
  150. package/dist/templates/index.js.map +1 -0
  151. package/dist/templates/swarmTemplates.d.ts +22 -0
  152. package/dist/templates/swarmTemplates.d.ts.map +1 -0
  153. package/dist/templates/swarmTemplates.js +225 -0
  154. package/dist/templates/swarmTemplates.js.map +1 -0
  155. package/dist/types.d.ts +197 -0
  156. package/dist/types.d.ts.map +1 -0
  157. package/dist/types.js +2 -0
  158. package/dist/types.js.map +1 -0
  159. package/dist/utils/cache.d.ts +17 -0
  160. package/dist/utils/cache.d.ts.map +1 -0
  161. package/dist/utils/cache.js +32 -0
  162. package/dist/utils/cache.js.map +1 -0
  163. package/dist/utils/llm.d.ts +16 -0
  164. package/dist/utils/llm.d.ts.map +1 -0
  165. package/dist/utils/llm.js +32 -0
  166. package/dist/utils/llm.js.map +1 -0
  167. package/dist/utils/reportStore.d.ts +45 -0
  168. package/dist/utils/reportStore.d.ts.map +1 -0
  169. package/dist/utils/reportStore.js +164 -0
  170. package/dist/utils/reportStore.js.map +1 -0
  171. package/dist/utils/taskQueue.d.ts +54 -0
  172. package/dist/utils/taskQueue.d.ts.map +1 -0
  173. package/dist/utils/taskQueue.js +124 -0
  174. package/dist/utils/taskQueue.js.map +1 -0
  175. package/package.json +69 -0
package/dist/index.js ADDED
@@ -0,0 +1,60 @@
1
+ import { payForService } from "./actions/payForService.js";
2
+ import { discoverServices } from "./actions/discoverServices.js";
3
+ import { delegateToSwarm } from "./actions/delegateToSwarm.js";
4
+ import { runSwarmAgent } from "./actions/runSwarmAgent.js";
5
+ import { delegateToSwarmWithPayment } from "./actions/delegateToSwarmWithPayment.js";
6
+ import { x402Provider } from "./providers/x402Provider.js";
7
+ import { x402ServerProvider } from "./providers/x402ServerProvider.js";
8
+ import { paymentEvaluator } from "./evaluators/paymentEvaluator.js";
9
+ import { X402WalletService } from "./services/x402WalletService.js";
10
+ import { SwarmsService } from "./services/swarmsService.js";
11
+ import { PaymentMemoryService } from "./services/paymentMemoryService.js";
12
+ import { X402ServerService } from "./server/index.js";
13
+ import { x402Routes } from "./routes/x402Routes.js";
14
+ import { taskRoutes } from "./routes/taskRoutes.js";
15
+ import { walletAnalyzerRoutes } from "./routes/walletAnalyzerRoutes.js";
16
+ import { heliusDataRoutes } from "./routes/heliusDataRoutes.js";
17
+ import { tradingRoutes } from "./routes/tradingRoutes.js";
18
+ import { cryptoRoutes } from "./routes/cryptoRoutes.js";
19
+ import { batchRoutes } from "./routes/batchRoutes.js";
20
+ import { contentRoutes } from "./routes/contentRoutes.js";
21
+ import { codeAuditRoutes } from "./routes/codeAuditRoutes.js";
22
+ import { advancedRoutes } from "./routes/advancedRoutes.js";
23
+ import { cryptoAnalysisRoutes } from "./routes/cryptoAnalysisRoutes.js";
24
+ import { x402PaymentHistory, x402EndpointScores, x402BudgetState } from "./schemas/index.js";
25
+ export { payForService, discoverServices, delegateToSwarm, runSwarmAgent, delegateToSwarmWithPayment } from "./actions/index.js";
26
+ export { x402Provider } from "./providers/x402Provider.js";
27
+ export { x402ServerProvider } from "./providers/x402ServerProvider.js";
28
+ export { paymentEvaluator } from "./evaluators/paymentEvaluator.js";
29
+ export { X402WalletService } from "./services/x402WalletService.js";
30
+ export { SwarmsService } from "./services/swarmsService.js";
31
+ export { PaymentMemoryService } from "./services/paymentMemoryService.js";
32
+ export { X402ServerService, x402Gate } from "./server/index.js";
33
+ export { x402Routes } from "./routes/x402Routes.js";
34
+ export { taskRoutes, TASK_CATALOG } from "./routes/taskRoutes.js";
35
+ export { walletAnalyzerRoutes, WALLET_REPORT_CATALOG } from "./routes/walletAnalyzerRoutes.js";
36
+ export { heliusDataRoutes } from "./routes/heliusDataRoutes.js";
37
+ export { tradingRoutes, TRADING_CATALOG } from "./routes/tradingRoutes.js";
38
+ export { cryptoRoutes, CRYPTO_CATALOG } from "./routes/cryptoRoutes.js";
39
+ export { batchRoutes, BATCH_CATALOG } from "./routes/batchRoutes.js";
40
+ export { contentRoutes, CONTENT_CATALOG } from "./routes/contentRoutes.js";
41
+ export { codeAuditRoutes, CODE_AUDIT_CATALOG } from "./routes/codeAuditRoutes.js";
42
+ export { cryptoAnalysisRoutes, CRYPTO_ANALYSIS_CATALOG } from "./routes/cryptoAnalysisRoutes.js";
43
+ export { advancedRoutes, ADVANCED_CATALOG } from "./routes/advancedRoutes.js";
44
+ export { TTLCache } from "./utils/cache.js";
45
+ export { callOpenAI } from "./utils/llm.js";
46
+ export * from "./types.js";
47
+ export { X402SwarmsClient, createClient, X402SwarmsError } from "./client/index.js";
48
+ export { SWARM_TEMPLATES, findMatchingTemplate, registerSwarmTemplate, } from "./templates/index.js";
49
+ export const x402SwarmsPlugin = {
50
+ name: "plugin-x402-swarms",
51
+ description: "ElizaOS plugin for x402 micropayments (Dexter SDK) and Swarms multi-agent orchestration (15+ architectures: sequential, concurrent, hierarchical, mixture-of-agents, group chat, and more).",
52
+ actions: [payForService, discoverServices, delegateToSwarm, runSwarmAgent, delegateToSwarmWithPayment],
53
+ providers: [x402Provider, x402ServerProvider],
54
+ evaluators: [paymentEvaluator],
55
+ services: [X402WalletService, SwarmsService, X402ServerService, PaymentMemoryService],
56
+ routes: [...x402Routes, ...taskRoutes, ...walletAnalyzerRoutes, ...heliusDataRoutes, ...tradingRoutes, ...cryptoRoutes, ...batchRoutes, ...contentRoutes, ...codeAuditRoutes, ...advancedRoutes, ...cryptoAnalysisRoutes],
57
+ schema: { x402PaymentHistory, x402EndpointScores, x402BudgetState },
58
+ };
59
+ export default x402SwarmsPlugin;
60
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * SwarmX Marketing Agent — barrel export.
3
+ */
4
+ export { revenueMilestone, newEndpoint, freeTierSpike, dailyStats, competitorComparison, type TweetContext, } from "./tweetTemplates.js";
5
+ export { MilestoneAgent, type MilestoneAgentConfig, type HealthData } from "./milestoneAgent.js";
6
+ export { XMonitor, type XMonitorConfig, type XPost, type ReplyDraft, type ReplyCategory, } from "./xMonitor.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/marketing/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjG,OAAO,EACL,QAAQ,EACR,KAAK,cAAc,EACnB,KAAK,KAAK,EACV,KAAK,UAAU,EACf,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * SwarmX Marketing Agent — barrel export.
3
+ */
4
+ export { revenueMilestone, newEndpoint, freeTierSpike, dailyStats, competitorComparison, } from "./tweetTemplates.js";
5
+ export { MilestoneAgent } from "./milestoneAgent.js";
6
+ export { XMonitor, } from "./xMonitor.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/marketing/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,UAAU,EACV,oBAAoB,GAErB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,cAAc,EAA8C,MAAM,qBAAqB,CAAC;AAEjG,OAAO,EACL,QAAQ,GAKT,MAAM,eAAe,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * MilestoneAgent — monitors SwarmX health endpoint for revenue/settlement
3
+ * milestones and generates tweets for human review via Telegram.
4
+ */
5
+ export interface MilestoneAgentConfig {
6
+ healthUrl: string;
7
+ catalogUrl: string;
8
+ telegramBotToken?: string;
9
+ telegramChatId?: string;
10
+ }
11
+ export interface HealthData {
12
+ revenue?: number;
13
+ settlements?: number;
14
+ endpoints?: number;
15
+ freeCallsToday?: number;
16
+ uniqueIPs?: number;
17
+ }
18
+ export declare class MilestoneAgent {
19
+ private readonly config;
20
+ private state;
21
+ constructor(config: MilestoneAgentConfig);
22
+ /**
23
+ * Expose internal state for testing.
24
+ */
25
+ getState(): {
26
+ lastRevenue: number;
27
+ lastSettlements: number;
28
+ lastFreeCallsRecord: number;
29
+ crossedRevenueMilestones: ReadonlySet<number>;
30
+ crossedSettlementMilestones: ReadonlySet<number>;
31
+ };
32
+ /**
33
+ * Fetch health data from the platform.
34
+ */
35
+ fetchHealth(): Promise<HealthData>;
36
+ /**
37
+ * Detect which milestones have been newly crossed.
38
+ */
39
+ detectMilestones(health: HealthData): string[];
40
+ /**
41
+ * Check the health endpoint and generate tweets for any new milestones.
42
+ * Sends drafts to Telegram if configured.
43
+ */
44
+ checkMilestones(): Promise<string[]>;
45
+ /**
46
+ * Generate a daily summary tweet from current health data.
47
+ */
48
+ generateDailyDigest(): Promise<string>;
49
+ /**
50
+ * Send a message to Telegram for human review.
51
+ */
52
+ private sendToTelegram;
53
+ }
54
+ //# sourceMappingURL=milestoneAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"milestoneAgent.d.ts","sourceRoot":"","sources":["../../src/marketing/milestoneAgent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAaD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,KAAK,CAAiB;gBAElB,MAAM,EAAE,oBAAoB;IAWxC;;OAEG;IACH,QAAQ,IAAI;QACV,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;QACxB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,wBAAwB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAC9C,2BAA2B,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;KAClD;IAID;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,UAAU,CAAC;IAQxC;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE;IAkD9C;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAW1C;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAc5C;;OAEG;YACW,cAAc;CAe7B"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * MilestoneAgent — monitors SwarmX health endpoint for revenue/settlement
3
+ * milestones and generates tweets for human review via Telegram.
4
+ */
5
+ import { revenueMilestone, freeTierSpike, dailyStats, } from "./tweetTemplates.js";
6
+ const REVENUE_MILESTONES = [1, 5, 10, 25, 50, 100, 250, 500, 1000];
7
+ const SETTLEMENT_MILESTONES = [10, 50, 100, 500, 1000];
8
+ export class MilestoneAgent {
9
+ config;
10
+ state;
11
+ constructor(config) {
12
+ this.config = config;
13
+ this.state = {
14
+ lastRevenue: 0,
15
+ lastSettlements: 0,
16
+ lastFreeCallsRecord: 0,
17
+ crossedRevenueMilestones: new Set(),
18
+ crossedSettlementMilestones: new Set(),
19
+ };
20
+ }
21
+ /**
22
+ * Expose internal state for testing.
23
+ */
24
+ getState() {
25
+ return { ...this.state };
26
+ }
27
+ /**
28
+ * Fetch health data from the platform.
29
+ */
30
+ async fetchHealth() {
31
+ const res = await fetch(this.config.healthUrl);
32
+ if (!res.ok) {
33
+ throw new Error(`Health endpoint returned ${res.status}`);
34
+ }
35
+ return (await res.json());
36
+ }
37
+ /**
38
+ * Detect which milestones have been newly crossed.
39
+ */
40
+ detectMilestones(health) {
41
+ const tweets = [];
42
+ const revenue = health.revenue ?? 0;
43
+ const settlements = health.settlements ?? 0;
44
+ const freeCalls = health.freeCallsToday ?? 0;
45
+ // Revenue milestones
46
+ for (const threshold of REVENUE_MILESTONES) {
47
+ if (revenue >= threshold &&
48
+ !this.state.crossedRevenueMilestones.has(threshold)) {
49
+ this.state.crossedRevenueMilestones.add(threshold);
50
+ tweets.push(revenueMilestone({ revenue: threshold, settlements }));
51
+ }
52
+ }
53
+ // Settlement milestones
54
+ for (const threshold of SETTLEMENT_MILESTONES) {
55
+ if (settlements >= threshold &&
56
+ !this.state.crossedSettlementMilestones.has(threshold)) {
57
+ this.state.crossedSettlementMilestones.add(threshold);
58
+ tweets.push(revenueMilestone({ revenue, settlements: threshold }));
59
+ }
60
+ }
61
+ // Free tier daily record
62
+ if (freeCalls > this.state.lastFreeCallsRecord && freeCalls > 0) {
63
+ this.state.lastFreeCallsRecord = freeCalls;
64
+ tweets.push(freeTierSpike({
65
+ freeCallsToday: freeCalls,
66
+ uniqueIPs: health.uniqueIPs ?? 0,
67
+ }));
68
+ }
69
+ // Update tracked values
70
+ this.state.lastRevenue = revenue;
71
+ this.state.lastSettlements = settlements;
72
+ return tweets;
73
+ }
74
+ /**
75
+ * Check the health endpoint and generate tweets for any new milestones.
76
+ * Sends drafts to Telegram if configured.
77
+ */
78
+ async checkMilestones() {
79
+ const health = await this.fetchHealth();
80
+ const tweets = this.detectMilestones(health);
81
+ for (const tweet of tweets) {
82
+ await this.sendToTelegram(`[SwarmX Milestone Draft]\n\n${tweet}`);
83
+ }
84
+ return tweets;
85
+ }
86
+ /**
87
+ * Generate a daily summary tweet from current health data.
88
+ */
89
+ async generateDailyDigest() {
90
+ const health = await this.fetchHealth();
91
+ const ctx = {
92
+ revenue: health.revenue,
93
+ settlements: health.settlements,
94
+ endpoints: health.endpoints,
95
+ freeCallsToday: health.freeCallsToday,
96
+ uniqueIPs: health.uniqueIPs,
97
+ };
98
+ const tweet = dailyStats(ctx);
99
+ await this.sendToTelegram(`[SwarmX Daily Digest]\n\n${tweet}`);
100
+ return tweet;
101
+ }
102
+ /**
103
+ * Send a message to Telegram for human review.
104
+ */
105
+ async sendToTelegram(text) {
106
+ const { telegramBotToken, telegramChatId } = this.config;
107
+ if (!telegramBotToken || !telegramChatId)
108
+ return;
109
+ const url = `https://api.telegram.org/bot${telegramBotToken}/sendMessage`;
110
+ await fetch(url, {
111
+ method: "POST",
112
+ headers: { "Content-Type": "application/json" },
113
+ body: JSON.stringify({
114
+ chat_id: telegramChatId,
115
+ text,
116
+ parse_mode: "HTML",
117
+ }),
118
+ });
119
+ }
120
+ }
121
+ //# sourceMappingURL=milestoneAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"milestoneAgent.js","sourceRoot":"","sources":["../../src/marketing/milestoneAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * SwarmX tweet templates — generate tweet-length strings from platform metrics.
3
+ */
4
+ export interface TweetContext {
5
+ revenue?: number;
6
+ settlements?: number;
7
+ endpoints?: number;
8
+ freeCallsToday?: number;
9
+ uniqueIPs?: number;
10
+ benchmarkRate?: number;
11
+ }
12
+ /**
13
+ * Revenue milestone tweet — crossed a $ threshold.
14
+ */
15
+ export declare function revenueMilestone(ctx: TweetContext): string;
16
+ /**
17
+ * New endpoint launched tweet.
18
+ */
19
+ export declare function newEndpoint(name: string, price: string, description: string): string;
20
+ /**
21
+ * Free tier usage spike tweet.
22
+ */
23
+ export declare function freeTierSpike(ctx: TweetContext): string;
24
+ /**
25
+ * Daily stats digest tweet.
26
+ */
27
+ export declare function dailyStats(ctx: TweetContext): string;
28
+ /**
29
+ * Competitor comparison tweets — returns multiple variants.
30
+ */
31
+ export declare function competitorComparison(): string[];
32
+ //# sourceMappingURL=tweetTemplates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tweetTemplates.d.ts","sourceRoot":"","sources":["../../src/marketing/tweetTemplates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AASD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAM1D;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,MAAM,CAIR;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAMvD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAYpD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAY/C"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * SwarmX tweet templates — generate tweet-length strings from platform metrics.
3
+ */
4
+ const MAX_TWEET_LENGTH = 280;
5
+ function truncate(text) {
6
+ if (text.length <= MAX_TWEET_LENGTH)
7
+ return text;
8
+ return text.slice(0, MAX_TWEET_LENGTH - 1) + "\u2026";
9
+ }
10
+ /**
11
+ * Revenue milestone tweet — crossed a $ threshold.
12
+ */
13
+ export function revenueMilestone(ctx) {
14
+ const revenue = ctx.revenue?.toFixed(2) ?? "0.00";
15
+ const settlements = ctx.settlements ?? 0;
16
+ return truncate(`SwarmX just crossed $${revenue} in x402 revenue. ${settlements} settlements. AI agents paying AI agents.\n\nNo subscriptions. No accounts. Just USDC.\n\nhttps://api.swarmx.io`);
17
+ }
18
+ /**
19
+ * New endpoint launched tweet.
20
+ */
21
+ export function newEndpoint(name, price, description) {
22
+ return truncate(`New SwarmX endpoint live: ${name}\n\n${description}\n\n${price} per call. Pay with USDC. No account needed.\n\nhttps://api.swarmx.io`);
23
+ }
24
+ /**
25
+ * Free tier usage spike tweet.
26
+ */
27
+ export function freeTierSpike(ctx) {
28
+ const calls = ctx.freeCallsToday ?? 0;
29
+ const ips = ctx.uniqueIPs ?? 0;
30
+ return truncate(`${calls} free trial calls today from ${ips} unique IPs.\n\nThe demand for pay-per-call AI agent teams is real.\n\nTry it free: https://api.swarmx.io`);
31
+ }
32
+ /**
33
+ * Daily stats digest tweet.
34
+ */
35
+ export function dailyStats(ctx) {
36
+ const parts = [];
37
+ if (ctx.revenue !== undefined)
38
+ parts.push(`Revenue: $${ctx.revenue.toFixed(2)}`);
39
+ if (ctx.settlements !== undefined)
40
+ parts.push(`Settlements: ${ctx.settlements}`);
41
+ if (ctx.endpoints !== undefined)
42
+ parts.push(`Endpoints: ${ctx.endpoints}`);
43
+ if (ctx.freeCallsToday !== undefined)
44
+ parts.push(`Free calls: ${ctx.freeCallsToday}`);
45
+ if (ctx.uniqueIPs !== undefined)
46
+ parts.push(`Unique IPs: ${ctx.uniqueIPs}`);
47
+ const statsBlock = parts.join("\n");
48
+ return truncate(`SwarmX daily stats:\n\n${statsBlock}\n\nAI Agent Teams. One Payment.\nhttps://api.swarmx.io`);
49
+ }
50
+ /**
51
+ * Competitor comparison tweets — returns multiple variants.
52
+ */
53
+ export function competitorComparison() {
54
+ return [
55
+ truncate(`CrewAI: $0.50/execution, subscription required.\nSwarmX: $0.01/call, pay with USDC, no account needed.\n\nSame multi-agent orchestration. 50x cheaper.\n\nAI Agent Teams. One Payment.`),
56
+ truncate(`AutoGen: self-host GPT-4 agents, manage infra, pay OpenAI directly.\nSwarmX: one USDC payment, hosted multi-agent teams, zero infra.\n\nWhy run your own when you can pay per call?\n\nhttps://api.swarmx.io`),
57
+ truncate(`LangGraph: build agent graphs in Python, manage state yourself.\nSwarmX: 15+ swarm architectures, pay-per-call, TypeScript-native.\n\nShip in minutes, not weeks.\n\nhttps://api.swarmx.io`),
58
+ ];
59
+ }
60
+ //# sourceMappingURL=tweetTemplates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tweetTemplates.js","sourceRoot":"","sources":["../../src/marketing/tweetTemplates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,IAAI,CAAC,MAAM,IAAI,gBAAgB;QAAE,OAAO,IAAI,CAAC;IACjD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAiB;IAChD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;IAClD,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC;IACzC,OAAO,QAAQ,CACb,wBAAwB,OAAO,qBAAqB,WAAW,iHAAiH,CACjL,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,KAAa,EACb,WAAmB;IAEnB,OAAO,QAAQ,CACb,6BAA6B,IAAI,OAAO,WAAW,OAAO,KAAK,uEAAuE,CACvI,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAiB;IAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,cAAc,IAAI,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC;IAC/B,OAAO,QAAQ,CACb,GAAG,KAAK,gCAAgC,GAAG,2GAA2G,CACvJ,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAiB;IAC1C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjF,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IACjF,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3E,IAAI,GAAG,CAAC,cAAc,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;IACtF,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;IAE5E,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,QAAQ,CACb,0BAA0B,UAAU,yDAAyD,CAC9F,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,QAAQ,CACN,wLAAwL,CACzL;QACD,QAAQ,CACN,8MAA8M,CAC/M;QACD,QAAQ,CACN,4LAA4L,CAC7L;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * XMonitor — matches X/Twitter posts against reply templates and
3
+ * generates draft replies for human review.
4
+ */
5
+ export interface XPost {
6
+ id: string;
7
+ author: string;
8
+ text: string;
9
+ url?: string;
10
+ }
11
+ export interface ReplyDraft {
12
+ postId: string;
13
+ postAuthor: string;
14
+ postText: string;
15
+ category: ReplyCategory;
16
+ reply: string;
17
+ }
18
+ export type ReplyCategory = "x402_mention" | "competitor_mention" | "agent_payments" | "swarms_ecosystem" | "unknown";
19
+ export interface XMonitorConfig {
20
+ searchTerms?: string[];
21
+ telegramBotToken?: string;
22
+ telegramChatId?: string;
23
+ }
24
+ export declare class XMonitor {
25
+ readonly searchTerms: string[];
26
+ private readonly config;
27
+ constructor(config?: XMonitorConfig);
28
+ /**
29
+ * Classify a post into a reply category.
30
+ */
31
+ categorize(post: XPost): ReplyCategory;
32
+ /**
33
+ * Pick a reply template for a category. Uses a deterministic index
34
+ * derived from the post ID so the same post always gets the same variant.
35
+ */
36
+ pickReply(category: Exclude<ReplyCategory, "unknown">, postId: string): string;
37
+ /**
38
+ * Generate reply drafts for a batch of posts.
39
+ * Skips posts that don't match any category.
40
+ */
41
+ generateReplyDrafts(posts: XPost[]): ReplyDraft[];
42
+ /**
43
+ * Generate reply drafts and send them to Telegram for review.
44
+ */
45
+ reviewOnTelegram(posts: XPost[]): Promise<ReplyDraft[]>;
46
+ /**
47
+ * Send a message to Telegram for human review.
48
+ */
49
+ private sendToTelegram;
50
+ }
51
+ //# sourceMappingURL=xMonitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xMonitor.d.ts","sourceRoot":"","sources":["../../src/marketing/xMonitor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,aAAa,GACrB,cAAc,GACd,oBAAoB,GACpB,gBAAgB,GAChB,kBAAkB,GAClB,SAAS,CAAC;AAEd,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAkDD,qBAAa,QAAQ;IACnB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE5B,MAAM,GAAE,cAAmB;IAKvC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,aAAa;IAStC;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAU9E;;;OAGG;IACH,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE;IAmBjD;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAsB7D;;OAEG;YACW,cAAc;CAe7B"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * XMonitor — matches X/Twitter posts against reply templates and
3
+ * generates draft replies for human review.
4
+ */
5
+ const DEFAULT_SEARCH_TERMS = [
6
+ "x402 payment",
7
+ "agent micropayments",
8
+ "CrewAI pricing",
9
+ "multi-agent framework x402",
10
+ "swarms AI monetize",
11
+ ];
12
+ /** Keyword patterns for categorization (case-insensitive). */
13
+ const CATEGORY_PATTERNS = [
14
+ {
15
+ category: "x402_mention",
16
+ pattern: /\bx402\b/i,
17
+ },
18
+ {
19
+ category: "competitor_mention",
20
+ pattern: /\b(crewai|autogen|langgraph|langchain agents?|chatdev)\b/i,
21
+ },
22
+ {
23
+ category: "agent_payments",
24
+ pattern: /\bagent\s+(?:payments?|micropayments?|monetiz\w*|pay[- ]per[- ]call)\b/i,
25
+ },
26
+ {
27
+ category: "swarms_ecosystem",
28
+ pattern: /\b(swarms?\s+(?:ai|framework|orchestrat|multi[- ]agent))\b/i,
29
+ },
30
+ ];
31
+ /** Reply templates per category. */
32
+ const REPLY_TEMPLATES = {
33
+ x402_mention: [
34
+ "We built SwarmX on x402 -- 15+ multi-agent swarm architectures, pay-per-call with USDC, no accounts needed. Live on mainnet today.\n\nhttps://api.swarmx.io",
35
+ "x402 is the rails. SwarmX is the product. AI agent teams you pay for with a single USDC transaction.\n\nhttps://api.swarmx.io",
36
+ ],
37
+ competitor_mention: [
38
+ "Worth checking out SwarmX -- same multi-agent orchestration, but pay-per-call with USDC instead of subscriptions. $0.01/call vs $0.50/execution.\n\nhttps://api.swarmx.io",
39
+ "We moved from subscriptions to x402 micropayments. 50x cheaper than CrewAI, no account needed, same swarm architectures.\n\nhttps://api.swarmx.io",
40
+ ],
41
+ agent_payments: [
42
+ "This is exactly what we built SwarmX for. x402 lets AI agents pay for other AI agents -- USDC micropayments, no accounts, automatic 402 -> pay -> retry.\n\nhttps://api.swarmx.io",
43
+ "SwarmX solves this. Expose any agent team as an HTTP endpoint, price it in USDC, let other agents pay per call via x402. Live today.\n\nhttps://api.swarmx.io",
44
+ ],
45
+ swarms_ecosystem: [
46
+ "We built the TypeScript implementation of Swarms + x402 monetization. 15+ swarm architectures, x402 payment rail, ElizaOS plugin.\n\nhttps://api.swarmx.io",
47
+ "SwarmX is the TS/ElizaOS side of the Swarms ecosystem. Same multi-agent power, x402 payments baked in, deploy standalone or as a plugin.\n\nhttps://api.swarmx.io",
48
+ ],
49
+ };
50
+ export class XMonitor {
51
+ searchTerms;
52
+ config;
53
+ constructor(config = {}) {
54
+ this.config = config;
55
+ this.searchTerms = config.searchTerms ?? DEFAULT_SEARCH_TERMS;
56
+ }
57
+ /**
58
+ * Classify a post into a reply category.
59
+ */
60
+ categorize(post) {
61
+ for (const { category, pattern } of CATEGORY_PATTERNS) {
62
+ if (pattern.test(post.text)) {
63
+ return category;
64
+ }
65
+ }
66
+ return "unknown";
67
+ }
68
+ /**
69
+ * Pick a reply template for a category. Uses a deterministic index
70
+ * derived from the post ID so the same post always gets the same variant.
71
+ */
72
+ pickReply(category, postId) {
73
+ const templates = REPLY_TEMPLATES[category];
74
+ // Simple hash: sum char codes of postId, mod template count
75
+ let hash = 0;
76
+ for (let i = 0; i < postId.length; i++) {
77
+ hash += postId.charCodeAt(i);
78
+ }
79
+ return templates[hash % templates.length];
80
+ }
81
+ /**
82
+ * Generate reply drafts for a batch of posts.
83
+ * Skips posts that don't match any category.
84
+ */
85
+ generateReplyDrafts(posts) {
86
+ const drafts = [];
87
+ for (const post of posts) {
88
+ const category = this.categorize(post);
89
+ if (category === "unknown")
90
+ continue;
91
+ drafts.push({
92
+ postId: post.id,
93
+ postAuthor: post.author,
94
+ postText: post.text,
95
+ category,
96
+ reply: this.pickReply(category, post.id),
97
+ });
98
+ }
99
+ return drafts;
100
+ }
101
+ /**
102
+ * Generate reply drafts and send them to Telegram for review.
103
+ */
104
+ async reviewOnTelegram(posts) {
105
+ const drafts = this.generateReplyDrafts(posts);
106
+ for (const draft of drafts) {
107
+ const message = [
108
+ `[SwarmX Reply Draft]`,
109
+ ``,
110
+ `Post by @${draft.postAuthor}:`,
111
+ `"${draft.postText}"`,
112
+ ``,
113
+ `Category: ${draft.category}`,
114
+ ``,
115
+ `Draft reply:`,
116
+ draft.reply,
117
+ ].join("\n");
118
+ await this.sendToTelegram(message);
119
+ }
120
+ return drafts;
121
+ }
122
+ /**
123
+ * Send a message to Telegram for human review.
124
+ */
125
+ async sendToTelegram(text) {
126
+ const { telegramBotToken, telegramChatId } = this.config;
127
+ if (!telegramBotToken || !telegramChatId)
128
+ return;
129
+ const url = `https://api.telegram.org/bot${telegramBotToken}/sendMessage`;
130
+ await fetch(url, {
131
+ method: "POST",
132
+ headers: { "Content-Type": "application/json" },
133
+ body: JSON.stringify({
134
+ chat_id: telegramChatId,
135
+ text,
136
+ parse_mode: "HTML",
137
+ }),
138
+ });
139
+ }
140
+ }
141
+ //# sourceMappingURL=xMonitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xMonitor.js","sourceRoot":"","sources":["../../src/marketing/xMonitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type Provider } from "@elizaos/core";
2
+ /**
3
+ * Injects x402 payment context into the agent's LLM prompt.
4
+ * Lets the agent know its wallet status, spending history, budget, and access pass.
5
+ */
6
+ export declare const x402Provider: Provider;
7
+ //# sourceMappingURL=x402Provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x402Provider.d.ts","sourceRoot":"","sources":["../../src/providers/x402Provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EAKd,MAAM,eAAe,CAAC;AAIvB;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,QAwF1B,CAAC"}