mirror of
https://github.com/harivansh-afk/clanker-agent.git
synced 2026-04-15 19:05:14 +00:00
- Copy all pi-mono source into apps/companion-os/ - Update Dockerfile to COPY pre-built binary instead of downloading from GitHub Releases - Update deploy-staging.yml to build pi from source (bun compile) before Docker build - Add apps/companion-os/** to path triggers - No more cross-repo dispatch needed Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
61 lines
1.6 KiB
TypeScript
61 lines
1.6 KiB
TypeScript
import { type Static, Type } from "@sinclair/typebox";
|
|
import type { AgentTool, AgentToolResult } from "../../src/types.js";
|
|
|
|
export interface GetCurrentTimeResult extends AgentToolResult<{
|
|
utcTimestamp: number;
|
|
}> {}
|
|
|
|
export async function getCurrentTime(
|
|
timezone?: string,
|
|
): Promise<GetCurrentTimeResult> {
|
|
const date = new Date();
|
|
if (timezone) {
|
|
try {
|
|
const timeStr = date.toLocaleString("en-US", {
|
|
timeZone: timezone,
|
|
dateStyle: "full",
|
|
timeStyle: "long",
|
|
});
|
|
return {
|
|
content: [{ type: "text", text: timeStr }],
|
|
details: { utcTimestamp: date.getTime() },
|
|
};
|
|
} catch (_e) {
|
|
throw new Error(
|
|
`Invalid timezone: ${timezone}. Current UTC time: ${date.toISOString()}`,
|
|
);
|
|
}
|
|
}
|
|
const timeStr = date.toLocaleString("en-US", {
|
|
dateStyle: "full",
|
|
timeStyle: "long",
|
|
});
|
|
return {
|
|
content: [{ type: "text", text: timeStr }],
|
|
details: { utcTimestamp: date.getTime() },
|
|
};
|
|
}
|
|
|
|
const getCurrentTimeSchema = Type.Object({
|
|
timezone: Type.Optional(
|
|
Type.String({
|
|
description:
|
|
"Optional timezone (e.g., 'America/New_York', 'Europe/London')",
|
|
}),
|
|
),
|
|
});
|
|
|
|
type GetCurrentTimeParams = Static<typeof getCurrentTimeSchema>;
|
|
|
|
export const getCurrentTimeTool: AgentTool<
|
|
typeof getCurrentTimeSchema,
|
|
{ utcTimestamp: number }
|
|
> = {
|
|
label: "Current Time",
|
|
name: "get_current_time",
|
|
description: "Get the current date and time",
|
|
parameters: getCurrentTimeSchema,
|
|
execute: async (_toolCallId: string, args: GetCurrentTimeParams) => {
|
|
return getCurrentTime(args.timezone);
|
|
},
|
|
};
|