> ## Documentation Index
> Fetch the complete documentation index at: https://learn.actionist.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Files

> A shared filesystem your agents read from and write to. Upload documents to knowledge buckets, or browse per-agent memory, instructions, and outboxes.

<div className="mxp-hero xc-border">
  <div className="exp-eyebrow mxp-rise">SHARED FILESYSTEM</div>

  <h2 className="mxp-hero-title mxp-rise" style={{animationDelay:'0.06s'}}>
    Every file your agents touch, <span style={{background:'linear-gradient(90deg,#24A4FF,#9000FF,#E3008E)',WebkitBackgroundClip:'text',backgroundClip:'text',color:'transparent'}}>in one place.</span>
  </h2>

  <p className="mxp-hero-dek mxp-rise" style={{animationDelay:'0.13s'}}>
    Upload documents to company knowledge. Browse per-agent memory, instructions, and outboxes. Edit anything inline. Your agents read and write here in real time.
  </p>
</div>

<div className="w-full py-10">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">The workspace</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">One filesystem, two views.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      The Files page is described by its own header: <em>"A shared filesystem your agents read from and write to. Upload documents to knowledge buckets, or browse per-agent memory, instructions, and outboxes."</em> A pill switcher at the top flips between <strong>Company</strong> (shared knowledge accessible by every agent) and <strong>Agents</strong> (one folder per agent, containing memory logs, context briefs, execution artifacts, and any files it has written during runs — labeled with the agent's display name and showing a "\{N} Folders · \{M} Files" count in the workspace header). The underlying filesystem is the same — the view changes what you browse.
    </p>
  </div>

  <div className="xfl-switcher exp-tool-shell xc-try">
    {/* Header bar with Live badge + switcher */}

    <div style={{display:'flex', alignItems:'center', justifyContent:'space-between', flexWrap:'wrap', gap:'12px', marginBottom:'6px'}}>
      <div className="mxp-srch-chips" style={{marginBottom:0}}>
        <label htmlFor="xfl-ws-co"><input className="mxp-r" type="radio" name="xfl-ws" id="xfl-ws-co" defaultChecked />Company</label>
        <label htmlFor="xfl-ws-ag"><input className="mxp-r" type="radio" name="xfl-ws" id="xfl-ws-ag" />Agents</label>
      </div>

      <span className="xfl-live-badge"><i />live</span>
    </div>

    {/* ── COMPANY panel ── */}

    <div className="xfl-ws-panel xfl-panel-co">
      <div className="xfl-ws-stats">
        <span>Total files:</span><strong><b className="xc-count" style={{"--xc-to":"142"}} data-suffix=""><span className="xc-real">142</span></b></strong>
        <span style={{margin:'0 4px', opacity:0.25}}>·</span>
        <span>Indexed size:</span><strong>38.4 MB</strong>
        <span style={{margin:'0 4px', opacity:0.25}}>·</span>
        <span>Knowledge buckets:</span><strong>6 — all healthy</strong>
        <span style={{margin:'0 4px', opacity:0.25}}>·</span>
        <span>Last sync:</span><strong>just now</strong>
      </div>

      <div style={{marginTop:16, marginBottom:6, fontSize:12, fontFamily:'"JetBrains Mono",monospace', letterSpacing:'0.03em', opacity:0.5}}>docs/</div>

      <div className="xfl-file-grid">
        {/* Folder cards */}

        <div className="xfl-folder-card">
          <div className="xfl-folder-icon">
            <svg viewBox="0 0 24 24">
              <path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z" />
            </svg>
          </div>

          <div className="xfl-folder-name">policies</div>
          <div className="xfl-folder-count">12 files · 4 folders</div>
        </div>

        <div className="xfl-folder-card">
          <div className="xfl-folder-icon">
            <svg viewBox="0 0 24 24">
              <path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z" />
            </svg>
          </div>

          <div className="xfl-folder-name">products</div>
          <div className="xfl-folder-count">28 files · 2 folders</div>
        </div>

        <div className="xfl-folder-card">
          <div className="xfl-folder-icon">
            <svg viewBox="0 0 24 24">
              <path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z" />
            </svg>
          </div>

          <div className="xfl-folder-name">crm</div>
          <div className="xfl-folder-count">57 files · 8 folders</div>
        </div>

        {/* File cards with snippet previews */}

        <div className="xfl-file-card">
          <div className="xfl-file-icon-row">
            <span className="xfl-file-ext">md</span>
          </div>

          <div className="xfl-file-name">brand-voice.md</div>
          <div className="xfl-file-snippet">Tone of voice: direct, warm, zero filler. Short sentences win. No exclamation marks.</div>
          <div className="xfl-file-meta">18 KB · company/docs/</div>
        </div>

        <div className="xfl-file-card">
          <div className="xfl-file-icon-row">
            <span className="xfl-file-ext is-pdf">pdf</span>
            <span className="xfl-file-ext is-sidecar">extracted</span>
          </div>

          <div className="xfl-file-name">pricing-2026.pdf</div>
          <div className="xfl-file-snippet">Pro plan pools usage across the team; Basic is single-seat with a monthly reset.</div>
          <div className="xfl-file-meta">2.4 MB · company/products/</div>
        </div>

        <div className="xfl-file-card">
          <div className="xfl-file-icon-row">
            <span className="xfl-file-ext is-json">json</span>
          </div>

          <div className="xfl-file-name">integrations.json</div>
          <div className="xfl-file-snippet">\{"slack":\{"webhook":"...", "channel":"#ops"}, "stripe":\{...}}</div>
          <div className="xfl-file-meta">3.1 KB · company/ops/</div>
        </div>
      </div>
    </div>

    {/* ── AGENTS panel ── */}

    <div className="xfl-ws-panel xfl-panel-ag">
      <div className="xfl-ws-stats">
        <span>Agents:</span><strong><b className="xc-count" style={{"--xc-to":"4"}} data-suffix=""><span className="xc-real">4</span></b></strong>
        <span style={{margin:'0 4px', opacity:0.25}}>·</span>
        <span>Folders:</span><strong><b className="xc-count" style={{"--xc-to":"24"}} data-suffix=""><span className="xc-real">24</span></b></strong>
        <span style={{margin:'0 4px', opacity:0.25}}>·</span>
        <span>Files:</span><strong><b className="xc-count" style={{"--xc-to":"318"}} data-suffix=""><span className="xc-real">318</span></b></strong>
        <span style={{margin:'0 4px', opacity:0.25}}>·</span>
        <span>Last sync:</span><strong>just now</strong>
      </div>

      <div className="xfl-file-grid" style={{marginTop:16}}>
        <div className="xfl-agent-card">
          <div className="xfl-agent-avatar" style={{background:'linear-gradient(135deg,#9000FF,#486EFF)'}}>M</div>
          <div className="xfl-agent-name">Maya</div>
          <div className="xfl-agent-sub">14 folders · 89 files</div>
        </div>

        <div className="xfl-agent-card">
          <div className="xfl-agent-avatar" style={{background:'linear-gradient(135deg,#C800B3,#9000FF)'}}>F</div>
          <div className="xfl-agent-name">Finance Bot</div>
          <div className="xfl-agent-sub">6 folders · 41 files</div>
        </div>

        <div className="xfl-agent-card">
          <div className="xfl-agent-avatar" style={{background:'linear-gradient(135deg,#24A4FF,#6C37FF)'}}>S</div>
          <div className="xfl-agent-name">Support Agent</div>
          <div className="xfl-agent-sub">4 folders · 27 files</div>
        </div>

        <div className="xfl-agent-card">
          <div className="xfl-agent-avatar" style={{background:'linear-gradient(135deg,#00DBFF,#486EFF)'}}>R</div>
          <div className="xfl-agent-name">Research</div>
          <div className="xfl-agent-sub">4 folders · 161 files</div>
        </div>

        {/* Maya's latest files */}

        <div className="xfl-file-card">
          <div className="xfl-file-icon-row"><span className="xfl-file-ext">md</span></div>
          <div className="xfl-file-name">TODAY.md</div>
          <div className="xfl-file-snippet">09:14 — Northwind call: slides not PDF. 11:02 — Invoice #2041 escalated.</div>
          <div className="xfl-file-meta">agents/maya/memory/</div>
        </div>

        <div className="xfl-file-card">
          <div className="xfl-file-icon-row"><span className="xfl-file-ext is-csv">csv</span></div>
          <div className="xfl-file-name">report-q3.csv</div>
          <div className="xfl-file-snippet">date,revenue,pipeline,notes — 2026-06,...</div>
          <div className="xfl-file-meta">agents/maya/outbox/</div>
        </div>
      </div>
    </div>
  </div>

  <Note>
    Choosing between Company and Agents is a question of audience. If other agents need the file, it belongs in <strong>Company</strong>. If it is specific to one agent's memory or outputs, it lives under <strong>Agents</strong>.
  </Note>
</div>

<hr className="xc-divider" />

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">At a glance</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">What the four stats tell you.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      The hero strip at the top of the Files page gives you a live read on the state of your workspace.
    </p>
  </div>

  <Columns cols={4}>
    <Card title="Total files" icon="files">
      Count of every file tracked across both workspaces — company files and all agent folders. Useful for auditing how much material your agents have generated or been given over time.
    </Card>

    <Card title="Indexed size" icon="database">
      Total volume of content chunked and indexed for semantic search. Uploaded documents are converted to <code>.extracted.md</code> sidecars; this tile shows how much knowledge is live and searchable right now.
    </Card>

    <Card title="Knowledge buckets" icon="folder-check">
      Number of named knowledge buckets in your Company workspace. Buckets organise files by topic — for example, <code>docs</code>, <code>policies</code>, <code>products</code>. The "all healthy" sub-label confirms every bucket is indexed and accessible.
    </Card>

    <Card title="Last sync" icon="refresh-cw">
      Timestamp of the most recent file-system event processed by the live sync listener. "Auto-reindex on write" means you do not need to trigger manual reindexing — every agent write or upload is picked up automatically.
    </Card>
  </Columns>

  <Info>
    A pulsing <strong>live</strong> badge in the page header confirms that realtime file sync is active. If it ever disappears, click <strong>Refresh</strong> to force a full reload.
  </Info>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Navigation</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Browse and open a file.</h2>
  </div>

  <Steps>
    <Step title="Open Files in the sidebar" icon="folder-open">
      Click <strong>Files</strong> in the sidebar. The page loads and defaults to the <strong>Company</strong> workspace if it has files.
    </Step>

    <Step title="Switch to the workspace you need" icon="toggle-left">
      Click <strong>Company</strong> or <strong>Agents</strong> in the workspace switcher. Company shows shared knowledge files. Agents shows one folder per agent, each labeled with the agent's display name.
    </Step>

    <Step title="Enter a folder" icon="folder">
      Click any folder card to enter it. The breadcrumb bar at the top updates — click any crumb to jump back up a level.
    </Step>

    <Step title="Search within a workspace" icon="search">
      Type in the search bar (placeholder: "Search company files..." or "Search agent files...") to filter file names in place. Search is case-insensitive and recurses through folders. Click <strong>X</strong> to clear. Note that search resets when you switch between Company and Agents.
    </Step>

    <Step title="Click a file to preview it" icon="eye">
      Click any file card (tooltip: "click to preview") to open the full-screen preview dialog. Text-type files (<code>.md</code>, <code>.json</code>, <code>.yaml</code>, <code>.csv</code>, <code>.log</code>, <code>.txt</code>) show up to 240 characters of content directly on the card before you open them.
    </Step>
  </Steps>

  {/* TODO(image): files-overview — IMAGE SPEC: Full Files page screenshot: Company workspace selected, hero strip with four stat tiles visible at top, workspace switcher pill (Company | Agents), and a grid of file cards — several showing 240-character snippet previews for .md and .json files. Live badge pulsing in the page header. — replace this CSS mock with the real screenshot */}

  <div className="mxp-window">
    <div className="mxp-window-bar">
      <span className="mxp-window-dot xfl-dot-red" />

      <span className="mxp-window-dot xfl-dot-yellow" />

      <span className="mxp-window-dot xfl-dot-green" />

      <span className="mxp-window-title">Files — Company workspace</span>
      <span className="xfl-live-badge" style={{marginLeft:'auto'}}><i />live</span>
    </div>

    <div className="xfl-mock-stat-strip">
      <div className="xfl-mock-stat"><span className="xfl-mock-stat-val">142</span><span className="xfl-mock-stat-lbl">Total files</span></div>

      <div className="xfl-mock-stat-sep" />

      <div className="xfl-mock-stat"><span className="xfl-mock-stat-val">38.4 MB</span><span className="xfl-mock-stat-lbl">Indexed size</span></div>

      <div className="xfl-mock-stat-sep" />

      <div className="xfl-mock-stat"><span className="xfl-mock-stat-val">6</span><span className="xfl-mock-stat-lbl">Knowledge buckets</span></div>

      <div className="xfl-mock-stat-sep" />

      <div className="xfl-mock-stat"><span className="xfl-mock-stat-val xfl-mock-stat-green">just now</span><span className="xfl-mock-stat-lbl">Last sync</span></div>
    </div>

    <div className="xfl-mock-switcher-row">
      <div className="mxp-srch-chips" style={{marginBottom:0}}>
        <label className="xfl-mock-chip-active">Company</label>
        <label className="xfl-mock-chip">Agents</label>
      </div>

      <span className="xfl-mock-search-bar">Search company files...</span>
    </div>

    <div className="xfl-mock-grid">
      <div className="xfl-mock-folder-row">
        <div className="xfl-mock-row-icon xfl-mock-icon-folder" /><span>policies</span><span className="xfl-mock-row-meta">12 files · 4 folders</span>
      </div>

      <div className="xfl-mock-folder-row">
        <div className="xfl-mock-row-icon xfl-mock-icon-folder" /><span>products</span><span className="xfl-mock-row-meta">28 files · 2 folders</span>
      </div>

      <div className="xfl-mock-file-row">
        <span className="xfl-file-ext">md</span><span className="xfl-mock-file-label">brand-voice.md</span><span className="xfl-mock-row-snippet">Tone of voice: direct, warm, zero filler...</span>
      </div>

      <div className="xfl-mock-file-row">
        <span className="xfl-file-ext is-pdf">pdf</span><span className="xfl-file-ext is-sidecar">extracted</span><span className="xfl-mock-file-label">pricing-2026.pdf</span><span className="xfl-mock-row-snippet">Pro plan pools usage across the team...</span>
      </div>

      <div className="xfl-mock-file-row">
        <span className="xfl-file-ext is-json">json</span><span className="xfl-mock-file-label">integrations.json</span><span className="xfl-mock-row-snippet">\{"slack":\{"webhook":"..."}}</span>
      </div>
    </div>
  </div>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Preview and edit</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Inside the preview dialog.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Actionist detects the file type and opens the right editor automatically. The dialog header always shows the file's byte size, full path, type label, and current save state. Click a file type to see how it looks:
    </p>
  </div>

  <div className="xfl-ft-tabs exp-tool-shell xc-try">
    <div className="mxp-srch-chips">
      <label htmlFor="xfl-ft-md"><input className="mxp-r" type="radio" name="xfl-ft" id="xfl-ft-md" defaultChecked />Markdown / MDX</label>
      <label htmlFor="xfl-ft-txt"><input className="mxp-r" type="radio" name="xfl-ft" id="xfl-ft-txt" />Text and code</label>
      <label htmlFor="xfl-ft-img"><input className="mxp-r" type="radio" name="xfl-ft" id="xfl-ft-img" />Media</label>
      <label htmlFor="xfl-ft-uns"><input className="mxp-r" type="radio" name="xfl-ft" id="xfl-ft-uns" />Unsupported</label>
    </div>

    {/* ── Markdown panel ── */}

    <div className="xfl-ft-panel xfl-ft-panel-md">
      <div className="xfl-dialog-mock">
        <div className="xfl-dialog-header">
          <div className="xfl-dialog-path">company/docs/brand-voice.md · 18 KB · Markdown</div>

          <div className="xfl-dialog-actions">
            <span className="xfl-unsaved-pill">Unsaved</span>
            <span className="xfl-dialog-btn is-primary">Save</span>
          </div>
        </div>

        <div className="xfl-toolbar-mock">
          <span className="xfl-toolbar-btn"><strong>B</strong></span>
          <span className="xfl-toolbar-btn"><em>I</em></span>
          <span className="xfl-toolbar-btn">H1</span>
          <span className="xfl-toolbar-btn">H2</span>

          <span className="xfl-toolbar-sep" />

          <span className="xfl-toolbar-btn">Link</span>
          <span className="xfl-toolbar-btn">Code</span>
          <span className="xfl-source-toggle">Source mode</span>
        </div>

        <div className="xfl-dialog-body">
          <div style={{fontWeight:700, fontSize:'16px', marginBottom:'6px'}}>Brand Voice Guidelines</div>
          <p>Tone of voice: direct, warm, zero filler. Short sentences win. No exclamation marks. Write like you are briefing a smart colleague — not selling to a stranger.</p>
          <p style={{marginTop:'8px'}}>When in doubt, cut the adjective.</p>
        </div>

        <div className="xfl-dialog-footer">1,840 chars · 42 lines</div>
      </div>

      <p style={{fontSize:'13px', opacity:0.7, marginTop:'12px'}}>Files with <code>.md</code>, <code>.markdown</code>, or <code>.mdx</code> extensions open in the <code>@mdxeditor/editor</code> rich-text editor. Use the <strong>Rich text / Source mode</strong> toggle (top-right of the toolbar) to switch views. The orange <strong>Unsaved</strong> pill appears whenever edits diverge from the saved version. A three-button modal appears on close if changes are unsaved: <strong>Save changes</strong>, <strong>Discard changes</strong>, or <strong>Continue editing</strong>.</p>
    </div>

    {/* ── Text / code panel ── */}

    <div className="xfl-ft-panel xfl-ft-panel-txt">
      <div className="xfl-dialog-mock">
        <div className="xfl-dialog-header">
          <div className="xfl-dialog-path">agents/maya/memory/TODAY.md · 4.1 KB · Text</div>

          <div className="xfl-dialog-actions">
            <span className="xfl-dialog-btn is-primary">Save</span>
          </div>
        </div>

        <div className="xfl-code-body">
          <div className="xfl-code-line"><span className="xfl-code-num">1</span><span className="xfl-code-text"># TODAY — 2026-06-11</span></div>
          <div className="xfl-code-line"><span className="xfl-code-num">2</span><span className="xfl-code-text"> </span></div>
          <div className="xfl-code-line"><span className="xfl-code-num">3</span><span className="xfl-code-text">## 09:14 · chat · maya</span></div>
          <div className="xfl-code-line"><span className="xfl-code-num">4</span><span className="xfl-code-text">- Northwind call: reports as slides, not PDF</span></div>
          <div className="xfl-code-line"><span className="xfl-code-num">5</span><span className="xfl-code-text">- Saved preference to Memory.md</span></div>
          <div className="xfl-code-line"><span className="xfl-code-num">6</span><span className="xfl-code-text"> </span></div>
          <div className="xfl-code-line"><span className="xfl-code-num">7</span><span className="xfl-code-text">## 11:02 · workflow · invoice-chase</span></div>
          <div className="xfl-code-line"><span className="xfl-code-num">8</span><span className="xfl-code-text">- Sent 3 reminders. #2041 escalated.</span></div>
        </div>

        <div className="xfl-dialog-footer">3,920 chars · 88 lines</div>
      </div>

      <p style={{fontSize:'13px', opacity:0.7, marginTop:'12px'}}>Plain text and code files open in a line-numbered textarea. Supported extensions include <code>.txt</code>, <code>.log</code>, <code>.csv</code>, <code>.tsv</code>, <code>.json</code>, <code>.jsonl</code>, <code>.yaml</code>, <code>.yml</code>, <code>.xml</code>, <code>.html</code>, <code>.css</code>, <code>.js</code>, <code>.ts</code>, <code>.py</code>, <code>.rb</code>, <code>.go</code>, <code>.rs</code>, <code>.sh</code>, <code>.sql</code>, and more. The same <strong>Save</strong> and <strong>Unsaved</strong> pill behavior applies.</p>
    </div>

    {/* ── Media panel ── */}

    <div className="xfl-ft-panel xfl-ft-panel-img">
      <div className="xfl-dialog-mock">
        <div className="xfl-dialog-header">
          <div className="xfl-dialog-path">agents/research/outbox/screenshot.png · 3.8 MB · Image</div>

          <div className="xfl-dialog-actions">
            <span className="xfl-dialog-btn">Download</span>
          </div>
        </div>

        <div className="xfl-img-viewer">
          <div className="xfl-img-placeholder">
            <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" style={{opacity:0.5}}>
              <rect x="3" y="3" width="18" height="18" rx="2" ry="2" />

              <circle cx="8.5" cy="8.5" r="1.5" />

              <polyline points="21 15 16 10 5 21" />
            </svg>

            <span>screenshot.png</span>
          </div>
        </div>

        <div className="xfl-dialog-footer">3.8 MB · inline preview — under 25 MB limit</div>
      </div>

      <p style={{fontSize:'13px', opacity:0.7, marginTop:'12px'}}>Image and video files open in a centered lightbox viewer. Supported image formats: <code>.png</code>, <code>.jpg</code>, <code>.jpeg</code>, <code>.gif</code>, <code>.webp</code>, <code>.svg</code>, <code>.bmp</code>. Supported video formats: <code>.mp4</code>, <code>.webm</code>, <code>.mov</code>, <code>.m4v</code>, <code>.ogv</code>. Media files up to <strong>25 MB</strong> can be previewed inline. Files larger than 25 MB cannot be previewed — click <strong>Download</strong> in the dialog header instead.</p>
    </div>

    {/* ── Unsupported panel ── */}

    <div className="xfl-ft-panel xfl-ft-panel-uns">
      <div className="xfl-dialog-mock">
        <div className="xfl-dialog-header">
          <div className="xfl-dialog-path">agents/maya/outbox/report.xlsx · 890 KB · Spreadsheet</div>

          <div className="xfl-dialog-actions">
            <span className="xfl-dialog-btn">Show in folder</span>
            <span className="xfl-dialog-btn">Download</span>
          </div>
        </div>

        <div className="xfl-unsupported">
          <div className="xfl-unsupported-icon">
            <svg width="36" height="36" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" strokeLinejoin="round">
              <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z" />

              <polyline points="13 2 13 9 20 9" />

              <line x1="10" y1="13" x2="14" y2="13" />
            </svg>
          </div>

          <div style={{fontWeight:600, fontSize:'14px'}}>Inline preview is not supported.</div>
          <div style={{fontSize:'12.5px', opacity:0.65, marginTop:'4px'}}>Use Download to save the file to disk, or Show in folder to open it in Finder / Explorer.</div>
        </div>
      </div>

      <p style={{fontSize:'13px', opacity:0.7, marginTop:'12px'}}>If Actionist cannot render a file inline, the dialog shows "Inline preview is not supported." Use the <strong>Download</strong> button in the header to save the file to disk, or <strong>Show in folder</strong> (desktop only) to reveal it in Finder or Windows Explorer.</p>
    </div>
  </div>

  {/* TODO(image): files-editor-dialog — IMAGE SPEC: Preview/edit dialog open on a .md file: rich-text toolbar visible at the top, the 'Rich text' / 'Source mode' toggle highlighted in the top-right of the toolbar area, and the orange 'Unsaved' pill visible in the dialog header. Footer shows character and line count. — replace this CSS mock with the real screenshot */}

  <div className="mxp-window" style={{marginTop:'20px'}}>
    <div className="mxp-window-bar">
      <span className="mxp-window-dot xfl-dot-red" />

      <span className="mxp-window-dot xfl-dot-yellow" />

      <span className="mxp-window-dot xfl-dot-green" />

      <span className="mxp-window-title">brand-voice.md — preview dialog</span>
    </div>

    <div className="xfl-mock-dialog-header">
      <span className="xfl-mock-mono">company/docs/brand-voice.md · 18 KB · Markdown</span>

      <div style={{display:'flex', alignItems:'center', gap:'8px'}}>
        <span className="xfl-unsaved-pill">Unsaved</span>
        <span className="xfl-dialog-btn">Copy path</span>
        <span className="xfl-dialog-btn">Download</span>
        <span className="xfl-dialog-btn is-primary">Save</span>
      </div>
    </div>

    <div className="xfl-mock-toolbar-row">
      <span className="xfl-toolbar-btn"><strong>B</strong></span>
      <span className="xfl-toolbar-btn"><em>I</em></span>
      <span className="xfl-toolbar-btn">H1</span>
      <span className="xfl-toolbar-btn">H2</span>

      <span className="xfl-toolbar-sep" />

      <span className="xfl-toolbar-btn">Link</span>
      <span className="xfl-toolbar-btn">Code</span>
      <span className="xfl-source-toggle xfl-mock-toggle-highlight">Source mode</span>
    </div>

    <div className="xfl-mock-editor-body">
      <div style={{fontWeight:700, fontSize:'15px', marginBottom:'8px'}}>Brand Voice Guidelines</div>

      <div className="xfl-mock-para-row" />

      <div className="xfl-mock-para-row xfl-mock-para-w80" />

      <div className="xfl-mock-para-row xfl-mock-para-w60" />

      <div style={{height:'12px'}} />

      <div className="xfl-mock-para-row xfl-mock-para-w40" />
    </div>

    <div className="xfl-mock-footer-row">
      <span className="xfl-mock-mono" style={{opacity:0.5}}>1,840 chars · 42 lines</span>
    </div>
  </div>

  <Tip>
    The orange <strong>Unsaved</strong> pill only lights up on real user edits — not when you first open the file. The editor canonicalizes Markdown on load, so the baseline is the canonical form, not the raw bytes.
  </Tip>
</div>

<hr className="xc-divider" />

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Knowledge</span>
    <h2 id="upload-to-company-knowledge" className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Upload to company knowledge.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Upload a product spec once and every agent can draw on it through semantic search — without per-agent configuration. Watch a file move through its full pipeline, from drop to indexed:
    </p>
  </div>

  <div className="mxp-pipe">
    <div className="mxp-pipe-node"><strong>Pick file</strong><span>Drop into the Upload Documents dialog, or click to browse. Up to 100 files at once, 10 MB each.</span></div>

    <div className="mxp-pipe-link" />

    <div className="mxp-pipe-node"><strong>Convert</strong><span>PDF, DOCX, XLSX are text-extracted. MD, TXT, CSV, JSON index directly — no extraction step.</span></div>

    <div className="mxp-pipe-link d2" />

    <div className="mxp-pipe-node"><strong>.extracted.md sidecar</strong><span>Extracted text lands as a plain Markdown sidecar next to the original, immediately readable.</span></div>

    <div className="mxp-pipe-link d3" />

    <div className="mxp-pipe-node"><strong>Indexed</strong><span>Chunks are embedded and indexed. Every agent's semantic search returns results from your document on the very next query.</span></div>
  </div>

  <div className="exp-tool-shell" style={{padding:'20px 24px', marginTop:'8px'}}>
    <div className="xfl-upload-row">
      <span className="xfl-upload-filename">pricing-2026.pdf <span className="xfl-upload-size">· 2.4 MB</span></span>

      <span className="mxp-life">
        <span className="lf1"><i style={{background:'#24A4FF'}} />Uploading...</span>
        <span className="lf2"><i style={{background:'#6C37FF'}} />Extracting text...</span>
        <span className="lf3"><i style={{background:'#AC00D9'}} />Uploaded — indexing pending. Searchable shortly.</span>
        <span className="lf4"><i style={{background:'#6EE3B5'}} /><span className="mxp-badge-x">extracted</span> indexed and searchable</span>
      </span>
    </div>

    <div className="xfl-upload-row" style={{marginTop:'10px'}}>
      <span className="xfl-upload-filename">runbook.md <span className="xfl-upload-size">· 18 KB</span></span>

      <span className="mxp-life">
        <span className="lf1"><i style={{background:'#24A4FF'}} />Uploading...</span>
        <span className="lf2"><i style={{background:'#6EE3B5'}} /><span className="mxp-badge-x">indexed</span> searchable immediately — no extraction step</span>
        <span className="lf3"><i style={{background:'#6EE3B5'}} /><span className="mxp-badge-x">indexed</span> searchable immediately — no extraction step</span>
        <span className="lf4"><i style={{background:'#6EE3B5'}} /><span className="mxp-badge-x">indexed</span> searchable immediately — no extraction step</span>
      </span>
    </div>
  </div>

  <div className="exp-surface-grid" style={{marginTop:'22px'}}>
    <div className="exp-surface-tile">
      <strong>No manual reindex needed.</strong> Every upload and every agent write triggers the live sync listener automatically — the Indexed size stat updates in real time.
    </div>

    <div className="exp-surface-tile">
      <strong>Deleting purges completely.</strong> When you delete a file, its <code>.extracted.md</code> sidecar is deleted in the same operation. The content disappears from agent retrieval entirely — no stale chunks remain.
    </div>

    <div className="exp-surface-tile">
      <strong>Oversized files skip cleanly.</strong> Files over 10 MB are flagged inline and excluded — the remaining valid files in the same drop are still queued and uploaded.
    </div>
  </div>

  <Info>
    The upload button only appears in the <strong>Company</strong> workspace. Files uploaded here are accessible to every agent in your workspace. For files that belong to a single agent, browse to that agent's folder in the Agents workspace and use your operating system or a workflow to place them there.
  </Info>

  <Steps>
    <Step title="Click 'Upload to knowledge'" icon="upload">
      In the Files page header (Company workspace), click <strong>Upload to knowledge</strong>. Tooltip: "Upload documents to company files." The <strong>Upload Documents</strong> dialog opens.
    </Step>

    <Step title="Choose a destination bucket" icon="folder">
      Use the <strong>Destination Bucket</strong> dropdown to select which knowledge bucket the files should land in. If a <code>docs</code> bucket exists in your workspace, it is selected by default.
    </Step>

    <Step title="Add your files" icon="file-plus">
      Drag files onto the dropzone ("Drop files here or click to browse") or click to open the native file picker. You can drop up to <strong>100 files</strong> at once.

      Accepted formats: <strong>PDF, DOCX, XLSX, XML, HTML, CSV, TXT, MD</strong>. Maximum <strong>10 MB per file</strong>.

      Oversized files are flagged inline and skipped automatically — the valid files in the same drop are still queued.
    </Step>

    <Step title="Review the file list" icon="list-checks">
      Each queued file shows its name and size. Remove individual files with the remove button, or click <strong>Add more files</strong> to append to the queue.
    </Step>

    <Step title="Upload" icon="check">
      Click <strong>Upload N files</strong>. A progress indicator appears while the upload runs. On completion, each document is converted to a retrievable <code>.extracted.md</code> sidecar and auto-indexed — no manual reindex step needed.
    </Step>

    <Step title="Done" icon="circle-check">
      Click <strong>Done</strong> to close the dialog. The new files appear in the Company workspace grid immediately, and the <strong>Indexed size</strong> stat updates to reflect the new chunks.
    </Step>
  </Steps>

  <div className="mxp-window" style={{marginTop:'20px'}}>
    <div className="mxp-window-bar">
      <span className="mxp-window-dot xfl-dot-red" />

      <span className="mxp-window-dot xfl-dot-yellow" />

      <span className="mxp-window-dot xfl-dot-green" />

      <span className="mxp-window-title">Upload Documents</span>
    </div>

    <div style={{padding:'20px 22px'}}>
      <div className="xfl-mock-field-label">Destination Bucket</div>

      <div className="xfl-mock-dropdown">
        <span>docs</span>

        <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round">
          <polyline points="6 9 12 15 18 9" />
        </svg>
      </div>

      <div className="xfl-mock-dropzone">
        <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" style={{opacity:0.5}}>
          <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />

          <polyline points="17 8 12 3 7 8" />

          <line x1="12" y1="3" x2="12" y2="15" />
        </svg>

        <span>Drop files here or click to browse</span>
        <span style={{fontSize:'11px', opacity:0.5}}>PDF, DOCX, XLSX, XML, HTML, CSV, TXT, MD · max 10 MB each</span>
      </div>

      <div className="xfl-mock-queue">
        <div className="xfl-mock-queue-row"><span className="xfl-file-ext is-pdf">pdf</span><span className="xfl-mock-queue-name">product-spec.pdf</span><span className="xfl-mock-queue-size">4.2 MB</span></div>
        <div className="xfl-mock-queue-row"><span className="xfl-file-ext">md</span><span className="xfl-mock-queue-name">runbook.md</span><span className="xfl-mock-queue-size">18 KB</span></div>
        <div className="xfl-mock-queue-row"><span className="xfl-file-ext is-csv">csv</span><span className="xfl-mock-queue-name">pricing.xlsx</span><span className="xfl-mock-queue-size">890 KB</span></div>
      </div>

      <div className="xfl-mock-upload-btn">Upload 3 files</div>
    </div>
  </div>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Actions</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">What you can do with a file.</h2>
  </div>

  <AccordionGroup>
    <Accordion title="Right-click a file card" icon="mouse-pointer-click" defaultOpen={true}>
      Right-clicking any file card opens a context menu with two actions:

      * <strong>Copy content</strong> — copies the full file text to the clipboard. Available for all text-type files.
      * <strong>Delete</strong> — opens a confirmation modal: <em>"Permanently delete "\[name]"? This cannot be undone."</em> Confirm to delete. Deleting a file also removes its <code>.extracted.md</code> AI sidecar in the same operation, so stale content is fully purged from agent retrieval.

      <Warning>
        If you delete a file that is currently being written by an active agent run, you are shown two options: <strong>Stop run & Delete</strong> or <strong>Delete anyway</strong>. Use "Stop run & Delete" unless you are certain the run can be interrupted safely.
      </Warning>
    </Accordion>

    <Accordion title="Dialog header actions" icon="panel-top">
      Once a file is open in the preview dialog, the header offers four actions:

      * <strong>Copy path</strong> — copies the file's absolute path to the clipboard.
      * <strong>Show in folder</strong> — reveals the file in Finder (macOS) or Windows Explorer. Desktop-only.
      * <strong>Download</strong> — opens the native save-as dialog to export the file to disk.
      * <strong>Save</strong> — saves the current editor content.
    </Accordion>
  </AccordionGroup>

  {/* TODO(image): files-context-menu — IMAGE SPEC: A .md file card with the right-click context menu Popover open. 'Copy content' at the top, 'Delete' below it. The file card behind the menu shows a text snippet preview. — replace this CSS mock with the real screenshot */}

  <div className="xfl-mock-context-wrap">
    <div className="xfl-file-card xfl-mock-card-behind">
      <div className="xfl-file-icon-row"><span className="xfl-file-ext">md</span></div>
      <div className="xfl-file-name">brand-voice.md</div>
      <div className="xfl-file-snippet">Tone of voice: direct, warm, zero filler. Short sentences win. No exclamation marks.</div>
      <div className="xfl-file-meta">18 KB · company/docs/</div>
    </div>

    <div className="xfl-mock-context-menu">
      <div className="xfl-mock-ctx-item">
        <svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
          <rect x="9" y="9" width="13" height="13" rx="2" />

          <path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" />
        </svg>

        Copy content
      </div>

      <div className="xfl-mock-ctx-sep" />

      <div className="xfl-mock-ctx-item xfl-ctx-danger">
        <svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
          <polyline points="3 6 5 6 21 6" />

          <path d="M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6" />

          <path d="M10 11v6" />

          <path d="M14 11v6" />
        </svg>

        Delete
      </div>
    </div>
  </div>
</div>

<hr className="xc-divider" />

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Reference</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Limits at a glance.</h2>
  </div>

  <div className="mxs-limits">
    <div className="xfl-limit"><b className="xc-count" style={{"--xc-to":"10"}} data-suffix=" MB"><span className="xc-real">10 MB</span></b><span>max upload size per file</span></div>
    <div className="xfl-limit"><b className="xc-count" style={{"--xc-to":"100"}} data-suffix=""><span className="xc-real">100</span></b><span>max files per drop</span></div>
    <div className="xfl-limit"><b className="xc-count" style={{"--xc-to":"25"}} data-suffix=" MB"><span className="xc-real">25 MB</span></b><span>max media inline preview</span></div>
    <div className="xfl-limit"><b className="xc-count" style={{"--xc-to":"10"}} data-suffix=" MB"><span className="xc-real">10 MB</span></b><span>max in-app save size</span></div>
    <div className="xfl-limit"><b className="xc-count" style={{"--xc-to":"240"}} data-suffix=""><span className="xc-real">240</span></b><span>chars shown in snippet preview</span></div>
    <div className="xfl-limit"><b className="xc-count" style={{"--xc-to":"0"}} data-suffix=""><span className="xc-real">0</span></b><span>archives or executables accepted — blocked unconditionally</span></div>
  </div>

  <div style={{marginTop:'20px'}}>
    | Limit                           | Value                                                                                                                                                                                       |
    | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | Upload: max file size           | <strong>10 MB</strong> per file                                                                                                                                                             |
    | Upload: max files per drop      | <strong>100 files</strong>                                                                                                                                                                  |
    | Upload: accepted formats        | PDF, DOCX, XLSX, XML, HTML, CSV, TXT, MD                                                                                                                                                    |
    | In-app save: max file size      | <strong>10 MB</strong>                                                                                                                                                                      |
    | In-app save: blocked extensions | <code>.exe</code> <code>.dll</code> <code>.so</code> <code>.dylib</code> <code>.bat</code> <code>.cmd</code> <code>.sh</code>                                                               |
    | Upload: blocked types           | Archives (<code>.zip</code> <code>.tar</code> <code>.gz</code> <code>.7z</code> <code>.rar</code>) + executables                                                                            |
    | Media inline preview: max size  | <strong>25 MB</strong>                                                                                                                                                                      |
    | Snippet preview: max length     | 240 characters (markdown-stripped)                                                                                                                                                          |
    | Snippet preview: eligible types | <code>.md</code> <code>.markdown</code> <code>.txt</code> <code>.json</code> <code>.jsonl</code> <code>.yaml</code> <code>.yml</code> <code>.csv</code> <code>.tsv</code> <code>.log</code> |
  </div>

  <Note>
    The 10 MB upload limit is enforced by the app's validation logic. An older error string in the app reads "50 MB" — that string is stale. The true limit is <strong>10 MB</strong>, confirmed in the source.
  </Note>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">In practice</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Agents write here. You find it here.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Every artifact an agent produces lands in its outbox folder the moment the run ends. No chasing threads, no copy-pasting from chat.
    </p>
  </div>

  <div className="xc-quote">
    <p>"Every artifact an agent produces is sitting in Files before you ask where it went."</p>
    <span>— the workflow, not the person</span>
  </div>

  <div className="xc-phone" style={{marginTop:'24px'}}>
    <div className="xc-phone-head">
      <div className="xc-phone-ava" style={{background:'linear-gradient(135deg,#FD840C,#E3008E)'}}>F</div>

      <div>
        <strong>Felix</strong>
        <span className="handle">@felix\_actionist\_bot</span>
      </div>

      <span className="xc-phone-online">ONLINE</span>
    </div>

    <div className="xc-phone-body">
      <div className="xc-bub me">
        Can you pull the May monthly report and save it to Files?
        <span className="t">09:03</span>
      </div>

      <span className="xc-phone-badge">SEEN · READING CONTEXT</span>

      <div className="xc-bub them">
        On it. Pulling figures from the ops bucket now.
        <span className="t">09:03</span>
      </div>

      <span className="xc-phone-badge">TOOL · WRITE\_FILE</span>

      <div className="xc-bub them">
        Done. The report is saved at <strong>agents/felix/outbox/may-2026-report.csv</strong> — 847 rows, all reconciled. Open it from the Agents workspace anytime.
        <span className="t">09:04</span>
      </div>
    </div>
  </div>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Best practices</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Getting the most from Files.</h2>
  </div>

  <div className="exp-surface-grid" style={{gridTemplateColumns:'repeat(auto-fit,minmax(260px,1fr))'}}>
    <div className="exp-surface-tile" style={{fontSize:'13.5px',lineHeight:'1.6'}}><strong>Upload cross-team knowledge to Company.</strong> Company files are accessible to every agent via semantic search. Agent folders are scoped to that one agent. For runbooks, product specs, pricing tables, and anything else your whole workforce needs, upload to Company.</div>
    <div className="exp-surface-tile" style={{fontSize:'13.5px',lineHeight:'1.6'}}><strong>Snippet previews tell you what's inside.</strong> Files with extensions <code>.md</code>, <code>.json</code>, <code>.yaml</code>, <code>.csv</code>, <code>.log</code>, and <code>.txt</code> show the first 240 characters on the card. If a card shows no snippet, the file is binary or unsupported — use Download rather than editing inline.</div>
    <div className="exp-surface-tile" style={{fontSize:'13.5px',lineHeight:'1.6'}}><strong>The Unsaved pill is your save signal.</strong> The orange Unsaved pill in the dialog header appears whenever your edits diverge from the saved version — if it is not showing, your changes are already saved.</div>
    <div className="exp-surface-tile" style={{fontSize:'13.5px',lineHeight:'1.6'}}><strong>Deleting a file purges it from the AI index.</strong> When you delete an uploaded file, its <code>.extracted.md</code> sidecar is deleted in the same operation. The content disappears from agent retrieval completely. If you only delete the sidecar manually, the original remains on disk.</div>
    <div className="exp-surface-tile" style={{fontSize:'13.5px',lineHeight:'1.6'}}><strong>Media files over 25 MB cannot preview inline.</strong> The 25 MB inline preview cap is enforced at the system level. For large video captures or high-resolution screenshots, click Download in the dialog header to save the file locally.</div>
    <div className="exp-surface-tile" style={{fontSize:'13.5px',lineHeight:'1.6'}}><strong>The Source mode toggle is session-sticky.</strong> Switching between Rich text and Source mode is preserved while the preview dialog is open. It resets to Rich text the next time you open any file. Use Source mode when you need to write or inspect raw Markdown — frontmatter, fenced code blocks, or custom HTML.</div>
    <div className="exp-surface-tile" style={{fontSize:'13.5px',lineHeight:'1.6'}}><strong>Search resets when you switch workspaces.</strong> If you searched for a term in Company and then switch to Agents, the search field clears. Re-enter your query after switching.</div>
    <div className="exp-surface-tile" style={{fontSize:'13.5px',lineHeight:'1.6'}}><strong>The Live badge confirms sync is running.</strong> The pulsing live badge in the page header (tooltip: "Realtime file sync is active") confirms the event listener is running. If it disappears, click Refresh to force a full reload. Under normal conditions you should not need the Refresh button.</div>
  </div>
</div>

<div className="w-full py-10 xc-rise">
  <Warning>
    <strong>Files is only available in the Actionist desktop app.</strong> The web app returns an unavailable state for the Files section. All upload, preview, and edit features require the desktop app installed on macOS or Windows.
  </Warning>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-cta-panel xc-border">
    <div className="relative z-10 flex flex-col items-center gap-5 max-w-2xl mx-auto">
      <span className="actionist-eyebrow">Always in sync</span>

      <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-white leading-tight">
        Your agents are already writing. Now you can see everything.
      </h2>

      <p className="text-base md:text-lg text-white/85">
        Open the Files page, upload your first document, and watch your agents draw on it in real time.
      </p>

      <div className="flex flex-wrap items-center justify-center gap-3 pt-2">
        <a className="actionist-cta-btn-primary" href="https://app.actionist.ai" target="_blank" rel="noreferrer">
          Open the Dashboard

          <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round">
            <path d="M5 12h14" />

            <path d="m12 5 7 7-7 7" />
          </svg>
        </a>

        <a className="actionist-cta-btn-secondary" href="mailto:support@actionist.ai">
          Email the team
        </a>
      </div>
    </div>
  </div>
</div>

<div className="w-full pt-2 pb-6">
  <p className="actionist-trust-line">
    Every file lives on your machine — readable, editable, version-controllable.<br />
    Indexed on-device · Auto-synced on every agent write · Nothing leaves your workspace.
  </p>
</div>

<div className="w-full pb-16 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Keep going</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Next steps.</h2>
  </div>

  <Columns cols={4}>
    <Card title="Memory" icon="brain" href="/Folders/memory">
      Understand how memory buckets work, how agents retrieve context, and how to manage what agents remember long-term.
    </Card>

    <Card title="Agents" icon="users" href="/Folders/agents">
      Configure which agents have read or write access to memory buckets — set from the Memory tab in the agent studio.
    </Card>

    <Card title="Computer Use" icon="mouse-pointer-2" href="/Folders/computer-use">
      Computer Use runs produce screenshots and session logs that land in the agent's Files folder automatically.
    </Card>

    <Card title="Schedules" icon="calendar-clock" href="/Folders/schedules">
      Scheduled agent runs write output artifacts to the Files workspace — browse them here after each run completes.
    </Card>
  </Columns>
</div>
