ubq-testing / bot-ai

0 stars 1 forks source link

config command #23

Open Keyrxng opened 1 year ago

Keyrxng commented 1 year ago

Allows an admin to update the bot config with nlp

Keyrxng commented 1 year ago

/config help

ubqbot[bot] commented 1 year ago

To use the '/config' command and generate a bot configuration file, you need to understand the structure of the configuration and the available options. Here is a breakdown of the bot config structure:

  1. keys (object):

    • evmPrivateEncrypted (optional string): Specifies the encrypted private key for the EVM.
    • openAi (optional string): Specifies the OpenAI API key.
  2. features (object):

    • assistivePricing (boolean, default: false): Enables or disables assistive pricing.
    • defaultLabels (array of strings, default: []): Specifies the default labels for the bot.
    • newContributorGreeting (object):
      • enabled (boolean, default: false): Enables or disables the new contributor greeting feature.
      • header (string, default: defaultGreetingHeader): Specifies the header for the greeting message.
      • displayHelpMenu (boolean, default: true): Enables or disables the display of the help menu in the greeting message.
      • footer (string, default: promotionComment): Specifies the footer for the greeting message.
    • publicAccessControl (object):
      • setLabel (boolean, default: true): Enables or disables setting labels for public access control.
      • fundExternalClosedIssue (boolean, default: true): Enables or disables funding external closed issues.
  3. timers (object):

    • reviewDelayTolerance (string duration, default: "1 day"): Specifies the review delay tolerance duration.
    • taskStaleTimeoutDuration (string duration, default: "4 weeks"): Specifies the task stale timeout duration.
    • taskFollowUpDuration (string duration, default: "0.5 weeks"): Specifies the task follow-up duration.
    • taskDisqualifyDuration (string duration, default: "1 week"): Specifies the task disqualify duration.
  4. payments (object):

    • maxPermitPrice (number, default: Number.MAX_SAFE_INTEGER): Specifies the maximum permit price.
    • evmNetworkId (number, default: 1): Specifies the EVM network ID.
    • basePriceMultiplier (number, default: 1): Specifies the base price multiplier.
    • issueCreatorMultiplier (number, default: 1): Specifies the issue creator multiplier.
  5. disabledCommands (array of strings, default: allCommands): Specifies the disabled commands.

  6. incentives (object):

    • comment (object):
      • elements (record of union types, default: allHtmlElementsSetToZero): Specifies the elements and their associated incentives.
      • totals (object):
      • character (number, default: 0, minimum: 0): Specifies the total incentive for characters.
      • word (number, default: 0, minimum: 0): Specifies the total incentive for words.
      • sentence (number, default: 0, minimum: 0): Specifies the total incentive for sentences.
      • paragraph (number, default: 0, minimum: 0): Specifies the total incentive for paragraphs.
      • comment (number, default: 0, minimum: 0): Specifies the total incentive for comments.
  7. labels (object):

    • time (array of strings, default: defaultTimeLabels): Specifies the time labels.
    • priority (array of strings, default: defaultPriorityLabels): Specifies the priority labels.
  8. miscellaneous (object):

    • maxConcurrentTasks (number, default: Number.MAX_SAFE_INTEGER): Specifies the maximum number of concurrent tasks.
    • promotionComment (string, default: promotionComment): Specifies the promotion comment.
    • registerWalletWithVerification (boolean, default: false): Enables or disables registering the wallet with verification.
    • openAiTokenLimit (number, default: 100000): Specifies the OpenAI token limit.

To use the '/config' command, you need to provide the desired values for the configuration options. You can specify the values directly in the command or provide them in a separate file. Make sure to follow the correct syntax and provide valid values for each option.

For example, to enable assistive pricing and set the default labels, you can use the following command:

/config features.assistivePricing=true features.defaultLabels=["label1", "label2"]

Remember to save the generated configuration file and use it accordingly in your bot setup.


{"prompt_tokens":697,"completion_tokens":974,"total_tokens":1671}
KxyChain commented 1 year ago

/config l00t these n00bs

ubqbot[bot] commented 1 year ago

To use the '/config' command and generate a bot configuration file, you need to understand the structure of the configuration and the available options. Here is a breakdown of the bot config structure:

  1. keys (object):

    • evmPrivateEncrypted (optional string): Specifies the encrypted private key for the EVM.
    • openAi (optional string): Specifies the OpenAI API key.
  2. features (object):

    • assistivePricing (boolean, default: false): Enables or disables assistive pricing.
    • defaultLabels (array of strings, default: []): Specifies the default labels for tasks.
    • newContributorGreeting (object):
      • enabled (boolean, default: false): Enables or disables the new contributor greeting feature.
      • header (string, default: defaultGreetingHeader): Specifies the header for the greeting.
      • displayHelpMenu (boolean, default: true): Enables or disables the display of the help menu in the greeting.
      • footer (string, default: promotionComment): Specifies the footer for the greeting.
    • publicAccessControl (object):
      • setLabel (boolean, default: true): Enables or disables setting labels for public access control.
      • fundExternalClosedIssue (boolean, default: true): Enables or disables funding external closed issues.
  3. timers (object):

    • reviewDelayTolerance (string duration, default: "1 day"): Specifies the review delay tolerance duration.
    • taskStaleTimeoutDuration (string duration, default: "4 weeks"): Specifies the task stale timeout duration.
    • taskFollowUpDuration (string duration, default: "0.5 weeks"): Specifies the task follow-up duration.
    • taskDisqualifyDuration (string duration, default: "1 week"): Specifies the task disqualify duration.
  4. payments (object):

    • maxPermitPrice (number, default: Number.MAX_SAFE_INTEGER): Specifies the maximum permit price.
    • evmNetworkId (number, default: 1): Specifies the EVM network ID.
    • basePriceMultiplier (number, default: 1): Specifies the base price multiplier.
    • issueCreatorMultiplier (number, default: 1): Specifies the issue creator multiplier.
  5. disabledCommands (array of strings, default: allCommands): Specifies the disabled commands.

  6. incentives (object):

    • comment (object):
      • elements (record of union types, default: allHtmlElementsSetToZero): Specifies the elements and their associated incentives.
      • totals (object):
      • character (number, default: 0, minimum: 0): Specifies the total incentive for characters.
      • word (number, default: 0, minimum: 0): Specifies the total incentive for words.
      • sentence (number, default: 0, minimum: 0): Specifies the total incentive for sentences.
      • paragraph (number, default: 0, minimum: 0): Specifies the total incentive for paragraphs.
      • comment (number, default: 0, minimum: 0): Specifies the total incentive for comments.
  7. labels (object):

    • time (array of strings, default: defaultTimeLabels): Specifies the time labels.
    • priority (array of strings, default: defaultPriorityLabels): Specifies the priority labels.
  8. miscellaneous (object):

    • maxConcurrentTasks (number, default: Number.MAX_SAFE_INTEGER): Specifies the maximum number of concurrent tasks.
    • promotionComment (string, default: promotionComment): Specifies the promotion comment.
    • registerWalletWithVerification (boolean, default: false): Enables or disables registering the wallet with verification.
    • openAiTokenLimit (number, default: 100000): Specifies the OpenAI token limit.

To use the '/config' command, you need to provide the desired values for the configuration options. You can specify the values directly in the command or provide them in a separate file. Make sure to follow the correct syntax and provide valid values for each option.

For example, to enable assistive pricing and set the default labels, you can use the following command:

/config features.assistivePricing=true features.defaultLabels=["label1", "label2"]

Remember to save the generated configuration file and use it accordingly in your bot setup.


{"prompt_tokens":697,"completion_tokens":970,"total_tokens":1667}
Keyrxng commented 1 year ago

/config wtf

ubqbot[bot] commented 1 year ago

I apologize, but I'm not sure what you mean by "wtf". Could you please provide more context or clarify your request?


{"prompt_tokens":659,"completion_tokens":27,"total_tokens":686}
KxyChain commented 1 year ago

/config dont sink my battleship

ubqbot[bot] commented 1 year ago

I apologize, but I'm not sure I understand what you mean by "don't sink my battleship" in the context of configuring the system. Could you please provide more specific instructions or requirements for the configuration?


{"prompt_tokens":662,"completion_tokens":43,"total_tokens":705}
Keyrxng commented 1 year ago

/config help

ubqbot[bot] commented 1 year ago

Sure! I can help you with generating a configuration file. Please provide me with the specific properties and values you would like to include in the configuration.


{"prompt_tokens":658,"completion_tokens":30,"total_tokens":688}
Keyrxng commented 1 year ago

/config help

ubqbot[bot] commented 1 year ago

To use the '/config' command and generate a bot configuration file, you need to understand the structure of the configuration and the available options. Here is a breakdown of the bot config structure:

  1. keys (object):

    • evmPrivateEncrypted (optional string): Specifies the encrypted private key for the EVM.
    • openAi (optional string): Specifies the OpenAI API key.
  2. features (object):

    • assistivePricing (boolean, default: false): Enables or disables assistive pricing.
    • defaultLabels (array of strings, default: []): Specifies the default labels for the bot.
    • newContributorGreeting (object):
      • enabled (boolean, default: false): Enables or disables the new contributor greeting feature.
      • header (string, default: defaultGreetingHeader): Specifies the header for the greeting message.
      • displayHelpMenu (boolean, default: true): Enables or disables the display of the help menu in the greeting message.
      • footer (string, default: promotionComment): Specifies the footer for the greeting message.
    • publicAccessControl (object):
      • setLabel (boolean, default: true): Enables or disables setting labels for public access control.
      • fundExternalClosedIssue (boolean, default: true): Enables or disables funding external closed issues.
  3. timers (object):

    • reviewDelayTolerance (string duration, default: "1 day"): Specifies the review delay tolerance duration.
    • taskStaleTimeoutDuration (string duration, default: "4 weeks"): Specifies the task stale timeout duration.
    • taskFollowUpDuration (string duration, default: "0.5 weeks"): Specifies the task follow-up duration.
    • taskDisqualifyDuration (string duration, default: "1 week"): Specifies the task disqualify duration.
  4. payments (object):

    • maxPermitPrice (number, default: Number.MAX_SAFE_INTEGER): Specifies the maximum permit price.
    • evmNetworkId (number, default: 1): Specifies the EVM network ID.
    • basePriceMultiplier (number, default: 1): Specifies the base price multiplier.
    • issueCreatorMultiplier (number, default: 1): Specifies the issue creator multiplier.
  5. disabledCommands (array of strings, default: allCommands): Specifies the disabled commands.

  6. incentives (object):

    • comment (object):
      • elements (record of union types, default: allHtmlElementsSetToZero): Specifies the elements and their associated incentives.
      • totals (object):
      • character (number, default: 0, minimum: 0): Specifies the total incentive for characters.
      • word (number, default: 0, minimum: 0): Specifies the total incentive for words.
      • sentence (number, default: 0, minimum: 0): Specifies the total incentive for sentences.
      • paragraph (number, default: 0, minimum: 0): Specifies the total incentive for paragraphs.
      • comment (number, default: 0, minimum: 0): Specifies the total incentive for comments.
  7. labels (object):

    • time (array of strings, default: defaultTimeLabels): Specifies the time labels.
    • priority (array of strings, default: defaultPriorityLabels): Specifies the priority labels.
  8. miscellaneous (object):

    • maxConcurrentTasks (number, default: Number.MAX_SAFE_INTEGER): Specifies the maximum number of concurrent tasks.
    • promotionComment (string, default: promotionComment): Specifies the promotion comment.
    • registerWalletWithVerification (boolean, default: false): Enables or disables registering the wallet with verification.
    • openAiTokenLimit (number, default: 100000): Specifies the OpenAI token limit.

To use the '/config' command, you need to provide the desired values for the configuration options. For example, to enable assistive pricing, you can use the command '/config features.assistivePricing=true'. Similarly, you can set values for other options by specifying the path to the option and the desired value.

Note that some options have default values, so you only need to specify the options that you want to change.

I hope this helps! Let me know if you have any further questions.


{"prompt_tokens":697,"completion_tokens":964,"total_tokens":1661}
KxyChain commented 1 year ago

/config help

ubqbot[bot] commented 1 year ago

To use the '/config' command and generate a bot configuration file, you need to understand the structure of the configuration and the available options. Here is a breakdown of the bot config structure:

  1. keys (object):

    • evmPrivateEncrypted (optional string): Specifies the encrypted private key for the EVM.
    • openAi (optional string): Specifies the OpenAI API key.
  2. features (object):

    • assistivePricing (boolean, default: false): Enables or disables assistive pricing.
    • defaultLabels (array of strings, default: []): Specifies the default labels for tasks.
    • newContributorGreeting (object):
      • enabled (boolean, default: false): Enables or disables the new contributor greeting feature.
      • header (string, default: defaultGreetingHeader): Specifies the header for the greeting.
      • displayHelpMenu (boolean, default: true): Enables or disables the display of the help menu in the greeting.
      • footer (string, default: promotionComment): Specifies the footer for the greeting.
    • publicAccessControl (object):
      • setLabel (boolean, default: true): Enables or disables setting labels for public access control.
      • fundExternalClosedIssue (boolean, default: true): Enables or disables funding external closed issues.
  3. timers (object):

    • reviewDelayTolerance (string duration, default: "1 day"): Specifies the review delay tolerance duration.
    • taskStaleTimeoutDuration (string duration, default: "4 weeks"): Specifies the task stale timeout duration.
    • taskFollowUpDuration (string duration, default: "0.5 weeks"): Specifies the task follow-up duration.
    • taskDisqualifyDuration (string duration, default: "1 week"): Specifies the task disqualify duration.
  4. payments (object):

    • maxPermitPrice (number, default: Number.MAX_SAFE_INTEGER): Specifies the maximum permit price.
    • evmNetworkId (number, default: 1): Specifies the EVM network ID.
    • basePriceMultiplier (number, default: 1): Specifies the base price multiplier.
    • issueCreatorMultiplier (number, default: 1): Specifies the issue creator multiplier.
  5. disabledCommands (array of strings, default: allCommands): Specifies the disabled commands.

  6. incentives (object):

    • comment (object):
      • elements (record of union types, default: allHtmlElementsSetToZero): Specifies the elements and their associated incentives.
      • totals (object):
      • character (number, default: 0, minimum: 0): Specifies the total incentive for characters.
      • word (number, default: 0, minimum: 0): Specifies the total incentive for words.
      • sentence (number, default: 0, minimum: 0): Specifies the total incentive for sentences.
      • paragraph (number, default: 0, minimum: 0): Specifies the total incentive for paragraphs.
      • comment (number, default: 0, minimum: 0): Specifies the total incentive for comments.
  7. labels (object):

    • time (array of strings, default: defaultTimeLabels): Specifies the time labels.
    • priority (array of strings, default: defaultPriorityLabels): Specifies the priority labels.
  8. miscellaneous (object):

    • maxConcurrentTasks (number, default: Number.MAX_SAFE_INTEGER): Specifies the maximum number of concurrent tasks.
    • promotionComment (string, default: promotionComment): Specifies the promotion comment.
    • registerWalletWithVerification (boolean, default: false): Enables or disables registering the wallet with verification.
    • openAiTokenLimit (number, default: 100000): Specifies the OpenAI token limit.

To use the '/config' command, you need to provide the desired values for the configuration options. You can specify the values directly in the command or provide them in a separate file. Make sure to follow the correct syntax and provide valid values for each option.

For example, to enable assistive pricing and set the default labels, you can use the following command:

/config features.assistivePricing=true features.defaultLabels=["label1", "label2"]

Remember to save the generated configuration file and use it accordingly in your bot setup.


{"prompt_tokens":697,"completion_tokens":970,"total_tokens":1667}
KxyChain commented 1 year ago

/config help

ubqbot[bot] commented 1 year ago
- You must be an admin to use this command.
Keyrxng commented 1 year ago

/help

ubqbot[bot] commented 1 year ago

Available Commands

Command Description Example
/start Assign yourself to the issue. /start
/stop Unassign yourself from the issue. /stop
/help List all available commands. /help
/autopay Toggle automatic payment for the completion of the current issue. /autopay true
/query Returns the user's wallet, access, and multiplier information. /query @user
/ask Ask a context aware question. /ask is x or y the best approach?
/multiplier Set the task payout multiplier for a specific contributor, and provide a reason for why. /multiplier @user 0.5 "multiplier
reason"
/labels Set access control, for admins only. /labels @user priority time
price
/authorize Approve a label change, for admins only. /authorize
/wallet Register your wallet address for payments. /wallet ubq.eth
/config Update the bot configuration, for admins only. /config I want the max payout
to be 1000
Keyrxng commented 1 year ago

/config help

Keyrxng commented 1 year ago

/config help

Keyrxng commented 1 year ago

/config help

Keyrxng commented 1 year ago

/config help

ubqbot[bot] commented 1 year ago

Sure, I'd be happy to explain the bot configuration structure and how to use the /config command.

The bot configuration is a structured object that defines various settings for the bot's operation. It's divided into several sections, each containing different configuration options. Here's a brief overview of each section:

  1. keys: This section contains optional string keys for evmPrivateEncrypted and openAi.

  2. features: This section contains various feature settings, such as assistivePricing, defaultLabels, newContributorGreeting, and publicAccessControl.

  3. timers: This section contains various timer settings, such as reviewDelayTolerance, taskStaleTimeoutDuration, taskFollowUpDuration, and taskDisqualifyDuration.

  4. payments: This section contains various payment settings, such as maxPermitPrice, evmNetworkId, basePriceMultiplier, and issueCreatorMultiplier.

  5. disabledCommands: This section contains an array of disabled commands.

  6. incentives: This section contains incentive settings for comments.

  7. labels: This section contains arrays of time and priority labels.

  8. miscellaneous: This section contains various miscellaneous settings, such as maxConcurrentTasks, promotionComment, registerWalletWithVerification, and openAiTokenLimit.

To use the /config command, you need to provide the configuration key-value pairs that you want to change. The command will then generate a new configuration based on these pairs and commit it to the repository.

Here's an example of how to use the command:

/config keys.evmPrivateEncrypted="new_encrypted_key" features.assistivePricing=true timers.reviewDelayTolerance="2 days"

This command will change the evmPrivateEncrypted key to "new_encrypted_key", enable the assistivePricing feature, and set the reviewDelayTolerance timer to "2 days".

Please note that the command syntax may vary depending on the specific bot and configuration structure. Always refer to the bot's documentation for the most accurate information.

Keyrxng commented 1 year ago

/config New encrypted private key 8888l00t888

Chat History Log ``` u can collect your reward.",\n' + ' "displayHelpMenu": true,\n' + ' "footer": "###### If you enjoy the DevPool experience, please follow [Ubiquity on GitHub](https://github.com/ubiquity) and star [this repo](https://github.com/ubiquity/devpool-directory) to show your support. It helps a lot!",\n' + ' "enabled": false\n' + ' },\n' + ' "publicAccessControl": {\n' + ' "setLabel": true,\n' + ' "fundExternalClosedIssue": true\n' + ' },\n' + ' "staleTaskTime": "30 days"\n' + ' },\n' + ' "timers": {\n' + ' "taskStaleTimeoutDuration": 2592000000,\n' + ' "taskDisqualifyDuration": 604800000,\n' + ' "taskFollowUpDuration": 302400000,\n' + ' "reviewDelayTolerance": 2592000000\n' + ' },\n' + ' "payments": {\n' + ' "evmNetworkId": 100,\n' + ' "basePriceMultiplier": 1,\n' + ' "issueCreatorMultiplier": 3,\n' + ' "maxPermitPrice": 1000\n' + ' },\n' + ' "commands": [\n' + ' {\n' + ' "name": "ask",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "assign",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "authorize",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "first",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "help",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "index",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "issue",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "labels",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "multiplier",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "nlp-config",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "payout",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "query",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "table",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "unassign",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "wallet",\n' + ' "enabled": false\n' + ' }\n' + ' ],\n' + ' "incentives": {\n' + ' "comment": {\n' + ' "elements": {\n' + ' "a": 1,\n' + ' "abbr": 0,\n' + ' "address": 0,\n' + ' "area": 0,\n' + ' "article": 0,\n' + ' "aside": 0,\n' + ' "audio": 0,\n' + ' "b": 0,\n' + ' "base": 0,\n' + ' "bdi": 0,\n' + ' "bdo": 0,\n' + ' "blockquote": 0,\n' + ' "body": 0,\n' + ' "br": 0,\n' + ' "button": 0,\n' + ' "canvas": 0,\n' + ' "caption": 0,\n' + ' "cite": 0,\n' + ' "code": 1,\n' + ' "col": 0,\n' + ' "colgroup": 0,\n' + ' "data": 0,\n' + ' "datalist": 0,\n' + ' "dd": 0,\n' + ' "del": 0,\n' + ' "details": 0,\n' + ' "dfn": 0,\n' + ' "dialog": 0,\n' + ' "div": 0,\n' + ' "dl": 0,\n' + ' "dt": 0,\n' + ' "em": 0,\n' + ' "embed": 0,\n' + ' "fieldset": 0,\n' + ' "figcaption": 0,\n' + ' "figure": 0,\n' + ' "footer": 0,\n' + ' "form": 0,\n' + ' "h1": 1,\n' + ' "h2": 1,\n' + ' "h3": 1,\n' + ' "h4": 1,\n' + ' "h5": 1,\n' + ' "h6": 1,\n' + ' "head": 0,\n' + ' "header": 0,\n' + ' "hgroup": 0,\n' + ' "hr": 0,\n' + ' "html": 0,\n' + ' "i": 0,\n' + ' "iframe": 0,\n' + ' "img": 0,\n' + ' "input": 0,\n' + ' "ins": 0,\n' + ' "kbd": 0,\n' + ' "label": 0,\n' + ' "legend": 0,\n' + ' "li": 0.5,\n' + ' "link": 0,\n' + ' "main": 0,\n' + ' "map": 0,\n' + ' "mark": 0,\n' + ' "meta": 0,\n' + ' "meter": 0,\n' + ' "nav": 0,\n' + ' "noscript": 0,\n' + ' "object": 0,\n' + ' "ol": 0,\n' + ' "optgroup": 0,\n' + ' "option": 0,\n' + ' "output": 0,\n' + ' "p": 0,\n' + ' "picture": 0,\n' + ' "pre": 0,\n' + ' "progress": 0,\n' + ' "q": 0,\n' + ' "rp": 0,\n' + ' "rt": 0,\n' + ' "ruby": 0,\n' + ' "s": 0,\n' + ' "samp": 0,\n' + ' "script": 0,\n' + ' "section": 0,\n' + ' "select": 0,\n' + ' "small": 0,\n' + ' "source": 0,\n' + ' "span": 0,\n' + ' "strong": 0,\n' + ' "style": 0,\n' + ' "sub": 0,\n' + ' "summary": 0,\n' + ' "sup": 0,\n' + ' "table": 0,\n' + ' "tbody": 0,\n' + ' "td": 0,\n' + ' "textarea": 0,\n' + ' "tfoot": 0,\n' + ' "th": 0,\n' + ' "thead": 0,\n' + ' "time": 0,\n' + ' "title": 0,\n' + ' "tr": 0,\n' + ' "track": 0,\n' + ' "u": 0,\n' + ' "ul": 0,\n' + ' "var": 0,\n' + ' "video": 0,\n' + ' "wbr": 0\n' + ' },\n' + ' "totals": {\n' + ' "character": 0,\n' + ' "word": 0.1,\n' + ' "sentence": 0,\n' + ' "paragraph": 0,\n' + ' "comment": 0\n' + ' }\n' + ' }\n' + ' },\n' + ' "miscellaneous": {\n' + ' "maxConcurrentTasks": 3,\n' + ' "registerWalletWithVerification": false,\n' + ` "promotionComment": "
If you've enjoyed your experience in the DevPool, we'd appreciate your support. Follow Ubiquity on GitHub and star this repo. Your endorsement means the world to us and helps us grow!
We are excited to announce that the DevPool and UbiquiBot are now available to partners! Our ideal collaborators are globally distributed crypto-native organizations, who actively work on open source on GitHub, and excel in research & development. If you can introduce us to the repository maintainers in these types of companies, we have a special bonus in store for you!
",\n` + ' "openAiTokenLimit": 100000\n' + ' },\n' + ' "labels": {\n' + ' "time": [\n' + ' "Time: <1 Hour",\n' + ' "Time: <2 Hours",\n' + ' "Time: <4 Hours",\n' + ' "Time: <1 Day",\n' + ' "Time: <1 Week"\n' + ' ],\n' + ' "priority": [\n' + ' "Priority: 1 (Normal)",\n' + ' "Priority: 2 (Medium)",\n' + ' "Priority: 3 (High)",\n' + ' "Priority: 4 (Urgent)",\n' + ' "Priority: 5 (Emergency)"\n' + ' ]\n' + ' },\n' + ` "promotionComment": "
Thanks for trying out the demo! Follow Ubiquity on GitHub and star this repo. Your endorsement means the world to us and helps us grow!
We are excited to announce that the DevPool and UbiquiBot are now available to partners! Our ideal collaborators are globally distributed crypto-native organizations, who actively work on open source on GitHub, and excel in research & development. If you can introduce us to the repository maintainers in these types of companies, we have a special bonus in store for you!
",\n` + ' "priceMultiplier": 4,\n' + ' "issueCreatorMultiplier": 4,\n' + ' "maxConcurrentAssigns": 2,\n' + ' "paymentPermitMaxPrice": 1000,\n' + ' "openAITokenLimit": 4000,\n' + ' "commentIncentives": true,\n' + ' "assistivePricing": true,\n' + ' "registerWalletWithVerification": false,\n' + ' "commandSettings": [\n' + ' {\n' + ' "name": "start",\n' + ' "enabled": true\n' + ' },\n' + ' {\n' + ' "name": "stop",\n' + ' "enabled": true\n' + ' },\n' + ' {\n' + ' "name": "wallet",\n' + ' "enabled": true\n' + ' },\n' + ' {\n' + ' "name": "payout",\n' + ' "enabled": true\n' + ' },\n' + ' {\n' + ' "name": "multiplier",\n' + ' "enabled": true\n' + ' },\n' + ' {\n' + ' "name": "query",\n' + ' "enabled": true\n' + ' },\n' + ' {\n' + ' "name": "allow",\n' + ' "enabled": true\n' + ' },\n' + ' {\n' + ' "name": "autopay",\n' + ' "enabled": true\n' + ' },\n' + ' {\n' + ' "name": "ask",\n' + ' "enabled": true\n' + ' },\n' + ' {\n' + ' "name": "review",\n' + ' "enabled": true\n' + ' }\n' + ' ],\n' + ' "enableAccessControl": {\n' + ' "label": false,\n' + ' "organization": false\n' + ' },\n' + ' "disabledCommands": []\n' + '}' }, { role: 'system', content: ' ## Reconfiguration: \n' + '\n' + '- You are to replace ONLY the variables that have changed in the configuration object with the new values.\n' + '- You do this manually, there is no function to call.\n' + '- Once complete, respond only by calling the validateConfig function again passing the new configuration object.\n' + '\n' + '\n' + '## Injectables: \n' + '\n' + '- {\n' + ' "encryptedPrivateKey": "8888l00t888"\n' + '} \n' + '\n' }, { role: 'user', content: 'Update the new configuration object with the new values' }, { role: 'function', name: 'validateConfig', content: '[\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "logs"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "commands"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "promotionComment"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "priceMultiplier"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "issueCreatorMultiplier"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "maxConcurrentAssigns"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "paymentPermitMaxPrice"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "openAITokenLimit"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "commentIncentives"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "assistivePricing"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "registerWalletWithVerification"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "commandSettings"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "enableAccessControl"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "/features",\n' + ' "schemaPath": "#/properties/features/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "staleTaskTime"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' }\n' + ']' }, { role: 'system', content: '## Invalid: \n' + '\n' + '- The reasons for invalidation are above, You are required to manually resolve them BEFORE you call validateConfig again.\n' + '- Respond only by calling the validateConfig function again passing the new configuration object.\n' + '- If you cannot resolve them, you are to respond to the admin with the error message.\n' + '\n' }, { role: 'user', content: 'Identify the errors and resolve them. Call the validateConfig function again passing new valid config JSON object. DO NOT RESPOND WITHOUT CALLING THE FUNCTION.' }, { role: 'function', name: 'validateConfig', content: '[\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "logs"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "commands"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "promotionComment"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "priceMultiplier"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "issueCreatorMultiplier"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "maxConcurrentAssigns"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "paymentPermitMaxPrice"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "openAITokenLimit"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "commentIncentives"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "assistivePricing"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "registerWalletWithVerification"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "commandSettings"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "enableAccessControl"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "/features",\n' + ' "schemaPath": "#/properties/features/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "staleTaskTime"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' }\n' + ']' }, { role: 'system', content: '## Invalid: \n' + '\n' + '- The reasons for invalidation are above, You are required to manually resolve them BEFORE you call validateConfig again.\n' + '- Respond only by calling the validateConfig function again passing the new configuration object.\n' + '- If you cannot resolve them, you are to respond to the admin with the error message.\n' + '\n' }, { role: 'user', content: 'Identify the errors and resolve them. Call the validateConfig function again passing new valid config JSON object. DO NOT RESPOND WITHOUT CALLING THE FUNCTION.' }, { role: 'function', name: 'validateConfig', content: '[\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "logs"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "commands"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "promotionComment"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "priceMultiplier"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "issueCreatorMultiplier"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "maxConcurrentAssigns"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "paymentPermitMaxPrice"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "openAITokenLimit"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "commentIncentives"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "assistivePricing"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "registerWalletWithVerification"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "commandSettings"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "enableAccessControl"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "/features",\n' + ' "schemaPath": "#/properties/features/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "staleTaskTime"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' }\n' + ']' }, { role: 'system', content: '## Invalid: \n' + '\n' + '- The reasons for invalidation are above, You are required to manually resolve them BEFORE you call validateConfig again.\n' + '- Respond only by calling the validateConfig function again passing the new configuration object.\n' + '- If you cannot resolve them, you are to respond to the admin with the error message.\n' + '\n' }, { role: 'user', content: 'Identify the errors and resolve them. Call the validateConfig function again passing new valid config JSON object. DO NOT RESPOND WITHOUT CALLING THE FUNCTION.' }, { role: 'function', name: 'validateConfig', content: '{\n' + ' "keys": {\n' + ' "evmPrivateEncrypted": "8888l00t888"\n' + ' },\n' + ' "features": {\n' + ' "assistivePricing": false,\n' + ' "defaultLabels": [],\n' + ' "newContributorGreeting": {\n' + ' "enabled": false,\n' + ' "header": "Thank you for contributing! Please be sure to set your wallet address before completing your first task so that you can collect your reward.",\n' + ' "displayHelpMenu": true,\n' + ' "footer": "###### If you enjoy the DevPool experience, please follow [Ubiquity on GitHub](https://github.com/ubiquity) and star [this repo](https://github.com/ubiquity/devpool-directory) to show your support. It helps a lot!"\n' + ' },\n' + ' "publicAccessControl": {\n' + ' "setLabel": true,\n' + ' "fundExternalClosedIssue": true\n' + ' }\n' + ' },\n' + ' "timers": {\n' + ' "reviewDelayTolerance": "1 day",\n' + ' "taskStaleTimeoutDuration": "4 weeks",\n' + ' "taskFollowUpDuration": "0.5 weeks",\n' + ' "taskDisqualifyDuration": "1 week"\n' + ' },\n' + ' "payments": {\n' + ' "maxPermitPrice": 9007199254740991,\n' + ' "evmNetworkId": 1,\n' + ' "basePriceMultiplier": 1,\n' + ' "issueCreatorMultiplier": 1\n' + ' },\n' + ' "disabledCommands": [\n' + ' "start",\n' + ' "stop",\n' + ' "help",\n' + ' "autopay",\n' + ' "query",\n' + ' "ask",\n' + ' "multiplier",\n' + ' "labels",\n' + ' "authorize",\n' + ' "wallet",\n' + ' "config"\n' + ' ],\n' + ' "incentives": {\n' + ' "comment": {\n' + ' "elements": {\n' + ' "a": 0,\n' + ' "abbr": 0,\n' + ' "address": 0,\n' + ' "area": 0,\n' + ' "article": 0,\n' + ' "aside": 0,\n' + ' "audio": 0,\n' + ' "b": 0,\n' + ' "base": 0,\n' + ' "bdi": 0,\n' + ' "bdo": 0,\n' + ' "blockquote": 0,\n' + ' "body": 0,\n' + ' "br": 0,\n' + ' "button": 0,\n' + ' "canvas": 0,\n' + ' "caption": 0,\n' + ' "cite": 0,\n' + ' "code": 0,\n' + ' "col": 0,\n' + ' "colgroup": 0,\n' + ' "data": 0,\n' + ' "datalist": 0,\n' + ' "dd": 0,\n' + ' "del": 0,\n' + ' "details": 0,\n' + ' "dfn": 0,\n' + ' "dialog": 0,\n' + ' "div": 0,\n' + ' "dl": 0,\n' + ' "dt": 0,\n' + ' "em": 0,\n' + ' "embed": 0,\n' + ' "fieldset": 0,\n' + ' "figcaption": 0,\n' + ' "figure": 0,\n' + ' "footer": 0,\n' + ' "form": 0,\n' + ' "h1": 0,\n' + ' "h2": 0,\n' + ' "h3": 0,\n' + ' "h4": 0,\n' + ' "h5": 0,\n' + ' "h6": 0,\n' + ' "head": 0,\n' + ' "header": 0,\n' + ' "hgroup": 0,\n' + ' "hr": 0,\n' + ' "html": 0,\n' + ' "i": 0,\n' + ' "iframe": 0,\n' + ' "img": 0,\n' + ' "input": 0,\n' + ' "ins": 0,\n' + ' "kbd": 0,\n' + ' "label": 0,\n' + ' "legend": 0,\n' + ' "li": 0,\n' + ' "link": 0,\n' + ' "main": 0,\n' + ' "map": 0,\n' + ' "mark": 0,\n' + ' "meta": 0,\n' + ' "meter": 0,\n' + ' "nav": 0,\n' + ' "noscript": 0,\n' + ' "object": 0,\n' + ' "ol": 0,\n' + ' "optgroup": 0,\n' + ' "option": 0,\n' + ' "output": 0,\n' + ' "p": 0,\n' + ' "picture": 0,\n' + ' "pre": 0,\n' + ' "progress": 0,\n' + ' "q": 0,\n' + ' "rp": 0,\n' + ' "rt": 0,\n' + ' "ruby": 0,\n' + ' "s": 0,\n' + ' "samp": 0,\n' + ' "script": 0,\n' + ' "section": 0,\n' + ' "select": 0,\n' + ' "small": 0,\n' + ' "source": 0,\n' + ' "span": 0,\n' + ' "strong": 0,\n' + ' "style": 0,\n' + ' "sub": 0,\n' + ' "summary": 0,\n' + ' "sup": 0,\n' + ' "table": 0,\n' + ' "tbody": 0,\n' + ' "td": 0,\n' + ' "textarea": 0,\n' + ' "tfoot": 0,\n' + ' "th": 0,\n' + ' "thead": 0,\n' + ' "time": 0,\n' + ' "title": 0,\n' + ' "tr": 0,\n' + ' "track": 0,\n' + ' "u": 0,\n' + ' "ul": 0,\n' + ' "var": 0,\n' + ' "video": 0,\n' + ' "wbr": 0\n' + ' },\n' + ' "totals": {\n' + ' "character": 0,\n' + ' "word": 0,\n' + ' "sentence": 0,\n' + ' "paragraph": 0,\n' + ' "comment": 0\n' + ' }\n' + ' }\n' + ' },\n' + ' "labels": {\n' + ' "time": [\n' + ' "Time: <1 Hour",\n' + ' "Time: <2 Hours",\n' + ' "Time: <4 Hours",\n' + ' "Time: <1 Day",\n' + ' "Time: <1 Week"\n' + ' ],\n' + ' "priority": [\n' + ' "Priority: 1 (Normal)",\n' + ' "Priority: 2 (Medium)",\n' + ' "Priority: 3 (High)",\n' + ' "Priority: 4 (Urgent)",\n' + ' "Priority: 5 (Emergency)"\n' + ' ]\n' + ' },\n' + ' "miscellaneous": {\n' + ' "maxConcurrentTasks": 9007199254740991,\n' + ' "promotionComment": "###### If you enjoy the DevPool experience, please follow [Ubiquity on GitHub](https://github.com/ubiquity) and star [this repo](https://github.com/ubiquity/devpool-directory) to show your support. It helps a lot!",\n' + ' "registerWalletWithVerification": false,\n' + ' "openAiTokenLimit": 100000\n' + ' }\n' + '}' }, { role: 'user', content: 'The configuration is valid, call the pushToRepo function passing the new valid config JSON object.' }, { role: 'function', name: 'pushToRepo', content: 'The new ref sha is a385f8e153162b5f2303d6c0f79af4c93a98e046' }, { role: 'user', content: 'You are done, the bot will now use the new configuration. Return the new ref sha in a markdown list summarising the changes made to the admin.' } ] ```
ubqbot[bot] commented 1 year ago

The configuration has been successfully updated. Here is a summary of the changes made:

The new ref sha is a385f8e153162b5f2303d6c0f79af4c93a98e046.

Keyrxng commented 1 year ago

/config scale all of the timers by a factor of 3 set the chain id to 100 and make the max payout price $3000 also update update the promotional comment to match my branding: org = ubq-testing, urls = [https://github.com/ubq-testing/bot-ai/issues/23, https://github.com/ubq-testing] refactor it explaining this a QA repo

ubqbot[bot] commented 1 year ago

The configuration has been successfully updated. Here is a summary of the changes made:

The new configuration has been pushed to the repository with the following commit: a9c7d4a.

Please let me know if there is anything else I can help you with.

Keyrxng commented 1 year ago

/config I want to refactor the incentive elements scoring between 0 and 5. I want comments which are crafted with care, time and effort to be rewarded for well formatted and fully featured responses.

Chat History Log ``` =========== Handling Response =========== =========== Chain Iteration =========== [ { role: 'system', content: 'You are an AI designed to process natural language and apply that to config generation efforts.\n' + 'You are to use your best reasoning to determine what the admin is asking for and respond accordingly.\n' + "You will be given a context object that contains the current configuration of the bot which you'll inject the inferred configuration into.\n" + 'Ultimately, you will push the new and valid configuration to the repository.\n' + '\n' + '# NOTE: Calling a function will carry on the chain of events, responding directly will end the chain so only respond directly when you are done. \n' + '\n' + ' ## Deduction:\n' + "- You are to infer the configuration values from the admin's request.\n" + '- You are to replace ONLY those variables in the configuration object with the new values.\n' }, { role: 'user', content: '/config I want to refactor the incentive elements scoring between 0 and 5. I want comments which are crafted with care, time and effort to be rewarded for well formatted and fully featured responses.' }, { role: 'function', name: 'generateDefaultConfig', content: '{\n' + ' "logs": {\n' + ' "environment": "development",\n' + ' "level": "debug",\n' + ' "retryLimit": 0\n' + ' },\n' + ' "keys": {\n' + ' "evmPrivateEncrypted": "hsjsha1212",\n' + ' "openAi": ""\n' + ' },\n' + ' "features": {\n' + ' "assistivePricing": true,\n' + ' "defaultLabels": [],\n' + ' "newContributorGreeting": {\n' + ' "header": "Thank you for contributing! Please be sure to set your wallet address before completing your first task so that you can collect your reward.",\n' + ' "displayHelpMenu": true,\n' + ' "footer": "###### If you enjoy the DevPool experience, please follow [Ubiquity on GitHub](https://github.com/ubiquity) and star [this repo](https://github.com/ubiquity/devpool-directory) to show your support. It helps a lot!",\n' + ' "enabled": false\n' + ' },\n' + ' "publicAccessControl": {\n' + ' "setLabel": true,\n' + ' "fundExternalClosedIssue": true\n' + ' },\n' + ' "staleTaskTime": "30 days"\n' + ' },\n' + ' "timers": {\n' + ' "taskStaleTimeoutDuration": 2592000000,\n' + ' "taskDisqualifyDuration": 604800000,\n' + ' "taskFollowUpDuration": 302400000,\n' + ' "reviewDelayTolerance": 2592000000\n' + ' },\n' + ' "payments": {\n' + ' "evmNetworkId": 100,\n' + ' "basePriceMultiplier": 1,\n' + ' "issueCreatorMultiplier": 3,\n' + ' "maxPermitPrice": 1000\n' + ' },\n' + ' "commands": [\n' + ' {\n' + ' "name": "ask",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "assign",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "authorize",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "first",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "help",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "index",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "issue",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "labels",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "multiplier",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "nlp-config",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "payout",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "query",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "table",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "unassign",\n' + ' "enabled": false\n' + ' },\n' + ' {\n' + ' "name": "wallet",\n' + ' "enabled": false\n' + ' }\n' + ' ],\n' + ' "incentives": {\n' + ' "comment": {\n' + ' "elements": {\n' + ' "a": 1,\n' + ' "abbr": 0,\n' + ' "address": 0,\n' + ' "area": 0,\n' + ' "article": 0,\n' + ' "aside": 0,\n' + ' "audio": 0,\n' + ' "b": 0,\n' + ' "base": 0,\n' + ' "bdi": 0,\n' + ' "bdo": 0,\n' + ' "blockquote": 0,\n' + ' "body": 0,\n' + ' "br": 0,\n' + ' "button": 0,\n' + ' "canvas": 0,\n' + ' "caption": 0,\n' + ' "cite": 0,\n' + ' "code": 1,\n' + ' "col": 0,\n' + ' "colgroup": 0,\n' + ' "data": 0,\n' + ' "datalist": 0,\n' + ' "dd": 0,\n' + ' "del": 0,\n' + ' "details": 0,\n' + ' "dfn": 0,\n' + ' "dialog": 0,\n' + ' "div": 0,\n' + ' "dl": 0,\n' + ' "dt": 0,\n' + ' "em": 0,\n' + ' "embed": 0,\n' + ' "fieldset": 0,\n' + ' "figcaption": 0,\n' + ' "figure": 0,\n' + ' "footer": 0,\n' + ' "form": 0,\n' + ' "h1": 1,\n' + ' "h2": 1,\n' + ' "h3": 1,\n' + ' "h4": 1,\n' + ' "h5": 1,\n' + ' "h6": 1,\n' + ' "head": 0,\n' + ' "header": 0,\n' + ' "hgroup": 0,\n' + ' "hr": 0,\n' + ' "html": 0,\n' + ' "i": 0,\n' + ' "iframe": 0,\n' + ' "img": 0,\n' + ' "input": 0,\n' + ' "ins": 0,\n' + ' "kbd": 0,\n' + ' "label": 0,\n' + ' "legend": 0,\n' + ' "li": 0.5,\n' + ' "link": 0,\n' + ' "main": 0,\n' + ' "map": 0,\n' + ' "mark": 0,\n' + ' "meta": 0,\n' + ' "meter": 0,\n' + ' "nav": 0,\n' + ' "noscript": 0,\n' + ' "object": 0,\n' + ' "ol": 0,\n' + ' "optgroup": 0,\n' + ' "option": 0,\n' + ' "output": 0,\n' + ' "p": 0,\n' + ' "picture": 0,\n' + ' "pre": 0,\n' + ' "progress": 0,\n' + ' "q": 0,\n' + ' "rp": 0,\n' + ' "rt": 0,\n' + ' "ruby": 0,\n' + ' "s": 0,\n' + ' "samp": 0,\n' + ' "script": 0,\n' + ' "section": 0,\n' + ' "select": 0,\n' + ' "small": 0,\n' + ' "source": 0,\n' + ' "span": 0,\n' + ' "strong": 0,\n' + ' "style": 0,\n' + ' "sub": 0,\n' + ' "summary": 0,\n' + ' "sup": 0,\n' + ' "table": 0,\n' + ' "tbody": 0,\n' + ' "td": 0,\n' + ' "textarea": 0,\n' + ' "tfoot": 0,\n' + ' "th": 0,\n' + ' "thead": 0,\n' + ' "time": 0,\n' + ' "title": 0,\n' + ' "tr": 0,\n' + ' "track": 0,\n' + ' "u": 0,\n' + ' "ul": 0,\n' + ' "var": 0,\n' + ' "video": 0,\n' + ' "wbr": 0\n' + ' },\n' + ' "totals": {\n' + ' "character": 0,\n' + ' "word": 0.1,\n' + ' "sentence": 0,\n' + ' "paragraph": 0,\n' + ' "comment": 0\n' + ' }\n' + ' }\n' + ' },\n' + ' "miscellaneous": {\n' + ' "maxConcurrentTasks": 3,\n' + ' "registerWalletWithVerification": false,\n' + ` "promotionComment": "
If you've enjoyed your experience in the DevPool, we'd appreciate your support. Follow Ubiquity on GitHub and star this repo. Your endorsement means the world to us and helps us grow!
We are excited to announce that the DevPool and UbiquiBot are now available to partners! Our ideal collaborators are globally distributed crypto-native organizations, who actively work on open source on GitHub, and excel in research & development. If you can introduce us to the repository maintainers in these types of companies, we have a special bonus in store for you!
",\n` + ' "openAiTokenLimit": 100000\n' + ' },\n' + ' "labels": {\n' + ' "time": [\n' + ' "Time: <1 Hour",\n' + ' "Time: <2 Hours",\n' + ' "Time: <4 Hours",\n' + ' "Time: <1 Day",\n' + ' "Time: <1 Week"\n' + ' ],\n' + ' "priority": [\n' + ' "Priority: 1 (Normal)",\n' + ' "Priority: 2 (Medium)",\n' + ' "Priority: 3 (High)",\n' + ' "Priority: 4 (Urgent)",\n' + ' "Priority: 5 (Emergency)"\n' + ' ]\n' + ' },\n' + ` "promotionComment": "
Thanks for trying out the demo! Follow Ubiquity on GitHub and star this repo. Your endorsement means the world to us and helps us grow!
We are excited to announce that the DevPool and UbiquiBot are now available to partners! Our ideal collaborators are globally distributed crypto-native organizations, who actively work on open source on GitHub, and excel in research & development. If you can introduce us to the repository maintainers in these types of companies, we have a special bonus in store for you!
",\n` + ' "priceMultiplier": 4,\n' + ' "issueCreatorMultiplier": 4,\n' + ' "maxConcurrentAssigns": 2,\n' + ' "paymentPermitMaxPrice": 1000,\n' + ' "openAITokenLimit": 4000,\n' + ' "commentIncentives": true,\n' + ' "assistivePricing": true,\n' + ' "registerWalletWithVerification": false,\n' + ' "commandSettings": [\n' + ' {\n' + ' "name": "start",\n' + ' "enabled": true\n' + ' },\n' + ' {\n' + ' "name": "stop",\n' + ' "enabled": true\n' + ' },\n' + ' {\n' + ' "name": "wallet",\n' + ' "enabled": true\n' + ' },\n' + ' {\n' + ' "name": "payout",\n' + ' "enabled": true\n' + ' },\n' + ' {\n' + ' "name": "multiplier",\n' + ' "enabled": true\n' + ' },\n' + ' {\n' + ' "name": "query",\n' + ' "enabled": true\n' + ' },\n' + ' {\n' + ' "name": "allow",\n' + ' "enabled": true\n' + ' },\n' + ' {\n' + ' "name": "autopay",\n' + ' "enabled": true\n' + ' },\n' + ' {\n' + ' "name": "ask",\n' + ' "enabled": true\n' + ' },\n' + ' {\n' + ' "name": "review",\n' + ' "enabled": true\n' + ' }\n' + ' ],\n' + ' "enableAccessControl": {\n' + ' "label": false,\n' + ' "organization": false\n' + ' },\n' + ' "disabledCommands": []\n' + '}' }, { role: 'system', content: ' ## Reconfiguration: \n' + '\n' + '- You are to replace ONLY the variables that have changed in the configuration object with the new values.\n' + '- You do this manually, there is no function to call.\n' + '- Once complete, respond only by calling the validateConfig function again passing the new configuration object.\n' + '\n' + '\n' + '## Injectables: \n' + '\n' + '- {\n' + ' "incentive_elements_scoring": "0-5",\n' + ' "reward_for_well_formatted_responses": "false",\n' + ' "reward_for_fully_featured_responses": "false"\n' + '} \n' + '\n' }, { role: 'user', content: 'Update the new configuration object with the new values' }, { role: 'function', name: 'validateConfig', content: '[\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "incentive_elements_scoring"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "reward_for_well_formatted_responses"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "reward_for_fully_featured_responses"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' }\n' + ']' }, { role: 'system', content: '## Invalid: \n' + '\n' + '- The reasons for invalidation are above, You are required to manually resolve them BEFORE you call validateConfig again.\n' + '- Respond only by calling the validateConfig function again passing the new configuration object.\n' + '- If you cannot resolve them, you are to respond to the admin with the error message.\n' + '\n' }, { role: 'user', content: 'Identify the errors and resolve them. Call the validateConfig function again passing new valid config JSON object. DO NOT RESPOND WITHOUT CALLING THE FUNCTION.' }, { role: 'function', name: 'validateConfig', content: '[\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "incentive_elements_scoring"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "reward_for_well_formatted_responses"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "reward_for_fully_featured_responses"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' }\n' + ']' }, { role: 'system', content: '## Invalid: \n' + '\n' + '- The reasons for invalidation are above, You are required to manually resolve them BEFORE you call validateConfig again.\n' + '- Respond only by calling the validateConfig function again passing the new configuration object.\n' + '- If you cannot resolve them, you are to respond to the admin with the error message.\n' + '\n' }, { role: 'user', content: 'Identify the errors and resolve them. Call the validateConfig function again passing new valid config JSON object. DO NOT RESPOND WITHOUT CALLING THE FUNCTION.' }, { role: 'function', name: 'validateConfig', content: '[\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "incentive_elements_scoring"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "reward_for_well_formatted_responses"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "reward_for_fully_featured_responses"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' }\n' + ']' }, { role: 'system', content: '## Invalid: \n' + '\n' + '- The reasons for invalidation are above, You are required to manually resolve them BEFORE you call validateConfig again.\n' + '- Respond only by calling the validateConfig function again passing the new configuration object.\n' + '- If you cannot resolve them, you are to respond to the admin with the error message.\n' + '\n' }, { role: 'user', content: 'Identify the errors and resolve them. Call the validateConfig function again passing new valid config JSON object. DO NOT RESPOND WITHOUT CALLING THE FUNCTION.' }, { role: 'function', name: 'validateConfig', content: '{\n' + ' "incentives": {\n' + ' "comment": {\n' + ' "elements": {\n' + ' "a": 1,\n' + ' "abbr": 0,\n' + ' "address": 0,\n' + ' "area": 0,\n' + ' "article": 0,\n' + ' "aside": 0,\n' + ' "audio": 0,\n' + ' "b": 0,\n' + ' "base": 0,\n' + ' "bdi": 0,\n' + ' "bdo": 0,\n' + ' "blockquote": 0,\n' + ' "body": 0,\n' + ' "br": 0,\n' + ' "button": 0,\n' + ' "canvas": 0,\n' + ' "caption": 0,\n' + ' "cite": 0,\n' + ' "code": 1,\n' + ' "col": 0,\n' + ' "colgroup": 0,\n' + ' "data": 0,\n' + ' "datalist": 0,\n' + ' "dd": 0,\n' + ' "del": 0,\n' + ' "details": 0,\n' + ' "dfn": 0,\n' + ' "dialog": 0,\n' + ' "div": 0,\n' + ' "dl": 0,\n' + ' "dt": 0,\n' + ' "em": 0,\n' + ' "embed": 0,\n' + ' "fieldset": 0,\n' + ' "figcaption": 0,\n' + ' "figure": 0,\n' + ' "footer": 0,\n' + ' "form": 0,\n' + ' "h1": 1,\n' + ' "h2": 1,\n' + ' "h3": 1,\n' + ' "h4": 1,\n' + ' "h5": 1,\n' + ' "h6": 1,\n' + ' "head": 0,\n' + ' "header": 0,\n' + ' "hgroup": 0,\n' + ' "hr": 0,\n' + ' "html": 0,\n' + ' "i": 0,\n' + ' "iframe": 0,\n' + ' "img": 0,\n' + ' "input": 0,\n' + ' "ins": 0,\n' + ' "kbd": 0,\n' + ' "label": 0,\n' + ' "legend": 0,\n' + ' "li": 0.5,\n' + ' "link": 0,\n' + ' "main": 0,\n' + ' "map": 0,\n' + ' "mark": 0,\n' + ' "meta": 0,\n' + ' "meter": 0,\n' + ' "nav": 0,\n' + ' "noscript": 0,\n' + ' "object": 0,\n' + ' "ol": 0,\n' + ' "optgroup": 0,\n' + ' "option": 0,\n' + ' "output": 0,\n' + ' "p": 0,\n' + ' "picture": 0,\n' + ' "pre": 0,\n' + ' "progress": 0,\n' + ' "q": 0,\n' + ' "rp": 0,\n' + ' "rt": 0,\n' + ' "ruby": 0,\n' + ' "s": 0,\n' + ' "samp": 0,\n' + ' "script": 0,\n' + ' "section": 0,\n' + ' "select": 0,\n' + ' "small": 0,\n' + ' "source": 0,\n' + ' "span": 0,\n' + ' "strong": 0,\n' + ' "style": 0,\n' + ' "sub": 0,\n' + ' "summary": 0,\n' + ' "sup": 0,\n' + ' "table": 0,\n' + ' "tbody": 0,\n' + ' "td": 0,\n' + ' "textarea": 0,\n' + ' "tfoot": 0,\n' + ' "th": 0,\n' + ' "thead": 0,\n' + ' "time": 0,\n' + ' "title": 0,\n' + ' "tr": 0,\n' + ' "track": 0,\n' + ' "u": 0,\n' + ' "ul": 0,\n' + ' "var": 0,\n' + ' "video": 0,\n' + ' "wbr": 0\n' + ' },\n' + ' "totals": {\n' + ' "character": 0,\n' + ' "word": 0.1,\n' + ' "sentence": 0,\n' + ' "paragraph": 0,\n' + ' "comment": 0\n' + ' }\n' + ' }\n' + ' },\n' + ' "keys": {},\n' + ' "features": {\n' + ' "assistivePricing": false,\n' + ' "defaultLabels": [],\n' + ' "newContributorGreeting": {\n' + ' "enabled": false,\n' + ' "header": "Thank you for contributing! Please be sure to set your wallet address before completing your first task so that you can collect your reward.",\n' + ' "displayHelpMenu": true,\n' + ' "footer": "###### If you enjoy the DevPool experience, please follow [Ubiquity on GitHub](https://github.com/ubiquity) and star [this repo](https://github.com/ubiquity/devpool-directory) to show your support. It helps a lot!"\n' + ' },\n' + ' "publicAccessControl": {\n' + ' "setLabel": true,\n' + ' "fundExternalClosedIssue": true\n' + ' }\n' + ' },\n' + ' "timers": {\n' + ' "reviewDelayTolerance": "1 day",\n' + ' "taskStaleTimeoutDuration": "4 weeks",\n' + ' "taskFollowUpDuration": "0.5 weeks",\n' + ' "taskDisqualifyDuration": "1 week"\n' + ' },\n' + ' "payments": {\n' + ' "maxPermitPrice": 9007199254740991,\n' + ' "evmNetworkId": 1,\n' + ' "basePriceMultiplier": 1,\n' + ' "issueCreatorMultiplier": 1\n' + ' },\n' + ' "disabledCommands": [\n' + ' "start",\n' + ' "stop",\n' + ' "help",\n' + ' "autopay",\n' + ' "query",\n' + ' "ask",\n' + ' "multiplier",\n' + ' "labels",\n' + ' "authorize",\n' + ' "wallet",\n' + ' "config"\n' + ' ],\n' + ' "labels": {\n' + ' "time": [\n' + ' "Time: <1 Hour",\n' + ' "Time: <2 Hours",\n' + ' "Time: <4 Hours",\n' + ' "Time: <1 Day",\n' + ' "Time: <1 Week"\n' + ' ],\n' + ' "priority": [\n' + ' "Priority: 1 (Normal)",\n' + ' "Priority: 2 (Medium)",\n' + ' "Priority: 3 (High)",\n' + ' "Priority: 4 (Urgent)",\n' + ' "Priority: 5 (Emergency)"\n' + ' ]\n' + ' },\n' + ' "miscellaneous": {\n' + ' "maxConcurrentTasks": 9007199254740991,\n' + ' "promotionComment": "###### If you enjoy the DevPool experience, please follow [Ubiquity on GitHub](https://github.com/ubiquity) and star [this repo](https://github.com/ubiquity/devpool-directory) to show your support. It helps a lot!",\n' + ' "registerWalletWithVerification": false,\n' + ' "openAiTokenLimit": 100000\n' + ' }\n' + '}' }, { role: 'user', content: 'The configuration is valid, call the pushToRepo function passing the new valid config JSON object.' }, { role: 'function', name: 'pushToRepo', content: '- 20ab02a0978f64a2ee9b6fff6937041b088c87cc' }, { role: 'user', content: "You are done, the bot will now use the new configuration. Return the new ref sha as part of a markdown list summarising the changes made to the admin. Don't offer a follow up or anything, just end the conversation." }
ubqbot[bot] commented 1 year ago

New configuration has been pushed to the repository with ref sha: 20ab02a0978f64a2ee9b6fff6937041b088c87cc.

Keyrxng commented 1 year ago

/config refactor the footer and promotional comment. Explain that this is just a QA repo by Keyrxng for UbiquityDAO's UbiquiBot, which is actually you.

Good QA: items with same name I.E footer causes confusion

Chat Log History ``` role: 'system', content: ' ## Reconfiguration: \n' + '\n' + '- You are to replace ONLY the variables that have changed in the configuration object with the new values.\n' + '- You do this manually, there is no function to call.\n' + '- Once complete, respond only by calling the validateConfig function again passing the new configuration object.\n' + '\n' + '\n' + '## Injectables: \n' + '\n' + '- [\n' + ' {\n' + ' "key": "footer",\n' + ` "value": "This is the footer of the QA repo by Keyrxng for UbiquityDAO's UbiquiBot."\n` + ' },\n' + ' {\n' + ' "key": "promotional_comment",\n' + ` "value": "This is a promotional comment for UbiquityDAO's UbiquiBot."\n` + ' }\n' + '] \n' + '\n' }, { role: 'user', content: 'Update the new configuration object with the new values' }, { role: 'function', name: 'validateConfig', content: '[\n' + ' {\n' + ' "instancePath": "/miscellaneous",\n' + ' "schemaPath": "#/properties/miscellaneous/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "footer"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' }\n' + ']' }, { role: 'system', content: '## Invalid: \n' + '\n' + '- The reasons for invalidation are above, You are required to manually resolve them BEFORE you call validateConfig again.\n' + '- Adding additional properties to the configuration object will fail validation, you are to replace ONLY the variables that have changed in the configuration object with the new values or when removing errors.\n' + '- Respond only by calling the validateConfig function again passing the new configuration object.\n' + '- If you cannot resolve them, you are to respond to the admin with the error message.\n' + '\n' }, { role: 'user', content: 'Identify the errors and resolve them. Call the validateConfig function again passing new valid config JSON object. DO NOT RESPOND WITHOUT CALLING THE FUNCTION.' }, { role: 'function', name: 'validateConfig', content: '[\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "logs"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "commands"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "promotionComment"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "priceMultiplier"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "issueCreatorMultiplier"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "maxConcurrentAssigns"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "paymentPermitMaxPrice"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "openAITokenLimit"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "commentIncentives"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "assistivePricing"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "registerWalletWithVerification"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "commandSettings"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "enableAccessControl"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "/features",\n' + ' "schemaPath": "#/properties/features/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "staleTaskTime"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "/incentives/comment/elements/footer",\n' + ' "schemaPath": "#/properties/incentives/properties/comment/properties/elements/properties/footer/type",\n' + ' "keyword": "type",\n' + ' "params": {\n' + ' "type": "number"\n' + ' },\n' + ' "message": "must be number"\n' + ' },\n' + ' {\n' + ' "instancePath": "/miscellaneous",\n' + ' "schemaPath": "#/properties/miscellaneous/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "footer"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' }\n' + ']' }, { role: 'system', content: '## Invalid: \n' + '\n' + '- The reasons for invalidation are above, You are required to manually resolve them BEFORE you call validateConfig again.\n' + '- Adding additional properties to the configuration object will fail validation, you are to replace ONLY the variables that have changed in the configuration object with the new values or when removing errors.\n' + '- Respond only by calling the validateConfig function again passing the new configuration object.\n' + '- If you cannot resolve them, you are to respond to the admin with the error message.\n' + '\n' }, { role: 'user', content: 'Identify the errors and resolve them. Call the validateConfig function again passing new valid config JSON object. DO NOT RESPOND WITHOUT CALLING THE FUNCTION.' }, { role: 'function', name: 'validateConfig', content: '[\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "logs"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "commands"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "promotionComment"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "priceMultiplier"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "issueCreatorMultiplier"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "maxConcurrentAssigns"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "paymentPermitMaxPrice"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "openAITokenLimit"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "commentIncentives"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "assistivePricing"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "registerWalletWithVerification"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "commandSettings"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "enableAccessControl"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "/features",\n' + ' "schemaPath": "#/properties/features/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "staleTaskTime"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "/miscellaneous",\n' + ' "schemaPath": "#/properties/miscellaneous/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "footer"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' }\n' + ']' }, { role: 'system', content: '## Invalid: \n' + '\n' + '- The reasons for invalidation are above, You are required to manually resolve them BEFORE you call validateConfig again.\n' + '- Adding additional properties to the configuration object will fail validation, you are to replace ONLY the variables that have changed in the configuration object with the new values or when removing errors.\n' + '- Respond only by calling the validateConfig function again passing the new configuration object.\n' + '- If you cannot resolve them, you are to respond to the admin with the error message.\n' + '\n' }, { role: 'user', content: 'Identify the errors and resolve them. Call the validateConfig function again passing new valid config JSON object. DO NOT RESPOND WITHOUT CALLING THE FUNCTION.' }, { role: 'function', name: 'validateConfig', content: '[\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "logs"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "commands"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "promotionComment"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "priceMultiplier"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "issueCreatorMultiplier"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "maxConcurrentAssigns"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "paymentPermitMaxPrice"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "openAITokenLimit"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "commentIncentives"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "assistivePricing"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "registerWalletWithVerification"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "commandSettings"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "",\n' + ' "schemaPath": "#/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "enableAccessControl"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "/features",\n' + ' "schemaPath": "#/properties/features/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "staleTaskTime"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' },\n' + ' {\n' + ' "instancePath": "/incentives/comment/elements/footer",\n' + ' "schemaPath": "#/properties/incentives/properties/comment/properties/elements/properties/footer/type",\n' + ' "keyword": "type",\n' + ' "params": {\n' + ' "type": "number"\n' + ' },\n' + ' "message": "must be number"\n' + ' },\n' + ' {\n' + ' "instancePath": "/miscellaneous",\n' + ' "schemaPath": "#/properties/miscellaneous/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "footer"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' }\n' + ']' }, { role: 'system', content: '## Invalid: \n' + '\n' + '- The reasons for invalidation are above, You are required to manually resolve them BEFORE you call validateConfig again.\n' + '- Adding additional properties to the configuration object will fail validation, you are to replace ONLY the variables that have changed in the configuration object with the new values or when removing errors.\n' + '- Respond only by calling the validateConfig function again passing the new configuration object.\n' + '- If you cannot resolve them, you are to respond to the admin with the error message.\n' + '\n' }, { role: 'user', content: 'Identify the errors and resolve them. Call the validateConfig function again passing new valid config JSON object. DO NOT RESPOND WITHOUT CALLING THE FUNCTION.' }, { role: 'function', name: 'validateConfig', content: '[\n' + ' {\n' + ' "instancePath": "/miscellaneous",\n' + ' "schemaPath": "#/properties/miscellaneous/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "footer"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' }\n' + ']' }, { role: 'system', content: '## Invalid: \n' + '\n' + '- The reasons for invalidation are above, You are required to manually resolve them BEFORE you call validateConfig again.\n' + '- Adding additional properties to the configuration object will fail validation, you are to replace ONLY the variables that have changed in the configuration object with the new values or when removing errors.\n' + '- Respond only by calling the validateConfig function again passing the new configuration object.\n' + '- If you cannot resolve them, you are to respond to the admin with the error message.\n' + '\n' }, { role: 'user', content: 'Identify the errors and resolve them. Call the validateConfig function again passing new valid config JSON object. DO NOT RESPOND WITHOUT CALLING THE FUNCTION.' }, { role: 'function', name: 'validateConfig', content: '[\n' + ' {\n' + ' "instancePath": "/miscellaneous",\n' + ' "schemaPath": "#/properties/miscellaneous/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "footer"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' }\n' + ']' }, { role: 'system', content: '## Invalid: \n' + '\n' + '- The reasons for invalidation are above, You are required to manually resolve them BEFORE you call validateConfig again.\n' + '- Adding additional properties to the configuration object will fail validation, you are to replace ONLY the variables that have changed in the configuration object with the new values or when removing errors.\n' + '- Respond only by calling the validateConfig function again passing the new configuration object.\n' + '- If you cannot resolve them, you are to respond to the admin with the error message.\n' + '\n' }, { role: 'user', content: 'Identify the errors and resolve them. Call the validateConfig function again passing new valid config JSON object. DO NOT RESPOND WITHOUT CALLING THE FUNCTION.' }, { role: 'function', name: 'validateConfig', content: '[\n' + ' {\n' + ' "instancePath": "/miscellaneous",\n' + ' "schemaPath": "#/properties/miscellaneous/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "footer"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' }\n' + ']' }, { role: 'system', content: '## Invalid: \n' + '\n' + '- The reasons for invalidation are above, You are required to manually resolve them BEFORE you call validateConfig again.\n' + '- Adding additional properties to the configuration object will fail validation, you are to replace ONLY the variables that have changed in the configuration object with the new values or when removing errors.\n' + '- Respond only by calling the validateConfig function again passing the new configuration object.\n' + '- If you cannot resolve them, you are to respond to the admin with the error message.\n' + '\n' }, { role: 'user', content: 'Identify the errors and resolve them. Call the validateConfig function again passing new valid config JSON object. DO NOT RESPOND WITHOUT CALLING THE FUNCTION.' }, { role: 'function', name: 'validateConfig', content: '[\n' + ' {\n' + ' "instancePath": "/miscellaneous",\n' + ' "schemaPath": "#/properties/miscellaneous/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "footer"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' }\n' + ']' }, { role: 'system', content: '## Invalid: \n' + '\n' + '- The reasons for invalidation are above, You are required to manually resolve them BEFORE you call validateConfig again.\n' + '- Adding additional properties to the configuration object will fail validation, you are to replace ONLY the variables that have changed in the configuration object with the new values or when removing errors.\n' + '- Respond only by calling the validateConfig function again passing the new configuration object.\n' + '- If you cannot resolve them, you are to respond to the admin with the error message.\n' + '\n' }, { role: 'user', content: 'Identify the errors and resolve them. Call the validateConfig function again passing new valid config JSON object. DO NOT RESPOND WITHOUT CALLING THE FUNCTION.' }, { role: 'function', name: 'validateConfig', content: '[\n' + ' {\n' + ' "instancePath": "/miscellaneous",\n' + ' "schemaPath": "#/properties/miscellaneous/additionalProperties",\n' + ' "keyword": "additionalProperties",\n' + ' "params": {\n' + ' "additionalProperty": "footer"\n' + ' },\n' + ' "message": "must NOT have additional properties"\n' + ' }\n' + ']' }, { role: 'system', content: '## Invalid: \n' + '\n' + '- The reasons for invalidation are above, You are required to manually resolve them BEFORE you call validateConfig again.\n' + '- Adding additional properties to the configuration object will fail validation, you are to replace ONLY the variables that have changed in the configuration object with the new values or when removing errors.\n' + '- Respond only by calling the validateConfig function again passing the new configuration object.\n' + '- If you cannot resolve them, you are to respond to the admin with the error message.\n' + '\n' }, { role: 'user', content: 'Identify the errors and resolve them. Call the validateConfig function again passing new valid config JSON object. DO NOT RESPOND WITHOUT CALLING THE FUNCTION.' } ]
0x4007 commented 1 year ago

If you write the commit sha without the backticks it should produce a link to the commit which makes review more convenient. 20ab02a0978f64a2ee9b6fff6937041b088c87cc

Keyrxng commented 1 year ago

I'll likely need to add it to the response manually like I did with blame but I agree far more convenient

0x4007 commented 1 year ago
/config features.assistivePricing=true features.defaultLabels=["label1", "label2"]

That's a clear way to set config. It's cool to also have that but to make it more ergonomic to use.

Generally I like the AI's idea.