{"_id":"@dboxai/claude-helper","_rev":"2-f62f17d98b3b1f0e958db0e061726d9f","name":"@dboxai/claude-helper","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@dboxai/claude-helper","version":"0.1.0","license":"UNLICENSED","_id":"@dboxai/claude-helper@0.1.0","maintainers":[{"name":"jklz","email":"jklz@me.com"}],"homepage":"https://github.com/911it/claude-tools#readme","bugs":{"url":"https://github.com/911it/claude-tools/issues"},"nx":{"tags":["audience:general","visibility:public","artifact:app","publish:npmjs"],"targets":{"prepare-publish":{"cache":false,"options":{"cwd":"{projectRoot}","commands":["rm -rf dist tsconfig.lib.tsbuildinfo","npx nx run @dboxai/claude-helper:build --skip-nx-cache","for f in dist/bin/claudec.js dist/bin/claudecr.js dist/bin/cc-setup.js dist/bin/cc-global-setup.js; do if [ ! -s \"$f\" ]; then echo \"ERROR: missing or empty bin: $f\" >&2; exit 1; fi; done; echo \"bin verification passed\"","chmod +x dist/bin/*.js"],"parallel":false},"executor":"nx:run-commands"}}},"bin":{"claudec":"dist/bin/claudec.js","cc-setup":"dist/bin/cc-setup.js","claudecr":"dist/bin/claudecr.js","cc-global-setup":"dist/bin/cc-global-setup.js"},"dist":{"shasum":"9126cda649e35468c2025ad5145b815bb139737a","tarball":"https://registry.npmjs.org/@dboxai/claude-helper/-/claude-helper-0.1.0.tgz","fileCount":66,"integrity":"sha512-geNo4Pc6lBuU5ZzHSmUdYAIE9QLVtPGdOdae6/pteaXIetcKhtBDT7qOQF+IEY0RIjkOSk89hQS18NJZKfLGGw==","signatures":[{"sig":"MEMCHxqb1zhutFNQye32LCvEqtbgOKhx0moFBKJ85uojBm0CIC+oOFiKpkIWXomj7C0+NJUWSNx1PXzpnZ4pb2QNV+Mh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112676},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"617b5e601ddd7ef1fa97b901b944a4f4f9dce12c","scripts":{"prepublishOnly":"npx nx run @dboxai/claude-helper:prepare-publish 1>&2"},"_npmUser":{"name":"jklz","email":"jklz@me.com"},"repository":{"url":"git+https://github.com/911it/claude-tools.git","type":"git","directory":"apps/helper"},"_npmVersion":"10.8.2","description":"Cross-platform launcher and setup CLI for Claude Code (claudec, claudecr, cc-setup, cc-global-setup)","directories":{},"_nodeVersion":"20.19.6","dependencies":{"cross-spawn":"^7.0.6","@dboxai/cli-config":"^0.1.0","@dboxai/cli-telemetry":"^0.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/cross-spawn":"^6.0.6"},"_npmOperationalInternal":{"tmp":"tmp/claude-helper_0.1.0_1784752044151_0.4746898729713642","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@dboxai/claude-helper","version":"0.1.1","description":"Cross-platform launcher and setup CLI for Claude Code (claudec, claudecr, cc-setup, cc-global-setup)","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"bin":{"claudec":"dist/bin/claudec.js","claudecr":"dist/bin/claudecr.js","cc-setup":"dist/bin/cc-setup.js","cc-global-setup":"dist/bin/cc-global-setup.js"},"dependencies":{"@dboxai/cli-config":"^0.1.0","@dboxai/cli-telemetry":"^0.1.0","cross-spawn":"^7.0.6"},"devDependencies":{"@types/cross-spawn":"^6.0.6"},"publishConfig":{"registry":"https://registry.npmjs.org","access":"public"},"repository":{"type":"git","url":"git+https://github.com/911it/claude-tools.git","directory":"apps/helper"},"license":"UNLICENSED","scripts":{"prepublishOnly":"npx nx run @dboxai/claude-helper:prepare-publish 1>&2"},"nx":{"tags":["audience:general","visibility:public","artifact:app","publish:npmjs"],"targets":{"prepare-publish":{"executor":"nx:run-commands","cache":false,"options":{"cwd":"{projectRoot}","parallel":false,"commands":["rm -rf dist tsconfig.lib.tsbuildinfo","npx nx run @dboxai/claude-helper:build --skip-nx-cache","for f in dist/bin/claudec.js dist/bin/claudecr.js dist/bin/cc-setup.js dist/bin/cc-global-setup.js; do if [ ! -s \"$f\" ]; then echo \"ERROR: missing or empty bin: $f\" >&2; exit 1; fi; done; echo \"bin verification passed\"","chmod +x dist/bin/*.js"]}}}},"_id":"@dboxai/claude-helper@0.1.1","gitHead":"c543b81fe3bc57d114667ad60dbd3f835df21bde","bugs":{"url":"https://github.com/911it/claude-tools/issues"},"homepage":"https://github.com/911it/claude-tools#readme","_nodeVersion":"20.19.6","_npmVersion":"10.8.2","dist":{"integrity":"sha512-X0LOZgBImwqkdb2dWiZOn0zzy0+Owdc/5Ocoa3KUPnoEPzoRY1IIiHBpLCxPxIAESp3RIXbEy07x6AFUzaQieA==","shasum":"44f8daeaf57064fdf4409df0607eab8ee1929a0c","tarball":"https://registry.npmjs.org/@dboxai/claude-helper/-/claude-helper-0.1.1.tgz","fileCount":66,"unpackedSize":112706,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCH2HfuH3oesgfB2eUNSza+xGmP2To2ttKTIjJI2ZFgZICIQDqP2VeTO6FrOaPy7Tb04E1w6YTJrbN7JzFISoAmGQrDg=="}]},"_npmUser":{"name":"jklz","email":"jklz@me.com"},"directories":{},"maintainers":[{"name":"jklz","email":"jklz@me.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/claude-helper_0.1.1_1786589204885_0.8940926979216084"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-22T20:27:24.047Z","modified":"2026-08-13T02:46:45.185Z","0.1.0":"2026-07-22T20:27:24.286Z","0.1.1":"2026-08-13T02:46:45.019Z"},"bugs":{"url":"https://github.com/911it/claude-tools/issues"},"license":"UNLICENSED","homepage":"https://github.com/911it/claude-tools#readme","repository":{"type":"git","url":"git+https://github.com/911it/claude-tools.git","directory":"apps/helper"},"description":"Cross-platform launcher and setup CLI for Claude Code (claudec, claudecr, cc-setup, cc-global-setup)","maintainers":[{"name":"jklz","email":"jklz@me.com"}],"readme":"# @dboxai/claude-helper\n\nCross-platform, config-driven launcher and setup CLI for Claude Code. Replaces\nthe legacy bash `claudec` / `claudecr` shell functions with an npm package that\ncomputes launch flags, builds telemetry, marks directories trusted, and\npatches Claude Code settings safely. Built on `@dboxai/cli-config` and\n`@dboxai/cli-telemetry`.\n\n## Install\n\n```sh\nnpm install -g @dboxai/claude-helper\n```\n\nThis installs four binaries: `claudec`, `claudecr`, `cc-setup`,\n`cc-global-setup`.\n\n## Bins\n\n### `claudec [args...]`\n\nLaunches `claude` with computed flags, passing `args` straight through.\n\n```sh\nclaudec\nclaudec --model claude-sonnet-5\n```\n\nWhat it does:\n1. Rejects `--allow-dangerously-skip-permissions`, `--append-system-prompt`,\n   and `--append-system-prompt-file` if present in `args` (exact token or\n   `=value` form) — these are managed by the launcher, not passed by hand.\n2. Loads the global config (creating it with defaults on first run) and the\n   optional project `.dboxai.json`, then resolves them via\n   `@dboxai/cli-config`'s `resolveConfig`.\n3. If `allowBypassPermissions` resolves `true`, adds\n   `--allow-dangerously-skip-permissions`.\n4. Adds `--append-system-prompt-file={path}` for each enabled *and existing*\n   location, in order: global (`{globalConfigDir}/{file}`), parent\n   (`../{file}`), project (`./{file}`).\n5. Computes `OTEL_RESOURCE_ATTRIBUTES` via `@dboxai/cli-telemetry` (gated by\n   `telemetry.active` / `telemetry.force`) and sets it on the child process\n   environment. If `telemetry.write` is enabled and the computed attributes\n   don't include a volatile key (`git.branch`, `git.isWorktree`), also\n   persists it to `./.claude/settings.local.json` (created if missing, added\n   to `.gitignore`).\n6. Marks the current directory trusted in `~/.claude.json`\n   (`hasTrustDialogAccepted: true`) — best-effort, never blocks the launch.\n7. Spawns `claude` with `args` appended after the computed flags, `stdio`\n   inherited; the parent process idles and propagates the child's exit code\n   or signal.\n\n### `claudecr [session-args...]`\n\nSame pipeline as `claudec`, for resuming a session:\n\n```sh\nclaudecr\n```\n\nAdditionally rejects `-r`, `-c`, `--resume`, `--continue` in user args (exact\ntoken or `=value` form) — `claudecr` manages `--resume` itself, appended as\nthe very last argument after all flags and passthrough args.\n\n### `cc-setup`\n\nOne-time per-project setup. Run once from the root of a project you want\n`claudec`/`claudecr` telemetry configured for:\n\n```sh\ncd ~/work/my-project\ncc-setup\n```\n\nWhat it does:\n1. Loads (or creates) the global config to resolve the `clients` map, then\n   patches `./.dboxai.json` (creating it if missing; each leaf set\n   only if not already present):\n   - `telemetry.project = true`\n   - `telemetry.root = true`\n   - `telemetry.client` = the client name auto-resolved from the global\n     `clients` map for the current directory (written as a literal string)\n   - `telemetry.git.url` = `git config --get remote.origin.url` (omitted\n     entirely if the directory isn't a git repo or has no remote)\n2. Patches `./.claude/settings.json` (created if missing; **no backup**, no\n   `.gitignore` interaction): `attribution.commit: \"\"`, `attribution.pr: \"\"`,\n   `includeCoAuthoredBy: false` — each only if not already present.\n3. Marks the current directory trusted in `~/.claude.json`.\n4. Prints a summary of what was created / patched / skipped.\n\n### `cc-global-setup`\n\nOne-time global (per-machine) setup:\n\n```sh\ncc-global-setup\n```\n\nWhat it does:\n1. Creates `~/.dboxai/config.json` (or `%APPDATA%/dboxai/config.json` on\n   Windows) with `DEFAULT_CONFIG` if it doesn't already exist; leaves it\n   untouched otherwise.\n2. Backs up `~/.claude/settings.json` to\n   `~/.claude/settings.json.dboxai.backup` (only if the file currently\n   exists; overwrites any previous backup), then patches it, leaf-by-leaf,\n   never overwriting an existing value:\n   - `attribution.commit: \"\"`, `attribution.pr: \"\"`,\n     `includeCoAuthoredBy: false`\n   - 11 `env.*` telemetry/behavior variables (`CLAUDE_CODE_ENABLE_TELEMETRY`,\n     `OTEL_EXPORTER_OTLP_PROTOCOL`, `OTEL_METRICS_EXPORTER`,\n     `OTEL_METRICS_INCLUDE_VERSION`, `CLAUDE_CODE_ENABLE_TASKS`,\n     `CLAUDE_CODE_DISABLE_FAST_MODE`, `OTEL_LOG_TOOL_DETAILS`,\n     `OTEL_LOG_USER_PROMPTS`,\n     `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`,\n     `ENABLE_CLAUDEAI_MCP_SERVERS`, `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL`)\n     — each added only if absent from **both** the settings file and the\n     current process environment, so a variable you've already exported\n     yourself is never copied into the file.\n3. Prints a summary: whether the global config was created, whether a backup\n   was written, and which settings leaves were added vs. skipped (and why).\n\nAn unparseable `~/.claude/settings.json` aborts `cc-global-setup` (and\n`cc-setup`'s settings patch) with a clear error rather than risk clobbering a\nfile it can't safely merge into.\n\n## Config reference\n\n`claudec`/`claudecr`/`cc-setup`/`cc-global-setup` are all driven by the config\nformat documented in\n[`@dboxai/cli-config`](../../packages/cli-config/README.md) — config file\nlocations per OS, the `.dboxai.json` project config, resolution precedence,\nand group-boolean expansion all live there.\n\n## Publishing / `@dboxai` npm org\n\nAll three `@dboxai` packages (`cli-config`, `cli-telemetry`, `claude-helper`)\npublish publicly to npmjs.com under the `@dboxai` scope, license `UNLICENSED`.\nPublishing requires being logged into an npm account with publish access to\nthe `@dboxai` org:\n\n```sh\nnpm login\n```\n\nPublishing is **manual for now** — there is no CI-driven release for these\npackages yet. To cut a release from a clean working tree:\n\n```sh\nnpx nx release --dry-run   # preview version bumps and changelogs\nnpx nx release publish     # or: npm publish (per package, from its dist)\n```\n\n`nx release` resolves each package's current version from disk\n(`fallbackCurrentVersionResolver: \"disk\"`) since none of the three has a git\nrelease tag yet — the very first release starts from the `0.1.0` committed in\neach `package.json`.\n\n## License\n\nUNLICENSED — internal `@dboxai` package, not for public reuse.\n","readmeFilename":"README.md"}