import type { EnvironmentId, ThreadId } from "@t3tools/contracts"; interface ThreadActivityFileContext { readonly environmentId: EnvironmentId; readonly currentThreadId: ThreadId; readonly activitySourceThreadId: ThreadId; readonly relativePath: string; readonly line?: number | null;} export function buildThreadActivityFileParams(input: ThreadActivityFileContext) { // Activity provenance may come from a parent thread, but file routes stay scoped // to the thread whose workspace is currently selected. return { environmentId: String(input.environmentId), threadId: String(input.currentThreadId), path: input.relativePath.split("/").filter((segment) => segment.length > 0), ...(Number.isFinite(input.line) && Number(input.line) > 0 ? { line: String(Math.floor(Number(input.line))) } : {}), };}
import type { EnvironmentId, ThreadId } from "@t3tools/contracts";
interface ThreadActivityFileContext {
readonly environmentId: EnvironmentId;
readonly currentThreadId: ThreadId;
readonly activitySourceThreadId: ThreadId;
readonly relativePath: string;
readonly line?: number | null;
}
export function buildThreadActivityFileParams(input: ThreadActivityFileContext) {
// Activity provenance may come from a parent thread, but file routes stay scoped
// to the thread whose workspace is currently selected.
return {
environmentId: String(input.environmentId),
threadId: String(input.currentThreadId),
path: input.relativePath.split("/").filter((segment) => segment.length > 0),
...(Number.isFinite(input.line) && Number(input.line) > 0
? { line: String(Math.floor(Number(input.line))) }
: {}),
};
}