mirror of
https://github.com/Gitlawb/openclaude.git
synced 2026-11-06 20:58:14 -04:00
The npm package moves from the @gitlawb scope to @twigpine. Everything that names the package now uses the new name, and the release workflow can create the new package and close out the old one. Rename - package.json, bun.lock, release-please config, docs, website, VS Code extension and tests use @twigpine/openclaude. - scripts/build.ts takes the baked-in package name from package.json instead of repeating it; scripts/verify-clean-install.ts does the same. One final release under the old name, then nothing - Shipped builds have no working auto-updater (the no-telemetry plugin stubs it out), so people update by re-running the install command. Anyone still typing the old name lands on whatever is latest there. - release.yml publishes this release once more as @gitlawb/openclaude. That build shows a startup notice, and `openclaude update` and `/update` print the same note and stop, saying the package moved and how to switch. - legacy-scope-gate limits this to a single release. It only runs while the old name's latest version is still 0.31.0. - There is no in-place migration. Both packages own the `openclaude` bin, so npm refuses to install one over the other, and a forced install is undone by uninstalling the old package. The docs give the safe order. Tokenless releases (OIDC only) - Both publish steps authenticate through npm trusted publishing and attach provenance; no npm token is used anywhere. npm only attaches a trusted publisher to a package that already exists, so @twigpine/openclaude is created once by hand as an empty 0.0.0 placeholder before its first release. - Publish steps skip a version that is already on the registry, publish the verified dist/ with --ignore-scripts, and report provenance and whether a trusted publisher was used in the run summary (scripts/npm-publish-report.ts). - The legacy-named build is built and install-verified before anything is published. Co-authored-by: OpenClaude <openclaude@gitlawb.com>
48 lines
1.6 KiB
TypeScript
48 lines
1.6 KiB
TypeScript
import { GrpcServer } from '../src/grpc/server.ts'
|
|
import { init } from '../src/entrypoints/init.ts'
|
|
|
|
// Polyfill MACRO which is normally injected by the bundler
|
|
Object.assign(globalThis, {
|
|
MACRO: {
|
|
VERSION: '0.1.7',
|
|
DISPLAY_VERSION: '0.1.7',
|
|
PACKAGE_URL: '@twigpine/openclaude',
|
|
}
|
|
})
|
|
|
|
async function main() {
|
|
console.log('Starting OpenClaude gRPC Server...')
|
|
await init()
|
|
|
|
// Mirror CLI bootstrap: hydrate secure tokens and resolve provider profile
|
|
const { enableConfigs } = await import('../src/utils/config.js')
|
|
enableConfigs()
|
|
const { applySafeConfigEnvironmentVariables } = await import('../src/utils/managedEnv.js')
|
|
applySafeConfigEnvironmentVariables()
|
|
const { hydrateGeminiAccessTokenFromSecureStorage } = await import('../src/utils/geminiCredentials.js')
|
|
hydrateGeminiAccessTokenFromSecureStorage()
|
|
const { hydrateGithubModelsTokenFromSecureStorage } = await import('../src/utils/githubModelsCredentials.js')
|
|
hydrateGithubModelsTokenFromSecureStorage()
|
|
|
|
const { applyStartupEnvFromProfile } = await import('../src/utils/providerProfile.js')
|
|
const { validateProviderEnvOrExit } = await import('../src/utils/providerValidation.js')
|
|
await applyStartupEnvFromProfile({
|
|
processEnv: process.env,
|
|
onValidationError: message => {
|
|
console.warn(message)
|
|
},
|
|
})
|
|
await validateProviderEnvOrExit()
|
|
|
|
const port = process.env.GRPC_PORT ? parseInt(process.env.GRPC_PORT, 10) : 50051
|
|
const host = process.env.GRPC_HOST || 'localhost'
|
|
const server = new GrpcServer()
|
|
|
|
server.start(port, host)
|
|
}
|
|
|
|
main().catch((err) => {
|
|
console.error('Fatal error starting gRPC server:', err)
|
|
process.exit(1)
|
|
})
|