@greenarmor/ges 1.5.5 → 1.5.7

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 (2) hide show
  1. package/dist/commands/init.js +36 -2
  2. package/package.json +14 -14
@@ -4,6 +4,7 @@ import { banner, divider, blank, success, error, warn, info, step, kv, label, BO
4
4
  import { PROJECT_TYPES, FRAMEWORKS, DEFAULT_FRAMEWORKS, GES_DIR, COMPLIANCE_DIR, SECURITY_DIR, CONTROLS_DIR, POLICIES_DIR, CHECKLISTS_DIR, DOCS_DIR, REPORTS_DIR, } from "@greenarmor/ges-core";
5
5
  import { CLI_VERSION } from "../utils/version.js";
6
6
  import { recordActivity } from "@greenarmor/ges-core";
7
+ import { createGovernanceRecord, addGovernanceRecord } from "@greenarmor/ges-core";
7
8
  import { getPacksForProjectType, getPack, PRIVACY_COUNTRIES, getCountryByCode } from "@greenarmor/ges-policy-engine";
8
9
  import { generateComplianceDocs, generateSecurityDocs, generateConfigJson, generateMetadataJson, generateFrameworkVersionJson, generateScoreJson, } from "@greenarmor/ges-doc-generator";
9
10
  import { generateAllWorkflows } from "@greenarmor/ges-cicd-generator";
@@ -193,6 +194,18 @@ export const initCommand = new Command("init")
193
194
  for (const wf of workflows) {
194
195
  writeFileSync(path.join(process.cwd(), wf.filePath), wf.content);
195
196
  }
197
+ // Genesis governance record — establishes the root of the approval provenance chain
198
+ // using project info collected during init, so audit findings can be assigned immediately.
199
+ const genesisSystemType = mapProjectTypeToSystemType(projectType);
200
+ const genesisRiskLevel = inferRiskLevel(projectType);
201
+ const genesisRecord = createGovernanceRecord({
202
+ system_name: projectName,
203
+ system_description: `Genesis governance record auto-created by ges init for a ${projectType} project. Frameworks: ${selectedFrameworks.join(", ")}. Update this record with approval, risk assessment, and evidence as your project matures.`,
204
+ system_type: genesisSystemType,
205
+ risk_level: genesisRiskLevel,
206
+ created_by: "ges-init",
207
+ });
208
+ addGovernanceRecord(process.cwd(), genesisRecord);
196
209
  blank();
197
210
  step(1, 4, "Creating project structure");
198
211
  success("Project structure created");
@@ -210,6 +223,7 @@ export const initCommand = new Command("init")
210
223
  }
211
224
  success("Control packs installed", packs.map(p => p.id).join(", "));
212
225
  success("GitHub Actions workflows generated");
226
+ success("Genesis governance record created", `${genesisRecord.id} (${genesisSystemType}, ${genesisRiskLevel} risk)`);
213
227
  success("Developer logs directory created", ".dev-logs/");
214
228
  blank();
215
229
  step(2, 4, "Project summary");
@@ -230,8 +244,28 @@ export const initCommand = new Command("init")
230
244
  source: "cli",
231
245
  action: "init",
232
246
  title: `Project initialized: ${projectName}`,
233
- description: `Initialized GESF for ${projectType} project${countryInfo ? ` in ${countryInfo.name}` : ""} with frameworks: ${selectedFrameworks.join(", ")}. Installed ${packs.length} policy packs: ${packs.map(p => p.id).join(", ")}.`,
234
- details: { packs_affected: packs.map(p => p.id), frameworks_added: selectedFrameworks.map((f) => String(f)), country: countryCode },
247
+ description: `Initialized GESF for ${projectType} project${countryInfo ? ` in ${countryInfo.name}` : ""} with frameworks: ${selectedFrameworks.join(", ")}. Installed ${packs.length} policy packs: ${packs.map(p => p.id).join(", ")}. Genesis governance record created: ${genesisRecord.id}.`,
248
+ details: { packs_affected: packs.map(p => p.id), frameworks_added: selectedFrameworks.map((f) => String(f)), country: countryCode, genesis_governance_record_id: genesisRecord.id },
235
249
  });
236
250
  await showNextStepsMenu("init");
237
251
  });
252
+ function mapProjectTypeToSystemType(projectType) {
253
+ switch (projectType) {
254
+ case "ai-application":
255
+ case "mcp-server":
256
+ return "ai-system";
257
+ case "api-backend":
258
+ return "api";
259
+ default:
260
+ return "application";
261
+ }
262
+ }
263
+ function inferRiskLevel(projectType) {
264
+ if (projectType === "healthcare-system" || projectType === "government-system") {
265
+ return "high";
266
+ }
267
+ if (projectType === "blockchain" || projectType === "wallet") {
268
+ return "high";
269
+ }
270
+ return "medium";
271
+ }
package/package.json CHANGED
@@ -3,19 +3,19 @@
3
3
  "ges": "./dist/cli.js"
4
4
  },
5
5
  "dependencies": {
6
- "@greenarmor/ges-audit-engine": "1.5.5",
7
- "@greenarmor/ges-cicd-generator": "1.5.5",
8
- "@greenarmor/ges-compliance-engine": "1.5.5",
9
- "@greenarmor/ges-core": "1.5.5",
10
- "@greenarmor/ges-doc-generator": "1.5.5",
11
- "@greenarmor/ges-git-hooks": "1.5.5",
12
- "@greenarmor/ges-mcp-server": "1.5.5",
13
- "@greenarmor/ges-policy-engine": "1.5.5",
14
- "@greenarmor/ges-report-generator": "1.5.5",
15
- "@greenarmor/ges-rules-engine": "1.5.5",
16
- "@greenarmor/ges-scanner-integration": "1.5.5",
17
- "@greenarmor/ges-scoring-engine": "1.5.5",
18
- "@greenarmor/ges-web-dashboard": "1.5.5",
6
+ "@greenarmor/ges-audit-engine": "1.5.7",
7
+ "@greenarmor/ges-cicd-generator": "1.5.7",
8
+ "@greenarmor/ges-compliance-engine": "1.5.7",
9
+ "@greenarmor/ges-core": "1.5.7",
10
+ "@greenarmor/ges-doc-generator": "1.5.7",
11
+ "@greenarmor/ges-git-hooks": "1.5.7",
12
+ "@greenarmor/ges-mcp-server": "1.5.7",
13
+ "@greenarmor/ges-policy-engine": "1.5.7",
14
+ "@greenarmor/ges-report-generator": "1.5.7",
15
+ "@greenarmor/ges-rules-engine": "1.5.7",
16
+ "@greenarmor/ges-scanner-integration": "1.5.7",
17
+ "@greenarmor/ges-scoring-engine": "1.5.7",
18
+ "@greenarmor/ges-web-dashboard": "1.5.7",
19
19
  "chalk": "^5.6.2",
20
20
  "commander": "^13.0.0"
21
21
  },
@@ -60,7 +60,7 @@
60
60
  },
61
61
  "type": "module",
62
62
  "types": "./dist/index.d.ts",
63
- "version": "1.5.5",
63
+ "version": "1.5.7",
64
64
  "scripts": {
65
65
  "build": "tsc",
66
66
  "clean": "rm -rf dist tsconfig.tsbuildinfo",