@dxos/react-ui-trace 0.11.1 → 0.13.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 +1 -1
- package/dist/lib/index.mjs +1722 -561
- package/dist/lib/index.mjs.map +1 -1
- package/dist/lib/testing.mjs +3 -3
- package/dist/lib/testing.mjs.map +1 -1
- package/dist/lib/translations.mjs +5 -0
- package/dist/lib/translations.mjs.map +1 -1
- package/dist/types/src/components/Gantt/Gantt.d.ts +109 -24
- package/dist/types/src/components/Gantt/Gantt.d.ts.map +1 -1
- package/dist/types/src/components/Gantt/Gantt.stories.d.ts +73 -3
- package/dist/types/src/components/Gantt/Gantt.stories.d.ts.map +1 -1
- package/dist/types/src/components/Gantt/gantt-rows.d.ts +26 -0
- package/dist/types/src/components/Gantt/gantt-rows.d.ts.map +1 -0
- package/dist/types/src/components/Gantt/gantt-rows.test.d.ts +2 -0
- package/dist/types/src/components/Gantt/gantt-rows.test.d.ts.map +1 -0
- package/dist/types/src/components/Gantt/gantt-scale.d.ts +57 -0
- package/dist/types/src/components/Gantt/gantt-scale.d.ts.map +1 -0
- package/dist/types/src/components/Gantt/gantt-scale.test.d.ts +2 -0
- package/dist/types/src/components/Gantt/gantt-scale.test.d.ts.map +1 -0
- package/dist/types/src/components/Gantt/index.d.ts +2 -0
- package/dist/types/src/components/Gantt/index.d.ts.map +1 -1
- package/dist/types/src/components/Gantt/useEnter.d.ts +13 -0
- package/dist/types/src/components/Gantt/useEnter.d.ts.map +1 -0
- package/dist/types/src/components/Gantt/useRangeTween.d.ts +12 -0
- package/dist/types/src/components/Gantt/useRangeTween.d.ts.map +1 -0
- package/dist/types/src/components/ProcessTree/ProcessTree.d.ts +3 -3
- package/dist/types/src/components/ProcessTree/ProcessTree.d.ts.map +1 -1
- package/dist/types/src/components/ProcessTree/ProcessTree.stories.d.ts.map +1 -1
- package/dist/types/src/components/Timeline/Timeline.d.ts +10 -2
- package/dist/types/src/components/Timeline/Timeline.d.ts.map +1 -1
- package/dist/types/src/components/Timeline/Timeline.stories.d.ts +8 -4
- package/dist/types/src/components/Timeline/Timeline.stories.d.ts.map +1 -1
- package/dist/types/src/components/Timeline/timeline-layout.d.ts +35 -0
- package/dist/types/src/components/Timeline/timeline-layout.d.ts.map +1 -0
- package/dist/types/src/components/Timeline/timeline-layout.test.d.ts +2 -0
- package/dist/types/src/components/Timeline/timeline-layout.test.d.ts.map +1 -0
- package/dist/types/src/components/TracePanel/SpanTreeView.d.ts +15 -0
- package/dist/types/src/components/TracePanel/SpanTreeView.d.ts.map +1 -0
- package/dist/types/src/components/TracePanel/TracePanel.d.ts +3 -3
- package/dist/types/src/components/TracePanel/TracePanel.d.ts.map +1 -1
- package/dist/types/src/components/TracePanel/TracePanel.stories.d.ts +46 -0
- package/dist/types/src/components/TracePanel/TracePanel.stories.d.ts.map +1 -0
- package/dist/types/src/components/TracePanel/trace-filter.d.ts +7 -2
- package/dist/types/src/components/TracePanel/trace-filter.d.ts.map +1 -1
- package/dist/types/src/components/TracePanel/useTraceMenu.d.ts.map +1 -1
- package/dist/types/src/execution-graph/execution-graph.d.ts +1 -1
- package/dist/types/src/execution-graph/execution-graph.d.ts.map +1 -1
- package/dist/types/src/hooks/useExecutionGraph.d.ts +2 -2
- package/dist/types/src/hooks/useExecutionGraph.d.ts.map +1 -1
- package/dist/types/src/hooks/useSessionTimeline.d.ts +1 -1
- package/dist/types/src/hooks/useSessionTimeline.d.ts.map +1 -1
- package/dist/types/src/hooks/useTraceMessages.d.ts +1 -1
- package/dist/types/src/hooks/useTraceMessages.d.ts.map +1 -1
- package/dist/types/src/session-timeline/TaskHistory.stories.d.ts +12 -0
- package/dist/types/src/session-timeline/TaskHistory.stories.d.ts.map +1 -0
- package/dist/types/src/session-timeline/gantt-mapping.d.ts +14 -0
- package/dist/types/src/session-timeline/gantt-mapping.d.ts.map +1 -0
- package/dist/types/src/session-timeline/gantt-mapping.test.d.ts +2 -0
- package/dist/types/src/session-timeline/gantt-mapping.test.d.ts.map +1 -0
- package/dist/types/src/session-timeline/index.d.ts +1 -0
- package/dist/types/src/session-timeline/index.d.ts.map +1 -1
- package/dist/types/src/session-timeline/session-timeline.d.ts +17 -2
- package/dist/types/src/session-timeline/session-timeline.d.ts.map +1 -1
- package/dist/types/src/session-timeline/types.d.ts +32 -0
- package/dist/types/src/session-timeline/types.d.ts.map +1 -1
- package/dist/types/src/testing/simulated-agent.d.ts +3 -2
- package/dist/types/src/testing/simulated-agent.d.ts.map +1 -1
- package/dist/types/src/testing/test-trace.d.ts +2 -2
- package/dist/types/src/testing/test-trace.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +5 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +30 -26
- package/src/components/Gantt/Gantt.stories.tsx +914 -96
- package/src/components/Gantt/Gantt.tsx +964 -261
- package/src/components/Gantt/gantt-rows.test.ts +123 -0
- package/src/components/Gantt/gantt-rows.ts +71 -0
- package/src/components/Gantt/gantt-scale.test.ts +105 -0
- package/src/components/Gantt/gantt-scale.ts +143 -0
- package/src/components/Gantt/index.ts +2 -0
- package/src/components/Gantt/useEnter.ts +33 -0
- package/src/components/Gantt/useRangeTween.ts +61 -0
- package/src/components/ProcessTree/ProcessTree.stories.tsx +2 -3
- package/src/components/ProcessTree/ProcessTree.tsx +99 -90
- package/src/components/Timeline/Timeline.stories.tsx +110 -22
- package/src/components/Timeline/Timeline.tsx +319 -271
- package/src/components/Timeline/timeline-layout.test.ts +177 -0
- package/src/components/Timeline/timeline-layout.ts +153 -0
- package/src/components/TracePanel/SpanTreeView.tsx +39 -0
- package/src/components/TracePanel/TracePanel.stories.tsx +106 -0
- package/src/components/TracePanel/TracePanel.tsx +113 -106
- package/src/components/TracePanel/trace-filter.test.ts +31 -2
- package/src/components/TracePanel/trace-filter.ts +28 -3
- package/src/components/TracePanel/useTraceMenu.ts +0 -1
- package/src/execution-graph/SPEC.md +10 -10
- package/src/execution-graph/execution-graph.test.ts +5 -6
- package/src/execution-graph/execution-graph.ts +108 -60
- package/src/execution-graph/pending-block-status.ts +1 -1
- package/src/execution-graph/sub-agent-delegation.test.ts +1 -1
- package/src/hooks/useExecutionGraph.ts +14 -11
- package/src/hooks/useSessionTimeline.ts +35 -9
- package/src/hooks/useTraceMessages.ts +1 -1
- package/src/session-timeline/TaskHistory.stories.tsx +142 -0
- package/src/session-timeline/gantt-mapping.test.ts +118 -0
- package/src/session-timeline/gantt-mapping.ts +158 -0
- package/src/session-timeline/index.ts +1 -0
- package/src/session-timeline/session-timeline.test.ts +567 -19
- package/src/session-timeline/session-timeline.ts +433 -62
- package/src/session-timeline/types.ts +14 -0
- package/src/testing/simulated-agent.ts +3 -2
- package/src/testing/test-trace.ts +2 -2
- package/src/translations.ts +8 -2
- package/dist/types/src/execution-graph/remote-snapshot.test.d.ts +0 -2
- package/dist/types/src/execution-graph/remote-snapshot.test.d.ts.map +0 -1
- package/src/execution-graph/remote-snapshot.test.ts +0 -116
package/dist/lib/testing.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { useEffect, useRef, useState } from "react";
|
|
2
2
|
import * as Option from "effect/Option";
|
|
3
|
-
import * as Process from "@dxos/compute/Process";
|
|
4
3
|
import * as Schema from "effect/Schema";
|
|
5
4
|
import * as Trace from "@dxos/compute/Trace";
|
|
6
5
|
import { Annotation } from "@dxos/echo";
|
|
7
6
|
import { EntityId } from "@dxos/keys";
|
|
8
7
|
import * as Effect from "effect/Effect";
|
|
8
|
+
import * as Operation from "@dxos/compute/Operation";
|
|
9
9
|
//#region src/testing/simulated-agent.ts
|
|
10
10
|
var agentScenarios = [
|
|
11
11
|
{
|
|
@@ -115,7 +115,7 @@ var AgentStep = Schema.Union([
|
|
|
115
115
|
* it one step, so the caller can interleave the agent's own trace events with the child operation
|
|
116
116
|
* processes that {@link runScenario} spawns beneath it.
|
|
117
117
|
*/
|
|
118
|
-
var SimulatedAgent =
|
|
118
|
+
var SimulatedAgent = Operation.makeDurable({
|
|
119
119
|
key: "org.dxos.testing.process.agent",
|
|
120
120
|
input: AgentStep,
|
|
121
121
|
output: Schema.Void,
|
|
@@ -182,7 +182,7 @@ var OperationInput = Schema.Struct({
|
|
|
182
182
|
* Storybook fixture: a {@link Process} that emits the `operation.start`/`operation.end` pair a real
|
|
183
183
|
* operation process emits, with a simulated execution time in between.
|
|
184
184
|
*/
|
|
185
|
-
var SimulatedOperation =
|
|
185
|
+
var SimulatedOperation = Operation.makeDurable({
|
|
186
186
|
key: "org.dxos.testing.process.operation",
|
|
187
187
|
input: OperationInput,
|
|
188
188
|
output: Schema.Void,
|
package/dist/lib/testing.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.mjs","names":[],"sources":["../../src/testing/simulated-agent.ts","../../src/testing/snapshot-playback.ts","../../src/testing/test-trace.ts","../../src/execution-graph/testing/sub-agent-delegation.json"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { type ProcessManager } from '@dxos/compute-runtime';\nimport * as Process from '@dxos/compute/Process';\nimport * as Trace from '@dxos/compute/Trace';\nimport { EntityId } from '@dxos/keys';\n\n/**\n * One simulated operation. Rendered as a child process in the tree and as an `operation.start`/\n * `operation.end` span on the timeline.\n */\nexport interface SimulatedTool {\n readonly key: string;\n readonly name: string;\n readonly icon?: string;\n readonly durationMs: number;\n /** Nested operations, spawned under this one so the tree exercises more than one level. */\n readonly children?: readonly SimulatedTool[];\n /** Run `children` concurrently, producing parallel lanes on the timeline. */\n readonly concurrent?: boolean;\n /** End with `outcome: 'failure'` and fail the process. */\n readonly fail?: boolean;\n}\n\nexport interface AgentScenario {\n readonly name: string;\n readonly prompt: string;\n readonly tools: readonly SimulatedTool[];\n}\n\nexport const agentScenarios: readonly AgentScenario[] = [\n {\n name: 'Create organization',\n prompt: 'Create an organization called \"Cyberdyne Systems\"',\n tools: [\n { key: 'list-schemas', name: 'List Schemas', icon: 'ph--list--regular', durationMs: 800 },\n {\n key: 'create-object',\n name: 'Create Object',\n icon: 'ph--plus-circle--regular',\n durationMs: 1_600,\n children: [{ key: 'validate', name: 'Validate', icon: 'ph--check--regular', durationMs: 600 }],\n },\n ],\n },\n {\n name: 'Research',\n prompt: 'Search for all organizations and persons',\n tools: [\n { key: 'list-schemas', name: 'List Schemas', icon: 'ph--list--regular', durationMs: 700 },\n {\n key: 'delegate',\n name: 'Delegate Research',\n icon: 'ph--users-three--regular',\n durationMs: 2_400,\n concurrent: true,\n children: [\n { key: 'query', name: 'Query Organizations', icon: 'ph--magnifying-glass--regular', durationMs: 1_800 },\n { key: 'query', name: 'Query Persons', icon: 'ph--magnifying-glass--regular', durationMs: 1_200 },\n ],\n },\n { key: 'summarize', name: 'Summarize', icon: 'ph--article--regular', durationMs: 900 },\n ],\n },\n {\n name: 'Failing run',\n prompt: 'Create a person named \"John Connor\"',\n tools: [\n { key: 'list-schemas', name: 'List Schemas', icon: 'ph--list--regular', durationMs: 600 },\n { key: 'create-object', name: 'Create Object', icon: 'ph--plus-circle--regular', durationMs: 1_200, fail: true },\n ],\n },\n];\n\nconst delay = (ms: number) => Effect.promise(() => new Promise<void>((resolve) => setTimeout(resolve, ms)));\n\n/**\n * Write a trace event and yield to the event loop so FeedTraceSink flushes it to ECHO before continuing.\n */\nconst writeAndFlush = <T>(eventType: Trace.EventType<T>, payload: T) =>\n Effect.gen(function* () {\n yield* Trace.write(eventType, payload);\n yield* delay(100);\n });\n\n//\n// Agent.\n//\n\nconst AgentStep = Schema.Union([\n Schema.Struct({ _tag: Schema.Literal('begin'), prompt: Schema.String }),\n Schema.Struct({ _tag: Schema.Literal('toolCall'), toolCallId: Schema.String, name: Schema.String }),\n Schema.Struct({ _tag: Schema.Literal('toolResult'), toolCallId: Schema.String, name: Schema.String }),\n Schema.Struct({ _tag: Schema.Literal('end'), status: Schema.Literals(['success', 'error']) }),\n]);\n\ntype AgentStep = Schema.Schema.Type<typeof AgentStep>;\n\n/**\n * Storybook fixture: a {@link Process} standing in for a conversational agent. Each input advances\n * it one step, so the caller can interleave the agent's own trace events with the child operation\n * processes that {@link runScenario} spawns beneath it.\n */\nexport const SimulatedAgent = Process.make(\n {\n key: 'org.dxos.testing.process.agent',\n input: AgentStep,\n output: Schema.Void,\n services: [Trace.TraceService],\n },\n (ctx) =>\n Effect.gen(function* () {\n // One message id spans the whole turn, so every block groups under a single message.\n const messageId = EntityId.random();\n\n return {\n onInput: (step: AgentStep) =>\n Effect.gen(function* () {\n switch (step._tag) {\n case 'begin': {\n yield* writeAndFlush(Trace.AgentRequestBegin, {});\n yield* writeAndFlush(Trace.CompleteBlock, {\n messageId,\n role: 'user',\n block: { _tag: 'text', text: step.prompt },\n });\n break;\n }\n\n case 'toolCall': {\n yield* writeAndFlush(Trace.CompleteBlock, {\n messageId,\n role: 'assistant',\n block: {\n _tag: 'toolCall',\n toolCallId: step.toolCallId,\n name: step.name,\n input: '{}',\n providerExecuted: false,\n },\n });\n break;\n }\n\n case 'toolResult': {\n yield* writeAndFlush(Trace.CompleteBlock, {\n messageId,\n role: 'assistant',\n block: {\n _tag: 'toolResult',\n toolCallId: step.toolCallId,\n name: step.name,\n providerExecuted: false,\n },\n });\n break;\n }\n\n case 'end': {\n yield* writeAndFlush(Trace.AgentRequestEnd, { status: step.status });\n if (step.status === 'error') {\n ctx.fail(new Error('Simulated agent failure'));\n } else {\n ctx.succeed();\n }\n break;\n }\n }\n }).pipe(Effect.orDie),\n onAlarm: () => Effect.void,\n onChildEvent: () => Effect.void,\n };\n }),\n);\n\n//\n// Operation.\n//\n\nconst OperationInput = Schema.Struct({\n key: Schema.String,\n name: Schema.String,\n icon: Schema.optional(Schema.String),\n durationMs: Schema.Number,\n fail: Schema.optional(Schema.Boolean),\n});\n\ntype OperationInput = Schema.Schema.Type<typeof OperationInput>;\n\n/**\n * Storybook fixture: a {@link Process} that emits the `operation.start`/`operation.end` pair a real\n * operation process emits, with a simulated execution time in between.\n */\nexport const SimulatedOperation = Process.make(\n {\n key: 'org.dxos.testing.process.operation',\n input: OperationInput,\n output: Schema.Void,\n services: [Trace.TraceService],\n },\n (ctx) =>\n Effect.succeed({\n onInput: ({ key, name, icon, durationMs, fail }: OperationInput) =>\n Effect.gen(function* () {\n yield* writeAndFlush(Trace.OperationStart, { key, name, icon });\n yield* delay(durationMs);\n yield* writeAndFlush(Trace.OperationEnd, {\n key,\n name,\n icon,\n outcome: fail ? 'failure' : 'success',\n error: fail ? `Simulated failure in '${name}'` : undefined,\n });\n\n if (fail) {\n ctx.fail(new Error(`Simulated failure in '${name}'`));\n } else {\n ctx.succeed();\n }\n }).pipe(Effect.orDie),\n onAlarm: () => Effect.void,\n onChildEvent: () => Effect.void,\n }),\n);\n\n//\n// Orchestration.\n//\n\n/**\n * Spawns one simulated operation (and its children) beneath `parentProcessId`.\n * A process cannot spawn its own children, so the tree is assembled from the caller's side.\n */\nconst runTool = (\n manager: ProcessManager.Manager,\n tool: SimulatedTool,\n parentProcessId: Process.ID,\n environment: Process.Environment,\n): Effect.Effect<void> =>\n Effect.gen(function* () {\n const handle = yield* manager.spawn(SimulatedOperation, { parentProcessId, name: tool.name, environment });\n yield* handle.submitInput({\n key: tool.key,\n name: tool.name,\n icon: tool.icon,\n durationMs: tool.durationMs,\n fail: tool.fail,\n });\n\n const children = tool.children ?? [];\n if (children.length > 0) {\n const effects = children.map((child) => runTool(manager, child, handle.pid, environment));\n yield* tool.concurrent ? Effect.all(effects, { concurrency: 'unbounded' }) : Effect.all(effects);\n }\n\n // A failing operation surfaces as a defect, which `Effect.ignore` would not catch; the scenario\n // only needs the trace it wrote, and carries on to close out the agent.\n yield* Effect.exit(handle.runToCompletion());\n }).pipe(Effect.orDie);\n\n/**\n * Runs one {@link agentScenarios} entry end to end: an agent process with a child operation process\n * per tool, so the panel has both a populated process tree and a timeline with nested spans.\n */\nexport const runScenario = (\n manager: ProcessManager.Manager,\n index: number,\n environment: Process.Environment,\n): Effect.Effect<void> =>\n Effect.gen(function* () {\n const scenario = agentScenarios[index % agentScenarios.length];\n const agent = yield* manager.spawn(SimulatedAgent, { name: `Agent (${scenario.name})`, environment });\n yield* agent.submitInput({ _tag: 'begin', prompt: scenario.prompt });\n\n let failed = false;\n for (const tool of scenario.tools) {\n const toolCallId = EntityId.random();\n yield* agent.submitInput({ _tag: 'toolCall', toolCallId, name: tool.key });\n yield* runTool(manager, tool, agent.pid, environment);\n if (tool.fail) {\n failed = true;\n break;\n }\n yield* agent.submitInput({ _tag: 'toolResult', toolCallId, name: tool.key });\n }\n\n yield* agent.submitInput({ _tag: 'end', status: failed ? 'error' : 'success' });\n }).pipe(Effect.orDie);\n","//\n// Copyright 2026 DXOS.org\n//\n\nimport { type Dispatch, type SetStateAction, useEffect, useRef, useState } from 'react';\n\n/**\n * Interval (ms) between auto-played trace messages in the snapshot playback story.\n */\nexport const PLAYBACK_INTERVAL_MS = 250;\n\nexport const STEP_STORAGE_KEY = 'plugin-assistant.trace-panel.snapshot.step';\n\n/**\n * `useState<number>` that hydrates from and persists to `localStorage`.\n * The third tuple member is `true` iff a valid value was loaded on first render.\n */\nexport const useLocalStorageNumber = (\n key: string,\n initial: number,\n): [number, Dispatch<SetStateAction<number>>, boolean] => {\n const initRef = useRef<{ value: number; hydrated: boolean } | null>(null);\n if (initRef.current === null) {\n let value = initial;\n let hydrated = false;\n if (typeof window !== 'undefined') {\n const stored = window.localStorage.getItem(key);\n const parsed = stored === null ? Number.NaN : Number(stored);\n if (Number.isInteger(parsed) && parsed >= 0) {\n value = parsed;\n hydrated = true;\n }\n }\n initRef.current = { value, hydrated };\n }\n\n const [value, setValue] = useState(initRef.current.value);\n useEffect(() => {\n if (typeof window !== 'undefined') {\n window.localStorage.setItem(key, String(value));\n }\n }, [key, value]);\n\n return [value, setValue, initRef.current.hydrated];\n};\n","//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\n\nimport * as Process from '@dxos/compute/Process';\nimport { Annotation } from '@dxos/echo';\n\nexport const makeProcess = (\n overrides: Partial<Process.Info> & Pick<Process.Info, 'pid' | 'state'> & { name: string },\n): Process.Info => ({\n parentPid: null,\n key: `test.process.${overrides.name}`,\n params: { name: overrides.name, annotations: Annotation.buildDictionary(() => {}) },\n environment: {},\n error: null,\n startedAt: Date.now() - 10_000,\n completedAt: Option.none(),\n metrics: { wallTime: 0, inputCount: 0, outputCount: 0 },\n ...overrides,\n});\n","[\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800819470,\n \"type\": \"assistant.agentRequestBegin\",\n \"data\": {}\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"e200b1f7-30a5-4aa8-ba12-31c6d9ddf4aa\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800819779,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"e200b1f7-30a5-4aa8-ba12-31c6d9ddf4aa\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800819796,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800819855,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG004MEGN8W9GP1T443300A\",\n \"role\": \"user\",\n \"block\": {\n \"_tag\": \"text\",\n \"text\": \"create a sub-agent that creates a haiku in a new document\"\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"fe05f5e6-f261-464a-a993-1ecc78557286\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800820015,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"fe05f5e6-f261-464a-a993-1ecc78557286\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800820031,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800822596,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG006SHPCW6D5WZJT9J0TKE\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"toolCall\",\n \"toolCallId\": \"toolu_01T1XhBHArQ2UNHvdCEtWY1C\",\n \"name\": \"update-tasks\",\n \"input\": \"{\\\"tasks\\\": [{\\\"id\\\":\\\"task_1\\\",\\\"title\\\":\\\"Create a sub-agent that writes a haiku in a new document\\\",\\\"status\\\":\\\"in-progress\\\"}]}\",\n \"providerExecuted\": false,\n \"operationKey\": \"dxn:org.dxos.operation.assistantToolkit.updateTasks\",\n \"operationName\": \"Update tasks\",\n \"operationIcon\": \"ph--check-square-offset--regular\"\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800822638,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG007BDN1MTQT7JXNC9MFQW\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"stats\",\n \"model\": \"claude-sonnet-4-6\",\n \"duration\": 2536,\n \"message\": \"OK\",\n \"toolCalls\": 1,\n \"usage\": {\n \"inputTokens\": 3,\n \"outputTokens\": 90,\n \"totalTokens\": 93\n }\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"4f9baefc-1353-406d-b883-0b5a7d1f0e31\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Update tasks (dxn:org.dxos.operation.assistantToolkit.updateTasks)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800822760,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.updateTasks\",\n \"name\": \"Update tasks\",\n \"icon\": \"ph--check-square-offset--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"4f9baefc-1353-406d-b883-0b5a7d1f0e31\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Update tasks (dxn:org.dxos.operation.assistantToolkit.updateTasks)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800822783,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.updateTasks\",\n \"name\": \"Update tasks\",\n \"icon\": \"ph--check-square-offset--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800822829,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG007HCMJQEHXMRSCQCQDNY\",\n \"role\": \"tool\",\n \"block\": {\n \"_tag\": \"toolResult\",\n \"toolCallId\": \"toolu_01T1XhBHArQ2UNHvdCEtWY1C\",\n \"name\": \"update-tasks\",\n \"result\": \"\\\"You must update the task status to 'in-progress' when you start and 'done' when complete.\\\\nCurrent plan updated:\\\\n<plan>\\\\n - **IN-PROGRESS**: Create a sub-agent that writes a haiku in a new document <!-- id=task_1 -->\\\\n</plan>\\\"\",\n \"providerExecuted\": false\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"211a43a3-f85b-4925-aae3-af92c46ac91b\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800823031,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"211a43a3-f85b-4925-aae3-af92c46ac91b\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800823047,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800825033,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG009EK5A1PBQW38R1T8ABZ\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"toolCall\",\n \"toolCallId\": \"toolu_014hZLnJnQzNRkr9Xwx6gJ79\",\n \"name\": \"delegate-task\",\n \"input\": \"{\\\"title\\\": \\\"Create a haiku in a new document\\\"}\",\n \"providerExecuted\": false,\n \"operationKey\": \"dxn:org.dxos.operation.assistantToolkit.delegateTask\",\n \"operationName\": \"Delegate task\",\n \"operationIcon\": \"ph--share-network--regular\"\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800825087,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG009QYZCDFTBGFSNCFXZ4C\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"stats\",\n \"model\": \"claude-sonnet-4-6\",\n \"duration\": 1981,\n \"message\": \"OK\",\n \"toolCalls\": 1,\n \"usage\": {\n \"inputTokens\": 1,\n \"outputTokens\": 60,\n \"totalTokens\": 61\n }\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cad71a95-5fbc-45cd-a834-bfc7e5085a3f\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Delegate task (dxn:org.dxos.operation.assistantToolkit.delegateTask)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800825246,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.delegateTask\",\n \"name\": \"Delegate task\",\n \"icon\": \"ph--share-network--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cad71a95-5fbc-45cd-a834-bfc7e5085a3f\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Delegate task (dxn:org.dxos.operation.assistantToolkit.delegateTask)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800825268,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.delegateTask\",\n \"name\": \"Delegate task\",\n \"icon\": \"ph--share-network--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800825324,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG009ZCDCCCF7ZPHE3SECXG\",\n \"role\": \"tool\",\n \"block\": {\n \"_tag\": \"toolResult\",\n \"toolCallId\": \"toolu_014hZLnJnQzNRkr9Xwx6gJ79\",\n \"name\": \"delegate-task\",\n \"result\": \"\\\"Delegated work as an in-progress task. Current plan:\\\\n<plan>\\\\n - **IN-PROGRESS**: Create a sub-agent that writes a haiku in a new document <!-- id=task_1 -->\\\\n - **IN-PROGRESS**: Create a haiku in a new document <!-- id=1-d4 -->\\\\n</plan>\\\"\",\n \"providerExecuted\": false\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf82b042-0703-4e57-b630-204f0e13deee\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800825537,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf82b042-0703-4e57-b630-204f0e13deee\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800825552,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800827693,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00B9HS4BWE7G8NPYGEG00\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"text\",\n \"text\": \"Done! I've created a sub-agent with the task of writing a haiku in a new document. The sub-agent is now in progress and will create the document with a haiku. Once it completes, the artifact will be available in the space.\"\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800827757,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00CBCTK0Y7068HEY1TJXJ\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"stats\",\n \"model\": \"claude-sonnet-4-6\",\n \"duration\": 2135,\n \"message\": \"OK\",\n \"toolCalls\": 0,\n \"usage\": {\n \"inputTokens\": 1,\n \"outputTokens\": 57,\n \"totalTokens\": 58\n }\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800827765,\n \"type\": \"assistant.agentRequestEnd\",\n \"data\": {}\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800827912,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.function.prompt\",\n \"name\": \"Run Routine\",\n \"icon\": \"ph--brain--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"58e4ed1d-6cb2-475e-850a-d89be0c5c714\",\n \"processName\": \"Update Chat Name (dxn:org.dxos.operation.assistant.updateChatName)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800828033,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistant.updateChatName\",\n \"name\": \"Update Chat Name\",\n \"icon\": \"ph--pencil--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"b070e30f-bafe-4118-94da-83681c24d49d\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800828277,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"b070e30f-bafe-4118-94da-83681c24d49d\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800828278,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800828323,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00CX281TNXBSMXVWGJFER\",\n \"role\": \"user\",\n \"block\": {\n \"_tag\": \"text\",\n \"text\": \"Complete the following task and report the result concisely.\\n\\nIf you create any documents or artifacts, call completeJob with a JSON object of the\\nform { \\\"summary\\\": string, \\\"artifactIds\\\": string[] }, where artifactIds are the exact\\nids returned by the tools that created them. Otherwise return a short summary string.\\n\\nTask: Create a haiku in a new document\\n<input>{}</input>\"\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"c2b79fcc-a455-4546-b306-fe175a2b646a\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800828453,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"c2b79fcc-a455-4546-b306-fe175a2b646a\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800828455,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"58e4ed1d-6cb2-475e-850a-d89be0c5c714\",\n \"processName\": \"Update Chat Name (dxn:org.dxos.operation.assistant.updateChatName)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800828735,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistant.updateChatName\",\n \"name\": \"Update Chat Name\",\n \"icon\": \"ph--pencil--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800830265,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00EK399C8GJJ8VA656YCB\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"reasoning\",\n \"reasoningText\": \"The user wants me to create a haiku in a new document.\"\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800831962,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00EW0KX1Z76MNJBD0958W\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"toolCall\",\n \"toolCallId\": \"toolu_0178cbySPezLkhabBTSDtzCL\",\n \"name\": \"create\",\n \"input\": \"{\\\"name\\\": \\\"Haiku\\\", \\\"content\\\": \\\"# Haiku\\\\n\\\\nAutumn leaves descend,\\\\nWhispering through quiet woods—\\\\nEarth breathes in their fall.\\\"}\",\n \"providerExecuted\": false,\n \"operationKey\": \"dxn:org.dxos.operation.markdown.create\",\n \"operationName\": \"Create\",\n \"operationIcon\": \"ph--file-text--regular\"\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800832083,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00GJK5KB5BQT6C5H9HE6J\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"stats\",\n \"model\": \"claude-opus-4-6\",\n \"duration\": 3587,\n \"message\": \"OK\",\n \"toolCalls\": 1,\n \"usage\": {\n \"inputTokens\": 3,\n \"outputTokens\": 126,\n \"totalTokens\": 129\n }\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"dd1b51d9-f2f7-4144-945b-7ccd96978964\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Create (dxn:org.dxos.operation.markdown.create)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800832091,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.markdown.create\",\n \"name\": \"Create\",\n \"icon\": \"ph--file-text--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"dd1b51d9-f2f7-4144-945b-7ccd96978964\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Create (dxn:org.dxos.operation.markdown.create)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800832174,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.markdown.create\",\n \"name\": \"Create\",\n \"icon\": \"ph--file-text--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800832177,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00GNGWSK4HBSS3G6GHN3Z\",\n \"role\": \"tool\",\n \"block\": {\n \"_tag\": \"toolResult\",\n \"toolCallId\": \"toolu_0178cbySPezLkhabBTSDtzCL\",\n \"name\": \"create\",\n \"result\": \"{\\\"id\\\":\\\"echo://BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN/01KTG00GJWSZ4SQSXABYFWGDVV\\\"}\",\n \"providerExecuted\": false\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"01175964-6ffa-4785-84cb-649cbb80edd5\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800832318,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"01175964-6ffa-4785-84cb-649cbb80edd5\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800832319,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800834244,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00J47C4BSC65F86Z1DY9C\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"toolCall\",\n \"toolCallId\": \"toolu_019cwi3tVMMseebHThRSJkRA\",\n \"name\": \"add-artifact\",\n \"input\": \"{\\\"name\\\": \\\"Haiku\\\", \\\"artifact\\\": \\\"echo://BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN/01KTG00GJWSZ4SQSXABYFWGDVV\\\"}\",\n \"providerExecuted\": false,\n \"operationKey\": \"dxn:org.dxos.function.agent.addArtifact\",\n \"operationName\": \"Add artifact\",\n \"operationIcon\": \"ph--plus--regular\"\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800834342,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00JS52RCKXSCQNEGYW6ZS\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"stats\",\n \"model\": \"claude-opus-4-6\",\n \"duration\": 1991,\n \"message\": \"OK\",\n \"toolCalls\": 1,\n \"usage\": {\n \"inputTokens\": 1,\n \"outputTokens\": 121,\n \"totalTokens\": 122\n }\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2f805c44-2f1e-4fff-9f1d-5864bc176d56\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Add artifact (dxn:org.dxos.function.agent.addArtifact)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800834363,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.function.agent.addArtifact\",\n \"name\": \"Add artifact\",\n \"icon\": \"ph--plus--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2f805c44-2f1e-4fff-9f1d-5864bc176d56\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Add artifact (dxn:org.dxos.function.agent.addArtifact)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800834365,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.function.agent.addArtifact\",\n \"name\": \"Add artifact\",\n \"icon\": \"ph--plus--regular\",\n \"outcome\": \"failure\",\n \"error\": \"There should be exactly one agent in context. Got: 0\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800834370,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00JT1JGBNR4C0TW653WVV\",\n \"role\": \"tool\",\n \"block\": {\n \"_tag\": \"toolResult\",\n \"toolCallId\": \"toolu_019cwi3tVMMseebHThRSJkRA\",\n \"name\": \"add-artifact\",\n \"error\": \"Error: There should be exactly one agent in context. Got: 0\",\n \"providerExecuted\": false\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"901f7e36-b0be-4e9e-99df-389261ff3722\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800834486,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"901f7e36-b0be-4e9e-99df-389261ff3722\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800834487,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800837620,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00MSMF112Q6HS7TM5YRWZ\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"toolCall\",\n \"toolCallId\": \"toolu_01C5PdSKAg51X4odG3F3Nzf6\",\n \"name\": \"completeJob\",\n \"input\": \"{\\\"success\\\": {\\\"summary\\\":\\\"Created a new document titled 'Haiku' containing an autumn-themed haiku: \\\\\\\"Autumn leaves descend, / Whispering through quiet woods— / Earth breathes in their fall.\\\\\\\"\\\",\\\"artifactIds\\\":[\\\"echo://BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN/01KTG00GJWSZ4SQSXABYFWGDVV\\\"]}}\",\n \"providerExecuted\": false\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800837627,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00NZTEE9V745YZTH9RJVS\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"stats\",\n \"model\": \"claude-opus-4-6\",\n \"duration\": 3095,\n \"message\": \"OK\",\n \"toolCalls\": 1,\n \"usage\": {\n \"inputTokens\": 1,\n \"outputTokens\": 158,\n \"totalTokens\": 159\n }\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800837636,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00P04B6FP1T09Y1XN487Q\",\n \"role\": \"tool\",\n \"block\": {\n \"_tag\": \"toolResult\",\n \"toolCallId\": \"toolu_01C5PdSKAg51X4odG3F3Nzf6\",\n \"name\": \"completeJob\",\n \"providerExecuted\": false\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"639e78ff-d0b1-4d00-8e52-7fc43d245c9f\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800837746,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"639e78ff-d0b1-4d00-8e52-7fc43d245c9f\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800837747,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800838834,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00Q5HN24VN54SRMH1GPT6\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"stats\",\n \"model\": \"claude-opus-4-6\",\n \"duration\": 1052,\n \"message\": \"OK\",\n \"toolCalls\": 0,\n \"usage\": {\n \"inputTokens\": 1,\n \"outputTokens\": 2,\n \"totalTokens\": 3\n }\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800838870,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.function.prompt\",\n \"name\": \"Run Routine\",\n \"icon\": \"ph--brain--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n }\n]\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testing.mjs","names":[],"sources":["../../src/testing/simulated-agent.ts","../../src/testing/snapshot-playback.ts","../../src/testing/test-trace.ts","../../src/execution-graph/testing/sub-agent-delegation.json"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { type ProcessManager } from '@dxos/compute-runtime';\nimport * as Operation from '@dxos/compute/Operation';\nimport * as Process from '@dxos/compute/Process';\nimport * as Trace from '@dxos/compute/Trace';\nimport { EntityId } from '@dxos/keys';\n\n/**\n * One simulated operation. Rendered as a child process in the tree and as an `operation.start`/\n * `operation.end` span on the timeline.\n */\nexport interface SimulatedTool {\n readonly key: string;\n readonly name: string;\n readonly icon?: string;\n readonly durationMs: number;\n /** Nested operations, spawned under this one so the tree exercises more than one level. */\n readonly children?: readonly SimulatedTool[];\n /** Run `children` concurrently, producing parallel lanes on the timeline. */\n readonly concurrent?: boolean;\n /** End with `outcome: 'failure'` and fail the process. */\n readonly fail?: boolean;\n}\n\nexport interface AgentScenario {\n readonly name: string;\n readonly prompt: string;\n readonly tools: readonly SimulatedTool[];\n}\n\nexport const agentScenarios: readonly AgentScenario[] = [\n {\n name: 'Create organization',\n prompt: 'Create an organization called \"Cyberdyne Systems\"',\n tools: [\n { key: 'list-schemas', name: 'List Schemas', icon: 'ph--list--regular', durationMs: 800 },\n {\n key: 'create-object',\n name: 'Create Object',\n icon: 'ph--plus-circle--regular',\n durationMs: 1_600,\n children: [{ key: 'validate', name: 'Validate', icon: 'ph--check--regular', durationMs: 600 }],\n },\n ],\n },\n {\n name: 'Research',\n prompt: 'Search for all organizations and persons',\n tools: [\n { key: 'list-schemas', name: 'List Schemas', icon: 'ph--list--regular', durationMs: 700 },\n {\n key: 'delegate',\n name: 'Delegate Research',\n icon: 'ph--users-three--regular',\n durationMs: 2_400,\n concurrent: true,\n children: [\n { key: 'query', name: 'Query Organizations', icon: 'ph--magnifying-glass--regular', durationMs: 1_800 },\n { key: 'query', name: 'Query Persons', icon: 'ph--magnifying-glass--regular', durationMs: 1_200 },\n ],\n },\n { key: 'summarize', name: 'Summarize', icon: 'ph--article--regular', durationMs: 900 },\n ],\n },\n {\n name: 'Failing run',\n prompt: 'Create a person named \"John Connor\"',\n tools: [\n { key: 'list-schemas', name: 'List Schemas', icon: 'ph--list--regular', durationMs: 600 },\n { key: 'create-object', name: 'Create Object', icon: 'ph--plus-circle--regular', durationMs: 1_200, fail: true },\n ],\n },\n];\n\nconst delay = (ms: number) => Effect.promise(() => new Promise<void>((resolve) => setTimeout(resolve, ms)));\n\n/**\n * Write a trace event and yield to the event loop so FeedTraceSink flushes it to ECHO before continuing.\n */\nconst writeAndFlush = <T>(eventType: Trace.EventType<T>, payload: T) =>\n Effect.gen(function* () {\n yield* Trace.write(eventType, payload);\n yield* delay(100);\n });\n\n//\n// Agent.\n//\n\nconst AgentStep = Schema.Union([\n Schema.Struct({ _tag: Schema.Literal('begin'), prompt: Schema.String }),\n Schema.Struct({ _tag: Schema.Literal('toolCall'), toolCallId: Schema.String, name: Schema.String }),\n Schema.Struct({ _tag: Schema.Literal('toolResult'), toolCallId: Schema.String, name: Schema.String }),\n Schema.Struct({ _tag: Schema.Literal('end'), status: Schema.Literals(['success', 'error']) }),\n]);\n\ntype AgentStep = Schema.Schema.Type<typeof AgentStep>;\n\n/**\n * Storybook fixture: a {@link Process} standing in for a conversational agent. Each input advances\n * it one step, so the caller can interleave the agent's own trace events with the child operation\n * processes that {@link runScenario} spawns beneath it.\n */\nexport const SimulatedAgent = Operation.makeDurable(\n {\n key: 'org.dxos.testing.process.agent',\n input: AgentStep,\n output: Schema.Void,\n services: [Trace.TraceService],\n },\n (ctx) =>\n Effect.gen(function* () {\n // One message id spans the whole turn, so every block groups under a single message.\n const messageId = EntityId.random();\n\n return {\n onInput: (step: AgentStep) =>\n Effect.gen(function* () {\n switch (step._tag) {\n case 'begin': {\n yield* writeAndFlush(Trace.AgentRequestBegin, {});\n yield* writeAndFlush(Trace.CompleteBlock, {\n messageId,\n role: 'user',\n block: { _tag: 'text', text: step.prompt },\n });\n break;\n }\n\n case 'toolCall': {\n yield* writeAndFlush(Trace.CompleteBlock, {\n messageId,\n role: 'assistant',\n block: {\n _tag: 'toolCall',\n toolCallId: step.toolCallId,\n name: step.name,\n input: '{}',\n providerExecuted: false,\n },\n });\n break;\n }\n\n case 'toolResult': {\n yield* writeAndFlush(Trace.CompleteBlock, {\n messageId,\n role: 'assistant',\n block: {\n _tag: 'toolResult',\n toolCallId: step.toolCallId,\n name: step.name,\n providerExecuted: false,\n },\n });\n break;\n }\n\n case 'end': {\n yield* writeAndFlush(Trace.AgentRequestEnd, { status: step.status });\n if (step.status === 'error') {\n ctx.fail(new Error('Simulated agent failure'));\n } else {\n ctx.succeed();\n }\n break;\n }\n }\n }).pipe(Effect.orDie),\n onAlarm: () => Effect.void,\n onChildEvent: () => Effect.void,\n };\n }),\n);\n\n//\n// Operation.\n//\n\nconst OperationInput = Schema.Struct({\n key: Schema.String,\n name: Schema.String,\n icon: Schema.optional(Schema.String),\n durationMs: Schema.Number,\n fail: Schema.optional(Schema.Boolean),\n});\n\ntype OperationInput = Schema.Schema.Type<typeof OperationInput>;\n\n/**\n * Storybook fixture: a {@link Process} that emits the `operation.start`/`operation.end` pair a real\n * operation process emits, with a simulated execution time in between.\n */\nexport const SimulatedOperation = Operation.makeDurable(\n {\n key: 'org.dxos.testing.process.operation',\n input: OperationInput,\n output: Schema.Void,\n services: [Trace.TraceService],\n },\n (ctx) =>\n Effect.succeed({\n onInput: ({ key, name, icon, durationMs, fail }: OperationInput) =>\n Effect.gen(function* () {\n yield* writeAndFlush(Trace.OperationStart, { key, name, icon });\n yield* delay(durationMs);\n yield* writeAndFlush(Trace.OperationEnd, {\n key,\n name,\n icon,\n outcome: fail ? 'failure' : 'success',\n error: fail ? `Simulated failure in '${name}'` : undefined,\n });\n\n if (fail) {\n ctx.fail(new Error(`Simulated failure in '${name}'`));\n } else {\n ctx.succeed();\n }\n }).pipe(Effect.orDie),\n onAlarm: () => Effect.void,\n onChildEvent: () => Effect.void,\n }),\n);\n\n//\n// Orchestration.\n//\n\n/**\n * Spawns one simulated operation (and its children) beneath `parentProcessId`.\n * A process cannot spawn its own children, so the tree is assembled from the caller's side.\n */\nconst runTool = (\n manager: ProcessManager.Manager,\n tool: SimulatedTool,\n parentProcessId: Process.ID,\n environment: Process.Environment,\n): Effect.Effect<void> =>\n Effect.gen(function* () {\n const handle = yield* manager.spawn(SimulatedOperation, { parentProcessId, name: tool.name, environment });\n yield* handle.submitInput({\n key: tool.key,\n name: tool.name,\n icon: tool.icon,\n durationMs: tool.durationMs,\n fail: tool.fail,\n });\n\n const children = tool.children ?? [];\n if (children.length > 0) {\n const effects = children.map((child) => runTool(manager, child, handle.pid, environment));\n yield* tool.concurrent ? Effect.all(effects, { concurrency: 'unbounded' }) : Effect.all(effects);\n }\n\n // A failing operation surfaces as a defect, which `Effect.ignore` would not catch; the scenario\n // only needs the trace it wrote, and carries on to close out the agent.\n yield* Effect.exit(handle.runToCompletion());\n }).pipe(Effect.orDie);\n\n/**\n * Runs one {@link agentScenarios} entry end to end: an agent process with a child operation process\n * per tool, so the panel has both a populated process tree and a timeline with nested spans.\n */\nexport const runScenario = (\n manager: ProcessManager.Manager,\n index: number,\n environment: Process.Environment,\n): Effect.Effect<void> =>\n Effect.gen(function* () {\n const scenario = agentScenarios[index % agentScenarios.length];\n const agent = yield* manager.spawn(SimulatedAgent, { name: `Agent (${scenario.name})`, environment });\n yield* agent.submitInput({ _tag: 'begin', prompt: scenario.prompt });\n\n let failed = false;\n for (const tool of scenario.tools) {\n const toolCallId = EntityId.random();\n yield* agent.submitInput({ _tag: 'toolCall', toolCallId, name: tool.key });\n yield* runTool(manager, tool, agent.pid, environment);\n if (tool.fail) {\n failed = true;\n break;\n }\n yield* agent.submitInput({ _tag: 'toolResult', toolCallId, name: tool.key });\n }\n\n yield* agent.submitInput({ _tag: 'end', status: failed ? 'error' : 'success' });\n }).pipe(Effect.orDie);\n","//\n// Copyright 2026 DXOS.org\n//\n\nimport { type Dispatch, type SetStateAction, useEffect, useRef, useState } from 'react';\n\n/**\n * Interval (ms) between auto-played trace messages in the snapshot playback story.\n */\nexport const PLAYBACK_INTERVAL_MS = 250;\n\nexport const STEP_STORAGE_KEY = 'plugin-assistant.trace-panel.snapshot.step';\n\n/**\n * `useState<number>` that hydrates from and persists to `localStorage`.\n * The third tuple member is `true` iff a valid value was loaded on first render.\n */\nexport const useLocalStorageNumber = (\n key: string,\n initial: number,\n): [number, Dispatch<SetStateAction<number>>, boolean] => {\n const initRef = useRef<{ value: number; hydrated: boolean } | null>(null);\n if (initRef.current === null) {\n let value = initial;\n let hydrated = false;\n if (typeof window !== 'undefined') {\n const stored = window.localStorage.getItem(key);\n const parsed = stored === null ? Number.NaN : Number(stored);\n if (Number.isInteger(parsed) && parsed >= 0) {\n value = parsed;\n hydrated = true;\n }\n }\n initRef.current = { value, hydrated };\n }\n\n const [value, setValue] = useState(initRef.current.value);\n useEffect(() => {\n if (typeof window !== 'undefined') {\n window.localStorage.setItem(key, String(value));\n }\n }, [key, value]);\n\n return [value, setValue, initRef.current.hydrated];\n};\n","//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\n\nimport * as Process from '@dxos/compute/Process';\nimport { Annotation } from '@dxos/echo';\n\nexport const makeProcess = (\n overrides: Partial<Process.Process> & Pick<Process.Process, 'pid' | 'state'> & { name: string },\n): Process.Process => ({\n parentPid: null,\n key: `test.process.${overrides.name}`,\n params: { name: overrides.name, annotations: Annotation.buildDictionary(() => {}) },\n environment: {},\n error: null,\n startedAt: Date.now() - 10_000,\n completedAt: Option.none(),\n metrics: { wallTime: 0, inputCount: 0, outputCount: 0 },\n ...overrides,\n});\n","[\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800819470,\n \"type\": \"assistant.agentRequestBegin\",\n \"data\": {}\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"e200b1f7-30a5-4aa8-ba12-31c6d9ddf4aa\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800819779,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"e200b1f7-30a5-4aa8-ba12-31c6d9ddf4aa\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800819796,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800819855,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG004MEGN8W9GP1T443300A\",\n \"role\": \"user\",\n \"block\": {\n \"_tag\": \"text\",\n \"text\": \"create a sub-agent that creates a haiku in a new document\"\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"fe05f5e6-f261-464a-a993-1ecc78557286\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800820015,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"fe05f5e6-f261-464a-a993-1ecc78557286\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800820031,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800822596,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG006SHPCW6D5WZJT9J0TKE\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"toolCall\",\n \"toolCallId\": \"toolu_01T1XhBHArQ2UNHvdCEtWY1C\",\n \"name\": \"update-tasks\",\n \"input\": \"{\\\"tasks\\\": [{\\\"id\\\":\\\"task_1\\\",\\\"title\\\":\\\"Create a sub-agent that writes a haiku in a new document\\\",\\\"status\\\":\\\"in-progress\\\"}]}\",\n \"providerExecuted\": false,\n \"operationKey\": \"dxn:org.dxos.operation.assistantToolkit.updateTasks\",\n \"operationName\": \"Update tasks\",\n \"operationIcon\": \"ph--check-square-offset--regular\"\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800822638,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG007BDN1MTQT7JXNC9MFQW\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"stats\",\n \"model\": \"claude-sonnet-4-6\",\n \"duration\": 2536,\n \"message\": \"OK\",\n \"toolCalls\": 1,\n \"usage\": {\n \"inputTokens\": 3,\n \"outputTokens\": 90,\n \"totalTokens\": 93\n }\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"4f9baefc-1353-406d-b883-0b5a7d1f0e31\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Update tasks (dxn:org.dxos.operation.assistantToolkit.updateTasks)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800822760,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.updateTasks\",\n \"name\": \"Update tasks\",\n \"icon\": \"ph--check-square-offset--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"4f9baefc-1353-406d-b883-0b5a7d1f0e31\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Update tasks (dxn:org.dxos.operation.assistantToolkit.updateTasks)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800822783,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.updateTasks\",\n \"name\": \"Update tasks\",\n \"icon\": \"ph--check-square-offset--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800822829,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG007HCMJQEHXMRSCQCQDNY\",\n \"role\": \"tool\",\n \"block\": {\n \"_tag\": \"toolResult\",\n \"toolCallId\": \"toolu_01T1XhBHArQ2UNHvdCEtWY1C\",\n \"name\": \"update-tasks\",\n \"result\": \"\\\"You must update the task status to 'in-progress' when you start and 'done' when complete.\\\\nCurrent plan updated:\\\\n<plan>\\\\n - **IN-PROGRESS**: Create a sub-agent that writes a haiku in a new document <!-- id=task_1 -->\\\\n</plan>\\\"\",\n \"providerExecuted\": false\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"211a43a3-f85b-4925-aae3-af92c46ac91b\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800823031,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"211a43a3-f85b-4925-aae3-af92c46ac91b\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800823047,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800825033,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG009EK5A1PBQW38R1T8ABZ\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"toolCall\",\n \"toolCallId\": \"toolu_014hZLnJnQzNRkr9Xwx6gJ79\",\n \"name\": \"delegate-task\",\n \"input\": \"{\\\"title\\\": \\\"Create a haiku in a new document\\\"}\",\n \"providerExecuted\": false,\n \"operationKey\": \"dxn:org.dxos.operation.assistantToolkit.delegateTask\",\n \"operationName\": \"Delegate task\",\n \"operationIcon\": \"ph--share-network--regular\"\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800825087,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG009QYZCDFTBGFSNCFXZ4C\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"stats\",\n \"model\": \"claude-sonnet-4-6\",\n \"duration\": 1981,\n \"message\": \"OK\",\n \"toolCalls\": 1,\n \"usage\": {\n \"inputTokens\": 1,\n \"outputTokens\": 60,\n \"totalTokens\": 61\n }\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cad71a95-5fbc-45cd-a834-bfc7e5085a3f\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Delegate task (dxn:org.dxos.operation.assistantToolkit.delegateTask)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800825246,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.delegateTask\",\n \"name\": \"Delegate task\",\n \"icon\": \"ph--share-network--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cad71a95-5fbc-45cd-a834-bfc7e5085a3f\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Delegate task (dxn:org.dxos.operation.assistantToolkit.delegateTask)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800825268,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.delegateTask\",\n \"name\": \"Delegate task\",\n \"icon\": \"ph--share-network--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800825324,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG009ZCDCCCF7ZPHE3SECXG\",\n \"role\": \"tool\",\n \"block\": {\n \"_tag\": \"toolResult\",\n \"toolCallId\": \"toolu_014hZLnJnQzNRkr9Xwx6gJ79\",\n \"name\": \"delegate-task\",\n \"result\": \"\\\"Delegated work as an in-progress task. Current plan:\\\\n<plan>\\\\n - **IN-PROGRESS**: Create a sub-agent that writes a haiku in a new document <!-- id=task_1 -->\\\\n - **IN-PROGRESS**: Create a haiku in a new document <!-- id=1-d4 -->\\\\n</plan>\\\"\",\n \"providerExecuted\": false\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf82b042-0703-4e57-b630-204f0e13deee\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800825537,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf82b042-0703-4e57-b630-204f0e13deee\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800825552,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800827693,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00B9HS4BWE7G8NPYGEG00\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"text\",\n \"text\": \"Done! I've created a sub-agent with the task of writing a haiku in a new document. The sub-agent is now in progress and will create the document with a haiku. Once it completes, the artifact will be available in the space.\"\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800827757,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00CBCTK0Y7068HEY1TJXJ\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"stats\",\n \"model\": \"claude-sonnet-4-6\",\n \"duration\": 2135,\n \"message\": \"OK\",\n \"toolCalls\": 0,\n \"usage\": {\n \"inputTokens\": 1,\n \"outputTokens\": 57,\n \"totalTokens\": 58\n }\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Agent\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"conversationId\": \"01KTFZZXTFTNVTK86WEJ6DKTFT\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800827765,\n \"type\": \"assistant.agentRequestEnd\",\n \"data\": {}\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800827912,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.function.prompt\",\n \"name\": \"Run Routine\",\n \"icon\": \"ph--brain--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"58e4ed1d-6cb2-475e-850a-d89be0c5c714\",\n \"processName\": \"Update Chat Name (dxn:org.dxos.operation.assistant.updateChatName)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800828033,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistant.updateChatName\",\n \"name\": \"Update Chat Name\",\n \"icon\": \"ph--pencil--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"b070e30f-bafe-4118-94da-83681c24d49d\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800828277,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"b070e30f-bafe-4118-94da-83681c24d49d\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800828278,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800828323,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00CX281TNXBSMXVWGJFER\",\n \"role\": \"user\",\n \"block\": {\n \"_tag\": \"text\",\n \"text\": \"Complete the following task and report the result concisely.\\n\\nIf you create any documents or artifacts, call completeJob with a JSON object of the\\nform { \\\"summary\\\": string, \\\"artifactIds\\\": string[] }, where artifactIds are the exact\\nids returned by the tools that created them. Otherwise return a short summary string.\\n\\nTask: Create a haiku in a new document\\n<input>{}</input>\"\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"c2b79fcc-a455-4546-b306-fe175a2b646a\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800828453,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"c2b79fcc-a455-4546-b306-fe175a2b646a\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800828455,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"58e4ed1d-6cb2-475e-850a-d89be0c5c714\",\n \"processName\": \"Update Chat Name (dxn:org.dxos.operation.assistant.updateChatName)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800828735,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistant.updateChatName\",\n \"name\": \"Update Chat Name\",\n \"icon\": \"ph--pencil--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800830265,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00EK399C8GJJ8VA656YCB\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"reasoning\",\n \"reasoningText\": \"The user wants me to create a haiku in a new document.\"\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800831962,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00EW0KX1Z76MNJBD0958W\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"toolCall\",\n \"toolCallId\": \"toolu_0178cbySPezLkhabBTSDtzCL\",\n \"name\": \"create\",\n \"input\": \"{\\\"name\\\": \\\"Haiku\\\", \\\"content\\\": \\\"# Haiku\\\\n\\\\nAutumn leaves descend,\\\\nWhispering through quiet woods—\\\\nEarth breathes in their fall.\\\"}\",\n \"providerExecuted\": false,\n \"operationKey\": \"dxn:org.dxos.operation.markdown.create\",\n \"operationName\": \"Create\",\n \"operationIcon\": \"ph--file-text--regular\"\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800832083,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00GJK5KB5BQT6C5H9HE6J\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"stats\",\n \"model\": \"claude-opus-4-6\",\n \"duration\": 3587,\n \"message\": \"OK\",\n \"toolCalls\": 1,\n \"usage\": {\n \"inputTokens\": 3,\n \"outputTokens\": 126,\n \"totalTokens\": 129\n }\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"dd1b51d9-f2f7-4144-945b-7ccd96978964\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Create (dxn:org.dxos.operation.markdown.create)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800832091,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.markdown.create\",\n \"name\": \"Create\",\n \"icon\": \"ph--file-text--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"dd1b51d9-f2f7-4144-945b-7ccd96978964\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Create (dxn:org.dxos.operation.markdown.create)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800832174,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.markdown.create\",\n \"name\": \"Create\",\n \"icon\": \"ph--file-text--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800832177,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00GNGWSK4HBSS3G6GHN3Z\",\n \"role\": \"tool\",\n \"block\": {\n \"_tag\": \"toolResult\",\n \"toolCallId\": \"toolu_0178cbySPezLkhabBTSDtzCL\",\n \"name\": \"create\",\n \"result\": \"{\\\"id\\\":\\\"echo://BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN/01KTG00GJWSZ4SQSXABYFWGDVV\\\"}\",\n \"providerExecuted\": false\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"01175964-6ffa-4785-84cb-649cbb80edd5\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800832318,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"01175964-6ffa-4785-84cb-649cbb80edd5\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800832319,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800834244,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00J47C4BSC65F86Z1DY9C\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"toolCall\",\n \"toolCallId\": \"toolu_019cwi3tVMMseebHThRSJkRA\",\n \"name\": \"add-artifact\",\n \"input\": \"{\\\"name\\\": \\\"Haiku\\\", \\\"artifact\\\": \\\"echo://BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN/01KTG00GJWSZ4SQSXABYFWGDVV\\\"}\",\n \"providerExecuted\": false,\n \"operationKey\": \"dxn:org.dxos.function.agent.addArtifact\",\n \"operationName\": \"Add artifact\",\n \"operationIcon\": \"ph--plus--regular\"\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800834342,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00JS52RCKXSCQNEGYW6ZS\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"stats\",\n \"model\": \"claude-opus-4-6\",\n \"duration\": 1991,\n \"message\": \"OK\",\n \"toolCalls\": 1,\n \"usage\": {\n \"inputTokens\": 1,\n \"outputTokens\": 121,\n \"totalTokens\": 122\n }\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2f805c44-2f1e-4fff-9f1d-5864bc176d56\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Add artifact (dxn:org.dxos.function.agent.addArtifact)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800834363,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.function.agent.addArtifact\",\n \"name\": \"Add artifact\",\n \"icon\": \"ph--plus--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"2f805c44-2f1e-4fff-9f1d-5864bc176d56\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Add artifact (dxn:org.dxos.function.agent.addArtifact)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800834365,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.function.agent.addArtifact\",\n \"name\": \"Add artifact\",\n \"icon\": \"ph--plus--regular\",\n \"outcome\": \"failure\",\n \"error\": \"There should be exactly one agent in context. Got: 0\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800834370,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00JT1JGBNR4C0TW653WVV\",\n \"role\": \"tool\",\n \"block\": {\n \"_tag\": \"toolResult\",\n \"toolCallId\": \"toolu_019cwi3tVMMseebHThRSJkRA\",\n \"name\": \"add-artifact\",\n \"error\": \"Error: There should be exactly one agent in context. Got: 0\",\n \"providerExecuted\": false\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"901f7e36-b0be-4e9e-99df-389261ff3722\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800834486,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"901f7e36-b0be-4e9e-99df-389261ff3722\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800834487,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800837620,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00MSMF112Q6HS7TM5YRWZ\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"toolCall\",\n \"toolCallId\": \"toolu_01C5PdSKAg51X4odG3F3Nzf6\",\n \"name\": \"completeJob\",\n \"input\": \"{\\\"success\\\": {\\\"summary\\\":\\\"Created a new document titled 'Haiku' containing an autumn-themed haiku: \\\\\\\"Autumn leaves descend, / Whispering through quiet woods— / Earth breathes in their fall.\\\\\\\"\\\",\\\"artifactIds\\\":[\\\"echo://BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN/01KTG00GJWSZ4SQSXABYFWGDVV\\\"]}}\",\n \"providerExecuted\": false\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800837627,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00NZTEE9V745YZTH9RJVS\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"stats\",\n \"model\": \"claude-opus-4-6\",\n \"duration\": 3095,\n \"message\": \"OK\",\n \"toolCalls\": 1,\n \"usage\": {\n \"inputTokens\": 1,\n \"outputTokens\": 158,\n \"totalTokens\": 159\n }\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800837636,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00P04B6FP1T09Y1XN487Q\",\n \"role\": \"tool\",\n \"block\": {\n \"_tag\": \"toolResult\",\n \"toolCallId\": \"toolu_01C5PdSKAg51X4odG3F3Nzf6\",\n \"name\": \"completeJob\",\n \"providerExecuted\": false\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"639e78ff-d0b1-4d00-8e52-7fc43d245c9f\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800837746,\n \"type\": \"operation.start\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"639e78ff-d0b1-4d00-8e52-7fc43d245c9f\",\n \"parentPid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"processName\": \"Get Agent Context (dxn:org.dxos.operation.assistantToolkit.getContext)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800837747,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.operation.assistantToolkit.getContext\",\n \"name\": \"Get Agent Context\",\n \"icon\": \"ph--info--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800838834,\n \"type\": \"assistant.completeBlock\",\n \"data\": {\n \"messageId\": \"01KTG00Q5HN24VN54SRMH1GPT6\",\n \"role\": \"assistant\",\n \"block\": {\n \"_tag\": \"stats\",\n \"model\": \"claude-opus-4-6\",\n \"duration\": 1052,\n \"message\": \"OK\",\n \"toolCalls\": 0,\n \"usage\": {\n \"inputTokens\": 1,\n \"outputTokens\": 2,\n \"totalTokens\": 3\n }\n }\n }\n }\n ]\n },\n {\n \"meta\": {\n \"pid\": \"cf8f7243-5b1d-4902-b158-70d9107d5f43\",\n \"parentPid\": \"2433a0a1-7c09-46e6-bc6f-893f104d1691\",\n \"processName\": \"Run Routine (dxn:org.dxos.function.prompt)\",\n \"space\": \"BIRSBKL52RS4PRK3IU2GHWTRLO5T6VOLN\",\n \"runtimeName\": \"local\"\n },\n \"isEphemeral\": false,\n \"events\": [\n {\n \"timestamp\": 1780800838870,\n \"type\": \"operation.end\",\n \"data\": {\n \"key\": \"dxn:org.dxos.function.prompt\",\n \"name\": \"Run Routine\",\n \"icon\": \"ph--brain--regular\",\n \"outcome\": \"success\"\n }\n }\n ]\n }\n]\n"],"mappings":"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"}
|
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
var translationKey = "@dxos/react-ui-trace";
|
|
3
3
|
var translations = [{ "en-US": { [translationKey]: {
|
|
4
4
|
"no-commits.message": "No events yet",
|
|
5
|
+
"gantt-axis-time.label": "Fit to time",
|
|
6
|
+
"gantt-axis-unit.label": "One step per event",
|
|
7
|
+
"gantt-legend-stats.label": "Show usage",
|
|
8
|
+
"gantt-legend-title.label": "Show titles",
|
|
9
|
+
"gantt-chart.label": "Timeline",
|
|
5
10
|
"trace.label": "Trace",
|
|
6
11
|
"trace-processes.label": "Processes",
|
|
7
12
|
"trace-details.label": "Details",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translations.mjs","names":[],"sources":["../../src/translations.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport
|
|
1
|
+
{"version":3,"file":"translations.mjs","names":[],"sources":["../../src/translations.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport type * as Theme from '@dxos/react-ui/Theme';\n\nexport const translationKey = '@dxos/react-ui-trace';\n\nexport const translations = [\n {\n 'en-US': {\n [translationKey]: {\n 'no-commits.message': 'No events yet',\n\n 'gantt-axis-time.label': 'Fit to time',\n 'gantt-axis-unit.label': 'One step per event',\n 'gantt-legend-stats.label': 'Show usage',\n 'gantt-legend-title.label': 'Show titles',\n 'gantt-chart.label': 'Timeline',\n\n 'trace.label': 'Trace',\n 'trace-processes.label': 'Processes',\n 'trace-details.label': 'Details',\n\n 'trace-filter.menu': 'Filter processes',\n 'trace-clear-selection.label': 'Clear process selection',\n 'trace-filter-all.label': 'Show all',\n 'trace-filter-none.label': 'Hide all',\n 'trace-environment-app.label': 'App',\n 'trace-environment-space.label': 'Space',\n 'trace-environment-conversation.label': 'Conversation',\n },\n },\n },\n] as const satisfies Theme.Resource[];\n"],"mappings":";AAMA,IAAa,iBAAiB;AAE9B,IAAa,eAAe,CAC1B,EACE,SAAS,GACN,iBAAiB;CAChB,sBAAsB;CAEtB,yBAAyB;CACzB,yBAAyB;CACzB,4BAA4B;CAC5B,4BAA4B;CAC5B,qBAAqB;CAErB,eAAe;CACf,yBAAyB;CACzB,uBAAuB;CAEvB,qBAAqB;CACrB,+BAA+B;CAC/B,0BAA0B;CAC1B,2BAA2B;CAC3B,+BAA+B;CAC/B,iCAAiC;CACjC,wCAAwC;AAC1C,EACF,EACF,CACF"}
|
|
@@ -1,38 +1,91 @@
|
|
|
1
|
-
import React, { type ReactNode } from 'react';
|
|
2
|
-
import
|
|
3
|
-
|
|
1
|
+
import React, { type PropsWithChildren, type ReactNode } from 'react';
|
|
2
|
+
import * as Util from '@dxos/react-ui/Util';
|
|
3
|
+
import { type Hue } from '@dxos/ui-theme';
|
|
4
|
+
import { type GanttAxis } from './gantt-scale.ts';
|
|
5
|
+
/**
|
|
6
|
+
* The chart's vocabulary is groups, lanes, segments and markers — deliberately not the vocabulary of
|
|
7
|
+
* whatever is being charted. A host maps its own nouns onto these (a process onto a group, a task
|
|
8
|
+
* onto a lane, a status change onto a marker) and the chart stays ignorant of what they mean.
|
|
9
|
+
*/
|
|
4
10
|
export type GanttLaneStatus = 'pending' | 'blocked' | 'running' | 'review' | 'done' | 'failed';
|
|
5
|
-
|
|
11
|
+
/**
|
|
12
|
+
* A band of related lanes, enclosed by one rectangle. Pure structure: the lanes inside carry the
|
|
13
|
+
* labels, so a group needs no name of its own.
|
|
14
|
+
*/
|
|
15
|
+
export type GanttGroup = {
|
|
16
|
+
id: string;
|
|
17
|
+
/** Indents under another group; a nested group's band is drawn after its parent's. */
|
|
18
|
+
parentId?: string;
|
|
19
|
+
};
|
|
20
|
+
/** One stretch during which a lane was worked. `end` is absent while the stretch is still open. */
|
|
21
|
+
export type GanttSegment = {
|
|
22
|
+
start: number;
|
|
23
|
+
end?: number;
|
|
24
|
+
};
|
|
25
|
+
/** A fact the host wants beside a lane: the legend shows it in place of, or over, the lane's title, and never interprets it. */
|
|
26
|
+
export type GanttMeta = {
|
|
27
|
+
label: string;
|
|
28
|
+
title?: string;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* One row. Its three references are deliberately distinct: `groupId` is which band it sits in,
|
|
32
|
+
* `parentId` is what it nests under, and `openedFrom` is what caused it. Collapsing any two of them
|
|
33
|
+
* into one edge is what left the previous model unable to hold a task hierarchy and a process tree
|
|
34
|
+
* at the same time.
|
|
35
|
+
*/
|
|
6
36
|
export type GanttLane = {
|
|
7
37
|
id: string;
|
|
8
|
-
kind: GanttLaneKind;
|
|
9
38
|
label: string;
|
|
10
39
|
status: GanttLaneStatus;
|
|
11
|
-
|
|
12
|
-
|
|
40
|
+
/** The band this lane sits in. */
|
|
41
|
+
groupId?: string;
|
|
42
|
+
/** Indents under another lane of the same group — nesting, nothing more. */
|
|
13
43
|
parentId?: string;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
44
|
+
/** Every stretch this lane was worked. A lane with none exists but has no extent, so no bar. */
|
|
45
|
+
segments?: readonly GanttSegment[];
|
|
46
|
+
/** The node this lane opened out of, on another lane. */
|
|
47
|
+
openedFrom?: {
|
|
17
48
|
laneId: string;
|
|
18
49
|
markerId: string;
|
|
19
50
|
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
51
|
+
/**
|
|
52
|
+
* The node this lane's result came back into, on another lane — the mirror of `openedFrom`, and a
|
|
53
|
+
* separate fact: a lane can open out of another and end without ever reporting back.
|
|
54
|
+
*/
|
|
55
|
+
closedInto?: {
|
|
56
|
+
laneId: string;
|
|
57
|
+
markerId: string;
|
|
24
58
|
};
|
|
25
|
-
|
|
59
|
+
/** Colours the legend dot, the bar, its nodes and its thread in place of the status colour. */
|
|
60
|
+
hue?: Hue;
|
|
61
|
+
/** Lanes this one waits on. */
|
|
62
|
+
blockedOn?: readonly string[];
|
|
63
|
+
meta?: readonly GanttMeta[];
|
|
26
64
|
};
|
|
27
65
|
export type GanttMarker = {
|
|
28
66
|
id: string;
|
|
29
67
|
laneId: string;
|
|
30
|
-
|
|
68
|
+
/** The host's own word for what happened; shown in the hover card, never interpreted. */
|
|
69
|
+
kind?: string;
|
|
31
70
|
timestamp: number;
|
|
32
71
|
label: string;
|
|
33
72
|
level?: 'info' | 'warn' | 'error';
|
|
73
|
+
/**
|
|
74
|
+
* A wait begun at this node and since ended — a question put to the reader and answered. Drawn as a
|
|
75
|
+
* dashed line along the lane to the node that ended it; a wait still open draws nothing, so the lane
|
|
76
|
+
* ends at the question until the answer lands.
|
|
77
|
+
*/
|
|
78
|
+
wait?: {
|
|
79
|
+
until: string;
|
|
80
|
+
};
|
|
81
|
+
/** Awaiting a response — an unanswered question. The node pings until the response arrives. */
|
|
82
|
+
pending?: boolean;
|
|
34
83
|
};
|
|
84
|
+
/** What the legend's column shows per lane: its title, or the facts the host attached to it. */
|
|
85
|
+
export type GanttLegendMode = 'title' | 'stats';
|
|
35
86
|
export type GanttData = {
|
|
87
|
+
/** The bands. A chart with none draws its lanes plain, with no rectangles. */
|
|
88
|
+
groups?: readonly GanttGroup[];
|
|
36
89
|
lanes: readonly GanttLane[];
|
|
37
90
|
markers?: readonly GanttMarker[];
|
|
38
91
|
range?: {
|
|
@@ -41,15 +94,48 @@ export type GanttData = {
|
|
|
41
94
|
};
|
|
42
95
|
now?: number;
|
|
43
96
|
showNow?: boolean;
|
|
97
|
+
/**
|
|
98
|
+
* What the horizontal axis measures: `unit` steps once per event and scrolls to follow the newest;
|
|
99
|
+
* `time` fits the whole range to the width and eases to new bounds. `unit` by default.
|
|
100
|
+
*/
|
|
101
|
+
axis?: GanttAxis;
|
|
102
|
+
/** Pixels per event on the `unit` axis. */
|
|
103
|
+
unitStep?: number;
|
|
104
|
+
/**
|
|
105
|
+
* Slide a newly arrived event out of the one before it — out of the node that opened its lane, for
|
|
106
|
+
* a lane's first — and grow its bar to meet it, on the `unit` axis. Only events that arrive while the
|
|
107
|
+
* chart is on screen animate, so a chart that is merely mounted is still.
|
|
108
|
+
*/
|
|
109
|
+
animate?: boolean;
|
|
44
110
|
onLaneSelect?: (lane: GanttLane) => void;
|
|
45
111
|
onMarkerSelect?: (marker: GanttMarker) => void;
|
|
112
|
+
/** Called by `Gantt.AxisToggle`; without it the toggle does not render. */
|
|
113
|
+
onAxisChange?: (axis: GanttAxis) => void;
|
|
114
|
+
/** What the legend's column shows; held by the root when absent, `title` to begin with. */
|
|
115
|
+
legend?: GanttLegendMode;
|
|
116
|
+
/** Called by `Gantt.LegendToggle`. */
|
|
117
|
+
onLegendChange?: (legend: GanttLegendMode) => void;
|
|
46
118
|
};
|
|
47
|
-
type GanttRootProps = ThemedClassName<GanttData & {
|
|
119
|
+
type GanttRootProps = Util.ThemedClassName<GanttData & {
|
|
48
120
|
children?: ReactNode;
|
|
49
121
|
}>;
|
|
50
|
-
type GanttLegendProps = ThemedClassName<
|
|
51
|
-
type
|
|
52
|
-
|
|
122
|
+
type GanttLegendProps = Util.ThemedClassName<PropsWithChildren>;
|
|
123
|
+
type GanttAxisToggleProps = {};
|
|
124
|
+
/**
|
|
125
|
+
* Switches the chart between its axes: `time`, the run fitted to the width, and `unit`, one step per
|
|
126
|
+
* event. Renders nothing unless the root was given `onAxisChange`, since the axis is the host's state.
|
|
127
|
+
*/
|
|
128
|
+
declare const GanttAxisToggle: {
|
|
129
|
+
(_: GanttAxisToggleProps): React.JSX.Element | null;
|
|
130
|
+
displayName: string;
|
|
131
|
+
};
|
|
132
|
+
type GanttLegendToggleProps = {};
|
|
133
|
+
/** Switches the legend's column between the lanes' titles and their stats. */
|
|
134
|
+
declare const GanttLegendToggle: {
|
|
135
|
+
(_: GanttLegendToggleProps): React.JSX.Element;
|
|
136
|
+
displayName: string;
|
|
137
|
+
};
|
|
138
|
+
type GanttChartProps = Util.ThemedClassName<{}>;
|
|
53
139
|
export declare const Gantt: {
|
|
54
140
|
Root: React.ForwardRefExoticComponent<Omit<GanttRootProps, "className"> & {
|
|
55
141
|
classNames?: import("@dxos/ui-types").ClassNameValue;
|
|
@@ -57,12 +143,11 @@ export declare const Gantt: {
|
|
|
57
143
|
Legend: React.ForwardRefExoticComponent<Omit<GanttLegendProps, "className"> & {
|
|
58
144
|
classNames?: import("@dxos/ui-types").ClassNameValue;
|
|
59
145
|
} & Pick<React.HTMLAttributes<Element>, "children" | "role" | "style"> & React.RefAttributes<HTMLDivElement>>;
|
|
146
|
+
AxisToggle: typeof GanttAxisToggle;
|
|
147
|
+
LegendToggle: typeof GanttLegendToggle;
|
|
60
148
|
Chart: React.ForwardRefExoticComponent<Omit<{}, "className"> & {
|
|
61
149
|
classNames?: import("@dxos/ui-types").ClassNameValue;
|
|
62
150
|
} & React.RefAttributes<SVGSVGElement>>;
|
|
63
|
-
Meta: React.ForwardRefExoticComponent<Omit<GanttMetaProps, "className"> & {
|
|
64
|
-
classNames?: import("@dxos/ui-types").ClassNameValue;
|
|
65
|
-
} & Pick<React.HTMLAttributes<Element>, "children" | "role" | "style"> & React.RefAttributes<HTMLDivElement>>;
|
|
66
151
|
};
|
|
67
|
-
export type { GanttChartProps, GanttLegendProps,
|
|
152
|
+
export type { GanttAxisToggleProps, GanttChartProps, GanttLegendProps, GanttLegendToggleProps, GanttRootProps };
|
|
68
153
|
//# sourceMappingURL=Gantt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Gantt.d.ts","sourceRoot":"","sources":["../../../../../src/components/Gantt/Gantt.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"Gantt.d.ts","sourceRoot":"","sources":["../../../../../src/components/Gantt/Gantt.tsx"],"names":[],"mappings":"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"}
|