@linkedapi/linkedin-cli 1.1.0 → 1.1.1

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.
@@ -0,0 +1,17 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class InboxGet extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ since: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
6
+ type: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
7
+ 'thread-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
9
+ fields: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ 'no-color': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ account: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ };
14
+ static examples: string[];
15
+ run(): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/commands/inbox/get.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAAW;IAC/C,OAAgB,WAAW,SAAoE;IAE/F,OAAgB,KAAK;;;;;;;;;MAYnB;IAEF,OAAgB,QAAQ,WAGtB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA2BlC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const _base_command_1 = require("../../base-command");
5
+ const formatter_1 = require("../../core/output/formatter");
6
+ class InboxGet extends _base_command_1.BaseCommand {
7
+ static description = 'Get messages from the monitored inbox across all conversations';
8
+ static flags = {
9
+ ..._base_command_1.BaseCommand.baseFlags,
10
+ since: core_1.Flags.string({
11
+ description: 'Retrieve messages after ISO timestamp',
12
+ }),
13
+ type: core_1.Flags.string({
14
+ description: 'Filter by inbox type',
15
+ options: ['st', 'nv'],
16
+ }),
17
+ 'thread-id': core_1.Flags.string({
18
+ description: 'Restrict to a single conversation thread',
19
+ }),
20
+ };
21
+ static examples = [
22
+ '<%= config.bin %> inbox get',
23
+ '<%= config.bin %> inbox get --since 2024-01-15T10:30:00Z --type nv',
24
+ ];
25
+ async run() {
26
+ const { flags } = await this.parse(InboxGet);
27
+ const client = await this.buildAuthenticatedClient();
28
+ try {
29
+ if (!flags.quiet) {
30
+ process.stderr.write('Fetching inbox...\n');
31
+ }
32
+ const result = await client.pollInbox({
33
+ since: flags.since,
34
+ type: flags.type,
35
+ threadId: flags['thread-id'],
36
+ });
37
+ (0, formatter_1.formatOutput)({
38
+ data: result.data,
39
+ errors: result.errors,
40
+ isJson: flags.json,
41
+ fields: flags.fields,
42
+ isQuiet: flags.quiet,
43
+ });
44
+ }
45
+ catch (error) {
46
+ this.handleError(error);
47
+ }
48
+ }
49
+ }
50
+ exports.default = InboxGet;
51
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/inbox/get.ts"],"names":[],"mappings":";;AAAA,sCAAoC;AAEpC,iDAA4C;AAC5C,sDAAsD;AAEtD,MAAqB,QAAS,SAAQ,2BAAW;IAC/C,MAAM,CAAU,WAAW,GAAG,gEAAgE,CAAC;IAE/F,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,2BAAW,CAAC,SAAS;QACxB,KAAK,EAAE,YAAK,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,uCAAuC;SACrD,CAAC;QACF,IAAI,EAAE,YAAK,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE,sBAAsB;YACnC,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;SACtB,CAAC;QACF,WAAW,EAAE,YAAK,CAAC,MAAM,CAAC;YACxB,WAAW,EAAE,0CAA0C;SACxD,CAAC;KACH,CAAC;IAEF,MAAM,CAAU,QAAQ,GAAG;QACzB,6BAA6B;QAC7B,oEAAoE;KACrE,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAErD,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YAC9C,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC;gBACpC,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAE,KAAK,CAAC,IAA+B;gBAC3C,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC;aAC7B,CAAC,CAAC;YAEH,IAAA,wBAAY,EAAC;gBACX,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,KAAK,CAAC,IAAI;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,KAAK,CAAC,KAAK;aACrB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;;AAhDH,2BAiDC"}
@@ -0,0 +1,15 @@
1
+ import { BaseCommand } from '../../base-command';
2
+ export default class InboxSync extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ nv: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
6
+ json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
+ fields: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
9
+ 'no-color': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
+ account: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ };
12
+ static examples: string[];
13
+ run(): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/commands/inbox/sync.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,OAAgB,WAAW,SAC0D;IAErF,OAAgB,KAAK;;;;;;;MAMnB;IAEF,OAAgB,QAAQ,WAGtB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsBlC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const _base_command_1 = require("../../base-command");
5
+ const formatter_1 = require("../../core/output/formatter");
6
+ const workflow_runner_1 = require("../../core/workflow/workflow-runner");
7
+ class InboxSync extends _base_command_1.BaseCommand {
8
+ static description = 'Enable whole-inbox monitoring so every conversation can be read with "inbox get"';
9
+ static flags = {
10
+ ..._base_command_1.BaseCommand.baseFlags,
11
+ nv: core_1.Flags.boolean({
12
+ description: 'Enable monitoring for the Sales Navigator inbox instead of the standard one',
13
+ default: false,
14
+ }),
15
+ };
16
+ static examples = [
17
+ '<%= config.bin %> inbox sync',
18
+ '<%= config.bin %> inbox sync --nv',
19
+ ];
20
+ async run() {
21
+ const { flags } = await this.parse(InboxSync);
22
+ const client = await this.buildAuthenticatedClient();
23
+ try {
24
+ const operation = flags.nv ? client.nvSyncInbox : client.syncInbox;
25
+ const result = await (0, workflow_runner_1.runVoidWorkflow)(operation, {}, { isQuiet: flags.quiet });
26
+ (0, formatter_1.formatVoidOutput)({
27
+ errors: result.errors,
28
+ isJson: flags.json,
29
+ isQuiet: flags.quiet,
30
+ successMessage: flags.nv
31
+ ? 'Sales Navigator inbox monitoring enabled.'
32
+ : 'Inbox monitoring enabled.',
33
+ });
34
+ }
35
+ catch (error) {
36
+ this.handleError(error);
37
+ }
38
+ }
39
+ }
40
+ exports.default = InboxSync;
41
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/commands/inbox/sync.ts"],"names":[],"mappings":";;AAAA,sCAAoC;AAEpC,iDAA4C;AAC5C,sDAA0D;AAC1D,oEAAiE;AAEjE,MAAqB,SAAU,SAAQ,2BAAW;IAChD,MAAM,CAAU,WAAW,GACzB,kFAAkF,CAAC;IAErF,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,2BAAW,CAAC,SAAS;QACxB,EAAE,EAAE,YAAK,CAAC,OAAO,CAAC;YAChB,WAAW,EAAE,6EAA6E;YAC1F,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,MAAM,CAAU,QAAQ,GAAG;QACzB,8BAA8B;QAC9B,mCAAmC;KACpC,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAE9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;YAEnE,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAe,EAAC,SAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAE9E,IAAA,4BAAgB,EAAC;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,KAAK,CAAC,IAAI;gBAClB,OAAO,EAAE,KAAK,CAAC,KAAK;gBACpB,cAAc,EAAE,KAAK,CAAC,EAAE;oBACtB,CAAC,CAAC,2CAA2C;oBAC7C,CAAC,CAAC,2BAA2B;aAChC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;;AAtCH,4BAuCC"}
@@ -2,10 +2,11 @@ import { BaseCommand } from '../../base-command';
2
2
  export default class MessageSend extends BaseCommand {
3
3
  static description: string;
4
4
  static args: {
5
- 'person-url': import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
5
+ 'person-url': import("@oclif/core/lib/interfaces").Arg<string | undefined, Record<string, unknown>>;
6
6
  text: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
7
  };
8
8
  static flags: {
9
+ 'thread-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
10
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
11
  fields: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
12
  quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/commands/message/send.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW;IAClD,OAAgB,WAAW,SAAyC;IAEpE,OAAgB,IAAI;;;MASlB;IAEF,OAAgB,KAAK;;;;;;MAEnB;IAEF,OAAgB,QAAQ,WAEtB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA2BlC"}
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/commands/message/send.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5C,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW;IAClD,OAAgB,WAAW,SAAyC;IAEpE,OAAgB,IAAI;;;MASlB;IAEF,OAAgB,KAAK;;;;;;;MAKnB;IAEF,OAAgB,QAAQ,WAGtB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAkClC"}
@@ -2,14 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const core_1 = require("@oclif/core");
4
4
  const _base_command_1 = require("../../base-command");
5
+ const exit_codes_1 = require("../../core/errors/exit-codes");
5
6
  const formatter_1 = require("../../core/output/formatter");
6
7
  const workflow_runner_1 = require("../../core/workflow/workflow-runner");
7
8
  class MessageSend extends _base_command_1.BaseCommand {
8
9
  static description = 'Send a message to a LinkedIn person';
9
10
  static args = {
10
11
  'person-url': core_1.Args.string({
11
- description: 'LinkedIn profile URL of the recipient',
12
- required: true,
12
+ description: 'LinkedIn profile URL of the recipient (omit when --thread-id is provided)',
13
+ required: false,
13
14
  }),
14
15
  text: core_1.Args.string({
15
16
  description: 'Message text (up to 1900 characters)',
@@ -18,16 +19,26 @@ class MessageSend extends _base_command_1.BaseCommand {
18
19
  };
19
20
  static flags = {
20
21
  ..._base_command_1.BaseCommand.baseFlags,
22
+ 'thread-id': core_1.Flags.string({
23
+ description: 'Reply into an existing conversation thread instead of passing person-url',
24
+ }),
21
25
  };
22
26
  static examples = [
23
27
  '<%= config.bin %> message send https://www.linkedin.com/in/john-doe "Hello John!"',
28
+ '<%= config.bin %> message send --thread-id 2-abc123... "Sounds good, talk soon!"',
24
29
  ];
25
30
  async run() {
26
31
  const { args, flags } = await this.parse(MessageSend);
32
+ if (!args['person-url'] && !flags['thread-id']) {
33
+ this.error('Provide either a person-url argument or the --thread-id flag.', {
34
+ exit: exit_codes_1.EXIT_CODE.VALIDATION,
35
+ });
36
+ }
27
37
  const client = await this.buildAuthenticatedClient();
28
38
  try {
29
39
  const result = await (0, workflow_runner_1.runVoidWorkflow)(client.sendMessage, {
30
40
  personUrl: args['person-url'],
41
+ threadId: flags['thread-id'],
31
42
  text: args.text,
32
43
  }, {
33
44
  isQuiet: flags.quiet,
@@ -1 +1 @@
1
- {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../src/commands/message/send.ts"],"names":[],"mappings":";;AAAA,sCAAmC;AAEnC,iDAA4C;AAC5C,sDAA0D;AAC1D,oEAAiE;AAEjE,MAAqB,WAAY,SAAQ,2BAAW;IAClD,MAAM,CAAU,WAAW,GAAG,qCAAqC,CAAC;IAEpE,MAAM,CAAU,IAAI,GAAG;QACrB,YAAY,EAAE,WAAI,CAAC,MAAM,CAAC;YACxB,WAAW,EAAE,uCAAuC;YACpD,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,IAAI,EAAE,WAAI,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,sCAAsC;YACnD,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,2BAAW,CAAC,SAAS;KACzB,CAAC;IAEF,MAAM,CAAU,QAAQ,GAAG;QACzB,mFAAmF;KACpF,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAEtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAe,EAClC,MAAM,CAAC,WAAW,EAClB;gBACE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;gBAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,EACD;gBACE,OAAO,EAAE,KAAK,CAAC,KAAK;aACrB,CACF,CAAC;YAEF,IAAA,4BAAgB,EAAC;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,KAAK,CAAC,IAAI;gBAClB,OAAO,EAAE,KAAK,CAAC,KAAK;gBACpB,cAAc,EAAE,eAAe;aAChC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;;AAhDH,8BAiDC"}
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../src/commands/message/send.ts"],"names":[],"mappings":";;AAAA,sCAA0C;AAE1C,iDAA4C;AAC5C,wDAAoD;AACpD,sDAA0D;AAC1D,oEAAiE;AAEjE,MAAqB,WAAY,SAAQ,2BAAW;IAClD,MAAM,CAAU,WAAW,GAAG,qCAAqC,CAAC;IAEpE,MAAM,CAAU,IAAI,GAAG;QACrB,YAAY,EAAE,WAAI,CAAC,MAAM,CAAC;YACxB,WAAW,EAAE,2EAA2E;YACxF,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,IAAI,EAAE,WAAI,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,sCAAsC;YACnD,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,2BAAW,CAAC,SAAS;QACxB,WAAW,EAAE,YAAK,CAAC,MAAM,CAAC;YACxB,WAAW,EAAE,0EAA0E;SACxF,CAAC;KACH,CAAC;IAEF,MAAM,CAAU,QAAQ,GAAG;QACzB,mFAAmF;QACnF,kFAAkF;KACnF,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAEtD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,KAAK,CAAC,+DAA+D,EAAE;gBAC1E,IAAI,EAAE,sBAAS,CAAC,UAAU;aAC3B,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAe,EAClC,MAAM,CAAC,WAAW,EAClB;gBACE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;gBAC7B,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC;gBAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,EACD;gBACE,OAAO,EAAE,KAAK,CAAC,KAAK;aACrB,CACF,CAAC;YAEF,IAAA,4BAAgB,EAAC;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,KAAK,CAAC,IAAI;gBAClB,OAAO,EAAE,KAAK,CAAC,KAAK;gBACpB,cAAc,EAAE,eAAe;aAChC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;;AA3DH,8BA4DC"}
@@ -2,11 +2,12 @@ import { BaseCommand } from '../../../base-command';
2
2
  export default class NavigatorMessageSend extends BaseCommand {
3
3
  static description: string;
4
4
  static args: {
5
- 'person-url': import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
5
+ 'person-url': import("@oclif/core/lib/interfaces").Arg<string | undefined, Record<string, unknown>>;
6
6
  text: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
7
  };
8
8
  static flags: {
9
- subject: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ subject: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ 'thread-id': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
11
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
12
  fields: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
13
  quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../../src/commands/navigator/message/send.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,WAAW;IAC3D,OAAgB,WAAW,SAAwC;IAEnE,OAAgB,IAAI;;;MASlB;IAEF,OAAgB,KAAK;;;;;;;MAMnB;IAEF,OAAgB,QAAQ,WAEtB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4BlC"}
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../../src/commands/navigator/message/send.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5C,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,WAAW;IAC3D,OAAgB,WAAW,SAAwC;IAEnE,OAAgB,IAAI;;;MASlB;IAEF,OAAgB,KAAK;;;;;;;;MAQnB;IAEF,OAAgB,QAAQ,WAGtB;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAwClC"}
@@ -2,14 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const core_1 = require("@oclif/core");
4
4
  const _base_command_1 = require("../../../base-command");
5
+ const exit_codes_1 = require("../../../core/errors/exit-codes");
5
6
  const formatter_1 = require("../../../core/output/formatter");
6
7
  const workflow_runner_1 = require("../../../core/workflow/workflow-runner");
7
8
  class NavigatorMessageSend extends _base_command_1.BaseCommand {
8
9
  static description = 'Send a message via Sales Navigator';
9
10
  static args = {
10
11
  'person-url': core_1.Args.string({
11
- description: 'LinkedIn profile URL of the recipient',
12
- required: true,
12
+ description: 'LinkedIn profile URL of the recipient (omit when --thread-id is provided)',
13
+ required: false,
13
14
  }),
14
15
  text: core_1.Args.string({
15
16
  description: 'Message text (up to 1900 characters)',
@@ -19,19 +20,33 @@ class NavigatorMessageSend extends _base_command_1.BaseCommand {
19
20
  static flags = {
20
21
  ..._base_command_1.BaseCommand.baseFlags,
21
22
  subject: core_1.Flags.string({
22
- description: 'Message subject line (up to 80 characters)',
23
- required: true,
23
+ description: 'Message subject line (up to 80 characters); required unless --thread-id is provided',
24
+ }),
25
+ 'thread-id': core_1.Flags.string({
26
+ description: 'Reply into an existing conversation thread instead of passing person-url',
24
27
  }),
25
28
  };
26
29
  static examples = [
27
30
  '<%= config.bin %> navigator message send https://www.linkedin.com/in/john-doe "Hello!" --subject "Partnership"',
31
+ '<%= config.bin %> navigator message send --thread-id 2-abc123... "Sounds good, talk soon!"',
28
32
  ];
29
33
  async run() {
30
34
  const { args, flags } = await this.parse(NavigatorMessageSend);
35
+ if (!args['person-url'] && !flags['thread-id']) {
36
+ this.error('Provide either a person-url argument or the --thread-id flag.', {
37
+ exit: exit_codes_1.EXIT_CODE.VALIDATION,
38
+ });
39
+ }
40
+ if (!flags['thread-id'] && !flags.subject) {
41
+ this.error('The --subject flag is required when starting a new conversation.', {
42
+ exit: exit_codes_1.EXIT_CODE.VALIDATION,
43
+ });
44
+ }
31
45
  const client = await this.buildAuthenticatedClient();
32
46
  try {
33
47
  const result = await (0, workflow_runner_1.runVoidWorkflow)(client.nvSendMessage, {
34
48
  personUrl: args['person-url'],
49
+ threadId: flags['thread-id'],
35
50
  text: args.text,
36
51
  subject: flags.subject,
37
52
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../../src/commands/navigator/message/send.ts"],"names":[],"mappings":";;AAAA,sCAA0C;AAE1C,iDAA4C;AAC5C,sDAA0D;AAC1D,oEAAiE;AAEjE,MAAqB,oBAAqB,SAAQ,2BAAW;IAC3D,MAAM,CAAU,WAAW,GAAG,oCAAoC,CAAC;IAEnE,MAAM,CAAU,IAAI,GAAG;QACrB,YAAY,EAAE,WAAI,CAAC,MAAM,CAAC;YACxB,WAAW,EAAE,uCAAuC;YACpD,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,IAAI,EAAE,WAAI,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,sCAAsC;YACnD,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,2BAAW,CAAC,SAAS;QACxB,OAAO,EAAE,YAAK,CAAC,MAAM,CAAC;YACpB,WAAW,EAAE,4CAA4C;YACzD,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,MAAM,CAAU,QAAQ,GAAG;QACzB,gHAAgH;KACjH,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAE/D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAe,EAClC,MAAM,CAAC,aAAa,EACpB;gBACE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;gBAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,EACD;gBACE,OAAO,EAAE,KAAK,CAAC,KAAK;aACrB,CACF,CAAC;YAEF,IAAA,4BAAgB,EAAC;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,KAAK,CAAC,IAAI;gBAClB,OAAO,EAAE,KAAK,CAAC,KAAK;gBACpB,cAAc,EAAE,+BAA+B;aAChD,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;;AArDH,uCAsDC"}
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../../src/commands/navigator/message/send.ts"],"names":[],"mappings":";;AAAA,sCAA0C;AAE1C,iDAA4C;AAC5C,wDAAoD;AACpD,sDAA0D;AAC1D,oEAAiE;AAEjE,MAAqB,oBAAqB,SAAQ,2BAAW;IAC3D,MAAM,CAAU,WAAW,GAAG,oCAAoC,CAAC;IAEnE,MAAM,CAAU,IAAI,GAAG;QACrB,YAAY,EAAE,WAAI,CAAC,MAAM,CAAC;YACxB,WAAW,EAAE,2EAA2E;YACxF,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,IAAI,EAAE,WAAI,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,sCAAsC;YACnD,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,2BAAW,CAAC,SAAS;QACxB,OAAO,EAAE,YAAK,CAAC,MAAM,CAAC;YACpB,WAAW,EAAE,qFAAqF;SACnG,CAAC;QACF,WAAW,EAAE,YAAK,CAAC,MAAM,CAAC;YACxB,WAAW,EAAE,0EAA0E;SACxF,CAAC;KACH,CAAC;IAEF,MAAM,CAAU,QAAQ,GAAG;QACzB,gHAAgH;QAChH,4FAA4F;KAC7F,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAE/D,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,KAAK,CAAC,+DAA+D,EAAE;gBAC1E,IAAI,EAAE,sBAAS,CAAC,UAAU;aAC3B,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,kEAAkE,EAAE;gBAC7E,IAAI,EAAE,sBAAS,CAAC,UAAU;aAC3B,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAe,EAClC,MAAM,CAAC,aAAa,EACpB;gBACE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;gBAC7B,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC;gBAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,EACD;gBACE,OAAO,EAAE,KAAK,CAAC,KAAK;aACrB,CACF,CAAC;YAEF,IAAA,4BAAgB,EAAC;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,KAAK,CAAC,IAAI;gBAClB,OAAO,EAAE,KAAK,CAAC,KAAK;gBACpB,cAAc,EAAE,+BAA+B;aAChD,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;;AApEH,uCAqEC"}
@@ -920,6 +920,155 @@
920
920
  "withdraw.js"
921
921
  ]
922
922
  },
923
+ "inbox:get": {
924
+ "aliases": [],
925
+ "args": {},
926
+ "description": "Get messages from the monitored inbox across all conversations",
927
+ "examples": [
928
+ "<%= config.bin %> inbox get",
929
+ "<%= config.bin %> inbox get --since 2024-01-15T10:30:00Z --type nv"
930
+ ],
931
+ "flags": {
932
+ "json": {
933
+ "description": "Output as JSON",
934
+ "name": "json",
935
+ "allowNo": false,
936
+ "type": "boolean"
937
+ },
938
+ "fields": {
939
+ "description": "Comma-separated list of fields to include in output",
940
+ "name": "fields",
941
+ "hasDynamicHelp": false,
942
+ "multiple": false,
943
+ "type": "option"
944
+ },
945
+ "quiet": {
946
+ "char": "q",
947
+ "description": "Suppress progress output on stderr",
948
+ "name": "quiet",
949
+ "allowNo": false,
950
+ "type": "boolean"
951
+ },
952
+ "no-color": {
953
+ "description": "Disable colored output",
954
+ "name": "no-color",
955
+ "allowNo": false,
956
+ "type": "boolean"
957
+ },
958
+ "account": {
959
+ "description": "Account name to use (when multiple accounts are configured)",
960
+ "name": "account",
961
+ "hasDynamicHelp": false,
962
+ "multiple": false,
963
+ "type": "option"
964
+ },
965
+ "since": {
966
+ "description": "Retrieve messages after ISO timestamp",
967
+ "name": "since",
968
+ "hasDynamicHelp": false,
969
+ "multiple": false,
970
+ "type": "option"
971
+ },
972
+ "type": {
973
+ "description": "Filter by inbox type",
974
+ "name": "type",
975
+ "hasDynamicHelp": false,
976
+ "multiple": false,
977
+ "options": [
978
+ "st",
979
+ "nv"
980
+ ],
981
+ "type": "option"
982
+ },
983
+ "thread-id": {
984
+ "description": "Restrict to a single conversation thread",
985
+ "name": "thread-id",
986
+ "hasDynamicHelp": false,
987
+ "multiple": false,
988
+ "type": "option"
989
+ }
990
+ },
991
+ "hasDynamicHelp": false,
992
+ "hiddenAliases": [],
993
+ "id": "inbox:get",
994
+ "pluginAlias": "@linkedapi/linkedin-cli",
995
+ "pluginName": "@linkedapi/linkedin-cli",
996
+ "pluginType": "core",
997
+ "strict": true,
998
+ "enableJsonFlag": false,
999
+ "isESM": false,
1000
+ "relativePath": [
1001
+ "dist",
1002
+ "commands",
1003
+ "inbox",
1004
+ "get.js"
1005
+ ]
1006
+ },
1007
+ "inbox:sync": {
1008
+ "aliases": [],
1009
+ "args": {},
1010
+ "description": "Enable whole-inbox monitoring so every conversation can be read with \"inbox get\"",
1011
+ "examples": [
1012
+ "<%= config.bin %> inbox sync",
1013
+ "<%= config.bin %> inbox sync --nv"
1014
+ ],
1015
+ "flags": {
1016
+ "json": {
1017
+ "description": "Output as JSON",
1018
+ "name": "json",
1019
+ "allowNo": false,
1020
+ "type": "boolean"
1021
+ },
1022
+ "fields": {
1023
+ "description": "Comma-separated list of fields to include in output",
1024
+ "name": "fields",
1025
+ "hasDynamicHelp": false,
1026
+ "multiple": false,
1027
+ "type": "option"
1028
+ },
1029
+ "quiet": {
1030
+ "char": "q",
1031
+ "description": "Suppress progress output on stderr",
1032
+ "name": "quiet",
1033
+ "allowNo": false,
1034
+ "type": "boolean"
1035
+ },
1036
+ "no-color": {
1037
+ "description": "Disable colored output",
1038
+ "name": "no-color",
1039
+ "allowNo": false,
1040
+ "type": "boolean"
1041
+ },
1042
+ "account": {
1043
+ "description": "Account name to use (when multiple accounts are configured)",
1044
+ "name": "account",
1045
+ "hasDynamicHelp": false,
1046
+ "multiple": false,
1047
+ "type": "option"
1048
+ },
1049
+ "nv": {
1050
+ "description": "Enable monitoring for the Sales Navigator inbox instead of the standard one",
1051
+ "name": "nv",
1052
+ "allowNo": false,
1053
+ "type": "boolean"
1054
+ }
1055
+ },
1056
+ "hasDynamicHelp": false,
1057
+ "hiddenAliases": [],
1058
+ "id": "inbox:sync",
1059
+ "pluginAlias": "@linkedapi/linkedin-cli",
1060
+ "pluginName": "@linkedapi/linkedin-cli",
1061
+ "pluginType": "core",
1062
+ "strict": true,
1063
+ "enableJsonFlag": false,
1064
+ "isESM": false,
1065
+ "relativePath": [
1066
+ "dist",
1067
+ "commands",
1068
+ "inbox",
1069
+ "sync.js"
1070
+ ]
1071
+ },
923
1072
  "jobs:fetch": {
924
1073
  "aliases": [],
925
1074
  "args": {
@@ -1226,9 +1375,9 @@
1226
1375
  "aliases": [],
1227
1376
  "args": {
1228
1377
  "person-url": {
1229
- "description": "LinkedIn profile URL of the recipient",
1378
+ "description": "LinkedIn profile URL of the recipient (omit when --thread-id is provided)",
1230
1379
  "name": "person-url",
1231
- "required": true
1380
+ "required": false
1232
1381
  },
1233
1382
  "text": {
1234
1383
  "description": "Message text (up to 1900 characters)",
@@ -1238,7 +1387,8 @@
1238
1387
  },
1239
1388
  "description": "Send a message to a LinkedIn person",
1240
1389
  "examples": [
1241
- "<%= config.bin %> message send https://www.linkedin.com/in/john-doe \"Hello John!\""
1390
+ "<%= config.bin %> message send https://www.linkedin.com/in/john-doe \"Hello John!\"",
1391
+ "<%= config.bin %> message send --thread-id 2-abc123... \"Sounds good, talk soon!\""
1242
1392
  ],
1243
1393
  "flags": {
1244
1394
  "json": {
@@ -1273,6 +1423,13 @@
1273
1423
  "hasDynamicHelp": false,
1274
1424
  "multiple": false,
1275
1425
  "type": "option"
1426
+ },
1427
+ "thread-id": {
1428
+ "description": "Reply into an existing conversation thread instead of passing person-url",
1429
+ "name": "thread-id",
1430
+ "hasDynamicHelp": false,
1431
+ "multiple": false,
1432
+ "type": "option"
1276
1433
  }
1277
1434
  },
1278
1435
  "hasDynamicHelp": false,
@@ -3937,18 +4094,18 @@
3937
4094
  "search.js"
3938
4095
  ]
3939
4096
  },
3940
- "navigator:message:get": {
4097
+ "navigator:person:fetch": {
3941
4098
  "aliases": [],
3942
4099
  "args": {
3943
- "person-url": {
3944
- "description": "LinkedIn profile URL",
3945
- "name": "person-url",
4100
+ "hashed-url": {
4101
+ "description": "Hashed LinkedIn profile URL",
4102
+ "name": "hashed-url",
3946
4103
  "required": true
3947
4104
  }
3948
4105
  },
3949
- "description": "Get Sales Navigator conversation messages",
4106
+ "description": "Fetch a person profile via Sales Navigator",
3950
4107
  "examples": [
3951
- "<%= config.bin %> navigator message get https://www.linkedin.com/in/john-doe"
4108
+ "<%= config.bin %> navigator person fetch https://www.linkedin.com/in/ACwAAA..."
3952
4109
  ],
3953
4110
  "flags": {
3954
4111
  "json": {
@@ -3983,18 +4140,11 @@
3983
4140
  "hasDynamicHelp": false,
3984
4141
  "multiple": false,
3985
4142
  "type": "option"
3986
- },
3987
- "since": {
3988
- "description": "Retrieve messages since ISO timestamp",
3989
- "name": "since",
3990
- "hasDynamicHelp": false,
3991
- "multiple": false,
3992
- "type": "option"
3993
4143
  }
3994
4144
  },
3995
4145
  "hasDynamicHelp": false,
3996
4146
  "hiddenAliases": [],
3997
- "id": "navigator:message:get",
4147
+ "id": "navigator:person:fetch",
3998
4148
  "pluginAlias": "@linkedapi/linkedin-cli",
3999
4149
  "pluginName": "@linkedapi/linkedin-cli",
4000
4150
  "pluginType": "core",
@@ -4005,27 +4155,16 @@
4005
4155
  "dist",
4006
4156
  "commands",
4007
4157
  "navigator",
4008
- "message",
4009
- "get.js"
4158
+ "person",
4159
+ "fetch.js"
4010
4160
  ]
4011
4161
  },
4012
- "navigator:message:send": {
4162
+ "navigator:person:search": {
4013
4163
  "aliases": [],
4014
- "args": {
4015
- "person-url": {
4016
- "description": "LinkedIn profile URL of the recipient",
4017
- "name": "person-url",
4018
- "required": true
4019
- },
4020
- "text": {
4021
- "description": "Message text (up to 1900 characters)",
4022
- "name": "text",
4023
- "required": true
4024
- }
4025
- },
4026
- "description": "Send a message via Sales Navigator",
4164
+ "args": {},
4165
+ "description": "Search for people via Sales Navigator",
4027
4166
  "examples": [
4028
- "<%= config.bin %> navigator message send https://www.linkedin.com/in/john-doe \"Hello!\" --subject \"Partnership\""
4167
+ "<%= config.bin %> navigator person search --term \"VP Marketing\" --locations \"United States\""
4029
4168
  ],
4030
4169
  "flags": {
4031
4170
  "json": {
@@ -4061,10 +4200,79 @@
4061
4200
  "multiple": false,
4062
4201
  "type": "option"
4063
4202
  },
4064
- "subject": {
4065
- "description": "Message subject line (up to 80 characters)",
4066
- "name": "subject",
4067
- "required": true,
4203
+ "term": {
4204
+ "description": "Search keyword or phrase",
4205
+ "name": "term",
4206
+ "hasDynamicHelp": false,
4207
+ "multiple": false,
4208
+ "type": "option"
4209
+ },
4210
+ "limit": {
4211
+ "description": "Max results to return",
4212
+ "name": "limit",
4213
+ "hasDynamicHelp": false,
4214
+ "multiple": false,
4215
+ "type": "option"
4216
+ },
4217
+ "first-name": {
4218
+ "description": "Filter by first name",
4219
+ "name": "first-name",
4220
+ "hasDynamicHelp": false,
4221
+ "multiple": false,
4222
+ "type": "option"
4223
+ },
4224
+ "last-name": {
4225
+ "description": "Filter by last name",
4226
+ "name": "last-name",
4227
+ "hasDynamicHelp": false,
4228
+ "multiple": false,
4229
+ "type": "option"
4230
+ },
4231
+ "position": {
4232
+ "description": "Filter by job position",
4233
+ "name": "position",
4234
+ "hasDynamicHelp": false,
4235
+ "multiple": false,
4236
+ "type": "option"
4237
+ },
4238
+ "locations": {
4239
+ "description": "Filter by locations (comma-separated)",
4240
+ "name": "locations",
4241
+ "hasDynamicHelp": false,
4242
+ "multiple": false,
4243
+ "type": "option"
4244
+ },
4245
+ "industries": {
4246
+ "description": "Filter by industries (comma-separated)",
4247
+ "name": "industries",
4248
+ "hasDynamicHelp": false,
4249
+ "multiple": false,
4250
+ "type": "option"
4251
+ },
4252
+ "current-companies": {
4253
+ "description": "Filter by current companies (comma-separated)",
4254
+ "name": "current-companies",
4255
+ "hasDynamicHelp": false,
4256
+ "multiple": false,
4257
+ "type": "option"
4258
+ },
4259
+ "previous-companies": {
4260
+ "description": "Filter by previous companies (comma-separated)",
4261
+ "name": "previous-companies",
4262
+ "hasDynamicHelp": false,
4263
+ "multiple": false,
4264
+ "type": "option"
4265
+ },
4266
+ "schools": {
4267
+ "description": "Filter by schools (comma-separated)",
4268
+ "name": "schools",
4269
+ "hasDynamicHelp": false,
4270
+ "multiple": false,
4271
+ "type": "option"
4272
+ },
4273
+ "years-of-experience": {
4274
+ "description": "Filter by experience ranges (comma-separated: lessThanOne,oneToTwo,threeToFive,sixToTen,moreThanTen)",
4275
+ "name": "years-of-experience",
4068
4276
  "hasDynamicHelp": false,
4069
4277
  "multiple": false,
4070
4278
  "type": "option"
@@ -4072,7 +4280,7 @@
4072
4280
  },
4073
4281
  "hasDynamicHelp": false,
4074
4282
  "hiddenAliases": [],
4075
- "id": "navigator:message:send",
4283
+ "id": "navigator:person:search",
4076
4284
  "pluginAlias": "@linkedapi/linkedin-cli",
4077
4285
  "pluginName": "@linkedapi/linkedin-cli",
4078
4286
  "pluginType": "core",
@@ -4083,22 +4291,22 @@
4083
4291
  "dist",
4084
4292
  "commands",
4085
4293
  "navigator",
4086
- "message",
4087
- "send.js"
4294
+ "person",
4295
+ "search.js"
4088
4296
  ]
4089
4297
  },
4090
- "navigator:person:fetch": {
4298
+ "navigator:message:get": {
4091
4299
  "aliases": [],
4092
4300
  "args": {
4093
- "hashed-url": {
4094
- "description": "Hashed LinkedIn profile URL",
4095
- "name": "hashed-url",
4301
+ "person-url": {
4302
+ "description": "LinkedIn profile URL",
4303
+ "name": "person-url",
4096
4304
  "required": true
4097
4305
  }
4098
4306
  },
4099
- "description": "Fetch a person profile via Sales Navigator",
4307
+ "description": "Get Sales Navigator conversation messages",
4100
4308
  "examples": [
4101
- "<%= config.bin %> navigator person fetch https://www.linkedin.com/in/ACwAAA..."
4309
+ "<%= config.bin %> navigator message get https://www.linkedin.com/in/john-doe"
4102
4310
  ],
4103
4311
  "flags": {
4104
4312
  "json": {
@@ -4133,11 +4341,18 @@
4133
4341
  "hasDynamicHelp": false,
4134
4342
  "multiple": false,
4135
4343
  "type": "option"
4344
+ },
4345
+ "since": {
4346
+ "description": "Retrieve messages since ISO timestamp",
4347
+ "name": "since",
4348
+ "hasDynamicHelp": false,
4349
+ "multiple": false,
4350
+ "type": "option"
4136
4351
  }
4137
4352
  },
4138
4353
  "hasDynamicHelp": false,
4139
4354
  "hiddenAliases": [],
4140
- "id": "navigator:person:fetch",
4355
+ "id": "navigator:message:get",
4141
4356
  "pluginAlias": "@linkedapi/linkedin-cli",
4142
4357
  "pluginName": "@linkedapi/linkedin-cli",
4143
4358
  "pluginType": "core",
@@ -4148,16 +4363,28 @@
4148
4363
  "dist",
4149
4364
  "commands",
4150
4365
  "navigator",
4151
- "person",
4152
- "fetch.js"
4366
+ "message",
4367
+ "get.js"
4153
4368
  ]
4154
4369
  },
4155
- "navigator:person:search": {
4370
+ "navigator:message:send": {
4156
4371
  "aliases": [],
4157
- "args": {},
4158
- "description": "Search for people via Sales Navigator",
4372
+ "args": {
4373
+ "person-url": {
4374
+ "description": "LinkedIn profile URL of the recipient (omit when --thread-id is provided)",
4375
+ "name": "person-url",
4376
+ "required": false
4377
+ },
4378
+ "text": {
4379
+ "description": "Message text (up to 1900 characters)",
4380
+ "name": "text",
4381
+ "required": true
4382
+ }
4383
+ },
4384
+ "description": "Send a message via Sales Navigator",
4159
4385
  "examples": [
4160
- "<%= config.bin %> navigator person search --term \"VP Marketing\" --locations \"United States\""
4386
+ "<%= config.bin %> navigator message send https://www.linkedin.com/in/john-doe \"Hello!\" --subject \"Partnership\"",
4387
+ "<%= config.bin %> navigator message send --thread-id 2-abc123... \"Sounds good, talk soon!\""
4161
4388
  ],
4162
4389
  "flags": {
4163
4390
  "json": {
@@ -4193,79 +4420,16 @@
4193
4420
  "multiple": false,
4194
4421
  "type": "option"
4195
4422
  },
4196
- "term": {
4197
- "description": "Search keyword or phrase",
4198
- "name": "term",
4199
- "hasDynamicHelp": false,
4200
- "multiple": false,
4201
- "type": "option"
4202
- },
4203
- "limit": {
4204
- "description": "Max results to return",
4205
- "name": "limit",
4206
- "hasDynamicHelp": false,
4207
- "multiple": false,
4208
- "type": "option"
4209
- },
4210
- "first-name": {
4211
- "description": "Filter by first name",
4212
- "name": "first-name",
4213
- "hasDynamicHelp": false,
4214
- "multiple": false,
4215
- "type": "option"
4216
- },
4217
- "last-name": {
4218
- "description": "Filter by last name",
4219
- "name": "last-name",
4220
- "hasDynamicHelp": false,
4221
- "multiple": false,
4222
- "type": "option"
4223
- },
4224
- "position": {
4225
- "description": "Filter by job position",
4226
- "name": "position",
4227
- "hasDynamicHelp": false,
4228
- "multiple": false,
4229
- "type": "option"
4230
- },
4231
- "locations": {
4232
- "description": "Filter by locations (comma-separated)",
4233
- "name": "locations",
4234
- "hasDynamicHelp": false,
4235
- "multiple": false,
4236
- "type": "option"
4237
- },
4238
- "industries": {
4239
- "description": "Filter by industries (comma-separated)",
4240
- "name": "industries",
4241
- "hasDynamicHelp": false,
4242
- "multiple": false,
4243
- "type": "option"
4244
- },
4245
- "current-companies": {
4246
- "description": "Filter by current companies (comma-separated)",
4247
- "name": "current-companies",
4248
- "hasDynamicHelp": false,
4249
- "multiple": false,
4250
- "type": "option"
4251
- },
4252
- "previous-companies": {
4253
- "description": "Filter by previous companies (comma-separated)",
4254
- "name": "previous-companies",
4255
- "hasDynamicHelp": false,
4256
- "multiple": false,
4257
- "type": "option"
4258
- },
4259
- "schools": {
4260
- "description": "Filter by schools (comma-separated)",
4261
- "name": "schools",
4423
+ "subject": {
4424
+ "description": "Message subject line (up to 80 characters); required unless --thread-id is provided",
4425
+ "name": "subject",
4262
4426
  "hasDynamicHelp": false,
4263
4427
  "multiple": false,
4264
4428
  "type": "option"
4265
4429
  },
4266
- "years-of-experience": {
4267
- "description": "Filter by experience ranges (comma-separated: lessThanOne,oneToTwo,threeToFive,sixToTen,moreThanTen)",
4268
- "name": "years-of-experience",
4430
+ "thread-id": {
4431
+ "description": "Reply into an existing conversation thread instead of passing person-url",
4432
+ "name": "thread-id",
4269
4433
  "hasDynamicHelp": false,
4270
4434
  "multiple": false,
4271
4435
  "type": "option"
@@ -4273,7 +4437,7 @@
4273
4437
  },
4274
4438
  "hasDynamicHelp": false,
4275
4439
  "hiddenAliases": [],
4276
- "id": "navigator:person:search",
4440
+ "id": "navigator:message:send",
4277
4441
  "pluginAlias": "@linkedapi/linkedin-cli",
4278
4442
  "pluginName": "@linkedapi/linkedin-cli",
4279
4443
  "pluginType": "core",
@@ -4284,10 +4448,10 @@
4284
4448
  "dist",
4285
4449
  "commands",
4286
4450
  "navigator",
4287
- "person",
4288
- "search.js"
4451
+ "message",
4452
+ "send.js"
4289
4453
  ]
4290
4454
  }
4291
4455
  },
4292
- "version": "1.1.0"
4456
+ "version": "1.1.1"
4293
4457
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@linkedapi/linkedin-cli",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "AI-agent-friendly CLI for controlling LinkedIn accounts and retrieving real-time data.",
5
5
  "author": "Linked API",
6
6
  "license": "MIT",
@@ -43,7 +43,7 @@
43
43
  "ai-agent"
44
44
  ],
45
45
  "dependencies": {
46
- "@linkedapi/node": "^2.1.0",
46
+ "@linkedapi/node": "^2.1.1",
47
47
  "@oclif/core": "^4.2.10"
48
48
  },
49
49
  "devDependencies": {