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/README.md CHANGED
@@ -7,121 +7,179 @@
7
7
  [![Release](https://img.shields.io/github/v/release/ParkerHwang/OpenSocrates)](https://github.com/ParkerHwang/OpenSocrates/releases)
8
8
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
9
9
 
10
- OpenSocrates is a local reasoning framework for AI-agent hosts. It detects
11
- requests that benefit from deliberate reasoning, selects relevant reasoning
12
- systems in a separate Codex context, and adds their authored theory and
13
- examples to the active task. Straightforward factual and mechanical work can
14
- pass through unchanged.
15
-
16
- Version `1.0.0` includes 48 reasoning systems and supports Codex Desktop and
17
- Codex CLI on Apple-silicon macOS (`darwin-arm64`). Other platforms, binary
18
- signing, notarization, and clean-machine installation are not yet claimed as
19
- validated.
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 Codex with OAuth and make sure the `codex`
24
- command is available.
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
- ### Option 1: npx from npm
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
- Requires Node.js 20 or later. The npm package is a small, dependency-free
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.0.0 install
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.0.0 status
40
- npx --yes opensocrates@1.0.0 update
41
- npx --yes opensocrates@1.0.0 remove
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
- ### Option 2: npx from GitHub
78
+ ### Codex
45
79
 
46
- Requires Node.js 20 or later. This command installs directly from the tagged
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 github:ParkerHwang/OpenSocrates#v1.0.0 install
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 github:ParkerHwang/OpenSocrates#v1.0.0 status
57
- npx --yes github:ParkerHwang/OpenSocrates#v1.0.0 update
58
- npx --yes github:ParkerHwang/OpenSocrates#v1.0.0 remove
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
- The installer downloads the matching GitHub Release asset, verifies both the
62
- release checksum and every checksum inside the package, and then registers a
63
- private managed marketplace under the current Codex home.
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
- ### Option 3: download from GitHub Releases
107
+ ### Install from a tagged GitHub source
66
108
 
67
- Download `opensocrates.mjs` from the
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
- node opensocrates.mjs install
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
- For a fully manual download and checksum check:
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
- curl -fLO https://github.com/ParkerHwang/OpenSocrates/releases/download/v1.0.0/opensocrates-1.0.0-codex-plugin.zip
79
- curl -fLO https://github.com/ParkerHwang/OpenSocrates/releases/download/v1.0.0/opensocrates-1.0.0-codex-plugin.zip.sha256
80
- shasum -a 256 -c opensocrates-1.0.0-codex-plugin.zip.sha256
81
- node opensocrates.mjs install \
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
- ### Option 4: build and install from source
129
+ Replace `claude` with `codex` for the Codex package.
130
+
131
+ ### Migrating a pre-1.0 Claude plugin
87
132
 
88
- Requires [uv](https://docs.astral.sh/uv/) and Python 3.12.
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
- git clone https://github.com/ParkerHwang/OpenSocrates.git
92
- cd OpenSocrates
93
- uv python install 3.12
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 each submitted prompt, OpenSocrates may intervene
105
- when the request needs judgment, interpretation, diagnosis, explanation,
106
- planning, evidence reconciliation, or another structured reasoning process.
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. uses a fresh, ephemeral selector thread;
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 one hidden context message telling the active task to read that file.
114
-
115
- There is no fixed selection-count limit. The hook message stays small while
116
- the full selected theory and examples remain uncompressed in the referenced
117
- file.
118
-
119
- The selector has a 30-second internal deadline, does not retry, and fails open.
120
- A timeout, SDK error, invalid output, non-intervention decision, unsafe
121
- context, or unavailable hook produces no injection and does not block the
122
- user's task.
123
-
124
- To prevent the selector from requesting bounded transcript context:
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 locally through the Codex app-server and the user's existing
133
- Codex OAuth session. It does not require an API key, host a backend, execute
134
- the user's requested task, or add telemetry.
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, OAuth credentials, and
138
- selector reasoning are not written to records, logs, metrics, diagnostics, or
139
- temporary instruction files. Turn files are removed on `Stop`, remaining
140
- session files on `SessionEnd`, and crash leftovers older than 24 hours on
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 current
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 the locked development environment and run:
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 selector source |
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 the
181
- Git history.
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.0:
37
+ OpenSocrates 1.x:
38
38
 
39
- - runs locally through Codex and uses the user's existing OAuth session;
40
- - does not require or store an OpenAI API key;
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`, and actual host hook delivery are not claimed as validated.
47
- See the release limitations file for the complete measured boundary.
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.0.0
1
+ 1.1.0