@hookbase/cli 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 (114) hide show
  1. package/README.md +107 -0
  2. package/dist/commands/api-keys.d.ts +15 -0
  3. package/dist/commands/api-keys.d.ts.map +1 -0
  4. package/dist/commands/api-keys.js +143 -0
  5. package/dist/commands/api-keys.js.map +1 -0
  6. package/dist/commands/dashboard.d.ts +3 -0
  7. package/dist/commands/dashboard.d.ts.map +1 -0
  8. package/dist/commands/dashboard.js +26 -0
  9. package/dist/commands/dashboard.js.map +1 -0
  10. package/dist/commands/deliveries.d.ts +22 -0
  11. package/dist/commands/deliveries.d.ts.map +1 -0
  12. package/dist/commands/deliveries.js +223 -0
  13. package/dist/commands/deliveries.js.map +1 -0
  14. package/dist/commands/destinations.d.ts +29 -0
  15. package/dist/commands/destinations.d.ts.map +1 -0
  16. package/dist/commands/destinations.js +232 -0
  17. package/dist/commands/destinations.js.map +1 -0
  18. package/dist/commands/events.d.ts +13 -0
  19. package/dist/commands/events.d.ts.map +1 -0
  20. package/dist/commands/events.js +192 -0
  21. package/dist/commands/events.js.map +1 -0
  22. package/dist/commands/forward.d.ts +2 -0
  23. package/dist/commands/forward.d.ts.map +1 -0
  24. package/dist/commands/forward.js +25 -0
  25. package/dist/commands/forward.js.map +1 -0
  26. package/dist/commands/login.d.ts +2 -0
  27. package/dist/commands/login.d.ts.map +1 -0
  28. package/dist/commands/login.js +91 -0
  29. package/dist/commands/login.js.map +1 -0
  30. package/dist/commands/logout.d.ts +2 -0
  31. package/dist/commands/logout.d.ts.map +1 -0
  32. package/dist/commands/logout.js +12 -0
  33. package/dist/commands/logout.js.map +1 -0
  34. package/dist/commands/logs.d.ts +5 -0
  35. package/dist/commands/logs.d.ts.map +1 -0
  36. package/dist/commands/logs.js +43 -0
  37. package/dist/commands/logs.js.map +1 -0
  38. package/dist/commands/routes.d.ts +28 -0
  39. package/dist/commands/routes.d.ts.map +1 -0
  40. package/dist/commands/routes.js +225 -0
  41. package/dist/commands/routes.js.map +1 -0
  42. package/dist/commands/sources.d.ts +30 -0
  43. package/dist/commands/sources.d.ts.map +1 -0
  44. package/dist/commands/sources.js +256 -0
  45. package/dist/commands/sources.js.map +1 -0
  46. package/dist/commands/tunnel.d.ts +6 -0
  47. package/dist/commands/tunnel.d.ts.map +1 -0
  48. package/dist/commands/tunnel.js +150 -0
  49. package/dist/commands/tunnel.js.map +1 -0
  50. package/dist/commands/tunnels.d.ts +32 -0
  51. package/dist/commands/tunnels.d.ts.map +1 -0
  52. package/dist/commands/tunnels.js +432 -0
  53. package/dist/commands/tunnels.js.map +1 -0
  54. package/dist/index.d.ts +3 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +430 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/lib/api.d.ts +472 -0
  59. package/dist/lib/api.d.ts.map +1 -0
  60. package/dist/lib/api.js +480 -0
  61. package/dist/lib/api.js.map +1 -0
  62. package/dist/lib/config.d.ts +31 -0
  63. package/dist/lib/config.d.ts.map +1 -0
  64. package/dist/lib/config.js +98 -0
  65. package/dist/lib/config.js.map +1 -0
  66. package/dist/lib/logger.d.ts +19 -0
  67. package/dist/lib/logger.d.ts.map +1 -0
  68. package/dist/lib/logger.js +90 -0
  69. package/dist/lib/logger.js.map +1 -0
  70. package/dist/lib/tunnel.d.ts +28 -0
  71. package/dist/lib/tunnel.d.ts.map +1 -0
  72. package/dist/lib/tunnel.js +197 -0
  73. package/dist/lib/tunnel.js.map +1 -0
  74. package/dist/tui/App.d.ts +2 -0
  75. package/dist/tui/App.d.ts.map +1 -0
  76. package/dist/tui/App.js +136 -0
  77. package/dist/tui/App.js.map +1 -0
  78. package/dist/tui/Dashboard.d.ts +2 -0
  79. package/dist/tui/Dashboard.d.ts.map +1 -0
  80. package/dist/tui/Dashboard.js +113 -0
  81. package/dist/tui/Dashboard.js.map +1 -0
  82. package/dist/tui/TunnelMonitor.d.ts +2 -0
  83. package/dist/tui/TunnelMonitor.d.ts.map +1 -0
  84. package/dist/tui/TunnelMonitor.js +131 -0
  85. package/dist/tui/TunnelMonitor.js.map +1 -0
  86. package/dist/tui/components/Box.d.ts +22 -0
  87. package/dist/tui/components/Box.d.ts.map +1 -0
  88. package/dist/tui/components/Box.js +27 -0
  89. package/dist/tui/components/Box.js.map +1 -0
  90. package/dist/tui/views/Analytics.d.ts +6 -0
  91. package/dist/tui/views/Analytics.d.ts.map +1 -0
  92. package/dist/tui/views/Analytics.js +104 -0
  93. package/dist/tui/views/Analytics.js.map +1 -0
  94. package/dist/tui/views/Destinations.d.ts +10 -0
  95. package/dist/tui/views/Destinations.d.ts.map +1 -0
  96. package/dist/tui/views/Destinations.js +156 -0
  97. package/dist/tui/views/Destinations.js.map +1 -0
  98. package/dist/tui/views/Events.d.ts +9 -0
  99. package/dist/tui/views/Events.d.ts.map +1 -0
  100. package/dist/tui/views/Events.js +60 -0
  101. package/dist/tui/views/Events.js.map +1 -0
  102. package/dist/tui/views/Overview.d.ts +13 -0
  103. package/dist/tui/views/Overview.d.ts.map +1 -0
  104. package/dist/tui/views/Overview.js +29 -0
  105. package/dist/tui/views/Overview.js.map +1 -0
  106. package/dist/tui/views/Sources.d.ts +10 -0
  107. package/dist/tui/views/Sources.d.ts.map +1 -0
  108. package/dist/tui/views/Sources.js +151 -0
  109. package/dist/tui/views/Sources.js.map +1 -0
  110. package/dist/tui/views/Tunnels.d.ts +10 -0
  111. package/dist/tui/views/Tunnels.d.ts.map +1 -0
  112. package/dist/tui/views/Tunnels.js +283 -0
  113. package/dist/tui/views/Tunnels.js.map +1 -0
  114. package/package.json +62 -0
package/README.md ADDED
@@ -0,0 +1,107 @@
1
+ # @hookbase/cli
2
+
3
+ The official CLI for [Hookbase](https://hookbase.app) - manage webhooks, create localhost tunnels, and monitor deliveries from your terminal.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install -g @hookbase/cli
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ ```bash
14
+ # Login to your account
15
+ hookbase login
16
+
17
+ # Start a tunnel to receive webhooks locally
18
+ hookbase tunnels start 3000
19
+
20
+ # Or launch the interactive dashboard
21
+ hookbase dashboard
22
+ ```
23
+
24
+ ## Features
25
+
26
+ - **Full API Access** - Create and manage sources, destinations, routes, and more
27
+ - **Localhost Tunnels** - Expose local servers to receive webhooks during development
28
+ - **Interactive Dashboard** - Visual TUI with keyboard navigation
29
+ - **Live Event Streaming** - Watch webhook events in real-time
30
+ - **Delivery Management** - View, debug, and replay failed deliveries
31
+ - **CI/CD Ready** - JSON output and environment variable support
32
+
33
+ ## Commands
34
+
35
+ ### Authentication
36
+ ```bash
37
+ hookbase login # Authenticate with Hookbase
38
+ hookbase logout # Clear credentials
39
+ hookbase whoami # Show current user
40
+ ```
41
+
42
+ ### Resources
43
+ ```bash
44
+ hookbase sources list # List webhook sources
45
+ hookbase sources create # Create a new source
46
+
47
+ hookbase destinations list # List destinations
48
+ hookbase destinations create # Create a destination
49
+
50
+ hookbase routes list # List routes
51
+ hookbase routes create # Create a route
52
+ ```
53
+
54
+ ### Tunnels
55
+ ```bash
56
+ hookbase tunnels start 3000 # Create and connect a tunnel
57
+ hookbase tunnels list # List all tunnels
58
+ hookbase tunnels connect <id> <port> # Connect to existing tunnel
59
+ ```
60
+
61
+ ### Events & Deliveries
62
+ ```bash
63
+ hookbase events list # List recent events
64
+ hookbase events follow # Stream live events
65
+ hookbase deliveries list # List deliveries
66
+ hookbase deliveries replay <id> # Replay a failed delivery
67
+ ```
68
+
69
+ ### API Keys
70
+ ```bash
71
+ hookbase api-keys list # List API keys
72
+ hookbase api-keys create # Create a new API key
73
+ hookbase api-keys revoke <id> # Revoke an API key
74
+ ```
75
+
76
+ ### Interactive Dashboard
77
+ ```bash
78
+ hookbase dashboard # Launch TUI dashboard
79
+ ```
80
+
81
+ Navigate with `Tab` or number keys `1-6`, use arrow keys to browse lists, `Enter` to select, and `Esc` to go back.
82
+
83
+ ## Environment Variables
84
+
85
+ ```bash
86
+ HOOKBASE_API_KEY # API key for authentication
87
+ HOOKBASE_API_URL # Custom API URL
88
+ HOOKBASE_ORG_ID # Default organization ID
89
+ ```
90
+
91
+ ## CI/CD Usage
92
+
93
+ ```bash
94
+ export HOOKBASE_API_KEY="whr_live_xxx"
95
+ hookbase sources list --json
96
+ hookbase deliveries bulk-replay --status failed --yes
97
+ ```
98
+
99
+ ## Documentation
100
+
101
+ - [CLI Commands Reference](https://docs.hookbase.app/cli/commands)
102
+ - [API Documentation](https://docs.hookbase.app/api/)
103
+ - [Tunnels Guide](https://docs.hookbase.app/guide/tunnels)
104
+
105
+ ## License
106
+
107
+ MIT
@@ -0,0 +1,15 @@
1
+ export declare function apiKeysListCommand(options: {
2
+ json?: boolean;
3
+ }): Promise<void>;
4
+ export declare function apiKeysCreateCommand(options: {
5
+ name?: string;
6
+ scopes?: string;
7
+ expires?: string;
8
+ yes?: boolean;
9
+ json?: boolean;
10
+ }): Promise<void>;
11
+ export declare function apiKeysRevokeCommand(keyId: string, options: {
12
+ yes?: boolean;
13
+ json?: boolean;
14
+ }): Promise<void>;
15
+ //# sourceMappingURL=api-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-keys.d.ts","sourceRoot":"","sources":["../../src/commands/api-keys.ts"],"names":[],"mappings":"AAaA,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuCnF;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsFhB;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GACzC,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
@@ -0,0 +1,143 @@
1
+ import { input, confirm, select } from '@inquirer/prompts';
2
+ import * as api from '../lib/api.js';
3
+ import * as config from '../lib/config.js';
4
+ import * as logger from '../lib/logger.js';
5
+ function requireAuth() {
6
+ if (!config.isAuthenticated()) {
7
+ logger.error('Not logged in. Run "hookbase login" first.');
8
+ process.exit(1);
9
+ }
10
+ return true;
11
+ }
12
+ export async function apiKeysListCommand(options) {
13
+ requireAuth();
14
+ const spinner = logger.spinner('Fetching API keys...');
15
+ const result = await api.listApiKeys();
16
+ if (result.error) {
17
+ spinner.fail('Failed to fetch API keys');
18
+ logger.error(result.error);
19
+ return;
20
+ }
21
+ spinner.stop();
22
+ const keys = result.data?.apiKeys || [];
23
+ if (options.json) {
24
+ console.log(JSON.stringify(keys, null, 2));
25
+ return;
26
+ }
27
+ if (keys.length === 0) {
28
+ logger.info('No API keys found');
29
+ logger.dim('Create one with "hookbase api-keys create"');
30
+ return;
31
+ }
32
+ logger.table(['ID', 'Name', 'Key Prefix', 'Scopes', 'Last Used', 'Created'], keys.map(k => [
33
+ k.id?.slice(0, 8) + '...' || '-',
34
+ k.name || '-',
35
+ (k.key_prefix || 'whr_') + '...',
36
+ Array.isArray(k.scopes) ? k.scopes.join(', ') :
37
+ (typeof k.scopes === 'string' ? JSON.parse(k.scopes).join(', ') : 'read, write'),
38
+ k.last_used_at ? new Date(k.last_used_at).toLocaleDateString() : 'Never',
39
+ k.created_at ? new Date(k.created_at).toLocaleDateString() : '-',
40
+ ]));
41
+ }
42
+ export async function apiKeysCreateCommand(options) {
43
+ requireAuth();
44
+ let name = options.name;
45
+ let scopes = options.scopes ? options.scopes.split(',').map(s => s.trim()) : undefined;
46
+ let expiresInDays;
47
+ // Interactive mode if name not provided
48
+ if (!name) {
49
+ name = await input({
50
+ message: 'API key name:',
51
+ validate: (value) => value.length > 0 || 'Name is required',
52
+ });
53
+ const scopeChoice = await select({
54
+ message: 'Select permissions:',
55
+ choices: [
56
+ { name: 'Read & Write (full access)', value: 'read,write' },
57
+ { name: 'Read only', value: 'read' },
58
+ { name: 'Write only', value: 'write' },
59
+ ],
60
+ });
61
+ scopes = scopeChoice.split(',');
62
+ const setExpiry = await confirm({
63
+ message: 'Set an expiration date?',
64
+ default: false,
65
+ });
66
+ if (setExpiry) {
67
+ const expiryChoice = await select({
68
+ message: 'Expires in:',
69
+ choices: [
70
+ { name: '30 days', value: '30' },
71
+ { name: '90 days', value: '90' },
72
+ { name: '180 days', value: '180' },
73
+ { name: '365 days', value: '365' },
74
+ ],
75
+ });
76
+ expiresInDays = parseInt(expiryChoice, 10);
77
+ }
78
+ }
79
+ else if (options.expires) {
80
+ expiresInDays = parseInt(options.expires, 10);
81
+ }
82
+ if (!options.yes && !options.name) {
83
+ const confirmed = await confirm({
84
+ message: `Create API key "${name}" with scopes [${scopes?.join(', ')}]?`,
85
+ default: true,
86
+ });
87
+ if (!confirmed) {
88
+ logger.info('Cancelled');
89
+ return;
90
+ }
91
+ }
92
+ const spinner = logger.spinner('Creating API key...');
93
+ const result = await api.createApiKey(name, scopes || ['read', 'write'], expiresInDays);
94
+ if (result.error) {
95
+ spinner.fail('Failed to create API key');
96
+ logger.error(result.error);
97
+ return;
98
+ }
99
+ spinner.succeed('API key created');
100
+ if (options.json) {
101
+ console.log(JSON.stringify(result.data, null, 2));
102
+ return;
103
+ }
104
+ const key = result.data;
105
+ if (key) {
106
+ logger.log('');
107
+ logger.box('API Key Created', [
108
+ `Name: ${key.apiKey.name}`,
109
+ `Scopes: ${key.apiKey.scopes.join(', ')}`,
110
+ ``,
111
+ logger.yellow('Your API key (save this - it will not be shown again):'),
112
+ ``,
113
+ logger.bold(key.key),
114
+ ].join('\n'));
115
+ logger.log('');
116
+ logger.warn('Store this key securely. You won\'t be able to see it again.');
117
+ }
118
+ }
119
+ export async function apiKeysRevokeCommand(keyId, options) {
120
+ requireAuth();
121
+ if (!options.yes) {
122
+ const confirmed = await confirm({
123
+ message: `Are you sure you want to revoke API key ${keyId}? This cannot be undone.`,
124
+ default: false,
125
+ });
126
+ if (!confirmed) {
127
+ logger.info('Cancelled');
128
+ return;
129
+ }
130
+ }
131
+ const spinner = logger.spinner('Revoking API key...');
132
+ const result = await api.revokeApiKey(keyId);
133
+ if (result.error) {
134
+ spinner.fail('Failed to revoke API key');
135
+ logger.error(result.error);
136
+ return;
137
+ }
138
+ spinner.succeed('API key revoked');
139
+ if (options.json) {
140
+ console.log(JSON.stringify({ success: true, keyId }, null, 2));
141
+ }
142
+ }
143
+ //# sourceMappingURL=api-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-keys.js","sourceRoot":"","sources":["../../src/commands/api-keys.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function dashboardCommand(): Promise<void>;
2
+ export declare function tunnelMonitorCommand(tunnelId: string, port: string): Promise<void>;
3
+ //# sourceMappingURL=dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAGA,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAStD;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAef"}
@@ -0,0 +1,26 @@
1
+ import * as config from '../lib/config.js';
2
+ import * as logger from '../lib/logger.js';
3
+ export async function dashboardCommand() {
4
+ if (!config.isAuthenticated()) {
5
+ logger.error('Not logged in. Run "hookbase login" first.');
6
+ process.exit(1);
7
+ }
8
+ // Dynamic import to avoid loading React when not needed
9
+ const { runApp } = await import('../tui/App.js');
10
+ await runApp();
11
+ }
12
+ export async function tunnelMonitorCommand(tunnelId, port) {
13
+ if (!config.isAuthenticated()) {
14
+ logger.error('Not logged in. Run "hookbase login" first.');
15
+ process.exit(1);
16
+ }
17
+ const localPort = parseInt(port, 10);
18
+ if (isNaN(localPort) || localPort < 1 || localPort > 65535) {
19
+ logger.error('Invalid port number');
20
+ process.exit(1);
21
+ }
22
+ // Dynamic import to avoid loading React when not needed
23
+ const { runTunnelMonitor } = await import('../tui/TunnelMonitor.js');
24
+ await runTunnelMonitor(tunnelId, localPort);
25
+ }
26
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,wDAAwD;IACxD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACjD,MAAM,MAAM,EAAE,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAAgB,EAChB,IAAY;IAEZ,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,KAAK,EAAE,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,wDAAwD;IACxD,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACrE,MAAM,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,22 @@
1
+ export declare function deliveriesListCommand(options: {
2
+ limit?: string;
3
+ event?: string;
4
+ route?: string;
5
+ destination?: string;
6
+ status?: string;
7
+ json?: boolean;
8
+ }): Promise<void>;
9
+ export declare function deliveriesGetCommand(deliveryId: string, options: {
10
+ json?: boolean;
11
+ }): Promise<void>;
12
+ export declare function deliveriesReplayCommand(deliveryId: string, options: {
13
+ yes?: boolean;
14
+ json?: boolean;
15
+ }): Promise<void>;
16
+ export declare function deliveriesBulkReplayCommand(options: {
17
+ status?: string;
18
+ limit?: string;
19
+ yes?: boolean;
20
+ json?: boolean;
21
+ }): Promise<void>;
22
+ //# sourceMappingURL=deliveries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deliveries.d.ts","sourceRoot":"","sources":["../../src/commands/deliveries.ts"],"names":[],"mappings":"AAiCA,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+ChB;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1B,OAAO,CAAC,IAAI,CAAC,CAyEf;AAED,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GACzC,OAAO,CAAC,IAAI,CAAC,CAoCf;AAED,wBAAsB,2BAA2B,CAAC,OAAO,EAAE;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4EhB"}
@@ -0,0 +1,223 @@
1
+ import { confirm, checkbox } from '@inquirer/prompts';
2
+ import * as api from '../lib/api.js';
3
+ import * as config from '../lib/config.js';
4
+ import * as logger from '../lib/logger.js';
5
+ function requireAuth() {
6
+ if (!config.isAuthenticated()) {
7
+ logger.error('Not logged in. Run "hookbase login" first.');
8
+ process.exit(1);
9
+ }
10
+ return true;
11
+ }
12
+ function formatDate(dateStr) {
13
+ const date = new Date(dateStr);
14
+ return date.toLocaleString();
15
+ }
16
+ function formatStatus(status) {
17
+ switch (status) {
18
+ case 'success':
19
+ return logger.green('success');
20
+ case 'failed':
21
+ return logger.red('failed');
22
+ case 'pending':
23
+ return logger.yellow('pending');
24
+ case 'retrying':
25
+ return logger.yellow('retrying');
26
+ default:
27
+ return logger.dimText(status);
28
+ }
29
+ }
30
+ export async function deliveriesListCommand(options) {
31
+ requireAuth();
32
+ const spinner = logger.spinner('Fetching deliveries...');
33
+ const result = await api.getDeliveries({
34
+ limit: options.limit ? parseInt(options.limit, 10) : 50,
35
+ eventId: options.event,
36
+ routeId: options.route,
37
+ destinationId: options.destination,
38
+ status: options.status,
39
+ });
40
+ if (result.error) {
41
+ spinner.fail('Failed to fetch deliveries');
42
+ logger.error(result.error);
43
+ return;
44
+ }
45
+ spinner.stop();
46
+ const deliveries = result.data?.deliveries || [];
47
+ if (options.json) {
48
+ console.log(JSON.stringify(deliveries, null, 2));
49
+ return;
50
+ }
51
+ if (deliveries.length === 0) {
52
+ logger.info('No deliveries found');
53
+ return;
54
+ }
55
+ logger.table(['ID', 'Destination', 'Status', 'Response', 'Attempts', 'Time', 'Created'], deliveries.map(d => [
56
+ d.id.slice(0, 8) + '...',
57
+ d.destination_name || d.destination_id.slice(0, 8) + '...',
58
+ formatStatus(d.status),
59
+ d.response_status ? String(d.response_status) : '-',
60
+ `${d.attempt_count}/${d.max_attempts}`,
61
+ d.response_time_ms ? `${d.response_time_ms}ms` : '-',
62
+ formatDate(d.created_at),
63
+ ]));
64
+ logger.log('');
65
+ logger.dim(`Showing ${deliveries.length} of ${result.data?.total || deliveries.length} deliveries`);
66
+ }
67
+ export async function deliveriesGetCommand(deliveryId, options) {
68
+ requireAuth();
69
+ const spinner = logger.spinner('Fetching delivery...');
70
+ const result = await api.getDelivery(deliveryId);
71
+ if (result.error) {
72
+ spinner.fail('Failed to fetch delivery');
73
+ logger.error(result.error);
74
+ return;
75
+ }
76
+ spinner.stop();
77
+ const delivery = result.data?.delivery;
78
+ if (options.json) {
79
+ console.log(JSON.stringify(delivery, null, 2));
80
+ return;
81
+ }
82
+ if (!delivery) {
83
+ logger.error('Delivery not found');
84
+ return;
85
+ }
86
+ logger.log('');
87
+ logger.log(logger.bold('Delivery Details'));
88
+ logger.log('');
89
+ logger.log(`ID: ${delivery.id}`);
90
+ logger.log(`Event: ${delivery.event_id}`);
91
+ logger.log(`Route: ${delivery.route_name || delivery.route_id}`);
92
+ logger.log(`Destination: ${delivery.destination_name || delivery.destination_id}`);
93
+ logger.log(`Status: ${formatStatus(delivery.status)}`);
94
+ logger.log(`Attempts: ${delivery.attempt_count} of ${delivery.max_attempts}`);
95
+ if (delivery.response_status) {
96
+ const statusColor = delivery.response_status >= 200 && delivery.response_status < 300
97
+ ? logger.green
98
+ : delivery.response_status >= 400
99
+ ? logger.red
100
+ : logger.yellow;
101
+ logger.log(`Response: ${statusColor(String(delivery.response_status))}`);
102
+ }
103
+ if (delivery.response_time_ms) {
104
+ logger.log(`Response Time: ${delivery.response_time_ms}ms`);
105
+ }
106
+ if (delivery.error_message) {
107
+ logger.log(`Error: ${logger.red(delivery.error_message)}`);
108
+ }
109
+ if (delivery.next_retry_at) {
110
+ logger.log(`Next Retry: ${formatDate(delivery.next_retry_at)}`);
111
+ }
112
+ logger.log(`Created: ${formatDate(delivery.created_at)}`);
113
+ if (delivery.completed_at) {
114
+ logger.log(`Completed: ${formatDate(delivery.completed_at)}`);
115
+ }
116
+ if (delivery.response_body) {
117
+ logger.log('');
118
+ logger.log(logger.bold('Response Body:'));
119
+ try {
120
+ const parsed = JSON.parse(delivery.response_body);
121
+ logger.log(JSON.stringify(parsed, null, 2));
122
+ }
123
+ catch {
124
+ logger.log(delivery.response_body);
125
+ }
126
+ }
127
+ }
128
+ export async function deliveriesReplayCommand(deliveryId, options) {
129
+ requireAuth();
130
+ if (!options.yes) {
131
+ const confirmed = await confirm({
132
+ message: `Replay delivery ${deliveryId}?`,
133
+ default: true,
134
+ });
135
+ if (!confirmed) {
136
+ logger.info('Cancelled');
137
+ return;
138
+ }
139
+ }
140
+ const spinner = logger.spinner('Replaying delivery...');
141
+ const result = await api.replayDelivery(deliveryId);
142
+ if (result.error) {
143
+ spinner.fail('Failed to replay delivery');
144
+ logger.error(result.error);
145
+ return;
146
+ }
147
+ spinner.succeed('Delivery replayed');
148
+ if (options.json) {
149
+ console.log(JSON.stringify(result.data?.delivery, null, 2));
150
+ return;
151
+ }
152
+ const delivery = result.data?.delivery;
153
+ if (delivery) {
154
+ logger.log('');
155
+ logger.log(`New delivery ID: ${delivery.id}`);
156
+ logger.log(`Status: ${formatStatus(delivery.status)}`);
157
+ }
158
+ }
159
+ export async function deliveriesBulkReplayCommand(options) {
160
+ requireAuth();
161
+ // First fetch failed deliveries
162
+ const spinner = logger.spinner('Fetching failed deliveries...');
163
+ const listResult = await api.getDeliveries({
164
+ status: options.status || 'failed',
165
+ limit: options.limit ? parseInt(options.limit, 10) : 50,
166
+ });
167
+ if (listResult.error) {
168
+ spinner.fail('Failed to fetch deliveries');
169
+ logger.error(listResult.error);
170
+ return;
171
+ }
172
+ spinner.stop();
173
+ const deliveries = listResult.data?.deliveries || [];
174
+ if (deliveries.length === 0) {
175
+ logger.info('No failed deliveries found');
176
+ return;
177
+ }
178
+ // Interactive selection
179
+ let selectedIds;
180
+ if (options.yes) {
181
+ selectedIds = deliveries.map(d => d.id);
182
+ }
183
+ else {
184
+ selectedIds = await checkbox({
185
+ message: 'Select deliveries to replay:',
186
+ choices: deliveries.map(d => ({
187
+ name: `${d.id.slice(0, 8)}... - ${d.destination_name || d.destination_id.slice(0, 8)} - ${d.error_message || 'Failed'}`,
188
+ value: d.id,
189
+ checked: true,
190
+ })),
191
+ });
192
+ if (selectedIds.length === 0) {
193
+ logger.info('No deliveries selected');
194
+ return;
195
+ }
196
+ const confirmed = await confirm({
197
+ message: `Replay ${selectedIds.length} deliveries?`,
198
+ default: true,
199
+ });
200
+ if (!confirmed) {
201
+ logger.info('Cancelled');
202
+ return;
203
+ }
204
+ }
205
+ const replaySpinner = logger.spinner(`Replaying ${selectedIds.length} deliveries...`);
206
+ const result = await api.bulkReplayDeliveries(selectedIds);
207
+ if (result.error) {
208
+ replaySpinner.fail('Failed to replay deliveries');
209
+ logger.error(result.error);
210
+ return;
211
+ }
212
+ replaySpinner.succeed('Bulk replay completed');
213
+ if (options.json) {
214
+ console.log(JSON.stringify(result.data, null, 2));
215
+ return;
216
+ }
217
+ logger.log('');
218
+ logger.log(`Replayed: ${logger.green(String(result.data?.replayed || 0))}`);
219
+ if (result.data?.failed) {
220
+ logger.log(`Failed: ${logger.red(String(result.data.failed))}`);
221
+ }
222
+ }
223
+ //# sourceMappingURL=deliveries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deliveries.js","sourceRoot":"","sources":["../../src/commands/deliveries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export declare function destinationsListCommand(options: {
2
+ json?: boolean;
3
+ }): Promise<void>;
4
+ export declare function destinationsCreateCommand(options: {
5
+ name?: string;
6
+ url?: string;
7
+ method?: string;
8
+ yes?: boolean;
9
+ json?: boolean;
10
+ }): Promise<void>;
11
+ export declare function destinationsGetCommand(destId: string, options: {
12
+ json?: boolean;
13
+ }): Promise<void>;
14
+ export declare function destinationsUpdateCommand(destId: string, options: {
15
+ name?: string;
16
+ url?: string;
17
+ method?: string;
18
+ active?: boolean;
19
+ inactive?: boolean;
20
+ json?: boolean;
21
+ }): Promise<void>;
22
+ export declare function destinationsDeleteCommand(destId: string, options: {
23
+ yes?: boolean;
24
+ json?: boolean;
25
+ }): Promise<void>;
26
+ export declare function destinationsTestCommand(destId: string, options: {
27
+ json?: boolean;
28
+ }): Promise<void>;
29
+ //# sourceMappingURL=destinations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destinations.d.ts","sourceRoot":"","sources":["../../src/commands/destinations.ts"],"names":[],"mappings":"AAaA,wBAAsB,uBAAuB,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCxF;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8EhB;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1B,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GACA,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GACzC,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1B,OAAO,CAAC,IAAI,CAAC,CAiCf"}