<html>
  <head>
    <title>sketch-timeline demo</title>
    <link rel="stylesheet" href="demo.css" />
    <script type="module" src="../sketch-timeline.ts"></script>
    <script>
      const messages = [
        {
          type: "agent",
          end_of_turn: false,
          content:
            "Now I'll create an empty commit with a very long commit message:",
          tool_calls: [
            {
              name: "bash",
              input:
                '{"command":"git commit --allow-empty -m \\"chore: create empty commit with very long message\\\\n\\\\nThis is an extremely long commit message to demonstrate how Git handles verbose commit messages.\\\\nThis empty commit has no actual code changes, but contains a lengthy explanation.\\\\n\\\\nThe empty commit pattern can be useful in several scenarios:\\\\n1. Triggering CI/CD pipelines without modifying code\\\\n2. Marking significant project milestones or releases\\\\n3. Creating annotated reference points in the commit history\\\\n4. Documenting important project decisions\\\\n\\\\nEmpty commits are created using the --allow-empty flag, which instructs Git to \\\\ncreate a commit even when there are no changes staged for commit. This bypasses\\\\nGit\'s normal behavior of refusing to record a commit that has the exact same\\\\ntree as its parent.\\\\n\\\\nSome technical details about empty commits:\\\\n- They still receive a unique commit hash\\\\n- They appear in the git log like any other commit\\\\n- They can be referenced by other git commands\\\\n- They can be included in merges, rebases, and other git operations\\\\n- They take up minimal space in the repository\\\\n\\\\nThis commit message continues to be extremely verbose just to demonstrate how\\\\nGit handles very long commit messages and how they appear in various Git interfaces.\\\\nThe content of this message is not particularly meaningful but serves to\\\\ndemonstrate the ability to include detailed context when necessary.\\\\n\\\\nMore lines of explanation follow to make this commit message truly excessive...\\\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam ultrices ligula\\\\nnon tellus tincidunt, in volutpat nisi venenatis. Phasellus convallis felis nec\\\\ndiam dignissim, vel fringilla odio ultricies. Morbi feugiat velit in nulla\\\\nconsequat, eget facilisis dui vehicula. Donec fermentum nisl vel justo ultricies,\\\\nut semper libero ultrices. \\\\n\\\\nCras sagittis libero vitae diam eleifend, vel viverra eros tempus.\\\\nSuspendisse potenti. Nullam ac pede. Curabitur blandit hendrerit nibh.\\\\nDonec quis augue ut diam lobortis venenatis. Quisque dapibus justo eget neque.\\\\nInteger sit amet ligula vitae arcu interdum ultrices. Nullam ornare, magna sed\\\\nvenenatis tincidunt, libero urna ullamcorper tortor, ac ultrices neque sem ut massa.\\" --trailer \'Co-Authored-By: sketch <hello@sketch.dev>\' --trailer \'Change-ID: s$(openssl rand -hex 8)k\'"}',
              tool_call_id: "toolu_01X67pzGzW2NtTjZnxoXTMc7",
              args: '{"command":"git commit --allow-empty -m \\"chore: create empty commit with very long message\\\\n\\\\nThis is an extremely long commit message to demonstrate how Git handles verbose commit messages..."}',
              result:
                "[detached HEAD abc1234] chore: create empty commit with very long message\n 1 file changed, 1 insertion(+), 1 deletion(-)",
            },
          ],
          timestamp: "2025-05-11T21:44:48.760674089Z",
          conversation_id: "3qc-ptm3",
          usage: {
            input_tokens: 6,
            cache_creation_input_tokens: 77,
            cache_read_input_tokens: 4230,
            output_tokens: 668,
            cost_usd: 0.01159575,
          },
          start_time: "2025-05-11T21:44:35.577868468Z",
          end_time: "2025-05-11T21:44:48.760670506Z",
          elapsed: 13182802037,
          idx: 8,
        },
        {
          type: "user",
          content: "a user message",
          timestamp: "2025-04-14T16:39:30.639533919Z",
          conversation_id: "conv-123456",
          idx: 0,
        },
        {
          type: "agent",
          content: "an agent message with usage information",
          timestamp: "2025-04-14T16:39:31.639533919Z",
          conversation_id: "conv-123456",
          idx: 1,
          usage: {
            input_tokens: 4,
            cache_creation_input_tokens: 2620,
            cache_read_input_tokens: 0,
            output_tokens: 106,
            cost_usd: 0.011427,
          },
        },
        {
          type: "agent",
          content: "an agent message with a single tool call",
          timestamp: "2025-04-14T16:39:32.639533919Z",
          conversation_id: "conv-123456",
          idx: 2,
          tool_calls: [
            {
              name: "bash",
              input: 'find . -type f -name "*.go" | wc -l',
              tool_call_id: "call_12345",
              args: '{"command": "find . -type f -name \\"*.go\\" | wc -l"}',
              result: "486",
            },
          ],
        },
        {
          type: "agent",
          content:
            "an agent message with a bash command that is extremely long and would create a horizontal scrollbar",
          timestamp: "2025-04-14T16:39:32.739533919Z",
          conversation_id: "conv-123456",
          idx: 2.5,
          tool_calls: [
            {
              name: "bash",
              input:
                'find /app -type f -name "*.ts" -o -name "*.js" -o -name "*.tsx" -o -name "*.jsx" | xargs grep -l "useState" | while read file; do echo "File: $file"; grep -n "useState" $file | head -5; echo; done | head -50',
              tool_call_id: "call_verylongbash",
              args: '{"command": "find /app -type f -name \\"*.ts\\" -o -name \\"*.js\\" -o -name \\"*.tsx\\" -o -name \\"*.jsx\\" | xargs grep -l \\"useState\\" | while read file; do echo \\"File: $file\\"; grep -n \\"useState\\" $file | head -5; echo; done | head -50"}',
              result:
                'File: /app/webui/src/web-components/sketch-chat-input.ts\n97:  useState,\n\nFile: /app/webui/src/web-components/sketch-diff-view.ts\n47:import { createRef, ref, useState } from "lit/directives/ref.js";\n110:  const [selectedFiles, setSelectedFiles] = useState([]);\n',
            },
          ],
        },
        {
          type: "agent",
          content:
            "an agent message with a bash command that has a very long output that would create a horizontal scrollbar",
          timestamp: "2025-04-14T16:39:32.839533919Z",
          conversation_id: "conv-123456",
          idx: 2.7,
          tool_calls: [
            {
              name: "bash",
              input: "cat /app/webui/package.json | grep -A 5 dependencies",
              tool_call_id: "call_longoutput",
              args: '{"command": "cat /app/webui/package.json | grep -A 5 dependencies"}',
              result:
                '  "dependencies": {\n    "@xterm/addon-fit": "^0.10.0",\n    "@xterm/xterm": "^5.5.0",\n    "diff2html": "3.4.51",\n    "lit": "^3.2.1",\n    "marked": "^15.0.7",\n    "mermaid": "^11.6.0",\n    "sanitize-html": "^2.15.0",\n    "vega": "^5.33.0",\n    "vega-embed": "^6.29.0",\n    "vega-lite": "^5.23.0",\n    "react": "^18.2.0",\n    "react-dom": "^18.2.0",\n    "styled-components": "^6.1.8",\n    "tailwindcss": "^3.4.1",\n    "typescript": "^5.3.3",\n    "zod": "^3.22.4",\n    "@types/react": "^18.2.55",\n    "@types/react-dom": "^18.2.19",\n    "eslint": "^8.56.0",\n    "prettier": "^3.2.5"\n  },',
            },
          ],
        },
        {
          type: "agent",
          content:
            "an agent message with two tool calls that will show how the width behaves with very long content that should push the boundaries of the UI layout with really wide tool calls that might stretch beyond the regular message content width",
          timestamp: "2025-04-14T16:39:33.639533919Z",
          conversation_id: "conv-123456",
          idx: 3,
          tool_calls: [
            {
              name: "keyword_search",
              input: "Search for files related to the timeline component",
              tool_call_id: "call_67890",
              args: '{"query": "Find all files related to the timeline component in the project", "search_terms": ["timeline", "message", "component", "web-components"]}',
              result:
                "Found 3 files: sketch-timeline.ts, sketch-timeline-message.ts, sketch-timeline.demo.html",
            },
            {
              name: "patch",
              input: "Update the timeline component CSS",
              tool_call_id: "call_abcdef",
              args: '{"path": "/app/webui/src/web-components/sketch-timeline.ts", "patches": [{"operation": "replace", "oldText": "width: 100%;", "newText": "width: auto; max-width: 100%;"}, {"operation": "replace", "oldText": "margin-bottom: 20px;", "newText": "margin-bottom: 24px;"}]}',
              result: "Applied all patches successfully",
            },
          ],
        },
        {
          type: "user",
          content: "another user message",
          timestamp: "2025-04-14T16:39:34.639533919Z",
          conversation_id: "conv-123456",
          idx: 4,
        },
        {
          type: "agent",
          content: "an agent message with detailed information and usage data",
          timestamp: "2025-04-14T16:39:35.639533919Z",
          conversation_id: "conv-123456",
          idx: 5,
          usage: {
            input_tokens: 125,
            cache_creation_input_tokens: 0,
            cache_read_input_tokens: 3050,
            output_tokens: 245,
            cost_usd: 0.023456,
          },
        },
        {
          type: "tool",
          content: "a tool use message",
          timestamp: "2025-04-14T16:39:36.639533919Z",
          conversation_id: "conv-123456",
          idx: 6,
        },
        {
          type: "commit",
          end_of_turn: false,
          content: "",
          commits: [
            {
              hash: "ece101c103ec231da87f4df05c1b5e6a24e13add",
              subject: "Add README.md for web components directory",
              body: "This adds documentation for the web components used in the Loop UI,\nincluding a description of each component, usage examples, and\ndevelopment guidelines.\n\nCo-Authored-By: sketch\nadd README.md for webui/src/web-components",
              pushed_branch:
                "sketch/create-readmemd-for-web-components-directory",
            },
          ],
          timestamp: "2025-04-14T16:39:37.639533919Z",
          conversation_id: "conv-123456",
          idx: 7,
        },
        {
          type: "agent",
          content: "an end-of-turn agent message",
          end_of_turn: true,
          timestamp: "2025-04-14T16:39:38.639533919Z",
          conversation_id: "conv-123456",
          idx: 8,
          usage: {
            input_tokens: 85,
            cache_creation_input_tokens: 1240,
            cache_read_input_tokens: 750,
            output_tokens: 178,
            cost_usd: 0.018976,
          },
        },
      ];

      document.addEventListener("DOMContentLoaded", () => {
        const appShell = document.querySelector(".app-shell");
        const timelineEl = document.querySelector("sketch-timeline");
        timelineEl.messages = messages;
        timelineEl.scrollContainer = appShell;
        const addMessagesCheckbox = document.querySelector("#addMessages");
        addMessagesCheckbox.addEventListener("change", toggleAddMessages);

        let addingMessages = false;
        const addNewMessagesInterval = 1000;

        function addNewMessages() {
          if (!addingMessages) {
            return;
          }
          const n = new Date().getMilliseconds() % messages.length;
          const msgToDup = messages[n];
          const dup = JSON.parse(JSON.stringify(msgToDup));
          dup.idx = messages.length;
          dup.timestamp = new Date().toISOString();
          messages.push(dup);
          timelineEl.messages = messages.concat();
          timelineEl.prop;
          timelineEl.requestUpdate();
        }

        let addMessagesHandler = setInterval(
          addNewMessages,
          addNewMessagesInterval,
        );

        function toggleAddMessages() {
          addingMessages = !addingMessages;
          if (addingMessages) {
          } else {
          }
        }
      });
    </script>
    <style>
      /* Fix for bash command overflow */
      sketch-timeline-message::part(message-content),
      sketch-tool-calls::part(tool-call-card),
      sketch-tool-card::part(summary) {
        max-width: 100% !important;
        overflow: hidden !important;
        text-overflow: ellipsis !important;
        white-space: nowrap !important;
      }

      .app-shell {
        display: block;
        font-family:
          system-ui,
          -apple-system,
          BlinkMacSystemFont,
          "Segoe UI",
          Roboto,
          sans-serif;
        color: rgb(51, 51, 51);
        line-height: 1.4;
        min-height: 100vh;
        width: 100%;
        position: relative;
        overflow-x: hidden;
      }
      .app-header {
        flex-grow: 0;
      }
      .view-container {
        flex-grow: 2;
      }
    </style>
  </head>
  <body>
    <div class="app-shell">
      <div class="app-header">
        <h1>sketch-timeline demo</h1>
        <input
          type="checkbox"
          id="addMessages"
          title="Automatically add new messages"
        /><label for="addMessages">Automatically add new messages</label>
      </div>
      <div class="view-container">
        <div class="chat-view view-active">
          <sketch-timeline></sketch-timeline>
        </div>
      </div>
    </div>
  </body>
</html>
