@stackbilt/ci 0.1.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.
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @stackbilt/ci — GitHub Actions helpers
3
+ *
4
+ * Provides formatting utilities for GitHub Actions output:
5
+ * - Status check annotations
6
+ * - PR comment formatting
7
+ * - GITHUB_OUTPUT helpers
8
+ *
9
+ * These are utility functions used by the GitHub Action workflow.
10
+ * The actual workflow YAML is in the repo root at .github/actions/.
11
+ */
12
+ import type { DriftViolation, GitValidationStatus } from '@stackbilt/types';
13
+ /**
14
+ * Write a GitHub Actions output variable.
15
+ */
16
+ export declare function setOutput(name: string, value: string): void;
17
+ /**
18
+ * Write a GitHub Actions step summary.
19
+ */
20
+ export declare function setSummary(markdown: string): void;
21
+ /**
22
+ * Emit GitHub Actions annotations for drift violations.
23
+ * Shows inline warnings/errors on PR file diffs.
24
+ */
25
+ export declare function annotateDriftViolations(violations: DriftViolation[]): void;
26
+ /**
27
+ * Emit a GitHub Actions annotation for validation status.
28
+ */
29
+ export declare function annotateValidationStatus(status: GitValidationStatus, summary: string): void;
30
+ /**
31
+ * Format a governance check result as a PR comment body.
32
+ */
33
+ export declare function formatPRComment(result: {
34
+ status: string;
35
+ summary: string;
36
+ violations?: DriftViolation[];
37
+ suggestions?: string[];
38
+ score?: number;
39
+ }): string;
40
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAM5E;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAM3D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMjD;AAMD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,IAAI,CAM1E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,MAAM,GACd,IAAI,CAMN;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAsCT"}
package/dist/index.js ADDED
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ /**
3
+ * @stackbilt/ci — GitHub Actions helpers
4
+ *
5
+ * Provides formatting utilities for GitHub Actions output:
6
+ * - Status check annotations
7
+ * - PR comment formatting
8
+ * - GITHUB_OUTPUT helpers
9
+ *
10
+ * These are utility functions used by the GitHub Action workflow.
11
+ * The actual workflow YAML is in the repo root at .github/actions/.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.setOutput = setOutput;
15
+ exports.setSummary = setSummary;
16
+ exports.annotateDriftViolations = annotateDriftViolations;
17
+ exports.annotateValidationStatus = annotateValidationStatus;
18
+ exports.formatPRComment = formatPRComment;
19
+ // ============================================================================
20
+ // GitHub Actions Output
21
+ // ============================================================================
22
+ /**
23
+ * Write a GitHub Actions output variable.
24
+ */
25
+ function setOutput(name, value) {
26
+ const outputFile = process.env.GITHUB_OUTPUT;
27
+ if (outputFile) {
28
+ const fs = require('node:fs');
29
+ fs.appendFileSync(outputFile, `${name}=${value}\n`);
30
+ }
31
+ }
32
+ /**
33
+ * Write a GitHub Actions step summary.
34
+ */
35
+ function setSummary(markdown) {
36
+ const summaryFile = process.env.GITHUB_STEP_SUMMARY;
37
+ if (summaryFile) {
38
+ const fs = require('node:fs');
39
+ fs.appendFileSync(summaryFile, markdown + '\n');
40
+ }
41
+ }
42
+ // ============================================================================
43
+ // Annotations
44
+ // ============================================================================
45
+ /**
46
+ * Emit GitHub Actions annotations for drift violations.
47
+ * Shows inline warnings/errors on PR file diffs.
48
+ */
49
+ function annotateDriftViolations(violations) {
50
+ for (const v of violations) {
51
+ const level = v.severity === 'BLOCKER' || v.severity === 'CRITICAL' ? 'error' : 'warning';
52
+ // GitHub Actions annotation format
53
+ console.log(`::${level} file=${v.file},line=${v.line}::${v.patternName}: ${v.snippet}`);
54
+ }
55
+ }
56
+ /**
57
+ * Emit a GitHub Actions annotation for validation status.
58
+ */
59
+ function annotateValidationStatus(status, summary) {
60
+ if (status === 'FAIL') {
61
+ console.log(`::error::Governance validation failed: ${summary}`);
62
+ }
63
+ else if (status === 'WARN') {
64
+ console.log(`::warning::Governance validation warning: ${summary}`);
65
+ }
66
+ }
67
+ // ============================================================================
68
+ // PR Comment Formatting
69
+ // ============================================================================
70
+ /**
71
+ * Format a governance check result as a PR comment body.
72
+ */
73
+ function formatPRComment(result) {
74
+ const icon = result.status === 'PASS' ? '✅'
75
+ : result.status === 'WARN' ? '⚠️'
76
+ : '❌';
77
+ const lines = [
78
+ `## ${icon} Charter Governance Check`,
79
+ '',
80
+ `**Status:** ${result.status}`,
81
+ `**Summary:** ${result.summary}`,
82
+ ];
83
+ if (result.score !== undefined) {
84
+ lines.push(`**Drift Score:** ${Math.round(result.score * 100)}%`);
85
+ }
86
+ if (result.violations && result.violations.length > 0) {
87
+ lines.push('', '### Violations', '');
88
+ lines.push('| File | Line | Pattern | Snippet |');
89
+ lines.push('|------|------|---------|---------|');
90
+ for (const v of result.violations.slice(0, 20)) {
91
+ lines.push(`| \`${v.file}\` | ${v.line} | ${v.patternName} | \`${v.snippet.slice(0, 50)}\` |`);
92
+ }
93
+ if (result.violations.length > 20) {
94
+ lines.push(`| ... | | | ${result.violations.length - 20} more violations |`);
95
+ }
96
+ }
97
+ if (result.suggestions && result.suggestions.length > 0) {
98
+ lines.push('', '### Suggestions', '');
99
+ for (const s of result.suggestions) {
100
+ lines.push(`- ${s}`);
101
+ }
102
+ }
103
+ lines.push('', '---', '*Generated by [Charter](https://github.com/stackbilt-dev/charter-kit)*');
104
+ return lines.join('\n');
105
+ }
106
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@stackbilt/ci",
3
+ "version": "0.1.1",
4
+ "description": "GitHub Actions adapter for Charter governance checks",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "default": "./dist/index.js"
11
+ }
12
+ },
13
+ "files": [
14
+ "dist",
15
+ "README.md",
16
+ "LICENSE"
17
+ ],
18
+ "engines": {
19
+ "node": ">=18.0.0"
20
+ },
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "https://github.com/Stackbilt-dev/charter.git",
24
+ "directory": "packages/ci"
25
+ },
26
+ "bugs": {
27
+ "url": "https://github.com/Stackbilt-dev/charter/issues"
28
+ },
29
+ "homepage": "https://github.com/Stackbilt-dev/charter#readme",
30
+ "dependencies": {
31
+ "@stackbilt/types": "workspace:*"
32
+ },
33
+ "license": "Apache-2.0"
34
+ }