From cde6ef0857bd5a7596f3de0168becb274b6c07c7 Mon Sep 17 00:00:00 2001 From: "gh-workflow-token-generator[bot]" <104082997+gh-workflow-token-generator[bot]@users.noreply.github.com> Date: Wed, 7 Oct 2026 13:54:00 +0000 Subject: [PATCH 1/6] Version Packages --- .changeset/move-to-graphql-sdk.md | 9 --------- CHANGELOG.md | 10 ++++++++++ package.json | 2 +- 3 files changed, 11 insertions(+), 10 deletions(-) delete mode 100644 .changeset/move-to-graphql-sdk.md diff --git a/.changeset/move-to-graphql-sdk.md b/.changeset/move-to-graphql-sdk.md deleted file mode 100644 index c5b9160..0000000 --- a/.changeset/move-to-graphql-sdk.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@team-plain/cli": major ---- - -Move to `@team-plain/graphql`, the replacement for the deprecated `@team-plain/typescript-sdk`. - -- Requires Node.js 22.12 or later. Node.js 18 and 20 are end of life. To stay on them, pin `@team-plain/cli@0`. -- The API key needs the `knowledgeSource:create` permission. The README and `--help` previously said `indexedDocument:create`, which was wrong. -- Errors now print as a single line with the error code, without a request ID or stack trace. diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c834ed..ca70648 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # @team-plain/cli +## 1.0.0 + +### Major Changes + +- 1f7051a: Move to `@team-plain/graphql`, the replacement for the deprecated `@team-plain/typescript-sdk`. + + - Requires Node.js 22.12 or later. Node.js 18 and 20 are end of life. To stay on them, pin `@team-plain/cli@0`. + - The API key needs the `knowledgeSource:create` permission. The README and `--help` previously said `indexedDocument:create`, which was wrong. + - Errors now print as a single line with the error code, without a request ID or stack trace. + ## 0.4.0 ### Minor Changes diff --git a/package.json b/package.json index 710494d..a80b303 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@team-plain/cli", "private": false, - "version": "0.4.0", + "version": "1.0.0", "description": "CLI for interacting with the Plain API", "repository": { "type": "git", From 60d24eadb8ae280433b25fa6700f40181f1b4817 Mon Sep 17 00:00:00 2001 From: revett <2796074+revett@users.noreply.github.com> Date: Wed, 7 Oct 2026 15:21:47 +0100 Subject: [PATCH 2/6] Update README --- README.md | 58 ++++++++++++++++++++++++++++++++++-------------------- logo.png | Bin 0 -> 33554 bytes 2 files changed, 37 insertions(+), 21 deletions(-) create mode 100644 logo.png diff --git a/README.md b/README.md index fb92334..56766a0 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,54 @@ +Plain + + # @team-plain/cli -This CLI is used to interact with the Plain.com API. +CLI for interacting with the [Plain](https://www.plain.com) API. + +Specifically for indexing content as +[Knowledge Sources](https://www.plain.com/docs/product/agents/knowledge-sources) in your Plain +workspaces, to be used by [Plain Agents](https://www.plain.com/docs/product/agents). + +- [Installation](#installation) +- [Authentication](#authentication) +- [Commands](#commands) + - [Knowledge Sources](#knowledge-sources) + - [`index-url`](#index-url) + - [`index-sitemap`](#index-sitemap) +- [Running in CI](#running-in-ci) -If you run into any issues please open an issue or get in touch with us at [help@plain.com](mailto:help@plain.com). ## Installation Requires Node.js 22.12 or later. -``` +```bash npm install -g @team-plain/cli -``` - -This installs the package globally and makes the `plain` command available in your path. - -The cli has a help command that can be used to get more information about the available commands: - -``` plain --help ``` ## Authentication -To authenticate with your Plain workspace, the CLI uses a [Plain API Key](https://www.plain.com/docs/api-reference/graphql/authentication). The key is read from the environment variable `PLAIN_API_KEY`. - -See below for permissions required for each command. +To authenticate with your Plain workspace, the CLI uses a +[Plain API Key](https://www.plain.com/docs/api-reference/graphql/authentication), read from the +`PLAIN_API_KEY` environment variable. -``` -export PLAIN_API_KEY=plainApiKey_xxx +```bash +export PLAIN_API_KEY=plainApiKey_xxx plain ... ``` ## Commands ### Knowledge Sources -These commands add pages to Plain as [knowledge sources](https://www.plain.com/docs/product/agents/knowledge-sources), which Ari uses to answer customers. Plain fetches and indexes the content of each URL. Running a command again for a URL that's already a knowledge source reindexes it. +Commands for indexing content as +[Knowledge Sources](https://www.plain.com/docs/product/agents/knowledge-sources) in your Plain +workspace, so that [Plain Agents](https://www.plain.com/docs/product/agents), such as +[Ari](https://www.plain.com/docs/product/agents/ari), can use it to answer customer questions and as +context. + +Each command fetches and indexes the content of the provided URL or sitemap. Running a command again +for a URL or sitemap that's already a knowledge source reindexes it. ### `index-url` @@ -42,8 +56,8 @@ Index a single page by URL. Required permissions: `knowledgeSource:create` -``` -plain index-url +```bash +export PLAIN_API_KEY=plainApiKey_xxx plain index-url ``` Options: @@ -57,16 +71,18 @@ Index all the urls in a given sitemap you provide. Required permissions: `knowledgeSource:create` ``` -plain index-sitemap +export PLAIN_API_KEY=plainApiKey_xxx plain index-sitemap ``` Options: -- `-l, --labelTypeIds `: Array of label type IDs to associate with the indexed urls from the sitemap +- `-l, --labelTypeIds `: Array of label type IDs to associate with the indexed urls + from the sitemap ## Running in CI -Pin the major version so a future breaking release can't change your workflow unannounced. For example, to reindex your docs from GitHub Actions: +Use the CLI in your CI pipeline to index your content as Knowledge Sources, for example when you +publish new documentation to a Mintlify site. ```yaml - uses: actions/setup-node@v7 diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..34a1e81f0178e248bb8257948ba88ec33da4988f GIT binary patch literal 33554 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 X0|oh0ZhNjH00000NkvXXu0mjfyNvnD literal 0 HcmV?d00001 From abf12317f6dddfb0fd063d5d0a9bac67b61f0a49 Mon Sep 17 00:00:00 2001 From: revett <2796074+revett@users.noreply.github.com> Date: Wed, 7 Oct 2026 15:23:39 +0100 Subject: [PATCH 3/6] Center --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 56766a0..001d717 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -Plain +
+ Plain +
# @team-plain/cli From c4517cc5a672ff85c061105a69a5531e324468a2 Mon Sep 17 00:00:00 2001 From: revett <2796074+revett@users.noreply.github.com> Date: Wed, 7 Oct 2026 15:24:53 +0100 Subject: [PATCH 4/6] Fix export examples --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 001d717..dcc87c6 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ To authenticate with your Plain workspace, the CLI uses a `PLAIN_API_KEY` environment variable. ```bash -export PLAIN_API_KEY=plainApiKey_xxx plain ... +export PLAIN_API_KEY=plainApiKey_xxx ``` ## Commands @@ -59,7 +59,7 @@ Index a single page by URL. Required permissions: `knowledgeSource:create` ```bash -export PLAIN_API_KEY=plainApiKey_xxx plain index-url +PLAIN_API_KEY=plainApiKey_xxx plain index-url ``` Options: @@ -73,7 +73,7 @@ Index all the urls in a given sitemap you provide. Required permissions: `knowledgeSource:create` ``` -export PLAIN_API_KEY=plainApiKey_xxx plain index-sitemap +PLAIN_API_KEY=plainApiKey_xxx plain index-sitemap ``` Options: From fe73ec9f826d73a966ef8143f58360df1245c77d Mon Sep 17 00:00:00 2001 From: revett <2796074+revett@users.noreply.github.com> Date: Wed, 7 Oct 2026 15:25:17 +0100 Subject: [PATCH 5/6] Add missing code block tag --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dcc87c6..0a476f8 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ Index all the urls in a given sitemap you provide. Required permissions: `knowledgeSource:create` -``` +```bash PLAIN_API_KEY=plainApiKey_xxx plain index-sitemap ``` From 945807062f9dc21bf70968171c1620c8bff35215 Mon Sep 17 00:00:00 2001 From: revett <2796074+revett@users.noreply.github.com> Date: Wed, 7 Oct 2026 15:27:00 +0100 Subject: [PATCH 6/6] Update release notes --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca70648..193f665 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,8 @@ - Requires Node.js 22.12 or later. Node.js 18 and 20 are end of life. To stay on them, pin `@team-plain/cli@0`. - The API key needs the `knowledgeSource:create` permission. The README and `--help` previously said `indexedDocument:create`, which was wrong. - - Errors now print as a single line with the error code, without a request ID or stack trace. + - Errors print as a single line, with the API error code where there is one, in place of the request ID. + - Passing more arguments than a command takes is now an error. `plain index-url a b` previously indexed `a` and ignored `b`. ## 0.4.0