@lotics/cli 0.83.0 → 0.86.0

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.
package/dist/src/cli.js CHANGED
@@ -29948,18 +29948,32 @@ var LoticsClient = class {
29948
29948
  /**
29949
29949
  * Preview a release — the dry run behind `lotics app release`. Runs the
29950
29950
  * binding-aware extract of the origin (aliases stable through the app's current
29951
- * binding) and reports the next version number, the new + changed aliases, and
29952
- * any extract findings (an `error` blocks the apply). No writes. Admin,
29951
+ * binding) and reports the next version number, the new + changed aliases, the
29952
+ * bundled-knowledge delta, and any extract findings (an `error` blocks the
29953
+ * apply). An optional `knowledge` declaration (from the pulled app manifest)
29954
+ * re-declares the bundle set — added/dropped/changed docs surface in the delta;
29955
+ * omitted, the current corpus is reconstructed from the pin. No writes. Admin,
29953
29956
  * owning-org only.
29954
29957
  */
29955
- async previewPackageRelease(app_id) {
29956
- return this.request("GET", `/v1/apps/${encodeURIComponent(app_id)}/package-release`);
29958
+ async previewPackageRelease(app_id, opts = {}) {
29959
+ const params = new URLSearchParams();
29960
+ if (opts.knowledge !== void 0 && opts.knowledge.length > 0) {
29961
+ params.set("knowledge", JSON.stringify(opts.knowledge));
29962
+ }
29963
+ const query = params.toString();
29964
+ return this.request(
29965
+ "GET",
29966
+ `/v1/apps/${encodeURIComponent(app_id)}/package-release${query ? `?${query}` : ""}`
29967
+ );
29957
29968
  }
29958
29969
  /**
29959
29970
  * Release — snapshot the origin app into the next registry version. The server
29960
29971
  * binding-aware-extracts it, repackages its deployed source + dist as the
29961
29972
  * bundle, publishes the next `release`-channel version with the changelog, and
29962
- * re-pins the origin. Error findings from extract surface as a 409. Admin,
29973
+ * re-pins the origin. An optional `knowledge` declaration re-declares the
29974
+ * bundled-knowledge set (added/dropped/re-snapshotted docs; omitted preserves
29975
+ * the current corpus). Error findings from extract surface as a 409; a
29976
+ * missing/archived declared doc is a 400, a foreign-package doc a 409. Admin,
29963
29977
  * owning-org only. Backs `lotics app release --yes`.
29964
29978
  */
29965
29979
  async releasePackage(app_id, body) {
@@ -32085,7 +32099,7 @@ function inputDeclToTsType(decl) {
32085
32099
  }
32086
32100
  return null;
32087
32101
  }).filter((v) => v !== null);
32088
- const inner = literals.length > 0 ? literals.join(" | ") : "string";
32102
+ const inner = literals.length > 0 ? `${literals.join(" | ")} | (string & {})` : "string";
32089
32103
  return decl.multi === true ? `ReadonlyArray<${inner}>` : inner;
32090
32104
  }
32091
32105
  case "date_range":
@@ -32137,7 +32151,7 @@ function outputDeclToTsType(decl) {
32137
32151
  const literals = options.map(
32138
32152
  (o) => o !== null && typeof o === "object" && "value" in o && typeof o.value === "string" ? JSON.stringify(o.value) : null
32139
32153
  ).filter((v) => v !== null);
32140
- const inner = literals.length > 0 ? literals.join(" | ") : "string";
32154
+ const inner = literals.length > 0 ? `${literals.join(" | ")} | (string & {})` : "string";
32141
32155
  return decl.multi === true ? `ReadonlyArray<${inner}>` : inner;
32142
32156
  }
32143
32157
  case "object": {
@@ -50215,7 +50229,8 @@ async function packageDoctor(client, args) {
50215
50229
  }
50216
50230
  if (health.modified.length === 0) {
50217
50231
  console.error(
50218
- health.is_origin ? " Package artifacts: no changes since the last release." : " Package artifacts: pristine \u2014 no local edits an upgrade would revert."
50232
+ health.is_origin ? ` Package artifacts: no changes since the last release.
50233
+ (schema additions aren't fingerprinted \u2014 preview them with: lotics app release ${app_id})` : " Package artifacts: pristine \u2014 no local edits an upgrade would revert."
50219
50234
  );
50220
50235
  } else if (health.is_origin) {
50221
50236
  console.error(
@@ -50410,6 +50425,56 @@ function formatTemplateResolveHint(entry) {
50410
50425
  const note = entry.baseline_unknown ? " (can't verify the local edit \u2014 older package version; revert overwrites, keep retains)" : " (a local edit \u2014 revert overwrites it with the package's version; keep retains it)";
50411
50426
  return ` --resolve template.${entry.alias}=revert|keep${note}`;
50412
50427
  }
50428
+ async function resolveWorkspaceContentInstallation(client, package_id) {
50429
+ const workspaceId = client.getWorkspaceId();
50430
+ if (!workspaceId) {
50431
+ throw new Error(
50432
+ "No workspace selected. Pass --workspace <ws> (or select one) to operate on its content installation."
50433
+ );
50434
+ }
50435
+ const installations = await client.listContentInstallations(workspaceId);
50436
+ const match = installations.find((inst) => inst.package_id === package_id);
50437
+ if (!match) {
50438
+ throw new Error(
50439
+ `Package ${package_id} is not installed in this workspace \u2014 install it first: lotics install ${package_id}`
50440
+ );
50441
+ }
50442
+ return match;
50443
+ }
50444
+ async function redirectContentPciForm(client, pci_id, verb) {
50445
+ console.error(
50446
+ `Content installations are addressed by their PACKAGE id now \u2014 ${pci_id} is a server-internal resource id.`
50447
+ );
50448
+ const workspaceId = client.getWorkspaceId();
50449
+ const match = workspaceId ? (await client.listContentInstallations(workspaceId)).find((inst) => inst.id === pci_id) : void 0;
50450
+ if (match) {
50451
+ console.error(` Run: lotics ${verb} ${match.package_id}`);
50452
+ } else {
50453
+ console.error(" Find the package id: lotics package list-content");
50454
+ console.error(` Then run: lotics ${verb} <package_id>`);
50455
+ }
50456
+ process.exit(1);
50457
+ }
50458
+ async function packageUpgradeByPackageId(client, args) {
50459
+ const pkg2 = await client.getPackage(args.package_id);
50460
+ if (pkg2.kind === "content") {
50461
+ const installation = await resolveWorkspaceContentInstallation(client, args.package_id);
50462
+ await packageUpgradeKnowledge(client, {
50463
+ installation_id: installation.id,
50464
+ package_id: pkg2.id,
50465
+ package_name: pkg2.name,
50466
+ version: args.version,
50467
+ resolve: args.resolve,
50468
+ bind_to: parseBindToFlags(args.bindTo),
50469
+ applyAll: args.applyAll
50470
+ });
50471
+ return;
50472
+ }
50473
+ await packageFleetUpgrade(client, {
50474
+ package_id: args.package_id,
50475
+ ...args.version !== void 0 ? { version: args.version } : {}
50476
+ });
50477
+ }
50413
50478
  async function packageUpgradeKnowledge(client, args) {
50414
50479
  const preview = await client.previewContentInstallationUpgrade(args.installation_id, {
50415
50480
  ...args.version !== void 0 ? { version: args.version } : {}
@@ -50422,7 +50487,7 @@ async function packageUpgradeKnowledge(client, args) {
50422
50487
  ...args.version !== void 0 ? { version: args.version } : {},
50423
50488
  resolutions: resolutions2
50424
50489
  });
50425
- console.error(`Upgraded ${args.installation_id} \u2192 v${updated.package_version}.`);
50490
+ console.error(`Upgraded ${args.package_name} (${args.package_id}) \u2192 v${updated.package_version}.`);
50426
50491
  };
50427
50492
  if (preview.entries.length === 0 && preview.templates.length === 0) {
50428
50493
  if (preview.to_version === preview.from_version) {
@@ -50494,8 +50559,8 @@ function warnMissingExpectedDocs(missing) {
50494
50559
  }
50495
50560
  async function packageInstall(client, args) {
50496
50561
  const pkg2 = await client.getPackage(args.package_id);
50497
- const kindLabel = pkg2.kind === "content" ? "content package" : "package";
50498
- console.error(`Installing ${pkg2.name} \u2014 ${trustBadge(pkg2)} (${kindLabel})...`);
50562
+ const kindSuffix = pkg2.kind === "content" ? " (content \u2014 docs/templates, no app)" : "";
50563
+ console.error(`Installing ${pkg2.name} \u2014 ${trustBadge(pkg2)}${kindSuffix}...`);
50499
50564
  const result = await client.installPackage(args.package_id, {
50500
50565
  ...args.version !== void 0 ? { version: args.version } : {},
50501
50566
  ...args.bind_to && Object.keys(args.bind_to).length > 0 ? { bind_to: args.bind_to } : {},
@@ -50506,7 +50571,7 @@ async function packageInstall(client, args) {
50506
50571
  const docs = installation.binding.knowledge;
50507
50572
  const templates = installation.binding.templates;
50508
50573
  console.error(
50509
- `Installed ${pkg2.name} v${installation.package_version} \u2192 content installation ${installation.id} (workspace ${installation.workspace_id}).`
50574
+ `Installed ${pkg2.name} v${installation.package_version} (workspace ${installation.workspace_id}).`
50510
50575
  );
50511
50576
  const docAliases = Object.keys(docs);
50512
50577
  if (docAliases.length > 0) {
@@ -50521,8 +50586,8 @@ async function packageInstall(client, args) {
50521
50586
  );
50522
50587
  }
50523
50588
  warnMissingExpectedDocs(warnings.missing_expected_docs);
50524
- console.error(` Upgrade later: lotics upgrade ${installation.id}`);
50525
- console.error(` Uninstall: lotics uninstall ${installation.id} [--keep-content]`);
50589
+ console.error(` Upgrade later: lotics upgrade ${args.package_id}`);
50590
+ console.error(` Uninstall: lotics uninstall ${args.package_id} [--keep-content]`);
50526
50591
  return;
50527
50592
  }
50528
50593
  const { app, knowledge_warnings } = result;
@@ -50535,22 +50600,29 @@ async function packageInstall(client, args) {
50535
50600
  console.error(` Health / uninstall: lotics package doctor ${app.id} \xB7 lotics uninstall ${app.id} [--archive-tables]`);
50536
50601
  }
50537
50602
  async function packageUninstall(client, args) {
50538
- if (args.id.startsWith("pci_")) {
50603
+ if (args.id.startsWith("apg_")) {
50539
50604
  if (args.archive_tables) {
50540
50605
  throw new Error(
50541
- "--archive-tables applies only to an app installation (<app_id>). A content installation (pci_) has no scaffolded tables \u2014 use --keep-content to retain its docs/templates."
50606
+ "--archive-tables applies only to an app installation (<app_id>). A content package has no scaffolded tables \u2014 use --keep-content to retain its docs/templates."
50542
50607
  );
50543
50608
  }
50544
- const result2 = await client.uninstallContentPackage(args.id, {
50609
+ const pkg2 = await client.getPackage(args.id);
50610
+ if (pkg2.kind !== "content") {
50611
+ throw new Error(
50612
+ `Package ${args.id} is an app package \u2014 uninstall an app installation by its app id: lotics uninstall <app_id>.`
50613
+ );
50614
+ }
50615
+ const installation = await resolveWorkspaceContentInstallation(client, args.id);
50616
+ const result2 = await client.uninstallContentPackage(installation.id, {
50545
50617
  keep_content: args.keep_content
50546
50618
  });
50547
50619
  if (args.keep_content) {
50548
50620
  console.error(
50549
- `Uninstalled content installation ${result2.installation_id} \u2014 its docs and templates were kept as ordinary workspace content.`
50621
+ `Uninstalled ${pkg2.name} (${pkg2.id}) \u2014 its docs and templates were kept as ordinary workspace content.`
50550
50622
  );
50551
50623
  } else {
50552
50624
  console.error(
50553
- `Uninstalled content installation ${result2.installation_id} \u2014 archived ${result2.archived_doc_ids.length} doc(s) and ${result2.archived_template_ids.length} template(s).`
50625
+ `Uninstalled ${pkg2.name} (${pkg2.id}) \u2014 archived ${result2.archived_doc_ids.length} doc(s) and ${result2.archived_template_ids.length} template(s).`
50554
50626
  );
50555
50627
  for (const docId of result2.archived_doc_ids) console.error(` ${docId}`);
50556
50628
  for (const templateId of result2.archived_template_ids) console.error(` ${templateId}`);
@@ -50559,7 +50631,7 @@ async function packageUninstall(client, args) {
50559
50631
  }
50560
50632
  if (args.keep_content) {
50561
50633
  throw new Error(
50562
- "--keep-content applies only to a standalone content installation (pci_). An app installation (<app_id>) uses --archive-tables to also archive its scaffolded tables."
50634
+ "--keep-content applies only to a content package (apg_). An app installation (<app_id>) uses --archive-tables to also archive its scaffolded tables."
50563
50635
  );
50564
50636
  }
50565
50637
  const app = await client.getApp(args.id);
@@ -50603,7 +50675,7 @@ async function packageListContent(client) {
50603
50675
  const updateAvailable = inst.package_registry?.update_available ?? false;
50604
50676
  const versionLabel = latest !== void 0 && latest !== inst.package_version ? `v${inst.package_version} \u2192 latest v${latest}` : `v${inst.package_version}`;
50605
50677
  console.error(
50606
- ` ${inst.id} ${name} ${versionLabel}` + (updateAvailable ? " \u2192 update available" : "")
50678
+ ` ${inst.package_id} ${name} ${versionLabel}` + (updateAvailable ? " \u2192 update available" : "")
50607
50679
  );
50608
50680
  }
50609
50681
  }
@@ -50765,18 +50837,18 @@ Re-run with --yes to publish v1:`);
50765
50837
  console.error(` lotics app release ${appId} -m "<what changed>"`);
50766
50838
  console.error(` Install it elsewhere: lotics install ${result.package_id}`);
50767
50839
  }
50768
- function resolveOriginAppId(projectDir, explicit) {
50769
- if (explicit !== void 0 && explicit !== ".") return explicit;
50770
- const local = readLocalAppManifest(projectDir);
50771
- if (local?.app_id) return local.app_id;
50772
- throw new Error(
50773
- "No app id. Run this from a pulled app project (lotics app pull <app_id>), or pass an app id explicitly."
50774
- );
50775
- }
50776
50840
  async function appRelease(client, args) {
50777
50841
  const projectDir = path6.resolve(args.projectDir ?? process.cwd());
50778
- const appId = resolveOriginAppId(projectDir, args.app_id);
50779
- const preview = await client.previewPackageRelease(appId);
50842
+ const local = readLocalAppManifest(projectDir);
50843
+ const explicit = args.app_id !== void 0 && args.app_id !== "." ? args.app_id : void 0;
50844
+ const appId = explicit ?? local?.app_id ?? null;
50845
+ if (appId === null) {
50846
+ throw new Error(
50847
+ "No app id. Run this from a pulled app project (lotics app pull <app_id>), or pass an app id explicitly."
50848
+ );
50849
+ }
50850
+ const knowledge = local && local.app_id === appId && local.knowledge.length > 0 ? local.knowledge : void 0;
50851
+ const preview = await client.previewPackageRelease(appId, { knowledge });
50780
50852
  const { lines, hasError } = formatExtractReport(preview.findings);
50781
50853
  console.error(`Release preview \u2014 ${appId} \u2192 ${preview.package_id} v${preview.version}:`);
50782
50854
  if (preview.added_aliases.length > 0) {
@@ -50785,7 +50857,16 @@ async function appRelease(client, args) {
50785
50857
  if (preview.changed_artifacts.length > 0) {
50786
50858
  console.error(` Changed (${preview.changed_artifacts.length}): ${preview.changed_artifacts.join(", ")}`);
50787
50859
  }
50788
- if (preview.added_aliases.length === 0 && preview.changed_artifacts.length === 0) {
50860
+ const k = preview.knowledge ?? { added: [], removed: [], changed: [] };
50861
+ if (k.added.length > 0 || k.removed.length > 0 || k.changed.length > 0) {
50862
+ const parts = [
50863
+ k.added.length > 0 ? `+${k.added.join(", ")}` : null,
50864
+ k.removed.length > 0 ? `dropped ${k.removed.join(", ")}` : null,
50865
+ k.changed.length > 0 ? `changed ${k.changed.join(", ")}` : null
50866
+ ].filter((p) => p !== null);
50867
+ console.error(` Knowledge: ${parts.join("; ")}`);
50868
+ }
50869
+ if (preview.added_aliases.length === 0 && preview.changed_artifacts.length === 0 && k.added.length === 0 && k.removed.length === 0 && k.changed.length === 0) {
50789
50870
  console.error(" No contract changes since the current version (a fresh code/dist snapshot still ships).");
50790
50871
  }
50791
50872
  if (lines.length > 0) {
@@ -50804,7 +50885,7 @@ Re-run with --yes to publish v${preview.version}:`);
50804
50885
  process.exitCode = 1;
50805
50886
  return;
50806
50887
  }
50807
- const result = await client.releasePackage(appId, { changelog: args.changelog });
50888
+ const result = await client.releasePackage(appId, { changelog: args.changelog, knowledge });
50808
50889
  console.error(`Released ${result.package_id} v${result.version}.`);
50809
50890
  console.error(` The origin was re-pinned to v${result.version} \u2014 verify: lotics package doctor ${appId}`);
50810
50891
  }
@@ -67712,18 +67793,19 @@ COMMANDS
67712
67793
  Install a package (app: scaffolds/deploys/materializes,
67713
67794
  --config sets its knobs; content: installs the doc corpus,
67714
67795
  --bind-to consents to adopt a same-named doc on a collision)
67715
- lotics uninstall <app_id|pci_id> [--archive-tables] [--keep-content]
67796
+ lotics uninstall <app_id|package_id> [--archive-tables] [--keep-content]
67716
67797
  Uninstall \u2014 dispatched by id. App (app_id): archives
67717
67798
  artifacts (+ --archive-tables also archives scaffolded
67718
- tables). Content (pci_): archives its package-bound docs
67719
- unless --keep-content
67720
- lotics upgrade <app_id|pci_id|package_id> [--version N] [--resolve <key>=... ] [--bind-to ...] [--apply-all]
67799
+ tables). Content package (apg_): archives its package-bound
67800
+ docs unless --keep-content
67801
+ lotics upgrade <app_id|package_id> [--version N] [--resolve <key>=... ] [--bind-to ...] [--apply-all]
67721
67802
  Preview-then-apply an upgrade, dispatched by id. App
67722
67803
  (app_id): refuses while any drift/modified/bundled-knowledge
67723
- finding lacks a --resolve. Content (pci_): --resolve
67724
- <alias>=apply|keep|archive|recreate|unbind. Package (apg_):
67725
- FLEET \u2014 every installation across your org (clean apply,
67726
- findings skip). --apply-all accepts the package's version
67804
+ finding lacks a --resolve. Package (apg_): a CONTENT package
67805
+ upgrades THIS workspace's install (--resolve
67806
+ <alias>=apply|keep|archive|recreate|unbind); an APP package
67807
+ FLEET-upgrades every installation across your org (clean
67808
+ apply, findings skip). --apply-all accepts the package's version
67727
67809
  lotics package doctor [app_id] Installation health: version pin vs latest, binding
67728
67810
  drift, locally modified core, knowledge drift/edits
67729
67811
  (exit 1 on findings)
@@ -67733,7 +67815,8 @@ COMMANDS
67733
67815
  (re-deploys the pinned source as a bespoke app)
67734
67816
  lotics package show <package_id> Registry metadata + version history
67735
67817
  lotics package list-content List the workspace's content installations
67736
- (standalone content installs) \u2014 source for a pci_ id
67818
+ (standalone content installs) \u2014 each row leads with
67819
+ the package id for upgrade/uninstall
67737
67820
  lotics package yank <package_id> <version> [--undo]
67738
67821
  Refuse new installs/upgrades of a broken published
67739
67822
  version (pinned installations keep running)
@@ -68250,8 +68333,8 @@ async function main() {
68250
68333
  console.error("Usage (low-traffic consumer / registry ops \u2014 author verbs live on `lotics app`):");
68251
68334
  console.error(" The high-traffic consumer verbs are top-level:");
68252
68335
  console.error(" lotics install <package_id> [--version N] [--bind-to <alias>=<kdc_id>] [--config key=value ...] Install a package (app or content)");
68253
- console.error(" lotics uninstall <app_id|pci_id> [--archive-tables] [--keep-content] Uninstall \u2014 dispatched by id (app vs content)");
68254
- console.error(" lotics upgrade <app_id|pci_id|package_id> [--version N] [--resolve <key>=... ] [--bind-to ...] [--apply-all] Upgrade \u2014 app / content / whole fleet (apg_)");
68336
+ console.error(" lotics uninstall <app_id|package_id> [--archive-tables] [--keep-content] Uninstall \u2014 dispatched by id (app vs content)");
68337
+ console.error(" lotics upgrade <app_id|package_id> [--version N] [--resolve <key>=... ] [--bind-to ...] [--apply-all] Upgrade \u2014 app install / content install / whole app fleet (apg_)");
68255
68338
  console.error(" lotics package doctor [app_id] Health: version pin vs latest + binding/knowledge drift");
68256
68339
  console.error(" lotics package config <app_id> [--set key=value ...] Show or edit an installation's config knobs");
68257
68340
  console.error(" lotics package eject <app_id> Sever an installation's package link");
@@ -68429,12 +68512,16 @@ Available workspaces:`);
68429
68512
  if (command === "uninstall") {
68430
68513
  const id = subcommand;
68431
68514
  if (!id) {
68432
- console.error("Usage: lotics uninstall <app_id|pci_id> [--archive-tables] [--keep-content]");
68515
+ console.error("Usage: lotics uninstall <app_id|package_id> [--archive-tables] [--keep-content]");
68433
68516
  console.error(
68434
- "Dispatched by id: an app installation (app_id; --archive-tables to also archive its scaffolded tables) or a standalone content installation (pci_ id from `lotics install` / lotics package list-content; --keep-content to retain its docs)."
68517
+ "Dispatched by id: an app installation (app_id; --archive-tables to also archive its scaffolded tables) or a content package (apg_ id from `lotics install` / lotics package list-content; --keep-content to retain its docs)."
68435
68518
  );
68436
68519
  process.exit(1);
68437
68520
  }
68521
+ if (id.startsWith("pci_")) {
68522
+ await redirectContentPciForm(client, id, "uninstall");
68523
+ return;
68524
+ }
68438
68525
  await packageUninstall(client, {
68439
68526
  id,
68440
68527
  keep_content: flags.keepContent,
@@ -68446,10 +68533,10 @@ Available workspaces:`);
68446
68533
  const target = subcommand;
68447
68534
  if (!target) {
68448
68535
  console.error(
68449
- "Usage: lotics upgrade <app_id | pci_id | package_id> [--version N] [--resolve <key>=... ...] [--bind-to ...] [--apply-all]"
68536
+ "Usage: lotics upgrade <app_id | package_id> [--version N] [--resolve <key>=... ...] [--bind-to ...] [--apply-all]"
68450
68537
  );
68451
68538
  console.error(
68452
- "Dispatched by id: an app installation (app_id), a standalone content installation (pci_ id), or a package id (apg_ \u2014 fleet-upgrades every installation across your org)."
68539
+ "Dispatched by id: an app installation (app_id), or a package id (apg_) \u2014 a CONTENT package upgrades this workspace's install; an APP package fleet-upgrades every installation across your org."
68453
68540
  );
68454
68541
  process.exit(1);
68455
68542
  }
@@ -68461,16 +68548,16 @@ Available workspaces:`);
68461
68548
  process.exit(1);
68462
68549
  }
68463
68550
  }
68464
- if (target.startsWith("apg_")) {
68465
- await packageFleetUpgrade(client, { package_id: target, version: version2 });
68551
+ if (target.startsWith("pci_")) {
68552
+ await redirectContentPciForm(client, target, "upgrade");
68466
68553
  return;
68467
68554
  }
68468
- if (target.startsWith("pci_")) {
68469
- await packageUpgradeKnowledge(client, {
68470
- installation_id: target,
68555
+ if (target.startsWith("apg_")) {
68556
+ await packageUpgradeByPackageId(client, {
68557
+ package_id: target,
68471
68558
  version: version2,
68472
68559
  resolve: flags.resolve,
68473
- bind_to: parseBindToFlags(flags.bindTo),
68560
+ bindTo: flags.bindTo,
68474
68561
  applyAll: flags.applyAll
68475
68562
  });
68476
68563
  return;
@@ -68541,8 +68628,8 @@ Available workspaces:`);
68541
68628
  }
68542
68629
  const movedVerbs = {
68543
68630
  install: "lotics install <package_id>",
68544
- uninstall: "lotics uninstall <app_id|pci_id>",
68545
- upgrade: "lotics upgrade <app_id|pci_id|package_id>",
68631
+ uninstall: "lotics uninstall <app_id|package_id>",
68632
+ upgrade: "lotics upgrade <app_id|package_id>",
68546
68633
  "fleet-upgrade": "lotics upgrade <package_id>"
68547
68634
  };
68548
68635
  if (subcommand !== void 0 && subcommand in movedVerbs) {
@@ -68829,8 +68916,6 @@ ${JSON.stringify(info.input_schema, null, 2)}`);
68829
68916
  console.log(JSON.stringify({ error: result.error }, null, 2));
68830
68917
  } else {
68831
68918
  console.error(result.error);
68832
- console.error(`
68833
- Hint: run "lotics tools ${toolName}" to see the expected input schema.`);
68834
68919
  }
68835
68920
  process.exit(1);
68836
68921
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lotics/cli",
3
- "version": "0.83.0",
3
+ "version": "0.86.0",
4
4
  "description": "Lotics SDK and CLI for AI agents",
5
5
  "type": "module",
6
6
  "bin": {