Convex-only Slice 1: clients talk to Convex, Flue is a private worker (#20)

This commit is contained in:
2026-07-27 16:03:36 +00:00
parent cc47007fa9
commit cb7484912c
141 changed files with 1547 additions and 17812 deletions

View File

@@ -29,6 +29,17 @@ describe("project issue primitives", () => {
});
});
it("accepts an existing issue request without creating a duplicate", () => {
const request = Effect.runSync(
decodeProjectIssueRequest({
issueId: "issue-1",
kind: "existing",
})
);
expect(request).toEqual({ issueId: "issue-1", kind: "existing" });
});
it("rejects invalid issue drafts before persistence", () => {
const error = Effect.runSync(
Effect.flip(

View File

@@ -35,6 +35,11 @@ export const ProjectIssueDraft = Schema.Struct({
});
export type ProjectIssueDraft = typeof ProjectIssueDraft.Type;
export const ExistingProjectIssueRequest = Schema.Struct({
issueId: ProjectIssueId,
kind: Schema.Literal("existing"),
});
export const ExplicitProjectIssueRequest = Schema.Struct({
body: Schema.String,
kind: Schema.Literal("explicit"),
@@ -48,6 +53,7 @@ export const SignalProjectIssueRequest = Schema.Struct({
});
export const ProjectIssueRequest = Schema.Union([
ExistingProjectIssueRequest,
ExplicitProjectIssueRequest,
SignalProjectIssueRequest,
]);
@@ -186,7 +192,7 @@ export const decodeProjectIssueRequest = (
() =>
new ProjectIssueRequestError({
message:
"Use a signal request or an explicit request with projectId, title, and body",
"Use an existing issue, signal request, or explicit request with projectId, title, and body",
reason: "InvalidInput",
})
)