@swarmclawai/swarmclaw 0.7.7 → 0.8.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/README.md +12 -14
- package/next.config.ts +13 -2
- package/package.json +4 -2
- package/src/app/api/agents/[id]/thread/route.ts +9 -0
- package/src/app/api/agents/route.ts +4 -0
- package/src/app/api/agents/thread-route.test.ts +133 -0
- package/src/app/api/approvals/route.test.ts +148 -0
- package/src/app/api/canvas/[sessionId]/route.ts +3 -1
- package/src/app/api/chatrooms/[id]/chat/route.ts +4 -2
- package/src/app/api/chats/[id]/devserver/route.ts +48 -7
- package/src/app/api/chats/[id]/messages/route.ts +42 -18
- package/src/app/api/chats/[id]/route.ts +1 -1
- package/src/app/api/chats/[id]/stop/route.ts +5 -4
- package/src/app/api/chats/route.ts +23 -2
- package/src/app/api/clawhub/install/route.ts +28 -8
- package/src/app/api/connectors/[id]/route.ts +46 -3
- package/src/app/api/connectors/route.ts +12 -8
- package/src/app/api/external-agents/route.test.ts +165 -0
- package/src/app/api/gateways/[id]/health/route.ts +27 -12
- package/src/app/api/gateways/[id]/route.ts +2 -0
- package/src/app/api/gateways/health-route.test.ts +135 -0
- package/src/app/api/gateways/route.ts +2 -0
- package/src/app/api/mcp-servers/route.test.ts +130 -0
- package/src/app/api/openclaw/deploy/route.ts +38 -5
- package/src/app/api/plugins/install/route.ts +46 -6
- package/src/app/api/plugins/marketplace/route.ts +48 -15
- package/src/app/api/preview-server/route.ts +26 -11
- package/src/app/api/projects/[id]/route.ts +6 -2
- package/src/app/api/projects/route.ts +4 -3
- package/src/app/api/schedules/[id]/run/route.ts +4 -0
- package/src/app/api/schedules/route.test.ts +86 -0
- package/src/app/api/schedules/route.ts +6 -1
- package/src/app/api/secrets/[id]/route.ts +1 -0
- package/src/app/api/secrets/route.ts +2 -1
- package/src/app/api/settings/route.ts +2 -0
- package/src/app/api/setup/check-provider/route.test.ts +19 -0
- package/src/app/api/setup/check-provider/route.ts +40 -10
- package/src/app/api/skills/[id]/route.ts +12 -0
- package/src/app/api/skills/import/route.ts +14 -12
- package/src/app/api/skills/route.ts +13 -1
- package/src/app/api/tasks/[id]/route.ts +10 -1
- package/src/app/api/tasks/import/github/route.test.ts +65 -0
- package/src/app/api/tasks/import/github/route.ts +337 -0
- package/src/app/api/wallets/[id]/approve/route.ts +17 -3
- package/src/app/api/wallets/[id]/route.ts +79 -33
- package/src/app/api/wallets/[id]/send/route.ts +19 -33
- package/src/app/api/wallets/route.ts +78 -61
- package/src/app/api/webhooks/[id]/route.ts +33 -6
- package/src/app/api/webhooks/route.test.ts +272 -0
- package/src/cli/index.js +1 -0
- package/src/cli/spec.js +1 -0
- package/src/components/agents/agent-card.tsx +9 -2
- package/src/components/agents/agent-chat-list.tsx +18 -2
- package/src/components/agents/agent-list.tsx +1 -0
- package/src/components/agents/agent-sheet.tsx +257 -38
- package/src/components/agents/inspector-panel.tsx +41 -0
- package/src/components/canvas/canvas-panel.tsx +236 -65
- package/src/components/chat/chat-area.tsx +36 -19
- package/src/components/chat/chat-card.tsx +36 -13
- package/src/components/chat/chat-header.tsx +48 -16
- package/src/components/chat/chat-list.tsx +28 -4
- package/src/components/chat/checkpoint-timeline.tsx +50 -34
- package/src/components/chat/delegation-banner.test.ts +14 -1
- package/src/components/chat/delegation-banner.tsx +1 -1
- package/src/components/chat/message-bubble.tsx +208 -145
- package/src/components/chat/message-list.tsx +48 -19
- package/src/components/chatrooms/chatroom-message.tsx +2 -2
- package/src/components/chatrooms/chatroom-sheet.tsx +16 -2
- package/src/components/connectors/connector-health.tsx +1 -1
- package/src/components/connectors/connector-list.tsx +7 -2
- package/src/components/connectors/connector-sheet.tsx +337 -148
- package/src/components/gateways/gateway-sheet.tsx +2 -2
- package/src/components/layout/app-layout.tsx +40 -23
- package/src/components/mcp-servers/mcp-server-list.tsx +26 -5
- package/src/components/mcp-servers/mcp-server-sheet.tsx +19 -2
- package/src/components/openclaw/openclaw-deploy-panel.tsx +269 -21
- package/src/components/plugins/plugin-list.tsx +45 -9
- package/src/components/plugins/plugin-sheet.tsx +55 -7
- package/src/components/projects/project-detail.tsx +217 -0
- package/src/components/projects/project-sheet.tsx +176 -4
- package/src/components/providers/provider-list.tsx +2 -1
- package/src/components/providers/provider-sheet.tsx +21 -2
- package/src/components/schedules/schedule-card.tsx +25 -1
- package/src/components/schedules/schedule-sheet.tsx +44 -2
- package/src/components/secrets/secret-sheet.tsx +21 -2
- package/src/components/shared/agent-switch-dialog.tsx +12 -1
- package/src/components/shared/bottom-sheet.tsx +13 -3
- package/src/components/shared/command-palette.tsx +8 -1
- package/src/components/shared/confirm-dialog.tsx +19 -4
- package/src/components/shared/connector-platform-icon.test.ts +28 -0
- package/src/components/shared/connector-platform-icon.tsx +39 -6
- package/src/components/shared/settings/plugin-manager.tsx +29 -6
- package/src/components/shared/settings/section-capability-policy.tsx +45 -3
- package/src/components/shared/settings/section-voice.tsx +11 -3
- package/src/components/skills/skill-list.tsx +25 -0
- package/src/components/skills/skill-sheet.tsx +84 -12
- package/src/components/tasks/approvals-panel.tsx +289 -34
- package/src/components/tasks/task-board.tsx +410 -25
- package/src/components/tasks/task-card.tsx +66 -8
- package/src/components/tasks/task-sheet.tsx +16 -4
- package/src/components/ui/dialog.tsx +2 -2
- package/src/components/wallets/wallet-approval-dialog.tsx +4 -2
- package/src/components/wallets/wallet-panel.tsx +435 -90
- package/src/components/wallets/wallet-section.tsx +198 -48
- package/src/components/webhooks/webhook-sheet.tsx +22 -2
- package/src/lib/approval-display.ts +20 -0
- package/src/lib/canvas-content.ts +198 -0
- package/src/lib/chat-artifact-summary.ts +165 -0
- package/src/lib/chat-display.test.ts +91 -0
- package/src/lib/chat-display.ts +58 -0
- package/src/lib/chat-streaming-state.test.ts +47 -1
- package/src/lib/chat-streaming-state.ts +42 -0
- package/src/lib/ollama-model.ts +10 -0
- package/src/lib/openclaw-endpoint.test.ts +8 -0
- package/src/lib/openclaw-endpoint.ts +6 -1
- package/src/lib/plugin-install-cors.ts +46 -0
- package/src/lib/plugin-sources.test.ts +43 -0
- package/src/lib/plugin-sources.ts +77 -0
- package/src/lib/providers/ollama.ts +16 -6
- package/src/lib/providers/openclaw.test.ts +54 -0
- package/src/lib/providers/openclaw.ts +127 -11
- package/src/lib/schedule-dedupe-advanced.test.ts +1335 -0
- package/src/lib/schedule-dedupe.test.ts +66 -1
- package/src/lib/schedule-dedupe.ts +169 -12
- package/src/lib/schedule-origin.test.ts +20 -0
- package/src/lib/schedule-origin.ts +15 -0
- package/src/lib/server/__fixtures__/fake-mcp-stdio-server.mjs +27 -0
- package/src/lib/server/agent-availability.ts +16 -0
- package/src/lib/server/agent-runtime-config.ts +12 -4
- package/src/lib/server/agent-thread-session.test.ts +51 -0
- package/src/lib/server/agent-thread-session.ts +7 -0
- package/src/lib/server/approval-match.ts +205 -0
- package/src/lib/server/approvals-auto-approve.test.ts +538 -1
- package/src/lib/server/approvals.ts +214 -1
- package/src/lib/server/assistant-control.test.ts +29 -0
- package/src/lib/server/assistant-control.ts +23 -0
- package/src/lib/server/build-llm.test.ts +79 -0
- package/src/lib/server/build-llm.ts +14 -4
- package/src/lib/server/canvas-content.test.ts +32 -0
- package/src/lib/server/canvas-content.ts +6 -0
- package/src/lib/server/capability-router.test.ts +33 -0
- package/src/lib/server/capability-router.ts +80 -19
- package/src/lib/server/chat-execution-advanced.test.ts +651 -0
- package/src/lib/server/chat-execution-disabled.test.ts +94 -0
- package/src/lib/server/chat-execution-tool-events.test.ts +157 -0
- package/src/lib/server/chat-execution.ts +378 -73
- package/src/lib/server/clawhub-client.test.ts +14 -8
- package/src/lib/server/connectors/manager-reconnect.test.ts +47 -0
- package/src/lib/server/connectors/manager.test.ts +1147 -0
- package/src/lib/server/connectors/manager.ts +461 -137
- package/src/lib/server/connectors/pairing.ts +26 -5
- package/src/lib/server/connectors/types.ts +2 -0
- package/src/lib/server/connectors/whatsapp.test.ts +134 -0
- package/src/lib/server/connectors/whatsapp.ts +271 -47
- package/src/lib/server/context-manager.ts +6 -1
- package/src/lib/server/daemon-state.ts +84 -47
- package/src/lib/server/data-dir.test.ts +37 -0
- package/src/lib/server/data-dir.ts +20 -1
- package/src/lib/server/delegation-jobs-advanced.test.ts +513 -0
- package/src/lib/server/devserver-launch.test.ts +60 -0
- package/src/lib/server/devserver-launch.ts +85 -0
- package/src/lib/server/elevenlabs.test.ts +247 -1
- package/src/lib/server/elevenlabs.ts +147 -43
- package/src/lib/server/ethereum.ts +590 -0
- package/src/lib/server/eval/agent-regression-advanced.test.ts +302 -0
- package/src/lib/server/eval/agent-regression.test.ts +18 -1
- package/src/lib/server/eval/agent-regression.ts +383 -11
- package/src/lib/server/evm-swap.ts +475 -0
- package/src/lib/server/execution-log.ts +1 -0
- package/src/lib/server/heartbeat-service-timer.test.ts +173 -0
- package/src/lib/server/heartbeat-service.ts +20 -11
- package/src/lib/server/heartbeat-wake.test.ts +112 -0
- package/src/lib/server/heartbeat-wake.ts +338 -57
- package/src/lib/server/main-agent-loop-advanced.test.ts +538 -0
- package/src/lib/server/main-agent-loop.test.ts +260 -0
- package/src/lib/server/main-agent-loop.ts +559 -14
- package/src/lib/server/mcp-client.test.ts +16 -0
- package/src/lib/server/mcp-client.ts +25 -0
- package/src/lib/server/memory-integration.test.ts +719 -0
- package/src/lib/server/memory-policy.test.ts +43 -0
- package/src/lib/server/memory-policy.ts +132 -0
- package/src/lib/server/memory-tiers.test.ts +60 -0
- package/src/lib/server/memory-tiers.ts +16 -0
- package/src/lib/server/ollama-runtime.ts +58 -0
- package/src/lib/server/openclaw-deploy.test.ts +109 -1
- package/src/lib/server/openclaw-deploy.ts +557 -81
- package/src/lib/server/openclaw-gateway.test.ts +131 -0
- package/src/lib/server/openclaw-gateway.ts +10 -4
- package/src/lib/server/openclaw-health.test.ts +35 -0
- package/src/lib/server/openclaw-health.ts +215 -47
- package/src/lib/server/orchestrator-lg.ts +3 -2
- package/src/lib/server/orchestrator.ts +2 -0
- package/src/lib/server/plugins-advanced.test.ts +351 -0
- package/src/lib/server/plugins.ts +211 -6
- package/src/lib/server/project-context.ts +162 -0
- package/src/lib/server/project-utils.ts +150 -0
- package/src/lib/server/queue-advanced.test.ts +528 -0
- package/src/lib/server/queue-followups.test.ts +409 -2
- package/src/lib/server/queue-reconcile.test.ts +128 -0
- package/src/lib/server/queue.ts +527 -68
- package/src/lib/server/scheduler.ts +29 -1
- package/src/lib/server/session-note.test.ts +36 -0
- package/src/lib/server/session-note.ts +42 -0
- package/src/lib/server/session-run-manager.ts +83 -4
- package/src/lib/server/session-tools/canvas.ts +14 -12
- package/src/lib/server/session-tools/connector-inputs.test.ts +37 -0
- package/src/lib/server/session-tools/connector.test.ts +138 -0
- package/src/lib/server/session-tools/connector.ts +366 -54
- package/src/lib/server/session-tools/context.ts +17 -3
- package/src/lib/server/session-tools/crud.ts +484 -84
- package/src/lib/server/session-tools/delegate-fallback.test.ts +103 -0
- package/src/lib/server/session-tools/delegate-resume.test.ts +50 -0
- package/src/lib/server/session-tools/delegate.ts +102 -10
- package/src/lib/server/session-tools/discovery-approvals.test.ts +142 -0
- package/src/lib/server/session-tools/discovery.ts +80 -12
- package/src/lib/server/session-tools/file-normalize.test.ts +36 -0
- package/src/lib/server/session-tools/file.ts +43 -4
- package/src/lib/server/session-tools/human-loop.ts +35 -5
- package/src/lib/server/session-tools/index.ts +44 -9
- package/src/lib/server/session-tools/manage-connectors.test.ts +139 -0
- package/src/lib/server/session-tools/manage-schedules-advanced.test.ts +564 -0
- package/src/lib/server/session-tools/manage-schedules.test.ts +283 -0
- package/src/lib/server/session-tools/manage-tasks-advanced.test.ts +852 -0
- package/src/lib/server/session-tools/manage-tasks.test.ts +114 -0
- package/src/lib/server/session-tools/memory.test.ts +93 -0
- package/src/lib/server/session-tools/memory.ts +554 -75
- package/src/lib/server/session-tools/normalize-tool-args.ts +1 -1
- package/src/lib/server/session-tools/platform-access.test.ts +58 -0
- package/src/lib/server/session-tools/platform.ts +60 -19
- package/src/lib/server/session-tools/plugin-creator.ts +57 -1
- package/src/lib/server/session-tools/primitive-tools.test.ts +6 -0
- package/src/lib/server/session-tools/schedule.ts +6 -1
- package/src/lib/server/session-tools/shell-normalize.test.ts +25 -1
- package/src/lib/server/session-tools/shell.ts +22 -3
- package/src/lib/server/session-tools/wallet-tool.test.ts +254 -0
- package/src/lib/server/session-tools/wallet.ts +1374 -139
- package/src/lib/server/session-tools/web-inputs.test.ts +178 -0
- package/src/lib/server/session-tools/web.ts +621 -70
- package/src/lib/server/skill-discovery.ts +128 -0
- package/src/lib/server/skill-eligibility.test.ts +84 -0
- package/src/lib/server/skill-eligibility.ts +95 -0
- package/src/lib/server/skill-prompt-budget.test.ts +102 -0
- package/src/lib/server/skill-prompt-budget.ts +125 -0
- package/src/lib/server/skills-normalize.test.ts +54 -0
- package/src/lib/server/skills-normalize.ts +372 -26
- package/src/lib/server/solana.ts +214 -29
- package/src/lib/server/storage.ts +65 -36
- package/src/lib/server/stream-agent-chat.test.ts +437 -2
- package/src/lib/server/stream-agent-chat.ts +957 -79
- package/src/lib/server/system-events.ts +1 -1
- package/src/lib/server/tool-aliases.ts +2 -0
- package/src/lib/server/tool-capability-policy-advanced.test.ts +502 -0
- package/src/lib/server/tool-capability-policy.test.ts +24 -0
- package/src/lib/server/tool-capability-policy.ts +29 -1
- package/src/lib/server/tool-loop-detection.test.ts +105 -0
- package/src/lib/server/tool-loop-detection.ts +260 -0
- package/src/lib/server/tool-planning.test.ts +44 -0
- package/src/lib/server/tool-planning.ts +271 -0
- package/src/lib/server/wallet-execution.test.ts +198 -0
- package/src/lib/server/wallet-portfolio.test.ts +98 -0
- package/src/lib/server/wallet-portfolio.ts +724 -0
- package/src/lib/server/wallet-service.test.ts +57 -0
- package/src/lib/server/wallet-service.ts +213 -0
- package/src/lib/server/watch-jobs-advanced.test.ts +594 -0
- package/src/lib/server/watch-jobs.ts +17 -2
- package/src/lib/server/workspace-context.ts +111 -0
- package/src/lib/skill-save-payload.test.ts +39 -0
- package/src/lib/skill-save-payload.ts +37 -0
- package/src/lib/tasks.ts +28 -0
- package/src/lib/tool-definitions.ts +2 -1
- package/src/lib/tool-event-summary.test.ts +30 -0
- package/src/lib/tool-event-summary.ts +37 -0
- package/src/lib/validation/schemas.ts +1 -0
- package/src/lib/wallet-transactions.test.ts +75 -0
- package/src/lib/wallet-transactions.ts +43 -0
- package/src/lib/wallet.test.ts +17 -0
- package/src/lib/wallet.ts +183 -0
- package/src/proxy.test.ts +31 -0
- package/src/proxy.ts +34 -2
- package/src/stores/use-chat-store.ts +15 -1
- package/src/types/index.ts +249 -14
package/src/proxy.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { NextResponse } from 'next/server'
|
|
2
2
|
import type { NextRequest } from 'next/server'
|
|
3
3
|
import { AUTH_COOKIE_NAME } from '@/lib/auth'
|
|
4
|
+
import {
|
|
5
|
+
buildPluginInstallCorsHeaders,
|
|
6
|
+
isPluginInstallCorsPath,
|
|
7
|
+
resolvePluginInstallCorsOrigin,
|
|
8
|
+
} from '@/lib/plugin-install-cors'
|
|
4
9
|
|
|
5
10
|
/* ------------------------------------------------------------------ */
|
|
6
11
|
/* Rate-limit state — HMR-safe via globalThis */
|
|
@@ -40,6 +45,16 @@ function getClientIp(request: NextRequest): string {
|
|
|
40
45
|
return (request as unknown as { ip?: string }).ip ?? 'unknown'
|
|
41
46
|
}
|
|
42
47
|
|
|
48
|
+
function withPluginInstallCorsHeaders(pathname: string, origin: string | null, headers?: HeadersInit): Headers {
|
|
49
|
+
const merged = new Headers(headers)
|
|
50
|
+
if (!isPluginInstallCorsPath(pathname)) return merged
|
|
51
|
+
const corsHeaders = buildPluginInstallCorsHeaders(origin)
|
|
52
|
+
new Headers(corsHeaders).forEach((value, key) => {
|
|
53
|
+
merged.set(key, value)
|
|
54
|
+
})
|
|
55
|
+
return merged
|
|
56
|
+
}
|
|
57
|
+
|
|
43
58
|
/* ------------------------------------------------------------------ */
|
|
44
59
|
/* Proxy */
|
|
45
60
|
/* ------------------------------------------------------------------ */
|
|
@@ -51,11 +66,22 @@ function getClientIp(request: NextRequest): string {
|
|
|
51
66
|
*/
|
|
52
67
|
export function proxy(request: NextRequest) {
|
|
53
68
|
const { pathname } = request.nextUrl
|
|
69
|
+
const corsOrigin = resolvePluginInstallCorsOrigin(request.headers.get('origin'))
|
|
54
70
|
const isWebhookTrigger = request.method === 'POST'
|
|
55
71
|
&& /^\/api\/webhooks\/[^/]+\/?$/.test(pathname)
|
|
56
72
|
const isConnectorWebhook = request.method === 'POST'
|
|
57
73
|
&& /^\/api\/connectors\/[^/]+\/webhook\/?$/.test(pathname)
|
|
58
74
|
|
|
75
|
+
if (request.method === 'OPTIONS' && isPluginInstallCorsPath(pathname)) {
|
|
76
|
+
if (!corsOrigin) {
|
|
77
|
+
return NextResponse.json({ error: 'Origin not allowed' }, { status: 403 })
|
|
78
|
+
}
|
|
79
|
+
return new NextResponse(null, {
|
|
80
|
+
status: 204,
|
|
81
|
+
headers: buildPluginInstallCorsHeaders(corsOrigin),
|
|
82
|
+
})
|
|
83
|
+
}
|
|
84
|
+
|
|
59
85
|
// Only protect API routes (not auth or inbound webhooks)
|
|
60
86
|
if (
|
|
61
87
|
!pathname.startsWith('/api/')
|
|
@@ -83,7 +109,10 @@ export function proxy(request: NextRequest) {
|
|
|
83
109
|
const retryAfter = Math.ceil((entry.lockedUntil - Date.now()) / 1000)
|
|
84
110
|
return NextResponse.json(
|
|
85
111
|
{ error: 'Too many failed attempts. Try again later.', retryAfter },
|
|
86
|
-
{
|
|
112
|
+
{
|
|
113
|
+
status: 429,
|
|
114
|
+
headers: withPluginInstallCorsHeaders(pathname, corsOrigin, { 'Retry-After': String(retryAfter) }),
|
|
115
|
+
},
|
|
87
116
|
)
|
|
88
117
|
}
|
|
89
118
|
|
|
@@ -106,7 +135,10 @@ export function proxy(request: NextRequest) {
|
|
|
106
135
|
const remaining = Math.max(0, MAX_ATTEMPTS - current.count)
|
|
107
136
|
return NextResponse.json(
|
|
108
137
|
{ error: 'Unauthorized' },
|
|
109
|
-
{
|
|
138
|
+
{
|
|
139
|
+
status: 401,
|
|
140
|
+
headers: withPluginInstallCorsHeaders(pathname, corsOrigin, { 'X-RateLimit-Remaining': String(remaining) }),
|
|
141
|
+
},
|
|
110
142
|
)
|
|
111
143
|
}
|
|
112
144
|
|
|
@@ -36,7 +36,7 @@ interface ChatState {
|
|
|
36
36
|
streamText: string
|
|
37
37
|
|
|
38
38
|
// Task 1: Rich status indicator
|
|
39
|
-
streamPhase: 'thinking' | 'tool' | 'responding'
|
|
39
|
+
streamPhase: 'thinking' | 'tool' | 'responding' | 'connecting'
|
|
40
40
|
streamToolName: string
|
|
41
41
|
|
|
42
42
|
// Task 2: Typing cadence simulation
|
|
@@ -359,6 +359,16 @@ export const useChatStore = create<ChatState>((set, get) => ({
|
|
|
359
359
|
}
|
|
360
360
|
return { toolEvents: events }
|
|
361
361
|
})
|
|
362
|
+
} else if (event.t === 'reset') {
|
|
363
|
+
// Server rolled back state after a transient error — clear accumulated
|
|
364
|
+
// text and tool events so the retry starts with a clean slate.
|
|
365
|
+
fullText = event.text || ''
|
|
366
|
+
toolCallCounter = 0
|
|
367
|
+
soundFiredStart = false
|
|
368
|
+
if (_cadenceInterval) clearCadence()
|
|
369
|
+
_cadencePos = 0
|
|
370
|
+
_cadenceBuffer = ''
|
|
371
|
+
set({ streamText: fullText, displayText: fullText, toolEvents: [], streamPhase: 'connecting' })
|
|
362
372
|
} else if (event.t === 'err') {
|
|
363
373
|
const errText = event.text || 'Unknown'
|
|
364
374
|
if (!shouldIgnoreTransientError(errText)) {
|
|
@@ -510,6 +520,10 @@ export const useChatStore = create<ChatState>((set, get) => ({
|
|
|
510
520
|
(event: SSEEvent) => {
|
|
511
521
|
if (event.t === 'd' || event.t === 'r') {
|
|
512
522
|
fullText += event.text || ''
|
|
523
|
+
} else if (event.t === 'reset') {
|
|
524
|
+
fullText = event.text || ''
|
|
525
|
+
heartbeatToolEvents.length = 0
|
|
526
|
+
toolCallCounter = 0
|
|
513
527
|
} else if (event.t === 'md') {
|
|
514
528
|
// metadata only
|
|
515
529
|
} else if (event.t === 'tool_call') {
|
package/src/types/index.ts
CHANGED
|
@@ -3,6 +3,8 @@ export interface MessageToolEvent {
|
|
|
3
3
|
input: string
|
|
4
4
|
output?: string
|
|
5
5
|
error?: boolean
|
|
6
|
+
/** Internal correlation token for matching streaming tool calls/results. */
|
|
7
|
+
toolCallId?: string
|
|
6
8
|
}
|
|
7
9
|
|
|
8
10
|
export interface Message {
|
|
@@ -20,6 +22,8 @@ export interface Message {
|
|
|
20
22
|
suggestions?: string[]
|
|
21
23
|
replyToId?: string
|
|
22
24
|
source?: MessageSource
|
|
25
|
+
/** Persist in the UI transcript, but exclude from normal model history. */
|
|
26
|
+
historyExcluded?: boolean
|
|
23
27
|
/** True while the message is still being streamed — cleared on final persist. */
|
|
24
28
|
streaming?: boolean
|
|
25
29
|
}
|
|
@@ -45,6 +49,52 @@ export interface SessionArchiveState {
|
|
|
45
49
|
exportPath?: string | null
|
|
46
50
|
}
|
|
47
51
|
|
|
52
|
+
export interface CanvasMetricItem {
|
|
53
|
+
label: string
|
|
54
|
+
value: string
|
|
55
|
+
detail?: string
|
|
56
|
+
tone?: 'default' | 'positive' | 'negative' | 'warning'
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface CanvasCardItem {
|
|
60
|
+
title: string
|
|
61
|
+
body?: string
|
|
62
|
+
meta?: string
|
|
63
|
+
tone?: 'default' | 'positive' | 'negative' | 'warning'
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface CanvasActionItem {
|
|
67
|
+
label: string
|
|
68
|
+
href?: string
|
|
69
|
+
note?: string
|
|
70
|
+
intent?: 'primary' | 'secondary' | 'success' | 'danger'
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export interface CanvasTableData {
|
|
74
|
+
columns: string[]
|
|
75
|
+
rows: Array<Array<string | number | boolean | null>>
|
|
76
|
+
caption?: string
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export type CanvasBlock =
|
|
80
|
+
| { type: 'markdown'; title?: string; markdown: string }
|
|
81
|
+
| { type: 'metrics'; title?: string; items: CanvasMetricItem[] }
|
|
82
|
+
| { type: 'cards'; title?: string; items: CanvasCardItem[] }
|
|
83
|
+
| { type: 'table'; title?: string; table: CanvasTableData }
|
|
84
|
+
| { type: 'code'; title?: string; code: string; language?: string }
|
|
85
|
+
| { type: 'actions'; title?: string; items: CanvasActionItem[] }
|
|
86
|
+
|
|
87
|
+
export interface CanvasDocument {
|
|
88
|
+
kind: 'structured'
|
|
89
|
+
title?: string
|
|
90
|
+
subtitle?: string
|
|
91
|
+
theme?: 'slate' | 'sky' | 'emerald' | 'amber' | 'rose'
|
|
92
|
+
blocks: CanvasBlock[]
|
|
93
|
+
updatedAt?: number | null
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export type CanvasContent = string | CanvasDocument | null
|
|
97
|
+
|
|
48
98
|
export type ProviderType = 'claude-cli' | 'codex-cli' | 'opencode-cli' | 'openai' | 'ollama' | 'anthropic' | 'openclaw' | 'google' | 'deepseek' | 'groq' | 'together' | 'mistral' | 'xai' | 'fireworks'
|
|
49
99
|
|
|
50
100
|
export interface ProviderInfo {
|
|
@@ -106,6 +156,7 @@ export interface Session {
|
|
|
106
156
|
}
|
|
107
157
|
messages: Message[]
|
|
108
158
|
createdAt: number
|
|
159
|
+
updatedAt?: number | null
|
|
109
160
|
lastActiveAt: number
|
|
110
161
|
active?: boolean
|
|
111
162
|
sessionType?: SessionType
|
|
@@ -117,6 +168,9 @@ export interface Session {
|
|
|
117
168
|
heartbeatEnabled?: boolean | null
|
|
118
169
|
heartbeatIntervalSec?: number | null
|
|
119
170
|
heartbeatTarget?: 'last' | 'none' | string | null
|
|
171
|
+
memoryScopeMode?: 'auto' | 'all' | 'global' | 'agent' | 'session' | 'project' | null
|
|
172
|
+
memoryTierPreference?: 'working' | 'durable' | 'archive' | 'blended' | null
|
|
173
|
+
projectId?: string | null
|
|
120
174
|
sessionResetMode?: SessionResetMode | null
|
|
121
175
|
sessionIdleTimeoutSec?: number | null
|
|
122
176
|
sessionMaxAgeSec?: number | null
|
|
@@ -176,7 +230,7 @@ export interface Session {
|
|
|
176
230
|
vibe?: string
|
|
177
231
|
theme?: string
|
|
178
232
|
avatar?: string
|
|
179
|
-
canvasContent?:
|
|
233
|
+
canvasContent?: CanvasContent
|
|
180
234
|
}
|
|
181
235
|
|
|
182
236
|
export type Sessions = Record<string, Session>
|
|
@@ -204,7 +258,15 @@ export type SessionTool =
|
|
|
204
258
|
|
|
205
259
|
// --- Approvals ---
|
|
206
260
|
|
|
207
|
-
export type ApprovalCategory =
|
|
261
|
+
export type ApprovalCategory =
|
|
262
|
+
| 'tool_access'
|
|
263
|
+
| 'wallet_transfer'
|
|
264
|
+
| 'wallet_action'
|
|
265
|
+
| 'plugin_scaffold'
|
|
266
|
+
| 'plugin_install'
|
|
267
|
+
| 'task_tool'
|
|
268
|
+
| 'human_loop'
|
|
269
|
+
| 'connector_sender'
|
|
208
270
|
|
|
209
271
|
export interface ApprovalRequest {
|
|
210
272
|
id: string
|
|
@@ -285,7 +347,14 @@ export interface PluginHooks {
|
|
|
285
347
|
onMessage?: (ctx: { session: Session; message: Message }) => Promise<void> | void
|
|
286
348
|
|
|
287
349
|
// Post-turn hook — fires after a full chat exchange (user message → agent response)
|
|
288
|
-
afterChatTurn?: (ctx: {
|
|
350
|
+
afterChatTurn?: (ctx: {
|
|
351
|
+
session: Session
|
|
352
|
+
message: string
|
|
353
|
+
response: string
|
|
354
|
+
source: string
|
|
355
|
+
internal: boolean
|
|
356
|
+
toolEvents?: MessageToolEvent[]
|
|
357
|
+
}) => Promise<void> | void
|
|
289
358
|
|
|
290
359
|
// Orchestration & Swarm Hooks
|
|
291
360
|
onTaskComplete?: (ctx: { taskId: string; result: unknown }) => Promise<void> | void
|
|
@@ -303,12 +372,45 @@ export interface PluginHooks {
|
|
|
303
372
|
|
|
304
373
|
// Operating guidance — returns operational hints for the agent when this plugin is active
|
|
305
374
|
getOperatingGuidance?: () => string | string[] | null | undefined
|
|
375
|
+
|
|
376
|
+
// Approval guidance — returns approval-scoped instructions when this plugin is active
|
|
377
|
+
getApprovalGuidance?: (ctx: {
|
|
378
|
+
approval: ApprovalRequest
|
|
379
|
+
phase: 'request' | 'resume' | 'connector_reminder'
|
|
380
|
+
approved?: boolean
|
|
381
|
+
}) => string | string[] | null | undefined
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
export interface PluginToolPlanning {
|
|
385
|
+
/**
|
|
386
|
+
* Capability tags that the harness can use for prompt guidance and tool routing.
|
|
387
|
+
* Examples: research.search, research.fetch, browser.capture, artifact.pdf,
|
|
388
|
+
* delivery.media, delivery.voice_note.
|
|
389
|
+
*/
|
|
390
|
+
capabilities?: string[]
|
|
391
|
+
/**
|
|
392
|
+
* Concrete usage guidance that should be injected into the system prompt when
|
|
393
|
+
* this tool is enabled.
|
|
394
|
+
*/
|
|
395
|
+
disciplineGuidance?: string[]
|
|
396
|
+
/**
|
|
397
|
+
* Optional natural-language cues that indicate when this tool should be
|
|
398
|
+
* preferred or explicitly invoked. These are declarative hints so the harness
|
|
399
|
+
* does not need to hard-code every plugin-specific workflow centrally.
|
|
400
|
+
*/
|
|
401
|
+
requestMatchers?: Array<{
|
|
402
|
+
capability?: string
|
|
403
|
+
patterns?: string[]
|
|
404
|
+
requireLiteralUrl?: boolean
|
|
405
|
+
forbidLiteralUrl?: boolean
|
|
406
|
+
}>
|
|
306
407
|
}
|
|
307
408
|
|
|
308
409
|
export interface PluginToolDef {
|
|
309
410
|
name: string
|
|
310
411
|
description: string
|
|
311
412
|
parameters: Record<string, unknown>
|
|
413
|
+
planning?: PluginToolPlanning
|
|
312
414
|
execute: (args: Record<string, unknown>, ctx: { session: Session; message: string }) => Promise<string | object> | string | object
|
|
313
415
|
}
|
|
314
416
|
|
|
@@ -404,7 +506,10 @@ export interface PluginMeta {
|
|
|
404
506
|
isBuiltin?: boolean
|
|
405
507
|
author?: string
|
|
406
508
|
version?: string
|
|
407
|
-
source?: 'local' | 'marketplace'
|
|
509
|
+
source?: 'local' | 'manual' | 'marketplace'
|
|
510
|
+
sourceLabel?: PluginPublisherSource
|
|
511
|
+
installSource?: PluginInstallSource
|
|
512
|
+
sourceUrl?: string
|
|
408
513
|
openclaw?: boolean
|
|
409
514
|
failureCount?: number
|
|
410
515
|
lastFailureAt?: number
|
|
@@ -427,6 +532,26 @@ export interface PluginMeta {
|
|
|
427
532
|
dependencyInstalledAt?: number
|
|
428
533
|
}
|
|
429
534
|
|
|
535
|
+
export type PluginPublisherSource =
|
|
536
|
+
| 'builtin'
|
|
537
|
+
| 'local'
|
|
538
|
+
| 'manual'
|
|
539
|
+
| 'swarmclaw'
|
|
540
|
+
| 'swarmforge'
|
|
541
|
+
| 'clawhub'
|
|
542
|
+
|
|
543
|
+
export type PluginCatalogSource =
|
|
544
|
+
| 'swarmclaw'
|
|
545
|
+
| 'swarmclaw-site'
|
|
546
|
+
| 'swarmforge'
|
|
547
|
+
| 'clawhub'
|
|
548
|
+
|
|
549
|
+
export type PluginInstallSource =
|
|
550
|
+
| 'builtin'
|
|
551
|
+
| 'local'
|
|
552
|
+
| 'manual'
|
|
553
|
+
| PluginCatalogSource
|
|
554
|
+
|
|
430
555
|
export type PluginPackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun'
|
|
431
556
|
export type PluginDependencyInstallStatus = 'none' | 'ready' | 'installing' | 'installed' | 'error'
|
|
432
557
|
|
|
@@ -437,18 +562,20 @@ export interface MarketplacePlugin {
|
|
|
437
562
|
author: string
|
|
438
563
|
version: string
|
|
439
564
|
url: string
|
|
440
|
-
source?:
|
|
565
|
+
source?: PluginPublisherSource
|
|
566
|
+
catalogSource?: PluginCatalogSource
|
|
441
567
|
tags?: string[]
|
|
442
568
|
openclaw?: boolean
|
|
443
569
|
downloads?: number
|
|
444
570
|
}
|
|
445
571
|
|
|
446
572
|
export interface SSEEvent {
|
|
447
|
-
t: 'd' | 'md' | 'r' | 'done' | 'err' | 'tool_call' | 'tool_result' | 'status' | 'thinking' | 'cr_agent_start' | 'cr_agent_done'
|
|
573
|
+
t: 'd' | 'md' | 'r' | 'done' | 'err' | 'tool_call' | 'tool_result' | 'status' | 'thinking' | 'reset' | 'cr_agent_start' | 'cr_agent_done'
|
|
448
574
|
text?: string
|
|
449
575
|
toolName?: string
|
|
450
576
|
toolInput?: string
|
|
451
577
|
toolOutput?: string
|
|
578
|
+
toolCallId?: string
|
|
452
579
|
agentId?: string
|
|
453
580
|
agentName?: string
|
|
454
581
|
}
|
|
@@ -542,10 +669,16 @@ export interface Agent {
|
|
|
542
669
|
pinned?: boolean
|
|
543
670
|
lastUsedAt?: number
|
|
544
671
|
totalCost?: number
|
|
672
|
+
disabled?: boolean
|
|
545
673
|
trashedAt?: number
|
|
546
674
|
openclawSkillMode?: SkillAllowlistMode
|
|
547
675
|
openclawAllowedSkills?: string[]
|
|
676
|
+
walletIds?: string[]
|
|
677
|
+
activeWalletId?: string | null
|
|
678
|
+
/** @deprecated Use walletIds + activeWalletId */
|
|
548
679
|
walletId?: string | null
|
|
680
|
+
responseStyle?: 'concise' | 'normal' | 'detailed' | null
|
|
681
|
+
responseMaxChars?: number | null
|
|
549
682
|
monthlyBudget?: number | null
|
|
550
683
|
dailyBudget?: number | null
|
|
551
684
|
hourlyBudget?: number | null
|
|
@@ -565,7 +698,7 @@ export interface Agent {
|
|
|
565
698
|
|
|
566
699
|
// --- Agent Wallets ---
|
|
567
700
|
|
|
568
|
-
export type WalletChain = 'solana'
|
|
701
|
+
export type WalletChain = 'solana' | 'ethereum'
|
|
569
702
|
|
|
570
703
|
export interface AgentWallet {
|
|
571
704
|
id: string
|
|
@@ -574,13 +707,41 @@ export interface AgentWallet {
|
|
|
574
707
|
publicKey: string
|
|
575
708
|
encryptedPrivateKey: string // AES-256-GCM via encryptKey()
|
|
576
709
|
label?: string
|
|
577
|
-
|
|
578
|
-
|
|
710
|
+
spendingLimitAtomic?: string
|
|
711
|
+
dailyLimitAtomic?: string
|
|
712
|
+
/** @deprecated Use spendingLimitAtomic */
|
|
713
|
+
spendingLimitLamports?: number
|
|
714
|
+
/** @deprecated Use dailyLimitAtomic */
|
|
715
|
+
dailyLimitLamports?: number
|
|
579
716
|
requireApproval: boolean // default true
|
|
580
717
|
createdAt: number
|
|
581
718
|
updatedAt: number
|
|
582
719
|
}
|
|
583
720
|
|
|
721
|
+
export interface WalletAssetBalance {
|
|
722
|
+
id: string
|
|
723
|
+
chain: WalletChain
|
|
724
|
+
networkId: string
|
|
725
|
+
networkLabel: string
|
|
726
|
+
symbol: string
|
|
727
|
+
name?: string
|
|
728
|
+
decimals: number
|
|
729
|
+
balanceAtomic: string
|
|
730
|
+
balanceFormatted?: string
|
|
731
|
+
balanceDisplay?: string
|
|
732
|
+
isNative: boolean
|
|
733
|
+
contractAddress?: string
|
|
734
|
+
tokenMint?: string
|
|
735
|
+
explorerUrl?: string
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
export interface WalletPortfolioSummary {
|
|
739
|
+
totalAssets: number
|
|
740
|
+
nonZeroAssets: number
|
|
741
|
+
tokenAssets: number
|
|
742
|
+
networkCount: number
|
|
743
|
+
}
|
|
744
|
+
|
|
584
745
|
export type WalletTransactionType = 'send' | 'receive' | 'swap'
|
|
585
746
|
export type WalletTransactionStatus = 'pending_approval' | 'pending' | 'confirmed' | 'failed' | 'denied'
|
|
586
747
|
|
|
@@ -593,19 +754,25 @@ export interface WalletTransaction {
|
|
|
593
754
|
signature: string
|
|
594
755
|
fromAddress: string
|
|
595
756
|
toAddress: string
|
|
596
|
-
|
|
757
|
+
amountAtomic?: string
|
|
758
|
+
feeAtomic?: string
|
|
759
|
+
/** @deprecated Use amountAtomic */
|
|
760
|
+
amountLamports?: number
|
|
761
|
+
/** @deprecated Use feeAtomic */
|
|
597
762
|
feeLamports?: number
|
|
598
763
|
status: WalletTransactionStatus
|
|
599
764
|
memo?: string // agent's reason for tx
|
|
600
765
|
approvedBy?: 'user' | 'auto'
|
|
601
|
-
tokenMint?: string // null = native
|
|
766
|
+
tokenMint?: string // null = native chain asset
|
|
602
767
|
timestamp: number
|
|
603
768
|
}
|
|
604
769
|
|
|
605
770
|
export interface WalletBalanceSnapshot {
|
|
606
771
|
id: string
|
|
607
772
|
walletId: string
|
|
608
|
-
|
|
773
|
+
balanceAtomic?: string
|
|
774
|
+
/** @deprecated Use balanceAtomic */
|
|
775
|
+
balanceLamports?: number
|
|
609
776
|
timestamp: number
|
|
610
777
|
}
|
|
611
778
|
|
|
@@ -642,6 +809,11 @@ export interface Schedule {
|
|
|
642
809
|
runNumber?: number
|
|
643
810
|
createdByAgentId?: string | null
|
|
644
811
|
createdInSessionId?: string | null
|
|
812
|
+
followupConnectorId?: string | null
|
|
813
|
+
followupChannelId?: string | null
|
|
814
|
+
followupThreadId?: string | null
|
|
815
|
+
followupSenderId?: string | null
|
|
816
|
+
followupSenderName?: string | null
|
|
645
817
|
createdAt: number
|
|
646
818
|
updatedAt?: number
|
|
647
819
|
}
|
|
@@ -934,6 +1106,15 @@ export interface Project {
|
|
|
934
1106
|
name: string
|
|
935
1107
|
description: string
|
|
936
1108
|
color?: string
|
|
1109
|
+
objective?: string
|
|
1110
|
+
audience?: string
|
|
1111
|
+
priorities?: string[]
|
|
1112
|
+
openObjectives?: string[]
|
|
1113
|
+
capabilityHints?: string[]
|
|
1114
|
+
credentialRequirements?: string[]
|
|
1115
|
+
successMetrics?: string[]
|
|
1116
|
+
heartbeatPrompt?: string
|
|
1117
|
+
heartbeatIntervalSec?: number
|
|
937
1118
|
createdAt: number
|
|
938
1119
|
updatedAt: number
|
|
939
1120
|
}
|
|
@@ -1065,6 +1246,8 @@ export interface AppSettings {
|
|
|
1065
1246
|
capabilityBlockedTools?: string[]
|
|
1066
1247
|
capabilityBlockedCategories?: string[]
|
|
1067
1248
|
capabilityAllowedTools?: string[]
|
|
1249
|
+
taskManagementEnabled?: boolean
|
|
1250
|
+
projectManagementEnabled?: boolean
|
|
1068
1251
|
// Memory governance
|
|
1069
1252
|
memoryWorkingTtlHours?: number
|
|
1070
1253
|
memoryDefaultConfidence?: number
|
|
@@ -1128,6 +1311,7 @@ export interface OrchestratorSecret {
|
|
|
1128
1311
|
encryptedValue: string
|
|
1129
1312
|
scope: 'global' | 'agent'
|
|
1130
1313
|
agentIds: string[] // if scope === 'agent', which agents can use it
|
|
1314
|
+
projectId?: string
|
|
1131
1315
|
createdAt: number
|
|
1132
1316
|
updatedAt: number
|
|
1133
1317
|
}
|
|
@@ -1207,6 +1391,8 @@ export interface OpenClawDeploymentConfig {
|
|
|
1207
1391
|
useCase?: OpenClawUseCaseTemplate | null
|
|
1208
1392
|
exposure?: OpenClawExposurePreset | null
|
|
1209
1393
|
managedBy?: 'swarmclaw' | 'manual' | null
|
|
1394
|
+
localInstanceId?: string | null
|
|
1395
|
+
localPort?: number | null
|
|
1210
1396
|
targetHost?: string | null
|
|
1211
1397
|
sshHost?: string | null
|
|
1212
1398
|
sshUser?: string | null
|
|
@@ -1334,6 +1520,7 @@ export interface AgentPackEntry {
|
|
|
1334
1520
|
tools?: string[]
|
|
1335
1521
|
plugins?: string[]
|
|
1336
1522
|
capabilities?: string[]
|
|
1523
|
+
elevenLabsVoiceId?: string | null
|
|
1337
1524
|
soul?: string
|
|
1338
1525
|
systemPrompt?: string
|
|
1339
1526
|
}
|
|
@@ -1395,12 +1582,32 @@ export interface Skill {
|
|
|
1395
1582
|
description?: string
|
|
1396
1583
|
sourceUrl?: string
|
|
1397
1584
|
sourceFormat?: 'openclaw' | 'plain'
|
|
1585
|
+
author?: string
|
|
1586
|
+
tags?: string[]
|
|
1587
|
+
version?: string
|
|
1588
|
+
homepage?: string
|
|
1589
|
+
primaryEnv?: string | null
|
|
1590
|
+
skillKey?: string | null
|
|
1591
|
+
always?: boolean
|
|
1592
|
+
installOptions?: SkillInstallOption[]
|
|
1593
|
+
skillRequirements?: SkillRequirements
|
|
1594
|
+
detectedEnvVars?: string[]
|
|
1595
|
+
security?: SkillSecuritySummary | null
|
|
1596
|
+
frontmatter?: Record<string, unknown> | null
|
|
1398
1597
|
scope?: 'global' | 'agent'
|
|
1399
1598
|
agentIds?: string[]
|
|
1400
1599
|
createdAt: number
|
|
1401
1600
|
updatedAt: number
|
|
1402
1601
|
}
|
|
1403
1602
|
|
|
1603
|
+
export interface SkillSecuritySummary {
|
|
1604
|
+
level: 'low' | 'medium' | 'high'
|
|
1605
|
+
notes: string[]
|
|
1606
|
+
detectedEnvVars?: string[]
|
|
1607
|
+
missingDeclarations?: string[]
|
|
1608
|
+
installCommands?: string[]
|
|
1609
|
+
}
|
|
1610
|
+
|
|
1404
1611
|
// --- Connector Health Events ---
|
|
1405
1612
|
|
|
1406
1613
|
export type ConnectorHealthEventType = 'started' | 'stopped' | 'error' | 'reconnected' | 'disconnected'
|
|
@@ -1415,7 +1622,20 @@ export interface ConnectorHealthEvent {
|
|
|
1415
1622
|
|
|
1416
1623
|
// --- Connectors (Chat Platform Bridges) ---
|
|
1417
1624
|
|
|
1418
|
-
export type ConnectorPlatform =
|
|
1625
|
+
export type ConnectorPlatform =
|
|
1626
|
+
| 'discord'
|
|
1627
|
+
| 'telegram'
|
|
1628
|
+
| 'slack'
|
|
1629
|
+
| 'whatsapp'
|
|
1630
|
+
| 'openclaw'
|
|
1631
|
+
| 'bluebubbles'
|
|
1632
|
+
| 'signal'
|
|
1633
|
+
| 'teams'
|
|
1634
|
+
| 'googlechat'
|
|
1635
|
+
| 'matrix'
|
|
1636
|
+
| 'email'
|
|
1637
|
+
| 'webchat'
|
|
1638
|
+
| 'mockmail'
|
|
1419
1639
|
export type ConnectorStatus = 'stopped' | 'running' | 'error'
|
|
1420
1640
|
|
|
1421
1641
|
export interface MessageSource {
|
|
@@ -1502,6 +1722,11 @@ export interface BoardTask {
|
|
|
1502
1722
|
images?: string[]
|
|
1503
1723
|
createdByAgentId?: string | null
|
|
1504
1724
|
createdInSessionId?: string | null
|
|
1725
|
+
followupConnectorId?: string | null
|
|
1726
|
+
followupChannelId?: string | null
|
|
1727
|
+
followupThreadId?: string | null
|
|
1728
|
+
followupSenderId?: string | null
|
|
1729
|
+
followupSenderName?: string | null
|
|
1505
1730
|
delegatedByAgentId?: string | null
|
|
1506
1731
|
delegatedFromTaskId?: string | null
|
|
1507
1732
|
delegationDepth?: number | null
|
|
@@ -1519,10 +1744,20 @@ export interface BoardTask {
|
|
|
1519
1744
|
totalRuns?: number
|
|
1520
1745
|
totalCompleted?: number
|
|
1521
1746
|
totalFailed?: number
|
|
1522
|
-
sourceType?: 'schedule' | 'delegation' | 'manual'
|
|
1747
|
+
sourceType?: 'schedule' | 'delegation' | 'manual' | 'import'
|
|
1523
1748
|
sourceScheduleId?: string | null
|
|
1524
1749
|
sourceScheduleName?: string | null
|
|
1525
1750
|
sourceScheduleKey?: string | null
|
|
1751
|
+
externalSource?: {
|
|
1752
|
+
source: string
|
|
1753
|
+
id?: string | null
|
|
1754
|
+
repo?: string | null
|
|
1755
|
+
number?: number | null
|
|
1756
|
+
state?: string | null
|
|
1757
|
+
labels?: string[]
|
|
1758
|
+
assignee?: string | null
|
|
1759
|
+
url?: string | null
|
|
1760
|
+
} | null
|
|
1526
1761
|
deadLetteredAt?: number | null
|
|
1527
1762
|
cliResumeId?: string | null
|
|
1528
1763
|
cliProvider?: string | null
|