pi-helper-core 0.1.0 → 0.1.2
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/CHANGELOG.md +12 -0
- package/README.md +30 -2
- package/package.json +14 -3
- package/src/core/safety.ts +5 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,18 @@ All notable changes are documented here. The format follows
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.1.2] - 2026-09-21
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- `classifyCommand` no longer treats `--frozen`, `--locked`, or `--list` as read-only flags. They only pin inputs or request a listing, so a state-changing command they qualify (`uv sync --frozen`, `cargo build --locked`) was reported as `read`, which would let an environment mutation run without the opt-in its risk class requires. Only `--check`, `--dry-run`, and `--collect-only` remain universal safe overrides.
|
|
14
|
+
|
|
15
|
+
## [0.1.1] - 2026-09-21
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- README documents the release procedure, including the constraint that made the first attempt fail: npm trusted publishing cannot create a package's first version, because a trusted publisher can only be configured on a package that already exists (`ENEEDAUTH`, npm/cli#8544). It also records the `actions/setup-node` `registry-url` gotcha, which writes an `_authToken` line that expands to empty and silently prevents the OIDC exchange.
|
|
20
|
+
|
|
9
21
|
## [0.1.0] - 2026-09-21
|
|
10
22
|
|
|
11
23
|
### Added
|
package/README.md
CHANGED
|
@@ -79,8 +79,36 @@ npm run typecheck
|
|
|
79
79
|
npm run check # test + typecheck + format:check + pack-check
|
|
80
80
|
```
|
|
81
81
|
|
|
82
|
+
## 릴리스
|
|
83
|
+
|
|
84
|
+
`package.json` 버전을 올리고 CHANGELOG를 옮긴 뒤 `v<version>` 태그를 푸시하면 `.github/workflows/publish.yml`이 npm provenance와 함께 배포합니다.
|
|
85
|
+
|
|
86
|
+
### 최초 배포만 수동이어야 합니다 (중요)
|
|
87
|
+
|
|
88
|
+
**npm Trusted Publishing(OIDC)은 패키지의 최초 버전을 만들 수 없습니다.** trusted publisher는 이미 존재하는 패키지에만 설정할 수 있기 때문에, 신규 패키지의 첫 배포는 OIDC로 실패하고 `ENEEDAUTH`가 나옵니다(npm/cli#8544, npm/documentation#1926). 이 오류는 인증 설정 오류처럼 보이지만 실제 원인은 그게 아닙니다.
|
|
89
|
+
|
|
90
|
+
최초 1회만:
|
|
91
|
+
|
|
92
|
+
1. `npm login` (패키지 소유자 계정)
|
|
93
|
+
2. `npm publish --access public` — **provenance 없이** 올라갑니다
|
|
94
|
+
3. npmjs.com → 패키지 → Settings → **Trusted Publisher** → GitHub Actions
|
|
95
|
+
- Organization or user: `wkqco33`
|
|
96
|
+
- Repository: `pi-helper-core`
|
|
97
|
+
- Workflow filename: `publish.yml` (경로가 아니라 파일명만, 대소문자 구분)
|
|
98
|
+
- Allowed actions: `npm publish`
|
|
99
|
+
4. 이후 태그 푸시는 OIDC + provenance로 자동 배포됩니다
|
|
100
|
+
|
|
101
|
+
부트스트랩 후에는 Settings → Publishing access에서 **"Require two-factor authentication and disallow tokens"**를 켜 두는 것이 권장됩니다.
|
|
102
|
+
|
|
103
|
+
> 워크플로에 `actions/setup-node`의 `registry-url`을 쓰지 마세요. `_authToken=${NODE_AUTH_TOKEN}` 줄을 써 넣고, 토큰이 없을 때 빈 값으로 확장되어 **OIDC 대신 일반 인증을 시도**합니다(ENEEDAUTH/E404의 가장 흔한 원인).
|
|
104
|
+
|
|
82
105
|
## 상태
|
|
83
106
|
|
|
84
|
-
- `0.1.
|
|
107
|
+
- `0.1.2`, npm에 배포됨(`latest`).
|
|
85
108
|
- TypeScript 소스를 그대로 export합니다(`exports: "./src/index.ts"`). pi 확장 생태계가 TS를 직접 로드하므로 빌드 단계를 두지 않습니다.
|
|
86
|
-
- 소비자: `pi-rust-helper`(파일럿)
|
|
109
|
+
- 소비자: `pi-rust-helper`(파일럿), `pi-ros-helper`, `pi-python-helper` 모두 `^0.1.1`을 의존한다(2026-09-21).
|
|
110
|
+
- `pi-python-helper`: envelope/runner/TDD/번들/증거/staleness/selection 이관 완료.
|
|
111
|
+
- `pi-ros-helper`: envelope/runner/TDD/증거 이관 완료.
|
|
112
|
+
- 알려진 seam 부족분은 `pi-rust-helper/DEVELOPMENT-PLAN.md`의 "R1 실현" 참고:
|
|
113
|
+
범용 안전 override(`--frozen`/`--locked`) 과다는 0.1.2에서 수정됨,
|
|
114
|
+
`summarizeValidation`의 고정 단계 형태, 바이너리 mtime staleness·CTest 타겟 선별 미지원은 남음.
|
package/package.json
CHANGED
|
@@ -1,15 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-helper-core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Ecosystem-neutral core for pi language helper extensions: result envelope, bounded command runner, risk classification, completion gates, artifact staleness, and test selection",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
|
-
"keywords": [
|
|
7
|
+
"keywords": [
|
|
8
|
+
"pi-package",
|
|
9
|
+
"pi",
|
|
10
|
+
"helper",
|
|
11
|
+
"toolchain",
|
|
12
|
+
"validation"
|
|
13
|
+
],
|
|
8
14
|
"repository": {
|
|
9
15
|
"type": "git",
|
|
10
16
|
"url": "git+https://github.com/wkqco33/pi-helper-core.git"
|
|
11
17
|
},
|
|
12
|
-
"files": [
|
|
18
|
+
"files": [
|
|
19
|
+
"src",
|
|
20
|
+
"README.md",
|
|
21
|
+
"LICENSE",
|
|
22
|
+
"CHANGELOG.md"
|
|
23
|
+
],
|
|
13
24
|
"exports": {
|
|
14
25
|
".": "./src/index.ts"
|
|
15
26
|
},
|
package/src/core/safety.ts
CHANGED
|
@@ -31,7 +31,11 @@ export interface SafetyRules {
|
|
|
31
31
|
export const UNIVERSAL_SAFE_OVERRIDES: RegExp[] = [
|
|
32
32
|
/\bgit\s+(?:diff|log|status|show|rev-parse|ls-files|cat-file|describe|rev-list)\b/,
|
|
33
33
|
/\bgit\s+branch\s+--show-current\b/,
|
|
34
|
-
|
|
34
|
+
// Only flags that describe the command itself (`--check`, `--dry-run`,
|
|
35
|
+
// `--collect-only`) make it read-only. `--frozen`/`--locked`/`--list` merely
|
|
36
|
+
// pin inputs or request a listing, so a state-changing command they qualify
|
|
37
|
+
// (for example `uv sync --frozen`) must keep its adapter-classified risk.
|
|
38
|
+
/(?:^|\s)--(?:check|dry-run|collect-only)\b/,
|
|
35
39
|
];
|
|
36
40
|
|
|
37
41
|
/**
|