opensocrates 1.1.4 → 1.1.5
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 +35 -0
- package/README.ko.md +48 -27
- package/README.md +52 -28
- package/SECURITY.md +7 -0
- package/VERSION +1 -1
- package/installer/opensocrates.mjs +8 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,40 @@ All notable changes to OpenSocrates are documented here. This project follows
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [1.1.5] - 2026-08-12
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Packaged `diagnose` now verifies the complete installed file inventory
|
|
13
|
+
against `checksums.sha256` and validates the release manifest's runtime
|
|
14
|
+
version, host, and content revision. Explicit `mismatch`, `unavailable`, and
|
|
15
|
+
`unverified` states replace presence-based claims
|
|
16
|
+
([#64](https://github.com/ParkerHwang/OpenSocrates/issues/64)).
|
|
17
|
+
- Release tests execute the packaged runtime against both intact packages and
|
|
18
|
+
a staged tampered Claude package so integrity reporting is exercised outside
|
|
19
|
+
the source process ([#64](https://github.com/ParkerHwang/OpenSocrates/issues/64)).
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
- Claude grounding artifacts now prefer an owner-only, self-ignored
|
|
24
|
+
`.opensocrates` area inside the active workspace, while retaining the OS
|
|
25
|
+
temporary directory as a fail-open fallback. Lookup, receipts, expiry, and
|
|
26
|
+
cleanup handle both roots during upgrades and fallback runs
|
|
27
|
+
([#62](https://github.com/ParkerHwang/OpenSocrates/issues/62)).
|
|
28
|
+
- Codex package and installation documentation now requires one interactive
|
|
29
|
+
hook approval before automatic selection is expected and distinguishes
|
|
30
|
+
release-validated packaging from unvalidated live hook delivery
|
|
31
|
+
([#63](https://github.com/ParkerHwang/OpenSocrates/issues/63)).
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
|
|
35
|
+
- Default-permission `claude -p` sessions can read selected grounding content
|
|
36
|
+
without `--add-dir`, avoiding the denied-read repair loop caused by placing
|
|
37
|
+
artifacts only in the system temporary directory
|
|
38
|
+
([#62](https://github.com/ParkerHwang/OpenSocrates/issues/62)).
|
|
39
|
+
- `diagnose` no longer reports manifest and checksum verification merely
|
|
40
|
+
because package files exist ([#64](https://github.com/ParkerHwang/OpenSocrates/issues/64)).
|
|
41
|
+
|
|
8
42
|
## [1.1.4] - 2026-08-12
|
|
9
43
|
|
|
10
44
|
### Added
|
|
@@ -305,3 +339,4 @@ All notable changes to OpenSocrates are documented here. This project follows
|
|
|
305
339
|
[1.1.2]: https://github.com/ParkerHwang/OpenSocrates/compare/v1.1.1...v1.1.2
|
|
306
340
|
[1.1.3]: https://github.com/ParkerHwang/OpenSocrates/compare/v1.1.2...v1.1.3
|
|
307
341
|
[1.1.4]: https://github.com/ParkerHwang/OpenSocrates/compare/v1.1.3...v1.1.4
|
|
342
|
+
[1.1.5]: https://github.com/ParkerHwang/OpenSocrates/compare/v1.1.4...v1.1.5
|
package/README.ko.md
CHANGED
|
@@ -16,7 +16,7 @@ OpenSocrates는 Claude와 Codex를 위한 로컬 연동 및 저작 추론 프레
|
|
|
16
16
|
추론 시스템을 고른 뒤, 이론과 예제 전체를 활성 작업에 추가합니다. 단순한 사실
|
|
17
17
|
확인과 기계적인 작업은 그대로 통과할 수 있습니다.
|
|
18
18
|
|
|
19
|
-
버전 `1.1.
|
|
19
|
+
버전 `1.1.5`에는 48개의 추론 시스템, Claude의 단일 사용자 진입점, 선택된 절차를
|
|
20
20
|
실제로 읽었는지 확인하는 Claude 접지 게이트, Claude/Codex 통합 라이프사이클,
|
|
21
21
|
선택형 자동 업데이트가 들어 있습니다. 현재 릴리스 플랫폼은 Apple Silicon
|
|
22
22
|
macOS(`darwin-arm64`)입니다. 기존 호스트 로그인을 사용하므로 API 키나
|
|
@@ -26,17 +26,17 @@ OpenSocrates 백엔드가 필요하지 않습니다.
|
|
|
26
26
|
런처는 `darwin-arm64`만 허용하며, Intel Mac·Linux·Windows용 런처와 런타임은
|
|
27
27
|
이번 릴리스에 포함되거나 지원되지 않습니다.
|
|
28
28
|
|
|
29
|
-
> **최신 릴리스: [OpenSocrates 1.1.
|
|
30
|
-
>
|
|
31
|
-
>
|
|
32
|
-
> `npx --yes opensocrates@1.1.
|
|
29
|
+
> **최신 릴리스: [OpenSocrates 1.1.5](https://github.com/ParkerHwang/OpenSocrates/releases/tag/v1.1.5).**
|
|
30
|
+
> Claude 접지 파일을 추가 디렉터리 권한 없이 읽을 수 있게 하고, `diagnose`에서
|
|
31
|
+
> 설치 패키지를 실제로 검증하며, Codex의 최초 훅 승인 경계를 명확히 했습니다.
|
|
32
|
+
> `npx --yes opensocrates@1.1.5 update --host all`로 관리 중인 두 호스트를 함께
|
|
33
33
|
> 업데이트할 수 있습니다.
|
|
34
34
|
|
|
35
35
|
## 호스트 지원 범위
|
|
36
36
|
|
|
37
37
|
| 호스트 화면 | 자동 선택 | 사용자 진입점 | 검증 상태 |
|
|
38
38
|
| --- | --- | --- | --- |
|
|
39
|
-
| Codex CLI 및 Desktop | 지원 | OpenSocrates 플러그인 | `darwin-arm64` 릴리스 검증
|
|
39
|
+
| Codex CLI 및 Desktop | 앱에서 훅을 한 번 승인한 뒤 지원 | OpenSocrates 플러그인 | `darwin-arm64` 패키지·런처 릴리스 검증 완료, 실제 Codex 훅 전달 영수증 없음 |
|
|
40
40
|
| Claude Code CLI | `UserPromptSubmit` 훅으로 지원 | `/opensocrates` | `darwin-arm64` 로컬 검증 완료 |
|
|
41
41
|
| Claude Code 데스크톱 앱 | Claude Code 플러그인이 실행되는 곳에서 지원 | `/opensocrates` | [인증된 훅 생명주기 로컬 검증 완료](docs/claude-desktop-live-probe.md) |
|
|
42
42
|
| Claude Cowork | 실측 로컬 플러그인 업로드에서 지원 | `/opensocrates` | [네이티브 훅 생명주기 로컬 검증 완료, 릴리스 직접 업로드 지원, 마켓플레이스 동기화 없음](docs/claude-cowork-live-probe.md) |
|
|
@@ -47,7 +47,8 @@ OpenSocrates 백엔드가 필요하지 않습니다.
|
|
|
47
47
|
- **구현 완료** — 코드에 존재하고 패키지에 포함됩니다.
|
|
48
48
|
- **로컬 검증 완료** — 관리자 장비에서 전 구간을 실행했지만 매 빌드마다
|
|
49
49
|
검증하지는 않습니다.
|
|
50
|
-
- **릴리스 검증 완료** — 릴리스 게이트가 매 빌드마다 실행합니다.
|
|
50
|
+
- **릴리스 검증 완료** — 릴리스 게이트가 매 빌드마다 실행합니다. 현재 Codex는
|
|
51
|
+
패키지와 런처를 검증하며 실제 훅 전달까지 검증했다는 뜻은 아닙니다.
|
|
51
52
|
- **실험적 / 실측 수신 기록 없음** — 구현은 되어 있지만 호스트가 실제로 훅을
|
|
52
53
|
전달했다는 기록이 없습니다. `os capabilities show`는 이 항목들을 사용 가능이
|
|
53
54
|
아니라 `unknown`으로 보고합니다.
|
|
@@ -80,7 +81,7 @@ Node.js 20 이상이 필요합니다. npm에 게시된 `opensocrates` 패키지
|
|
|
80
81
|
### 준비된 모든 호스트에 설치
|
|
81
82
|
|
|
82
83
|
```bash
|
|
83
|
-
npx --yes opensocrates@1.1.
|
|
84
|
+
npx --yes opensocrates@1.1.5 install --host all
|
|
84
85
|
```
|
|
85
86
|
|
|
86
87
|
모든 호스트 경로는 지원되는 인증 완료 CLI를 찾고, 어느 호스트도 바꾸기 전에
|
|
@@ -91,9 +92,9 @@ npx --yes opensocrates@1.1.4 install --host all
|
|
|
91
92
|
전체 라이프사이클에서 같은 호스트 값을 사용할 수 있습니다.
|
|
92
93
|
|
|
93
94
|
```bash
|
|
94
|
-
npx --yes opensocrates@1.1.
|
|
95
|
-
npx --yes opensocrates@1.1.
|
|
96
|
-
npx --yes opensocrates@1.1.
|
|
95
|
+
npx --yes opensocrates@1.1.5 status --host all
|
|
96
|
+
npx --yes opensocrates@1.1.5 update --host all
|
|
97
|
+
npx --yes opensocrates@1.1.5 remove --host all
|
|
97
98
|
```
|
|
98
99
|
|
|
99
100
|
소유자 전용 `~/.opensocrates/desired-state.json`에는 선택 채널, 설치된 호스트,
|
|
@@ -105,9 +106,9 @@ npx --yes opensocrates@1.1.4 remove --host all
|
|
|
105
106
|
기존 사용자와의 호환성을 위해 기본 호스트는 계속 Codex입니다.
|
|
106
107
|
|
|
107
108
|
```bash
|
|
108
|
-
npx --yes opensocrates@1.1.
|
|
109
|
-
# 같은 명령: npx --yes opensocrates@1.1.
|
|
110
|
-
npx --yes opensocrates@1.1.
|
|
109
|
+
npx --yes opensocrates@1.1.5 install
|
|
110
|
+
# 같은 명령: npx --yes opensocrates@1.1.5 install --host codex
|
|
111
|
+
npx --yes opensocrates@1.1.5 install --host claude
|
|
111
112
|
```
|
|
112
113
|
|
|
113
114
|
기존 `--host codex` 및 `--host claude` 라이프사이클은 그대로 지원합니다. 호스트별
|
|
@@ -124,9 +125,9 @@ Claude 상태는 활성 설치와 설치됐지만 비활성화된 플러그인
|
|
|
124
125
|
### 선택형 자동 업데이트
|
|
125
126
|
|
|
126
127
|
```bash
|
|
127
|
-
npx --yes opensocrates@1.1.
|
|
128
|
-
npx --yes opensocrates@1.1.
|
|
129
|
-
npx --yes opensocrates@1.1.
|
|
128
|
+
npx --yes opensocrates@1.1.5 auto-update enable --host all
|
|
129
|
+
npx --yes opensocrates@1.1.5 auto-update status
|
|
130
|
+
npx --yes opensocrates@1.1.5 auto-update disable
|
|
130
131
|
```
|
|
131
132
|
|
|
132
133
|
자동 업데이트는 명시적으로 켜기 전까지 비활성화되어 있습니다. macOS LaunchAgent는
|
|
@@ -148,7 +149,7 @@ LaunchAgent를 언로드하고 삭제하며, `remove --host all`도 관리 호
|
|
|
148
149
|
### Claude 웹 및 Desktop Chat 스킬
|
|
149
150
|
|
|
150
151
|
이 화면들은 플러그인 스킬은 지원하지만 훅은 실행하지 않습니다. 릴리스에서
|
|
151
|
-
`opensocrates-1.1.
|
|
152
|
+
`opensocrates-1.1.5-claude-chat-skills.zip`을 내려받아 Claude의 **사용자 지정 →
|
|
152
153
|
스킬 → 스킬 업로드** 화면에서 업로드하세요. ZIP은 업로더 요구사항에 맞춰
|
|
153
154
|
최상위 `opensocrates/` 폴더 바로 아래에 `SKILL.md`를 둡니다. 패키지는
|
|
154
155
|
`/opensocrates` 스킬 하나만 노출하고, 48개
|
|
@@ -162,21 +163,21 @@ LaunchAgent를 언로드하고 삭제하며, `remove --host all`도 관리 호
|
|
|
162
163
|
npm 레지스트리를 거치지 않을 때도 같은 호스트 옵션을 사용합니다.
|
|
163
164
|
|
|
164
165
|
```bash
|
|
165
|
-
npx --yes github:ParkerHwang/OpenSocrates#v1.1.
|
|
166
|
-
npx --yes github:ParkerHwang/OpenSocrates#v1.1.
|
|
167
|
-
npx --yes github:ParkerHwang/OpenSocrates#v1.1.
|
|
166
|
+
npx --yes github:ParkerHwang/OpenSocrates#v1.1.5 install --host all
|
|
167
|
+
npx --yes github:ParkerHwang/OpenSocrates#v1.1.5 install --host claude
|
|
168
|
+
npx --yes github:ParkerHwang/OpenSocrates#v1.1.5 install --host codex
|
|
168
169
|
```
|
|
169
170
|
|
|
170
171
|
### 릴리스 파일 직접 검증
|
|
171
172
|
|
|
172
|
-
[v1.1.
|
|
173
|
+
[v1.1.5 릴리스](https://github.com/ParkerHwang/OpenSocrates/releases/tag/v1.1.5)에서
|
|
173
174
|
`opensocrates.mjs`, 호스트 패키지, `.sha256` 파일을 내려받습니다. Claude의 예:
|
|
174
175
|
|
|
175
176
|
```bash
|
|
176
|
-
shasum -a 256 -c opensocrates-1.1.
|
|
177
|
+
shasum -a 256 -c opensocrates-1.1.5-claude-plugin.zip.sha256
|
|
177
178
|
node opensocrates.mjs install --host claude \
|
|
178
|
-
--asset opensocrates-1.1.
|
|
179
|
-
--checksum opensocrates-1.1.
|
|
179
|
+
--asset opensocrates-1.1.5-claude-plugin.zip \
|
|
180
|
+
--checksum opensocrates-1.1.5-claude-plugin.zip.sha256
|
|
180
181
|
```
|
|
181
182
|
|
|
182
183
|
Codex 패키지는 `claude`를 `codex`로 바꾸면 됩니다.
|
|
@@ -191,7 +192,7 @@ Codex 패키지는 `claude`를 `codex`로 바꾸면 됩니다.
|
|
|
191
192
|
```bash
|
|
192
193
|
claude plugin uninstall opensocrates@OpenSocrates --scope user
|
|
193
194
|
claude plugin marketplace remove OpenSocrates --scope user
|
|
194
|
-
npx --yes opensocrates@1.1.
|
|
195
|
+
npx --yes opensocrates@1.1.5 install --host claude
|
|
195
196
|
```
|
|
196
197
|
|
|
197
198
|
관리형 v1.1.0 Claude 설치를 업데이트하면 패키지 트리 전체가 교체됩니다. 따라서
|
|
@@ -206,12 +207,25 @@ Claude나 Codex를 평소처럼 사용하세요. 요청에 판단, 해석, 진
|
|
|
206
207
|
|
|
207
208
|
1. 현재 호스트에서 새로운 비영구 셀렉터를 시작합니다.
|
|
208
209
|
2. 저작된 48개 시스템 카탈로그에서 적합한 시스템을 선택합니다.
|
|
209
|
-
3. 선택된 전체 콘텐츠를 소유자 전용
|
|
210
|
+
3. 선택된 전체 콘텐츠를 소유자 전용 Markdown 파일에 씁니다.
|
|
210
211
|
4. 각 방법 ID와 콘텐츠 리비전, 크기 한도 안에 들면 정확한 `Do not use when` 및
|
|
211
212
|
`Stop conditions`를 작은 숨김 컨텍스트에 추가합니다.
|
|
212
213
|
5. 활성 작업이 방법을 적용하기 전에 전체 파일을 읽고, 접지된 답변의 마지막에
|
|
213
214
|
`OpenSocrates grounding: triangulation@1`과 같은 정확한 감사 줄을 남기게 합니다.
|
|
214
215
|
|
|
216
|
+
Codex에 설치한 뒤에는 대화형 Codex 세션을 한 번 열어 OpenSocrates 훅을 승인해야
|
|
217
|
+
자동 선택을 신뢰할 수 있습니다. 이 승인이 끝나기 전에는 `codex exec` 같은 비대화형
|
|
218
|
+
화면이 신뢰되지 않은 훅을 조용히 건너뛸 수 있습니다.
|
|
219
|
+
|
|
220
|
+
Claude 훅 화면은 추가 디렉터리 권한 없이 선택 콘텐츠를 읽을 수 있도록 현재
|
|
221
|
+
워크스페이스 안의 소유자 전용 `.opensocrates` artifact 영역을 우선 사용합니다.
|
|
222
|
+
내부 `.gitignore`가 이 영역을 `git status`에서 숨기고 turn·세션 정리 시 파일을
|
|
223
|
+
삭제합니다. 워크스페이스를 사용할 수 없으면 소유자 전용 OS 임시 디렉터리로
|
|
224
|
+
대체합니다. 다만 `.gitignore`나 숨김 디렉터리를 무시하지 않는 별도 백업·동기화
|
|
225
|
+
도구는 artifact가 존재하는 동안 저작된 OpenSocrates 콘텐츠를 볼 수 있습니다.
|
|
226
|
+
artifact에는 원시 프롬프트, 대화 기록, 워크스페이스 콘텐츠, 자격 증명, 셀렉터
|
|
227
|
+
추론이 들어가지 않습니다.
|
|
228
|
+
|
|
215
229
|
Claude 훅 화면에서는 Read 전용 `PostToolUse` 훅이 현재 turn의 정확한 파일을 첫
|
|
216
230
|
줄부터 종료 표식까지 읽은 경우에만 인증된 영수증을 만듭니다. `Stop` 시 영수증이나
|
|
217
231
|
감사 줄이 없으면 한 번만 보정을 요청하고, `stop_hook_active`로 반복 보정을
|
|
@@ -294,6 +308,13 @@ Claude 셀렉터 시도는 `executable_missing`, `request_rejected`, `spawn_fail
|
|
|
294
308
|
표시합니다. 다음 유효한 셀렉터 결과가 현재 스키마의 손상된 집계를 새로운 제한된
|
|
295
309
|
카운트 문서로 교체하며, 알 수 없는 미래 스키마는 해당 새 런타임을 위해 보존합니다.
|
|
296
310
|
|
|
311
|
+
패키지의 `diagnose` 명령은 설치 파일 목록을 `checksums.sha256`과 대조하고 릴리스
|
|
312
|
+
manifest가 실행 중인 버전·호스트·콘텐츠 리비전을 가리키는지도 확인합니다. 단순한
|
|
313
|
+
파일 존재 여부로 성공을 추정하지 않고 `verified`, `mismatch`, `unavailable`,
|
|
314
|
+
`unverified`를 표시합니다. 이 해시는 로컬 변경이나 손상을 찾지만 manifest와
|
|
315
|
+
checksum 파일 자체는 서명되지 않았으므로 패키지 전체를 바꿀 수 있는 공격자에 대한
|
|
316
|
+
진본성 증명은 아닙니다.
|
|
317
|
+
|
|
297
318
|
자동 업데이트를 켜면 앞서 설명한 desired state와 간결한 영수증만 소유자 전용
|
|
298
319
|
권한으로 저장합니다. 실행 중인 Claude나 Codex 세션을 검사하거나 종료하지 않습니다.
|
|
299
320
|
이미 실행 중인 작업은 로드한 플러그인을 계속 쓰고, 새 작업이 조정된 버전을 자연스럽게
|
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ uses a fresh host-native selector to choose relevant systems, and adds their
|
|
|
17
17
|
complete theory and examples to the active task. Straightforward factual and
|
|
18
18
|
mechanical work can pass through unchanged.
|
|
19
19
|
|
|
20
|
-
Version `1.1.
|
|
20
|
+
Version `1.1.5` includes 48 reasoning systems, one user-facing Claude entry, a
|
|
21
21
|
Claude grounding gate that verifies selected procedures were read, coordinated
|
|
22
22
|
Claude/Codex lifecycle management, and opt-in automatic updates on
|
|
23
23
|
Apple-silicon macOS (`darwin-arm64`). It uses your existing host login and does
|
|
@@ -27,17 +27,18 @@ The native plugin archives intentionally ship only `bin/launch.sh`. That
|
|
|
27
27
|
launcher accepts `darwin-arm64` only; macOS Intel, Linux, and Windows launchers
|
|
28
28
|
and runtimes are not shipped or supported in this release.
|
|
29
29
|
|
|
30
|
-
> **Latest release: [OpenSocrates 1.1.
|
|
31
|
-
> It
|
|
32
|
-
>
|
|
30
|
+
> **Latest release: [OpenSocrates 1.1.5](https://github.com/ParkerHwang/OpenSocrates/releases/tag/v1.1.5).**
|
|
31
|
+
> It makes Claude grounding readable without extra directory permission,
|
|
32
|
+
> verifies installed package files in `diagnose`, and documents Codex's
|
|
33
|
+
> one-time hook approval boundary.
|
|
33
34
|
> Upgrade both managed hosts together with
|
|
34
|
-
> `npx --yes opensocrates@1.1.
|
|
35
|
+
> `npx --yes opensocrates@1.1.5 update --host all`.
|
|
35
36
|
|
|
36
37
|
## Host support
|
|
37
38
|
|
|
38
39
|
| Host surface | Automatic selection | User-facing entry | Validation status |
|
|
39
40
|
| --- | --- | --- | --- |
|
|
40
|
-
| Codex CLI and Desktop | Yes | OpenSocrates plugin |
|
|
41
|
+
| Codex CLI and Desktop | Yes, after one-time in-app hook approval | OpenSocrates plugin | Package and launcher release-validated on `darwin-arm64`; no live Codex hook-delivery receipt |
|
|
41
42
|
| Claude Code CLI | Yes, through `UserPromptSubmit` | `/opensocrates` | Locally validated on `darwin-arm64` |
|
|
42
43
|
| Claude Code desktop app | Yes, where Claude Code plugins run | `/opensocrates` | [Authenticated hook lifecycle locally validated](docs/claude-desktop-live-probe.md) |
|
|
43
44
|
| Claude Cowork | Yes, in the tested local plugin upload | `/opensocrates` | [Native hook lifecycle locally validated; direct release upload, no marketplace sync](docs/claude-cowork-live-probe.md) |
|
|
@@ -49,7 +50,8 @@ interchangeable:
|
|
|
49
50
|
- **Implemented** — the integration exists in code and ships in the package.
|
|
50
51
|
- **Locally validated** — exercised end to end on a maintainer machine, but
|
|
51
52
|
not on every build.
|
|
52
|
-
- **Release-validated** — exercised by the release gate on every build.
|
|
53
|
+
- **Release-validated** — exercised by the release gate on every build. For
|
|
54
|
+
Codex this currently covers the package and launcher, not live hook delivery.
|
|
53
55
|
- **Experimental / no live probe receipt** — implemented, but no captured
|
|
54
56
|
receipt shows the host actually delivering the hook. `os capabilities show`
|
|
55
57
|
reports these capabilities as `unknown`, not as available.
|
|
@@ -84,7 +86,7 @@ before registering an owner-marked managed marketplace.
|
|
|
84
86
|
### Install every ready host
|
|
85
87
|
|
|
86
88
|
```bash
|
|
87
|
-
npx --yes opensocrates@1.1.
|
|
89
|
+
npx --yes opensocrates@1.1.5 install --host all
|
|
88
90
|
```
|
|
89
91
|
|
|
90
92
|
The all-host path detects supported, authenticated host CLIs, completes every
|
|
@@ -96,9 +98,9 @@ registration.
|
|
|
96
98
|
Use the same host value for the complete lifecycle:
|
|
97
99
|
|
|
98
100
|
```bash
|
|
99
|
-
npx --yes opensocrates@1.1.
|
|
100
|
-
npx --yes opensocrates@1.1.
|
|
101
|
-
npx --yes opensocrates@1.1.
|
|
101
|
+
npx --yes opensocrates@1.1.5 status --host all
|
|
102
|
+
npx --yes opensocrates@1.1.5 update --host all
|
|
103
|
+
npx --yes opensocrates@1.1.5 remove --host all
|
|
102
104
|
```
|
|
103
105
|
|
|
104
106
|
A private `~/.opensocrates/desired-state.json` manifest records the selected
|
|
@@ -111,9 +113,9 @@ automatic update, and per-host drift.
|
|
|
111
113
|
Codex remains the default host for backward compatibility:
|
|
112
114
|
|
|
113
115
|
```bash
|
|
114
|
-
npx --yes opensocrates@1.1.
|
|
115
|
-
# Equivalent: npx --yes opensocrates@1.1.
|
|
116
|
-
npx --yes opensocrates@1.1.
|
|
116
|
+
npx --yes opensocrates@1.1.5 install
|
|
117
|
+
# Equivalent: npx --yes opensocrates@1.1.5 install --host codex
|
|
118
|
+
npx --yes opensocrates@1.1.5 install --host claude
|
|
117
119
|
```
|
|
118
120
|
|
|
119
121
|
Existing `--host codex` and `--host claude` lifecycle commands remain
|
|
@@ -133,9 +135,9 @@ commands. The privacy-safe 2.1.226 fixture is under
|
|
|
133
135
|
### Opt-in automatic updates
|
|
134
136
|
|
|
135
137
|
```bash
|
|
136
|
-
npx --yes opensocrates@1.1.
|
|
137
|
-
npx --yes opensocrates@1.1.
|
|
138
|
-
npx --yes opensocrates@1.1.
|
|
138
|
+
npx --yes opensocrates@1.1.5 auto-update enable --host all
|
|
139
|
+
npx --yes opensocrates@1.1.5 auto-update status
|
|
140
|
+
npx --yes opensocrates@1.1.5 auto-update disable
|
|
139
141
|
```
|
|
140
142
|
|
|
141
143
|
Automatic updates are disabled until explicitly enabled. The macOS LaunchAgent
|
|
@@ -158,7 +160,7 @@ workspace paths. `auto-update disable` unloads and removes the LaunchAgent;
|
|
|
158
160
|
### Claude web and Desktop Chat skills
|
|
159
161
|
|
|
160
162
|
These surfaces support plugin skills but not hooks. Download
|
|
161
|
-
`opensocrates-1.1.
|
|
163
|
+
`opensocrates-1.1.5-claude-chat-skills.zip` from the release and upload it from
|
|
162
164
|
Claude's **Customize → Skills → Upload skill** UI. The ZIP contains one
|
|
163
165
|
top-level `opensocrates/` folder with `SKILL.md` directly inside, as required by
|
|
164
166
|
the skill uploader. The package exposes exactly one
|
|
@@ -172,22 +174,22 @@ because Chat does not execute plugin hooks. See Anthropic's
|
|
|
172
174
|
The same host option works without the npm registry:
|
|
173
175
|
|
|
174
176
|
```bash
|
|
175
|
-
npx --yes github:ParkerHwang/OpenSocrates#v1.1.
|
|
176
|
-
npx --yes github:ParkerHwang/OpenSocrates#v1.1.
|
|
177
|
-
npx --yes github:ParkerHwang/OpenSocrates#v1.1.
|
|
177
|
+
npx --yes github:ParkerHwang/OpenSocrates#v1.1.5 install --host all
|
|
178
|
+
npx --yes github:ParkerHwang/OpenSocrates#v1.1.5 install --host claude
|
|
179
|
+
npx --yes github:ParkerHwang/OpenSocrates#v1.1.5 install --host codex
|
|
178
180
|
```
|
|
179
181
|
|
|
180
182
|
### Manual release verification
|
|
181
183
|
|
|
182
184
|
Download `opensocrates.mjs`, the host package, and its `.sha256` file from the
|
|
183
|
-
[v1.1.
|
|
185
|
+
[v1.1.5 release](https://github.com/ParkerHwang/OpenSocrates/releases/tag/v1.1.5).
|
|
184
186
|
For Claude, for example:
|
|
185
187
|
|
|
186
188
|
```bash
|
|
187
|
-
shasum -a 256 -c opensocrates-1.1.
|
|
189
|
+
shasum -a 256 -c opensocrates-1.1.5-claude-plugin.zip.sha256
|
|
188
190
|
node opensocrates.mjs install --host claude \
|
|
189
|
-
--asset opensocrates-1.1.
|
|
190
|
-
--checksum opensocrates-1.1.
|
|
191
|
+
--asset opensocrates-1.1.5-claude-plugin.zip \
|
|
192
|
+
--checksum opensocrates-1.1.5-claude-plugin.zip.sha256
|
|
191
193
|
```
|
|
192
194
|
|
|
193
195
|
Replace `claude` with `codex` for the Codex package.
|
|
@@ -202,7 +204,7 @@ what is installed, remove it explicitly:
|
|
|
202
204
|
```bash
|
|
203
205
|
claude plugin uninstall opensocrates@OpenSocrates --scope user
|
|
204
206
|
claude plugin marketplace remove OpenSocrates --scope user
|
|
205
|
-
npx --yes opensocrates@1.1.
|
|
207
|
+
npx --yes opensocrates@1.1.5 install --host claude
|
|
206
208
|
```
|
|
207
209
|
|
|
208
210
|
Updating a managed v1.1.0 Claude installation replaces the complete package
|
|
@@ -218,14 +220,28 @@ reasoning process. When it intervenes, it:
|
|
|
218
220
|
|
|
219
221
|
1. starts a fresh, non-persistent selector in the current host;
|
|
220
222
|
2. chooses from the authored 48-system catalog;
|
|
221
|
-
3. writes the complete selected content to an owner-only
|
|
222
|
-
file;
|
|
223
|
+
3. writes the complete selected content to an owner-only Markdown file;
|
|
223
224
|
4. adds a bounded hidden context message with each method ID, content revision,
|
|
224
225
|
and, when they fit, its exact `Do not use when` and `Stop conditions`; and
|
|
225
226
|
5. requires the active task to read the complete file before applying the
|
|
226
227
|
method and to end a grounded response with an exact audit line such as
|
|
227
228
|
`OpenSocrates grounding: triangulation@1`.
|
|
228
229
|
|
|
230
|
+
After installing for Codex, open one interactive Codex session and approve the
|
|
231
|
+
OpenSocrates hooks before relying on automatic selection. Until that one-time
|
|
232
|
+
approval, non-interactive surfaces such as `codex exec` may silently continue
|
|
233
|
+
without running the untrusted hooks.
|
|
234
|
+
|
|
235
|
+
Claude hook surfaces prefer an owner-only `.opensocrates` artifact area inside
|
|
236
|
+
the current workspace so Claude can read the selected content without an extra
|
|
237
|
+
directory permission. Its self-contained `.gitignore` keeps the area out of
|
|
238
|
+
`git status`; files are removed on turn/session cleanup. If the workspace is
|
|
239
|
+
unusable, OpenSocrates falls back to the owner-only OS temporary directory.
|
|
240
|
+
Because the preferred area is inside the workspace, a separate backup or sync
|
|
241
|
+
tool that ignores neither `.gitignore` nor hidden directories could observe the
|
|
242
|
+
authored OpenSocrates artifact while it exists. Artifacts never contain the raw
|
|
243
|
+
prompt, transcript, workspace content, credentials, or selector reasoning.
|
|
244
|
+
|
|
229
245
|
On Claude hook surfaces, a Read-only `PostToolUse` hook records an authenticated
|
|
230
246
|
receipt only when the exact current-turn file is read from its first line
|
|
231
247
|
through a terminal marker. At `Stop`, a missing receipt or audit line requests
|
|
@@ -313,6 +329,14 @@ of asserting zero attempts. The next valid selector outcome replaces a
|
|
|
313
329
|
malformed current-schema aggregate with a fresh bounded count document; an
|
|
314
330
|
unknown future schema is preserved for the newer runtime that owns it.
|
|
315
331
|
|
|
332
|
+
The packaged `diagnose` command also verifies the installed file inventory
|
|
333
|
+
against `checksums.sha256` and checks that the release manifest identifies the
|
|
334
|
+
running version, host, and content revision. It reports `verified`, `mismatch`,
|
|
335
|
+
`unavailable`, or `unverified` rather than inferring success from file presence.
|
|
336
|
+
These hashes detect local change or damage; the manifest and checksum file are
|
|
337
|
+
not signed and therefore are not an authenticity proof against an attacker who
|
|
338
|
+
can replace the whole package.
|
|
339
|
+
|
|
316
340
|
When enabled, the updater stores only desired lifecycle state and the concise
|
|
317
341
|
receipt described above, under owner-only permissions. It does not inspect or
|
|
318
342
|
terminate running Claude or Codex sessions; a running task keeps its loaded
|
package/SECURITY.md
CHANGED
|
@@ -48,6 +48,13 @@ OpenSocrates 1.x:
|
|
|
48
48
|
receipts;
|
|
49
49
|
- fails open when the selector cannot safely complete.
|
|
50
50
|
|
|
51
|
+
The installed `diagnose` command verifies the exact package inventory against
|
|
52
|
+
`checksums.sha256` and validates release-manifest identity for the running
|
|
53
|
+
version, host, and content revision. A mismatch is reported explicitly. These
|
|
54
|
+
files are not signed, so this is local integrity and damage detection, not an
|
|
55
|
+
authenticity guarantee against an attacker able to replace the complete
|
|
56
|
+
package and its checksum metadata.
|
|
57
|
+
|
|
51
58
|
The Claude selector runs a bounded, non-persistent `claude --safe-mode -p`
|
|
52
59
|
process. Safe mode disables user, project, and plugin customizations, and
|
|
53
60
|
OpenSocrates additionally passes `--tools ""`, `--disallowedTools "mcp__*"`, and
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.1.
|
|
1
|
+
1.1.5
|
|
@@ -24,7 +24,7 @@ import { Readable } from "node:stream";
|
|
|
24
24
|
import { pipeline } from "node:stream/promises";
|
|
25
25
|
import { fileURLToPath } from "node:url";
|
|
26
26
|
|
|
27
|
-
export const PRODUCT_VERSION = "1.1.
|
|
27
|
+
export const PRODUCT_VERSION = "1.1.5";
|
|
28
28
|
export const REPOSITORY = "ParkerHwang/OpenSocrates";
|
|
29
29
|
export const MARKETPLACE_NAME = "opensocrates";
|
|
30
30
|
export const PLUGIN_NAME = "opensocrates";
|
|
@@ -1579,6 +1579,13 @@ async function runInstallOrUpdate(options, action) {
|
|
|
1579
1579
|
console.log(
|
|
1580
1580
|
`OpenSocrates ${PRODUCT_VERSION} ${verb} successfully for ${hosts.join(", ")}.`,
|
|
1581
1581
|
);
|
|
1582
|
+
if (hosts.includes("codex")) {
|
|
1583
|
+
console.log(
|
|
1584
|
+
"Codex approval required: open one interactive Codex session and approve the " +
|
|
1585
|
+
"OpenSocrates hooks before relying on automatic selection. Non-interactive " +
|
|
1586
|
+
"codex exec silently skips hooks that have not been trusted.",
|
|
1587
|
+
);
|
|
1588
|
+
}
|
|
1582
1589
|
console.log("Start new host tasks to load the updated skills and hooks.");
|
|
1583
1590
|
return hosts;
|
|
1584
1591
|
}
|