@cccsaurora/howler-ui 2.18.0-dev.667 → 2.18.0-dev.674

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 (230) hide show
  1. package/api/index.d.ts +2 -0
  2. package/api/index.js +4 -2
  3. package/api/search/case.d.ts +4 -0
  4. package/api/search/case.js +8 -0
  5. package/api/search/index.d.ts +2 -1
  6. package/api/search/index.js +2 -1
  7. package/api/v2/case/index.d.ts +6 -0
  8. package/api/v2/case/index.js +18 -0
  9. package/api/v2/index.d.ts +4 -0
  10. package/api/v2/index.js +6 -0
  11. package/api/v2/search/facet.d.ts +3 -0
  12. package/api/v2/search/facet.js +12 -0
  13. package/api/v2/search/index.d.ts +5 -0
  14. package/api/v2/search/index.js +24 -0
  15. package/commons/components/leftnav/LeftNavDrawer.js +1 -1
  16. package/components/app/App.js +34 -7
  17. package/components/app/hooks/useMatchers.js +2 -2
  18. package/components/app/hooks/useMatchers.test.js +22 -22
  19. package/components/app/hooks/useTitle.js +3 -3
  20. package/components/app/providers/FavouritesProvider.js +2 -2
  21. package/components/app/providers/ParameterProvider.d.ts +9 -2
  22. package/components/app/providers/ParameterProvider.js +165 -240
  23. package/components/app/providers/ParameterProvider.test.js +307 -14
  24. package/components/app/providers/RecordProvider.d.ts +23 -0
  25. package/components/app/providers/{HitProvider.js → RecordProvider.js} +41 -41
  26. package/components/app/providers/{HitSearchProvider.d.ts → RecordSearchProvider.d.ts} +6 -6
  27. package/components/app/providers/{HitSearchProvider.js → RecordSearchProvider.js} +12 -17
  28. package/components/app/providers/{HitSearchProvider.test.js → RecordSearchProvider.test.js} +51 -70
  29. package/components/elements/ContextMenu.d.ts +56 -0
  30. package/components/elements/ContextMenu.js +109 -0
  31. package/components/elements/ContextMenu.test.js +215 -0
  32. package/components/{routes/overviews/OverviewEditor.js → elements/MarkdownEditor.js} +3 -3
  33. package/components/elements/ObjectDetails.d.ts +6 -0
  34. package/components/elements/{hit/HitDetails.js → ObjectDetails.js} +17 -17
  35. package/components/elements/PluginTypography.d.ts +2 -1
  36. package/components/elements/PluginTypography.js +3 -2
  37. package/components/elements/UserList.d.ts +5 -2
  38. package/components/elements/UserList.js +14 -5
  39. package/components/elements/addons/search/phrase/Phrase.js +1 -1
  40. package/components/elements/case/CaseCard.d.ts +8 -0
  41. package/components/elements/case/CaseCard.js +39 -0
  42. package/components/elements/case/CasePreview.d.ts +6 -0
  43. package/components/elements/case/CasePreview.js +17 -0
  44. package/components/elements/case/StatusIcon.d.ts +5 -0
  45. package/components/elements/case/StatusIcon.js +13 -0
  46. package/components/elements/display/ChipPopper.d.ts +1 -1
  47. package/components/elements/display/HowlerCard.js +1 -1
  48. package/components/elements/display/Modal.js +1 -0
  49. package/components/elements/hit/HitActions.js +4 -4
  50. package/components/elements/hit/HitBanner.js +28 -48
  51. package/components/elements/hit/HitCard.js +5 -5
  52. package/components/elements/hit/HitLabels.js +2 -2
  53. package/components/elements/hit/{HitQuickSearch.d.ts → HitPreview.d.ts} +3 -3
  54. package/components/elements/hit/{HitQuickSearch.js → HitPreview.js} +10 -4
  55. package/components/elements/hit/HitSummary.d.ts +2 -1
  56. package/components/elements/hit/HitSummary.js +6 -5
  57. package/components/elements/hit/aggregate/HitGraph.js +8 -8
  58. package/components/elements/hit/elements/AnalyticLink.d.ts +8 -0
  59. package/components/elements/hit/elements/AnalyticLink.js +22 -0
  60. package/components/elements/hit/outlines/DefaultOutline.js +1 -1
  61. package/components/elements/hit/related/RelatedRecords.js +63 -0
  62. package/components/elements/observable/ObservableCard.d.ts +6 -0
  63. package/components/elements/observable/ObservableCard.js +23 -0
  64. package/components/elements/observable/ObservablePreview.d.ts +6 -0
  65. package/components/elements/observable/ObservablePreview.js +12 -0
  66. package/components/elements/{hit/HitComments.d.ts → record/RecordComments.d.ts} +5 -4
  67. package/components/elements/{hit/HitComments.js → record/RecordComments.js} +29 -28
  68. package/components/{routes/hits/search/HitContextMenu.d.ts → elements/record/RecordContextMenu.d.ts} +3 -3
  69. package/components/elements/record/RecordContextMenu.js +235 -0
  70. package/components/elements/record/RecordContextMenu.test.d.ts +1 -0
  71. package/components/{routes/hits/search/HitContextMenu.test.js → elements/record/RecordContextMenu.test.js} +39 -39
  72. package/components/elements/record/RecordRelated.d.ts +7 -0
  73. package/components/elements/record/RecordRelated.js +34 -0
  74. package/components/elements/{hit/HitWorklog.d.ts → record/RecordWorklog.d.ts} +4 -3
  75. package/components/elements/{hit/HitWorklog.js → record/RecordWorklog.js} +15 -13
  76. package/components/elements/view/ViewTitle.js +1 -1
  77. package/components/hooks/useHitActions.d.ts +1 -1
  78. package/components/hooks/useHitActions.js +4 -4
  79. package/components/hooks/useMyPreferences.js +10 -1
  80. package/components/hooks/useMySearch.js +2 -2
  81. package/components/hooks/useMySitemap.js +4 -1
  82. package/components/hooks/useMyTheme.js +9 -2
  83. package/components/hooks/useParamState.test.js +3 -4
  84. package/components/hooks/{useHitSelection.d.ts → useRecordSelection.d.ts} +2 -2
  85. package/components/hooks/{useHitSelection.js → useRecordSelection.js} +12 -33
  86. package/components/hooks/useRelatedRecords.d.ts +13 -0
  87. package/components/hooks/useRelatedRecords.js +32 -0
  88. package/components/routes/action/edit/ActionEditor.js +2 -2
  89. package/components/routes/action/view/ActionSearch.js +1 -1
  90. package/components/routes/advanced/QueryBuilder.js +1 -1
  91. package/components/routes/advanced/QueryEditor.js +3 -3
  92. package/components/routes/advanced/historyCompletionProvider.js +3 -3
  93. package/components/routes/analytics/AnalyticDetails.js +2 -2
  94. package/components/routes/analytics/AnalyticSearch.js +1 -1
  95. package/components/routes/cases/CaseViewer.d.ts +2 -0
  96. package/components/routes/cases/CaseViewer.js +22 -0
  97. package/components/routes/cases/Cases.d.ts +2 -0
  98. package/components/routes/cases/Cases.js +101 -0
  99. package/components/routes/cases/constants.d.ts +5 -0
  100. package/components/routes/cases/constants.js +5 -0
  101. package/components/routes/cases/detail/AlertPanel.d.ts +6 -0
  102. package/components/routes/cases/detail/AlertPanel.js +33 -0
  103. package/components/routes/cases/detail/CaseAssets.d.ts +12 -0
  104. package/components/routes/cases/detail/CaseAssets.js +101 -0
  105. package/components/routes/cases/detail/CaseAssets.test.d.ts +1 -0
  106. package/components/routes/cases/detail/CaseAssets.test.js +163 -0
  107. package/components/routes/cases/detail/CaseDashboard.d.ts +7 -0
  108. package/components/routes/cases/detail/CaseDashboard.js +51 -0
  109. package/components/routes/cases/detail/CaseDetails.d.ts +6 -0
  110. package/components/routes/cases/detail/CaseDetails.js +61 -0
  111. package/components/routes/cases/detail/CaseOverview.d.ts +7 -0
  112. package/components/routes/cases/detail/CaseOverview.js +43 -0
  113. package/components/routes/cases/detail/CaseSidebar.d.ts +6 -0
  114. package/components/routes/cases/detail/CaseSidebar.js +61 -0
  115. package/components/routes/cases/detail/CaseTask.d.ts +11 -0
  116. package/components/routes/cases/detail/CaseTask.js +57 -0
  117. package/components/routes/cases/detail/ItemPage.d.ts +6 -0
  118. package/components/routes/cases/detail/ItemPage.js +99 -0
  119. package/components/routes/cases/detail/RelatedCasePanel.d.ts +6 -0
  120. package/components/routes/cases/detail/RelatedCasePanel.js +31 -0
  121. package/components/routes/cases/detail/TaskPanel.d.ts +7 -0
  122. package/components/routes/cases/detail/TaskPanel.js +52 -0
  123. package/components/routes/cases/detail/aggregates/CaseAggregate.d.ts +12 -0
  124. package/components/routes/cases/detail/aggregates/CaseAggregate.js +19 -0
  125. package/components/routes/cases/detail/aggregates/SourceAggregate.d.ts +6 -0
  126. package/components/routes/cases/detail/aggregates/SourceAggregate.js +27 -0
  127. package/components/routes/cases/detail/assets/Asset.d.ts +14 -0
  128. package/components/routes/cases/detail/assets/Asset.js +12 -0
  129. package/components/routes/cases/detail/assets/Asset.test.d.ts +1 -0
  130. package/components/routes/cases/detail/assets/Asset.test.js +72 -0
  131. package/components/routes/cases/detail/sidebar/CaseFolder.d.ts +13 -0
  132. package/components/routes/cases/detail/sidebar/CaseFolder.js +131 -0
  133. package/components/routes/cases/detail/sidebar/types.d.ts +3 -0
  134. package/components/routes/cases/detail/sidebar/utils.d.ts +3 -0
  135. package/components/routes/cases/detail/sidebar/utils.js +25 -0
  136. package/components/routes/cases/hooks/useCase.d.ts +13 -0
  137. package/components/routes/cases/hooks/useCase.js +38 -0
  138. package/components/routes/cases/modals/ResolveModal.d.ts +7 -0
  139. package/components/routes/cases/modals/ResolveModal.js +59 -0
  140. package/components/routes/dossiers/DossierEditor.js +2 -2
  141. package/components/routes/dossiers/DossierEditor.test.js +1 -1
  142. package/components/routes/help/ApiDocumentation.js +1 -1
  143. package/components/routes/help/HitBannerDocumentation.js +1 -0
  144. package/components/routes/help/HitDocumentation.js +1 -3
  145. package/components/routes/hits/search/InformationPane.d.ts +1 -0
  146. package/components/routes/hits/search/InformationPane.js +47 -60
  147. package/components/routes/hits/search/LayoutSettings.js +3 -3
  148. package/components/routes/hits/search/QuerySettings.js +2 -1
  149. package/components/routes/hits/search/QuerySettings.test.js +14 -9
  150. package/components/routes/hits/search/{HitBrowser.js → RecordBrowser.js} +9 -9
  151. package/components/routes/hits/search/{HitQuery.d.ts → RecordQuery.d.ts} +2 -2
  152. package/components/routes/hits/search/{HitQuery.js → RecordQuery.js} +6 -6
  153. package/components/routes/hits/search/SearchPane.js +26 -49
  154. package/components/routes/hits/search/ViewLink.js +3 -3
  155. package/components/routes/hits/search/ViewLink.test.js +8 -8
  156. package/components/routes/hits/search/grid/AddColumnModal.js +5 -4
  157. package/components/routes/hits/search/grid/EnhancedCell.d.ts +2 -1
  158. package/components/routes/hits/search/grid/EnhancedCell.js +2 -2
  159. package/components/routes/hits/search/grid/HitGrid.js +20 -18
  160. package/components/routes/hits/search/grid/{HitRow.d.ts → RecordRow.d.ts} +3 -2
  161. package/components/routes/hits/search/grid/{HitRow.js → RecordRow.js} +10 -8
  162. package/components/routes/hits/search/shared/IndexPicker.d.ts +2 -0
  163. package/components/routes/hits/search/shared/IndexPicker.js +20 -0
  164. package/components/routes/hits/view/HitViewer.js +12 -13
  165. package/components/routes/home/ViewCard.js +4 -4
  166. package/components/routes/observables/ObservableViewer.d.ts +7 -0
  167. package/components/routes/observables/ObservableViewer.js +27 -0
  168. package/components/routes/overviews/OverviewViewer.js +2 -2
  169. package/components/routes/views/ViewComposer.js +4 -4
  170. package/locales/en/translation.json +65 -3
  171. package/locales/fr/translation.json +63 -3
  172. package/models/WithMetadata.d.ts +2 -1
  173. package/models/entities/generated/AttachmentsFile.d.ts +12 -0
  174. package/models/entities/generated/Case.d.ts +28 -0
  175. package/models/entities/generated/DestinationOriginal.d.ts +19 -0
  176. package/models/entities/generated/EmailAttachment.d.ts +8 -0
  177. package/models/entities/generated/EmailParent.d.ts +19 -0
  178. package/models/entities/generated/Enrichments.d.ts +7 -0
  179. package/models/entities/generated/EnrichmentsIndicator.d.ts +21 -0
  180. package/models/entities/generated/Hit.d.ts +1 -0
  181. package/models/entities/generated/Howler.d.ts +0 -4
  182. package/models/entities/generated/HttpResponse.d.ts +11 -0
  183. package/models/entities/generated/Item.d.ts +9 -0
  184. package/models/entities/generated/Observable.d.ts +85 -0
  185. package/models/entities/generated/ObservableCloud.d.ts +20 -0
  186. package/models/entities/generated/ObservableDestination.d.ts +23 -0
  187. package/models/entities/generated/ObservableEmail.d.ts +30 -0
  188. package/models/entities/generated/ObservableFile.d.ts +36 -0
  189. package/models/entities/generated/ObservableHowler.d.ts +43 -0
  190. package/models/entities/generated/ObservableHttp.d.ts +11 -0
  191. package/models/entities/generated/ObservableObserver.d.ts +21 -0
  192. package/models/entities/generated/ObservableOrganization.d.ts +7 -0
  193. package/models/entities/generated/ObservableProcess.d.ts +34 -0
  194. package/models/entities/generated/ObservableSource.d.ts +23 -0
  195. package/models/entities/generated/ObservableThreat.d.ts +21 -0
  196. package/models/entities/generated/ObservableTls.d.ts +12 -0
  197. package/models/entities/generated/ObserverIngress.d.ts +9 -0
  198. package/models/entities/generated/Rule.d.ts +2 -10
  199. package/models/entities/generated/Task.d.ts +10 -0
  200. package/models/entities/generated/Threat.d.ts +2 -2
  201. package/models/entities/generated/{Enrichment.d.ts → ThreatEnrichment.d.ts} +1 -1
  202. package/package.json +18 -1
  203. package/plugins/clue/components/ClueTypography.js +2 -2
  204. package/plugins/clue/utils.d.ts +2 -1
  205. package/tests/utils.d.ts +2 -0
  206. package/tests/utils.js +8 -0
  207. package/utils/constants.d.ts +3 -3
  208. package/utils/hitFunctions.d.ts +2 -1
  209. package/utils/hitFunctions.js +4 -4
  210. package/utils/typeUtils.d.ts +7 -0
  211. package/utils/typeUtils.js +27 -0
  212. package/components/app/providers/HitProvider.d.ts +0 -22
  213. package/components/elements/display/icons/BundleButton.d.ts +0 -6
  214. package/components/elements/display/icons/BundleButton.js +0 -32
  215. package/components/elements/hit/HitRelated.d.ts +0 -6
  216. package/components/elements/hit/HitRelated.js +0 -7
  217. package/components/routes/help/BundleDocumentation.d.ts +0 -3
  218. package/components/routes/help/BundleDocumentation.js +0 -12
  219. package/components/routes/help/markdown/en/bundles.md.js +0 -1
  220. package/components/routes/help/markdown/fr/bundles.md.js +0 -1
  221. package/components/routes/hits/search/BundleParentMenu.d.ts +0 -6
  222. package/components/routes/hits/search/BundleParentMenu.js +0 -32
  223. package/components/routes/hits/search/BundleScroller.d.ts +0 -2
  224. package/components/routes/hits/search/BundleScroller.js +0 -6
  225. package/components/routes/hits/search/HitContextMenu.js +0 -227
  226. /package/components/app/providers/{HitSearchProvider.test.d.ts → RecordSearchProvider.test.d.ts} +0 -0
  227. /package/components/{routes/hits/search/HitContextMenu.test.d.ts → elements/ContextMenu.test.d.ts} +0 -0
  228. /package/components/{routes/overviews/OverviewEditor.d.ts → elements/MarkdownEditor.d.ts} +0 -0
  229. /package/components/elements/hit/{HitDetails.d.ts → related/RelatedRecords.d.ts} +0 -0
  230. /package/components/routes/hits/search/{HitBrowser.d.ts → RecordBrowser.d.ts} +0 -0
@@ -0,0 +1,85 @@
1
+ import type { Agent } from './Agent';
2
+ import type { Assemblyline } from './Assemblyline';
3
+ import type { Aws } from './Aws';
4
+ import type { Azure } from './Azure';
5
+ import type { Cbs } from './Cbs';
6
+ import type { Clue } from './Clue';
7
+ import type { Container } from './Container';
8
+ import type { Dns } from './Dns';
9
+ import type { Ecs } from './Ecs';
10
+ import type { Error } from './Error';
11
+ import type { Event } from './Event';
12
+ import type { Faas } from './Faas';
13
+ import type { Gcp } from './Gcp';
14
+ import type { Group } from './Group';
15
+ import type { Host } from './Host';
16
+ import type { Interface } from './Interface';
17
+ import type { Network } from './Network';
18
+ import type { ObservableCloud } from './ObservableCloud';
19
+ import type { ObservableDestination } from './ObservableDestination';
20
+ import type { ObservableEmail } from './ObservableEmail';
21
+ import type { ObservableFile } from './ObservableFile';
22
+ import type { ObservableHowler } from './ObservableHowler';
23
+ import type { ObservableHttp } from './ObservableHttp';
24
+ import type { ObservableObserver } from './ObservableObserver';
25
+ import type { ObservableOrganization } from './ObservableOrganization';
26
+ import type { ObservableProcess } from './ObservableProcess';
27
+ import type { ObservableSource } from './ObservableSource';
28
+ import type { ObservableThreat } from './ObservableThreat';
29
+ import type { ObservableTls } from './ObservableTls';
30
+ import type { Registry } from './Registry';
31
+ import type { Related } from './Related';
32
+ import type { Rule } from './Rule';
33
+ import type { Server } from './Server';
34
+ import type { Url } from './Url';
35
+ import type { User } from './User';
36
+ import type { UserAgent } from './UserAgent';
37
+ import type { Vulnerability } from './Vulnerability';
38
+
39
+ /**
40
+ * NOTE: This is an auto-generated file. Don't edit this manually.
41
+ */
42
+ export interface Observable {
43
+ __index: 'observable';
44
+ agent?: Agent;
45
+ assemblyline?: Assemblyline;
46
+ aws?: Aws;
47
+ azure?: Azure;
48
+ cbs?: Cbs;
49
+ cloud?: ObservableCloud;
50
+ clue?: Clue;
51
+ container?: Container;
52
+ destination?: ObservableDestination;
53
+ dns?: Dns;
54
+ ecs?: Ecs;
55
+ email?: ObservableEmail;
56
+ error?: Error;
57
+ event?: Event;
58
+ faas?: Faas;
59
+ file?: ObservableFile;
60
+ gcp?: Gcp;
61
+ group?: Group;
62
+ host?: Host;
63
+ howler: ObservableHowler;
64
+ http?: ObservableHttp;
65
+ interface?: Interface;
66
+ labels?: { [index: string]: string };
67
+ message?: string;
68
+ network?: Network;
69
+ observer?: ObservableObserver;
70
+ organization?: ObservableOrganization;
71
+ process?: ObservableProcess;
72
+ registry?: Registry;
73
+ related?: Related;
74
+ rule?: Rule;
75
+ server?: Server;
76
+ source?: ObservableSource;
77
+ tags?: string[];
78
+ threat?: ObservableThreat;
79
+ timestamp: string;
80
+ tls?: ObservableTls;
81
+ url?: Url;
82
+ user?: User;
83
+ user_agent?: UserAgent;
84
+ vulnerability?: Vulnerability;
85
+ }
@@ -0,0 +1,20 @@
1
+ import type { CloudAccount } from './CloudAccount';
2
+ import type { Instance } from './Instance';
3
+ import type { Machine } from './Machine';
4
+ import type { Project } from './Project';
5
+ import type { Service } from './Service';
6
+
7
+ /**
8
+ * NOTE: This is an auto-generated file. Don't edit this manually.
9
+ */
10
+ export interface ObservableCloud {
11
+ account?: CloudAccount;
12
+ availability_zone?: string;
13
+ instance?: Instance;
14
+ machine?: Machine;
15
+ project?: Project;
16
+ provider?: string;
17
+ region?: string;
18
+ service?: Service;
19
+ tenant_id?: string;
20
+ }
@@ -0,0 +1,23 @@
1
+ import type { AutonomousSystems } from './AutonomousSystems';
2
+ import type { DestinationOriginal } from './DestinationOriginal';
3
+ import type { Geo } from './Geo';
4
+ import type { Nat } from './Nat';
5
+ import type { User } from './User';
6
+
7
+ /**
8
+ * NOTE: This is an auto-generated file. Don't edit this manually.
9
+ */
10
+ export interface ObservableDestination {
11
+ address?: string;
12
+ autonomous_systems?: AutonomousSystems;
13
+ bytes?: number;
14
+ domain?: string;
15
+ geo?: Geo;
16
+ ip?: string;
17
+ mac?: string;
18
+ nat?: Nat;
19
+ original?: DestinationOriginal;
20
+ packets?: number;
21
+ port?: number;
22
+ user?: User;
23
+ }
@@ -0,0 +1,30 @@
1
+ import type { Bcc } from './Bcc';
2
+ import type { Cc } from './Cc';
3
+ import type { EmailAttachment } from './EmailAttachment';
4
+ import type { EmailParent } from './EmailParent';
5
+ import type { From } from './From';
6
+ import type { ReplyTo } from './ReplyTo';
7
+ import type { Sender } from './Sender';
8
+ import type { To } from './To';
9
+
10
+ /**
11
+ * NOTE: This is an auto-generated file. Don't edit this manually.
12
+ */
13
+ export interface ObservableEmail {
14
+ attachments?: EmailAttachment[];
15
+ bcc?: Bcc;
16
+ cc?: Cc;
17
+ content_type?: string;
18
+ delivery_timestamp?: string;
19
+ direction?: string;
20
+ from?: From;
21
+ local_id?: string;
22
+ message_id?: string;
23
+ origination_timestamp?: string;
24
+ parent?: EmailParent;
25
+ reply_to?: ReplyTo;
26
+ sender?: Sender;
27
+ subject?: string;
28
+ to?: To;
29
+ x_mailer?: string;
30
+ }
@@ -0,0 +1,36 @@
1
+ import type { CodeSignature } from './CodeSignature';
2
+ import type { Elf } from './Elf';
3
+ import type { FileHash } from './FileHash';
4
+ import type { Pe } from './Pe';
5
+
6
+ /**
7
+ * NOTE: This is an auto-generated file. Don't edit this manually.
8
+ */
9
+ export interface ObservableFile {
10
+ accessed?: string;
11
+ attributes?: string[];
12
+ code_signature?: CodeSignature;
13
+ created?: string;
14
+ ctime?: string;
15
+ device?: string;
16
+ directory?: string;
17
+ drive_letter?: string;
18
+ elf?: Elf;
19
+ extension?: string;
20
+ fork_name?: string;
21
+ gid?: string;
22
+ group?: string;
23
+ hash?: FileHash;
24
+ inode?: string;
25
+ mime_type?: string;
26
+ mode?: string;
27
+ mtime?: string;
28
+ name?: string;
29
+ owner?: string;
30
+ path?: string;
31
+ pe?: Pe;
32
+ size?: number;
33
+ target_path?: string;
34
+ type?: string;
35
+ uid?: string;
36
+ }
@@ -0,0 +1,43 @@
1
+ import type { HowlerComment } from './HowlerComment';
2
+ import type { HowlerDossier } from './HowlerDossier';
3
+ import type { Incident } from './Incident';
4
+ import type { Labels } from './Labels';
5
+ import type { Link } from './Link';
6
+ import type { Log } from './Log';
7
+ import type { Outline } from './Outline';
8
+ import type { Votes } from './Votes';
9
+
10
+ /**
11
+ * NOTE: This is an auto-generated file. Don't edit this manually.
12
+ */
13
+ export interface ObservableHowler {
14
+ analytic: string;
15
+ assessment?: string;
16
+ comment?: HowlerComment[];
17
+ confidence?: number;
18
+ data?: string[];
19
+ detection?: string;
20
+ dossier?: HowlerDossier[];
21
+ escalation?: string;
22
+ expiry?: string;
23
+ hash: string;
24
+ id: string;
25
+ incidents?: Incident[];
26
+ labels?: Labels;
27
+ links?: Link[];
28
+ log?: Log[];
29
+ mitigated?: string;
30
+ monitored?: string;
31
+ outline?: Outline;
32
+ rationale?: string;
33
+ related?: string[];
34
+ reliability?: number;
35
+ reported?: string;
36
+ score?: number;
37
+ scrutiny?: string;
38
+ severity?: number;
39
+ status?: string;
40
+ viewers?: string[];
41
+ volume?: number;
42
+ votes?: Votes;
43
+ }
@@ -0,0 +1,11 @@
1
+ import type { HttpResponse } from './HttpResponse';
2
+ import type { Request } from './Request';
3
+
4
+ /**
5
+ * NOTE: This is an auto-generated file. Don't edit this manually.
6
+ */
7
+ export interface ObservableHttp {
8
+ request?: Request;
9
+ response?: HttpResponse;
10
+ version?: string;
11
+ }
@@ -0,0 +1,21 @@
1
+ import type { Egress } from './Egress';
2
+ import type { Interface } from './Interface';
3
+ import type { ObserverIngress } from './ObserverIngress';
4
+
5
+ /**
6
+ * NOTE: This is an auto-generated file. Don't edit this manually.
7
+ */
8
+ export interface ObservableObserver {
9
+ egress?: Egress;
10
+ hostname?: string;
11
+ ingress?: ObserverIngress;
12
+ interface?: Interface;
13
+ ip?: string[];
14
+ mac?: string[];
15
+ name?: string;
16
+ product?: string;
17
+ serial_number?: string;
18
+ type?: string;
19
+ vendor?: string;
20
+ version?: string;
21
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * NOTE: This is an auto-generated file. Don't edit this manually.
3
+ */
4
+ export interface ObservableOrganization {
5
+ id?: string;
6
+ name?: string;
7
+ }
@@ -0,0 +1,34 @@
1
+ import type { CodeSignature } from './CodeSignature';
2
+ import type { EntryMeta } from './EntryMeta';
3
+ import type { Pe } from './Pe';
4
+ import type { ProcessHash } from './ProcessHash';
5
+ import type { ProcessParent } from './ProcessParent';
6
+ import type { ProcessUser } from './ProcessUser';
7
+
8
+ /**
9
+ * NOTE: This is an auto-generated file. Don't edit this manually.
10
+ */
11
+ export interface ObservableProcess {
12
+ args?: string[];
13
+ args_count?: number;
14
+ code_signature?: CodeSignature;
15
+ command_line?: string;
16
+ end?: string;
17
+ entity_id?: string;
18
+ entry_meta?: EntryMeta;
19
+ env_vars?: { [index: string]: string };
20
+ executable?: string;
21
+ exit_code?: number;
22
+ hash?: ProcessHash;
23
+ interactive?: boolean;
24
+ name?: string;
25
+ parent?: ProcessParent;
26
+ pe?: Pe;
27
+ pid?: number;
28
+ same_as_process?: boolean;
29
+ start?: string;
30
+ title?: string;
31
+ uptime?: number;
32
+ user?: ProcessUser;
33
+ working_directory?: string;
34
+ }
@@ -0,0 +1,23 @@
1
+ import type { AutonomousSystems } from './AutonomousSystems';
2
+ import type { Geo } from './Geo';
3
+ import type { Nat } from './Nat';
4
+ import type { SourceOriginal } from './SourceOriginal';
5
+ import type { User } from './User';
6
+
7
+ /**
8
+ * NOTE: This is an auto-generated file. Don't edit this manually.
9
+ */
10
+ export interface ObservableSource {
11
+ address?: string;
12
+ autonomous_systems?: AutonomousSystems;
13
+ bytes?: number;
14
+ domain?: string;
15
+ geo?: Geo;
16
+ ip?: string;
17
+ mac?: string;
18
+ nat?: Nat;
19
+ original?: SourceOriginal;
20
+ packets?: number;
21
+ port?: number;
22
+ user?: User;
23
+ }
@@ -0,0 +1,21 @@
1
+ import type { Feed } from './Feed';
2
+ import type { Software } from './Software';
3
+ import type { ThreatEnrichment } from './ThreatEnrichment';
4
+ import type { ThreatGroup } from './ThreatGroup';
5
+ import type { ThreatIndicator } from './ThreatIndicator';
6
+ import type { ThreatTactic } from './ThreatTactic';
7
+ import type { ThreatTechnique } from './ThreatTechnique';
8
+
9
+ /**
10
+ * NOTE: This is an auto-generated file. Don't edit this manually.
11
+ */
12
+ export interface ObservableThreat {
13
+ enrichments?: ThreatEnrichment[];
14
+ feed?: Feed;
15
+ framework?: string;
16
+ group?: ThreatGroup;
17
+ indicator?: ThreatIndicator;
18
+ software?: Software;
19
+ tactic?: ThreatTactic;
20
+ technique?: ThreatTechnique;
21
+ }
@@ -0,0 +1,12 @@
1
+ import type { Client } from './Client';
2
+ import type { TlsServer } from './TlsServer';
3
+
4
+ /**
5
+ * NOTE: This is an auto-generated file. Don't edit this manually.
6
+ */
7
+ export interface ObservableTls {
8
+ client?: Client;
9
+ server?: TlsServer;
10
+ version?: string;
11
+ version_protocol?: string;
12
+ }
@@ -0,0 +1,9 @@
1
+ import type { Interface } from './Interface';
2
+
3
+ /**
4
+ * NOTE: This is an auto-generated file. Don't edit this manually.
5
+ */
6
+ export interface ObserverIngress {
7
+ interface?: Interface;
8
+ zone?: string;
9
+ }
@@ -2,14 +2,6 @@
2
2
  * NOTE: This is an auto-generated file. Don't edit this manually.
3
3
  */
4
4
  export interface Rule {
5
- author?: string;
6
- category?: string;
7
- description?: string;
8
- id?: string;
9
- license?: string;
10
- name?: string;
11
- reference?: string;
12
- ruleset?: string;
13
- uuid?: string;
14
- version?: string;
5
+ destination?: string;
6
+ query?: string;
15
7
  }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * NOTE: This is an auto-generated file. Don't edit this manually.
3
+ */
4
+ export interface Task {
5
+ assignment?: string;
6
+ complete?: boolean;
7
+ id?: string;
8
+ path?: string;
9
+ summary?: string;
10
+ }
@@ -1,6 +1,6 @@
1
- import type { Enrichment } from './Enrichment';
2
1
  import type { Feed } from './Feed';
3
2
  import type { Software } from './Software';
3
+ import type { ThreatEnrichment } from './ThreatEnrichment';
4
4
  import type { ThreatGroup } from './ThreatGroup';
5
5
  import type { ThreatIndicator } from './ThreatIndicator';
6
6
  import type { ThreatTactic } from './ThreatTactic';
@@ -10,7 +10,7 @@ import type { ThreatTechnique } from './ThreatTechnique';
10
10
  * NOTE: This is an auto-generated file. Don't edit this manually.
11
11
  */
12
12
  export interface Threat {
13
- enrichments?: Enrichment[];
13
+ enrichments?: ThreatEnrichment[];
14
14
  feed?: Feed;
15
15
  framework?: string;
16
16
  group?: ThreatGroup;
@@ -4,7 +4,7 @@ import type { Matched } from './Matched';
4
4
  /**
5
5
  * NOTE: This is an auto-generated file. Don't edit this manually.
6
6
  */
7
- export interface Enrichment {
7
+ export interface ThreatEnrichment {
8
8
  indicator?: Indicator;
9
9
  matched?: Matched;
10
10
  }
package/package.json CHANGED
@@ -101,7 +101,7 @@
101
101
  "internal-slot": "1.0.7"
102
102
  },
103
103
  "type": "module",
104
- "version": "2.18.0-dev.667",
104
+ "version": "2.18.0-dev.674",
105
105
  "exports": {
106
106
  "./i18n": "./i18n.js",
107
107
  "./index.css": "./index.css",
@@ -129,8 +129,11 @@
129
129
  "./components/app/providers/*": "./components/app/providers/*.js",
130
130
  "./components/app/hooks/*": "./components/app/hooks/*.js",
131
131
  "./components/elements/display/*": "./components/elements/display/*.js",
132
+ "./components/elements/observable/*": "./components/elements/observable/*.js",
132
133
  "./components/elements/hit/*": "./components/elements/hit/*.js",
134
+ "./components/elements/record/*": "./components/elements/record/*.js",
133
135
  "./components/elements/view/*": "./components/elements/view/*.js",
136
+ "./components/elements/case/*": "./components/elements/case/*.js",
134
137
  "./components/elements/addons/*": "./components/elements/addons/*.js",
135
138
  "./components/elements/display/handlebars/*": "./components/elements/display/handlebars/*.js",
136
139
  "./components/elements/display/modals/*": "./components/elements/display/modals/*.js",
@@ -172,6 +175,8 @@
172
175
  "./components/routes/help/*": "./components/routes/help/*.js",
173
176
  "./components/routes/admin/*": "./components/routes/admin/*.js",
174
177
  "./components/routes/settings/*": "./components/routes/settings/*.js",
178
+ "./components/routes/observables/*": "./components/routes/observables/*.js",
179
+ "./components/routes/cases/*": "./components/routes/cases/*.js",
175
180
  "./components/routes/action/edit/*": "./components/routes/action/edit/*.js",
176
181
  "./components/routes/action/view/*": "./components/routes/action/view/*.js",
177
182
  "./components/routes/action/shared/*": "./components/routes/action/shared/*.js",
@@ -187,6 +192,12 @@
187
192
  "./components/routes/help/markdown/fr/*.md": "./components/routes/help/markdown/fr/*.md.js",
188
193
  "./components/routes/help/markdown/en/*.md": "./components/routes/help/markdown/en/*.md.js",
189
194
  "./components/routes/admin/users/*": "./components/routes/admin/users/*.js",
195
+ "./components/routes/cases/modals/*": "./components/routes/cases/modals/*.js",
196
+ "./components/routes/cases/hooks/*": "./components/routes/cases/hooks/*.js",
197
+ "./components/routes/cases/detail/*": "./components/routes/cases/detail/*.js",
198
+ "./components/routes/cases/detail/sidebar/*": "./components/routes/cases/detail/sidebar/*.js",
199
+ "./components/routes/cases/detail/assets/*": "./components/routes/cases/detail/assets/*.js",
200
+ "./components/routes/cases/detail/aggregates/*": "./components/routes/cases/detail/aggregates/*.js",
190
201
  "./commons/components/*": "./commons/components/*.js",
191
202
  "./commons/components/breadcrumbs/*": "./commons/components/breadcrumbs/*.js",
192
203
  "./commons/components/app/*": "./commons/components/app/*.js",
@@ -212,6 +223,8 @@
212
223
  "./locales/en/help/*.json": "./locales/en/help/*.json",
213
224
  "./api/overview/*": "./api/overview/*.js",
214
225
  "./api/overview": "./api/overview/index.js",
226
+ "./api/v2/*": "./api/v2/*.js",
227
+ "./api/v2": "./api/v2/index.js",
215
228
  "./api/action/*": "./api/action/*.js",
216
229
  "./api/action": "./api/action/index.js",
217
230
  "./api/auth/*": "./api/auth/*.js",
@@ -234,6 +247,10 @@
234
247
  "./api/hit": "./api/hit/index.js",
235
248
  "./api/view/*": "./api/view/*.js",
236
249
  "./api/view": "./api/view/index.js",
250
+ "./api/v2/search/*": "./api/v2/search/*.js",
251
+ "./api/v2/search": "./api/v2/search/index.js",
252
+ "./api/v2/case/*": "./api/v2/case/*.js",
253
+ "./api/v2/case": "./api/v2/case/index.js",
237
254
  "./api/analytic/comments/*": "./api/analytic/comments/*.js",
238
255
  "./api/analytic/comments": "./api/analytic/comments/index.js",
239
256
  "./api/analytic/notebooks/*": "./api/analytic/notebooks/*.js",
@@ -3,8 +3,8 @@ import EnrichedTypography from '@cccsaurora/clue-ui/components/EnrichedTypograph
3
3
  import { Typography } from '@mui/material';
4
4
  import { memo } from 'react';
5
5
  import { useType } from '../utils';
6
- const ClueTypography = ({ children, value, context, field, hit, ...props }) => {
7
- const type = useType(hit, field, value);
6
+ const ClueTypography = ({ children, value, context, field, obj, ...props }) => {
7
+ const type = useType(obj, field, value);
8
8
  if (!type) {
9
9
  return _jsx(Typography, { ...props, children: children ?? value });
10
10
  }
@@ -1,2 +1,3 @@
1
1
  import type { Hit } from '@cccsaurora/howler-ui/models/entities/generated/Hit';
2
- export declare const useType: (hit?: Hit, field?: string, value?: string) => any;
2
+ import type { Observable } from '@cccsaurora/howler-ui/models/entities/generated/Observable';
3
+ export declare const useType: (hit?: Hit | Observable, field?: string, value?: string) => any;
package/tests/utils.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { Action } from '@cccsaurora/howler-ui/models/entities/generated/Action';
2
2
  import type { Analytic } from '@cccsaurora/howler-ui/models/entities/generated/Analytic';
3
+ import type { Case } from '@cccsaurora/howler-ui/models/entities/generated/Case';
3
4
  import type { Dossier } from '@cccsaurora/howler-ui/models/entities/generated/Dossier';
4
5
  import type { Hit } from '@cccsaurora/howler-ui/models/entities/generated/Hit';
5
6
  import type { Template } from '@cccsaurora/howler-ui/models/entities/generated/Template';
@@ -12,5 +13,6 @@ export declare const createMockAnalytic: (overrides?: Partial<Analytic>) => Anal
12
13
  export declare const createMockTemplate: (overrides?: Partial<Template>) => Template;
13
14
  export declare const createMockAction: (overrides?: Partial<Action>) => Action;
14
15
  export declare const createMockView: (overrides?: Partial<View>) => View;
16
+ export declare const createMockCase: (overrides?: Partial<Case>) => Case;
15
17
  export declare const createMockDossier: (overrides?: Partial<Dossier>) => Dossier;
16
18
  export {};
package/tests/utils.js CHANGED
@@ -1,5 +1,6 @@
1
1
  // Mock data factories
2
2
  export const createMockHit = (overrides) => ({
3
+ __index: 'hit',
3
4
  howler: {
4
5
  id: 'test-hit-1',
5
6
  analytic: 'test-analytic',
@@ -52,6 +53,13 @@ export const createMockView = (overrides) => ({
52
53
  },
53
54
  ...overrides
54
55
  });
56
+ export const createMockCase = (overrides) => ({
57
+ case_id: 'test-case-id',
58
+ title: 'Test Case',
59
+ summary: 'Test case summary',
60
+ items: [],
61
+ ...overrides
62
+ });
55
63
  // Helper function to create mock dossiers
56
64
  export const createMockDossier = (overrides) => ({
57
65
  dossier_id: 'test-dossier-id',
@@ -5,9 +5,9 @@ export declare const VERSION: any;
5
5
  export declare const MY_LOCAL_STORAGE_PREFIX = "howler.ui";
6
6
  export declare const MY_SESSION_STORAGE_PREFIX = "howler.ui.cache";
7
7
  export declare const ESCALATION_COLORS: {
8
- alert: string;
9
- evidence: string;
10
- hit: string;
8
+ alert: "warning";
9
+ evidence: "error";
10
+ hit: "primary";
11
11
  };
12
12
  export declare const STATUS_COLORS: {
13
13
  open: string;
@@ -1,2 +1,3 @@
1
1
  import type { Hit } from '@cccsaurora/howler-ui/models/entities/generated/Hit';
2
- export declare const getUserList: (hit: Hit) => Set<string>;
2
+ import type { Observable } from '@cccsaurora/howler-ui/models/entities/generated/Observable';
3
+ export declare const getUserList: (record: Hit | Observable) => Set<string>;
@@ -1,8 +1,8 @@
1
- export const getUserList = (hit) => {
1
+ export const getUserList = (record) => {
2
2
  const ids = new Set();
3
- if (hit) {
4
- hit.howler?.log?.forEach(l => ids.add(l.user));
5
- hit.howler?.comment?.forEach(c => ids.add(c.user), ids);
3
+ if (record) {
4
+ record.howler?.log?.forEach(l => ids.add(l.user));
5
+ record.howler?.comment?.forEach(c => ids.add(c.user), ids);
6
6
  }
7
7
  return ids;
8
8
  };
@@ -0,0 +1,7 @@
1
+ import type { Case } from '@cccsaurora/howler-ui/models/entities/generated/Case';
2
+ import type { Hit } from '@cccsaurora/howler-ui/models/entities/generated/Hit';
3
+ import type { Observable } from '@cccsaurora/howler-ui/models/entities/generated/Observable';
4
+ import type { WithMetadata } from '@cccsaurora/howler-ui/models/WithMetadata';
5
+ export declare const isHit: (obj: WithMetadata<any>) => obj is Hit;
6
+ export declare const isCase: (obj: WithMetadata<any>) => obj is Case;
7
+ export declare const isObservable: (obj: WithMetadata<any>) => obj is Observable;
@@ -0,0 +1,27 @@
1
+ export const isHit = (obj) => {
2
+ if (!obj) {
3
+ return false;
4
+ }
5
+ if (obj.__index === 'hit') {
6
+ return true;
7
+ }
8
+ return false;
9
+ };
10
+ export const isCase = (obj) => {
11
+ if (!obj) {
12
+ return false;
13
+ }
14
+ if (obj.__index === 'case') {
15
+ return true;
16
+ }
17
+ return false;
18
+ };
19
+ export const isObservable = (obj) => {
20
+ if (!obj) {
21
+ return false;
22
+ }
23
+ if (obj.__index === 'observable') {
24
+ return true;
25
+ }
26
+ return false;
27
+ };