opensocrates 1.0.0 → 1.1.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/CHANGELOG.md +54 -0
- package/README.ko.md +140 -77
- package/README.md +146 -84
- package/SECURITY.md +38 -5
- package/VERSION +1 -1
- package/installer/opensocrates.mjs +387 -123
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -7,121 +7,179 @@
|
|
|
7
7
|
[](https://github.com/ParkerHwang/OpenSocrates/releases)
|
|
8
8
|
[](LICENSE)
|
|
9
9
|
|
|
10
|
-
OpenSocrates is a local reasoning framework for
|
|
11
|
-
requests that benefit from deliberate reasoning,
|
|
12
|
-
|
|
13
|
-
examples to the active task. Straightforward factual and
|
|
14
|
-
pass through unchanged.
|
|
15
|
-
|
|
16
|
-
Version `1.
|
|
17
|
-
Codex
|
|
18
|
-
|
|
19
|
-
|
|
10
|
+
OpenSocrates is a local integration and authored reasoning framework for
|
|
11
|
+
Claude and Codex. It detects requests that benefit from deliberate reasoning,
|
|
12
|
+
uses a fresh host-native selector to choose relevant systems, and adds their
|
|
13
|
+
complete theory and examples to the active task. Straightforward factual and
|
|
14
|
+
mechanical work can pass through unchanged.
|
|
15
|
+
|
|
16
|
+
Version `1.1.0` includes 48 reasoning systems and release packages for Claude
|
|
17
|
+
and Codex on Apple-silicon macOS (`darwin-arm64`). It uses your existing host
|
|
18
|
+
login and does not require an API key or an OpenSocrates backend.
|
|
19
|
+
|
|
20
|
+
## Host support
|
|
21
|
+
|
|
22
|
+
| Host surface | Automatic selection | Reasoning skills | Validation status |
|
|
23
|
+
| --- | --- | --- | --- |
|
|
24
|
+
| Codex CLI and Desktop | Yes | Yes | Release-validated on `darwin-arm64` |
|
|
25
|
+
| Claude Code CLI | Yes, through `UserPromptSubmit` | Yes | Locally validated on `darwin-arm64` |
|
|
26
|
+
| Claude Code desktop app | Implemented, where Claude Code plugins run | Yes | Implemented; no live probe receipt |
|
|
27
|
+
| Claude Cowork | Implemented, when the local plugin runtime is available | Yes | Experimental; no live probe receipt |
|
|
28
|
+
| Claude web and Desktop Chat | No hooks | Yes, through plugin skills | Skills-only; upload path unvalidated |
|
|
29
|
+
|
|
30
|
+
The status column uses four distinct levels. Do not read them as
|
|
31
|
+
interchangeable:
|
|
32
|
+
|
|
33
|
+
- **Implemented** — the integration exists in code and ships in the package.
|
|
34
|
+
- **Locally validated** — exercised end to end on a maintainer machine, but
|
|
35
|
+
not on every build.
|
|
36
|
+
- **Release-validated** — exercised by the release gate on every build.
|
|
37
|
+
- **Experimental / no live probe receipt** — implemented, but no captured
|
|
38
|
+
receipt shows the host actually delivering the hook. `os capabilities show`
|
|
39
|
+
reports these capabilities as `unknown`, not as available.
|
|
40
|
+
|
|
41
|
+
Claude Chat surfaces do not run plugin hooks. They can use the generated
|
|
42
|
+
skills, but automatic per-prompt selection is available only on Claude Code
|
|
43
|
+
and Cowork surfaces that execute the plugin runtime. OpenSocrates fails open
|
|
44
|
+
if a hook or selector is unavailable.
|
|
45
|
+
|
|
46
|
+
Cowork carries one further unverified assumption. OpenSocrates registers its
|
|
47
|
+
marketplace with `claude plugin marketplace add --scope user`, which writes
|
|
48
|
+
Claude Code user settings. Anthropic documents that plugin hooks run in Cowork,
|
|
49
|
+
but does not document that a marketplace registered through the Claude Code CLI
|
|
50
|
+
is visible to Cowork. Until a receipt exists, treat Cowork as experimental.
|
|
20
51
|
|
|
21
52
|
## Install
|
|
22
53
|
|
|
23
|
-
Before installing, sign in to
|
|
24
|
-
|
|
54
|
+
Before installing, sign in to the host and make sure its command is available:
|
|
55
|
+
|
|
56
|
+
- Claude: Claude Code `2.1.205` or later and the `claude` command;
|
|
57
|
+
- Codex: an OAuth-authenticated `codex` command.
|
|
25
58
|
|
|
26
|
-
|
|
59
|
+
Node.js 20 or later is required. The published `opensocrates` npm package is a
|
|
60
|
+
small, dependency-free installer. It downloads the matching package from
|
|
61
|
+
GitHub Releases and verifies the release checksum and every file checksum
|
|
62
|
+
before registering an owner-marked managed marketplace.
|
|
27
63
|
|
|
28
|
-
|
|
29
|
-
installer; it downloads and verifies the matching package from GitHub
|
|
30
|
-
Releases.
|
|
64
|
+
### Claude Code and Cowork
|
|
31
65
|
|
|
32
66
|
```bash
|
|
33
|
-
npx --yes opensocrates@1.
|
|
67
|
+
npx --yes opensocrates@1.1.0 install --host claude
|
|
34
68
|
```
|
|
35
69
|
|
|
36
70
|
Lifecycle commands:
|
|
37
71
|
|
|
38
72
|
```bash
|
|
39
|
-
npx --yes opensocrates@1.
|
|
40
|
-
npx --yes opensocrates@1.
|
|
41
|
-
npx --yes opensocrates@1.
|
|
73
|
+
npx --yes opensocrates@1.1.0 status --host claude
|
|
74
|
+
npx --yes opensocrates@1.1.0 update --host claude
|
|
75
|
+
npx --yes opensocrates@1.1.0 remove --host claude
|
|
42
76
|
```
|
|
43
77
|
|
|
44
|
-
###
|
|
78
|
+
### Codex
|
|
45
79
|
|
|
46
|
-
|
|
47
|
-
GitHub repository and remains available without the npm registry.
|
|
80
|
+
Codex remains the default host for backward compatibility:
|
|
48
81
|
|
|
49
82
|
```bash
|
|
50
|
-
npx --yes
|
|
83
|
+
npx --yes opensocrates@1.1.0 install
|
|
84
|
+
# Equivalent: npx --yes opensocrates@1.1.0 install --host codex
|
|
51
85
|
```
|
|
52
86
|
|
|
53
87
|
Lifecycle commands:
|
|
54
88
|
|
|
55
89
|
```bash
|
|
56
|
-
npx --yes
|
|
57
|
-
npx --yes
|
|
58
|
-
npx --yes
|
|
90
|
+
npx --yes opensocrates@1.1.0 status --host codex
|
|
91
|
+
npx --yes opensocrates@1.1.0 update --host codex
|
|
92
|
+
npx --yes opensocrates@1.1.0 remove --host codex
|
|
59
93
|
```
|
|
60
94
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
95
|
+
To use both hosts, run both install commands. Their managed marketplaces live
|
|
96
|
+
under their respective Claude and Codex configuration homes.
|
|
97
|
+
|
|
98
|
+
### Claude web and Desktop Chat skills
|
|
99
|
+
|
|
100
|
+
These surfaces support plugin skills but not hooks. Download
|
|
101
|
+
`opensocrates-1.1.0-claude-chat-skills.zip` from the release and upload it from
|
|
102
|
+
Claude's plugin customization UI. The 48 method skills and three shared skills
|
|
103
|
+
remain available in a small, runtime-free package, while automatic selection
|
|
104
|
+
is absent because Chat does not execute plugin hooks. See Anthropic's
|
|
105
|
+
[plugin surface guide](https://support.claude.com/en/articles/13837440-use-plugins-in-claude).
|
|
64
106
|
|
|
65
|
-
###
|
|
107
|
+
### Install from a tagged GitHub source
|
|
66
108
|
|
|
67
|
-
|
|
68
|
-
[v1.0.0 release](https://github.com/ParkerHwang/OpenSocrates/releases/tag/v1.0.0),
|
|
69
|
-
then run:
|
|
109
|
+
The same host option works without the npm registry:
|
|
70
110
|
|
|
71
111
|
```bash
|
|
72
|
-
|
|
112
|
+
npx --yes github:ParkerHwang/OpenSocrates#v1.1.0 install --host claude
|
|
113
|
+
npx --yes github:ParkerHwang/OpenSocrates#v1.1.0 install --host codex
|
|
73
114
|
```
|
|
74
115
|
|
|
75
|
-
|
|
116
|
+
### Manual release verification
|
|
117
|
+
|
|
118
|
+
Download `opensocrates.mjs`, the host package, and its `.sha256` file from the
|
|
119
|
+
[v1.1.0 release](https://github.com/ParkerHwang/OpenSocrates/releases/tag/v1.1.0).
|
|
120
|
+
For Claude, for example:
|
|
76
121
|
|
|
77
122
|
```bash
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
--asset opensocrates-1.0.0-codex-plugin.zip \
|
|
83
|
-
--checksum opensocrates-1.0.0-codex-plugin.zip.sha256
|
|
123
|
+
shasum -a 256 -c opensocrates-1.1.0-claude-plugin.zip.sha256
|
|
124
|
+
node opensocrates.mjs install --host claude \
|
|
125
|
+
--asset opensocrates-1.1.0-claude-plugin.zip \
|
|
126
|
+
--checksum opensocrates-1.1.0-claude-plugin.zip.sha256
|
|
84
127
|
```
|
|
85
128
|
|
|
86
|
-
|
|
129
|
+
Replace `claude` with `codex` for the Codex package.
|
|
130
|
+
|
|
131
|
+
### Migrating a pre-1.0 Claude plugin
|
|
87
132
|
|
|
88
|
-
|
|
133
|
+
Some development builds used a case-sensitive marketplace named
|
|
134
|
+
`OpenSocrates`. The new marketplace is `opensocrates`. The installer detects
|
|
135
|
+
the old registration and refuses to remove it automatically. After reviewing
|
|
136
|
+
what is installed, remove it explicitly:
|
|
89
137
|
|
|
90
138
|
```bash
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
uv sync --locked --all-groups
|
|
95
|
-
make release-check
|
|
96
|
-
uv run --locked --no-sync python tools/codex_plugin.py install
|
|
139
|
+
claude plugin uninstall opensocrates@OpenSocrates --scope user
|
|
140
|
+
claude plugin marketplace remove OpenSocrates --scope user
|
|
141
|
+
npx --yes opensocrates@1.1.0 install --host claude
|
|
97
142
|
```
|
|
98
143
|
|
|
99
|
-
`make release-check` builds the native runtime and installable package locally.
|
|
100
|
-
Generated files are written to ignored `build/` and `dist/` directories.
|
|
101
|
-
|
|
102
144
|
## Use
|
|
103
145
|
|
|
104
|
-
Use Codex normally. Before
|
|
105
|
-
when the request needs judgment, interpretation, diagnosis,
|
|
106
|
-
planning, evidence reconciliation, or another structured
|
|
107
|
-
When it intervenes, it:
|
|
146
|
+
Use Claude or Codex normally. Before a submitted prompt, OpenSocrates may
|
|
147
|
+
intervene when the request needs judgment, interpretation, diagnosis,
|
|
148
|
+
explanation, planning, evidence reconciliation, or another structured
|
|
149
|
+
reasoning process. When it intervenes, it:
|
|
108
150
|
|
|
109
|
-
1.
|
|
151
|
+
1. starts a fresh, non-persistent selector in the current host;
|
|
110
152
|
2. chooses from the authored 48-system catalog;
|
|
111
153
|
3. writes the complete selected content to an owner-only temporary Markdown
|
|
112
154
|
file; and
|
|
113
|
-
4. adds
|
|
114
|
-
|
|
115
|
-
There is no fixed selection-count limit. The
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
155
|
+
4. adds a small hidden context message telling the active task to read it.
|
|
156
|
+
|
|
157
|
+
There is no fixed selection-count limit. The selector has a 30-second internal
|
|
158
|
+
deadline, does not retry, and fails open. A timeout, host error, invalid output,
|
|
159
|
+
non-intervention decision, unsafe context, or unavailable hook produces no
|
|
160
|
+
injection and does not block the user's task.
|
|
161
|
+
|
|
162
|
+
The Claude selector uses one `claude --safe-mode -p` process with no session
|
|
163
|
+
persistence. Safe mode disables user, project, and plugin customizations:
|
|
164
|
+
`CLAUDE.md`, skills, plugins, hooks, MCP servers, custom commands, and agents.
|
|
165
|
+
OpenSocrates additionally passes `--tools ""`, `--disallowedTools "mcp__*"`,
|
|
166
|
+
and `--strict-mcp-config` so that no built-in or MCP tool remains available. It
|
|
167
|
+
receives only the current prompt and the authored selection catalog.
|
|
168
|
+
|
|
169
|
+
Managed policy settings are part of the host trust boundary and are **not**
|
|
170
|
+
disabled by safe mode. Anthropic's
|
|
171
|
+
[CLI reference](https://code.claude.com/docs/en/cli-reference) states that under
|
|
172
|
+
`--safe-mode` "managed settings policy still applies, including
|
|
173
|
+
policy-configured hooks". On a machine where an administrator configures a
|
|
174
|
+
managed `UserPromptSubmit` hook, that hook runs inside the selector process,
|
|
175
|
+
receives the current prompt on standard input, and can return
|
|
176
|
+
`additionalContext` that enters selection. Managed plugins, managed skills,
|
|
177
|
+
managed `CLAUDE.md`, and policy-configured MCP servers do not load. If your
|
|
178
|
+
organization configures managed hooks, treat the selector prompt as visible to
|
|
179
|
+
them and disable OpenSocrates selection if that is unacceptable.
|
|
180
|
+
|
|
181
|
+
The Codex selector can additionally use bounded transcript context unless
|
|
182
|
+
disabled:
|
|
125
183
|
|
|
126
184
|
```bash
|
|
127
185
|
export OPENSOCRATES_SELECTOR_TRANSCRIPT_ACCESS=0
|
|
@@ -129,24 +187,26 @@ export OPENSOCRATES_SELECTOR_TRANSCRIPT_ACCESS=0
|
|
|
129
187
|
|
|
130
188
|
## Privacy and security
|
|
131
189
|
|
|
132
|
-
OpenSocrates runs
|
|
133
|
-
Codex
|
|
134
|
-
|
|
190
|
+
OpenSocrates runs its integration locally and uses the existing Claude or
|
|
191
|
+
Codex login. Host model requests are still processed by the selected host
|
|
192
|
+
service under that service's terms. OpenSocrates does not host a backend, add
|
|
193
|
+
telemetry, store an API key, or execute the user's requested task.
|
|
135
194
|
|
|
136
195
|
Temporary instruction files contain authored OpenSocrates content only. Raw
|
|
137
|
-
prompts, transcripts, workspace files, tool data,
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
196
|
+
prompts, transcripts, workspace files, tool data, credentials, and selector
|
|
197
|
+
reasoning are not written to OpenSocrates records, logs, metrics, diagnostics,
|
|
198
|
+
or instruction files. Turn files are removed on `Stop`, remaining session
|
|
199
|
+
files on `SessionEnd`, and crash leftovers older than 24 hours on
|
|
141
200
|
`SessionStart`.
|
|
142
201
|
|
|
143
|
-
See [SECURITY.md](SECURITY.md) for vulnerability reporting and the
|
|
202
|
+
See [SECURITY.md](SECURITY.md) for vulnerability reporting and the measured
|
|
144
203
|
support boundary.
|
|
145
204
|
|
|
146
205
|
## Develop
|
|
147
206
|
|
|
148
207
|
The source repository intentionally excludes native binaries and intermediate
|
|
149
|
-
build output. Install
|
|
208
|
+
build output. Install [uv](https://docs.astral.sh/uv/), Python 3.12, and Node.js
|
|
209
|
+
20 or later, then run:
|
|
150
210
|
|
|
151
211
|
```bash
|
|
152
212
|
make bootstrap
|
|
@@ -162,12 +222,11 @@ npm pack --dry-run
|
|
|
162
222
|
make release-check
|
|
163
223
|
```
|
|
164
224
|
|
|
165
|
-
Repository layout:
|
|
166
|
-
|
|
167
225
|
| Path | Purpose |
|
|
168
226
|
| --- | --- |
|
|
169
|
-
| `src/opensocrates/` | Python 3.12 runtime and
|
|
227
|
+
| `src/opensocrates/` | Shared Python 3.12 runtime and host-native selectors |
|
|
170
228
|
| `content/` | Policies, localized messages, methods, theory, and examples |
|
|
229
|
+
| `plugin-src/claude/` | Claude plugin templates |
|
|
171
230
|
| `plugin-src/codex/` | Codex plugin templates |
|
|
172
231
|
| `schemas/source/` | Canonical schema definitions |
|
|
173
232
|
| `schemas/v1/` | Generated, versioned public schemas |
|
|
@@ -177,8 +236,8 @@ Repository layout:
|
|
|
177
236
|
| `build/`, `dist/` | Generated locally and published as release assets |
|
|
178
237
|
|
|
179
238
|
Generated schemas and compiled content must be changed through their canonical
|
|
180
|
-
sources and generators. Release binaries belong in GitHub Releases, not in
|
|
181
|
-
|
|
239
|
+
sources and generators. Release binaries belong in GitHub Releases, not in Git
|
|
240
|
+
history.
|
|
182
241
|
|
|
183
242
|
## Contributing
|
|
184
243
|
|
|
@@ -191,3 +250,6 @@ requests. The project follows the [Code of Conduct](CODE_OF_CONDUCT.md).
|
|
|
191
250
|
OpenSocrates is available under the [MIT License](LICENSE). You may use,
|
|
192
251
|
modify, distribute, sublicense, and sell copies, provided the copyright and
|
|
193
252
|
license notice are preserved.
|
|
253
|
+
|
|
254
|
+
OpenSocrates is an independent open-source project and is not affiliated with
|
|
255
|
+
or endorsed by Anthropic or OpenAI.
|
package/SECURITY.md
CHANGED
|
@@ -34,14 +34,47 @@ severity, and the availability of a safe fix.
|
|
|
34
34
|
|
|
35
35
|
## Security boundary
|
|
36
36
|
|
|
37
|
-
OpenSocrates 1.
|
|
37
|
+
OpenSocrates 1.x:
|
|
38
38
|
|
|
39
|
-
- runs locally through Codex and uses the user's
|
|
40
|
-
|
|
39
|
+
- runs its integration locally through Claude or Codex and uses the user's
|
|
40
|
+
existing host login;
|
|
41
|
+
- does not require or store an Anthropic or OpenAI API key;
|
|
41
42
|
- does not host an OpenSocrates backend or add telemetry;
|
|
42
43
|
- verifies downloadable packages with SHA-256 release and package manifests;
|
|
43
44
|
- fails open when the selector cannot safely complete.
|
|
44
45
|
|
|
46
|
+
The Claude selector runs a bounded, non-persistent `claude --safe-mode -p`
|
|
47
|
+
process. Safe mode disables user, project, and plugin customizations, and
|
|
48
|
+
OpenSocrates additionally passes `--tools ""`, `--disallowedTools "mcp__*"`, and
|
|
49
|
+
`--strict-mcp-config` so no built-in or MCP tool remains. It receives the current
|
|
50
|
+
prompt and authored selection catalog only. The process uses the user's Claude
|
|
51
|
+
login, so model requests remain subject to Anthropic's service and data-handling
|
|
52
|
+
terms. The Codex selector uses the pinned Codex SDK and existing OAuth session in
|
|
53
|
+
its own isolated worker.
|
|
54
|
+
|
|
55
|
+
The selector environment is default-deny. `CLAUDE_CONFIG_DIR` is one of the
|
|
56
|
+
small set of allowed path variables because the child needs it to locate the
|
|
57
|
+
user's existing Claude login when a non-default config directory is in use.
|
|
58
|
+
OpenSocrates does not copy, inspect, or log credentials from that directory.
|
|
59
|
+
|
|
60
|
+
Managed policy settings are part of the host trust boundary and are not disabled.
|
|
61
|
+
Anthropic's [CLI reference](https://code.claude.com/docs/en/cli-reference) states
|
|
62
|
+
that under `--safe-mode` "managed settings policy still applies, including
|
|
63
|
+
policy-configured hooks". Consequences on an organization-managed machine:
|
|
64
|
+
|
|
65
|
+
- a managed `UserPromptSubmit` hook executes inside the selector process,
|
|
66
|
+
receives the current prompt on standard input, and can return
|
|
67
|
+
`additionalContext` that enters selection;
|
|
68
|
+
- managed plugins, managed skills, managed `CLAUDE.md`, and policy-configured
|
|
69
|
+
MCP servers do not load.
|
|
70
|
+
|
|
71
|
+
OpenSocrates does not detect or override managed policy. Selection remains
|
|
72
|
+
bounded regardless: the model's returned instruction text is discarded, and only
|
|
73
|
+
authored catalog content assembled by OpenSocrates is ever injected. Operators
|
|
74
|
+
who cannot accept managed-hook visibility of the selector prompt should not
|
|
75
|
+
enable OpenSocrates selection on those machines.
|
|
76
|
+
|
|
45
77
|
Signing, notarization, clean-machine installation, platforms other than
|
|
46
|
-
`darwin-arm64`,
|
|
47
|
-
See the release limitations file for the
|
|
78
|
+
`darwin-arm64`, Claude Chat automatic hooks, and live delivery on every host
|
|
79
|
+
surface are not claimed as validated. See the release limitations file for the
|
|
80
|
+
complete measured boundary.
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.1.0
|