@deslop/scope 0.1.1260 → 0.1.1263

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.
@@ -15,7 +15,7 @@
15
15
  <link rel="manifest" href="/manifest.webmanifest" />
16
16
 
17
17
  <title>Scope</title>
18
- <script type="module" crossorigin src="/assets/index-sTUZH6pm.js"></script>
18
+ <script type="module" crossorigin src="/assets/index-vfC4xOcR.js"></script>
19
19
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-WkwZ5CU-.js">
20
20
  <link rel="modulepreload" crossorigin href="/assets/effect-B9VWHDXW.js">
21
21
  <link rel="modulepreload" crossorigin href="/assets/react-COyt-gOi.js">
package/dist/server.js CHANGED
@@ -89812,6 +89812,9 @@ function layerOtlp(serviceName, url, runtime, version) {
89812
89812
  const ISSUER_PATH = "/api/auth";
89813
89813
  const APPS_PATH = "/api/apps";
89814
89814
  const SESSION_COOKIE = "__Host-session";
89815
+ function matchingSessions(saved, userId) {
89816
+ return sort(filter$3(getSomes(saved), (session) => session.value.user.id === userId), mapInput(flip$2(Number$6), (session) => session.value.expiresAt));
89817
+ }
89815
89818
  function bearerOf(headers) {
89816
89819
  return flatMapNullishOr(match$3(/^bearer +(?<token>\S+) *$/iu)(headers["authorization"] ?? ""), (found) => found.groups?.["token"]);
89817
89820
  }
@@ -90865,8 +90868,7 @@ var Sessions = class Sessions extends Service$2()("@deslop/runtime/auth/sessions
90865
90868
  key,
90866
90869
  value
90867
90870
  }))), { concurrency: "unbounded" });
90868
- const candidates = sort(filter$3(getSomes(saved), (session) => session.value.user.id === userId), mapInput(flip$2(Number$6), (session) => session.value.expiresAt));
90869
- for (const session of candidates) {
90871
+ for (const session of matchingSessions(saved, userId)) {
90870
90872
  if (yield* fresh(session.value)) return session.value.access;
90871
90873
  const renewed = yield* result$1(pipe(refreshed(session.key), rejected("AI access is temporarily unavailable")));
90872
90874
  if (renewed._tag === "Success") return renewed.success.access;
@@ -91872,7 +91874,7 @@ function queryOf(filters, now) {
91872
91874
  };
91873
91875
  }
91874
91876
  function logTime(log, now) {
91875
- return pipe(filter$3([log.timeUnixNano, log.observedTimeUnixNano], (time) => time !== void 0 && time !== "0"), head, flatMap$8(fromUndefinedOr), getOrElse(() => now));
91877
+ return pipe(findFirst([log.timeUnixNano, log.observedTimeUnixNano], (time) => time !== void 0 && time !== "0"), flatMap$8(fromUndefinedOr), getOrElse(() => now));
91876
91878
  }
91877
91879
  function resourceString(resource, key) {
91878
91880
  return pipe(resource.attributes ?? [], findFirst((attribute) => attribute.key === key), flatMap$8((attribute) => liftPredicate(attribute.value["stringValue"], isString$1)), getOrElse(() => ""));
@@ -91906,6 +91908,40 @@ function superseded(entry, newest) {
91906
91908
  const version = releaseOf(entry);
91907
91909
  return version !== "" && exists(get$10(newest, entry.service), (latest) => isLessThan$1(byRelease)(version, latest));
91908
91910
  }
91911
+ function retentionOf(current, newest, receivedAt, retentionMs) {
91912
+ const now = BigInt(receivedAt) * 1000000n;
91913
+ const cutoff = now - BigInt(retentionMs) * 1000000n;
91914
+ const entries = fromIterable$6(values(current));
91915
+ const repaired = map$8(filter$3(entries, (entry) => entry.receivedAt === void 0 && BigInt(entry.time) > now), (entry) => ({
91916
+ ...entry,
91917
+ receivedAt
91918
+ }));
91919
+ const expired = filter$3(entries, (entry) => {
91920
+ return match$8(fromUndefinedOr(entry.receivedAt), {
91921
+ onNone: () => BigInt(entry.time),
91922
+ onSome: (time) => BigInt(time) * 1000000n
91923
+ }) < cutoff || superseded(entry, newest);
91924
+ });
91925
+ return {
91926
+ expired,
91927
+ next: reduce(expired, reduce(repaired, current, (all, entry) => set$3(all, entry.id, entry)), (all, entry) => remove$2(all, entry.id)),
91928
+ repaired
91929
+ };
91930
+ }
91931
+ function reconcileReleases(current, entries, known) {
91932
+ const newest = newestVersions(entries, known);
91933
+ const accepted = filter$3(entries, (entry) => !superseded(entry, newest));
91934
+ const replaced = filter$3(match$1(isEmptyRecord(filter$4(newest, (latest, name) => known[name] !== latest)), {
91935
+ onFalse: () => fromIterable$6(values(current)),
91936
+ onTrue: () => []
91937
+ }), (entry) => superseded(entry, newest));
91938
+ return {
91939
+ accepted,
91940
+ newest,
91941
+ next: reduce(accepted, reduce(replaced, current, (all, entry) => remove$2(all, entry.id)), (all, entry) => set$3(all, entry.id, entry)),
91942
+ replaced
91943
+ };
91944
+ }
91909
91945
  function appName(service) {
91910
91946
  return pipe(service, replace(/^@deslop\//u, ""), replace(/-(?:server|client|ios)$/u, ""));
91911
91947
  }
@@ -91927,10 +91963,7 @@ function runsOf(entries) {
91927
91963
  return (entry) => runs[entry.id] ?? 0n;
91928
91964
  }
91929
91965
  function latestEntry(entries, run) {
91930
- return reduce(entries, headNonEmpty(entries), (current, entry) => {
91931
- if (run(entry) > run(current)) return entry;
91932
- return current;
91933
- });
91966
+ return max$2(entries, mapInput(BigInt$5, run));
91934
91967
  }
91935
91968
  function currentEntries(entries) {
91936
91969
  const run = runsOf(entries);
@@ -92000,10 +92033,7 @@ function serviceStatuses(entries) {
92000
92033
  const current = filter$3(group, (entry) => runOf(entry) === run);
92001
92034
  return {
92002
92035
  entries: current.length,
92003
- lastEventAt: reduce(current, "0", (time, entry) => {
92004
- if (BigInt(entry.time) > BigInt(time)) return entry.time;
92005
- return time;
92006
- }),
92036
+ lastEventAt: max$2(["0", ...map$8(current, (entry) => entry.time)], byTime),
92007
92037
  name,
92008
92038
  runStartedAt: `${run}`,
92009
92039
  runtime: runtime(latest.resource),
@@ -92072,10 +92102,10 @@ function traceView(entries, id) {
92072
92102
  }
92073
92103
  function rootOf(spans) {
92074
92104
  const ids = fromIterable$2(map$8(spans, (span) => span.spanId));
92075
- return headNonEmpty(sort(match$6(filter$3(spans, (span) => !has(ids, parentId(span))), {
92105
+ return min(match$6(filter$3(spans, (span) => !has(ids, parentId(span))), {
92076
92106
  onEmpty: () => spans,
92077
92107
  onNonEmpty: identity
92078
- }), byStart));
92108
+ }), byStart);
92079
92109
  }
92080
92110
  function spanAttributes(entry) {
92081
92111
  return getOrElse(decodeUnknownOption(ArraySchema(Attribute))(entry.payload["attributes"]), () => []);
@@ -92094,7 +92124,10 @@ function failureCount(group) {
92094
92124
  function brokeAt(spans) {
92095
92125
  const failed = filter$3(spans, (span) => span.status === 2);
92096
92126
  const parents = fromIterable$2(map$8(failed, parentId));
92097
- return head(sort(filter$3(failed, (span) => !has(parents, span.spanId)), byStart));
92127
+ return match$6(filter$3(failed, (span) => !has(parents, span.spanId)), {
92128
+ onEmpty: () => none(),
92129
+ onNonEmpty: (candidates) => some$1(min(candidates, byStart))
92130
+ });
92098
92131
  }
92099
92132
  function traced(records, now) {
92100
92133
  return flatMap$8(match$6(filter$3(records, (entry) => entry.signal === "trace"), {
@@ -92174,29 +92207,18 @@ var Telemetry = class extends Service$2()("@deslop/scope/services/telemetry/serv
92174
92207
  })));
92175
92208
  const prune = gen(function* () {
92176
92209
  const receivedAt = yield* currentTimeMillis;
92177
- const now = BigInt(receivedAt) * 1000000n;
92178
- const cutoff = now - BigInt(toMillis(RETENTION)) * 1000000n;
92179
92210
  const newest = yield* get$1(releases);
92180
92211
  yield* updateEffect(state, fnUntraced(function* (current) {
92181
- const repaired = map$8(filter$3(fromIterable$6(values(current)), (entry) => entry.receivedAt === void 0 && BigInt(entry.time) > now), (entry) => ({
92182
- ...entry,
92183
- receivedAt
92184
- }));
92185
- yield* forEach$1(repaired, (entry) => store.set(entry.id, entry), {
92212
+ const retention = retentionOf(current, newest, receivedAt, toMillis(RETENTION));
92213
+ yield* forEach$1(retention.repaired, (entry) => store.set(entry.id, entry), {
92186
92214
  concurrency: 1,
92187
92215
  discard: true
92188
92216
  });
92189
- const expired = filter$3(fromIterable$6(values(current)), (entry) => {
92190
- return match$8(fromUndefinedOr(entry.receivedAt), {
92191
- onNone: () => BigInt(entry.time),
92192
- onSome: (time) => BigInt(time) * 1000000n
92193
- }) < cutoff || superseded(entry, newest);
92194
- });
92195
- yield* forEach$1(expired, (entry) => store.remove(entry.id), {
92217
+ yield* forEach$1(retention.expired, (entry) => store.remove(entry.id), {
92196
92218
  concurrency: 1,
92197
92219
  discard: true
92198
92220
  });
92199
- return reduce(expired, reduce(repaired, current, (all, entry) => set$3(all, entry.id, entry)), (all, entry) => remove$2(all, entry.id));
92221
+ return retention.next;
92200
92222
  }));
92201
92223
  yield* update$1(version, increment$1);
92202
92224
  });
@@ -92213,23 +92235,17 @@ var Telemetry = class extends Service$2()("@deslop/scope/services/telemetry/serv
92213
92235
  });
92214
92236
  const save = fnUntraced(function* (entries) {
92215
92237
  yield* uninterruptible(updateEffect(state, fnUntraced(function* (current) {
92216
- const known = yield* get$1(releases);
92217
- const newest = newestVersions(entries, known);
92218
- const kept = filter$3(entries, (entry) => !superseded(entry, newest));
92219
- const replaced = filter$3(match$1(isEmptyRecord(filter$4(newest, (latest, name) => known[name] !== latest)), {
92220
- onFalse: () => fromIterable$6(values(current)),
92221
- onTrue: () => []
92222
- }), (entry) => superseded(entry, newest));
92223
- yield* forEach$1(replaced, (entry) => store.remove(entry.id), {
92238
+ const reconciliation = reconcileReleases(current, entries, yield* get$1(releases));
92239
+ yield* forEach$1(reconciliation.replaced, (entry) => store.remove(entry.id), {
92224
92240
  concurrency: 1,
92225
92241
  discard: true
92226
92242
  });
92227
- yield* forEach$1(kept, (entry) => store.set(entry.id, entry), {
92243
+ yield* forEach$1(reconciliation.accepted, (entry) => store.set(entry.id, entry), {
92228
92244
  concurrency: 1,
92229
92245
  discard: true
92230
92246
  });
92231
- yield* set(releases, newest);
92232
- return reduce(kept, reduce(replaced, current, (all, entry) => remove$2(all, entry.id)), (all, entry) => set$3(all, entry.id, entry));
92247
+ yield* set(releases, reconciliation.newest);
92248
+ return reconciliation.next;
92233
92249
  })));
92234
92250
  yield* update$1(version, increment$1);
92235
92251
  }, failed);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deslop/scope",
3
- "version": "0.1.1260",
3
+ "version": "0.1.1263",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/MP281X/deslop.git",
@@ -32,5 +32,5 @@
32
32
  "engines": {
33
33
  "node": ">=26"
34
34
  },
35
- "fingerprint": "827c638b2fe3ac9c65ca15bd3ae65b9be939595cbc888eae69bf8a6fc86d5185"
35
+ "fingerprint": "ccb07a58a4c39fdb97fe7185d814bc68d41124d903ef8f9695698813462cc983"
36
36
  }