Skip to content

feat: Add projectpilot-ai kit - #290

Open
Kishan-215 wants to merge 8 commits into
Lamatic:mainfrom
Kishan-215:feat/projectpilot-ai
Open

feat: Add projectpilot-ai kit#290
Kishan-215 wants to merge 8 commits into
Lamatic:mainfrom
Kishan-215:feat/projectpilot-ai

Conversation

@Kishan-215

@Kishan-215 Kishan-215 commented Jul 24, 2026

Copy link
Copy Markdown

ProjectPilot AI — an agentic mentor that guides engineering students from final year project selection through execution planning, using three chained Lamatic flows:

  1. discovery-flow — generates 5-8 ranked project ideas based on branch, interest, skill level, duration, and team type.
  2. blueprint-flow — recommends a specific tech stack and architecture for the chosen idea.
  3. execution-flow — generates a week-by-week roadmap, abstract, viva questions, and resume bullets, grounded explicitly in the chosen project and its confirmed tech stack.

This is a multi-agent workflow, not a single-prompt chatbot — each stage's output feeds into the next.

Note: This PR uses the current lamatic.config.ts + flat flows/<name>.ts format per CONTRIBUTING.md, not the older config.json/flows/<name>/ structure referenced in the checklist below.

PR Checklist

1. Select Contribution Type

  • [ x] Kit (kits/<category>/<kit-name>/)
  • Bundle (bundles/<bundle-name>/)
  • Template (templates/<template-name>/)

2. General Requirements

  • [x ] PR is for one project only (no unrelated changes)
  • [x ] No secrets, API keys, or real credentials are committed
  • [ x] Folder name uses kebab-case and matches the flow ID
  • [x ] All changes are documented in README.md (purpose, setup, usage)

3. File Structure (Check what applies)

  • [x ] config.json present with valid metadata (name, description, tags, steps, author, env keys)
  • All flows in flows/<flow-name>/ (where applicable) include:
    • config.json (Lamatic flow export)
    • inputs.json
    • meta.json
    • README.md
  • [x ] .env.example with placeholder values only (kits only)
  • [ x] No hand‑edited flow config.json node graphs (changes via Lamatic Studio export)

4. Validation

  • [x ] npm install && npm run dev works locally (kits: UI runs; bundles/templates: flows are valid)
  • [x ] PR title is clear (e.g., [kit] Add <name> for <use case>)
  • GitHub Actions workflows pass (all checks are green)
  • All CodeRabbit or other PR review comments are addressed and resolved
  • [x ] No unrelated files or projects are modified
  • Added/introduced:
    • kits/projectpilot-ai/README.md
    • kits/projectpilot-ai/agent.md
    • kits/projectpilot-ai/.env.example
    • kits/projectpilot-ai/constitutions/default.md
    • kits/projectpilot-ai/lamatic.config.ts
    • kits/projectpilot-ai/apps/.env.example
    • kits/projectpilot-ai/apps/.gitignore
    • kits/projectpilot-ai/apps/package.json
    • kits/projectpilot-ai/apps/next.config.mjs
    • kits/projectpilot-ai/apps/postcss.config.mjs
    • kits/projectpilot-ai/apps/tsconfig.json
    • kits/projectpilot-ai/apps/actions/orchestrate.ts
    • kits/projectpilot-ai/apps/app/globals.css
    • kits/projectpilot-ai/apps/app/layout.tsx
    • kits/projectpilot-ai/apps/app/page.tsx
    • kits/projectpilot-ai/apps/components.json
    • kits/projectpilot-ai/apps/components/header.tsx
    • kits/projectpilot-ai/apps/components/theme-provider.tsx
    • kits/projectpilot-ai/apps/components/ui/* (new shadcn/Radix UI component set)
      • accordion.tsx, alert-dialog.tsx, alert.tsx, aspect-ratio.tsx, avatar.tsx, badge.tsx, breadcrumb.tsx, button-group.tsx, button.tsx, calendar.tsx, card.tsx, carousel.tsx, chart.tsx, checkbox.tsx, collapsible.tsx, command.tsx, context-menu.tsx, dialog.tsx, drawer.tsx, dropdown-menu.tsx, empty.tsx, field.tsx, form.tsx, hover-card.tsx, input-group.tsx, input-otp.tsx, input.tsx, item.tsx, kbd.tsx, label.tsx, menubar.tsx, navigation-menu.tsx, pagination.tsx, popover.tsx, progress.tsx, radio-group.tsx, resizable.tsx, scroll-area.tsx, select.tsx, separator.tsx, sheet.tsx, sidebar.tsx, skeleton.tsx, slider.tsx, sonner.tsx, spinner.tsx, switch.tsx, table.tsx, tabs.tsx, textarea.tsx, toast.tsx, toaster.tsx, toggle-group.tsx, toggle.tsx, tooltip.tsx, use-mobile.tsx, use-toast.ts
    • kits/projectpilot-ai/apps/hooks/use-mobile.ts
    • kits/projectpilot-ai/apps/hooks/use-toast.ts
    • Flow definitions (Lamatic):
      • kits/projectpilot-ai/flows/discovery-flow.ts
      • kits/projectpilot-ai/flows/blueprint-flow.ts
      • kits/projectpilot-ai/flows/execution-flow.ts
    • Model config modules:
      • kits/projectpilot-ai/model-configs/discovery-flow_instructor-llmnode-710_generative-model-name.ts
      • kits/projectpilot-ai/model-configs/blueprint-flow_instructor-llmnode-851_generative-model-name.ts
      • kits/projectpilot-ai/model-configs/execution-flow_instructor-llmnode-603_generative-model-name.ts
    • Prompt templates:
      • kits/projectpilot-ai/prompts/discovery-flow_instructor-llmnode-710_system_0.md
      • kits/projectpilot-ai/prompts/discovery-flow_instructor-llmnode-710_user_1.md
      • kits/projectpilot-ai/prompts/blueprint-flow_instructor-llmnode-851_system_0.md
      • kits/projectpilot-ai/prompts/blueprint-flow_instructor-llmnode-851_user_1.md
      • kits/projectpilot-ai/prompts/execution-flow_instructor-llmnode-603_system_0.md
      • kits/projectpilot-ai/prompts/execution-flow_instructor-llmnode-603_user_1.md
  • Updated (not added):
    • README.md: kits table counts and added the “ProjectPilot AI” entry
    • registry.json: new projectpilot-ai kit entry and updated registry counters
  • Flow node types (checked from flow TS configs; no flow.json file present in the repo):
    • Node types used:
      • triggerNode (API Request)
      • dynamicNode (Instructor LLM node)
      • responseNode (API Response)
    • Edge types used:
      • defaultEdge (trigger → LLM, LLM → response)
      • responseEdge (trigger → response with targetHandle: from-trigger)
  • High-level flow behavior (three chained Lamatic flows):
    • Common structure across all flows:
      • triggerNode (“API Request”) exposes inputs.
      • dynamicNode runs the instructor LLM with referenced prompts + a selected generative model (validated via JSON schema).
      • responseNode returns an HTTP JSON payload by mapping dynamicNode output fields into outputMapping.
      • Edges wire: triggerNode → dynamicNode → responseNode, plus a responseEdge from triggerNode to the response node.
    • discovery-flow:
      • Inputs: branch, interest, skillLevel, duration, teamType (+ model selection input).
      • LLM output schema: ideas[] with title, difficulty, industryRelevance, innovationScore.
      • Response maps ideas into the JSON response.
    • blueprint-flow:
      • Inputs: selectedIdea, skillLevel (+ model selection input).
      • LLM output schema: recommended frontend, backend, database, aiFrameworks, deployment, architectureExplanation, and datasets[].
      • Response maps those fields into the JSON response.
    • execution-flow:
      • Inputs: selectedIdea, blueprint, duration (+ model selection input).
      • LLM output schema: roadmap[] (week/task), abstract, vivaQuestions[], resumeBullets[].
      • Response maps those artifacts into the JSON response.
  • Frontend execution wiring:
    • Next.js UI (kits/projectpilot-ai/apps/app/page.tsx) is a staged workflow (form → ideas → blueprint → execution).
    • Server actions (kits/projectpilot-ai/apps/actions/orchestrate.ts) load the configured Lamatic flow IDs from env, call lamaticClient.executeFlow, and validate the returned payloads before returning typed success/error results.

@coderabbitai

coderabbitai Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Changes

ProjectPilot AI kit

Layer / File(s) Summary
Kit definition and Lamatic workflows
kits/projectpilot-ai/README.md, kits/projectpilot-ai/agent.md, kits/projectpilot-ai/flows/*, kits/projectpilot-ai/prompts/*, kits/projectpilot-ai/model-configs/*, kits/projectpilot-ai/constitutions/*, kits/projectpilot-ai/lamatic.config.ts, registry.json, README.md
Adds the ProjectPilot AI kit, three sequential Lamatic flows, model configurations, prompts, constitution, documentation, and registry metadata.
Application orchestration and workflow UI
kits/projectpilot-ai/apps/actions/*, kits/projectpilot-ai/apps/app/*, kits/projectpilot-ai/apps/lib/*, kits/projectpilot-ai/apps/hooks/*, kits/projectpilot-ai/apps/package.json, kits/projectpilot-ai/apps/*.config.*, kits/projectpilot-ai/apps/tsconfig.json, kits/projectpilot-ai/apps/.env.example
Adds Lamatic flow execution actions, environment validation, a staged form-to-ideas-to-blueprint-to-execution workflow, and Next.js application configuration.
Reusable UI system
kits/projectpilot-ai/apps/components/*, kits/projectpilot-ai/apps/app/globals.css
Adds the Tailwind theme and reusable Radix, form, navigation, data display, overlay, sidebar, toast, and input components used by the application.

Suggested reviewers: amanintech, d-pamneja

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.44% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and accurately summarizes the main change: adding the projectpilot-ai kit.
Description check ✅ Passed The description is mostly complete and matches the checklist structure, with a clear project summary and repo-specific note.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@github-actions

github-actions Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

:robot_face: AgentKit Structural Validation

New Contributions Detected

  • Kit: kits/projectpilot-ai

Check Results

Check Status
No edits to existing kits ✅ Pass
Required root files present ✅ Pass
Flow .ts files present ✅ Pass
lamatic.config.ts valid ✅ Pass
No changes outside kits/ ⚠️ Warning

⚠️ Warnings

  • File outside kits/ modified: README.md
  • File outside kits/ modified: registry.json

🎉 All checks passed! This contribution follows the AgentKit structure.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 23

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@kits/projectpilot-ai/apps/.gitignore`:
- Around line 19-21: Update the env-file patterns in .gitignore to broadly
ignore all .env files, including .env.development and .env.production, while
adding an explicit exception so .env.example remains tracked.

In `@kits/projectpilot-ai/apps/actions/orchestrate.ts`:
- Around line 47-49: Validate the response payloads in the ideas, blueprint, and
execution-plan handling branches before returning success, using the runtime
schemas already defined for those result types. Ensure each validated field is
the expected array/object shape so malformed truthy values are rejected at the
boundary, and return the parsed schema data rather than the unvalidated values.
- Around line 3-46: Update getProjectIdeas and the other action flows in this
module to import and use the parent kit’s lamatic.config as the single source of
truth for flow definitions, replacing getFlowId and all *_FLOW_ID
environment-variable lookups. Resolve each action’s corresponding configured
flow and pass its definition or identifier to lamaticClient.executeFlow while
preserving the existing action behavior and return types.
- Around line 37-84: Establish shared Zod schemas for the project-ideas,
blueprint, and execution-plan inputs, and use them consistently across both
sites. In kits/projectpilot-ai/apps/actions/orchestrate.ts lines 37-84, parse
each action’s input with its corresponding schema and return a validation error
before calling executeFlow when parsing fails or limits are exceeded; in
kits/projectpilot-ai/apps/app/page.tsx lines 15-77, replace manual
useState/native required validation with react-hook-form wired to those same
shared schemas and preserve the existing submission flow.

In `@kits/projectpilot-ai/apps/app/layout.tsx`:
- Around line 9-12: Update the metadata object in layout.tsx to replace the v0
template values for title, description, and generator with ProjectPilot AI
branding. Ensure tabs and search previews identify the application as
ProjectPilot AI, without changing unrelated metadata.

In `@kits/projectpilot-ai/apps/app/page.tsx`:
- Around line 97-150: Associate every label in the form around the branch,
interest, skill level, duration, and team type controls with its corresponding
input or select. Add unique stable id values to each control and matching
htmlFor values to each label, preserving the existing form behavior and field
bindings.
- Around line 33-77: Update handleGetIdeas, handleSelectIdea, and
handleGenerateExecutionPlan to wrap each server-action invocation in
try/catch/finally, handling rejected calls through the existing error state and
always executing setLoading(false) in finally. Preserve the current success
transitions and existing early return behavior for a missing blueprint.
- Around line 79-265: Update the JSX styling in
kits/projectpilot-ai/apps/app/page.tsx lines 79-265 and
kits/projectpilot-ai/apps/components/header.tsx lines 7-42 to replace hard-coded
palette utilities for backgrounds, borders, text, links, and actions with the
project’s semantic theme-token classes such as bg-background, text-foreground,
bg-primary, and text-destructive. Preserve the existing layout and
state-specific styling while ensuring both components use CSS-variable-backed
tokens throughout.

In `@kits/projectpilot-ai/apps/components/ui/aspect-ratio.tsx`:
- Around line 1-9: Add the React namespace import in the `AspectRatio` component
file so `React.ComponentProps` resolves under the project’s JSX configuration,
leaving the component implementation unchanged.

In `@kits/projectpilot-ai/apps/components/ui/button-group.tsx`:
- Around line 24-76: All listed exported UI wrappers currently drop consumer
refs; update every affected file—button-group.tsx (lines 24-76), drawer.tsx
(8-122), empty.tsx (5-95), field.tsx (10-231), form.tsx (76-156), hover-card.tsx
(8-42), item.tsx (8-179), kbd.tsx (3-26), label.tsx (8-22), navigation-menu.tsx
(8-154), popover.tsx (8-46), and separator.tsx (8-26)—to use React.forwardRef
and pass the received ref to each underlying DOM or Radix/Vaul element. Preserve
existing props, variants, asChild behavior, and rendered element types while
ensuring ref types match the wrapped elements.

In `@kits/projectpilot-ai/apps/components/ui/carousel.tsx`:
- Around line 96-105: Update the cleanup returned by the React.useEffect around
onSelect so it also unregisters the 'reInit' listener from the same api
instance, while preserving the existing 'select' cleanup and effect
dependencies.

In `@kits/projectpilot-ai/apps/components/ui/collapsible.tsx`:
- Around line 11-30: Convert CollapsibleTrigger and CollapsibleContent to
React.forwardRef wrappers, declaring the appropriate element ref types and
passing each forwarded ref to its underlying Radix primitive. Preserve the
existing data-slot attributes and prop forwarding so consumers can access the
rendered trigger and content elements.

In `@kits/projectpilot-ai/apps/components/ui/empty.tsx`:
- Around line 71-80: Update EmptyDescription to render a paragraph element
instead of a div, while preserving its data-slot, className composition, prop
spreading, and existing React.ComponentProps<'p'> contract.

In `@kits/projectpilot-ai/apps/components/ui/input-group.tsx`:
- Around line 59-79: Update the InputGroupAddon click handler to focus the
group’s text control when it is either an input or a textarea, while preserving
the existing button exclusion and current input behavior.

In `@kits/projectpilot-ai/apps/components/ui/kbd.tsx`:
- Around line 18-24: Update KbdGroup to render a neutral div element instead of
kbd while preserving its existing className merging, data-slot attribute, and
forwarded props.

In `@kits/projectpilot-ai/apps/components/ui/skeleton.tsx`:
- Around line 1-13: Add the missing React namespace import required by the
Skeleton component’s React.ComponentProps<'div'> type annotation, leaving the
existing rendering and exports unchanged.

In `@kits/projectpilot-ai/apps/hooks/use-mobile.ts`:
- Around line 1-19: Keep useIsMobile in
kits/projectpilot-ai/apps/hooks/use-mobile.ts as the single implementation.
Delete the duplicate in kits/projectpilot-ai/apps/components/ui/use-mobile.tsx,
or replace it with a re-export from `@/hooks/use-mobile` if that import path is
still used elsewhere.

In `@kits/projectpilot-ai/apps/next.config.mjs`:
- Around line 3-5: Remove the ignoreBuildErrors override from the Next.js
typescript configuration in next.config.mjs so next build fails when TypeScript
errors are present.

In `@kits/projectpilot-ai/apps/package.json`:
- Line 61: Replace the mutable "latest" version in the package manifest’s
react-markdown dependency with a specific vetted version, preserving the
dependency entry and valid package.json syntax.

In `@kits/projectpilot-ai/apps/README.md`:
- Around line 1-12: Replace the copied Agent Kit Generation content in the
README with ProjectPilot-specific documentation: describe ProjectPilot, use its
correct repository/root deployment configuration, document the required
DISCOVERY_FLOW_ID, BLUEPRINT_FLOW_ID, and EXECUTION_FLOW_ID variables consumed
by orchestrate.ts, and correct the repository tree so flows/ is shown in its
actual location.

In `@kits/projectpilot-ai/lamatic.config.ts`:
- Line 6: Remove personal contact data from both metadata locations: in
kits/projectpilot-ai/lamatic.config.ts lines 6-6, replace the author email with
the repository or team contact; in kits/projectpilot-ai/flows/execution-flow.ts
lines 12-15, remove the duplicated personal email from the flow metadata.
Preserve the existing author and flow metadata structure.

In
`@kits/projectpilot-ai/prompts/execution-flow_instructor-llmnode-603_user_1.md`:
- Line 1: Update the prompt around the interpolated selectedIdea and blueprint
values to clearly delimit them as untrusted data, and explicitly instruct the
model to ignore any instructions contained within those fields. Preserve their
use as project context while applying the same protection to the duration value
where appropriate, without changing the requested roadmap, abstract, viva
questions, or resume bullet outputs.

In `@registry.json`:
- Around line 3187-3190: Update the projectpilot-ai deploy URL in the registry
links to include a Vercel env parameter containing DISCOVERY_FLOW_ID,
BLUEPRINT_FLOW_ID, EXECUTION_FLOW_ID, and every remaining variable declared in
apps/.env.example, ensuring the cloned registry deployment is runnable.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b1e6140b-f318-4c52-ac7e-bdad3b6494ff

📥 Commits

Reviewing files that changed from the base of the PR and between 2f0b57e and 17afecb.

⛔ Files ignored due to path filters (1)
  • kits/projectpilot-ai/apps/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (93)
  • README.md
  • kits/projectpilot-ai/README.md
  • kits/projectpilot-ai/agent.md
  • kits/projectpilot-ai/apps/.env.example
  • kits/projectpilot-ai/apps/.gitignore
  • kits/projectpilot-ai/apps/README.md
  • kits/projectpilot-ai/apps/actions/orchestrate.ts
  • kits/projectpilot-ai/apps/app/globals.css
  • kits/projectpilot-ai/apps/app/layout.tsx
  • kits/projectpilot-ai/apps/app/page.tsx
  • kits/projectpilot-ai/apps/components.json
  • kits/projectpilot-ai/apps/components/header.tsx
  • kits/projectpilot-ai/apps/components/theme-provider.tsx
  • kits/projectpilot-ai/apps/components/ui/accordion.tsx
  • kits/projectpilot-ai/apps/components/ui/alert-dialog.tsx
  • kits/projectpilot-ai/apps/components/ui/alert.tsx
  • kits/projectpilot-ai/apps/components/ui/aspect-ratio.tsx
  • kits/projectpilot-ai/apps/components/ui/avatar.tsx
  • kits/projectpilot-ai/apps/components/ui/badge.tsx
  • kits/projectpilot-ai/apps/components/ui/breadcrumb.tsx
  • kits/projectpilot-ai/apps/components/ui/button-group.tsx
  • kits/projectpilot-ai/apps/components/ui/button.tsx
  • kits/projectpilot-ai/apps/components/ui/calendar.tsx
  • kits/projectpilot-ai/apps/components/ui/card.tsx
  • kits/projectpilot-ai/apps/components/ui/carousel.tsx
  • kits/projectpilot-ai/apps/components/ui/chart.tsx
  • kits/projectpilot-ai/apps/components/ui/checkbox.tsx
  • kits/projectpilot-ai/apps/components/ui/collapsible.tsx
  • kits/projectpilot-ai/apps/components/ui/command.tsx
  • kits/projectpilot-ai/apps/components/ui/context-menu.tsx
  • kits/projectpilot-ai/apps/components/ui/dialog.tsx
  • kits/projectpilot-ai/apps/components/ui/drawer.tsx
  • kits/projectpilot-ai/apps/components/ui/dropdown-menu.tsx
  • kits/projectpilot-ai/apps/components/ui/empty.tsx
  • kits/projectpilot-ai/apps/components/ui/field.tsx
  • kits/projectpilot-ai/apps/components/ui/form.tsx
  • kits/projectpilot-ai/apps/components/ui/hover-card.tsx
  • kits/projectpilot-ai/apps/components/ui/input-group.tsx
  • kits/projectpilot-ai/apps/components/ui/input-otp.tsx
  • kits/projectpilot-ai/apps/components/ui/input.tsx
  • kits/projectpilot-ai/apps/components/ui/item.tsx
  • kits/projectpilot-ai/apps/components/ui/kbd.tsx
  • kits/projectpilot-ai/apps/components/ui/label.tsx
  • kits/projectpilot-ai/apps/components/ui/menubar.tsx
  • kits/projectpilot-ai/apps/components/ui/navigation-menu.tsx
  • kits/projectpilot-ai/apps/components/ui/pagination.tsx
  • kits/projectpilot-ai/apps/components/ui/popover.tsx
  • kits/projectpilot-ai/apps/components/ui/progress.tsx
  • kits/projectpilot-ai/apps/components/ui/radio-group.tsx
  • kits/projectpilot-ai/apps/components/ui/resizable.tsx
  • kits/projectpilot-ai/apps/components/ui/scroll-area.tsx
  • kits/projectpilot-ai/apps/components/ui/select.tsx
  • kits/projectpilot-ai/apps/components/ui/separator.tsx
  • kits/projectpilot-ai/apps/components/ui/sheet.tsx
  • kits/projectpilot-ai/apps/components/ui/sidebar.tsx
  • kits/projectpilot-ai/apps/components/ui/skeleton.tsx
  • kits/projectpilot-ai/apps/components/ui/slider.tsx
  • kits/projectpilot-ai/apps/components/ui/sonner.tsx
  • kits/projectpilot-ai/apps/components/ui/spinner.tsx
  • kits/projectpilot-ai/apps/components/ui/switch.tsx
  • kits/projectpilot-ai/apps/components/ui/table.tsx
  • kits/projectpilot-ai/apps/components/ui/tabs.tsx
  • kits/projectpilot-ai/apps/components/ui/textarea.tsx
  • kits/projectpilot-ai/apps/components/ui/toast.tsx
  • kits/projectpilot-ai/apps/components/ui/toaster.tsx
  • kits/projectpilot-ai/apps/components/ui/toggle-group.tsx
  • kits/projectpilot-ai/apps/components/ui/toggle.tsx
  • kits/projectpilot-ai/apps/components/ui/tooltip.tsx
  • kits/projectpilot-ai/apps/components/ui/use-mobile.tsx
  • kits/projectpilot-ai/apps/components/ui/use-toast.ts
  • kits/projectpilot-ai/apps/hooks/use-mobile.ts
  • kits/projectpilot-ai/apps/hooks/use-toast.ts
  • kits/projectpilot-ai/apps/lib/lamatic-client.ts
  • kits/projectpilot-ai/apps/lib/utils.ts
  • kits/projectpilot-ai/apps/next.config.mjs
  • kits/projectpilot-ai/apps/package.json
  • kits/projectpilot-ai/apps/postcss.config.mjs
  • kits/projectpilot-ai/apps/tsconfig.json
  • kits/projectpilot-ai/constitutions/default.md
  • kits/projectpilot-ai/flows/blueprint-flow.ts
  • kits/projectpilot-ai/flows/discovery-flow.ts
  • kits/projectpilot-ai/flows/execution-flow.ts
  • kits/projectpilot-ai/lamatic.config.ts
  • kits/projectpilot-ai/model-configs/blueprint-flow_instructor-llmnode-851_generative-model-name.ts
  • kits/projectpilot-ai/model-configs/discovery-flow_instructor-llmnode-710_generative-model-name.ts
  • kits/projectpilot-ai/model-configs/execution-flow_instructor-llmnode-603_generative-model-name.ts
  • kits/projectpilot-ai/prompts/blueprint-flow_instructor-llmnode-851_system_0.md
  • kits/projectpilot-ai/prompts/blueprint-flow_instructor-llmnode-851_user_1.md
  • kits/projectpilot-ai/prompts/discovery-flow_instructor-llmnode-710_system_0.md
  • kits/projectpilot-ai/prompts/discovery-flow_instructor-llmnode-710_user_1.md
  • kits/projectpilot-ai/prompts/execution-flow_instructor-llmnode-603_system_0.md
  • kits/projectpilot-ai/prompts/execution-flow_instructor-llmnode-603_user_1.md
  • registry.json

Comment thread kits/projectpilot-ai/apps/.gitignore Outdated
Comment on lines +3 to +46
import { lamaticClient } from "@/lib/lamatic-client";

export interface ProjectIdea {
title: string;
difficulty: string;
industryRelevance: string;
innovationScore: number;
}

export interface Blueprint {
frontend: string;
backend: string;
database: string;
aiFrameworks: string;
deployment: string;
architectureExplanation: string;
datasets: string[];
}

export interface ExecutionPlan {
roadmap: { week: string; task: string }[];
abstract: string;
vivaQuestions: string[];
resumeBullets: string[];
}

function getFlowId(envKey: string): string {
const id = process.env[envKey];
if (!id) {
throw new Error(`Missing environment variable: ${envKey}`);
}
return id;
}

export async function getProjectIdeas(input: {
branch: string;
interest: string;
skillLevel: string;
duration: string;
teamType: string;
}): Promise<{ success: boolean; data?: ProjectIdea[]; error?: string }> {
try {
const flowId = getFlowId("DISCOVERY_FLOW_ID");
const resData = await lamaticClient.executeFlow(flowId, input);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Your mission: use the kit config as the flow source of truth.

These actions only read *_FLOW_ID environment variables; they never import or use ../../lamatic.config. Derive the three flow definitions from the parent kit configuration instead of maintaining a second flow-ID contract.

As per coding guidelines, “Kit Next.js apps must import and use ../../lamatic.config to read step definitions from the parent kit.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@kits/projectpilot-ai/apps/actions/orchestrate.ts` around lines 3 - 46, Update
getProjectIdeas and the other action flows in this module to import and use the
parent kit’s lamatic.config as the single source of truth for flow definitions,
replacing getFlowId and all *_FLOW_ID environment-variable lookups. Resolve each
action’s corresponding configured flow and pass its definition or identifier to
lamaticClient.executeFlow while preserving the existing action behavior and
return types.

Source: Coding guidelines

Comment on lines +37 to +84
export async function getProjectIdeas(input: {
branch: string;
interest: string;
skillLevel: string;
duration: string;
teamType: string;
}): Promise<{ success: boolean; data?: ProjectIdea[]; error?: string }> {
try {
const flowId = getFlowId("DISCOVERY_FLOW_ID");
const resData = await lamaticClient.executeFlow(flowId, input);
const ideas = resData?.result?.ideas;
if (!ideas) throw new Error("No ideas found in response");
return { success: true, data: ideas };
} catch (error) {
return { success: false, error: error instanceof Error ? error.message : "Unknown error" };
}
}

export async function getBlueprint(input: {
selectedIdea: string;
skillLevel: string;
}): Promise<{ success: boolean; data?: Blueprint; error?: string }> {
try {
const flowId = getFlowId("BLUEPRINT_FLOW_ID");
const resData = await lamaticClient.executeFlow(flowId, input);
const blueprint = resData?.result;
if (!blueprint) throw new Error("No blueprint found in response");
return { success: true, data: blueprint };
} catch (error) {
return { success: false, error: error instanceof Error ? error.message : "Unknown error" };
}
}

export async function getExecutionPlan(input: {
selectedIdea: string;
blueprint: string;
duration: string;
}): Promise<{ success: boolean; data?: ExecutionPlan; error?: string }> {
try {
const flowId = getFlowId("EXECUTION_FLOW_ID");
const resData = await lamaticClient.executeFlow(flowId, input);
const plan = resData?.result;
if (!plan) throw new Error("No execution plan found in response");
return { success: true, data: plan };
} catch (error) {
return { success: false, error: error instanceof Error ? error.message : "Unknown error" };
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Repo files of interest:\n'
git ls-files | rg '(^|/)kits/projectpilot-ai/apps/(actions/orchestrate\.ts|app/page\.tsx|components/)' || true

printf '\nPackage/React/RHF imports and schema occurrences:\n'
rg -n "react-hook-form|zod|from 'zod|from \"zod|register|handleSubmit|watch|Controller|field" kits/projectpilot-ai/apps || true

printf '\norchestrate.ts outline/contents:\n'
wc -l kits/projectpilot-ai/apps/actions/orchestrate.ts
cat -n kits/projectpilot-ai/apps/actions/orchestrate.ts | sed -n '1,140p'

printf '\npage.tsx relevant sections:\n'
wc -l kits/projectpilot-ai/apps/app/page.tsx
cat -n kits/projectpilot-ai/apps/app/page.tsx | sed -n '1,220p'

printf '\nSchema files nearby:\n'
git ls-files | rg 'schema|zod|form' | sed -n '1,120p'

Repository: Lamatic/AgentKit

Length of output: 27180


Mission: establish a single validated form contract.

The app currently uses useState and native required validation while server actions accept arbitrary caller payloads before invoking Lamatic flows. Use one shared Zod schema with react-hook-form in the UI, then parse the same schema in each action before executeFlow:

  • kits/projectpilot-ai/apps/app/page.tsx#L15-L77: replace manual form state/validation with react-hook-form and the shared schemas.
  • kits/projectpilot-ai/apps/actions/orchestrate.ts#L37-L84: parse and reject invalid or oversized flow inputs before invoking Lamatic.
📍 Affects 2 files
  • kits/projectpilot-ai/apps/actions/orchestrate.ts#L37-L84 (this comment)
  • kits/projectpilot-ai/apps/app/page.tsx#L15-L77
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@kits/projectpilot-ai/apps/actions/orchestrate.ts` around lines 37 - 84,
Establish shared Zod schemas for the project-ideas, blueprint, and
execution-plan inputs, and use them consistently across both sites. In
kits/projectpilot-ai/apps/actions/orchestrate.ts lines 37-84, parse each
action’s input with its corresponding schema and return a validation error
before calling executeFlow when parsing fails or limits are exceeded; in
kits/projectpilot-ai/apps/app/page.tsx lines 15-77, replace manual
useState/native required validation with react-hook-form wired to those same
shared schemas and preserve the existing submission flow.

Source: Coding guidelines

Comment thread kits/projectpilot-ai/apps/actions/orchestrate.ts
Comment thread kits/projectpilot-ai/apps/app/layout.tsx Outdated
Comment thread kits/projectpilot-ai/apps/package.json Outdated
Comment thread kits/projectpilot-ai/apps/README.md Outdated
Comment on lines +1 to +12
# Agent Kit Generation by Lamatic.ai

<p align="center">
<a href="https://agent-kit-generation.vercel.app" target="_blank">
<img src="https://img.shields.io/badge/Live%20Demo-black?style=for-the-badge" alt="Live Demo" />
</a>
</p>


**Agent Kit Generation** is an AI-powered content generation system built with [Lamatic.ai](https://lamatic.ai). It uses intelligent workflows to generate text, images, and JSON content through a modern Next.js interface with markdown rendering support.

[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/Lamatic/AgentKit&root-directory=kits/agentic/generation&env=AGENTIC_GENERATE_CONTENT,LAMATIC_API_URL,LAMATIC_PROJECT_ID,LAMATIC_API_KEY&envDescription=Your%20Lamatic%20Generation%20keys%20are%20required.&envLink=https://lamatic.ai/templates/agentkits/agentic/agent-kit-generation)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Replace the copied Generation README with ProjectPilot-specific setup.

This file still documents Agent Kit Generation, its old Vercel clone/root, and one AGENTIC_GENERATE_CONTENT flow. ProjectPilot requires DISCOVERY_FLOW_ID, BLUEPRINT_FLOW_ID, and EXECUTION_FLOW_ID; following this README will leave the variables consumed by orchestrate.ts unset and make setup fail. The repository tree also incorrectly places flows/ inside the app.

Also applies to: 56-65, 77-93

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@kits/projectpilot-ai/apps/README.md` around lines 1 - 12, Replace the copied
Agent Kit Generation content in the README with ProjectPilot-specific
documentation: describe ProjectPilot, use its correct repository/root deployment
configuration, document the required DISCOVERY_FLOW_ID, BLUEPRINT_FLOW_ID, and
EXECUTION_FLOW_ID variables consumed by orchestrate.ts, and correct the
repository tree so flows/ is shown in its actual location.

Comment thread kits/projectpilot-ai/lamatic.config.ts Outdated
Comment thread kits/projectpilot-ai/prompts/execution-flow_instructor-llmnode-603_user_1.md Outdated
Comment thread registry.json
@github-actions

Copy link
Copy Markdown
Contributor

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
registry.json (1)

3166-3169: 🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

Mission: remove personal contact data from published metadata.

Replace the personal Gmail address with a repository/team contact or omit the email, consistent with the kit metadata privacy fix.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@registry.json` around lines 3166 - 3169, Update the author metadata for
Kishan C in registry.json to remove the personal Gmail address, replacing it
with an approved repository/team contact or omitting the email field entirely,
consistent with the existing kit metadata privacy handling.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@kits/projectpilot-ai/prompts/execution-flow_instructor-llmnode-603_user_1.md`:
- Around line 11-13: Update the execution prompt around triggerNode_1.duration
to clearly delimit the user-controlled timeline, instruct the model to treat it
only as data and ignore any embedded instructions, and include that delimited
timeline in the factual context used for generation. Preserve the requested
roadmap, abstract, viva questions, and resume bullet outputs while ensuring the
roadmap respects the provided duration.

---

Outside diff comments:
In `@registry.json`:
- Around line 3166-3169: Update the author metadata for Kishan C in
registry.json to remove the personal Gmail address, replacing it with an
approved repository/team contact or omitting the email field entirely,
consistent with the existing kit metadata privacy handling.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 9e16a2b7-48e1-4102-a1f9-a74b29d9c6d4

📥 Commits

Reviewing files that changed from the base of the PR and between d6665a2 and 71fad4c.

⛔ Files ignored due to path filters (1)
  • kits/projectpilot-ai/apps/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (7)
  • kits/projectpilot-ai/apps/.gitignore
  • kits/projectpilot-ai/apps/app/layout.tsx
  • kits/projectpilot-ai/apps/package.json
  • kits/projectpilot-ai/flows/execution-flow.ts
  • kits/projectpilot-ai/lamatic.config.ts
  • kits/projectpilot-ai/prompts/execution-flow_instructor-llmnode-603_user_1.md
  • registry.json
💤 Files with no reviewable changes (1)
  • kits/projectpilot-ai/flows/execution-flow.ts

Comment thread kits/projectpilot-ai/prompts/execution-flow_instructor-llmnode-603_user_1.md Outdated
@github-actions

Copy link
Copy Markdown
Contributor

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

♻️ Duplicate comments (2)
kits/projectpilot-ai/apps/actions/orchestrate.ts (2)

77-86: 🔒 Security & Privacy | 🟠 Major

Mission finding still active: validate server-action inputs before invoking flows.

These exported actions pass arbitrary strings directly to executeFlow; callers can bypass browser validation and submit empty or oversized values, causing malformed prompts and unnecessary Lamatic usage. Parse shared Zod schemas and enforce field limits in each action before the external call.

Also applies to: 97-103, 114-121

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@kits/projectpilot-ai/apps/actions/orchestrate.ts` around lines 77 - 86,
Validate the input at the start of each exported action, including
getProjectIdeas and the actions near the referenced sections, by parsing the
appropriate shared Zod schema before calling lamaticClient.executeFlow. Enforce
the schemas’ required, non-empty, and maximum-length constraints, return the
existing error shape for invalid input, and only invoke the flow with the parsed
validated data.

85-86: 🗄️ Data Integrity & Integration | 🟠 Major

Mission directive still active: use lamatic.config.ts as the flow source of truth.

The three actions still pass hard-coded environment keys to getFlowId instead of resolving discovery-flow, blueprint-flow, and execution-flow from ../../lamatic.config. This maintains a second flow-ID contract that can drift from the kit definition.

As per coding guidelines, “Kit Next.js apps must import and use ../../lamatic.config to read step definitions from the parent kit.”

Also applies to: 102-103, 120-121

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@kits/projectpilot-ai/apps/actions/orchestrate.ts` around lines 85 - 86,
Replace the hard-coded getFlowId environment-key lookups in the discovery,
blueprint, and execution action flows with the corresponding flow definitions
imported from ../../lamatic.config: discovery-flow, blueprint-flow, and
execution-flow. Pass each resolved configured flow identifier to
lamaticClient.executeFlow, removing the secondary environment-based flow-ID
contract while preserving the existing inputs and execution behavior.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@kits/projectpilot-ai/apps/actions/orchestrate.ts`:
- Around line 37-50: Strengthen the response validators by updating
isProjectIdeaArray to require between 5 and 8 ideas, inclusive, while preserving
validation of every idea’s fields. Update isExecutionPlan to validate collection
sizes as required by the flow contract and ensure roadmap entries are objects
containing week and task fields, while every vivaQuestions and resumeBullets
entry is a string; reject any malformed nested values before returning typed
data.

In
`@kits/projectpilot-ai/prompts/execution-flow_instructor-llmnode-603_user_1.md`:
- Line 16: Add a single trailing newline at the end of the prompt content in the
markdown file, without changing the existing instruction text.

---

Duplicate comments:
In `@kits/projectpilot-ai/apps/actions/orchestrate.ts`:
- Around line 77-86: Validate the input at the start of each exported action,
including getProjectIdeas and the actions near the referenced sections, by
parsing the appropriate shared Zod schema before calling
lamaticClient.executeFlow. Enforce the schemas’ required, non-empty, and
maximum-length constraints, return the existing error shape for invalid input,
and only invoke the flow with the parsed validated data.
- Around line 85-86: Replace the hard-coded getFlowId environment-key lookups in
the discovery, blueprint, and execution action flows with the corresponding flow
definitions imported from ../../lamatic.config: discovery-flow, blueprint-flow,
and execution-flow. Pass each resolved configured flow identifier to
lamaticClient.executeFlow, removing the secondary environment-based flow-ID
contract while preserving the existing inputs and execution behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: a28a40ff-2c46-4672-9729-1e056ddb3fd5

📥 Commits

Reviewing files that changed from the base of the PR and between 71fad4c and 2be2376.

📒 Files selected for processing (3)
  • kits/projectpilot-ai/apps/actions/orchestrate.ts
  • kits/projectpilot-ai/prompts/execution-flow_instructor-llmnode-603_user_1.md
  • registry.json
💤 Files with no reviewable changes (1)
  • registry.json

Comment on lines +37 to +50
function isProjectIdeaArray(value: unknown): value is ProjectIdea[] {
return (
Array.isArray(value) &&
value.every(
(item) =>
item &&
typeof item === "object" &&
typeof (item as any).title === "string" &&
typeof (item as any).difficulty === "string" &&
typeof (item as any).industryRelevance === "string" &&
typeof (item as any).innovationScore === "number"
)
);
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Mission finding: enforce the complete response contracts.

isProjectIdeaArray accepts empty or oversized lists despite the promised 5–8 ideas. isExecutionPlan also accepts arbitrary values inside roadmap, vivaQuestions, and resumeBullets. These malformed payloads are then returned as successful typed data. Validate the collection sizes and every nested item; the execution-flow schema requires roadmap {week, task} objects and string question/bullet entries.

🛠️ Proposed boundary checks
 function isProjectIdeaArray(value: unknown): value is ProjectIdea[] {
   return (
     Array.isArray(value) &&
+    value.length >= 5 &&
+    value.length <= 8 &&
     value.every(
       (item) =>
         item &&
@@
 function isExecutionPlan(value: unknown): value is ExecutionPlan {
   if (!value || typeof value !== "object") return false;
   const p = value as any;
   return (
-    Array.isArray(p.roadmap) &&
+    Array.isArray(p.roadmap) &&
+    p.roadmap.every(
+      (item: any) =>
+        item &&
+        typeof item === "object" &&
+        typeof item.week === "string" &&
+        typeof item.task === "string"
+    ) &&
     typeof p.abstract === "string" &&
     Array.isArray(p.vivaQuestions) &&
+    p.vivaQuestions.every((item: unknown) => typeof item === "string") &&
     Array.isArray(p.resumeBullets)
+    && p.resumeBullets.every((item: unknown) => typeof item === "string")
   );
 }

Based on learnings from the supplied PR objective and upstream flow contract, these are the required response shapes.

Also applies to: 66-75

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@kits/projectpilot-ai/apps/actions/orchestrate.ts` around lines 37 - 50,
Strengthen the response validators by updating isProjectIdeaArray to require
between 5 and 8 ideas, inclusive, while preserving validation of every idea’s
fields. Update isExecutionPlan to validate collection sizes as required by the
flow contract and ensure roadmap entries are objects containing week and task
fields, while every vivaQuestions and resumeBullets entry is a string; reject
any malformed nested values before returning typed data.

{{triggerNode_1.duration}}
<<<END_TIMELINE>>>

Using only the project idea, blueprint, and timeline above as factual context, generate: a week-by-week roadmap (array of week number and task), an abstract of about 150 words, 5 viva questions ranging from beginner to advanced, and 3 ATS-friendly resume bullet points. No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Mission cleanup: add the required trailing newline.

The file currently ends on line 16 without the single trailing newline required by markdownlint MD047; add it so CI passes.

🧰 Tools
🪛 markdownlint-cli2 (0.23.0)

[warning] 16-16: Files should end with a single newline character

(MD047, single-trailing-newline)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@kits/projectpilot-ai/prompts/execution-flow_instructor-llmnode-603_user_1.md`
at line 16, Add a single trailing newline at the end of the prompt content in
the markdown file, without changing the existing instruction text.

Source: Linters/SAST tools

@akshatvirmani

Copy link
Copy Markdown
Contributor

@Kishan-215 there are some issues with the PR. Please solve the comment above.

@github-actions

Copy link
Copy Markdown
Contributor

Hi @Kishan-215! 👋

Before this PR can be reviewed by maintainers, please resolve all comments and requested changes from the CodeRabbit automated review.

Steps to follow:

  1. Read through all CodeRabbit comments carefully
  2. Address each issue raised (or reply explaining why you disagree)
  3. Push your fixes as new commits
  4. Once all issues are resolved, comment here so we can re-review

This helps keep the review process efficient for everyone. Thank you! 🙏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants