@epsilon-asi/actors 0.0.47 → 0.0.49

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.
@@ -1 +1 @@
1
- {"version":3,"file":"upwork-com.actor.d.ts","sourceRoot":"","sources":["../../../src/sites/upwork-com/upwork-com.actor.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACpB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAA2B,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAEtF,OAAO,EAE2B,qBAAqB,EACnD,uBAAuB,EAC1B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAA4B,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAEtF,eAAO,MAAM,cAAc;;yEAuDgB,qBAAqB,KAAQ,OAAO,CAAC,gBAAgB,EAAE,CAAC;qEAO3D,iBAAiB,KAAG,OAAO,CAAC;QACxD,UAAU,EAAE,gBAAgB,CAAC;QAC7B,YAAY,EAAE,uBAAuB,CAAA;KACxC,CAAC;yEAakC,qBAAqB,GAAG,qBAAqB,KAAG,OAAO,CAAC,sBAAsB,CAAC;EA+BzH,CAAC"}
1
+ {"version":3,"file":"upwork-com.actor.d.ts","sourceRoot":"","sources":["../../../src/sites/upwork-com/upwork-com.actor.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACpB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAA2B,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAEtF,OAAO,EAE2B,qBAAqB,EACnD,uBAAuB,EAC1B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAA4B,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAEtF,eAAO,MAAM,cAAc;;yEA0DgB,qBAAqB,KAAQ,OAAO,CAAC,gBAAgB,EAAE,CAAC;qEAY3D,iBAAiB,KAAG,OAAO,CAAC;QACxD,UAAU,EAAE,gBAAgB,CAAC;QAC7B,YAAY,EAAE,uBAAuB,CAAA;KACxC,CAAC;yEAmBkC,qBAAqB,GAAG,qBAAqB,KAAG,OAAO,CAAC,sBAAsB,CAAC;EA+CzH,CAAC"}
@@ -56,41 +56,72 @@ export const upworkComActor = defineActor({
56
56
  }),
57
57
  tasks: {
58
58
  test: async (context, input) => {
59
+ console.log('starting test task');
59
60
  //@ts-ignore
60
61
  await context.native.fileDialogs.selectFile(process.env.TEST);
62
+ console.log('moving mouse in test task');
61
63
  await context.native.mouse.moveTo({ x: 100, y: 200 });
64
+ console.log('finished test task');
62
65
  },
63
66
  searchJobs: async (context, input = {}) => {
67
+ console.log('starting job search task');
64
68
  const path = '/nx/s/universal-search/jobs?category2_uid=531770282580668420,531770282580668419,531770282580668418&client_hires=1-9,10-&payment_verified=1&q=%27rancher%27%20or%20%27terraform%27%20or%20%27gitops%27%20or%20%27azure%27%20or%20%27microsoft%20azure%27%20or%20%27cloud%20architect%27%20or%20%27ai%20architect%27%20or%20%27forward%20deployed%20engineer%27%20or%20%27aws%27%20or%20%27aks%27%20or%20%27eks%27%20or%20%27gke%27%20or%20%27cloud%20engineer%27%20or%20devops%20or%20kuberentes%20or%20%27platform%20engineer%27%20or%20%27infrastructure%20engineer%27%20or%20"google%20cloud%20platform"%20or%20"GCP"%20or%20"langsmith"%20or%20"langgraph"%20or%20"gemini%20enterprise"&sort=recency&user_location_match=1';
69
+ console.log('navigating to jobs search page');
65
70
  await context.nav.goto(path, {});
66
- return await parseUpworkSearchResults(context.session.page);
71
+ console.log('parsing jobs search results');
72
+ const results = await parseUpworkSearchResults(context.session.page);
73
+ console.log('finished job search task');
74
+ return results;
67
75
  },
68
76
  getJob: async (_context, input) => {
77
+ console.log('starting get job task');
78
+ console.log('opening job details page');
69
79
  await _context.nav.goto(`/jobs/~02${input.jobId}/`);
80
+ console.log('parsing job details content');
70
81
  const jobDetails = parseUpworkJobDetailsPage(await _context.session.page.content());
82
+ console.log('opening job application page');
71
83
  await _context.nav.goto(`/nx/proposals/job/~02${input.jobId}/apply/`);
84
+ console.log('parsing proposal questions');
72
85
  const jobQuestions = await parseUpworkProposalQuestions(_context.session.page);
86
+ console.log('finished get job task');
73
87
  return {
74
88
  jobDetails,
75
89
  jobQuestions
76
90
  };
77
91
  },
78
92
  applyToJob: async (_context, input) => {
79
- await _context.nav.goto(`/nx/proposals/job/~02${input.jobId}/apply/`);
80
- await _context.cursor.move('.up-fe-agency-member-selector > [data-test="dropdown-toggle"]');
81
- await _context.cursor.click('.up-fe-agency-member-selector > [data-test="dropdown-toggle"]');
82
- await _context.cursor.move('li[role="option"][tabindex="0"]');
83
- await _context.cursor.click('li[role="option"][tabindex="0"]');
84
- await _context.cursor.move('.up-fe-contractor-selector > [data-test="dropdown-toggle"]');
85
- await _context.cursor.click('.up-fe-contractor-selector > [data-test="dropdown-toggle"]');
86
- await _context.cursor.move('li[role="option"][tabindex="0"]');
87
- await _context.cursor.click('li[role="option"][tabindex="0"]');
88
- await _context.cursor.scrollIntoView('[data-test="sri-form-card"] > [data-test="dropdown-toggle"] > [aria-label="How often do you want a rate increase?"]');
89
- await _context.cursor.move('[data-test="sri-form-card"] > [data-test="dropdown-toggle"] > [aria-label="How often do you want a rate increase?"]');
90
- await _context.cursor.click('[data-test="sri-form-card"] > [data-test="dropdown-toggle"] > [aria-label="How often do you want a rate increase?"]');
91
- await _context.cursor.move('li[role="option"][tabindex="0"]');
92
- await _context.cursor.click('li[role="option"][tabindex="0"]');
93
- await fillUpworkProposalQuestions(_context.session.page, input.answers);
93
+ try {
94
+ console.log('starting apply to job task');
95
+ console.log('opening apply page');
96
+ await _context.nav.goto(`/nx/proposals/job/~02${input.jobId}/apply/`);
97
+ console.log('Moving mouse to agency selector');
98
+ //await _context.cursor.move('.up-fe-agency-member-selector > [data-test="dropdown-toggle"]')
99
+ console.log('Clicking agency selector');
100
+ await _context.cursor.click('.up-fe-agency-member-selector > [data-test="dropdown-toggle"]');
101
+ console.log('Moving mouse to agency option');
102
+ //await _context.cursor.move('li[role="option"][tabindex="0"]')
103
+ await _context.cursor.click('li[role="option"][tabindex="0"]');
104
+ console.log('opening contractor selector');
105
+ //await _context.cursor.move('.up-fe-contractor-selector > [data-test="dropdown-toggle"]')
106
+ await _context.cursor.click('.up-fe-contractor-selector > [data-test="dropdown-toggle"]');
107
+ console.log('selecting contractor option');
108
+ //await _context.cursor.move('li[role="option"][tabindex="0"]')
109
+ await _context.cursor.click('li[role="option"][tabindex="0"]');
110
+ console.log('scrolling to rate increase selector');
111
+ await _context.cursor.scrollIntoView('[data-test="sri-form-card"] > [data-test="dropdown-toggle"] > [aria-label="How often do you want a rate increase?"]');
112
+ console.log('opening rate increase selector');
113
+ //await _context.cursor.move('[data-test="sri-form-card"] > [data-test="dropdown-toggle"] > [aria-label="How often do you want a rate increase?"]')
114
+ await _context.cursor.click('[data-test="sri-form-card"] > [data-test="dropdown-toggle"] > [aria-label="How often do you want a rate increase?"]');
115
+ //await _context.cursor.move('li[role="option"][tabindex="0"]')
116
+ await _context.cursor.click('li[role="option"][tabindex="0"]');
117
+ console.log('filling proposal answers');
118
+ await fillUpworkProposalQuestions(_context.session.page, input.answers);
119
+ }
120
+ catch (e) {
121
+ console.error(e);
122
+ console.log(e);
123
+ }
124
+ console.log('building apply result payload');
94
125
  return {
95
126
  coverLetter: input.answers.coverLetter ?? '',
96
127
  rate: parseRate(input.rate)
@@ -1 +1 @@
1
- {"version":3,"file":"upwork-com.actor.js","sourceRoot":"","sources":["../../../src/sites/upwork-com/upwork-com.actor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upwork-com.actor.js","sourceRoot":"","sources":["../../../src/sites/upwork-com/upwork-com.actor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epsilon-asi/actors",
3
- "version": "0.0.47",
3
+ "version": "0.0.49",
4
4
  "description": "A TypeScript Puppeteer actor framework using existing Chrome profiles and ghost-cursor.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -33,4 +33,4 @@ export interface ActorContext {
33
33
  auth: AuthController;
34
34
  logger: Logger;
35
35
  native: NativeAutomation;
36
- }
36
+ }
@@ -69,58 +69,88 @@ export const upworkComActor = defineActor({
69
69
  }),
70
70
  tasks: {
71
71
  test: async (context, input) => {
72
+ console.log('starting test task');
72
73
  //@ts-ignore
73
74
  await context.native.fileDialogs.selectFile(process.env.TEST)
74
- await context.native.mouse.moveTo({x: 100, y: 200})
75
+ console.log('moving mouse in test task');
76
+ await context.native.mouse.moveTo({x: 100, y: 200})
77
+ console.log('finished test task');
75
78
  },
76
79
  searchJobs: async (context, input: UpworkJobSearchFields = {}): Promise<UpworkJobListing[]> => {
80
+ console.log('starting job search task');
77
81
  const path = '/nx/s/universal-search/jobs?category2_uid=531770282580668420,531770282580668419,531770282580668418&client_hires=1-9,10-&payment_verified=1&q=%27rancher%27%20or%20%27terraform%27%20or%20%27gitops%27%20or%20%27azure%27%20or%20%27microsoft%20azure%27%20or%20%27cloud%20architect%27%20or%20%27ai%20architect%27%20or%20%27forward%20deployed%20engineer%27%20or%20%27aws%27%20or%20%27aks%27%20or%20%27eks%27%20or%20%27gke%27%20or%20%27cloud%20engineer%27%20or%20devops%20or%20kuberentes%20or%20%27platform%20engineer%27%20or%20%27infrastructure%20engineer%27%20or%20"google%20cloud%20platform"%20or%20"GCP"%20or%20"langsmith"%20or%20"langgraph"%20or%20"gemini%20enterprise"&sort=recency&user_location_match=1';
78
82
 
83
+ console.log('navigating to jobs search page');
79
84
  await context.nav.goto(path, {});
80
85
 
81
- return await parseUpworkSearchResults(context.session.page as Page);
86
+ console.log('parsing jobs search results');
87
+ const results = await parseUpworkSearchResults(context.session.page as Page);
88
+ console.log('finished job search task');
89
+ return results;
82
90
  },
83
91
  getJob: async (_context, input: UpworkJobSelector): Promise<{
84
92
  jobDetails: UpworkJobDetails,
85
93
  jobQuestions: UpworkProposalQuestions
86
94
  }> => {
95
+ console.log('starting get job task');
96
+ console.log('opening job details page');
87
97
  await _context.nav.goto(`/jobs/~02${input.jobId}/`);
88
98
 
99
+ console.log('parsing job details content');
89
100
  const jobDetails = parseUpworkJobDetailsPage(await _context.session.page.content());
90
101
 
102
+ console.log('opening job application page');
91
103
  await _context.nav.goto(`/nx/proposals/job/~02${input.jobId}/apply/`);
92
104
 
105
+ console.log('parsing proposal questions');
93
106
  const jobQuestions = await parseUpworkProposalQuestions(_context.session.page as Page);
107
+ console.log('finished get job task');
94
108
  return {
95
109
  jobDetails,
96
110
  jobQuestions
97
111
  }
98
112
  },
99
113
  applyToJob: async (_context, input: UpworkApplyToJobInput & UpworkProposalAnswers): Promise<UpworkApplyToJobResult> => {
114
+ try {
115
+ console.log('starting apply to job task');
116
+ console.log('opening apply page');
117
+ await _context.nav.goto(`/nx/proposals/job/~02${input.jobId}/apply/`);
100
118
 
101
- await _context.nav.goto(`/nx/proposals/job/~02${input.jobId}/apply/`);
102
-
103
- await _context.cursor.move('.up-fe-agency-member-selector > [data-test="dropdown-toggle"]')
104
- await _context.cursor.click('.up-fe-agency-member-selector > [data-test="dropdown-toggle"]')
119
+ console.log('Moving mouse to agency selector');
120
+ //await _context.cursor.move('.up-fe-agency-member-selector > [data-test="dropdown-toggle"]')
121
+ console.log('Clicking agency selector');
122
+ await _context.cursor.click('.up-fe-agency-member-selector > [data-test="dropdown-toggle"]')
105
123
 
106
- await _context.cursor.move('li[role="option"][tabindex="0"]')
107
- await _context.cursor.click('li[role="option"][tabindex="0"]')
124
+ console.log('Moving mouse to agency option');
125
+ //await _context.cursor.move('li[role="option"][tabindex="0"]')
126
+ await _context.cursor.click('li[role="option"][tabindex="0"]')
108
127
 
109
- await _context.cursor.move('.up-fe-contractor-selector > [data-test="dropdown-toggle"]')
110
- await _context.cursor.click('.up-fe-contractor-selector > [data-test="dropdown-toggle"]')
128
+ console.log('opening contractor selector');
129
+ //await _context.cursor.move('.up-fe-contractor-selector > [data-test="dropdown-toggle"]')
130
+ await _context.cursor.click('.up-fe-contractor-selector > [data-test="dropdown-toggle"]')
111
131
 
112
- await _context.cursor.move('li[role="option"][tabindex="0"]')
113
- await _context.cursor.click('li[role="option"][tabindex="0"]')
132
+ console.log('selecting contractor option');
133
+ //await _context.cursor.move('li[role="option"][tabindex="0"]')
134
+ await _context.cursor.click('li[role="option"][tabindex="0"]')
114
135
 
115
- await _context.cursor.scrollIntoView('[data-test="sri-form-card"] > [data-test="dropdown-toggle"] > [aria-label="How often do you want a rate increase?"]')
136
+ console.log('scrolling to rate increase selector');
137
+ await _context.cursor.scrollIntoView('[data-test="sri-form-card"] > [data-test="dropdown-toggle"] > [aria-label="How often do you want a rate increase?"]')
116
138
 
117
- await _context.cursor.move('[data-test="sri-form-card"] > [data-test="dropdown-toggle"] > [aria-label="How often do you want a rate increase?"]')
118
- await _context.cursor.click('[data-test="sri-form-card"] > [data-test="dropdown-toggle"] > [aria-label="How often do you want a rate increase?"]')
119
- await _context.cursor.move('li[role="option"][tabindex="0"]')
120
- await _context.cursor.click('li[role="option"][tabindex="0"]')
139
+ console.log('opening rate increase selector');
140
+ //await _context.cursor.move('[data-test="sri-form-card"] > [data-test="dropdown-toggle"] > [aria-label="How often do you want a rate increase?"]')
141
+ await _context.cursor.click('[data-test="sri-form-card"] > [data-test="dropdown-toggle"] > [aria-label="How often do you want a rate increase?"]')
142
+ //await _context.cursor.move('li[role="option"][tabindex="0"]')
143
+ await _context.cursor.click('li[role="option"][tabindex="0"]')
121
144
 
122
- await fillUpworkProposalQuestions(_context.session.page as Page, input.answers)
145
+ console.log('filling proposal answers');
146
+ await fillUpworkProposalQuestions(_context.session.page as Page, input.answers)
123
147
 
148
+ }
149
+ catch(e){
150
+ console.error(e)
151
+ console.log(e);
152
+ }
153
+ console.log('building apply result payload');
124
154
  return {
125
155
  coverLetter: input.answers.coverLetter ?? '',
126
156
  rate: parseRate(input.rate)