@x12i/map-store-client 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +147 -1
- package/dist/estate/analytics.d.ts +41 -0
- package/dist/estate/analytics.d.ts.map +1 -0
- package/dist/estate/analytics.js +115 -0
- package/dist/estate/analytics.js.map +1 -0
- package/dist/estate/census.d.ts +115 -0
- package/dist/estate/census.d.ts.map +1 -0
- package/dist/estate/census.js +266 -0
- package/dist/estate/census.js.map +1 -0
- package/dist/estate/client.d.ts +66 -0
- package/dist/estate/client.d.ts.map +1 -0
- package/dist/estate/client.js +10 -0
- package/dist/estate/client.js.map +1 -0
- package/dist/estate/content.d.ts +77 -0
- package/dist/estate/content.d.ts.map +1 -0
- package/dist/estate/content.js +226 -0
- package/dist/estate/content.js.map +1 -0
- package/dist/estate/contract.d.ts +64 -0
- package/dist/estate/contract.d.ts.map +1 -0
- package/dist/estate/contract.js +258 -0
- package/dist/estate/contract.js.map +1 -0
- package/dist/estate/decisions.d.ts +32 -0
- package/dist/estate/decisions.d.ts.map +1 -0
- package/dist/estate/decisions.js +113 -0
- package/dist/estate/decisions.js.map +1 -0
- package/dist/estate/ids.d.ts +3 -0
- package/dist/estate/ids.d.ts.map +1 -0
- package/dist/estate/ids.js +6 -0
- package/dist/estate/ids.js.map +1 -0
- package/dist/estate/index.d.ts +26 -0
- package/dist/estate/index.d.ts.map +1 -0
- package/dist/estate/index.js +17 -0
- package/dist/estate/index.js.map +1 -0
- package/dist/estate/localStories.d.ts +28 -0
- package/dist/estate/localStories.d.ts.map +1 -0
- package/dist/estate/localStories.js +980 -0
- package/dist/estate/localStories.js.map +1 -0
- package/dist/estate/pack.d.ts +45 -0
- package/dist/estate/pack.d.ts.map +1 -0
- package/dist/estate/pack.js +83 -0
- package/dist/estate/pack.js.map +1 -0
- package/dist/estate/predictedAttack.d.ts +79 -0
- package/dist/estate/predictedAttack.d.ts.map +1 -0
- package/dist/estate/predictedAttack.js +321 -0
- package/dist/estate/predictedAttack.js.map +1 -0
- package/dist/estate/stories.d.ts +85 -0
- package/dist/estate/stories.d.ts.map +1 -0
- package/dist/estate/stories.js +215 -0
- package/dist/estate/stories.js.map +1 -0
- package/dist/fetch.d.ts +2 -0
- package/dist/fetch.d.ts.map +1 -1
- package/dist/fetch.js +13 -3
- package/dist/fetch.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/queries.d.ts +98 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +180 -0
- package/dist/queries.js.map +1 -0
- package/package.json +14 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/estate/content.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content types each side owns, in the order those contracts list them.
|
|
3
|
+
* Synapix is the lander collections that have stored rows, then the registered
|
|
4
|
+
* collections with no rows, then the source types memorix-skills reads and does not write.
|
|
5
|
+
* memorix-skills is neo-networks-v2 `contracts/registry.json`. inventory is Synapix;
|
|
6
|
+
* that pack reads it and does not write it.
|
|
7
|
+
*/
|
|
8
|
+
export type DataSide = 'synapix' | 'skills';
|
|
9
|
+
export type SkillsContent = {
|
|
10
|
+
id: string;
|
|
11
|
+
discriminators: string[];
|
|
12
|
+
/** Named in the registry as a declared gap, not a published instance. */
|
|
13
|
+
gap: boolean;
|
|
14
|
+
};
|
|
15
|
+
export declare function synapixContentTypes(objectType: string): string[];
|
|
16
|
+
export declare function skillsContentTypes(objectType: string): SkillsContent[];
|
|
17
|
+
/** Every ai-agents content type, one pair per object type that declares it. */
|
|
18
|
+
export declare function skillsRecordTargets(): {
|
|
19
|
+
objectType: string;
|
|
20
|
+
contentType: string;
|
|
21
|
+
}[];
|
|
22
|
+
/** Object types that declare this ai-agents content type, with the discriminator values it may carry. */
|
|
23
|
+
export declare function declaringObjectTypes(contentType: string): {
|
|
24
|
+
objectType: string;
|
|
25
|
+
discriminators: string[];
|
|
26
|
+
}[];
|
|
27
|
+
/** Names the lander report lists that neither the Synapix tables nor the skills writes include. */
|
|
28
|
+
export declare function otherContractTypes(objectType: string): string[];
|
|
29
|
+
export declare function skillsContract(objectType: string, contentType: string): SkillsContent | null;
|
|
30
|
+
/** Synapix and skills are disjoint. Anything else is registered on the catalog but not in either contract. */
|
|
31
|
+
export declare function ownerOf(objectType: string, contentType: string): DataSide | null;
|
|
32
|
+
/**
|
|
33
|
+
* The triage instance a single-row read must name.
|
|
34
|
+
* `getContent` without `data.decisionType` answers 404, so a row read asks for the instance by name.
|
|
35
|
+
* Finding rows are `finding` / `triage` with `finding-triage`.
|
|
36
|
+
* Asset rows are `endpoint-asset` / `triage` with `asset-triage`.
|
|
37
|
+
* Zone rows are `network-zone` / `triage` with `zone-triage`.
|
|
38
|
+
*/
|
|
39
|
+
export declare function triageInstance(objectType: string): 'finding-triage' | 'asset-triage' | 'zone-triage' | null;
|
|
40
|
+
/** One list the analysis pages render: a content type across every object type that declares it. */
|
|
41
|
+
export type ContentListSpec = {
|
|
42
|
+
contentType: string;
|
|
43
|
+
/** Object types whose contract declares this content type, in contract order. */
|
|
44
|
+
objectTypes: string[];
|
|
45
|
+
/** `data[acceptField]` must be one of these for the row to belong to the list. */
|
|
46
|
+
acceptField: string;
|
|
47
|
+
acceptValues: string[];
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Predicted attacks. List `predicted-attack` on each object type here, with markdown,
|
|
51
|
+
* and keep a row only when `data.predictionType` is one of `acceptValues`
|
|
52
|
+
* (`finding-attack`, `asset-attack`, `alert-attack`, `device-attack`, `zone-attack`).
|
|
53
|
+
*/
|
|
54
|
+
export declare const PREDICTED_ATTACK_LIST: ContentListSpec;
|
|
55
|
+
/**
|
|
56
|
+
* Mitigation plans. List `mitigation` on each object type here, with markdown,
|
|
57
|
+
* and keep a row only when `isMitigationPlan` is true.
|
|
58
|
+
*/
|
|
59
|
+
export declare const MITIGATION_LIST: ContentListSpec;
|
|
60
|
+
/** `mitigationType` is `response-plan` and the plan names the response-plan schema. */
|
|
61
|
+
export declare function isMitigationPlan(data: Record<string, unknown>): boolean;
|
|
62
|
+
/** `data.predictionType` is one of the predicted-attack discriminators. */
|
|
63
|
+
export declare function isPredictedAttack(data: Record<string, unknown>): boolean;
|
|
64
|
+
//# sourceMappingURL=contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/estate/contract.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE5C,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,yEAAyE;IACzE,GAAG,EAAE,OAAO,CAAC;CACd,CAAC;AA2KF,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAKhE;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,EAAE,CAEtE;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,IAAI;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAAE,CAInF;AAED,yGAAyG;AACzG,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAAE,EAAE,CAM5G;AAED,mGAAmG;AACnG,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAG/D;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAE5F;AAED,8GAA8G;AAC9G,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAIhF;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,GACjB,gBAAgB,GAAG,cAAc,GAAG,aAAa,GAAG,IAAI,CAM1D;AAED,oGAAoG;AACpG,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAYF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,eAAgE,CAAC;AAErG;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,eAA0D,CAAC;AAEzF,uFAAuF;AACvF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAOvE;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAExE"}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content types each side owns, in the order those contracts list them.
|
|
3
|
+
* Synapix is the lander collections that have stored rows, then the registered
|
|
4
|
+
* collections with no rows, then the source types memorix-skills reads and does not write.
|
|
5
|
+
* memorix-skills is neo-networks-v2 `contracts/registry.json`. inventory is Synapix;
|
|
6
|
+
* that pack reads it and does not write it.
|
|
7
|
+
*/
|
|
8
|
+
const LANDER_SUBJECTS = new Set([
|
|
9
|
+
'alert',
|
|
10
|
+
'endpoint-asset',
|
|
11
|
+
'endpoint-subject',
|
|
12
|
+
'finding',
|
|
13
|
+
'firewall-address',
|
|
14
|
+
'firewall-interface',
|
|
15
|
+
'firewall-policy',
|
|
16
|
+
'firewall-route',
|
|
17
|
+
'firewall-service',
|
|
18
|
+
'network-device',
|
|
19
|
+
'network-zone',
|
|
20
|
+
'unresolved-subject',
|
|
21
|
+
]);
|
|
22
|
+
/** Stored lander collections, then registered-but-empty, then skills read sources. */
|
|
23
|
+
const SYNAPIX_SUBJECT = [
|
|
24
|
+
'inventory',
|
|
25
|
+
'security-context',
|
|
26
|
+
'classification',
|
|
27
|
+
'reachability-claims',
|
|
28
|
+
'exploitability-assessments',
|
|
29
|
+
'attackability-assessments',
|
|
30
|
+
'evidence-lineage',
|
|
31
|
+
'agent-context',
|
|
32
|
+
'pre-ai-context',
|
|
33
|
+
'field-completeness',
|
|
34
|
+
'open-vuln-assessment',
|
|
35
|
+
'source-occurrence',
|
|
36
|
+
'reachability-paths',
|
|
37
|
+
'live-context',
|
|
38
|
+
'processing-status',
|
|
39
|
+
'event-evidence',
|
|
40
|
+
'object-reachability-paths',
|
|
41
|
+
];
|
|
42
|
+
const SYNAPIX_SECURITY_MAP = ['bootstrap'];
|
|
43
|
+
/** Registered on finding, named in the lander report, not written by neo-networks-v2. */
|
|
44
|
+
const FINDING_REGISTERED = [
|
|
45
|
+
'analysis-refined',
|
|
46
|
+
'analysis-closure',
|
|
47
|
+
'analysis-enriched',
|
|
48
|
+
'analysis-repair',
|
|
49
|
+
'triage-reassessment',
|
|
50
|
+
];
|
|
51
|
+
const SKILLS = {
|
|
52
|
+
finding: [
|
|
53
|
+
{
|
|
54
|
+
id: 'analysis',
|
|
55
|
+
discriminators: [
|
|
56
|
+
'entity-context',
|
|
57
|
+
'assessment-admission',
|
|
58
|
+
'global-context',
|
|
59
|
+
'applicability',
|
|
60
|
+
'mechanism-sources',
|
|
61
|
+
'exploit-mechanism',
|
|
62
|
+
'attackability',
|
|
63
|
+
'vulnerability',
|
|
64
|
+
'path-gap',
|
|
65
|
+
'path-mechanism',
|
|
66
|
+
'detection',
|
|
67
|
+
'attack-hypothesis',
|
|
68
|
+
'claim-review',
|
|
69
|
+
'claim-review-decision',
|
|
70
|
+
'evidence-task',
|
|
71
|
+
],
|
|
72
|
+
gap: false,
|
|
73
|
+
},
|
|
74
|
+
{ id: 'overview', discriminators: ['entity-overview'], gap: false },
|
|
75
|
+
{ id: 'predicted-attack', discriminators: ['finding-attack'], gap: false },
|
|
76
|
+
{ id: 'triage-model', discriminators: ['finding-triage'], gap: false },
|
|
77
|
+
{ id: 'triage', discriminators: ['finding-triage'], gap: false },
|
|
78
|
+
{ id: 'mitigation', discriminators: ['response-plan'], gap: false },
|
|
79
|
+
],
|
|
80
|
+
'endpoint-asset': [
|
|
81
|
+
{
|
|
82
|
+
id: 'analysis',
|
|
83
|
+
discriminators: [
|
|
84
|
+
'entity-context',
|
|
85
|
+
'entity-relations',
|
|
86
|
+
'vulnerable-asset',
|
|
87
|
+
'path-gap',
|
|
88
|
+
'asset-exposure',
|
|
89
|
+
'attack-hypothesis',
|
|
90
|
+
],
|
|
91
|
+
gap: false,
|
|
92
|
+
},
|
|
93
|
+
{ id: 'overview', discriminators: ['entity-overview'], gap: false },
|
|
94
|
+
{ id: 'predicted-attack', discriminators: ['asset-attack'], gap: false },
|
|
95
|
+
{ id: 'triage', discriminators: ['asset-triage'], gap: false },
|
|
96
|
+
{ id: 'mitigation', discriminators: ['response-plan'], gap: false },
|
|
97
|
+
],
|
|
98
|
+
alert: [
|
|
99
|
+
{
|
|
100
|
+
id: 'analysis',
|
|
101
|
+
discriminators: [
|
|
102
|
+
'entity-context',
|
|
103
|
+
'path-gap',
|
|
104
|
+
'alert-pressure',
|
|
105
|
+
'alert-response',
|
|
106
|
+
'alert-correlation',
|
|
107
|
+
'attack-hypothesis',
|
|
108
|
+
],
|
|
109
|
+
gap: false,
|
|
110
|
+
},
|
|
111
|
+
{ id: 'observation', discriminators: [], gap: false },
|
|
112
|
+
{ id: 'predicted-attack', discriminators: ['alert-attack'], gap: false },
|
|
113
|
+
{ id: 'triage', discriminators: ['alert-triage'], gap: false },
|
|
114
|
+
{ id: 'mitigation', discriminators: ['response-plan'], gap: false },
|
|
115
|
+
],
|
|
116
|
+
'unresolved-subject': [
|
|
117
|
+
{
|
|
118
|
+
id: 'analysis',
|
|
119
|
+
discriminators: ['entity-context', 'identity-link', 'path-gap'],
|
|
120
|
+
gap: false,
|
|
121
|
+
},
|
|
122
|
+
{ id: 'triage', discriminators: ['unresolved-triage'], gap: true },
|
|
123
|
+
],
|
|
124
|
+
'network-device': [
|
|
125
|
+
{
|
|
126
|
+
id: 'analysis',
|
|
127
|
+
discriminators: ['entity-context', 'path-gap', 'device-reachability', 'attack-hypothesis'],
|
|
128
|
+
gap: false,
|
|
129
|
+
},
|
|
130
|
+
{ id: 'predicted-attack', discriminators: ['device-attack'], gap: true },
|
|
131
|
+
{ id: 'triage', discriminators: ['device-triage'], gap: true },
|
|
132
|
+
],
|
|
133
|
+
'network-zone': [
|
|
134
|
+
{
|
|
135
|
+
id: 'analysis',
|
|
136
|
+
discriminators: ['entity-context', 'entity-relations', 'path-gap', 'zone-exposure', 'attack-hypothesis'],
|
|
137
|
+
gap: false,
|
|
138
|
+
},
|
|
139
|
+
{ id: 'predicted-attack', discriminators: ['zone-attack'], gap: false },
|
|
140
|
+
{ id: 'triage', discriminators: ['zone-triage'], gap: false },
|
|
141
|
+
{ id: 'mitigation', discriminators: ['response-plan'], gap: false },
|
|
142
|
+
],
|
|
143
|
+
'security-map': [
|
|
144
|
+
{
|
|
145
|
+
id: 'process-manifest',
|
|
146
|
+
discriminators: [
|
|
147
|
+
'scope-finding',
|
|
148
|
+
'scope-endpoint-asset',
|
|
149
|
+
'scope-alert',
|
|
150
|
+
'scope-unresolved-subject',
|
|
151
|
+
'scope-network-device',
|
|
152
|
+
'scope-network-zone',
|
|
153
|
+
'nx-c-p2',
|
|
154
|
+
'nx-c-p3',
|
|
155
|
+
'nx-c-p4',
|
|
156
|
+
'nx-c-p5',
|
|
157
|
+
'nx-c-p6-vuln',
|
|
158
|
+
'nx-c-p6-alert',
|
|
159
|
+
'nx-c-p6-mitigation',
|
|
160
|
+
'nx-c-publish',
|
|
161
|
+
],
|
|
162
|
+
gap: false,
|
|
163
|
+
},
|
|
164
|
+
{ id: 'analysis', discriminators: ['occurrence-readiness'], gap: false },
|
|
165
|
+
{ id: 'estate-analytics', discriminators: ['publication'], gap: false },
|
|
166
|
+
],
|
|
167
|
+
};
|
|
168
|
+
function typeOf(objectType) {
|
|
169
|
+
return String(objectType ?? '').trim().toLowerCase();
|
|
170
|
+
}
|
|
171
|
+
export function synapixContentTypes(objectType) {
|
|
172
|
+
const type = typeOf(objectType);
|
|
173
|
+
if (type === 'security-map')
|
|
174
|
+
return SYNAPIX_SECURITY_MAP;
|
|
175
|
+
if (!LANDER_SUBJECTS.has(type))
|
|
176
|
+
return [];
|
|
177
|
+
return SYNAPIX_SUBJECT;
|
|
178
|
+
}
|
|
179
|
+
export function skillsContentTypes(objectType) {
|
|
180
|
+
return SKILLS[typeOf(objectType)] ?? [];
|
|
181
|
+
}
|
|
182
|
+
/** Every ai-agents content type, one pair per object type that declares it. */
|
|
183
|
+
export function skillsRecordTargets() {
|
|
184
|
+
return Object.entries(SKILLS).flatMap(([objectType, types]) => types.map((item) => ({ objectType, contentType: item.id })));
|
|
185
|
+
}
|
|
186
|
+
/** Object types that declare this ai-agents content type, with the discriminator values it may carry. */
|
|
187
|
+
export function declaringObjectTypes(contentType) {
|
|
188
|
+
return Object.entries(SKILLS).flatMap(([objectType, types]) => types
|
|
189
|
+
.filter((item) => item.id === contentType)
|
|
190
|
+
.map((item) => ({ objectType, discriminators: item.discriminators })));
|
|
191
|
+
}
|
|
192
|
+
/** Names the lander report lists that neither the Synapix tables nor the skills writes include. */
|
|
193
|
+
export function otherContractTypes(objectType) {
|
|
194
|
+
if (typeOf(objectType) === 'finding')
|
|
195
|
+
return FINDING_REGISTERED;
|
|
196
|
+
return [];
|
|
197
|
+
}
|
|
198
|
+
export function skillsContract(objectType, contentType) {
|
|
199
|
+
return skillsContentTypes(objectType).find((item) => item.id === contentType) ?? null;
|
|
200
|
+
}
|
|
201
|
+
/** Synapix and skills are disjoint. Anything else is registered on the catalog but not in either contract. */
|
|
202
|
+
export function ownerOf(objectType, contentType) {
|
|
203
|
+
if (skillsContentTypes(objectType).some((item) => item.id === contentType))
|
|
204
|
+
return 'skills';
|
|
205
|
+
if (synapixContentTypes(objectType).includes(contentType))
|
|
206
|
+
return 'synapix';
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* The triage instance a single-row read must name.
|
|
211
|
+
* `getContent` without `data.decisionType` answers 404, so a row read asks for the instance by name.
|
|
212
|
+
* Finding rows are `finding` / `triage` with `finding-triage`.
|
|
213
|
+
* Asset rows are `endpoint-asset` / `triage` with `asset-triage`.
|
|
214
|
+
* Zone rows are `network-zone` / `triage` with `zone-triage`.
|
|
215
|
+
*/
|
|
216
|
+
export function triageInstance(objectType) {
|
|
217
|
+
const type = objectType.trim().toLowerCase();
|
|
218
|
+
if (type === 'finding')
|
|
219
|
+
return 'finding-triage';
|
|
220
|
+
if (type === 'endpoint-asset')
|
|
221
|
+
return 'asset-triage';
|
|
222
|
+
if (type === 'network-zone')
|
|
223
|
+
return 'zone-triage';
|
|
224
|
+
return null;
|
|
225
|
+
}
|
|
226
|
+
function listSpec(contentType, acceptField) {
|
|
227
|
+
const sources = declaringObjectTypes(contentType);
|
|
228
|
+
return {
|
|
229
|
+
contentType,
|
|
230
|
+
objectTypes: sources.map((source) => source.objectType),
|
|
231
|
+
acceptField,
|
|
232
|
+
acceptValues: [...new Set(sources.flatMap((source) => source.discriminators))],
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Predicted attacks. List `predicted-attack` on each object type here, with markdown,
|
|
237
|
+
* and keep a row only when `data.predictionType` is one of `acceptValues`
|
|
238
|
+
* (`finding-attack`, `asset-attack`, `alert-attack`, `device-attack`, `zone-attack`).
|
|
239
|
+
*/
|
|
240
|
+
export const PREDICTED_ATTACK_LIST = listSpec('predicted-attack', 'predictionType');
|
|
241
|
+
/**
|
|
242
|
+
* Mitigation plans. List `mitigation` on each object type here, with markdown,
|
|
243
|
+
* and keep a row only when `isMitigationPlan` is true.
|
|
244
|
+
*/
|
|
245
|
+
export const MITIGATION_LIST = listSpec('mitigation', 'mitigationType');
|
|
246
|
+
/** `mitigationType` is `response-plan` and the plan names the response-plan schema. */
|
|
247
|
+
export function isMitigationPlan(data) {
|
|
248
|
+
const plan = data.plan;
|
|
249
|
+
const schema = plan && typeof plan === 'object' && !Array.isArray(plan)
|
|
250
|
+
? plan.schemaVersion
|
|
251
|
+
: null;
|
|
252
|
+
return data.mitigationType === 'response-plan' && schema === 'response-plan/v1';
|
|
253
|
+
}
|
|
254
|
+
/** `data.predictionType` is one of the predicted-attack discriminators. */
|
|
255
|
+
export function isPredictedAttack(data) {
|
|
256
|
+
return PREDICTED_ATTACK_LIST.acceptValues.includes(String(data.predictionType ?? ''));
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/estate/contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Asset triage decisions, read with a filtered content list.
|
|
3
|
+
* Walking every triage row is too slow for a drill-down, so the filter is sent to the API.
|
|
4
|
+
*
|
|
5
|
+
* `data.decisionType` is the instance name. In-scope priority is `data.urgency`:
|
|
6
|
+
* ACT_NOW, EXPEDITE, SCHEDULE, MONITOR.
|
|
7
|
+
* Confirmed is `assessmentState` ASSESSED. Missing information is NEEDS_EVIDENCE.
|
|
8
|
+
* Not applicable is `data.decision` NOT_APPLICABLE, and those rows have no urgency.
|
|
9
|
+
*/
|
|
10
|
+
import type { EstateData } from './client';
|
|
11
|
+
export declare const RESPONSE_URGENCIES: readonly ["ACT_NOW", "EXPEDITE", "SCHEDULE", "MONITOR"];
|
|
12
|
+
export type ResponseUrgency = (typeof RESPONSE_URGENCIES)[number];
|
|
13
|
+
export declare const NOT_APPLICABLE = "NOT_APPLICABLE";
|
|
14
|
+
export type TriageStatusCode = 'ASSESSED' | 'NEEDS_EVIDENCE' | 'PENDING';
|
|
15
|
+
export type AssetDecisionQuery = {
|
|
16
|
+
urgency: ResponseUrgency | null;
|
|
17
|
+
notApplicable: boolean;
|
|
18
|
+
status: TriageStatusCode | null;
|
|
19
|
+
};
|
|
20
|
+
export declare function responseUrgency(value: unknown): ResponseUrgency | null;
|
|
21
|
+
/** Assigned urgency. A not-applicable row has none, and `data.decision` is not a priority code. */
|
|
22
|
+
export declare function priorityOf(data: Record<string, unknown> | null | undefined): ResponseUrgency | null;
|
|
23
|
+
/** True when the set holds this object id in either its `object:` or bare form. */
|
|
24
|
+
export declare function hasDecisionId(ids: Set<string>, objectId: string): boolean;
|
|
25
|
+
/** Record ids of the endpoint assets whose asset-triage row matches this decision. */
|
|
26
|
+
export declare function loadAssetDecisionIds(client: EstateData, query: AssetDecisionQuery): Promise<Set<string>>;
|
|
27
|
+
/**
|
|
28
|
+
* Asset object id to its asset-triage urgency.
|
|
29
|
+
* Assets without an urgency are absent. One list of `endpoint-asset` / `triage`, filtered to asset-triage.
|
|
30
|
+
*/
|
|
31
|
+
export declare function loadAssetUrgencies(client: EstateData): Promise<Map<string, ResponseUrgency>>;
|
|
32
|
+
//# sourceMappingURL=decisions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decisions.d.ts","sourceRoot":"","sources":["../../src/estate/decisions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C,eAAO,MAAM,kBAAkB,yDAA0D,CAAC;AAC1F,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAEzE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACjC,CAAC;AASF,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAGtE;AAED,mGAAmG;AACnG,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,GAAG,IAAI,CAGnG;AAWD,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzE;AAID,sFAAsF;AACtF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAUtB;AAwBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAQ5F"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Asset triage decisions, read with a filtered content list.
|
|
3
|
+
* Walking every triage row is too slow for a drill-down, so the filter is sent to the API.
|
|
4
|
+
*
|
|
5
|
+
* `data.decisionType` is the instance name. In-scope priority is `data.urgency`:
|
|
6
|
+
* ACT_NOW, EXPEDITE, SCHEDULE, MONITOR.
|
|
7
|
+
* Confirmed is `assessmentState` ASSESSED. Missing information is NEEDS_EVIDENCE.
|
|
8
|
+
* Not applicable is `data.decision` NOT_APPLICABLE, and those rows have no urgency.
|
|
9
|
+
*/
|
|
10
|
+
import { listContent } from './content';
|
|
11
|
+
import { objectIdBody } from './ids';
|
|
12
|
+
export const RESPONSE_URGENCIES = ['ACT_NOW', 'EXPEDITE', 'SCHEDULE', 'MONITOR'];
|
|
13
|
+
export const NOT_APPLICABLE = 'NOT_APPLICABLE';
|
|
14
|
+
function token(value) {
|
|
15
|
+
return String(value ?? '')
|
|
16
|
+
.trim()
|
|
17
|
+
.toUpperCase()
|
|
18
|
+
.replace(/[\s-]+/g, '_');
|
|
19
|
+
}
|
|
20
|
+
export function responseUrgency(value) {
|
|
21
|
+
const code = token(value);
|
|
22
|
+
return RESPONSE_URGENCIES.includes(code) ? code : null;
|
|
23
|
+
}
|
|
24
|
+
/** Assigned urgency. A not-applicable row has none, and `data.decision` is not a priority code. */
|
|
25
|
+
export function priorityOf(data) {
|
|
26
|
+
if (!data || token(data.decision) === NOT_APPLICABLE)
|
|
27
|
+
return null;
|
|
28
|
+
return responseUrgency(data.urgency);
|
|
29
|
+
}
|
|
30
|
+
function remember(ids, recordId) {
|
|
31
|
+
const id = recordId.trim();
|
|
32
|
+
if (!id)
|
|
33
|
+
return;
|
|
34
|
+
ids.add(id);
|
|
35
|
+
const body = objectIdBody(id);
|
|
36
|
+
ids.add(body);
|
|
37
|
+
if (!id.startsWith('object:'))
|
|
38
|
+
ids.add(`object:${body}`);
|
|
39
|
+
}
|
|
40
|
+
/** True when the set holds this object id in either its `object:` or bare form. */
|
|
41
|
+
export function hasDecisionId(ids, objectId) {
|
|
42
|
+
return ids.has(objectId) || ids.has(objectIdBody(objectId));
|
|
43
|
+
}
|
|
44
|
+
const byQuery = new Map();
|
|
45
|
+
/** Record ids of the endpoint assets whose asset-triage row matches this decision. */
|
|
46
|
+
export function loadAssetDecisionIds(client, query) {
|
|
47
|
+
const key = JSON.stringify(query);
|
|
48
|
+
const hit = byQuery.get(key);
|
|
49
|
+
if (hit)
|
|
50
|
+
return hit;
|
|
51
|
+
const pending = readDecisionIds(client, query).catch((err) => {
|
|
52
|
+
byQuery.delete(key);
|
|
53
|
+
throw err;
|
|
54
|
+
});
|
|
55
|
+
byQuery.set(key, pending);
|
|
56
|
+
return pending;
|
|
57
|
+
}
|
|
58
|
+
async function readDecisionIds(client, query) {
|
|
59
|
+
const filter = [
|
|
60
|
+
{ field: 'data.decisionType', op: 'eq', value: 'asset-triage' },
|
|
61
|
+
];
|
|
62
|
+
if (query.notApplicable)
|
|
63
|
+
filter.push({ field: 'data.decision', op: 'eq', value: NOT_APPLICABLE });
|
|
64
|
+
else if (query.urgency)
|
|
65
|
+
filter.push({ field: 'data.urgency', op: 'eq', value: query.urgency });
|
|
66
|
+
if (query.status === 'ASSESSED' || query.status === 'NEEDS_EVIDENCE') {
|
|
67
|
+
filter.push({ field: 'data.assessmentState', op: 'eq', value: query.status });
|
|
68
|
+
}
|
|
69
|
+
const rows = await listContent(client, {
|
|
70
|
+
objectType: 'endpoint-asset',
|
|
71
|
+
contentType: 'triage',
|
|
72
|
+
filter,
|
|
73
|
+
maxPages: 20,
|
|
74
|
+
});
|
|
75
|
+
const ids = new Set();
|
|
76
|
+
for (const row of rows)
|
|
77
|
+
remember(ids, row.recordId);
|
|
78
|
+
return ids;
|
|
79
|
+
}
|
|
80
|
+
let urgencies = null;
|
|
81
|
+
/**
|
|
82
|
+
* Asset object id to its asset-triage urgency.
|
|
83
|
+
* Assets without an urgency are absent. One list of `endpoint-asset` / `triage`, filtered to asset-triage.
|
|
84
|
+
*/
|
|
85
|
+
export function loadAssetUrgencies(client) {
|
|
86
|
+
if (!urgencies) {
|
|
87
|
+
urgencies = readUrgencies(client).catch((err) => {
|
|
88
|
+
urgencies = null;
|
|
89
|
+
throw err;
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return urgencies;
|
|
93
|
+
}
|
|
94
|
+
async function readUrgencies(client) {
|
|
95
|
+
const rows = await listContent(client, {
|
|
96
|
+
objectType: 'endpoint-asset',
|
|
97
|
+
contentType: 'triage',
|
|
98
|
+
filter: [{ field: 'data.decisionType', op: 'eq', value: 'asset-triage' }],
|
|
99
|
+
maxPages: 20,
|
|
100
|
+
});
|
|
101
|
+
const map = new Map();
|
|
102
|
+
for (const row of rows) {
|
|
103
|
+
const urgency = priorityOf(row.data);
|
|
104
|
+
if (!urgency)
|
|
105
|
+
continue;
|
|
106
|
+
const ids = new Set();
|
|
107
|
+
remember(ids, row.recordId);
|
|
108
|
+
for (const id of ids)
|
|
109
|
+
map.set(id, urgency);
|
|
110
|
+
}
|
|
111
|
+
return map;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=decisions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decisions.js","sourceRoot":"","sources":["../../src/estate/decisions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/estate/ids.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGrD"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** `object:abc` and `abc` name the same record. Comparisons use the part after `object:`. */
|
|
2
|
+
export function objectIdBody(objectId) {
|
|
3
|
+
const raw = objectId.trim();
|
|
4
|
+
return raw.startsWith('object:') ? raw.slice('object:'.length) : raw;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=ids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/estate/ids.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5B,OAAO,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Everything the Pre-AI pages read that is not a map-store working product:
|
|
3
|
+
* the Memorix content lists, the census and analytics records, the triage decisions,
|
|
4
|
+
* and the story pipeline. Pass in the Memorix read client you build yourself.
|
|
5
|
+
* See the package README for which call feeds which page.
|
|
6
|
+
*/
|
|
7
|
+
export { synapixContentTypes, skillsContentTypes, skillsRecordTargets, declaringObjectTypes, otherContractTypes, skillsContract, ownerOf, triageInstance, PREDICTED_ATTACK_LIST, MITIGATION_LIST, isMitigationPlan, isPredictedAttack, } from './contract';
|
|
8
|
+
export type { DataSide, SkillsContent, ContentListSpec } from './contract';
|
|
9
|
+
export type { ContentFilter, ContentRead, EstateData, EstateCatalog, EstateAnalyticsApi, ObjectTypeFunction, } from './client';
|
|
10
|
+
export { objectIdBody } from './ids';
|
|
11
|
+
export { isDocumentEnvelope, contentData, documentMarkdown, readScopeReason, listContent, readContent, listRecordContent, inventoryDisplayName, } from './content';
|
|
12
|
+
export type { ContentData, ContentRow, ListContentInput, ReadContentInput, RecordContentInput, } from './content';
|
|
13
|
+
export { contentTypesOf, loadPackListing, requiredDiscriminator } from './pack';
|
|
14
|
+
export type { PackDiscriminator, PackContentType, PackListing, RequiredDiscriminator } from './pack';
|
|
15
|
+
export { RESPONSE_URGENCIES, NOT_APPLICABLE, responseUrgency, priorityOf, hasDecisionId, loadAssetDecisionIds, loadAssetUrgencies, } from './decisions';
|
|
16
|
+
export type { ResponseUrgency, TriageStatusCode, AssetDecisionQuery } from './decisions';
|
|
17
|
+
export { ESTATE_ANALYTICS_TARGET, readEstateAnalytics, estateAnalyticsSuppliesTallies, TRIAGE_TALLY_LISTS, readSourceCensus, } from './analytics';
|
|
18
|
+
export { TIER0_TARGETS, tier0Value, publishedCount, censusOrLander, parseTier0Census, loadTier0Census, censusEntryById, vulnerabilityEntryForCve, EMPTY_VULNERABILITY_ROWS, EMPTY_ASSET_ROWS, } from './census';
|
|
19
|
+
export type { Tier0Metric, MetricMap, VulnerabilityCensusRow, AssetCensusRow, VulnerabilityCensus, AssetCensus, EstateCensus, Tier0Census, Tier0BoardId, } from './census';
|
|
20
|
+
export { storyTabsFrom, loadStoryTabs, readStoredStory, runStoryFunction, } from './stories';
|
|
21
|
+
export type { StoryTab, StoryTabs, StoredStory, StoryFunctionResult, StoryRun, StoryRunOptions, } from './stories';
|
|
22
|
+
export { PREDICTED_ATTACK_TEMPLATE, predictedAttackReady, tacticColumn, predictionDiagram, predictionStepFrom, predictionStepsFrom, subjectRefOf, } from './predictedAttack';
|
|
23
|
+
export type { PredictionControl, PredictionAsset, PredictionStep, PredictionSource, PredictionDiagram, } from './predictedAttack';
|
|
24
|
+
export { buildLocalStory, loadRecordContents } from './localStories';
|
|
25
|
+
export type { RecordContents, LocalStory } from './localStories';
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/estate/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE3E,YAAY,EACV,aAAa,EACb,WAAW,EACX,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAChF,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAErG,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,UAAU,EACV,aAAa,EACb,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEzF,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,8BAA8B,EAC9B,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,aAAa,EACb,UAAU,EACV,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,WAAW,EACX,SAAS,EACT,sBAAsB,EACtB,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,GACb,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,aAAa,EACb,aAAa,EACb,eAAe,EACf,gBAAgB,GACjB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,QAAQ,EACR,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,QAAQ,EACR,eAAe,GAChB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACrE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Everything the Pre-AI pages read that is not a map-store working product:
|
|
3
|
+
* the Memorix content lists, the census and analytics records, the triage decisions,
|
|
4
|
+
* and the story pipeline. Pass in the Memorix read client you build yourself.
|
|
5
|
+
* See the package README for which call feeds which page.
|
|
6
|
+
*/
|
|
7
|
+
export { synapixContentTypes, skillsContentTypes, skillsRecordTargets, declaringObjectTypes, otherContractTypes, skillsContract, ownerOf, triageInstance, PREDICTED_ATTACK_LIST, MITIGATION_LIST, isMitigationPlan, isPredictedAttack, } from './contract';
|
|
8
|
+
export { objectIdBody } from './ids';
|
|
9
|
+
export { isDocumentEnvelope, contentData, documentMarkdown, readScopeReason, listContent, readContent, listRecordContent, inventoryDisplayName, } from './content';
|
|
10
|
+
export { contentTypesOf, loadPackListing, requiredDiscriminator } from './pack';
|
|
11
|
+
export { RESPONSE_URGENCIES, NOT_APPLICABLE, responseUrgency, priorityOf, hasDecisionId, loadAssetDecisionIds, loadAssetUrgencies, } from './decisions';
|
|
12
|
+
export { ESTATE_ANALYTICS_TARGET, readEstateAnalytics, estateAnalyticsSuppliesTallies, TRIAGE_TALLY_LISTS, readSourceCensus, } from './analytics';
|
|
13
|
+
export { TIER0_TARGETS, tier0Value, publishedCount, censusOrLander, parseTier0Census, loadTier0Census, censusEntryById, vulnerabilityEntryForCve, EMPTY_VULNERABILITY_ROWS, EMPTY_ASSET_ROWS, } from './census';
|
|
14
|
+
export { storyTabsFrom, loadStoryTabs, readStoredStory, runStoryFunction, } from './stories';
|
|
15
|
+
export { PREDICTED_ATTACK_TEMPLATE, predictedAttackReady, tacticColumn, predictionDiagram, predictionStepFrom, predictionStepsFrom, subjectRefOf, } from './predictedAttack';
|
|
16
|
+
export { buildLocalStory, loadRecordContents } from './localStories';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/estate/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAYpB,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AASnB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAGhF,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,UAAU,EACV,aAAa,EACb,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,8BAA8B,EAC9B,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,aAAa,EACb,UAAU,EACV,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAalB,OAAO,EACL,aAAa,EACb,aAAa,EACb,eAAe,EACf,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAUnB,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAS3B,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { EstateCatalog } from './client';
|
|
2
|
+
/** Stored `data` rows per content type for one record. */
|
|
3
|
+
export type RecordContents = ReadonlyMap<string, Record<string, unknown>[]>;
|
|
4
|
+
/**
|
|
5
|
+
* A story drawn in the app from the record's stored content, or what that drawing still needs.
|
|
6
|
+
* `sources` are the content types the drawing read. `gaps` are open questions those rows state.
|
|
7
|
+
*/
|
|
8
|
+
export type LocalStory = {
|
|
9
|
+
status: 'built';
|
|
10
|
+
input: Record<string, unknown>;
|
|
11
|
+
sources: string[];
|
|
12
|
+
gaps: string[];
|
|
13
|
+
drawTemplate?: string;
|
|
14
|
+
} | {
|
|
15
|
+
status: 'missing';
|
|
16
|
+
needs: string[];
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Draw `template` from stored rows. A drawing Storyflowix rejects is reported as missing.
|
|
20
|
+
* Templates with no builder are missing too: only the agent's function or a stored drawing can fill them.
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildLocalStory(template: string, objectType: string, contents: RecordContents): LocalStory;
|
|
23
|
+
/**
|
|
24
|
+
* Every stored content row on one record, by content type.
|
|
25
|
+
* One `listRecords` read per record, with `representation: 'both'`.
|
|
26
|
+
*/
|
|
27
|
+
export declare function loadRecordContents(client: EstateCatalog, objectType: string, recordId: string): Promise<RecordContents>;
|
|
28
|
+
//# sourceMappingURL=localStories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localStories.d.ts","sourceRoot":"","sources":["../../src/estate/localStories.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,0DAA0D;AAC1D,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;AAE5E;;;GAGG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7G;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AA86B3C;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,UAAU,CAoB1G;AASD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,CAAC,CA6BzB"}
|