@badger_badger/badger_hq 1.5.1 → 1.7.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.
package/dist/index.cjs CHANGED
@@ -88,6 +88,21 @@ var SOURCE_ROUTE_VALUES = ["scraper", "monitor", "waiting_for_scraper"];
88
88
  var SourceRoute = zod.z.enum(SOURCE_ROUTE_VALUES);
89
89
  var SOURCE_STATUS_VALUES = ["active", "paused", "closed", "access_problem"];
90
90
  var SourceStatus = zod.z.enum(SOURCE_STATUS_VALUES);
91
+ var ACCESS_ISSUE_VALUES = [
92
+ "login_required",
93
+ "private",
94
+ "bot_detection",
95
+ "captcha",
96
+ "geo_blocked",
97
+ "rate_limited",
98
+ "not_found",
99
+ "no_collector",
100
+ "collector_full",
101
+ "other"
102
+ ];
103
+ var AccessIssue = zod.z.enum(ACCESS_ISSUE_VALUES);
104
+ var CAPTURE_WINDOW_MODE_VALUES = ["last_days", "range"];
105
+ var CaptureWindowMode = zod.z.enum(CAPTURE_WINDOW_MODE_VALUES);
91
106
  var DISCOVERED_BY_TYPE_VALUES = ["scout", "analyst", "agent", "client", "import"];
92
107
  var DiscoveredByType = zod.z.enum(DISCOVERED_BY_TYPE_VALUES);
93
108
  var SOURCE_IMPORT_KIND_VALUES = ["create", "update"];
@@ -135,6 +150,8 @@ var AGENT_SOURCE_OUTCOME_VALUES = [
135
150
  var AgentSourceOutcome = zod.z.enum(AGENT_SOURCE_OUTCOME_VALUES);
136
151
  var CAPTURE_STATUS_VALUES = ["uploaded", "analyzing", "analyzed", "failed", "expired"];
137
152
  var CaptureStatus = zod.z.enum(CAPTURE_STATUS_VALUES);
153
+ var HOURS_LOG_SOURCE_VALUES = ["manual", "inferred"];
154
+ var HoursLogSource = zod.z.enum(HOURS_LOG_SOURCE_VALUES);
138
155
  var CAPTURE_DOM_STATUS_VALUES = ["ok", "unavailable", "truncated"];
139
156
  var CaptureDomStatus = zod.z.enum(CAPTURE_DOM_STATUS_VALUES);
140
157
  var LLM_CAPABILITY_VALUES = ["plan", "vision_extract", "judge", "chat"];
@@ -178,6 +195,50 @@ var COLLECTIONS = {
178
195
  captures: "captures",
179
196
  llmCalls: "llmCalls"
180
197
  };
198
+ var HOUR_MS = 36e5;
199
+ var VISIT_INTERVAL_MIN_MS = 1 * HOUR_MS;
200
+ var VISIT_INTERVAL_MAX_MS = 72 * HOUR_MS;
201
+ var URGENCY_FACTOR = {
202
+ emergency: 0.5,
203
+ missionPriority: { critical: 0.5, high: 0.75, medium: 1, low: 1.5 }
204
+ };
205
+ var OverdueLevelSchema = zod.z.enum(["none", "late", "missed"]);
206
+ function knownInterval(source) {
207
+ if (source.visitIntervalMs) return { ms: source.visitIntervalMs, urgencyApplied: false };
208
+ if (source.lastCollectedAt && source.nextVisitAt) {
209
+ const derived = source.nextVisitAt.getTime() - source.lastCollectedAt.getTime();
210
+ if (derived > 0) return { ms: derived, urgencyApplied: true };
211
+ }
212
+ return void 0;
213
+ }
214
+ function baseVisitInterval(source) {
215
+ return knownInterval(source)?.ms;
216
+ }
217
+ function urgencyFactor(urgency) {
218
+ const priority = urgency.missionPriority ? URGENCY_FACTOR.missionPriority[urgency.missionPriority] : 1;
219
+ return (urgency.emergency ? URGENCY_FACTOR.emergency : 1) * priority;
220
+ }
221
+ function clampInterval(ms) {
222
+ return Math.min(Math.max(ms, VISIT_INTERVAL_MIN_MS), VISIT_INTERVAL_MAX_MS);
223
+ }
224
+ function effectiveInterval(source, urgency) {
225
+ const known = knownInterval(source);
226
+ if (!known) return void 0;
227
+ return clampInterval(known.urgencyApplied ? known.ms : known.ms * urgencyFactor(urgency));
228
+ }
229
+ function effectiveDueAt(source, urgency, now = /* @__PURE__ */ new Date()) {
230
+ if (source.status === "access_problem") return void 0;
231
+ if (!source.lastCollectedAt) return now;
232
+ const interval = effectiveInterval(source, urgency);
233
+ if (interval === void 0) return source.nextVisitAt ?? now;
234
+ return new Date(source.lastCollectedAt.getTime() + interval);
235
+ }
236
+ function overdueLevel(dueAt, intervalMs, now = /* @__PURE__ */ new Date()) {
237
+ if (!dueAt) return "none";
238
+ const lateMs = now.getTime() - dueAt.getTime();
239
+ if (lateMs <= 0) return "none";
240
+ return intervalMs !== void 0 && lateMs > intervalMs ? "missed" : "late";
241
+ }
181
242
  var DatabaseName = zod.z.string().min(1).max(63).regex(/^[^/\\. "$*<>:|?]+$/, "Invalid MongoDB database name");
182
243
  var ConnectionString = zod.z.string().min(1).regex(/^mongodb(\+srv)?:\/\/\S+$/, "Expected a mongodb:// or mongodb+srv:// URI");
183
244
  var DatabaseSchema = zod.z.object({
@@ -216,6 +277,52 @@ var TaskCriteriaSchema = zod.z.object({
216
277
  coverageWindow: CoverageWindowSchema.optional(),
217
278
  emergency: zod.z.boolean().default(false)
218
279
  });
280
+ var MAX_CAPTURE_WINDOW_DAYS = 90;
281
+ var MONITOR_TASK_MAX_SOURCES = 20;
282
+ var DAY_MS = 24 * 60 * 60 * 1e3;
283
+ function isHttpUrl(value) {
284
+ try {
285
+ const { protocol } = new URL(value);
286
+ return protocol === "http:" || protocol === "https:";
287
+ } catch {
288
+ return false;
289
+ }
290
+ }
291
+ var WindowDate = zod.z.union([zod.z.date(), zod.z.string().datetime({ offset: true })]).pipe(zod.z.coerce.date());
292
+ var TaskTargetSchema = zod.z.object({
293
+ sourceId: ObjectIdString.optional(),
294
+ platform: Platform,
295
+ url: zod.z.string().url().refine(isHttpUrl, "Expected an http(s) URL"),
296
+ label: zod.z.string().min(1).max(200).optional(),
297
+ /** Why a person collects it instead of a scraper. */
298
+ accessIssue: AccessIssue.optional(),
299
+ note: zod.z.string().max(500).optional()
300
+ });
301
+ var LastDaysWindowSchema = zod.z.object({
302
+ mode: zod.z.literal(CaptureWindowMode.enum.last_days),
303
+ days: zod.z.number().int().min(1).max(MAX_CAPTURE_WINDOW_DAYS)
304
+ });
305
+ var RangeWindowSchema = zod.z.object({
306
+ mode: zod.z.literal(CaptureWindowMode.enum.range),
307
+ start: WindowDate,
308
+ end: WindowDate
309
+ });
310
+ var CaptureWindowSchema = zod.z.discriminatedUnion("mode", [LastDaysWindowSchema, RangeWindowSchema]).superRefine((w, ctx) => {
311
+ if (w.mode !== "range" || !(w.start instanceof Date) || !(w.end instanceof Date)) return;
312
+ if (w.end.getTime() <= w.start.getTime()) {
313
+ ctx.addIssue({
314
+ code: zod.z.ZodIssueCode.custom,
315
+ message: "captureWindow.end must be after captureWindow.start",
316
+ path: ["end"]
317
+ });
318
+ } else if (w.end.getTime() - w.start.getTime() > MAX_CAPTURE_WINDOW_DAYS * DAY_MS) {
319
+ ctx.addIssue({
320
+ code: zod.z.ZodIssueCode.custom,
321
+ message: `captureWindow range must be at most ${MAX_CAPTURE_WINDOW_DAYS} days`,
322
+ path: ["end"]
323
+ });
324
+ }
325
+ });
219
326
  var MissionSchema = zod.z.object({
220
327
  _id: ObjectIdString,
221
328
  orgId: ClerkOrgId,
@@ -251,6 +358,10 @@ var TaskSchema = zod.z.object({
251
358
  keywords: zod.z.array(zod.z.string().min(1)).default([]),
252
359
  searchQueries: zod.z.array(zod.z.string().min(1)).default([]),
253
360
  criteria: TaskCriteriaSchema,
361
+ /** Monitor: the one source to collect. Discovery: optional source to search inside. */
362
+ target: TaskTargetSchema.optional(),
363
+ /** Monitor: what to capture (last N days, or a fixed range). */
364
+ captureWindow: CaptureWindowSchema.optional(),
254
365
  status: TaskStatus.default("draft"),
255
366
  approvedBy: ClerkUserId.optional(),
256
367
  approvedAt: zod.z.coerce.date().optional(),
@@ -309,7 +420,9 @@ var HoursLogSchema = zod.z.object({
309
420
  scoutUserId: ClerkUserId,
310
421
  minutes: zod.z.number().int().positive(),
311
422
  note: zod.z.string(),
312
- date: zod.z.coerce.date()
423
+ date: zod.z.coerce.date(),
424
+ assignmentId: ObjectIdString.optional(),
425
+ source: HoursLogSource.optional()
313
426
  }).merge(TimestampsSchema).merge(SoftDeleteSchema);
314
427
  var HoursLogCreateSchema = HoursLogSchema.omit({
315
428
  _id: true,
@@ -488,7 +601,9 @@ var SourceSchema = zod.z.object({
488
601
  status: SourceStatus.default("active"),
489
602
  discoveredBy: DiscoveredBySchema,
490
603
  lastCollectedAt: zod.z.coerce.date().optional(),
491
- nextVisitAt: zod.z.coerce.date().optional()
604
+ nextVisitAt: zod.z.coerce.date().optional(),
605
+ /** Activity-based wait set by the last visit, before current urgency (see `effectiveDueAt`). */
606
+ visitIntervalMs: zod.z.number().int().positive().optional()
492
607
  }).merge(TimestampsSchema).merge(SoftDeleteSchema);
493
608
  var SourceCreateSchema = SourceSchema.omit({
494
609
  _id: true,
@@ -498,7 +613,8 @@ var SourceCreateSchema = SourceSchema.omit({
498
613
  updatedAt: true,
499
614
  deletedAt: true,
500
615
  discoveredBy: true,
501
- lastCollectedAt: true
616
+ lastCollectedAt: true,
617
+ visitIntervalMs: true
502
618
  });
503
619
  var SourceUpdateSchema = SourceCreateSchema.partial();
504
620
  var MAX_SOURCE_IMPORT_ROW_ERRORS = 500;
@@ -715,6 +831,8 @@ var AgentSessionSchema = zod.z.object({
715
831
  lastSeq: count(),
716
832
  stats: AgentSessionStatsSchema.default({}),
717
833
  budget: AgentSessionBudgetSchema.default({}),
834
+ /** The task's capture window as dates, fixed when the session started (`last_days` counted back from then). */
835
+ captureWindow: CoverageWindowSchema.optional(),
718
836
  /** Mode-specific engine state (search plan cursor, monitor queue). Opaque to clients. */
719
837
  state: zod.z.unknown().optional()
720
838
  }).merge(TimestampsSchema);
@@ -820,7 +938,14 @@ var CaptureDomSummarySchema = zod.z.object({
820
938
  var CaptureSchema = zod.z.object({
821
939
  _id: ObjectIdString,
822
940
  orgId: ClerkOrgId,
823
- sessionId: ObjectIdString,
941
+ /** Legacy: captures uploaded into a live session. Task-tagged captures have none. */
942
+ sessionId: ObjectIdString.optional(),
943
+ /** The assignment (and so the task) the person sent this capture for. */
944
+ assignmentId: ObjectIdString.optional(),
945
+ taskId: ObjectIdString.optional(),
946
+ missionId: ObjectIdString.optional(),
947
+ /** Who sent it; used to work out their hours. */
948
+ userId: ClerkUserId.optional(),
824
949
  /** From `chrome.tabs`, never from page content. */
825
950
  url: zod.z.string().url(),
826
951
  title: zod.z.string().max(500),
@@ -836,6 +961,10 @@ var CaptureSchema = zod.z.object({
836
961
  /** Validated `vision_extract` output; shape depends on session mode. */
837
962
  analysis: zod.z.unknown().optional(),
838
963
  error: zod.z.string().max(1e3).optional(),
964
+ /** Analysis attempts by the capture worker; it gives up (`failed`) after a few. */
965
+ attempts: zod.z.number().int().min(0).default(0),
966
+ /** When the worker claimed it (`analyzing`); an old claim is taken over after a restart. */
967
+ claimedAt: zod.z.coerce.date().optional(),
839
968
  /** Blob deleted and status set to `expired` after this instant (CAPTURE_RETENTION_DAYS). */
840
969
  expiresAt: zod.z.coerce.date()
841
970
  }).merge(TimestampsSchema);
@@ -916,6 +1045,17 @@ var AgentTaskCriteriaSchema = zod.z.object({
916
1045
  coverageWindow: CoverageWindowSchema.optional(),
917
1046
  emergency: zod.z.boolean()
918
1047
  });
1048
+ var AgentTaskTargetSchema = TaskTargetSchema.omit({ sourceId: true });
1049
+ var AgentTaskSourceSchema = zod.z.object({
1050
+ platform: Platform,
1051
+ url: zod.z.string().url().refine(isHttpUrl, "Expected an http(s) URL"),
1052
+ label: zod.z.string().min(1).optional(),
1053
+ lastCapturedAt: zod.z.coerce.date().optional(),
1054
+ /** When to capture it again, under current urgency (absent: parked on an access problem). */
1055
+ dueAt: zod.z.coerce.date().optional(),
1056
+ /** Parked: a person couldn't get in; an analyst reviews it. */
1057
+ accessProblem: zod.z.boolean().optional()
1058
+ });
919
1059
  var AgentTaskSchema = zod.z.object({
920
1060
  id: ObjectIdString,
921
1061
  title: zod.z.string(),
@@ -924,6 +1064,10 @@ var AgentTaskSchema = zod.z.object({
924
1064
  keywords: zod.z.array(zod.z.string()),
925
1065
  searchQueries: zod.z.array(zod.z.string()),
926
1066
  criteria: AgentTaskCriteriaSchema,
1067
+ target: AgentTaskTargetSchema.optional(),
1068
+ /** Monitor: the attached sources other than `target`, sorted by platform then URL. */
1069
+ sources: zod.z.array(AgentTaskSourceSchema).default([]),
1070
+ captureWindow: CaptureWindowSchema.optional(),
927
1071
  status: TaskStatus,
928
1072
  version: zod.z.number().int().min(1),
929
1073
  updatedAt: zod.z.coerce.date()
@@ -944,7 +1088,9 @@ var AgentAssignmentsResponseSchema = zod.z.object({
944
1088
  });
945
1089
  var AgentAssignmentVersionSchema = zod.z.object({
946
1090
  assignmentId: ObjectIdString,
947
- taskVersion: zod.z.number().int().min(1)
1091
+ taskVersion: zod.z.number().int().min(1),
1092
+ /** Monitor: the latest change to any attached source (a visit moves it; the task version doesn't). */
1093
+ sourcesUpdatedAt: zod.z.coerce.date().optional()
948
1094
  });
949
1095
  var AgentAssignmentVersionsResponseSchema = zod.z.object({
950
1096
  items: zod.z.array(AgentAssignmentVersionSchema)
@@ -984,7 +1130,11 @@ var AgentSessionViewSchema = zod.z.object({
984
1130
  endedAt: zod.z.coerce.date().nullable(),
985
1131
  activeMinutes: zod.z.number().int().min(0),
986
1132
  lastSeq: zod.z.number().int().min(0),
987
- stats: AgentSessionStatsSchema
1133
+ stats: AgentSessionStatsSchema,
1134
+ /** The task's source (no internal id), when it has one. */
1135
+ target: AgentTaskTargetSchema.optional(),
1136
+ /** The capture window resolved to dates when the session started. */
1137
+ captureWindow: CoverageWindowSchema.optional()
988
1138
  });
989
1139
  var AgentMessageViewSchema = zod.z.object({
990
1140
  id: ObjectIdString,
@@ -1101,6 +1251,7 @@ var PriorityAlertResponseSchema = zod.z.object({
1101
1251
  var INTERNAL_ERROR_CODE_VALUES = ["UNAUTHENTICATED", "NOT_FOUND", "VALIDATION_ERROR", "INTERNAL"];
1102
1252
  var InternalErrorCode = zod.z.enum(INTERNAL_ERROR_CODE_VALUES);
1103
1253
 
1254
+ exports.ACCESS_ISSUE_VALUES = ACCESS_ISSUE_VALUES;
1104
1255
  exports.AGENT_CARD_KIND_VALUES = AGENT_CARD_KIND_VALUES;
1105
1256
  exports.AGENT_ERROR_CODE_VALUES = AGENT_ERROR_CODE_VALUES;
1106
1257
  exports.AGENT_MESSAGE_KIND_VALUES = AGENT_MESSAGE_KIND_VALUES;
@@ -1112,6 +1263,7 @@ exports.AGENT_SOURCE_OUTCOME_VALUES = AGENT_SOURCE_OUTCOME_VALUES;
1112
1263
  exports.ASSIGNEE_TYPE_VALUES = ASSIGNEE_TYPE_VALUES;
1113
1264
  exports.ASSIGNMENT_SOURCE_VALUES = ASSIGNMENT_SOURCE_VALUES;
1114
1265
  exports.ASSIGNMENT_STATUS_VALUES = ASSIGNMENT_STATUS_VALUES;
1266
+ exports.AccessIssue = AccessIssue;
1115
1267
  exports.AgentActiveSessionResponseSchema = AgentActiveSessionResponseSchema;
1116
1268
  exports.AgentAssignmentItemSchema = AgentAssignmentItemSchema;
1117
1269
  exports.AgentAssignmentVersionSchema = AgentAssignmentVersionSchema;
@@ -1149,6 +1301,8 @@ exports.AgentSourceOutcome = AgentSourceOutcome;
1149
1301
  exports.AgentStreamEventSchema = AgentStreamEventSchema;
1150
1302
  exports.AgentTaskCriteriaSchema = AgentTaskCriteriaSchema;
1151
1303
  exports.AgentTaskSchema = AgentTaskSchema;
1304
+ exports.AgentTaskSourceSchema = AgentTaskSourceSchema;
1305
+ exports.AgentTaskTargetSchema = AgentTaskTargetSchema;
1152
1306
  exports.AnalystProfileSchema = AnalystProfileSchema;
1153
1307
  exports.AnalystProfileUpdateSchema = AnalystProfileUpdateSchema;
1154
1308
  exports.ApiErrorSchema = ApiErrorSchema;
@@ -1167,6 +1321,7 @@ exports.AvailabilityWindowSchema = AvailabilityWindowSchema;
1167
1321
  exports.BlobRefSchema = BlobRefSchema;
1168
1322
  exports.CAPTURE_DOM_STATUS_VALUES = CAPTURE_DOM_STATUS_VALUES;
1169
1323
  exports.CAPTURE_STATUS_VALUES = CAPTURE_STATUS_VALUES;
1324
+ exports.CAPTURE_WINDOW_MODE_VALUES = CAPTURE_WINDOW_MODE_VALUES;
1170
1325
  exports.COLLECTIONS = COLLECTIONS;
1171
1326
  exports.COLLECTOR_TYPE_VALUES = COLLECTOR_TYPE_VALUES;
1172
1327
  exports.CaptureCreateSchema = CaptureCreateSchema;
@@ -1178,6 +1333,8 @@ exports.CaptureRegionSchema = CaptureRegionSchema;
1178
1333
  exports.CaptureSchema = CaptureSchema;
1179
1334
  exports.CaptureStatus = CaptureStatus;
1180
1335
  exports.CaptureThumbCardSchema = CaptureThumbCardSchema;
1336
+ exports.CaptureWindowMode = CaptureWindowMode;
1337
+ exports.CaptureWindowSchema = CaptureWindowSchema;
1181
1338
  exports.ClerkOrgId = ClerkOrgId;
1182
1339
  exports.ClerkUserId = ClerkUserId;
1183
1340
  exports.CollectorSchema = CollectorSchema;
@@ -1218,8 +1375,10 @@ exports.Email = Email;
1218
1375
  exports.GLOBAL_LOAD_SCOPE = GLOBAL_LOAD_SCOPE;
1219
1376
  exports.GeoSchema = GeoSchema;
1220
1377
  exports.HHmm = HHmm;
1378
+ exports.HOURS_LOG_SOURCE_VALUES = HOURS_LOG_SOURCE_VALUES;
1221
1379
  exports.HoursLogCreateSchema = HoursLogCreateSchema;
1222
1380
  exports.HoursLogSchema = HoursLogSchema;
1381
+ exports.HoursLogSource = HoursLogSource;
1223
1382
  exports.HoursLogUpdateSchema = HoursLogUpdateSchema;
1224
1383
  exports.HoursProposalCardSchema = HoursProposalCardSchema;
1225
1384
  exports.INTERNAL_ERROR_CODE_VALUES = INTERNAL_ERROR_CODE_VALUES;
@@ -1237,11 +1396,13 @@ exports.LlmProvider = LlmProvider;
1237
1396
  exports.LlmUsageSchema = LlmUsageSchema;
1238
1397
  exports.LoadScope = LoadScope;
1239
1398
  exports.MAX_AGENT_MESSAGE_TEXT_LENGTH = MAX_AGENT_MESSAGE_TEXT_LENGTH;
1399
+ exports.MAX_CAPTURE_WINDOW_DAYS = MAX_CAPTURE_WINDOW_DAYS;
1240
1400
  exports.MAX_RATING_COMMENT_LENGTH = MAX_RATING_COMMENT_LENGTH;
1241
1401
  exports.MAX_SOURCE_IMPORT_ROW_ERRORS = MAX_SOURCE_IMPORT_ROW_ERRORS;
1242
1402
  exports.MAX_SOURCE_INTAKE_CANDIDATES = MAX_SOURCE_INTAKE_CANDIDATES;
1243
1403
  exports.MISSION_PRIORITY_VALUES = MISSION_PRIORITY_VALUES;
1244
1404
  exports.MISSION_STATUS_VALUES = MISSION_STATUS_VALUES;
1405
+ exports.MONITOR_TASK_MAX_SOURCES = MONITOR_TASK_MAX_SOURCES;
1245
1406
  exports.MatchingFieldsSchema = MatchingFieldsSchema;
1246
1407
  exports.MissionCreateSchema = MissionCreateSchema;
1247
1408
  exports.MissionPriority = MissionPriority;
@@ -1252,6 +1413,7 @@ exports.ObjectIdString = ObjectIdString;
1252
1413
  exports.OpenLinkCardSchema = OpenLinkCardSchema;
1253
1414
  exports.OrgSettingsSchema = OrgSettingsSchema;
1254
1415
  exports.OrgSettingsUpdateSchema = OrgSettingsUpdateSchema;
1416
+ exports.OverdueLevelSchema = OverdueLevelSchema;
1255
1417
  exports.PLATFORM_VALUES = PLATFORM_VALUES;
1256
1418
  exports.PaginatedSchema = PaginatedSchema;
1257
1419
  exports.PaginationQuerySchema = PaginationQuerySchema;
@@ -1327,10 +1489,21 @@ exports.TaskKind = TaskKind;
1327
1489
  exports.TaskOrigin = TaskOrigin;
1328
1490
  exports.TaskSchema = TaskSchema;
1329
1491
  exports.TaskStatus = TaskStatus;
1492
+ exports.TaskTargetSchema = TaskTargetSchema;
1330
1493
  exports.TaskUpdateSchema = TaskUpdateSchema;
1331
1494
  exports.TimeZone = TimeZone;
1332
1495
  exports.TimestampsSchema = TimestampsSchema;
1496
+ exports.URGENCY_FACTOR = URGENCY_FACTOR;
1333
1497
  exports.VETTING_STATUS_VALUES = VETTING_STATUS_VALUES;
1498
+ exports.VISIT_INTERVAL_MAX_MS = VISIT_INTERVAL_MAX_MS;
1499
+ exports.VISIT_INTERVAL_MIN_MS = VISIT_INTERVAL_MIN_MS;
1334
1500
  exports.VettingStatus = VettingStatus;
1501
+ exports.baseVisitInterval = baseVisitInterval;
1502
+ exports.clampInterval = clampInterval;
1503
+ exports.effectiveDueAt = effectiveDueAt;
1504
+ exports.effectiveInterval = effectiveInterval;
1505
+ exports.isHttpUrl = isHttpUrl;
1506
+ exports.overdueLevel = overdueLevel;
1507
+ exports.urgencyFactor = urgencyFactor;
1335
1508
  //# sourceMappingURL=index.cjs.map
1336
1509
  //# sourceMappingURL=index.cjs.map