agenticpool 1.0.18 → 2.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 (132) hide show
  1. package/README.md +68 -118
  2. package/bin/agenticpool.js +6 -0
  3. package/dist/adapters/autogen.d.ts +33 -0
  4. package/dist/adapters/autogen.d.ts.map +1 -0
  5. package/dist/adapters/autogen.js +49 -0
  6. package/dist/adapters/autogen.js.map +1 -0
  7. package/dist/adapters/crewai.d.ts +30 -0
  8. package/dist/adapters/crewai.d.ts.map +1 -0
  9. package/dist/adapters/crewai.js +48 -0
  10. package/dist/adapters/crewai.js.map +1 -0
  11. package/dist/adapters/langchain.d.ts +30 -0
  12. package/dist/adapters/langchain.d.ts.map +1 -0
  13. package/dist/adapters/langchain.js +53 -0
  14. package/dist/adapters/langchain.js.map +1 -0
  15. package/dist/adapters/llamaindex.d.ts +29 -0
  16. package/dist/adapters/llamaindex.d.ts.map +1 -0
  17. package/dist/adapters/llamaindex.js +47 -0
  18. package/dist/adapters/llamaindex.js.map +1 -0
  19. package/dist/adapters/openai.d.ts +21 -0
  20. package/dist/adapters/openai.d.ts.map +1 -0
  21. package/dist/adapters/openai.js +51 -0
  22. package/dist/adapters/openai.js.map +1 -0
  23. package/dist/cli.d.ts +3 -0
  24. package/dist/cli.d.ts.map +1 -0
  25. package/dist/cli.js +187 -0
  26. package/dist/cli.js.map +1 -0
  27. package/dist/client.d.ts +115 -0
  28. package/dist/client.d.ts.map +1 -0
  29. package/dist/client.js +251 -0
  30. package/dist/client.js.map +1 -0
  31. package/dist/commands/balance.d.ts +4 -0
  32. package/dist/commands/balance.d.ts.map +1 -0
  33. package/dist/commands/balance.js +34 -0
  34. package/dist/commands/balance.js.map +1 -0
  35. package/dist/commands/contract.d.ts +20 -0
  36. package/dist/commands/contract.d.ts.map +1 -0
  37. package/dist/commands/contract.js +188 -0
  38. package/dist/commands/contract.js.map +1 -0
  39. package/dist/commands/favor.d.ts +21 -0
  40. package/dist/commands/favor.d.ts.map +1 -0
  41. package/dist/commands/favor.js +144 -0
  42. package/dist/commands/favor.js.map +1 -0
  43. package/dist/commands/init.d.ts +5 -0
  44. package/dist/commands/init.d.ts.map +1 -0
  45. package/dist/commands/init.js +77 -0
  46. package/dist/commands/init.js.map +1 -0
  47. package/dist/commands/reputation.d.ts +2 -0
  48. package/dist/commands/reputation.d.ts.map +1 -0
  49. package/dist/commands/reputation.js +38 -0
  50. package/dist/commands/reputation.js.map +1 -0
  51. package/dist/commands/serve.d.ts +7 -0
  52. package/dist/commands/serve.d.ts.map +1 -0
  53. package/dist/commands/serve.js +110 -0
  54. package/dist/commands/serve.js.map +1 -0
  55. package/dist/commands/services.d.ts +16 -0
  56. package/dist/commands/services.d.ts.map +1 -0
  57. package/dist/commands/services.js +93 -0
  58. package/dist/commands/services.js.map +1 -0
  59. package/dist/commands/trust.d.ts +2 -0
  60. package/dist/commands/trust.d.ts.map +1 -0
  61. package/dist/commands/trust.js +44 -0
  62. package/dist/commands/trust.js.map +1 -0
  63. package/dist/commands/whoami.d.ts +2 -0
  64. package/dist/commands/whoami.d.ts.map +1 -0
  65. package/dist/commands/whoami.js +32 -0
  66. package/dist/commands/whoami.js.map +1 -0
  67. package/dist/config.d.ts +30 -0
  68. package/dist/config.d.ts.map +1 -0
  69. package/dist/config.js +72 -0
  70. package/dist/config.js.map +1 -0
  71. package/dist/economy/duckies.d.ts +75 -0
  72. package/dist/economy/duckies.d.ts.map +1 -0
  73. package/dist/economy/duckies.js +386 -0
  74. package/dist/economy/duckies.js.map +1 -0
  75. package/dist/index.d.ts +12 -2
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +12 -29
  78. package/dist/index.js.map +1 -0
  79. package/dist/types.d.ts +90 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +5 -0
  82. package/dist/types.js.map +1 -0
  83. package/package.json +28 -38
  84. package/LICENSE +0 -1
  85. package/dist/api/ApiClient.d.ts +0 -37
  86. package/dist/api/ApiClient.js +0 -160
  87. package/dist/api/index.d.ts +0 -1
  88. package/dist/api/index.js +0 -6
  89. package/dist/auth/AuthHelper.d.ts +0 -17
  90. package/dist/auth/AuthHelper.js +0 -197
  91. package/dist/commands/auth.d.ts +0 -2
  92. package/dist/commands/auth.js +0 -206
  93. package/dist/commands/config.d.ts +0 -2
  94. package/dist/commands/config.js +0 -51
  95. package/dist/commands/connections.d.ts +0 -2
  96. package/dist/commands/connections.js +0 -244
  97. package/dist/commands/contacts.d.ts +0 -2
  98. package/dist/commands/contacts.js +0 -205
  99. package/dist/commands/conversations.d.ts +0 -2
  100. package/dist/commands/conversations.js +0 -251
  101. package/dist/commands/errors.d.ts +0 -2
  102. package/dist/commands/errors.js +0 -73
  103. package/dist/commands/humans.d.ts +0 -2
  104. package/dist/commands/humans.js +0 -161
  105. package/dist/commands/identities.d.ts +0 -2
  106. package/dist/commands/identities.js +0 -141
  107. package/dist/commands/index.d.ts +0 -11
  108. package/dist/commands/index.js +0 -26
  109. package/dist/commands/messages.d.ts +0 -2
  110. package/dist/commands/messages.js +0 -154
  111. package/dist/commands/networks.d.ts +0 -2
  112. package/dist/commands/networks.js +0 -430
  113. package/dist/commands/profile.d.ts +0 -2
  114. package/dist/commands/profile.js +0 -225
  115. package/dist/config/ConfigManager.d.ts +0 -47
  116. package/dist/config/ConfigManager.js +0 -234
  117. package/dist/config/index.d.ts +0 -1
  118. package/dist/config/index.js +0 -7
  119. package/dist/datamodel/index.d.ts +0 -3
  120. package/dist/datamodel/index.js +0 -20
  121. package/dist/datamodel/models/humans.d.ts +0 -81
  122. package/dist/datamodel/models/humans.js +0 -3
  123. package/dist/datamodel/models/index.d.ts +0 -110
  124. package/dist/datamodel/models/index.js +0 -3
  125. package/dist/datamodel/toon/index.d.ts +0 -5
  126. package/dist/datamodel/toon/index.js +0 -211
  127. package/dist/limits/LimitsManager.d.ts +0 -23
  128. package/dist/limits/LimitsManager.js +0 -99
  129. package/dist/utils/colors.d.ts +0 -16
  130. package/dist/utils/colors.js +0 -23
  131. package/dist/utils/logger.d.ts +0 -11
  132. package/dist/utils/logger.js +0 -34
@@ -1,154 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.registerMessageCommands = registerMessageCommands;
7
- const AuthHelper_1 = require("../auth/AuthHelper");
8
- const datamodel_1 = require("../datamodel");
9
- const logger_1 = require("../utils/logger");
10
- const colors_1 = __importDefault(require("../utils/colors"));
11
- const cli_table3_1 = __importDefault(require("cli-table3"));
12
- function registerMessageCommands(program) {
13
- const messages = program.command('messages').description('Message commands');
14
- messages
15
- .command('send')
16
- .description('Send a message to a conversation')
17
- .requiredOption('-n, --network <id>', 'Network ID')
18
- .requiredOption('-c, --conversation <id>', 'Conversation ID')
19
- .requiredOption('-m, --message <text>', 'Message content')
20
- .option('-r, --reply-to <id>', 'Message ID to reply to')
21
- .option('--context <count>', 'Fetch recent messages before sending for context', '0')
22
- .option('--format <format>', 'Output format: toon, json, human', 'toon')
23
- .option('--human', 'Shortcut for --format human')
24
- .action(async (options) => {
25
- try {
26
- const format = options.human ? 'human' : options.format;
27
- const { client } = await AuthHelper_1.AuthHelper.ensureAuthenticated(options.network);
28
- const contextCount = parseInt(options.context, 10);
29
- if (contextCount > 0) {
30
- const contextRes = await client.get(`/v1/conversations/${options.network}/${options.conversation}/messages`, { limit: String(contextCount) });
31
- if (contextRes.success && contextRes.data && contextRes.data.length > 0) {
32
- if (format === 'human') {
33
- console.log(colors_1.default.cyan.bold(`\n--- Recent Context (${contextRes.data.length} messages) ---\n`));
34
- contextRes.data.forEach((msg) => {
35
- const sender = msg.senderId || 'system';
36
- const preview = msg.content.length > 120 ? msg.content.slice(0, 120) + '...' : msg.content;
37
- console.log(colors_1.default.gray(`[${sender}]`), preview);
38
- });
39
- console.log(colors_1.default.cyan.bold('\n--- Sending ---\n'));
40
- }
41
- else if (format === 'json') {
42
- console.log(JSON.stringify({ context: contextRes.data }, null, 2));
43
- }
44
- else {
45
- console.log((0, datamodel_1.encode)({ context: contextRes.data }));
46
- }
47
- }
48
- }
49
- const response = await client.post(`/v1/conversations/${options.network}/${options.conversation}/messages`, {
50
- content: options.message,
51
- replyTo: options.replyTo
52
- });
53
- if (response.success && response.data) {
54
- if (format === 'json') {
55
- console.log(JSON.stringify(response.data, null, 2));
56
- }
57
- else if (format === 'human') {
58
- logger_1.logger.success('✓ Message sent!');
59
- }
60
- else {
61
- console.log((0, datamodel_1.encode)(response.data));
62
- }
63
- }
64
- else {
65
- logger_1.logger.error('Error:', response.error?.message || 'Failed to send message');
66
- }
67
- }
68
- catch (error) {
69
- logger_1.logger.error('Error:', error instanceof Error ? error.message : 'Unknown error');
70
- }
71
- });
72
- messages
73
- .command('list')
74
- .description('List messages in a conversation')
75
- .requiredOption('-n, --network <id>', 'Network ID')
76
- .requiredOption('-c, --conversation <id>', 'Conversation ID')
77
- .option('-l, --limit <number>', 'Number of messages to retrieve', '50')
78
- .option('--format <format>', 'Output format: toon, json, human', 'toon')
79
- .option('--human', 'Shortcut for --format human')
80
- .action(async (options) => {
81
- try {
82
- const format = options.human ? 'human' : options.format;
83
- const { client } = await AuthHelper_1.AuthHelper.ensureAuthenticated(options.network);
84
- const response = await client.get(`/v1/conversations/${options.network}/${options.conversation}/messages`, {
85
- limit: options.limit
86
- });
87
- if (response.success && response.data) {
88
- if (format === 'json') {
89
- console.log(JSON.stringify(response.data, null, 2));
90
- }
91
- else if (format === 'human') {
92
- if (response.data.length === 0) {
93
- logger_1.logger.warn('No messages found.');
94
- return;
95
- }
96
- const table = new cli_table3_1.default({
97
- head: [colors_1.default.cyan('ID'), colors_1.default.cyan('From'), colors_1.default.cyan('Reply To'), colors_1.default.cyan('Message'), colors_1.default.cyan('Time')],
98
- colWidths: [20, 20, 20, 40, 25],
99
- wordWrap: true
100
- });
101
- response.data.forEach(msg => {
102
- let dateStr = 'Invalid Date';
103
- if (msg.createdAt) {
104
- if (msg.createdAt._seconds) {
105
- dateStr = new Date(msg.createdAt._seconds * 1000).toLocaleString();
106
- }
107
- else if (typeof msg.createdAt === 'string') {
108
- if (msg.createdAt.startsWith('_seconds:')) {
109
- dateStr = new Date(parseInt(msg.createdAt.split(':')[1]) * 1000).toLocaleString();
110
- }
111
- else {
112
- dateStr = new Date(msg.createdAt).toLocaleString();
113
- }
114
- }
115
- }
116
- table.push([msg.id, msg.senderId || 'system', msg.replyTo || '-', msg.content, dateStr]);
117
- });
118
- console.log(table.toString());
119
- }
120
- else {
121
- console.log((0, datamodel_1.encode)(response.data));
122
- }
123
- }
124
- else {
125
- logger_1.logger.error('Error:', response.error?.message || 'Failed to list messages');
126
- }
127
- }
128
- catch (error) {
129
- logger_1.logger.error('Error:', error instanceof Error ? error.message : 'Unknown error');
130
- }
131
- });
132
- messages
133
- .command('delete')
134
- .description('Delete a message (only if you are the sender)')
135
- .requiredOption('-n, --network <id>', 'Network ID')
136
- .requiredOption('-c, --conversation <id>', 'Conversation ID')
137
- .requiredOption('-m, --message <id>', 'Message ID')
138
- .action(async (options) => {
139
- try {
140
- const { client } = await AuthHelper_1.AuthHelper.ensureAuthenticated(options.network);
141
- const response = await client.delete(`/v1/conversations/${options.network}/${options.conversation}/messages/${options.message}`);
142
- if (response.success) {
143
- logger_1.logger.success('✓ Message deleted!');
144
- }
145
- else {
146
- logger_1.logger.error('Error:', response.error?.message || 'Failed to delete message');
147
- }
148
- }
149
- catch (error) {
150
- logger_1.logger.error('Error:', error instanceof Error ? error.message : 'Unknown error');
151
- }
152
- });
153
- }
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvbWVzc2FnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFTQSwwREE2SUM7QUFuSkQsbURBQWdEO0FBQ2hELDRDQUFzQztBQUN0Qyw0Q0FBeUM7QUFDekMsNkRBQW9DO0FBQ3BDLDREQUErQjtBQUUvQixTQUFnQix1QkFBdUIsQ0FBQyxPQUFnQjtJQUN0RCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRTdFLFFBQVE7U0FDTCxPQUFPLENBQUMsTUFBTSxDQUFDO1NBQ2YsV0FBVyxDQUFDLGtDQUFrQyxDQUFDO1NBQy9DLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxZQUFZLENBQUM7U0FDbEQsY0FBYyxDQUFDLHlCQUF5QixFQUFFLGlCQUFpQixDQUFDO1NBQzVELGNBQWMsQ0FBQyxzQkFBc0IsRUFBRSxpQkFBaUIsQ0FBQztTQUN6RCxNQUFNLENBQUMscUJBQXFCLEVBQUUsd0JBQXdCLENBQUM7U0FDdkQsTUFBTSxDQUFDLG1CQUFtQixFQUFFLGtEQUFrRCxFQUFFLEdBQUcsQ0FBQztTQUNwRixNQUFNLENBQUMsbUJBQW1CLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxDQUFDO1NBQ3ZFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsNkJBQTZCLENBQUM7U0FDaEQsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN4QixJQUFJLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDeEQsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sdUJBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENB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QUFDO1lBQ2hGLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLGVBQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25GLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IEFwaUNsaWVudCB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQgeyBjb25maWdNYW5hZ2VyIH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7IEF1dGhIZWxwZXIgfSBmcm9tICcuLi9hdXRoL0F1dGhIZWxwZXInO1xuaW1wb3J0IHsgZW5jb2RlIH0gZnJvbSAnLi4vZGF0YW1vZGVsJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlcic7XG5pbXBvcnQgY2hhbGsgZnJvbSAnLi4vdXRpbHMvY29sb3JzJztcbmltcG9ydCBUYWJsZSBmcm9tICdjbGktdGFibGUzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyTWVzc2FnZUNvbW1hbmRzKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgY29uc3QgbWVzc2FnZXMgPSBwcm9ncmFtLmNvbW1hbmQoJ21lc3NhZ2VzJykuZGVzY3JpcHRpb24oJ01lc3NhZ2UgY29tbWFuZHMnKTtcblxuICBtZXNzYWdlc1xuICAgIC5jb21tYW5kKCdzZW5kJylcbiAgICAuZGVzY3JpcHRpb24oJ1NlbmQgYSBtZXNzYWdlIHRvIGEgY29udmVyc2F0aW9uJylcbiAgICAucmVxdWlyZWRPcHRpb24oJy1uLCAtLW5ldHdvcmsgPGlkPicsICdOZXR3b3JrIElEJylcbiAgICAucmVxdWlyZWRPcHRpb24oJy1jLCAtLWNvbnZlcnNhdGlvbiA8aWQ+JywgJ0NvbnZlcnNhdGlvbiBJRCcpXG4gICAgLnJlcXVpcmVkT3B0aW9uKCctbSwgLS1tZXNzYWdlIDx0ZXh0PicsICdNZXNzYWdlIGNvbnRlbnQnKVxuICAgIC5vcHRpb24oJy1yLCAtLXJlcGx5LXRvIDxpZD4nLCAnTWVzc2FnZSBJRCB0byByZXBseSB0bycpXG4gICAgLm9wdGlvbignLS1jb250ZXh0IDxjb3VudD4nLCAnRmV0Y2ggcmVjZW50IG1lc3NhZ2VzIGJlZm9yZSBzZW5kaW5nIGZvciBjb250ZXh0JywgJzAnKVxuICAgIC5vcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQ6IHRvb24sIGpzb24sIGh1bWFuJywgJ3Rvb24nKVxuICAgIC5vcHRpb24oJy0taHVtYW4nLCAnU2hvcnRjdXQgZm9yIC0tZm9ybWF0IGh1bWFuJylcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBvcHRpb25zLmh1bWFuID8gJ2h1bWFuJyA6IG9wdGlvbnMuZm9ybWF0O1xuICAgICAgICBjb25zdCB7IGNsaWVudCB9ID0gYXdhaXQgQXV0aEhlbHBlci5lbnN1cmVBdXRoZW50aWNhdGVkKG9wdGlvbnMubmV0d29yayk7XG5cbiAgICAgICAgY29uc3QgY29udGV4dENvdW50ID0gcGFyc2VJbnQob3B0aW9ucy5jb250ZXh0LCAxMCk7XG4gICAgICAgIGlmIChjb250ZXh0Q291bnQgPiAwKSB7XG4gICAgICAgICAgY29uc3QgY29udGV4dFJlcyA9IGF3YWl0IGNsaWVudC5nZXQ8YW55W10+KFxuICAgICAgICAgICAgYC92MS9jb252ZXJzYXRpb25zLyR7b3B0aW9ucy5uZXR3b3JrfS8ke29wdGlvbnMuY29udmVyc2F0aW9ufS9tZXNzYWdlc2AsXG4gICAgICAgICAgICB7IGxpbWl0OiBTdHJpbmcoY29udGV4dENvdW50KSB9XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChjb250ZXh0UmVzLnN1Y2Nlc3MgJiYgY29udGV4dFJlcy5kYXRhICYmIGNvbnRleHRSZXMuZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnaHVtYW4nKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4uYm9sZChgXFxuLS0tIFJlY2VudCBDb250ZXh0ICgke2NvbnRleHRSZXMuZGF0YS5sZW5ndGh9IG1lc3NhZ2VzKSAtLS1cXG5gKSk7XG4gICAgICAgICAgICAgIGNvbnRleHRSZXMuZGF0YS5mb3JFYWNoKChtc2c6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbmRlciA9IG1zZy5zZW5kZXJJZCB8fCAnc3lzdGVtJztcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aWV3ID0gbXNnLmNvbnRlbnQubGVuZ3RoID4gMTIwID8gbXNnLmNvbnRlbnQuc2xpY2UoMCwgMTIwKSArICcuLi4nIDogbXNnLmNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheShgWyR7c2VuZGVyfV1gKSwgcHJldmlldyk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5jeWFuLmJvbGQoJ1xcbi0tLSBTZW5kaW5nIC0tLVxcbicpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnanNvbicpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoeyBjb250ZXh0OiBjb250ZXh0UmVzLmRhdGEgfSwgbnVsbCwgMikpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coZW5jb2RlKHsgY29udGV4dDogY29udGV4dFJlcy5kYXRhIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0KGAvdjEvY29udmVyc2F0aW9ucy8ke29wdGlvbnMubmV0d29ya30vJHtvcHRpb25zLmNvbnZlcnNhdGlvbn0vbWVzc2FnZXNgLCB7XG4gICAgICAgICAgY29udGVudDogb3B0aW9ucy5tZXNzYWdlLFxuICAgICAgICAgIHJlcGx5VG86IG9wdGlvbnMucmVwbHlUb1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2pzb24nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXNwb25zZS5kYXRhLCBudWxsLCAyKSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdodW1hbicpIHtcbiAgICAgICAgICAgIGxvZ2dlci5zdWNjZXNzKCfinJMgTWVzc2FnZSBzZW50IScpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlbmNvZGUocmVzcG9uc2UuZGF0YSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yOicsIHJlc3BvbnNlLmVycm9yPy5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gc2VuZCBtZXNzYWdlJyk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcignRXJyb3I6JywgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIG1lc3NhZ2VzXG4gICAgLmNvbW1hbmQoJ2xpc3QnKVxuICAgIC5kZXNjcmlwdGlvbignTGlzdCBtZXNzYWdlcyBpbiBhIGNvbnZlcnNhdGlvbicpXG4gICAgLnJlcXVpcmVkT3B0aW9uKCctbiwgLS1uZXR3b3JrIDxpZD4nLCAnTmV0d29yayBJRCcpXG4gICAgLnJlcXVpcmVkT3B0aW9uKCctYywgLS1jb252ZXJzYXRpb24gPGlkPicsICdDb252ZXJzYXRpb24gSUQnKVxuICAgIC5vcHRpb24oJy1sLCAtLWxpbWl0IDxudW1iZXI+JywgJ051bWJlciBvZiBtZXNzYWdlcyB0byByZXRyaWV2ZScsICc1MCcpXG4gICAgLm9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdDogdG9vbiwganNvbiwgaHVtYW4nLCAndG9vbicpXG4gICAgLm9wdGlvbignLS1odW1hbicsICdTaG9ydGN1dCBmb3IgLS1mb3JtYXQgaHVtYW4nKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IG9wdGlvbnMuaHVtYW4gPyAnaHVtYW4nIDogb3B0aW9ucy5mb3JtYXQ7XG4gICAgICAgIGNvbnN0IHsgY2xpZW50IH0gPSBhd2FpdCBBdXRoSGVscGVyLmVuc3VyZUF1dGhlbnRpY2F0ZWQob3B0aW9ucy5uZXR3b3JrKTtcblxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8YW55W10+KGAvdjEvY29udmVyc2F0aW9ucy8ke29wdGlvbnMubmV0d29ya30vJHtvcHRpb25zLmNvbnZlcnNhdGlvbn0vbWVzc2FnZXNgLCB7XG4gICAgICAgICAgbGltaXQ6IG9wdGlvbnMubGltaXRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdqc29uJykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZGF0YSwgbnVsbCwgMikpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnaHVtYW4nKSB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ05vIG1lc3NhZ2VzIGZvdW5kLicpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0YWJsZSA9IG5ldyBUYWJsZSh7XG4gICAgICAgICAgICAgIGhlYWQ6IFtjaGFsay5jeWFuKCdJRCcpLCBjaGFsay5jeWFuKCdGcm9tJyksIGNoYWxrLmN5YW4oJ1JlcGx5IFRvJyksIGNoYWxrLmN5YW4oJ01lc3NhZ2UnKSwgY2hhbGsuY3lhbignVGltZScpXSxcbiAgICAgICAgICAgICAgY29sV2lkdGhzOiBbMjAsIDIwLCAyMCwgNDAsIDI1XSxcbiAgICAgICAgICAgICAgd29yZFdyYXA6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5mb3JFYWNoKG1zZyA9PiB7XG4gICAgICAgICAgICAgIGxldCBkYXRlU3RyID0gJ0ludmFsaWQgRGF0ZSc7XG4gICAgICAgICAgICAgIGlmIChtc2cuY3JlYXRlZEF0KSB7XG4gICAgICAgICAgICAgICAgaWYgKG1zZy5jcmVhdGVkQXQuX3NlY29uZHMpIHtcbiAgICAgICAgICAgICAgICAgIGRhdGVTdHIgPSBuZXcgRGF0ZShtc2cuY3JlYXRlZEF0Ll9zZWNvbmRzICogMTAwMCkudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBtc2cuY3JlYXRlZEF0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgaWYgKG1zZy5jcmVhdGVkQXQuc3RhcnRzV2l0aCgnX3NlY29uZHM6JykpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVN0ciA9IG5ldyBEYXRlKHBhcnNlSW50KG1zZy5jcmVhdGVkQXQuc3BsaXQoJzonKVsxXSkgKiAxMDAwKS50b0xvY2FsZVN0cmluZygpO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVN0ciA9IG5ldyBEYXRlKG1zZy5jcmVhdGVkQXQpLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRhYmxlLnB1c2goW21zZy5pZCwgbXNnLnNlbmRlcklkIHx8ICdzeXN0ZW0nLCBtc2cucmVwbHlUbyB8fCAnLScsIG1zZy5jb250ZW50LCBkYXRlU3RyXSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRhYmxlLnRvU3RyaW5nKCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlbmNvZGUocmVzcG9uc2UuZGF0YSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yOicsIHJlc3BvbnNlLmVycm9yPy5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gbGlzdCBtZXNzYWdlcycpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yOicsIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBtZXNzYWdlc1xuICAgIC5jb21tYW5kKCdkZWxldGUnKVxuICAgIC5kZXNjcmlwdGlvbignRGVsZXRlIGEgbWVzc2FnZSAob25seSBpZiB5b3UgYXJlIHRoZSBzZW5kZXIpJylcbiAgICAucmVxdWlyZWRPcHRpb24oJy1uLCAtLW5ldHdvcmsgPGlkPicsICdOZXR3b3JrIElEJylcbiAgICAucmVxdWlyZWRPcHRpb24oJy1jLCAtLWNvbnZlcnNhdGlvbiA8aWQ+JywgJ0NvbnZlcnNhdGlvbiBJRCcpXG4gICAgLnJlcXVpcmVkT3B0aW9uKCctbSwgLS1tZXNzYWdlIDxpZD4nLCAnTWVzc2FnZSBJRCcpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBjbGllbnQgfSA9IGF3YWl0IEF1dGhIZWxwZXIuZW5zdXJlQXV0aGVudGljYXRlZChvcHRpb25zLm5ldHdvcmspO1xuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmRlbGV0ZShgL3YxL2NvbnZlcnNhdGlvbnMvJHtvcHRpb25zLm5ldHdvcmt9LyR7b3B0aW9ucy5jb252ZXJzYXRpb259L21lc3NhZ2VzLyR7b3B0aW9ucy5tZXNzYWdlfWApO1xuXG4gICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgbG9nZ2VyLnN1Y2Nlc3MoJ+KckyBNZXNzYWdlIGRlbGV0ZWQhJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKCdFcnJvcjonLCByZXNwb25zZS5lcnJvcj8ubWVzc2FnZSB8fCAnRmFpbGVkIHRvIGRlbGV0ZSBtZXNzYWdlJyk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcignRXJyb3I6JywgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcicpO1xuICAgICAgfVxuICAgIH0pO1xufVxuIl19
@@ -1,2 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function registerNetworkCommands(program: Command): void;