Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
149 commits
Select commit Hold shift + click to select a range
ed348e3
basic scaffolding
stevensJourney Feb 2, 2026
2e6fa58
confg templates
stevensJourney Feb 3, 2026
73763b2
Schema packages. Improve templates. WIP link commands.
stevensJourney Feb 3, 2026
f8021ca
wip: linking
stevensJourney Feb 3, 2026
16352ad
unify config types
stevensJourney Feb 3, 2026
63eebde
Command structures and implement deploy command
stevensJourney Feb 4, 2026
ec8d323
Add destroy and stop command implementation
stevensJourney Feb 4, 2026
77cc382
fetch and pull cloud config commands
stevensJourney Feb 4, 2026
a066fd7
Improvements from testing deploy workflow
stevensJourney Feb 5, 2026
0def649
Add multiple options for specifying cloud instance
stevensJourney Feb 5, 2026
23ad67e
Various command improvements. cloud Token and schema generation comma…
stevensJourney Feb 5, 2026
5d9a090
wip: shared commands
stevensJourney Feb 6, 2026
14d3e51
Help groups for CLI command flags. Unify linking resolve patterns. Up…
stevensJourney Feb 6, 2026
51bd353
validation commands
stevensJourney Feb 6, 2026
5a916c1
update docs
stevensJourney Feb 6, 2026
874e4d4
Support for naming and creating cloud instances
stevensJourney Feb 6, 2026
78fcb42
cleanup token input
stevensJourney Feb 6, 2026
321591c
update commands' descriptions
stevensJourney Feb 6, 2026
4d76397
strategic command shuffle
stevensJourney Feb 6, 2026
873d463
cli plugin framework. Docker deploy for self hosting example plugin.
stevensJourney Feb 6, 2026
a13c9f8
monorepo structure
stevensJourney Feb 6, 2026
69c3250
add usage docs for docker
stevensJourney Feb 6, 2026
5ec0fe3
wip: update docker templates
stevensJourney Feb 9, 2026
8a70580
docker plugin templating improvements
stevensJourney Feb 9, 2026
40a92b4
update workspace layout
stevensJourney Feb 9, 2026
78cc6d3
cleanup templates
stevensJourney Feb 9, 2026
35d2983
update readme
stevensJourney Feb 9, 2026
2798d21
formatting
stevensJourney Feb 9, 2026
68104f7
cleanup cloud commands
stevensJourney Feb 9, 2026
ec8180f
add colour to logs
stevensJourney Feb 9, 2026
756db05
update packages
stevensJourney Feb 9, 2026
90164bc
update start command docs
stevensJourney Feb 9, 2026
e6df80f
colourize errors. Add some basic examples
stevensJourney Feb 10, 2026
deface8
pretty format client errors
stevensJourney Feb 10, 2026
4ed581b
fix cloud deploy command failure. use micro web sdk client.
stevensJourney Feb 11, 2026
78f1c48
styled errors
stevensJourney Feb 11, 2026
bd40e12
cleanup logs - format command strings to standout
stevensJourney Feb 11, 2026
f8ed092
update fetch status command
stevensJourney Feb 11, 2026
b6face2
update examples with readmes
stevensJourney Feb 11, 2026
7c13bdc
Add basic node.js example app
stevensJourney Feb 11, 2026
a7a91fc
update docs
stevensJourney Feb 11, 2026
885dd0b
share code with core-api
stevensJourney Feb 11, 2026
604cab3
use relative paths for Docker
stevensJourney Feb 11, 2026
34e0ade
specify docker project name in compose projects
stevensJourney Feb 11, 2026
59edbca
accounts client and list instances command
stevensJourney Feb 12, 2026
5030b44
cleanup project loading
stevensJourney Feb 12, 2026
30720bb
cleanup token storage. Improve login command.
stevensJourney Feb 12, 2026
e517f95
wip: browser based PAT for login
stevensJourney Feb 16, 2026
cc979fa
improve config pull output
stevensJourney Feb 16, 2026
91e7667
improve schemas and config validation
stevensJourney Feb 16, 2026
758cf7e
update readmes
stevensJourney Feb 16, 2026
5781534
split init commands. Add interactivity to docker configure
stevensJourney Feb 16, 2026
b7aee18
refactor: rename link.yaml to cli.yaml
stevensJourney Feb 16, 2026
aef9ced
clean login command
stevensJourney Feb 16, 2026
4506cdc
Add ability to configure custom YAML tags for VSCode.
stevensJourney Feb 16, 2026
89aeec9
show progress during validations. neaten init commad logs.
stevensJourney Feb 17, 2026
25faae9
add more usage docs. refactor command name to powersync pull instance
stevensJourney Feb 17, 2026
c3a19f4
default org-id for PAT tokens with single org
stevensJourney Feb 17, 2026
e8aea02
readme cleanup
stevensJourney Feb 17, 2026
fe892ac
fallback login token to prompt if dashboard cannot send it
stevensJourney Feb 17, 2026
66a7fb5
improve PAT login with encryption for edge cases.
stevensJourney Feb 18, 2026
3d1a218
respond with html for long
stevensJourney Feb 19, 2026
4de930f
feat: migration of sync rules
stevensJourney Feb 19, 2026
ef7bac7
remove service-schema override
stevensJourney Feb 19, 2026
22d410c
less colour is more colour
stevensJourney Feb 19, 2026
0c60b99
rename sync rules to sync config. Add command for only deploying sync…
stevensJourney Feb 19, 2026
e082df0
YAML language server templating
stevensJourney Feb 19, 2026
23aff77
More token storage options.
stevensJourney Feb 19, 2026
a239df9
minor log cleanup
stevensJourney Feb 20, 2026
c837230
remove pnpm overrides
stevensJourney Feb 20, 2026
9d1a14d
formatting
stevensJourney Feb 20, 2026
1cc41b8
use single pnpm version
stevensJourney Feb 20, 2026
50d9ef1
remove local override
stevensJourney Feb 20, 2026
ae2f997
fix prettier ignore
stevensJourney Feb 20, 2026
770426c
pretty lint
stevensJourney Feb 20, 2026
6d1cd26
more cleanup
stevensJourney Feb 20, 2026
dce470e
cleanup
stevensJourney Feb 20, 2026
9e54182
try fix windows
stevensJourney Feb 20, 2026
39ac48a
tests for login command
stevensJourney Feb 20, 2026
bcf14bc
Add example commands
stevensJourney Feb 20, 2026
a2929c0
cleanup template config
stevensJourney Feb 20, 2026
9fd74e8
Merge branch 'init' into sync-rules-migrate
stevensJourney Feb 20, 2026
d61e2bc
update sync stream defaults
stevensJourney Feb 20, 2026
921e61b
formatting
stevensJourney Feb 20, 2026
054fadf
lint
stevensJourney Feb 20, 2026
50a45f6
update readme
stevensJourney Feb 20, 2026
caebe3f
Update cli/src/api/write-vscode-settings-for-yaml-env.ts
stevensJourney Feb 23, 2026
dccb61d
pr feedback items
stevensJourney Feb 23, 2026
d6f249f
Merge branch 'init' of github.com:powersync-ja/temp-cli into init
stevensJourney Feb 23, 2026
8429145
lint
stevensJourney Feb 23, 2026
2f6af9f
cleanup
stevensJourney Feb 23, 2026
f86df4e
ensure directory is required for multiple directories
stevensJourney Feb 23, 2026
e16a941
update sync config examples to edition 3
stevensJourney Feb 23, 2026
e729d8e
remove debug_api from templates
stevensJourney Feb 23, 2026
4c5bbaf
list is_provisioned in instance statuses. Wait for destroy and stop c…
stevensJourney Feb 24, 2026
34cef60
document oclif plugins
stevensJourney Feb 24, 2026
1c140ba
update templates in order to create cloud instances without replicati…
stevensJourney Feb 24, 2026
9a4bcd1
update instance status data_queries to used_for_replication
stevensJourney Feb 24, 2026
7cfd2e9
update validate message.
stevensJourney Feb 24, 2026
89385b8
update validation messages. refresh unit tests
stevensJourney Feb 24, 2026
4a5d932
fix tests
stevensJourney Feb 24, 2026
8665efe
husky lint
stevensJourney Feb 24, 2026
23d5999
more husky
stevensJourney Feb 24, 2026
3c4329d
update docs to refer to powersync docker command and topic - not plugin
stevensJourney Feb 24, 2026
78c4f15
wip: cleanup commands and topics
stevensJourney Feb 24, 2026
a6c1f0a
add autocomplete
stevensJourney Feb 24, 2026
1ba7179
add commands plugin
stevensJourney Feb 25, 2026
c35a15d
rename sync.yaml to sync-config.yaml
stevensJourney Feb 25, 2026
d952cca
update package name
stevensJourney Feb 25, 2026
268e879
add install instructions to readme
stevensJourney Feb 25, 2026
2188bef
update build script
stevensJourney Feb 25, 2026
11eb305
fix login command when pasting a PAT
stevensJourney Feb 25, 2026
b88dbe6
cleanup flag resolution order
stevensJourney Feb 25, 2026
80560f9
cleanup login command
stevensJourney Feb 25, 2026
d33535d
add ability to deploy only service config changes (no sync config)
stevensJourney Feb 25, 2026
7e1c365
cleanup deploy logging
stevensJourney Feb 25, 2026
4844ba2
Polish the yaml templates (#5)
benitav Feb 25, 2026
fe6fc60
fix format
stevensJourney Feb 25, 2026
38d88b5
Merge branch 'init' of github.com:powersync-ja/temp-cli into init
stevensJourney Feb 25, 2026
04019b7
fix tests
stevensJourney Feb 25, 2026
72f6b7f
fix typo
stevensJourney Feb 25, 2026
7f986e7
add note about cloud secrets
stevensJourney Feb 26, 2026
e29b1c5
allow linking if project directory does not exist
stevensJourney Feb 26, 2026
58d23b7
add powersync status alias
stevensJourney Feb 26, 2026
64e25ec
add objectId validation, and org - project existance checks
stevensJourney Feb 26, 2026
0653202
remove unknown error code.
stevensJourney Feb 26, 2026
1d87c0d
rename TOKEN to PS_ADMIN_TOKEN
stevensJourney Feb 26, 2026
9ff2af3
fix format
stevensJourney Feb 26, 2026
05177fb
assign project for self hosted commands
stevensJourney Feb 26, 2026
6896a19
feat: custom help
stevensJourney Feb 26, 2026
96cdb73
fix filename casing
stevensJourney Feb 26, 2026
2e60a40
fix order of spreading default options.
stevensJourney Feb 26, 2026
a10ed87
fix: destroy command should call destroyInstance
stevensJourney Feb 26, 2026
2d0b2a2
fix: docker typo
stevensJourney Feb 26, 2026
adc5964
temp move
stevensJourney Feb 26, 2026
6a4d1f4
move op
stevensJourney Feb 26, 2026
6a68eba
cleanup powersync status examples
stevensJourney Mar 1, 2026
a9d08d3
feedback from AI review
stevensJourney Mar 1, 2026
7ec5ee8
cleanup
stevensJourney Mar 1, 2026
8c9f6d7
Merge branch 'init' into help
stevensJourney Mar 1, 2026
8f1f03b
Merge branch 'main' into help
stevensJourney Mar 2, 2026
3e926bc
Merge remote-tracking branch 'origin/main' into help
stevensJourney Mar 3, 2026
9b94a59
group help commands
stevensJourney Mar 3, 2026
d4784a5
cleanup
stevensJourney Mar 3, 2026
06a082c
fix test
stevensJourney Mar 3, 2026
6c589bb
Merge branch 'main' into help
stevensJourney Mar 3, 2026
5f6bba5
improve help command grouping
stevensJourney Mar 4, 2026
ccc596f
Merge remote-tracking branch 'origin/main' into help
stevensJourney Mar 4, 2026
baeace9
add help group for configure ide command
stevensJourney Mar 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 17 additions & 5 deletions cli/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -971,7 +971,7 @@ _See code: [src/commands/init/self-hosted.ts](https://github.com/powersync-ja/po

## `powersync link cloud`

Link to a PowerSync Cloud instance (or create one with --create).
[Cloud only] Link to a PowerSync Cloud instance (or create one with --create).

```
USAGE
Expand All @@ -992,7 +992,7 @@ PROJECT FLAGS
directory.

DESCRIPTION
Link to a PowerSync Cloud instance (or create one with --create).
[Cloud only] Link to a PowerSync Cloud instance (or create one with --create).

Write or update cli.yaml with a Cloud instance (instance-id, org-id, project-id). Use --create to create a new
instance from service.yaml name/region and link it; omit --instance-id when using --create. Org ID is optional when
Expand Down Expand Up @@ -1083,17 +1083,29 @@ Migrates Sync Rules to Sync Streams

```
USAGE
$ powersync migrate sync-rules [--input-file <value>] [--output-file <value>] [--directory <value>]
$ powersync migrate sync-rules [--input-file <value>] [--output-file <value>] [--api-url <value> | --instance-id
<value> | --org-id <value> | --project-id <value>] [--directory <value>]

FLAGS
--input-file=<value> Path to the input sync rules file. Defaults to the project sync-config.yaml file.
--output-file=<value> Path to the output sync streams file. Defaults to overwrite the input file.

SELF_HOSTED_PROJECT FLAGS
--api-url=<value> [Self-hosted] PowerSync API URL. When set, context is treated as self-hosted (exclusive with
--instance-id). Resolved: flag → cli.yaml → API_URL.

PROJECT FLAGS
--directory=<value> [default: powersync] Directory containing PowerSync config. Defaults to "powersync". This is
required if multiple powersync config files are present in subdirectories of the current working
directory.

CLOUD_PROJECT FLAGS
--instance-id=<value> [Cloud] PowerSync Cloud instance ID (BSON ObjectID). When set, context is treated as cloud
(exclusive with --api-url). Resolved: flag → cli.yaml → INSTANCE_ID.
--org-id=<value> [Cloud] Organization ID (optional). Defaults to the token’s single org when only one is
available; pass explicitly if the token has multiple orgs. Resolved: flag → cli.yaml → ORG_ID.
--project-id=<value> [Cloud] Project ID. Resolved: flag → cli.yaml → PROJECT_ID.

DESCRIPTION
Migrates Sync Rules to Sync Streams

Expand Down Expand Up @@ -1394,7 +1406,7 @@ _See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/

## `powersync pull instance`

Pull an existing Cloud instance: link and download config into local service.yaml and sync-config.yaml.
[Cloud only] Pull an existing Cloud instance: link and download config into local service.yaml and sync-config.yaml.

```
USAGE
Expand All @@ -1412,7 +1424,7 @@ CLOUD_PROJECT FLAGS
--project-id=<value> Project ID. Manually passed if the current context has not been linked.

DESCRIPTION
Pull an existing Cloud instance: link and download config into local service.yaml and sync-config.yaml.
[Cloud only] Pull an existing Cloud instance: link and download config into local service.yaml and sync-config.yaml.

Fetch an existing Cloud instance by ID: create the config directory if needed, write cli.yaml, and download
service.yaml and sync-config.yaml. Pass --instance-id and --project-id when the directory is not yet linked; --org-id
Expand Down
1 change: 1 addition & 0 deletions cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@
"bin": "powersync",
"dirname": "powersync",
"commands": "./dist/commands",
"helpClass": "./dist/help.js",
"plugins": [
"@oclif/plugin-help",
"@oclif/plugin-plugins",
Expand Down
3 changes: 2 additions & 1 deletion cli/src/commands/configure/ide.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { select } from '@inquirer/prompts';
import { ux } from '@oclif/core';
import { CLI_FILENAME, parseYamlFile, PowerSyncCommand } from '@powersync/cli-core';
import { CLI_FILENAME, CommandHelpGroup, parseYamlFile, PowerSyncCommand } from '@powersync/cli-core';
import { CLIConfig } from '@powersync/cli-schemas';
import { readdirSync, statSync } from 'node:fs';
import { join } from 'node:path';
Expand Down Expand Up @@ -39,6 +39,7 @@ function findLinkedProjectDirs(cwd: string): string[] {
}

export default class ConfigureIde extends PowerSyncCommand {
static commandHelpGroup = CommandHelpGroup.PROJECT_SETUP;
static description =
'Configure or guide your IDE setup for the best PowerSync CLI developer experience. Enables YAML schema validation and autocompletion, sets up !env custom tag support, and patches existing config files with language server directives.';
static examples = ['<%= config.bin %> <%= command.id %>'];
Expand Down
9 changes: 8 additions & 1 deletion cli/src/commands/fetch/instances.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
import { Command, Flags, ux } from '@oclif/core';
import { CLI_FILENAME, createAccountsHubClient, createCloudClient, parseYamlFile } from '@powersync/cli-core';
import {
CLI_FILENAME,
CommandHelpGroup,
createAccountsHubClient,
createCloudClient,
parseYamlFile
} from '@powersync/cli-core';
import { CLIConfig } from '@powersync/cli-schemas';
import sortBy from 'lodash/sortBy.js';
import fs, { readdir } from 'node:fs/promises';
Expand Down Expand Up @@ -34,6 +40,7 @@ type OrganizationMap = {
};

export default class FetchInstances extends Command {
static commandHelpGroup = CommandHelpGroup.CLOUD;
static description =
'List PowerSync Cloud and linked instances, Cloud instances are grouped by organization and project.';
static examples = [
Expand Down
2 changes: 2 additions & 0 deletions cli/src/commands/init/cloud.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { ux } from '@oclif/core';
import {
CLI_FILENAME,
CommandHelpGroup,
InstanceCommand,
SERVICE_FILENAME,
SYNC_FILENAME,
Expand All @@ -16,6 +17,7 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
const TEMPLATES_DIR = join(__dirname, '..', '..', '..', 'templates');

export default class InitCloud extends InstanceCommand {
static commandHelpGroup = CommandHelpGroup.PROJECT_SETUP;
static description =
'Copy a Cloud template into a config directory (default powersync/). Edit service.yaml then run link cloud and deploy.';
static examples = [
Expand Down
2 changes: 2 additions & 0 deletions cli/src/commands/init/self-hosted.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { ux } from '@oclif/core';
import {
CLI_FILENAME,
CommandHelpGroup,
InstanceCommand,
SERVICE_FILENAME,
SYNC_FILENAME,
Expand All @@ -16,6 +17,7 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
const TEMPLATES_DIR = join(__dirname, '..', '..', '..', 'templates');

export default class InitSelfHosted extends InstanceCommand {
static commandHelpGroup = CommandHelpGroup.PROJECT_SETUP;
static description =
'Copy a self-hosted template into a config directory (default powersync/). Configure service.yaml with your self-hosted instance details.';
static examples = [
Expand Down
4 changes: 3 additions & 1 deletion cli/src/commands/link/cloud.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { Flags, ux } from '@oclif/core';
import {
CLI_FILENAME,
CloudInstanceCommand,
CommandHelpGroup,
ensureServiceTypeMatches,
env,
getDefaultOrgId,
Expand All @@ -14,6 +15,7 @@ import { validateCloudLinkConfig } from '../../api/cloud/validate-cloud-link-con
import { writeCloudLink } from '../../api/cloud/write-cloud-link.js';

export default class LinkCloud extends CloudInstanceCommand {
static commandHelpGroup = CommandHelpGroup.PROJECT_SETUP;
static description =
'Write or update cli.yaml with a Cloud instance (instance-id, org-id, project-id). Use --create to create a new instance from service.yaml name/region and link it; omit --instance-id when using --create. Org ID is optional when the token has a single organization.';
static examples = [
Expand Down Expand Up @@ -45,7 +47,7 @@ export default class LinkCloud extends CloudInstanceCommand {
}),
...InstanceCommand.flags
};
static summary = 'Link to a PowerSync Cloud instance (or create one with --create).';
static summary = '[Cloud only] Link to a PowerSync Cloud instance (or create one with --create).';

async run(): Promise<void> {
const { flags } = await this.parse(LinkCloud);
Expand Down
2 changes: 2 additions & 0 deletions cli/src/commands/link/self-hosted.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { input } from '@inquirer/prompts';
import { Flags, ux } from '@oclif/core';
import {
CLI_FILENAME,
CommandHelpGroup,
ensureServiceTypeMatches,
env,
InstanceCommand,
Expand All @@ -14,6 +15,7 @@ import { join } from 'node:path';
import { Document } from 'yaml';

export default class LinkSelfHosted extends SelfHostedInstanceCommand {
static commandHelpGroup = CommandHelpGroup.PROJECT_SETUP;
static description = [
`Links a self hosted PowerSync instance by API URL.`,
`API Keys can be specified via input or specified in the PS_ADMIN_TOKEN environment variable.`
Expand Down
3 changes: 2 additions & 1 deletion cli/src/commands/login.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import { confirm, password } from '@inquirer/prompts';
import { ux } from '@oclif/core';
import { createAccountsHubClient, PowerSyncCommand, Services } from '@powersync/cli-core';
import { CommandHelpGroup, createAccountsHubClient, PowerSyncCommand, Services } from '@powersync/cli-core';

import { startPATLoginServer } from '../api/login-server.js';

export default class Login extends PowerSyncCommand {
static commandHelpGroup = CommandHelpGroup.AUTHENTICATION;
static description =
'Store a PowerSync auth token (PAT) in secure storage so later Cloud commands run without passing a token. If secure storage is unavailable, login can optionally store it in a local config file. Use PS_ADMIN_TOKEN env var for CI or scripts instead.';
static examples = ['<%= config.bin %> <%= command.id %>'];
Expand Down
3 changes: 2 additions & 1 deletion cli/src/commands/logout.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { ux } from '@oclif/core';
import { PowerSyncCommand, Services } from '@powersync/cli-core';
import { CommandHelpGroup, PowerSyncCommand, Services } from '@powersync/cli-core';

export default class Logout extends PowerSyncCommand {
static commandHelpGroup = CommandHelpGroup.AUTHENTICATION;
static description =
'Remove the stored PowerSync auth token from secure storage or local fallback config storage. Cloud commands will no longer use stored credentials until you run login again.';
static examples = ['<%= config.bin %> <%= command.id %>'];
Expand Down
6 changes: 3 additions & 3 deletions cli/src/commands/migrate/sync-rules.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { Flags, ux } from '@oclif/core';
import { instantiate } from '@powersync-community/sync-config-rewriter';
import { InstanceCommand, SYNC_FILENAME, YAML_SYNC_RULES_SCHEMA } from '@powersync/cli-core';
import { SharedInstanceCommand, SYNC_FILENAME, YAML_SYNC_RULES_SCHEMA } from '@powersync/cli-core';
import { access, readFile, writeFile } from 'node:fs/promises';
import { join } from 'node:path';
import { fileURLToPath } from 'node:url';

export default class MigrateSyncRules extends InstanceCommand {
export default class MigrateSyncRules extends SharedInstanceCommand {
static description = 'Migrates Sync Rules to Sync Streams';
static flags = {
'input-file': Flags.string({
Expand All @@ -16,7 +16,7 @@ export default class MigrateSyncRules extends InstanceCommand {
description: 'Path to the output sync streams file. Defaults to overwrite the input file.',
required: false
}),
...InstanceCommand.flags
...SharedInstanceCommand.flags
};
static summary = 'Migrates Sync Rules to Sync Streams';

Expand Down
4 changes: 3 additions & 1 deletion cli/src/commands/pull/instance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { ux } from '@oclif/core';
import {
CLI_FILENAME,
CloudInstanceCommand,
CommandHelpGroup,
ensureServiceTypeMatches,
getDefaultOrgId,
SERVICE_FILENAME,
Expand All @@ -26,6 +27,7 @@ const PULL_CONFIG_HEADER = `# PowerSync Cloud config (fetched from cloud)
`;

export default class PullInstance extends CloudInstanceCommand {
static commandHelpGroup = CommandHelpGroup.PROJECT_SETUP;
static description =
'Fetch an existing Cloud instance by ID: create the config directory if needed, write cli.yaml, and download service.yaml and sync-config.yaml. Pass --instance-id and --project-id when the directory is not yet linked; --org-id is optional when the token has a single organization. Cloud only.';
static examples = [
Expand All @@ -37,7 +39,7 @@ export default class PullInstance extends CloudInstanceCommand {
...CloudInstanceCommand.flags
};
static summary =
'Pull an existing Cloud instance: link and download config into local service.yaml and sync-config.yaml.';
'[Cloud only] Pull an existing Cloud instance: link and download config into local service.yaml and sync-config.yaml.';

async run(): Promise<void> {
const { flags } = await this.parse(PullInstance);
Expand Down
Loading