@creezio/observability 0.22.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/README.md +328 -0
- package/dist/.creezio-src-hash.json +4 -0
- package/dist/api-endpoints/http-routes.d.ts +11 -0
- package/dist/api-endpoints/http-routes.d.ts.map +1 -0
- package/dist/api-endpoints/http-routes.js +11 -0
- package/dist/api-endpoints/http-routes.js.map +1 -0
- package/dist/api-endpoints/index.d.ts +4 -0
- package/dist/api-endpoints/index.d.ts.map +1 -0
- package/dist/api-endpoints/index.js +3 -0
- package/dist/api-endpoints/index.js.map +1 -0
- package/dist/api-endpoints/registry.d.ts +66 -0
- package/dist/api-endpoints/registry.d.ts.map +1 -0
- package/dist/api-endpoints/registry.js +102 -0
- package/dist/api-endpoints/registry.js.map +1 -0
- package/dist/api-mount.d.ts +7 -0
- package/dist/api-mount.d.ts.map +1 -0
- package/dist/api-mount.js +114 -0
- package/dist/api-mount.js.map +1 -0
- package/dist/helpers.d.ts +23 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +36 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/memory-store.d.ts +3 -0
- package/dist/memory-store.d.ts.map +1 -0
- package/dist/memory-store.js +113 -0
- package/dist/memory-store.js.map +1 -0
- package/dist/ops/emit.d.ts +8 -0
- package/dist/ops/emit.d.ts.map +1 -0
- package/dist/ops/emit.js +15 -0
- package/dist/ops/emit.js.map +1 -0
- package/dist/ops/fleet-activity.d.ts +50 -0
- package/dist/ops/fleet-activity.d.ts.map +1 -0
- package/dist/ops/fleet-activity.js +123 -0
- package/dist/ops/fleet-activity.js.map +1 -0
- package/dist/ops/fleet-agent.d.ts +102 -0
- package/dist/ops/fleet-agent.d.ts.map +1 -0
- package/dist/ops/fleet-agent.js +352 -0
- package/dist/ops/fleet-agent.js.map +1 -0
- package/dist/ops/fleet-samples.d.ts +33 -0
- package/dist/ops/fleet-samples.d.ts.map +1 -0
- package/dist/ops/fleet-samples.js +223 -0
- package/dist/ops/fleet-samples.js.map +1 -0
- package/dist/ops/journal.d.ts +56 -0
- package/dist/ops/journal.d.ts.map +1 -0
- package/dist/ops/journal.js +307 -0
- package/dist/ops/journal.js.map +1 -0
- package/dist/ops/rules.d.ts +16 -0
- package/dist/ops/rules.d.ts.map +1 -0
- package/dist/ops/rules.js +98 -0
- package/dist/ops/rules.js.map +1 -0
- package/dist/ops/types.d.ts +69 -0
- package/dist/ops/types.d.ts.map +1 -0
- package/dist/ops/types.js +119 -0
- package/dist/ops/types.js.map +1 -0
- package/dist/request-logs/config.d.ts +19 -0
- package/dist/request-logs/config.d.ts.map +1 -0
- package/dist/request-logs/config.js +36 -0
- package/dist/request-logs/config.js.map +1 -0
- package/dist/request-logs/http-routes.d.ts +8 -0
- package/dist/request-logs/http-routes.d.ts.map +1 -0
- package/dist/request-logs/http-routes.js +29 -0
- package/dist/request-logs/http-routes.js.map +1 -0
- package/dist/request-logs/index.d.ts +6 -0
- package/dist/request-logs/index.d.ts.map +1 -0
- package/dist/request-logs/index.js +5 -0
- package/dist/request-logs/index.js.map +1 -0
- package/dist/request-logs/middleware.d.ts +11 -0
- package/dist/request-logs/middleware.d.ts.map +1 -0
- package/dist/request-logs/middleware.js +198 -0
- package/dist/request-logs/middleware.js.map +1 -0
- package/dist/request-logs/request-logs.d.ts +60 -0
- package/dist/request-logs/request-logs.d.ts.map +1 -0
- package/dist/request-logs/request-logs.js +260 -0
- package/dist/request-logs/request-logs.js.map +1 -0
- package/dist/schema.d.ts +3 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +21 -0
- package/dist/schema.js.map +1 -0
- package/dist/sqlite-driver.d.ts +16 -0
- package/dist/sqlite-driver.d.ts.map +1 -0
- package/dist/sqlite-driver.js +15 -0
- package/dist/sqlite-driver.js.map +1 -0
- package/dist/sqlite-store.d.ts +12 -0
- package/dist/sqlite-store.d.ts.map +1 -0
- package/dist/sqlite-store.js +176 -0
- package/dist/sqlite-store.js.map +1 -0
- package/dist/types.d.ts +67 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -0
- package/dist/usage/adapters.d.ts +31 -0
- package/dist/usage/adapters.d.ts.map +1 -0
- package/dist/usage/adapters.js +37 -0
- package/dist/usage/adapters.js.map +1 -0
- package/dist/usage/http-routes.d.ts +23 -0
- package/dist/usage/http-routes.d.ts.map +1 -0
- package/dist/usage/http-routes.js +150 -0
- package/dist/usage/http-routes.js.map +1 -0
- package/dist/usage/index.d.ts +11 -0
- package/dist/usage/index.d.ts.map +1 -0
- package/dist/usage/index.js +7 -0
- package/dist/usage/index.js.map +1 -0
- package/dist/usage/ui-brand.d.ts +23 -0
- package/dist/usage/ui-brand.d.ts.map +1 -0
- package/dist/usage/ui-brand.js +18 -0
- package/dist/usage/ui-brand.js.map +1 -0
- package/dist/usage/usage-analytics-productivity.d.ts +73 -0
- package/dist/usage/usage-analytics-productivity.d.ts.map +1 -0
- package/dist/usage/usage-analytics-productivity.js +317 -0
- package/dist/usage/usage-analytics-productivity.js.map +1 -0
- package/dist/usage/usage-analytics-shared.d.ts +5 -0
- package/dist/usage/usage-analytics-shared.d.ts.map +1 -0
- package/dist/usage/usage-analytics-shared.js +20 -0
- package/dist/usage/usage-analytics-shared.js.map +1 -0
- package/dist/usage/usage-analytics.d.ts +127 -0
- package/dist/usage/usage-analytics.d.ts.map +1 -0
- package/dist/usage/usage-analytics.js +338 -0
- package/dist/usage/usage-analytics.js.map +1 -0
- package/dist-cjs/api-endpoints/http-routes.js +14 -0
- package/dist-cjs/api-endpoints/http-routes.js.map +1 -0
- package/dist-cjs/api-endpoints/index.js +10 -0
- package/dist-cjs/api-endpoints/index.js.map +1 -0
- package/dist-cjs/api-endpoints/registry.js +107 -0
- package/dist-cjs/api-endpoints/registry.js.map +1 -0
- package/dist-cjs/api-mount.js +117 -0
- package/dist-cjs/api-mount.js.map +1 -0
- package/dist-cjs/helpers.js +41 -0
- package/dist-cjs/helpers.js.map +1 -0
- package/dist-cjs/index.js +118 -0
- package/dist-cjs/index.js.map +1 -0
- package/dist-cjs/memory-store.js +119 -0
- package/dist-cjs/memory-store.js.map +1 -0
- package/dist-cjs/ops/emit.js +18 -0
- package/dist-cjs/ops/emit.js.map +1 -0
- package/dist-cjs/ops/fleet-activity.js +131 -0
- package/dist-cjs/ops/fleet-activity.js.map +1 -0
- package/dist-cjs/ops/fleet-agent.js +358 -0
- package/dist-cjs/ops/fleet-agent.js.map +1 -0
- package/dist-cjs/ops/fleet-samples.js +229 -0
- package/dist-cjs/ops/fleet-samples.js.map +1 -0
- package/dist-cjs/ops/journal.js +326 -0
- package/dist-cjs/ops/journal.js.map +1 -0
- package/dist-cjs/ops/rules.js +102 -0
- package/dist-cjs/ops/rules.js.map +1 -0
- package/dist-cjs/ops/types.js +126 -0
- package/dist-cjs/ops/types.js.map +1 -0
- package/dist-cjs/package.json +3 -0
- package/dist-cjs/request-logs/config.js +42 -0
- package/dist-cjs/request-logs/config.js.map +1 -0
- package/dist-cjs/request-logs/http-routes.js +32 -0
- package/dist-cjs/request-logs/http-routes.js.map +1 -0
- package/dist-cjs/request-logs/index.js +27 -0
- package/dist-cjs/request-logs/index.js.map +1 -0
- package/dist-cjs/request-logs/middleware.js +203 -0
- package/dist-cjs/request-logs/middleware.js.map +1 -0
- package/dist-cjs/request-logs/request-logs.js +277 -0
- package/dist-cjs/request-logs/request-logs.js.map +1 -0
- package/dist-cjs/schema.js +24 -0
- package/dist-cjs/schema.js.map +1 -0
- package/dist-cjs/sqlite-driver.js +18 -0
- package/dist-cjs/sqlite-driver.js.map +1 -0
- package/dist-cjs/sqlite-store.js +182 -0
- package/dist-cjs/sqlite-store.js.map +1 -0
- package/dist-cjs/types.js +12 -0
- package/dist-cjs/types.js.map +1 -0
- package/dist-cjs/usage/adapters.js +47 -0
- package/dist-cjs/usage/adapters.js.map +1 -0
- package/dist-cjs/usage/http-routes.js +154 -0
- package/dist-cjs/usage/http-routes.js.map +1 -0
- package/dist-cjs/usage/index.js +34 -0
- package/dist-cjs/usage/index.js.map +1 -0
- package/dist-cjs/usage/ui-brand.js +23 -0
- package/dist-cjs/usage/ui-brand.js.map +1 -0
- package/dist-cjs/usage/usage-analytics-productivity.js +321 -0
- package/dist-cjs/usage/usage-analytics-productivity.js.map +1 -0
- package/dist-cjs/usage/usage-analytics-shared.js +23 -0
- package/dist-cjs/usage/usage-analytics-shared.js.map +1 -0
- package/dist-cjs/usage/usage-analytics.js +353 -0
- package/dist-cjs/usage/usage-analytics.js.map +1 -0
- package/fleet-collector/AGENTS.md +7 -0
- package/fleet-collector/README.md +83 -0
- package/fleet-collector/configure-fleet-npm.sh +108 -0
- package/fleet-collector/env.mjs +174 -0
- package/fleet-collector/ops-api.mjs +455 -0
- package/fleet-collector/public/admin.html +696 -0
- package/fleet-collector/public/index.html +941 -0
- package/fleet-collector/server.mjs +564 -0
- package/fleet-collector/test-fleet-collector.mjs +413 -0
- package/fleet-collector/test-server-admin.mjs +475 -0
- package/package.json +109 -0
- package/scripts/test-api-endpoints-registry.mjs +60 -0
- package/ui/analytics-client.tsx +834 -0
- package/ui/analytics-productivity-panel.tsx +513 -0
- package/ui/api-endpoints-client.tsx +228 -0
- package/ui/index.ts +39 -0
- package/ui/primitives/badge.tsx +37 -0
- package/ui/primitives/button.tsx +44 -0
- package/ui/primitives/card.tsx +44 -0
- package/ui/primitives/cn.ts +6 -0
- package/ui/primitives/input.tsx +19 -0
- package/ui/primitives/tabs.tsx +51 -0
- package/ui/request-logs-client.tsx +327 -0
- package/ui/session-usage-analytics-provider.tsx +28 -0
- package/ui/usage-analytics-client.ts +479 -0
- package/ui/usage-analytics-provider.tsx +84 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Helpers d'émission typés — activité / usages plugins / control-plane.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.recordActivity = recordActivity;
|
|
7
|
+
exports.recordPluginUsage = recordPluginUsage;
|
|
8
|
+
exports.recordControlPlaneEvent = recordControlPlaneEvent;
|
|
9
|
+
function recordActivity(store, action, actor, meta) {
|
|
10
|
+
return store.record({
|
|
11
|
+
kind: "activity",
|
|
12
|
+
action,
|
|
13
|
+
orgId: actor?.orgId,
|
|
14
|
+
userId: actor?.userId,
|
|
15
|
+
brandId: actor?.brandId,
|
|
16
|
+
meta,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function recordPluginUsage(store, input) {
|
|
20
|
+
return store.record({
|
|
21
|
+
kind: "plugin_usage",
|
|
22
|
+
action: input.action || "execute",
|
|
23
|
+
pluginId: input.pluginId,
|
|
24
|
+
orgId: input.actor?.orgId,
|
|
25
|
+
userId: input.actor?.userId,
|
|
26
|
+
brandId: input.actor?.brandId,
|
|
27
|
+
meta: input.meta,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
function recordControlPlaneEvent(store, action, input) {
|
|
31
|
+
return store.record({
|
|
32
|
+
kind: "control_plane",
|
|
33
|
+
action,
|
|
34
|
+
pluginId: input?.pluginId,
|
|
35
|
+
orgId: input?.actor?.orgId,
|
|
36
|
+
userId: input?.actor?.userId,
|
|
37
|
+
brandId: input?.actor?.brandId,
|
|
38
|
+
meta: input?.meta,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAeH,wCAcC;AAED,8CAkBC;AAED,0DAkBC;AAtDD,SAAgB,cAAc,CAC5B,KAAyB,EACzB,MAA+B,EAC/B,KAAiB,EACjB,IAA8B;IAE9B,OAAO,KAAK,CAAC,MAAM,CAAC;QAClB,IAAI,EAAE,UAAU;QAChB,MAAM;QACN,KAAK,EAAE,KAAK,EAAE,KAAK;QACnB,MAAM,EAAE,KAAK,EAAE,MAAM;QACrB,OAAO,EAAE,KAAK,EAAE,OAAO;QACvB,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,iBAAiB,CAC/B,KAAyB,EACzB,KAKC;IAED,OAAO,KAAK,CAAC,MAAM,CAAC;QAClB,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,SAAS;QACjC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK;QACzB,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM;QAC3B,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO;QAC7B,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,uBAAuB,CACrC,KAAyB,EACzB,MAAmC,EACnC,KAIC;IAED,OAAO,KAAK,CAAC,MAAM,CAAC;QAClB,IAAI,EAAE,eAAe;QACrB,MAAM;QACN,QAAQ,EAAE,KAAK,EAAE,QAAQ;QACzB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;QAC1B,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;QAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO;QAC9B,IAAI,EAAE,KAAK,EAAE,IAAI;KACsB,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @creezio/observability — activité / usages / CP (V2 SQLite) + boîte noire
|
|
4
|
+
* desktop ops/fleet (R4, extrait TempoFlow).
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.formatDuration = exports.resetUsageAnalyticsUiBrandForTests = exports.getUsageAnalyticsUiBrand = exports.configureUsageAnalyticsUiBrand = exports.resetUsageAnalyticsAdaptersForTests = exports.getUsageAnalyticsAdapters = exports.configureUsageAnalytics = exports.createFleetSamples = exports.setFleetSessionContext = exports.sampleFleetActions = exports.recordFleetAction = exports.getFleetSessionContext = exports.drainFleetActions = exports._resetFleetActivityForTests = exports.createFleetAgent = exports.emitOpsEvent = exports.evaluateRulesPure = exports.evaluateBootRules = exports.trackExternal = exports.trackDecision = exports.trackCrashMirror = exports.track = exports.setOpsJournalHooks = exports.readPreviousBootSummaries = exports.persistBootSummary = exports.initOpsJournal = exports.getOpsDir = exports.getOpsBootId = exports.drainPendingOpsEvents = exports.currentBootSummary = exports.consumeOpsLine = exports.__resetOpsJournalForTests = exports.serializeOpsEvent = exports.sanitizeOpsEventInput = exports.redactOpsCtx = exports.parseOpsLine = exports.TF2EVENT_PREFIX = exports.OPS_LEVELS = exports.OPS_EVENT_PREFIXES = exports.OPS_EVENT_PREFIX = exports.MAX_CTX_BYTES = exports.createObservabilityApiMount = exports.recordPluginUsage = exports.recordControlPlaneEvent = exports.recordActivity = exports.openNodeSqliteDatabase = exports.createSqliteObservabilityStore = exports.createMemoryObservabilityStore = exports.OBSERVABILITY_CORE_SQL = exports.OBSERVABILITY_EVENT_KINDS = void 0;
|
|
8
|
+
exports.createApiEndpointsRoutes = exports.collectHonoRoutes = exports.buildOpenApiDocumentFromRegistry = exports.buildApiEndpointsRegistry = exports.createRequestLogsRoutes = exports.requestLogMcpMiddleware = exports.requestLogApiMiddleware = exports.shouldSkipRequestLog = exports.extractApiErrorMessage = exports.summarizeMcpResponse = exports.summarizeMcpRequest = exports.parseJsonRpcMessages = exports.clearRequestLogs = exports.listRequestLogs = exports.pushRequestLog = exports.redactSecrets = exports.isSecretKey = exports._resetRequestLogsForTests = exports.getRequestLogCapacity = exports.resolveFleetStateDir = exports.resetRequestLogsConfigForTests = exports.getRequestLogsConfig = exports.configureRequestLogs = exports.createUsageAnalyticsAdminRoutes = exports.createUsageAnalyticsIngestRoutes = exports.getProductivityReport = exports.BREAK_MAX_MS = exports.BREAK_MIN_MS = exports.purgeUsageEvents = exports.listUsageEvents = exports.getUserStats = exports.getTopClicks = exports.getTopPages = exports.getUsageTimeline = exports.getUsageOverview = exports.resolvePeriodFilters = exports.recordUsageEvent = exports.insertUsageEvents = exports.ensureUsageAnalyticsSchema = exports.usageAnalyticsReady = void 0;
|
|
9
|
+
var types_js_1 = require("./types.js");
|
|
10
|
+
Object.defineProperty(exports, "OBSERVABILITY_EVENT_KINDS", { enumerable: true, get: function () { return types_js_1.OBSERVABILITY_EVENT_KINDS; } });
|
|
11
|
+
var schema_js_1 = require("./schema.js");
|
|
12
|
+
Object.defineProperty(exports, "OBSERVABILITY_CORE_SQL", { enumerable: true, get: function () { return schema_js_1.OBSERVABILITY_CORE_SQL; } });
|
|
13
|
+
var memory_store_js_1 = require("./memory-store.js");
|
|
14
|
+
Object.defineProperty(exports, "createMemoryObservabilityStore", { enumerable: true, get: function () { return memory_store_js_1.createMemoryObservabilityStore; } });
|
|
15
|
+
var sqlite_store_js_1 = require("./sqlite-store.js");
|
|
16
|
+
Object.defineProperty(exports, "createSqliteObservabilityStore", { enumerable: true, get: function () { return sqlite_store_js_1.createSqliteObservabilityStore; } });
|
|
17
|
+
var sqlite_driver_js_1 = require("./sqlite-driver.js");
|
|
18
|
+
Object.defineProperty(exports, "openNodeSqliteDatabase", { enumerable: true, get: function () { return sqlite_driver_js_1.openNodeSqliteDatabase; } });
|
|
19
|
+
var helpers_js_1 = require("./helpers.js");
|
|
20
|
+
Object.defineProperty(exports, "recordActivity", { enumerable: true, get: function () { return helpers_js_1.recordActivity; } });
|
|
21
|
+
Object.defineProperty(exports, "recordControlPlaneEvent", { enumerable: true, get: function () { return helpers_js_1.recordControlPlaneEvent; } });
|
|
22
|
+
Object.defineProperty(exports, "recordPluginUsage", { enumerable: true, get: function () { return helpers_js_1.recordPluginUsage; } });
|
|
23
|
+
var api_mount_js_1 = require("./api-mount.js");
|
|
24
|
+
Object.defineProperty(exports, "createObservabilityApiMount", { enumerable: true, get: function () { return api_mount_js_1.createObservabilityApiMount; } });
|
|
25
|
+
var types_js_2 = require("./ops/types.js");
|
|
26
|
+
Object.defineProperty(exports, "MAX_CTX_BYTES", { enumerable: true, get: function () { return types_js_2.MAX_CTX_BYTES; } });
|
|
27
|
+
Object.defineProperty(exports, "OPS_EVENT_PREFIX", { enumerable: true, get: function () { return types_js_2.OPS_EVENT_PREFIX; } });
|
|
28
|
+
Object.defineProperty(exports, "OPS_EVENT_PREFIXES", { enumerable: true, get: function () { return types_js_2.OPS_EVENT_PREFIXES; } });
|
|
29
|
+
Object.defineProperty(exports, "OPS_LEVELS", { enumerable: true, get: function () { return types_js_2.OPS_LEVELS; } });
|
|
30
|
+
Object.defineProperty(exports, "TF2EVENT_PREFIX", { enumerable: true, get: function () { return types_js_2.TF2EVENT_PREFIX; } });
|
|
31
|
+
Object.defineProperty(exports, "parseOpsLine", { enumerable: true, get: function () { return types_js_2.parseOpsLine; } });
|
|
32
|
+
Object.defineProperty(exports, "redactOpsCtx", { enumerable: true, get: function () { return types_js_2.redactOpsCtx; } });
|
|
33
|
+
Object.defineProperty(exports, "sanitizeOpsEventInput", { enumerable: true, get: function () { return types_js_2.sanitizeOpsEventInput; } });
|
|
34
|
+
Object.defineProperty(exports, "serializeOpsEvent", { enumerable: true, get: function () { return types_js_2.serializeOpsEvent; } });
|
|
35
|
+
var journal_js_1 = require("./ops/journal.js");
|
|
36
|
+
Object.defineProperty(exports, "__resetOpsJournalForTests", { enumerable: true, get: function () { return journal_js_1.__resetOpsJournalForTests; } });
|
|
37
|
+
Object.defineProperty(exports, "consumeOpsLine", { enumerable: true, get: function () { return journal_js_1.consumeOpsLine; } });
|
|
38
|
+
Object.defineProperty(exports, "currentBootSummary", { enumerable: true, get: function () { return journal_js_1.currentBootSummary; } });
|
|
39
|
+
Object.defineProperty(exports, "drainPendingOpsEvents", { enumerable: true, get: function () { return journal_js_1.drainPendingOpsEvents; } });
|
|
40
|
+
Object.defineProperty(exports, "getOpsBootId", { enumerable: true, get: function () { return journal_js_1.getOpsBootId; } });
|
|
41
|
+
Object.defineProperty(exports, "getOpsDir", { enumerable: true, get: function () { return journal_js_1.getOpsDir; } });
|
|
42
|
+
Object.defineProperty(exports, "initOpsJournal", { enumerable: true, get: function () { return journal_js_1.initOpsJournal; } });
|
|
43
|
+
Object.defineProperty(exports, "persistBootSummary", { enumerable: true, get: function () { return journal_js_1.persistBootSummary; } });
|
|
44
|
+
Object.defineProperty(exports, "readPreviousBootSummaries", { enumerable: true, get: function () { return journal_js_1.readPreviousBootSummaries; } });
|
|
45
|
+
Object.defineProperty(exports, "setOpsJournalHooks", { enumerable: true, get: function () { return journal_js_1.setOpsJournalHooks; } });
|
|
46
|
+
Object.defineProperty(exports, "track", { enumerable: true, get: function () { return journal_js_1.track; } });
|
|
47
|
+
Object.defineProperty(exports, "trackCrashMirror", { enumerable: true, get: function () { return journal_js_1.trackCrashMirror; } });
|
|
48
|
+
Object.defineProperty(exports, "trackDecision", { enumerable: true, get: function () { return journal_js_1.trackDecision; } });
|
|
49
|
+
Object.defineProperty(exports, "trackExternal", { enumerable: true, get: function () { return journal_js_1.trackExternal; } });
|
|
50
|
+
var rules_js_1 = require("./ops/rules.js");
|
|
51
|
+
Object.defineProperty(exports, "evaluateBootRules", { enumerable: true, get: function () { return rules_js_1.evaluateBootRules; } });
|
|
52
|
+
Object.defineProperty(exports, "evaluateRulesPure", { enumerable: true, get: function () { return rules_js_1.evaluateRulesPure; } });
|
|
53
|
+
var emit_js_1 = require("./ops/emit.js");
|
|
54
|
+
Object.defineProperty(exports, "emitOpsEvent", { enumerable: true, get: function () { return emit_js_1.emitOpsEvent; } });
|
|
55
|
+
var fleet_agent_js_1 = require("./ops/fleet-agent.js");
|
|
56
|
+
Object.defineProperty(exports, "createFleetAgent", { enumerable: true, get: function () { return fleet_agent_js_1.createFleetAgent; } });
|
|
57
|
+
var fleet_activity_js_1 = require("./ops/fleet-activity.js");
|
|
58
|
+
Object.defineProperty(exports, "_resetFleetActivityForTests", { enumerable: true, get: function () { return fleet_activity_js_1._resetFleetActivityForTests; } });
|
|
59
|
+
Object.defineProperty(exports, "drainFleetActions", { enumerable: true, get: function () { return fleet_activity_js_1.drainFleetActions; } });
|
|
60
|
+
Object.defineProperty(exports, "getFleetSessionContext", { enumerable: true, get: function () { return fleet_activity_js_1.getFleetSessionContext; } });
|
|
61
|
+
Object.defineProperty(exports, "recordFleetAction", { enumerable: true, get: function () { return fleet_activity_js_1.recordFleetAction; } });
|
|
62
|
+
Object.defineProperty(exports, "sampleFleetActions", { enumerable: true, get: function () { return fleet_activity_js_1.sampleFleetActions; } });
|
|
63
|
+
Object.defineProperty(exports, "setFleetSessionContext", { enumerable: true, get: function () { return fleet_activity_js_1.setFleetSessionContext; } });
|
|
64
|
+
var fleet_samples_js_1 = require("./ops/fleet-samples.js");
|
|
65
|
+
Object.defineProperty(exports, "createFleetSamples", { enumerable: true, get: function () { return fleet_samples_js_1.createFleetSamples; } });
|
|
66
|
+
/* ── N6 : usage analytics (port TempoFlow) ── */
|
|
67
|
+
var index_js_1 = require("./usage/index.js");
|
|
68
|
+
Object.defineProperty(exports, "configureUsageAnalytics", { enumerable: true, get: function () { return index_js_1.configureUsageAnalytics; } });
|
|
69
|
+
Object.defineProperty(exports, "getUsageAnalyticsAdapters", { enumerable: true, get: function () { return index_js_1.getUsageAnalyticsAdapters; } });
|
|
70
|
+
Object.defineProperty(exports, "resetUsageAnalyticsAdaptersForTests", { enumerable: true, get: function () { return index_js_1.resetUsageAnalyticsAdaptersForTests; } });
|
|
71
|
+
Object.defineProperty(exports, "configureUsageAnalyticsUiBrand", { enumerable: true, get: function () { return index_js_1.configureUsageAnalyticsUiBrand; } });
|
|
72
|
+
Object.defineProperty(exports, "getUsageAnalyticsUiBrand", { enumerable: true, get: function () { return index_js_1.getUsageAnalyticsUiBrand; } });
|
|
73
|
+
Object.defineProperty(exports, "resetUsageAnalyticsUiBrandForTests", { enumerable: true, get: function () { return index_js_1.resetUsageAnalyticsUiBrandForTests; } });
|
|
74
|
+
Object.defineProperty(exports, "formatDuration", { enumerable: true, get: function () { return index_js_1.formatDuration; } });
|
|
75
|
+
Object.defineProperty(exports, "usageAnalyticsReady", { enumerable: true, get: function () { return index_js_1.usageAnalyticsReady; } });
|
|
76
|
+
Object.defineProperty(exports, "ensureUsageAnalyticsSchema", { enumerable: true, get: function () { return index_js_1.ensureUsageAnalyticsSchema; } });
|
|
77
|
+
Object.defineProperty(exports, "insertUsageEvents", { enumerable: true, get: function () { return index_js_1.insertUsageEvents; } });
|
|
78
|
+
Object.defineProperty(exports, "recordUsageEvent", { enumerable: true, get: function () { return index_js_1.recordUsageEvent; } });
|
|
79
|
+
Object.defineProperty(exports, "resolvePeriodFilters", { enumerable: true, get: function () { return index_js_1.resolvePeriodFilters; } });
|
|
80
|
+
Object.defineProperty(exports, "getUsageOverview", { enumerable: true, get: function () { return index_js_1.getUsageOverview; } });
|
|
81
|
+
Object.defineProperty(exports, "getUsageTimeline", { enumerable: true, get: function () { return index_js_1.getUsageTimeline; } });
|
|
82
|
+
Object.defineProperty(exports, "getTopPages", { enumerable: true, get: function () { return index_js_1.getTopPages; } });
|
|
83
|
+
Object.defineProperty(exports, "getTopClicks", { enumerable: true, get: function () { return index_js_1.getTopClicks; } });
|
|
84
|
+
Object.defineProperty(exports, "getUserStats", { enumerable: true, get: function () { return index_js_1.getUserStats; } });
|
|
85
|
+
Object.defineProperty(exports, "listUsageEvents", { enumerable: true, get: function () { return index_js_1.listUsageEvents; } });
|
|
86
|
+
Object.defineProperty(exports, "purgeUsageEvents", { enumerable: true, get: function () { return index_js_1.purgeUsageEvents; } });
|
|
87
|
+
Object.defineProperty(exports, "BREAK_MIN_MS", { enumerable: true, get: function () { return index_js_1.BREAK_MIN_MS; } });
|
|
88
|
+
Object.defineProperty(exports, "BREAK_MAX_MS", { enumerable: true, get: function () { return index_js_1.BREAK_MAX_MS; } });
|
|
89
|
+
Object.defineProperty(exports, "getProductivityReport", { enumerable: true, get: function () { return index_js_1.getProductivityReport; } });
|
|
90
|
+
Object.defineProperty(exports, "createUsageAnalyticsIngestRoutes", { enumerable: true, get: function () { return index_js_1.createUsageAnalyticsIngestRoutes; } });
|
|
91
|
+
Object.defineProperty(exports, "createUsageAnalyticsAdminRoutes", { enumerable: true, get: function () { return index_js_1.createUsageAnalyticsAdminRoutes; } });
|
|
92
|
+
/* ── O5 : request-logs admin (port TempoFlow) ── */
|
|
93
|
+
var index_js_2 = require("./request-logs/index.js");
|
|
94
|
+
Object.defineProperty(exports, "configureRequestLogs", { enumerable: true, get: function () { return index_js_2.configureRequestLogs; } });
|
|
95
|
+
Object.defineProperty(exports, "getRequestLogsConfig", { enumerable: true, get: function () { return index_js_2.getRequestLogsConfig; } });
|
|
96
|
+
Object.defineProperty(exports, "resetRequestLogsConfigForTests", { enumerable: true, get: function () { return index_js_2.resetRequestLogsConfigForTests; } });
|
|
97
|
+
Object.defineProperty(exports, "resolveFleetStateDir", { enumerable: true, get: function () { return index_js_2.resolveFleetStateDir; } });
|
|
98
|
+
Object.defineProperty(exports, "getRequestLogCapacity", { enumerable: true, get: function () { return index_js_2.getRequestLogCapacity; } });
|
|
99
|
+
Object.defineProperty(exports, "_resetRequestLogsForTests", { enumerable: true, get: function () { return index_js_2._resetRequestLogsForTests; } });
|
|
100
|
+
Object.defineProperty(exports, "isSecretKey", { enumerable: true, get: function () { return index_js_2.isSecretKey; } });
|
|
101
|
+
Object.defineProperty(exports, "redactSecrets", { enumerable: true, get: function () { return index_js_2.redactSecrets; } });
|
|
102
|
+
Object.defineProperty(exports, "pushRequestLog", { enumerable: true, get: function () { return index_js_2.pushRequestLog; } });
|
|
103
|
+
Object.defineProperty(exports, "listRequestLogs", { enumerable: true, get: function () { return index_js_2.listRequestLogs; } });
|
|
104
|
+
Object.defineProperty(exports, "clearRequestLogs", { enumerable: true, get: function () { return index_js_2.clearRequestLogs; } });
|
|
105
|
+
Object.defineProperty(exports, "parseJsonRpcMessages", { enumerable: true, get: function () { return index_js_2.parseJsonRpcMessages; } });
|
|
106
|
+
Object.defineProperty(exports, "summarizeMcpRequest", { enumerable: true, get: function () { return index_js_2.summarizeMcpRequest; } });
|
|
107
|
+
Object.defineProperty(exports, "summarizeMcpResponse", { enumerable: true, get: function () { return index_js_2.summarizeMcpResponse; } });
|
|
108
|
+
Object.defineProperty(exports, "extractApiErrorMessage", { enumerable: true, get: function () { return index_js_2.extractApiErrorMessage; } });
|
|
109
|
+
Object.defineProperty(exports, "shouldSkipRequestLog", { enumerable: true, get: function () { return index_js_2.shouldSkipRequestLog; } });
|
|
110
|
+
Object.defineProperty(exports, "requestLogApiMiddleware", { enumerable: true, get: function () { return index_js_2.requestLogApiMiddleware; } });
|
|
111
|
+
Object.defineProperty(exports, "requestLogMcpMiddleware", { enumerable: true, get: function () { return index_js_2.requestLogMcpMiddleware; } });
|
|
112
|
+
Object.defineProperty(exports, "createRequestLogsRoutes", { enumerable: true, get: function () { return index_js_2.createRequestLogsRoutes; } });
|
|
113
|
+
var index_js_3 = require("./api-endpoints/index.js");
|
|
114
|
+
Object.defineProperty(exports, "buildApiEndpointsRegistry", { enumerable: true, get: function () { return index_js_3.buildApiEndpointsRegistry; } });
|
|
115
|
+
Object.defineProperty(exports, "buildOpenApiDocumentFromRegistry", { enumerable: true, get: function () { return index_js_3.buildOpenApiDocumentFromRegistry; } });
|
|
116
|
+
Object.defineProperty(exports, "collectHonoRoutes", { enumerable: true, get: function () { return index_js_3.collectHonoRoutes; } });
|
|
117
|
+
Object.defineProperty(exports, "createApiEndpointsRoutes", { enumerable: true, get: function () { return index_js_3.createApiEndpointsRoutes; } });
|
|
118
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createMemoryObservabilityStore = createMemoryObservabilityStore;
|
|
7
|
+
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
8
|
+
function now() {
|
|
9
|
+
return new Date().toISOString();
|
|
10
|
+
}
|
|
11
|
+
function match(e, q) {
|
|
12
|
+
if (!q)
|
|
13
|
+
return true;
|
|
14
|
+
if (q.kind && e.kind !== q.kind)
|
|
15
|
+
return false;
|
|
16
|
+
if (q.orgId && e.orgId !== q.orgId)
|
|
17
|
+
return false;
|
|
18
|
+
if (q.pluginId && e.pluginId !== q.pluginId)
|
|
19
|
+
return false;
|
|
20
|
+
if (q.action && e.action !== q.action)
|
|
21
|
+
return false;
|
|
22
|
+
if (q.since && e.createdAt < q.since)
|
|
23
|
+
return false;
|
|
24
|
+
if (q.until && e.createdAt > q.until)
|
|
25
|
+
return false;
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
function createMemoryObservabilityStore() {
|
|
29
|
+
const events = [];
|
|
30
|
+
return {
|
|
31
|
+
record(input) {
|
|
32
|
+
const event = {
|
|
33
|
+
id: input.id || node_crypto_1.default.randomUUID(),
|
|
34
|
+
kind: input.kind,
|
|
35
|
+
action: input.action,
|
|
36
|
+
orgId: input.orgId ?? null,
|
|
37
|
+
userId: input.userId ?? null,
|
|
38
|
+
brandId: input.brandId ?? null,
|
|
39
|
+
pluginId: input.pluginId ?? null,
|
|
40
|
+
meta: input.meta || {},
|
|
41
|
+
createdAt: input.createdAt || now(),
|
|
42
|
+
};
|
|
43
|
+
events.push(event);
|
|
44
|
+
return event;
|
|
45
|
+
},
|
|
46
|
+
list(query) {
|
|
47
|
+
const limit = query?.limit ?? 100;
|
|
48
|
+
return events
|
|
49
|
+
.filter((e) => match(e, query))
|
|
50
|
+
.sort((a, b) => b.createdAt.localeCompare(a.createdAt))
|
|
51
|
+
.slice(0, limit);
|
|
52
|
+
},
|
|
53
|
+
count(query) {
|
|
54
|
+
return events.filter((e) => match(e, query)).length;
|
|
55
|
+
},
|
|
56
|
+
aggregatePluginUsage(opts) {
|
|
57
|
+
const since = opts?.since;
|
|
58
|
+
const orgId = opts?.orgId;
|
|
59
|
+
const map = new Map();
|
|
60
|
+
for (const e of events) {
|
|
61
|
+
if (e.kind !== "plugin_usage")
|
|
62
|
+
continue;
|
|
63
|
+
if (!e.pluginId)
|
|
64
|
+
continue;
|
|
65
|
+
if (orgId && e.orgId !== orgId)
|
|
66
|
+
continue;
|
|
67
|
+
if (since && e.createdAt < since)
|
|
68
|
+
continue;
|
|
69
|
+
const key = `${e.pluginId}::${e.orgId || ""}`;
|
|
70
|
+
const cur = map.get(key);
|
|
71
|
+
if (!cur) {
|
|
72
|
+
map.set(key, {
|
|
73
|
+
pluginId: e.pluginId,
|
|
74
|
+
orgId: e.orgId,
|
|
75
|
+
count: 1,
|
|
76
|
+
lastAt: e.createdAt,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
cur.count += 1;
|
|
81
|
+
if (e.createdAt > cur.lastAt)
|
|
82
|
+
cur.lastAt = e.createdAt;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return Array.from(map.values())
|
|
86
|
+
.sort((a, b) => b.count - a.count)
|
|
87
|
+
.slice(0, opts?.limit ?? 50);
|
|
88
|
+
},
|
|
89
|
+
aggregateOrgActivity(opts) {
|
|
90
|
+
const since = opts?.since;
|
|
91
|
+
const map = new Map();
|
|
92
|
+
for (const e of events) {
|
|
93
|
+
if (e.kind !== "activity")
|
|
94
|
+
continue;
|
|
95
|
+
if (!e.orgId)
|
|
96
|
+
continue;
|
|
97
|
+
if (since && e.createdAt < since)
|
|
98
|
+
continue;
|
|
99
|
+
const cur = map.get(e.orgId);
|
|
100
|
+
if (!cur) {
|
|
101
|
+
map.set(e.orgId, {
|
|
102
|
+
orgId: e.orgId,
|
|
103
|
+
count: 1,
|
|
104
|
+
lastAt: e.createdAt,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
cur.count += 1;
|
|
109
|
+
if (e.createdAt > cur.lastAt)
|
|
110
|
+
cur.lastAt = e.createdAt;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return Array.from(map.values())
|
|
114
|
+
.sort((a, b) => b.count - a.count)
|
|
115
|
+
.slice(0, opts?.limit ?? 50);
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=memory-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../src/memory-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Émission d'événements ops depuis un SOUS-PROCESS Node vanilla
|
|
4
|
+
* (meili-indexer, migrations…) : ligne `TF2EVENT {json}` sur stdout.
|
|
5
|
+
* Extrait de TempoFlow ops-emit.ts (R4).
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.emitOpsEvent = emitOpsEvent;
|
|
9
|
+
const types_js_1 = require("./types.js");
|
|
10
|
+
function emitOpsEvent(evt) {
|
|
11
|
+
try {
|
|
12
|
+
console.log(`${types_js_1.TF2EVENT_PREFIX}${JSON.stringify(evt)}`);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
/* best-effort : jamais de throw depuis l'instrumentation */
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=emit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/ops/emit.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAIH,oCAMC;AARD,yCAAiE;AAEjE,SAAgB,YAAY,CAAC,GAAkB;IAC7C,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,GAAG,0BAAe,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;IAC9D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Journal d’événements produit flotte (ring mémoire).
|
|
4
|
+
* Schema FleetProductEvent v1 — attribution session + dwell.
|
|
5
|
+
* Extrait TempoFlow fleet-activity.ts (M7).
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.setFleetSessionContext = setFleetSessionContext;
|
|
9
|
+
exports.getFleetSessionContext = getFleetSessionContext;
|
|
10
|
+
exports.recordFleetAction = recordFleetAction;
|
|
11
|
+
exports.sampleFleetActions = sampleFleetActions;
|
|
12
|
+
exports.drainFleetActions = drainFleetActions;
|
|
13
|
+
exports._resetFleetActivityForTests = _resetFleetActivityForTests;
|
|
14
|
+
const MAX = 800;
|
|
15
|
+
const ring = [];
|
|
16
|
+
let seq = 0;
|
|
17
|
+
let session = {
|
|
18
|
+
userId: null,
|
|
19
|
+
username: null,
|
|
20
|
+
sessionId: null,
|
|
21
|
+
};
|
|
22
|
+
function setFleetSessionContext(next) {
|
|
23
|
+
session = {
|
|
24
|
+
userId: next.userId !== undefined
|
|
25
|
+
? next.userId
|
|
26
|
+
? String(next.userId).slice(0, 80)
|
|
27
|
+
: null
|
|
28
|
+
: session.userId,
|
|
29
|
+
username: next.username !== undefined
|
|
30
|
+
? next.username
|
|
31
|
+
? String(next.username).slice(0, 80)
|
|
32
|
+
: null
|
|
33
|
+
: session.username,
|
|
34
|
+
sessionId: next.sessionId !== undefined
|
|
35
|
+
? next.sessionId
|
|
36
|
+
? String(next.sessionId).slice(0, 80)
|
|
37
|
+
: null
|
|
38
|
+
: session.sessionId,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function getFleetSessionContext() {
|
|
42
|
+
return { ...session };
|
|
43
|
+
}
|
|
44
|
+
function sanitizeMeta(meta) {
|
|
45
|
+
if (!meta || typeof meta !== "object")
|
|
46
|
+
return undefined;
|
|
47
|
+
const out = {};
|
|
48
|
+
let n = 0;
|
|
49
|
+
for (const [k, v] of Object.entries(meta)) {
|
|
50
|
+
if (n >= 20)
|
|
51
|
+
break;
|
|
52
|
+
const key = String(k).slice(0, 40);
|
|
53
|
+
if (/password|token|secret|authorization|cookie|api[_-]?key/i.test(key)) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (v == null || typeof v === "boolean" || typeof v === "number") {
|
|
57
|
+
out[key] = v;
|
|
58
|
+
n++;
|
|
59
|
+
}
|
|
60
|
+
else if (typeof v === "string") {
|
|
61
|
+
out[key] = v.slice(0, 200);
|
|
62
|
+
n++;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return Object.keys(out).length ? out : undefined;
|
|
66
|
+
}
|
|
67
|
+
let lastDedupeKey = "";
|
|
68
|
+
let lastDedupeAt = 0;
|
|
69
|
+
/** Enregistre un événement (toujours local ; envoi flotte gate par scope actions). */
|
|
70
|
+
function recordFleetAction(input) {
|
|
71
|
+
const name = String(input.name || input.type || "event").slice(0, 60);
|
|
72
|
+
const type = String(input.type || name).slice(0, 40);
|
|
73
|
+
const label = String(input.label || "").slice(0, 200);
|
|
74
|
+
if (!label && !name)
|
|
75
|
+
return null;
|
|
76
|
+
// Évite les doubles (main/preload/renderer) sur une même action.
|
|
77
|
+
if (type === "page.view" ||
|
|
78
|
+
name === "page.view" ||
|
|
79
|
+
type === "ui.click" ||
|
|
80
|
+
name === "ui.click") {
|
|
81
|
+
const key = `${type}|${input.path || ""}|${label}`;
|
|
82
|
+
const now = Date.now();
|
|
83
|
+
if (key === lastDedupeKey && now - lastDedupeAt < 500)
|
|
84
|
+
return null;
|
|
85
|
+
lastDedupeKey = key;
|
|
86
|
+
lastDedupeAt = now;
|
|
87
|
+
}
|
|
88
|
+
const ev = {
|
|
89
|
+
schemaVersion: 1,
|
|
90
|
+
id: `fa_${Date.now()}_${++seq}`,
|
|
91
|
+
at: new Date().toISOString(),
|
|
92
|
+
name,
|
|
93
|
+
category: String(input.category || "ui").slice(0, 40),
|
|
94
|
+
type,
|
|
95
|
+
label: label || name,
|
|
96
|
+
path: input.path ? String(input.path).slice(0, 300) : undefined,
|
|
97
|
+
referrerPath: input.referrerPath
|
|
98
|
+
? String(input.referrerPath).slice(0, 300)
|
|
99
|
+
: undefined,
|
|
100
|
+
userId: (input.userId ?? session.userId)?.slice(0, 80) || undefined,
|
|
101
|
+
username: (input.username ?? session.username)?.slice(0, 80) || undefined,
|
|
102
|
+
sessionId: (input.sessionId ?? session.sessionId)?.slice(0, 80) || undefined,
|
|
103
|
+
surface: input.surface || "crm",
|
|
104
|
+
durationMs: typeof input.durationMs === "number" && Number.isFinite(input.durationMs)
|
|
105
|
+
? Math.max(0, Math.round(input.durationMs))
|
|
106
|
+
: undefined,
|
|
107
|
+
meta: sanitizeMeta(input.meta),
|
|
108
|
+
};
|
|
109
|
+
ring.push(ev);
|
|
110
|
+
while (ring.length > MAX)
|
|
111
|
+
ring.shift();
|
|
112
|
+
return ev;
|
|
113
|
+
}
|
|
114
|
+
function sampleFleetActions(limit = 120) {
|
|
115
|
+
return ring.slice(-limit).reverse();
|
|
116
|
+
}
|
|
117
|
+
/** Snapshot + optionnellement vide le ring après flush (non utilisé par défaut). */
|
|
118
|
+
function drainFleetActions(limit = 200) {
|
|
119
|
+
const out = ring.slice(-limit);
|
|
120
|
+
ring.length = 0;
|
|
121
|
+
seq = 0;
|
|
122
|
+
return out.reverse();
|
|
123
|
+
}
|
|
124
|
+
function _resetFleetActivityForTests() {
|
|
125
|
+
ring.length = 0;
|
|
126
|
+
seq = 0;
|
|
127
|
+
session = { userId: null, username: null, sessionId: null };
|
|
128
|
+
lastDedupeKey = "";
|
|
129
|
+
lastDedupeAt = 0;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=fleet-activity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-activity.js","sourceRoot":"","sources":["../../src/ops/fleet-activity.ts"],"names":[],"mappings":"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"}
|