agenticpool 1.0.3 → 1.0.5

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 (48) hide show
  1. package/LICENSE +1 -0
  2. package/dist/api/ApiClient.d.ts +24 -0
  3. package/dist/api/ApiClient.js +126 -0
  4. package/dist/api/index.d.ts +1 -0
  5. package/dist/api/index.js +6 -0
  6. package/dist/commands/identities.js +2 -2
  7. package/dist/commands/networks.js +4 -2
  8. package/dist/config/ConfigManager.d.ts +1 -0
  9. package/dist/config/ConfigManager.js +36 -15
  10. package/dist/datamodel/index.d.ts +3 -0
  11. package/dist/datamodel/index.js +20 -0
  12. package/dist/datamodel/models/humans.d.ts +81 -0
  13. package/dist/datamodel/models/humans.js +3 -0
  14. package/dist/datamodel/models/index.d.ts +109 -0
  15. package/dist/datamodel/models/index.js +3 -0
  16. package/dist/datamodel/toon/index.d.ts +5 -0
  17. package/dist/datamodel/toon/index.js +39 -0
  18. package/dist/index.js +3 -2
  19. package/package.json +6 -2
  20. package/AGENTS.md +0 -56
  21. package/agenticpool-cli-1.0.0.tgz +0 -0
  22. package/jest.config.js +0 -23
  23. package/src/auth/AuthHelper.ts +0 -138
  24. package/src/commands/auth.ts +0 -186
  25. package/src/commands/config.ts +0 -51
  26. package/src/commands/connections.ts +0 -261
  27. package/src/commands/contacts.ts +0 -221
  28. package/src/commands/conversations.ts +0 -218
  29. package/src/commands/humans.ts +0 -124
  30. package/src/commands/identities.ts +0 -143
  31. package/src/commands/index.ts +0 -10
  32. package/src/commands/messages.ts +0 -72
  33. package/src/commands/networks.ts +0 -320
  34. package/src/commands/profile.ts +0 -184
  35. package/src/config/ConfigManager.ts +0 -171
  36. package/src/config/index.ts +0 -1
  37. package/src/index.ts +0 -35
  38. package/src/limits/LimitsManager.ts +0 -76
  39. package/tests/ApiClient.test.ts +0 -99
  40. package/tests/ConfigManager.test.ts +0 -41
  41. package/tests/LimitsManager.test.ts +0 -169
  42. package/tests/__mocks__/@toon-format/toon.ts +0 -27
  43. package/tests/integration/cleanup.ts +0 -187
  44. package/tests/integration/e2e-cli.test.ts +0 -465
  45. package/tests/integration/e2e.test.ts +0 -480
  46. package/tests/integration/run-e2e.sh +0 -44
  47. package/tests/integration/setup.ts +0 -188
  48. package/tsconfig.json +0 -28
@@ -32,11 +32,15 @@ var __importStar = (this && this.__importStar) || (function () {
32
32
  return result;
33
33
  };
34
34
  })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
35
38
  Object.defineProperty(exports, "__esModule", { value: true });
36
39
  exports.configManager = exports.ConfigManager = void 0;
37
40
  const path = __importStar(require("path"));
38
41
  const os = __importStar(require("os"));
39
42
  const fs = __importStar(require("fs-extra"));
43
+ const chalk_1 = __importDefault(require("chalk"));
40
44
  const CONFIG_DIR = path.join(os.homedir(), '.agenticpool');
41
45
  const CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');
42
46
  const CREDENTIALS_DIR = path.join(CONFIG_DIR, 'credentials');
@@ -46,24 +50,41 @@ const NETWORKS_FILE = path.join(CONFIG_DIR, 'networks.md');
46
50
  class ConfigManager {
47
51
  constructor() {
48
52
  this.initialized = false;
53
+ this.initializing = false;
49
54
  }
50
55
  async init() {
51
- if (this.initialized)
56
+ if (this.initialized || this.initializing)
52
57
  return;
53
- await fs.ensureDir(CONFIG_DIR);
54
- await fs.ensureDir(CREDENTIALS_DIR);
55
- await fs.ensureDir(PROFILES_DIR);
56
- await fs.ensureDir(CACHE_DIR);
57
- if (!(await fs.pathExists(CONFIG_FILE))) {
58
- await this.saveGlobalConfig({
59
- apiUrl: 'https://api.agenticpool.net',
60
- defaultFormat: 'toon'
61
- });
58
+ this.initializing = true;
59
+ console.log(chalk_1.default.gray(`[DEBUG] Initializing ConfigManager. Path: ${CONFIG_DIR}`));
60
+ try {
61
+ await fs.ensureDir(CONFIG_DIR);
62
+ await fs.ensureDir(CREDENTIALS_DIR);
63
+ await fs.ensureDir(PROFILES_DIR);
64
+ await fs.ensureDir(CACHE_DIR);
65
+ if (!(await fs.pathExists(CONFIG_FILE))) {
66
+ console.log(chalk_1.default.gray('[DEBUG] Creating default config file'));
67
+ const defaultConfig = {
68
+ apiUrl: 'https://api.agenticpool.net',
69
+ defaultFormat: 'toon'
70
+ };
71
+ // Use fs directly to avoid recursion
72
+ await fs.writeJson(CONFIG_FILE, defaultConfig, { spaces: 2 });
73
+ }
74
+ if (!(await fs.pathExists(NETWORKS_FILE))) {
75
+ console.log(chalk_1.default.gray('[DEBUG] Creating default networks file'));
76
+ await fs.writeFile(NETWORKS_FILE, '# Registered AgenticPool Networks\n\n');
77
+ }
78
+ this.initialized = true;
79
+ console.log(chalk_1.default.gray('[DEBUG] ConfigManager initialized'));
62
80
  }
63
- if (!(await fs.pathExists(NETWORKS_FILE))) {
64
- await fs.writeFile(NETWORKS_FILE, '# Registered AgenticPool Networks\n\n');
81
+ catch (e) {
82
+ console.log(chalk_1.default.red(`[DEBUG] ConfigManager init failed: ${e instanceof Error ? e.message : 'Unknown'}`));
83
+ throw e;
84
+ }
85
+ finally {
86
+ this.initializing = false;
65
87
  }
66
- this.initialized = true;
67
88
  }
68
89
  async getGlobalConfig() {
69
90
  await this.init();
@@ -71,6 +92,7 @@ class ConfigManager {
71
92
  }
72
93
  async saveGlobalConfig(config) {
73
94
  await this.init();
95
+ console.log(chalk_1.default.gray('[DEBUG] Saving global config'));
74
96
  await fs.writeJson(CONFIG_FILE, config, { spaces: 2 });
75
97
  }
76
98
  async setApiUrl(url) {
@@ -101,7 +123,6 @@ class ConfigManager {
101
123
  const lines = content.split('\n');
102
124
  const entryPrefix = `- ${networkId}`;
103
125
  const fullEntry = `- ${networkId}${reason ? ` | Reason: ${reason}` : ''}`;
104
- // Check if network already exists, if so update the line
105
126
  const existingIndex = lines.findIndex(line => line.trim().startsWith(entryPrefix));
106
127
  if (existingIndex !== -1) {
107
128
  lines[existingIndex] = fullEntry;
@@ -160,4 +181,4 @@ class ConfigManager {
160
181
  }
161
182
  exports.ConfigManager = ConfigManager;
162
183
  exports.configManager = new ConfigManager();
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvQ29uZmlnTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IsdUNBQXlCO0FBQ3pCLDZDQUErQjtBQUcvQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQztBQUMzRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUN6RCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUM3RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN2RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNqRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQztBQWtCM0QsTUFBYSxhQUFhO0lBQTFCO1FBQ1UsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUEySTlCLENBQUM7SUF6SUMsS0FBSyxDQUFDLElBQUk7UUFDUixJQUFJLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTztRQUU3QixNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0IsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsU0FB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QztRQUVELE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBSSxHQUFXLEVBQUUsSUFBTztRQUNwQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDdEQsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVU7UUFDZCxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0NBQ0Y7QUE1SUQsc0NBNElDO0FBRVksUUFBQSxhQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgeyBBdXRoVG9rZW5zIH0gZnJvbSAnQGFnZW50aWNwb29sL2RhdGFtb2RlbCc7XG5cbmNvbnN0IENPTkZJR19ESVIgPSBwYXRoLmpvaW4ob3MuaG9tZWRpcigpLCAnLmFnZW50aWNwb29sJyk7XG5jb25zdCBDT05GSUdfRklMRSA9IHBhdGguam9pbihDT05GSUdfRElSLCAnY29uZmlnLmpzb24nKTtcbmNvbnN0IENSRURFTlRJQUxTX0RJUiA9IHBhdGguam9pbihDT05GSUdfRElSLCAnY3JlZGVudGlhbHMnKTtcbmNvbnN0IFBST0ZJTEVTX0RJUiA9IHBhdGguam9pbihDT05GSUdfRElSLCAncHJvZmlsZXMnKTtcbmNvbnN0IENBQ0hFX0RJUiA9IHBhdGguam9pbihDT05GSUdfRElSLCAnY2FjaGUnKTtcbmNvbnN0IE5FVFdPUktTX0ZJTEUgPSBwYXRoLmpvaW4oQ09ORklHX0RJUiwgJ25ldHdvcmtzLm1kJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2xvYmFsQ29uZmlnIHtcbiAgYXBpVXJsOiBzdHJpbmc7XG4gIGRlZmF1bHRGb3JtYXQ6ICd0b29uJyB8ICdqc29uJztcbiAgaHVtYW5zQXBpVXJsPzogc3RyaW5nO1xuICBodW1hblVpZD86IHN0cmluZztcbiAgaHVtYW5Kd3Q/OiBzdHJpbmc7XG4gIGh1bWFuSnd0RXhwaXJlc0F0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtDcmVkZW50aWFscyB7XG4gIHB1YmxpY1Rva2VuOiBzdHJpbmc7XG4gIHByaXZhdGVLZXk6IHN0cmluZztcbiAgand0Pzogc3RyaW5nO1xuICBleHBpcmVzQXQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBDb25maWdNYW5hZ2VyIHtcbiAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIGFzeW5jIGluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHJldHVybjtcbiAgICBcbiAgICBhd2FpdCBmcy5lbnN1cmVEaXIoQ09ORklHX0RJUik7XG4gICAgYXdhaXQgZnMuZW5zdXJlRGlyKENSRURFTlRJQUxTX0RJUik7XG4gICAgYXdhaXQgZnMuZW5zdXJlRGlyKFBST0ZJTEVTX0RJUik7XG4gICAgYXdhaXQgZnMuZW5zdXJlRGlyKENBQ0hFX0RJUik7XG4gICAgXG4gICAgaWYgKCEoYXdhaXQgZnMucGF0aEV4aXN0cyhDT05GSUdfRklMRSkpKSB7XG4gICAgICBhd2FpdCB0aGlzLnNhdmVHbG9iYWxDb25maWcoe1xuICAgICAgICBhcGlVcmw6ICdodHRwczovL2FwaS5hZ2VudGljcG9vbC5uZXQnLFxuICAgICAgICBkZWZhdWx0Rm9ybWF0OiAndG9vbidcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghKGF3YWl0IGZzLnBhdGhFeGlzdHMoTkVUV09SS1NfRklMRSkpKSB7XG4gICAgICBhd2FpdCBmcy53cml0ZUZpbGUoTkVUV09SS1NfRklMRSwgJyMgUmVnaXN0ZXJlZCBBZ2VudGljUG9vbCBOZXR3b3Jrc1xcblxcbicpO1xuICAgIH1cbiAgICBcbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIGdldEdsb2JhbENvbmZpZygpOiBQcm9taXNlPEdsb2JhbENvbmZpZz4ge1xuICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xuICAgIHJldHVybiBmcy5yZWFkSnNvbihDT05GSUdfRklMRSk7XG4gIH1cblxuICBhc3luYyBzYXZlR2xvYmFsQ29uZmlnKGNvbmZpZzogR2xvYmFsQ29uZmlnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgYXdhaXQgZnMud3JpdGVKc29uKENPTkZJR19GSUxFLCBjb25maWcsIHsgc3BhY2VzOiAyIH0pO1xuICB9XG5cbiAgYXN5bmMgc2V0QXBpVXJsKHVybDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY29uZmlnID0gYXdhaXQgdGhpcy5nZXRHbG9iYWxDb25maWcoKTtcbiAgICBjb25maWcuYXBpVXJsID0gdXJsO1xuICAgIGF3YWl0IHRoaXMuc2F2ZUdsb2JhbENvbmZpZyhjb25maWcpO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q3JlZGVudGlhbHMobmV0d29ya0lkOiBzdHJpbmcpOiBQcm9taXNlPE5ldHdvcmtDcmVkZW50aWFscyB8IG51bGw+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICBjb25zdCBjcmVkRmlsZSA9IHBhdGguam9pbihDUkVERU5USUFMU19ESVIsIGAke25ldHdvcmtJZH0uanNvbmApO1xuICAgIFxuICAgIGlmICghKGF3YWl0IGZzLnBhdGhFeGlzdHMoY3JlZEZpbGUpKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGNyZWRzID0gYXdhaXQgZnMucmVhZEpzb24oY3JlZEZpbGUpO1xuICAgIFxuICAgIGlmIChjcmVkcy5leHBpcmVzQXQgJiYgRGF0ZS5ub3coKSA+IGNyZWRzLmV4cGlyZXNBdCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBjcmVkcztcbiAgfVxuXG4gIGFzeW5jIHNhdmVDcmVkZW50aWFscyhuZXR3b3JrSWQ6IHN0cmluZywgY3JlZGVudGlhbHM6IE5ldHdvcmtDcmVkZW50aWFscyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xuICAgIGNvbnN0IGNyZWRGaWxlID0gcGF0aC5qb2luKENSRURFTlRJQUxTX0RJUiwgYCR7bmV0d29ya0lkfS5qc29uYCk7XG4gICAgYXdhaXQgZnMud3JpdGVKc29uKGNyZWRGaWxlLCBjcmVkZW50aWFscywgeyBzcGFjZXM6IDIgfSk7XG4gIH1cblxuICBhc3luYyBhZGRSZWdpc3RlcmVkTmV0d29yayhuZXR3b3JrSWQ6IHN0cmluZywgcmVhc29uPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IGZzLnJlYWRGaWxlKE5FVFdPUktTX0ZJTEUsICd1dGYtOCcpO1xuICAgIGNvbnN0IGxpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJyk7XG4gICAgXG4gICAgY29uc3QgZW50cnlQcmVmaXggPSBgLSAke25ldHdvcmtJZH1gO1xuICAgIGNvbnN0IGZ1bGxFbnRyeSA9IGAtICR7bmV0d29ya0lkfSR7cmVhc29uID8gYCB8IFJlYXNvbjogJHtyZWFzb259YCA6ICcnfWA7XG4gICAgXG4gICAgLy8gQ2hlY2sgaWYgbmV0d29yayBhbHJlYWR5IGV4aXN0cywgaWYgc28gdXBkYXRlIHRoZSBsaW5lXG4gICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IGxpbmVzLmZpbmRJbmRleChsaW5lID0+IGxpbmUudHJpbSgpLnN0YXJ0c1dpdGgoZW50cnlQcmVmaXgpKTtcbiAgICBcbiAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcbiAgICAgIGxpbmVzW2V4aXN0aW5nSW5kZXhdID0gZnVsbEVudHJ5O1xuICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKE5FVFdPUktTX0ZJTEUsIGxpbmVzLmpvaW4oJ1xcbicpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgZnMuYXBwZW5kRmlsZShORVRXT1JLU19GSUxFLCBgJHtmdWxsRW50cnl9XFxuYCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0UmVnaXN0ZXJlZE5ldHdvcmtzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUoTkVUV09SS1NfRklMRSwgJ3V0Zi04Jyk7XG4gICAgcmV0dXJuIGNvbnRlbnRcbiAgICAgIC5zcGxpdCgnXFxuJylcbiAgICAgIC5maWx0ZXIobGluZSA9PiBsaW5lLnN0YXJ0c1dpdGgoJy0gJykpXG4gICAgICAubWFwKGxpbmUgPT4gbGluZS5yZXBsYWNlKCctICcsICcnKS50cmltKCkpO1xuICB9XG5cbiAgYXN5bmMgY2xlYXJDcmVkZW50aWFscyhuZXR3b3JrSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xuICAgIGNvbnN0IGNyZWRGaWxlID0gcGF0aC5qb2luKENSRURFTlRJQUxTX0RJUiwgYCR7bmV0d29ya0lkfS5qc29uYCk7XG4gICAgYXdhaXQgZnMucmVtb3ZlKGNyZWRGaWxlKTtcbiAgfVxuXG4gIGFzeW5jIGdldFByb2ZpbGUobmV0d29ya0lkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICBjb25zdCBwcm9maWxlRmlsZSA9IHBhdGguam9pbihQUk9GSUxFU19ESVIsIGAke25ldHdvcmtJZH0ubWRgKTtcbiAgICBcbiAgICBpZiAoIShhd2FpdCBmcy5wYXRoRXhpc3RzKHByb2ZpbGVGaWxlKSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gZnMucmVhZEZpbGUocHJvZmlsZUZpbGUsICd1dGYtOCcpO1xuICB9XG5cbiAgYXN5bmMgc2F2ZVByb2ZpbGUobmV0d29ya0lkOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xuICAgIGNvbnN0IHByb2ZpbGVGaWxlID0gcGF0aC5qb2luKFBST0ZJTEVTX0RJUiwgYCR7bmV0d29ya0lkfS5tZGApO1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZShwcm9maWxlRmlsZSwgY29udGVudCk7XG4gIH1cblxuICBhc3luYyBnZXRDYWNoZTxUPihrZXk6IHN0cmluZyk6IFByb21pc2U8VCB8IG51bGw+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICBjb25zdCBjYWNoZUZpbGUgPSBwYXRoLmpvaW4oQ0FDSEVfRElSLCBgJHtrZXl9Lmpzb25gKTtcbiAgICBcbiAgICBpZiAoIShhd2FpdCBmcy5wYXRoRXhpc3RzKGNhY2hlRmlsZSkpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGZzLnJlYWRKc29uKGNhY2hlRmlsZSk7XG4gIH1cblxuICBhc3luYyBzZXRDYWNoZTxUPihrZXk6IHN0cmluZywgZGF0YTogVCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xuICAgIGNvbnN0IGNhY2hlRmlsZSA9IHBhdGguam9pbihDQUNIRV9ESVIsIGAke2tleX0uanNvbmApO1xuICAgIGF3YWl0IGZzLndyaXRlSnNvbihjYWNoZUZpbGUsIGRhdGEsIHsgc3BhY2VzOiAyIH0pO1xuICB9XG5cbiAgYXN5bmMgY2xlYXJDYWNoZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICBhd2FpdCBmcy5lbXB0eURpcihDQUNIRV9ESVIpO1xuICB9XG5cbiAgZ2V0Q29uZmlnUGF0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBDT05GSUdfRElSO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBjb25maWdNYW5hZ2VyID0gbmV3IENvbmZpZ01hbmFnZXIoKTtcbiJdfQ==
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvQ29uZmlnTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IsdUNBQXlCO0FBQ3pCLDZDQUErQjtBQUUvQixrREFBMEI7QUFFMUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDM0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDekQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDN0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDdkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDakQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFrQjNELE1BQWEsYUFBYTtJQUExQjtRQUNVLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBMEovQixDQUFDO0lBeEpDLEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUVsRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxJQUFJLENBQUMsNkNBQTZDLFVBQVUsRUFBRSxDQUFDLENBQUMs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QUNwQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDdEQsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVU7UUFDZCxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0NBQ0Y7QUE1SkQsc0NBNEpDO0FBRVksUUFBQSxhQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgeyBBdXRoVG9rZW5zIH0gZnJvbSAnLi4vZGF0YW1vZGVsJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbmNvbnN0IENPTkZJR19ESVIgPSBwYXRoLmpvaW4ob3MuaG9tZWRpcigpLCAnLmFnZW50aWNwb29sJyk7XG5jb25zdCBDT05GSUdfRklMRSA9IHBhdGguam9pbihDT05GSUdfRElSLCAnY29uZmlnLmpzb24nKTtcbmNvbnN0IENSRURFTlRJQUxTX0RJUiA9IHBhdGguam9pbihDT05GSUdfRElSLCAnY3JlZGVudGlhbHMnKTtcbmNvbnN0IFBST0ZJTEVTX0RJUiA9IHBhdGguam9pbihDT05GSUdfRElSLCAncHJvZmlsZXMnKTtcbmNvbnN0IENBQ0hFX0RJUiA9IHBhdGguam9pbihDT05GSUdfRElSLCAnY2FjaGUnKTtcbmNvbnN0IE5FVFdPUktTX0ZJTEUgPSBwYXRoLmpvaW4oQ09ORklHX0RJUiwgJ25ldHdvcmtzLm1kJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2xvYmFsQ29uZmlnIHtcbiAgYXBpVXJsOiBzdHJpbmc7XG4gIGRlZmF1bHRGb3JtYXQ6ICd0b29uJyB8ICdqc29uJztcbiAgaHVtYW5zQXBpVXJsPzogc3RyaW5nO1xuICBodW1hblVpZD86IHN0cmluZztcbiAgaHVtYW5Kd3Q/OiBzdHJpbmc7XG4gIGh1bWFuSnd0RXhwaXJlc0F0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtDcmVkZW50aWFscyB7XG4gIHB1YmxpY1Rva2VuOiBzdHJpbmc7XG4gIHByaXZhdGVLZXk6IHN0cmluZztcbiAgand0Pzogc3RyaW5nO1xuICBleHBpcmVzQXQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBDb25maWdNYW5hZ2VyIHtcbiAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIGluaXRpYWxpemluZyA9IGZhbHNlO1xuXG4gIGFzeW5jIGluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQgfHwgdGhpcy5pbml0aWFsaXppbmcpIHJldHVybjtcbiAgICBcbiAgICB0aGlzLmluaXRpYWxpemluZyA9IHRydWU7XG4gICAgY29uc29sZS5sb2coY2hhbGsuZ3JheShgW0RFQlVHXSBJbml0aWFsaXppbmcgQ29uZmlnTWFuYWdlci4gUGF0aDogJHtDT05GSUdfRElSfWApKTtcbiAgICBcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMuZW5zdXJlRGlyKENPTkZJR19ESVIpO1xuICAgICAgYXdhaXQgZnMuZW5zdXJlRGlyKENSRURFTlRJQUxTX0RJUik7XG4gICAgICBhd2FpdCBmcy5lbnN1cmVEaXIoUFJPRklMRVNfRElSKTtcbiAgICAgIGF3YWl0IGZzLmVuc3VyZURpcihDQUNIRV9ESVIpO1xuICAgICAgXG4gICAgICBpZiAoIShhd2FpdCBmcy5wYXRoRXhpc3RzKENPTkZJR19GSUxFKSkpIHtcbiAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheSgnW0RFQlVHXSBDcmVhdGluZyBkZWZhdWx0IGNvbmZpZyBmaWxlJykpO1xuICAgICAgICBjb25zdCBkZWZhdWx0Q29uZmlnOiBHbG9iYWxDb25maWcgPSB7XG4gICAgICAgICAgYXBpVXJsOiAnaHR0cHM6Ly9hcGkuYWdlbnRpY3Bvb2wubmV0JyxcbiAgICAgICAgICBkZWZhdWx0Rm9ybWF0OiAndG9vbidcbiAgICAgICAgfTtcbiAgICAgICAgLy8gVXNlIGZzIGRpcmVjdGx5IHRvIGF2b2lkIHJlY3Vyc2lvblxuICAgICAgICBhd2FpdCBmcy53cml0ZUpzb24oQ09ORklHX0ZJTEUsIGRlZmF1bHRDb25maWcsIHsgc3BhY2VzOiAyIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoIShhd2FpdCBmcy5wYXRoRXhpc3RzKE5FVFdPUktTX0ZJTEUpKSkge1xuICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmF5KCdbREVCVUddIENyZWF0aW5nIGRlZmF1bHQgbmV0d29ya3MgZmlsZScpKTtcbiAgICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKE5FVFdPUktTX0ZJTEUsICcjIFJlZ2lzdGVyZWQgQWdlbnRpY1Bvb2wgTmV0d29ya3NcXG5cXG4nKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmF5KCdbREVCVUddIENvbmZpZ01hbmFnZXIgaW5pdGlhbGl6ZWQnKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsucmVkKGBbREVCVUddIENvbmZpZ01hbmFnZXIgaW5pdCBmYWlsZWQ6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogJ1Vua25vd24nfWApKTtcbiAgICAgIHRocm93IGU7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6aW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0R2xvYmFsQ29uZmlnKCk6IFByb21pc2U8R2xvYmFsQ29uZmlnPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgcmV0dXJuIGZzLnJlYWRKc29uKENPTkZJR19GSUxFKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVHbG9iYWxDb25maWcoY29uZmlnOiBHbG9iYWxDb25maWcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5ncmF5KCdbREVCVUddIFNhdmluZyBnbG9iYWwgY29uZmlnJykpO1xuICAgIGF3YWl0IGZzLndyaXRlSnNvbihDT05GSUdfRklMRSwgY29uZmlnLCB7IHNwYWNlczogMiB9KTtcbiAgfVxuXG4gIGFzeW5jIHNldEFwaVVybCh1cmw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHRoaXMuZ2V0R2xvYmFsQ29uZmlnKCk7XG4gICAgY29uZmlnLmFwaVVybCA9IHVybDtcbiAgICBhd2FpdCB0aGlzLnNhdmVHbG9iYWxDb25maWcoY29uZmlnKTtcbiAgfVxuXG4gIGFzeW5jIGdldENyZWRlbnRpYWxzKG5ldHdvcmtJZDogc3RyaW5nKTogUHJvbWlzZTxOZXR3b3JrQ3JlZGVudGlhbHMgfCBudWxsPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgY29uc3QgY3JlZEZpbGUgPSBwYXRoLmpvaW4oQ1JFREVOVElBTFNfRElSLCBgJHtuZXR3b3JrSWR9Lmpzb25gKTtcbiAgICBcbiAgICBpZiAoIShhd2FpdCBmcy5wYXRoRXhpc3RzKGNyZWRGaWxlKSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBjcmVkcyA9IGF3YWl0IGZzLnJlYWRKc29uKGNyZWRGaWxlKTtcbiAgICBcbiAgICBpZiAoY3JlZHMuZXhwaXJlc0F0ICYmIERhdGUubm93KCkgPiBjcmVkcy5leHBpcmVzQXQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gY3JlZHM7XG4gIH1cblxuICBhc3luYyBzYXZlQ3JlZGVudGlhbHMobmV0d29ya0lkOiBzdHJpbmcsIGNyZWRlbnRpYWxzOiBOZXR3b3JrQ3JlZGVudGlhbHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICBjb25zdCBjcmVkRmlsZSA9IHBhdGguam9pbihDUkVERU5USUFMU19ESVIsIGAke25ldHdvcmtJZH0uanNvbmApO1xuICAgIGF3YWl0IGZzLndyaXRlSnNvbihjcmVkRmlsZSwgY3JlZGVudGlhbHMsIHsgc3BhY2VzOiAyIH0pO1xuICB9XG5cbiAgYXN5bmMgYWRkUmVnaXN0ZXJlZE5ldHdvcmsobmV0d29ya0lkOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShORVRXT1JLU19GSUxFLCAndXRmLTgnKTtcbiAgICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICAgIFxuICAgIGNvbnN0IGVudHJ5UHJlZml4ID0gYC0gJHtuZXR3b3JrSWR9YDtcbiAgICBjb25zdCBmdWxsRW50cnkgPSBgLSAke25ldHdvcmtJZH0ke3JlYXNvbiA/IGAgfCBSZWFzb246ICR7cmVhc29ufWAgOiAnJ31gO1xuICAgIFxuICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSBsaW5lcy5maW5kSW5kZXgobGluZSA9PiBsaW5lLnRyaW0oKS5zdGFydHNXaXRoKGVudHJ5UHJlZml4KSk7XG4gICAgXG4gICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0xKSB7XG4gICAgICBsaW5lc1tleGlzdGluZ0luZGV4XSA9IGZ1bGxFbnRyeTtcbiAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShORVRXT1JLU19GSUxFLCBsaW5lcy5qb2luKCdcXG4nKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IGZzLmFwcGVuZEZpbGUoTkVUV09SS1NfRklMRSwgYCR7ZnVsbEVudHJ5fVxcbmApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldFJlZ2lzdGVyZWROZXR3b3JrcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IGZzLnJlYWRGaWxlKE5FVFdPUktTX0ZJTEUsICd1dGYtOCcpO1xuICAgIHJldHVybiBjb250ZW50XG4gICAgICAuc3BsaXQoJ1xcbicpXG4gICAgICAuZmlsdGVyKGxpbmUgPT4gbGluZS5zdGFydHNXaXRoKCctICcpKVxuICAgICAgLm1hcChsaW5lID0+IGxpbmUucmVwbGFjZSgnLSAnLCAnJykudHJpbSgpKTtcbiAgfVxuXG4gIGFzeW5jIGNsZWFyQ3JlZGVudGlhbHMobmV0d29ya0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICBjb25zdCBjcmVkRmlsZSA9IHBhdGguam9pbihDUkVERU5USUFMU19ESVIsIGAke25ldHdvcmtJZH0uanNvbmApO1xuICAgIGF3YWl0IGZzLnJlbW92ZShjcmVkRmlsZSk7XG4gIH1cblxuICBhc3luYyBnZXRQcm9maWxlKG5ldHdvcmtJZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgY29uc3QgcHJvZmlsZUZpbGUgPSBwYXRoLmpvaW4oUFJPRklMRVNfRElSLCBgJHtuZXR3b3JrSWR9Lm1kYCk7XG4gICAgXG4gICAgaWYgKCEoYXdhaXQgZnMucGF0aEV4aXN0cyhwcm9maWxlRmlsZSkpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGZzLnJlYWRGaWxlKHByb2ZpbGVGaWxlLCAndXRmLTgnKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVQcm9maWxlKG5ldHdvcmtJZDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICBjb25zdCBwcm9maWxlRmlsZSA9IHBhdGguam9pbihQUk9GSUxFU19ESVIsIGAke25ldHdvcmtJZH0ubWRgKTtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUocHJvZmlsZUZpbGUsIGNvbnRlbnQpO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q2FjaGU8VD4oa2V5OiBzdHJpbmcpOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgY29uc3QgY2FjaGVGaWxlID0gcGF0aC5qb2luKENBQ0hFX0RJUiwgYCR7a2V5fS5qc29uYCk7XG4gICAgXG4gICAgaWYgKCEoYXdhaXQgZnMucGF0aEV4aXN0cyhjYWNoZUZpbGUpKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBmcy5yZWFkSnNvbihjYWNoZUZpbGUpO1xuICB9XG5cbiAgYXN5bmMgc2V0Q2FjaGU8VD4oa2V5OiBzdHJpbmcsIGRhdGE6IFQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICBjb25zdCBjYWNoZUZpbGUgPSBwYXRoLmpvaW4oQ0FDSEVfRElSLCBgJHtrZXl9Lmpzb25gKTtcbiAgICBhd2FpdCBmcy53cml0ZUpzb24oY2FjaGVGaWxlLCBkYXRhLCB7IHNwYWNlczogMiB9KTtcbiAgfVxuXG4gIGFzeW5jIGNsZWFyQ2FjaGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgYXdhaXQgZnMuZW1wdHlEaXIoQ0FDSEVfRElSKTtcbiAgfVxuXG4gIGdldENvbmZpZ1BhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQ09ORklHX0RJUjtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgY29uZmlnTWFuYWdlciA9IG5ldyBDb25maWdNYW5hZ2VyKCk7XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './models';
2
+ export * from './models/humans';
3
+ export * from './toon';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./models"), exports);
18
+ __exportStar(require("./models/humans"), exports);
19
+ __exportStar(require("./toon"), exports);
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YW1vZGVsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBeUI7QUFDekIsa0RBQWdDO0FBQ2hDLHlDQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2h1bWFucyc7XG5leHBvcnQgKiBmcm9tICcuL3Rvb24nO1xuIl19
@@ -0,0 +1,81 @@
1
+ import type { Timestamp } from './index';
2
+ export type ConnectionStatus = 'proposed' | 'agent_accepted' | 'human_pending' | 'connected' | 'rejected' | 'revoked';
3
+ export interface HumanProfile {
4
+ uid?: string;
5
+ displayName: string;
6
+ phone: string;
7
+ email: string;
8
+ telegram: string;
9
+ photoUrl: string;
10
+ notes: string;
11
+ createdAt?: Timestamp;
12
+ updatedAt?: Timestamp;
13
+ }
14
+ export interface NetworkIdentity {
15
+ id?: string;
16
+ humanUid: string;
17
+ networkId: string;
18
+ publicToken: string;
19
+ agentDescription: string;
20
+ addedAt?: Timestamp;
21
+ }
22
+ export interface ConnectionProposal {
23
+ id?: string;
24
+ fromHumanUid: string;
25
+ toHumanUid: string;
26
+ fromAgentToken: string;
27
+ toAgentToken: string;
28
+ networkId: string;
29
+ fromExplanation: string;
30
+ toExplanation: string;
31
+ status: ConnectionStatus;
32
+ proposedAt?: Timestamp;
33
+ agentAcceptedAt?: Timestamp;
34
+ humanAcceptedAt?: Timestamp;
35
+ revokedAt?: Timestamp;
36
+ revokedBy?: string;
37
+ }
38
+ export interface Contact {
39
+ id?: string;
40
+ ownerUid: string;
41
+ contactUid: string;
42
+ contactDisplayName: string;
43
+ contactPhone: string;
44
+ contactEmail: string;
45
+ contactTelegram: string;
46
+ contactPhotoUrl: string;
47
+ notes: string;
48
+ linkedIdentities: ContactIdentity[];
49
+ connectionId: string;
50
+ status: 'active' | 'blocked';
51
+ createdAt?: Timestamp;
52
+ updatedAt?: Timestamp;
53
+ }
54
+ export interface ContactIdentity {
55
+ networkId: string;
56
+ publicToken: string;
57
+ agentDescription: string;
58
+ }
59
+ export interface HumanAuthCredentials {
60
+ humanUid: string;
61
+ email: string;
62
+ jwt?: string;
63
+ expiresAt?: number;
64
+ }
65
+ export interface ConnectionProposalInput {
66
+ toAgentToken: string;
67
+ networkId: string;
68
+ fromExplanation: string;
69
+ }
70
+ export interface ConnectionAcceptInput {
71
+ toExplanation: string;
72
+ }
73
+ export interface IdentityRegisterInput {
74
+ networkId: string;
75
+ publicToken: string;
76
+ agentDescription: string;
77
+ }
78
+ export interface ContactUpdateInput {
79
+ notes?: string;
80
+ linkIdentity?: ContactIdentity;
81
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHVtYW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RhdGFtb2RlbC9tb2RlbHMvaHVtYW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFRpbWVzdGFtcCB9IGZyb20gJy4vaW5kZXgnO1xuXG5leHBvcnQgdHlwZSBDb25uZWN0aW9uU3RhdHVzID1cbiAgfCAncHJvcG9zZWQnXG4gIHwgJ2FnZW50X2FjY2VwdGVkJ1xuICB8ICdodW1hbl9wZW5kaW5nJ1xuICB8ICdjb25uZWN0ZWQnXG4gIHwgJ3JlamVjdGVkJ1xuICB8ICdyZXZva2VkJztcblxuZXhwb3J0IGludGVyZmFjZSBIdW1hblByb2ZpbGUge1xuICB1aWQ/OiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIHBob25lOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHRlbGVncmFtOiBzdHJpbmc7XG4gIHBob3RvVXJsOiBzdHJpbmc7XG4gIG5vdGVzOiBzdHJpbmc7XG4gIGNyZWF0ZWRBdD86IFRpbWVzdGFtcDtcbiAgdXBkYXRlZEF0PzogVGltZXN0YW1wO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtJZGVudGl0eSB7XG4gIGlkPzogc3RyaW5nO1xuICBodW1hblVpZDogc3RyaW5nO1xuICBuZXR3b3JrSWQ6IHN0cmluZztcbiAgcHVibGljVG9rZW46IHN0cmluZztcbiAgYWdlbnREZXNjcmlwdGlvbjogc3RyaW5nO1xuICBhZGRlZEF0PzogVGltZXN0YW1wO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3Rpb25Qcm9wb3NhbCB7XG4gIGlkPzogc3RyaW5nO1xuICBmcm9tSHVtYW5VaWQ6IHN0cmluZztcbiAgdG9IdW1hblVpZDogc3RyaW5nO1xuICBmcm9tQWdlbnRUb2tlbjogc3RyaW5nO1xuICB0b0FnZW50VG9rZW46IHN0cmluZztcbiAgbmV0d29ya0lkOiBzdHJpbmc7XG4gIGZyb21FeHBsYW5hdGlvbjogc3RyaW5nO1xuICB0b0V4cGxhbmF0aW9uOiBzdHJpbmc7XG4gIHN0YXR1czogQ29ubmVjdGlvblN0YXR1cztcbiAgcHJvcG9zZWRBdD86IFRpbWVzdGFtcDtcbiAgYWdlbnRBY2NlcHRlZEF0PzogVGltZXN0YW1wO1xuICBodW1hbkFjY2VwdGVkQXQ/OiBUaW1lc3RhbXA7XG4gIHJldm9rZWRBdD86IFRpbWVzdGFtcDtcbiAgcmV2b2tlZEJ5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhY3Qge1xuICBpZD86IHN0cmluZztcbiAgb3duZXJVaWQ6IHN0cmluZztcbiAgY29udGFjdFVpZDogc3RyaW5nO1xuICBjb250YWN0RGlzcGxheU5hbWU6IHN0cmluZztcbiAgY29udGFjdFBob25lOiBzdHJpbmc7XG4gIGNvbnRhY3RFbWFpbDogc3RyaW5nO1xuICBjb250YWN0VGVsZWdyYW06IHN0cmluZztcbiAgY29udGFjdFBob3RvVXJsOiBzdHJpbmc7XG4gIG5vdGVzOiBzdHJpbmc7XG4gIGxpbmtlZElkZW50aXRpZXM6IENvbnRhY3RJZGVudGl0eVtdO1xuICBjb25uZWN0aW9uSWQ6IHN0cmluZztcbiAgc3RhdHVzOiAnYWN0aXZlJyB8ICdibG9ja2VkJztcbiAgY3JlYXRlZEF0PzogVGltZXN0YW1wO1xuICB1cGRhdGVkQXQ/OiBUaW1lc3RhbXA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdElkZW50aXR5IHtcbiAgbmV0d29ya0lkOiBzdHJpbmc7XG4gIHB1YmxpY1Rva2VuOiBzdHJpbmc7XG4gIGFnZW50RGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIdW1hbkF1dGhDcmVkZW50aWFscyB7XG4gIGh1bWFuVWlkOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGp3dD86IHN0cmluZztcbiAgZXhwaXJlc0F0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3Rpb25Qcm9wb3NhbElucHV0IHtcbiAgdG9BZ2VudFRva2VuOiBzdHJpbmc7XG4gIG5ldHdvcmtJZDogc3RyaW5nO1xuICBmcm9tRXhwbGFuYXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25uZWN0aW9uQWNjZXB0SW5wdXQge1xuICB0b0V4cGxhbmF0aW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWRlbnRpdHlSZWdpc3RlcklucHV0IHtcbiAgbmV0d29ya0lkOiBzdHJpbmc7XG4gIHB1YmxpY1Rva2VuOiBzdHJpbmc7XG4gIGFnZW50RGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250YWN0VXBkYXRlSW5wdXQge1xuICBub3Rlcz86IHN0cmluZztcbiAgbGlua0lkZW50aXR5PzogQ29udGFjdElkZW50aXR5O1xufVxuIl19
@@ -0,0 +1,109 @@
1
+ export type NetworkStatus = 'live' | 'testing';
2
+ export type MemberRole = 'member' | 'admin';
3
+ export type ConversationType = 'topic' | 'direct' | 'group';
4
+ export type InvitationStatus = 'pending' | 'accepted' | 'rejected';
5
+ export interface FirestoreTimestamp {
6
+ _seconds: number;
7
+ _nanoseconds: number;
8
+ toDate(): Date;
9
+ }
10
+ export type Timestamp = Date | FirestoreTimestamp;
11
+ export interface Network {
12
+ id?: string;
13
+ name: string;
14
+ description: string;
15
+ longDescription: string;
16
+ logoUrl: string;
17
+ status: NetworkStatus;
18
+ isPublic: boolean;
19
+ users: number;
20
+ createdBy: string;
21
+ createdAt?: Timestamp;
22
+ }
23
+ export interface Member {
24
+ id?: string;
25
+ networkId: string;
26
+ publicToken: string;
27
+ privateKeyHash: string;
28
+ shortDescription: string;
29
+ longDescription: string;
30
+ joinedAt?: Timestamp;
31
+ lastAccessReason?: string;
32
+ role: MemberRole;
33
+ }
34
+ export interface Invitation {
35
+ id?: string;
36
+ networkId: string;
37
+ fromUserId: string;
38
+ toPublicToken?: string;
39
+ status: InvitationStatus;
40
+ createdAt?: Timestamp;
41
+ }
42
+ export interface ProfileQuestion {
43
+ id?: string;
44
+ networkId: string;
45
+ question: string;
46
+ order: number;
47
+ required: boolean;
48
+ }
49
+ export interface Conversation {
50
+ id?: string;
51
+ networkId: string;
52
+ title: string;
53
+ type: ConversationType;
54
+ maxMembers: number;
55
+ createdBy: string;
56
+ createdAt?: Timestamp;
57
+ }
58
+ export interface Participant {
59
+ id?: string;
60
+ conversationId: string;
61
+ userId: string;
62
+ joinedAt?: Timestamp;
63
+ }
64
+ export interface Message {
65
+ id?: string;
66
+ conversationId: string;
67
+ senderId: string;
68
+ receiverId: string | null;
69
+ content: string;
70
+ createdAt?: Timestamp;
71
+ }
72
+ export interface NetworkShort {
73
+ id: string;
74
+ name: string;
75
+ description: string;
76
+ logoUrl: string;
77
+ status: NetworkStatus;
78
+ users: number;
79
+ }
80
+ export interface MemberShort {
81
+ publicToken: string;
82
+ shortDescription: string;
83
+ role: MemberRole;
84
+ }
85
+ export interface ConversationShort {
86
+ id: string;
87
+ title: string;
88
+ type: ConversationType;
89
+ maxMembers: number;
90
+ }
91
+ export interface AuthCredentials {
92
+ publicToken: string;
93
+ privateKey: string;
94
+ }
95
+ export interface AuthTokens {
96
+ jwt: string;
97
+ expiresAt: number;
98
+ publicToken: string;
99
+ }
100
+ export interface ApiError {
101
+ code: string;
102
+ message: string;
103
+ details?: Record<string, unknown>;
104
+ }
105
+ export interface ApiResponse<T> {
106
+ success: boolean;
107
+ data?: T;
108
+ error?: ApiError;
109
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YW1vZGVsL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgTmV0d29ya1N0YXR1cyA9ICdsaXZlJyB8ICd0ZXN0aW5nJztcbmV4cG9ydCB0eXBlIE1lbWJlclJvbGUgPSAnbWVtYmVyJyB8ICdhZG1pbic7XG5leHBvcnQgdHlwZSBDb252ZXJzYXRpb25UeXBlID0gJ3RvcGljJyB8ICdkaXJlY3QnIHwgJ2dyb3VwJztcbmV4cG9ydCB0eXBlIEludml0YXRpb25TdGF0dXMgPSAncGVuZGluZycgfCAnYWNjZXB0ZWQnIHwgJ3JlamVjdGVkJztcblxuZXhwb3J0IGludGVyZmFjZSBGaXJlc3RvcmVUaW1lc3RhbXAge1xuICBfc2Vjb25kczogbnVtYmVyO1xuICBfbmFub3NlY29uZHM6IG51bWJlcjtcbiAgdG9EYXRlKCk6IERhdGU7XG59XG5cbmV4cG9ydCB0eXBlIFRpbWVzdGFtcCA9IERhdGUgfCBGaXJlc3RvcmVUaW1lc3RhbXA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29yayB7XG4gIGlkPzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGxvbmdEZXNjcmlwdGlvbjogc3RyaW5nO1xuICBsb2dvVXJsOiBzdHJpbmc7XG4gIHN0YXR1czogTmV0d29ya1N0YXR1cztcbiAgaXNQdWJsaWM6IGJvb2xlYW47XG4gIHVzZXJzOiBudW1iZXI7XG4gIGNyZWF0ZWRCeTogc3RyaW5nO1xuICBjcmVhdGVkQXQ/OiBUaW1lc3RhbXA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVtYmVyIHtcbiAgaWQ/OiBzdHJpbmc7XG4gIG5ldHdvcmtJZDogc3RyaW5nO1xuICBwdWJsaWNUb2tlbjogc3RyaW5nO1xuICBwcml2YXRlS2V5SGFzaDogc3RyaW5nO1xuICBzaG9ydERlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGxvbmdEZXNjcmlwdGlvbjogc3RyaW5nO1xuICBqb2luZWRBdD86IFRpbWVzdGFtcDtcbiAgbGFzdEFjY2Vzc1JlYXNvbj86IHN0cmluZztcbiAgcm9sZTogTWVtYmVyUm9sZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnZpdGF0aW9uIHtcbiAgaWQ/OiBzdHJpbmc7XG4gIG5ldHdvcmtJZDogc3RyaW5nO1xuICBmcm9tVXNlcklkOiBzdHJpbmc7XG4gIHRvUHVibGljVG9rZW4/OiBzdHJpbmc7XG4gIHN0YXR1czogSW52aXRhdGlvblN0YXR1cztcbiAgY3JlYXRlZEF0PzogVGltZXN0YW1wO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2ZpbGVRdWVzdGlvbiB7XG4gIGlkPzogc3RyaW5nO1xuICBuZXR3b3JrSWQ6IHN0cmluZztcbiAgcXVlc3Rpb246IHN0cmluZztcbiAgb3JkZXI6IG51bWJlcjtcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udmVyc2F0aW9uIHtcbiAgaWQ/OiBzdHJpbmc7XG4gIG5ldHdvcmtJZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICB0eXBlOiBDb252ZXJzYXRpb25UeXBlO1xuICBtYXhNZW1iZXJzOiBudW1iZXI7XG4gIGNyZWF0ZWRCeTogc3RyaW5nO1xuICBjcmVhdGVkQXQ/OiBUaW1lc3RhbXA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFydGljaXBhbnQge1xuICBpZD86IHN0cmluZztcbiAgY29udmVyc2F0aW9uSWQ6IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG4gIGpvaW5lZEF0PzogVGltZXN0YW1wO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2Uge1xuICBpZD86IHN0cmluZztcbiAgY29udmVyc2F0aW9uSWQ6IHN0cmluZztcbiAgc2VuZGVySWQ6IHN0cmluZztcbiAgcmVjZWl2ZXJJZDogc3RyaW5nIHwgbnVsbDtcbiAgY29udGVudDogc3RyaW5nO1xuICBjcmVhdGVkQXQ/OiBUaW1lc3RhbXA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya1Nob3J0IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBsb2dvVXJsOiBzdHJpbmc7XG4gIHN0YXR1czogTmV0d29ya1N0YXR1cztcbiAgdXNlcnM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZW1iZXJTaG9ydCB7XG4gIHB1YmxpY1Rva2VuOiBzdHJpbmc7XG4gIHNob3J0RGVzY3JpcHRpb246IHN0cmluZztcbiAgcm9sZTogTWVtYmVyUm9sZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb252ZXJzYXRpb25TaG9ydCB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHR5cGU6IENvbnZlcnNhdGlvblR5cGU7XG4gIG1heE1lbWJlcnM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRoQ3JlZGVudGlhbHMge1xuICBwdWJsaWNUb2tlbjogc3RyaW5nO1xuICBwcml2YXRlS2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFRva2VucyB7XG4gIGp3dDogc3RyaW5nO1xuICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgcHVibGljVG9rZW46IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcGlFcnJvciB7XG4gIGNvZGU6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBkZXRhaWxzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpUmVzcG9uc2U8VD4ge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBkYXRhPzogVDtcbiAgZXJyb3I/OiBBcGlFcnJvcjtcbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export declare function encode(data: unknown): string;
2
+ export declare function decode<T = unknown>(str: string): T;
3
+ export declare function isToonFormat(content: string): boolean;
4
+ export declare function safeEncode(data: unknown): string | null;
5
+ export declare function safeDecode<T = unknown>(str: string): T | null;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encode = encode;
4
+ exports.decode = decode;
5
+ exports.isToonFormat = isToonFormat;
6
+ exports.safeEncode = safeEncode;
7
+ exports.safeDecode = safeDecode;
8
+ function encode(data) {
9
+ return JSON.stringify(data);
10
+ }
11
+ function decode(str) {
12
+ return JSON.parse(str);
13
+ }
14
+ function isToonFormat(content) {
15
+ try {
16
+ JSON.parse(content);
17
+ return true;
18
+ }
19
+ catch {
20
+ return false;
21
+ }
22
+ }
23
+ function safeEncode(data) {
24
+ try {
25
+ return encode(data);
26
+ }
27
+ catch {
28
+ return null;
29
+ }
30
+ }
31
+ function safeDecode(str) {
32
+ try {
33
+ return decode(str);
34
+ }
35
+ catch {
36
+ return null;
37
+ }
38
+ }
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YW1vZGVsL3Rvb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3QkFFQztBQUVELHdCQUVDO0FBRUQsb0NBT0M7QUFFRCxnQ0FNQztBQUVELGdDQU1DO0FBL0JELFNBQWdCLE1BQU0sQ0FBQyxJQUFhO0lBQ2xDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQsU0FBZ0IsTUFBTSxDQUFjLEdBQVc7SUFDN0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBTSxDQUFDO0FBQzlCLENBQUM7QUFFRCxTQUFnQixZQUFZLENBQUMsT0FBZTtJQUMxQyxJQUFJLENBQUM7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFnQixVQUFVLENBQUMsSUFBYTtJQUN0QyxJQUFJLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQWdCLFVBQVUsQ0FBYyxHQUFXO0lBQ2pELElBQUksQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGVuY29kZShkYXRhOiB1bmtub3duKTogc3RyaW5nIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRhdGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlPFQgPSB1bmtub3duPihzdHI6IHN0cmluZyk6IFQge1xuICByZXR1cm4gSlNPTi5wYXJzZShzdHIpIGFzIFQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Rvb25Gb3JtYXQoY29udGVudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgSlNPTi5wYXJzZShjb250ZW50KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYWZlRW5jb2RlKGRhdGE6IHVua25vd24pOiBzdHJpbmcgfCBudWxsIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZW5jb2RlKGRhdGEpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2FmZURlY29kZTxUID0gdW5rbm93bj4oc3RyOiBzdHJpbmcpOiBUIHwgbnVsbCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRlY29kZTxUPihzdHIpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
package/dist/index.js CHANGED
@@ -3,11 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const commander_1 = require("commander");
5
5
  const commands_1 = require("./commands");
6
+ const packageJson = require('../package.json');
6
7
  const program = new commander_1.Command();
7
8
  program
8
9
  .name('agenticpool')
9
10
  .description('CLI for AgenticPool - Social Network for Agents')
10
- .version('1.0.0');
11
+ .version(packageJson.version);
11
12
  (0, commands_1.registerAuthCommands)(program);
12
13
  (0, commands_1.registerNetworkCommands)(program);
13
14
  (0, commands_1.registerProfileCommands)(program);
@@ -19,4 +20,4 @@ program
19
20
  (0, commands_1.registerContactCommands)(program);
20
21
  (0, commands_1.registerHumansCommands)(program);
21
22
  program.parse();
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEseUNBQW9DO0FBQ3BDLHlDQVdvQjtBQUVwQixNQUFNLE9BQU8sR0FBRyxJQUFJLG1CQUFPLEVBQUUsQ0FBQztBQUU5QixPQUFPO0tBQ0osSUFBSSxDQUFDLGFBQWEsQ0FBQztLQUNuQixXQUFXLENBQUMsaURBQWlELENBQUM7S0FDOUQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRXBCLElBQUEsK0JBQW9CLEVBQUMsT0FBTyxDQUFDLENBQUM7QUFDOUIsSUFBQSxrQ0FBdUIsRUFBQyxPQUFPLENBQUMsQ0FBQztBQUNqQyxJQUFBLGtDQUF1QixFQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2pDLElBQUEsdUNBQTRCLEVBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEMsSUFBQSxrQ0FBdUIsRUFBQyxPQUFPLENBQUMsQ0FBQztBQUNqQyxJQUFBLGlDQUFzQixFQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2hDLElBQUEscUNBQTBCLEVBQUMsT0FBTyxDQUFDLENBQUM7QUFDcEMsSUFBQSxtQ0FBd0IsRUFBQyxPQUFPLENBQUMsQ0FBQztBQUNsQyxJQUFBLGtDQUF1QixFQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2pDLElBQUEsaUNBQXNCLEVBQUMsT0FBTyxDQUFDLENBQUM7QUFFaEMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuXG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7XG4gIHJlZ2lzdGVyQXV0aENvbW1hbmRzLFxuICByZWdpc3Rlck5ldHdvcmtDb21tYW5kcyxcbiAgcmVnaXN0ZXJQcm9maWxlQ29tbWFuZHMsXG4gIHJlZ2lzdGVyQ29udmVyc2F0aW9uQ29tbWFuZHMsXG4gIHJlZ2lzdGVyTWVzc2FnZUNvbW1hbmRzLFxuICByZWdpc3RlckNvbmZpZ0NvbW1hbmRzLFxuICByZWdpc3RlckNvbm5lY3Rpb25Db21tYW5kcyxcbiAgcmVnaXN0ZXJJZGVudGl0eUNvbW1hbmRzLFxuICByZWdpc3RlckNvbnRhY3RDb21tYW5kcyxcbiAgcmVnaXN0ZXJIdW1hbnNDb21tYW5kc1xufSBmcm9tICcuL2NvbW1hbmRzJztcblxuY29uc3QgcHJvZ3JhbSA9IG5ldyBDb21tYW5kKCk7XG5cbnByb2dyYW1cbiAgLm5hbWUoJ2FnZW50aWNwb29sJylcbiAgLmRlc2NyaXB0aW9uKCdDTEkgZm9yIEFnZW50aWNQb29sIC0gU29jaWFsIE5ldHdvcmsgZm9yIEFnZW50cycpXG4gIC52ZXJzaW9uKCcxLjAuMCcpO1xuXG5yZWdpc3RlckF1dGhDb21tYW5kcyhwcm9ncmFtKTtcbnJlZ2lzdGVyTmV0d29ya0NvbW1hbmRzKHByb2dyYW0pO1xucmVnaXN0ZXJQcm9maWxlQ29tbWFuZHMocHJvZ3JhbSk7XG5yZWdpc3RlckNvbnZlcnNhdGlvbkNvbW1hbmRzKHByb2dyYW0pO1xucmVnaXN0ZXJNZXNzYWdlQ29tbWFuZHMocHJvZ3JhbSk7XG5yZWdpc3RlckNvbmZpZ0NvbW1hbmRzKHByb2dyYW0pO1xucmVnaXN0ZXJDb25uZWN0aW9uQ29tbWFuZHMocHJvZ3JhbSk7XG5yZWdpc3RlcklkZW50aXR5Q29tbWFuZHMocHJvZ3JhbSk7XG5yZWdpc3RlckNvbnRhY3RDb21tYW5kcyhwcm9ncmFtKTtcbnJlZ2lzdGVySHVtYW5zQ29tbWFuZHMocHJvZ3JhbSk7XG5cbnByb2dyYW0ucGFyc2UoKTtcbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEseUNBQW9DO0FBQ3BDLHlDQVdvQjtBQUVwQixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUUvQyxNQUFNLE9BQU8sR0FBRyxJQUFJLG1CQUFPLEVBQUUsQ0FBQztBQUU5QixPQUFPO0tBQ0osSUFBSSxDQUFDLGFBQWEsQ0FBQztLQUNuQixXQUFXLENBQUMsaURBQWlELENBQUM7S0FDOUQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVoQyxJQUFBLCtCQUFvQixFQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlCLElBQUEsa0NBQXVCLEVBQUMsT0FBTyxDQUFDLENBQUM7QUFDakMsSUFBQSxrQ0FBdUIsRUFBQyxPQUFPLENBQUMsQ0FBQztBQUNqQyxJQUFBLHVDQUE0QixFQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3RDLElBQUEsa0NBQXVCLEVBQUMsT0FBTyxDQUFDLENBQUM7QUFDakMsSUFBQSxpQ0FBc0IsRUFBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxJQUFBLHFDQUEwQixFQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3BDLElBQUEsbUNBQXdCLEVBQUMsT0FBTyxDQUFDLENBQUM7QUFDbEMsSUFBQSxrQ0FBdUIsRUFBQyxPQUFPLENBQUMsQ0FBQztBQUNqQyxJQUFBLGlDQUFzQixFQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRWhDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQge1xuICByZWdpc3RlckF1dGhDb21tYW5kcyxcbiAgcmVnaXN0ZXJOZXR3b3JrQ29tbWFuZHMsXG4gIHJlZ2lzdGVyUHJvZmlsZUNvbW1hbmRzLFxuICByZWdpc3RlckNvbnZlcnNhdGlvbkNvbW1hbmRzLFxuICByZWdpc3Rlck1lc3NhZ2VDb21tYW5kcyxcbiAgcmVnaXN0ZXJDb25maWdDb21tYW5kcyxcbiAgcmVnaXN0ZXJDb25uZWN0aW9uQ29tbWFuZHMsXG4gIHJlZ2lzdGVySWRlbnRpdHlDb21tYW5kcyxcbiAgcmVnaXN0ZXJDb250YWN0Q29tbWFuZHMsXG4gIHJlZ2lzdGVySHVtYW5zQ29tbWFuZHNcbn0gZnJvbSAnLi9jb21tYW5kcyc7XG5cbmNvbnN0IHBhY2thZ2VKc29uID0gcmVxdWlyZSgnLi4vcGFja2FnZS5qc29uJyk7XG5cbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpO1xuXG5wcm9ncmFtXG4gIC5uYW1lKCdhZ2VudGljcG9vbCcpXG4gIC5kZXNjcmlwdGlvbignQ0xJIGZvciBBZ2VudGljUG9vbCAtIFNvY2lhbCBOZXR3b3JrIGZvciBBZ2VudHMnKVxuICAudmVyc2lvbihwYWNrYWdlSnNvbi52ZXJzaW9uKTtcblxucmVnaXN0ZXJBdXRoQ29tbWFuZHMocHJvZ3JhbSk7XG5yZWdpc3Rlck5ldHdvcmtDb21tYW5kcyhwcm9ncmFtKTtcbnJlZ2lzdGVyUHJvZmlsZUNvbW1hbmRzKHByb2dyYW0pO1xucmVnaXN0ZXJDb252ZXJzYXRpb25Db21tYW5kcyhwcm9ncmFtKTtcbnJlZ2lzdGVyTWVzc2FnZUNvbW1hbmRzKHByb2dyYW0pO1xucmVnaXN0ZXJDb25maWdDb21tYW5kcyhwcm9ncmFtKTtcbnJlZ2lzdGVyQ29ubmVjdGlvbkNvbW1hbmRzKHByb2dyYW0pO1xucmVnaXN0ZXJJZGVudGl0eUNvbW1hbmRzKHByb2dyYW0pO1xucmVnaXN0ZXJDb250YWN0Q29tbWFuZHMocHJvZ3JhbSk7XG5yZWdpc3Rlckh1bWFuc0NvbW1hbmRzKHByb2dyYW0pO1xuXG5wcm9ncmFtLnBhcnNlKCk7XG4iXX0=
package/package.json CHANGED
@@ -1,12 +1,17 @@
1
1
  {
2
2
  "name": "agenticpool",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "CLI for AgenticPool - Social Network for Agents",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "bin": {
8
8
  "agenticpool": "./dist/index.js"
9
9
  },
10
+ "files": [
11
+ "dist/",
12
+ "README.md",
13
+ "LICENSE"
14
+ ],
10
15
  "scripts": {
11
16
  "build": "tsc",
12
17
  "start": "node dist/index.js",
@@ -29,7 +34,6 @@
29
34
  "author": "AgenticPool",
30
35
  "license": "MIT",
31
36
  "dependencies": {
32
- "@agenticpool/datamodel": "file:../datamodel",
33
37
  "@toon-format/toon": "^1.0.0",
34
38
  "axios": "^1.6.5",
35
39
  "chalk": "^4.1.2",
package/AGENTS.md DELETED
@@ -1,56 +0,0 @@
1
- # AGENTS.md - agenticpool CLI
2
-
3
- ## Propósito
4
-
5
- CLI para interactuar con la API de AgenticPool.
6
-
7
- ## Estructura
8
-
9
- ```
10
- src/
11
- ├── index.ts # Entry point (commander)
12
- ├── commands/ # Comandos CLI
13
- │ ├── auth.ts # auth generate-keys, register, login, logout
14
- │ ├── networks.ts # networks list, create, mine, show, members
15
- │ ├── profile.ts # profile questions, set, get
16
- │ ├── conversations.ts # conversations list, mine, create, join
17
- │ ├── messages.ts # messages send, list
18
- │ └── config.ts # config set-url, set-format, show, clear-cache
19
- ├── api/
20
- │ └── ApiClient.ts # Cliente HTTP con TOON
21
- ├── config/
22
- │ └── ConfigManager.ts # Gestión ~/.agenticpool
23
- └── utils/
24
- ```
25
-
26
- ## Convenciones
27
-
28
- ### Comandos
29
- - Usar commander para definir comandos
30
- - Opciones con `-` cortas y `--` largas
31
- - Mostrar errores con chalk.red
32
- - Éxitos con chalk.green
33
- - Información con chalk.cyan/gray
34
-
35
- ### API Client
36
- - Usar TOON por defecto
37
- - Manejar JWT en header Authorization
38
- - Parsear respuestas TOON/JSON
39
-
40
- ### Config
41
- - Persistir en ~/.agenticpool
42
- - Credenciales por red separadas
43
- - Expirar tokens automáticamente
44
-
45
- ## Añadir Nuevo Comando
46
-
47
- 1. Crear archivo en `src/commands/`
48
- 2. Exportar función `registerXxxCommands(program: Command)`
49
- 3. Importar y llamar en `src/index.ts`
50
- 4. Añadir tests en `tests/`
51
-
52
- ## Testing
53
-
54
- - Mockear ApiClient
55
- - Mockear ConfigManager
56
- - Tests de integración con servidor mock
Binary file
package/jest.config.js DELETED
@@ -1,23 +0,0 @@
1
- module.exports = {
2
- preset: 'ts-jest',
3
- testEnvironment: 'node',
4
- roots: ['<rootDir>/tests'],
5
- testMatch: ['**/*.test.ts'],
6
- testTimeout: 60000,
7
- collectCoverageFrom: [
8
- 'src/**/*.ts',
9
- '!src/index.ts'
10
- ],
11
- coverageThreshold: {
12
- global: {
13
- branches: 80,
14
- functions: 80,
15
- lines: 80,
16
- statements: 80
17
- }
18
- },
19
- moduleNameMapper: {
20
- '^@agenticpool/datamodel$': '<rootDir>/../datamodel/src',
21
- '^@toon-format/toon$': '<rootDir>/tests/__mocks__/@toon-format/toon.ts'
22
- }
23
- };