@coralai/sps-cli 0.74.0 → 0.75.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chat-protocol/index.d.ts +8 -8
- package/dist/chat-protocol/index.d.ts.map +1 -1
- package/dist/chat-protocol/index.js +3 -3
- package/dist/chat-protocol/index.js.map +1 -1
- package/dist/commands/agentRenderer.d.ts.map +1 -1
- package/dist/commands/agentRenderer.js.map +1 -1
- package/dist/commands/cardDashboard.js +1 -1
- package/dist/commands/cardDashboard.js.map +1 -1
- package/dist/commands/doctor.js +3 -3
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/graphCommand.js +1 -1
- package/dist/commands/graphCommand.js.map +1 -1
- package/dist/commands/modelCommand.d.ts.map +1 -1
- package/dist/commands/modelCommand.js +3 -3
- package/dist/commands/modelCommand.js.map +1 -1
- package/dist/commands/pipelineRunner.js.map +1 -1
- package/dist/commands/pmCommand.js.map +1 -1
- package/dist/commands/projectInit.d.ts.map +1 -1
- package/dist/commands/projectInit.js +8 -9
- package/dist/commands/projectInit.js.map +1 -1
- package/dist/commands/prune.js +1 -1
- package/dist/commands/prune.js.map +1 -1
- package/dist/commands/reset.js +2 -2
- package/dist/commands/reset.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +1 -1
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/skillCommand.js +1 -1
- package/dist/commands/skillCommand.js.map +1 -1
- package/dist/commands/status.js +1 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/stop.js +1 -1
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/workerDashboard.js +1 -1
- package/dist/commands/workerDashboard.js.map +1 -1
- package/dist/console/lib/artRunRequest.d.ts +13 -1
- package/dist/console/lib/artRunRequest.d.ts.map +1 -1
- package/dist/console/lib/artRunRequest.js.map +1 -1
- package/dist/console/lib/sessionConfig.d.ts.map +1 -1
- package/dist/console/lib/sessionConfig.js.map +1 -1
- package/dist/console/routes/artPipeline.d.ts.map +1 -1
- package/dist/console/routes/artPipeline.js +2 -2
- package/dist/console/routes/artPipeline.js.map +1 -1
- package/dist/console/routes/chat.d.ts.map +1 -1
- package/dist/console/routes/chat.js +15 -16
- package/dist/console/routes/chat.js.map +1 -1
- package/dist/console/routes/flow.d.ts.map +1 -1
- package/dist/console/routes/flow.js +1 -1
- package/dist/console/routes/flow.js.map +1 -1
- package/dist/console/routes/fs.d.ts.map +1 -1
- package/dist/console/routes/fs.js +0 -2
- package/dist/console/routes/fs.js.map +1 -1
- package/dist/console/routes/graph.d.ts.map +1 -1
- package/dist/console/routes/graph.js.map +1 -1
- package/dist/console/routes/logs.d.ts.map +1 -1
- package/dist/console/routes/logs.js +1 -1
- package/dist/console/routes/logs.js.map +1 -1
- package/dist/console/routes/mediaProviders.js.map +1 -1
- package/dist/console/routes/plugins.js +4 -4
- package/dist/console/routes/plugins.js.map +1 -1
- package/dist/console/routes/projectConfig.d.ts.map +1 -1
- package/dist/console/routes/projectConfig.js +3 -3
- package/dist/console/routes/projectConfig.js.map +1 -1
- package/dist/console/routes/projects.d.ts.map +1 -1
- package/dist/console/routes/projects.js.map +1 -1
- package/dist/console/routes/subagent.js +1 -1
- package/dist/console/routes/subagent.js.map +1 -1
- package/dist/console/routes/templates.js +1 -1
- package/dist/console/routes/templates.js.map +1 -1
- package/dist/console-assets/assets/ShowcasePage-DZ21PXog.js +121 -0
- package/dist/console-assets/assets/index-BN0kx67J.css +1 -0
- package/dist/console-assets/assets/index-DNsf7XS3.js +8657 -0
- package/dist/console-assets/index.html +2 -2
- package/dist/core/activityStream.js +1 -1
- package/dist/core/activityStream.js.map +1 -1
- package/dist/core/agents/DaemonBackend.d.ts.map +1 -1
- package/dist/core/agents/DaemonBackend.js.map +1 -1
- package/dist/core/agents/OpenAiAgentBackend.d.ts.map +1 -1
- package/dist/core/agents/OpenAiAgentBackend.js +2 -2
- package/dist/core/agents/OpenAiAgentBackend.js.map +1 -1
- package/dist/core/agents/configureProjectAgent.js +1 -1
- package/dist/core/agents/configureProjectAgent.js.map +1 -1
- package/dist/core/agents/modelSettingsFile.js +1 -1
- package/dist/core/agents/modelSettingsFile.js.map +1 -1
- package/dist/core/art/artRunLauncher.js +1 -1
- package/dist/core/art/artRunLauncher.js.map +1 -1
- package/dist/core/codegraph/CodeGraphService.js +1 -1
- package/dist/core/codegraph/CodeGraphService.js.map +1 -1
- package/dist/core/markerFile.d.ts +19 -0
- package/dist/core/markerFile.d.ts.map +1 -1
- package/dist/core/markerFile.js +1 -1
- package/dist/core/markerFile.js.map +1 -1
- package/dist/core/memory2/capture.js +1 -1
- package/dist/core/memory2/capture.js.map +1 -1
- package/dist/core/memory2/config.js +1 -1
- package/dist/core/memory2/config.js.map +1 -1
- package/dist/core/memory2/digest.d.ts.map +1 -1
- package/dist/core/memory2/digest.js +1 -2
- package/dist/core/memory2/digest.js.map +1 -1
- package/dist/core/memory2/external/importTranscript.js +1 -1
- package/dist/core/memory2/external/importTranscript.js.map +1 -1
- package/dist/core/memory2/ftsIndex.d.ts.map +1 -1
- package/dist/core/memory2/ftsIndex.js +1 -1
- package/dist/core/memory2/ftsIndex.js.map +1 -1
- package/dist/core/memory2/migrate.js +1 -1
- package/dist/core/memory2/migrate.js.map +1 -1
- package/dist/core/memory2/retrieve.d.ts +9 -0
- package/dist/core/memory2/retrieve.d.ts.map +1 -1
- package/dist/core/memory2/retrieve.js +1 -1
- package/dist/core/memory2/retrieve.js.map +1 -1
- package/dist/core/memory2/store.js +2 -2
- package/dist/core/memory2/store.js.map +1 -1
- package/dist/core/modelConfigBundle.d.ts.map +1 -1
- package/dist/core/modelConfigBundle.js.map +1 -1
- package/dist/core/paths.js +1 -1
- package/dist/core/paths.js.map +1 -1
- package/dist/core/processInspect.d.ts +17 -0
- package/dist/core/processInspect.d.ts.map +1 -1
- package/dist/core/processInspect.js +1 -1
- package/dist/core/processInspect.js.map +1 -1
- package/dist/core/projectPipelineAdapter.js +1 -1
- package/dist/core/projectPipelineAdapter.js.map +1 -1
- package/dist/core/queue.d.ts +15 -0
- package/dist/core/queue.d.ts.map +1 -1
- package/dist/core/queue.js +1 -1
- package/dist/core/queue.js.map +1 -1
- package/dist/core/runtimeSnapshot.d.ts +1 -1
- package/dist/core/runtimeSnapshot.d.ts.map +1 -1
- package/dist/core/runtimeSnapshot.js.map +1 -1
- package/dist/core/runtimeStore.d.ts +1 -1
- package/dist/core/runtimeStore.d.ts.map +1 -1
- package/dist/core/sessionContext.d.ts +1 -1
- package/dist/core/sessionContext.d.ts.map +1 -1
- package/dist/core/sessionContext.js.map +1 -1
- package/dist/core/skills/index.d.ts +3 -3
- package/dist/core/skills/index.d.ts.map +1 -1
- package/dist/core/skills/index.js +3 -3
- package/dist/core/skills/index.js.map +1 -1
- package/dist/core/skills/lint.d.ts +1 -1
- package/dist/core/skills/lint.d.ts.map +1 -1
- package/dist/core/skills/lint.js.map +1 -1
- package/dist/core/skills/match/embeddingRecall.d.ts.map +1 -1
- package/dist/core/skills/match/embeddingRecall.js.map +1 -1
- package/dist/core/skills/match/skillEnrich.js +1 -1
- package/dist/core/skills/match/skillEnrich.js.map +1 -1
- package/dist/core/skills/match/skillMatcher.d.ts.map +1 -1
- package/dist/core/skills/match/skillMatcher.js +10 -0
- package/dist/core/skills/match/skillMatcher.js.map +1 -1
- package/dist/core/skills/registration.js +1 -1
- package/dist/core/skills/registration.js.map +1 -1
- package/dist/core/state.d.ts +1 -1
- package/dist/core/state.d.ts.map +1 -1
- package/dist/core/templates/templatePackage.d.ts.map +1 -1
- package/dist/core/templates/templatePackage.js.map +1 -1
- package/dist/core/tts/DoubaoTts.js +1 -1
- package/dist/core/tts/DoubaoTts.js.map +1 -1
- package/dist/engines/MonitorEngine.d.ts.map +1 -1
- package/dist/engines/MonitorEngine.js.map +1 -1
- package/dist/im/adapters/feishuAdapter.d.ts +9 -0
- package/dist/im/adapters/feishuAdapter.d.ts.map +1 -1
- package/dist/im/adapters/feishuAdapter.js +1 -1
- package/dist/im/adapters/feishuAdapter.js.map +1 -1
- package/dist/im/chatBridge.d.ts +1 -1
- package/dist/im/chatBridge.d.ts.map +1 -1
- package/dist/im/chatBridge.js.map +1 -1
- package/dist/im/router.d.ts.map +1 -1
- package/dist/im/router.js +1 -1
- package/dist/im/router.js.map +1 -1
- package/dist/infra/filesystem.d.ts +12 -0
- package/dist/infra/filesystem.d.ts.map +1 -1
- package/dist/infra/filesystem.js +1 -1
- package/dist/infra/filesystem.js.map +1 -1
- package/dist/manager/runtime-coordinator.d.ts.map +1 -1
- package/dist/manager/runtime-coordinator.js.map +1 -1
- package/dist/manager/worker-manager.d.ts +1 -1
- package/dist/manager/worker-manager.d.ts.map +1 -1
- package/dist/openai-agent/agentFactory.d.ts.map +1 -1
- package/dist/openai-agent/agentFactory.js.map +1 -1
- package/dist/openai-agent/hooks.d.ts +10 -0
- package/dist/openai-agent/hooks.d.ts.map +1 -1
- package/dist/openai-agent/hooks.js +1 -1
- package/dist/openai-agent/hooks.js.map +1 -1
- package/dist/openai-agent/instructions.d.ts.map +1 -1
- package/dist/openai-agent/instructions.js.map +1 -1
- package/dist/openai-agent/interactions/broker.d.ts +1 -1
- package/dist/openai-agent/interactions/broker.d.ts.map +1 -1
- package/dist/openai-agent/interactions/broker.js.map +1 -1
- package/dist/openai-agent/mcp/managedMcp.d.ts.map +1 -1
- package/dist/openai-agent/mcp/managedMcp.js +1 -1
- package/dist/openai-agent/mcp/managedMcp.js.map +1 -1
- package/dist/openai-agent/memory/fileStore.js +2 -2
- package/dist/openai-agent/memory/fileStore.js.map +1 -1
- package/dist/openai-agent/protocolWriter.d.ts.map +1 -1
- package/dist/openai-agent/protocolWriter.js +1 -1
- package/dist/openai-agent/protocolWriter.js.map +1 -1
- package/dist/openai-agent/providerFactory.d.ts +1 -1
- package/dist/openai-agent/providerFactory.d.ts.map +1 -1
- package/dist/openai-agent/providerFactory.js.map +1 -1
- package/dist/openai-agent/request.d.ts.map +1 -1
- package/dist/openai-agent/request.js.map +1 -1
- package/dist/openai-agent/sandbox/productionDocker.d.ts.map +1 -1
- package/dist/openai-agent/sandbox/productionDocker.js +1 -1
- package/dist/openai-agent/sandbox/productionDocker.js.map +1 -1
- package/dist/openai-agent/storage/atomic.js +1 -1
- package/dist/openai-agent/storage/atomic.js.map +1 -1
- package/dist/openai-agent/storage/checkpoint.d.ts +1 -1
- package/dist/openai-agent/storage/checkpoint.d.ts.map +1 -1
- package/dist/openai-agent/storage/checkpoint.js.map +1 -1
- package/dist/openai-agent/storage/compactingSession.d.ts +16 -0
- package/dist/openai-agent/storage/compactingSession.d.ts.map +1 -1
- package/dist/openai-agent/storage/compactingSession.js.map +1 -1
- package/dist/openai-agent/storage/index.d.ts +1 -1
- package/dist/openai-agent/storage/index.d.ts.map +1 -1
- package/dist/openai-agent/storage/index.js +1 -1
- package/dist/openai-agent/storage/index.js.map +1 -1
- package/dist/openai-agent/storage/lock.js +4 -4
- package/dist/openai-agent/storage/lock.js.map +1 -1
- package/dist/openai-agent/storage/output.d.ts.map +1 -1
- package/dist/openai-agent/storage/output.js.map +1 -1
- package/dist/openai-agent/storage/session.d.ts.map +1 -1
- package/dist/openai-agent/storage/session.js +1 -1
- package/dist/openai-agent/storage/session.js.map +1 -1
- package/dist/openai-agent/storage/workerStorage.d.ts +3 -3
- package/dist/openai-agent/storage/workerStorage.d.ts.map +1 -1
- package/dist/openai-agent/storage/workerStorage.js +3 -3
- package/dist/openai-agent/storage/workerStorage.js.map +1 -1
- package/dist/openai-agent/storage/workspace.js +1 -1
- package/dist/openai-agent/storage/workspace.js.map +1 -1
- package/dist/openai-agent/tools/ledgerTools.d.ts +1 -1
- package/dist/openai-agent/tools/ledgerTools.d.ts.map +1 -1
- package/dist/plugin/manager.d.ts +16 -1
- package/dist/plugin/manager.d.ts.map +1 -1
- package/dist/plugin/manager.js +38 -3
- package/dist/plugin/manager.js.map +1 -1
- package/dist/providers/LLMClient.d.ts.map +1 -1
- package/dist/providers/LLMClient.js.map +1 -1
- package/dist/providers/MatrixNotifier.d.ts.map +1 -1
- package/dist/providers/MatrixNotifier.js.map +1 -1
- package/dist/providers/RuntimeSessionRuntime.d.ts +1 -1
- package/dist/providers/RuntimeSessionRuntime.d.ts.map +1 -1
- package/dist/providers/RuntimeSessionRuntime.js +4 -4
- package/dist/providers/RuntimeSessionRuntime.js.map +1 -1
- package/dist/providers/art/artDriver.d.ts.map +1 -1
- package/dist/providers/art/artDriver.js +1 -1
- package/dist/providers/art/artDriver.js.map +1 -1
- package/dist/providers/art/atlas.js +1 -1
- package/dist/providers/art/atlas.js.map +1 -1
- package/dist/providers/llm/codexAuth.d.ts +8 -0
- package/dist/providers/llm/codexAuth.d.ts.map +1 -1
- package/dist/providers/llm/codexAuth.js +1 -1
- package/dist/providers/llm/codexAuth.js.map +1 -1
- package/dist/providers/llm/providers.js +1 -1
- package/dist/providers/llm/providers.js.map +1 -1
- package/dist/providers/llm/workerTools.d.ts.map +1 -1
- package/dist/providers/llm/workerTools.js.map +1 -1
- package/dist/providers/media/adapters.d.ts.map +1 -1
- package/dist/providers/media/adapters.js +1 -1
- package/dist/providers/media/adapters.js.map +1 -1
- package/dist/providers/media/mediaProviders.js +1 -1
- package/dist/providers/media/mediaProviders.js.map +1 -1
- package/dist/providers/subagent/runSubAgent.js +3 -3
- package/dist/providers/subagent/runSubAgent.js.map +1 -1
- package/dist/runtime/agentd/client.d.ts +2 -2
- package/dist/runtime/agentd/client.d.ts.map +1 -1
- package/dist/runtime/agentd/main.d.ts +10 -1
- package/dist/runtime/agentd/main.d.ts.map +1 -1
- package/dist/runtime/agentd/main.js +3 -3
- package/dist/runtime/agentd/main.js.map +1 -1
- package/dist/runtime/agentd/protocol.d.ts +2 -2
- package/dist/runtime/agentd/protocol.d.ts.map +1 -1
- package/dist/runtime/agentd/server.d.ts +5 -0
- package/dist/runtime/agentd/server.d.ts.map +1 -1
- package/dist/runtime/agentd/server.js +1 -1
- package/dist/runtime/agentd/server.js.map +1 -1
- package/dist/runtime/backends/claude/inprocTools.d.ts +1 -1
- package/dist/runtime/backends/claude/inprocTools.d.ts.map +1 -1
- package/dist/runtime/backends/claude/inprocTools.js +10 -0
- package/dist/runtime/backends/claude/inprocTools.js.map +1 -1
- package/dist/runtime/backends/process/ExternalProcessBackend.d.ts +8 -2
- package/dist/runtime/backends/process/ExternalProcessBackend.d.ts.map +1 -1
- package/dist/runtime/backends/process/ExternalProcessBackend.js +2 -2
- package/dist/runtime/backends/process/ExternalProcessBackend.js.map +1 -1
- package/dist/runtime/contract/AgentBackend.d.ts +1 -1
- package/dist/runtime/contract/AgentBackend.d.ts.map +1 -1
- package/dist/runtime/contract/AgentBackend.js +5 -0
- package/dist/runtime/contract/AgentBackend.js.map +1 -1
- package/dist/runtime/contract/events.d.ts +1 -1
- package/dist/runtime/contract/events.d.ts.map +1 -1
- package/dist/runtime/contract/events.js +9 -0
- package/dist/runtime/contract/events.js.map +1 -1
- package/dist/runtime/contract/index.d.ts +5 -5
- package/dist/runtime/contract/index.d.ts.map +1 -1
- package/dist/runtime/contract/index.js +5 -0
- package/dist/runtime/contract/index.js.map +1 -1
- package/dist/runtime/contract/service.d.ts +2 -2
- package/dist/runtime/contract/service.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +10 -10
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +11 -11
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/runtime.d.ts +1 -1
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +2 -2
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime/service/AgentRuntime.d.ts +2 -2
- package/dist/runtime/service/AgentRuntime.d.ts.map +1 -1
- package/dist/runtime/service/AgentRuntime.js +9 -0
- package/dist/runtime/service/AgentRuntime.js.map +1 -1
- package/dist/runtime/service/backendFactory.d.ts +6 -0
- package/dist/runtime/service/backendFactory.d.ts.map +1 -1
- package/dist/runtime/service/backendFactory.js +6 -0
- package/dist/runtime/service/backendFactory.js.map +1 -1
- package/dist/runtime/versioning/VersionManager.d.ts.map +1 -1
- package/dist/runtime/versioning/VersionManager.js.map +1 -1
- package/dist/seams/im-builtin/client.js +402 -0
- package/dist/seams/memory-local/client.js +135 -0
- package/dist/server.d.ts +14 -14
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +19 -19
- package/dist/server.js.map +1 -1
- package/package.json +5 -4
- package/dist/console-assets/assets/ShowcasePage-Ds05miA3.js +0 -156
- package/dist/console-assets/assets/index-2lwFzkSf.js +0 -867
- package/dist/console-assets/assets/index-YoLvbHIG.css +0 -1
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
// 由 scripts/build-seam-clients.mjs 生成,勿手改。源码在 src/seams/im-builtin/client/
|
|
2
|
+
window.__SpsModuleLoader__.load({
|
|
3
|
+
id: "im",
|
|
4
|
+
contractVersion: 1,
|
|
5
|
+
factory: (require) => {
|
|
6
|
+
const module = { exports: {} };
|
|
7
|
+
const exports = module.exports;
|
|
8
|
+
"use strict";
|
|
9
|
+
var __defProp = Object.defineProperty;
|
|
10
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
11
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
12
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
13
|
+
var __export = (target, all) => {
|
|
14
|
+
for (var name in all)
|
|
15
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
16
|
+
};
|
|
17
|
+
var __copyProps = (to, from, except, desc) => {
|
|
18
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
19
|
+
for (let key of __getOwnPropNames(from))
|
|
20
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
21
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
22
|
+
}
|
|
23
|
+
return to;
|
|
24
|
+
};
|
|
25
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
26
|
+
|
|
27
|
+
// src/seams/im-builtin/client/index.tsx
|
|
28
|
+
var index_exports = {};
|
|
29
|
+
__export(index_exports, {
|
|
30
|
+
ChannelSection: () => ChannelSection
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(index_exports);
|
|
33
|
+
var import_console_slots = require("@coralai/console-slots");
|
|
34
|
+
var import_console_ui = require("@coralai/console-ui");
|
|
35
|
+
var import_react_query = require("@tanstack/react-query");
|
|
36
|
+
var import_lucide_react = require("lucide-react");
|
|
37
|
+
var import_react = require("react");
|
|
38
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
39
|
+
var getChannels = () => (0, import_console_ui.apiGet)("/api/channels");
|
|
40
|
+
var saveChannels = (cfg) => (0, import_console_ui.apiPut)("/api/channels", cfg);
|
|
41
|
+
var CHANNEL_KINDS = ["telegram", "dingtalk", "matrix", "slack", "discord", "feishu"];
|
|
42
|
+
var KIND_LABEL = {
|
|
43
|
+
telegram: "Telegram",
|
|
44
|
+
dingtalk: "\u9489\u9489 (Stream)",
|
|
45
|
+
matrix: "Matrix",
|
|
46
|
+
slack: "Slack",
|
|
47
|
+
discord: "Discord",
|
|
48
|
+
feishu: "\u98DE\u4E66 / Lark"
|
|
49
|
+
};
|
|
50
|
+
var KIND_FIELDS = {
|
|
51
|
+
telegram: [
|
|
52
|
+
{ key: "token", label: "Bot Token(@BotFather)", type: "password", placeholder: "123456:ABC-..." },
|
|
53
|
+
{ key: "allowedChatIds", label: "\u5141\u8BB8\u7684 Chat ID(\u767D\u540D\u5355,\u7A7A=\u5168\u653E)", type: "list", placeholder: "\u9017\u53F7/\u6362\u884C\u5206\u9694" }
|
|
54
|
+
],
|
|
55
|
+
dingtalk: [
|
|
56
|
+
{ key: "clientId", label: "Client ID(AppKey)", type: "text" },
|
|
57
|
+
{ key: "clientSecret", label: "Client Secret(AppSecret)", type: "password" },
|
|
58
|
+
{ key: "allowedConversations", label: "\u5141\u8BB8\u7684\u4F1A\u8BDD ID(\u767D\u540D\u5355,\u7A7A=\u5168\u653E)", type: "list" }
|
|
59
|
+
],
|
|
60
|
+
matrix: [
|
|
61
|
+
{ key: "homeserver", label: "Homeserver URL", type: "text", placeholder: "https://matrix.org" },
|
|
62
|
+
{ key: "accessToken", label: "Access Token", type: "password" },
|
|
63
|
+
{ key: "allowedRooms", label: "\u5141\u8BB8\u7684 Room ID(\u767D\u540D\u5355,\u7A7A=\u5168\u653E)", type: "list" }
|
|
64
|
+
],
|
|
65
|
+
slack: [
|
|
66
|
+
{ key: "appToken", label: "App Token(xapp-,Socket Mode)", type: "password", placeholder: "xapp-..." },
|
|
67
|
+
{ key: "botToken", label: "Bot Token(xoxb-)", type: "password", placeholder: "xoxb-..." },
|
|
68
|
+
{ key: "allowedChannels", label: "\u5141\u8BB8\u7684 Channel(\u767D\u540D\u5355,\u7A7A=\u5168\u653E)", type: "list" }
|
|
69
|
+
],
|
|
70
|
+
discord: [
|
|
71
|
+
{ key: "token", label: "Bot Token", type: "password" },
|
|
72
|
+
{ key: "allowedChannels", label: "\u5141\u8BB8\u7684 Channel ID(\u767D\u540D\u5355,\u7A7A=\u5168\u653E)", type: "list" }
|
|
73
|
+
],
|
|
74
|
+
feishu: [
|
|
75
|
+
{ key: "appId", label: "App ID", type: "text" },
|
|
76
|
+
{ key: "appSecret", label: "App Secret", type: "password" },
|
|
77
|
+
{ key: "verificationToken", label: "Verification Token", type: "text" },
|
|
78
|
+
{ key: "encryptKey", label: "Encrypt Key(\u8BBE\u4E86\u5219\u4E8B\u4EF6 AES \u89E3\u5BC6)", type: "password" },
|
|
79
|
+
{ key: "port", label: "\u672C\u673A\u76D1\u542C\u7AEF\u53E3(\u9ED8\u8BA4 9800)", type: "number", placeholder: "9800" },
|
|
80
|
+
{ key: "path", label: "\u76D1\u542C\u8DEF\u5F84(\u9ED8\u8BA4 /feishu)", type: "text", placeholder: "/feishu" },
|
|
81
|
+
{ key: "allowedChats", label: "\u5141\u8BB8\u7684 chat_id(\u767D\u540D\u5355,\u7A7A=\u5168\u653E)", type: "list" }
|
|
82
|
+
]
|
|
83
|
+
};
|
|
84
|
+
function ChannelSection() {
|
|
85
|
+
const qc = (0, import_react_query.useQueryClient)();
|
|
86
|
+
const { alert } = (0, import_console_ui.useDialog)();
|
|
87
|
+
const q = (0, import_react_query.useQuery)({ queryKey: ["channels"], queryFn: getChannels });
|
|
88
|
+
const [draft, setDraft] = (0, import_react.useState)(null);
|
|
89
|
+
const [sel, setSel] = (0, import_react.useState)({ type: "console" });
|
|
90
|
+
(0, import_react.useEffect)(() => {
|
|
91
|
+
if (q.data && !draft) setDraft({ console: q.data.console ?? {}, adapters: q.data.adapters ?? [] });
|
|
92
|
+
}, [q.data, draft]);
|
|
93
|
+
const save = (0, import_react_query.useMutation)({
|
|
94
|
+
mutationFn: () => saveChannels(draft),
|
|
95
|
+
onSuccess: (saved) => {
|
|
96
|
+
setDraft({ console: saved.console ?? {}, adapters: saved.adapters ?? [] });
|
|
97
|
+
void qc.invalidateQueries({ queryKey: ["channels"] });
|
|
98
|
+
},
|
|
99
|
+
onError: (e) => void alert({ title: "\u4FDD\u5B58\u5931\u8D25", body: e instanceof Error ? e.message : String(e) })
|
|
100
|
+
});
|
|
101
|
+
if (!draft) {
|
|
102
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("section", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { className: "text-sm sps-muted flex items-center gap-2", children: [
|
|
103
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Loader2, { size: 14, strokeWidth: 3, className: "animate-spin" }),
|
|
104
|
+
" \u52A0\u8F7D\u9891\u9053\u914D\u7F6E\u2026"
|
|
105
|
+
] }) });
|
|
106
|
+
}
|
|
107
|
+
const adapters = draft.adapters ?? [];
|
|
108
|
+
const dirty = JSON.stringify(draft) !== JSON.stringify({ console: q.data?.console ?? {}, adapters: q.data?.adapters ?? [] });
|
|
109
|
+
const addAdapter = (kind) => {
|
|
110
|
+
const next = [...adapters, { kind, enabled: true }];
|
|
111
|
+
setDraft({ ...draft, adapters: next });
|
|
112
|
+
setSel({ type: "adapter", index: next.length - 1 });
|
|
113
|
+
};
|
|
114
|
+
const removeAdapter = (index) => {
|
|
115
|
+
const next = adapters.filter((_, i) => i !== index);
|
|
116
|
+
setDraft({ ...draft, adapters: next });
|
|
117
|
+
setSel({ type: "console" });
|
|
118
|
+
};
|
|
119
|
+
const patchAdapter = (index, patch) => {
|
|
120
|
+
const next = adapters.map((a, i) => i === index ? { ...a, ...patch } : a);
|
|
121
|
+
setDraft({ ...draft, adapters: next });
|
|
122
|
+
};
|
|
123
|
+
const patchConsole = (patch) => setDraft({ ...draft, console: { ...draft.console, ...patch } });
|
|
124
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", { children: [
|
|
125
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-start justify-between gap-3 mb-1", children: [
|
|
126
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
127
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "sps-heading text-xl font-bold", children: "\u9891\u9053(IM \u7F51\u5173)" }),
|
|
128
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { className: "text-xs sps-muted mt-1", children: [
|
|
129
|
+
"\u63A5\u5165 Telegram / \u9489\u9489 / \u98DE\u4E66 / Slack / Discord / Matrix\u3002\u5DE6\u4FA7\u9009\u9891\u9053,\u53F3\u4FA7\u6539\u8BBE\u7F6E\u3002\u4FDD\u5B58\u540E ",
|
|
130
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", { className: "sps-mono", children: "sps im" }),
|
|
131
|
+
" \u91CD\u542F\u751F\u6548\u3002"
|
|
132
|
+
] })
|
|
133
|
+
] }),
|
|
134
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
135
|
+
"button",
|
|
136
|
+
{
|
|
137
|
+
className: "nb-btn nb-btn-primary shrink-0",
|
|
138
|
+
style: { padding: "8px 16px" },
|
|
139
|
+
type: "button",
|
|
140
|
+
disabled: !dirty || save.isPending,
|
|
141
|
+
onClick: () => save.mutate(),
|
|
142
|
+
"aria-label": "\u4FDD\u5B58\u9891\u9053\u914D\u7F6E",
|
|
143
|
+
children: [
|
|
144
|
+
save.isPending ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Loader2, { size: 14, strokeWidth: 3, className: "animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Save, { size: 14, strokeWidth: 3 }),
|
|
145
|
+
" \u4FDD\u5B58"
|
|
146
|
+
]
|
|
147
|
+
}
|
|
148
|
+
)
|
|
149
|
+
] }),
|
|
150
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
151
|
+
"div",
|
|
152
|
+
{
|
|
153
|
+
className: "grid gap-5 mt-4",
|
|
154
|
+
style: { gridTemplateColumns: "minmax(0, 220px) minmax(0, 1fr)" },
|
|
155
|
+
children: [
|
|
156
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
157
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "rounded-2xl border sps-border sps-surface p-2 flex flex-col gap-1", children: [
|
|
158
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
159
|
+
ChannelListItem,
|
|
160
|
+
{
|
|
161
|
+
label: "console \u6865\u63A5",
|
|
162
|
+
sub: draft.console?.url || "\u672A\u914D\u7F6E",
|
|
163
|
+
active: sel.type === "console",
|
|
164
|
+
onClick: () => setSel({ type: "console" })
|
|
165
|
+
}
|
|
166
|
+
),
|
|
167
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-px opacity-15 my-0.5", style: { background: "var(--color-text)" } }),
|
|
168
|
+
adapters.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-xs sps-muted px-2 py-1", children: "(\u65E0\u9891\u9053)" }),
|
|
169
|
+
adapters.map((a, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
170
|
+
ChannelListItem,
|
|
171
|
+
{
|
|
172
|
+
label: KIND_LABEL[a.kind] ?? a.kind,
|
|
173
|
+
sub: a.enabled === false ? "\u5DF2\u505C\u7528" : "\u542F\u7528",
|
|
174
|
+
active: sel.type === "adapter" && sel.index === i,
|
|
175
|
+
onClick: () => setSel({ type: "adapter", index: i })
|
|
176
|
+
},
|
|
177
|
+
i
|
|
178
|
+
))
|
|
179
|
+
] }),
|
|
180
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(AddChannelMenu, { onAdd: addAdapter })
|
|
181
|
+
] }),
|
|
182
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "border-2 bg-surface-input sps-border-strong rounded-xl p-4 sps-surface-input", children: (() => {
|
|
183
|
+
if (sel.type !== "adapter") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ConsoleBridgeForm, { console: draft.console ?? {}, onChange: patchConsole });
|
|
184
|
+
const current = adapters[sel.index];
|
|
185
|
+
if (!current) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ConsoleBridgeForm, { console: draft.console ?? {}, onChange: patchConsole });
|
|
186
|
+
const idx = sel.index;
|
|
187
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AdapterForm, { adapter: current, onChange: (p) => patchAdapter(idx, p), onRemove: () => removeAdapter(idx) });
|
|
188
|
+
})() })
|
|
189
|
+
]
|
|
190
|
+
}
|
|
191
|
+
)
|
|
192
|
+
] });
|
|
193
|
+
}
|
|
194
|
+
function AddChannelMenu({ onAdd }) {
|
|
195
|
+
const [open, setOpen] = (0, import_react.useState)(false);
|
|
196
|
+
const ref = (0, import_react.useRef)(null);
|
|
197
|
+
const listRef = (0, import_react.useRef)(null);
|
|
198
|
+
(0, import_react.useEffect)(() => {
|
|
199
|
+
const onDoc = (e) => {
|
|
200
|
+
if (!ref.current?.contains(e.target)) setOpen(false);
|
|
201
|
+
};
|
|
202
|
+
document.addEventListener("mousedown", onDoc);
|
|
203
|
+
return () => document.removeEventListener("mousedown", onDoc);
|
|
204
|
+
}, []);
|
|
205
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "relative", ref, children: [
|
|
206
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
207
|
+
"button",
|
|
208
|
+
{
|
|
209
|
+
type: "button",
|
|
210
|
+
className: "nb-btn nb-btn-primary w-full justify-center",
|
|
211
|
+
onClick: () => setOpen((v) => !v),
|
|
212
|
+
"aria-expanded": open,
|
|
213
|
+
"aria-label": "\u6DFB\u52A0\u9891\u9053",
|
|
214
|
+
children: [
|
|
215
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Plus, { size: 13, strokeWidth: 3 }),
|
|
216
|
+
" \u6DFB\u52A0\u9891\u9053",
|
|
217
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronDown, { size: 13, strokeWidth: 2.5, className: ["transition-transform", open ? "rotate-180" : ""].join(" ") })
|
|
218
|
+
]
|
|
219
|
+
}
|
|
220
|
+
),
|
|
221
|
+
open && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-2 min-w-full nb-card p-1 overflow-hidden sps-surface-menu", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { ref: listRef, className: "overflow-y-auto", style: { maxHeight: "50vh" }, children: CHANNEL_KINDS.map((k, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_console_ui.AnimatedItem, { index: i, root: listRef, delay: 0.02, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
222
|
+
"button",
|
|
223
|
+
{
|
|
224
|
+
type: "button",
|
|
225
|
+
className: "dimension-menu-item w-full text-left px-4 py-2 text-sm font-semibold flex items-center gap-2",
|
|
226
|
+
onClick: () => {
|
|
227
|
+
onAdd(k);
|
|
228
|
+
setOpen(false);
|
|
229
|
+
},
|
|
230
|
+
"aria-label": `\u6DFB\u52A0 ${KIND_LABEL[k]} \u9891\u9053`,
|
|
231
|
+
children: [
|
|
232
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Plus, { size: 12, strokeWidth: 3, className: "shrink-0" }),
|
|
233
|
+
" ",
|
|
234
|
+
KIND_LABEL[k]
|
|
235
|
+
]
|
|
236
|
+
}
|
|
237
|
+
) }, k)) }) })
|
|
238
|
+
] });
|
|
239
|
+
}
|
|
240
|
+
function ChannelListItem({ label, sub, active, onClick }) {
|
|
241
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
242
|
+
"button",
|
|
243
|
+
{
|
|
244
|
+
type: "button",
|
|
245
|
+
onClick,
|
|
246
|
+
"aria-pressed": active,
|
|
247
|
+
className: [
|
|
248
|
+
"dimension-menu-item flex-col items-start gap-0.5 px-3 py-2 text-left",
|
|
249
|
+
active ? "dimension-menu-item-active" : ""
|
|
250
|
+
].join(" "),
|
|
251
|
+
children: [
|
|
252
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "font-bold text-sm", children: label }),
|
|
253
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-xs sps-muted truncate w-full sps-mono", children: sub })
|
|
254
|
+
]
|
|
255
|
+
}
|
|
256
|
+
);
|
|
257
|
+
}
|
|
258
|
+
function ConsoleBridgeForm({
|
|
259
|
+
console: cfg,
|
|
260
|
+
onChange
|
|
261
|
+
}) {
|
|
262
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col gap-4", children: [
|
|
263
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
264
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "sps-heading font-bold text-lg", children: "console \u6865\u63A5" }),
|
|
265
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-xs sps-muted mt-1", children: "IM \u7EAF\u6587\u672C\u6D88\u606F\u6865\u63A5\u5230\u9879\u76EE agent \u5BF9\u8BDD\u3002\u8BBE\u4E86 URL \u624D\u542F\u7528\u6865\u63A5;token \u4E3A console \u9274\u6743\u4EE4\u724C\u3002" })
|
|
266
|
+
] }),
|
|
267
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", { className: "flex flex-col gap-1 text-sm font-bold", children: [
|
|
268
|
+
"Console URL",
|
|
269
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
270
|
+
"input",
|
|
271
|
+
{
|
|
272
|
+
className: "nb-input sps-mono text-sm",
|
|
273
|
+
value: cfg.url ?? "",
|
|
274
|
+
onChange: (e) => onChange({ url: e.target.value }),
|
|
275
|
+
placeholder: "http://localhost:4321",
|
|
276
|
+
spellCheck: false
|
|
277
|
+
}
|
|
278
|
+
)
|
|
279
|
+
] }),
|
|
280
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", { className: "flex flex-col gap-1 text-sm font-bold", children: [
|
|
281
|
+
"Console Token(SPS_CONSOLE_TOKEN)",
|
|
282
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
283
|
+
"input",
|
|
284
|
+
{
|
|
285
|
+
className: "nb-input sps-mono text-sm",
|
|
286
|
+
type: "password",
|
|
287
|
+
value: cfg.token ?? "",
|
|
288
|
+
onChange: (e) => onChange({ token: e.target.value }),
|
|
289
|
+
placeholder: "\u9274\u6743\u4EE4\u724C(\u53EF\u7A7A)",
|
|
290
|
+
spellCheck: false
|
|
291
|
+
}
|
|
292
|
+
)
|
|
293
|
+
] }),
|
|
294
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col gap-1 text-sm font-bold", children: [
|
|
295
|
+
"\u5BF9\u8BDD\u540E\u7AEF",
|
|
296
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
297
|
+
import_console_ui.AnimatedSelect,
|
|
298
|
+
{
|
|
299
|
+
value: cfg.agentKind ?? "claude",
|
|
300
|
+
onChange: (v) => onChange({ agentKind: v }),
|
|
301
|
+
ariaLabel: "\u5BF9\u8BDD\u540E\u7AEF",
|
|
302
|
+
options: [
|
|
303
|
+
{ value: "claude", label: "claude" },
|
|
304
|
+
{ value: "openai", label: "openai" }
|
|
305
|
+
]
|
|
306
|
+
}
|
|
307
|
+
)
|
|
308
|
+
] })
|
|
309
|
+
] });
|
|
310
|
+
}
|
|
311
|
+
function AdapterForm({
|
|
312
|
+
adapter,
|
|
313
|
+
onChange,
|
|
314
|
+
onRemove
|
|
315
|
+
}) {
|
|
316
|
+
const { confirm } = (0, import_console_ui.useDialog)();
|
|
317
|
+
const fields = KIND_FIELDS[adapter.kind] ?? [];
|
|
318
|
+
const enabled = adapter.enabled !== false;
|
|
319
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col gap-4", children: [
|
|
320
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-start justify-between gap-2", children: [
|
|
321
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
322
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "sps-heading font-bold text-lg", children: KIND_LABEL[adapter.kind] ?? adapter.kind }),
|
|
323
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "sps-muted text-sm sps-mono", children: [
|
|
324
|
+
" \xB7 ",
|
|
325
|
+
adapter.kind
|
|
326
|
+
] })
|
|
327
|
+
] }),
|
|
328
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
329
|
+
"button",
|
|
330
|
+
{
|
|
331
|
+
className: "nb-btn nb-btn-danger shrink-0",
|
|
332
|
+
style: { padding: "4px 10px", fontSize: 12 },
|
|
333
|
+
type: "button",
|
|
334
|
+
onClick: async () => {
|
|
335
|
+
if (await confirm({ title: "\u5220\u9664\u9891\u9053", body: `\u5220\u9664 ${KIND_LABEL[adapter.kind] ?? adapter.kind} \u9891\u9053?`, danger: true })) onRemove();
|
|
336
|
+
},
|
|
337
|
+
"aria-label": "\u5220\u9664\u9891\u9053",
|
|
338
|
+
children: [
|
|
339
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Trash2, { size: 12, strokeWidth: 3 }),
|
|
340
|
+
" \u5220\u9664"
|
|
341
|
+
]
|
|
342
|
+
}
|
|
343
|
+
)
|
|
344
|
+
] }),
|
|
345
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", { className: "flex items-center gap-2 text-sm font-bold", children: [
|
|
346
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("input", { type: "checkbox", checked: enabled, onChange: (e) => onChange({ enabled: e.target.checked }) }),
|
|
347
|
+
"\u542F\u7528\u6B64\u9891\u9053"
|
|
348
|
+
] }),
|
|
349
|
+
fields.map((f) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AdapterField, { spec: f, value: adapter[f.key], onChange: (v) => onChange({ [f.key]: v }) }, f.key))
|
|
350
|
+
] });
|
|
351
|
+
}
|
|
352
|
+
function AdapterField({ spec, value, onChange }) {
|
|
353
|
+
if (spec.type === "list") {
|
|
354
|
+
const arr = Array.isArray(value) ? value.map(String) : [];
|
|
355
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", { className: "flex flex-col gap-1 text-sm font-bold", children: [
|
|
356
|
+
spec.label,
|
|
357
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
358
|
+
"textarea",
|
|
359
|
+
{
|
|
360
|
+
className: "nb-input sps-mono text-sm",
|
|
361
|
+
rows: 2,
|
|
362
|
+
value: arr.join(", "),
|
|
363
|
+
onChange: (e) => {
|
|
364
|
+
const list = e.target.value.split(/[,\n]/).map((s) => s.trim()).filter(Boolean);
|
|
365
|
+
onChange(list.length ? list : void 0);
|
|
366
|
+
},
|
|
367
|
+
placeholder: spec.placeholder,
|
|
368
|
+
spellCheck: false
|
|
369
|
+
}
|
|
370
|
+
)
|
|
371
|
+
] });
|
|
372
|
+
}
|
|
373
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", { className: "flex flex-col gap-1 text-sm font-bold", children: [
|
|
374
|
+
spec.label,
|
|
375
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
376
|
+
"input",
|
|
377
|
+
{
|
|
378
|
+
className: "nb-input sps-mono text-sm",
|
|
379
|
+
type: spec.type === "password" ? "password" : "text",
|
|
380
|
+
value: value == null ? "" : String(value),
|
|
381
|
+
onChange: (e) => {
|
|
382
|
+
const raw = e.target.value;
|
|
383
|
+
if (spec.type === "number") {
|
|
384
|
+
onChange(raw.trim() === "" ? void 0 : Number(raw));
|
|
385
|
+
} else {
|
|
386
|
+
onChange(raw === "" ? void 0 : raw);
|
|
387
|
+
}
|
|
388
|
+
},
|
|
389
|
+
placeholder: spec.placeholder,
|
|
390
|
+
spellCheck: false
|
|
391
|
+
}
|
|
392
|
+
)
|
|
393
|
+
] });
|
|
394
|
+
}
|
|
395
|
+
(0, import_console_slots.registerSlot)("plugin.config", {
|
|
396
|
+
// 🔴 按**实现**匹配,不是按行 id
|
|
397
|
+
match: ({ name }) => name === "@coralai/sps-cli/seams/im-builtin",
|
|
398
|
+
render: () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChannelSection, {})
|
|
399
|
+
});
|
|
400
|
+
|
|
401
|
+
},
|
|
402
|
+
});
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
// 由 scripts/build-seam-clients.mjs 生成,勿手改。源码在 src/seams/memory-local/client/
|
|
2
|
+
window.__SpsModuleLoader__.load({
|
|
3
|
+
id: "memory",
|
|
4
|
+
contractVersion: 1,
|
|
5
|
+
factory: (require) => {
|
|
6
|
+
const module = { exports: {} };
|
|
7
|
+
const exports = module.exports;
|
|
8
|
+
"use strict";
|
|
9
|
+
|
|
10
|
+
// src/seams/memory-local/client/index.tsx
|
|
11
|
+
var import_console_slots = require("@coralai/console-slots");
|
|
12
|
+
var import_console_ui = require("@coralai/console-ui");
|
|
13
|
+
var import_react_query = require("@tanstack/react-query");
|
|
14
|
+
var import_lucide_react = require("lucide-react");
|
|
15
|
+
var import_react = require("react");
|
|
16
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
17
|
+
var MSG = {
|
|
18
|
+
zh: {
|
|
19
|
+
title: "\u8BB0\u5FC6\u540E\u7AEF",
|
|
20
|
+
desc: "\u5168\u5C40\u8BBE\u7F6E:worker \u7684\u8BB0\u5FC6\u8BFB\u5199\u8D70\u54EA\u4E2A\u540E\u7AEF\u3002\u6539\u52A8\u5BF9\u65B0\u6D3E\u53D1\u7684\u5361\u751F\u6548\u3002",
|
|
21
|
+
provider: "\u540E\u7AEF",
|
|
22
|
+
url: "\u81EA\u5B9A\u4E49\u5730\u5740",
|
|
23
|
+
urlPlaceholder: "http://127.0.0.1:3113",
|
|
24
|
+
save: "\u4FDD\u5B58",
|
|
25
|
+
saved: "\u5DF2\u4FDD\u5B58",
|
|
26
|
+
error: "\u4FDD\u5B58\u8BB0\u5FC6\u8BBE\u7F6E\u5931\u8D25"
|
|
27
|
+
},
|
|
28
|
+
en: {
|
|
29
|
+
title: "Memory backend",
|
|
30
|
+
desc: "Global: which backend worker memory reads and writes go through. Applies to newly dispatched cards.",
|
|
31
|
+
provider: "Backend",
|
|
32
|
+
url: "Custom URL",
|
|
33
|
+
urlPlaceholder: "http://127.0.0.1:3113",
|
|
34
|
+
save: "Save",
|
|
35
|
+
saved: "Saved",
|
|
36
|
+
error: "Failed to save memory setting"
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
function MemoryPanel() {
|
|
40
|
+
const m = (0, import_console_ui.useMessages)(MSG);
|
|
41
|
+
const qc = (0, import_react_query.useQueryClient)();
|
|
42
|
+
const { alert } = (0, import_console_ui.useDialog)();
|
|
43
|
+
const memQ = (0, import_react_query.useQuery)({
|
|
44
|
+
queryKey: ["system-memory"],
|
|
45
|
+
queryFn: () => (0, import_console_ui.apiGet)("/api/system/memory")
|
|
46
|
+
});
|
|
47
|
+
const [provider, setProvider] = (0, import_react.useState)(null);
|
|
48
|
+
const [url, setUrl] = (0, import_react.useState)(null);
|
|
49
|
+
(0, import_react.useEffect)(() => {
|
|
50
|
+
if (memQ.data && provider === null) {
|
|
51
|
+
setProvider(memQ.data.provider);
|
|
52
|
+
setUrl(memQ.data.url);
|
|
53
|
+
}
|
|
54
|
+
}, [memQ.data, provider]);
|
|
55
|
+
const curProvider = provider ?? memQ.data?.provider ?? "agentmemory";
|
|
56
|
+
const curUrl = url ?? memQ.data?.url ?? "";
|
|
57
|
+
const dirty = memQ.data != null && (curProvider !== memQ.data.provider || curProvider === "custom" && curUrl !== memQ.data.url);
|
|
58
|
+
const save = (0, import_react_query.useMutation)({
|
|
59
|
+
mutationFn: () => (0, import_console_ui.apiPut)("/api/system/memory", {
|
|
60
|
+
provider: curProvider,
|
|
61
|
+
url: curProvider === "custom" ? curUrl : ""
|
|
62
|
+
}),
|
|
63
|
+
onSuccess: () => {
|
|
64
|
+
void qc.invalidateQueries({ queryKey: ["system-memory"] });
|
|
65
|
+
void qc.invalidateQueries({ queryKey: ["system-env"] });
|
|
66
|
+
},
|
|
67
|
+
onError: (err) => void alert({ title: m.error, body: err instanceof Error ? err.message : String(err) })
|
|
68
|
+
});
|
|
69
|
+
const providers = memQ.data?.options ?? ["none", "builtin", "agentmemory", "custom"];
|
|
70
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", { children: [
|
|
71
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
72
|
+
"h2",
|
|
73
|
+
{
|
|
74
|
+
className: "text-xl font-bold mb-1",
|
|
75
|
+
style: { fontFamily: "var(--font-heading)" },
|
|
76
|
+
children: m.title
|
|
77
|
+
}
|
|
78
|
+
),
|
|
79
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-xs mb-3", style: { color: "var(--color-text-muted)" }, children: m.desc }),
|
|
80
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col gap-3", style: { maxWidth: 448 }, children: [
|
|
81
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col gap-1 text-sm", children: [
|
|
82
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "font-bold", children: m.provider }),
|
|
83
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
84
|
+
import_console_ui.AnimatedSelect,
|
|
85
|
+
{
|
|
86
|
+
value: curProvider,
|
|
87
|
+
onChange: setProvider,
|
|
88
|
+
ariaLabel: m.provider,
|
|
89
|
+
options: providers.map((p) => ({ value: p, label: p }))
|
|
90
|
+
}
|
|
91
|
+
)
|
|
92
|
+
] }),
|
|
93
|
+
curProvider === "custom" && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", { className: "flex flex-col gap-1 text-sm", children: [
|
|
94
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "font-bold", children: m.url }),
|
|
95
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
96
|
+
"input",
|
|
97
|
+
{
|
|
98
|
+
className: "nb-input text-xs",
|
|
99
|
+
style: { fontFamily: "var(--font-mono)" },
|
|
100
|
+
type: "text",
|
|
101
|
+
value: curUrl,
|
|
102
|
+
onChange: (e) => setUrl(e.target.value),
|
|
103
|
+
placeholder: m.urlPlaceholder,
|
|
104
|
+
spellCheck: false,
|
|
105
|
+
"aria-label": m.url
|
|
106
|
+
}
|
|
107
|
+
)
|
|
108
|
+
] }),
|
|
109
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex justify-end", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
110
|
+
"button",
|
|
111
|
+
{
|
|
112
|
+
className: "nb-btn nb-btn-primary",
|
|
113
|
+
style: { padding: "6px 12px", fontSize: 12 },
|
|
114
|
+
onClick: () => save.mutate(),
|
|
115
|
+
disabled: !dirty || save.isPending,
|
|
116
|
+
type: "button",
|
|
117
|
+
"aria-label": m.save,
|
|
118
|
+
children: [
|
|
119
|
+
save.isPending ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Loader2, { size: 12, strokeWidth: 3, className: "animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Save, { size: 12, strokeWidth: 3 }),
|
|
120
|
+
save.isSuccess && !dirty ? m.saved : m.save
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
) })
|
|
124
|
+
] })
|
|
125
|
+
] });
|
|
126
|
+
}
|
|
127
|
+
(0, import_console_slots.registerSlot)("plugin.config", {
|
|
128
|
+
// 🔴 按**实现**匹配,不是按行 id:这一行换成别的记忆后端,这个面板就该消失
|
|
129
|
+
// —— 它配的是 memory-local 自己的东西。
|
|
130
|
+
match: ({ name }) => name === "@coralai/sps-cli/seams/memory-local",
|
|
131
|
+
render: () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MemoryPanel, {})
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
},
|
|
135
|
+
});
|
package/dist/server.d.ts
CHANGED
|
@@ -6,11 +6,19 @@
|
|
|
6
6
|
* Logger. Consumers wire these into their own Hono app. See exports map in
|
|
7
7
|
* package.json (`@coralai/sps-cli/server`).
|
|
8
8
|
*/
|
|
9
|
-
export { createContainer } from './services/container.js';
|
|
10
|
-
export type { ServiceContainer, ContainerOptions, SystemMeta } from './services/container.js';
|
|
11
9
|
export { createChatRoute, createChatStreamRoute } from './console/routes/chat.js';
|
|
10
|
+
export { readAgentsMd } from './core/agents/agentsMd.js';
|
|
11
|
+
export { type ConfigureProjectAgentOpts, configureProjectAgent, type ProjectAgentProvider, type ProjectAgentTarget, } from './core/agents/configureProjectAgent.js';
|
|
12
|
+
export { loadAgentsConfig } from './core/intel/agentsConfig.js';
|
|
13
|
+
export { RuntimeSession } from './core/intel/RuntimeSession.js';
|
|
12
14
|
export { Logger } from './core/logger.js';
|
|
15
|
+
export { exportModelConfigBundle, type ImportSummary, importModelConfigBundle, isModelConfigBundle, type ModelConfigBundle, } from './core/modelConfigBundle.js';
|
|
16
|
+
export { type ConfigureProjectSkillsResult, configureProjectSkills } from './core/skills/configure.js';
|
|
17
|
+
export { type SkillMeta, SkillsManager, type SkillsManagerOpts } from './core/skills/index.js';
|
|
18
|
+
export type { GateOpts } from './core/skills/types.js';
|
|
13
19
|
export { SseEventBus } from './infra/sseBus.js';
|
|
20
|
+
export { chatTools } from './providers/llm/chatTools.js';
|
|
21
|
+
export { createReviewerModel } from './providers/llm/modelFactory.js';
|
|
14
22
|
/**
|
|
15
23
|
* Agent 构造积木 —— 给嵌入方(如 gameforge)自己用 `@openai/agents` 跑对话回合
|
|
16
24
|
* (集成交接 §7 选项 a)。复刻 console `streamOpenaiChat` 的最小集:
|
|
@@ -27,18 +35,10 @@ export { SseEventBus } from './infra/sseBus.js';
|
|
|
27
35
|
* for await (const ev of r) { ... 把流事件翻成你的 UI 流 ... }
|
|
28
36
|
*/
|
|
29
37
|
export { skillTools } from './providers/llm/skillTools.js';
|
|
30
|
-
export { chatTools } from './providers/llm/chatTools.js';
|
|
31
38
|
export { workerTools } from './providers/llm/workerTools.js';
|
|
32
|
-
export {
|
|
33
|
-
export { createReviewerModel } from './providers/llm/modelFactory.js';
|
|
34
|
-
export { loadAgentsConfig } from './core/intel/agentsConfig.js';
|
|
35
|
-
export { RuntimeSession } from './core/intel/RuntimeSession.js';
|
|
36
|
-
export { SkillsManager, type SkillsManagerOpts, type SkillMeta } from './core/skills/index.js';
|
|
37
|
-
export { configureProjectSkills, type ConfigureProjectSkillsResult } from './core/skills/configure.js';
|
|
38
|
-
export type { GateOpts } from './core/skills/types.js';
|
|
39
|
-
export { configureProjectAgent, type ConfigureProjectAgentOpts, type ProjectAgentProvider, type ProjectAgentTarget, } from './core/agents/configureProjectAgent.js';
|
|
40
|
-
export { exportModelConfigBundle, importModelConfigBundle, isModelConfigBundle, type ModelConfigBundle, type ImportSummary, } from './core/modelConfigBundle.js';
|
|
41
|
-
export { runSubAgent, abortSubagentRun, SubAgentError, type SubAgentSpec, type SubAgentResult, type SubAgentUsage, type SubAgentToolCall, type SubAgentEvent, type SubAgentErrorKind, type SubAgentToolMode, } from './providers/subagent/runSubAgent.js';
|
|
39
|
+
export { type GenerateAssetInput, type GenerateAssetResult, generateAsset } from './providers/media/generateAsset.js';
|
|
42
40
|
export { getSubagentRun, listSubagentRuns, type SubagentRunRecord, type SubagentRunStatus, } from './providers/subagent/runLedger.js';
|
|
43
|
-
export {
|
|
41
|
+
export { abortSubagentRun, runSubAgent, SubAgentError, type SubAgentErrorKind, type SubAgentEvent, type SubAgentResult, type SubAgentSpec, type SubAgentToolCall, type SubAgentToolMode, type SubAgentUsage, } from './providers/subagent/runSubAgent.js';
|
|
42
|
+
export type { ContainerOptions, ServiceContainer, SystemMeta } from './services/container.js';
|
|
43
|
+
export { createContainer } from './services/container.js';
|
|
44
44
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EACL,KAAK,yBAAyB,EAC9B,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,GACxB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EACL,uBAAuB,EACvB,KAAK,aAAa,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,KAAK,iBAAiB,GACvB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,KAAK,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACvG,OAAO,EAAE,KAAK,SAAS,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC/F,YAAY,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACtH,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,GACnB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -6,10 +6,23 @@
|
|
|
6
6
|
* Logger. Consumers wire these into their own Hono app. See exports map in
|
|
7
7
|
* package.json (`@coralai/sps-cli/server`).
|
|
8
8
|
*/
|
|
9
|
-
export { createContainer } from './services/container.js';
|
|
10
9
|
export { createChatRoute, createChatStreamRoute } from './console/routes/chat.js';
|
|
10
|
+
export { readAgentsMd } from './core/agents/agentsMd.js';
|
|
11
|
+
// 项目级 agent 端点/模型(建项目之后也能改):平台只说"用哪个 provider/模型",
|
|
12
|
+
// 落 .claude/settings.local.json 还是 .sps/agent-providers.json 由 sps 按后端决定。
|
|
13
|
+
export { configureProjectAgent, } from './core/agents/configureProjectAgent.js';
|
|
14
|
+
export { loadAgentsConfig } from './core/intel/agentsConfig.js';
|
|
15
|
+
export { RuntimeSession } from './core/intel/RuntimeSession.js';
|
|
11
16
|
export { Logger } from './core/logger.js';
|
|
17
|
+
// 模型配置包(0.65.27 CLI 功能的库形态):嵌入平台(coral)的导入口分流/双包导出用。
|
|
18
|
+
export { exportModelConfigBundle, importModelConfigBundle, isModelConfigBundle, } from './core/modelConfigBundle.js';
|
|
19
|
+
// 项目 skill 配置(建项目之后也能改):平台只说"这个项目用哪些技能",落到 .claude/skills 还是
|
|
20
|
+
// .sps/skills 由 sps 按后端决定 —— 收掉平台自写投影那类越界(见 core/skills/configure.ts)。
|
|
21
|
+
export { configureProjectSkills } from './core/skills/configure.js';
|
|
22
|
+
export { SkillsManager } from './core/skills/index.js';
|
|
12
23
|
export { SseEventBus } from './infra/sseBus.js';
|
|
24
|
+
export { chatTools } from './providers/llm/chatTools.js';
|
|
25
|
+
export { createReviewerModel } from './providers/llm/modelFactory.js';
|
|
13
26
|
/**
|
|
14
27
|
* Agent 构造积木 —— 给嵌入方(如 gameforge)自己用 `@openai/agents` 跑对话回合
|
|
15
28
|
* (集成交接 §7 选项 a)。复刻 console `streamOpenaiChat` 的最小集:
|
|
@@ -26,25 +39,12 @@ export { SseEventBus } from './infra/sseBus.js';
|
|
|
26
39
|
* for await (const ev of r) { ... 把流事件翻成你的 UI 流 ... }
|
|
27
40
|
*/
|
|
28
41
|
export { skillTools } from './providers/llm/skillTools.js';
|
|
29
|
-
export { chatTools } from './providers/llm/chatTools.js';
|
|
30
42
|
export { workerTools } from './providers/llm/workerTools.js';
|
|
31
|
-
export { readAgentsMd } from './core/agents/agentsMd.js';
|
|
32
|
-
export { createReviewerModel } from './providers/llm/modelFactory.js';
|
|
33
|
-
export { loadAgentsConfig } from './core/intel/agentsConfig.js';
|
|
34
|
-
export { RuntimeSession } from './core/intel/RuntimeSession.js';
|
|
35
|
-
export { SkillsManager } from './core/skills/index.js';
|
|
36
|
-
// 项目 skill 配置(建项目之后也能改):平台只说"这个项目用哪些技能",落到 .claude/skills 还是
|
|
37
|
-
// .sps/skills 由 sps 按后端决定 —— 收掉平台自写投影那类越界(见 core/skills/configure.ts)。
|
|
38
|
-
export { configureProjectSkills } from './core/skills/configure.js';
|
|
39
|
-
// 项目级 agent 端点/模型(建项目之后也能改):平台只说"用哪个 provider/模型",
|
|
40
|
-
// 落 .claude/settings.local.json 还是 .sps/agent-providers.json 由 sps 按后端决定。
|
|
41
|
-
export { configureProjectAgent, } from './core/agents/configureProjectAgent.js';
|
|
42
|
-
// 模型配置包(0.65.27 CLI 功能的库形态):嵌入平台(coral)的导入口分流/双包导出用。
|
|
43
|
-
export { exportModelConfigBundle, importModelConfigBundle, isModelConfigBundle, } from './core/modelConfigBundle.js';
|
|
44
|
-
// 轻 agent(subagent,一次性子 agent):平台(gameforge 审图等)直调,provider/密钥留 sps。
|
|
45
|
-
// v2 契约见 docs/integration/subagent-contract.md(工具三态/多模态/结构化/中断/台账)。
|
|
46
|
-
export { runSubAgent, abortSubagentRun, SubAgentError, } from './providers/subagent/runSubAgent.js';
|
|
47
|
-
export { getSubagentRun, listSubagentRuns, } from './providers/subagent/runLedger.js';
|
|
48
43
|
// 媒体生成引擎入口(图/视频/音乐/语音/3D):平台生图直调它,退役自持 SDK/密钥。
|
|
49
44
|
export { generateAsset } from './providers/media/generateAsset.js';
|
|
45
|
+
export { getSubagentRun, listSubagentRuns, } from './providers/subagent/runLedger.js';
|
|
46
|
+
// 轻 agent(subagent,一次性子 agent):平台(gameforge 审图等)直调,provider/密钥留 sps。
|
|
47
|
+
// v2 契约见 docs/integration/subagent-contract.md(工具三态/多模态/结构化/中断/台账)。
|
|
48
|
+
export { abortSubagentRun, runSubAgent, SubAgentError, } from './providers/subagent/runSubAgent.js';
|
|
49
|
+
export { createContainer } from './services/container.js';
|
|
50
50
|
//# sourceMappingURL=server.js.map
|