openclaw-productboard 1.0.11 → 1.0.13

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.
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * ProductBoard Feature Management Tools
3
3
  */
4
+ import { cleanText } from '../utils/sanitize.js';
4
5
  export function createFeatureTools(client) {
5
6
  return [
6
7
  // pb_feature_create
@@ -135,7 +136,7 @@ export function createFeatureTools(client) {
135
136
  id: f.id,
136
137
  name: f.name,
137
138
  status: f.status,
138
- description: f.description?.substring(0, 200),
139
+ description: cleanText(f.description, 200),
139
140
  owner: f.owner?.email,
140
141
  url: f.links?.html,
141
142
  })),
@@ -304,7 +305,7 @@ export function createFeatureTools(client) {
304
305
  id: f.id,
305
306
  name: f.name,
306
307
  status: f.status,
307
- description: f.description?.substring(0, 200),
308
+ description: cleanText(f.description, 200),
308
309
  url: f.links?.html,
309
310
  })),
310
311
  };
@@ -312,4 +313,4 @@ export function createFeatureTools(client) {
312
313
  },
313
314
  ];
314
315
  }
315
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvZmVhdHVyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFXSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBMEI7SUFDM0QsT0FBTztRQUNMLG9CQUFvQjtRQUNwQjtZQUNFLElBQUksRUFBRSxtQkFBbUI7WUFDekIsV0FBVyxFQUNULGlJQUFpSTtZQUNuSSxVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsVUFBVSxFQUFFO29CQUNWLElBQUksRUFBRTt3QkFDSixJQUFJLEVBQUUsUUFBUTt3QkFDZCxXQUFXLEVBQUUsZ0NBQWdDO3FCQUM5QztvQkFDRCxXQUFXLEVBQUU7d0JBQ1gsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLHFEQUFxRDtxQkFDbkU7b0JBQ0QsTUFBTSxFQUFFO3dCQUNOLElBQUksRUFBRSxRQUFRO3dCQUNkLFdBQVcsRUFBRSxnQkFBZ0I7d0JBQzdCLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDO3FCQUM5RTtvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLG9EQUFvRDtxQkFDbEU7b0JBQ0QsV0FBVyxFQUFFO3dCQUNYLElBQUksRUFBRSxRQUFRO3dCQUNkLFdBQVcsRUFBRSxzREFBc0Q7cUJBQ3BFO29CQUNELGVBQWUsRUFBRTt3QkFDZixJQUFJLEVBQUUsUUFBUTt3QkFDZCxXQUFXLEVBQUUsNkNBQTZDO3FCQUMzRDtvQkFDRCxVQUFVLEVBQUU7d0JBQ1YsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLDRCQUE0QjtxQkFDMUM7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULElBQUksRUFBRSxRQUFRO3dCQUNkLFdBQVcsRUFBRSxzQ0FBc0M7cUJB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UUFBUSxDQUFDLE1BQU07b0JBQ3RCLFFBQVEsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUM3QixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7d0JBQ1IsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO3dCQUNaLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTTt3QkFDaEIsV0FBVyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUM7d0JBQzdDLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUk7cUJBQ25CLENBQUMsQ0FBQztpQkFDSixDQUFDO1lBQ0osQ0FBQztTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb2R1Y3RCb2FyZCBGZWF0dXJlIE1hbmFnZW1lbnQgVG9vbHNcbiAqL1xuXG5pbXBvcnQgeyBQcm9kdWN0Qm9hcmRDbGllbnQgfSBmcm9tICcuLi9jbGllbnQvYXBpLWNsaWVudC5qcyc7XG5pbXBvcnQge1xuICBUb29sRGVmaW5pdGlvbixcbiAgQ3JlYXRlRmVhdHVyZVBhcmFtcyxcbiAgVXBkYXRlRmVhdHVyZVBhcmFtcyxcbiAgTGlzdEZlYXR1cmVzUGFyYW1zLFxuICBGZWF0dXJlU3RhdHVzLFxufSBmcm9tICcuLi9jbGllbnQvdHlwZXMuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRmVhdHVyZVRvb2xzKGNsaWVudDogUHJvZHVjdEJvYXJkQ2xpZW50KTogVG9vbERlZmluaXRpb25bXSB7XG4gIHJldHVybiBbXG4gICAgLy8gcGJfZmVhdHVyZV9jcmVhdGVcbiAgICB7XG4gICAgICBuYW1lOiAncGJfZmVhdHVyZV9jcmVhdGUnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdDcmVhdGUgYSBuZXcgZmVhdHVyZSBpbiBQcm9kdWN0Qm9hcmQuIEZlYXR1cmVzIHJlcHJlc2VudCBwcm9kdWN0IGZ1bmN0aW9uYWxpdHksIHVzZXIgc3Rvcmllcywgb3IgaXRlbXMgaW4geW91ciBwcm9kdWN0IGJhY2tsb2cuJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgZmVhdHVyZSAocmVxdWlyZWQpJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIGZlYXR1cmUgKHN1cHBvcnRzIEhUTUwpJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0YXR1czoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0ZlYXR1cmUgc3RhdHVzJyxcbiAgICAgICAgICAgIGVudW06IFsnbmV3JywgJ2luLXByb2dyZXNzJywgJ3NoaXBwZWQnLCAnYXJjaGl2ZWQnLCAncG9zdHBvbmVkJywgJ2NhbmRpZGF0ZSddLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcHJvZHVjdElkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnSUQgb2YgdGhlIHBhcmVudCBwcm9kdWN0IHRvIGFzc2lnbiB0aGlzIGZlYXR1cmUgdG8nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29tcG9uZW50SWQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdJRCBvZiB0aGUgcGFyZW50IGNvbXBvbmVudCB0byBhc3NpZ24gdGhpcyBmZWF0dXJlIHRvJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhcmVudEZlYXR1cmVJZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0lEIG9mIHRoZSBwYXJlbnQgZmVhdHVyZSAoZm9yIHN1Yi1mZWF0dXJlcyknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3duZXJFbWFpbDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0VtYWlsIG9mIHRoZSBmZWF0dXJlIG93bmVyJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0YXJ0RGF0ZToge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1BsYW5uZWQgc3RhcnQgZGF0ZSAoSVNPIDg2MDEgZm9ybWF0KScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBlbmREYXRlOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUGxhbm5lZCBlbmQgZGF0ZSAoSVNPIDg2MDEgZm9ybWF0KScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWlyZWQ6IFsnbmFtZSddLFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IGFzeW5jIChwYXJhbXMpID0+IHtcbiAgICAgICAgY29uc3QgY3JlYXRlUGFyYW1zOiBDcmVhdGVGZWF0dXJlUGFyYW1zID0ge1xuICAgICAgICAgIG5hbWU6IHBhcmFtcy5uYW1lIGFzIHN0cmluZyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcGFyYW1zLmRlc2NyaXB0aW9uIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICBzdGF0dXM6IHBhcmFtcy5zdGF0dXMgYXMgRmVhdHVyZVN0YXR1cyB8IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBCdWlsZCBwYXJlbnQgcmVmZXJlbmNlXG4gICAgICAgIGlmIChwYXJhbXMucHJvZHVjdElkIHx8IHBhcmFtcy5jb21wb25lbnRJZCB8fCBwYXJhbXMucGFyZW50RmVhdHVyZUlkKSB7XG4gICAgICAgICAgY3JlYXRlUGFyYW1zLnBhcmVudCA9IHt9O1xuICAgICAgICAgIGlmIChwYXJhbXMucHJvZHVjdElkKSBjcmVhdGVQYXJhbXMucGFyZW50LnByb2R1Y3QgPSB7IGlkOiBwYXJhbXMucHJvZHVjdElkIGFzIHN0cmluZyB9O1xuICAgICAgICAgIGlmIChwYXJhbXMuY29tcG9uZW50SWQpIGNyZWF0ZVBhcmFtcy5wYXJlbnQuY29tcG9uZW50ID0geyBpZDogcGFyYW1zLmNvbXBvbmVudElkIGFzIHN0cmluZyB9O1xuICAgICAgICAgIGlmIChwYXJhbXMucGFyZW50RmVhdHVyZUlkKSBjcmVhdGVQYXJhbXMucGFyZW50LmZlYXR1cmUgPSB7IGlkOiBwYXJhbXMucGFyZW50RmVhdHVyZUlkIGFzIHN0cmluZyB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IG93bmVyXG4gICAgICAgIGlmIChwYXJhbXMub3duZXJFbWFpbCkge1xuICAgICAgICAgIGNyZWF0ZVBhcmFtcy5vd25lciA9IHsgZW1haWw6IHBhcmFtcy5vd25lckVtYWlsIGFzIHN0cmluZyB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IHRpbWVmcmFtZVxuICAgICAgICBpZiAocGFyYW1zLnN0YXJ0RGF0ZSB8fCBwYXJhbXMuZW5kRGF0ZSkge1xuICAgICAgICAgIGNyZWF0ZVBhcmFtcy50aW1lZnJhbWUgPSB7XG4gICAgICAgICAgICBzdGFydERhdGU6IHBhcmFtcy5zdGFydERhdGUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgZW5kRGF0ZTogcGFyYW1zLmVuZERhdGUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmZWF0dXJlID0gYXdhaXQgY2xpZW50LmNyZWF0ZUZlYXR1cmUoY3JlYXRlUGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgIGZlYXR1cmU6IHtcbiAgICAgICAgICAgIGlkOiBmZWF0dXJlLmlkLFxuICAgICAgICAgICAgbmFtZTogZmVhdHVyZS5uYW1lLFxuICAgICAgICAgICAgc3RhdHVzOiBmZWF0dXJlLnN0YXR1cyxcbiAgICAgICAgICAgIHVybDogZmVhdHVyZS5saW5rcz8uaHRtbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9LFxuXG4gICAgLy8gcGJfZmVhdHVyZV9saXN0XG4gICAge1xuICAgICAgbmFtZTogJ3BiX2ZlYXR1cmVfbGlzdCcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0xpc3QgZmVhdHVyZXMgaW4gUHJvZHVjdEJvYXJkIHdpdGggb3B0aW9uYWwgZmlsdGVycy4gUmV0dXJucyBmZWF0dXJlcyBmcm9tIHlvdXIgcHJvZHVjdCBiYWNrbG9nLicsXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgcHJvZHVjdElkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRmlsdGVyIGJ5IHByb2R1Y3QgSUQnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29tcG9uZW50SWQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdGaWx0ZXIgYnkgY29tcG9uZW50IElEJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0YXR1czoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0ZpbHRlciBieSBzdGF0dXMnLFxuICAgICAgICAgICAgZW51bTogWyduZXcnLCAnaW4tcHJvZ3Jlc3MnLCAnc2hpcHBlZCcsICdhcmNoaXZlZCcsICdwb3N0cG9uZWQnLCAnY2FuZGlkYXRlJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvd25lcklkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRmlsdGVyIGJ5IG93bmVyIElEJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTWF4aW11bSBudW1iZXIgb2YgZmVhdHVyZXMgdG8gcmV0dXJuIChkZWZhdWx0OiA1MCwgbWF4OiA1MDApJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6IDUwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogYXN5bmMgKHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCBsaXN0UGFyYW1zOiBMaXN0RmVhdHVyZXNQYXJhbXMgPSB7XG4gICAgICAgICAgcHJvZHVjdElkOiBwYXJhbXMucHJvZHVjdElkIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICBjb21wb25lbnRJZDogcGFyYW1zLmNvbXBvbmVudElkIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICBzdGF0dXM6IHBhcmFtcy5zdGF0dXMgYXMgRmVhdHVyZVN0YXR1cyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICBvd25lcklkOiBwYXJhbXMub3duZXJJZCBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgbGltaXQ6IE1hdGgubWluKHBhcmFtcy5saW1pdCBhcyBudW1iZXIgfHwgNTAsIDUwMCksXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBhd2FpdCBjbGllbnQubGlzdEZlYXR1cmVzKGxpc3RQYXJhbXMpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvdW50OiBmZWF0dXJlcy5sZW5ndGgsXG4gICAgICAgICAgZmVhdHVyZXM6IGZlYXR1cmVzLm1hcCgoZikgPT4gKHtcbiAgICAgICAgICAgIGlkOiBmLmlkLFxuICAgICAgICAgICAgbmFtZTogZi5uYW1lLFxuICAgICAgICAgICAgc3RhdHVzOiBmLnN0YXR1cyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBmLmRlc2NyaXB0aW9uPy5zdWJzdHJpbmcoMCwgMjAwKSxcbiAgICAgICAgICAgIG93bmVyOiBmLm93bmVyPy5lbWFpbCxcbiAgICAgICAgICAgIHVybDogZi5saW5rcz8uaHRtbCxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBwYl9mZWF0dXJlX2dldFxuICAgIHtcbiAgICAgIG5hbWU6ICdwYl9mZWF0dXJlX2dldCcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0dldCBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljIGZlYXR1cmUgYnkgSUQuJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBpZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0ZlYXR1cmUgSUQnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVpcmVkOiBbJ2lkJ10sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogYXN5bmMgKHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCBmZWF0dXJlID0gYXdhaXQgY2xpZW50LmdldEZlYXR1cmUocGFyYW1zLmlkIGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaWQ6IGZlYXR1cmUuaWQsXG4gICAgICAgICAgbmFtZTogZmVhdHVyZS5uYW1lLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBmZWF0dXJlLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIHN0YXR1czogZmVhdHVyZS5zdGF0dXMsXG4gICAgICAgICAgb3duZXI6IGZlYXR1cmUub3duZXI/LmVtYWlsLFxuICAgICAgICAgIHBhcmVudDogZmVhdHVyZS5wYXJlbnQsXG4gICAgICAgICAgdGltZWZyYW1lOiBmZWF0dXJlLnRpbWVmcmFtZSxcbiAgICAgICAgICBjcmVhdGVkQXQ6IGZlYXR1cmUuY3JlYXRlZEF0LFxuICAgICAgICAgIHVwZGF0ZWRBdDogZmVhdHVyZS51cGRhdGVkQXQsXG4gICAgICAgICAgdXJsOiBmZWF0dXJlLmxpbmtzPy5odG1sLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9LFxuXG4gICAgLy8gcGJfZmVhdHVyZV91cGRhdGVcbiAgICB7XG4gICAgICBuYW1lOiAncGJfZmVhdHVyZV91cGRhdGUnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdVcGRhdGUgYW4gZXhpc3RpbmcgZmVhdHVyZSBpbiBQcm9kdWN0Qm9hcmQuIE9ubHkgcHJvdmlkZWQgZmllbGRzIHdpbGwgYmUgdXBkYXRlZC4nLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGlkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRmVhdHVyZSBJRCB0byB1cGRhdGUnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmFtZToge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ05ldyBuYW1lIGZvciB0aGUgZmVhdHVyZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ05ldyBkZXNjcmlwdGlvbiAoc3VwcG9ydHMgSFRNTCknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTmV3IHN0YXR1cycsXG4gICAgICAgICAgICBlbnVtOiBbJ25ldycsICdpbi1wcm9ncmVzcycsICdzaGlwcGVkJywgJ2FyY2hpdmVkJywgJ3Bvc3Rwb25lZCcsICdjYW5kaWRhdGUnXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHByb2R1Y3RJZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ01vdmUgdG8gYSBkaWZmZXJlbnQgcHJvZHVjdCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb21wb25lbnRJZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ01vdmUgdG8gYSBkaWZmZXJlbnQgY29tcG9uZW50JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG93bmVyRW1haWw6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdOZXcgb3duZXIgZW1haWwnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RhcnREYXRlOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTmV3IHN0YXJ0IGRhdGUgKElTTyA4NjAxKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBlbmREYXRlOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTmV3IGVuZCBkYXRlIChJU08gODYwMSknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVpcmVkOiBbJ2lkJ10sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogYXN5bmMgKHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVQYXJhbXM6IFVwZGF0ZUZlYXR1cmVQYXJhbXMgPSB7fTtcblxuICAgICAgICBpZiAocGFyYW1zLm5hbWUpIHVwZGF0ZVBhcmFtcy5uYW1lID0gcGFyYW1zLm5hbWUgYXMgc3RyaW5nO1xuICAgICAgICBpZiAocGFyYW1zLmRlc2NyaXB0aW9uKSB1cGRhdGVQYXJhbXMuZGVzY3JpcHRpb24gPSBwYXJhbXMuZGVzY3JpcHRpb24gYXMgc3RyaW5nO1xuICAgICAgICBpZiAocGFyYW1zLnN0YXR1cykgdXBkYXRlUGFyYW1zLnN0YXR1cyA9IHBhcmFtcy5zdGF0dXMgYXMgRmVhdHVyZVN0YXR1cztcblxuICAgICAgICBpZiAocGFyYW1zLnByb2R1Y3RJZCB8fCBwYXJhbXMuY29tcG9uZW50SWQpIHtcbiAgICAgICAgICB1cGRhdGVQYXJhbXMucGFyZW50ID0ge307XG4gICAgICAgICAgaWYgKHBhcmFtcy5wcm9kdWN0SWQpIHVwZGF0ZVBhcmFtcy5wYXJlbnQucHJvZHVjdCA9IHsgaWQ6IHBhcmFtcy5wcm9kdWN0SWQgYXMgc3RyaW5nIH07XG4gICAgICAgICAgaWYgKHBhcmFtcy5jb21wb25lbnRJZCkgdXBkYXRlUGFyYW1zLnBhcmVudC5jb21wb25lbnQgPSB7IGlkOiBwYXJhbXMuY29tcG9uZW50SWQgYXMgc3RyaW5nIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFyYW1zLm93bmVyRW1haWwpIHtcbiAgICAgICAgICB1cGRhdGVQYXJhbXMub3duZXIgPSB7IGVtYWlsOiBwYXJhbXMub3duZXJFbWFpbCBhcyBzdHJpbmcgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJhbXMuc3RhcnREYXRlIHx8IHBhcmFtcy5lbmREYXRlKSB7XG4gICAgICAgICAgdXBkYXRlUGFyYW1zLnRpbWVmcmFtZSA9IHtcbiAgICAgICAgICAgIHN0YXJ0RGF0ZTogcGFyYW1zLnN0YXJ0RGF0ZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICBlbmREYXRlOiBwYXJhbXMuZW5kRGF0ZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZlYXR1cmUgPSBhd2FpdCBjbGllbnQudXBkYXRlRmVhdHVyZShwYXJhbXMuaWQgYXMgc3RyaW5nLCB1cGRhdGVQYXJhbXMpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgZmVhdHVyZToge1xuICAgICAgICAgICAgaWQ6IGZlYXR1cmUuaWQsXG4gICAgICAgICAgICBuYW1lOiBmZWF0dXJlLm5hbWUsXG4gICAgICAgICAgICBzdGF0dXM6IGZlYXR1cmUuc3RhdHVzLFxuICAgICAgICAgICAgdXJsOiBmZWF0dXJlLmxpbmtzPy5odG1sLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBwYl9mZWF0dXJlX2RlbGV0ZVxuICAgIHtcbiAgICAgIG5hbWU6ICdwYl9mZWF0dXJlX2RlbGV0ZScsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0FyY2hpdmUvZGVsZXRlIGEgZmVhdHVyZSBmcm9tIFByb2R1Y3RCb2FyZC4gVGhpcyBhY3Rpb24gY2FuIGJlIHVuZG9uZSBpbiBQcm9kdWN0Qm9hcmQuJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBpZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0ZlYXR1cmUgSUQgdG8gZGVsZXRlJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICByZXF1aXJlZDogWydpZCddLFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IGFzeW5jIChwYXJhbXMpID0+IHtcbiAgICAgICAgYXdhaXQgY2xpZW50LmRlbGV0ZUZlYXR1cmUocGFyYW1zLmlkIGFzIHN0cmluZyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiBgRmVhdHVyZSAke3BhcmFtcy5pZH0gaGFzIGJlZW4gYXJjaGl2ZWRgLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9LFxuXG4gICAgLy8gcGJfZmVhdHVyZV9zZWFyY2hcbiAgICB7XG4gICAgICBuYW1lOiAncGJfZmVhdHVyZV9zZWFyY2gnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdTZWFyY2ggZm9yIGZlYXR1cmVzIGJ5IG5hbWUgb3IgZGVzY3JpcHRpb24uIFJldHVybnMgbWF0Y2hpbmcgZmVhdHVyZXMgb3JkZXJlZCBieSByZWxldmFuY2UuJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1NlYXJjaCBxdWVyeSAoc2VhcmNoZXMgbmFtZSBhbmQgZGVzY3JpcHRpb24pJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTWF4aW11bSByZXN1bHRzIHRvIHJldHVybiAoZGVmYXVsdDogMjApJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6IDIwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVpcmVkOiBbJ3F1ZXJ5J10sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogYXN5bmMgKHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IGNsaWVudC5zZWFyY2hGZWF0dXJlcyhcbiAgICAgICAgICBwYXJhbXMucXVlcnkgYXMgc3RyaW5nLFxuICAgICAgICAgIHBhcmFtcy5saW1pdCBhcyBudW1iZXIgfHwgMjBcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb3VudDogZmVhdHVyZXMubGVuZ3RoLFxuICAgICAgICAgIGZlYXR1cmVzOiBmZWF0dXJlcy5tYXAoKGYpID0+ICh7XG4gICAgICAgICAgICBpZDogZi5pZCxcbiAgICAgICAgICAgIG5hbWU6IGYubmFtZSxcbiAgICAgICAgICAgIHN0YXR1czogZi5zdGF0dXMsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogZi5kZXNjcmlwdGlvbj8uc3Vic3RyaW5nKDAsIDIwMCksXG4gICAgICAgICAgICB1cmw6IGYubGlua3M/Lmh0bWwsXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9LFxuICBdO1xufVxuIl19
316
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvZmVhdHVyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFVSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFakQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE1BQTBCO0lBQzNELE9BQU87UUFDTCxvQkFBb0I7UUFDcEI7WUFDRSxJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLFdBQVcsRUFDVCxpSUFBaUk7WUFDbkksVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxRQUFRO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixJQUFJLEVBQUU7d0JBQ0osSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLGdDQUFnQztxQkFDOUM7b0JBQ0QsV0FBVyxFQUFFO3dCQUNYLElBQUksRUFBRSxRQUFRO3dCQUNkLFdBQVcsRUFBRSxxREFBcUQ7cUJBQ25FO29CQUNELE1BQU0sRUFBRTt3QkFDTixJQUFJLEVBQUUsUUFBUTt3QkFDZCxXQUFXLEVBQUUsZ0JBQWdCO3dCQUM3QixJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQztxQkFDOUU7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULElBQUksRUFBRSxRQUFRO3dCQUNkLFdBQVcsRUFBRSxvREFBb0Q7cUJBQ2xFO29CQUNELFdBQVcsRUFBRTt3QkFDWCxJQUFJLEVBQUUsUUFBUTt3QkFDZCxXQUFXLEVBQUUsc0RBQXNEO3FCQUNwRTtvQkFDRCxlQUFlLEVBQUU7d0JBQ2YsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLDZDQUE2QztxQkFDM0Q7b0JBQ0QsVUFBVSxFQUFFO3dCQUNWLElBQUksRUFBRSxRQUFRO3dCQUNkLFdBQVcsRUFBRSw0QkFBNEI7cUJBQzFDO29CQUNELFNBQVMsRUFBRTt3QkFD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LENBQUM7Z0JBQ0YsT0FBTztvQkFDTCxLQUFLLEVBQUUsUUFBUSxDQUFDLE1BQU07b0JBQ3RCLFFBQVEsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUM3QixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7d0JBQ1IsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO3dCQUNaLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTTt3QkFDaEIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQzt3QkFDMUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSTtxQkFDbkIsQ0FBQyxDQUFDO2lCQUNKLENBQUM7WUFDSixDQUFDO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHJvZHVjdEJvYXJkIEZlYXR1cmUgTWFuYWdlbWVudCBUb29sc1xuICovXG5cbmltcG9ydCB7IFByb2R1Y3RCb2FyZENsaWVudCB9IGZyb20gJy4uL2NsaWVudC9hcGktY2xpZW50LmpzJztcbmltcG9ydCB7XG4gIFRvb2xEZWZpbml0aW9uLFxuICBDcmVhdGVGZWF0dXJlUGFyYW1zLFxuICBVcGRhdGVGZWF0dXJlUGFyYW1zLFxuICBMaXN0RmVhdHVyZXNQYXJhbXMsXG4gIEZlYXR1cmVTdGF0dXMsXG59IGZyb20gJy4uL2NsaWVudC90eXBlcy5qcyc7XG5pbXBvcnQgeyBjbGVhblRleHQgfSBmcm9tICcuLi91dGlscy9zYW5pdGl6ZS5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGZWF0dXJlVG9vbHMoY2xpZW50OiBQcm9kdWN0Qm9hcmRDbGllbnQpOiBUb29sRGVmaW5pdGlvbltdIHtcbiAgcmV0dXJuIFtcbiAgICAvLyBwYl9mZWF0dXJlX2NyZWF0ZVxuICAgIHtcbiAgICAgIG5hbWU6ICdwYl9mZWF0dXJlX2NyZWF0ZScsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0NyZWF0ZSBhIG5ldyBmZWF0dXJlIGluIFByb2R1Y3RCb2FyZC4gRmVhdHVyZXMgcmVwcmVzZW50IHByb2R1Y3QgZnVuY3Rpb25hbGl0eSwgdXNlciBzdG9yaWVzLCBvciBpdGVtcyBpbiB5b3VyIHByb2R1Y3QgYmFja2xvZy4nLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIG5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdOYW1lIG9mIHRoZSBmZWF0dXJlIChyZXF1aXJlZCknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdEZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgZmVhdHVyZSAoc3VwcG9ydHMgSFRNTCknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRmVhdHVyZSBzdGF0dXMnLFxuICAgICAgICAgICAgZW51bTogWyduZXcnLCAnaW4tcHJvZ3Jlc3MnLCAnc2hpcHBlZCcsICdhcmNoaXZlZCcsICdwb3N0cG9uZWQnLCAnY2FuZGlkYXRlJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwcm9kdWN0SWQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdJRCBvZiB0aGUgcGFyZW50IHByb2R1Y3QgdG8gYXNzaWduIHRoaXMgZmVhdHVyZSB0bycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb21wb25lbnRJZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0lEIG9mIHRoZSBwYXJlbnQgY29tcG9uZW50IHRvIGFzc2lnbiB0aGlzIGZlYXR1cmUgdG8nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFyZW50RmVhdHVyZUlkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnSUQgb2YgdGhlIHBhcmVudCBmZWF0dXJlIChmb3Igc3ViLWZlYXR1cmVzKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvd25lckVtYWlsOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRW1haWwgb2YgdGhlIGZlYXR1cmUgb3duZXInLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RhcnREYXRlOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUGxhbm5lZCBzdGFydCBkYXRlIChJU08gODYwMSBmb3JtYXQpJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVuZERhdGU6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdQbGFubmVkIGVuZCBkYXRlIChJU08gODYwMSBmb3JtYXQpJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICByZXF1aXJlZDogWyduYW1lJ10sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogYXN5bmMgKHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCBjcmVhdGVQYXJhbXM6IENyZWF0ZUZlYXR1cmVQYXJhbXMgPSB7XG4gICAgICAgICAgbmFtZTogcGFyYW1zLm5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBwYXJhbXMuZGVzY3JpcHRpb24gYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICAgIHN0YXR1czogcGFyYW1zLnN0YXR1cyBhcyBGZWF0dXJlU3RhdHVzIHwgdW5kZWZpbmVkLFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIEJ1aWxkIHBhcmVudCByZWZlcmVuY2VcbiAgICAgICAgaWYgKHBhcmFtcy5wcm9kdWN0SWQgfHwgcGFyYW1zLmNvbXBvbmVudElkIHx8IHBhcmFtcy5wYXJlbnRGZWF0dXJlSWQpIHtcbiAgICAgICAgICBjcmVhdGVQYXJhbXMucGFyZW50ID0ge307XG4gICAgICAgICAgaWYgKHBhcmFtcy5wcm9kdWN0SWQpIGNyZWF0ZVBhcmFtcy5wYXJlbnQucHJvZHVjdCA9IHsgaWQ6IHBhcmFtcy5wcm9kdWN0SWQgYXMgc3RyaW5nIH07XG4gICAgICAgICAgaWYgKHBhcmFtcy5jb21wb25lbnRJZCkgY3JlYXRlUGFyYW1zLnBhcmVudC5jb21wb25lbnQgPSB7IGlkOiBwYXJhbXMuY29tcG9uZW50SWQgYXMgc3RyaW5nIH07XG4gICAgICAgICAgaWYgKHBhcmFtcy5wYXJlbnRGZWF0dXJlSWQpIGNyZWF0ZVBhcmFtcy5wYXJlbnQuZmVhdHVyZSA9IHsgaWQ6IHBhcmFtcy5wYXJlbnRGZWF0dXJlSWQgYXMgc3RyaW5nIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgb3duZXJcbiAgICAgICAgaWYgKHBhcmFtcy5vd25lckVtYWlsKSB7XG4gICAgICAgICAgY3JlYXRlUGFyYW1zLm93bmVyID0geyBlbWFpbDogcGFyYW1zLm93bmVyRW1haWwgYXMgc3RyaW5nIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdGltZWZyYW1lXG4gICAgICAgIGlmIChwYXJhbXMuc3RhcnREYXRlIHx8IHBhcmFtcy5lbmREYXRlKSB7XG4gICAgICAgICAgY3JlYXRlUGFyYW1zLnRpbWVmcmFtZSA9IHtcbiAgICAgICAgICAgIHN0YXJ0RGF0ZTogcGFyYW1zLnN0YXJ0RGF0ZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICBlbmREYXRlOiBwYXJhbXMuZW5kRGF0ZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZlYXR1cmUgPSBhd2FpdCBjbGllbnQuY3JlYXRlRmVhdHVyZShjcmVhdGVQYXJhbXMpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgZmVhdHVyZToge1xuICAgICAgICAgICAgaWQ6IGZlYXR1cmUuaWQsXG4gICAgICAgICAgICBuYW1lOiBmZWF0dXJlLm5hbWUsXG4gICAgICAgICAgICBzdGF0dXM6IGZlYXR1cmUuc3RhdHVzLFxuICAgICAgICAgICAgdXJsOiBmZWF0dXJlLmxpbmtzPy5odG1sLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBwYl9mZWF0dXJlX2xpc3RcbiAgICB7XG4gICAgICBuYW1lOiAncGJfZmVhdHVyZV9saXN0JyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnTGlzdCBmZWF0dXJlcyBpbiBQcm9kdWN0Qm9hcmQgd2l0aCBvcHRpb25hbCBmaWx0ZXJzLiBSZXR1cm5zIGZlYXR1cmVzIGZyb20geW91ciBwcm9kdWN0IGJhY2tsb2cuJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBwcm9kdWN0SWQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdGaWx0ZXIgYnkgcHJvZHVjdCBJRCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb21wb25lbnRJZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0ZpbHRlciBieSBjb21wb25lbnQgSUQnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRmlsdGVyIGJ5IHN0YXR1cycsXG4gICAgICAgICAgICBlbnVtOiBbJ25ldycsICdpbi1wcm9ncmVzcycsICdzaGlwcGVkJywgJ2FyY2hpdmVkJywgJ3Bvc3Rwb25lZCcsICdjYW5kaWRhdGUnXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG93bmVySWQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdGaWx0ZXIgYnkgb3duZXIgSUQnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGltaXQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdNYXhpbXVtIG51bWJlciBvZiBmZWF0dXJlcyB0byByZXR1cm4gKGRlZmF1bHQ6IDUwLCBtYXg6IDUwMCknLFxuICAgICAgICAgICAgZGVmYXVsdDogNTAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiBhc3luYyAocGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpc3RQYXJhbXM6IExpc3RGZWF0dXJlc1BhcmFtcyA9IHtcbiAgICAgICAgICBwcm9kdWN0SWQ6IHBhcmFtcy5wcm9kdWN0SWQgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICAgIGNvbXBvbmVudElkOiBwYXJhbXMuY29tcG9uZW50SWQgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICAgIHN0YXR1czogcGFyYW1zLnN0YXR1cyBhcyBGZWF0dXJlU3RhdHVzIHwgdW5kZWZpbmVkLFxuICAgICAgICAgIG93bmVySWQ6IHBhcmFtcy5vd25lcklkIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICBsaW1pdDogTWF0aC5taW4ocGFyYW1zLmxpbWl0IGFzIG51bWJlciB8fCA1MCwgNTAwKSxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IGNsaWVudC5saXN0RmVhdHVyZXMobGlzdFBhcmFtcyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY291bnQ6IGZlYXR1cmVzLmxlbmd0aCxcbiAgICAgICAgICBmZWF0dXJlczogZmVhdHVyZXMubWFwKChmKSA9PiAoe1xuICAgICAgICAgICAgaWQ6IGYuaWQsXG4gICAgICAgICAgICBuYW1lOiBmLm5hbWUsXG4gICAgICAgICAgICBzdGF0dXM6IGYuc3RhdHVzLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGNsZWFuVGV4dChmLmRlc2NyaXB0aW9uLCAyMDApLFxuICAgICAgICAgICAgb3duZXI6IGYub3duZXI/LmVtYWlsLFxuICAgICAgICAgICAgdXJsOiBmLmxpbmtzPy5odG1sLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIHBiX2ZlYXR1cmVfZ2V0XG4gICAge1xuICAgICAgbmFtZTogJ3BiX2ZlYXR1cmVfZ2V0JyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnR2V0IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGEgc3BlY2lmaWMgZmVhdHVyZSBieSBJRC4nLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGlkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRmVhdHVyZSBJRCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWlyZWQ6IFsnaWQnXSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiBhc3luYyAocGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IGZlYXR1cmUgPSBhd2FpdCBjbGllbnQuZ2V0RmVhdHVyZShwYXJhbXMuaWQgYXMgc3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpZDogZmVhdHVyZS5pZCxcbiAgICAgICAgICBuYW1lOiBmZWF0dXJlLm5hbWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IGZlYXR1cmUuZGVzY3JpcHRpb24sXG4gICAgICAgICAgc3RhdHVzOiBmZWF0dXJlLnN0YXR1cyxcbiAgICAgICAgICBvd25lcjogZmVhdHVyZS5vd25lcj8uZW1haWwsXG4gICAgICAgICAgcGFyZW50OiBmZWF0dXJlLnBhcmVudCxcbiAgICAgICAgICB0aW1lZnJhbWU6IGZlYXR1cmUudGltZWZyYW1lLFxuICAgICAgICAgIGNyZWF0ZWRBdDogZmVhdHVyZS5jcmVhdGVkQXQsXG4gICAgICAgICAgdXBkYXRlZEF0OiBmZWF0dXJlLnVwZGF0ZWRBdCxcbiAgICAgICAgICB1cmw6IGZlYXR1cmUubGlua3M/Lmh0bWwsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBwYl9mZWF0dXJlX3VwZGF0ZVxuICAgIHtcbiAgICAgIG5hbWU6ICdwYl9mZWF0dXJlX3VwZGF0ZScsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1VwZGF0ZSBhbiBleGlzdGluZyBmZWF0dXJlIGluIFByb2R1Y3RCb2FyZC4gT25seSBwcm92aWRlZCBmaWVsZHMgd2lsbCBiZSB1cGRhdGVkLicsXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgaWQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdGZWF0dXJlIElEIHRvIHVwZGF0ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTmV3IG5hbWUgZm9yIHRoZSBmZWF0dXJlJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTmV3IGRlc2NyaXB0aW9uIChzdXBwb3J0cyBIVE1MKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdGF0dXM6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdOZXcgc3RhdHVzJyxcbiAgICAgICAgICAgIGVudW06IFsnbmV3JywgJ2luLXByb2dyZXNzJywgJ3NoaXBwZWQnLCAnYXJjaGl2ZWQnLCAncG9zdHBvbmVkJywgJ2NhbmRpZGF0ZSddLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcHJvZHVjdElkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTW92ZSB0byBhIGRpZmZlcmVudCBwcm9kdWN0JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbXBvbmVudElkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTW92ZSB0byBhIGRpZmZlcmVudCBjb21wb25lbnQnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3duZXJFbWFpbDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ05ldyBvd25lciBlbWFpbCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdGFydERhdGU6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdOZXcgc3RhcnQgZGF0ZSAoSVNPIDg2MDEpJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVuZERhdGU6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdOZXcgZW5kIGRhdGUgKElTTyA4NjAxKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWlyZWQ6IFsnaWQnXSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiBhc3luYyAocGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZVBhcmFtczogVXBkYXRlRmVhdHVyZVBhcmFtcyA9IHt9O1xuXG4gICAgICAgIGlmIChwYXJhbXMubmFtZSkgdXBkYXRlUGFyYW1zLm5hbWUgPSBwYXJhbXMubmFtZSBhcyBzdHJpbmc7XG4gICAgICAgIGlmIChwYXJhbXMuZGVzY3JpcHRpb24pIHVwZGF0ZVBhcmFtcy5kZXNjcmlwdGlvbiA9IHBhcmFtcy5kZXNjcmlwdGlvbiBhcyBzdHJpbmc7XG4gICAgICAgIGlmIChwYXJhbXMuc3RhdHVzKSB1cGRhdGVQYXJhbXMuc3RhdHVzID0gcGFyYW1zLnN0YXR1cyBhcyBGZWF0dXJlU3RhdHVzO1xuXG4gICAgICAgIGlmIChwYXJhbXMucHJvZHVjdElkIHx8IHBhcmFtcy5jb21wb25lbnRJZCkge1xuICAgICAgICAgIHVwZGF0ZVBhcmFtcy5wYXJlbnQgPSB7fTtcbiAgICAgICAgICBpZiAocGFyYW1zLnByb2R1Y3RJZCkgdXBkYXRlUGFyYW1zLnBhcmVudC5wcm9kdWN0ID0geyBpZDogcGFyYW1zLnByb2R1Y3RJZCBhcyBzdHJpbmcgfTtcbiAgICAgICAgICBpZiAocGFyYW1zLmNvbXBvbmVudElkKSB1cGRhdGVQYXJhbXMucGFyZW50LmNvbXBvbmVudCA9IHsgaWQ6IHBhcmFtcy5jb21wb25lbnRJZCBhcyBzdHJpbmcgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJhbXMub3duZXJFbWFpbCkge1xuICAgICAgICAgIHVwZGF0ZVBhcmFtcy5vd25lciA9IHsgZW1haWw6IHBhcmFtcy5vd25lckVtYWlsIGFzIHN0cmluZyB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhcmFtcy5zdGFydERhdGUgfHwgcGFyYW1zLmVuZERhdGUpIHtcbiAgICAgICAgICB1cGRhdGVQYXJhbXMudGltZWZyYW1lID0ge1xuICAgICAgICAgICAgc3RhcnREYXRlOiBwYXJhbXMuc3RhcnREYXRlIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGVuZERhdGU6IHBhcmFtcy5lbmREYXRlIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmVhdHVyZSA9IGF3YWl0IGNsaWVudC51cGRhdGVGZWF0dXJlKHBhcmFtcy5pZCBhcyBzdHJpbmcsIHVwZGF0ZVBhcmFtcyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICBmZWF0dXJlOiB7XG4gICAgICAgICAgICBpZDogZmVhdHVyZS5pZCxcbiAgICAgICAgICAgIG5hbWU6IGZlYXR1cmUubmFtZSxcbiAgICAgICAgICAgIHN0YXR1czogZmVhdHVyZS5zdGF0dXMsXG4gICAgICAgICAgICB1cmw6IGZlYXR1cmUubGlua3M/Lmh0bWwsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIHBiX2ZlYXR1cmVfZGVsZXRlXG4gICAge1xuICAgICAgbmFtZTogJ3BiX2ZlYXR1cmVfZGVsZXRlJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnQXJjaGl2ZS9kZWxldGUgYSBmZWF0dXJlIGZyb20gUHJvZHVjdEJvYXJkLiBUaGlzIGFjdGlvbiBjYW4gYmUgdW5kb25lIGluIFByb2R1Y3RCb2FyZC4nLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGlkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRmVhdHVyZSBJRCB0byBkZWxldGUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVpcmVkOiBbJ2lkJ10sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogYXN5bmMgKHBhcmFtcykgPT4ge1xuICAgICAgICBhd2FpdCBjbGllbnQuZGVsZXRlRmVhdHVyZShwYXJhbXMuaWQgYXMgc3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgIG1lc3NhZ2U6IGBGZWF0dXJlICR7cGFyYW1zLmlkfSBoYXMgYmVlbiBhcmNoaXZlZGAsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBwYl9mZWF0dXJlX3NlYXJjaFxuICAgIHtcbiAgICAgIG5hbWU6ICdwYl9mZWF0dXJlX3NlYXJjaCcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1NlYXJjaCBmb3IgZmVhdHVyZXMgYnkgbmFtZSBvciBkZXNjcmlwdGlvbi4gUmV0dXJucyBtYXRjaGluZyBmZWF0dXJlcyBvcmRlcmVkIGJ5IHJlbGV2YW5jZS4nLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU2VhcmNoIHF1ZXJ5IChzZWFyY2hlcyBuYW1lIGFuZCBkZXNjcmlwdGlvbiknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGltaXQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdNYXhpbXVtIHJlc3VsdHMgdG8gcmV0dXJuIChkZWZhdWx0OiAyMCknLFxuICAgICAgICAgICAgZGVmYXVsdDogMjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWlyZWQ6IFsncXVlcnknXSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiBhc3luYyAocGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IGZlYXR1cmVzID0gYXdhaXQgY2xpZW50LnNlYXJjaEZlYXR1cmVzKFxuICAgICAgICAgIHBhcmFtcy5xdWVyeSBhcyBzdHJpbmcsXG4gICAgICAgICAgcGFyYW1zLmxpbWl0IGFzIG51bWJlciB8fCAyMFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvdW50OiBmZWF0dXJlcy5sZW5ndGgsXG4gICAgICAgICAgZmVhdHVyZXM6IGZlYXR1cmVzLm1hcCgoZikgPT4gKHtcbiAgICAgICAgICAgIGlkOiBmLmlkLFxuICAgICAgICAgICAgbmFtZTogZi5uYW1lLFxuICAgICAgICAgICAgc3RhdHVzOiBmLnN0YXR1cyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBjbGVhblRleHQoZi5kZXNjcmlwdGlvbiwgMjAwKSxcbiAgICAgICAgICAgIHVybDogZi5saW5rcz8uaHRtbCxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0sXG4gIF07XG59XG4iXX0=
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * ProductBoard Note/Feedback Management Tools
3
3
  */
4
+ import { cleanText } from '../utils/sanitize.js';
4
5
  export function createNoteTools(client) {
5
6
  return [
6
7
  // pb_note_create
@@ -88,7 +89,7 @@ export function createNoteTools(client) {
88
89
  note: {
89
90
  id: note.id,
90
91
  title: note.title,
91
- content: note.content?.substring(0, 200),
92
+ content: cleanText(note.content, 200),
92
93
  user: note.user?.email,
93
94
  company: note.company?.name,
94
95
  tags: note.tags,
@@ -131,7 +132,7 @@ export function createNoteTools(client) {
131
132
  notes: notes.map((n) => ({
132
133
  id: n.id,
133
134
  title: n.title,
134
- content: n.content?.substring(0, 200),
135
+ content: cleanText(n.content, 200),
135
136
  user: n.user?.email,
136
137
  company: n.company?.name,
137
138
  tags: n.tags,
@@ -170,4 +171,4 @@ export function createNoteTools(client) {
170
171
  },
171
172
  ];
172
173
  }
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvbm90ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFLSCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQTBCO0lBQ3hELE9BQU87UUFDTCxpQkFBaUI7UUFDakI7WUFDRSxJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLFdBQVcsRUFDVCxzSkFBc0o7WUFDeEosVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxRQUFRO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixPQUFPLEVBQUU7d0JBQ1AsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLDBEQUEwRDtxQkFDeEU7b0JBQ0QsS0FBSyxFQUFFO3dCQUNMLElBQUksRUFBRSxRQUFRO3dCQUNkLFdBQVcsRUFBRSw2QkFBNkI7cUJBQzNDO29CQUNELFVBQVUsRUFBRTt3QkFDVixJQUFJLEVBQUUsUUFBUTt3QkFDZCxXQUFXLEVBQUUsa0VBQWtFO3FCQUNoRjtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLGlFQUFpRTtxQkFDL0U7b0JBQ0QsY0FBYyxFQUFFO3dCQUNkLElBQUksRUFBRSxRQUFRO3dCQUNkLFdBQVcsRUFBRSxnQ0FBZ0M7cUJBQzlDO29CQUNELFNBQVMsRUFBRTt3QkFDVCxJQUFJLEVBQUUsUUFBUTt3QkFDZCxXQUFXLEVBQUUsNkNBQTZDO3FCQUMzRDtvQkFDRCxRQUFRLEVBQUU7d0JBQ1IsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLDRDQUE0QztxQkFDMUQ7b0JBQ0QsV0FBVyxFQUFFO3dCQUNYLElBQUksRUFBRSxRQUFRO3dCQUNkLFdBQVcsRUFBRSxrREFBa0Q7cUJBQ2hFO29CQUNELFNBQVMsRUFBRTt3QkFDVCxJQUFJLEVBQUUsUUFBUTt3QkFDZCxXQUFXLEVBQUUscUJBQXFCO3FCQUNuQztvQkFDRCxJQUFJLEVBQUU7d0JB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RUFBRSxXQUFXLENBQUM7YUFDbEM7WUFDRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUN4QixNQUFNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FDOUIsTUFBTSxDQUFDLE1BQWdCLEVBQ3ZCLE1BQU0sQ0FBQyxTQUFtQixDQUMzQixDQUFDO2dCQUNGLE9BQU87b0JBQ0wsT0FBTyxFQUFFLElBQUk7b0JBQ2IsT0FBTyxFQUFFLFFBQVEsTUFBTSxDQUFDLE1BQU0saUNBQWlDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7aUJBQ2xGLENBQUM7WUFDSixDQUFDO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHJvZHVjdEJvYXJkIE5vdGUvRmVlZGJhY2sgTWFuYWdlbWVudCBUb29sc1xuICovXG5cbmltcG9ydCB7IFByb2R1Y3RCb2FyZENsaWVudCB9IGZyb20gJy4uL2NsaWVudC9hcGktY2xpZW50LmpzJztcbmltcG9ydCB7IFRvb2xEZWZpbml0aW9uLCBDcmVhdGVOb3RlUGFyYW1zLCBMaXN0Tm90ZXNQYXJhbXMgfSBmcm9tICcuLi9jbGllbnQvdHlwZXMuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTm90ZVRvb2xzKGNsaWVudDogUHJvZHVjdEJvYXJkQ2xpZW50KTogVG9vbERlZmluaXRpb25bXSB7XG4gIHJldHVybiBbXG4gICAgLy8gcGJfbm90ZV9jcmVhdGVcbiAgICB7XG4gICAgICBuYW1lOiAncGJfbm90ZV9jcmVhdGUnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdDcmVhdGUgYSBjdXN0b21lciBmZWVkYmFjayBub3RlIGluIFByb2R1Y3RCb2FyZC4gTm90ZXMgY2FwdHVyZSBjdXN0b21lciBpbnNpZ2h0cywgZmVhdHVyZSByZXF1ZXN0cywgb3IgdXNlciBmZWVkYmFjayB0aGF0IGNhbiBiZSBsaW5rZWQgdG8gZmVhdHVyZXMuJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIG5vdGUgY29udGVudC9mZWVkYmFjayB0ZXh0IChyZXF1aXJlZCwgc3VwcG9ydHMgSFRNTCknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpb25hbCB0aXRsZSBmb3IgdGhlIG5vdGUnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZGlzcGxheVVybDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VSTCB0byB0aGUgb3JpZ2luYWwgc291cmNlIChlLmcuLCBzdXBwb3J0IHRpY2tldCwgU2xhY2sgbWVzc2FnZSknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc291cmNlT3JpZ2luOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnT3JpZ2luIHN5c3RlbSBpZGVudGlmaWVyIChlLmcuLCBcInplbmRlc2tcIiwgXCJpbnRlcmNvbVwiLCBcInNsYWNrXCIpJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNvdXJjZVJlY29yZElkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUmVjb3JkIElEIGluIHRoZSBvcmlnaW4gc3lzdGVtJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHVzZXJFbWFpbDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0VtYWlsIG9mIHRoZSB1c2VyIHdobyBwcm92aWRlZCB0aGUgZmVlZGJhY2snLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdXNlck5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdOYW1lIG9mIHRoZSB1c2VyIHdobyBwcm92aWRlZCB0aGUgZmVlZGJhY2snLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29tcGFueU5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdDb21wYW55L29yZ2FuaXphdGlvbiBuYW1lIG9mIHRoZSBmZWVkYmFjayBzb3VyY2UnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29tcGFueUlkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRXh0ZXJuYWwgY29tcGFueSBJRCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdBcnJheSBvZiB0YWdzIHRvIGNhdGVnb3JpemUgdGhlIG5vdGUnLFxuICAgICAgICAgICAgaXRlbXM6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICByZXF1aXJlZDogWydjb250ZW50J10sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogYXN5bmMgKHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCBjcmVhdGVQYXJhbXM6IENyZWF0ZU5vdGVQYXJhbXMgPSB7XG4gICAgICAgICAgY29udGVudDogcGFyYW1zLmNvbnRlbnQgYXMgc3RyaW5nLFxuICAgICAgICAgIHRpdGxlOiBwYXJhbXMudGl0bGUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICAgIGRpc3BsYXlVcmw6IHBhcmFtcy5kaXNwbGF5VXJsIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICB0YWdzOiBwYXJhbXMudGFncyBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBTZXQgc291cmNlIGlmIHByb3ZpZGVkXG4gICAgICAgIGlmIChwYXJhbXMuc291cmNlT3JpZ2luIHx8IHBhcmFtcy5zb3VyY2VSZWNvcmRJZCkge1xuICAgICAgICAgIGNyZWF0ZVBhcmFtcy5zb3VyY2UgPSB7XG4gICAgICAgICAgICBvcmlnaW46IHBhcmFtcy5zb3VyY2VPcmlnaW4gYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgcmVjb3JkX2lkOiBwYXJhbXMuc291cmNlUmVjb3JkSWQgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdXNlciBpZiBwcm92aWRlZFxuICAgICAgICBpZiAocGFyYW1zLnVzZXJFbWFpbCkge1xuICAgICAgICAgIGNyZWF0ZVBhcmFtcy51c2VyID0ge1xuICAgICAgICAgICAgZW1haWw6IHBhcmFtcy51c2VyRW1haWwgYXMgc3RyaW5nLFxuICAgICAgICAgICAgbmFtZTogcGFyYW1zLnVzZXJOYW1lIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IGNvbXBhbnkgaWYgcHJvdmlkZWRcbiAgICAgICAgaWYgKHBhcmFtcy5jb21wYW55TmFtZSB8fCBwYXJhbXMuY29tcGFueUlkKSB7XG4gICAgICAgICAgY3JlYXRlUGFyYW1zLmNvbXBhbnkgPSB7XG4gICAgICAgICAgICBuYW1lOiBwYXJhbXMuY29tcGFueU5hbWUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgaWQ6IHBhcmFtcy5jb21wYW55SWQgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBub3RlID0gYXdhaXQgY2xpZW50LmNyZWF0ZU5vdGUoY3JlYXRlUGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgIG5vdGU6IHtcbiAgICAgICAgICAgIGlkOiBub3RlLmlkLFxuICAgICAgICAgICAgdGl0bGU6IG5vdGUudGl0bGUsXG4gICAgICAgICAgICBjb250ZW50OiBub3RlLmNvbnRlbnQ/LnN1YnN0cmluZygwLCAyMDApLFxuICAgICAgICAgICAgdXNlcjogbm90ZS51c2VyPy5lbWFpbCxcbiAgICAgICAgICAgIGNvbXBhbnk6IG5vdGUuY29tcGFueT8ubmFtZSxcbiAgICAgICAgICAgIHRhZ3M6IG5vdGUudGFncyxcbiAgICAgICAgICAgIHVybDogbm90ZS5saW5rcz8uaHRtbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9LFxuXG4gICAgLy8gcGJfbm90ZV9saXN0XG4gICAge1xuICAgICAgbmFtZTogJ3BiX25vdGVfbGlzdCcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0xpc3QgY3VzdG9tZXIgZmVlZGJhY2sgbm90ZXMgaW4gUHJvZHVjdEJvYXJkLiBDYW4gZmlsdGVyIGJ5IGRhdGUgcmFuZ2UuJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBsaW1pdDoge1xuICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ01heGltdW0gbnVtYmVyIG9mIG5vdGVzIHRvIHJldHVybiAoZGVmYXVsdDogNTApJyxcbiAgICAgICAgICAgIGRlZmF1bHQ6IDUwLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY3JlYXRlZEZyb206IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdGaWx0ZXIgbm90ZXMgY3JlYXRlZCBvbiBvciBhZnRlciB0aGlzIGRhdGUgKElTTyA4NjAxKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjcmVhdGVkVG86IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdGaWx0ZXIgbm90ZXMgY3JlYXRlZCBvbiBvciBiZWZvcmUgdGhpcyBkYXRlIChJU08gODYwMSknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogYXN5bmMgKHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCBsaXN0UGFyYW1zOiBMaXN0Tm90ZXNQYXJhbXMgPSB7XG4gICAgICAgICAgbGltaXQ6IHBhcmFtcy5saW1pdCBhcyBudW1iZXIgfHwgNTAsXG4gICAgICAgICAgY3JlYXRlZEZyb206IHBhcmFtcy5jcmVhdGVkRnJvbSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgY3JlYXRlZFRvOiBwYXJhbXMuY3JlYXRlZFRvIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBub3RlcyA9IGF3YWl0IGNsaWVudC5saXN0Tm90ZXMobGlzdFBhcmFtcyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY291bnQ6IG5vdGVzLmxlbmd0aCxcbiAgICAgICAgICBub3Rlczogbm90ZXMubWFwKChuKSA9PiAoe1xuICAgICAgICAgICAgaWQ6IG4uaWQsXG4gICAgICAgICAgICB0aXRsZTogbi50aXRsZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IG4uY29udGVudD8uc3Vic3RyaW5nKDAsIDIwMCksXG4gICAgICAgICAgICB1c2VyOiBuLnVzZXI/LmVtYWlsLFxuICAgICAgICAgICAgY29tcGFueTogbi5jb21wYW55Py5uYW1lLFxuICAgICAgICAgICAgdGFnczogbi50YWdzLFxuICAgICAgICAgICAgZmVhdHVyZUNvdW50OiBuLmZlYXR1cmVzPy5sZW5ndGggfHwgMCxcbiAgICAgICAgICAgIGNyZWF0ZWRBdDogbi5jcmVhdGVkQXQsXG4gICAgICAgICAgICB1cmw6IG4ubGlua3M/Lmh0bWwsXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9LFxuXG4gICAgLy8gcGJfbm90ZV9hdHRhY2hcbiAgICB7XG4gICAgICBuYW1lOiAncGJfbm90ZV9hdHRhY2gnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdBdHRhY2ggYSBub3RlIHRvIGEgZmVhdHVyZS4gVGhpcyBsaW5rcyBjdXN0b21lciBmZWVkYmFjayB0byBhIHNwZWNpZmljIGZlYXR1cmUgZm9yIGluc2lnaHRzIGFnZ3JlZ2F0aW9uLicsXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgbm90ZUlkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnSUQgb2YgdGhlIG5vdGUgdG8gYXR0YWNoJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZlYXR1cmVJZDoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0lEIG9mIHRoZSBmZWF0dXJlIHRvIGF0dGFjaCB0aGUgbm90ZSB0bycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWlyZWQ6IFsnbm90ZUlkJywgJ2ZlYXR1cmVJZCddLFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IGFzeW5jIChwYXJhbXMpID0+IHtcbiAgICAgICAgYXdhaXQgY2xpZW50LmF0dGFjaE5vdGVUb0ZlYXR1cmUoXG4gICAgICAgICAgcGFyYW1zLm5vdGVJZCBhcyBzdHJpbmcsXG4gICAgICAgICAgcGFyYW1zLmZlYXR1cmVJZCBhcyBzdHJpbmdcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgIG1lc3NhZ2U6IGBOb3RlICR7cGFyYW1zLm5vdGVJZH0gaGFzIGJlZW4gYXR0YWNoZWQgdG8gZmVhdHVyZSAke3BhcmFtcy5mZWF0dXJlSWR9YCxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfSxcbiAgXTtcbn1cbiJdfQ==
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvbm90ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFJSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFakQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxNQUEwQjtJQUN4RCxPQUFPO1FBQ0wsaUJBQWlCO1FBQ2pCO1lBQ0UsSUFBSSxFQUFFLGdCQUFnQjtZQUN0QixXQUFXLEVBQ1Qsc0pBQXNKO1lBQ3hKLFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsUUFBUTtnQkFDZCxVQUFVLEVBQUU7b0JBQ1YsT0FBTyxFQUFFO3dCQUNQLElBQUksRUFBRSxRQUFRO3dCQUNkLFdBQVcsRUFBRSwwREFBMEQ7cUJBQ3hFO29CQUNELEtBQUssRUFBRTt3QkFDTCxJQUFJLEVBQUUsUUFBUTt3QkFDZCxXQUFXLEVBQUUsNkJBQTZCO3FCQUMzQztvQkFDRCxVQUFVLEVBQUU7d0JBQ1YsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLGtFQUFrRTtxQkFDaEY7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLElBQUksRUFBRSxRQUFRO3dCQUNkLFdBQVcsRUFBRSxpRUFBaUU7cUJBQy9FO29CQUNELGNBQWMsRUFBRTt3QkFDZCxJQUFJLEVBQUUsUUFBUTt3QkFDZCxXQUFXLEVBQUUsZ0NBQWdDO3FCQUM5QztvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLDZDQUE2QztxQkFDM0Q7b0JBQ0QsUUFBUSxFQUFFO3dCQUNSLElBQUksRUFBRSxRQUFRO3dCQUNkLFdBQVcsRUFBRSw0Q0FBNEM7cUJBQzFEO29CQUNELFdBQVcsRUFBRTt3QkFDWCxJQUFJLEVBQUUsUUFBUTt3QkFDZCxXQUFXLEVBQUUsa0RBQWtEO3FCQUNoRTtvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsSUFBSSxFQUFFLFFBQVE7d0JBQ2Qs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Q0QsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQzthQUNsQztZQUNELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ3hCLE1BQU0sTUFBTSxDQUFDLG1CQUFtQixDQUM5QixNQUFNLENBQUMsTUFBZ0IsRUFDdkIsTUFBTSxDQUFDLFNBQW1CLENBQzNCLENBQUM7Z0JBQ0YsT0FBTztvQkFDTCxPQUFPLEVBQUUsSUFBSTtvQkFDYixPQUFPLEVBQUUsUUFBUSxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtpQkFDbEYsQ0FBQztZQUNKLENBQUM7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQcm9kdWN0Qm9hcmQgTm90ZS9GZWVkYmFjayBNYW5hZ2VtZW50IFRvb2xzXG4gKi9cblxuaW1wb3J0IHsgUHJvZHVjdEJvYXJkQ2xpZW50IH0gZnJvbSAnLi4vY2xpZW50L2FwaS1jbGllbnQuanMnO1xuaW1wb3J0IHsgVG9vbERlZmluaXRpb24sIENyZWF0ZU5vdGVQYXJhbXMsIExpc3ROb3Rlc1BhcmFtcyB9IGZyb20gJy4uL2NsaWVudC90eXBlcy5qcyc7XG5pbXBvcnQgeyBjbGVhblRleHQgfSBmcm9tICcuLi91dGlscy9zYW5pdGl6ZS5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOb3RlVG9vbHMoY2xpZW50OiBQcm9kdWN0Qm9hcmRDbGllbnQpOiBUb29sRGVmaW5pdGlvbltdIHtcbiAgcmV0dXJuIFtcbiAgICAvLyBwYl9ub3RlX2NyZWF0ZVxuICAgIHtcbiAgICAgIG5hbWU6ICdwYl9ub3RlX2NyZWF0ZScsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0NyZWF0ZSBhIGN1c3RvbWVyIGZlZWRiYWNrIG5vdGUgaW4gUHJvZHVjdEJvYXJkLiBOb3RlcyBjYXB0dXJlIGN1c3RvbWVyIGluc2lnaHRzLCBmZWF0dXJlIHJlcXVlc3RzLCBvciB1c2VyIGZlZWRiYWNrIHRoYXQgY2FuIGJlIGxpbmtlZCB0byBmZWF0dXJlcy4nLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgbm90ZSBjb250ZW50L2ZlZWRiYWNrIHRleHQgKHJlcXVpcmVkLCBzdXBwb3J0cyBIVE1MKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aXRsZToge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGlvbmFsIHRpdGxlIGZvciB0aGUgbm90ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkaXNwbGF5VXJsOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVVJMIHRvIHRoZSBvcmlnaW5hbCBzb3VyY2UgKGUuZy4sIHN1cHBvcnQgdGlja2V0LCBTbGFjayBtZXNzYWdlKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzb3VyY2VPcmlnaW46IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdPcmlnaW4gc3lzdGVtIGlkZW50aWZpZXIgKGUuZy4sIFwiemVuZGVza1wiLCBcImludGVyY29tXCIsIFwic2xhY2tcIiknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc291cmNlUmVjb3JkSWQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdSZWNvcmQgSUQgaW4gdGhlIG9yaWdpbiBzeXN0ZW0nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdXNlckVtYWlsOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRW1haWwgb2YgdGhlIHVzZXIgd2hvIHByb3ZpZGVkIHRoZSBmZWVkYmFjaycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB1c2VyTmFtZToge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIHVzZXIgd2hvIHByb3ZpZGVkIHRoZSBmZWVkYmFjaycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb21wYW55TmFtZToge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0NvbXBhbnkvb3JnYW5pemF0aW9uIG5hbWUgb2YgdGhlIGZlZWRiYWNrIHNvdXJjZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb21wYW55SWQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdFeHRlcm5hbCBjb21wYW55IElEJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0FycmF5IG9mIHRhZ3MgdG8gY2F0ZWdvcml6ZSB0aGUgbm90ZScsXG4gICAgICAgICAgICBpdGVtczogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVpcmVkOiBbJ2NvbnRlbnQnXSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiBhc3luYyAocGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IGNyZWF0ZVBhcmFtczogQ3JlYXRlTm90ZVBhcmFtcyA9IHtcbiAgICAgICAgICBjb250ZW50OiBwYXJhbXMuY29udGVudCBhcyBzdHJpbmcsXG4gICAgICAgICAgdGl0bGU6IHBhcmFtcy50aXRsZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgZGlzcGxheVVybDogcGFyYW1zLmRpc3BsYXlVcmwgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICAgIHRhZ3M6IHBhcmFtcy50YWdzIGFzIHN0cmluZ1tdIHwgdW5kZWZpbmVkLFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFNldCBzb3VyY2UgaWYgcHJvdmlkZWRcbiAgICAgICAgaWYgKHBhcmFtcy5zb3VyY2VPcmlnaW4gfHwgcGFyYW1zLnNvdXJjZVJlY29yZElkKSB7XG4gICAgICAgICAgY3JlYXRlUGFyYW1zLnNvdXJjZSA9IHtcbiAgICAgICAgICAgIG9yaWdpbjogcGFyYW1zLnNvdXJjZU9yaWdpbiBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICByZWNvcmRfaWQ6IHBhcmFtcy5zb3VyY2VSZWNvcmRJZCBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldCB1c2VyIGlmIHByb3ZpZGVkXG4gICAgICAgIGlmIChwYXJhbXMudXNlckVtYWlsKSB7XG4gICAgICAgICAgY3JlYXRlUGFyYW1zLnVzZXIgPSB7XG4gICAgICAgICAgICBlbWFpbDogcGFyYW1zLnVzZXJFbWFpbCBhcyBzdHJpbmcsXG4gICAgICAgICAgICBuYW1lOiBwYXJhbXMudXNlck5hbWUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgY29tcGFueSBpZiBwcm92aWRlZFxuICAgICAgICBpZiAocGFyYW1zLmNvbXBhbnlOYW1lIHx8IHBhcmFtcy5jb21wYW55SWQpIHtcbiAgICAgICAgICBjcmVhdGVQYXJhbXMuY29tcGFueSA9IHtcbiAgICAgICAgICAgIG5hbWU6IHBhcmFtcy5jb21wYW55TmFtZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICBpZDogcGFyYW1zLmNvbXBhbnlJZCBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5vdGUgPSBhd2FpdCBjbGllbnQuY3JlYXRlTm90ZShjcmVhdGVQYXJhbXMpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgbm90ZToge1xuICAgICAgICAgICAgaWQ6IG5vdGUuaWQsXG4gICAgICAgICAgICB0aXRsZTogbm90ZS50aXRsZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGNsZWFuVGV4dChub3RlLmNvbnRlbnQsIDIwMCksXG4gICAgICAgICAgICB1c2VyOiBub3RlLnVzZXI/LmVtYWlsLFxuICAgICAgICAgICAgY29tcGFueTogbm90ZS5jb21wYW55Py5uYW1lLFxuICAgICAgICAgICAgdGFnczogbm90ZS50YWdzLFxuICAgICAgICAgICAgdXJsOiBub3RlLmxpbmtzPy5odG1sLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBwYl9ub3RlX2xpc3RcbiAgICB7XG4gICAgICBuYW1lOiAncGJfbm90ZV9saXN0JyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnTGlzdCBjdXN0b21lciBmZWVkYmFjayBub3RlcyBpbiBQcm9kdWN0Qm9hcmQuIENhbiBmaWx0ZXIgYnkgZGF0ZSByYW5nZS4nLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTWF4aW11bSBudW1iZXIgb2Ygbm90ZXMgdG8gcmV0dXJuIChkZWZhdWx0OiA1MCknLFxuICAgICAgICAgICAgZGVmYXVsdDogNTAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjcmVhdGVkRnJvbToge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0ZpbHRlciBub3RlcyBjcmVhdGVkIG9uIG9yIGFmdGVyIHRoaXMgZGF0ZSAoSVNPIDg2MDEpJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNyZWF0ZWRUbzoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0ZpbHRlciBub3RlcyBjcmVhdGVkIG9uIG9yIGJlZm9yZSB0aGlzIGRhdGUgKElTTyA4NjAxKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiBhc3luYyAocGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpc3RQYXJhbXM6IExpc3ROb3Rlc1BhcmFtcyA9IHtcbiAgICAgICAgICBsaW1pdDogcGFyYW1zLmxpbWl0IGFzIG51bWJlciB8fCA1MCxcbiAgICAgICAgICBjcmVhdGVkRnJvbTogcGFyYW1zLmNyZWF0ZWRGcm9tIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICBjcmVhdGVkVG86IHBhcmFtcy5jcmVhdGVkVG8gYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IG5vdGVzID0gYXdhaXQgY2xpZW50Lmxpc3ROb3RlcyhsaXN0UGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb3VudDogbm90ZXMubGVuZ3RoLFxuICAgICAgICAgIG5vdGVzOiBub3Rlcy5tYXAoKG4pID0+ICh7XG4gICAgICAgICAgICBpZDogbi5pZCxcbiAgICAgICAgICAgIHRpdGxlOiBuLnRpdGxlLFxuICAgICAgICAgICAgY29udGVudDogY2xlYW5UZXh0KG4uY29udGVudCwgMjAwKSxcbiAgICAgICAgICAgIHVzZXI6IG4udXNlcj8uZW1haWwsXG4gICAgICAgICAgICBjb21wYW55OiBuLmNvbXBhbnk/Lm5hbWUsXG4gICAgICAgICAgICB0YWdzOiBuLnRhZ3MsXG4gICAgICAgICAgICBmZWF0dXJlQ291bnQ6IG4uZmVhdHVyZXM/Lmxlbmd0aCB8fCAwLFxuICAgICAgICAgICAgY3JlYXRlZEF0OiBuLmNyZWF0ZWRBdCxcbiAgICAgICAgICAgIHVybDogbi5saW5rcz8uaHRtbCxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBwYl9ub3RlX2F0dGFjaFxuICAgIHtcbiAgICAgIG5hbWU6ICdwYl9ub3RlX2F0dGFjaCcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0F0dGFjaCBhIG5vdGUgdG8gYSBmZWF0dXJlLiBUaGlzIGxpbmtzIGN1c3RvbWVyIGZlZWRiYWNrIHRvIGEgc3BlY2lmaWMgZmVhdHVyZSBmb3IgaW5zaWdodHMgYWdncmVnYXRpb24uJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBub3RlSWQ6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdJRCBvZiB0aGUgbm90ZSB0byBhdHRhY2gnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZmVhdHVyZUlkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnSUQgb2YgdGhlIGZlYXR1cmUgdG8gYXR0YWNoIHRoZSBub3RlIHRvJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICByZXF1aXJlZDogWydub3RlSWQnLCAnZmVhdHVyZUlkJ10sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogYXN5bmMgKHBhcmFtcykgPT4ge1xuICAgICAgICBhd2FpdCBjbGllbnQuYXR0YWNoTm90ZVRvRmVhdHVyZShcbiAgICAgICAgICBwYXJhbXMubm90ZUlkIGFzIHN0cmluZyxcbiAgICAgICAgICBwYXJhbXMuZmVhdHVyZUlkIGFzIHN0cmluZ1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgbWVzc2FnZTogYE5vdGUgJHtwYXJhbXMubm90ZUlkfSBoYXMgYmVlbiBhdHRhY2hlZCB0byBmZWF0dXJlICR7cGFyYW1zLmZlYXR1cmVJZH1gLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICB9LFxuICBdO1xufVxuIl19
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * ProductBoard Product Management Tools
3
3
  */
4
+ import { cleanText } from '../utils/sanitize.js';
4
5
  export function createProductTools(client) {
5
6
  return [
6
7
  // pb_product_list
@@ -26,7 +27,7 @@ export function createProductTools(client) {
26
27
  products: products.map((p) => ({
27
28
  id: p.id,
28
29
  name: p.name,
29
- description: p.description?.substring(0, 200),
30
+ description: cleanText(p.description, 200),
30
31
  createdAt: p.createdAt,
31
32
  url: p.links?.html,
32
33
  })),
@@ -71,7 +72,7 @@ export function createProductTools(client) {
71
72
  result.components = components.map((c) => ({
72
73
  id: c.id,
73
74
  name: c.name,
74
- description: c.description?.substring(0, 200),
75
+ description: cleanText(c.description, 200),
75
76
  }));
76
77
  result.componentCount = components.length;
77
78
  }
@@ -95,7 +96,7 @@ export function createProductTools(client) {
95
96
  productMap.set(product.id, {
96
97
  id: product.id,
97
98
  name: product.name,
98
- description: product.description?.substring(0, 200),
99
+ description: cleanText(product.description, 200),
99
100
  components: [],
100
101
  });
101
102
  }
@@ -117,7 +118,7 @@ export function createProductTools(client) {
117
118
  product.components.push({
118
119
  id: comp.id,
119
120
  name: comp.name,
120
- description: comp.description?.substring(0, 200),
121
+ description: cleanText(comp.description, 200),
121
122
  subcomponents: comp.subcomponents,
122
123
  });
123
124
  }
@@ -142,4 +143,4 @@ export function createProductTools(client) {
142
143
  },
143
144
  ];
144
145
  }
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvcHJvZHVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFLSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBMEI7SUFDM0QsT0FBTztRQUNMLGtCQUFrQjtRQUNsQjtZQUNFLElBQUksRUFBRSxpQkFBaUI7WUFDdkIsV0FBVyxFQUNULDZHQUE2RztZQUMvRyxVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsVUFBVSxFQUFFO29CQUNWLEtBQUssRUFBRTt3QkFDTCxJQUFJLEVBQUUsUUFBUTt3QkFDZCxXQUFXLEVBQUUsb0RBQW9EO3dCQUNqRSxPQUFPLEVBQUUsRUFBRTtxQkFDWjtpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDeEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDO29CQUN6QyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQWUsSUFBSSxFQUFFO2lCQUNwQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTztvQkFDTCxLQUFLLEVBQUUsUUFBUSxDQUFDLE1BQU07b0JBQ3RCLFFBQVEsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUM3QixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7d0JBQ1IsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO3dCQUNaLFdBQVcsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO3dCQUM3QyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFNBQVM7d0JBQ3RCLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUk7cUJBQ25CLENBQUMsQ0FBQztpQkFDSixDQUFDO1lBQ0osQ0FBQztTQUNGO1FBRUQsaUJBQWlCO1FB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QztnQ0FDeEIsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO2dDQUNYLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTs2QkFDaEIsQ0FBQyxDQUFDO3dCQUNMLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO2dCQUVELE9BQU87b0JBQ0wsWUFBWSxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTTtvQkFDdkMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTTtvQkFDM0MsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO2lCQUMzQyxDQUFDO1lBQ0osQ0FBQztTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb2R1Y3RCb2FyZCBQcm9kdWN0IE1hbmFnZW1lbnQgVG9vbHNcbiAqL1xuXG5pbXBvcnQgeyBQcm9kdWN0Qm9hcmRDbGllbnQgfSBmcm9tICcuLi9jbGllbnQvYXBpLWNsaWVudC5qcyc7XG5pbXBvcnQgeyBUb29sRGVmaW5pdGlvbiB9IGZyb20gJy4uL2NsaWVudC90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm9kdWN0VG9vbHMoY2xpZW50OiBQcm9kdWN0Qm9hcmRDbGllbnQpOiBUb29sRGVmaW5pdGlvbltdIHtcbiAgcmV0dXJuIFtcbiAgICAvLyBwYl9wcm9kdWN0X2xpc3RcbiAgICB7XG4gICAgICBuYW1lOiAncGJfcHJvZHVjdF9saXN0JyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnTGlzdCBhbGwgcHJvZHVjdHMgaW4gdGhlIFByb2R1Y3RCb2FyZCB3b3Jrc3BhY2UuIFByb2R1Y3RzIGFyZSB0b3AtbGV2ZWwgY29udGFpbmVycyBmb3Igb3JnYW5pemluZyBmZWF0dXJlcy4nLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTWF4aW11bSBudW1iZXIgb2YgcHJvZHVjdHMgdG8gcmV0dXJuIChkZWZhdWx0OiA1MCknLFxuICAgICAgICAgICAgZGVmYXVsdDogNTAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiBhc3luYyAocGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb2R1Y3RzID0gYXdhaXQgY2xpZW50Lmxpc3RQcm9kdWN0cyh7XG4gICAgICAgICAgbGltaXQ6IHBhcmFtcy5saW1pdCBhcyBudW1iZXIgfHwgNTAsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvdW50OiBwcm9kdWN0cy5sZW5ndGgsXG4gICAgICAgICAgcHJvZHVjdHM6IHByb2R1Y3RzLm1hcCgocCkgPT4gKHtcbiAgICAgICAgICAgIGlkOiBwLmlkLFxuICAgICAgICAgICAgbmFtZTogcC5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHAuZGVzY3JpcHRpb24/LnN1YnN0cmluZygwLCAyMDApLFxuICAgICAgICAgICAgY3JlYXRlZEF0OiBwLmNyZWF0ZWRBdCxcbiAgICAgICAgICAgIHVybDogcC5saW5rcz8uaHRtbCxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBwYl9wcm9kdWN0X2dldFxuICAgIHtcbiAgICAgIG5hbWU6ICdwYl9wcm9kdWN0X2dldCcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0dldCBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljIHByb2R1Y3QgYnkgSUQsIGluY2x1ZGluZyBpdHMgY29tcG9uZW50cy4nLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGlkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUHJvZHVjdCBJRCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbmNsdWRlQ29tcG9uZW50czoge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdJbmNsdWRlIHRoZSBsaXN0IG9mIGNvbXBvbmVudHMgdW5kZXIgdGhpcyBwcm9kdWN0JyxcbiAgICAgICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWlyZWQ6IFsnaWQnXSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiBhc3luYyAocGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb2R1Y3QgPSBhd2FpdCBjbGllbnQuZ2V0UHJvZHVjdChwYXJhbXMuaWQgYXMgc3RyaW5nKTtcblxuICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgICAgICAgIGlkOiBwcm9kdWN0LmlkLFxuICAgICAgICAgIG5hbWU6IHByb2R1Y3QubmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvZHVjdC5kZXNjcmlwdGlvbixcbiAgICAgICAgICBjcmVhdGVkQXQ6IHByb2R1Y3QuY3JlYXRlZEF0LFxuICAgICAgICAgIHVwZGF0ZWRBdDogcHJvZHVjdC51cGRhdGVkQXQsXG4gICAgICAgICAgdXJsOiBwcm9kdWN0LmxpbmtzPy5odG1sLFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIE9wdGlvbmFsbHkgaW5jbHVkZSBjb21wb25lbnRzXG4gICAgICAgIGlmIChwYXJhbXMuaW5jbHVkZUNvbXBvbmVudHMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IGF3YWl0IGNsaWVudC5saXN0Q29tcG9uZW50cyh7XG4gICAgICAgICAgICBwcm9kdWN0SWQ6IHByb2R1Y3QuaWQsXG4gICAgICAgICAgICBsaW1pdDogMTAwLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJlc3VsdC5jb21wb25lbnRzID0gY29tcG9uZW50cy5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgICBpZDogYy5pZCxcbiAgICAgICAgICAgIG5hbWU6IGMubmFtZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBjLmRlc2NyaXB0aW9uPy5zdWJzdHJpbmcoMCwgMjAwKSxcbiAgICAgICAgICB9KSk7XG4gICAgICAgICAgcmVzdWx0LmNvbXBvbmVudENvdW50ID0gY29tcG9uZW50cy5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSxcbiAgICB9LFxuXG4gICAgLy8gcGJfcHJvZHVjdF9oaWVyYXJjaHlcbiAgICB7XG4gICAgICBuYW1lOiAncGJfcHJvZHVjdF9oaWVyYXJjaHknLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdHZXQgdGhlIGNvbXBsZXRlIHByb2R1Y3QgaGllcmFyY2h5IGluY2x1ZGluZyBhbGwgcHJvZHVjdHMgYW5kIHRoZWlyIGNvbXBvbmVudHMuIFVzZWZ1bCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgd29ya3NwYWNlIHN0cnVjdHVyZS4nLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBoaWVyYXJjaHkgPSBhd2FpdCBjbGllbnQuZ2V0UHJvZHVjdEhpZXJhcmNoeSgpO1xuXG4gICAgICAgIC8vIEJ1aWxkIHRyZWUgc3RydWN0dXJlXG4gICAgICAgIGNvbnN0IHByb2R1Y3RNYXAgPSBuZXcgTWFwPHN0cmluZywge1xuICAgICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgICAgIGNvbXBvbmVudHM6IEFycmF5PHtcbiAgICAgICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICAgICAgICAgIHN1YmNvbXBvbmVudHM6IEFycmF5PHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0+O1xuICAgICAgICAgIH0+O1xuICAgICAgICB9PigpO1xuXG4gICAgICAgIC8vIEluaXRpYWxpemUgcHJvZHVjdHNcbiAgICAgICAgZm9yIChjb25zdCBwcm9kdWN0IG9mIGhpZXJhcmNoeS5wcm9kdWN0cykge1xuICAgICAgICAgIHByb2R1Y3RNYXAuc2V0KHByb2R1Y3QuaWQsIHtcbiAgICAgICAgICAgIGlkOiBwcm9kdWN0LmlkLFxuICAgICAgICAgICAgbmFtZTogcHJvZHVjdC5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb2R1Y3QuZGVzY3JpcHRpb24/LnN1YnN0cmluZygwLCAyMDApLFxuICAgICAgICAgICAgY29tcG9uZW50czogW10sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCdWlsZCBjb21wb25lbnQgdHJlZSAoY29tcG9uZW50cyBjYW4gYmUgbmVzdGVkKVxuICAgICAgICBjb25zdCBjb21wb25lbnRNYXAgPSBuZXcgTWFwPHN0cmluZywgdHlwZW9mIGhpZXJhcmNoeS5jb21wb25lbnRzWzBdICYgeyBzdWJjb21wb25lbnRzOiBBcnJheTx7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9PiB9PigpO1xuXG4gICAgICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIGhpZXJhcmNoeS5jb21wb25lbnRzKSB7XG4gICAgICAgICAgY29tcG9uZW50TWFwLnNldChjb21wb25lbnQuaWQsIHtcbiAgICAgICAgICAgIC4uLmNvbXBvbmVudCxcbiAgICAgICAgICAgIHN1YmNvbXBvbmVudHM6IFtdLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXNzaWduIGNvbXBvbmVudHMgdG8gcGFyZW50c1xuICAgICAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBoaWVyYXJjaHkuY29tcG9uZW50cykge1xuICAgICAgICAgIGNvbnN0IGNvbXAgPSBjb21wb25lbnRNYXAuZ2V0KGNvbXBvbmVudC5pZCkhO1xuXG4gICAgICAgICAgaWYgKGNvbXBvbmVudC5wYXJlbnQ/LnByb2R1Y3Q/LmlkKSB7XG4gICAgICAgICAgICAvLyBUb3AtbGV2ZWwgY29tcG9uZW50IHVuZGVyIGEgcHJvZHVjdFxuICAgICAgICAgICAgY29uc3QgcHJvZHVjdCA9IHByb2R1Y3RNYXAuZ2V0KGNvbXBvbmVudC5wYXJlbnQucHJvZHVjdC5pZCk7XG4gICAgICAgICAgICBpZiAocHJvZHVjdCkge1xuICAgICAgICAgICAgICBwcm9kdWN0LmNvbXBvbmVudHMucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6IGNvbXAuaWQsXG4gICAgICAgICAgICAgICAgbmFtZTogY29tcC5uYW1lLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBjb21wLmRlc2NyaXB0aW9uPy5zdWJzdHJpbmcoMCwgMjAwKSxcbiAgICAgICAgICAgICAgICBzdWJjb21wb25lbnRzOiBjb21wLnN1YmNvbXBvbmVudHMsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoY29tcG9uZW50LnBhcmVudD8uY29tcG9uZW50Py5pZCkge1xuICAgICAgICAgICAgLy8gTmVzdGVkIGNvbXBvbmVudFxuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gY29tcG9uZW50TWFwLmdldChjb21wb25lbnQucGFyZW50LmNvbXBvbmVudC5pZCk7XG4gICAgICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICAgIHBhcmVudC5zdWJjb21wb25lbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiBjb21wLmlkLFxuICAgICAgICAgICAgICAgIG5hbWU6IGNvbXAubmFtZSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwcm9kdWN0Q291bnQ6IGhpZXJhcmNoeS5wcm9kdWN0cy5sZW5ndGgsXG4gICAgICAgICAgY29tcG9uZW50Q291bnQ6IGhpZXJhcmNoeS5jb21wb25lbnRzLmxlbmd0aCxcbiAgICAgICAgICBoaWVyYXJjaHk6IEFycmF5LmZyb20ocHJvZHVjdE1hcC52YWx1ZXMoKSksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0sXG4gIF07XG59XG4iXX0=
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvcHJvZHVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFJSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFakQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE1BQTBCO0lBQzNELE9BQU87UUFDTCxrQkFBa0I7UUFDbEI7WUFDRSxJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLFdBQVcsRUFDVCw2R0FBNkc7WUFDL0csVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxRQUFRO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixLQUFLLEVBQUU7d0JBQ0wsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLG9EQUFvRDt3QkFDakUsT0FBTyxFQUFFLEVBQUU7cUJBQ1o7aUJBQ0Y7YUFDRjtZQUNELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ3hCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQztvQkFDekMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFlLElBQUksRUFBRTtpQkFDcEMsQ0FBQyxDQUFDO2dCQUNILE9BQU87b0JBQ0wsS0FBSyxFQUFFLFFBQVEsQ0FBQyxNQUFNO29CQUN0QixRQUFRLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDN0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFO3dCQUNSLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTt3QkFDWixXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDO3dCQUMxQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFNBQVM7d0JBQ3RCLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUk7cUJBQ25CLENBQUMsQ0FBQztpQkFDSixD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Q0FBQztnQ0FDeEIsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO2dDQUNYLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTs2QkFDaEIsQ0FBQyxDQUFDO3dCQUNMLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO2dCQUVELE9BQU87b0JBQ0wsWUFBWSxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTTtvQkFDdkMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTTtvQkFDM0MsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO2lCQUMzQyxDQUFDO1lBQ0osQ0FBQztTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb2R1Y3RCb2FyZCBQcm9kdWN0IE1hbmFnZW1lbnQgVG9vbHNcbiAqL1xuXG5pbXBvcnQgeyBQcm9kdWN0Qm9hcmRDbGllbnQgfSBmcm9tICcuLi9jbGllbnQvYXBpLWNsaWVudC5qcyc7XG5pbXBvcnQgeyBUb29sRGVmaW5pdGlvbiB9IGZyb20gJy4uL2NsaWVudC90eXBlcy5qcyc7XG5pbXBvcnQgeyBjbGVhblRleHQgfSBmcm9tICcuLi91dGlscy9zYW5pdGl6ZS5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm9kdWN0VG9vbHMoY2xpZW50OiBQcm9kdWN0Qm9hcmRDbGllbnQpOiBUb29sRGVmaW5pdGlvbltdIHtcbiAgcmV0dXJuIFtcbiAgICAvLyBwYl9wcm9kdWN0X2xpc3RcbiAgICB7XG4gICAgICBuYW1lOiAncGJfcHJvZHVjdF9saXN0JyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnTGlzdCBhbGwgcHJvZHVjdHMgaW4gdGhlIFByb2R1Y3RCb2FyZCB3b3Jrc3BhY2UuIFByb2R1Y3RzIGFyZSB0b3AtbGV2ZWwgY29udGFpbmVycyBmb3Igb3JnYW5pemluZyBmZWF0dXJlcy4nLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGxpbWl0OiB7XG4gICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTWF4aW11bSBudW1iZXIgb2YgcHJvZHVjdHMgdG8gcmV0dXJuIChkZWZhdWx0OiA1MCknLFxuICAgICAgICAgICAgZGVmYXVsdDogNTAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiBhc3luYyAocGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb2R1Y3RzID0gYXdhaXQgY2xpZW50Lmxpc3RQcm9kdWN0cyh7XG4gICAgICAgICAgbGltaXQ6IHBhcmFtcy5saW1pdCBhcyBudW1iZXIgfHwgNTAsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvdW50OiBwcm9kdWN0cy5sZW5ndGgsXG4gICAgICAgICAgcHJvZHVjdHM6IHByb2R1Y3RzLm1hcCgocCkgPT4gKHtcbiAgICAgICAgICAgIGlkOiBwLmlkLFxuICAgICAgICAgICAgbmFtZTogcC5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGNsZWFuVGV4dChwLmRlc2NyaXB0aW9uLCAyMDApLFxuICAgICAgICAgICAgY3JlYXRlZEF0OiBwLmNyZWF0ZWRBdCxcbiAgICAgICAgICAgIHVybDogcC5saW5rcz8uaHRtbCxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvLyBwYl9wcm9kdWN0X2dldFxuICAgIHtcbiAgICAgIG5hbWU6ICdwYl9wcm9kdWN0X2dldCcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0dldCBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljIHByb2R1Y3QgYnkgSUQsIGluY2x1ZGluZyBpdHMgY29tcG9uZW50cy4nLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGlkOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUHJvZHVjdCBJRCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbmNsdWRlQ29tcG9uZW50czoge1xuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdJbmNsdWRlIHRoZSBsaXN0IG9mIGNvbXBvbmVudHMgdW5kZXIgdGhpcyBwcm9kdWN0JyxcbiAgICAgICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWlyZWQ6IFsnaWQnXSxcbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiBhc3luYyAocGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb2R1Y3QgPSBhd2FpdCBjbGllbnQuZ2V0UHJvZHVjdChwYXJhbXMuaWQgYXMgc3RyaW5nKTtcblxuICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgICAgICAgIGlkOiBwcm9kdWN0LmlkLFxuICAgICAgICAgIG5hbWU6IHByb2R1Y3QubmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvZHVjdC5kZXNjcmlwdGlvbixcbiAgICAgICAgICBjcmVhdGVkQXQ6IHByb2R1Y3QuY3JlYXRlZEF0LFxuICAgICAgICAgIHVwZGF0ZWRBdDogcHJvZHVjdC51cGRhdGVkQXQsXG4gICAgICAgICAgdXJsOiBwcm9kdWN0LmxpbmtzPy5odG1sLFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIE9wdGlvbmFsbHkgaW5jbHVkZSBjb21wb25lbnRzXG4gICAgICAgIGlmIChwYXJhbXMuaW5jbHVkZUNvbXBvbmVudHMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IGF3YWl0IGNsaWVudC5saXN0Q29tcG9uZW50cyh7XG4gICAgICAgICAgICBwcm9kdWN0SWQ6IHByb2R1Y3QuaWQsXG4gICAgICAgICAgICBsaW1pdDogMTAwLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJlc3VsdC5jb21wb25lbnRzID0gY29tcG9uZW50cy5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgICBpZDogYy5pZCxcbiAgICAgICAgICAgIG5hbWU6IGMubmFtZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBjbGVhblRleHQoYy5kZXNjcmlwdGlvbiwgMjAwKSxcbiAgICAgICAgICB9KSk7XG4gICAgICAgICAgcmVzdWx0LmNvbXBvbmVudENvdW50ID0gY29tcG9uZW50cy5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSxcbiAgICB9LFxuXG4gICAgLy8gcGJfcHJvZHVjdF9oaWVyYXJjaHlcbiAgICB7XG4gICAgICBuYW1lOiAncGJfcHJvZHVjdF9oaWVyYXJjaHknLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdHZXQgdGhlIGNvbXBsZXRlIHByb2R1Y3QgaGllcmFyY2h5IGluY2x1ZGluZyBhbGwgcHJvZHVjdHMgYW5kIHRoZWlyIGNvbXBvbmVudHMuIFVzZWZ1bCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgd29ya3NwYWNlIHN0cnVjdHVyZS4nLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBoaWVyYXJjaHkgPSBhd2FpdCBjbGllbnQuZ2V0UHJvZHVjdEhpZXJhcmNoeSgpO1xuXG4gICAgICAgIC8vIEJ1aWxkIHRyZWUgc3RydWN0dXJlXG4gICAgICAgIGNvbnN0IHByb2R1Y3RNYXAgPSBuZXcgTWFwPHN0cmluZywge1xuICAgICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgICAgIGNvbXBvbmVudHM6IEFycmF5PHtcbiAgICAgICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICAgICAgICAgIHN1YmNvbXBvbmVudHM6IEFycmF5PHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0+O1xuICAgICAgICAgIH0+O1xuICAgICAgICB9PigpO1xuXG4gICAgICAgIC8vIEluaXRpYWxpemUgcHJvZHVjdHNcbiAgICAgICAgZm9yIChjb25zdCBwcm9kdWN0IG9mIGhpZXJhcmNoeS5wcm9kdWN0cykge1xuICAgICAgICAgIHByb2R1Y3RNYXAuc2V0KHByb2R1Y3QuaWQsIHtcbiAgICAgICAgICAgIGlkOiBwcm9kdWN0LmlkLFxuICAgICAgICAgICAgbmFtZTogcHJvZHVjdC5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGNsZWFuVGV4dChwcm9kdWN0LmRlc2NyaXB0aW9uLCAyMDApLFxuICAgICAgICAgICAgY29tcG9uZW50czogW10sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCdWlsZCBjb21wb25lbnQgdHJlZSAoY29tcG9uZW50cyBjYW4gYmUgbmVzdGVkKVxuICAgICAgICBjb25zdCBjb21wb25lbnRNYXAgPSBuZXcgTWFwPHN0cmluZywgdHlwZW9mIGhpZXJhcmNoeS5jb21wb25lbnRzWzBdICYgeyBzdWJjb21wb25lbnRzOiBBcnJheTx7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9PiB9PigpO1xuXG4gICAgICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIGhpZXJhcmNoeS5jb21wb25lbnRzKSB7XG4gICAgICAgICAgY29tcG9uZW50TWFwLnNldChjb21wb25lbnQuaWQsIHtcbiAgICAgICAgICAgIC4uLmNvbXBvbmVudCxcbiAgICAgICAgICAgIHN1YmNvbXBvbmVudHM6IFtdLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXNzaWduIGNvbXBvbmVudHMgdG8gcGFyZW50c1xuICAgICAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBoaWVyYXJjaHkuY29tcG9uZW50cykge1xuICAgICAgICAgIGNvbnN0IGNvbXAgPSBjb21wb25lbnRNYXAuZ2V0KGNvbXBvbmVudC5pZCkhO1xuXG4gICAgICAgICAgaWYgKGNvbXBvbmVudC5wYXJlbnQ/LnByb2R1Y3Q/LmlkKSB7XG4gICAgICAgICAgICAvLyBUb3AtbGV2ZWwgY29tcG9uZW50IHVuZGVyIGEgcHJvZHVjdFxuICAgICAgICAgICAgY29uc3QgcHJvZHVjdCA9IHByb2R1Y3RNYXAuZ2V0KGNvbXBvbmVudC5wYXJlbnQucHJvZHVjdC5pZCk7XG4gICAgICAgICAgICBpZiAocHJvZHVjdCkge1xuICAgICAgICAgICAgICBwcm9kdWN0LmNvbXBvbmVudHMucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6IGNvbXAuaWQsXG4gICAgICAgICAgICAgICAgbmFtZTogY29tcC5uYW1lLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBjbGVhblRleHQoY29tcC5kZXNjcmlwdGlvbiwgMjAwKSxcbiAgICAgICAgICAgICAgICBzdWJjb21wb25lbnRzOiBjb21wLnN1YmNvbXBvbmVudHMsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoY29tcG9uZW50LnBhcmVudD8uY29tcG9uZW50Py5pZCkge1xuICAgICAgICAgICAgLy8gTmVzdGVkIGNvbXBvbmVudFxuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gY29tcG9uZW50TWFwLmdldChjb21wb25lbnQucGFyZW50LmNvbXBvbmVudC5pZCk7XG4gICAgICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICAgIHBhcmVudC5zdWJjb21wb25lbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiBjb21wLmlkLFxuICAgICAgICAgICAgICAgIG5hbWU6IGNvbXAubmFtZSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwcm9kdWN0Q291bnQ6IGhpZXJhcmNoeS5wcm9kdWN0cy5sZW5ndGgsXG4gICAgICAgICAgY29tcG9uZW50Q291bnQ6IGhpZXJhcmNoeS5jb21wb25lbnRzLmxlbmd0aCxcbiAgICAgICAgICBoaWVyYXJjaHk6IEFycmF5LmZyb20ocHJvZHVjdE1hcC52YWx1ZXMoKSksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgIH0sXG4gIF07XG59XG4iXX0=
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Text Sanitization Utilities
3
+ *
4
+ * Converts HTML content from ProductBoard API responses to clean plain text
5
+ * suitable for agent consumption.
6
+ */
7
+ /**
8
+ * Strip HTML tags and convert to plain text
9
+ *
10
+ * Handles:
11
+ * - Block elements (p, div, br) → newlines
12
+ * - List items → bullet points
13
+ * - Inline elements → stripped
14
+ * - HTML entities → decoded
15
+ * - Whitespace → normalized
16
+ */
17
+ export declare function stripHtml(html: string | undefined | null): string;
18
+ /**
19
+ * Truncate text at word boundary with ellipsis
20
+ *
21
+ * - Returns original if within limit
22
+ * - Finds last space within threshold (70% of max)
23
+ * - Adds ellipsis character (…) instead of three dots
24
+ */
25
+ export declare function truncate(text: string | undefined | null, maxLength: number): string;
26
+ /**
27
+ * Clean HTML content and truncate in one step
28
+ *
29
+ * This is the main function to use for sanitizing ProductBoard API responses.
30
+ * Strips HTML, decodes entities, normalizes whitespace, and truncates at word boundary.
31
+ *
32
+ * @param html - Raw HTML content from API
33
+ * @param maxLength - Maximum length (default: 200)
34
+ * @returns Clean plain text, truncated with ellipsis if needed
35
+ */
36
+ export declare function cleanText(html: string | undefined | null, maxLength?: number): string;
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Text Sanitization Utilities
3
+ *
4
+ * Converts HTML content from ProductBoard API responses to clean plain text
5
+ * suitable for agent consumption.
6
+ */
7
+ /**
8
+ * Common HTML entity mappings
9
+ */
10
+ const HTML_ENTITIES = {
11
+ '&': '&',
12
+ '&lt;': '<',
13
+ '&gt;': '>',
14
+ '&quot;': '"',
15
+ '&#39;': "'",
16
+ '&apos;': "'",
17
+ '&nbsp;': ' ',
18
+ '&#160;': ' ',
19
+ '&mdash;': '\u2014', // —
20
+ '&ndash;': '\u2013', // –
21
+ '&hellip;': '\u2026', // …
22
+ '&bull;': '\u2022', // •
23
+ '&copy;': '\u00A9', // ©
24
+ '&reg;': '\u00AE', // ®
25
+ '&trade;': '\u2122', // ™
26
+ '&lsquo;': '\u2018', // '
27
+ '&rsquo;': '\u2019', // '
28
+ '&ldquo;': '\u201C', // "
29
+ '&rdquo;': '\u201D', // "
30
+ };
31
+ /**
32
+ * Decode HTML entities to their character equivalents
33
+ */
34
+ function decodeEntities(text) {
35
+ // Replace named entities
36
+ let result = text.replace(/&[a-zA-Z]+;/g, (match) => HTML_ENTITIES[match] || match);
37
+ // Replace decimal numeric entities (&#123;)
38
+ result = result.replace(/&#(\d+);/g, (_, num) => String.fromCharCode(parseInt(num, 10)));
39
+ // Replace hex numeric entities (&#x1F;)
40
+ result = result.replace(/&#x([0-9a-fA-F]+);/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)));
41
+ return result;
42
+ }
43
+ /**
44
+ * Strip HTML tags and convert to plain text
45
+ *
46
+ * Handles:
47
+ * - Block elements (p, div, br) → newlines
48
+ * - List items → bullet points
49
+ * - Inline elements → stripped
50
+ * - HTML entities → decoded
51
+ * - Whitespace → normalized
52
+ */
53
+ export function stripHtml(html) {
54
+ if (!html)
55
+ return '';
56
+ let text = html;
57
+ // Convert block elements to appropriate spacing
58
+ text = text.replace(/<br\s*\/?>/gi, '\n');
59
+ text = text.replace(/<\/p>/gi, '\n\n');
60
+ text = text.replace(/<\/div>/gi, '\n');
61
+ text = text.replace(/<\/li>/gi, '\n');
62
+ text = text.replace(/<li[^>]*>/gi, '• ');
63
+ text = text.replace(/<\/h[1-6]>/gi, '\n\n');
64
+ // Strip all remaining HTML tags
65
+ text = text.replace(/<[^>]+>/g, '');
66
+ // Decode HTML entities
67
+ text = decodeEntities(text);
68
+ // Normalize whitespace: collapse multiple spaces/tabs to single space
69
+ text = text.replace(/[ \t]+/g, ' ');
70
+ // Normalize newlines: collapse 3+ newlines to 2
71
+ text = text.replace(/\n{3,}/g, '\n\n');
72
+ // Trim whitespace from each line and overall
73
+ text = text.split('\n').map(line => line.trim()).join('\n').trim();
74
+ return text;
75
+ }
76
+ /**
77
+ * Truncate text at word boundary with ellipsis
78
+ *
79
+ * - Returns original if within limit
80
+ * - Finds last space within threshold (70% of max)
81
+ * - Adds ellipsis character (…) instead of three dots
82
+ */
83
+ export function truncate(text, maxLength) {
84
+ if (!text)
85
+ return '';
86
+ if (text.length <= maxLength)
87
+ return text;
88
+ const truncated = text.substring(0, maxLength);
89
+ const lastSpace = truncated.lastIndexOf(' ');
90
+ // If we find a space in the last 30% of the string, break there
91
+ // Otherwise just truncate at maxLength
92
+ const breakPoint = lastSpace > maxLength * 0.7 ? lastSpace : maxLength;
93
+ return truncated.substring(0, breakPoint).trimEnd() + '\u2026';
94
+ }
95
+ /**
96
+ * Clean HTML content and truncate in one step
97
+ *
98
+ * This is the main function to use for sanitizing ProductBoard API responses.
99
+ * Strips HTML, decodes entities, normalizes whitespace, and truncates at word boundary.
100
+ *
101
+ * @param html - Raw HTML content from API
102
+ * @param maxLength - Maximum length (default: 200)
103
+ * @returns Clean plain text, truncated with ellipsis if needed
104
+ */
105
+ export function cleanText(html, maxLength = 200) {
106
+ return truncate(stripHtml(html), maxLength);
107
+ }
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FuaXRpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvc2FuaXRpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSDs7R0FFRztBQUNILE1BQU0sYUFBYSxHQUEyQjtJQUM1QyxPQUFPLEVBQUUsR0FBRztJQUNaLE1BQU0sRUFBRSxHQUFHO0lBQ1gsTUFBTSxFQUFFLEdBQUc7SUFDWCxRQUFRLEVBQUUsR0FBRztJQUNiLE9BQU8sRUFBRSxHQUFHO0lBQ1osUUFBUSxFQUFFLEdBQUc7SUFDYixRQUFRLEVBQUUsR0FBRztJQUNiLFFBQVEsRUFBRSxHQUFHO0lBQ2IsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJO0lBQ3pCLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSTtJQUN6QixVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUk7SUFDMUIsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJO0lBQ3hCLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSTtJQUN4QixPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUk7SUFDdkIsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJO0lBQ3pCLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSTtJQUN6QixTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUk7SUFDekIsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJO0lBQ3pCLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSTtDQUMxQixDQUFDO0FBRUY7O0dBRUc7QUFDSCxTQUFTLGNBQWMsQ0FBQyxJQUFZO0lBQ2xDLHlCQUF5QjtJQUN6QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBRXBGLDRDQUE0QztJQUM1QyxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FB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RSxTQUFTLEdBQUcsR0FBRztJQUN4RSxPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGV4dCBTYW5pdGl6YXRpb24gVXRpbGl0aWVzXG4gKlxuICogQ29udmVydHMgSFRNTCBjb250ZW50IGZyb20gUHJvZHVjdEJvYXJkIEFQSSByZXNwb25zZXMgdG8gY2xlYW4gcGxhaW4gdGV4dFxuICogc3VpdGFibGUgZm9yIGFnZW50IGNvbnN1bXB0aW9uLlxuICovXG5cbi8qKlxuICogQ29tbW9uIEhUTUwgZW50aXR5IG1hcHBpbmdzXG4gKi9cbmNvbnN0IEhUTUxfRU5USVRJRVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICcmYW1wOyc6ICcmJyxcbiAgJyZsdDsnOiAnPCcsXG4gICcmZ3Q7JzogJz4nLFxuICAnJnF1b3Q7JzogJ1wiJyxcbiAgJyYjMzk7JzogXCInXCIsXG4gICcmYXBvczsnOiBcIidcIixcbiAgJyZuYnNwOyc6ICcgJyxcbiAgJyYjMTYwOyc6ICcgJyxcbiAgJyZtZGFzaDsnOiAnXFx1MjAxNCcsIC8vIOKAlFxuICAnJm5kYXNoOyc6ICdcXHUyMDEzJywgLy8g4oCTXG4gICcmaGVsbGlwOyc6ICdcXHUyMDI2JywgLy8g4oCmXG4gICcmYnVsbDsnOiAnXFx1MjAyMicsIC8vIOKAolxuICAnJmNvcHk7JzogJ1xcdTAwQTknLCAvLyDCqVxuICAnJnJlZzsnOiAnXFx1MDBBRScsIC8vIMKuXG4gICcmdHJhZGU7JzogJ1xcdTIxMjInLCAvLyDihKJcbiAgJyZsc3F1bzsnOiAnXFx1MjAxOCcsIC8vICdcbiAgJyZyc3F1bzsnOiAnXFx1MjAxOScsIC8vICdcbiAgJyZsZHF1bzsnOiAnXFx1MjAxQycsIC8vIFwiXG4gICcmcmRxdW87JzogJ1xcdTIwMUQnLCAvLyBcIlxufTtcblxuLyoqXG4gKiBEZWNvZGUgSFRNTCBlbnRpdGllcyB0byB0aGVpciBjaGFyYWN0ZXIgZXF1aXZhbGVudHNcbiAqL1xuZnVuY3Rpb24gZGVjb2RlRW50aXRpZXModGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gUmVwbGFjZSBuYW1lZCBlbnRpdGllc1xuICBsZXQgcmVzdWx0ID0gdGV4dC5yZXBsYWNlKC8mW2EtekEtWl0rOy9nLCAobWF0Y2gpID0+IEhUTUxfRU5USVRJRVNbbWF0Y2hdIHx8IG1hdGNoKTtcblxuICAvLyBSZXBsYWNlIGRlY2ltYWwgbnVtZXJpYyBlbnRpdGllcyAoJiMxMjM7KVxuICByZXN1bHQgPSByZXN1bHQucmVwbGFjZSgvJiMoXFxkKyk7L2csIChfLCBudW0pID0+XG4gICAgU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChudW0sIDEwKSlcbiAgKTtcblxuICAvLyBSZXBsYWNlIGhleCBudW1lcmljIGVudGl0aWVzICgmI3gxRjspXG4gIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKC8mI3goWzAtOWEtZkEtRl0rKTsvZywgKF8sIGhleCkgPT5cbiAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGhleCwgMTYpKVxuICApO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogU3RyaXAgSFRNTCB0YWdzIGFuZCBjb252ZXJ0IHRvIHBsYWluIHRleHRcbiAqXG4gKiBIYW5kbGVzOlxuICogLSBCbG9jayBlbGVtZW50cyAocCwgZGl2LCBicikg4oaSIG5ld2xpbmVzXG4gKiAtIExpc3QgaXRlbXMg4oaSIGJ1bGxldCBwb2ludHNcbiAqIC0gSW5saW5lIGVsZW1lbnRzIOKGkiBzdHJpcHBlZFxuICogLSBIVE1MIGVudGl0aWVzIOKGkiBkZWNvZGVkXG4gKiAtIFdoaXRlc3BhY2Ug4oaSIG5vcm1hbGl6ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwSHRtbChodG1sOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogc3RyaW5nIHtcbiAgaWYgKCFodG1sKSByZXR1cm4gJyc7XG5cbiAgbGV0IHRleHQgPSBodG1sO1xuXG4gIC8vIENvbnZlcnQgYmxvY2sgZWxlbWVudHMgdG8gYXBwcm9wcmlhdGUgc3BhY2luZ1xuICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC88YnJcXHMqXFwvPz4vZ2ksICdcXG4nKTtcbiAgdGV4dCA9IHRleHQucmVwbGFjZSgvPFxcL3A+L2dpLCAnXFxuXFxuJyk7XG4gIHRleHQgPSB0ZXh0LnJlcGxhY2UoLzxcXC9kaXY+L2dpLCAnXFxuJyk7XG4gIHRleHQgPSB0ZXh0LnJlcGxhY2UoLzxcXC9saT4vZ2ksICdcXG4nKTtcbiAgdGV4dCA9IHRleHQucmVwbGFjZSgvPGxpW14+XSo+L2dpLCAn4oCiICcpO1xuICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC88XFwvaFsxLTZdPi9naSwgJ1xcblxcbicpO1xuXG4gIC8vIFN0cmlwIGFsbCByZW1haW5pbmcgSFRNTCB0YWdzXG4gIHRleHQgPSB0ZXh0LnJlcGxhY2UoLzxbXj5dKz4vZywgJycpO1xuXG4gIC8vIERlY29kZSBIVE1MIGVudGl0aWVzXG4gIHRleHQgPSBkZWNvZGVFbnRpdGllcyh0ZXh0KTtcblxuICAvLyBOb3JtYWxpemUgd2hpdGVzcGFjZTogY29sbGFwc2UgbXVsdGlwbGUgc3BhY2VzL3RhYnMgdG8gc2luZ2xlIHNwYWNlXG4gIHRleHQgPSB0ZXh0LnJlcGxhY2UoL1sgXFx0XSsvZywgJyAnKTtcblxuICAvLyBOb3JtYWxpemUgbmV3bGluZXM6IGNvbGxhcHNlIDMrIG5ld2xpbmVzIHRvIDJcbiAgdGV4dCA9IHRleHQucmVwbGFjZSgvXFxuezMsfS9nLCAnXFxuXFxuJyk7XG5cbiAgLy8gVHJpbSB3aGl0ZXNwYWNlIGZyb20gZWFjaCBsaW5lIGFuZCBvdmVyYWxsXG4gIHRleHQgPSB0ZXh0LnNwbGl0KCdcXG4nKS5tYXAobGluZSA9PiBsaW5lLnRyaW0oKSkuam9pbignXFxuJykudHJpbSgpO1xuXG4gIHJldHVybiB0ZXh0O1xufVxuXG4vKipcbiAqIFRydW5jYXRlIHRleHQgYXQgd29yZCBib3VuZGFyeSB3aXRoIGVsbGlwc2lzXG4gKlxuICogLSBSZXR1cm5zIG9yaWdpbmFsIGlmIHdpdGhpbiBsaW1pdFxuICogLSBGaW5kcyBsYXN0IHNwYWNlIHdpdGhpbiB0aHJlc2hvbGQgKDcwJSBvZiBtYXgpXG4gKiAtIEFkZHMgZWxsaXBzaXMgY2hhcmFjdGVyICjigKYpIGluc3RlYWQgb2YgdGhyZWUgZG90c1xuICovXG5leHBvcnQgZnVuY3Rpb24gdHJ1bmNhdGUodGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCwgbWF4TGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAoIXRleHQpIHJldHVybiAnJztcbiAgaWYgKHRleHQubGVuZ3RoIDw9IG1heExlbmd0aCkgcmV0dXJuIHRleHQ7XG5cbiAgY29uc3QgdHJ1bmNhdGVkID0gdGV4dC5zdWJzdHJpbmcoMCwgbWF4TGVuZ3RoKTtcbiAgY29uc3QgbGFzdFNwYWNlID0gdHJ1bmNhdGVkLmxhc3RJbmRleE9mKCcgJyk7XG5cbiAgLy8gSWYgd2UgZmluZCBhIHNwYWNlIGluIHRoZSBsYXN0IDMwJSBvZiB0aGUgc3RyaW5nLCBicmVhayB0aGVyZVxuICAvLyBPdGhlcndpc2UganVzdCB0cnVuY2F0ZSBhdCBtYXhMZW5ndGhcbiAgY29uc3QgYnJlYWtQb2ludCA9IGxhc3RTcGFjZSA+IG1heExlbmd0aCAqIDAuNyA/IGxhc3RTcGFjZSA6IG1heExlbmd0aDtcblxuICByZXR1cm4gdHJ1bmNhdGVkLnN1YnN0cmluZygwLCBicmVha1BvaW50KS50cmltRW5kKCkgKyAnXFx1MjAyNic7XG59XG5cbi8qKlxuICogQ2xlYW4gSFRNTCBjb250ZW50IGFuZCB0cnVuY2F0ZSBpbiBvbmUgc3RlcFxuICpcbiAqIFRoaXMgaXMgdGhlIG1haW4gZnVuY3Rpb24gdG8gdXNlIGZvciBzYW5pdGl6aW5nIFByb2R1Y3RCb2FyZCBBUEkgcmVzcG9uc2VzLlxuICogU3RyaXBzIEhUTUwsIGRlY29kZXMgZW50aXRpZXMsIG5vcm1hbGl6ZXMgd2hpdGVzcGFjZSwgYW5kIHRydW5jYXRlcyBhdCB3b3JkIGJvdW5kYXJ5LlxuICpcbiAqIEBwYXJhbSBodG1sIC0gUmF3IEhUTUwgY29udGVudCBmcm9tIEFQSVxuICogQHBhcmFtIG1heExlbmd0aCAtIE1heGltdW0gbGVuZ3RoIChkZWZhdWx0OiAyMDApXG4gKiBAcmV0dXJucyBDbGVhbiBwbGFpbiB0ZXh0LCB0cnVuY2F0ZWQgd2l0aCBlbGxpcHNpcyBpZiBuZWVkZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFuVGV4dChodG1sOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsLCBtYXhMZW5ndGggPSAyMDApOiBzdHJpbmcge1xuICByZXR1cm4gdHJ1bmNhdGUoc3RyaXBIdG1sKGh0bWwpLCBtYXhMZW5ndGgpO1xufVxuIl19
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "openclaw-productboard",
3
3
  "name": "ProductBoard",
4
- "version": "1.0.11",
4
+ "version": "1.0.12",
5
5
  "description": "ProductBoard integration for managing features, products, and customer feedback",
6
6
  "configSchema": {
7
7
  "type": "object",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openclaw-productboard",
3
- "version": "1.0.11",
3
+ "version": "1.0.13",
4
4
  "description": "OpenClaw plugin for ProductBoard integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -2,6 +2,8 @@
2
2
  name: productboard-feedback
3
3
  description: Create and manage customer feedback notes in ProductBoard
4
4
  user-invocable: true
5
+ homepage: https://github.com/robertoamoreno/openclaw-productboard
6
+ metadata: {"openclaw":{"emoji":"💬"}}
5
7
  ---
6
8
 
7
9
  # ProductBoard Feedback Skill
@@ -2,11 +2,8 @@
2
2
  name: productboard-release
3
3
  description: Manage ProductBoard releases and roadmap planning
4
4
  user-invocable: false
5
- metadata:
6
- openclaw:
7
- requires:
8
- env:
9
- - PRODUCTBOARD_API_TOKEN
5
+ homepage: https://github.com/robertoamoreno/openclaw-productboard
6
+ metadata: {"openclaw":{"emoji":"🚀"}}
10
7
  ---
11
8
 
12
9
  # ProductBoard Release Planning Skill
@@ -2,6 +2,8 @@
2
2
  name: productboard-search
3
3
  description: Search and explore ProductBoard features, products, and feedback
4
4
  user-invocable: true
5
+ homepage: https://github.com/robertoamoreno/openclaw-productboard
6
+ metadata: {"openclaw":{"emoji":"🔍"}}
5
7
  ---
6
8
 
7
9
  # ProductBoard Search Skill