@ai-dossier/core 1.4.0 → 1.4.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"risk-level-consistency.d.ts","sourceRoot":"","sources":["../../../src/linter/rules/risk-level-consistency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,QAAQ,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"risk-level-consistency.d.ts","sourceRoot":"","sources":["../../../src/linter/rules/risk-level-consistency.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,QAAQ,EAAE,MAAM,UAAU,CAAC;AAWzD,eAAO,MAAM,wBAAwB,EAAE,QAuDtC,CAAC"}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.riskLevelConsistencyRule = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Risk factors whose consequences are hard to undo — merging to a shared branch,
|
|
6
|
+
* deleting files, changing cloud resources. A dossier declaring one of these is
|
|
7
|
+
* describing a high-consequence action, whatever level it claims.
|
|
8
|
+
*/
|
|
9
|
+
const HIGH_CONSEQUENCE_FACTORS = ['merges_code', 'deletes_files', 'modifies_cloud_resources'];
|
|
10
|
+
const RISK_RANK = { low: 0, medium: 1, high: 2, critical: 3 };
|
|
4
11
|
exports.riskLevelConsistencyRule = {
|
|
5
12
|
id: 'risk-level-consistency',
|
|
6
13
|
description: 'Risk level should be consistent with destructive operations and external references',
|
|
@@ -18,6 +25,23 @@ exports.riskLevelConsistencyRule = {
|
|
|
18
25
|
field: 'risk_level',
|
|
19
26
|
});
|
|
20
27
|
}
|
|
28
|
+
// A dossier that declares it merges code, deletes files, or changes cloud
|
|
29
|
+
// resources but rates itself below "high" is under-describing its consequences.
|
|
30
|
+
// This is deliberately silent about requires_approval: running a high-consequence
|
|
31
|
+
// dossier autonomously is a legitimate policy choice, and conflating the two would
|
|
32
|
+
// flag correctly-configured workflows forever.
|
|
33
|
+
if (Array.isArray(risk_factors) && typeof risk_level === 'string') {
|
|
34
|
+
const declared = risk_factors.filter((f) => HIGH_CONSEQUENCE_FACTORS.includes(f));
|
|
35
|
+
const rank = RISK_RANK[risk_level.toLowerCase()];
|
|
36
|
+
if (declared.length > 0 && rank !== undefined && rank < RISK_RANK.high) {
|
|
37
|
+
diagnostics.push({
|
|
38
|
+
ruleId: 'risk-level-consistency',
|
|
39
|
+
severity: 'warning',
|
|
40
|
+
message: `risk_level is "${risk_level}" but risk_factors declares ${declared.map((f) => `"${f}"`).join(', ')} — consider "high"`,
|
|
41
|
+
field: 'risk_level',
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
21
45
|
if (Array.isArray(external_references) && external_references.length > 0) {
|
|
22
46
|
if (!Array.isArray(risk_factors) || !risk_factors.includes('network_access')) {
|
|
23
47
|
diagnostics.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"risk-level-consistency.js","sourceRoot":"","sources":["../../../src/linter/rules/risk-level-consistency.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"risk-level-consistency.js","sourceRoot":"","sources":["../../../src/linter/rules/risk-level-consistency.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACH,MAAM,wBAAwB,GAAG,CAAC,aAAa,EAAE,eAAe,EAAE,0BAA0B,CAAC,CAAC;AAE9F,MAAM,SAAS,GAA2B,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AAEzE,QAAA,wBAAwB,GAAa;IAChD,EAAE,EAAE,wBAAwB;IAC5B,WAAW,EACT,qFAAqF;IACvF,eAAe,EAAE,SAAS;IAC1B,GAAG,CAAC,OAAO;QACT,MAAM,EAAE,UAAU,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,YAAY,EAAE,GAC7E,OAAO,CAAC,WAAW,CAAC;QACtB,MAAM,WAAW,GAAqB,EAAE,CAAC;QAEzC,IACE,UAAU,KAAK,KAAK;YACpB,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC;YACrC,sBAAsB,CAAC,MAAM,GAAG,CAAC,EACjC,CAAC;YACD,WAAW,CAAC,IAAI,CAAC;gBACf,MAAM,EAAE,wBAAwB;gBAChC,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,2BAA2B,sBAAsB,CAAC,MAAM,kEAAkE;gBACnI,KAAK,EAAE,YAAY;aACpB,CAAC,CAAC;QACL,CAAC;QAED,0EAA0E;QAC1E,gFAAgF;QAChF,kFAAkF;QAClF,mFAAmF;QACnF,+CAA+C;QAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YAClE,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAW,CAAC,CAAC,CAAC;YAC5F,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;YACjD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;gBACvE,WAAW,CAAC,IAAI,CAAC;oBACf,MAAM,EAAE,wBAAwB;oBAChC,QAAQ,EAAE,SAAS;oBACnB,OAAO,EAAE,kBAAkB,UAAU,+BAA+B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB;oBAChI,KAAK,EAAE,YAAY;iBACpB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC7E,WAAW,CAAC,IAAI,CAAC;oBACf,MAAM,EAAE,wBAAwB;oBAChC,QAAQ,EAAE,SAAS;oBACnB,OAAO,EACL,iFAAiF;oBACnF,KAAK,EAAE,cAAc;iBACtB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;CACF,CAAC"}
|
package/package.json
CHANGED