@ubundi/openclaw-cortex 1.0.0 → 1.1.1
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/README.md +17 -4
- package/dist/adapters/cortex/client.d.ts +7 -1
- package/dist/adapters/cortex/client.d.ts.map +1 -1
- package/dist/adapters/cortex/client.js +4 -2
- package/dist/adapters/cortex/client.js.map +1 -1
- package/dist/features/capture/filter.d.ts +8 -0
- package/dist/features/capture/filter.d.ts.map +1 -0
- package/dist/features/capture/filter.js +34 -0
- package/dist/features/capture/filter.js.map +1 -0
- package/dist/features/capture/handler.d.ts +2 -1
- package/dist/features/capture/handler.d.ts.map +1 -1
- package/dist/features/capture/handler.js +58 -9
- package/dist/features/capture/handler.js.map +1 -1
- package/dist/features/recall/handler.d.ts +2 -1
- package/dist/features/recall/handler.d.ts.map +1 -1
- package/dist/features/recall/handler.js +12 -2
- package/dist/features/recall/handler.js.map +1 -1
- package/dist/features/sync/daily-logs-sync.d.ts +4 -1
- package/dist/features/sync/daily-logs-sync.d.ts.map +1 -1
- package/dist/features/sync/daily-logs-sync.js +20 -2
- package/dist/features/sync/daily-logs-sync.js.map +1 -1
- package/dist/features/sync/memory-md-sync.d.ts +4 -1
- package/dist/features/sync/memory-md-sync.d.ts.map +1 -1
- package/dist/features/sync/memory-md-sync.js +20 -2
- package/dist/features/sync/memory-md-sync.js.map +1 -1
- package/dist/features/sync/transcripts-sync.d.ts +3 -1
- package/dist/features/sync/transcripts-sync.d.ts.map +1 -1
- package/dist/features/sync/transcripts-sync.js +14 -1
- package/dist/features/sync/transcripts-sync.js.map +1 -1
- package/dist/features/sync/watcher.d.ts +4 -1
- package/dist/features/sync/watcher.d.ts.map +1 -1
- package/dist/features/sync/watcher.js +41 -13
- package/dist/features/sync/watcher.js.map +1 -1
- package/dist/internal/audit/audit-logger.d.ts +28 -0
- package/dist/internal/audit/audit-logger.d.ts.map +1 -0
- package/dist/internal/audit/audit-logger.js +61 -0
- package/dist/internal/audit/audit-logger.js.map +1 -0
- package/dist/internal/identity/api-key.js +1 -1
- package/dist/plugin/config/schema.d.ts +20 -0
- package/dist/plugin/config/schema.d.ts.map +1 -1
- package/dist/plugin/config/schema.js +5 -1
- package/dist/plugin/config/schema.js.map +1 -1
- package/dist/plugin/index.d.ts +8 -0
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +121 -12
- package/dist/plugin/index.js.map +1 -1
- package/openclaw.plugin.json +30 -1
- package/package.json +1 -1
- package/dist/core/config/schema.d.ts +0 -61
- package/dist/core/config/schema.d.ts.map +0 -1
- package/dist/core/config/schema.js +0 -39
- package/dist/core/config/schema.js.map +0 -1
- package/dist/core/plugin.d.ts +0 -61
- package/dist/core/plugin.d.ts.map +0 -1
- package/dist/core/plugin.js +0 -147
- package/dist/core/plugin.js.map +0 -1
- package/dist/cortex/client.d.ts +0 -142
- package/dist/cortex/client.d.ts.map +0 -1
- package/dist/cortex/client.js +0 -145
- package/dist/cortex/client.js.map +0 -1
- package/dist/features/reflect/service.d.ts +0 -19
- package/dist/features/reflect/service.d.ts.map +0 -1
- package/dist/features/reflect/service.js +0 -38
- package/dist/features/reflect/service.js.map +0 -1
- package/dist/shared/fs/safe-path.d.ts +0 -8
- package/dist/shared/fs/safe-path.d.ts.map +0 -1
- package/dist/shared/fs/safe-path.js +0 -32
- package/dist/shared/fs/safe-path.js.map +0 -1
- package/dist/shared/metrics/latency-metrics.d.ts +0 -19
- package/dist/shared/metrics/latency-metrics.d.ts.map +0 -1
- package/dist/shared/metrics/latency-metrics.js +0 -45
- package/dist/shared/metrics/latency-metrics.js.map +0 -1
- package/dist/shared/queue/retry-queue.d.ts +0 -31
- package/dist/shared/queue/retry-queue.d.ts.map +0 -1
- package/dist/shared/queue/retry-queue.js +0 -115
- package/dist/shared/queue/retry-queue.js.map +0 -1
- package/dist/shared/transcript/cleaner.d.ts +0 -24
- package/dist/shared/transcript/cleaner.d.ts.map +0 -1
- package/dist/shared/transcript/cleaner.js +0 -96
- package/dist/shared/transcript/cleaner.js.map +0 -1
package/dist/core/plugin.js
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import { basename } from "node:path";
|
|
2
|
-
import { createHash } from "node:crypto";
|
|
3
|
-
import { version } from "../../package.json" with { type: "json" };
|
|
4
|
-
import { CortexConfigSchema, configSchema } from "./config/schema.js";
|
|
5
|
-
import { CortexClient } from "../cortex/client.js";
|
|
6
|
-
import { createRecallHandler } from "../features/recall/handler.js";
|
|
7
|
-
import { createCaptureHandler } from "../features/capture/handler.js";
|
|
8
|
-
import { FileSyncWatcher } from "../features/sync/watcher.js";
|
|
9
|
-
import { RetryQueue } from "../shared/queue/retry-queue.js";
|
|
10
|
-
import { LatencyMetrics } from "../shared/metrics/latency-metrics.js";
|
|
11
|
-
export function deriveTier(totalSessions) {
|
|
12
|
-
if (totalSessions >= 30)
|
|
13
|
-
return 3;
|
|
14
|
-
if (totalSessions >= 15)
|
|
15
|
-
return 2;
|
|
16
|
-
return 1;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Derives a workspace-scoped namespace from the workspace directory path.
|
|
20
|
-
* Uses the directory basename plus a short hash of the full path to avoid collisions
|
|
21
|
-
* when multiple workspaces share the same basename.
|
|
22
|
-
*/
|
|
23
|
-
function deriveNamespace(workspaceDir) {
|
|
24
|
-
const name = basename(workspaceDir).replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
25
|
-
const hash = createHash("sha256").update(workspaceDir).digest("hex").slice(0, 8);
|
|
26
|
-
return `${name}-${hash}`;
|
|
27
|
-
}
|
|
28
|
-
function resolveEnvVars(value) {
|
|
29
|
-
return value.replace(/\$\{([^}]+)\}/g, (_, envVar) => process.env[envVar] ?? "");
|
|
30
|
-
}
|
|
31
|
-
function resolveConfigEnvVars(raw) {
|
|
32
|
-
const resolved = {};
|
|
33
|
-
for (const [key, value] of Object.entries(raw)) {
|
|
34
|
-
resolved[key] = typeof value === "string" ? resolveEnvVars(value) : value;
|
|
35
|
-
}
|
|
36
|
-
return resolved;
|
|
37
|
-
}
|
|
38
|
-
async function bootstrapClient(client, logger, knowledgeState) {
|
|
39
|
-
try {
|
|
40
|
-
const healthy = await client.healthCheck();
|
|
41
|
-
if (!healthy) {
|
|
42
|
-
logger.warn("Cortex health check failed — API may be unreachable");
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
logger.info("Cortex health check passed");
|
|
46
|
-
}
|
|
47
|
-
catch {
|
|
48
|
-
logger.warn("Cortex health check failed — API may be unreachable");
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
try {
|
|
52
|
-
const knowledge = await client.knowledge();
|
|
53
|
-
knowledgeState.hasMemories = knowledge.total_memories > 0;
|
|
54
|
-
knowledgeState.totalSessions = knowledge.total_sessions;
|
|
55
|
-
knowledgeState.maturity = knowledge.maturity;
|
|
56
|
-
knowledgeState.lastChecked = Date.now();
|
|
57
|
-
const tier = deriveTier(knowledge.total_sessions);
|
|
58
|
-
logger.info(`Cortex knowledge: maturity=${knowledge.maturity}, sessions=${knowledge.total_sessions}, memories=${knowledge.total_memories}, tier=${tier}`);
|
|
59
|
-
}
|
|
60
|
-
catch {
|
|
61
|
-
logger.debug?.("Cortex knowledge check skipped — endpoint unavailable");
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
const plugin = {
|
|
65
|
-
id: "cortex-memory",
|
|
66
|
-
name: "Cortex Memory",
|
|
67
|
-
description: "Long-term memory powered by Cortex — Auto-Recall, Auto-Capture, and background file sync",
|
|
68
|
-
version,
|
|
69
|
-
kind: "memory",
|
|
70
|
-
configSchema,
|
|
71
|
-
register(api) {
|
|
72
|
-
const raw = api.pluginConfig ?? {};
|
|
73
|
-
const resolved = resolveConfigEnvVars(raw);
|
|
74
|
-
const parsed = CortexConfigSchema.safeParse(resolved);
|
|
75
|
-
if (!parsed.success) {
|
|
76
|
-
api.logger.error("Cortex plugin config invalid:", parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; "));
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
const config = parsed.data;
|
|
80
|
-
const client = new CortexClient(config.baseUrl, config.apiKey);
|
|
81
|
-
const retryQueue = new RetryQueue(api.logger);
|
|
82
|
-
const recallMetrics = new LatencyMetrics();
|
|
83
|
-
const knowledgeState = {
|
|
84
|
-
hasMemories: false,
|
|
85
|
-
totalSessions: 0,
|
|
86
|
-
maturity: "unknown",
|
|
87
|
-
lastChecked: 0,
|
|
88
|
-
};
|
|
89
|
-
// Whether the user explicitly set a namespace vs. relying on default
|
|
90
|
-
const userSetNamespace = raw.namespace != null;
|
|
91
|
-
let namespace = config.namespace;
|
|
92
|
-
let started = false;
|
|
93
|
-
let watcher = null;
|
|
94
|
-
api.logger.info(`Cortex plugin registered (namespace=${namespace})`);
|
|
95
|
-
// Async health check + knowledge probe — validate connection
|
|
96
|
-
void bootstrapClient(client, api.logger, knowledgeState);
|
|
97
|
-
// Auto-Recall: inject relevant memories before every agent turn
|
|
98
|
-
api.on("before_agent_start", createRecallHandler(client, config, api.logger, recallMetrics, knowledgeState));
|
|
99
|
-
// Auto-Capture: extract facts after agent responses
|
|
100
|
-
api.on("agent_end", createCaptureHandler(client, config, api.logger, retryQueue, knowledgeState));
|
|
101
|
-
// Services: retry queue, file sync
|
|
102
|
-
api.registerService({
|
|
103
|
-
id: "cortex-services",
|
|
104
|
-
start(ctx) {
|
|
105
|
-
if (started) {
|
|
106
|
-
api.logger.debug?.("Cortex services already started, skipping");
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
started = true;
|
|
110
|
-
retryQueue.start();
|
|
111
|
-
// Derive workspace-scoped namespace when user didn't set one explicitly
|
|
112
|
-
if (!userSetNamespace && ctx.workspaceDir) {
|
|
113
|
-
namespace = deriveNamespace(ctx.workspaceDir);
|
|
114
|
-
api.logger.info(`Cortex namespace auto-derived from workspace: ${namespace}`);
|
|
115
|
-
}
|
|
116
|
-
// File sync (MEMORY.md, daily logs, transcripts)
|
|
117
|
-
if (config.fileSync) {
|
|
118
|
-
const workspaceDir = ctx.workspaceDir;
|
|
119
|
-
if (!workspaceDir) {
|
|
120
|
-
api.logger.warn("Cortex file sync: no workspaceDir, skipping");
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
const newWatcher = new FileSyncWatcher(workspaceDir, client, namespace, api.logger, retryQueue, { transcripts: config.transcriptSync });
|
|
124
|
-
newWatcher.start();
|
|
125
|
-
watcher = newWatcher;
|
|
126
|
-
api.logger.info("Cortex file sync started");
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
api.logger.info("Cortex services started");
|
|
130
|
-
},
|
|
131
|
-
stop() {
|
|
132
|
-
if (!started)
|
|
133
|
-
return;
|
|
134
|
-
started = false;
|
|
135
|
-
watcher?.stop();
|
|
136
|
-
watcher = null;
|
|
137
|
-
retryQueue.stop();
|
|
138
|
-
const summary = recallMetrics.summary();
|
|
139
|
-
if (summary.count > 0) {
|
|
140
|
-
api.logger.info(`Cortex recall latency (${summary.count} samples): p50=${summary.p50}ms p95=${summary.p95}ms p99=${summary.p99}ms`);
|
|
141
|
-
}
|
|
142
|
-
},
|
|
143
|
-
});
|
|
144
|
-
},
|
|
145
|
-
};
|
|
146
|
-
export default plugin;
|
|
147
|
-
//# sourceMappingURL=plugin.js.map
|
package/dist/core/plugin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/core/plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/cortex/client.d.ts
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
export type NodeType = "FACT" | "ENTITY" | "EMOTION" | "INSIGHT" | "VALUE" | "BELIEF" | "LIFECONTEXT" | "SESSION" | "COMMUNITY";
|
|
2
|
-
export interface RetrieveResultMetadata {
|
|
3
|
-
speaker?: string;
|
|
4
|
-
fact_type?: string;
|
|
5
|
-
entity_refs?: string[];
|
|
6
|
-
occurred_at?: string | null;
|
|
7
|
-
[key: string]: unknown;
|
|
8
|
-
}
|
|
9
|
-
export interface RetrieveResult {
|
|
10
|
-
node_id: string;
|
|
11
|
-
type: NodeType;
|
|
12
|
-
content: string;
|
|
13
|
-
score: number;
|
|
14
|
-
source?: string;
|
|
15
|
-
confidence?: number;
|
|
16
|
-
metadata?: RetrieveResultMetadata;
|
|
17
|
-
}
|
|
18
|
-
export interface RetrieveResponse {
|
|
19
|
-
results: RetrieveResult[];
|
|
20
|
-
}
|
|
21
|
-
export interface IngestFact {
|
|
22
|
-
core: string;
|
|
23
|
-
fact_type: string;
|
|
24
|
-
occurred_at: string | null;
|
|
25
|
-
entity_refs: string[];
|
|
26
|
-
speaker: string;
|
|
27
|
-
}
|
|
28
|
-
export interface IngestEntity {
|
|
29
|
-
name: string;
|
|
30
|
-
type: string;
|
|
31
|
-
aliases: string[];
|
|
32
|
-
}
|
|
33
|
-
export interface IngestResponse {
|
|
34
|
-
nodes_created: number;
|
|
35
|
-
edges_created: number;
|
|
36
|
-
facts: IngestFact[];
|
|
37
|
-
entities: IngestEntity[];
|
|
38
|
-
}
|
|
39
|
-
export interface ReflectResponse {
|
|
40
|
-
nodes_created: number;
|
|
41
|
-
edges_created: number;
|
|
42
|
-
entities_processed: number;
|
|
43
|
-
entities_skipped: number;
|
|
44
|
-
}
|
|
45
|
-
export interface WarmupResponse {
|
|
46
|
-
tenant_id: string;
|
|
47
|
-
already_warm: boolean;
|
|
48
|
-
}
|
|
49
|
-
export interface ConversationMessage {
|
|
50
|
-
role: string;
|
|
51
|
-
content: string;
|
|
52
|
-
}
|
|
53
|
-
export type QueryType = "factual" | "emotional" | "combined";
|
|
54
|
-
export interface BatchIngestItem {
|
|
55
|
-
text: string;
|
|
56
|
-
session_id?: string;
|
|
57
|
-
reference_date?: string;
|
|
58
|
-
}
|
|
59
|
-
export interface BatchIngestResponse {
|
|
60
|
-
results: IngestResponse[];
|
|
61
|
-
total_nodes_created: number;
|
|
62
|
-
total_edges_created: number;
|
|
63
|
-
failed_count: number;
|
|
64
|
-
errors: string[];
|
|
65
|
-
}
|
|
66
|
-
export interface HealthCheckResponse {
|
|
67
|
-
status: string;
|
|
68
|
-
}
|
|
69
|
-
export interface JobSubmitResponse {
|
|
70
|
-
job_id: string;
|
|
71
|
-
status: string;
|
|
72
|
-
}
|
|
73
|
-
export interface RecallMemory {
|
|
74
|
-
content: string;
|
|
75
|
-
confidence: number;
|
|
76
|
-
when: string | null;
|
|
77
|
-
session_id: string | null;
|
|
78
|
-
entities: string[];
|
|
79
|
-
}
|
|
80
|
-
export interface RecallResponse {
|
|
81
|
-
memories: RecallMemory[];
|
|
82
|
-
}
|
|
83
|
-
export interface RememberResponse {
|
|
84
|
-
session_id: string | null;
|
|
85
|
-
memories_created: number;
|
|
86
|
-
entities_found: string[];
|
|
87
|
-
facts: string[];
|
|
88
|
-
}
|
|
89
|
-
export interface ForgetResponse {
|
|
90
|
-
memories_removed: number;
|
|
91
|
-
}
|
|
92
|
-
export interface KnowledgeEntity {
|
|
93
|
-
name: string;
|
|
94
|
-
memory_count: number;
|
|
95
|
-
last_seen: string;
|
|
96
|
-
}
|
|
97
|
-
export interface KnowledgeResponse {
|
|
98
|
-
total_memories: number;
|
|
99
|
-
total_sessions: number;
|
|
100
|
-
maturity: "cold" | "warming" | "mature";
|
|
101
|
-
entities: KnowledgeEntity[];
|
|
102
|
-
}
|
|
103
|
-
export interface StatsResponse {
|
|
104
|
-
pipeline_tier: 1 | 2 | 3;
|
|
105
|
-
pipeline_maturity: "cold" | "warming" | "mature";
|
|
106
|
-
[key: string]: unknown;
|
|
107
|
-
}
|
|
108
|
-
export declare class CortexClient {
|
|
109
|
-
private baseUrl;
|
|
110
|
-
private apiKey;
|
|
111
|
-
constructor(baseUrl: string, apiKey: string);
|
|
112
|
-
private fetchJsonWithTimeout;
|
|
113
|
-
private fetchRequest;
|
|
114
|
-
healthCheck(timeoutMs?: number): Promise<boolean>;
|
|
115
|
-
warmup(timeoutMs?: number): Promise<WarmupResponse>;
|
|
116
|
-
retrieve(query: string, topK: number, mode: "fast" | "full", timeoutMs: number, queryType?: QueryType, options?: {
|
|
117
|
-
referenceDate?: string;
|
|
118
|
-
debug?: boolean;
|
|
119
|
-
}): Promise<RetrieveResponse>;
|
|
120
|
-
ingest(text: string, sessionId?: string, timeoutMs?: number, referenceDate?: string): Promise<IngestResponse>;
|
|
121
|
-
ingestConversation(messages: ConversationMessage[], sessionId?: string, timeoutMs?: number, referenceDate?: string): Promise<IngestResponse>;
|
|
122
|
-
getJob(jobId: string): Promise<JobSubmitResponse & {
|
|
123
|
-
result?: IngestResponse;
|
|
124
|
-
error?: string;
|
|
125
|
-
}>;
|
|
126
|
-
submitIngest(text: string, sessionId?: string, referenceDate?: string): Promise<JobSubmitResponse>;
|
|
127
|
-
submitIngestConversation(messages: ConversationMessage[], sessionId?: string, referenceDate?: string): Promise<JobSubmitResponse>;
|
|
128
|
-
batchIngest(items: BatchIngestItem[], timeoutMs?: number): Promise<BatchIngestResponse>;
|
|
129
|
-
reflect(sessionId?: string, timeoutMs?: number): Promise<ReflectResponse>;
|
|
130
|
-
remember(text: string, sessionId?: string, timeoutMs?: number, referenceDate?: string): Promise<RememberResponse>;
|
|
131
|
-
rememberConversation(messages: ConversationMessage[], sessionId?: string, timeoutMs?: number, referenceDate?: string): Promise<RememberResponse>;
|
|
132
|
-
recall(query: string, timeoutMs?: number, options?: {
|
|
133
|
-
limit?: number;
|
|
134
|
-
context?: string;
|
|
135
|
-
sessionFilter?: string;
|
|
136
|
-
}): Promise<RecallResponse>;
|
|
137
|
-
forgetSession(sessionId: string, timeoutMs?: number): Promise<ForgetResponse>;
|
|
138
|
-
forgetEntity(entityName: string, timeoutMs?: number): Promise<ForgetResponse>;
|
|
139
|
-
knowledge(timeoutMs?: number): Promise<KnowledgeResponse>;
|
|
140
|
-
stats(timeoutMs?: number): Promise<StatsResponse>;
|
|
141
|
-
}
|
|
142
|
-
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/cortex/client.ts"],"names":[],"mappings":"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"}
|
package/dist/cortex/client.js
DELETED
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
// --- Internal API Defaults ---
|
|
2
|
-
const DEFAULT_INGEST_TIMEOUT_MS = 45_000;
|
|
3
|
-
const DEFAULT_SUBMIT_TIMEOUT_MS = 10_000;
|
|
4
|
-
const DEFAULT_REFLECT_TIMEOUT_MS = 30_000;
|
|
5
|
-
const DEFAULT_HEALTH_TIMEOUT_MS = 5_000;
|
|
6
|
-
const DEFAULT_WARMUP_TIMEOUT_MS = 60_000;
|
|
7
|
-
// --- Agent API Defaults ---
|
|
8
|
-
const DEFAULT_REMEMBER_TIMEOUT_MS = 45_000;
|
|
9
|
-
const DEFAULT_RECALL_TIMEOUT_MS = 10_000;
|
|
10
|
-
export class CortexClient {
|
|
11
|
-
baseUrl;
|
|
12
|
-
apiKey;
|
|
13
|
-
constructor(baseUrl, apiKey) {
|
|
14
|
-
this.baseUrl = baseUrl;
|
|
15
|
-
this.apiKey = apiKey;
|
|
16
|
-
}
|
|
17
|
-
async fetchJsonWithTimeout(url, body, timeoutMs, label) {
|
|
18
|
-
return this.fetchRequest(url, { method: "POST", body: JSON.stringify(body) }, timeoutMs, label);
|
|
19
|
-
}
|
|
20
|
-
async fetchRequest(url, init, timeoutMs, label) {
|
|
21
|
-
const controller = new AbortController();
|
|
22
|
-
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
23
|
-
try {
|
|
24
|
-
const res = await fetch(url, {
|
|
25
|
-
...init,
|
|
26
|
-
headers: {
|
|
27
|
-
"x-api-key": this.apiKey,
|
|
28
|
-
"Content-Type": "application/json",
|
|
29
|
-
...init.headers,
|
|
30
|
-
},
|
|
31
|
-
signal: controller.signal,
|
|
32
|
-
});
|
|
33
|
-
if (!res.ok) {
|
|
34
|
-
throw new Error(`Cortex ${label} failed: ${res.status}`);
|
|
35
|
-
}
|
|
36
|
-
return (await res.json());
|
|
37
|
-
}
|
|
38
|
-
finally {
|
|
39
|
-
clearTimeout(timeout);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
async healthCheck(timeoutMs = DEFAULT_HEALTH_TIMEOUT_MS) {
|
|
43
|
-
const controller = new AbortController();
|
|
44
|
-
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
45
|
-
try {
|
|
46
|
-
const res = await fetch(`${this.baseUrl}/health`, {
|
|
47
|
-
method: "GET",
|
|
48
|
-
headers: { "x-api-key": this.apiKey },
|
|
49
|
-
signal: controller.signal,
|
|
50
|
-
});
|
|
51
|
-
return res.ok;
|
|
52
|
-
}
|
|
53
|
-
catch {
|
|
54
|
-
return false;
|
|
55
|
-
}
|
|
56
|
-
finally {
|
|
57
|
-
clearTimeout(timeout);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
async warmup(timeoutMs = DEFAULT_WARMUP_TIMEOUT_MS) {
|
|
61
|
-
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/warmup`, {}, timeoutMs, "warmup");
|
|
62
|
-
}
|
|
63
|
-
async retrieve(query, topK, mode, timeoutMs, queryType, options) {
|
|
64
|
-
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/retrieve`, {
|
|
65
|
-
query,
|
|
66
|
-
top_k: topK,
|
|
67
|
-
mode,
|
|
68
|
-
query_type: queryType,
|
|
69
|
-
reference_date: options?.referenceDate ?? undefined,
|
|
70
|
-
debug: options?.debug ?? undefined,
|
|
71
|
-
}, timeoutMs, "retrieve");
|
|
72
|
-
}
|
|
73
|
-
async ingest(text, sessionId, timeoutMs = DEFAULT_INGEST_TIMEOUT_MS, referenceDate) {
|
|
74
|
-
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/ingest`, { text, session_id: sessionId, reference_date: referenceDate ?? null }, timeoutMs, "ingest");
|
|
75
|
-
}
|
|
76
|
-
async ingestConversation(messages, sessionId, timeoutMs = DEFAULT_INGEST_TIMEOUT_MS, referenceDate) {
|
|
77
|
-
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/ingest/conversation`, { messages, session_id: sessionId, reference_date: referenceDate ?? null }, timeoutMs, "ingest/conversation");
|
|
78
|
-
}
|
|
79
|
-
async getJob(jobId) {
|
|
80
|
-
const controller = new AbortController();
|
|
81
|
-
const timeout = setTimeout(() => controller.abort(), DEFAULT_SUBMIT_TIMEOUT_MS);
|
|
82
|
-
try {
|
|
83
|
-
const res = await fetch(`${this.baseUrl}/v1/jobs/${jobId}`, {
|
|
84
|
-
method: "GET",
|
|
85
|
-
headers: { "x-api-key": this.apiKey },
|
|
86
|
-
signal: controller.signal,
|
|
87
|
-
});
|
|
88
|
-
if (!res.ok) {
|
|
89
|
-
throw new Error(`Cortex job status failed: ${res.status}`);
|
|
90
|
-
}
|
|
91
|
-
return (await res.json());
|
|
92
|
-
}
|
|
93
|
-
finally {
|
|
94
|
-
clearTimeout(timeout);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
async submitIngest(text, sessionId, referenceDate) {
|
|
98
|
-
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/jobs/ingest`, { text, session_id: sessionId, reference_date: referenceDate ?? null }, DEFAULT_SUBMIT_TIMEOUT_MS, "jobs/ingest");
|
|
99
|
-
}
|
|
100
|
-
async submitIngestConversation(messages, sessionId, referenceDate) {
|
|
101
|
-
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/jobs/ingest/conversation`, { messages, session_id: sessionId, reference_date: referenceDate ?? null }, DEFAULT_SUBMIT_TIMEOUT_MS, "jobs/ingest/conversation");
|
|
102
|
-
}
|
|
103
|
-
async batchIngest(items, timeoutMs = DEFAULT_INGEST_TIMEOUT_MS) {
|
|
104
|
-
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/ingest/batch`, { items }, timeoutMs, "ingest/batch");
|
|
105
|
-
}
|
|
106
|
-
async reflect(sessionId, timeoutMs = DEFAULT_REFLECT_TIMEOUT_MS) {
|
|
107
|
-
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/reflect`, { session_id: sessionId }, timeoutMs, "reflect");
|
|
108
|
-
}
|
|
109
|
-
// --- Agent API Methods ---
|
|
110
|
-
async remember(text, sessionId, timeoutMs = DEFAULT_REMEMBER_TIMEOUT_MS, referenceDate) {
|
|
111
|
-
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/remember`, {
|
|
112
|
-
text,
|
|
113
|
-
session_id: sessionId ?? null,
|
|
114
|
-
reference_date: referenceDate ?? null,
|
|
115
|
-
}, timeoutMs, "remember");
|
|
116
|
-
}
|
|
117
|
-
async rememberConversation(messages, sessionId, timeoutMs = DEFAULT_REMEMBER_TIMEOUT_MS, referenceDate) {
|
|
118
|
-
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/remember`, {
|
|
119
|
-
messages,
|
|
120
|
-
session_id: sessionId ?? null,
|
|
121
|
-
reference_date: referenceDate ?? null,
|
|
122
|
-
}, timeoutMs, "remember");
|
|
123
|
-
}
|
|
124
|
-
async recall(query, timeoutMs = DEFAULT_RECALL_TIMEOUT_MS, options) {
|
|
125
|
-
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/recall`, {
|
|
126
|
-
query,
|
|
127
|
-
limit: options?.limit ?? undefined,
|
|
128
|
-
context: options?.context ?? undefined,
|
|
129
|
-
session_filter: options?.sessionFilter ?? undefined,
|
|
130
|
-
}, timeoutMs, "recall");
|
|
131
|
-
}
|
|
132
|
-
async forgetSession(sessionId, timeoutMs = DEFAULT_RECALL_TIMEOUT_MS) {
|
|
133
|
-
return this.fetchRequest(`${this.baseUrl}/v1/forget/session/${encodeURIComponent(sessionId)}`, { method: "DELETE" }, timeoutMs, "forget/session");
|
|
134
|
-
}
|
|
135
|
-
async forgetEntity(entityName, timeoutMs = DEFAULT_RECALL_TIMEOUT_MS) {
|
|
136
|
-
return this.fetchRequest(`${this.baseUrl}/v1/forget/entity/${encodeURIComponent(entityName)}`, { method: "DELETE" }, timeoutMs, "forget/entity");
|
|
137
|
-
}
|
|
138
|
-
async knowledge(timeoutMs = DEFAULT_RECALL_TIMEOUT_MS) {
|
|
139
|
-
return this.fetchRequest(`${this.baseUrl}/v1/knowledge`, { method: "GET" }, timeoutMs, "knowledge");
|
|
140
|
-
}
|
|
141
|
-
async stats(timeoutMs = DEFAULT_RECALL_TIMEOUT_MS) {
|
|
142
|
-
return this.fetchRequest(`${this.baseUrl}/v1/stats`, { method: "GET" }, timeoutMs, "stats");
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
//# sourceMappingURL=client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/cortex/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { CortexClient } from "../../cortex/client.js";
|
|
2
|
-
type Logger = {
|
|
3
|
-
debug?(...args: unknown[]): void;
|
|
4
|
-
info(...args: unknown[]): void;
|
|
5
|
-
warn(...args: unknown[]): void;
|
|
6
|
-
error(...args: unknown[]): void;
|
|
7
|
-
};
|
|
8
|
-
export declare class PeriodicReflect {
|
|
9
|
-
private client;
|
|
10
|
-
private logger;
|
|
11
|
-
private intervalMs;
|
|
12
|
-
private timer;
|
|
13
|
-
constructor(client: CortexClient, logger: Logger, intervalMs?: number);
|
|
14
|
-
start(): void;
|
|
15
|
-
run(): Promise<void>;
|
|
16
|
-
stop(): void;
|
|
17
|
-
}
|
|
18
|
-
export {};
|
|
19
|
-
//# sourceMappingURL=service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/features/reflect/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,KAAK,MAAM,GAAG;IACZ,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACjC,CAAC;AAIF,qBAAa,eAAe;IAIxB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IALpB,OAAO,CAAC,KAAK,CAA+C;gBAGlD,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,UAAU,SAAsB;IAG1C,KAAK,IAAI,IAAI;IAYP,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAW1B,IAAI,IAAI,IAAI;CAMb"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
const DEFAULT_INTERVAL_MS = 60 * 60 * 1000; // 1 hour
|
|
2
|
-
export class PeriodicReflect {
|
|
3
|
-
client;
|
|
4
|
-
logger;
|
|
5
|
-
intervalMs;
|
|
6
|
-
timer = null;
|
|
7
|
-
constructor(client, logger, intervalMs = DEFAULT_INTERVAL_MS) {
|
|
8
|
-
this.client = client;
|
|
9
|
-
this.logger = logger;
|
|
10
|
-
this.intervalMs = intervalMs;
|
|
11
|
-
}
|
|
12
|
-
start() {
|
|
13
|
-
if (this.timer)
|
|
14
|
-
return;
|
|
15
|
-
this.timer = setInterval(() => {
|
|
16
|
-
this.run().catch((err) => {
|
|
17
|
-
this.logger.warn(`Periodic reflect failed: ${String(err)}`);
|
|
18
|
-
});
|
|
19
|
-
}, this.intervalMs);
|
|
20
|
-
this.logger.debug?.(`Periodic reflect: scheduled every ${this.intervalMs / 1000}s`);
|
|
21
|
-
}
|
|
22
|
-
async run() {
|
|
23
|
-
try {
|
|
24
|
-
const result = await this.client.reflect();
|
|
25
|
-
this.logger.info(`Reflect: synthesized ${result.nodes_created} nodes, ${result.edges_created} edges (${result.entities_processed} entities processed, ${result.entities_skipped} skipped)`);
|
|
26
|
-
}
|
|
27
|
-
catch (err) {
|
|
28
|
-
this.logger.warn(`Reflect failed: ${String(err)}`);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
stop() {
|
|
32
|
-
if (this.timer) {
|
|
33
|
-
clearInterval(this.timer);
|
|
34
|
-
this.timer = null;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/features/reflect/service.ts"],"names":[],"mappings":"AASA,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;AAErD,MAAM,OAAO,eAAe;IAIhB;IACA;IACA;IALF,KAAK,GAA0C,IAAI,CAAC;IAE5D,YACU,MAAoB,EACpB,MAAc,EACd,aAAa,mBAAmB;QAFhC,WAAM,GAAN,MAAM,CAAc;QACpB,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAAsB;IACvC,CAAC;IAEJ,KAAK;QACH,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QAEvB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAEpB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,qCAAqC,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,GAAG;QACP,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,wBAAwB,MAAM,CAAC,aAAa,WAAW,MAAM,CAAC,aAAa,WAAW,MAAM,CAAC,kBAAkB,wBAAwB,MAAM,CAAC,gBAAgB,WAAW,CAC1K,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resolves a file path and verifies it stays within the allowed root directory.
|
|
3
|
-
* Rejects symlinks and path traversal attempts.
|
|
4
|
-
*
|
|
5
|
-
* Returns the canonical path if safe, or null if the path should be rejected.
|
|
6
|
-
*/
|
|
7
|
-
export declare function safePath(filePath: string, allowedRoot: string): Promise<string | null>;
|
|
8
|
-
//# sourceMappingURL=safe-path.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"safe-path.d.ts","sourceRoot":"","sources":["../../../src/shared/fs/safe-path.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0BxB"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { realpath, lstat } from "node:fs/promises";
|
|
2
|
-
/**
|
|
3
|
-
* Resolves a file path and verifies it stays within the allowed root directory.
|
|
4
|
-
* Rejects symlinks and path traversal attempts.
|
|
5
|
-
*
|
|
6
|
-
* Returns the canonical path if safe, or null if the path should be rejected.
|
|
7
|
-
*/
|
|
8
|
-
export async function safePath(filePath, allowedRoot) {
|
|
9
|
-
try {
|
|
10
|
-
// Check for symlinks before resolving
|
|
11
|
-
const stats = await lstat(filePath);
|
|
12
|
-
if (stats.isSymbolicLink()) {
|
|
13
|
-
return null;
|
|
14
|
-
}
|
|
15
|
-
// Resolve to canonical path (resolves .., ., etc.)
|
|
16
|
-
const canonical = await realpath(filePath);
|
|
17
|
-
const canonicalRoot = await realpath(allowedRoot);
|
|
18
|
-
// Ensure the resolved path is within the allowed root
|
|
19
|
-
const normalizedRoot = canonicalRoot.endsWith("/")
|
|
20
|
-
? canonicalRoot
|
|
21
|
-
: canonicalRoot + "/";
|
|
22
|
-
if (canonical !== canonicalRoot && !canonical.startsWith(normalizedRoot)) {
|
|
23
|
-
return null;
|
|
24
|
-
}
|
|
25
|
-
return canonical;
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
// File doesn't exist or is inaccessible
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=safe-path.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"safe-path.js","sourceRoot":"","sources":["../../../src/shared/fs/safe-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,QAAgB,EAChB,WAAmB;IAEnB,IAAI,CAAC;QACH,sCAAsC;QACtC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mDAAmD;QACnD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC;QAElD,sDAAsD;QACtD,MAAM,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC;YAChD,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC;QAExB,IAAI,SAAS,KAAK,aAAa,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACzE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,wCAAwC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export declare class LatencyMetrics {
|
|
2
|
-
private samples;
|
|
3
|
-
private windowSize;
|
|
4
|
-
constructor(windowSize?: number);
|
|
5
|
-
record(durationMs: number): void;
|
|
6
|
-
get count(): number;
|
|
7
|
-
percentile(p: number): number | null;
|
|
8
|
-
get p50(): number | null;
|
|
9
|
-
get p95(): number | null;
|
|
10
|
-
get p99(): number | null;
|
|
11
|
-
summary(): {
|
|
12
|
-
count: number;
|
|
13
|
-
p50: number | null;
|
|
14
|
-
p95: number | null;
|
|
15
|
-
p99: number | null;
|
|
16
|
-
};
|
|
17
|
-
reset(): void;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=latency-metrics.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"latency-metrics.d.ts","sourceRoot":"","sources":["../../../src/shared/metrics/latency-metrics.ts"],"names":[],"mappings":"AAEA,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,SAAsB;IAI5C,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAOhC,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQpC,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,CAEvB;IAED,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,CAEvB;IAED,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,CAEvB;IAED,OAAO,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;IASxF,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
const DEFAULT_WINDOW_SIZE = 100;
|
|
2
|
-
export class LatencyMetrics {
|
|
3
|
-
samples = [];
|
|
4
|
-
windowSize;
|
|
5
|
-
constructor(windowSize = DEFAULT_WINDOW_SIZE) {
|
|
6
|
-
this.windowSize = windowSize;
|
|
7
|
-
}
|
|
8
|
-
record(durationMs) {
|
|
9
|
-
this.samples.push(durationMs);
|
|
10
|
-
if (this.samples.length > this.windowSize) {
|
|
11
|
-
this.samples.shift();
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
get count() {
|
|
15
|
-
return this.samples.length;
|
|
16
|
-
}
|
|
17
|
-
percentile(p) {
|
|
18
|
-
if (this.samples.length === 0)
|
|
19
|
-
return null;
|
|
20
|
-
const sorted = [...this.samples].sort((a, b) => a - b);
|
|
21
|
-
const index = Math.ceil((p / 100) * sorted.length) - 1;
|
|
22
|
-
return sorted[Math.max(0, index)];
|
|
23
|
-
}
|
|
24
|
-
get p50() {
|
|
25
|
-
return this.percentile(50);
|
|
26
|
-
}
|
|
27
|
-
get p95() {
|
|
28
|
-
return this.percentile(95);
|
|
29
|
-
}
|
|
30
|
-
get p99() {
|
|
31
|
-
return this.percentile(99);
|
|
32
|
-
}
|
|
33
|
-
summary() {
|
|
34
|
-
return {
|
|
35
|
-
count: this.count,
|
|
36
|
-
p50: this.p50,
|
|
37
|
-
p95: this.p95,
|
|
38
|
-
p99: this.p99,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
reset() {
|
|
42
|
-
this.samples = [];
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=latency-metrics.js.map
|