terminalhire 0.10.11 → 0.11.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.
@@ -5840,6 +5840,53 @@ var init_chatCrypto = __esm({
5840
5840
  }
5841
5841
  });
5842
5842
 
5843
+ // ../../packages/core/src/job-status.ts
5844
+ function recordClick(map, id) {
5845
+ const prev = map[id];
5846
+ if (prev?.clicked === true) return map;
5847
+ return { ...map, [id]: { ...prev, clicked: true } };
5848
+ }
5849
+ function setStatus(map, id, s, markedAt = (/* @__PURE__ */ new Date()).toISOString()) {
5850
+ const prev = map[id];
5851
+ return { ...map, [id]: { ...prev, status: s, markedAt } };
5852
+ }
5853
+ function funnelCounts(map) {
5854
+ const counts = { clicked: 0, applied: 0, saved: 0, dismissed: 0 };
5855
+ for (const key of Object.keys(map)) {
5856
+ const rec = map[key];
5857
+ if (rec.clicked === true) counts.clicked++;
5858
+ if (rec.status) counts[rec.status]++;
5859
+ }
5860
+ return counts;
5861
+ }
5862
+ function pageMatches(items, page, limit) {
5863
+ const lim = Math.max(1, Math.floor(limit));
5864
+ const total = items.length;
5865
+ const totalPages = Math.max(1, Math.ceil(total / lim));
5866
+ const clamped = Math.min(Math.max(1, Math.floor(page)), totalPages);
5867
+ const start = (clamped - 1) * lim;
5868
+ return {
5869
+ items: items.slice(start, start + lim),
5870
+ page: clamped,
5871
+ limit: lim,
5872
+ total,
5873
+ totalPages,
5874
+ hasPrev: clamped > 1,
5875
+ hasNext: clamped < totalPages
5876
+ };
5877
+ }
5878
+ function decorate(matches, statusMap) {
5879
+ return matches.map((m) => {
5880
+ const rec = statusMap[m.job.id];
5881
+ return rec ? { ...m, jobStatus: rec } : { ...m };
5882
+ });
5883
+ }
5884
+ var init_job_status = __esm({
5885
+ "../../packages/core/src/job-status.ts"() {
5886
+ "use strict";
5887
+ }
5888
+ });
5889
+
5843
5890
  // ../../packages/core/src/index.ts
5844
5891
  var src_exports = {};
5845
5892
  __export(src_exports, {
@@ -5881,6 +5928,7 @@ __export(src_exports, {
5881
5928
  computeAcceptanceCredential: () => computeAcceptanceCredential,
5882
5929
  computeAcceptanceCredentialPublic: () => computeAcceptanceCredentialPublic,
5883
5930
  coreTagsFromTitle: () => coreTagsFromTitle,
5931
+ decorate: () => decorate,
5884
5932
  decryptMessage: () => decryptMessage,
5885
5933
  deriveResumeTrend: () => deriveResumeTrend,
5886
5934
  deriveSharedKey: () => deriveSharedKey,
@@ -5891,6 +5939,7 @@ __export(src_exports, {
5891
5939
  fetchOwnedRepoTraction: () => fetchOwnedRepoTraction,
5892
5940
  fetchRepoRecency: () => fetchRepoRecency,
5893
5941
  flattenTiers: () => flattenTiers,
5942
+ funnelCounts: () => funnelCounts,
5894
5943
  generateIdentityKeypair: () => generateIdentityKeypair,
5895
5944
  getBuyer: () => getBuyer,
5896
5945
  githubBounties: () => githubBounties,
@@ -5909,12 +5958,15 @@ __export(src_exports, {
5909
5958
  match: () => match,
5910
5959
  normalize: () => normalize,
5911
5960
  opire: () => opire,
5961
+ pageMatches: () => pageMatches,
5912
5962
  passesMaturityGate: () => passesMaturityGate,
5913
5963
  personCardToJob: () => personCardToJob,
5914
5964
  projectCardToJob: () => projectCardToJob,
5965
+ recordClick: () => recordClick,
5915
5966
  rejectExtraIntroFields: () => rejectExtraIntroFields,
5916
5967
  revealIntroContacts: () => revealIntroContacts,
5917
5968
  safetyNumber: () => safetyNumber,
5969
+ setStatus: () => setStatus,
5918
5970
  tokenize: () => tokenize,
5919
5971
  validateGraph: () => validateGraph,
5920
5972
  validateIntroPayload: () => validateIntroPayload,
@@ -5935,6 +5987,7 @@ var init_src = __esm({
5935
5987
  init_intro();
5936
5988
  init_directoryThreshold();
5937
5989
  init_chatCrypto();
5990
+ init_job_status();
5938
5991
  }
5939
5992
  });
5940
5993
 
@@ -3749,6 +3749,13 @@ var init_chatCrypto = __esm({
3749
3749
  }
3750
3750
  });
3751
3751
 
3752
+ // ../../packages/core/src/job-status.ts
3753
+ var init_job_status = __esm({
3754
+ "../../packages/core/src/job-status.ts"() {
3755
+ "use strict";
3756
+ }
3757
+ });
3758
+
3752
3759
  // ../../packages/core/src/index.ts
3753
3760
  var init_src = __esm({
3754
3761
  "../../packages/core/src/index.ts"() {
@@ -3763,6 +3770,7 @@ var init_src = __esm({
3763
3770
  init_intro();
3764
3771
  init_directoryThreshold();
3765
3772
  init_chatCrypto();
3773
+ init_job_status();
3766
3774
  }
3767
3775
  });
3768
3776
 
@@ -3767,6 +3767,13 @@ var init_chatCrypto = __esm({
3767
3767
  }
3768
3768
  });
3769
3769
 
3770
+ // ../../packages/core/src/job-status.ts
3771
+ var init_job_status = __esm({
3772
+ "../../packages/core/src/job-status.ts"() {
3773
+ "use strict";
3774
+ }
3775
+ });
3776
+
3770
3777
  // ../../packages/core/src/index.ts
3771
3778
  var init_src = __esm({
3772
3779
  "../../packages/core/src/index.ts"() {
@@ -3781,6 +3788,7 @@ var init_src = __esm({
3781
3788
  init_intro();
3782
3789
  init_directoryThreshold();
3783
3790
  init_chatCrypto();
3791
+ init_job_status();
3784
3792
  }
3785
3793
  });
3786
3794
 
@@ -5840,6 +5840,53 @@ var init_chatCrypto = __esm({
5840
5840
  }
5841
5841
  });
5842
5842
 
5843
+ // ../../packages/core/src/job-status.ts
5844
+ function recordClick(map, id) {
5845
+ const prev = map[id];
5846
+ if (prev?.clicked === true) return map;
5847
+ return { ...map, [id]: { ...prev, clicked: true } };
5848
+ }
5849
+ function setStatus(map, id, s, markedAt = (/* @__PURE__ */ new Date()).toISOString()) {
5850
+ const prev = map[id];
5851
+ return { ...map, [id]: { ...prev, status: s, markedAt } };
5852
+ }
5853
+ function funnelCounts(map) {
5854
+ const counts = { clicked: 0, applied: 0, saved: 0, dismissed: 0 };
5855
+ for (const key of Object.keys(map)) {
5856
+ const rec = map[key];
5857
+ if (rec.clicked === true) counts.clicked++;
5858
+ if (rec.status) counts[rec.status]++;
5859
+ }
5860
+ return counts;
5861
+ }
5862
+ function pageMatches(items, page, limit) {
5863
+ const lim = Math.max(1, Math.floor(limit));
5864
+ const total = items.length;
5865
+ const totalPages = Math.max(1, Math.ceil(total / lim));
5866
+ const clamped = Math.min(Math.max(1, Math.floor(page)), totalPages);
5867
+ const start = (clamped - 1) * lim;
5868
+ return {
5869
+ items: items.slice(start, start + lim),
5870
+ page: clamped,
5871
+ limit: lim,
5872
+ total,
5873
+ totalPages,
5874
+ hasPrev: clamped > 1,
5875
+ hasNext: clamped < totalPages
5876
+ };
5877
+ }
5878
+ function decorate(matches, statusMap) {
5879
+ return matches.map((m) => {
5880
+ const rec = statusMap[m.job.id];
5881
+ return rec ? { ...m, jobStatus: rec } : { ...m };
5882
+ });
5883
+ }
5884
+ var init_job_status = __esm({
5885
+ "../../packages/core/src/job-status.ts"() {
5886
+ "use strict";
5887
+ }
5888
+ });
5889
+
5843
5890
  // ../../packages/core/src/index.ts
5844
5891
  var src_exports = {};
5845
5892
  __export(src_exports, {
@@ -5881,6 +5928,7 @@ __export(src_exports, {
5881
5928
  computeAcceptanceCredential: () => computeAcceptanceCredential,
5882
5929
  computeAcceptanceCredentialPublic: () => computeAcceptanceCredentialPublic,
5883
5930
  coreTagsFromTitle: () => coreTagsFromTitle,
5931
+ decorate: () => decorate,
5884
5932
  decryptMessage: () => decryptMessage,
5885
5933
  deriveResumeTrend: () => deriveResumeTrend,
5886
5934
  deriveSharedKey: () => deriveSharedKey,
@@ -5891,6 +5939,7 @@ __export(src_exports, {
5891
5939
  fetchOwnedRepoTraction: () => fetchOwnedRepoTraction,
5892
5940
  fetchRepoRecency: () => fetchRepoRecency,
5893
5941
  flattenTiers: () => flattenTiers,
5942
+ funnelCounts: () => funnelCounts,
5894
5943
  generateIdentityKeypair: () => generateIdentityKeypair,
5895
5944
  getBuyer: () => getBuyer,
5896
5945
  githubBounties: () => githubBounties,
@@ -5909,12 +5958,15 @@ __export(src_exports, {
5909
5958
  match: () => match,
5910
5959
  normalize: () => normalize,
5911
5960
  opire: () => opire,
5961
+ pageMatches: () => pageMatches,
5912
5962
  passesMaturityGate: () => passesMaturityGate,
5913
5963
  personCardToJob: () => personCardToJob,
5914
5964
  projectCardToJob: () => projectCardToJob,
5965
+ recordClick: () => recordClick,
5915
5966
  rejectExtraIntroFields: () => rejectExtraIntroFields,
5916
5967
  revealIntroContacts: () => revealIntroContacts,
5917
5968
  safetyNumber: () => safetyNumber,
5969
+ setStatus: () => setStatus,
5918
5970
  tokenize: () => tokenize,
5919
5971
  validateGraph: () => validateGraph,
5920
5972
  validateIntroPayload: () => validateIntroPayload,
@@ -5935,6 +5987,7 @@ var init_src = __esm({
5935
5987
  init_intro();
5936
5988
  init_directoryThreshold();
5937
5989
  init_chatCrypto();
5990
+ init_job_status();
5938
5991
  }
5939
5992
  });
5940
5993