@ogygie/cli 0.20.0 → 0.22.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/dist/cli.js CHANGED
@@ -21465,6 +21465,30 @@ var governedChecksumsByVersion = {
21465
21465
  "scripts/verify-specs.ts": "92d54aa5111fe0753aa9d6eb3b4ac89a7f24fa06578ea3369ccb0dc9d4c3dd88",
21466
21466
  "tsconfig.base.json": "0f8919e9ed8bbc88e0308fa2fa91471dabb18d1df721bd78c04076597eba89a2"
21467
21467
  },
21468
+ "0.21.0": {
21469
+ ".github/workflows/ogygie-gates.yml": "c1a05da24a2af4f68bbaae42c17e3dfba88ee44a2411291ce1163a2695b62f36",
21470
+ "AGENTS.md": "8356696ef27c53cad164ab0086163454348b18852b121eca9fb050fb73e625f0",
21471
+ "CLAUDE.md": "785ee8d90e368806d8cf0b4d84a15f29d1dc961168bda86cf1a6c60a923c8c9b",
21472
+ "scripts/lint-interdits.ts": "4644e1aaabc1d19ed42a0bdf8e2e55b9451f789d87d59754bce3432de7c357e7",
21473
+ "scripts/ogygie-design-brief.ts": "aba1585717b30808dd0bc8930a37a1ad2d83ee6869f969dbd06ca595e37a4a89",
21474
+ "scripts/ogygie-impact.ts": "f06cc8b4a46ddfbcfb32ba747c2454548ca49918123d04ab13d210b4a89c1fb9",
21475
+ "scripts/verify-contracts.ts": "9cd64c88dcc3b54b65bf1e1b7a68eb00353ee16f2a9ce8bca3c49ba063c2a08b",
21476
+ "scripts/verify-manifest.ts": "6c448fa3a19b87666f686ca57c6ca834d9e169b1380e4fe6e4c19b995bf94f3c",
21477
+ "scripts/verify-specs.ts": "92d54aa5111fe0753aa9d6eb3b4ac89a7f24fa06578ea3369ccb0dc9d4c3dd88",
21478
+ "tsconfig.base.json": "0f8919e9ed8bbc88e0308fa2fa91471dabb18d1df721bd78c04076597eba89a2"
21479
+ },
21480
+ "0.22.0": {
21481
+ ".github/workflows/ogygie-gates.yml": "c1a05da24a2af4f68bbaae42c17e3dfba88ee44a2411291ce1163a2695b62f36",
21482
+ "AGENTS.md": "8356696ef27c53cad164ab0086163454348b18852b121eca9fb050fb73e625f0",
21483
+ "CLAUDE.md": "785ee8d90e368806d8cf0b4d84a15f29d1dc961168bda86cf1a6c60a923c8c9b",
21484
+ "scripts/lint-interdits.ts": "4644e1aaabc1d19ed42a0bdf8e2e55b9451f789d87d59754bce3432de7c357e7",
21485
+ "scripts/ogygie-design-brief.ts": "aba1585717b30808dd0bc8930a37a1ad2d83ee6869f969dbd06ca595e37a4a89",
21486
+ "scripts/ogygie-impact.ts": "f06cc8b4a46ddfbcfb32ba747c2454548ca49918123d04ab13d210b4a89c1fb9",
21487
+ "scripts/verify-contracts.ts": "9cd64c88dcc3b54b65bf1e1b7a68eb00353ee16f2a9ce8bca3c49ba063c2a08b",
21488
+ "scripts/verify-manifest.ts": "6c448fa3a19b87666f686ca57c6ca834d9e169b1380e4fe6e4c19b995bf94f3c",
21489
+ "scripts/verify-specs.ts": "92d54aa5111fe0753aa9d6eb3b4ac89a7f24fa06578ea3369ccb0dc9d4c3dd88",
21490
+ "tsconfig.base.json": "0f8919e9ed8bbc88e0308fa2fa91471dabb18d1df721bd78c04076597eba89a2"
21491
+ },
21468
21492
  "0.3.0": {
21469
21493
  ".github/workflows/ogygie-gates.yml": "48c40efe9fe66dd0f9c3b94287026d80eae9afd6782b5833fdf8846d8662babf",
21470
21494
  "AGENTS.md": "ca73ab619d8c55fac11858d815bf5fbab6537ecebe7ae4123cbdeb3e3e36bf1a",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ogygie/cli",
3
- "version": "0.20.0",
3
+ "version": "0.22.0",
4
4
  "description": "Ogygie framework CLI: deterministic scaffolding (init), governed-file upgrades (upgrade) and lockstep verification (check) for Ogygie products.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -22,7 +22,7 @@
22
22
  "access": "public"
23
23
  },
24
24
  "devDependencies": {
25
- "@ogygie/core": "0.20.0",
25
+ "@ogygie/core": "0.22.0",
26
26
  "@types/node": "^24.0.0",
27
27
  "esbuild": "^0.28.0",
28
28
  "tsx": "^4.20.0",
@@ -7,12 +7,10 @@ on:
7
7
  branches: [main, "spec/**"]
8
8
  pull_request:
9
9
 
10
- # Least-privilege token: gitleaks-action reads the PR's commit list on
11
- # pull_request events; PR comments stay disabled so no write scope is needed.
12
- # The one job that writes (speculate) raises its own permission, alone.
10
+ # Least-privilege token: the gates only read the checkout. The one job that
11
+ # writes (speculate) raises its own permission, alone.
13
12
  permissions:
14
13
  contents: read
15
- pull-requests: read
16
14
 
17
15
  jobs:
18
16
  verifier:
@@ -35,10 +33,22 @@ jobs:
35
33
  - run: pnpm lint # any, ts-ignore, raw-db, dangerouslySetInnerHTML
36
34
  - run: pnpm test
37
35
  # Security
38
- - uses: gitleaks/gitleaks-action@v2 # committed secrets
39
- env:
40
- GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
41
- GITLEAKS_ENABLE_COMMENTS: "false"
36
+ # Committed secrets: the gitleaks binary, pinned by version and checksum.
37
+ # Its GitHub action asks for a licence key as soon as the repository
38
+ # belongs to an organization; the binary asks for nothing. A pull request
39
+ # scans its own commits and a push the ones it brings, so a leak already
40
+ # dealt with in the past does not keep the gate red.
41
+ - env:
42
+ GITLEAKS_VERSION: "8.30.1"
43
+ GITLEAKS_SHA256: "551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb"
44
+ RANGE: "${{ github.event_name == 'pull_request' && format('{0}..{1}', github.event.pull_request.base.sha, github.event.pull_request.head.sha) || format('{0}..{1}', github.event.before, github.sha) }}"
45
+ run: |
46
+ curl -sSLo "$RUNNER_TEMP/gitleaks.tar.gz" "https://github.com/gitleaks/gitleaks/releases/download/v${GITLEAKS_VERSION}/gitleaks_${GITLEAKS_VERSION}_linux_x64.tar.gz"
47
+ echo "${GITLEAKS_SHA256} $RUNNER_TEMP/gitleaks.tar.gz" | sha256sum -c -
48
+ tar -xzf "$RUNNER_TEMP/gitleaks.tar.gz" -C "$RUNNER_TEMP" gitleaks
49
+ # A branch born with this push has no "before": the whole history is scanned.
50
+ case "$RANGE" in 0000000000000000000000000000000000000000..*) RANGE="" ;; esac
51
+ "$RUNNER_TEMP/gitleaks" git --redact --no-banner ${RANGE:+--log-opts="$RANGE"} .
42
52
  - uses: semgrep/semgrep-action@v1 # dangerous patterns (SAST)
43
53
  with: { config: "p/typescript p/owasp-top-ten" }
44
54
  - run: pnpm audit --audit-level=high # dependency CVEs
@@ -64,7 +74,8 @@ jobs:
64
74
  # of a screen. The first schemas.ts of a NEW feature is drawn by the model and
65
75
  # judged by the gates, written once; refused twice, the pull request gets the
66
76
  # needs-operator label and nothing is generated. The holes are filled — library, draw, escalation — with the client's model key
67
- # (a repo secret), the test of a candidate running without it. A repo
77
+ # (a repo secret), the test of a candidate running without it; the body of a
78
+ # custom view is one of them, and gets the same label when no candidate is green. A repo
68
79
  # without the generator installed is told so, and the branch is left as is.
69
80
  # With OGYGIE_CI_TOKEN (a token allowed to push to spec/* branches), the
70
81
  # commit it pushes gets its own checks; with the default token, it does not.
@@ -115,7 +126,7 @@ jobs:
115
126
  PR_NUMBER="$(gh pr list --head "$GITHUB_REF_NAME" --state open --json number --jq '.[0].number' 2>/dev/null || true)"
116
127
  if [ "${SCHEMAS_STATUS:-0}" = "2" ]; then
117
128
  if [ -n "$PR_NUMBER" ]; then
118
- gh label create needs-operator --force --color D9A35A --description "Le premier schemas.ts de la feature attend l'opérateur : les gates l'ont refusé deux fois." >/dev/null
129
+ gh label create needs-operator --force --color D9A35A --description "La spec attend un geste de l'opérateur : un schemas.ts refusé deux fois, ou le corps d'une vue custom sans candidat vert." >/dev/null
119
130
  gh pr edit "$PR_NUMBER" --add-label needs-operator
120
131
  fi
121
132
  echo "ogygie-gates — le schemas.ts de $SPEC_ID attend l'opérateur (needs-operator) : rien n'est généré sur la branche."
@@ -133,7 +144,16 @@ jobs:
133
144
  # runs in a process that holds no secret. Absent, the library alone.
134
145
  pnpm exec ogygie generate fill "$SPEC_ID" || FILL_STATUS=$?
135
146
  pnpm exec ogygie generate verify
136
- if [ "${FILL_STATUS:-0}" != "0" ]; then
147
+ if [ "${FILL_STATUS:-0}" = "2" ]; then
148
+ # The body of a custom view (hosted mode, the body as a hole): no candidate
149
+ # rendered its example — the operator writes it. The label says so; the
150
+ # view's own test stays red until then, so the pull request does too.
151
+ if [ -n "$PR_NUMBER" ]; then
152
+ gh label create needs-operator --force --color D9A35A --description "La spec attend un geste de l'opérateur : un schemas.ts refusé deux fois, ou le corps d'une vue custom sans candidat vert." >/dev/null
153
+ gh pr edit "$PR_NUMBER" --add-label needs-operator
154
+ fi
155
+ echo "ogygie-gates — le corps d'une vue custom de $SPEC_ID attend l'opérateur (needs-operator) : son test d'exemple reste rouge."
156
+ elif [ "${FILL_STATUS:-0}" != "0" ]; then
137
157
  echo "ogygie-gates — des trous restent à l'humain, ou le plafond du modèle est atteint : voir le journal ci-dessus."
138
158
  fi
139
159
  # The previews of a screen (spec ogygie-hosted-mode B10): a page per
@@ -27,7 +27,7 @@
27
27
  "@types/node": "^24.0.0",
28
28
  "tsx": "^4.20.0",
29
29
  "typescript": "^5.8.0",
30
- "vitest": "^3.2.0",
30
+ "vitest": "^4.1.12",
31
31
  "zod": "^4.0.0"
32
32
  }
33
33
  }