@cxtms/cx-schema 1.7.14 → 1.7.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,7 +10,7 @@ Shared domain reference for CargoXplorer entities. Used by `cx-workflow` and `cx
10
10
 
11
11
  ## CX Server Authentication & Management
12
12
 
13
- For CLI authentication, PAT tokens, org management, and publishing: see [ref-cli-auth.md](ref-cli-auth.md)
13
+ For CLI authentication, PAT tokens, org management, and releasing: see [ref-cli-auth.md](ref-cli-auth.md)
14
14
 
15
15
  ## GraphQL Querying & Audit History
16
16
 
@@ -61,7 +61,7 @@ npx cxtms orgs use <orgId>
61
61
  npx cxtms orgs use
62
62
  ```
63
63
 
64
- The active org is cached in the session file and used by all server commands. **Always pass `--org <id>` on deploy/undeploy/publish/execute/logs commands** to avoid the interactive org picker blocking automation.
64
+ The active org is cached in the session file and used by all server commands. **Always pass `--org <id>` on deploy/undeploy/release/execute/logs commands** to avoid the interactive org picker blocking automation.
65
65
 
66
66
  ## Session Resolution
67
67
 
@@ -88,7 +88,7 @@ Validates all YAML files first, then pushes modules and workflows to the server.
88
88
 
89
89
  ## App Manifest Management
90
90
 
91
- Server-side app manifest operations — install from git, publish changes to git, and list installed apps.
91
+ Server-side app manifest operations — install from git, release changes to git, and list installed apps.
92
92
 
93
93
  ```bash
94
94
  # Install/refresh app from its git repository into the CX server
@@ -103,11 +103,11 @@ npx cxtms app install --branch develop
103
103
  # Install but skip modules that have unpublished local changes
104
104
  npx cxtms app install --skip-changed
105
105
 
106
- # Publish server changes to git (creates a PR) — message is required
107
- npx cxtms app publish -m "Add new shipping module"
106
+ # Release server changes to git (creates a PR) — message is required
107
+ npx cxtms app release -m "Add new shipping module"
108
108
 
109
- # Force publish all modules and workflows (not just changed ones)
110
- npx cxtms app publish -m "Full republish" --force
109
+ # Force release all modules and workflows (not just changed ones)
110
+ npx cxtms app release -m "Full republish" --force
111
111
 
112
112
  # List installed app manifests on the server
113
113
  npx cxtms app list
@@ -115,6 +115,6 @@ npx cxtms app list
115
115
 
116
116
  **`app install`** reads `repository` and `branch` from `app.yaml`, downloads the repo on the server side, and installs/updates all modules and workflows. Use `--force` to reinstall even if the version hasn't changed. Use `--skip-changed` to preserve modules with unpublished changes.
117
117
 
118
- **`app publish`** takes the current server state and publishes it to git by creating a PR. Requires a `-m` message describing the changes (like a git commit message). The server increments the version, creates a publish branch, commits all module/workflow YAML files, and opens a pull request to the target branch.
118
+ **`app release`** takes the current server state and releases it to git by creating a PR. Requires a `-m` message describing the changes (like a git commit message). The server increments the version, creates a release branch, commits all module/workflow YAML files, and opens a pull request to the target branch.
119
119
 
120
120
  **`app list`** shows all installed app manifests with their version, status flags (disabled, unpublished changes, update available), and repository info.
@@ -0,0 +1,41 @@
1
+ # Organization Entity Reference
2
+
3
+ Core tenant entity. Each organization represents a company/tenant in the system.
4
+
5
+ ## Fields
6
+
7
+ | Field | Type | Notes |
8
+ |-------|------|-------|
9
+ | `organizationId` | `int` | PK |
10
+ | `companyName` | `string` | Required |
11
+ | `addressLine` | `string?` | |
12
+ | `addressLine2` | `string?` | |
13
+ | `cityName` | `string?` | |
14
+ | `countryCode` | `string?` | |
15
+ | `stateCode` | `string?` | |
16
+ | `postalCode` | `string?` | |
17
+ | `phoneNumber` | `string?` | |
18
+ | `faxNumber` | `string?` | |
19
+ | `uniqueId` | `Guid` | Immutable external identifier |
20
+ | `slug` | `string?` | URL-friendly identifier for Public API routes (lowercase, hyphenated) |
21
+ | `isDeleted` | `bool` | Soft delete |
22
+ | `customValues` | `Dictionary?` | jsonb, merged on update |
23
+ | `created` / `lastModified` | `DateTime` | Audit fields (from `AuditableEntity`) |
24
+ | `createdBy` / `lastModifiedBy` | `string` | Audit fields |
25
+
26
+ ## Slug
27
+
28
+ Generated by `SlugGenerator`: lowercased, non-alphanumeric stripped, spaces→hyphens, truncated to max length. Numeric suffix appended for uniqueness.
29
+
30
+ Used by `PublicApiOrganizationResolver` to resolve org by slug or GUID in Public API URLs. Cached 1h sliding.
31
+
32
+ ## Relationships
33
+
34
+ - `AspNetUserEmployees` — users belonging to this organization
35
+
36
+ ## Domain Methods
37
+
38
+ - `ChangeSlug(string?)` — trims and lowercases
39
+ - `ChangeCompanyName(string)`, `ChangeAddressLine(string?)`, etc.
40
+ - `ChangeCustomValues(Dictionary?)` — merges into existing values
41
+ - `DeleteOrganization()` — sets `IsDeleted = true`
@@ -20,7 +20,7 @@ You are a CargoXplorer module YAML builder. You generate schema-valid YAML for C
20
20
  - **Feature folder**: `npx cxtms create module <name> --template <template> --feature <feature-name>`
21
21
  - **Deploy to server**: `npx cxtms appmodule deploy <file.yaml> --org <id>` — creates or updates module on the CX server
22
22
  - **Undeploy from server**: `npx cxtms appmodule undeploy <appModuleId> --org <id>` — removes a module by UUID
23
- - **Publish all**: `npx cxtms publish [--feature <name>] --org <id>` — push all modules and workflows to the server
23
+ - **Publish all**: `npx cxtms publish [--feature <name>] --org <id>` — deploy all modules and workflows to the server
24
24
 
25
25
  ## Generation Workflow
26
26
 
@@ -409,28 +409,28 @@ Reusable select components (e.g., `Countries/Select`, `Ports/Select`) follow thi
409
409
 
410
410
  ## Server Module Commands
411
411
 
412
- Deploy, undeploy, and publish commands are listed in the CLI section at the top of this file. For authentication setup (login, PAT tokens, org management): see [cx-core/ref-cli-auth.md](.claude/skills/cx-core/ref-cli-auth.md)
412
+ Deploy, undeploy, and release commands are listed in the CLI section at the top of this file. For authentication setup (login, PAT tokens, org management): see [cx-core/ref-cli-auth.md](.claude/skills/cx-core/ref-cli-auth.md)
413
413
 
414
- ### Publishing App to GitHub
414
+ ### Releasing App to GitHub
415
415
 
416
- Use `app publish` to push modified modules and workflows from the CX server to a GitHub repository. This creates a branch and pull request — it does NOT push directly to the target branch.
416
+ Use `app release` to release modified modules and workflows from the CX server to a GitHub repository. This creates a branch and pull request — it does NOT push directly to the target branch.
417
417
 
418
418
  ```bash
419
- # Publish all unpublished changes to GitHub (creates a PR) — message is required
420
- npx cxtms app publish -m "Add warehouse locations module"
419
+ # Release all unpublished changes to GitHub (creates a PR) — message is required
420
+ npx cxtms app release -m "Add warehouse locations module"
421
421
 
422
- # Publish specific modules and/or workflows by YAML file
423
- npx cxtms app publish -m "Fix country module" modules/my-module.yaml
424
- npx cxtms app publish -m "Update billing" modules/a.yaml workflows/b.yaml
422
+ # Release specific modules and/or workflows by YAML file
423
+ npx cxtms app release -m "Fix country module" modules/my-module.yaml
424
+ npx cxtms app release -m "Update billing" modules/a.yaml workflows/b.yaml
425
425
 
426
- # Force publish all modules and workflows (not just unpublished ones)
427
- npx cxtms app publish -m "Full republish" --force
426
+ # Force release all modules and workflows (not just unpublished ones)
427
+ npx cxtms app release -m "Full republish" --force
428
428
 
429
- # Publish with explicit org
430
- npx cxtms app publish -m "Add warehouse locations module" --org 42
429
+ # Release with explicit org
430
+ npx cxtms app release -m "Add warehouse locations module" --org 42
431
431
  ```
432
432
 
433
- **What `app publish` does:**
433
+ **What `app release` does:**
434
434
  1. Reads `app.yaml` for the `id` (appManifestId), repository, and branch
435
435
  2. Increments the app version (patch bump)
436
436
  3. Creates a `publish/{app-name}-v{version}-{timestamp}` branch on GitHub
@@ -438,11 +438,11 @@ npx cxtms app publish -m "Add warehouse locations module" --org 42
438
438
  5. Creates a pull request from the publish branch to the target branch
439
439
  6. Marks published modules and workflows as `hasUnpublishedChanges: false`
440
440
 
441
- **This is a commit-and-push operation** — it commits the current server-side YAML directly to GitHub via the API. No local git repo is involved. The modules and workflows being published are taken from the CX server database, not from local files. The YAML file arguments only identify *which* items to include by their IDs.
441
+ **This is a release-to-git operation** — it commits the current server-side YAML directly to GitHub via the API. No local git repo is involved. The modules and workflows being released are taken from the CX server database, not from local files. The YAML file arguments only identify *which* items to include by their IDs.
442
442
 
443
- **Important:** Modules and workflows must be deployed to the TMS server before they can be published. Use `cxtms appmodule deploy` or `cxtms workflow deploy` first, then `cxtms app publish` to commit them to GitHub.
443
+ **Important:** Modules and workflows must be deployed to the TMS server before they can be released. Use `cxtms appmodule deploy` or `cxtms workflow deploy` first, then `cxtms app release` to commit them to GitHub.
444
444
 
445
- **Do NOT run `app publish` automatically.** Only publish when the user explicitly requests it. Publishing creates a branch and PR on GitHub, so it should be done once when all changes are ready — not after every deploy.
445
+ **Do NOT run `app release` automatically.** Only release when the user explicitly requests it. Releasing creates a branch and PR on GitHub, so it should be done once when all changes are ready — not after every deploy.
446
446
 
447
447
  **Prerequisites:**
448
448
  - `app.yaml` must exist with a valid `id` field
@@ -288,6 +288,47 @@ children:
288
288
 
289
289
  ---
290
290
 
291
+ ## slot
292
+
293
+ Extension point that renders dynamically registered components targeting a named slot. Enables cross-module UI extensions without modifying the original layout.
294
+
295
+ **Props:**
296
+ | Prop | Type | Default | Description |
297
+ |------|------|---------|-------------|
298
+ | `name` | `string` | — | Slot name to match. Supports templates: `TMS/{{entityType}}/Actions` |
299
+ | `itemTag` | `string` | `React.Fragment` | HTML element to wrap each extension (`div`, `li`, etc.) |
300
+
301
+ **Children:** No — extensions are loaded from the database at runtime.
302
+
303
+ Extension components must define `props.targetSlot` matching the slot name, `props.order` for sort order, and a `layout` object.
304
+
305
+ ```yaml
306
+ # Define a slot extension point
307
+ component: slot
308
+ props:
309
+ name: "TMS/ShipmentDashboard/Tabs"
310
+ ```
311
+
312
+ ```yaml
313
+ # Extension component (registered via another module's appComponents)
314
+ name: "TMS/ShipmentDashboard/TrackingTab"
315
+ props:
316
+ targetSlot: "TMS/ShipmentDashboard/Tabs"
317
+ order: 10
318
+ layout:
319
+ component: tab
320
+ props:
321
+ label: { en-US: "Tracking" }
322
+ children:
323
+ - component: layout
324
+ props:
325
+ component: "TMS/Tracking/Panel"
326
+ ```
327
+
328
+ **Naming convention:** `{Module}/{Entity}/{Location}` (e.g., `TMS/OrderDetail/Actions`)
329
+
330
+ ---
331
+
291
332
  ## line
292
333
 
293
334
  Simple `<hr>` horizontal divider.
@@ -341,7 +341,9 @@ CSS Grid-based timeline with swim lanes, drill-down, and virtual scrolling.
341
341
  | `view` | `day \| week \| month \| year` | `week` | Time view |
342
342
  | `startDate` / `endDate` | `string` | — | Date range |
343
343
  | `eventSources` | `EventSource[]` | — | Event data sources |
344
+ | `eventSources[].query.name` | `string` | `query1`, `query2`... | Source name, used as key in `summaryComponent` `dataSources` |
344
345
  | `eventTemplate` | `ComponentProps` | — | Custom event template |
346
+ | `summaryComponent` | `ComponentProps` | — | Custom component rendered per column in the summary row. Replaces numeric totals when set. |
345
347
  | `options.height` | `string \| number` | `600` | Container height |
346
348
  | `options.cellHeight` | `number` | `60/100` | Cell height (px) |
347
349
  | `options.groupBy` | `string` | — | Field for swim lane grouping |
@@ -352,6 +354,14 @@ CSS Grid-based timeline with swim lanes, drill-down, and virtual scrolling.
352
354
  | `options.showWeekends` | `boolean` | `true` | Show weekends |
353
355
  | `options.showTotalCount` | `boolean` | `false` | Show event totals |
354
356
 
357
+ **Summary component variables** (available when `summaryComponent` is set):
358
+ | Variable | Type | Description |
359
+ |----------|------|-------------|
360
+ | `dataSources` | `Record<string, TimelineEvent[]>` | Per-source events filtered to the column, keyed by `query.name` |
361
+ | `column` | `ColumnDefinition` | Column metadata (`id`, `label`, `date`, `startDate`, `endDate`) |
362
+ | `columnIndex` | `number` | Zero-based column index |
363
+ | `totalCount` | `number` | Total event count for the column across all sources |
364
+
355
365
  **Events:**
356
366
  | Event | Data | Description |
357
367
  |-------|------|-------------|
@@ -397,6 +407,36 @@ props:
397
407
  props: { date: "{{ date }}", assignee: "{{ row }}" }
398
408
  ```
399
409
 
410
+ **Summary component example** (per-source breakdown per column):
411
+ ```yaml
412
+ component: timeline-grid
413
+ props:
414
+ view: week
415
+ options: { height: 600, enableNavigation: true }
416
+ eventSources:
417
+ - query:
418
+ name: ups
419
+ command: "query($s:String!,$e:String!){ upsShipments(start:$s,end:$e){ id date title } }"
420
+ variables: { s: "{{ startDate }}", e: "{{ endDate }}" }
421
+ path: upsShipments
422
+ - query:
423
+ name: fedex
424
+ command: "query($s:String!,$e:String!){ fedexShipments(start:$s,end:$e){ id date title } }"
425
+ variables: { s: "{{ startDate }}", e: "{{ endDate }}" }
426
+ path: fedexShipments
427
+ summaryComponent:
428
+ component: layout
429
+ props:
430
+ direction: column
431
+ children:
432
+ - component: text
433
+ props: { value: "UPS: {{ dataSources.ups.length }}" }
434
+ - component: text
435
+ props: { value: "FedEx: {{ dataSources.fedex.length }}" }
436
+ - component: text
437
+ props: { value: "Total: {{ totalCount }}" }
438
+ ```
439
+
400
440
  ---
401
441
 
402
442
  ## oauth2
@@ -21,7 +21,7 @@ You are a CargoXplorer workflow YAML builder. You generate schema-valid YAML for
21
21
  - **Execute**: `npx cxtms workflow execute <workflowId|file.yaml> --org <id> [--vars '<json>'] [--file varName=path]` — trigger a workflow execution (--file uploads a local file and passes the URL as a variable)
22
22
  - **List logs**: `npx cxtms workflow logs <workflowId|file.yaml> --org <id> [--from YYYY-MM-DD] [--to YYYY-MM-DD]` — list executions with log availability
23
23
  - **Download log**: `npx cxtms workflow log <executionId> --org <id> [--json] [--console] [--output <file>]` — download execution log
24
- - **Publish all**: `npx cxtms publish [--feature <name>] --org <id>` — push all modules and workflows to the server
24
+ - **Publish all**: `npx cxtms publish [--feature <name>] --org <id>` — deploy all modules and workflows to the server
25
25
 
26
26
  ## Generation Workflow
27
27
 
@@ -320,28 +320,28 @@ Implicit variable: `iteration` (zero-based).
320
320
 
321
321
  ## Server Workflow Commands
322
322
 
323
- Deploy, undeploy, and publish commands are listed in the CLI section at the top of this file. For authentication setup (login, PAT tokens, org management): see [cx-core/ref-cli-auth.md](.claude/skills/cx-core/ref-cli-auth.md)
323
+ Deploy, undeploy, and release commands are listed in the CLI section at the top of this file. For authentication setup (login, PAT tokens, org management): see [cx-core/ref-cli-auth.md](.claude/skills/cx-core/ref-cli-auth.md)
324
324
 
325
- ### Publishing App to GitHub
325
+ ### Releasing App to GitHub
326
326
 
327
- Use `app publish` to push modified workflows and modules from the CX server to a GitHub repository. This creates a branch and pull request — it does NOT push directly to the target branch.
327
+ Use `app release` to release modified workflows and modules from the CX server to a GitHub repository. This creates a branch and pull request — it does NOT push directly to the target branch.
328
328
 
329
329
  ```bash
330
- # Publish all unpublished changes to GitHub (creates a PR) — message is required
331
- npx cxtms app publish -m "Add order notification workflow"
330
+ # Release all unpublished changes to GitHub (creates a PR) — message is required
331
+ npx cxtms app release -m "Add order notification workflow"
332
332
 
333
- # Publish specific workflows and/or modules by YAML file
334
- npx cxtms app publish -m "Fix tracking workflow" workflows/my-workflow.yaml
335
- npx cxtms app publish -m "Update shipping" workflows/a.yaml modules/b.yaml
333
+ # Release specific workflows and/or modules by YAML file
334
+ npx cxtms app release -m "Fix tracking workflow" workflows/my-workflow.yaml
335
+ npx cxtms app release -m "Update shipping" workflows/a.yaml modules/b.yaml
336
336
 
337
- # Force publish all workflows and modules (not just unpublished ones)
338
- npx cxtms app publish -m "Full republish" --force
337
+ # Force release all workflows and modules (not just unpublished ones)
338
+ npx cxtms app release -m "Full republish" --force
339
339
 
340
- # Publish with explicit org
341
- npx cxtms app publish -m "Add order notification workflow" --org 42
340
+ # Release with explicit org
341
+ npx cxtms app release -m "Add order notification workflow" --org 42
342
342
  ```
343
343
 
344
- **What `app publish` does:**
344
+ **What `app release` does:**
345
345
  1. Reads `app.yaml` for the `id` (appManifestId), repository, and branch
346
346
  2. Increments the app version (patch bump)
347
347
  3. Creates a `publish/{app-name}-v{version}-{timestamp}` branch on GitHub
@@ -349,11 +349,11 @@ npx cxtms app publish -m "Add order notification workflow" --org 42
349
349
  5. Creates a pull request from the publish branch to the target branch
350
350
  6. Marks published workflows and modules as `hasUnpublishedChanges: false`
351
351
 
352
- **This is a commit-and-push operation** — it commits the current server-side YAML directly to GitHub via the API. No local git repo is involved. The workflows and modules being published are taken from the CX server database, not from local files. The YAML file arguments only identify *which* items to include by their IDs.
352
+ **This is a release-to-git operation** — it commits the current server-side YAML directly to GitHub via the API. No local git repo is involved. The workflows and modules being released are taken from the CX server database, not from local files. The YAML file arguments only identify *which* items to include by their IDs.
353
353
 
354
- **Important:** Workflows and modules must be deployed to the TMS server before they can be published. Use `cxtms workflow deploy` or `cxtms appmodule deploy` first, then `cxtms app publish` to commit them to GitHub.
354
+ **Important:** Workflows and modules must be deployed to the TMS server before they can be released. Use `cxtms workflow deploy` or `cxtms appmodule deploy` first, then `cxtms app release` to commit them to GitHub.
355
355
 
356
- **Do NOT run `app publish` automatically.** Only publish when the user explicitly requests it. Publishing creates a branch and PR on GitHub, so it should be done once when all changes are ready — not after every deploy.
356
+ **Do NOT run `app release` automatically.** Only release when the user explicitly requests it. Releasing creates a branch and PR on GitHub, so it should be done once when all changes are ready — not after every deploy.
357
357
 
358
358
  **Prerequisites:**
359
359
  - `app.yaml` must exist with a valid `id` field
package/dist/cli.js CHANGED
@@ -117,7 +117,7 @@ ${chalk_1.default.bold.yellow('COMMANDS:')}
117
117
  ${chalk_1.default.green('appmodule')} Manage app modules on a CX server (deploy, undeploy)
118
118
  ${chalk_1.default.green('workflow')} Manage workflows on a CX server (deploy, undeploy, execute, logs, log)
119
119
  ${chalk_1.default.green('publish')} Publish all modules and workflows to a CX server
120
- ${chalk_1.default.green('app')} Manage app manifests (install/upgrade from git, publish to git, list)
120
+ ${chalk_1.default.green('app')} Manage app manifests (install/upgrade from git, release to git, list)
121
121
  ${chalk_1.default.green('query')} Run a GraphQL query against the CX server
122
122
  ${chalk_1.default.green('gql')} Explore GraphQL schema (types, queries, mutations)
123
123
  ${chalk_1.default.green('schema')} Show JSON schema for a component or task
@@ -149,7 +149,7 @@ ${chalk_1.default.bold.yellow('OPTIONS:')}
149
149
  ${chalk_1.default.green('--output <file>')} Save workflow log to file (or -o)
150
150
  ${chalk_1.default.green('--console')} Print workflow log to stdout
151
151
  ${chalk_1.default.green('--json')} Download JSON log instead of text
152
- ${chalk_1.default.green('-m, --message <msg>')} Commit message for app publish (required)
152
+ ${chalk_1.default.green('-m, --message <msg>')} Release message for app release (required)
153
153
  ${chalk_1.default.green('-b, --branch <branch>')} Branch override for app install/publish
154
154
  ${chalk_1.default.green('--force')} Force install (even if same version) or publish all
155
155
  ${chalk_1.default.green('--skip-changed')} Skip modules with unpublished changes during install
@@ -311,15 +311,15 @@ ${chalk_1.default.bold.yellow('APP COMMANDS:')}
311
311
  ${chalk_1.default.cyan(`${PROGRAM_NAME} app upgrade`)}
312
312
  ${chalk_1.default.cyan(`${PROGRAM_NAME} app upgrade --force`)}
313
313
 
314
- ${chalk_1.default.gray('# Publish server changes to git (creates a PR) — message is required')}
315
- ${chalk_1.default.cyan(`${PROGRAM_NAME} app publish -m "Add new shipping module"`)}
314
+ ${chalk_1.default.gray('# Release server changes to git (creates a PR) — message is required')}
315
+ ${chalk_1.default.cyan(`${PROGRAM_NAME} app release -m "Add new shipping module"`)}
316
316
 
317
- ${chalk_1.default.gray('# Publish specific workflows and/or modules by YAML file')}
318
- ${chalk_1.default.cyan(`${PROGRAM_NAME} app publish -m "Fix order workflow" workflows/my-workflow.yaml`)}
319
- ${chalk_1.default.cyan(`${PROGRAM_NAME} app publish -m "Update billing" workflows/a.yaml modules/b.yaml`)}
317
+ ${chalk_1.default.gray('# Release specific workflows and/or modules by YAML file')}
318
+ ${chalk_1.default.cyan(`${PROGRAM_NAME} app release -m "Fix order workflow" workflows/my-workflow.yaml`)}
319
+ ${chalk_1.default.cyan(`${PROGRAM_NAME} app release -m "Update billing" workflows/a.yaml modules/b.yaml`)}
320
320
 
321
- ${chalk_1.default.gray('# Force publish all modules and workflows')}
322
- ${chalk_1.default.cyan(`${PROGRAM_NAME} app publish -m "Full republish" --force`)}
321
+ ${chalk_1.default.gray('# Force release all modules and workflows')}
322
+ ${chalk_1.default.cyan(`${PROGRAM_NAME} app release -m "Full republish" --force`)}
323
323
 
324
324
  ${chalk_1.default.gray('# List installed app manifests on the server')}
325
325
  ${chalk_1.default.cyan(`${PROGRAM_NAME} app list`)}
@@ -3030,9 +3030,9 @@ async function runAppPublish(orgOverride, message, branch, force, targetFiles) {
3030
3030
  const token = session.access_token;
3031
3031
  const orgId = await resolveOrgId(domain, token, orgOverride);
3032
3032
  if (!message) {
3033
- console.error(chalk_1.default.red('Error: --message (-m) is required for app publish'));
3033
+ console.error(chalk_1.default.red('Error: --message (-m) is required for app release'));
3034
3034
  console.error(chalk_1.default.gray('Describe what changed, similar to a git commit message.'));
3035
- console.error(chalk_1.default.gray(`Example: ${PROGRAM_NAME} app publish -m "Add new shipping module"`));
3035
+ console.error(chalk_1.default.gray(`Example: ${PROGRAM_NAME} app release -m "Add new shipping module"`));
3036
3036
  process.exit(2);
3037
3037
  }
3038
3038
  const appYaml = readAppYaml();
@@ -3041,7 +3041,7 @@ async function runAppPublish(orgOverride, message, branch, force, targetFiles) {
3041
3041
  console.error(chalk_1.default.red('Error: app.yaml must have an `id` field'));
3042
3042
  process.exit(2);
3043
3043
  }
3044
- console.log(chalk_1.default.bold.cyan('\n App Publish\n'));
3044
+ console.log(chalk_1.default.bold.cyan('\n App Release\n'));
3045
3045
  console.log(chalk_1.default.gray(` Server: ${new URL(domain).hostname}`));
3046
3046
  console.log(chalk_1.default.gray(` Org: ${orgId}`));
3047
3047
  console.log(chalk_1.default.gray(` App: ${appYaml.name || appManifestId}`));
@@ -4606,7 +4606,7 @@ async function main() {
4606
4606
  if (sub === 'install' || sub === 'upgrade') {
4607
4607
  await runAppInstall(options.orgId, options.branch, options.force, options.skipChanged);
4608
4608
  }
4609
- else if (sub === 'publish') {
4609
+ else if (sub === 'release' || sub === 'publish') {
4610
4610
  await runAppPublish(options.orgId, options.message, options.branch, options.force, files.slice(1));
4611
4611
  }
4612
4612
  else if (sub === 'list' || !sub) {
@@ -4614,7 +4614,7 @@ async function main() {
4614
4614
  }
4615
4615
  else {
4616
4616
  console.error(chalk_1.default.red(`Unknown app subcommand: ${sub}`));
4617
- console.error(chalk_1.default.gray(`Usage: ${PROGRAM_NAME} app <install|upgrade|publish|list>`));
4617
+ console.error(chalk_1.default.gray(`Usage: ${PROGRAM_NAME} app <install|upgrade|release|list>`));
4618
4618
  process.exit(2);
4619
4619
  }
4620
4620
  process.exit(0);