mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-30 05:25:40 +00:00
* refactor: extract reusable AI runtime package * refactor: complete AI provider relocation * refactor: keep llm core internal * refactor(ai): make @openclaw/ai self-contained with host policy ports Move pure transport helpers (tool projections, strict-schema normalization, prompt-cache boundary, stream guards, anthropic/openai compat, request activity) from src into packages/ai; move utf16-slice into normalization-core. Inject host policy (guarded fetch, redaction, strict-tool defaults, diagnostics logging) through AiTransportHost with inert library defaults installed by src/llm/stream.ts. Narrow the public barrel to instance-scoped createApiRegistry/createLlmRuntime; the process-default runtime moves behind internal/ and registerBuiltInApiProviders takes an explicit registry. Delete the src/llm/api-registry re-export facade. * fix(ai): teach node, jiti, and vite resolvers the @openclaw/ai and utf16-slice subpaths The workspace alias tables in root-alias.cjs, plugin-sdk-native-resolver, sdk-alias, the shared vitest config, and the Control UI vite config only knew @openclaw/llm-core; Node-side plugin loading resolved @openclaw/ai through the pnpm symlink to the unbuilt dist (checks-node-compact CI failures), and the Control UI build broke on the new normalization-core/utf16-slice subpath. * chore(ui): drop leftover service-worker debug logging * build(release): ship @openclaw/ai with its own shrinkwrap and honest dependency set packages/ai declares only its six real runtime deps (kysely, chalk, json5, tslog, zod, fs-safe, and proxyline were never imported); orphaned root deps removed. generate-npm-shrinkwrap now treats publishable packages/* like publishable plugins so the AI tarball pins its transitive tree even though workspace deps are omitted from the root shrinkwrap. knip learns the package entry points; the tsdown dts neverBundle option moves to its documented deps.dts home; the README documents the no-semver internal/* contract and host ports. * docs(ai): add minimal external-consumer example app examples/ai-chat consumes only the public @openclaw/ai surface (built dist via the workspace link): isolated runtime, built-in provider registration, one streamed completion. Supports Anthropic/OpenAI via env keys and a keyless local Ollama target; live-verified against Ollama. * docs(ai): document the @openclaw/ai package and workspace shrinkwrap boundary * chore(check): include examples/ in duplicate-scan targets * fix: emit normalization package subpaths * fix: complete AI package boundary artifacts * fix: align AI package boundary contracts * fix(ci): stabilize package release contracts * test: align documentation contract checks * test: keep cron docs guard aligned * test: align restored docs contract guards * test: follow upstream docs contracts * docs: drop superseded talk wording |
||
|---|---|---|
| .. | ||
| text | ||
| account-enabled.test.ts | ||
| account-enabled.ts | ||
| agent-liveness.ts | ||
| agent-run-status.test.ts | ||
| agent-run-status.ts | ||
| assistant-error-format.ts | ||
| assistant-identity-values.test.ts | ||
| assistant-identity-values.ts | ||
| avatar-policy.test.ts | ||
| avatar-policy.ts | ||
| balanced-json.ts | ||
| chat-content.test.ts | ||
| chat-content.ts | ||
| chat-envelope.test.ts | ||
| chat-envelope.ts | ||
| chat-message-content.test.ts | ||
| chat-message-content.ts | ||
| config-eval.test.ts | ||
| config-eval.ts | ||
| config-ui-hints-types.ts | ||
| custom-command-config.ts | ||
| deferred.test.ts | ||
| deferred.ts | ||
| device-auth-store.test.ts | ||
| device-auth-store.ts | ||
| device-auth.test.ts | ||
| device-auth.ts | ||
| device-bootstrap-profile.test.ts | ||
| device-bootstrap-profile.ts | ||
| device-pairing-access.test.ts | ||
| device-pairing-access.ts | ||
| entry-metadata.test.ts | ||
| entry-metadata.ts | ||
| entry-status.test.ts | ||
| entry-status.ts | ||
| env-var-candidates.ts | ||
| fast-mode.ts | ||
| frontmatter.test.ts | ||
| frontmatter.ts | ||
| gateway-bind-url.test.ts | ||
| gateway-bind-url.ts | ||
| gateway-method-policy.ts | ||
| gateway-tailscale-auth-policy.ts | ||
| global-singleton.test.ts | ||
| global-singleton.ts | ||
| google-turn-ordering.ts | ||
| human-list.test.ts | ||
| human-list.ts | ||
| ignore-rules.ts | ||
| import-specifier.ts | ||
| json-schema-defaults.test.ts | ||
| json-schema-defaults.ts | ||
| json-schema.types.ts | ||
| lazy-promise.test.ts | ||
| lazy-promise.ts | ||
| lazy-runtime.test.ts | ||
| lazy-runtime.ts | ||
| levenshtein-distance.ts | ||
| listeners.ts | ||
| markdown-code.test.ts | ||
| markdown-code.ts | ||
| message-content-blocks.ts | ||
| model-key.ts | ||
| model-param-b.test.ts | ||
| model-param-b.ts | ||
| node-list-parse.test.ts | ||
| node-list-parse.ts | ||
| node-list-types.ts | ||
| node-match.test.ts | ||
| node-match.ts | ||
| node-presence.ts | ||
| node-resolve.test.ts | ||
| node-resolve.ts | ||
| number-coercion.ts | ||
| operator-scope-compat.test.ts | ||
| operator-scope-compat.ts | ||
| path-array-index.ts | ||
| pid-alive.test.ts | ||
| pid-alive.ts | ||
| regexp.ts | ||
| requirements.test.ts | ||
| requirements.ts | ||
| runtime-import.test.ts | ||
| runtime-import.ts | ||
| safe-record.ts | ||
| scoped-expiring-id-cache.test.ts | ||
| scoped-expiring-id-cache.ts | ||
| session-types.ts | ||
| session-usage-timeseries-types.ts | ||
| silent-reply-policy.test.ts | ||
| silent-reply-policy.ts | ||
| store-writer-queue.test.ts | ||
| store-writer-queue.ts | ||
| string-sample.test.ts | ||
| string-sample.ts | ||
| subagents-format.test.ts | ||
| subagents-format.ts | ||
| tailscale-status.test.ts | ||
| tailscale-status.ts | ||
| text-chunking.test.ts | ||
| text-chunking.ts | ||
| thread-binding-lifecycle.test.ts | ||
| thread-binding-lifecycle.ts | ||
| tilde-path.ts | ||
| transcript-only-openclaw-assistant.ts | ||
| usage-aggregates.test.ts | ||
| usage-aggregates.ts | ||
| usage-types.ts | ||