@startanaicompany/crm 2.3.1 → 2.3.2

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 (2) hide show
  1. package/index.js +11 -1
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -298,6 +298,8 @@ leadsCmd
298
298
  .option('--company <company>', 'Company name')
299
299
  .option('--status <status>', 'Status: new|contacted|qualified|unresponsive|converted|lost', 'new')
300
300
  .option('--source <source>', 'Source: api|import|referral', 'api')
301
+ .option('--deal-value <amount>', 'Deal value (numeric)')
302
+ .option('--pipeline-stage <stage>', 'Pipeline stage: new|prospecting|discovery|qualified|demo_scheduled|demo_completed|proposal_sent|negotiation|contract_sent|closed_won|closed_lost|no_decision|dormant')
301
303
  .option('--notes <notes>', 'Notes')
302
304
  .option('--assigned-to <assignedTo>', 'Assigned to')
303
305
  .option('--tag <tag>', 'Tag (repeatable)', (v, prev) => prev.concat([v]), [])
@@ -315,6 +317,8 @@ leadsCmd
315
317
  ...(opts.company && { company: opts.company }),
316
318
  status: opts.status,
317
319
  source: opts.source,
320
+ ...(opts.dealValue !== undefined && { deal_value: parseFloat(opts.dealValue) }),
321
+ ...(opts.pipelineStage && { pipeline_stage: opts.pipelineStage }),
318
322
  ...(opts.notes && { notes: opts.notes }),
319
323
  ...(opts.assignedTo && { assigned_to: opts.assignedTo }),
320
324
  ...(opts.tag.length > 0 && { tags: opts.tag }),
@@ -394,6 +398,7 @@ leadsCmd
394
398
  .option('--company <company>', 'New company')
395
399
  .option('--status <status>', 'New status')
396
400
  .option('--source <source>', 'New source')
401
+ .option('--deal-value <amount>', 'Deal value (numeric)')
397
402
  .option('--notes <notes>', 'New notes')
398
403
  .option('--assigned-to <assignedTo>', 'New assigned-to')
399
404
  .option('--tag <tag>', 'Replace tags (repeatable)', (v, prev) => prev.concat([v]), [])
@@ -409,6 +414,7 @@ leadsCmd
409
414
  ...(opts.company !== undefined && { company: opts.company }),
410
415
  ...(opts.status && { status: opts.status }),
411
416
  ...(opts.source && { source: opts.source }),
417
+ ...(opts.dealValue !== undefined && { deal_value: parseFloat(opts.dealValue) }),
412
418
  ...(opts.notes !== undefined && { notes: opts.notes }),
413
419
  ...(opts.assignedTo !== undefined && { assigned_to: opts.assignedTo }),
414
420
  ...(opts.tag.length > 0 && { tags: opts.tag }),
@@ -684,6 +690,7 @@ contactsCmd
684
690
  .option('--phone <phone>', 'Phone number')
685
691
  .option('--company <company>', 'Company name')
686
692
  .option('--title <title>', 'Job title')
693
+ .option('--role <role>', 'Role: champion|economic_buyer|technical_buyer|gatekeeper|influencer|end_user')
687
694
  .option('--tags <tags>', 'Comma-separated tags')
688
695
  .option('--notes <notes>', 'Notes')
689
696
  .action(async (id, opts) => {
@@ -697,6 +704,7 @@ contactsCmd
697
704
  if (opts.phone !== undefined) body.phone = opts.phone;
698
705
  if (opts.company !== undefined) body.company = opts.company;
699
706
  if (opts.title !== undefined) body.title = opts.title;
707
+ if (opts.role !== undefined) body.role = opts.role;
700
708
  if (opts.tags !== undefined) body.tags = opts.tags.split(',').map(t => t.trim());
701
709
  if (opts.notes !== undefined) body.notes = opts.notes;
702
710
  const res = await client.patch(`/contacts/${id}`, body);
@@ -887,7 +895,7 @@ leadsStageCmd
887
895
 
888
896
  leadsStageCmd
889
897
  .command('set <lead-id> <stage>')
890
- .description('Set pipeline stage: new | qualified | proposal | negotiation | closed_won | closed_lost')
898
+ .description('Set pipeline stage: new|prospecting|discovery|qualified|demo_scheduled|demo_completed|proposal_sent|negotiation|contract_sent|closed_won|closed_lost|no_decision|dormant')
891
899
  .option('--note <note>', 'Optional note about why stage changed')
892
900
  .action(async (leadId, stage, opts) => {
893
901
  const globalOpts = program.opts();
@@ -1012,6 +1020,7 @@ meetingsCmd
1012
1020
  .option('--video-link <url>', 'Video link')
1013
1021
  .option('--notes <notes>', 'Notes')
1014
1022
  .option('--outcome <outcome>', 'scheduled | completed | cancelled | no_show')
1023
+ .option('--sentiment <sentiment>', 'positive | neutral | negative | unknown')
1015
1024
  .action(async (id, opts) => {
1016
1025
  const globalOpts = program.opts();
1017
1026
  const client = getClient(globalOpts);
@@ -1024,6 +1033,7 @@ meetingsCmd
1024
1033
  if (opts.videoLink !== undefined) body.video_link = opts.videoLink;
1025
1034
  if (opts.notes !== undefined) body.notes = opts.notes;
1026
1035
  if (opts.outcome !== undefined) body.outcome = opts.outcome;
1036
+ if (opts.sentiment !== undefined) body.sentiment = opts.sentiment;
1027
1037
  const res = await client.patch(`/meetings/${id}`, body);
1028
1038
  printJSON(res.data);
1029
1039
  } catch (err) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@startanaicompany/crm",
3
- "version": "2.3.1",
3
+ "version": "2.3.2",
4
4
  "description": "AI-first CRM CLI \u2014 manage leads and API keys from the terminal",
5
5
  "main": "index.js",
6
6
  "bin": {