Create OpenClaw kitchen sink plugin
This commit is contained in:
commit
91f253e89b
11
.github/dependabot.yml
vendored
Normal file
11
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "npm"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
open-pull-requests-limit: 5
|
||||
groups:
|
||||
openclaw-sdk:
|
||||
patterns:
|
||||
- "openclaw"
|
||||
23
.github/workflows/check.yml
vendored
Normal file
23
.github/workflows/check.yml
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
name: Check
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
check:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22
|
||||
cache: npm
|
||||
- run: npm ci
|
||||
- run: npm test
|
||||
44
.github/workflows/update-openclaw-sdk.yml
vendored
Normal file
44
.github/workflows/update-openclaw-sdk.yml
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
name: Update OpenClaw SDK Surface
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "17 9 * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
update:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22
|
||||
cache: npm
|
||||
- run: npm install openclaw@latest --save-exact --package-lock
|
||||
- run: npm run sync:surface
|
||||
- run: npm test
|
||||
- name: Open pull request
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
if git diff --quiet package.json package-lock.json openclaw.plugin.json src/generated-hooks.js src/generated-registrars.js src/generated-sdk-imports.ts; then
|
||||
echo "OpenClaw SDK surface is already current."
|
||||
exit 0
|
||||
fi
|
||||
version="$(node -p "require('./node_modules/openclaw/package.json').version")"
|
||||
branch="automation/openclaw-sdk-${version}"
|
||||
git config user.name "github-actions[bot]"
|
||||
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
||||
git checkout -B "$branch"
|
||||
git add package.json package-lock.json openclaw.plugin.json src/generated-hooks.js src/generated-registrars.js src/generated-sdk-imports.ts
|
||||
git commit -m "Update OpenClaw SDK surface to ${version}"
|
||||
git push --force-with-lease origin "$branch"
|
||||
gh pr create \
|
||||
--base main \
|
||||
--head "$branch" \
|
||||
--title "Update OpenClaw SDK surface to ${version}" \
|
||||
--body "Automated update of the pinned OpenClaw SDK package and generated kitchen-sink API surface."
|
||||
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
node_modules/
|
||||
npm-debug.log*
|
||||
*.tgz
|
||||
.DS_Store
|
||||
33
README.md
Normal file
33
README.md
Normal file
@ -0,0 +1,33 @@
|
||||
# OpenClaw Kitchen Sink Plugin
|
||||
|
||||
Credential-free OpenClaw plugin fixture that intentionally touches the public
|
||||
plugin API surface.
|
||||
|
||||
This repo is both:
|
||||
|
||||
- a readable example for plugin authors
|
||||
- a dummy compatibility fixture for Crabpot and plugin-inspector
|
||||
|
||||
The runtime handlers are no-op probes. They should not call external services,
|
||||
read secrets, spawn processes, or require live credentials.
|
||||
|
||||
## API Surface Sync
|
||||
|
||||
The generated files under `src/generated-*` are derived from the installed
|
||||
`openclaw` package:
|
||||
|
||||
```sh
|
||||
npm install
|
||||
npm run sync:surface
|
||||
npm test
|
||||
```
|
||||
|
||||
When Dependabot bumps `openclaw`, `npm test` verifies that this fixture still
|
||||
covers every discovered hook, registrar, manifest contract key, and plugin SDK
|
||||
export path for that package version.
|
||||
|
||||
## Why Generated Files Exist
|
||||
|
||||
Crabpot and plugin-inspector rely on static source evidence. The generated files
|
||||
therefore contain explicit calls such as `api.registerTool(...)` and
|
||||
`api.on("before_prompt_build", ...)` instead of dynamic loops.
|
||||
123
openclaw.plugin.json
Normal file
123
openclaw.plugin.json
Normal file
@ -0,0 +1,123 @@
|
||||
{
|
||||
"id": "openclaw-kitchen-sink",
|
||||
"name": "OpenClaw Kitchen Sink",
|
||||
"version": "0.1.0",
|
||||
"description": "Generated kitchen-sink fixture for OpenClaw plugin API surface 2026.4.24.",
|
||||
"enabledByDefault": false,
|
||||
"kind": [
|
||||
"tool",
|
||||
"hook",
|
||||
"channel",
|
||||
"provider"
|
||||
],
|
||||
"channels": [
|
||||
"kitchen-sink-channel"
|
||||
],
|
||||
"providers": [
|
||||
"kitchen-sink-provider"
|
||||
],
|
||||
"cliBackends": [
|
||||
"kitchen-sink-cli-backend"
|
||||
],
|
||||
"commandAliases": [
|
||||
{
|
||||
"command": "kitchen-sink",
|
||||
"pluginId": "openclaw-kitchen-sink"
|
||||
}
|
||||
],
|
||||
"activation": {
|
||||
"onProviders": [
|
||||
"kitchen-sink-provider"
|
||||
],
|
||||
"onChannels": [
|
||||
"kitchen-sink-channel"
|
||||
],
|
||||
"onCommands": [
|
||||
"kitchen-sink"
|
||||
],
|
||||
"onCapabilities": [
|
||||
"provider",
|
||||
"channel",
|
||||
"tool",
|
||||
"hook"
|
||||
]
|
||||
},
|
||||
"setup": {
|
||||
"providers": [
|
||||
{
|
||||
"id": "kitchen-sink-provider",
|
||||
"authMethods": [
|
||||
"none"
|
||||
],
|
||||
"envVars": []
|
||||
}
|
||||
],
|
||||
"cliBackends": [
|
||||
"kitchen-sink-cli-backend"
|
||||
],
|
||||
"configMigrations": [
|
||||
"kitchen-sink-config-migration"
|
||||
],
|
||||
"requiresRuntime": false
|
||||
},
|
||||
"contracts": {
|
||||
"agentToolResultMiddleware": [
|
||||
"kitchen-sink-agent-tool-result-middleware"
|
||||
],
|
||||
"documentExtractors": [
|
||||
"kitchen-sink-document-extractors"
|
||||
],
|
||||
"embeddedExtensionFactories": [
|
||||
"kitchen-sink-embedded-extension-factories"
|
||||
],
|
||||
"externalAuthProviders": [
|
||||
"kitchen-sink-external-auth-providers"
|
||||
],
|
||||
"imageGenerationProviders": [
|
||||
"kitchen-sink-image-generation-providers"
|
||||
],
|
||||
"mediaUnderstandingProviders": [
|
||||
"kitchen-sink-media-understanding-providers"
|
||||
],
|
||||
"memoryEmbeddingProviders": [
|
||||
"kitchen-sink-memory-embedding-providers"
|
||||
],
|
||||
"musicGenerationProviders": [
|
||||
"kitchen-sink-music-generation-providers"
|
||||
],
|
||||
"realtimeTranscriptionProviders": [
|
||||
"kitchen-sink-realtime-transcription-providers"
|
||||
],
|
||||
"realtimeVoiceProviders": [
|
||||
"kitchen-sink-realtime-voice-providers"
|
||||
],
|
||||
"speechProviders": [
|
||||
"kitchen-sink-speech-providers"
|
||||
],
|
||||
"tools": [
|
||||
"kitchen-sink-tools"
|
||||
],
|
||||
"videoGenerationProviders": [
|
||||
"kitchen-sink-video-generation-providers"
|
||||
],
|
||||
"webContentExtractors": [
|
||||
"kitchen-sink-web-content-extractors"
|
||||
],
|
||||
"webFetchProviders": [
|
||||
"kitchen-sink-web-fetch-providers"
|
||||
],
|
||||
"webSearchProviders": [
|
||||
"kitchen-sink-web-search-providers"
|
||||
]
|
||||
},
|
||||
"configSchema": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
6278
package-lock.json
generated
Normal file
6278
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
45
package.json
Normal file
45
package.json
Normal file
@ -0,0 +1,45 @@
|
||||
{
|
||||
"name": "openclaw-kitchen-sink-plugin",
|
||||
"version": "0.1.0",
|
||||
"private": false,
|
||||
"description": "Credential-free kitchen-sink OpenClaw plugin fixture covering the public plugin API surface.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/Patrick-Erichsen/openclaw-kitchen-sink-plugin.git"
|
||||
},
|
||||
"files": [
|
||||
"src/",
|
||||
"openclaw.plugin.json",
|
||||
"README.md"
|
||||
],
|
||||
"exports": {
|
||||
".": "./src/index.js",
|
||||
"./runtime": "./src/index.js",
|
||||
"./setup": "./src/setup.js"
|
||||
},
|
||||
"openclaw": {
|
||||
"extensions": [
|
||||
"./src/index.js"
|
||||
],
|
||||
"runtimeExtensions": [
|
||||
"./src/index.js"
|
||||
],
|
||||
"setupEntry": "./src/setup.js",
|
||||
"compat": {
|
||||
"pluginApi": "2026.4"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"check": "npm run sync:surface -- --check && node scripts/check-sdk-surface.mjs",
|
||||
"sync:surface": "node scripts/sync-surface.mjs",
|
||||
"test": "npm run check"
|
||||
},
|
||||
"dependencies": {
|
||||
"openclaw": "2026.4.24"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=22"
|
||||
}
|
||||
}
|
||||
48
scripts/check-sdk-surface.mjs
Normal file
48
scripts/check-sdk-surface.mjs
Normal file
@ -0,0 +1,48 @@
|
||||
import { readFileSync } from "node:fs";
|
||||
import path from "node:path";
|
||||
import { readOpenClawSurface } from "./openclaw-surface.mjs";
|
||||
|
||||
const rootDir = path.resolve(import.meta.dirname, "..");
|
||||
const surface = readOpenClawSurface();
|
||||
const hooksSource = read("src/generated-hooks.js");
|
||||
const registrarsSource = read("src/generated-registrars.js");
|
||||
const sdkImportsSource = read("src/generated-sdk-imports.ts");
|
||||
const manifest = JSON.parse(read("openclaw.plugin.json"));
|
||||
|
||||
const errors = [];
|
||||
|
||||
for (const hook of surface.hooks) {
|
||||
if (!hooksSource.includes(`api.on("${hook}"`)) {
|
||||
errors.push(`missing hook coverage: ${hook}`);
|
||||
}
|
||||
}
|
||||
|
||||
for (const registrar of surface.registrars) {
|
||||
if (!registrarsSource.includes(`api.${registrar}(`)) {
|
||||
errors.push(`missing registrar coverage: ${registrar}`);
|
||||
}
|
||||
}
|
||||
|
||||
for (const specifier of surface.pluginSdkExports) {
|
||||
if (!sdkImportsSource.includes(`"${specifier}"`)) {
|
||||
errors.push(`missing SDK import coverage: ${specifier}`);
|
||||
}
|
||||
}
|
||||
|
||||
for (const contract of surface.manifestContracts) {
|
||||
if (!Object.hasOwn(manifest.contracts ?? {}, contract)) {
|
||||
errors.push(`missing manifest contract coverage: ${contract}`);
|
||||
}
|
||||
}
|
||||
|
||||
if (errors.length > 0) {
|
||||
throw new Error(errors.join("\n"));
|
||||
}
|
||||
|
||||
console.log(
|
||||
`OpenClaw ${surface.packageVersion} surface covered: ${surface.registrars.length} registrars, ${surface.hooks.length} hooks, ${surface.manifestContracts.length} manifest contracts, ${surface.pluginSdkExports.length} SDK exports`,
|
||||
);
|
||||
|
||||
function read(relativePath) {
|
||||
return readFileSync(path.join(rootDir, relativePath), "utf8");
|
||||
}
|
||||
86
scripts/openclaw-surface.mjs
Normal file
86
scripts/openclaw-surface.mjs
Normal file
@ -0,0 +1,86 @@
|
||||
import { existsSync, readFileSync } from "node:fs";
|
||||
import path from "node:path";
|
||||
import { createRequire } from "node:module";
|
||||
|
||||
const require = createRequire(import.meta.url);
|
||||
|
||||
export function readOpenClawSurface() {
|
||||
const packageEntryPath = require.resolve("openclaw");
|
||||
const packageRoot = findPackageRoot(packageEntryPath);
|
||||
const packageJsonPath = path.join(packageRoot, "package.json");
|
||||
const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf8"));
|
||||
const pluginSdkExports = Object.keys(packageJson.exports ?? {})
|
||||
.filter((specifier) => specifier === "./plugin-sdk" || specifier.startsWith("./plugin-sdk/"))
|
||||
.map((specifier) => `openclaw/${specifier.slice(2)}`)
|
||||
.sort();
|
||||
|
||||
const apiBuilderPath = firstExistingPath([
|
||||
path.join(packageRoot, "dist/plugin-sdk/src/plugins/api-builder.d.ts"),
|
||||
path.join(packageRoot, "src/plugins/api-builder.ts"),
|
||||
]);
|
||||
const hookTypesPath = firstExistingPath([
|
||||
path.join(packageRoot, "dist/plugin-sdk/src/plugins/hook-types.d.ts"),
|
||||
path.join(packageRoot, "src/plugins/hook-types.ts"),
|
||||
]);
|
||||
const manifestPath = firstExistingPath([
|
||||
path.join(packageRoot, "dist/plugin-sdk/src/plugins/manifest.d.ts"),
|
||||
path.join(packageRoot, "src/plugins/manifest.ts"),
|
||||
]);
|
||||
|
||||
const apiBuilderSource = readOptional(apiBuilderPath);
|
||||
const hookTypesSource = readOptional(hookTypesPath);
|
||||
const manifestSource = readOptional(manifestPath);
|
||||
|
||||
return {
|
||||
packageJsonPath,
|
||||
packageVersion: packageJson.version,
|
||||
pluginSdkExports,
|
||||
registrars: unique([...apiBuilderSource.matchAll(/\b(register[A-Za-z0-9]+)\b/g)].map((match) => match[1])).sort(),
|
||||
hooks: parseHookNames(hookTypesSource),
|
||||
manifestContracts: parseTypeFields(manifestSource, "PluginManifestContracts"),
|
||||
};
|
||||
}
|
||||
|
||||
function findPackageRoot(entryPath) {
|
||||
let current = path.dirname(entryPath);
|
||||
while (current !== path.dirname(current)) {
|
||||
const candidate = path.join(current, "package.json");
|
||||
if (existsSync(candidate)) {
|
||||
return current;
|
||||
}
|
||||
current = path.dirname(current);
|
||||
}
|
||||
throw new Error(`Could not find openclaw package root from ${entryPath}`);
|
||||
}
|
||||
|
||||
function firstExistingPath(paths) {
|
||||
return paths.find((item) => existsSync(item)) ?? null;
|
||||
}
|
||||
|
||||
function readOptional(filePath) {
|
||||
return filePath ? readFileSync(filePath, "utf8") : "";
|
||||
}
|
||||
|
||||
function parseHookNames(source) {
|
||||
const arrayMatch = source.match(/PLUGIN_HOOK_NAMES[^=]*=\s*\[([\s\S]*?)\]/);
|
||||
if (arrayMatch) {
|
||||
return unique([...arrayMatch[1].matchAll(/["'`]([a-z0-9_:-]+)["'`]/g)].map((match) => match[1])).sort();
|
||||
}
|
||||
const unionMatch = source.match(/type\s+PluginHookName\s*=\s*([\s\S]*?);/);
|
||||
if (unionMatch) {
|
||||
return unique([...unionMatch[1].matchAll(/["'`]([a-z0-9_:-]+)["'`]/g)].map((match) => match[1])).sort();
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
function parseTypeFields(source, typeName) {
|
||||
const match = source.match(new RegExp(`(?:export\\s+)?(?:declare\\s+)?type\\s+${typeName}\\s*=\\s*\\{([\\s\\S]*?)\\n\\};`));
|
||||
if (!match) {
|
||||
return [];
|
||||
}
|
||||
return unique([...match[1].matchAll(/^\s*([A-Za-z][A-Za-z0-9]*)\??\s*:/gm)].map((field) => field[1])).sort();
|
||||
}
|
||||
|
||||
function unique(values) {
|
||||
return [...new Set(values)];
|
||||
}
|
||||
173
scripts/sync-surface.mjs
Normal file
173
scripts/sync-surface.mjs
Normal file
@ -0,0 +1,173 @@
|
||||
import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
||||
import path from "node:path";
|
||||
import { readOpenClawSurface } from "./openclaw-surface.mjs";
|
||||
|
||||
const rootDir = path.resolve(import.meta.dirname, "..");
|
||||
const check = process.argv.includes("--check");
|
||||
const surface = readOpenClawSurface();
|
||||
|
||||
const generated = new Map([
|
||||
["src/generated-hooks.js", renderHooks(surface)],
|
||||
["src/generated-registrars.js", renderRegistrars(surface)],
|
||||
["src/generated-sdk-imports.ts", renderSdkImports(surface)],
|
||||
["openclaw.plugin.json", renderManifest(surface)],
|
||||
]);
|
||||
|
||||
const changed = [];
|
||||
for (const [relativePath, content] of generated) {
|
||||
const filePath = path.join(rootDir, relativePath);
|
||||
const current = readIfExists(filePath);
|
||||
if (current !== content) {
|
||||
changed.push(relativePath);
|
||||
if (!check) {
|
||||
mkdirSync(path.dirname(filePath), { recursive: true });
|
||||
writeFileSync(filePath, content, "utf8");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (changed.length > 0 && check) {
|
||||
throw new Error(`generated OpenClaw surface files are stale:\n${changed.join("\n")}\nRun npm run sync:surface.`);
|
||||
}
|
||||
|
||||
console.log(
|
||||
`surface ${check ? "checked" : "synced"} for openclaw ${surface.packageVersion}: ${surface.registrars.length} registrars, ${surface.hooks.length} hooks, ${surface.manifestContracts.length} manifest contracts, ${surface.pluginSdkExports.length} SDK exports`,
|
||||
);
|
||||
|
||||
function renderHooks({ hooks, packageVersion }) {
|
||||
return `${header(packageVersion)}
|
||||
export function registerAllHooks(api) {
|
||||
${hooks.map((hook) => ` api.on("${hook}", kitchenSinkHook("${hook}"));`).join("\n")}
|
||||
}
|
||||
|
||||
function kitchenSinkHook(name) {
|
||||
return async (event, context) => ({
|
||||
kitchenSink: true,
|
||||
hook: name,
|
||||
observedEventKeys: Object.keys(event ?? {}),
|
||||
observedContextKeys: Object.keys(context ?? {}),
|
||||
});
|
||||
}
|
||||
`;
|
||||
}
|
||||
|
||||
function renderRegistrars({ registrars, packageVersion }) {
|
||||
return `${header(packageVersion)}
|
||||
export function registerAllRegistrars(api) {
|
||||
${registrars.map((registrar) => ` safeRegister("${registrar}", () => api.${registrar}(payloadFor("${registrar}")));`).join("\n")}
|
||||
}
|
||||
|
||||
function safeRegister(name, register) {
|
||||
try {
|
||||
register();
|
||||
} catch (error) {
|
||||
apiSurfaceProbeFailures.push({ name, message: String(error?.message ?? error) });
|
||||
}
|
||||
}
|
||||
|
||||
export const apiSurfaceProbeFailures = [];
|
||||
|
||||
function payloadFor(name) {
|
||||
const id = name.replace(/^register/, "").replace(/[A-Z]/g, (letter, index) => (index === 0 ? "" : "-") + letter.toLowerCase()) || "probe";
|
||||
return {
|
||||
id: "kitchen-sink-" + id,
|
||||
name: "kitchen-sink-" + id,
|
||||
description: "Kitchen-sink no-op probe for " + name + ".",
|
||||
command: "kitchen-sink-" + id,
|
||||
path: "/kitchen-sink/" + id,
|
||||
method: "POST",
|
||||
inputSchema: objectSchema(),
|
||||
schema: objectSchema(),
|
||||
configSchema: objectSchema(),
|
||||
handler: async () => ({ ok: true, registrar: name }),
|
||||
run: async () => ({ ok: true, registrar: name }),
|
||||
execute: async () => ({ ok: true, registrar: name }),
|
||||
start: async () => ({ ok: true, registrar: name }),
|
||||
stop: async () => ({ ok: true, registrar: name }),
|
||||
setup: async () => ({ ok: true, registrar: name }),
|
||||
migrate: async (value) => value,
|
||||
transform: async (value) => value,
|
||||
render: async () => "kitchen-sink memory prompt section",
|
||||
create: async () => ({ ok: true, registrar: name }),
|
||||
speak: async () => ({ audio: new Uint8Array(), mimeType: "audio/wav" }),
|
||||
synthesize: async () => ({ audio: new Uint8Array(), mimeType: "audio/wav" }),
|
||||
send: async () => ({ ok: true }),
|
||||
receive: async () => ({ ok: true }),
|
||||
probe: async () => ({ enabled: false, reason: "kitchen-sink no-op" }),
|
||||
};
|
||||
}
|
||||
|
||||
function objectSchema() {
|
||||
return {
|
||||
type: "object",
|
||||
additionalProperties: true,
|
||||
properties: {
|
||||
input: { type: "string" },
|
||||
},
|
||||
};
|
||||
}
|
||||
`;
|
||||
}
|
||||
|
||||
function renderSdkImports({ pluginSdkExports, packageVersion }) {
|
||||
return `${header(packageVersion)}${pluginSdkExports
|
||||
.map((specifier, index) => `import type * as sdk${index} from "${specifier}";`)
|
||||
.join("\n")}
|
||||
|
||||
export type KitchenSinkSdkImportSurface =
|
||||
${pluginSdkExports.map((_, index) => ` | typeof sdk${index}`).join("\n")};
|
||||
`;
|
||||
}
|
||||
|
||||
function renderManifest({ manifestContracts, packageVersion }) {
|
||||
const contracts = Object.fromEntries(manifestContracts.map((field) => [field, [`kitchen-sink-${kebab(field)}`]]));
|
||||
const manifest = {
|
||||
id: "openclaw-kitchen-sink",
|
||||
name: "OpenClaw Kitchen Sink",
|
||||
version: "0.1.0",
|
||||
description: `Generated kitchen-sink fixture for OpenClaw plugin API surface ${packageVersion}.`,
|
||||
enabledByDefault: false,
|
||||
kind: ["tool", "hook", "channel", "provider"],
|
||||
channels: ["kitchen-sink-channel"],
|
||||
providers: ["kitchen-sink-provider"],
|
||||
cliBackends: ["kitchen-sink-cli-backend"],
|
||||
commandAliases: [{ command: "kitchen-sink", pluginId: "openclaw-kitchen-sink" }],
|
||||
activation: {
|
||||
onProviders: ["kitchen-sink-provider"],
|
||||
onChannels: ["kitchen-sink-channel"],
|
||||
onCommands: ["kitchen-sink"],
|
||||
onCapabilities: ["provider", "channel", "tool", "hook"],
|
||||
},
|
||||
setup: {
|
||||
providers: [{ id: "kitchen-sink-provider", authMethods: ["none"], envVars: [] }],
|
||||
cliBackends: ["kitchen-sink-cli-backend"],
|
||||
configMigrations: ["kitchen-sink-config-migration"],
|
||||
requiresRuntime: false,
|
||||
},
|
||||
contracts,
|
||||
configSchema: {
|
||||
type: "object",
|
||||
additionalProperties: false,
|
||||
properties: {
|
||||
enabled: { type: "boolean", default: false },
|
||||
},
|
||||
},
|
||||
};
|
||||
return `${JSON.stringify(manifest, null, 2)}\n`;
|
||||
}
|
||||
|
||||
function header(packageVersion) {
|
||||
return `// Generated by scripts/sync-surface.mjs from openclaw ${packageVersion}. Do not edit by hand.\n`;
|
||||
}
|
||||
|
||||
function kebab(value) {
|
||||
return value.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`).replace(/^-/, "");
|
||||
}
|
||||
|
||||
function readIfExists(filePath) {
|
||||
try {
|
||||
return readFileSync(filePath, "utf8");
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
42
src/generated-hooks.js
Normal file
42
src/generated-hooks.js
Normal file
@ -0,0 +1,42 @@
|
||||
// Generated by scripts/sync-surface.mjs from openclaw 2026.4.24. Do not edit by hand.
|
||||
|
||||
export function registerAllHooks(api) {
|
||||
api.on("after_compaction", kitchenSinkHook("after_compaction"));
|
||||
api.on("after_tool_call", kitchenSinkHook("after_tool_call"));
|
||||
api.on("agent_end", kitchenSinkHook("agent_end"));
|
||||
api.on("before_agent_reply", kitchenSinkHook("before_agent_reply"));
|
||||
api.on("before_agent_start", kitchenSinkHook("before_agent_start"));
|
||||
api.on("before_compaction", kitchenSinkHook("before_compaction"));
|
||||
api.on("before_dispatch", kitchenSinkHook("before_dispatch"));
|
||||
api.on("before_install", kitchenSinkHook("before_install"));
|
||||
api.on("before_message_write", kitchenSinkHook("before_message_write"));
|
||||
api.on("before_model_resolve", kitchenSinkHook("before_model_resolve"));
|
||||
api.on("before_prompt_build", kitchenSinkHook("before_prompt_build"));
|
||||
api.on("before_reset", kitchenSinkHook("before_reset"));
|
||||
api.on("before_tool_call", kitchenSinkHook("before_tool_call"));
|
||||
api.on("gateway_start", kitchenSinkHook("gateway_start"));
|
||||
api.on("gateway_stop", kitchenSinkHook("gateway_stop"));
|
||||
api.on("inbound_claim", kitchenSinkHook("inbound_claim"));
|
||||
api.on("llm_input", kitchenSinkHook("llm_input"));
|
||||
api.on("llm_output", kitchenSinkHook("llm_output"));
|
||||
api.on("message_received", kitchenSinkHook("message_received"));
|
||||
api.on("message_sending", kitchenSinkHook("message_sending"));
|
||||
api.on("message_sent", kitchenSinkHook("message_sent"));
|
||||
api.on("reply_dispatch", kitchenSinkHook("reply_dispatch"));
|
||||
api.on("session_end", kitchenSinkHook("session_end"));
|
||||
api.on("session_start", kitchenSinkHook("session_start"));
|
||||
api.on("subagent_delivery_target", kitchenSinkHook("subagent_delivery_target"));
|
||||
api.on("subagent_ended", kitchenSinkHook("subagent_ended"));
|
||||
api.on("subagent_spawned", kitchenSinkHook("subagent_spawned"));
|
||||
api.on("subagent_spawning", kitchenSinkHook("subagent_spawning"));
|
||||
api.on("tool_result_persist", kitchenSinkHook("tool_result_persist"));
|
||||
}
|
||||
|
||||
function kitchenSinkHook(name) {
|
||||
return async (event, context) => ({
|
||||
kitchenSink: true,
|
||||
hook: name,
|
||||
observedEventKeys: Object.keys(event ?? {}),
|
||||
observedContextKeys: Object.keys(context ?? {}),
|
||||
});
|
||||
}
|
||||
94
src/generated-registrars.js
Normal file
94
src/generated-registrars.js
Normal file
@ -0,0 +1,94 @@
|
||||
// Generated by scripts/sync-surface.mjs from openclaw 2026.4.24. Do not edit by hand.
|
||||
|
||||
export function registerAllRegistrars(api) {
|
||||
safeRegister("registerAgentHarness", () => api.registerAgentHarness(payloadFor("registerAgentHarness")));
|
||||
safeRegister("registerAgentToolResultMiddleware", () => api.registerAgentToolResultMiddleware(payloadFor("registerAgentToolResultMiddleware")));
|
||||
safeRegister("registerAutoEnableProbe", () => api.registerAutoEnableProbe(payloadFor("registerAutoEnableProbe")));
|
||||
safeRegister("registerChannel", () => api.registerChannel(payloadFor("registerChannel")));
|
||||
safeRegister("registerCli", () => api.registerCli(payloadFor("registerCli")));
|
||||
safeRegister("registerCliBackend", () => api.registerCliBackend(payloadFor("registerCliBackend")));
|
||||
safeRegister("registerCodexAppServerExtensionFactory", () => api.registerCodexAppServerExtensionFactory(payloadFor("registerCodexAppServerExtensionFactory")));
|
||||
safeRegister("registerCommand", () => api.registerCommand(payloadFor("registerCommand")));
|
||||
safeRegister("registerCompactionProvider", () => api.registerCompactionProvider(payloadFor("registerCompactionProvider")));
|
||||
safeRegister("registerConfigMigration", () => api.registerConfigMigration(payloadFor("registerConfigMigration")));
|
||||
safeRegister("registerContextEngine", () => api.registerContextEngine(payloadFor("registerContextEngine")));
|
||||
safeRegister("registerDetachedTaskRuntime", () => api.registerDetachedTaskRuntime(payloadFor("registerDetachedTaskRuntime")));
|
||||
safeRegister("registerGatewayDiscoveryService", () => api.registerGatewayDiscoveryService(payloadFor("registerGatewayDiscoveryService")));
|
||||
safeRegister("registerGatewayMethod", () => api.registerGatewayMethod(payloadFor("registerGatewayMethod")));
|
||||
safeRegister("registerHook", () => api.registerHook(payloadFor("registerHook")));
|
||||
safeRegister("registerHttpRoute", () => api.registerHttpRoute(payloadFor("registerHttpRoute")));
|
||||
safeRegister("registerImageGenerationProvider", () => api.registerImageGenerationProvider(payloadFor("registerImageGenerationProvider")));
|
||||
safeRegister("registerInteractiveHandler", () => api.registerInteractiveHandler(payloadFor("registerInteractiveHandler")));
|
||||
safeRegister("registerMediaUnderstandingProvider", () => api.registerMediaUnderstandingProvider(payloadFor("registerMediaUnderstandingProvider")));
|
||||
safeRegister("registerMemoryCapability", () => api.registerMemoryCapability(payloadFor("registerMemoryCapability")));
|
||||
safeRegister("registerMemoryCorpusSupplement", () => api.registerMemoryCorpusSupplement(payloadFor("registerMemoryCorpusSupplement")));
|
||||
safeRegister("registerMemoryEmbeddingProvider", () => api.registerMemoryEmbeddingProvider(payloadFor("registerMemoryEmbeddingProvider")));
|
||||
safeRegister("registerMemoryFlushPlan", () => api.registerMemoryFlushPlan(payloadFor("registerMemoryFlushPlan")));
|
||||
safeRegister("registerMemoryPromptSection", () => api.registerMemoryPromptSection(payloadFor("registerMemoryPromptSection")));
|
||||
safeRegister("registerMemoryPromptSupplement", () => api.registerMemoryPromptSupplement(payloadFor("registerMemoryPromptSupplement")));
|
||||
safeRegister("registerMemoryRuntime", () => api.registerMemoryRuntime(payloadFor("registerMemoryRuntime")));
|
||||
safeRegister("registerMusicGenerationProvider", () => api.registerMusicGenerationProvider(payloadFor("registerMusicGenerationProvider")));
|
||||
safeRegister("registerNodeHostCommand", () => api.registerNodeHostCommand(payloadFor("registerNodeHostCommand")));
|
||||
safeRegister("registerProvider", () => api.registerProvider(payloadFor("registerProvider")));
|
||||
safeRegister("registerRealtimeTranscriptionProvider", () => api.registerRealtimeTranscriptionProvider(payloadFor("registerRealtimeTranscriptionProvider")));
|
||||
safeRegister("registerRealtimeVoiceProvider", () => api.registerRealtimeVoiceProvider(payloadFor("registerRealtimeVoiceProvider")));
|
||||
safeRegister("registerReload", () => api.registerReload(payloadFor("registerReload")));
|
||||
safeRegister("registerSecurityAuditCollector", () => api.registerSecurityAuditCollector(payloadFor("registerSecurityAuditCollector")));
|
||||
safeRegister("registerService", () => api.registerService(payloadFor("registerService")));
|
||||
safeRegister("registerSpeechProvider", () => api.registerSpeechProvider(payloadFor("registerSpeechProvider")));
|
||||
safeRegister("registerTextTransforms", () => api.registerTextTransforms(payloadFor("registerTextTransforms")));
|
||||
safeRegister("registerTool", () => api.registerTool(payloadFor("registerTool")));
|
||||
safeRegister("registerVideoGenerationProvider", () => api.registerVideoGenerationProvider(payloadFor("registerVideoGenerationProvider")));
|
||||
safeRegister("registerWebFetchProvider", () => api.registerWebFetchProvider(payloadFor("registerWebFetchProvider")));
|
||||
safeRegister("registerWebSearchProvider", () => api.registerWebSearchProvider(payloadFor("registerWebSearchProvider")));
|
||||
}
|
||||
|
||||
function safeRegister(name, register) {
|
||||
try {
|
||||
register();
|
||||
} catch (error) {
|
||||
apiSurfaceProbeFailures.push({ name, message: String(error?.message ?? error) });
|
||||
}
|
||||
}
|
||||
|
||||
export const apiSurfaceProbeFailures = [];
|
||||
|
||||
function payloadFor(name) {
|
||||
const id = name.replace(/^register/, "").replace(/[A-Z]/g, (letter, index) => (index === 0 ? "" : "-") + letter.toLowerCase()) || "probe";
|
||||
return {
|
||||
id: "kitchen-sink-" + id,
|
||||
name: "kitchen-sink-" + id,
|
||||
description: "Kitchen-sink no-op probe for " + name + ".",
|
||||
command: "kitchen-sink-" + id,
|
||||
path: "/kitchen-sink/" + id,
|
||||
method: "POST",
|
||||
inputSchema: objectSchema(),
|
||||
schema: objectSchema(),
|
||||
configSchema: objectSchema(),
|
||||
handler: async () => ({ ok: true, registrar: name }),
|
||||
run: async () => ({ ok: true, registrar: name }),
|
||||
execute: async () => ({ ok: true, registrar: name }),
|
||||
start: async () => ({ ok: true, registrar: name }),
|
||||
stop: async () => ({ ok: true, registrar: name }),
|
||||
setup: async () => ({ ok: true, registrar: name }),
|
||||
migrate: async (value) => value,
|
||||
transform: async (value) => value,
|
||||
render: async () => "kitchen-sink memory prompt section",
|
||||
create: async () => ({ ok: true, registrar: name }),
|
||||
speak: async () => ({ audio: new Uint8Array(), mimeType: "audio/wav" }),
|
||||
synthesize: async () => ({ audio: new Uint8Array(), mimeType: "audio/wav" }),
|
||||
send: async () => ({ ok: true }),
|
||||
receive: async () => ({ ok: true }),
|
||||
probe: async () => ({ enabled: false, reason: "kitchen-sink no-op" }),
|
||||
};
|
||||
}
|
||||
|
||||
function objectSchema() {
|
||||
return {
|
||||
type: "object",
|
||||
additionalProperties: true,
|
||||
properties: {
|
||||
input: { type: "string" },
|
||||
},
|
||||
};
|
||||
}
|
||||
615
src/generated-sdk-imports.ts
Normal file
615
src/generated-sdk-imports.ts
Normal file
@ -0,0 +1,615 @@
|
||||
// Generated by scripts/sync-surface.mjs from openclaw 2026.4.24. Do not edit by hand.
|
||||
import type * as sdk0 from "openclaw/plugin-sdk";
|
||||
import type * as sdk1 from "openclaw/plugin-sdk/account-core";
|
||||
import type * as sdk2 from "openclaw/plugin-sdk/account-helpers";
|
||||
import type * as sdk3 from "openclaw/plugin-sdk/account-id";
|
||||
import type * as sdk4 from "openclaw/plugin-sdk/account-resolution";
|
||||
import type * as sdk5 from "openclaw/plugin-sdk/account-resolution-runtime";
|
||||
import type * as sdk6 from "openclaw/plugin-sdk/acp-binding-resolve-runtime";
|
||||
import type * as sdk7 from "openclaw/plugin-sdk/acp-binding-runtime";
|
||||
import type * as sdk8 from "openclaw/plugin-sdk/acp-runtime";
|
||||
import type * as sdk9 from "openclaw/plugin-sdk/agent-config-primitives";
|
||||
import type * as sdk10 from "openclaw/plugin-sdk/agent-harness";
|
||||
import type * as sdk11 from "openclaw/plugin-sdk/agent-harness-runtime";
|
||||
import type * as sdk12 from "openclaw/plugin-sdk/agent-media-payload";
|
||||
import type * as sdk13 from "openclaw/plugin-sdk/agent-runtime";
|
||||
import type * as sdk14 from "openclaw/plugin-sdk/allow-from";
|
||||
import type * as sdk15 from "openclaw/plugin-sdk/allowlist-config-edit";
|
||||
import type * as sdk16 from "openclaw/plugin-sdk/approval-auth-runtime";
|
||||
import type * as sdk17 from "openclaw/plugin-sdk/approval-client-runtime";
|
||||
import type * as sdk18 from "openclaw/plugin-sdk/approval-delivery-runtime";
|
||||
import type * as sdk19 from "openclaw/plugin-sdk/approval-gateway-runtime";
|
||||
import type * as sdk20 from "openclaw/plugin-sdk/approval-handler-adapter-runtime";
|
||||
import type * as sdk21 from "openclaw/plugin-sdk/approval-handler-runtime";
|
||||
import type * as sdk22 from "openclaw/plugin-sdk/approval-native-runtime";
|
||||
import type * as sdk23 from "openclaw/plugin-sdk/approval-reply-runtime";
|
||||
import type * as sdk24 from "openclaw/plugin-sdk/approval-runtime";
|
||||
import type * as sdk25 from "openclaw/plugin-sdk/bluebubbles";
|
||||
import type * as sdk26 from "openclaw/plugin-sdk/bluebubbles-policy";
|
||||
import type * as sdk27 from "openclaw/plugin-sdk/boolean-param";
|
||||
import type * as sdk28 from "openclaw/plugin-sdk/browser-cdp";
|
||||
import type * as sdk29 from "openclaw/plugin-sdk/browser-config";
|
||||
import type * as sdk30 from "openclaw/plugin-sdk/browser-config-runtime";
|
||||
import type * as sdk31 from "openclaw/plugin-sdk/browser-config-support";
|
||||
import type * as sdk32 from "openclaw/plugin-sdk/browser-control-auth";
|
||||
import type * as sdk33 from "openclaw/plugin-sdk/browser-node-runtime";
|
||||
import type * as sdk34 from "openclaw/plugin-sdk/browser-profiles";
|
||||
import type * as sdk35 from "openclaw/plugin-sdk/browser-security-runtime";
|
||||
import type * as sdk36 from "openclaw/plugin-sdk/browser-setup-tools";
|
||||
import type * as sdk37 from "openclaw/plugin-sdk/browser-support";
|
||||
import type * as sdk38 from "openclaw/plugin-sdk/channel-actions";
|
||||
import type * as sdk39 from "openclaw/plugin-sdk/channel-config-helpers";
|
||||
import type * as sdk40 from "openclaw/plugin-sdk/channel-config-primitives";
|
||||
import type * as sdk41 from "openclaw/plugin-sdk/channel-config-schema";
|
||||
import type * as sdk42 from "openclaw/plugin-sdk/channel-config-writes";
|
||||
import type * as sdk43 from "openclaw/plugin-sdk/channel-contract";
|
||||
import type * as sdk44 from "openclaw/plugin-sdk/channel-contract-testing";
|
||||
import type * as sdk45 from "openclaw/plugin-sdk/channel-core";
|
||||
import type * as sdk46 from "openclaw/plugin-sdk/channel-entry-contract";
|
||||
import type * as sdk47 from "openclaw/plugin-sdk/channel-envelope";
|
||||
import type * as sdk48 from "openclaw/plugin-sdk/channel-feedback";
|
||||
import type * as sdk49 from "openclaw/plugin-sdk/channel-inbound";
|
||||
import type * as sdk50 from "openclaw/plugin-sdk/channel-inbound-debounce";
|
||||
import type * as sdk51 from "openclaw/plugin-sdk/channel-inbound-roots";
|
||||
import type * as sdk52 from "openclaw/plugin-sdk/channel-lifecycle";
|
||||
import type * as sdk53 from "openclaw/plugin-sdk/channel-location";
|
||||
import type * as sdk54 from "openclaw/plugin-sdk/channel-logging";
|
||||
import type * as sdk55 from "openclaw/plugin-sdk/channel-mention-gating";
|
||||
import type * as sdk56 from "openclaw/plugin-sdk/channel-pairing";
|
||||
import type * as sdk57 from "openclaw/plugin-sdk/channel-pairing-paths";
|
||||
import type * as sdk58 from "openclaw/plugin-sdk/channel-plugin-common";
|
||||
import type * as sdk59 from "openclaw/plugin-sdk/channel-policy";
|
||||
import type * as sdk60 from "openclaw/plugin-sdk/channel-reply-options-runtime";
|
||||
import type * as sdk61 from "openclaw/plugin-sdk/channel-reply-pipeline";
|
||||
import type * as sdk62 from "openclaw/plugin-sdk/channel-runtime";
|
||||
import type * as sdk63 from "openclaw/plugin-sdk/channel-runtime-context";
|
||||
import type * as sdk64 from "openclaw/plugin-sdk/channel-secret-basic-runtime";
|
||||
import type * as sdk65 from "openclaw/plugin-sdk/channel-secret-runtime";
|
||||
import type * as sdk66 from "openclaw/plugin-sdk/channel-secret-tts-runtime";
|
||||
import type * as sdk67 from "openclaw/plugin-sdk/channel-send-result";
|
||||
import type * as sdk68 from "openclaw/plugin-sdk/channel-setup";
|
||||
import type * as sdk69 from "openclaw/plugin-sdk/channel-status";
|
||||
import type * as sdk70 from "openclaw/plugin-sdk/channel-streaming";
|
||||
import type * as sdk71 from "openclaw/plugin-sdk/channel-targets";
|
||||
import type * as sdk72 from "openclaw/plugin-sdk/cli-backend";
|
||||
import type * as sdk73 from "openclaw/plugin-sdk/cli-runtime";
|
||||
import type * as sdk74 from "openclaw/plugin-sdk/collection-runtime";
|
||||
import type * as sdk75 from "openclaw/plugin-sdk/command-auth";
|
||||
import type * as sdk76 from "openclaw/plugin-sdk/command-auth-native";
|
||||
import type * as sdk77 from "openclaw/plugin-sdk/command-detection";
|
||||
import type * as sdk78 from "openclaw/plugin-sdk/command-gating";
|
||||
import type * as sdk79 from "openclaw/plugin-sdk/command-primitives-runtime";
|
||||
import type * as sdk80 from "openclaw/plugin-sdk/command-status";
|
||||
import type * as sdk81 from "openclaw/plugin-sdk/command-status-runtime";
|
||||
import type * as sdk82 from "openclaw/plugin-sdk/command-surface";
|
||||
import type * as sdk83 from "openclaw/plugin-sdk/compat";
|
||||
import type * as sdk84 from "openclaw/plugin-sdk/config-runtime";
|
||||
import type * as sdk85 from "openclaw/plugin-sdk/config-schema";
|
||||
import type * as sdk86 from "openclaw/plugin-sdk/context-visibility-runtime";
|
||||
import type * as sdk87 from "openclaw/plugin-sdk/conversation-binding-runtime";
|
||||
import type * as sdk88 from "openclaw/plugin-sdk/conversation-runtime";
|
||||
import type * as sdk89 from "openclaw/plugin-sdk/core";
|
||||
import type * as sdk90 from "openclaw/plugin-sdk/dangerous-name-runtime";
|
||||
import type * as sdk91 from "openclaw/plugin-sdk/device-bootstrap";
|
||||
import type * as sdk92 from "openclaw/plugin-sdk/diagnostic-runtime";
|
||||
import type * as sdk93 from "openclaw/plugin-sdk/diagnostics-otel";
|
||||
import type * as sdk94 from "openclaw/plugin-sdk/diffs";
|
||||
import type * as sdk95 from "openclaw/plugin-sdk/direct-dm";
|
||||
import type * as sdk96 from "openclaw/plugin-sdk/direct-dm-access";
|
||||
import type * as sdk97 from "openclaw/plugin-sdk/direct-dm-guard-policy";
|
||||
import type * as sdk98 from "openclaw/plugin-sdk/directory-config-runtime";
|
||||
import type * as sdk99 from "openclaw/plugin-sdk/directory-runtime";
|
||||
import type * as sdk100 from "openclaw/plugin-sdk/document-extractor";
|
||||
import type * as sdk101 from "openclaw/plugin-sdk/error-runtime";
|
||||
import type * as sdk102 from "openclaw/plugin-sdk/extension-shared";
|
||||
import type * as sdk103 from "openclaw/plugin-sdk/feishu";
|
||||
import type * as sdk104 from "openclaw/plugin-sdk/feishu-conversation";
|
||||
import type * as sdk105 from "openclaw/plugin-sdk/feishu-setup";
|
||||
import type * as sdk106 from "openclaw/plugin-sdk/fetch-runtime";
|
||||
import type * as sdk107 from "openclaw/plugin-sdk/file-lock";
|
||||
import type * as sdk108 from "openclaw/plugin-sdk/gateway-runtime";
|
||||
import type * as sdk109 from "openclaw/plugin-sdk/github-copilot-login";
|
||||
import type * as sdk110 from "openclaw/plugin-sdk/github-copilot-token";
|
||||
import type * as sdk111 from "openclaw/plugin-sdk/global-singleton";
|
||||
import type * as sdk112 from "openclaw/plugin-sdk/googlechat";
|
||||
import type * as sdk113 from "openclaw/plugin-sdk/googlechat-runtime-shared";
|
||||
import type * as sdk114 from "openclaw/plugin-sdk/group-access";
|
||||
import type * as sdk115 from "openclaw/plugin-sdk/group-activation";
|
||||
import type * as sdk116 from "openclaw/plugin-sdk/hook-runtime";
|
||||
import type * as sdk117 from "openclaw/plugin-sdk/host-runtime";
|
||||
import type * as sdk118 from "openclaw/plugin-sdk/image-generation";
|
||||
import type * as sdk119 from "openclaw/plugin-sdk/image-generation-core";
|
||||
import type * as sdk120 from "openclaw/plugin-sdk/image-generation-runtime";
|
||||
import type * as sdk121 from "openclaw/plugin-sdk/inbound-envelope";
|
||||
import type * as sdk122 from "openclaw/plugin-sdk/inbound-reply-dispatch";
|
||||
import type * as sdk123 from "openclaw/plugin-sdk/infra-runtime";
|
||||
import type * as sdk124 from "openclaw/plugin-sdk/interactive-runtime";
|
||||
import type * as sdk125 from "openclaw/plugin-sdk/irc";
|
||||
import type * as sdk126 from "openclaw/plugin-sdk/irc-surface";
|
||||
import type * as sdk127 from "openclaw/plugin-sdk/json-store";
|
||||
import type * as sdk128 from "openclaw/plugin-sdk/keyed-async-queue";
|
||||
import type * as sdk129 from "openclaw/plugin-sdk/lazy-runtime";
|
||||
import type * as sdk130 from "openclaw/plugin-sdk/line";
|
||||
import type * as sdk131 from "openclaw/plugin-sdk/line-core";
|
||||
import type * as sdk132 from "openclaw/plugin-sdk/line-runtime";
|
||||
import type * as sdk133 from "openclaw/plugin-sdk/line-surface";
|
||||
import type * as sdk134 from "openclaw/plugin-sdk/llm-task";
|
||||
import type * as sdk135 from "openclaw/plugin-sdk/lmstudio";
|
||||
import type * as sdk136 from "openclaw/plugin-sdk/lmstudio-runtime";
|
||||
import type * as sdk137 from "openclaw/plugin-sdk/logging-core";
|
||||
import type * as sdk138 from "openclaw/plugin-sdk/markdown-table-runtime";
|
||||
import type * as sdk139 from "openclaw/plugin-sdk/matrix";
|
||||
import type * as sdk140 from "openclaw/plugin-sdk/matrix-helper";
|
||||
import type * as sdk141 from "openclaw/plugin-sdk/matrix-runtime-heavy";
|
||||
import type * as sdk142 from "openclaw/plugin-sdk/matrix-runtime-shared";
|
||||
import type * as sdk143 from "openclaw/plugin-sdk/matrix-runtime-surface";
|
||||
import type * as sdk144 from "openclaw/plugin-sdk/matrix-surface";
|
||||
import type * as sdk145 from "openclaw/plugin-sdk/matrix-thread-bindings";
|
||||
import type * as sdk146 from "openclaw/plugin-sdk/mattermost";
|
||||
import type * as sdk147 from "openclaw/plugin-sdk/mattermost-policy";
|
||||
import type * as sdk148 from "openclaw/plugin-sdk/media-generation-runtime";
|
||||
import type * as sdk149 from "openclaw/plugin-sdk/media-generation-runtime-shared";
|
||||
import type * as sdk150 from "openclaw/plugin-sdk/media-mime";
|
||||
import type * as sdk151 from "openclaw/plugin-sdk/media-runtime";
|
||||
import type * as sdk152 from "openclaw/plugin-sdk/media-store";
|
||||
import type * as sdk153 from "openclaw/plugin-sdk/media-understanding";
|
||||
import type * as sdk154 from "openclaw/plugin-sdk/media-understanding-runtime";
|
||||
import type * as sdk155 from "openclaw/plugin-sdk/memory-core";
|
||||
import type * as sdk156 from "openclaw/plugin-sdk/memory-core-engine-runtime";
|
||||
import type * as sdk157 from "openclaw/plugin-sdk/memory-core-host-engine-embeddings";
|
||||
import type * as sdk158 from "openclaw/plugin-sdk/memory-core-host-engine-foundation";
|
||||
import type * as sdk159 from "openclaw/plugin-sdk/memory-core-host-engine-qmd";
|
||||
import type * as sdk160 from "openclaw/plugin-sdk/memory-core-host-engine-storage";
|
||||
import type * as sdk161 from "openclaw/plugin-sdk/memory-core-host-events";
|
||||
import type * as sdk162 from "openclaw/plugin-sdk/memory-core-host-multimodal";
|
||||
import type * as sdk163 from "openclaw/plugin-sdk/memory-core-host-query";
|
||||
import type * as sdk164 from "openclaw/plugin-sdk/memory-core-host-runtime-cli";
|
||||
import type * as sdk165 from "openclaw/plugin-sdk/memory-core-host-runtime-core";
|
||||
import type * as sdk166 from "openclaw/plugin-sdk/memory-core-host-runtime-files";
|
||||
import type * as sdk167 from "openclaw/plugin-sdk/memory-core-host-secret";
|
||||
import type * as sdk168 from "openclaw/plugin-sdk/memory-core-host-status";
|
||||
import type * as sdk169 from "openclaw/plugin-sdk/memory-host-core";
|
||||
import type * as sdk170 from "openclaw/plugin-sdk/memory-host-events";
|
||||
import type * as sdk171 from "openclaw/plugin-sdk/memory-host-files";
|
||||
import type * as sdk172 from "openclaw/plugin-sdk/memory-host-markdown";
|
||||
import type * as sdk173 from "openclaw/plugin-sdk/memory-host-search";
|
||||
import type * as sdk174 from "openclaw/plugin-sdk/memory-host-status";
|
||||
import type * as sdk175 from "openclaw/plugin-sdk/memory-lancedb";
|
||||
import type * as sdk176 from "openclaw/plugin-sdk/messaging-targets";
|
||||
import type * as sdk177 from "openclaw/plugin-sdk/models-provider-runtime";
|
||||
import type * as sdk178 from "openclaw/plugin-sdk/msteams";
|
||||
import type * as sdk179 from "openclaw/plugin-sdk/music-generation";
|
||||
import type * as sdk180 from "openclaw/plugin-sdk/music-generation-core";
|
||||
import type * as sdk181 from "openclaw/plugin-sdk/native-command-config-runtime";
|
||||
import type * as sdk182 from "openclaw/plugin-sdk/native-command-registry";
|
||||
import type * as sdk183 from "openclaw/plugin-sdk/nextcloud-talk";
|
||||
import type * as sdk184 from "openclaw/plugin-sdk/nostr";
|
||||
import type * as sdk185 from "openclaw/plugin-sdk/opencode";
|
||||
import type * as sdk186 from "openclaw/plugin-sdk/outbound-media";
|
||||
import type * as sdk187 from "openclaw/plugin-sdk/outbound-runtime";
|
||||
import type * as sdk188 from "openclaw/plugin-sdk/param-readers";
|
||||
import type * as sdk189 from "openclaw/plugin-sdk/persistent-dedupe";
|
||||
import type * as sdk190 from "openclaw/plugin-sdk/plugin-entry";
|
||||
import type * as sdk191 from "openclaw/plugin-sdk/plugin-runtime";
|
||||
import type * as sdk192 from "openclaw/plugin-sdk/poll-runtime";
|
||||
import type * as sdk193 from "openclaw/plugin-sdk/process-runtime";
|
||||
import type * as sdk194 from "openclaw/plugin-sdk/provider-auth";
|
||||
import type * as sdk195 from "openclaw/plugin-sdk/provider-auth-api-key";
|
||||
import type * as sdk196 from "openclaw/plugin-sdk/provider-auth-login";
|
||||
import type * as sdk197 from "openclaw/plugin-sdk/provider-auth-result";
|
||||
import type * as sdk198 from "openclaw/plugin-sdk/provider-auth-runtime";
|
||||
import type * as sdk199 from "openclaw/plugin-sdk/provider-catalog-shared";
|
||||
import type * as sdk200 from "openclaw/plugin-sdk/provider-entry";
|
||||
import type * as sdk201 from "openclaw/plugin-sdk/provider-env-vars";
|
||||
import type * as sdk202 from "openclaw/plugin-sdk/provider-http";
|
||||
import type * as sdk203 from "openclaw/plugin-sdk/provider-model-shared";
|
||||
import type * as sdk204 from "openclaw/plugin-sdk/provider-model-types";
|
||||
import type * as sdk205 from "openclaw/plugin-sdk/provider-onboard";
|
||||
import type * as sdk206 from "openclaw/plugin-sdk/provider-selection-runtime";
|
||||
import type * as sdk207 from "openclaw/plugin-sdk/provider-setup";
|
||||
import type * as sdk208 from "openclaw/plugin-sdk/provider-stream";
|
||||
import type * as sdk209 from "openclaw/plugin-sdk/provider-stream-family";
|
||||
import type * as sdk210 from "openclaw/plugin-sdk/provider-stream-shared";
|
||||
import type * as sdk211 from "openclaw/plugin-sdk/provider-tools";
|
||||
import type * as sdk212 from "openclaw/plugin-sdk/provider-transport-runtime";
|
||||
import type * as sdk213 from "openclaw/plugin-sdk/provider-usage";
|
||||
import type * as sdk214 from "openclaw/plugin-sdk/provider-web-fetch";
|
||||
import type * as sdk215 from "openclaw/plugin-sdk/provider-web-fetch-contract";
|
||||
import type * as sdk216 from "openclaw/plugin-sdk/provider-web-search";
|
||||
import type * as sdk217 from "openclaw/plugin-sdk/provider-web-search-config-contract";
|
||||
import type * as sdk218 from "openclaw/plugin-sdk/provider-web-search-contract";
|
||||
import type * as sdk219 from "openclaw/plugin-sdk/provider-zai-endpoint";
|
||||
import type * as sdk220 from "openclaw/plugin-sdk/proxy-capture";
|
||||
import type * as sdk221 from "openclaw/plugin-sdk/qa-channel";
|
||||
import type * as sdk222 from "openclaw/plugin-sdk/qa-channel-protocol";
|
||||
import type * as sdk223 from "openclaw/plugin-sdk/qa-runner-runtime";
|
||||
import type * as sdk224 from "openclaw/plugin-sdk/realtime-transcription";
|
||||
import type * as sdk225 from "openclaw/plugin-sdk/realtime-voice";
|
||||
import type * as sdk226 from "openclaw/plugin-sdk/reply-chunking";
|
||||
import type * as sdk227 from "openclaw/plugin-sdk/reply-dedupe";
|
||||
import type * as sdk228 from "openclaw/plugin-sdk/reply-dispatch-runtime";
|
||||
import type * as sdk229 from "openclaw/plugin-sdk/reply-history";
|
||||
import type * as sdk230 from "openclaw/plugin-sdk/reply-payload";
|
||||
import type * as sdk231 from "openclaw/plugin-sdk/reply-reference";
|
||||
import type * as sdk232 from "openclaw/plugin-sdk/reply-runtime";
|
||||
import type * as sdk233 from "openclaw/plugin-sdk/request-url";
|
||||
import type * as sdk234 from "openclaw/plugin-sdk/response-limit-runtime";
|
||||
import type * as sdk235 from "openclaw/plugin-sdk/retry-runtime";
|
||||
import type * as sdk236 from "openclaw/plugin-sdk/routing";
|
||||
import type * as sdk237 from "openclaw/plugin-sdk/run-command";
|
||||
import type * as sdk238 from "openclaw/plugin-sdk/runtime";
|
||||
import type * as sdk239 from "openclaw/plugin-sdk/runtime-config-snapshot";
|
||||
import type * as sdk240 from "openclaw/plugin-sdk/runtime-doctor";
|
||||
import type * as sdk241 from "openclaw/plugin-sdk/runtime-env";
|
||||
import type * as sdk242 from "openclaw/plugin-sdk/runtime-fetch";
|
||||
import type * as sdk243 from "openclaw/plugin-sdk/runtime-group-policy";
|
||||
import type * as sdk244 from "openclaw/plugin-sdk/runtime-logger";
|
||||
import type * as sdk245 from "openclaw/plugin-sdk/runtime-secret-resolution";
|
||||
import type * as sdk246 from "openclaw/plugin-sdk/runtime-store";
|
||||
import type * as sdk247 from "openclaw/plugin-sdk/sandbox";
|
||||
import type * as sdk248 from "openclaw/plugin-sdk/secret-file-runtime";
|
||||
import type * as sdk249 from "openclaw/plugin-sdk/secret-input";
|
||||
import type * as sdk250 from "openclaw/plugin-sdk/secret-input-runtime";
|
||||
import type * as sdk251 from "openclaw/plugin-sdk/secret-ref-runtime";
|
||||
import type * as sdk252 from "openclaw/plugin-sdk/security-runtime";
|
||||
import type * as sdk253 from "openclaw/plugin-sdk/self-hosted-provider-setup";
|
||||
import type * as sdk254 from "openclaw/plugin-sdk/session-binding-runtime";
|
||||
import type * as sdk255 from "openclaw/plugin-sdk/session-key-runtime";
|
||||
import type * as sdk256 from "openclaw/plugin-sdk/session-store-runtime";
|
||||
import type * as sdk257 from "openclaw/plugin-sdk/session-transcript-hit";
|
||||
import type * as sdk258 from "openclaw/plugin-sdk/session-visibility";
|
||||
import type * as sdk259 from "openclaw/plugin-sdk/setup";
|
||||
import type * as sdk260 from "openclaw/plugin-sdk/setup-adapter-runtime";
|
||||
import type * as sdk261 from "openclaw/plugin-sdk/setup-runtime";
|
||||
import type * as sdk262 from "openclaw/plugin-sdk/setup-tools";
|
||||
import type * as sdk263 from "openclaw/plugin-sdk/simple-completion-runtime";
|
||||
import type * as sdk264 from "openclaw/plugin-sdk/skill-commands-runtime";
|
||||
import type * as sdk265 from "openclaw/plugin-sdk/skills-runtime";
|
||||
import type * as sdk266 from "openclaw/plugin-sdk/speech";
|
||||
import type * as sdk267 from "openclaw/plugin-sdk/speech-core";
|
||||
import type * as sdk268 from "openclaw/plugin-sdk/ssrf-dispatcher";
|
||||
import type * as sdk269 from "openclaw/plugin-sdk/ssrf-policy";
|
||||
import type * as sdk270 from "openclaw/plugin-sdk/ssrf-runtime";
|
||||
import type * as sdk271 from "openclaw/plugin-sdk/state-paths";
|
||||
import type * as sdk272 from "openclaw/plugin-sdk/status-helpers";
|
||||
import type * as sdk273 from "openclaw/plugin-sdk/string-coerce-runtime";
|
||||
import type * as sdk274 from "openclaw/plugin-sdk/string-normalization-runtime";
|
||||
import type * as sdk275 from "openclaw/plugin-sdk/target-resolver-runtime";
|
||||
import type * as sdk276 from "openclaw/plugin-sdk/telegram-command-config";
|
||||
import type * as sdk277 from "openclaw/plugin-sdk/telegram-command-ui";
|
||||
import type * as sdk278 from "openclaw/plugin-sdk/temp-path";
|
||||
import type * as sdk279 from "openclaw/plugin-sdk/testing";
|
||||
import type * as sdk280 from "openclaw/plugin-sdk/text-autolink-runtime";
|
||||
import type * as sdk281 from "openclaw/plugin-sdk/text-chunking";
|
||||
import type * as sdk282 from "openclaw/plugin-sdk/text-runtime";
|
||||
import type * as sdk283 from "openclaw/plugin-sdk/thread-bindings-runtime";
|
||||
import type * as sdk284 from "openclaw/plugin-sdk/thread-bindings-session-runtime";
|
||||
import type * as sdk285 from "openclaw/plugin-sdk/thread-ownership";
|
||||
import type * as sdk286 from "openclaw/plugin-sdk/tlon";
|
||||
import type * as sdk287 from "openclaw/plugin-sdk/tool-payload";
|
||||
import type * as sdk288 from "openclaw/plugin-sdk/tool-send";
|
||||
import type * as sdk289 from "openclaw/plugin-sdk/twitch";
|
||||
import type * as sdk290 from "openclaw/plugin-sdk/video-generation";
|
||||
import type * as sdk291 from "openclaw/plugin-sdk/video-generation-core";
|
||||
import type * as sdk292 from "openclaw/plugin-sdk/video-generation-runtime";
|
||||
import type * as sdk293 from "openclaw/plugin-sdk/voice-call";
|
||||
import type * as sdk294 from "openclaw/plugin-sdk/volc-model-catalog-shared";
|
||||
import type * as sdk295 from "openclaw/plugin-sdk/web-content-extractor";
|
||||
import type * as sdk296 from "openclaw/plugin-sdk/web-media";
|
||||
import type * as sdk297 from "openclaw/plugin-sdk/webhook-ingress";
|
||||
import type * as sdk298 from "openclaw/plugin-sdk/webhook-path";
|
||||
import type * as sdk299 from "openclaw/plugin-sdk/webhook-request-guards";
|
||||
import type * as sdk300 from "openclaw/plugin-sdk/webhook-targets";
|
||||
import type * as sdk301 from "openclaw/plugin-sdk/windows-spawn";
|
||||
import type * as sdk302 from "openclaw/plugin-sdk/zalo";
|
||||
import type * as sdk303 from "openclaw/plugin-sdk/zalo-setup";
|
||||
import type * as sdk304 from "openclaw/plugin-sdk/zalouser";
|
||||
import type * as sdk305 from "openclaw/plugin-sdk/zod";
|
||||
|
||||
export type KitchenSinkSdkImportSurface =
|
||||
| typeof sdk0
|
||||
| typeof sdk1
|
||||
| typeof sdk2
|
||||
| typeof sdk3
|
||||
| typeof sdk4
|
||||
| typeof sdk5
|
||||
| typeof sdk6
|
||||
| typeof sdk7
|
||||
| typeof sdk8
|
||||
| typeof sdk9
|
||||
| typeof sdk10
|
||||
| typeof sdk11
|
||||
| typeof sdk12
|
||||
| typeof sdk13
|
||||
| typeof sdk14
|
||||
| typeof sdk15
|
||||
| typeof sdk16
|
||||
| typeof sdk17
|
||||
| typeof sdk18
|
||||
| typeof sdk19
|
||||
| typeof sdk20
|
||||
| typeof sdk21
|
||||
| typeof sdk22
|
||||
| typeof sdk23
|
||||
| typeof sdk24
|
||||
| typeof sdk25
|
||||
| typeof sdk26
|
||||
| typeof sdk27
|
||||
| typeof sdk28
|
||||
| typeof sdk29
|
||||
| typeof sdk30
|
||||
| typeof sdk31
|
||||
| typeof sdk32
|
||||
| typeof sdk33
|
||||
| typeof sdk34
|
||||
| typeof sdk35
|
||||
| typeof sdk36
|
||||
| typeof sdk37
|
||||
| typeof sdk38
|
||||
| typeof sdk39
|
||||
| typeof sdk40
|
||||
| typeof sdk41
|
||||
| typeof sdk42
|
||||
| typeof sdk43
|
||||
| typeof sdk44
|
||||
| typeof sdk45
|
||||
| typeof sdk46
|
||||
| typeof sdk47
|
||||
| typeof sdk48
|
||||
| typeof sdk49
|
||||
| typeof sdk50
|
||||
| typeof sdk51
|
||||
| typeof sdk52
|
||||
| typeof sdk53
|
||||
| typeof sdk54
|
||||
| typeof sdk55
|
||||
| typeof sdk56
|
||||
| typeof sdk57
|
||||
| typeof sdk58
|
||||
| typeof sdk59
|
||||
| typeof sdk60
|
||||
| typeof sdk61
|
||||
| typeof sdk62
|
||||
| typeof sdk63
|
||||
| typeof sdk64
|
||||
| typeof sdk65
|
||||
| typeof sdk66
|
||||
| typeof sdk67
|
||||
| typeof sdk68
|
||||
| typeof sdk69
|
||||
| typeof sdk70
|
||||
| typeof sdk71
|
||||
| typeof sdk72
|
||||
| typeof sdk73
|
||||
| typeof sdk74
|
||||
| typeof sdk75
|
||||
| typeof sdk76
|
||||
| typeof sdk77
|
||||
| typeof sdk78
|
||||
| typeof sdk79
|
||||
| typeof sdk80
|
||||
| typeof sdk81
|
||||
| typeof sdk82
|
||||
| typeof sdk83
|
||||
| typeof sdk84
|
||||
| typeof sdk85
|
||||
| typeof sdk86
|
||||
| typeof sdk87
|
||||
| typeof sdk88
|
||||
| typeof sdk89
|
||||
| typeof sdk90
|
||||
| typeof sdk91
|
||||
| typeof sdk92
|
||||
| typeof sdk93
|
||||
| typeof sdk94
|
||||
| typeof sdk95
|
||||
| typeof sdk96
|
||||
| typeof sdk97
|
||||
| typeof sdk98
|
||||
| typeof sdk99
|
||||
| typeof sdk100
|
||||
| typeof sdk101
|
||||
| typeof sdk102
|
||||
| typeof sdk103
|
||||
| typeof sdk104
|
||||
| typeof sdk105
|
||||
| typeof sdk106
|
||||
| typeof sdk107
|
||||
| typeof sdk108
|
||||
| typeof sdk109
|
||||
| typeof sdk110
|
||||
| typeof sdk111
|
||||
| typeof sdk112
|
||||
| typeof sdk113
|
||||
| typeof sdk114
|
||||
| typeof sdk115
|
||||
| typeof sdk116
|
||||
| typeof sdk117
|
||||
| typeof sdk118
|
||||
| typeof sdk119
|
||||
| typeof sdk120
|
||||
| typeof sdk121
|
||||
| typeof sdk122
|
||||
| typeof sdk123
|
||||
| typeof sdk124
|
||||
| typeof sdk125
|
||||
| typeof sdk126
|
||||
| typeof sdk127
|
||||
| typeof sdk128
|
||||
| typeof sdk129
|
||||
| typeof sdk130
|
||||
| typeof sdk131
|
||||
| typeof sdk132
|
||||
| typeof sdk133
|
||||
| typeof sdk134
|
||||
| typeof sdk135
|
||||
| typeof sdk136
|
||||
| typeof sdk137
|
||||
| typeof sdk138
|
||||
| typeof sdk139
|
||||
| typeof sdk140
|
||||
| typeof sdk141
|
||||
| typeof sdk142
|
||||
| typeof sdk143
|
||||
| typeof sdk144
|
||||
| typeof sdk145
|
||||
| typeof sdk146
|
||||
| typeof sdk147
|
||||
| typeof sdk148
|
||||
| typeof sdk149
|
||||
| typeof sdk150
|
||||
| typeof sdk151
|
||||
| typeof sdk152
|
||||
| typeof sdk153
|
||||
| typeof sdk154
|
||||
| typeof sdk155
|
||||
| typeof sdk156
|
||||
| typeof sdk157
|
||||
| typeof sdk158
|
||||
| typeof sdk159
|
||||
| typeof sdk160
|
||||
| typeof sdk161
|
||||
| typeof sdk162
|
||||
| typeof sdk163
|
||||
| typeof sdk164
|
||||
| typeof sdk165
|
||||
| typeof sdk166
|
||||
| typeof sdk167
|
||||
| typeof sdk168
|
||||
| typeof sdk169
|
||||
| typeof sdk170
|
||||
| typeof sdk171
|
||||
| typeof sdk172
|
||||
| typeof sdk173
|
||||
| typeof sdk174
|
||||
| typeof sdk175
|
||||
| typeof sdk176
|
||||
| typeof sdk177
|
||||
| typeof sdk178
|
||||
| typeof sdk179
|
||||
| typeof sdk180
|
||||
| typeof sdk181
|
||||
| typeof sdk182
|
||||
| typeof sdk183
|
||||
| typeof sdk184
|
||||
| typeof sdk185
|
||||
| typeof sdk186
|
||||
| typeof sdk187
|
||||
| typeof sdk188
|
||||
| typeof sdk189
|
||||
| typeof sdk190
|
||||
| typeof sdk191
|
||||
| typeof sdk192
|
||||
| typeof sdk193
|
||||
| typeof sdk194
|
||||
| typeof sdk195
|
||||
| typeof sdk196
|
||||
| typeof sdk197
|
||||
| typeof sdk198
|
||||
| typeof sdk199
|
||||
| typeof sdk200
|
||||
| typeof sdk201
|
||||
| typeof sdk202
|
||||
| typeof sdk203
|
||||
| typeof sdk204
|
||||
| typeof sdk205
|
||||
| typeof sdk206
|
||||
| typeof sdk207
|
||||
| typeof sdk208
|
||||
| typeof sdk209
|
||||
| typeof sdk210
|
||||
| typeof sdk211
|
||||
| typeof sdk212
|
||||
| typeof sdk213
|
||||
| typeof sdk214
|
||||
| typeof sdk215
|
||||
| typeof sdk216
|
||||
| typeof sdk217
|
||||
| typeof sdk218
|
||||
| typeof sdk219
|
||||
| typeof sdk220
|
||||
| typeof sdk221
|
||||
| typeof sdk222
|
||||
| typeof sdk223
|
||||
| typeof sdk224
|
||||
| typeof sdk225
|
||||
| typeof sdk226
|
||||
| typeof sdk227
|
||||
| typeof sdk228
|
||||
| typeof sdk229
|
||||
| typeof sdk230
|
||||
| typeof sdk231
|
||||
| typeof sdk232
|
||||
| typeof sdk233
|
||||
| typeof sdk234
|
||||
| typeof sdk235
|
||||
| typeof sdk236
|
||||
| typeof sdk237
|
||||
| typeof sdk238
|
||||
| typeof sdk239
|
||||
| typeof sdk240
|
||||
| typeof sdk241
|
||||
| typeof sdk242
|
||||
| typeof sdk243
|
||||
| typeof sdk244
|
||||
| typeof sdk245
|
||||
| typeof sdk246
|
||||
| typeof sdk247
|
||||
| typeof sdk248
|
||||
| typeof sdk249
|
||||
| typeof sdk250
|
||||
| typeof sdk251
|
||||
| typeof sdk252
|
||||
| typeof sdk253
|
||||
| typeof sdk254
|
||||
| typeof sdk255
|
||||
| typeof sdk256
|
||||
| typeof sdk257
|
||||
| typeof sdk258
|
||||
| typeof sdk259
|
||||
| typeof sdk260
|
||||
| typeof sdk261
|
||||
| typeof sdk262
|
||||
| typeof sdk263
|
||||
| typeof sdk264
|
||||
| typeof sdk265
|
||||
| typeof sdk266
|
||||
| typeof sdk267
|
||||
| typeof sdk268
|
||||
| typeof sdk269
|
||||
| typeof sdk270
|
||||
| typeof sdk271
|
||||
| typeof sdk272
|
||||
| typeof sdk273
|
||||
| typeof sdk274
|
||||
| typeof sdk275
|
||||
| typeof sdk276
|
||||
| typeof sdk277
|
||||
| typeof sdk278
|
||||
| typeof sdk279
|
||||
| typeof sdk280
|
||||
| typeof sdk281
|
||||
| typeof sdk282
|
||||
| typeof sdk283
|
||||
| typeof sdk284
|
||||
| typeof sdk285
|
||||
| typeof sdk286
|
||||
| typeof sdk287
|
||||
| typeof sdk288
|
||||
| typeof sdk289
|
||||
| typeof sdk290
|
||||
| typeof sdk291
|
||||
| typeof sdk292
|
||||
| typeof sdk293
|
||||
| typeof sdk294
|
||||
| typeof sdk295
|
||||
| typeof sdk296
|
||||
| typeof sdk297
|
||||
| typeof sdk298
|
||||
| typeof sdk299
|
||||
| typeof sdk300
|
||||
| typeof sdk301
|
||||
| typeof sdk302
|
||||
| typeof sdk303
|
||||
| typeof sdk304
|
||||
| typeof sdk305;
|
||||
19
src/index.js
Normal file
19
src/index.js
Normal file
@ -0,0 +1,19 @@
|
||||
import { registerAllHooks } from "./generated-hooks.js";
|
||||
import { registerAllRegistrars } from "./generated-registrars.js";
|
||||
|
||||
export const plugin = {
|
||||
id: "openclaw-kitchen-sink",
|
||||
name: "OpenClaw Kitchen Sink",
|
||||
version: "0.1.0",
|
||||
description: "No-op plugin fixture covering OpenClaw plugin API seams.",
|
||||
register(api) {
|
||||
registerAllHooks(api);
|
||||
registerAllRegistrars(api);
|
||||
},
|
||||
};
|
||||
|
||||
export function register(api) {
|
||||
plugin.register(api);
|
||||
}
|
||||
|
||||
export default plugin;
|
||||
10
src/setup.js
Normal file
10
src/setup.js
Normal file
@ -0,0 +1,10 @@
|
||||
export default {
|
||||
id: "openclaw-kitchen-sink-setup",
|
||||
name: "OpenClaw Kitchen Sink Setup",
|
||||
async setup() {
|
||||
return {
|
||||
configured: true,
|
||||
message: "Kitchen-sink setup probe completed without credentials.",
|
||||
};
|
||||
},
|
||||
};
|
||||
Loading…
Reference in New Issue
Block a user