@deslop/scope 0.1.1260 → 0.1.1261
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/server.js +56 -40
- package/package.json +2 -2
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
|
|
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(
|
|
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
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
92182
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
92217
|
-
|
|
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(
|
|
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
|
|
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.
|
|
3
|
+
"version": "0.1.1261",
|
|
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": "
|
|
35
|
+
"fingerprint": "fd22e902343a47571bfda1f834451945eee42be2cf83502aebc500c96ae4d279"
|
|
36
36
|
}
|