@cnwenf/occ 2.1.290 → 2.1.291

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.
Files changed (3) hide show
  1. package/README.md +4 -4
  2. package/dist/cli.js +15 -1
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  [![npm version](https://img.shields.io/npm/v/@cnwenf/occ.svg)](https://www.npmjs.com/package/@cnwenf/occ)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
7
7
  [![Runtime: Bun](https://img.shields.io/badge/Runtime-Bun-%23000000.svg)](https://bun.sh/)
8
- [![Tracks: Claude Code 2.1.218](https://img.shields.io/badge/Tracks-Claude%20Code%202.1.218-blueviolet.svg)](https://docs.anthropic.com/en/docs/claude-code)
8
+ [![Tracks: Claude Code 2.1.219](https://img.shields.io/badge/Tracks-Claude%20Code%202.1.219-blueviolet.svg)](https://docs.anthropic.com/en/docs/claude-code)
9
9
 
10
10
  [简体中文](./README.zh-CN.md) · **English**
11
11
 
@@ -13,7 +13,7 @@
13
13
 
14
14
  ## What is OCC
15
15
 
16
- **Open C Code (OCC)** is an open-source coding agent. Its capabilities are aligned with [Claude Code](https://docs.anthropic.com/en/docs/claude-code) (currently tracking `2.1.218`). The code is fully open, auditable, backdoor-free, and your data stays under your control.
16
+ **Open C Code (OCC)** is an open-source coding agent. Its capabilities are aligned with [Claude Code](https://docs.anthropic.com/en/docs/claude-code) (currently tracking `2.1.219` — 2.1.218 fully aligned, 2.1.219 partial per OCC-39 gap report). The code is fully open, auditable, backdoor-free, and your data stays under your control.
17
17
 
18
18
  If you worry that a closed-source CLI might hide backdoors, or that your code and credentials are uploaded to unauditable services, OCC is for you: all source is open and unobfuscated, the build is reproducible from source, and API credentials are sent only to endpoints you configure.
19
19
 
@@ -62,7 +62,7 @@ Requires a valid Anthropic API Key (or AWS Bedrock / Google Vertex / Azure Found
62
62
  | **Auditability** | Line-by-line reviewable | No |
63
63
  | **Telemetry** | Minimal (analytics stubbed) | Standard |
64
64
  | **Data sovereignty** | Credentials stay on your machine; requests only to endpoints you configure | Anthropic endpoints |
65
- | **Capability parity** | Tracks CC `2.1.218` | Reference implementation |
65
+ | **Capability parity** | Tracks CC `2.1.219` (partial) | Reference implementation |
66
66
  | **Providers** | Anthropic Direct, Bedrock, Vertex, Azure | Anthropic, Bedrock, Vertex |
67
67
  | **Cost** | Free & open-source (MIT) | Subscription |
68
68
  | **Build** | Reproducible from source | N/A |
@@ -157,7 +157,7 @@ For architecture, entry/bootstrap, tool system, UI layer, and module-status deta
157
157
 
158
158
  ## Status
159
159
 
160
- - Tracks Claude Code **`2.1.218`**.
160
+ - Tracks Claude Code **`2.1.219` (partial)**.
161
161
  - Published to npm as [`@cnwenf/occ`](https://www.npmjs.com/package/@cnwenf/occ).
162
162
  - Many modules are intentionally stubbed or feature-flagged off — see "Disabled / stubbed" above.
163
163
 
package/dist/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env bun
2
- globalThis.MACRO={"VERSION":"2.1.290","BINARY_NAME":"occ","BUILD_TIME":"2026-07-29T17:58:05.806Z","FEEDBACK_CHANNEL":"","ISSUES_EXPLAINER":"","NATIVE_PACKAGE_URL":"","PACKAGE_URL":"@cnwenf/occ","VERSION_CHANGELOG":""};
2
+ globalThis.MACRO={"VERSION":"2.1.291","BINARY_NAME":"occ","BUILD_TIME":"2026-07-30T17:31:04.907Z","FEEDBACK_CHANNEL":"","ISSUES_EXPLAINER":"","NATIVE_PACKAGE_URL":"","PACKAGE_URL":"@cnwenf/occ","VERSION_CHANGELOG":""};
3
3
  // @bun
4
4
  var __create = Object.create;
5
5
  var __getProtoOf = Object.getPrototypeOf;
@@ -57625,6 +57625,7 @@ var init_sandboxTypes = __esm(() => {
57625
57625
  allowedDomains: exports_external.array(exports_external.string()).optional(),
57626
57626
  deniedDomains: exports_external.array(exports_external.string()).optional().describe("Domains to block even when a broader allowedDomains wildcard would otherwise permit them."),
57627
57627
  allowManagedDomainsOnly: exports_external.boolean().optional().describe("When true (and set in managed settings), only allowedDomains and WebFetch(domain:...) allow rules from managed settings are respected. " + "User, project, local, and flag settings domains are ignored. Denied domains are still respected from all sources."),
57628
+ strictAllowlist: exports_external.boolean().optional().describe("When true, the sandbox runtime deterministically denies hosts not in allowedDomains instead of prompting. " + "Enforced for sandboxed commands only \u2014 in-process tools such as WebFetch are not gated by this setting. " + "Only honored from user, managed/policy, or CLI (--settings) settings \u2014 " + "project settings (.claude/settings.json and .claude/settings.local.json) are ignored."),
57628
57629
  allowUnixSockets: exports_external.array(exports_external.string()).optional().describe("macOS only: Unix socket paths to allow. Ignored on Linux (seccomp cannot filter by path)."),
57629
57630
  allowAllUnixSockets: exports_external.boolean().optional().describe("If true, allow all Unix sockets (disables blocking on both platforms)."),
57630
57631
  allowLocalBinding: exports_external.boolean().optional(),
@@ -201072,6 +201073,7 @@ Usage notes:
201072
201073
  // src/utils/sandbox/sandbox-adapter.ts
201073
201074
  var exports_sandbox_adapter = {};
201074
201075
  __export(exports_sandbox_adapter, {
201076
+ shouldEnforceStrictAllowlist: () => shouldEnforceStrictAllowlist,
201075
201077
  shouldAllowManagedSandboxDomainsOnly: () => shouldAllowManagedSandboxDomainsOnly,
201076
201078
  resolveSandboxFilesystemPath: () => resolveSandboxFilesystemPath,
201077
201079
  resolvePathPatternForSandbox: () => resolvePathPatternForSandbox,
@@ -201119,6 +201121,14 @@ function resolveSandboxFilesystemPath(pattern, source) {
201119
201121
  function shouldAllowManagedSandboxDomainsOnly() {
201120
201122
  return getSettingsForSource("policySettings")?.sandbox?.network?.allowManagedDomainsOnly === true;
201121
201123
  }
201124
+ function shouldEnforceStrictAllowlist() {
201125
+ const honoredSources = [
201126
+ "userSettings",
201127
+ "flagSettings",
201128
+ "policySettings"
201129
+ ];
201130
+ return honoredSources.some((source) => getSettingsForSource(source)?.sandbox?.network?.strictAllowlist === true);
201131
+ }
201122
201132
  function shouldAllowManagedReadPathsOnly() {
201123
201133
  return getSettingsForSource("policySettings")?.sandbox?.filesystem?.allowManagedReadPathsOnly === true;
201124
201134
  }
@@ -201480,6 +201490,10 @@ async function initialize3(sandboxAskCallback) {
201480
201490
  logForDebugging(`[sandbox] Blocked network request to ${hostPattern.host} (allowManagedDomainsOnly)`);
201481
201491
  return false;
201482
201492
  }
201493
+ if (shouldEnforceStrictAllowlist()) {
201494
+ logForDebugging(`[sandbox] Blocked network request to ${hostPattern.host} (strictAllowlist)`);
201495
+ return false;
201496
+ }
201483
201497
  return sandboxAskCallback(hostPattern);
201484
201498
  } : undefined;
201485
201499
  initializationPromise2 = (async () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cnwenf/occ",
3
- "version": "2.1.290",
3
+ "version": "2.1.291",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "bin": {