mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-27 18:01:46 +00:00
* fix(plugins): resolve sdk alias from import.meta.url for external plugins When a plugin is installed outside the openclaw package (e.g. ~/.openclaw/extensions/), resolveLoaderPluginSdkPackageRoot() fails to locate the openclaw root via cwd or argv1 hints, resulting in an empty alias map. Jiti then cannot resolve openclaw/plugin-sdk/* imports and the plugin fails to load with "Cannot find module". Since sdk-alias.ts is always compiled into the openclaw package itself, import.meta.url reliably points inside the installation directory. Add it as an unconditional fallback in resolveLoaderPluginSdkPackageRoot() so external plugins can always resolve the plugin SDK. Fixes: Error: Cannot find module 'openclaw/plugin-sdk/plugin-entry' * fix(plugins): pass loader moduleUrl to resolve sdk alias for external plugins The previous approach of adding import.meta.url as an unconditional fallback inside resolveLoaderPluginSdkPackageRoot() broke test isolation: tests that expected null from untrusted fixtures started finding the real openclaw root. Revert that and instead thread an optional moduleUrl through buildPluginLoaderAliasMap → resolvePluginSdkScopedAliasMap → listPluginSdkExportedSubpaths → resolveLoaderPluginSdkPackageRoot. loader.ts passes its own import.meta.url as the hint, which is always inside the openclaw installation. This guarantees the sdk alias map is built correctly even when argv1 does not resolve to the openclaw root (e.g. single-binary distributions, custom launchers, or Docker images where the binary wrapper is not a standard npm symlink). Tests that call sdk-alias helpers directly without moduleUrl are unaffected and continue to enforce the existing isolation semantics. A new test covers the moduleUrl resolution path explicitly. * fix(plugins): use existing fixture file for moduleUrl hint in test The previous test pointed loaderModuleUrl to dist/plugins/loader.js which is not created by createPluginSdkAliasFixture, causing resolution to fall back to the real openclaw root instead of the fixture root. Use fixture.root/openclaw.mjs (created by the bin+marker fixture) so the moduleUrl hint reliably resolves to the fixture package root. * fix(test): use fixture.root as cwd in external plugin alias test When process.cwd() is mocked to the external plugin dir, the findNearestPluginSdkPackageRoot(process.cwd()) fallback resolves to the real openclaw repo root in the CI test runner, making the test resolve the wrong aliases. Using fixture.root as cwd ensures all resolution paths consistently point to the fixture. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(release): add plugin-sdk:check-exports to release:check plugin-sdk subpath exports (e.g. openclaw/plugin-sdk/plugin-entry, openclaw/plugin-sdk/provider-auth) were missing from the published package.json, causing external plugins to fail at load time with 'Cannot find module openclaw/plugin-sdk/plugin-entry'. Root cause: sync-plugin-sdk-exports.mjs syncs plugin-sdk-entrypoints.json into package.json exports, but this sync was never validated in the release:check pipeline. As a result, any drift between plugin-sdk-entrypoints.json and the published package.json goes undetected until users hit the runtime error. Fix: add plugin-sdk:check-exports to release:check so the CI gate fails loudly if the exports are out of sync before publishing. * fix(test): isolate moduleUrl hint test from process.cwd() fallback Use externalPluginRoot as cwd instead of fixture.root, so only the moduleUrl hint can resolve the openclaw package root. Previously, withCwd(fixture.root) allowed the process.cwd() fallback to also resolve the fixture root, making the moduleUrl path untested. Spotted by greptile-apps review on #54283. * fix(test): use empty string to disable argv1 in moduleUrl hint test Passing undefined for argv1 in buildPluginLoaderAliasMap triggers the STARTUP_ARGV1 default (process.argv[1], the vitest runner binary inside the openclaw repo). resolveTrustedOpenClawRootFromArgvHint then resolves to the real openclaw root before the moduleUrl hint is checked, making the test resolve wrong aliases. Pass "" instead: falsy so the hint is skipped, but does not trigger the default parameter value. Only the moduleUrl can bridge the gap. Made-with: Cursor * fix(plugins): thread moduleUrl through SDK alias resolution for external plugins (#54283) Thanks @xieyongliang --------- Co-authored-by: bojsun <bojie.sun@bytedance.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Jerry <jerry@JerrydeMacBook-Air-2.local> Co-authored-by: yongliang.xie <yongliang.xie@bytedance.com> Co-authored-by: George Zhang <georgezhangtj97@gmail.com>
887 lines
42 KiB
JSON
887 lines
42 KiB
JSON
{
|
|
"name": "openclaw",
|
|
"version": "2026.3.24-beta.2",
|
|
"description": "Multi-channel AI gateway with extensible messaging integrations",
|
|
"keywords": [],
|
|
"homepage": "https://github.com/openclaw/openclaw#readme",
|
|
"bugs": {
|
|
"url": "https://github.com/openclaw/openclaw/issues"
|
|
},
|
|
"license": "MIT",
|
|
"author": "",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/openclaw/openclaw.git"
|
|
},
|
|
"bin": {
|
|
"openclaw": "openclaw.mjs"
|
|
},
|
|
"directories": {
|
|
"doc": "docs",
|
|
"test": "test"
|
|
},
|
|
"files": [
|
|
"CHANGELOG.md",
|
|
"LICENSE",
|
|
"openclaw.mjs",
|
|
"README-header.png",
|
|
"README.md",
|
|
"assets/",
|
|
"dist/",
|
|
"docs/",
|
|
"!docs/.generated/**",
|
|
"!docs/.i18n/zh-CN.tm.jsonl",
|
|
"skills/"
|
|
],
|
|
"type": "module",
|
|
"main": "dist/index.js",
|
|
"exports": {
|
|
".": "./dist/index.js",
|
|
"./plugin-sdk": {
|
|
"types": "./dist/plugin-sdk/index.d.ts",
|
|
"default": "./dist/plugin-sdk/index.js"
|
|
},
|
|
"./plugin-sdk/core": {
|
|
"types": "./dist/plugin-sdk/core.d.ts",
|
|
"default": "./dist/plugin-sdk/core.js"
|
|
},
|
|
"./plugin-sdk/ollama-setup": {
|
|
"types": "./dist/plugin-sdk/ollama-setup.d.ts",
|
|
"default": "./dist/plugin-sdk/ollama-setup.js"
|
|
},
|
|
"./plugin-sdk/provider-setup": {
|
|
"types": "./dist/plugin-sdk/provider-setup.d.ts",
|
|
"default": "./dist/plugin-sdk/provider-setup.js"
|
|
},
|
|
"./plugin-sdk/sandbox": {
|
|
"types": "./dist/plugin-sdk/sandbox.d.ts",
|
|
"default": "./dist/plugin-sdk/sandbox.js"
|
|
},
|
|
"./plugin-sdk/self-hosted-provider-setup": {
|
|
"types": "./dist/plugin-sdk/self-hosted-provider-setup.d.ts",
|
|
"default": "./dist/plugin-sdk/self-hosted-provider-setup.js"
|
|
},
|
|
"./plugin-sdk/routing": {
|
|
"types": "./dist/plugin-sdk/routing.d.ts",
|
|
"default": "./dist/plugin-sdk/routing.js"
|
|
},
|
|
"./plugin-sdk/runtime": {
|
|
"types": "./dist/plugin-sdk/runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/runtime.js"
|
|
},
|
|
"./plugin-sdk/runtime-env": {
|
|
"types": "./dist/plugin-sdk/runtime-env.d.ts",
|
|
"default": "./dist/plugin-sdk/runtime-env.js"
|
|
},
|
|
"./plugin-sdk/setup": {
|
|
"types": "./dist/plugin-sdk/setup.d.ts",
|
|
"default": "./dist/plugin-sdk/setup.js"
|
|
},
|
|
"./plugin-sdk/setup-adapter-runtime": {
|
|
"types": "./dist/plugin-sdk/setup-adapter-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/setup-adapter-runtime.js"
|
|
},
|
|
"./plugin-sdk/setup-runtime": {
|
|
"types": "./dist/plugin-sdk/setup-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/setup-runtime.js"
|
|
},
|
|
"./plugin-sdk/channel-setup": {
|
|
"types": "./dist/plugin-sdk/channel-setup.d.ts",
|
|
"default": "./dist/plugin-sdk/channel-setup.js"
|
|
},
|
|
"./plugin-sdk/setup-tools": {
|
|
"types": "./dist/plugin-sdk/setup-tools.d.ts",
|
|
"default": "./dist/plugin-sdk/setup-tools.js"
|
|
},
|
|
"./plugin-sdk/config-runtime": {
|
|
"types": "./dist/plugin-sdk/config-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/config-runtime.js"
|
|
},
|
|
"./plugin-sdk/reply-runtime": {
|
|
"types": "./dist/plugin-sdk/reply-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/reply-runtime.js"
|
|
},
|
|
"./plugin-sdk/reply-payload": {
|
|
"types": "./dist/plugin-sdk/reply-payload.d.ts",
|
|
"default": "./dist/plugin-sdk/reply-payload.js"
|
|
},
|
|
"./plugin-sdk/channel-reply-pipeline": {
|
|
"types": "./dist/plugin-sdk/channel-reply-pipeline.d.ts",
|
|
"default": "./dist/plugin-sdk/channel-reply-pipeline.js"
|
|
},
|
|
"./plugin-sdk/channel-runtime": {
|
|
"types": "./dist/plugin-sdk/channel-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/channel-runtime.js"
|
|
},
|
|
"./plugin-sdk/interactive-runtime": {
|
|
"types": "./dist/plugin-sdk/interactive-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/interactive-runtime.js"
|
|
},
|
|
"./plugin-sdk/outbound-runtime": {
|
|
"types": "./dist/plugin-sdk/outbound-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/outbound-runtime.js"
|
|
},
|
|
"./plugin-sdk/infra-runtime": {
|
|
"types": "./dist/plugin-sdk/infra-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/infra-runtime.js"
|
|
},
|
|
"./plugin-sdk/ssrf-runtime": {
|
|
"types": "./dist/plugin-sdk/ssrf-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/ssrf-runtime.js"
|
|
},
|
|
"./plugin-sdk/media-runtime": {
|
|
"types": "./dist/plugin-sdk/media-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/media-runtime.js"
|
|
},
|
|
"./plugin-sdk/media-understanding-runtime": {
|
|
"types": "./dist/plugin-sdk/media-understanding-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/media-understanding-runtime.js"
|
|
},
|
|
"./plugin-sdk/conversation-runtime": {
|
|
"types": "./dist/plugin-sdk/conversation-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/conversation-runtime.js"
|
|
},
|
|
"./plugin-sdk/matrix-runtime-heavy": {
|
|
"types": "./dist/plugin-sdk/matrix-runtime-heavy.d.ts",
|
|
"default": "./dist/plugin-sdk/matrix-runtime-heavy.js"
|
|
},
|
|
"./plugin-sdk/matrix-runtime-shared": {
|
|
"types": "./dist/plugin-sdk/matrix-runtime-shared.d.ts",
|
|
"default": "./dist/plugin-sdk/matrix-runtime-shared.js"
|
|
},
|
|
"./plugin-sdk/thread-bindings-runtime": {
|
|
"types": "./dist/plugin-sdk/thread-bindings-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/thread-bindings-runtime.js"
|
|
},
|
|
"./plugin-sdk/text-runtime": {
|
|
"types": "./dist/plugin-sdk/text-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/text-runtime.js"
|
|
},
|
|
"./plugin-sdk/agent-runtime": {
|
|
"types": "./dist/plugin-sdk/agent-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/agent-runtime.js"
|
|
},
|
|
"./plugin-sdk/speech-runtime": {
|
|
"types": "./dist/plugin-sdk/speech-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/speech-runtime.js"
|
|
},
|
|
"./plugin-sdk/speech-core": {
|
|
"types": "./dist/plugin-sdk/speech-core.d.ts",
|
|
"default": "./dist/plugin-sdk/speech-core.js"
|
|
},
|
|
"./plugin-sdk/plugin-runtime": {
|
|
"types": "./dist/plugin-sdk/plugin-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/plugin-runtime.js"
|
|
},
|
|
"./plugin-sdk/security-runtime": {
|
|
"types": "./dist/plugin-sdk/security-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/security-runtime.js"
|
|
},
|
|
"./plugin-sdk/gateway-runtime": {
|
|
"types": "./dist/plugin-sdk/gateway-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/gateway-runtime.js"
|
|
},
|
|
"./plugin-sdk/github-copilot-token": {
|
|
"types": "./dist/plugin-sdk/github-copilot-token.d.ts",
|
|
"default": "./dist/plugin-sdk/github-copilot-token.js"
|
|
},
|
|
"./plugin-sdk/cli-runtime": {
|
|
"types": "./dist/plugin-sdk/cli-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/cli-runtime.js"
|
|
},
|
|
"./plugin-sdk/hook-runtime": {
|
|
"types": "./dist/plugin-sdk/hook-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/hook-runtime.js"
|
|
},
|
|
"./plugin-sdk/process-runtime": {
|
|
"types": "./dist/plugin-sdk/process-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/process-runtime.js"
|
|
},
|
|
"./plugin-sdk/windows-spawn": {
|
|
"types": "./dist/plugin-sdk/windows-spawn.d.ts",
|
|
"default": "./dist/plugin-sdk/windows-spawn.js"
|
|
},
|
|
"./plugin-sdk/acp-runtime": {
|
|
"types": "./dist/plugin-sdk/acp-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/acp-runtime.js"
|
|
},
|
|
"./plugin-sdk/lazy-runtime": {
|
|
"types": "./dist/plugin-sdk/lazy-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/lazy-runtime.js"
|
|
},
|
|
"./plugin-sdk/testing": {
|
|
"types": "./dist/plugin-sdk/testing.d.ts",
|
|
"default": "./dist/plugin-sdk/testing.js"
|
|
},
|
|
"./plugin-sdk/temp-path": {
|
|
"types": "./dist/plugin-sdk/temp-path.d.ts",
|
|
"default": "./dist/plugin-sdk/temp-path.js"
|
|
},
|
|
"./plugin-sdk/account-helpers": {
|
|
"types": "./dist/plugin-sdk/account-helpers.d.ts",
|
|
"default": "./dist/plugin-sdk/account-helpers.js"
|
|
},
|
|
"./plugin-sdk/account-id": {
|
|
"types": "./dist/plugin-sdk/account-id.d.ts",
|
|
"default": "./dist/plugin-sdk/account-id.js"
|
|
},
|
|
"./plugin-sdk/account-resolution": {
|
|
"types": "./dist/plugin-sdk/account-resolution.d.ts",
|
|
"default": "./dist/plugin-sdk/account-resolution.js"
|
|
},
|
|
"./plugin-sdk/allow-from": {
|
|
"types": "./dist/plugin-sdk/allow-from.d.ts",
|
|
"default": "./dist/plugin-sdk/allow-from.js"
|
|
},
|
|
"./plugin-sdk/allowlist-config-edit": {
|
|
"types": "./dist/plugin-sdk/allowlist-config-edit.d.ts",
|
|
"default": "./dist/plugin-sdk/allowlist-config-edit.js"
|
|
},
|
|
"./plugin-sdk/bluebubbles": {
|
|
"types": "./dist/plugin-sdk/bluebubbles.d.ts",
|
|
"default": "./dist/plugin-sdk/bluebubbles.js"
|
|
},
|
|
"./plugin-sdk/boolean-param": {
|
|
"types": "./dist/plugin-sdk/boolean-param.d.ts",
|
|
"default": "./dist/plugin-sdk/boolean-param.js"
|
|
},
|
|
"./plugin-sdk/command-auth": {
|
|
"types": "./dist/plugin-sdk/command-auth.d.ts",
|
|
"default": "./dist/plugin-sdk/command-auth.js"
|
|
},
|
|
"./plugin-sdk/device-bootstrap": {
|
|
"types": "./dist/plugin-sdk/device-bootstrap.d.ts",
|
|
"default": "./dist/plugin-sdk/device-bootstrap.js"
|
|
},
|
|
"./plugin-sdk/diagnostics-otel": {
|
|
"types": "./dist/plugin-sdk/diagnostics-otel.d.ts",
|
|
"default": "./dist/plugin-sdk/diagnostics-otel.js"
|
|
},
|
|
"./plugin-sdk/diffs": {
|
|
"types": "./dist/plugin-sdk/diffs.d.ts",
|
|
"default": "./dist/plugin-sdk/diffs.js"
|
|
},
|
|
"./plugin-sdk/discord": {
|
|
"types": "./dist/plugin-sdk/discord.d.ts",
|
|
"default": "./dist/plugin-sdk/discord.js"
|
|
},
|
|
"./plugin-sdk/discord-core": {
|
|
"types": "./dist/plugin-sdk/discord-core.d.ts",
|
|
"default": "./dist/plugin-sdk/discord-core.js"
|
|
},
|
|
"./plugin-sdk/extension-shared": {
|
|
"types": "./dist/plugin-sdk/extension-shared.d.ts",
|
|
"default": "./dist/plugin-sdk/extension-shared.js"
|
|
},
|
|
"./plugin-sdk/channel-config-helpers": {
|
|
"types": "./dist/plugin-sdk/channel-config-helpers.d.ts",
|
|
"default": "./dist/plugin-sdk/channel-config-helpers.js"
|
|
},
|
|
"./plugin-sdk/channel-config-schema": {
|
|
"types": "./dist/plugin-sdk/channel-config-schema.d.ts",
|
|
"default": "./dist/plugin-sdk/channel-config-schema.js"
|
|
},
|
|
"./plugin-sdk/channel-actions": {
|
|
"types": "./dist/plugin-sdk/channel-actions.d.ts",
|
|
"default": "./dist/plugin-sdk/channel-actions.js"
|
|
},
|
|
"./plugin-sdk/channel-contract": {
|
|
"types": "./dist/plugin-sdk/channel-contract.d.ts",
|
|
"default": "./dist/plugin-sdk/channel-contract.js"
|
|
},
|
|
"./plugin-sdk/channel-feedback": {
|
|
"types": "./dist/plugin-sdk/channel-feedback.d.ts",
|
|
"default": "./dist/plugin-sdk/channel-feedback.js"
|
|
},
|
|
"./plugin-sdk/channel-inbound": {
|
|
"types": "./dist/plugin-sdk/channel-inbound.d.ts",
|
|
"default": "./dist/plugin-sdk/channel-inbound.js"
|
|
},
|
|
"./plugin-sdk/channel-lifecycle": {
|
|
"types": "./dist/plugin-sdk/channel-lifecycle.d.ts",
|
|
"default": "./dist/plugin-sdk/channel-lifecycle.js"
|
|
},
|
|
"./plugin-sdk/channel-pairing": {
|
|
"types": "./dist/plugin-sdk/channel-pairing.d.ts",
|
|
"default": "./dist/plugin-sdk/channel-pairing.js"
|
|
},
|
|
"./plugin-sdk/channel-policy": {
|
|
"types": "./dist/plugin-sdk/channel-policy.d.ts",
|
|
"default": "./dist/plugin-sdk/channel-policy.js"
|
|
},
|
|
"./plugin-sdk/channel-send-result": {
|
|
"types": "./dist/plugin-sdk/channel-send-result.d.ts",
|
|
"default": "./dist/plugin-sdk/channel-send-result.js"
|
|
},
|
|
"./plugin-sdk/channel-targets": {
|
|
"types": "./dist/plugin-sdk/channel-targets.d.ts",
|
|
"default": "./dist/plugin-sdk/channel-targets.js"
|
|
},
|
|
"./plugin-sdk/feishu": {
|
|
"types": "./dist/plugin-sdk/feishu.d.ts",
|
|
"default": "./dist/plugin-sdk/feishu.js"
|
|
},
|
|
"./plugin-sdk/group-access": {
|
|
"types": "./dist/plugin-sdk/group-access.d.ts",
|
|
"default": "./dist/plugin-sdk/group-access.js"
|
|
},
|
|
"./plugin-sdk/directory-runtime": {
|
|
"types": "./dist/plugin-sdk/directory-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/directory-runtime.js"
|
|
},
|
|
"./plugin-sdk/googlechat": {
|
|
"types": "./dist/plugin-sdk/googlechat.d.ts",
|
|
"default": "./dist/plugin-sdk/googlechat.js"
|
|
},
|
|
"./plugin-sdk/image-generation": {
|
|
"types": "./dist/plugin-sdk/image-generation.d.ts",
|
|
"default": "./dist/plugin-sdk/image-generation.js"
|
|
},
|
|
"./plugin-sdk/image-generation-core": {
|
|
"types": "./dist/plugin-sdk/image-generation-core.d.ts",
|
|
"default": "./dist/plugin-sdk/image-generation-core.js"
|
|
},
|
|
"./plugin-sdk/imessage": {
|
|
"types": "./dist/plugin-sdk/imessage.d.ts",
|
|
"default": "./dist/plugin-sdk/imessage.js"
|
|
},
|
|
"./plugin-sdk/imessage-core": {
|
|
"types": "./dist/plugin-sdk/imessage-core.d.ts",
|
|
"default": "./dist/plugin-sdk/imessage-core.js"
|
|
},
|
|
"./plugin-sdk/irc": {
|
|
"types": "./dist/plugin-sdk/irc.d.ts",
|
|
"default": "./dist/plugin-sdk/irc.js"
|
|
},
|
|
"./plugin-sdk/reply-history": {
|
|
"types": "./dist/plugin-sdk/reply-history.d.ts",
|
|
"default": "./dist/plugin-sdk/reply-history.js"
|
|
},
|
|
"./plugin-sdk/media-understanding": {
|
|
"types": "./dist/plugin-sdk/media-understanding.d.ts",
|
|
"default": "./dist/plugin-sdk/media-understanding.js"
|
|
},
|
|
"./plugin-sdk/request-url": {
|
|
"types": "./dist/plugin-sdk/request-url.d.ts",
|
|
"default": "./dist/plugin-sdk/request-url.js"
|
|
},
|
|
"./plugin-sdk/runtime-store": {
|
|
"types": "./dist/plugin-sdk/runtime-store.d.ts",
|
|
"default": "./dist/plugin-sdk/runtime-store.js"
|
|
},
|
|
"./plugin-sdk/json-store": {
|
|
"types": "./dist/plugin-sdk/json-store.d.ts",
|
|
"default": "./dist/plugin-sdk/json-store.js"
|
|
},
|
|
"./plugin-sdk/keyed-async-queue": {
|
|
"types": "./dist/plugin-sdk/keyed-async-queue.d.ts",
|
|
"default": "./dist/plugin-sdk/keyed-async-queue.js"
|
|
},
|
|
"./plugin-sdk/line": {
|
|
"types": "./dist/plugin-sdk/line.d.ts",
|
|
"default": "./dist/plugin-sdk/line.js"
|
|
},
|
|
"./plugin-sdk/line-core": {
|
|
"types": "./dist/plugin-sdk/line-core.d.ts",
|
|
"default": "./dist/plugin-sdk/line-core.js"
|
|
},
|
|
"./plugin-sdk/line-runtime": {
|
|
"types": "./dist/plugin-sdk/line-runtime.d.ts",
|
|
"default": "./dist/plugin-sdk/line-runtime.js"
|
|
},
|
|
"./plugin-sdk/llm-task": {
|
|
"types": "./dist/plugin-sdk/llm-task.d.ts",
|
|
"default": "./dist/plugin-sdk/llm-task.js"
|
|
},
|
|
"./plugin-sdk/matrix": {
|
|
"types": "./dist/plugin-sdk/matrix.d.ts",
|
|
"default": "./dist/plugin-sdk/matrix.js"
|
|
},
|
|
"./plugin-sdk/mattermost": {
|
|
"types": "./dist/plugin-sdk/mattermost.d.ts",
|
|
"default": "./dist/plugin-sdk/mattermost.js"
|
|
},
|
|
"./plugin-sdk/memory-core": {
|
|
"types": "./dist/plugin-sdk/memory-core.d.ts",
|
|
"default": "./dist/plugin-sdk/memory-core.js"
|
|
},
|
|
"./plugin-sdk/memory-lancedb": {
|
|
"types": "./dist/plugin-sdk/memory-lancedb.d.ts",
|
|
"default": "./dist/plugin-sdk/memory-lancedb.js"
|
|
},
|
|
"./plugin-sdk/msteams": {
|
|
"types": "./dist/plugin-sdk/msteams.d.ts",
|
|
"default": "./dist/plugin-sdk/msteams.js"
|
|
},
|
|
"./plugin-sdk/nextcloud-talk": {
|
|
"types": "./dist/plugin-sdk/nextcloud-talk.d.ts",
|
|
"default": "./dist/plugin-sdk/nextcloud-talk.js"
|
|
},
|
|
"./plugin-sdk/nostr": {
|
|
"types": "./dist/plugin-sdk/nostr.d.ts",
|
|
"default": "./dist/plugin-sdk/nostr.js"
|
|
},
|
|
"./plugin-sdk/provider-auth": {
|
|
"types": "./dist/plugin-sdk/provider-auth.d.ts",
|
|
"default": "./dist/plugin-sdk/provider-auth.js"
|
|
},
|
|
"./plugin-sdk/provider-auth-api-key": {
|
|
"types": "./dist/plugin-sdk/provider-auth-api-key.d.ts",
|
|
"default": "./dist/plugin-sdk/provider-auth-api-key.js"
|
|
},
|
|
"./plugin-sdk/provider-auth-login": {
|
|
"types": "./dist/plugin-sdk/provider-auth-login.d.ts",
|
|
"default": "./dist/plugin-sdk/provider-auth-login.js"
|
|
},
|
|
"./plugin-sdk/plugin-entry": {
|
|
"types": "./dist/plugin-sdk/plugin-entry.d.ts",
|
|
"default": "./dist/plugin-sdk/plugin-entry.js"
|
|
},
|
|
"./plugin-sdk/provider-catalog": {
|
|
"types": "./dist/plugin-sdk/provider-catalog.d.ts",
|
|
"default": "./dist/plugin-sdk/provider-catalog.js"
|
|
},
|
|
"./plugin-sdk/provider-entry": {
|
|
"types": "./dist/plugin-sdk/provider-entry.d.ts",
|
|
"default": "./dist/plugin-sdk/provider-entry.js"
|
|
},
|
|
"./plugin-sdk/provider-env-vars": {
|
|
"types": "./dist/plugin-sdk/provider-env-vars.d.ts",
|
|
"default": "./dist/plugin-sdk/provider-env-vars.js"
|
|
},
|
|
"./plugin-sdk/provider-google": {
|
|
"types": "./dist/plugin-sdk/provider-google.d.ts",
|
|
"default": "./dist/plugin-sdk/provider-google.js"
|
|
},
|
|
"./plugin-sdk/provider-models": {
|
|
"types": "./dist/plugin-sdk/provider-models.d.ts",
|
|
"default": "./dist/plugin-sdk/provider-models.js"
|
|
},
|
|
"./plugin-sdk/provider-onboard": {
|
|
"types": "./dist/plugin-sdk/provider-onboard.d.ts",
|
|
"default": "./dist/plugin-sdk/provider-onboard.js"
|
|
},
|
|
"./plugin-sdk/provider-stream": {
|
|
"types": "./dist/plugin-sdk/provider-stream.d.ts",
|
|
"default": "./dist/plugin-sdk/provider-stream.js"
|
|
},
|
|
"./plugin-sdk/provider-usage": {
|
|
"types": "./dist/plugin-sdk/provider-usage.d.ts",
|
|
"default": "./dist/plugin-sdk/provider-usage.js"
|
|
},
|
|
"./plugin-sdk/provider-web-search": {
|
|
"types": "./dist/plugin-sdk/provider-web-search.d.ts",
|
|
"default": "./dist/plugin-sdk/provider-web-search.js"
|
|
},
|
|
"./plugin-sdk/param-readers": {
|
|
"types": "./dist/plugin-sdk/param-readers.d.ts",
|
|
"default": "./dist/plugin-sdk/param-readers.js"
|
|
},
|
|
"./plugin-sdk/provider-zai-endpoint": {
|
|
"types": "./dist/plugin-sdk/provider-zai-endpoint.d.ts",
|
|
"default": "./dist/plugin-sdk/provider-zai-endpoint.js"
|
|
},
|
|
"./plugin-sdk/secret-input": {
|
|
"types": "./dist/plugin-sdk/secret-input.d.ts",
|
|
"default": "./dist/plugin-sdk/secret-input.js"
|
|
},
|
|
"./plugin-sdk/signal": {
|
|
"types": "./dist/plugin-sdk/signal.d.ts",
|
|
"default": "./dist/plugin-sdk/signal.js"
|
|
},
|
|
"./plugin-sdk/channel-status": {
|
|
"types": "./dist/plugin-sdk/channel-status.d.ts",
|
|
"default": "./dist/plugin-sdk/channel-status.js"
|
|
},
|
|
"./plugin-sdk/slack": {
|
|
"types": "./dist/plugin-sdk/slack.d.ts",
|
|
"default": "./dist/plugin-sdk/slack.js"
|
|
},
|
|
"./plugin-sdk/slack-core": {
|
|
"types": "./dist/plugin-sdk/slack-core.d.ts",
|
|
"default": "./dist/plugin-sdk/slack-core.js"
|
|
},
|
|
"./plugin-sdk/slack-targets": {
|
|
"types": "./dist/plugin-sdk/slack-targets.d.ts",
|
|
"default": "./dist/plugin-sdk/slack-targets.js"
|
|
},
|
|
"./plugin-sdk/status-helpers": {
|
|
"types": "./dist/plugin-sdk/status-helpers.d.ts",
|
|
"default": "./dist/plugin-sdk/status-helpers.js"
|
|
},
|
|
"./plugin-sdk/speech": {
|
|
"types": "./dist/plugin-sdk/speech.d.ts",
|
|
"default": "./dist/plugin-sdk/speech.js"
|
|
},
|
|
"./plugin-sdk/state-paths": {
|
|
"types": "./dist/plugin-sdk/state-paths.d.ts",
|
|
"default": "./dist/plugin-sdk/state-paths.js"
|
|
},
|
|
"./plugin-sdk/telegram": {
|
|
"types": "./dist/plugin-sdk/telegram.d.ts",
|
|
"default": "./dist/plugin-sdk/telegram.js"
|
|
},
|
|
"./plugin-sdk/telegram-core": {
|
|
"types": "./dist/plugin-sdk/telegram-core.d.ts",
|
|
"default": "./dist/plugin-sdk/telegram-core.js"
|
|
},
|
|
"./plugin-sdk/thread-ownership": {
|
|
"types": "./dist/plugin-sdk/thread-ownership.d.ts",
|
|
"default": "./dist/plugin-sdk/thread-ownership.js"
|
|
},
|
|
"./plugin-sdk/tlon": {
|
|
"types": "./dist/plugin-sdk/tlon.d.ts",
|
|
"default": "./dist/plugin-sdk/tlon.js"
|
|
},
|
|
"./plugin-sdk/tool-send": {
|
|
"types": "./dist/plugin-sdk/tool-send.d.ts",
|
|
"default": "./dist/plugin-sdk/tool-send.js"
|
|
},
|
|
"./plugin-sdk/twitch": {
|
|
"types": "./dist/plugin-sdk/twitch.d.ts",
|
|
"default": "./dist/plugin-sdk/twitch.js"
|
|
},
|
|
"./plugin-sdk/webhook-ingress": {
|
|
"types": "./dist/plugin-sdk/webhook-ingress.d.ts",
|
|
"default": "./dist/plugin-sdk/webhook-ingress.js"
|
|
},
|
|
"./plugin-sdk/webhook-path": {
|
|
"types": "./dist/plugin-sdk/webhook-path.d.ts",
|
|
"default": "./dist/plugin-sdk/webhook-path.js"
|
|
},
|
|
"./plugin-sdk/web-media": {
|
|
"types": "./dist/plugin-sdk/web-media.d.ts",
|
|
"default": "./dist/plugin-sdk/web-media.js"
|
|
},
|
|
"./plugin-sdk/voice-call": {
|
|
"types": "./dist/plugin-sdk/voice-call.d.ts",
|
|
"default": "./dist/plugin-sdk/voice-call.js"
|
|
},
|
|
"./plugin-sdk/whatsapp-core": {
|
|
"types": "./dist/plugin-sdk/whatsapp-core.d.ts",
|
|
"default": "./dist/plugin-sdk/whatsapp-core.js"
|
|
},
|
|
"./plugin-sdk/whatsapp-shared": {
|
|
"types": "./dist/plugin-sdk/whatsapp-shared.d.ts",
|
|
"default": "./dist/plugin-sdk/whatsapp-shared.js"
|
|
},
|
|
"./plugin-sdk/zalo": {
|
|
"types": "./dist/plugin-sdk/zalo.d.ts",
|
|
"default": "./dist/plugin-sdk/zalo.js"
|
|
},
|
|
"./plugin-sdk/zalouser": {
|
|
"types": "./dist/plugin-sdk/zalouser.d.ts",
|
|
"default": "./dist/plugin-sdk/zalouser.js"
|
|
},
|
|
"./extension-api": "./dist/extensionAPI.js",
|
|
"./cli-entry": "./openclaw.mjs"
|
|
},
|
|
"scripts": {
|
|
"android:assemble": "cd apps/android && ./gradlew :app:assemblePlayDebug",
|
|
"android:assemble:third-party": "cd apps/android && ./gradlew :app:assembleThirdPartyDebug",
|
|
"android:bundle:release": "bun apps/android/scripts/build-release-aab.ts",
|
|
"android:format": "cd apps/android && ./gradlew :app:ktlintFormat :benchmark:ktlintFormat",
|
|
"android:install": "cd apps/android && ./gradlew :app:installPlayDebug",
|
|
"android:install:third-party": "cd apps/android && ./gradlew :app:installThirdPartyDebug",
|
|
"android:lint": "cd apps/android && ./gradlew :app:ktlintCheck :benchmark:ktlintCheck",
|
|
"android:lint:android": "cd apps/android && ./gradlew :app:lintDebug",
|
|
"android:run": "cd apps/android && ./gradlew :app:installPlayDebug && adb shell am start -n ai.openclaw.app/.MainActivity",
|
|
"android:run:third-party": "cd apps/android && ./gradlew :app:installThirdPartyDebug && adb shell am start -n ai.openclaw.app/.MainActivity",
|
|
"android:test": "cd apps/android && ./gradlew :app:testPlayDebugUnitTest",
|
|
"android:test:integration": "OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_ANDROID_NODE=1 vitest run --config vitest.live.config.ts src/gateway/android-node.capabilities.live.test.ts",
|
|
"android:test:third-party": "cd apps/android && ./gradlew :app:testThirdPartyDebugUnitTest",
|
|
"audit:seams": "node scripts/audit-seams.mjs",
|
|
"build": "pnpm canvas:a2ui:bundle && node scripts/tsdown-build.mjs && node scripts/runtime-postbuild.mjs && node scripts/build-stamp.mjs && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-startup-metadata.ts && node --import tsx scripts/write-cli-compat.ts",
|
|
"build:docker": "node scripts/tsdown-build.mjs && node scripts/runtime-postbuild.mjs && node scripts/build-stamp.mjs && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-startup-metadata.ts && node --import tsx scripts/write-cli-compat.ts",
|
|
"build:plugin-sdk:dts": "tsc -p tsconfig.plugin-sdk.dts.json",
|
|
"build:strict-smoke": "pnpm canvas:a2ui:bundle && node scripts/tsdown-build.mjs && node scripts/runtime-postbuild.mjs && node scripts/build-stamp.mjs && pnpm build:plugin-sdk:dts",
|
|
"canvas:a2ui:bundle": "bash scripts/bundle-a2ui.sh",
|
|
"check": "pnpm check:no-conflict-markers && pnpm check:host-env-policy:swift && pnpm check:base-config-schema && pnpm check:bundled-plugin-metadata && pnpm check:bundled-provider-auth-env-vars && pnpm format:check && pnpm tsgo && pnpm plugin-sdk:check-exports && pnpm lint && pnpm lint:tmp:no-random-messaging && pnpm lint:tmp:channel-agnostic-boundaries && pnpm lint:tmp:no-raw-channel-fetch && pnpm lint:agent:ingress-owner && pnpm lint:plugins:no-register-http-handler && pnpm lint:plugins:no-monolithic-plugin-sdk-entry-imports && pnpm lint:plugins:no-extension-src-imports && pnpm lint:plugins:no-extension-test-core-imports && pnpm lint:plugins:no-extension-imports && pnpm lint:plugins:plugin-sdk-subpaths-exported && pnpm lint:extensions:no-src-outside-plugin-sdk && pnpm lint:extensions:no-plugin-sdk-internal && pnpm lint:extensions:no-relative-outside-package && pnpm lint:web-search-provider-boundaries && pnpm lint:webhook:no-low-level-body-read && pnpm lint:auth:no-pairing-store-group && pnpm lint:auth:pairing-account-scope",
|
|
"check:base-config-schema": "node --import tsx scripts/generate-base-config-schema.ts --check",
|
|
"check:bundled-plugin-metadata": "node scripts/generate-bundled-plugin-metadata.mjs --check",
|
|
"check:bundled-provider-auth-env-vars": "node scripts/generate-bundled-provider-auth-env-vars.mjs --check",
|
|
"check:docs": "pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-i18n-glossary && pnpm docs:check-links",
|
|
"check:host-env-policy:swift": "node scripts/generate-host-env-security-policy-swift.mjs --check",
|
|
"check:loc": "node --import tsx scripts/check-ts-max-loc.ts --max 500",
|
|
"check:no-conflict-markers": "node scripts/check-no-conflict-markers.mjs",
|
|
"config:docs:check": "node --import tsx scripts/generate-config-doc-baseline.ts --check",
|
|
"config:docs:gen": "node --import tsx scripts/generate-config-doc-baseline.ts --write",
|
|
"config:schema:check": "node --import tsx scripts/generate-base-config-schema.ts --check",
|
|
"config:schema:gen": "node --import tsx scripts/generate-base-config-schema.ts --write",
|
|
"deadcode:ci": "pnpm deadcode:report:ci:knip",
|
|
"deadcode:knip": "pnpm dlx knip --config knip.config.ts --isolate-workspaces --production --no-progress --reporter compact --files --dependencies",
|
|
"deadcode:report": "pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused",
|
|
"deadcode:report:ci:knip": "mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true",
|
|
"deadcode:report:ci:ts-prune": "mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true",
|
|
"deadcode:report:ci:ts-unused": "mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true",
|
|
"deadcode:ts-prune": "pnpm dlx ts-prune src extensions scripts",
|
|
"deadcode:ts-unused": "pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount",
|
|
"dev": "node scripts/run-node.mjs",
|
|
"docs:bin": "node scripts/build-docs-list.mjs",
|
|
"docs:check-i18n-glossary": "node scripts/check-docs-i18n-glossary.mjs",
|
|
"docs:check-links": "node scripts/docs-link-audit.mjs",
|
|
"docs:dev": "cd docs && mint dev",
|
|
"docs:list": "node scripts/docs-list.js",
|
|
"docs:spellcheck": "bash scripts/docs-spellcheck.sh",
|
|
"docs:spellcheck:fix": "bash scripts/docs-spellcheck.sh --write",
|
|
"dup:check": "jscpd src extensions test scripts --format typescript,javascript --pattern \"**/*.{ts,tsx,js,mjs,cjs}\" --gitignore --noSymlinks --ignore \"**/node_modules/**,**/dist/**,**/.git/**,**/coverage/**,**/build/**,**/.build/**,**/.artifacts/**\" --min-lines 12 --min-tokens 80 --reporters console",
|
|
"dup:check:json": "jscpd src extensions test scripts --format typescript,javascript --pattern \"**/*.{ts,tsx,js,mjs,cjs}\" --gitignore --noSymlinks --ignore \"**/node_modules/**,**/dist/**,**/.git/**,**/coverage/**,**/build/**,**/.build/**,**/.artifacts/**\" --min-lines 12 --min-tokens 80 --reporters json --output .artifacts/jscpd",
|
|
"format": "oxfmt --write",
|
|
"format:all": "pnpm format && pnpm format:swift",
|
|
"format:check": "oxfmt --check --threads=1",
|
|
"format:diff": "oxfmt --write && git --no-pager diff",
|
|
"format:docs": "git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write",
|
|
"format:docs:check": "git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check",
|
|
"format:fix": "oxfmt --write",
|
|
"format:swift": "swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/OpenClawKit/Sources",
|
|
"gateway:dev": "OPENCLAW_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway",
|
|
"gateway:dev:reset": "OPENCLAW_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset",
|
|
"gateway:watch": "node scripts/watch-node.mjs gateway --force",
|
|
"gen:host-env-policy:swift": "node scripts/generate-host-env-security-policy-swift.mjs --write",
|
|
"ghsa:patch": "node scripts/ghsa-patch.mjs",
|
|
"ios:beta": "bash scripts/ios-beta-release.sh",
|
|
"ios:beta:archive": "bash scripts/ios-beta-archive.sh",
|
|
"ios:beta:prepare": "bash scripts/ios-beta-prepare.sh",
|
|
"ios:build": "bash -lc './scripts/ios-configure-signing.sh && ./scripts/ios-write-version-xcconfig.sh && cd apps/ios && xcodegen generate && xcodebuild -project OpenClaw.xcodeproj -scheme OpenClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'",
|
|
"ios:gen": "bash -lc './scripts/ios-configure-signing.sh && ./scripts/ios-write-version-xcconfig.sh && cd apps/ios && xcodegen generate'",
|
|
"ios:open": "bash -lc './scripts/ios-configure-signing.sh && ./scripts/ios-write-version-xcconfig.sh && cd apps/ios && xcodegen generate && open OpenClaw.xcodeproj'",
|
|
"ios:run": "bash -lc './scripts/ios-configure-signing.sh && ./scripts/ios-write-version-xcconfig.sh && cd apps/ios && xcodegen generate && xcodebuild -project OpenClaw.xcodeproj -scheme OpenClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.openclaw.ios'",
|
|
"lint": "oxlint --type-aware",
|
|
"lint:agent:ingress-owner": "node scripts/check-ingress-agent-owner-context.mjs",
|
|
"lint:all": "pnpm lint && pnpm lint:swift",
|
|
"lint:auth:no-pairing-store-group": "node scripts/check-no-pairing-store-group-auth.mjs",
|
|
"lint:auth:pairing-account-scope": "node scripts/check-pairing-account-scope.mjs",
|
|
"lint:docs": "pnpm dlx markdownlint-cli2",
|
|
"lint:docs:fix": "pnpm dlx markdownlint-cli2 --fix",
|
|
"lint:extensions:no-plugin-sdk-internal": "node scripts/check-extension-plugin-sdk-boundary.mjs --mode=plugin-sdk-internal",
|
|
"lint:extensions:no-relative-outside-package": "node scripts/check-extension-plugin-sdk-boundary.mjs --mode=relative-outside-package",
|
|
"lint:extensions:no-src-outside-plugin-sdk": "node scripts/check-extension-plugin-sdk-boundary.mjs --mode=src-outside-plugin-sdk",
|
|
"lint:fix": "oxlint --type-aware --fix && pnpm format",
|
|
"lint:plugins:no-extension-imports": "node scripts/check-plugin-extension-import-boundary.mjs",
|
|
"lint:plugins:no-extension-src-imports": "node --import tsx scripts/check-no-extension-src-imports.ts",
|
|
"lint:plugins:no-extension-test-core-imports": "node --import tsx scripts/check-no-extension-test-core-imports.ts",
|
|
"lint:plugins:no-monolithic-plugin-sdk-entry-imports": "node --import tsx scripts/check-no-monolithic-plugin-sdk-entry-imports.ts",
|
|
"lint:plugins:no-register-http-handler": "node scripts/check-no-register-http-handler.mjs",
|
|
"lint:plugins:plugin-sdk-subpaths-exported": "node scripts/check-plugin-sdk-subpath-exports.mjs",
|
|
"lint:swift": "swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)",
|
|
"lint:tmp:channel-agnostic-boundaries": "node scripts/check-channel-agnostic-boundaries.mjs",
|
|
"lint:tmp:no-random-messaging": "node scripts/check-no-random-messaging-tmp.mjs",
|
|
"lint:tmp:no-raw-channel-fetch": "node scripts/check-no-raw-channel-fetch.mjs",
|
|
"lint:ui:no-raw-window-open": "node scripts/check-no-raw-window-open.mjs",
|
|
"lint:web-search-provider-boundaries": "node scripts/check-web-search-provider-boundaries.mjs",
|
|
"lint:webhook:no-low-level-body-read": "node scripts/check-webhook-auth-body-order.mjs",
|
|
"mac:open": "open dist/OpenClaw.app",
|
|
"mac:package": "bash scripts/package-mac-app.sh",
|
|
"mac:restart": "bash scripts/restart-mac.sh",
|
|
"moltbot:rpc": "node scripts/run-node.mjs agent --mode rpc --json",
|
|
"openclaw": "node scripts/run-node.mjs",
|
|
"openclaw:rpc": "node scripts/run-node.mjs agent --mode rpc --json",
|
|
"plugin-sdk:api:check": "node --import tsx scripts/generate-plugin-sdk-api-baseline.ts --check",
|
|
"plugin-sdk:api:gen": "node --import tsx scripts/generate-plugin-sdk-api-baseline.ts --write",
|
|
"plugin-sdk:check-exports": "node scripts/sync-plugin-sdk-exports.mjs --check",
|
|
"plugin-sdk:sync-exports": "node scripts/sync-plugin-sdk-exports.mjs",
|
|
"plugins:sync": "node --import tsx scripts/sync-plugin-versions.ts",
|
|
"prepack": "pnpm build && pnpm ui:build",
|
|
"prepare": "command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0",
|
|
"protocol:check": "pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/OpenClawProtocol/GatewayModels.swift apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift",
|
|
"protocol:gen": "node --import tsx scripts/protocol-gen.ts",
|
|
"protocol:gen:swift": "node --import tsx scripts/protocol-gen-swift.ts",
|
|
"release:check": "pnpm config:docs:check && pnpm plugin-sdk:check-exports && pnpm plugin-sdk:api:check && node scripts/stage-bundled-plugin-runtime-deps.mjs && pnpm ui:build && node --import tsx scripts/release-check.ts",
|
|
"release:openclaw:npm:check": "node --import tsx scripts/openclaw-npm-release-check.ts",
|
|
"release:openclaw:npm:verify-published": "node --import tsx scripts/openclaw-npm-postpublish-verify.ts",
|
|
"release:plugins:npm:check": "node --import tsx scripts/plugin-npm-release-check.ts",
|
|
"release:plugins:npm:plan": "node --import tsx scripts/plugin-npm-release-plan.ts",
|
|
"stage:bundled-plugin-runtime-deps": "node scripts/stage-bundled-plugin-runtime-deps.mjs",
|
|
"start": "node scripts/run-node.mjs",
|
|
"test": "node scripts/test-parallel.mjs",
|
|
"test:all": "pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all",
|
|
"test:auth:compat": "vitest run --config vitest.gateway.config.ts src/gateway/server.auth.compat-baseline.test.ts src/gateway/client.test.ts src/gateway/reconnect-gating.test.ts src/gateway/protocol/connect-error-details.test.ts",
|
|
"test:build:singleton": "node scripts/test-built-plugin-singleton.mjs",
|
|
"test:changed": "pnpm test -- --changed origin/main",
|
|
"test:channels": "OPENCLAW_TEST_SKIP_DEFAULT=1 OPENCLAW_TEST_INCLUDE_CHANNELS=1 node scripts/test-parallel.mjs",
|
|
"test:contracts": "pnpm test:contracts:channels && pnpm test:contracts:plugins",
|
|
"test:contracts:channels": "OPENCLAW_TEST_PROFILE=low pnpm test -- src/channels/plugins/contracts",
|
|
"test:contracts:plugins": "OPENCLAW_TEST_PROFILE=low pnpm test -- src/plugins/contracts",
|
|
"test:coverage": "vitest run --config vitest.unit.config.ts --coverage",
|
|
"test:coverage:changed": "vitest run --config vitest.unit.config.ts --coverage --changed origin/main",
|
|
"test:docker:all": "pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:openwebui && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup",
|
|
"test:docker:cleanup": "bash scripts/test-cleanup-docker.sh",
|
|
"test:docker:doctor-switch": "bash scripts/e2e/doctor-install-switch-docker.sh",
|
|
"test:docker:gateway-network": "bash scripts/e2e/gateway-network-docker.sh",
|
|
"test:docker:live-gateway": "bash scripts/test-live-gateway-models-docker.sh",
|
|
"test:docker:live-models": "bash scripts/test-live-models-docker.sh",
|
|
"test:docker:onboard": "bash scripts/e2e/onboard-docker.sh",
|
|
"test:docker:openwebui": "bash scripts/e2e/openwebui-docker.sh",
|
|
"test:docker:plugins": "bash scripts/e2e/plugins-docker.sh",
|
|
"test:docker:qr": "bash scripts/e2e/qr-import-docker.sh",
|
|
"test:e2e": "vitest run --config vitest.e2e.config.ts",
|
|
"test:e2e:openshell": "OPENCLAW_E2E_OPENSHELL=1 vitest run --config vitest.e2e.config.ts test/openshell-sandbox.e2e.test.ts",
|
|
"test:extension": "node scripts/test-extension.mjs",
|
|
"test:extensions": "OPENCLAW_TEST_SKIP_DEFAULT=1 OPENCLAW_TEST_INCLUDE_EXTENSIONS=1 node scripts/test-parallel.mjs",
|
|
"test:extensions:memory": "node scripts/profile-extension-memory.mjs",
|
|
"test:fast": "vitest run --config vitest.unit.config.ts",
|
|
"test:force": "node --import tsx scripts/test-force.ts",
|
|
"test:gateway": "vitest run --config vitest.gateway.config.ts --pool=forks",
|
|
"test:gateway:watch-regression": "node scripts/check-gateway-watch-regression.mjs",
|
|
"test:install:e2e": "bash scripts/test-install-sh-e2e-docker.sh",
|
|
"test:install:e2e:anthropic": "OPENCLAW_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh",
|
|
"test:install:e2e:openai": "OPENCLAW_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh",
|
|
"test:install:smoke": "bash scripts/test-install-sh-docker.sh",
|
|
"test:live": "OPENCLAW_LIVE_TEST=1 vitest run --config vitest.live.config.ts",
|
|
"test:macmini": "OPENCLAW_TEST_PROFILE=macmini node scripts/test-parallel.mjs",
|
|
"test:parallels:linux": "bash scripts/e2e/parallels-linux-smoke.sh",
|
|
"test:parallels:macos": "bash scripts/e2e/parallels-macos-smoke.sh",
|
|
"test:parallels:npm-update": "bash scripts/e2e/parallels-npm-update-smoke.sh",
|
|
"test:parallels:windows": "bash scripts/e2e/parallels-windows-smoke.sh",
|
|
"test:perf:budget": "node scripts/test-perf-budget.mjs",
|
|
"test:perf:find-thread-candidates": "node scripts/test-find-thread-candidates.mjs",
|
|
"test:perf:hotspots": "node scripts/test-hotspots.mjs",
|
|
"test:perf:imports": "OPENCLAW_VITEST_IMPORT_DURATIONS=1 OPENCLAW_VITEST_PRINT_IMPORT_BREAKDOWN=1 pnpm test",
|
|
"test:perf:imports:changed": "OPENCLAW_VITEST_IMPORT_DURATIONS=1 OPENCLAW_VITEST_PRINT_IMPORT_BREAKDOWN=1 pnpm test -- --changed origin/main",
|
|
"test:perf:profile:main": "node scripts/run-vitest-profile.mjs main",
|
|
"test:perf:profile:runner": "node scripts/run-vitest-profile.mjs runner",
|
|
"test:perf:update-memory-hotspots": "node scripts/test-update-memory-hotspots.mjs",
|
|
"test:perf:update-timings": "node scripts/test-update-timings.mjs",
|
|
"test:sectriage": "pnpm exec vitest run --config vitest.gateway.config.ts && vitest run --config vitest.unit.config.ts --exclude src/daemon/launchd.integration.test.ts --exclude src/process/exec.test.ts",
|
|
"test:startup:memory": "node scripts/check-cli-startup-memory.mjs",
|
|
"test:ui": "pnpm lint:ui:no-raw-window-open && pnpm --dir ui test",
|
|
"test:voicecall:closedloop": "vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1",
|
|
"test:watch": "vitest",
|
|
"tui": "node scripts/run-node.mjs tui",
|
|
"tui:dev": "OPENCLAW_PROFILE=dev node scripts/run-node.mjs --dev tui",
|
|
"ui:build": "node scripts/ui.js build",
|
|
"ui:dev": "node scripts/ui.js dev",
|
|
"ui:install": "node scripts/ui.js install"
|
|
},
|
|
"dependencies": {
|
|
"@agentclientprotocol/sdk": "0.16.1",
|
|
"@anthropic-ai/vertex-sdk": "^0.14.4",
|
|
"@aws-sdk/client-bedrock": "^3.1014.0",
|
|
"@clack/prompts": "^1.1.0",
|
|
"@homebridge/ciao": "^1.3.5",
|
|
"@line/bot-sdk": "^10.6.0",
|
|
"@lydell/node-pty": "1.2.0-beta.3",
|
|
"@mariozechner/pi-agent-core": "0.61.1",
|
|
"@mariozechner/pi-ai": "0.61.1",
|
|
"@mariozechner/pi-coding-agent": "0.61.1",
|
|
"@mariozechner/pi-tui": "0.61.1",
|
|
"@modelcontextprotocol/sdk": "1.27.1",
|
|
"@mozilla/readability": "^0.6.0",
|
|
"@sinclair/typebox": "0.34.48",
|
|
"ajv": "^8.18.0",
|
|
"chalk": "^5.6.2",
|
|
"chokidar": "^5.0.0",
|
|
"cli-highlight": "^2.1.11",
|
|
"commander": "^14.0.3",
|
|
"croner": "^10.0.1",
|
|
"dotenv": "^17.3.1",
|
|
"express": "^5.2.1",
|
|
"file-type": "21.3.4",
|
|
"gaxios": "7.1.4",
|
|
"hono": "4.12.8",
|
|
"ipaddr.js": "^2.3.0",
|
|
"jiti": "^2.6.1",
|
|
"json5": "^2.2.3",
|
|
"jszip": "^3.10.1",
|
|
"linkedom": "^0.18.12",
|
|
"long": "^5.3.2",
|
|
"markdown-it": "^14.1.1",
|
|
"node-edge-tts": "^1.2.10",
|
|
"osc-progress": "^0.3.0",
|
|
"pdfjs-dist": "^5.5.207",
|
|
"playwright-core": "1.58.2",
|
|
"qrcode-terminal": "^0.12.0",
|
|
"sharp": "^0.34.5",
|
|
"sqlite-vec": "0.1.7",
|
|
"tar": "7.5.12",
|
|
"tslog": "^4.10.2",
|
|
"undici": "^7.24.5",
|
|
"uuid": "^13.0.0",
|
|
"ws": "^8.20.0",
|
|
"yaml": "^2.8.3",
|
|
"zod": "^4.3.6"
|
|
},
|
|
"devDependencies": {
|
|
"@grammyjs/types": "^3.25.0",
|
|
"@lit-labs/signals": "^0.2.0",
|
|
"@lit/context": "^1.1.6",
|
|
"@types/express": "^5.0.6",
|
|
"@types/markdown-it": "^14.1.2",
|
|
"@types/node": "^25.5.0",
|
|
"@types/qrcode-terminal": "^0.12.2",
|
|
"@types/ws": "^8.18.1",
|
|
"@typescript/native-preview": "7.0.0-dev.20260322.1",
|
|
"@vitest/coverage-v8": "^4.1.0",
|
|
"jscpd": "4.0.8",
|
|
"jsdom": "^29.0.1",
|
|
"lit": "^3.3.2",
|
|
"oxfmt": "0.41.0",
|
|
"oxlint": "^1.56.0",
|
|
"oxlint-tsgolint": "^0.17.1",
|
|
"signal-utils": "0.21.1",
|
|
"tsdown": "0.21.4",
|
|
"tsx": "^4.21.0",
|
|
"typescript": "^5.9.3",
|
|
"vitest": "^4.1.0"
|
|
},
|
|
"peerDependencies": {
|
|
"@napi-rs/canvas": "^0.1.89",
|
|
"node-llama-cpp": "3.18.1"
|
|
},
|
|
"peerDependenciesMeta": {
|
|
"node-llama-cpp": {
|
|
"optional": true
|
|
}
|
|
},
|
|
"optionalDependencies": {
|
|
"openshell": "0.1.0"
|
|
},
|
|
"engines": {
|
|
"node": ">=22.14.0"
|
|
},
|
|
"packageManager": "pnpm@10.32.1",
|
|
"pnpm": {
|
|
"minimumReleaseAge": 2880,
|
|
"overrides": {
|
|
"hono": "4.12.8",
|
|
"@hono/node-server": "1.19.10",
|
|
"fast-xml-parser": "5.5.7",
|
|
"request": "npm:@cypress/request@3.0.10",
|
|
"request-promise": "npm:@cypress/request-promise@5.0.0",
|
|
"file-type": "21.3.4",
|
|
"form-data": "2.5.4",
|
|
"minimatch": "10.2.4",
|
|
"qs": "6.14.2",
|
|
"node-domexception": "npm:@nolyfill/domexception@^1.0.28",
|
|
"@sinclair/typebox": "0.34.48",
|
|
"tar": "7.5.12",
|
|
"tough-cookie": "4.1.3",
|
|
"yauzl": "3.2.1"
|
|
},
|
|
"onlyBuiltDependencies": [
|
|
"@lydell/node-pty",
|
|
"@matrix-org/matrix-sdk-crypto-nodejs",
|
|
"@napi-rs/canvas",
|
|
"@tloncorp/api",
|
|
"@tloncorp/tlon-skill",
|
|
"@whiskeysockets/baileys",
|
|
"authenticate-pam",
|
|
"esbuild",
|
|
"node-llama-cpp",
|
|
"protobufjs",
|
|
"sharp"
|
|
],
|
|
"ignoredBuiltDependencies": [
|
|
"@discordjs/opus",
|
|
"koffi"
|
|
],
|
|
"packageExtensions": {
|
|
"@mariozechner/pi-coding-agent": {
|
|
"dependencies": {
|
|
"strip-ansi": "^7.2.0"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|