Skip to content

Update project files - #13

Open
khulnasoft-bot wants to merge 3 commits into
mainfrom
v0/khulnasoft-1c9603f3
Open

Update project files#13
khulnasoft-bot wants to merge 3 commits into
mainfrom
v0/khulnasoft-1c9603f3

Conversation

@khulnasoft-bot

@khulnasoft-bot khulnasoft-bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Generated by v0

v0 Session

Summary by Sourcery

Introduce a shared Taskcore SVG icon component and use it across the UI, while tightening server typing around request actors and Hermes adapter skill methods.

Enhancements:

  • Replace direct usage of the lucide-react Taskcore icon with a custom reusable TaskcoreIcon component throughout the UI.
  • Add TypeScript declaration merging for Express.Request to include a strongly typed actor object set by authentication middleware.
  • Adjust Hermes local adapter registry definitions to satisfy ServerAdapterModule typing for listSkills and syncSkills.

- Add missing server/src/types/express.d.ts (Request.actor augmentation)
- Cast hermes listSkills/syncSkills at the adapter-utils type boundary
- Replace nonexistent lucide Taskcore icon with local TaskcoreIcon component
- Un-ignore server/src/types/express.d.ts so clones can build
@khulnasoft-bot khulnasoft-bot added the v0 label Jul 31, 2026 — with Vercel
@vercel

vercel Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
taskcore Error Error Jul 31, 2026 8:39pm

Request Review

@sourcery-ai

sourcery-ai Bot commented Jul 31, 2026

Copy link
Copy Markdown

Reviewer's Guide

Refactors UI to use a new custom TaskcoreIcon component instead of the lucide-react Taskcore icon, tightens server adapter typing for Hermes skill listing/syncing, and adds explicit Express Request actor type augmentation for better request-scoped identity typing.

File-Level Changes

Change Details Files
Introduce a shared TaskcoreIcon SVG component and replace usages of the lucide-react Taskcore icon across the UI.
  • Create a reusable TaskcoreIcon React component that renders the Taskcore SVG using tailwind-aware className merging.
  • Update NewIssueDialog, CommentThread, CompanyRail, IssueChatThread, CompanySkills, and IssueDetail to import TaskcoreIcon instead of the Taskcore lucide-react icon.
  • Replace Taskcore JSX usages with TaskcoreIcon while preserving sizing and color-related classNames.
ui/src/components/TaskcoreIcon.tsx
ui/src/components/NewIssueDialog.tsx
ui/src/components/CommentThread.tsx
ui/src/components/CompanyRail.tsx
ui/src/components/IssueChatThread.tsx
ui/src/pages/CompanySkills.tsx
ui/src/pages/IssueDetail.tsx
Strengthen server type safety around Hermes adapter skills APIs.
  • Cast hermesListSkills and hermesSyncSkills to the corresponding ServerAdapterModule listSkills/syncSkills types to satisfy the adapter interface and avoid type mismatches.
server/src/adapters/registry.ts
Add global Express Request typing for the request actor injected by authentication middleware.
  • Declare Express.Request.actor along with RequestActor and RequestActorSource types to describe who is making the request, including board users, agents, and unauthenticated cases.
  • Export an empty object to ensure the declaration file is treated as a module by TypeScript.
server/src/types/express.d.ts

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: a1ade543-5564-4031-9e57-b71db29a6d3d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've found 2 issues, and left some high level feedback:

  • The TaskcoreIcon component only exposes a className prop; consider extending React.SVGProps<SVGSVGElement> so it can be used more flexibly (e.g., with aria-*, role, onClick, etc.) like other icon components.
  • The as unknown as ServerAdapterModule[...] casts for hermesListSkills/hermesSyncSkills in registry.ts obscure potential type mismatches; it would be safer to align the underlying function signatures with ServerAdapterModule instead of using double assertions.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The `TaskcoreIcon` component only exposes a `className` prop; consider extending `React.SVGProps<SVGSVGElement>` so it can be used more flexibly (e.g., with `aria-*`, `role`, `onClick`, etc.) like other icon components.
- The `as unknown as ServerAdapterModule[...]` casts for `hermesListSkills`/`hermesSyncSkills` in `registry.ts` obscure potential type mismatches; it would be safer to align the underlying function signatures with `ServerAdapterModule` instead of using double assertions.

## Individual Comments

### Comment 1
<location path="server/src/adapters/registry.ts" line_range="188-189" />
<code_context>
   sessionCodec: hermesSessionCodec,
-  listSkills: hermesListSkills,
-  syncSkills: hermesSyncSkills,
+  listSkills: hermesListSkills as unknown as ServerAdapterModule["listSkills"],
+  syncSkills: hermesSyncSkills as unknown as ServerAdapterModule["syncSkills"],
   models: hermesModels,
   supportsLocalAgentJwt: true,
</code_context>
<issue_to_address>
**issue (bug_risk):** The double `unknown` cast on `listSkills`/`syncSkills` hides type mismatches that could surface as runtime bugs.

These `unknown` casts disable type checking and could let signature drift between the `hermes*` functions and `ServerAdapterModule` go unnoticed until runtime. Prefer updating the `hermesListSkills`/`hermesSyncSkills` types to match `ServerAdapterModule`, or introduce small adapter functions that explicitly map arguments/return types so TypeScript can enforce the contract without unsafe casts.
</issue_to_address>

### Comment 2
<location path="ui/src/components/TaskcoreIcon.tsx" line_range="3-7" />
<code_context>
+import { cn } from "../lib/utils";
+
+interface TaskcoreIconProps {
+  className?: string;
+}
+
+export function TaskcoreIcon({ className }: TaskcoreIconProps) {
+  return (
+    <svg
</code_context>
<issue_to_address>
**suggestion (bug_risk):** The icon component only accepts `className`, which limits compatibility with consumers expecting standard SVG icon props.

`TaskcoreIconProps` only exposes `className` and doesn’t spread extra props to `<svg>`, so any existing usages passing things like `color`, `strokeWidth`, `aria-*`, or `onClick` will stop working without errors. Consider using `React.SVGProps<SVGSVGElement>` (or extending it) and spreading the rest props onto `<svg>` so this can act as a drop‑in replacement for the previous lucide icon component.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment on lines +188 to +189
listSkills: hermesListSkills as unknown as ServerAdapterModule["listSkills"],
syncSkills: hermesSyncSkills as unknown as ServerAdapterModule["syncSkills"],

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue (bug_risk): The double unknown cast on listSkills/syncSkills hides type mismatches that could surface as runtime bugs.

These unknown casts disable type checking and could let signature drift between the hermes* functions and ServerAdapterModule go unnoticed until runtime. Prefer updating the hermesListSkills/hermesSyncSkills types to match ServerAdapterModule, or introduce small adapter functions that explicitly map arguments/return types so TypeScript can enforce the contract without unsafe casts.

Comment on lines +3 to +7
interface TaskcoreIconProps {
className?: string;
}

export function TaskcoreIcon({ className }: TaskcoreIconProps) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion (bug_risk): The icon component only accepts className, which limits compatibility with consumers expecting standard SVG icon props.

TaskcoreIconProps only exposes className and doesn’t spread extra props to <svg>, so any existing usages passing things like color, strokeWidth, aria-*, or onClick will stop working without errors. Consider using React.SVGProps<SVGSVGElement> (or extending it) and spreading the rest props onto <svg> so this can act as a drop‑in replacement for the previous lucide icon component.

- add serverless entry (server/src/vercel.ts) with Vercel runtime defaults and config guards
- bundle server into a single ESM function via scripts/build-vercel-function.mjs
- support Vercel Postgres/RDS env conventions (POSTGRES_URL, PGHOST/...)
- stdout-only logging and disable plugins/background jobs in serverless runtime
- allow overriding DB pool options (max, prepare) for bounded serverless connections
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants