mirror of
https://github.com/Kilo-Org/kilocode.git
synced 2026-08-29 03:44:06 +08:00
fix(vscode): persist both response identifiers
This commit is contained in:
@@ -28,19 +28,22 @@ function vercelID(message: Message | undefined) {
|
||||
)?.[1]
|
||||
}
|
||||
|
||||
function identifiers(parts: Part[]) {
|
||||
const part = parts.findLast(
|
||||
function identifiers(
|
||||
message: Message | undefined,
|
||||
parts: Input["parts"],
|
||||
): Pick<TerminalState, "vercelID" | "generationID"> {
|
||||
if (message?.role !== "assistant" || message.finish !== "other") return {}
|
||||
const part = (parts?.(message.id) ?? []).findLast(
|
||||
(item): item is Extract<Part, { type: "step-finish" }> => item.type === "step-finish" && item.reason === "other",
|
||||
)
|
||||
return { vercelID: part?.vercelID, generationID: part?.generationID }
|
||||
return { vercelID: part?.vercelID ?? vercelID(message), generationID: part?.generationID }
|
||||
}
|
||||
|
||||
export function terminal(input: Input): TerminalState | undefined {
|
||||
if (!input.reason) return undefined
|
||||
const last = input.messages[input.messages.length - 1]
|
||||
const finish = last?.role === "assistant" ? last.finish : undefined
|
||||
const requestID = vercelID(last)
|
||||
const ids = finish === "other" && last?.role === "assistant" ? identifiers(input.parts?.(last.id) ?? []) : {}
|
||||
const ids = identifiers(last, input.parts)
|
||||
const remaining = input.todos.filter((item) => item.status !== "completed" && item.status !== "cancelled").length
|
||||
|
||||
if (input.reason === "interrupted") return { kind: "interrupted", tone: "warning", finish, remaining }
|
||||
@@ -49,10 +52,10 @@ export function terminal(input: Input): TerminalState | undefined {
|
||||
return { kind: "error", tone: "critical", finish, remaining }
|
||||
}
|
||||
if (finish === "length") return { kind: "limit", tone: "warning", finish, remaining }
|
||||
if (finish === "unknown") return { kind: "unknown", tone: "warning", finish, remaining, vercelID: requestID }
|
||||
if (finish === "unknown") return { kind: "unknown", tone: "warning", finish, remaining, vercelID: vercelID(last) }
|
||||
if (finish === "content-filter") return { kind: "filtered", tone: "warning", finish, remaining }
|
||||
if (finish === "other") {
|
||||
return { kind: "unexpected", tone: "warning", finish, ...ids, vercelID: ids.vercelID ?? requestID, remaining }
|
||||
return { kind: "unexpected", tone: "warning", finish, ...ids, remaining }
|
||||
}
|
||||
return undefined
|
||||
}
|
||||
|
||||
@@ -575,7 +575,7 @@ describe("session processor empty tool-calls", () => {
|
||||
LLMEvent.stepStart({ index: 0 }),
|
||||
LLMEvent.stepFinish({
|
||||
index: 0,
|
||||
reason: "stop",
|
||||
reason: "other",
|
||||
usage: usage(),
|
||||
providerMetadata: {
|
||||
kilocode: { routedModelID: "openai/gpt-5.5-20260423" },
|
||||
@@ -587,7 +587,7 @@ describe("session processor empty tool-calls", () => {
|
||||
},
|
||||
},
|
||||
}),
|
||||
LLMEvent.finish({ reason: "stop", usage: usage() }),
|
||||
LLMEvent.finish({ reason: "other", usage: usage() }),
|
||||
)
|
||||
|
||||
const chat = yield* session.create({})
|
||||
|
||||
@@ -6,9 +6,6 @@ export type ClientOptions = {
|
||||
|
||||
export type Event =
|
||||
| EventServerInstanceDisposed
|
||||
| EventSessionTurnOpen
|
||||
| EventSessionTurnClose
|
||||
| EventSessionQueueChanged
|
||||
| EventSessionNetworkAsked
|
||||
| EventSessionNetworkReplied
|
||||
| EventSessionNetworkRejected
|
||||
@@ -18,6 +15,8 @@ export type Event =
|
||||
| EventInteractiveTerminalUpdated
|
||||
| EventInteractiveTerminalData
|
||||
| EventInteractiveTerminalDeleted
|
||||
| EventSessionTurnOpen
|
||||
| EventSessionTurnClose
|
||||
| EventSandboxStatusChanged
|
||||
| EventSuggestionShown
|
||||
| EventSuggestionAccepted
|
||||
@@ -27,8 +26,8 @@ export type Event =
|
||||
| EventKilocodeAgentManagerCancelled
|
||||
| EventKilocodeNotebookRequested
|
||||
| EventKilocodeNotebookCancelled
|
||||
| EventKiloSessionsRemoteStatusChanged
|
||||
| EventLspClientDiagnostics
|
||||
| EventKiloSessionsRemoteStatusChanged
|
||||
| EventMemoryStatus1
|
||||
| EventMemoryUpdated1
|
||||
| EventMemoryError1
|
||||
@@ -114,8 +113,8 @@ export type Event =
|
||||
| EventSessionCompacted
|
||||
| EventCommandExecuted
|
||||
| EventProjectUpdated
|
||||
| EventVcsBranchUpdated
|
||||
| EventLspUpdated
|
||||
| EventVcsBranchUpdated
|
||||
| EventWorkspaceReady
|
||||
| EventWorkspaceFailed
|
||||
| EventWorkspaceStatus
|
||||
@@ -1058,9 +1057,6 @@ export type GlobalEvent = {
|
||||
workspace?: string
|
||||
payload:
|
||||
| EventServerInstanceDisposed
|
||||
| EventSessionTurnOpen
|
||||
| EventSessionTurnClose
|
||||
| EventSessionQueueChanged
|
||||
| EventSessionNetworkAsked
|
||||
| EventSessionNetworkReplied
|
||||
| EventSessionNetworkRejected
|
||||
@@ -1070,6 +1066,8 @@ export type GlobalEvent = {
|
||||
| EventInteractiveTerminalUpdated
|
||||
| EventInteractiveTerminalData
|
||||
| EventInteractiveTerminalDeleted
|
||||
| EventSessionTurnOpen
|
||||
| EventSessionTurnClose
|
||||
| EventSandboxStatusChanged
|
||||
| EventSuggestionShown
|
||||
| EventSuggestionAccepted
|
||||
@@ -1079,8 +1077,8 @@ export type GlobalEvent = {
|
||||
| EventKilocodeAgentManagerCancelled
|
||||
| EventKilocodeNotebookRequested
|
||||
| EventKilocodeNotebookCancelled
|
||||
| EventKiloSessionsRemoteStatusChanged
|
||||
| EventLspClientDiagnostics
|
||||
| EventKiloSessionsRemoteStatusChanged
|
||||
| EventMemoryStatus
|
||||
| EventMemoryUpdated
|
||||
| EventMemoryError
|
||||
@@ -1166,8 +1164,8 @@ export type GlobalEvent = {
|
||||
| EventSessionCompacted
|
||||
| EventCommandExecuted
|
||||
| EventProjectUpdated
|
||||
| EventVcsBranchUpdated
|
||||
| EventLspUpdated
|
||||
| EventVcsBranchUpdated
|
||||
| EventWorkspaceReady
|
||||
| EventWorkspaceFailed
|
||||
| EventWorkspaceStatus
|
||||
@@ -3533,33 +3531,6 @@ export type EventServerInstanceDisposed = {
|
||||
}
|
||||
}
|
||||
|
||||
export type EventSessionTurnOpen = {
|
||||
id: string
|
||||
type: "session.turn.open"
|
||||
properties: {
|
||||
sessionID: string
|
||||
}
|
||||
}
|
||||
|
||||
export type EventSessionTurnClose = {
|
||||
id: string
|
||||
type: "session.turn.close"
|
||||
properties: {
|
||||
sessionID: string
|
||||
parentID?: string
|
||||
reason: "completed" | "error" | "interrupted"
|
||||
}
|
||||
}
|
||||
|
||||
export type EventSessionQueueChanged = {
|
||||
id: string
|
||||
type: "session.queue.changed"
|
||||
properties: {
|
||||
sessionID: string
|
||||
queued: Array<string>
|
||||
}
|
||||
}
|
||||
|
||||
export type EventSessionNetworkAsked = {
|
||||
id: string
|
||||
type: "session.network.asked"
|
||||
@@ -3641,6 +3612,24 @@ export type EventInteractiveTerminalDeleted = {
|
||||
}
|
||||
}
|
||||
|
||||
export type EventSessionTurnOpen = {
|
||||
id: string
|
||||
type: "session.turn.open"
|
||||
properties: {
|
||||
sessionID: string
|
||||
}
|
||||
}
|
||||
|
||||
export type EventSessionTurnClose = {
|
||||
id: string
|
||||
type: "session.turn.close"
|
||||
properties: {
|
||||
sessionID: string
|
||||
parentID?: string
|
||||
reason: "completed" | "error" | "interrupted"
|
||||
}
|
||||
}
|
||||
|
||||
export type EventSandboxStatusChanged = {
|
||||
id: string
|
||||
type: "sandbox.status.changed"
|
||||
@@ -3744,15 +3733,6 @@ export type EventKilocodeNotebookCancelled = {
|
||||
}
|
||||
}
|
||||
|
||||
export type EventKiloSessionsRemoteStatusChanged = {
|
||||
id: string
|
||||
type: "kilo-sessions.remote-status-changed"
|
||||
properties: {
|
||||
enabled: boolean
|
||||
connected: boolean
|
||||
}
|
||||
}
|
||||
|
||||
export type EventLspClientDiagnostics = {
|
||||
id: string
|
||||
type: "lsp.client.diagnostics"
|
||||
@@ -3762,6 +3742,15 @@ export type EventLspClientDiagnostics = {
|
||||
}
|
||||
}
|
||||
|
||||
export type EventKiloSessionsRemoteStatusChanged = {
|
||||
id: string
|
||||
type: "kilo-sessions.remote-status-changed"
|
||||
properties: {
|
||||
enabled: boolean
|
||||
connected: boolean
|
||||
}
|
||||
}
|
||||
|
||||
export type EventMemoryStatus = {
|
||||
id: string
|
||||
type: "memory.status"
|
||||
@@ -4958,14 +4947,6 @@ export type EventProjectUpdated = {
|
||||
}
|
||||
}
|
||||
|
||||
export type EventVcsBranchUpdated = {
|
||||
id: string
|
||||
type: "vcs.branch.updated"
|
||||
properties: {
|
||||
branch?: string
|
||||
}
|
||||
}
|
||||
|
||||
export type EventLspUpdated = {
|
||||
id: string
|
||||
type: "lsp.updated"
|
||||
@@ -4974,6 +4955,14 @@ export type EventLspUpdated = {
|
||||
}
|
||||
}
|
||||
|
||||
export type EventVcsBranchUpdated = {
|
||||
id: string
|
||||
type: "vcs.branch.updated"
|
||||
properties: {
|
||||
branch?: string
|
||||
}
|
||||
}
|
||||
|
||||
export type EventWorkspaceReady = {
|
||||
id: string
|
||||
type: "workspace.ready"
|
||||
|
||||
+126
-164
@@ -23684,15 +23684,6 @@
|
||||
{
|
||||
"$ref": "#/components/schemas/EventServerInstanceDisposed"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventSessionTurnOpen"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventSessionTurnClose"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventSessionQueueChanged"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventSessionNetworkAsked"
|
||||
},
|
||||
@@ -23720,6 +23711,12 @@
|
||||
{
|
||||
"$ref": "#/components/schemas/EventInteractive_terminalDeleted"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventSessionTurnOpen"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventSessionTurnClose"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventSandboxStatusChanged"
|
||||
},
|
||||
@@ -23748,10 +23745,10 @@
|
||||
"$ref": "#/components/schemas/EventKilocodeNotebookCancelled"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventKilo-sessionsRemote-status-changed"
|
||||
"$ref": "#/components/schemas/EventLspClientDiagnostics"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventLspClientDiagnostics"
|
||||
"$ref": "#/components/schemas/EventKilo-sessionsRemote-status-changed"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventMemoryStatus1"
|
||||
@@ -24009,10 +24006,10 @@
|
||||
"$ref": "#/components/schemas/EventProjectUpdated"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventVcsBranchUpdated"
|
||||
"$ref": "#/components/schemas/EventLspUpdated"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventLspUpdated"
|
||||
"$ref": "#/components/schemas/EventVcsBranchUpdated"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventWorkspaceReady"
|
||||
@@ -26029,7 +26026,7 @@
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"start": {
|
||||
"type": "integer",
|
||||
"type": "number",
|
||||
"minimum": 0
|
||||
}
|
||||
},
|
||||
@@ -26105,11 +26102,11 @@
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"start": {
|
||||
"type": "integer",
|
||||
"type": "number",
|
||||
"minimum": 0
|
||||
},
|
||||
"end": {
|
||||
"type": "integer",
|
||||
"type": "number",
|
||||
"minimum": 0
|
||||
},
|
||||
"elapsed": {
|
||||
@@ -26873,15 +26870,6 @@
|
||||
{
|
||||
"$ref": "#/components/schemas/EventServerInstanceDisposed"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventSessionTurnOpen"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventSessionTurnClose"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventSessionQueueChanged"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventSessionNetworkAsked"
|
||||
},
|
||||
@@ -26909,6 +26897,12 @@
|
||||
{
|
||||
"$ref": "#/components/schemas/EventInteractive_terminalDeleted"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventSessionTurnOpen"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventSessionTurnClose"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventSandboxStatusChanged"
|
||||
},
|
||||
@@ -26937,10 +26931,10 @@
|
||||
"$ref": "#/components/schemas/EventKilocodeNotebookCancelled"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventKilo-sessionsRemote-status-changed"
|
||||
"$ref": "#/components/schemas/EventLspClientDiagnostics"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventLspClientDiagnostics"
|
||||
"$ref": "#/components/schemas/EventKilo-sessionsRemote-status-changed"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventMemoryStatus"
|
||||
@@ -27198,10 +27192,10 @@
|
||||
"$ref": "#/components/schemas/EventProjectUpdated"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventVcsBranchUpdated"
|
||||
"$ref": "#/components/schemas/EventLspUpdated"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventLspUpdated"
|
||||
"$ref": "#/components/schemas/EventVcsBranchUpdated"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/EventWorkspaceReady"
|
||||
@@ -34384,96 +34378,6 @@
|
||||
"required": ["id", "type", "properties"],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"EventSessionTurnOpen": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"enum": ["session.turn.open"]
|
||||
},
|
||||
"properties": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"sessionID": {
|
||||
"type": "string",
|
||||
"pattern": "^ses"
|
||||
}
|
||||
},
|
||||
"required": ["sessionID"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"required": ["id", "type", "properties"],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"EventSessionTurnClose": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"enum": ["session.turn.close"]
|
||||
},
|
||||
"properties": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"sessionID": {
|
||||
"type": "string",
|
||||
"pattern": "^ses"
|
||||
},
|
||||
"parentID": {
|
||||
"type": "string",
|
||||
"pattern": "^ses"
|
||||
},
|
||||
"reason": {
|
||||
"type": "string",
|
||||
"enum": ["completed", "error", "interrupted"]
|
||||
}
|
||||
},
|
||||
"required": ["sessionID", "reason"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"required": ["id", "type", "properties"],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"EventSessionQueueChanged": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"enum": ["session.queue.changed"]
|
||||
},
|
||||
"properties": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"sessionID": {
|
||||
"type": "string",
|
||||
"pattern": "^ses"
|
||||
},
|
||||
"queued": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"pattern": "^msg"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["sessionID", "queued"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"required": ["id", "type", "properties"],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"EventSessionNetworkAsked": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
@@ -34726,6 +34630,64 @@
|
||||
"required": ["id", "type", "properties"],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"EventSessionTurnOpen": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"enum": ["session.turn.open"]
|
||||
},
|
||||
"properties": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"sessionID": {
|
||||
"type": "string",
|
||||
"pattern": "^ses"
|
||||
}
|
||||
},
|
||||
"required": ["sessionID"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"required": ["id", "type", "properties"],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"EventSessionTurnClose": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"enum": ["session.turn.close"]
|
||||
},
|
||||
"properties": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"sessionID": {
|
||||
"type": "string",
|
||||
"pattern": "^ses"
|
||||
},
|
||||
"parentID": {
|
||||
"type": "string",
|
||||
"pattern": "^ses"
|
||||
},
|
||||
"reason": {
|
||||
"type": "string",
|
||||
"enum": ["completed", "error", "interrupted"]
|
||||
}
|
||||
},
|
||||
"required": ["sessionID", "reason"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"required": ["id", "type", "properties"],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"EventSandboxStatusChanged": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
@@ -35035,33 +34997,6 @@
|
||||
"required": ["id", "type", "properties"],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"EventKilo-sessionsRemote-status-changed": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"enum": ["kilo-sessions.remote-status-changed"]
|
||||
},
|
||||
"properties": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"connected": {
|
||||
"type": "boolean"
|
||||
}
|
||||
},
|
||||
"required": ["enabled", "connected"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"required": ["id", "type", "properties"],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"EventLspClientDiagnostics": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
@@ -35089,6 +35024,33 @@
|
||||
"required": ["id", "type", "properties"],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"EventKilo-sessionsRemote-status-changed": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"enum": ["kilo-sessions.remote-status-changed"]
|
||||
},
|
||||
"properties": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"connected": {
|
||||
"type": "boolean"
|
||||
}
|
||||
},
|
||||
"required": ["enabled", "connected"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"required": ["id", "type", "properties"],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"EventMemoryStatus": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
@@ -39648,6 +39610,24 @@
|
||||
"required": ["id", "type", "properties"],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"EventLspUpdated": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"enum": ["lsp.updated"]
|
||||
},
|
||||
"properties": {
|
||||
"type": "object",
|
||||
"properties": {}
|
||||
}
|
||||
},
|
||||
"required": ["id", "type", "properties"],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"EventVcsBranchUpdated": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
@@ -39671,24 +39651,6 @@
|
||||
"required": ["id", "type", "properties"],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"EventLspUpdated": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"enum": ["lsp.updated"]
|
||||
},
|
||||
"properties": {
|
||||
"type": "object",
|
||||
"properties": {}
|
||||
}
|
||||
},
|
||||
"required": ["id", "type", "properties"],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"EventWorkspaceReady": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
||||
Reference in New Issue
Block a user