Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 12 additions & 15 deletions src/runtime_host_service.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { join } from "@std/path";
import {
callRuntimeHostServiceRaw,
CREATE_WRITEBACK_PREVIEW_HOST_SERVICE_METHOD,
DRAFT_COWORKER_TASK_HOST_SERVICE_METHOD,
validateRuntimeHostServiceMethodAndParams,
} from "./runtime_host_service.ts";

Expand Down Expand Up @@ -44,7 +43,7 @@ Deno.test("runtime host-service raw calls return non-Codex host results unchange
error: null,
id: request.id,
result: {
payload: { taskId: "workspace-delegation-smoke" },
payload: { writebackId: "preview-smoke" },
status: 200,
},
})
Expand All @@ -60,19 +59,18 @@ Deno.test("runtime host-service raw calls return non-Codex host results unchange

try {
const result = await callRuntimeHostServiceRaw({
method: DRAFT_COWORKER_TASK_HOST_SERVICE_METHOD,
method: CREATE_WRITEBACK_PREVIEW_HOST_SERVICE_METHOD,
params: {
targetCoworker: "assistant-to-chief-of-staff",
title: "Workspace delegation smoke",
purpose: "Verify host-owned task drafting.",
request: "Report the current working directory.",
changedPaths: ["README.md"],
summary: "Preview smoke.",
workspaceRoot: "/tmp/workspace",
},
socketPath,
token: "test-token",
});

assertEquals(result, {
payload: { taskId: "workspace-delegation-smoke" },
payload: { writebackId: "preview-smoke" },
status: 200,
});
} finally {
Expand All @@ -99,7 +97,7 @@ Deno.test("runtime host-service raw calls support TCP endpoints", async () => {
error: null,
id: request.id,
result: {
payload: { taskId: "tcp-workspace-delegation-smoke" },
payload: { writebackId: "tcp-preview-smoke" },
status: 200,
},
})
Expand All @@ -115,19 +113,18 @@ Deno.test("runtime host-service raw calls support TCP endpoints", async () => {

try {
const result = await callRuntimeHostServiceRaw({
method: DRAFT_COWORKER_TASK_HOST_SERVICE_METHOD,
method: CREATE_WRITEBACK_PREVIEW_HOST_SERVICE_METHOD,
params: {
targetCoworker: "assistant-to-chief-of-staff",
title: "TCP workspace delegation smoke",
purpose: "Verify host-owned task drafting over TCP.",
request: "Report the current working directory.",
changedPaths: ["README.md"],
summary: "TCP preview smoke.",
workspaceRoot: "/tmp/workspace",
},
socketPath: `tcp://127.0.0.1:${address.port}`,
token: "test-token",
});

assertEquals(result, {
payload: { taskId: "tcp-workspace-delegation-smoke" },
payload: { writebackId: "tcp-preview-smoke" },
status: 200,
});
} finally {
Expand Down
85 changes: 0 additions & 85 deletions src/runtime_host_service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@ export const RUNTIME_HOST_SERVICE_TOKEN_ENV =

export const CODEX_REFRESH_HOST_SERVICE_METHOD =
"providerAuth.codex.refreshChatgptTokens";
export const DRAFT_COWORKER_TASK_HOST_SERVICE_METHOD =
"workloop.tasks.draftCoworkerTask";
export const QUEUE_COWORKER_TASK_HOST_SERVICE_METHOD =
"workloop.tasks.queueCoworkerTask";
export const CREATE_WRITEBACK_PREVIEW_HOST_SERVICE_METHOD =
"workloop.writebacks.createPreview";

Expand All @@ -31,20 +27,6 @@ export type CodexRefreshHostServiceResult = {
type: "chatgptAuthTokens";
};

export type DraftCoworkerTaskHostServiceParams = {
targetCoworker: string;
taskId?: string | null;
title: string;
purpose: string;
request: string;
acceptanceCriteria?: Array<string>;
};

export type QueueCoworkerTaskHostServiceParams = {
targetCoworker: string;
taskId: string;
};

export type CreateWritebackPreviewHostServiceParams = {
summary: string;
workspaceRoot: string;
Expand All @@ -53,14 +35,10 @@ export type CreateWritebackPreviewHostServiceParams = {

export type RuntimeHostServiceMethod =
| typeof CODEX_REFRESH_HOST_SERVICE_METHOD
| typeof DRAFT_COWORKER_TASK_HOST_SERVICE_METHOD
| typeof QUEUE_COWORKER_TASK_HOST_SERVICE_METHOD
| typeof CREATE_WRITEBACK_PREVIEW_HOST_SERVICE_METHOD;

export type RuntimeHostServiceParams =
| CodexRefreshHostServiceParams
| DraftCoworkerTaskHostServiceParams
| QueueCoworkerTaskHostServiceParams
| CreateWritebackPreviewHostServiceParams;

export type RuntimeHostServiceRequest = {
Expand Down Expand Up @@ -159,51 +137,6 @@ function normalizeStringArray(value: unknown, label: string): Array<string> {
});
}

export function validateDraftCoworkerTaskHostServiceParams(
value: unknown,
): DraftCoworkerTaskHostServiceParams {
if (!isRecord(value)) {
throw new Error("host service params must be a JSON object.");
}
const taskId = value.taskId == null
? null
: normalizeOptionalString(value.taskId);
if (value.taskId != null && taskId == null) {
throw new Error(
"workloop.tasks.draftCoworkerTask taskId must be a non-empty string when provided.",
);
}
return {
targetCoworker: normalizeRequiredString(
value.targetCoworker,
"targetCoworker",
),
taskId,
title: normalizeRequiredString(value.title, "title"),
purpose: normalizeRequiredString(value.purpose, "purpose"),
request: normalizeRequiredString(value.request, "request"),
acceptanceCriteria: normalizeStringArray(
value.acceptanceCriteria,
"acceptanceCriteria",
),
};
}

export function validateQueueCoworkerTaskHostServiceParams(
value: unknown,
): QueueCoworkerTaskHostServiceParams {
if (!isRecord(value)) {
throw new Error("host service params must be a JSON object.");
}
return {
targetCoworker: normalizeRequiredString(
value.targetCoworker,
"targetCoworker",
),
taskId: normalizeRequiredString(value.taskId, "taskId"),
};
}

export function validateCreateWritebackPreviewHostServiceParams(
value: unknown,
): CreateWritebackPreviewHostServiceParams {
Expand All @@ -228,14 +161,6 @@ export function validateRuntimeHostServiceMethodAndParams(input: {
method: typeof CODEX_REFRESH_HOST_SERVICE_METHOD;
params: CodexRefreshHostServiceParams;
}
| {
method: typeof DRAFT_COWORKER_TASK_HOST_SERVICE_METHOD;
params: DraftCoworkerTaskHostServiceParams;
}
| {
method: typeof QUEUE_COWORKER_TASK_HOST_SERVICE_METHOD;
params: QueueCoworkerTaskHostServiceParams;
}
| {
method: typeof CREATE_WRITEBACK_PREVIEW_HOST_SERVICE_METHOD;
params: CreateWritebackPreviewHostServiceParams;
Expand All @@ -246,16 +171,6 @@ export function validateRuntimeHostServiceMethodAndParams(input: {
method: CODEX_REFRESH_HOST_SERVICE_METHOD,
params: validateCodexRefreshHostServiceParams(input.params),
};
case DRAFT_COWORKER_TASK_HOST_SERVICE_METHOD:
return {
method: DRAFT_COWORKER_TASK_HOST_SERVICE_METHOD,
params: validateDraftCoworkerTaskHostServiceParams(input.params),
};
case QUEUE_COWORKER_TASK_HOST_SERVICE_METHOD:
return {
method: QUEUE_COWORKER_TASK_HOST_SERVICE_METHOD,
params: validateQueueCoworkerTaskHostServiceParams(input.params),
};
case CREATE_WRITEBACK_PREVIEW_HOST_SERVICE_METHOD:
return {
method: CREATE_WRITEBACK_PREVIEW_HOST_SERVICE_METHOD,
Expand Down
Loading