@agent-nexus/cli 0.1.10 → 0.1.11

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.
Files changed (3) hide show
  1. package/README.md +4 -0
  2. package/dist/index.js +219 -32
  3. package/package.json +2 -2
package/README.md CHANGED
@@ -470,6 +470,7 @@ All commands follow the pattern: `nexus <group> <action> [arguments] [options]`
470
470
  | [`eval`](docs/command-reference.md#nexus-eval) | (subgroups: `session`, `dataset`, `execute`, `judge`, `results`, `formats`, `judges`) | AI task evaluation |
471
471
  | [`ticket`](docs/command-reference.md#nexus-ticket) | `list` `get` `create` `update` `comment` `comments` | Bug and feature tracking |
472
472
  | [`phone-number`](docs/command-reference.md#nexus-phone-number) | `search` `buy` `list` `get` `release` | Phone number management |
473
+ | [`channel`](docs/command-reference.md#nexus-channel) | `setup` `connection list\|create` `whatsapp-sender list\|create\|get` | Channel setup orchestrator |
473
474
  | [`prompt-assistant`](docs/command-reference.md#nexus-prompt-assistant) | `chat` `get-thread` `delete-thread` | AI-assisted prompt writing |
474
475
 
475
476
  ### Utility
@@ -600,6 +601,9 @@ Every CLI command maps to an SDK method. Use the SDK (`@agent-nexus/sdk`) when b
600
601
  | `nexus model list` | `client.models.list()` |
601
602
  | `nexus ticket create --title X ...` | `client.tickets.create({ title: "X", ... })` |
602
603
  | `nexus phone-number list` | `client.phoneNumbers.list()` |
604
+ | `nexus channel setup --type WHATSAPP` | `client.channels.getSetupStatus("WHATSAPP")` |
605
+ | `nexus channel connection create` | `client.channels.createConnection()` |
606
+ | `nexus channel whatsapp-sender create` | `client.channels.createWhatsAppSender({ ... })` |
603
607
 
604
608
  > **Full SDK documentation:** See [@agent-nexus/sdk README](../sdk/README.md)
605
609
 
package/dist/index.js CHANGED
@@ -166,7 +166,7 @@ var require_package = __commonJS({
166
166
  "package.json"(exports2, module2) {
167
167
  module2.exports = {
168
168
  name: "@agent-nexus/cli",
169
- version: "0.1.10",
169
+ version: "0.1.11",
170
170
  description: "Official CLI for the Nexus AI agent platform.",
171
171
  license: "MIT",
172
172
  keywords: [
@@ -3569,7 +3569,13 @@ function openUrl(url) {
3569
3569
  }
3570
3570
 
3571
3571
  // src/commands/channel.ts
3572
+ var import_node_child_process2 = require("child_process");
3572
3573
  init_output();
3574
+ function openUrl2(url) {
3575
+ const platform = process.platform;
3576
+ const cmd = platform === "darwin" ? "open" : platform === "win32" ? "start" : "xdg-open";
3577
+ (0, import_node_child_process2.exec)(`${cmd} ${JSON.stringify(url)}`);
3578
+ }
3573
3579
  function registerChannelCommands(program2) {
3574
3580
  const channel = program2.command("channel").description("Set up deployment channels: connections, phone numbers, WhatsApp senders");
3575
3581
  channel.command("setup").description("Check or auto-provision channel setup prerequisites").requiredOption("--type <type>", "Deployment type (WHATSAPP, TWILIO_SMS, TWILIO_VOICE, EMBED, etc.)").option("--auto", "Auto-provision what is possible (e.g., create messaging connection)").option("--region <region>", "Region for auto-provisioning (us1 or ie1)", "us1").addHelpText(
@@ -3605,6 +3611,28 @@ Examples:
3605
3611
  process.exitCode = handleError(err);
3606
3612
  }
3607
3613
  });
3614
+ channel.command("connect-waba").description("Open browser to connect your WhatsApp Business Account (Meta signup)").addHelpText(
3615
+ "after",
3616
+ `
3617
+ This step requires a browser \u2014 it cannot be done via API.
3618
+ Opens the Nexus dashboard where you can click "Connect with Meta"
3619
+ to link your WhatsApp Business Account.
3620
+
3621
+ Examples:
3622
+ $ nexus channel connect-waba`
3623
+ ).action(async () => {
3624
+ try {
3625
+ const dashboardUrl = process.env.NEXUS_DASHBOARD_URL ?? "https://gpt.nexus";
3626
+ const url = `${dashboardUrl}/app/settings/phone-number`;
3627
+ console.log(`Opening ${color.cyan(url)} ...`);
3628
+ console.log("");
3629
+ console.log('Complete the "Connect with Meta" flow in your browser, then verify:');
3630
+ console.log(` ${color.dim("nexus channel setup --type WHATSAPP")}`);
3631
+ openUrl2(url);
3632
+ } catch (err) {
3633
+ process.exitCode = handleError(err);
3634
+ }
3635
+ });
3608
3636
  const connection = channel.command("connection").description("Manage messaging connections");
3609
3637
  connection.command("list").description("List messaging connections").action(async () => {
3610
3638
  try {
@@ -4877,6 +4905,7 @@ All commands follow the pattern: \`nexus <group> <action> [arguments] [options]\
4877
4905
  | [\`eval\`](docs/command-reference.md#nexus-eval) | (subgroups: \`session\`, \`dataset\`, \`execute\`, \`judge\`, \`results\`, \`formats\`, \`judges\`) | AI task evaluation |
4878
4906
  | [\`ticket\`](docs/command-reference.md#nexus-ticket) | \`list\` \`get\` \`create\` \`update\` \`comment\` \`comments\` | Bug and feature tracking |
4879
4907
  | [\`phone-number\`](docs/command-reference.md#nexus-phone-number) | \`search\` \`buy\` \`list\` \`get\` \`release\` | Phone number management |
4908
+ | [\`channel\`](docs/command-reference.md#nexus-channel) | \`setup\` \`connection list\\|create\` \`whatsapp-sender list\\|create\\|get\` | Channel setup orchestrator |
4880
4909
  | [\`prompt-assistant\`](docs/command-reference.md#nexus-prompt-assistant) | \`chat\` \`get-thread\` \`delete-thread\` | AI-assisted prompt writing |
4881
4910
 
4882
4911
  ### Utility
@@ -5007,6 +5036,9 @@ Every CLI command maps to an SDK method. Use the SDK (\`@agent-nexus/sdk\`) when
5007
5036
  | \`nexus model list\` | \`client.models.list()\` |
5008
5037
  | \`nexus ticket create --title X ...\` | \`client.tickets.create({ title: "X", ... })\` |
5009
5038
  | \`nexus phone-number list\` | \`client.phoneNumbers.list()\` |
5039
+ | \`nexus channel setup --type WHATSAPP\` | \`client.channels.getSetupStatus("WHATSAPP")\` |
5040
+ | \`nexus channel connection create\` | \`client.channels.createConnection()\` |
5041
+ | \`nexus channel whatsapp-sender create\` | \`client.channels.createWhatsAppSender({ ... })\` |
5010
5042
 
5011
5043
  > **Full SDK documentation:** See [@agent-nexus/sdk README](../sdk/README.md)
5012
5044
 
@@ -5904,7 +5936,7 @@ nexus deployment list [options]
5904
5936
  | Option | Description |
5905
5937
  | ------------------ | --------------------------------------------- |
5906
5938
  | \`--agent-id <id>\` | Filter by agent ID |
5907
- | \`--type <type>\` | Filter by type (\`CHAT\`, \`API\`, \`PHONE\`, etc.) |
5939
+ | \`--type <type>\` | Filter by type (\`EMBED\`, \`API\`, \`WHATSAPP\`, \`TWILIO_SMS\`, etc.) |
5908
5940
  | \`--page <number>\` | Page number |
5909
5941
  | \`--limit <number>\` | Items per page |
5910
5942
 
@@ -5943,21 +5975,31 @@ Create a new deployment.
5943
5975
  nexus deployment create [options]
5944
5976
  \`\`\`
5945
5977
 
5946
- | Option | Required | Description |
5947
- | ---------------------- | -------- | ---------------------------------------------------- |
5948
- | \`--agent-id <id>\` | Yes | Agent ID |
5949
- | \`--name <name>\` | Yes | Deployment name |
5950
- | \`--type <type>\` | Yes | Deployment type (\`CHAT\`, \`API\`, \`PHONE\`, etc.) |
5951
- | \`--description <text>\` | No | Deployment description |
5952
- | \`--body <json>\` | No | Request body as JSON, \`.json\` file, or \`-\` for stdin |
5978
+ | Option | Required | Description |
5979
+ | ---------------------- | -------- | --------------------------------------------------------------------------- |
5980
+ | \`--name <name>\` | Yes | Deployment name |
5981
+ | \`--type <type>\` | Yes | Deployment type: \`EMBED\`, \`API\`, \`WHATSAPP\`, \`TWILIO_SMS\`, \`TWILIO_VOICE\`, \`TELEGRAM\`, \`SLACK\`, \`GMAIL\`, \`OUTLOOK\`, \`TEAMS\` |
5982
+ | \`--agent-id <id>\` | No | Agent ID |
5983
+ | \`--description <text>\` | No | Deployment description |
5984
+ | \`--body <json>\` | No | Request body as JSON, \`.json\` file, or \`-\` for stdin |
5985
+
5986
+ **Important:** Channel deployments (WhatsApp, SMS, Voice, etc.) have prerequisites. Run \`nexus channel setup --type <TYPE>\` first to see what's needed.
5953
5987
 
5954
5988
  \`\`\`bash
5955
- nexus deployment create --agent-id agt-123 --name "Website Chat" --type CHAT
5956
- nexus deployment create --agent-id agt-123 --name "Support API" --type API
5957
- nexus deployment create --body '{"agentId":"agt-123","name":"Chat","type":"CHAT"}'
5989
+ # Simple deployments (no prerequisites)
5990
+ nexus deployment create --name "Website Chat" --type EMBED --agent-id agt-123
5991
+ nexus deployment create --name "Support API" --type API --agent-id agt-123
5992
+
5993
+ # Channel deployments (require connection + phone + optional sender)
5994
+ # First check prerequisites:
5995
+ nexus channel setup --type WHATSAPP
5996
+
5997
+ # Then create with connection fields via --body:
5998
+ nexus deployment create --name "WhatsApp Support" --type WHATSAPP --agent-id agt-123 \\
5999
+ --body '{"phoneNumberId":"phn-456","apiKeyConnectionId":"conn-789"}'
5958
6000
  \`\`\`
5959
6001
 
5960
- **SDK equivalent:** \`client.deployments.create({ agentId, name, type, ... })\`
6002
+ **SDK equivalent:** \`client.deployments.create({ name, type, agentId, phoneNumberId, apiKeyConnectionId, ... })\`
5961
6003
 
5962
6004
  ### deployment update
5963
6005
 
@@ -8643,9 +8685,142 @@ nexus model list --search "gpt-4"
8643
8685
 
8644
8686
  ---
8645
8687
 
8688
+ ## nexus channel
8689
+
8690
+ Set up deployment channels: connections, phone numbers, and WhatsApp senders. Use \`nexus channel setup\` to see what's needed before creating any non-EMBED/API deployment.
8691
+
8692
+ ### channel setup
8693
+
8694
+ Check or auto-provision channel setup prerequisites. Returns a step-by-step checklist.
8695
+
8696
+ \`\`\`
8697
+ nexus channel setup [options]
8698
+ \`\`\`
8699
+
8700
+ | Option | Required | Description |
8701
+ | ----------------- | -------- | ---------------------------------------------------------------- |
8702
+ | \`--type <type>\` | Yes | Deployment type (\`WHATSAPP\`, \`TWILIO_SMS\`, \`TWILIO_VOICE\`, etc.) |
8703
+ | \`--auto\` | No | Auto-provision what is possible (e.g., create messaging connection) |
8704
+ | \`--region <region>\` | No | Region for auto-provisioning: \`us1\` or \`ie1\` (default: \`us1\`) |
8705
+
8706
+ \`\`\`bash
8707
+ nexus channel setup --type WHATSAPP
8708
+ nexus channel setup --type WHATSAPP --auto
8709
+ nexus channel setup --type TWILIO_SMS --json
8710
+ \`\`\`
8711
+
8712
+ **SDK equivalent:** \`client.channels.getSetupStatus(type)\` / \`client.channels.autoProvision({ type, region })\`
8713
+
8714
+ ### channel connect-waba
8715
+
8716
+ Open the browser to connect your WhatsApp Business Account via Meta's Embedded Signup. This step **requires a browser** and cannot be done via API.
8717
+
8718
+ \`\`\`
8719
+ nexus channel connect-waba
8720
+ \`\`\`
8721
+
8722
+ Opens \`{NEXUS_DASHBOARD_URL}/app/settings/phone-number\` in your default browser. Complete the "Connect with Meta" flow, then verify with \`nexus channel setup --type WHATSAPP\`.
8723
+
8724
+ \`\`\`bash
8725
+ nexus channel connect-waba
8726
+ \`\`\`
8727
+
8728
+ **SDK equivalent:** N/A (browser-only step)
8729
+
8730
+ ### channel connection list
8731
+
8732
+ List messaging connections for the organization.
8733
+
8734
+ \`\`\`
8735
+ nexus channel connection list
8736
+ \`\`\`
8737
+
8738
+ \`\`\`bash
8739
+ nexus channel connection list --json
8740
+ \`\`\`
8741
+
8742
+ **SDK equivalent:** \`client.channels.listConnections()\`
8743
+
8744
+ ### channel connection create
8745
+
8746
+ Create a messaging connection (max 1 per organization via the API).
8747
+
8748
+ \`\`\`
8749
+ nexus channel connection create [options]
8750
+ \`\`\`
8751
+
8752
+ | Option | Description |
8753
+ | ------------------ | ------------------------------- |
8754
+ | \`--region <region>\` | Region: \`us1\` or \`ie1\` (default: \`us1\`) |
8755
+
8756
+ \`\`\`bash
8757
+ nexus channel connection create
8758
+ nexus channel connection create --region ie1 --json
8759
+ \`\`\`
8760
+
8761
+ **SDK equivalent:** \`client.channels.createConnection({ region })\`
8762
+
8763
+ ### channel whatsapp-sender list
8764
+
8765
+ List WhatsApp senders for the organization.
8766
+
8767
+ \`\`\`
8768
+ nexus channel whatsapp-sender list
8769
+ \`\`\`
8770
+
8771
+ \`\`\`bash
8772
+ nexus channel whatsapp-sender list --json
8773
+ \`\`\`
8774
+
8775
+ **SDK equivalent:** \`client.channels.listWhatsAppSenders()\`
8776
+
8777
+ ### channel whatsapp-sender create
8778
+
8779
+ Create a WhatsApp sender (registers a phone number with WhatsApp Business via Meta).
8780
+
8781
+ \`\`\`
8782
+ nexus channel whatsapp-sender create [options]
8783
+ \`\`\`
8784
+
8785
+ | Option | Required | Description |
8786
+ | -------------------------- | -------- | ----------------------------------------------------- |
8787
+ | \`--connection-id <id>\` | Yes | Messaging connection ID |
8788
+ | \`--phone-number-id <id>\` | Yes | Phone number ID |
8789
+ | \`--sender-name <name>\` | Yes | Display name for the WhatsApp sender |
8790
+ | \`--waba-id <id>\` | No | WhatsApp Business Account ID (reads from connection if omitted) |
8791
+
8792
+ \`\`\`bash
8793
+ nexus channel whatsapp-sender create \\
8794
+ --connection-id conn-123 \\
8795
+ --phone-number-id phn-456 \\
8796
+ --sender-name "My Business"
8797
+ \`\`\`
8798
+
8799
+ **SDK equivalent:** \`client.channels.createWhatsAppSender({ connectionId, phoneNumberId, senderName, wabaId })\`
8800
+
8801
+ ### channel whatsapp-sender get
8802
+
8803
+ Get WhatsApp sender details including status.
8804
+
8805
+ \`\`\`
8806
+ nexus channel whatsapp-sender get <id>
8807
+ \`\`\`
8808
+
8809
+ | Argument | Description |
8810
+ | -------- | ----------- |
8811
+ | \`id\` | Sender ID |
8812
+
8813
+ \`\`\`bash
8814
+ nexus channel whatsapp-sender get sender-123 --json
8815
+ \`\`\`
8816
+
8817
+ **SDK equivalent:** \`client.channels.getWhatsAppSender(id)\`
8818
+
8819
+ ---
8820
+
8646
8821
  ## nexus phone-number
8647
8822
 
8648
- Manage phone numbers for voice deployments.
8823
+ Manage phone numbers for SMS, Voice, and WhatsApp deployments.
8649
8824
 
8650
8825
  ### phone-number search
8651
8826
 
@@ -9718,34 +9893,46 @@ Deploy the same agent to multiple channels and monitor analytics.
9718
9893
  # 1. Create an agent (or use an existing one)
9719
9894
  AGENT_ID="your-agent-id"
9720
9895
 
9721
- # 2. Deploy to web widget
9896
+ # 2. Deploy to web widget (no prerequisites)
9722
9897
  WEB_DEP=$(nexus deployment create \\
9723
9898
  --name "Website Widget" \\
9724
- --type web \\
9899
+ --type EMBED \\
9725
9900
  --agent-id $AGENT_ID \\
9726
9901
  --json | jq -r '.id')
9727
9902
 
9728
- # 3. Deploy to WhatsApp
9903
+ # 3. Deploy to WhatsApp (requires channel setup first!)
9904
+ # Check what's needed:
9905
+ nexus channel setup --type WHATSAPP
9906
+
9907
+ # Auto-provision messaging connection:
9908
+ nexus channel setup --type WHATSAPP --auto
9909
+
9910
+ # Buy a phone number:
9911
+ nexus phone-number search --country US --sms
9912
+ nexus phone-number buy --phone-number "+12025551234" --country US --price 1.15
9913
+
9914
+ # Create WhatsApp sender (register with Meta):
9915
+ CONN_ID=$(nexus channel connection list --json | jq -r '.[0].id')
9916
+ PHONE_ID=$(nexus phone-number list --json | jq -r '.[0].id')
9917
+ nexus channel whatsapp-sender create \\
9918
+ --connection-id $CONN_ID \\
9919
+ --phone-number-id $PHONE_ID \\
9920
+ --sender-name "My Business"
9921
+
9922
+ # Now create the WhatsApp deployment:
9729
9923
  WA_DEP=$(nexus deployment create \\
9730
9924
  --name "WhatsApp Support" \\
9731
- --type whatsapp \\
9732
- --agent-id $AGENT_ID \\
9733
- --json | jq -r '.id')
9734
-
9735
- # 4. Deploy to Slack
9736
- SLACK_DEP=$(nexus deployment create \\
9737
- --name "Slack Bot" \\
9738
- --type slack \\
9925
+ --type WHATSAPP \\
9739
9926
  --agent-id $AGENT_ID \\
9927
+ --body "{\\"phoneNumberId\\":\\"$PHONE_ID\\",\\"apiKeyConnectionId\\":\\"$CONN_ID\\"}" \\
9740
9928
  --json | jq -r '.id')
9741
9929
 
9742
- # 5. Organize deployments in a folder
9930
+ # 4. Organize deployments in a folder
9743
9931
  FOLDER_ID=$(nexus deployment folder create --name "Production" --json | jq -r '.id')
9744
9932
  nexus deployment folder assign --deployment-id $WEB_DEP --folder-id $FOLDER_ID
9745
9933
  nexus deployment folder assign --deployment-id $WA_DEP --folder-id $FOLDER_ID
9746
- nexus deployment folder assign --deployment-id $SLACK_DEP --folder-id $FOLDER_ID
9747
9934
 
9748
- # 6. Get the web widget embed configuration
9935
+ # 5. Get the web widget embed configuration
9749
9936
  nexus deployment embed-config $WEB_DEP
9750
9937
 
9751
9938
  # 7. Customize the widget
@@ -10780,8 +10967,8 @@ Examples:
10780
10967
  ).action(async (id) => {
10781
10968
  try {
10782
10969
  const client = createClient(program2.optsWithGlobals());
10783
- const exec2 = await client.workflowExecutions.get(id);
10784
- printRecord(exec2, [
10970
+ const exec3 = await client.workflowExecutions.get(id);
10971
+ printRecord(exec3, [
10785
10972
  { key: "id", label: "ID" },
10786
10973
  { key: "workflowId", label: "Workflow" },
10787
10974
  { key: "status", label: "Status" },
@@ -11844,7 +12031,7 @@ Examples:
11844
12031
  }
11845
12032
 
11846
12033
  // src/commands/upgrade.ts
11847
- var import_node_child_process2 = require("child_process");
12034
+ var import_node_child_process3 = require("child_process");
11848
12035
  init_output();
11849
12036
 
11850
12037
  // src/util/package-manager.ts
@@ -12009,7 +12196,7 @@ Examples:
12009
12196
  `);
12010
12197
  try {
12011
12198
  const installCmd = getGlobalInstallCommand(PACKAGE_NAME2);
12012
- (0, import_node_child_process2.execSync)(installCmd, { stdio: "inherit" });
12199
+ (0, import_node_child_process3.execSync)(installCmd, { stdio: "inherit" });
12013
12200
  printSuccess(`Successfully upgraded to ${latest}.`, { from: currentVersion, to: latest });
12014
12201
  } catch {
12015
12202
  const fallbackCmd = getGlobalInstallCommand(PACKAGE_NAME2);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-nexus/cli",
3
- "version": "0.1.10",
3
+ "version": "0.1.11",
4
4
  "description": "Official CLI for the Nexus AI agent platform.",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -35,7 +35,7 @@
35
35
  "@types/node": "24.6.2",
36
36
  "tsup": "^8.5.0",
37
37
  "typescript": "^5.8.3",
38
- "@agent-nexus/sdk": "0.1.9"
38
+ "@agent-nexus/sdk": "0.1.10"
39
39
  },
40
40
  "scripts": {
41
41
  "gen:docs": "tsx scripts/bundle-docs.ts",