ai-saas-guard 0.23.0 → 0.24.0
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 +8 -3
- package/README.zh-CN.md +8 -3
- package/docs/github-action.md +1 -1
- package/docs/npm-publishing.md +3 -3
- package/docs/project-handoff.md +6 -2
- package/docs/repository-trust-hardening.md +77 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -73,9 +73,10 @@ The CLI is published on npm as `ai-saas-guard`, and the GitHub Action is availab
|
|
|
73
73
|
| JSON and SARIF output | Available |
|
|
74
74
|
| Composite GitHub Action | Available |
|
|
75
75
|
| Project config | `.ai-saas-guard.json` rule toggles, severity overrides, and fail thresholds |
|
|
76
|
-
| Versioned Action tags | `v0.
|
|
77
|
-
| npm package | `ai-saas-guard@0.
|
|
76
|
+
| Versioned Action tags | `v0.24.0`, `v0` |
|
|
77
|
+
| npm package | `ai-saas-guard@0.24.0` |
|
|
78
78
|
| npm publishing | Trusted Publisher/OIDC, no long-lived publish token |
|
|
79
|
+
| Repository trust hardening | Branch protection, Dependabot, CodeQL, private vulnerability reporting, secret scanning, and push protection |
|
|
79
80
|
| Runtime hardening | Per-file and total text scan caps, escaped markdown evidence, stricter hosted deployment blockers |
|
|
80
81
|
| Hosted production adapters | GitHub App JWT signing, installation-token request planning, bounded worker execution, and terminal-state cleanup planning |
|
|
81
82
|
| Hosted app skeleton | Node/container HTTP ingress, health route, worker tick, in-memory provider adapters, and deployment plan validation |
|
|
@@ -201,6 +202,10 @@ If `--base` cannot be resolved, `pr-risk` emits `pr-risk.diff-unavailable` inste
|
|
|
201
202
|
|
|
202
203
|
Use [docs/launch-readiness-checklist.md](docs/launch-readiness-checklist.md) when an app is close to inviting real users. It explains how to combine `ai-saas-guard` output with manual two-account authorization testing, Stripe webhook verification, MCP config review, Supabase policy review, deploy checks, rollback planning, and a clear reminder that this is not a full security audit.
|
|
203
204
|
|
|
205
|
+
## Repository Trust Hardening
|
|
206
|
+
|
|
207
|
+
See [docs/repository-trust-hardening.md](docs/repository-trust-hardening.md) for the public repository controls behind this release line: branch protection, required CI checks, Dependabot for npm and GitHub Actions, CodeQL SAST, private vulnerability reporting, secret scanning, and push protection.
|
|
208
|
+
|
|
204
209
|
## Stripe Webhook Replay
|
|
205
210
|
|
|
206
211
|
Use [docs/stripe-webhook-replay.md](docs/stripe-webhook-replay.md) after `check-stripe` flags missing signature verification, idempotency, lifecycle handlers, or entitlement updates. The cookbook maps findings to concrete `stripe listen` and `stripe trigger` commands for checkout success, failed renewal, subscription update, cancellation, refund, duplicate delivery, and out-of-order event review.
|
|
@@ -271,7 +276,7 @@ Use `suppressions` for narrower false-positive handling when one rule is noisy o
|
|
|
271
276
|
|
|
272
277
|
## GitHub Action
|
|
273
278
|
|
|
274
|
-
The repo includes a composite Action. Use `v0` for the latest compatible pre-1.0 Action, a specific release tag such as `v0.
|
|
279
|
+
The repo includes a composite Action. Use `v0` for the latest compatible pre-1.0 Action, a specific release tag such as `v0.24.0` for controlled upgrades, or pin a reviewed commit SHA for stricter supply-chain control:
|
|
275
280
|
|
|
276
281
|
```yaml
|
|
277
282
|
name: ai-saas-guard
|
package/README.zh-CN.md
CHANGED
|
@@ -55,7 +55,7 @@ AI 能很快把一个 SaaS 从想法做成可运行的产品。真正难的是
|
|
|
55
55
|
|
|
56
56
|
这个仓库是公开 GitHub 仓库。
|
|
57
57
|
|
|
58
|
-
CLI 已发布到 npm:`ai-saas-guard@0.
|
|
58
|
+
CLI 已发布到 npm:`ai-saas-guard@0.24.0`。GitHub Action 支持 `v0` 浮动标签,也支持固定版本标签,例如 `v0.24.0`。
|
|
59
59
|
|
|
60
60
|
| 模块 | 状态 |
|
|
61
61
|
| --- | --- |
|
|
@@ -66,9 +66,10 @@ CLI 已发布到 npm:`ai-saas-guard@0.23.0`。GitHub Action 支持 `v0` 浮动
|
|
|
66
66
|
| Markdown PR summary | 已可用 |
|
|
67
67
|
| GitHub Action | 已可用 |
|
|
68
68
|
| 项目配置 | `.ai-saas-guard.json` 支持规则开关、severity 覆盖和 fail threshold |
|
|
69
|
-
| 当前版本 | `0.
|
|
70
|
-
| Action 标签 | `v0.
|
|
69
|
+
| 当前版本 | `0.24.0` |
|
|
70
|
+
| Action 标签 | `v0.24.0`、`v0` |
|
|
71
71
|
| npm 发布 | GitHub Actions Trusted Publisher/OIDC,无需长期 npm token |
|
|
72
|
+
| 仓库可信度加固 | branch protection、Dependabot、CodeQL、private vulnerability reporting、secret scanning 和 push protection |
|
|
72
73
|
| 运行时加固 | 单文件和总扫描文本预算、markdown evidence 转义、更严格的 hosted deployment 阻断 |
|
|
73
74
|
| Hosted production adapters | GitHub App JWT 签名、installation-token 请求规划、有边界的 worker 执行和终态 cleanup 规划 |
|
|
74
75
|
| Hosted app skeleton | Node/container HTTP ingress、health route、worker tick、in-memory provider adapters 和 deployment plan 校验 |
|
|
@@ -134,6 +135,10 @@ node dist/cli.js scan --root /path/to/your-saas
|
|
|
134
135
|
|
|
135
136
|
完整规则请看 [docs/rules.md](docs/rules.md)。
|
|
136
137
|
|
|
138
|
+
## 仓库可信度加固
|
|
139
|
+
|
|
140
|
+
公开仓库的维护和发布控制见 [docs/repository-trust-hardening.md](docs/repository-trust-hardening.md)。当前已经配置 branch protection、required CI checks、Dependabot npm/GitHub Actions 更新、CodeQL SAST、private vulnerability reporting、secret scanning 和 push protection。
|
|
141
|
+
|
|
137
142
|
## PR 风险分流
|
|
138
143
|
|
|
139
144
|
`scan` 可以扫整个仓库,但这个项目更锋利的入口是 PR review。
|
package/docs/github-action.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
`ai-saas-guard` ships as a composite GitHub Action for pull request and code scanning workflows.
|
|
4
4
|
|
|
5
|
-
Use `zr9959/ai-saas-guard@v0` for the latest compatible pre-1.0 Action. Use a specific tag such as `v0.
|
|
5
|
+
Use `zr9959/ai-saas-guard@v0` for the latest compatible pre-1.0 Action. Use a specific tag such as `v0.24.0` or a reviewed commit SHA when reproducibility is more important than automatic minor updates.
|
|
6
6
|
|
|
7
7
|
## PR Summary
|
|
8
8
|
|
package/docs/npm-publishing.md
CHANGED
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
## Current State
|
|
6
6
|
|
|
7
7
|
- Package name: `ai-saas-guard`
|
|
8
|
-
- Current version: `0.
|
|
8
|
+
- Current version: `0.24.0`
|
|
9
9
|
- npm registry state: published at <https://www.npmjs.com/package/ai-saas-guard>
|
|
10
10
|
- First npm-published version: `0.1.1`
|
|
11
|
-
- GitHub Release: `v0.
|
|
11
|
+
- GitHub Release: `v0.24.0`
|
|
12
12
|
- Publish workflow: `.github/workflows/npm-publish.yml`
|
|
13
13
|
- Trusted Publisher: GitHub Actions, `zr9959/ai-saas-guard`, workflow `npm-publish.yml`, allowed action `npm publish`
|
|
14
14
|
- Long-lived npm publish token: not required
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
Use GitHub Actions with npm Trusted Publisher/OIDC:
|
|
19
19
|
|
|
20
|
-
1. Create and review a release tag such as `v0.
|
|
20
|
+
1. Create and review a release tag such as `v0.24.0`.
|
|
21
21
|
2. Publish from the GitHub Release or run the `Publish npm` workflow manually with `ref` set to that tag.
|
|
22
22
|
3. Keep `permissions.id-token: write` in the workflow so npm can exchange the GitHub Actions OIDC identity for a short-lived publish credential.
|
|
23
23
|
4. Run `npm publish --access public` from the workflow. Trusted publishing automatically generates provenance for this public package from this public repository.
|
package/docs/project-handoff.md
CHANGED
|
@@ -69,6 +69,7 @@ Implemented surfaces:
|
|
|
69
69
|
- hosted GitHub App contract helpers and tests for webhook intake order, webhook verification, installation token scoping, durable scan queue idempotency, compact reports, retention limits, uninstall cleanup, repeated cleanup idempotency, scoped deletion planning, operational release gate blocking, provider-independent service runtime orchestration, GitHub App deployment planning, hosted production adapter planning, Node/container app skeleton planning, hosted staging deployment planning, and local staging harness replay
|
|
70
70
|
- GitHub issue templates for bug reports, false positives, false negatives, rule requests, and public-safe security reports
|
|
71
71
|
- CODEOWNERS for source, tests, docs, workflows, Action, and package metadata
|
|
72
|
+
- repository trust hardening with `main` branch protection, required CI status checks, Dependabot for npm and GitHub Actions, CodeQL, private vulnerability reporting, secret scanning, and push protection
|
|
72
73
|
- JSON output
|
|
73
74
|
- SARIF output
|
|
74
75
|
- composite GitHub Action wrapper
|
|
@@ -132,12 +133,15 @@ CI:
|
|
|
132
133
|
- Workflow: `.github/workflows/ci.yml`
|
|
133
134
|
- Runs on pull requests and pushes to `main`
|
|
134
135
|
- Uses `permissions: contents: read`
|
|
135
|
-
-
|
|
136
|
+
- Static workflow checks: `actionlint` and `zizmor`
|
|
137
|
+
- Code scanning workflow: `.github/workflows/codeql.yml`
|
|
138
|
+
- Dependabot config: `.github/dependabot.yml` with weekly schedules, bounded PR volume, and cooldown windows
|
|
139
|
+
- Latest verified run for the repository trust hardening release must succeed before publishing
|
|
136
140
|
|
|
137
141
|
Publishing:
|
|
138
142
|
|
|
139
143
|
- npm package: `ai-saas-guard`
|
|
140
|
-
- Current release line: `v0.
|
|
144
|
+
- Current release line: `v0.24.0`
|
|
141
145
|
- Publish workflow: `.github/workflows/npm-publish.yml`
|
|
142
146
|
- Trusted Publisher: GitHub Actions for `zr9959/ai-saas-guard`, workflow `npm-publish.yml`
|
|
143
147
|
- Long-lived npm publish tokens should not be required.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Repository Trust Hardening
|
|
2
|
+
|
|
3
|
+
This document records the public repository controls used to keep `ai-saas-guard` releases reviewable and safer to consume.
|
|
4
|
+
|
|
5
|
+
These controls do not prove the project is secure. They reduce supply-chain and maintenance risk around the public CLI, GitHub Action, npm package, and future hosted service work.
|
|
6
|
+
|
|
7
|
+
## Branch Protection
|
|
8
|
+
|
|
9
|
+
The `main` branch uses branch protection with:
|
|
10
|
+
|
|
11
|
+
- required status checks before merge
|
|
12
|
+
- strict status check freshness
|
|
13
|
+
- required pull request review for non-admin merges
|
|
14
|
+
- linear history
|
|
15
|
+
- force pushes disabled
|
|
16
|
+
- branch deletion disabled
|
|
17
|
+
|
|
18
|
+
Required status checks:
|
|
19
|
+
|
|
20
|
+
- `test`
|
|
21
|
+
- `actionlint`
|
|
22
|
+
- `zizmor`
|
|
23
|
+
|
|
24
|
+
Maintainer admin bypass is not enforced so emergency release repair remains possible, but normal contribution flow should use pull requests and CI.
|
|
25
|
+
|
|
26
|
+
## Dependency Updates
|
|
27
|
+
|
|
28
|
+
Dependabot is configured in `.github/dependabot.yml`.
|
|
29
|
+
|
|
30
|
+
It covers:
|
|
31
|
+
|
|
32
|
+
- npm dependencies
|
|
33
|
+
- GitHub Actions
|
|
34
|
+
|
|
35
|
+
The schedule is weekly with cooldown windows and a small open pull request limit. This keeps update noise low while still surfacing security and maintenance updates.
|
|
36
|
+
|
|
37
|
+
Dependabot security updates and vulnerability alerts are enabled in repository settings.
|
|
38
|
+
|
|
39
|
+
## CodeQL
|
|
40
|
+
|
|
41
|
+
CodeQL is configured in `.github/workflows/codeql.yml`.
|
|
42
|
+
|
|
43
|
+
The workflow:
|
|
44
|
+
|
|
45
|
+
- runs on pull requests
|
|
46
|
+
- runs on pushes to `main`
|
|
47
|
+
- runs on a weekly schedule
|
|
48
|
+
- analyzes JavaScript and TypeScript
|
|
49
|
+
- uses `build-mode: none`
|
|
50
|
+
- uses least-privilege permissions: repository contents read, Actions metadata read, and security event upload
|
|
51
|
+
- pins the CodeQL Action by commit SHA
|
|
52
|
+
|
|
53
|
+
CodeQL is an additional SAST signal. It does not replace `ai-saas-guard`'s release gate, local tests, workflow checks, self-scan, dependency audit, package inspection, or human review.
|
|
54
|
+
|
|
55
|
+
## Vulnerability Intake
|
|
56
|
+
|
|
57
|
+
The repository has:
|
|
58
|
+
|
|
59
|
+
- `SECURITY.md`
|
|
60
|
+
- private vulnerability reporting enabled
|
|
61
|
+
- secret scanning enabled
|
|
62
|
+
- push protection enabled
|
|
63
|
+
|
|
64
|
+
Public issues should not include real credentials, customer data, private source code, or production URLs.
|
|
65
|
+
|
|
66
|
+
## Release Impact
|
|
67
|
+
|
|
68
|
+
Every public release should keep these controls intact. If a release changes workflows, package metadata, Action behavior, or hosted service boundaries, the release notes should include fresh evidence for:
|
|
69
|
+
|
|
70
|
+
- local tests
|
|
71
|
+
- GitHub CI
|
|
72
|
+
- `actionlint`
|
|
73
|
+
- `zizmor`
|
|
74
|
+
- self-scan JSON and SARIF
|
|
75
|
+
- dependency audit
|
|
76
|
+
- npm package inspection
|
|
77
|
+
- packaged CLI smoke test
|