@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,114 @@
1
+ /**
2
+ * Mount API observabilité — /api/v1/platform/observability/...
3
+ */
4
+ import { OBSERVABILITY_EVENT_KINDS } from "./types.js";
5
+ function asKind(v) {
6
+ const s = String(v || "");
7
+ return OBSERVABILITY_EVENT_KINDS.includes(s)
8
+ ? s
9
+ : undefined;
10
+ }
11
+ export function createObservabilityApiMount(store) {
12
+ return {
13
+ handle: async ({ req, subPath }) => {
14
+ const method = req.method.toUpperCase();
15
+ const body = req.body && typeof req.body === "object"
16
+ ? req.body
17
+ : {};
18
+ if ((subPath === "" || subPath === "events") && method === "GET") {
19
+ const q = req.query || {};
20
+ const orgId = q.orgId != null ? String(q.orgId) : undefined;
21
+ const pluginId = q.pluginId != null ? String(q.pluginId) : undefined;
22
+ const action = q.action != null ? String(q.action) : undefined;
23
+ const since = q.since != null ? String(q.since) : undefined;
24
+ const kind = asKind(q.kind);
25
+ const limit = q.limit != null ? Number(q.limit) : 100;
26
+ const events = store.list({
27
+ kind,
28
+ orgId,
29
+ pluginId,
30
+ action,
31
+ since,
32
+ limit,
33
+ });
34
+ return {
35
+ status: 200,
36
+ body: {
37
+ ok: true,
38
+ count: events.length,
39
+ total: store.count({ kind, orgId, pluginId }),
40
+ events,
41
+ },
42
+ };
43
+ }
44
+ if (subPath === "events" && method === "POST") {
45
+ try {
46
+ const kind = asKind(body.kind);
47
+ if (!kind) {
48
+ return {
49
+ status: 400,
50
+ body: { ok: false, error: "kind invalide" },
51
+ };
52
+ }
53
+ const event = store.record({
54
+ kind,
55
+ action: String(body.action || "custom"),
56
+ orgId: body.orgId != null ? String(body.orgId) : null,
57
+ userId: body.userId != null ? String(body.userId) : null,
58
+ brandId: body.brandId != null ? String(body.brandId) : null,
59
+ pluginId: body.pluginId != null ? String(body.pluginId) : null,
60
+ meta: body.meta && typeof body.meta === "object"
61
+ ? body.meta
62
+ : {},
63
+ });
64
+ return { status: 201, body: { ok: true, event } };
65
+ }
66
+ catch (e) {
67
+ return {
68
+ status: 400,
69
+ body: {
70
+ ok: false,
71
+ error: e instanceof Error ? e.message : "error",
72
+ },
73
+ };
74
+ }
75
+ }
76
+ if (subPath === "usage" && method === "GET") {
77
+ const q = req.query || {};
78
+ const usage = store.aggregatePluginUsage({
79
+ orgId: q.orgId != null ? String(q.orgId) : undefined,
80
+ since: q.since != null ? String(q.since) : undefined,
81
+ limit: q.limit != null ? Number(q.limit) : 50,
82
+ });
83
+ return { status: 200, body: { ok: true, usage } };
84
+ }
85
+ if (subPath === "orgs" && method === "GET") {
86
+ const q = req.query || {};
87
+ const orgs = store.aggregateOrgActivity({
88
+ since: q.since != null ? String(q.since) : undefined,
89
+ limit: q.limit != null ? Number(q.limit) : 50,
90
+ });
91
+ return { status: 200, body: { ok: true, orgs } };
92
+ }
93
+ if (subPath === "summary" && method === "GET") {
94
+ return {
95
+ status: 200,
96
+ body: {
97
+ ok: true,
98
+ summary: {
99
+ activity: store.count({ kind: "activity" }),
100
+ plugin_usage: store.count({ kind: "plugin_usage" }),
101
+ control_plane: store.count({ kind: "control_plane" }),
102
+ total: store.count(),
103
+ },
104
+ usage: store.aggregatePluginUsage({ limit: 20 }),
105
+ orgs: store.aggregateOrgActivity({ limit: 20 }),
106
+ recent: store.list({ limit: 20 }),
107
+ },
108
+ };
109
+ }
110
+ return { status: 404, body: { ok: false, error: "not_found" } };
111
+ },
112
+ };
113
+ }
114
+ //# sourceMappingURL=api-mount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-mount.js","sourceRoot":"","sources":["../src/api-mount.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Helpers d'émission typés — activité / usages plugins / control-plane.
3
+ */
4
+ import type { ObservabilityEvent, ObservabilityStore } from "./types.js";
5
+ import type { ActivityAction, ControlPlaneAction } from "./types.js";
6
+ export type EmitActor = {
7
+ orgId?: string | null;
8
+ userId?: string | null;
9
+ brandId?: string | null;
10
+ };
11
+ export declare function recordActivity(store: ObservabilityStore, action: ActivityAction | string, actor?: EmitActor, meta?: Record<string, unknown>): ObservabilityEvent;
12
+ export declare function recordPluginUsage(store: ObservabilityStore, input: {
13
+ pluginId: string;
14
+ action?: string;
15
+ actor?: EmitActor;
16
+ meta?: Record<string, unknown>;
17
+ }): ObservabilityEvent;
18
+ export declare function recordControlPlaneEvent(store: ObservabilityStore, action: ControlPlaneAction | string, input?: {
19
+ pluginId?: string | null;
20
+ actor?: EmitActor;
21
+ meta?: Record<string, unknown>;
22
+ }): ObservabilityEvent;
23
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,wBAAgB,cAAc,CAC5B,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,cAAc,GAAG,MAAM,EAC/B,KAAK,CAAC,EAAE,SAAS,EACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,kBAAkB,CASpB;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,kBAAkB,EACzB,KAAK,EAAE;IACL,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,GACA,kBAAkB,CAUpB;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,kBAAkB,GAAG,MAAM,EACnC,KAAK,CAAC,EAAE;IACN,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,GACA,kBAAkB,CAUpB"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Helpers d'émission typés — activité / usages plugins / control-plane.
3
+ */
4
+ export function recordActivity(store, action, actor, meta) {
5
+ return store.record({
6
+ kind: "activity",
7
+ action,
8
+ orgId: actor?.orgId,
9
+ userId: actor?.userId,
10
+ brandId: actor?.brandId,
11
+ meta,
12
+ });
13
+ }
14
+ export function recordPluginUsage(store, input) {
15
+ return store.record({
16
+ kind: "plugin_usage",
17
+ action: input.action || "execute",
18
+ pluginId: input.pluginId,
19
+ orgId: input.actor?.orgId,
20
+ userId: input.actor?.userId,
21
+ brandId: input.actor?.brandId,
22
+ meta: input.meta,
23
+ });
24
+ }
25
+ export function recordControlPlaneEvent(store, action, input) {
26
+ return store.record({
27
+ kind: "control_plane",
28
+ action,
29
+ pluginId: input?.pluginId,
30
+ orgId: input?.actor?.orgId,
31
+ userId: input?.actor?.userId,
32
+ brandId: input?.actor?.brandId,
33
+ meta: input?.meta,
34
+ });
35
+ }
36
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH,MAAM,UAAU,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,MAAM,UAAU,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,MAAM,UAAU,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,35 @@
1
+ /**
2
+ * @creezio/observability — activité / usages / CP (V2 SQLite) + boîte noire
3
+ * desktop ops/fleet (R4, extrait TempoFlow).
4
+ */
5
+ export type { ActivityAction, ControlPlaneAction, ObservabilityEvent, ObservabilityEventKind, ObservabilityQuery, ObservabilityStore, OrgActivityAggregate, PluginUsageAggregate, RecordObservabilityEventInput, } from "./types.js";
6
+ export { OBSERVABILITY_EVENT_KINDS } from "./types.js";
7
+ export { OBSERVABILITY_CORE_SQL } from "./schema.js";
8
+ export { createMemoryObservabilityStore } from "./memory-store.js";
9
+ export type { CreateSqliteObservabilityStoreOptions, SqliteObservabilityStore, } from "./sqlite-store.js";
10
+ export { createSqliteObservabilityStore } from "./sqlite-store.js";
11
+ export type { OpenSqliteDatabase, SqliteDatabase } from "./sqlite-driver.js";
12
+ export { openNodeSqliteDatabase } from "./sqlite-driver.js";
13
+ export type { EmitActor } from "./helpers.js";
14
+ export { recordActivity, recordControlPlaneEvent, recordPluginUsage, } from "./helpers.js";
15
+ export { createObservabilityApiMount } from "./api-mount.js";
16
+ export type { OpsBootSummary, OpsEvent, OpsEventInput, OpsLevel, } from "./ops/types.js";
17
+ export { MAX_CTX_BYTES, OPS_EVENT_PREFIX, OPS_EVENT_PREFIXES, OPS_LEVELS, TF2EVENT_PREFIX, parseOpsLine, redactOpsCtx, sanitizeOpsEventInput, serializeOpsEvent, } from "./ops/types.js";
18
+ export type { OpsJournalHooks } from "./ops/journal.js";
19
+ export { __resetOpsJournalForTests, consumeOpsLine, currentBootSummary, drainPendingOpsEvents, getOpsBootId, getOpsDir, initOpsJournal, persistBootSummary, readPreviousBootSummaries, setOpsJournalHooks, track, trackCrashMirror, trackDecision, trackExternal, } from "./ops/journal.js";
20
+ export type { BootRuleFinding } from "./ops/rules.js";
21
+ export { evaluateBootRules, evaluateRulesPure } from "./ops/rules.js";
22
+ export { emitOpsEvent } from "./ops/emit.js";
23
+ export type { CreateFleetAgentOptions, FleetAgent, FleetAgentRuntimeHooks, FleetHealthSnapshot, FleetTelemetrySnapshot, } from "./ops/fleet-agent.js";
24
+ export { createFleetAgent } from "./ops/fleet-agent.js";
25
+ export type { FleetAction, FleetSessionContext, FleetSurface, } from "./ops/fleet-activity.js";
26
+ export { _resetFleetActivityForTests, drainFleetActions, getFleetSessionContext, recordFleetAction, sampleFleetActions, setFleetSessionContext, } from "./ops/fleet-activity.js";
27
+ export type { FleetSamples, FleetSamplesPaths } from "./ops/fleet-samples.js";
28
+ export { createFleetSamples } from "./ops/fleet-samples.js";
29
+ export { configureUsageAnalytics, getUsageAnalyticsAdapters, resetUsageAnalyticsAdaptersForTests, configureUsageAnalyticsUiBrand, getUsageAnalyticsUiBrand, resetUsageAnalyticsUiBrandForTests, formatDuration, usageAnalyticsReady, ensureUsageAnalyticsSchema, insertUsageEvents, recordUsageEvent, resolvePeriodFilters, getUsageOverview, getUsageTimeline, getTopPages, getTopClicks, getUserStats, listUsageEvents, purgeUsageEvents, BREAK_MIN_MS, BREAK_MAX_MS, getProductivityReport, createUsageAnalyticsIngestRoutes, createUsageAnalyticsAdminRoutes, } from "./usage/index.js";
30
+ export type { UsageAnalyticsAdapters, UsageAnalyticsSqliteDatabase, UsageAnalyticsSqliteStatement, FleetActionPayload, UsageAnalyticsUiBrand, UsagePeriod, UsageUserKind, UsageEventInput, UsageEventRow, UsageFilters, UsageOverview, TimelineBucket, PageStat, ClickStat, UserStat, HeatmapCell, DailyProductivity, BreakSpan, FocusBlock, ProductivitySummary, ProductivityReport, UsageAnalyticsSession, UsageAnalyticsRouteDeps, } from "./usage/index.js";
31
+ export { configureRequestLogs, getRequestLogsConfig, resetRequestLogsConfigForTests, resolveFleetStateDir, getRequestLogCapacity, _resetRequestLogsForTests, isSecretKey, redactSecrets, pushRequestLog, listRequestLogs, clearRequestLogs, parseJsonRpcMessages, summarizeMcpRequest, summarizeMcpResponse, extractApiErrorMessage, shouldSkipRequestLog, requestLogApiMiddleware, requestLogMcpMiddleware, createRequestLogsRoutes, } from "./request-logs/index.js";
32
+ export type { RequestLogsConfig, RequestLogSource, RequestLogDetail, RequestLogEntry, ListRequestLogsOpts, } from "./request-logs/index.js";
33
+ export type { ApiEndpointRecord, ApiEndpointRouteInput, ApiEndpointsRegistry, CreateApiEndpointsRoutesOptions, } from "./api-endpoints/index.js";
34
+ export { buildApiEndpointsRegistry, buildOpenApiDocumentFromRegistry, collectHonoRoutes, createApiEndpointsRoutes, } from "./api-endpoints/index.js";
35
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @creezio/observability — activité / usages / CP (V2 SQLite) + boîte noire
3
+ * desktop ops/fleet (R4, extrait TempoFlow).
4
+ */
5
+ export { OBSERVABILITY_EVENT_KINDS } from "./types.js";
6
+ export { OBSERVABILITY_CORE_SQL } from "./schema.js";
7
+ export { createMemoryObservabilityStore } from "./memory-store.js";
8
+ export { createSqliteObservabilityStore } from "./sqlite-store.js";
9
+ export { openNodeSqliteDatabase } from "./sqlite-driver.js";
10
+ export { recordActivity, recordControlPlaneEvent, recordPluginUsage, } from "./helpers.js";
11
+ export { createObservabilityApiMount } from "./api-mount.js";
12
+ export { MAX_CTX_BYTES, OPS_EVENT_PREFIX, OPS_EVENT_PREFIXES, OPS_LEVELS, TF2EVENT_PREFIX, parseOpsLine, redactOpsCtx, sanitizeOpsEventInput, serializeOpsEvent, } from "./ops/types.js";
13
+ export { __resetOpsJournalForTests, consumeOpsLine, currentBootSummary, drainPendingOpsEvents, getOpsBootId, getOpsDir, initOpsJournal, persistBootSummary, readPreviousBootSummaries, setOpsJournalHooks, track, trackCrashMirror, trackDecision, trackExternal, } from "./ops/journal.js";
14
+ export { evaluateBootRules, evaluateRulesPure } from "./ops/rules.js";
15
+ export { emitOpsEvent } from "./ops/emit.js";
16
+ export { createFleetAgent } from "./ops/fleet-agent.js";
17
+ export { _resetFleetActivityForTests, drainFleetActions, getFleetSessionContext, recordFleetAction, sampleFleetActions, setFleetSessionContext, } from "./ops/fleet-activity.js";
18
+ export { createFleetSamples } from "./ops/fleet-samples.js";
19
+ /* ── N6 : usage analytics (port TempoFlow) ── */
20
+ export { configureUsageAnalytics, getUsageAnalyticsAdapters, resetUsageAnalyticsAdaptersForTests, configureUsageAnalyticsUiBrand, getUsageAnalyticsUiBrand, resetUsageAnalyticsUiBrandForTests, formatDuration, usageAnalyticsReady, ensureUsageAnalyticsSchema, insertUsageEvents, recordUsageEvent, resolvePeriodFilters, getUsageOverview, getUsageTimeline, getTopPages, getTopClicks, getUserStats, listUsageEvents, purgeUsageEvents, BREAK_MIN_MS, BREAK_MAX_MS, getProductivityReport, createUsageAnalyticsIngestRoutes, createUsageAnalyticsAdminRoutes, } from "./usage/index.js";
21
+ /* ── O5 : request-logs admin (port TempoFlow) ── */
22
+ export { configureRequestLogs, getRequestLogsConfig, resetRequestLogsConfigForTests, resolveFleetStateDir, getRequestLogCapacity, _resetRequestLogsForTests, isSecretKey, redactSecrets, pushRequestLog, listRequestLogs, clearRequestLogs, parseJsonRpcMessages, summarizeMcpRequest, summarizeMcpResponse, extractApiErrorMessage, shouldSkipRequestLog, requestLogApiMiddleware, requestLogMcpMiddleware, createRequestLogsRoutes, } from "./request-logs/index.js";
23
+ export { buildApiEndpointsRegistry, buildOpenApiDocumentFromRegistry, collectHonoRoutes, createApiEndpointsRoutes, } from "./api-endpoints/index.js";
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AAMnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AAGnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAG5D,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAU7D,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,YAAY,EACZ,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,KAAK,EACL,gBAAgB,EAChB,aAAa,EACb,aAAa,GACd,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEtE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAS7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AASxD,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,iDAAiD;AAEjD,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,mCAAmC,EACnC,8BAA8B,EAC9B,wBAAwB,EACxB,kCAAkC,EAClC,cAAc,EACd,mBAAmB,EACnB,0BAA0B,EAC1B,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,gCAAgC,EAChC,+BAA+B,GAChC,MAAM,kBAAkB,CAAC;AA4B1B,oDAAoD;AAEpD,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,8BAA8B,EAC9B,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,WAAW,EACX,aAAa,EACb,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAkBjC,OAAO,EACL,yBAAyB,EACzB,gCAAgC,EAChC,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ObservabilityStore } from "./types.js";
2
+ export declare function createMemoryObservabilityStore(): ObservabilityStore;
3
+ //# sourceMappingURL=memory-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../src/memory-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,kBAAkB,EAInB,MAAM,YAAY,CAAC;AAiBpB,wBAAgB,8BAA8B,IAAI,kBAAkB,CAoFnE"}
@@ -0,0 +1,113 @@
1
+ import crypto from "node:crypto";
2
+ function now() {
3
+ return new Date().toISOString();
4
+ }
5
+ function match(e, q) {
6
+ if (!q)
7
+ return true;
8
+ if (q.kind && e.kind !== q.kind)
9
+ return false;
10
+ if (q.orgId && e.orgId !== q.orgId)
11
+ return false;
12
+ if (q.pluginId && e.pluginId !== q.pluginId)
13
+ return false;
14
+ if (q.action && e.action !== q.action)
15
+ return false;
16
+ if (q.since && e.createdAt < q.since)
17
+ return false;
18
+ if (q.until && e.createdAt > q.until)
19
+ return false;
20
+ return true;
21
+ }
22
+ export function createMemoryObservabilityStore() {
23
+ const events = [];
24
+ return {
25
+ record(input) {
26
+ const event = {
27
+ id: input.id || crypto.randomUUID(),
28
+ kind: input.kind,
29
+ action: input.action,
30
+ orgId: input.orgId ?? null,
31
+ userId: input.userId ?? null,
32
+ brandId: input.brandId ?? null,
33
+ pluginId: input.pluginId ?? null,
34
+ meta: input.meta || {},
35
+ createdAt: input.createdAt || now(),
36
+ };
37
+ events.push(event);
38
+ return event;
39
+ },
40
+ list(query) {
41
+ const limit = query?.limit ?? 100;
42
+ return events
43
+ .filter((e) => match(e, query))
44
+ .sort((a, b) => b.createdAt.localeCompare(a.createdAt))
45
+ .slice(0, limit);
46
+ },
47
+ count(query) {
48
+ return events.filter((e) => match(e, query)).length;
49
+ },
50
+ aggregatePluginUsage(opts) {
51
+ const since = opts?.since;
52
+ const orgId = opts?.orgId;
53
+ const map = new Map();
54
+ for (const e of events) {
55
+ if (e.kind !== "plugin_usage")
56
+ continue;
57
+ if (!e.pluginId)
58
+ continue;
59
+ if (orgId && e.orgId !== orgId)
60
+ continue;
61
+ if (since && e.createdAt < since)
62
+ continue;
63
+ const key = `${e.pluginId}::${e.orgId || ""}`;
64
+ const cur = map.get(key);
65
+ if (!cur) {
66
+ map.set(key, {
67
+ pluginId: e.pluginId,
68
+ orgId: e.orgId,
69
+ count: 1,
70
+ lastAt: e.createdAt,
71
+ });
72
+ }
73
+ else {
74
+ cur.count += 1;
75
+ if (e.createdAt > cur.lastAt)
76
+ cur.lastAt = e.createdAt;
77
+ }
78
+ }
79
+ return Array.from(map.values())
80
+ .sort((a, b) => b.count - a.count)
81
+ .slice(0, opts?.limit ?? 50);
82
+ },
83
+ aggregateOrgActivity(opts) {
84
+ const since = opts?.since;
85
+ const map = new Map();
86
+ for (const e of events) {
87
+ if (e.kind !== "activity")
88
+ continue;
89
+ if (!e.orgId)
90
+ continue;
91
+ if (since && e.createdAt < since)
92
+ continue;
93
+ const cur = map.get(e.orgId);
94
+ if (!cur) {
95
+ map.set(e.orgId, {
96
+ orgId: e.orgId,
97
+ count: 1,
98
+ lastAt: e.createdAt,
99
+ });
100
+ }
101
+ else {
102
+ cur.count += 1;
103
+ if (e.createdAt > cur.lastAt)
104
+ cur.lastAt = e.createdAt;
105
+ }
106
+ }
107
+ return Array.from(map.values())
108
+ .sort((a, b) => b.count - a.count)
109
+ .slice(0, opts?.limit ?? 50);
110
+ },
111
+ };
112
+ }
113
+ //# 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,8 @@
1
+ /**
2
+ * Émission d'événements ops depuis un SOUS-PROCESS Node vanilla
3
+ * (meili-indexer, migrations…) : ligne `TF2EVENT {json}` sur stdout.
4
+ * Extrait de TempoFlow ops-emit.ts (R4).
5
+ */
6
+ import { type OpsEventInput } from "./types.js";
7
+ export declare function emitOpsEvent(evt: OpsEventInput): void;
8
+ //# sourceMappingURL=emit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../src/ops/emit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEjE,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAMrD"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Émission d'événements ops depuis un SOUS-PROCESS Node vanilla
3
+ * (meili-indexer, migrations…) : ligne `TF2EVENT {json}` sur stdout.
4
+ * Extrait de TempoFlow ops-emit.ts (R4).
5
+ */
6
+ import { TF2EVENT_PREFIX } from "./types.js";
7
+ export function emitOpsEvent(evt) {
8
+ try {
9
+ console.log(`${TF2EVENT_PREFIX}${JSON.stringify(evt)}`);
10
+ }
11
+ catch {
12
+ /* best-effort : jamais de throw depuis l'instrumentation */
13
+ }
14
+ }
15
+ //# sourceMappingURL=emit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/ops/emit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAsB,MAAM,YAAY,CAAC;AAEjE,MAAM,UAAU,YAAY,CAAC,GAAkB;IAC7C,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,GAAG,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;IAC9D,CAAC;AACH,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Journal d’événements produit flotte (ring mémoire).
3
+ * Schema FleetProductEvent v1 — attribution session + dwell.
4
+ * Extrait TempoFlow fleet-activity.ts (M7).
5
+ */
6
+ export type FleetSurface = "crm" | "supplier_tab" | "hermes" | "n8n" | "ai_workspace" | "system";
7
+ export type FleetAction = {
8
+ schemaVersion: 1;
9
+ id: string;
10
+ at: string;
11
+ name: string;
12
+ category: string;
13
+ type: string;
14
+ label: string;
15
+ path?: string;
16
+ referrerPath?: string;
17
+ userId?: string;
18
+ username?: string;
19
+ sessionId?: string;
20
+ surface?: FleetSurface;
21
+ durationMs?: number;
22
+ meta?: Record<string, unknown>;
23
+ };
24
+ export type FleetSessionContext = {
25
+ userId: string | null;
26
+ username: string | null;
27
+ sessionId: string | null;
28
+ };
29
+ export declare function setFleetSessionContext(next: Partial<FleetSessionContext>): void;
30
+ export declare function getFleetSessionContext(): FleetSessionContext;
31
+ /** Enregistre un événement (toujours local ; envoi flotte gate par scope actions). */
32
+ export declare function recordFleetAction(input: {
33
+ type?: string;
34
+ name?: string;
35
+ category?: string;
36
+ label: string;
37
+ path?: string;
38
+ referrerPath?: string;
39
+ userId?: string;
40
+ username?: string;
41
+ sessionId?: string;
42
+ surface?: FleetSurface;
43
+ durationMs?: number;
44
+ meta?: Record<string, unknown>;
45
+ }): FleetAction | null;
46
+ export declare function sampleFleetActions(limit?: number): FleetAction[];
47
+ /** Snapshot + optionnellement vide le ring après flush (non utilisé par défaut). */
48
+ export declare function drainFleetActions(limit?: number): FleetAction[];
49
+ export declare function _resetFleetActivityForTests(): void;
50
+ //# sourceMappingURL=fleet-activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fleet-activity.d.ts","sourceRoot":"","sources":["../../src/ops/fleet-activity.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,YAAY,GACpB,KAAK,GACL,cAAc,GACd,QAAQ,GACR,KAAK,GACL,cAAc,GACd,QAAQ,CAAC;AAEb,MAAM,MAAM,WAAW,GAAG;IACxB,aAAa,EAAE,CAAC,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAWF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAqB/E;AAED,wBAAgB,sBAAsB,IAAI,mBAAmB,CAE5D;AA8BD,sFAAsF;AACtF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,GAAG,WAAW,GAAG,IAAI,CA6CrB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,SAAM,GAAG,WAAW,EAAE,CAE7D;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,KAAK,SAAM,GAAG,WAAW,EAAE,CAK5D;AAED,wBAAgB,2BAA2B,IAAI,IAAI,CAMlD"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Journal d’événements produit flotte (ring mémoire).
3
+ * Schema FleetProductEvent v1 — attribution session + dwell.
4
+ * Extrait TempoFlow fleet-activity.ts (M7).
5
+ */
6
+ const MAX = 800;
7
+ const ring = [];
8
+ let seq = 0;
9
+ let session = {
10
+ userId: null,
11
+ username: null,
12
+ sessionId: null,
13
+ };
14
+ export function setFleetSessionContext(next) {
15
+ session = {
16
+ userId: next.userId !== undefined
17
+ ? next.userId
18
+ ? String(next.userId).slice(0, 80)
19
+ : null
20
+ : session.userId,
21
+ username: next.username !== undefined
22
+ ? next.username
23
+ ? String(next.username).slice(0, 80)
24
+ : null
25
+ : session.username,
26
+ sessionId: next.sessionId !== undefined
27
+ ? next.sessionId
28
+ ? String(next.sessionId).slice(0, 80)
29
+ : null
30
+ : session.sessionId,
31
+ };
32
+ }
33
+ export function getFleetSessionContext() {
34
+ return { ...session };
35
+ }
36
+ function sanitizeMeta(meta) {
37
+ if (!meta || typeof meta !== "object")
38
+ return undefined;
39
+ const out = {};
40
+ let n = 0;
41
+ for (const [k, v] of Object.entries(meta)) {
42
+ if (n >= 20)
43
+ break;
44
+ const key = String(k).slice(0, 40);
45
+ if (/password|token|secret|authorization|cookie|api[_-]?key/i.test(key)) {
46
+ continue;
47
+ }
48
+ if (v == null || typeof v === "boolean" || typeof v === "number") {
49
+ out[key] = v;
50
+ n++;
51
+ }
52
+ else if (typeof v === "string") {
53
+ out[key] = v.slice(0, 200);
54
+ n++;
55
+ }
56
+ }
57
+ return Object.keys(out).length ? out : undefined;
58
+ }
59
+ let lastDedupeKey = "";
60
+ let lastDedupeAt = 0;
61
+ /** Enregistre un événement (toujours local ; envoi flotte gate par scope actions). */
62
+ export function recordFleetAction(input) {
63
+ const name = String(input.name || input.type || "event").slice(0, 60);
64
+ const type = String(input.type || name).slice(0, 40);
65
+ const label = String(input.label || "").slice(0, 200);
66
+ if (!label && !name)
67
+ return null;
68
+ // Évite les doubles (main/preload/renderer) sur une même action.
69
+ if (type === "page.view" ||
70
+ name === "page.view" ||
71
+ type === "ui.click" ||
72
+ name === "ui.click") {
73
+ const key = `${type}|${input.path || ""}|${label}`;
74
+ const now = Date.now();
75
+ if (key === lastDedupeKey && now - lastDedupeAt < 500)
76
+ return null;
77
+ lastDedupeKey = key;
78
+ lastDedupeAt = now;
79
+ }
80
+ const ev = {
81
+ schemaVersion: 1,
82
+ id: `fa_${Date.now()}_${++seq}`,
83
+ at: new Date().toISOString(),
84
+ name,
85
+ category: String(input.category || "ui").slice(0, 40),
86
+ type,
87
+ label: label || name,
88
+ path: input.path ? String(input.path).slice(0, 300) : undefined,
89
+ referrerPath: input.referrerPath
90
+ ? String(input.referrerPath).slice(0, 300)
91
+ : undefined,
92
+ userId: (input.userId ?? session.userId)?.slice(0, 80) || undefined,
93
+ username: (input.username ?? session.username)?.slice(0, 80) || undefined,
94
+ sessionId: (input.sessionId ?? session.sessionId)?.slice(0, 80) || undefined,
95
+ surface: input.surface || "crm",
96
+ durationMs: typeof input.durationMs === "number" && Number.isFinite(input.durationMs)
97
+ ? Math.max(0, Math.round(input.durationMs))
98
+ : undefined,
99
+ meta: sanitizeMeta(input.meta),
100
+ };
101
+ ring.push(ev);
102
+ while (ring.length > MAX)
103
+ ring.shift();
104
+ return ev;
105
+ }
106
+ export function sampleFleetActions(limit = 120) {
107
+ return ring.slice(-limit).reverse();
108
+ }
109
+ /** Snapshot + optionnellement vide le ring après flush (non utilisé par défaut). */
110
+ export function drainFleetActions(limit = 200) {
111
+ const out = ring.slice(-limit);
112
+ ring.length = 0;
113
+ seq = 0;
114
+ return out.reverse();
115
+ }
116
+ export function _resetFleetActivityForTests() {
117
+ ring.length = 0;
118
+ seq = 0;
119
+ session = { userId: null, username: null, sessionId: null };
120
+ lastDedupeKey = "";
121
+ lastDedupeAt = 0;
122
+ }
123
+ //# 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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"}