payment-skill 1.0.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 (110) hide show
  1. package/LICENSE +62 -0
  2. package/README.md +545 -0
  3. package/SKILL.md +99 -0
  4. package/SUPPORT.md +153 -0
  5. package/bin/payment-skill.js +2 -0
  6. package/dashboard.html +669 -0
  7. package/dist/api/bunq.d.ts +35 -0
  8. package/dist/api/bunq.d.ts.map +1 -0
  9. package/dist/api/bunq.js +164 -0
  10. package/dist/api/bunq.js.map +1 -0
  11. package/dist/api/wise.d.ts +32 -0
  12. package/dist/api/wise.d.ts.map +1 -0
  13. package/dist/api/wise.js +155 -0
  14. package/dist/api/wise.js.map +1 -0
  15. package/dist/cli.d.ts +8 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +69 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/commands/bunq.d.ts +8 -0
  20. package/dist/commands/bunq.d.ts.map +1 -0
  21. package/dist/commands/bunq.js +193 -0
  22. package/dist/commands/bunq.js.map +1 -0
  23. package/dist/commands/config.d.ts +8 -0
  24. package/dist/commands/config.d.ts.map +1 -0
  25. package/dist/commands/config.js +70 -0
  26. package/dist/commands/config.js.map +1 -0
  27. package/dist/commands/emergency.d.ts +8 -0
  28. package/dist/commands/emergency.d.ts.map +1 -0
  29. package/dist/commands/emergency.js +85 -0
  30. package/dist/commands/emergency.js.map +1 -0
  31. package/dist/commands/limits.d.ts +6 -0
  32. package/dist/commands/limits.d.ts.map +1 -0
  33. package/dist/commands/limits.js +125 -0
  34. package/dist/commands/limits.js.map +1 -0
  35. package/dist/commands/merchant.d.ts +6 -0
  36. package/dist/commands/merchant.d.ts.map +1 -0
  37. package/dist/commands/merchant.js +41 -0
  38. package/dist/commands/merchant.js.map +1 -0
  39. package/dist/commands/pay.d.ts +10 -0
  40. package/dist/commands/pay.d.ts.map +1 -0
  41. package/dist/commands/pay.js +112 -0
  42. package/dist/commands/pay.js.map +1 -0
  43. package/dist/commands/provider.d.ts +6 -0
  44. package/dist/commands/provider.d.ts.map +1 -0
  45. package/dist/commands/provider.js +74 -0
  46. package/dist/commands/provider.js.map +1 -0
  47. package/dist/commands/server.d.ts +8 -0
  48. package/dist/commands/server.d.ts.map +1 -0
  49. package/dist/commands/server.js +92 -0
  50. package/dist/commands/server.js.map +1 -0
  51. package/dist/commands/template.d.ts +8 -0
  52. package/dist/commands/template.d.ts.map +1 -0
  53. package/dist/commands/template.js +161 -0
  54. package/dist/commands/template.js.map +1 -0
  55. package/dist/commands/transaction.d.ts +6 -0
  56. package/dist/commands/transaction.d.ts.map +1 -0
  57. package/dist/commands/transaction.js +72 -0
  58. package/dist/commands/transaction.js.map +1 -0
  59. package/dist/commands/wise.d.ts +8 -0
  60. package/dist/commands/wise.d.ts.map +1 -0
  61. package/dist/commands/wise.js +240 -0
  62. package/dist/commands/wise.js.map +1 -0
  63. package/dist/core/config.d.ts +40 -0
  64. package/dist/core/config.d.ts.map +1 -0
  65. package/dist/core/config.js +201 -0
  66. package/dist/core/config.js.map +1 -0
  67. package/dist/core/template-engine.d.ts +27 -0
  68. package/dist/core/template-engine.d.ts.map +1 -0
  69. package/dist/core/template-engine.js +410 -0
  70. package/dist/core/template-engine.js.map +1 -0
  71. package/dist/core/transaction.d.ts +31 -0
  72. package/dist/core/transaction.d.ts.map +1 -0
  73. package/dist/core/transaction.js +214 -0
  74. package/dist/core/transaction.js.map +1 -0
  75. package/dist/index.d.ts +12 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +36 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/server/server.d.ts +14 -0
  80. package/dist/server/server.d.ts.map +1 -0
  81. package/dist/server/server.js +120 -0
  82. package/dist/server/server.js.map +1 -0
  83. package/dist/types/index.d.ts +141 -0
  84. package/dist/types/index.d.ts.map +1 -0
  85. package/dist/types/index.js +8 -0
  86. package/dist/types/index.js.map +1 -0
  87. package/logo.png +0 -0
  88. package/package.json +78 -0
  89. package/src/api/bunq.ts +257 -0
  90. package/src/api/wise.ts +204 -0
  91. package/src/cli.ts +67 -0
  92. package/src/commands/bunq.ts +223 -0
  93. package/src/commands/config.ts +72 -0
  94. package/src/commands/emergency.ts +94 -0
  95. package/src/commands/limits.ts +126 -0
  96. package/src/commands/merchant.ts +39 -0
  97. package/src/commands/pay.ts +109 -0
  98. package/src/commands/provider.ts +75 -0
  99. package/src/commands/server.ts +59 -0
  100. package/src/commands/template.ts +172 -0
  101. package/src/commands/transaction.ts +66 -0
  102. package/src/commands/wise.ts +279 -0
  103. package/src/core/config.ts +202 -0
  104. package/src/core/template-engine.ts +454 -0
  105. package/src/core/transaction.ts +228 -0
  106. package/src/index.ts +14 -0
  107. package/src/server/server.ts +131 -0
  108. package/src/types/index.ts +178 -0
  109. package/tsconfig.json +23 -0
  110. package/verified-merchants.json +63 -0
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+ /**
3
+ * Payment Skill - Wise Commands
4
+ *
5
+ * Wise API CLI commands
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.wiseCommands = void 0;
12
+ const commander_1 = require("commander");
13
+ const chalk_1 = __importDefault(require("chalk"));
14
+ const ora_1 = __importDefault(require("ora"));
15
+ const wise_1 = require("../api/wise");
16
+ const config_1 = require("../core/config");
17
+ const transaction_1 = require("../core/transaction");
18
+ exports.wiseCommands = new commander_1.Command('wise')
19
+ .description('Wise API operations');
20
+ // Balance commands
21
+ exports.wiseCommands
22
+ .command('balance')
23
+ .description('Get Wise account balances')
24
+ .option('-p, --profile <id>', 'Profile ID')
25
+ .action(async (options) => {
26
+ const spinner = (0, ora_1.default)('Fetching balances...').start();
27
+ try {
28
+ const config = config_1.configManager.getProvider('wise');
29
+ if (!config) {
30
+ throw new Error('Wise not configured. Run: payment-skill provider add wise');
31
+ }
32
+ const client = new wise_1.WiseClient(config);
33
+ const profileId = options.profile || config.profileId;
34
+ if (!profileId) {
35
+ throw new Error('Profile ID required. Use --profile or set default');
36
+ }
37
+ const balances = await client.getBalances(profileId);
38
+ spinner.stop();
39
+ console.log(chalk_1.default.blue('Wise Balances:'));
40
+ balances.forEach((balance) => {
41
+ console.log(` ${balance.currency}: ${balance.amount.value}`);
42
+ });
43
+ }
44
+ catch (error) {
45
+ spinner.fail(error.message);
46
+ process.exit(1);
47
+ }
48
+ });
49
+ // Quote commands
50
+ exports.wiseCommands
51
+ .command('quote')
52
+ .description('Create a quote (lock exchange rate)')
53
+ .requiredOption('-s, --source <currency>', 'Source currency')
54
+ .requiredOption('-t, --target <currency>', 'Target currency')
55
+ .option('-a, --amount <amount>', 'Source amount')
56
+ .option('-p, --profile <id>', 'Profile ID')
57
+ .action(async (options) => {
58
+ const spinner = (0, ora_1.default)('Creating quote...').start();
59
+ try {
60
+ const config = config_1.configManager.getProvider('wise');
61
+ if (!config) {
62
+ throw new Error('Wise not configured');
63
+ }
64
+ const client = new wise_1.WiseClient(config);
65
+ const profileId = options.profile || config.profileId;
66
+ const quote = await client.createQuote(profileId, options.source, options.target, parseFloat(options.amount));
67
+ spinner.stop();
68
+ console.log(chalk_1.default.green('✓ Quote created'));
69
+ console.log(` ID: ${quote.id}`);
70
+ console.log(` Rate: ${quote.rate}`);
71
+ console.log(` Fee: ${quote.fee}`);
72
+ console.log(` Total: ${quote.sourceAmount}`);
73
+ }
74
+ catch (error) {
75
+ spinner.fail(error.message);
76
+ process.exit(1);
77
+ }
78
+ });
79
+ // Transfer commands
80
+ exports.wiseCommands
81
+ .command('transfer')
82
+ .description('Create a transfer')
83
+ .requiredOption('-q, --quote <id>', 'Quote ID')
84
+ .requiredOption('-r, --recipient <id>', 'Recipient account ID')
85
+ .option('-m, --reference <text>', 'Payment reference')
86
+ .option('-p, --profile <id>', 'Profile ID')
87
+ .action(async (options) => {
88
+ const spinner = (0, ora_1.default)('Creating transfer...').start();
89
+ try {
90
+ const config = config_1.configManager.getProvider('wise');
91
+ if (!config) {
92
+ throw new Error('Wise not configured');
93
+ }
94
+ // Create transaction record
95
+ const tx = transaction_1.transactionManager.createTransaction('wise', 'wise-transfer', 0, // Will update with actual amount
96
+ 'EUR', { quoteId: options.quote, recipientId: options.recipient });
97
+ const client = new wise_1.WiseClient(config);
98
+ const profileId = options.profile || config.profileId;
99
+ const transfer = await client.createTransfer(profileId, options.quote, options.recipient, options.reference);
100
+ transaction_1.transactionManager.updateTransactionStatus(tx.id, 'initiated');
101
+ spinner.stop();
102
+ console.log(chalk_1.default.green('✓ Transfer created'));
103
+ console.log(` Transaction ID: ${tx.id}`);
104
+ console.log(` Transfer ID: ${transfer.id}`);
105
+ console.log(` Status: ${transfer.status}`);
106
+ if (transfer.status === 'pending') {
107
+ console.log(chalk_1.default.yellow('\n⚠️ Transfer requires funding'));
108
+ console.log(`Run: payment-skill wise fund ${transfer.id}`);
109
+ }
110
+ }
111
+ catch (error) {
112
+ spinner.fail(error.message);
113
+ process.exit(1);
114
+ }
115
+ });
116
+ // Fund transfer
117
+ exports.wiseCommands
118
+ .command('fund')
119
+ .description('Fund a transfer from balance')
120
+ .argument('<transferId>', 'Transfer ID to fund')
121
+ .option('-p, --profile <id>', 'Profile ID')
122
+ .action(async (transferId, options) => {
123
+ const spinner = (0, ora_1.default)('Funding transfer...').start();
124
+ try {
125
+ const config = config_1.configManager.getProvider('wise');
126
+ if (!config) {
127
+ throw new Error('Wise not configured');
128
+ }
129
+ const client = new wise_1.WiseClient(config);
130
+ const profileId = options.profile || config.profileId;
131
+ const payment = await client.fundTransfer(profileId, transferId);
132
+ spinner.stop();
133
+ console.log(chalk_1.default.green('✓ Transfer funded'));
134
+ console.log(` Status: ${payment.status}`);
135
+ if (payment.status === 'pending') {
136
+ console.log(chalk_1.default.yellow('\n⚠️ PSD2: Open Wise app to confirm'));
137
+ }
138
+ }
139
+ catch (error) {
140
+ spinner.fail(error.message);
141
+ process.exit(1);
142
+ }
143
+ });
144
+ // List transfers
145
+ exports.wiseCommands
146
+ .command('list')
147
+ .description('List transfers')
148
+ .option('-p, --profile <id>', 'Profile ID')
149
+ .option('-s, --status <status>', 'Filter by status')
150
+ .option('-l, --limit <number>', 'Limit results', '10')
151
+ .action(async (options) => {
152
+ const spinner = (0, ora_1.default)('Fetching transfers...').start();
153
+ try {
154
+ const config = config_1.configManager.getProvider('wise');
155
+ if (!config) {
156
+ throw new Error('Wise not configured');
157
+ }
158
+ const client = new wise_1.WiseClient(config);
159
+ const profileId = options.profile || config.profileId;
160
+ const transfers = await client.getTransfers(profileId, options.status, parseInt(options.limit));
161
+ spinner.stop();
162
+ console.log(chalk_1.default.blue(`Transfers (${transfers.length}):`));
163
+ transfers.forEach((t) => {
164
+ const statusColor = t.status === 'completed' ? chalk_1.default.green :
165
+ t.status === 'pending' ? chalk_1.default.yellow : chalk_1.default.red;
166
+ console.log(` ${t.id} - ${statusColor(t.status)} - ${t.sourceValue} ${t.sourceCurrency}`);
167
+ });
168
+ }
169
+ catch (error) {
170
+ spinner.fail(error.message);
171
+ process.exit(1);
172
+ }
173
+ });
174
+ // Get transfer status
175
+ exports.wiseCommands
176
+ .command('status')
177
+ .description('Get transfer status')
178
+ .argument('<transferId>', 'Transfer ID')
179
+ .option('--poll', 'Poll until completion')
180
+ .option('-i, --interval <seconds>', 'Poll interval', '5')
181
+ .action(async (transferId, options) => {
182
+ try {
183
+ const config = config_1.configManager.getProvider('wise');
184
+ if (!config) {
185
+ throw new Error('Wise not configured');
186
+ }
187
+ const client = new wise_1.WiseClient(config);
188
+ if (options.poll) {
189
+ console.log(chalk_1.default.blue(`Polling transfer ${transferId}...`));
190
+ const spinner = (0, ora_1.default)('Waiting...').start();
191
+ while (true) {
192
+ const transfer = await client.getTransfer(transferId);
193
+ spinner.text = `Status: ${transfer.status}`;
194
+ if (transfer.status === 'completed') {
195
+ spinner.succeed(chalk_1.default.green(`Transfer completed!`));
196
+ break;
197
+ }
198
+ else if (transfer.status === 'cancelled' || transfer.status === 'failed') {
199
+ spinner.fail(`Transfer ${transfer.status}`);
200
+ break;
201
+ }
202
+ await new Promise(r => setTimeout(r, parseInt(options.interval) * 1000));
203
+ }
204
+ }
205
+ else {
206
+ const transfer = await client.getTransfer(transferId);
207
+ console.log(chalk_1.default.blue('Transfer Status:'));
208
+ console.log(` ID: ${transfer.id}`);
209
+ console.log(` Status: ${transfer.status}`);
210
+ console.log(` Amount: ${transfer.sourceValue} ${transfer.sourceCurrency}`);
211
+ console.log(` Created: ${transfer.created}`);
212
+ }
213
+ }
214
+ catch (error) {
215
+ console.error(chalk_1.default.red('Error:'), error.message);
216
+ process.exit(1);
217
+ }
218
+ });
219
+ // Cancel transfer
220
+ exports.wiseCommands
221
+ .command('cancel')
222
+ .description('Cancel a pending transfer')
223
+ .argument('<transferId>', 'Transfer ID to cancel')
224
+ .action(async (transferId) => {
225
+ const spinner = (0, ora_1.default)('Cancelling transfer...').start();
226
+ try {
227
+ const config = config_1.configManager.getProvider('wise');
228
+ if (!config) {
229
+ throw new Error('Wise not configured');
230
+ }
231
+ const client = new wise_1.WiseClient(config);
232
+ await client.cancelTransfer(transferId);
233
+ spinner.succeed(chalk_1.default.green('Transfer cancelled'));
234
+ }
235
+ catch (error) {
236
+ spinner.fail(error.message);
237
+ process.exit(1);
238
+ }
239
+ });
240
+ //# sourceMappingURL=wise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wise.js","sourceRoot":"","sources":["../../src/commands/wise.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Payment Skill - Core Configuration Manager
3
+ *
4
+ * Manages application configuration, limits, and emergency stop state
5
+ */
6
+ import { ProviderConfig, LimitConfig, TimeWindowConfig, EmergencyStopState } from '../types';
7
+ export declare class ConfigManager {
8
+ private config;
9
+ private emergencyState;
10
+ constructor();
11
+ private ensureConfigDir;
12
+ private loadConfig;
13
+ private loadEmergencyState;
14
+ private saveConfig;
15
+ private saveEmergencyState;
16
+ private getDefaultConfig;
17
+ setProvider(name: string, config: ProviderConfig): void;
18
+ getProvider(name: string): ProviderConfig | null;
19
+ getAllProviders(): Record<string, ProviderConfig>;
20
+ removeProvider(name: string): void;
21
+ getLimits(): LimitConfig;
22
+ setLimits(limits: Partial<LimitConfig>): void;
23
+ getTimeWindow(): TimeWindowConfig;
24
+ setTimeWindow(config: Partial<TimeWindowConfig>): void;
25
+ activateEmergencyStop(reason?: string): void;
26
+ deactivateEmergencyStop(): void;
27
+ isEmergencyStopActive(): boolean;
28
+ getEmergencyStopState(): EmergencyStopState;
29
+ addPendingTransaction(transactionId: string): void;
30
+ removePendingTransaction(transactionId: string): void;
31
+ getConfig(): any;
32
+ setConfig(key: string, value: any): void;
33
+ getBlockedCategories(): string[];
34
+ addBlockedCategory(category: string): void;
35
+ removeBlockedCategory(category: string): void;
36
+ getWebhookUrl(): string | null;
37
+ setWebhookUrl(url: string): void;
38
+ }
39
+ export declare const configManager: ConfigManager;
40
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAGnB,MAAM,UAAU,CAAC;AAMlB,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,cAAc,CAAkE;;IAQxF,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,gBAAgB;IAwBxB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI;IAKvD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAIhD,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;IAIjD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMlC,SAAS,IAAI,WAAW;IAIxB,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAM7C,aAAa,IAAI,gBAAgB;IAIjC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAMtD,qBAAqB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAU5C,uBAAuB,IAAI,IAAI;IAQ/B,qBAAqB,IAAI,OAAO;IAIhC,qBAAqB,IAAI,kBAAkB;IAI3C,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAOlD,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAOrD,SAAS,IAAI,GAAG;IAIhB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAMxC,oBAAoB,IAAI,MAAM,EAAE;IAIhC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAO1C,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAO7C,aAAa,IAAI,MAAM,GAAG,IAAI;IAI9B,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAIjC;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ /**
3
+ * Payment Skill - Core Configuration Manager
4
+ *
5
+ * Manages application configuration, limits, and emergency stop state
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.configManager = exports.ConfigManager = void 0;
42
+ const fs = __importStar(require("fs-extra"));
43
+ const path = __importStar(require("path"));
44
+ const CONFIG_DIR = path.join(process.env.HOME || process.env.USERPROFILE || '.', '.payment-skill');
45
+ const CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');
46
+ const EMERGENCY_FILE = path.join(CONFIG_DIR, 'emergency.json');
47
+ class ConfigManager {
48
+ constructor() {
49
+ this.config = {};
50
+ this.emergencyState = { active: false, pendingTransactions: [] };
51
+ this.ensureConfigDir();
52
+ this.loadConfig();
53
+ this.loadEmergencyState();
54
+ }
55
+ ensureConfigDir() {
56
+ if (!fs.existsSync(CONFIG_DIR)) {
57
+ fs.mkdirSync(CONFIG_DIR, { recursive: true });
58
+ }
59
+ }
60
+ loadConfig() {
61
+ if (fs.existsSync(CONFIG_FILE)) {
62
+ this.config = fs.readJsonSync(CONFIG_FILE);
63
+ }
64
+ else {
65
+ this.config = this.getDefaultConfig();
66
+ this.saveConfig();
67
+ }
68
+ }
69
+ loadEmergencyState() {
70
+ if (fs.existsSync(EMERGENCY_FILE)) {
71
+ this.emergencyState = fs.readJsonSync(EMERGENCY_FILE);
72
+ }
73
+ }
74
+ saveConfig() {
75
+ fs.writeJsonSync(CONFIG_FILE, this.config, { spaces: 2 });
76
+ }
77
+ saveEmergencyState() {
78
+ fs.writeJsonSync(EMERGENCY_FILE, this.emergencyState, { spaces: 2 });
79
+ }
80
+ getDefaultConfig() {
81
+ return {
82
+ version: '1.0.0',
83
+ providers: {},
84
+ limits: {
85
+ perTransaction: 10000,
86
+ daily: 50000,
87
+ weekly: 200000,
88
+ monthly: 500000,
89
+ maxTransactionsPerHour: 10
90
+ },
91
+ timeWindow: {
92
+ enabled: false,
93
+ start: '08:00',
94
+ end: '22:00',
95
+ timezone: 'Europe/Bucharest'
96
+ },
97
+ blockedCategories: ['gambling', 'adult', 'drugs', 'weapons', 'tobacco'],
98
+ verifiedMerchantsOnly: true,
99
+ webhookUrl: null
100
+ };
101
+ }
102
+ // Provider Management
103
+ setProvider(name, config) {
104
+ this.config.providers[name] = config;
105
+ this.saveConfig();
106
+ }
107
+ getProvider(name) {
108
+ return this.config.providers[name] || null;
109
+ }
110
+ getAllProviders() {
111
+ return this.config.providers;
112
+ }
113
+ removeProvider(name) {
114
+ delete this.config.providers[name];
115
+ this.saveConfig();
116
+ }
117
+ // Limits Management
118
+ getLimits() {
119
+ return this.config.limits;
120
+ }
121
+ setLimits(limits) {
122
+ this.config.limits = { ...this.config.limits, ...limits };
123
+ this.saveConfig();
124
+ }
125
+ // Time Window Management
126
+ getTimeWindow() {
127
+ return this.config.timeWindow;
128
+ }
129
+ setTimeWindow(config) {
130
+ this.config.timeWindow = { ...this.config.timeWindow, ...config };
131
+ this.saveConfig();
132
+ }
133
+ // Emergency Stop
134
+ activateEmergencyStop(reason) {
135
+ this.emergencyState = {
136
+ active: true,
137
+ activatedAt: new Date(),
138
+ reason: reason || 'Manual activation',
139
+ pendingTransactions: this.emergencyState.pendingTransactions
140
+ };
141
+ this.saveEmergencyState();
142
+ }
143
+ deactivateEmergencyStop() {
144
+ this.emergencyState = {
145
+ active: false,
146
+ pendingTransactions: []
147
+ };
148
+ this.saveEmergencyState();
149
+ }
150
+ isEmergencyStopActive() {
151
+ return this.emergencyState.active;
152
+ }
153
+ getEmergencyStopState() {
154
+ return this.emergencyState;
155
+ }
156
+ addPendingTransaction(transactionId) {
157
+ if (!this.emergencyState.pendingTransactions.includes(transactionId)) {
158
+ this.emergencyState.pendingTransactions.push(transactionId);
159
+ this.saveEmergencyState();
160
+ }
161
+ }
162
+ removePendingTransaction(transactionId) {
163
+ this.emergencyState.pendingTransactions =
164
+ this.emergencyState.pendingTransactions.filter(id => id !== transactionId);
165
+ this.saveEmergencyState();
166
+ }
167
+ // General Config
168
+ getConfig() {
169
+ return this.config;
170
+ }
171
+ setConfig(key, value) {
172
+ this.config[key] = value;
173
+ this.saveConfig();
174
+ }
175
+ // Blocked Categories
176
+ getBlockedCategories() {
177
+ return this.config.blockedCategories;
178
+ }
179
+ addBlockedCategory(category) {
180
+ if (!this.config.blockedCategories.includes(category)) {
181
+ this.config.blockedCategories.push(category);
182
+ this.saveConfig();
183
+ }
184
+ }
185
+ removeBlockedCategory(category) {
186
+ this.config.blockedCategories =
187
+ this.config.blockedCategories.filter((c) => c !== category);
188
+ this.saveConfig();
189
+ }
190
+ // Webhook URL
191
+ getWebhookUrl() {
192
+ return this.config.webhookUrl;
193
+ }
194
+ setWebhookUrl(url) {
195
+ this.config.webhookUrl = url;
196
+ this.saveConfig();
197
+ }
198
+ }
199
+ exports.ConfigManager = ConfigManager;
200
+ exports.configManager = new ConfigManager();
201
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Payment Skill - Template Engine
3
+ *
4
+ * Implements the configurable template-based payment flow system
5
+ * OpenClaw selects templates and provides parameters
6
+ * Payment-skill executes the predefined flow
7
+ */
8
+ import { CommandTemplate, Transaction } from '../types';
9
+ export declare class TemplateEngine {
10
+ private templates;
11
+ constructor();
12
+ private loadTemplates;
13
+ private createDefaultTemplates;
14
+ getTemplate(templateId: string): CommandTemplate | null;
15
+ getAllTemplates(): CommandTemplate[];
16
+ getTemplatesForMerchant(merchant: string): CommandTemplate[];
17
+ executeTemplate(templateId: string, params: Record<string, any>): Promise<Transaction>;
18
+ private executeStep;
19
+ private resolveParams;
20
+ private getNestedValue;
21
+ private executeCommand;
22
+ private executeWiseCommand;
23
+ private executeBunqCommand;
24
+ private waitForConfirmation;
25
+ }
26
+ export declare const templateEngine: TemplateEngine;
27
+ //# sourceMappingURL=template-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-engine.d.ts","sourceRoot":"","sources":["../../src/core/template-engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,eAAe,EAAgB,WAAW,EAAE,MAAM,UAAU,CAAC;AAQtE,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAA2C;;IAM5D,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,sBAAsB;IAsM9B,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAIvD,eAAe,IAAI,eAAe,EAAE;IAIpC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE;IAItD,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC1B,OAAO,CAAC,WAAW,CAAC;YAoCT,WAAW;IAwBzB,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,cAAc;YAIR,cAAc;YAgBd,kBAAkB;YA8BlB,kBAAkB;YAiClB,mBAAmB;CA+BlC;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAC"}