πŸ“„ File detail

tools/ScheduleCronTool/UI.tsx

🧩 .tsxπŸ“ 60 linesπŸ’Ύ 8,075 bytesπŸ“ text
← Back to All Files

🎯 Use case

This module implements the β€œScheduleCronTool” tool (Schedule Cron) β€” something the model can call at runtime alongside other agent tools. On the API surface it exposes renderCreateToolUseMessage, renderCreateResultMessage, renderDeleteToolUseMessage, renderDeleteResultMessage, and renderListToolUseMessage (and more) β€” mainly functions, hooks, or classes. Dependencies touch React UI. It composes internal code from components, ink, utils, CronCreateTool, and CronDeleteTool (relative imports).

Generated from folder role, exports, dependency roots, and inline comments β€” not hand-reviewed for every path.

🧠 Inline summary

import React from 'react'; import { MessageResponse } from '../../components/MessageResponse.js'; import { Text } from '../../ink.js'; import { truncate } from '../../utils/format.js'; import type { CreateOutput } from './CronCreateTool.js';

πŸ“€ Exports (heuristic)

  • renderCreateToolUseMessage
  • renderCreateResultMessage
  • renderDeleteToolUseMessage
  • renderDeleteResultMessage
  • renderListToolUseMessage
  • renderListResultMessage

πŸ“š External import roots

Package roots from from "…" (relative paths omitted).

  • react

πŸ–₯️ Source preview

import React from 'react';
import { MessageResponse } from '../../components/MessageResponse.js';
import { Text } from '../../ink.js';
import { truncate } from '../../utils/format.js';
import type { CreateOutput } from './CronCreateTool.js';
import type { DeleteOutput } from './CronDeleteTool.js';
import type { ListOutput } from './CronListTool.js';

// --- CronCreate -------------------------------------------------------------

export function renderCreateToolUseMessage(input: Partial<{
  cron: string;
  prompt: string;
}>): React.ReactNode {
  return `${input.cron ?? ''}${input.prompt ? `: ${truncate(input.prompt, 60, true)}` : ''}`;
}
export function renderCreateResultMessage(output: CreateOutput): React.ReactNode {
  return <MessageResponse>
      <Text>
        Scheduled <Text bold>{output.id}</Text>{' '}
        <Text dimColor>({output.humanSchedule})</Text>
      </Text>
    </MessageResponse>;
}

// --- CronDelete -------------------------------------------------------------

export function renderDeleteToolUseMessage(input: Partial<{
  id: string;
}>): React.ReactNode {
  return input.id ?? '';
}
export function renderDeleteResultMessage(output: DeleteOutput): React.ReactNode {
  return <MessageResponse>
      <Text>
        Cancelled <Text bold>{output.id}</Text>
      </Text>
    </MessageResponse>;
}

// --- CronList ---------------------------------------------------------------

export function renderListToolUseMessage(): React.ReactNode {
  return '';
}
export function renderListResultMessage(output: ListOutput): React.ReactNode {
  if (output.jobs.length === 0) {
    return <MessageResponse>
        <Text dimColor>No scheduled jobs</Text>
      </MessageResponse>;
  }
  return <MessageResponse>
      {output.jobs.map(j => <Text key={j.id}>
          <Text bold>{j.id}</Text> <Text dimColor>{j.humanSchedule}</Text>
        </Text>)}
    </MessageResponse>;
}

// --- Shared -----------------------------------------------------------------
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIk1lc3NhZ2VSZXNwb25zZSIsIlRleHQiLCJ0cnVuY2F0ZSIsIkNyZWF0ZU91dHB1dCIsIkRlbGV0ZU91dHB1dCIsIkxpc3RPdXRwdXQiLCJyZW5kZXJDcmVhdGVUb29sVXNlTWVzc2FnZSIsImlucHV0IiwiUGFydGlhbCIsImNyb24iLCJwcm9tcHQiLCJSZWFjdE5vZGUiLCJyZW5kZXJDcmVhdGVSZXN1bHRNZXNzYWdlIiwib3V0cHV0IiwiaWQiLCJodW1hblNjaGVkdWxlIiwicmVuZGVyRGVsZXRlVG9vbFVzZU1lc3NhZ2UiLCJyZW5kZXJEZWxldGVSZXN1bHRNZXNzYWdlIiwicmVuZGVyTGlzdFRvb2xVc2VNZXNzYWdlIiwicmVuZGVyTGlzdFJlc3VsdE1lc3NhZ2UiLCJqb2JzIiwibGVuZ3RoIiwibWFwIiwiaiJdLCJzb3VyY2VzIjpbIlVJLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBNZXNzYWdlUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL01lc3NhZ2VSZXNwb25zZS5qcydcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi8uLi9pbmsuanMnXG5pbXBvcnQgeyB0cnVuY2F0ZSB9IGZyb20gJy4uLy4uL3V0aWxzL2Zvcm1hdC5qcydcbmltcG9ydCB0eXBlIHsgQ3JlYXRlT3V0cHV0IH0gZnJvbSAnLi9Dcm9uQ3JlYXRlVG9vbC5qcydcbmltcG9ydCB0eXBlIHsgRGVsZXRlT3V0cHV0IH0gZnJvbSAnLi9Dcm9uRGVsZXRlVG9vbC5qcydcbmltcG9ydCB0eXBlIHsgTGlzdE91dHB1dCB9IGZyb20gJy4vQ3Jvbkxpc3RUb29sLmpzJ1xuXG4vLyAtLS0gQ3JvbkNyZWF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJDcmVhdGVUb29sVXNlTWVzc2FnZShcbiAgaW5wdXQ6IFBhcnRpYWw8eyBjcm9uOiBzdHJpbmc7IHByb21wdDogc3RyaW5nIH0+LFxuKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgcmV0dXJuIGAke2lucHV0LmNyb24gPz8gJyd9JHtpbnB1dC5wcm9tcHQgPyBgOiAke3RydW5jYXRlKGlucHV0LnByb21wdCwgNjAsIHRydWUpfWAgOiAnJ31gXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJDcmVhdGVSZXN1bHRNZXNzYWdlKFxuICBvdXRwdXQ6IENyZWF0ZU91dHB1dCxcbik6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIHJldHVybiAoXG4gICAgPE1lc3NhZ2VSZXNwb25zZT5cbiAgICAgIDxUZXh0PlxuICAgICAgICBTY2hlZHVsZWQgPFRleHQgYm9sZD57b3V0cHV0LmlkfTwvVGV4dD57JyAnfVxuICAgICAgICA8VGV4dCBkaW1Db2xvcj4oe291dHB1dC5odW1hblNjaGVkdWxlfSk8L1RleHQ+XG4gICAgICA8L1RleHQ+XG4gICAgPC9NZXNzYWdlUmVzcG9uc2U+XG4gIClcbn1cblxuLy8gLS0tIENyb25EZWxldGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyRGVsZXRlVG9vbFVzZU1lc3NhZ2UoXG4gIGlucHV0OiBQYXJ0aWFsPHsgaWQ6IHN0cmluZyB9Pixcbik6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIHJldHVybiBpbnB1dC5pZCA/PyAnJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyRGVsZXRlUmVzdWx0TWVzc2FnZShcbiAgb3V0cHV0OiBEZWxldGVPdXRwdXQsXG4pOiBSZWFjdC5SZWFjdE5vZGUge1xuICByZXR1cm4gKFxuICAgIDxNZXNzYWdlUmVzcG9uc2U+XG4gICAgICA8VGV4dD5cbiAgICAgICAgQ2FuY2VsbGVkIDxUZXh0IGJvbGQ+e291dHB1dC5pZH08L1RleHQ+XG4gICAgICA8L1RleHQ+XG4gICAgPC9NZXNzYWdlUmVzcG9uc2U+XG4gIClcbn1cblxuLy8gLS0tIENyb25MaXN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyTGlzdFRvb2xVc2VNZXNzYWdlKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIHJldHVybiAnJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyTGlzdFJlc3VsdE1lc3NhZ2Uob3V0cHV0OiBMaXN0T3V0cHV0KTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgaWYgKG91dHB1dC5qb2JzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICA8TWVzc2FnZVJlc3BvbnNlPlxuICAgICAgICA8VGV4dCBkaW1Db2xvcj5ObyBzY2hlZHVsZWQgam9iczwvVGV4dD5cbiAgICAgIDwvTWVzc2FnZVJlc3BvbnNlPlxuICAgIClcbiAgfVxuICByZXR1cm4gKFxuICAgIDxNZXNzYWdlUmVzcG9uc2U+XG4gICAgICB7b3V0cHV0LmpvYnMubWFwKGogPT4gKFxuICAgICAgICA8VGV4dCBrZXk9e2ouaWR9PlxuICAgICAgICAgIDxUZXh0IGJvbGQ+e2ouaWR9PC9UZXh0PiA8VGV4dCBkaW1Db2xvcj57ai5odW1hblNjaGVkdWxlfTwvVGV4dD5cbiAgICAgICAgPC9UZXh0PlxuICAgICAgKSl9XG4gICAgPC9NZXNzYWdlUmVzcG9uc2U+XG4gIClcbn1cblxuLy8gLS0tIFNoYXJlZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxLQUFLLE1BQU0sT0FBTztBQUN6QixTQUFTQyxlQUFlLFFBQVEscUNBQXFDO0FBQ3JFLFNBQVNDLElBQUksUUFBUSxjQUFjO0FBQ25DLFNBQVNDLFFBQVEsUUFBUSx1QkFBdUI7QUFDaEQsY0FBY0MsWUFBWSxRQUFRLHFCQUFxQjtB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