openclaw-productboard 1.0.7 → 1.0.9

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.
package/dist/index.js CHANGED
@@ -6,21 +6,32 @@
6
6
  */
7
7
  import { ProductBoardClient } from './client/api-client.js';
8
8
  import { createFeatureTools, createProductTools, createNoteTools, createSearchTools, } from './tools/index.js';
9
+ // Create a safe logger that falls back to console
10
+ function createLogger(api) {
11
+ const log = api.log;
12
+ return {
13
+ info: (msg, data) => log?.info?.(msg, data) ?? console.log(`[productboard] ${msg}`, data ?? ''),
14
+ warn: (msg, data) => log?.warn?.(msg, data) ?? console.warn(`[productboard] ${msg}`, data ?? ''),
15
+ error: (msg, data) => log?.error?.(msg, data) ?? console.error(`[productboard] ${msg}`, data ?? ''),
16
+ debug: (msg, data) => log?.debug?.(msg, data) ?? undefined,
17
+ };
18
+ }
9
19
  /**
10
20
  * Plugin registration function called by OpenClaw
11
21
  */
12
22
  export default function register(api) {
13
- const config = api.config;
14
- // Validate required configuration
23
+ const logger = createLogger(api);
24
+ const config = (api.config ?? {});
25
+ // Check for API token - don't throw, just warn and skip tool registration
15
26
  if (!config.apiToken) {
16
- api.log.error('ProductBoard API token is required');
17
- throw new Error('ProductBoard API token is required. Set it in plugin configuration.');
27
+ logger.warn('ProductBoard API token not configured. Run: openclaw plugins config openclaw-productboard --set apiToken=YOUR_TOKEN');
28
+ return;
18
29
  }
19
- api.log.info('Initializing ProductBoard plugin');
30
+ logger.info('Initializing ProductBoard plugin');
20
31
  // Initialize the API client
21
32
  const client = new ProductBoardClient(config);
22
33
  // Validate token on startup (non-blocking)
23
- validateTokenAsync(client, api);
34
+ validateTokenAsync(client, logger);
24
35
  // Register all tools
25
36
  const allTools = [
26
37
  ...createFeatureTools(client),
@@ -30,27 +41,27 @@ export default function register(api) {
30
41
  ];
31
42
  for (const tool of allTools) {
32
43
  api.registerTool(tool);
33
- api.log.debug(`Registered tool: ${tool.name}`);
44
+ logger.debug(`Registered tool: ${tool.name}`);
34
45
  }
35
- api.log.info(`ProductBoard plugin initialized with ${allTools.length} tools`);
46
+ logger.info(`ProductBoard plugin initialized with ${allTools.length} tools`);
36
47
  }
37
48
  /**
38
49
  * Validate API token asynchronously
39
50
  */
40
- async function validateTokenAsync(client, api) {
51
+ async function validateTokenAsync(client, logger) {
41
52
  try {
42
53
  const isValid = await client.validateToken();
43
54
  if (isValid) {
44
- api.log.info('ProductBoard API token validated successfully');
55
+ logger.info('ProductBoard API token validated successfully');
45
56
  }
46
57
  else {
47
- api.log.warn('ProductBoard API token validation failed - requests may fail with 401');
58
+ logger.warn('ProductBoard API token validation failed - requests may fail with 401');
48
59
  }
49
60
  }
50
61
  catch (error) {
51
- api.log.warn('Could not validate ProductBoard API token', { error });
62
+ logger.warn('Could not validate ProductBoard API token', { error });
52
63
  }
53
64
  }
54
65
  export { ProductBoardClient } from './client/api-client.js';
55
66
  export { ProductBoardError } from './client/errors.js';
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsaUJBQWlCLEdBQ2xCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUI7O0dBRUc7QUFDSCxNQUFNLENBQUMsT0FBTyxVQUFVLFFBQVEsQ0FBQyxHQUFjO0lBQzdDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFzQixDQUFDO0lBRTFDLGtDQUFrQztJQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3JCLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7UUFDcEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBRWpELDRCQUE0QjtJQUM1QixNQUFNLE1BQU0sR0FBRyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTlDLDJDQUEyQztJQUMzQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFaEMscUJBQXFCO0lBQ3JCLE1BQU0sUUFBUSxHQUFHO1FBQ2YsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7UUFDN0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7UUFDN0IsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO1FBQzFCLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDO0tBQzdCLENBQUM7SUFFRixLQUFLLE1BQU0sSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzVCLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx3Q0FBd0MsUUFBUSxDQUFDLE1BQU0sUUFBUSxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUVEOztHQUVHO0FBQ0gsS0FBSyxVQUFVLGtCQUFrQixDQUFDLE1BQTBCLEVBQUUsR0FBYztJQUMxRSxJQUFJLENBQUM7UUFDSCxNQUFNLE9BQU8sR0FBRyxNQUFNLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsK0NBQStDLENBQUMsQ0FBQztRQUNoRSxDQUFDO2FBQU0sQ0FBQztZQUNOLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHVFQUF1RSxDQUFDLENBQUM7UUFDeEYsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsMkNBQTJDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7QUFDSCxDQUFDO0FBSUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb2R1Y3RCb2FyZCBPcGVuQ2xhdyBQbHVnaW5cbiAqXG4gKiBQcm92aWRlcyBpbnRlZ3JhdGlvbiB3aXRoIFByb2R1Y3RCb2FyZCBmb3IgbWFuYWdpbmcgZmVhdHVyZXMsIHByb2R1Y3RzLFxuICogY3VzdG9tZXIgZmVlZGJhY2sgbm90ZXMsIGFuZCB3b3Jrc3BhY2UgdXNlcnMuXG4gKi9cblxuaW1wb3J0IHsgUHJvZHVjdEJvYXJkQ2xpZW50IH0gZnJvbSAnLi9jbGllbnQvYXBpLWNsaWVudC5qcyc7XG5pbXBvcnQgeyBQbHVnaW5BUEksIFBsdWdpbkNvbmZpZyB9IGZyb20gJy4vY2xpZW50L3R5cGVzLmpzJztcbmltcG9ydCB7XG4gIGNyZWF0ZUZlYXR1cmVUb29scyxcbiAgY3JlYXRlUHJvZHVjdFRvb2xzLFxuICBjcmVhdGVOb3RlVG9vbHMsXG4gIGNyZWF0ZVNlYXJjaFRvb2xzLFxufSBmcm9tICcuL3Rvb2xzL2luZGV4LmpzJztcblxuLyoqXG4gKiBQbHVnaW4gcmVnaXN0cmF0aW9uIGZ1bmN0aW9uIGNhbGxlZCBieSBPcGVuQ2xhd1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZWdpc3RlcihhcGk6IFBsdWdpbkFQSSk6IHZvaWQge1xuICBjb25zdCBjb25maWcgPSBhcGkuY29uZmlnIGFzIFBsdWdpbkNvbmZpZztcblxuICAvLyBWYWxpZGF0ZSByZXF1aXJlZCBjb25maWd1cmF0aW9uXG4gIGlmICghY29uZmlnLmFwaVRva2VuKSB7XG4gICAgYXBpLmxvZy5lcnJvcignUHJvZHVjdEJvYXJkIEFQSSB0b2tlbiBpcyByZXF1aXJlZCcpO1xuICAgIHRocm93IG5ldyBFcnJvcignUHJvZHVjdEJvYXJkIEFQSSB0b2tlbiBpcyByZXF1aXJlZC4gU2V0IGl0IGluIHBsdWdpbiBjb25maWd1cmF0aW9uLicpO1xuICB9XG5cbiAgYXBpLmxvZy5pbmZvKCdJbml0aWFsaXppbmcgUHJvZHVjdEJvYXJkIHBsdWdpbicpO1xuXG4gIC8vIEluaXRpYWxpemUgdGhlIEFQSSBjbGllbnRcbiAgY29uc3QgY2xpZW50ID0gbmV3IFByb2R1Y3RCb2FyZENsaWVudChjb25maWcpO1xuXG4gIC8vIFZhbGlkYXRlIHRva2VuIG9uIHN0YXJ0dXAgKG5vbi1ibG9ja2luZylcbiAgdmFsaWRhdGVUb2tlbkFzeW5jKGNsaWVudCwgYXBpKTtcblxuICAvLyBSZWdpc3RlciBhbGwgdG9vbHNcbiAgY29uc3QgYWxsVG9vbHMgPSBbXG4gICAgLi4uY3JlYXRlRmVhdHVyZVRvb2xzKGNsaWVudCksXG4gICAgLi4uY3JlYXRlUHJvZHVjdFRvb2xzKGNsaWVudCksXG4gICAgLi4uY3JlYXRlTm90ZVRvb2xzKGNsaWVudCksXG4gICAgLi4uY3JlYXRlU2VhcmNoVG9vbHMoY2xpZW50KSxcbiAgXTtcblxuICBmb3IgKGNvbnN0IHRvb2wgb2YgYWxsVG9vbHMpIHtcbiAgICBhcGkucmVnaXN0ZXJUb29sKHRvb2wpO1xuICAgIGFwaS5sb2cuZGVidWcoYFJlZ2lzdGVyZWQgdG9vbDogJHt0b29sLm5hbWV9YCk7XG4gIH1cblxuICBhcGkubG9nLmluZm8oYFByb2R1Y3RCb2FyZCBwbHVnaW4gaW5pdGlhbGl6ZWQgd2l0aCAke2FsbFRvb2xzLmxlbmd0aH0gdG9vbHNgKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBBUEkgdG9rZW4gYXN5bmNocm9ub3VzbHlcbiAqL1xuYXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVUb2tlbkFzeW5jKGNsaWVudDogUHJvZHVjdEJvYXJkQ2xpZW50LCBhcGk6IFBsdWdpbkFQSSk6IFByb21pc2U8dm9pZD4ge1xuICB0cnkge1xuICAgIGNvbnN0IGlzVmFsaWQgPSBhd2FpdCBjbGllbnQudmFsaWRhdGVUb2tlbigpO1xuICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICBhcGkubG9nLmluZm8oJ1Byb2R1Y3RCb2FyZCBBUEkgdG9rZW4gdmFsaWRhdGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcGkubG9nLndhcm4oJ1Byb2R1Y3RCb2FyZCBBUEkgdG9rZW4gdmFsaWRhdGlvbiBmYWlsZWQgLSByZXF1ZXN0cyBtYXkgZmFpbCB3aXRoIDQwMScpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBhcGkubG9nLndhcm4oJ0NvdWxkIG5vdCB2YWxpZGF0ZSBQcm9kdWN0Qm9hcmQgQVBJIHRva2VuJywgeyBlcnJvciB9KTtcbiAgfVxufVxuXG4vLyBFeHBvcnQgdHlwZXMgZm9yIGNvbnN1bWVyc1xuZXhwb3J0IHR5cGUgeyBQbHVnaW5BUEksIFBsdWdpbkNvbmZpZyB9IGZyb20gJy4vY2xpZW50L3R5cGVzLmpzJztcbmV4cG9ydCB7IFByb2R1Y3RCb2FyZENsaWVudCB9IGZyb20gJy4vY2xpZW50L2FwaS1jbGllbnQuanMnO1xuZXhwb3J0IHsgUHJvZHVjdEJvYXJkRXJyb3IgfSBmcm9tICcuL2NsaWVudC9lcnJvcnMuanMnO1xuIl19
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsaUJBQWlCLEdBQ2xCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsa0RBQWtEO0FBQ2xELFNBQVMsWUFBWSxDQUFDLEdBQWM7SUFDbEMsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNwQixPQUFPO1FBQ0wsSUFBSSxFQUFFLENBQUMsR0FBVyxFQUFFLElBQWMsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2pILElBQUksRUFBRSxDQUFDLEdBQVcsRUFBRSxJQUFjLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNsSCxLQUFLLEVBQUUsQ0FBQyxHQUFXLEVBQUUsSUFBYyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7UUFDckgsS0FBSyxFQUFFLENBQUMsR0FBVyxFQUFFLElBQWMsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxTQUFTO0tBQzdFLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsT0FBTyxVQUFVLFFBQVEsQ0FBQyxHQUFjO0lBQzdDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFpQixDQUFDO0lBRWxELDBFQUEwRTtJQUMxRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3JCLE1BQU0sQ0FBQyxJQUFJLENBQUMscUhBQXFILENBQUMsQ0FBQztRQUNuSSxPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsQ0FBQztJQUVoRCw0QkFBNEI7SUFDNUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUU5QywyQ0FBMkM7SUFDM0Msa0JBQWtCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRW5DLHFCQUFxQjtJQUNyQixNQUFNLFFBQVEsR0FBRztRQUNmLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDO1FBQzdCLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDO1FBQzdCLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQztRQUMxQixHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztLQUM3QixDQUFDO0lBRUYsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUM1QixHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxRQUFRLENBQUMsTUFBTSxRQUFRLENBQUMsQ0FBQztBQUMvRSxDQUFDO0FBSUQ7O0dBRUc7QUFDSCxLQUFLLFVBQVUsa0JBQWtCLENBQUMsTUFBMEIsRUFBRSxNQUFjO0lBQzFFLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixNQUFNLENBQUMsSUFBSSxDQUFDLCtDQUErQyxDQUFDLENBQUM7UUFDL0QsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLENBQUMsSUFBSSxDQUFDLHVFQUF1RSxDQUFDLENBQUM7UUFDdkYsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQywyQ0FBMkMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQztBQUNILENBQUM7QUFJRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHJvZHVjdEJvYXJkIE9wZW5DbGF3IFBsdWdpblxuICpcbiAqIFByb3ZpZGVzIGludGVncmF0aW9uIHdpdGggUHJvZHVjdEJvYXJkIGZvciBtYW5hZ2luZyBmZWF0dXJlcywgcHJvZHVjdHMsXG4gKiBjdXN0b21lciBmZWVkYmFjayBub3RlcywgYW5kIHdvcmtzcGFjZSB1c2Vycy5cbiAqL1xuXG5pbXBvcnQgeyBQcm9kdWN0Qm9hcmRDbGllbnQgfSBmcm9tICcuL2NsaWVudC9hcGktY2xpZW50LmpzJztcbmltcG9ydCB7IFBsdWdpbkFQSSwgUGx1Z2luQ29uZmlnIH0gZnJvbSAnLi9jbGllbnQvdHlwZXMuanMnO1xuaW1wb3J0IHtcbiAgY3JlYXRlRmVhdHVyZVRvb2xzLFxuICBjcmVhdGVQcm9kdWN0VG9vbHMsXG4gIGNyZWF0ZU5vdGVUb29scyxcbiAgY3JlYXRlU2VhcmNoVG9vbHMsXG59IGZyb20gJy4vdG9vbHMvaW5kZXguanMnO1xuXG4vLyBDcmVhdGUgYSBzYWZlIGxvZ2dlciB0aGF0IGZhbGxzIGJhY2sgdG8gY29uc29sZVxuZnVuY3Rpb24gY3JlYXRlTG9nZ2VyKGFwaTogUGx1Z2luQVBJKSB7XG4gIGNvbnN0IGxvZyA9IGFwaS5sb2c7XG4gIHJldHVybiB7XG4gICAgaW5mbzogKG1zZzogc3RyaW5nLCBkYXRhPzogdW5rbm93bikgPT4gbG9nPy5pbmZvPy4obXNnLCBkYXRhKSA/PyBjb25zb2xlLmxvZyhgW3Byb2R1Y3Rib2FyZF0gJHttc2d9YCwgZGF0YSA/PyAnJyksXG4gICAgd2FybjogKG1zZzogc3RyaW5nLCBkYXRhPzogdW5rbm93bikgPT4gbG9nPy53YXJuPy4obXNnLCBkYXRhKSA/PyBjb25zb2xlLndhcm4oYFtwcm9kdWN0Ym9hcmRdICR7bXNnfWAsIGRhdGEgPz8gJycpLFxuICAgIGVycm9yOiAobXNnOiBzdHJpbmcsIGRhdGE/OiB1bmtub3duKSA9PiBsb2c/LmVycm9yPy4obXNnLCBkYXRhKSA/PyBjb25zb2xlLmVycm9yKGBbcHJvZHVjdGJvYXJkXSAke21zZ31gLCBkYXRhID8/ICcnKSxcbiAgICBkZWJ1ZzogKG1zZzogc3RyaW5nLCBkYXRhPzogdW5rbm93bikgPT4gbG9nPy5kZWJ1Zz8uKG1zZywgZGF0YSkgPz8gdW5kZWZpbmVkLFxuICB9O1xufVxuXG4vKipcbiAqIFBsdWdpbiByZWdpc3RyYXRpb24gZnVuY3Rpb24gY2FsbGVkIGJ5IE9wZW5DbGF3XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlZ2lzdGVyKGFwaTogUGx1Z2luQVBJKTogdm9pZCB7XG4gIGNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcihhcGkpO1xuICBjb25zdCBjb25maWcgPSAoYXBpLmNvbmZpZyA/PyB7fSkgYXMgUGx1Z2luQ29uZmlnO1xuXG4gIC8vIENoZWNrIGZvciBBUEkgdG9rZW4gLSBkb24ndCB0aHJvdywganVzdCB3YXJuIGFuZCBza2lwIHRvb2wgcmVnaXN0cmF0aW9uXG4gIGlmICghY29uZmlnLmFwaVRva2VuKSB7XG4gICAgbG9nZ2VyLndhcm4oJ1Byb2R1Y3RCb2FyZCBBUEkgdG9rZW4gbm90IGNvbmZpZ3VyZWQuIFJ1bjogb3BlbmNsYXcgcGx1Z2lucyBjb25maWcgb3BlbmNsYXctcHJvZHVjdGJvYXJkIC0tc2V0IGFwaVRva2VuPVlPVVJfVE9LRU4nKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBsb2dnZXIuaW5mbygnSW5pdGlhbGl6aW5nIFByb2R1Y3RCb2FyZCBwbHVnaW4nKTtcblxuICAvLyBJbml0aWFsaXplIHRoZSBBUEkgY2xpZW50XG4gIGNvbnN0IGNsaWVudCA9IG5ldyBQcm9kdWN0Qm9hcmRDbGllbnQoY29uZmlnKTtcblxuICAvLyBWYWxpZGF0ZSB0b2tlbiBvbiBzdGFydHVwIChub24tYmxvY2tpbmcpXG4gIHZhbGlkYXRlVG9rZW5Bc3luYyhjbGllbnQsIGxvZ2dlcik7XG5cbiAgLy8gUmVnaXN0ZXIgYWxsIHRvb2xzXG4gIGNvbnN0IGFsbFRvb2xzID0gW1xuICAgIC4uLmNyZWF0ZUZlYXR1cmVUb29scyhjbGllbnQpLFxuICAgIC4uLmNyZWF0ZVByb2R1Y3RUb29scyhjbGllbnQpLFxuICAgIC4uLmNyZWF0ZU5vdGVUb29scyhjbGllbnQpLFxuICAgIC4uLmNyZWF0ZVNlYXJjaFRvb2xzKGNsaWVudCksXG4gIF07XG5cbiAgZm9yIChjb25zdCB0b29sIG9mIGFsbFRvb2xzKSB7XG4gICAgYXBpLnJlZ2lzdGVyVG9vbCh0b29sKTtcbiAgICBsb2dnZXIuZGVidWcoYFJlZ2lzdGVyZWQgdG9vbDogJHt0b29sLm5hbWV9YCk7XG4gIH1cblxuICBsb2dnZXIuaW5mbyhgUHJvZHVjdEJvYXJkIHBsdWdpbiBpbml0aWFsaXplZCB3aXRoICR7YWxsVG9vbHMubGVuZ3RofSB0b29sc2ApO1xufVxuXG50eXBlIExvZ2dlciA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUxvZ2dlcj47XG5cbi8qKlxuICogVmFsaWRhdGUgQVBJIHRva2VuIGFzeW5jaHJvbm91c2x5XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlVG9rZW5Bc3luYyhjbGllbnQ6IFByb2R1Y3RCb2FyZENsaWVudCwgbG9nZ2VyOiBMb2dnZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBpc1ZhbGlkID0gYXdhaXQgY2xpZW50LnZhbGlkYXRlVG9rZW4oKTtcbiAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgbG9nZ2VyLmluZm8oJ1Byb2R1Y3RCb2FyZCBBUEkgdG9rZW4gdmFsaWRhdGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2dnZXIud2FybignUHJvZHVjdEJvYXJkIEFQSSB0b2tlbiB2YWxpZGF0aW9uIGZhaWxlZCAtIHJlcXVlc3RzIG1heSBmYWlsIHdpdGggNDAxJyk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGxvZ2dlci53YXJuKCdDb3VsZCBub3QgdmFsaWRhdGUgUHJvZHVjdEJvYXJkIEFQSSB0b2tlbicsIHsgZXJyb3IgfSk7XG4gIH1cbn1cblxuLy8gRXhwb3J0IHR5cGVzIGZvciBjb25zdW1lcnNcbmV4cG9ydCB0eXBlIHsgUGx1Z2luQVBJLCBQbHVnaW5Db25maWcgfSBmcm9tICcuL2NsaWVudC90eXBlcy5qcyc7XG5leHBvcnQgeyBQcm9kdWN0Qm9hcmRDbGllbnQgfSBmcm9tICcuL2NsaWVudC9hcGktY2xpZW50LmpzJztcbmV4cG9ydCB7IFByb2R1Y3RCb2FyZEVycm9yIH0gZnJvbSAnLi9jbGllbnQvZXJyb3JzLmpzJztcbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "openclaw-productboard",
3
3
  "name": "ProductBoard",
4
- "version": "1.0.7",
4
+ "version": "1.0.9",
5
5
  "description": "ProductBoard integration for managing features, products, and customer feedback",
6
6
  "configSchema": {
7
7
  "type": "object",
@@ -26,7 +26,7 @@
26
26
  "description": "Maximum API requests per minute"
27
27
  }
28
28
  },
29
- "required": ["apiToken"]
29
+ "required": []
30
30
  },
31
31
  "uiHints": {
32
32
  "apiToken": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openclaw-productboard",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "description": "OpenClaw plugin for ProductBoard integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",