diff --git a/.github/workflows/link-check-daily.yml b/.github/workflows/link-check-daily.yml index 985a458b388f..14926eb5f782 100644 --- a/.github/workflows/link-check-daily.yml +++ b/.github/workflows/link-check-daily.yml @@ -86,7 +86,7 @@ jobs: # treat it as a warning and not as a broken link. EXTERNAL_SERVER_ERRORS_AS_WARNINGS: true FAIL_ON_FLAW: false - timeout-minutes: 30 + timeout-minutes: 60 run: npm run rendered-content-link-checker - name: Insight into external link checker DB json file (after) diff --git a/content/apps/github-marketplace/creating-apps-for-github-marketplace/requirements-for-listing-an-app.md b/content/apps/github-marketplace/creating-apps-for-github-marketplace/requirements-for-listing-an-app.md index c599c625cd0d..7bd218855676 100644 --- a/content/apps/github-marketplace/creating-apps-for-github-marketplace/requirements-for-listing-an-app.md +++ b/content/apps/github-marketplace/creating-apps-for-github-marketplace/requirements-for-listing-an-app.md @@ -66,9 +66,11 @@ The requirements to publish a {% data variables.product.prodname_copilot_extensi * Your extension can be in {% data variables.release-phases.public_preview %} as long as that is clearly communicated in the listing description. If you are using a waitlist, you must also include a link to sign up at the top of the description. Someone from the {% data variables.product.github %} review team will join the waitlist and email your technical lead requesting access for testing. * You must include links to two videos that demonstrate the following: * A few example prompts and responses from your extension - * A net new user installing, authenticating, and sending their first prompt to your extension. These videos are private to {% data variables.product.github %} and are used solely for reviewing your listing submission. It's okay if the videos are brief and unedited. + * A net new user installing, authenticating, and sending their first prompt to your extension + + These videos are private to {% data variables.product.github %} and are used solely for reviewing your listing submission. The videos can be brief, and you don't need to edit them. * Your extension must provide a stable and reliable user experience, and be able to perform the capabilities listed in the description. -* A pathway must be provided for new users to install, setup and authorize your extension with minimal friction. If the {% data variables.product.github %} review team is not able to successfully onboard to your extension for testing, it will not be approved for publishing. +* You must provide a pathway for new users to install, set up, and authorize your extension with minimal friction. If the {% data variables.product.github %} review team is not able to successfully test your extension, it will not be approved for publishing. ## Requirements for paid apps diff --git a/content/copilot/building-copilot-extensions/about-building-copilot-extensions.md b/content/copilot/building-copilot-extensions/about-building-copilot-extensions.md index ecf5403adb4c..df2e8bac43eb 100644 --- a/content/copilot/building-copilot-extensions/about-building-copilot-extensions.md +++ b/content/copilot/building-copilot-extensions/about-building-copilot-extensions.md @@ -1,6 +1,6 @@ --- title: About building Copilot Extensions -intro: 'Learn about the development process for {% data variables.product.prodname_copilot_extension_short %}.' +intro: 'Learn about the development process for {% data variables.product.prodname_copilot_extensions_short %}.' versions: feature: copilot-extensions topics: @@ -13,20 +13,24 @@ type: overview ## About {% data variables.product.prodname_copilot_extensions_short %} -{% data variables.product.prodname_copilot_extensions_short %} are integrations that expand the functionality of {% data variables.product.prodname_copilot_chat_short %}. {% data variables.product.prodname_copilot_extensions_short %} allow developers to integrate external tools, services, and custom behaviors into the {% data variables.product.prodname_copilot_chat_short %} experience across all supported IDEs and {% data variables.product.company_short %}. +{% data variables.product.prodname_copilot_extensions_short %} are integrations that expand the functionality of {% data variables.product.prodname_copilot_chat_short %}, allowing developers to bring external tools, services, and custom behaviors into the Chat experience. You can use {% data variables.product.prodname_copilot_extensions_short %} to extend the capabilities of {% data variables.product.prodname_copilot_chat_short %} in a variety of ways, including: -{% data variables.product.prodname_copilot_extensions_short %} are built as {% data variables.product.prodname_github_apps %} with additional capabilities, including: -* Read-access to your {% data variables.product.prodname_copilot_chat_short %} history -* Sending responses to users in the {% data variables.product.prodname_copilot_chat_short %} window -* Execution of {% data variables.product.company_short %} (first party) or functions on external services (third party) +* **Querying documentation**: A {% data variables.product.prodname_copilot_extension_short %} can allow {% data variables.product.prodname_copilot_chat_short %} to query a third-party documentation service to find information about a specific topic. +* **AI-assisted coding**: A {% data variables.product.prodname_copilot_extension_short %} can use a third-party AI model to provide code suggestions. +* **Data retrieval**: A {% data variables.product.prodname_copilot_extension_short %} can allow {% data variables.product.prodname_copilot_chat_short %} to query a third-party data service to retrieve information about a specific topic. +* **Action execution**: A {% data variables.product.prodname_copilot_extension_short %} can allow {% data variables.product.prodname_copilot_chat_short %} to execute a specific action, such as posting to a message board or updating a tracking item in an external system. -{% data variables.product.prodname_copilot_extensions_short %} can be used with: +## About building {% data variables.product.prodname_copilot_extensions %} -{% data reusables.copilot.copilot-extensions.compatible-chat-interfaces %} +{% data variables.product.prodname_copilot_extensions %} are a type of {% data variables.product.prodname_copilot_extension_short %} built with {% data variables.product.prodname_github_apps %}. {% data variables.product.prodname_copilot_extensions %} are best suited for developers who want cross-platform compatibility and app management and support from {% data variables.product.github %}. -## Visibility of {% data variables.product.prodname_copilot_extensions_short %} +### Supported clients and IDEs -{% data variables.product.prodname_copilot_extensions_short %} can be private, public and shareable, or public and listed on the {% data variables.product.prodname_marketplace %}. Which visibility option you choose will depend on your use case and the audience you are targeting. +{% data reusables.copilot.copilot-extensions.supported-clients-and-ides-table %} + +### About visibility of {% data variables.product.prodname_copilot_extensions %} + +{% data variables.product.prodname_copilot_extensions %} can be private, public and shareable, or public and listed on the {% data variables.product.prodname_marketplace %}. Which visibility option you choose will depend on your use case and the audience you are targeting. * Private extensions are often preferred by large enterprises or companies that: * Want more customization and controls over data access @@ -41,39 +45,33 @@ type: overview * Integrate their tool into the developer workflow on {% data variables.product.company_short %} and the IDE * Leverage the {% data variables.product.company_short %} ecosystem to raise awareness for their product -## Use cases - -You can use {% data variables.product.prodname_copilot_extensions_short %} to extend the capabilities of {% data variables.product.prodname_copilot_chat_short %} in a variety of ways. For example, you could use them for: - -* **Docs querying**: A {% data variables.product.prodname_copilot_extension_short %} could allow {% data variables.product.prodname_copilot_chat_short %} to query a third-party documentation service to find information about a specific topic. -* **AI-assisted coding**: A {% data variables.product.prodname_copilot_extension_short %} could use a third-party AI model to provide code suggestions. -* **Data retrieval**: A {% data variables.product.prodname_copilot_extension_short %} could allow {% data variables.product.prodname_copilot_chat_short %} to query a third-party data service to retrieve information about a specific topic. -* **Action execution**: A {% data variables.product.prodname_copilot_extension_short %} could allow {% data variables.product.prodname_copilot_chat_short %} to execute a specific action, such as posting to a message board or updating a tracking item in an external system. - -## Extensions toolkit, code samples and SDK +### Resources for building {% data variables.product.prodname_copilot_extensions %} {% data variables.product.company_short %} provides a comprehensive toolkit for extension builders, with code samples, a CLI debugging tool, quickstart SDKs, and a user feedback repository. For more information, see the [copilot-extensions](https://github.com/orgs/copilot-extensions/) organization on {% data variables.product.company_short %}. -Before creating your own {% data variables.product.prodname_copilot_extension_short %} from scratch, you may want to explore an existing {% data variables.product.prodname_copilot_agent_short %}, and integrate it with a {% data variables.product.prodname_github_app %} to see how it works. {% data variables.product.company_short %} provides a few example {% data variables.product.prodname_copilot_agents_short %}, that you can clone and use as the basis for your own {% data variables.product.prodname_copilot_extension_short %}, including: +Before creating your own {% data variables.product.prodname_copilot_extension %} from scratch, you may want to explore an existing {% data variables.product.prodname_copilot_agent_short %}, then integrate it with a {% data variables.product.prodname_github_app %} to see how it works. {% data variables.product.company_short %} provides a few example {% data variables.product.prodname_copilot_agents_short %} that you can clone and use as the basis for your own {% data variables.product.prodname_copilot_extension %}: -* **Blackbeard**: A simple {% data variables.product.prodname_copilot_agent_short %} that responds to requests like a pirate, using {% data variables.product.prodname_copilot_short %}'s LLM API and special system prompts. It is a good starting point for learning how to build a {% data variables.product.prodname_copilot_extension_short %}. For more information, see the [Blackbeard {% data variables.product.prodname_copilot_extension_short %}](https://github.com/copilot-extensions/blackbeard-extension). +* **Blackbeard**: A simple {% data variables.product.prodname_copilot_agent_short %} that responds to requests like a pirate, using {% data variables.product.prodname_copilot_short %}'s LLM API and special system prompts. It is a good starting point for learning how to build a {% data variables.product.prodname_copilot_extension %}. For more information, see the [Blackbeard {% data variables.product.prodname_copilot_extension_short %}](https://github.com/copilot-extensions/blackbeard-extension). * **{% data variables.product.prodname_github_models %}**: A more complex {% data variables.product.prodname_copilot_agent_short %} that lets you ask about and interact with various LLMs listed on the {% data variables.product.prodname_marketplace %} from within {% data variables.product.prodname_copilot_chat_short %}. For more information, see the [{% data variables.product.prodname_github_models %} {% data variables.product.prodname_copilot_extension_short %}](https://github.com/copilot-extensions/github-models-extension). > [!NOTE] {% data variables.product.prodname_github_models %} are in {% data variables.release-phases.public_preview %} and subject to change. To request access, join the [waitlist](https://github.com/marketplace/models/waitlist). * **Function calling**: an example agent written in Go that demonstrates function calling and confirmation dialogues. For more information, see the [Function calling extension](https://github.com/copilot-extensions/function-calling-extension). * **RAG extension**: an example agent written in Go that demonstrates a simple implementation of retrieval augmented generation. For more information, see the [RAG extension](https://github.com/copilot-extensions/rag-extension). -* **Preview SDK**: An SDK that simplifies the process of building {% data variables.product.prodname_copilot_extensions_short %} by handling request verification, response formatting, and API interactions. It allows builders to focus on their extension's core functionality rather than boilerplate, by streamlining the integration of tools, APIs, and data sources into {% data variables.product.prodname_copilot_chat_short %}. For more information, see the [Preview SDK](https://github.com/copilot-extensions/preview-sdk.js). +* **Preview SDK**: An SDK that simplifies the process of building {% data variables.product.prodname_copilot_extensions %} by handling request verification, response formatting, and API interactions. It allows builders to focus on their extension's core functionality rather than boilerplate, by streamlining the integration of tools, APIs, and data sources into {% data variables.product.prodname_copilot_chat_short %}. For more information, see the [Preview SDK](https://github.com/copilot-extensions/preview-sdk.js). + +## About building {% data variables.product.prodname_copilot_extensions_vsc %} -## About {% data variables.product.prodname_copilot_extensions_vsc %} +> [!NOTE] The {% data variables.product.github %} documentation focuses on building {% data variables.product.prodname_copilot_extensions %}, not {% data variables.product.prodname_copilot_extensions_vsc %}. -Alternatively, you can build a {% data variables.product.prodname_copilot_extension_short %} that is exclusive and native to {% data variables.product.prodname_vscode %}. These extensions are called {% data variables.product.prodname_copilot_extensions_vsc %}, or {% data variables.product.prodname_vscode %} Chat extensions. {% data variables.product.prodname_vscode_shortname %} Chat extensions can only be used in {% data variables.product.prodname_copilot_chat_short %} for {% data variables.product.prodname_vscode_shortname %}, and are a good option for developers who want to build extensions that use specific {% data variables.product.prodname_vscode %} functionality. +You can build a {% data variables.product.prodname_copilot_extension_short %} that is exclusive and native to {% data variables.product.prodname_vscode %}, called a {% data variables.product.prodname_copilot_extensions_vsc %}. This option is best suited for developers who want to build extensions that use {% data variables.product.prodname_vscode_shortname %}-specific APIs and functionality, or extend existing {% data variables.product.prodname_vscode_shortname %} extensions. -There are some key differences from {% data variables.product.prodname_copilot_extensions %}: -* {% data variables.product.prodname_vscode %} Chat extensions only work within the {% data variables.product.prodname_vscode %} environment. -* {% data variables.product.prodname_copilot_extensions_vsc %} have more access to {% data variables.product.prodname_vscode %}'s features and APIs, allowing for more editor-specific interactions like accessing local workspace data, manipulating {% data variables.product.prodname_vscode %}'s interface, and read/write access to local files. -* {% data variables.product.prodname_copilot_extensions_vsc %} are published to the {% data variables.product.prodname_vscode %} Marketplace, not the {% data variables.product.prodname_marketplace %}. +Also known as {% data variables.product.prodname_vscode_shortname %} Chat extensions, {% data variables.product.prodname_copilot_extensions_vsc %} function similarly to {% data variables.product.prodname_copilot_extensions %} by extending the capabilities of {% data variables.product.prodname_copilot_chat_short %}, with a few notable differences: +* {% data variables.product.prodname_vscode_shortname %} Chat extensions are only usable in {% data variables.product.prodname_vscode_shortname %}. +* {% data variables.product.prodname_vscode_shortname %} Chat extensions have more access to {% data variables.product.prodname_vscode_shortname %}'s features and APIs, allowing more editor-specific interactions like accessing local workspace data, manipulating {% data variables.product.prodname_vscode %}'s interface, and read/write access to local files. +* {% data variables.product.prodname_vscode_shortname %} Chat extensions are published to the {% data variables.product.prodname_vs_marketplace_shortname %}, not the {% data variables.product.prodname_marketplace %}. +* {% data variables.product.prodname_vscode_shortname %} Chat extensions are local to the user's machine, and cannot be controlled by an organization{% ifversion ghec %} or enterprise's{% else %}'s{% endif %} policies. -For more information, see [Chat extensions](https://code.visualstudio.com/api/extension-guides/chat) in the {% data variables.product.prodname_vscode %} documentation. +For more information on {% data variables.product.prodname_copilot_extensions_vsc %}, see [Chat extensions](https://code.visualstudio.com/api/extension-guides/chat) in the {% data variables.product.prodname_vscode %} documentation. ## Further reading diff --git a/content/copilot/using-github-copilot/using-extensions-to-integrate-external-tools-with-copilot-chat.md b/content/copilot/using-github-copilot/using-extensions-to-integrate-external-tools-with-copilot-chat.md index 0866cf83e526..19a3fce6ae50 100644 --- a/content/copilot/using-github-copilot/using-extensions-to-integrate-external-tools-with-copilot-chat.md +++ b/content/copilot/using-github-copilot/using-extensions-to-integrate-external-tools-with-copilot-chat.md @@ -38,16 +38,7 @@ You can interact with your custom-built or installed extension in a {% data vari ### Supported clients and IDEs -| Clients and IDEs | {% data variables.product.prodname_copilot_extensions_short %} support | -|------------------------------------|:---------:| -| {% data variables.product.prodname_vscode %} | {% octicon "check" aria-label="Supported" %} | -| {% data variables.product.prodname_vs %} | {% octicon "check" aria-label="Supported" %} | -| {% data variables.product.prodname_dotcom_the_website %} | {% octicon "check" aria-label="Supported" %} | -| {% data variables.product.prodname_mobile %} | {% octicon "x" aria-label="Unsupported" %} | -| JetBrains IDEs | {% octicon "x" aria-label="Unsupported" %} | -| Vim/Neovim | {% octicon "x" aria-label="Unsupported" %} | -| CLI | {% octicon "x" aria-label="Unsupported" %} | -| Xcode | {% octicon "x" aria-label="Unsupported" %} | +{% data reusables.copilot.copilot-extensions.supported-clients-and-ides-table %} ## Prerequisites diff --git a/data/reusables/copilot/copilot-extensions/supported-clients-and-ides-table.md b/data/reusables/copilot/copilot-extensions/supported-clients-and-ides-table.md new file mode 100644 index 000000000000..3853b6f62224 --- /dev/null +++ b/data/reusables/copilot/copilot-extensions/supported-clients-and-ides-table.md @@ -0,0 +1,10 @@ +| Clients and IDEs | {% data variables.product.prodname_copilot_extensions %} support | +|------------------------------------|:---------:| +| {% data variables.product.prodname_vscode %} | {% octicon "check" aria-label="Supported" %} | +| {% data variables.product.prodname_vs %} | {% octicon "check" aria-label="Supported" %} | +| {% data variables.product.prodname_dotcom_the_website %} | {% octicon "check" aria-label="Supported" %} | +| {% data variables.product.prodname_mobile %} | {% octicon "x" aria-label="Unsupported" %} | +| JetBrains IDEs | {% octicon "x" aria-label="Unsupported" %} | +| Vim/Neovim | {% octicon "x" aria-label="Unsupported" %} | +| {% data variables.product.prodname_copilot_cli_short %} | {% octicon "x" aria-label="Unsupported" %} | +| Xcode | {% octicon "x" aria-label="Unsupported" %} | diff --git a/src/frame/middleware/remote-ip.ts b/src/frame/middleware/remote-ip.ts index 2a285b41ebed..0eec056d52ae 100644 --- a/src/frame/middleware/remote-ip.ts +++ b/src/frame/middleware/remote-ip.ts @@ -10,3 +10,14 @@ export default function remoteIp(req: Request, res: Response) { 'fastly-client-ip': req.headers['fastly-client-ip'] || null, }) } + +/* +Note from previous author: +This is used to check that the WAF is working correctly. +Doing things such as IP blocking in the Azure Firewall. +To make sure we got the Fastly -> Azure FrontDoor -> Azure App service header stuff right. +For example, if you use the express IP rate limit thing, +you want to make sure it's using the end user's IP and not the Fastly POP node. +So it was to end-to-end test the config by comparing that URL +with this https://www.google.com/search?q=what+is+my+ip +*/