|
1 | | -import { Chunk, Duration, Effect, Ref } from "effect" |
| 1 | +import { Chunk, Duration, Effect, Match, Ref } from "effect" |
2 | 2 | import * as Stream from "effect/Stream" |
3 | 3 | import type { PlatformError } from "@effect/platform/Error" |
4 | 4 | import type * as HttpBody from "@effect/platform/HttpBody" |
@@ -182,7 +182,7 @@ const ProjectDatabaseProfileParamsSchema = Schema.Struct({ |
182 | 182 |
|
183 | 183 | const ProjectPromptParamsSchema = Schema.Struct({ |
184 | 184 | projectId: Schema.String, |
185 | | - kind: Schema.Literal("claude", "codex", "gemini") |
| 185 | + kind: Schema.Literal("claude", "codex", "gemini", "grok") |
186 | 186 | }) |
187 | 187 |
|
188 | 188 | const ProjectSkillParamsSchema = Schema.Struct({ |
@@ -427,55 +427,43 @@ const readProjectSkillUpdateRequest = () => HttpServerRequest.schemaBodyJson(Pro |
427 | 427 | const readActiveProjectTerminalSessionRequest = () => |
428 | 428 | HttpServerRequest.schemaBodyJson(ActiveProjectTerminalSessionRequestSchema) |
429 | 429 |
|
430 | | -const skillScopeFromId = (scopeId: string): ProjectSkillScope | null => { |
431 | | - switch (scopeId) { |
432 | | - case "skills": |
433 | | - return "skills" |
434 | | - case "agents-skills": |
435 | | - return "agents/skills" |
436 | | - case "agents-dot-skills": |
437 | | - return "agents/.skills" |
438 | | - case "claude-skills": |
439 | | - return "claude/skills" |
440 | | - case "codex-skills": |
441 | | - return "codex/skills" |
442 | | - case "gemini-skills": |
443 | | - return "gemini/skills" |
444 | | - default: |
445 | | - return null |
446 | | - } |
447 | | -} |
| 430 | +const projectSkillScope = (scope: ProjectSkillScope): ProjectSkillScope => scope |
| 431 | + |
| 432 | +const skillScopeFromId = (scopeId: string): ProjectSkillScope | null => |
| 433 | + Match.value(scopeId).pipe( |
| 434 | + Match.when("skills", () => projectSkillScope("skills")), |
| 435 | + Match.when("agents-skills", () => projectSkillScope("agents/skills")), |
| 436 | + Match.when("agents-dot-skills", () => projectSkillScope("agents/.skills")), |
| 437 | + Match.when("claude-skills", () => projectSkillScope("claude/skills")), |
| 438 | + Match.when("codex-skills", () => projectSkillScope("codex/skills")), |
| 439 | + Match.when("gemini-skills", () => projectSkillScope("gemini/skills")), |
| 440 | + Match.when("grok-skills", () => projectSkillScope("grok/skills")), |
| 441 | + Match.orElse(() => null) |
| 442 | + ) |
448 | 443 |
|
449 | | -export const skillScopeToId = (scope: ProjectSkillScope): string => { |
450 | | - switch (scope) { |
451 | | - case "skills": |
452 | | - return "skills" |
453 | | - case "agents/skills": |
454 | | - return "agents-skills" |
455 | | - case "agents/.skills": |
456 | | - return "agents-dot-skills" |
457 | | - case "claude/skills": |
458 | | - return "claude-skills" |
459 | | - case "codex/skills": |
460 | | - return "codex-skills" |
461 | | - case "gemini/skills": |
462 | | - return "gemini-skills" |
463 | | - } |
464 | | -} |
| 444 | +export const skillScopeToId = (scope: ProjectSkillScope): string => |
| 445 | + Match.value(scope).pipe( |
| 446 | + Match.when("skills", () => "skills"), |
| 447 | + Match.when("agents/skills", () => "agents-skills"), |
| 448 | + Match.when("agents/.skills", () => "agents-dot-skills"), |
| 449 | + Match.when("claude/skills", () => "claude-skills"), |
| 450 | + Match.when("codex/skills", () => "codex-skills"), |
| 451 | + Match.when("gemini/skills", () => "gemini-skills"), |
| 452 | + Match.when("grok/skills", () => "grok-skills"), |
| 453 | + Match.exhaustive |
| 454 | + ) |
465 | 455 |
|
466 | | -const skillScopeFromBody = (scope: string): ProjectSkillScope | null => { |
467 | | - switch (scope) { |
468 | | - case "skills": |
469 | | - case "agents/skills": |
470 | | - case "agents/.skills": |
471 | | - case "claude/skills": |
472 | | - case "codex/skills": |
473 | | - case "gemini/skills": |
474 | | - return scope as ProjectSkillScope |
475 | | - default: |
476 | | - return null |
477 | | - } |
478 | | -} |
| 456 | +const skillScopeFromBody = (scope: string): ProjectSkillScope | null => |
| 457 | + Match.value(scope).pipe( |
| 458 | + Match.when("skills", () => projectSkillScope("skills")), |
| 459 | + Match.when("agents/skills", () => projectSkillScope("agents/skills")), |
| 460 | + Match.when("agents/.skills", () => projectSkillScope("agents/.skills")), |
| 461 | + Match.when("claude/skills", () => projectSkillScope("claude/skills")), |
| 462 | + Match.when("codex/skills", () => projectSkillScope("codex/skills")), |
| 463 | + Match.when("gemini/skills", () => projectSkillScope("gemini/skills")), |
| 464 | + Match.when("grok/skills", () => projectSkillScope("grok/skills")), |
| 465 | + Match.orElse(() => null) |
| 466 | + ) |
479 | 467 | const readProjectPortForwardRequest = () => HttpServerRequest.schemaBodyJson(ProjectPortForwardRequestSchema) |
480 | 468 | const readProjectDatabaseProfileRequest = () => HttpServerRequest.schemaBodyJson(ProjectDatabaseProfileRequestSchema) |
481 | 469 | const readStateInitRequest = () => HttpServerRequest.schemaBodyJson(StateInitRequestSchema) |
|
0 commit comments