@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.
Files changed (209) hide show
  1. package/README.md +328 -0
  2. package/dist/.creezio-src-hash.json +4 -0
  3. package/dist/api-endpoints/http-routes.d.ts +11 -0
  4. package/dist/api-endpoints/http-routes.d.ts.map +1 -0
  5. package/dist/api-endpoints/http-routes.js +11 -0
  6. package/dist/api-endpoints/http-routes.js.map +1 -0
  7. package/dist/api-endpoints/index.d.ts +4 -0
  8. package/dist/api-endpoints/index.d.ts.map +1 -0
  9. package/dist/api-endpoints/index.js +3 -0
  10. package/dist/api-endpoints/index.js.map +1 -0
  11. package/dist/api-endpoints/registry.d.ts +66 -0
  12. package/dist/api-endpoints/registry.d.ts.map +1 -0
  13. package/dist/api-endpoints/registry.js +102 -0
  14. package/dist/api-endpoints/registry.js.map +1 -0
  15. package/dist/api-mount.d.ts +7 -0
  16. package/dist/api-mount.d.ts.map +1 -0
  17. package/dist/api-mount.js +114 -0
  18. package/dist/api-mount.js.map +1 -0
  19. package/dist/helpers.d.ts +23 -0
  20. package/dist/helpers.d.ts.map +1 -0
  21. package/dist/helpers.js +36 -0
  22. package/dist/helpers.js.map +1 -0
  23. package/dist/index.d.ts +35 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +24 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/memory-store.d.ts +3 -0
  28. package/dist/memory-store.d.ts.map +1 -0
  29. package/dist/memory-store.js +113 -0
  30. package/dist/memory-store.js.map +1 -0
  31. package/dist/ops/emit.d.ts +8 -0
  32. package/dist/ops/emit.d.ts.map +1 -0
  33. package/dist/ops/emit.js +15 -0
  34. package/dist/ops/emit.js.map +1 -0
  35. package/dist/ops/fleet-activity.d.ts +50 -0
  36. package/dist/ops/fleet-activity.d.ts.map +1 -0
  37. package/dist/ops/fleet-activity.js +123 -0
  38. package/dist/ops/fleet-activity.js.map +1 -0
  39. package/dist/ops/fleet-agent.d.ts +102 -0
  40. package/dist/ops/fleet-agent.d.ts.map +1 -0
  41. package/dist/ops/fleet-agent.js +352 -0
  42. package/dist/ops/fleet-agent.js.map +1 -0
  43. package/dist/ops/fleet-samples.d.ts +33 -0
  44. package/dist/ops/fleet-samples.d.ts.map +1 -0
  45. package/dist/ops/fleet-samples.js +223 -0
  46. package/dist/ops/fleet-samples.js.map +1 -0
  47. package/dist/ops/journal.d.ts +56 -0
  48. package/dist/ops/journal.d.ts.map +1 -0
  49. package/dist/ops/journal.js +307 -0
  50. package/dist/ops/journal.js.map +1 -0
  51. package/dist/ops/rules.d.ts +16 -0
  52. package/dist/ops/rules.d.ts.map +1 -0
  53. package/dist/ops/rules.js +98 -0
  54. package/dist/ops/rules.js.map +1 -0
  55. package/dist/ops/types.d.ts +69 -0
  56. package/dist/ops/types.d.ts.map +1 -0
  57. package/dist/ops/types.js +119 -0
  58. package/dist/ops/types.js.map +1 -0
  59. package/dist/request-logs/config.d.ts +19 -0
  60. package/dist/request-logs/config.d.ts.map +1 -0
  61. package/dist/request-logs/config.js +36 -0
  62. package/dist/request-logs/config.js.map +1 -0
  63. package/dist/request-logs/http-routes.d.ts +8 -0
  64. package/dist/request-logs/http-routes.d.ts.map +1 -0
  65. package/dist/request-logs/http-routes.js +29 -0
  66. package/dist/request-logs/http-routes.js.map +1 -0
  67. package/dist/request-logs/index.d.ts +6 -0
  68. package/dist/request-logs/index.d.ts.map +1 -0
  69. package/dist/request-logs/index.js +5 -0
  70. package/dist/request-logs/index.js.map +1 -0
  71. package/dist/request-logs/middleware.d.ts +11 -0
  72. package/dist/request-logs/middleware.d.ts.map +1 -0
  73. package/dist/request-logs/middleware.js +198 -0
  74. package/dist/request-logs/middleware.js.map +1 -0
  75. package/dist/request-logs/request-logs.d.ts +60 -0
  76. package/dist/request-logs/request-logs.d.ts.map +1 -0
  77. package/dist/request-logs/request-logs.js +260 -0
  78. package/dist/request-logs/request-logs.js.map +1 -0
  79. package/dist/schema.d.ts +3 -0
  80. package/dist/schema.d.ts.map +1 -0
  81. package/dist/schema.js +21 -0
  82. package/dist/schema.js.map +1 -0
  83. package/dist/sqlite-driver.d.ts +16 -0
  84. package/dist/sqlite-driver.d.ts.map +1 -0
  85. package/dist/sqlite-driver.js +15 -0
  86. package/dist/sqlite-driver.js.map +1 -0
  87. package/dist/sqlite-store.d.ts +12 -0
  88. package/dist/sqlite-store.d.ts.map +1 -0
  89. package/dist/sqlite-store.js +176 -0
  90. package/dist/sqlite-store.js.map +1 -0
  91. package/dist/types.d.ts +67 -0
  92. package/dist/types.d.ts.map +1 -0
  93. package/dist/types.js +9 -0
  94. package/dist/types.js.map +1 -0
  95. package/dist/usage/adapters.d.ts +31 -0
  96. package/dist/usage/adapters.d.ts.map +1 -0
  97. package/dist/usage/adapters.js +37 -0
  98. package/dist/usage/adapters.js.map +1 -0
  99. package/dist/usage/http-routes.d.ts +23 -0
  100. package/dist/usage/http-routes.d.ts.map +1 -0
  101. package/dist/usage/http-routes.js +150 -0
  102. package/dist/usage/http-routes.js.map +1 -0
  103. package/dist/usage/index.d.ts +11 -0
  104. package/dist/usage/index.d.ts.map +1 -0
  105. package/dist/usage/index.js +7 -0
  106. package/dist/usage/index.js.map +1 -0
  107. package/dist/usage/ui-brand.d.ts +23 -0
  108. package/dist/usage/ui-brand.d.ts.map +1 -0
  109. package/dist/usage/ui-brand.js +18 -0
  110. package/dist/usage/ui-brand.js.map +1 -0
  111. package/dist/usage/usage-analytics-productivity.d.ts +73 -0
  112. package/dist/usage/usage-analytics-productivity.d.ts.map +1 -0
  113. package/dist/usage/usage-analytics-productivity.js +317 -0
  114. package/dist/usage/usage-analytics-productivity.js.map +1 -0
  115. package/dist/usage/usage-analytics-shared.d.ts +5 -0
  116. package/dist/usage/usage-analytics-shared.d.ts.map +1 -0
  117. package/dist/usage/usage-analytics-shared.js +20 -0
  118. package/dist/usage/usage-analytics-shared.js.map +1 -0
  119. package/dist/usage/usage-analytics.d.ts +127 -0
  120. package/dist/usage/usage-analytics.d.ts.map +1 -0
  121. package/dist/usage/usage-analytics.js +338 -0
  122. package/dist/usage/usage-analytics.js.map +1 -0
  123. package/dist-cjs/api-endpoints/http-routes.js +14 -0
  124. package/dist-cjs/api-endpoints/http-routes.js.map +1 -0
  125. package/dist-cjs/api-endpoints/index.js +10 -0
  126. package/dist-cjs/api-endpoints/index.js.map +1 -0
  127. package/dist-cjs/api-endpoints/registry.js +107 -0
  128. package/dist-cjs/api-endpoints/registry.js.map +1 -0
  129. package/dist-cjs/api-mount.js +117 -0
  130. package/dist-cjs/api-mount.js.map +1 -0
  131. package/dist-cjs/helpers.js +41 -0
  132. package/dist-cjs/helpers.js.map +1 -0
  133. package/dist-cjs/index.js +118 -0
  134. package/dist-cjs/index.js.map +1 -0
  135. package/dist-cjs/memory-store.js +119 -0
  136. package/dist-cjs/memory-store.js.map +1 -0
  137. package/dist-cjs/ops/emit.js +18 -0
  138. package/dist-cjs/ops/emit.js.map +1 -0
  139. package/dist-cjs/ops/fleet-activity.js +131 -0
  140. package/dist-cjs/ops/fleet-activity.js.map +1 -0
  141. package/dist-cjs/ops/fleet-agent.js +358 -0
  142. package/dist-cjs/ops/fleet-agent.js.map +1 -0
  143. package/dist-cjs/ops/fleet-samples.js +229 -0
  144. package/dist-cjs/ops/fleet-samples.js.map +1 -0
  145. package/dist-cjs/ops/journal.js +326 -0
  146. package/dist-cjs/ops/journal.js.map +1 -0
  147. package/dist-cjs/ops/rules.js +102 -0
  148. package/dist-cjs/ops/rules.js.map +1 -0
  149. package/dist-cjs/ops/types.js +126 -0
  150. package/dist-cjs/ops/types.js.map +1 -0
  151. package/dist-cjs/package.json +3 -0
  152. package/dist-cjs/request-logs/config.js +42 -0
  153. package/dist-cjs/request-logs/config.js.map +1 -0
  154. package/dist-cjs/request-logs/http-routes.js +32 -0
  155. package/dist-cjs/request-logs/http-routes.js.map +1 -0
  156. package/dist-cjs/request-logs/index.js +27 -0
  157. package/dist-cjs/request-logs/index.js.map +1 -0
  158. package/dist-cjs/request-logs/middleware.js +203 -0
  159. package/dist-cjs/request-logs/middleware.js.map +1 -0
  160. package/dist-cjs/request-logs/request-logs.js +277 -0
  161. package/dist-cjs/request-logs/request-logs.js.map +1 -0
  162. package/dist-cjs/schema.js +24 -0
  163. package/dist-cjs/schema.js.map +1 -0
  164. package/dist-cjs/sqlite-driver.js +18 -0
  165. package/dist-cjs/sqlite-driver.js.map +1 -0
  166. package/dist-cjs/sqlite-store.js +182 -0
  167. package/dist-cjs/sqlite-store.js.map +1 -0
  168. package/dist-cjs/types.js +12 -0
  169. package/dist-cjs/types.js.map +1 -0
  170. package/dist-cjs/usage/adapters.js +47 -0
  171. package/dist-cjs/usage/adapters.js.map +1 -0
  172. package/dist-cjs/usage/http-routes.js +154 -0
  173. package/dist-cjs/usage/http-routes.js.map +1 -0
  174. package/dist-cjs/usage/index.js +34 -0
  175. package/dist-cjs/usage/index.js.map +1 -0
  176. package/dist-cjs/usage/ui-brand.js +23 -0
  177. package/dist-cjs/usage/ui-brand.js.map +1 -0
  178. package/dist-cjs/usage/usage-analytics-productivity.js +321 -0
  179. package/dist-cjs/usage/usage-analytics-productivity.js.map +1 -0
  180. package/dist-cjs/usage/usage-analytics-shared.js +23 -0
  181. package/dist-cjs/usage/usage-analytics-shared.js.map +1 -0
  182. package/dist-cjs/usage/usage-analytics.js +353 -0
  183. package/dist-cjs/usage/usage-analytics.js.map +1 -0
  184. package/fleet-collector/AGENTS.md +7 -0
  185. package/fleet-collector/README.md +83 -0
  186. package/fleet-collector/configure-fleet-npm.sh +108 -0
  187. package/fleet-collector/env.mjs +174 -0
  188. package/fleet-collector/ops-api.mjs +455 -0
  189. package/fleet-collector/public/admin.html +696 -0
  190. package/fleet-collector/public/index.html +941 -0
  191. package/fleet-collector/server.mjs +564 -0
  192. package/fleet-collector/test-fleet-collector.mjs +413 -0
  193. package/fleet-collector/test-server-admin.mjs +475 -0
  194. package/package.json +109 -0
  195. package/scripts/test-api-endpoints-registry.mjs +60 -0
  196. package/ui/analytics-client.tsx +834 -0
  197. package/ui/analytics-productivity-panel.tsx +513 -0
  198. package/ui/api-endpoints-client.tsx +228 -0
  199. package/ui/index.ts +39 -0
  200. package/ui/primitives/badge.tsx +37 -0
  201. package/ui/primitives/button.tsx +44 -0
  202. package/ui/primitives/card.tsx +44 -0
  203. package/ui/primitives/cn.ts +6 -0
  204. package/ui/primitives/input.tsx +19 -0
  205. package/ui/primitives/tabs.tsx +51 -0
  206. package/ui/request-logs-client.tsx +327 -0
  207. package/ui/session-usage-analytics-provider.tsx +28 -0
  208. package/ui/usage-analytics-client.ts +479 -0
  209. 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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"}