@pylabmit/agent-cmdb 1.5.0 → 1.5.1
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 +11 -3
- package/dist/brain.d.ts.map +1 -1
- package/dist/brain.js +119 -44
- package/dist/brain.js.map +1 -1
- package/dist/cli.js +76 -2
- package/dist/cli.js.map +1 -1
- package/dist/engine.d.ts +1 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +1 -1
- package/dist/engine.js.map +1 -1
- package/dist/interface.d.ts +1 -1
- package/dist/interface.d.ts.map +1 -1
- package/dist/interface.js +2 -2
- package/dist/interface.js.map +1 -1
- package/dist/loader.js +2 -1
- package/dist/loader.js.map +1 -1
- package/dist/policy-engine.js +7 -7
- package/dist/policy-engine.js.map +1 -1
- package/dist/preflight.d.ts +3 -3
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +116 -20
- package/dist/preflight.js.map +1 -1
- package/dist/route-resolver.d.ts.map +1 -1
- package/dist/route-resolver.js +7 -6
- package/dist/route-resolver.js.map +1 -1
- package/dist/store.d.ts +1 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +61 -10
- package/dist/store.js.map +1 -1
- package/dist/types.d.ts +9 -4
- package/dist/types.d.ts.map +1 -1
- package/package.json +21 -1
- package/dist/agent-preflight.d.ts +0 -6
- package/dist/agent-preflight.d.ts.map +0 -1
- package/dist/agent-preflight.js +0 -55
- package/dist/agent-preflight.js.map +0 -1
- package/dist/preflight-action.d.ts +0 -3
- package/dist/preflight-action.d.ts.map +0 -1
- package/dist/preflight-action.js +0 -101
- package/dist/preflight-action.js.map +0 -1
package/dist/types.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export interface SourceRoute {
|
|
|
18
18
|
intent: string;
|
|
19
19
|
sources: string[];
|
|
20
20
|
notes?: string;
|
|
21
|
+
blockOnStale?: boolean;
|
|
21
22
|
}
|
|
22
23
|
export interface AgentProfile {
|
|
23
24
|
id: string;
|
|
@@ -82,7 +83,6 @@ export interface SourceRouteRequest {
|
|
|
82
83
|
profile: string;
|
|
83
84
|
intent: string;
|
|
84
85
|
freshness?: SourceFreshnessInput[];
|
|
85
|
-
now?: string;
|
|
86
86
|
}
|
|
87
87
|
export interface SourceFreshnessInput {
|
|
88
88
|
sourceId: string;
|
|
@@ -102,6 +102,7 @@ export interface ResolvedSourceRoute {
|
|
|
102
102
|
sources: SourceRef[];
|
|
103
103
|
guardrails: string[];
|
|
104
104
|
notes?: string;
|
|
105
|
+
blockOnStale: boolean;
|
|
105
106
|
staleSourceIds: string[];
|
|
106
107
|
freshness: SourceFreshnessStatus[];
|
|
107
108
|
}
|
|
@@ -135,7 +136,6 @@ export interface PreflightRequest extends PolicyRequest {
|
|
|
135
136
|
intent?: string;
|
|
136
137
|
dryRun?: boolean;
|
|
137
138
|
freshness?: SourceFreshnessInput[];
|
|
138
|
-
now?: string;
|
|
139
139
|
}
|
|
140
140
|
export interface PreflightResult {
|
|
141
141
|
allowed: boolean;
|
|
@@ -170,6 +170,7 @@ export interface AgentCmdbReport {
|
|
|
170
170
|
}
|
|
171
171
|
export interface EvidenceRecord {
|
|
172
172
|
id: string;
|
|
173
|
+
prevHash: string;
|
|
173
174
|
profile: string;
|
|
174
175
|
source: string;
|
|
175
176
|
intent: string;
|
|
@@ -178,8 +179,9 @@ export interface EvidenceRecord {
|
|
|
178
179
|
capturedAt: string;
|
|
179
180
|
links?: string[];
|
|
180
181
|
tags?: string[];
|
|
182
|
+
warnings?: string[];
|
|
181
183
|
}
|
|
182
|
-
export type EvidenceInput = Omit<EvidenceRecord, 'id'>;
|
|
184
|
+
export type EvidenceInput = Omit<EvidenceRecord, 'id' | 'prevHash' | 'warnings'>;
|
|
183
185
|
export interface EvidenceQuery {
|
|
184
186
|
profile?: string;
|
|
185
187
|
source?: string;
|
|
@@ -189,6 +191,7 @@ export interface EvidenceQuery {
|
|
|
189
191
|
}
|
|
190
192
|
export interface ChangeRecord {
|
|
191
193
|
id: string;
|
|
194
|
+
prevHash: string;
|
|
192
195
|
target: string;
|
|
193
196
|
targetType: ObjectKind;
|
|
194
197
|
action: ChangeAction;
|
|
@@ -197,8 +200,9 @@ export interface ChangeRecord {
|
|
|
197
200
|
changedAt: string;
|
|
198
201
|
before?: unknown;
|
|
199
202
|
after?: unknown;
|
|
203
|
+
warnings?: string[];
|
|
200
204
|
}
|
|
201
|
-
export type ChangeInput = Omit<ChangeRecord, 'id'>;
|
|
205
|
+
export type ChangeInput = Omit<ChangeRecord, 'id' | 'prevHash' | 'warnings'>;
|
|
202
206
|
export interface ChangeQuery {
|
|
203
207
|
target?: string;
|
|
204
208
|
targetType?: ObjectKind;
|
|
@@ -227,6 +231,7 @@ export interface BrainReadResult {
|
|
|
227
231
|
content: string;
|
|
228
232
|
ageMs: number;
|
|
229
233
|
stale: boolean;
|
|
234
|
+
warnings?: string[];
|
|
230
235
|
}
|
|
231
236
|
export interface BrainWriteInput {
|
|
232
237
|
entityId: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,mBAAmB,CAAC;AAClE,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;AACnG,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AACvE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AACnD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;AAChD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC1F,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAElF,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;IAChE,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pylabmit/agent-cmdb",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.1",
|
|
4
4
|
"description": "Policy enforcement and memory for AI agents: preflight checks, source routing, and audit trails before your agent acts.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -45,6 +45,26 @@
|
|
|
45
45
|
"./freshness": {
|
|
46
46
|
"import": "./dist/freshness.js",
|
|
47
47
|
"types": "./dist/freshness.d.ts"
|
|
48
|
+
},
|
|
49
|
+
"./types": {
|
|
50
|
+
"import": "./dist/types.js",
|
|
51
|
+
"types": "./dist/types.d.ts"
|
|
52
|
+
},
|
|
53
|
+
"./preflight": {
|
|
54
|
+
"import": "./dist/preflight.js",
|
|
55
|
+
"types": "./dist/preflight.d.ts"
|
|
56
|
+
},
|
|
57
|
+
"./store": {
|
|
58
|
+
"import": "./dist/store.js",
|
|
59
|
+
"types": "./dist/store.d.ts"
|
|
60
|
+
},
|
|
61
|
+
"./policy-engine": {
|
|
62
|
+
"import": "./dist/policy-engine.js",
|
|
63
|
+
"types": "./dist/policy-engine.d.ts"
|
|
64
|
+
},
|
|
65
|
+
"./route-resolver": {
|
|
66
|
+
"import": "./dist/route-resolver.js",
|
|
67
|
+
"types": "./dist/route-resolver.d.ts"
|
|
48
68
|
}
|
|
49
69
|
},
|
|
50
70
|
"files": [
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { PreflightResult } from './types.js';
|
|
2
|
-
export declare function runAgentPreflight(action: string, profile: string, tool?: string, intent?: string, options?: {
|
|
3
|
-
configPath?: string;
|
|
4
|
-
dryRun?: boolean;
|
|
5
|
-
}): Promise<PreflightResult>;
|
|
6
|
-
//# sourceMappingURL=agent-preflight.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-preflight.d.ts","sourceRoot":"","sources":["../src/agent-preflight.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACtD,OAAO,CAAC,eAAe,CAAC,CAkD1B"}
|
package/dist/agent-preflight.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { createAgentCmdb } from './interface.js';
|
|
2
|
-
import { multiAgentExampleControlPlanePath } from './loader.js';
|
|
3
|
-
export async function runAgentPreflight(action, profile, tool, intent, options = {}) {
|
|
4
|
-
const normalizedAction = requireNonEmptyString(action, 'Agent preflight action');
|
|
5
|
-
const normalizedProfile = requireNonEmptyString(profile, 'Agent preflight profile');
|
|
6
|
-
const normalizedTool = tool === undefined ? undefined : requireNonEmptyString(tool, 'Agent preflight tool');
|
|
7
|
-
const normalizedIntent = intent === undefined ? undefined : requireNonEmptyString(intent, 'Agent preflight intent');
|
|
8
|
-
const cmdb = createAgentCmdb({
|
|
9
|
-
configPath: options.configPath ?? multiAgentExampleControlPlanePath
|
|
10
|
-
});
|
|
11
|
-
const result = cmdb.preflight({
|
|
12
|
-
action: normalizedAction,
|
|
13
|
-
profile: normalizedProfile,
|
|
14
|
-
tool: normalizedTool,
|
|
15
|
-
intent: normalizedIntent,
|
|
16
|
-
dryRun: options.dryRun
|
|
17
|
-
});
|
|
18
|
-
const now = new Date().toISOString();
|
|
19
|
-
if (result.dryRun) {
|
|
20
|
-
return result;
|
|
21
|
-
}
|
|
22
|
-
if (result.decision.effect === 'deny') {
|
|
23
|
-
await cmdb.logEvidence({
|
|
24
|
-
profile: normalizedProfile,
|
|
25
|
-
source: 'agent-cmdb-preflight',
|
|
26
|
-
intent: normalizedIntent ?? normalizedAction,
|
|
27
|
-
summary: `Agent preflight ${result.decision.effect}: ${result.decision.ruleId}. ${result.decision.reason}`,
|
|
28
|
-
trust: 'high',
|
|
29
|
-
capturedAt: now,
|
|
30
|
-
tags: ['agent-preflight', result.decision.effect, result.decision.ruleId]
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
await cmdb.logChange({
|
|
34
|
-
target: result.decision.ruleId,
|
|
35
|
-
targetType: 'policy',
|
|
36
|
-
action: 'verify',
|
|
37
|
-
actor: 'agent-preflight',
|
|
38
|
-
reason: `Preflight ${result.decision.effect} for ${normalizedProfile}/${normalizedAction}.`,
|
|
39
|
-
changedAt: now,
|
|
40
|
-
after: {
|
|
41
|
-
allowed: result.allowed,
|
|
42
|
-
approvalRequired: result.approvalRequired,
|
|
43
|
-
routeExecutable: result.routeExecutable,
|
|
44
|
-
decision: result.decision
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
return result;
|
|
48
|
-
}
|
|
49
|
-
function requireNonEmptyString(value, label) {
|
|
50
|
-
if (typeof value !== 'string' || value.trim().length === 0) {
|
|
51
|
-
throw new Error(`${label} must be a non-empty string.`);
|
|
52
|
-
}
|
|
53
|
-
return value;
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=agent-preflight.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-preflight.js","sourceRoot":"","sources":["../src/agent-preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC;AAGhE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAc,EACd,OAAe,EACf,IAAa,EACb,MAAe,EACf,UAAqD,EAAE;IAEvD,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACjF,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;IACpF,MAAM,cAAc,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IAC5G,MAAM,gBAAgB,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAEpH,MAAM,IAAI,GAAG,eAAe,CAAC;QAC3B,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,iCAAiC;KACpE,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5B,MAAM,EAAE,gBAAgB;QACxB,OAAO,EAAE,iBAAiB;QAC1B,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,gBAAgB;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QACtC,MAAM,IAAI,CAAC,WAAW,CAAC;YACrB,OAAO,EAAE,iBAAiB;YAC1B,MAAM,EAAE,sBAAsB;YAC9B,MAAM,EAAE,gBAAgB,IAAI,gBAAgB;YAC5C,OAAO,EAAE,mBAAmB,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC1G,KAAK,EAAE,MAAM;YACb,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,CAAC,iBAAiB,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,CAAC,SAAS,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;QAC9B,UAAU,EAAE,QAAQ;QACpB,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,iBAAiB;QACxB,MAAM,EAAE,aAAa,MAAM,CAAC,QAAQ,CAAC,MAAM,QAAQ,iBAAiB,IAAI,gBAAgB,GAAG;QAC3F,SAAS,EAAE,GAAG;QACd,KAAK,EAAE;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B;KACF,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc,EAAE,KAAa;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,8BAA8B,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"preflight-action.d.ts","sourceRoot":"","sources":["../src/preflight-action.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAkB,gBAAgB,EAAE,eAAe,EAAuB,MAAM,YAAY,CAAC;AAEvH,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,GAAG,eAAe,CA+CtG"}
|
package/dist/preflight-action.js
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { evaluatePolicy, normalizePolicyRequest } from './policy-engine.js';
|
|
2
|
-
import { inspectProfile, resolveSourceRoute } from './route-resolver.js';
|
|
3
|
-
export function preflightAction(controlPlane, request) {
|
|
4
|
-
const normalizedRequest = normalizePreflightRequest(request);
|
|
5
|
-
const decision = evaluatePolicy(controlPlane, normalizedRequest);
|
|
6
|
-
let finalDecision = decision;
|
|
7
|
-
let route;
|
|
8
|
-
const warnings = [];
|
|
9
|
-
if (normalizedRequest.intent) {
|
|
10
|
-
try {
|
|
11
|
-
route = resolveSourceRoute(controlPlane, {
|
|
12
|
-
profile: normalizedRequest.profile,
|
|
13
|
-
intent: normalizedRequest.intent,
|
|
14
|
-
freshness: normalizedRequest.freshness,
|
|
15
|
-
now: normalizedRequest.now
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
catch (error) {
|
|
19
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
20
|
-
const reason = `Route resolution failed: ${message}`;
|
|
21
|
-
warnings.push(reason);
|
|
22
|
-
if (decision.effect === 'allow') {
|
|
23
|
-
finalDecision = {
|
|
24
|
-
effect: 'deny',
|
|
25
|
-
ruleId: 'route-resolution-failed',
|
|
26
|
-
code: 'route_resolution_failed',
|
|
27
|
-
reason,
|
|
28
|
-
profile: normalizedRequest.profile,
|
|
29
|
-
action: normalizedRequest.action,
|
|
30
|
-
tool: normalizedRequest.tool,
|
|
31
|
-
canEscalate: false,
|
|
32
|
-
suggestedAlternative: 'Fix the source route for this profile and intent before executing.'
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
const profile = inspectProfile(controlPlane, normalizedRequest.profile);
|
|
38
|
-
return {
|
|
39
|
-
allowed: finalDecision.effect === 'allow',
|
|
40
|
-
approvalRequired: finalDecision.effect === 'approval_required',
|
|
41
|
-
decision: finalDecision,
|
|
42
|
-
route,
|
|
43
|
-
routeExecutable: finalDecision.effect === 'allow' && Boolean(route),
|
|
44
|
-
guardrails: route?.guardrails ?? profile.guardrails,
|
|
45
|
-
warnings,
|
|
46
|
-
dryRun: Boolean(normalizedRequest.dryRun)
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
function normalizePreflightRequest(request) {
|
|
50
|
-
const normalizedPolicy = normalizePolicyRequest(request);
|
|
51
|
-
const record = requireRecord(request, 'Preflight request');
|
|
52
|
-
const intent = record.intent === undefined
|
|
53
|
-
? undefined
|
|
54
|
-
: requireNonEmptyString(record.intent, 'Preflight request intent', 'when provided');
|
|
55
|
-
const dryRun = record.dryRun === undefined ? undefined : requireBoolean(record.dryRun, 'Preflight request dryRun');
|
|
56
|
-
const freshness = normalizeFreshness(record.freshness);
|
|
57
|
-
const now = record.now === undefined
|
|
58
|
-
? undefined
|
|
59
|
-
: requireNonEmptyString(record.now, 'Preflight request now', 'when provided');
|
|
60
|
-
return {
|
|
61
|
-
...normalizedPolicy,
|
|
62
|
-
intent,
|
|
63
|
-
dryRun,
|
|
64
|
-
freshness,
|
|
65
|
-
now
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
function normalizeFreshness(value) {
|
|
69
|
-
if (value === undefined)
|
|
70
|
-
return undefined;
|
|
71
|
-
if (!Array.isArray(value)) {
|
|
72
|
-
throw new Error('Preflight request freshness must be an array.');
|
|
73
|
-
}
|
|
74
|
-
return value.map((entry) => {
|
|
75
|
-
const record = requireRecord(entry, 'Preflight freshness input');
|
|
76
|
-
return {
|
|
77
|
-
sourceId: requireNonEmptyString(record.sourceId, 'Preflight freshness sourceId'),
|
|
78
|
-
lastUpdated: requireNonEmptyString(record.lastUpdated, 'Preflight freshness lastUpdated')
|
|
79
|
-
};
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
function requireBoolean(value, label) {
|
|
83
|
-
if (typeof value !== 'boolean') {
|
|
84
|
-
throw new Error(`${label} must be a boolean.`);
|
|
85
|
-
}
|
|
86
|
-
return value;
|
|
87
|
-
}
|
|
88
|
-
function requireRecord(value, label) {
|
|
89
|
-
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
90
|
-
throw new Error(`${label} must be an object.`);
|
|
91
|
-
}
|
|
92
|
-
return value;
|
|
93
|
-
}
|
|
94
|
-
function requireNonEmptyString(value, label, suffix) {
|
|
95
|
-
if (typeof value !== 'string' || value.trim().length === 0) {
|
|
96
|
-
const suffixText = suffix ? ` ${suffix}` : '';
|
|
97
|
-
throw new Error(`${label} must be a non-empty string${suffixText}.`);
|
|
98
|
-
}
|
|
99
|
-
return value;
|
|
100
|
-
}
|
|
101
|
-
//# sourceMappingURL=preflight-action.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"preflight-action.js","sourceRoot":"","sources":["../src/preflight-action.ts"],"names":[],"mappings":"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"}
|