Skip to content

feat: Add mock-ai interviewer Agentkit#101

Open
sreecharan1306 wants to merge 9 commits intoLamatic:old-mainfrom
sreecharan1306:main
Open

feat: Add mock-ai interviewer Agentkit#101
sreecharan1306 wants to merge 9 commits intoLamatic:old-mainfrom
sreecharan1306:main

Conversation

@sreecharan1306
Copy link
Copy Markdown

@sreecharan1306 sreecharan1306 commented Mar 24, 2026

What This Kit Does

Mockai is an AI-powered mock interviewer that helps users practice for tailored job interviews. It conducts dynamic, interactive interviews using real-time speech-to-text and provides instant, AI-generated feedback on your performance.

Providers & Prerequisites

  • External Providers: Google Gemini
  • Prerequisites: No special setup required

How to Run Locally

  1. cd kits/agentic/mockai
  2. npm install
  3. cp .env.example .env and fill in values
  4. npm run dev

Live Preview

https://mockai-mscr.vercel.app/

Lamatic Flow

  • Question Flow ID: 9f64b62e-6e02-4de5-afa9-677970913e00
  • Feedback Flow ID: 7a20f813-2e7a-4597-804f-427b9b702d88

Mockai: AI-Powered Mock Interviewer

  • Adds a complete mock-interview app at kits/agentic/mockai/ with real-time speech-to-text and AI feedback (Google Gemini via Lamatic flows).
  • Three-step UX: Setup → Interview (voice + text answers) → Feedback (positives, negatives, numeric rating).
  • Server actions: generateQuestions(...) and evaluateAnswers(...) call Lamatic flows.
  • Main client page: app/page.tsx (interview flow, recording, speech recognition, visualizer, state/cleanup).
  • Large UI kit added (50+ Radix/Tailwind components), plus hooks/utilities (useIsMobile, toast system, cn, lamatic client).
  • Config & flows: question-flow, feedback-flow, agentic-generate-content, orchestrate.js/config.json, and Lamatic flow inputs/meta.
  • Env vars / setup: LAMATIC_API_URL, LAMATIC_PROJECT_ID, LAMATIC_API_KEY, AGENTIC_QUESTION_FLOW_ID, AGENTIC_FEEDBACK_FLOW_ID; local run: cd kits/agentic/mockai && npm install && cp .env.example .env && npm run dev.
  • Live preview: https://mockai-mscr.vercel.app/

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Mar 24, 2026

Warning

Rate limit exceeded

@github-actions[bot] has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 59 minutes and 37 seconds before requesting another review.

To continue reviewing without waiting, purchase usage credits in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

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

Review profile: ASSERTIVE

Plan: Pro

Run ID: 5c5c8001-209f-4a2c-9145-177fad08a0ec

📥 Commits

Reviewing files that changed from the base of the PR and between 7aca27f and 4ef625e.

📒 Files selected for processing (10)
  • kits/agentic/mockai/.gitignore
  • kits/agentic/mockai/PR_DESCRIPTION.md
  • kits/agentic/mockai/actions/orchestrate.ts
  • kits/agentic/mockai/components/ui/AspectRatio.tsx
  • kits/agentic/mockai/components/ui/collapsible.tsx
  • kits/agentic/mockai/components/ui/form.tsx
  • kits/agentic/mockai/components/ui/sidebar.tsx
  • kits/agentic/mockai/components/ui/tooltip.tsx
  • kits/agentic/mockai/config.json
  • kits/agentic/mockai/lib/lamatic-client.ts

Walkthrough

Adds a new Next.js "mockai" agent kit at kits/agentic/mockai/ including Lamatic flow configs, server orchestration, a question/feedback interview UI with speech support, a large shadcn-style component library, tooling/config files, and documentation.

Changes

Cohort / File(s) Summary
Project config & env
kits/agentic/mockai/.env.example, kits/agentic/mockai/.gitignore, kits/agentic/mockai/package.json, kits/agentic/mockai/tsconfig.json, kits/agentic/mockai/next.config.mjs, kits/agentic/mockai/postcss.config.mjs, kits/agentic/mockai/config.json, kits/agentic/mockai/orchestrate.js
Added environment example, ignore rules, package manifest, TS/Next/PostCSS configs, kit config and an orchestrate.js export wiring workflow IDs and Lamatic API env vars.
Documentation & guides
kits/agentic/mockai/README.md, kits/agentic/mockai/flows/**/README.md
New README for the kit and per-flow README files describing setup, deployment, and flow structure.
Server orchestration & client
kits/agentic/mockai/actions/orchestrate.ts, kits/agentic/mockai/lib/lamatic-client.ts, kits/agentic/mockai/orchestrate.js
New server actions generateQuestions and evaluateAnswers, Lamatic client instantiation with env checks, and orchestration config exposing workflow IDs and API credentials.
App entry & styling
kits/agentic/mockai/app/page.tsx, kits/agentic/mockai/app/layout.tsx, kits/agentic/mockai/app/globals.css, kits/agentic/mockai/styles/globals.css
Added main interview page (setup/interview/feedback with speech-to-text and recording handling), root layout with fonts/analytics, and global Tailwind theme CSS.
Flows (configs & inputs & meta)
kits/agentic/mockai/flows/question-flow/*, kits/agentic/mockai/flows/feedback-flow/*, kits/agentic/mockai/flows/agentic-generate-content/*
Added flow JSON configs, inputs.json model-selector declarations, meta.json, and flow README files for question generation, feedback evaluation, and content generation flows.
UI components & theme
kits/agentic/mockai/components/*.tsx, kits/agentic/mockai/components/ui/*
Introduced ~60+ shadcn-style UI components (buttons, dialogs, inputs, complex primitives like carousel, chart, sidebar, table, toast, etc.), header and ThemeProvider, and a components.json for shadcn config.
Hooks & utilities
kits/agentic/mockai/hooks/use-mobile.ts, kits/agentic/mockai/hooks/use-toast.ts, kits/agentic/mockai/components/ui/use-mobile.tsx, kits/agentic/mockai/components/ui/use-toast.ts, kits/agentic/mockai/lib/utils.ts
Added useIsMobile hook(s), in-memory toast system/hooks, and cn utility (clsx + tailwind-merge).
Client app utilities
kits/agentic/mockai/next.config.mjs, kits/agentic/mockai/postcss.config.mjs, kits/agentic/mockai/package.json
Build/runtime config and dependencies for the Next.js app (scripts, deps, and PostCSS/Tailwind integration).

Sequence Diagram(s)

sequenceDiagram
    actor User
    participant Page as App/Page (Next.js)
    participant Orchestrate as Server Action\n(actions/orchestrate.ts)
    participant LamaticClient as Lamatic Client\n(lib/lamatic-client.ts)
    participant LamaticAPI as Lamatic API

    User->>Page: Submit jobTitle, yearsOfExp, jobDesc
    Page->>Orchestrate: generateQuestions(jobTitle, yearsOfExp, jobDesc)
    Orchestrate->>LamaticClient: executeFlow(questionWorkflowId, inputs)
    LamaticClient->>LamaticAPI: POST /flows/execute (with credentials)
    LamaticAPI-->>LamaticClient: { result: { data: questions[] } }
    LamaticClient-->>Orchestrate: flow response
    Orchestrate-->>Page: { success: true, questions }

    User->>Page: Provide answers (text or voice)
    Page->>Orchestrate: evaluateAnswers(candidateResponses)
    Orchestrate->>LamaticClient: executeFlow(feedbackWorkflowId, responses)
    LamaticClient->>LamaticAPI: POST /flows/execute (with credentials)
    LamaticAPI-->>LamaticClient: { result: { rating, positives, negatives } }
    LamaticClient-->>Orchestrate: feedback response
    Orchestrate-->>Page: { success: true, feedback }
    Page->>User: Render rating, positives, negatives
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested reviewers

  • d-pamneja
  • amanintech
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

@sreecharan1306 sreecharan1306 marked this pull request as ready for review March 25, 2026 14:30
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 19

Note

Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.

🟡 Minor comments (17)
kits/agentic/mockai/.gitignore-19-21 (1)

19-21: ⚠️ Potential issue | 🟡 Minor

Add .env.local to prevent accidental secret commits.

The .gitignore excludes .env but is missing .env.local, which is commonly used by Next.js for local environment variables. As per coding guidelines, both .env and .env.local must be excluded.

Proposed fix
 # env files
 .env
+.env.local
kits/agentic/mockai/components/ui/slider.tsx-16-24 (1)

16-24: ⚠️ Potential issue | 🟡 Minor

Reconsider the [min, max] fallback behavior for _values.

When neither value nor defaultValue is provided, _values defaults to [min, max], which renders exactly two thumbs regardless of intended use. This creates a range slider by default, which may not match the expected behavior for a single-value slider.

Consider using [min] as the fallback to render a single thumb by default, or document that consumers must provide an explicit defaultValue.

kits/agentic/mockai/components/ui/kbd.tsx-18-24 (1)

18-24: ⚠️ Potential issue | 🟡 Minor

Use a structural wrapper for KbdGroup instead of <kbd>.

KbdGroup is typed as React.ComponentProps<'div'> but currently renders <kbd>, which gives incorrect semantics for a group container.

Proposed fix
 function KbdGroup({ className, ...props }: React.ComponentProps<'div'>) {
   return (
-    <kbd
+    <div
       data-slot="kbd-group"
       className={cn('inline-flex items-center gap-1', className)}
       {...props}
-    />
+    />
   )
 }
kits/agentic/mockai/components/ui/carousel.tsx-64-105 (1)

64-105: ⚠️ Potential issue | 🟡 Minor

Add symmetric cleanup for the reInit event listener in the effect's return statement.

The code subscribes to both reInit and select events (lines 99–100), but the cleanup only unsubscribes from select (line 105). Since Embla listeners persist until explicitly removed via off(), the reInit listener should also be cleaned up to prevent memory leaks.

Current cleanup (incomplete)
return () => {
  api?.off('select', onSelect)
}

Update to:

return () => {
  api?.off('reInit', onSelect)
  api?.off('select', onSelect)
}
kits/agentic/mockai/components/ui/carousel.tsx-78-88 (1)

78-88: ⚠️ Potential issue | 🟡 Minor

Match keyboard navigation to the chosen orientation.

Lines 80-85 always consume Left/Right. When orientation="vertical", the buttons render as up/down controls but the keyboard path still ignores ArrowUp/ArrowDown, so vertical carousels are inconsistent for keyboard users.

♿ Proposed fix
   const handleKeyDown = React.useCallback(
     (event: React.KeyboardEvent<HTMLDivElement>) => {
-      if (event.key === 'ArrowLeft') {
+      const prevKey = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp'
+      const nextKey = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown'
+
+      if (event.key === prevKey) {
         event.preventDefault()
         scrollPrev()
-      } else if (event.key === 'ArrowRight') {
+      } else if (event.key === nextKey) {
         event.preventDefault()
         scrollNext()
       }
     },
-    [scrollPrev, scrollNext],
+    [orientation, scrollPrev, scrollNext],
   )
kits/agentic/mockai/hooks/use-toast.ts-174-182 (1)

174-182: ⚠️ Potential issue | 🟡 Minor

Incorrect useEffect dependency causes unnecessary re-subscriptions.

The dependency array includes [state], but the effect only subscribes/unsubscribes the listener. This causes the effect to re-run on every state change, repeatedly adding and removing the same setState from the listeners array. The dependency should be empty [] to subscribe once on mount and cleanup on unmount.

🐛 Proposed fix
   React.useEffect(() => {
     listeners.push(setState)
     return () => {
       const index = listeners.indexOf(setState)
       if (index > -1) {
         listeners.splice(index, 1)
       }
     }
-  }, [state])
+  }, [])
kits/agentic/mockai/components/ui/empty.tsx-71-81 (1)

71-81: ⚠️ Potential issue | 🟡 Minor

Type and element mismatch in EmptyDescription.

The component is typed as React.ComponentProps<'p'> but renders a <div> element. This inconsistency could cause confusion when consumers expect paragraph-specific behavior or accessibility semantics.

🐛 Proposed fix - align type with element
-function EmptyDescription({ className, ...props }: React.ComponentProps<'p'>) {
+function EmptyDescription({ className, ...props }: React.ComponentProps<'div'>) {
   return (
     <div
       data-slot="empty-description"

Or alternatively, render a <p> element to match the type:

 function EmptyDescription({ className, ...props }: React.ComponentProps<'p'>) {
   return (
-    <div
+    <p
       data-slot="empty-description"
       className={cn(
         'text-muted-foreground [&>a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4',
         className,
       )}
       {...props}
-    />
+    />
   )
 }
kits/agentic/mockai/components/ui/input-group.tsx-70-76 (1)

70-76: ⚠️ Potential issue | 🟡 Minor

Addon click handler can be silently overridden and misses textarea focus.

Because ...props is spread after onClick, consumer onClick can replace this logic entirely. Also, focusing only input skips InputGroupTextarea controls.

💡 Proposed fix
 function InputGroupAddon({
   className,
   align = 'inline-start',
+  onClick,
   ...props
 }: React.ComponentProps<'div'> & VariantProps<typeof inputGroupAddonVariants>) {
   return (
     <div
@@
-      onClick={(e) => {
-        if ((e.target as HTMLElement).closest('button')) {
+      onClick={(e) => {
+        onClick?.(e)
+        if (e.defaultPrevented) return
+        if ((e.target as HTMLElement).closest('button,[role="button"]')) {
           return
         }
-        e.currentTarget.parentElement?.querySelector('input')?.focus()
+        e.currentTarget.parentElement
+          ?.querySelector<HTMLElement>('[data-slot="input-group-control"]')
+          ?.focus()
       }}
       {...props}
     />
   )
 }
kits/agentic/mockai/components/ui/field.tsx-194-229 (1)

194-229: ⚠️ Potential issue | 🟡 Minor

Don't render an empty alert when no error messages exist.

errors=[] (or entries without message) still produces a truthy empty <ul>, so FieldError renders role="alert" with no content. Filter the messages first and return null when the filtered list is empty.

Suggested fix
   const content = useMemo(() => {
     if (children) {
       return children
     }
 
-    if (!errors) {
+    const messages =
+      errors?.flatMap((error) => (error?.message ? [error.message] : [])) ?? []
+
+    if (messages.length === 0) {
       return null
     }
 
-    if (errors.length === 1 && errors[0]?.message) {
-      return errors[0].message
+    if (messages.length === 1) {
+      return messages[0]
     }
 
     return (
       <ul className="ml-4 flex list-disc flex-col gap-1">
-        {errors.map(
-          (error, index) =>
-            error?.message && <li key={index}>{error.message}</li>,
-        )}
+        {messages.map((message, index) => (
+          <li key={index}>{message}</li>
+        ))}
       </ul>
     )
   }, [children, errors])
kits/agentic/mockai/components/ui/sidebar.tsx-609-612 (1)

609-612: ⚠️ Potential issue | 🟡 Minor

Remove or make Math.random() deterministic.

While this component is marked 'use client' and doesn't face hydration mismatches, Math.random() in the render path still creates non-deterministic skeleton widths on each mount, which can complicate testing and reproducibility. Consider accepting the width as a prop, using a seeded random number, or applying a fixed width instead.

kits/agentic/mockai/orchestrate.js-1-44 (1)

1-44: ⚠️ Potential issue | 🟡 Minor

Convert to TypeScript and fix type issues.

This file should be orchestrate.ts per the project guideline requiring TypeScript for all kit files. Additionally:

  1. polling should be boolean: Lines 19 and 36 use "false" (string) instead of false (boolean).
  2. Missing type definitions: TypeScript would provide better compile-time safety for the config structure.
🔧 Suggested TypeScript conversion
-export const config = {
+interface FlowConfig {
+  name: string;
+  type: string;
+  workflowId: string | undefined;
+  description: string;
+  expectedOutput: string[];
+  inputSchema: Record<string, string>;
+  outputSchema: Record<string, string>;
+  mode: string;
+  polling: boolean;
+}
+
+interface OrchestrateConfig {
+  type: string;
+  flows: Record<string, FlowConfig>;
+  api: {
+    endpoint: string | undefined;
+    projectId: string | undefined;
+    apiKey: string | undefined;
+  };
+}
+
+export const config: OrchestrateConfig = {
     "type": "atomic",
     "flows": {
       "question" : {
           ...
           "mode": "sync",
-          "polling" : "false"
+          "polling" : false
       },
       "feedback" : {
           ...
-          "polling" : "false"
+          "polling" : false
       }
     },
     ...
 }

As per coding guidelines: "Use TypeScript for all kit components and server actions".

kits/agentic/mockai/app/layout.tsx-6-7 (1)

6-7: ⚠️ Potential issue | 🟡 Minor

Loaded fonts are not applied to the DOM.

The Geist font objects are instantiated but their class names are never applied. The underscore prefix suggests these are intentionally unused, but this means the fonts won't actually render.

🛠️ Proposed fix to apply the fonts
-const _geist = Geist({ subsets: ["latin"] });
-const _geistMono = Geist_Mono({ subsets: ["latin"] });
+const geist = Geist({ subsets: ["latin"], variable: "--font-geist-sans" });
+const geistMono = Geist_Mono({ subsets: ["latin"], variable: "--font-geist-mono" });

Then apply to the body:

-      <body className={`font-sans antialiased`}>
+      <body className={`${geist.variable} ${geistMono.variable} font-sans antialiased`}>
kits/agentic/mockai/.env.example-1-6 (1)

1-6: ⚠️ Potential issue | 🟡 Minor

Fix inconsistent .env formatting.

The file has inconsistent spacing around = signs (lines 2-4 have spaces, lines 5-6 don't) and is missing a trailing newline. Some env parsers may behave unexpectedly with spaces around =.

🛠️ Proposed fix for consistent formatting
-# AGENTIC_GENERATE_CONTENT = "AGENTIC_GENERATE_CONTENT Flow ID"
-LAMATIC_API_URL = "LAMATIC_API_URL"
-LAMATIC_PROJECT_ID = "LAMATIC_PROJECT_ID"
-LAMATIC_API_KEY = "LAMATIC_API_KEY"
-AGENTIC_FEEDBACK_FLOW_ID="Feedback agent Flow ID"
-AGENTIC_QUESTION_FLOW_ID="Question agent Flow ID"
+# AGENTIC_GENERATE_CONTENT="AGENTIC_GENERATE_CONTENT Flow ID"
+LAMATIC_API_URL="your_lamatic_api_url"
+LAMATIC_PROJECT_ID="your_lamatic_project_id"
+LAMATIC_API_KEY="your_lamatic_api_key"
+AGENTIC_FEEDBACK_FLOW_ID="your_feedback_flow_id"
+AGENTIC_QUESTION_FLOW_ID="your_question_flow_id"
kits/agentic/mockai/README.md-2-4 (1)

2-4: ⚠️ Potential issue | 🟡 Minor

Add alt text to the hero image.

The <img> tag is missing alt, which is already being flagged by markdownlint and hurts accessibility for screen-reader users.

kits/agentic/mockai/README.md-82-97 (1)

82-97: ⚠️ Potential issue | 🟡 Minor

Add a language to the repo-structure fence.

The block starting on Line 82 is unlabeled, so it will keep tripping MD040. text is enough here.

kits/agentic/mockai/components/ui/chart.tsx-235-239 (1)

235-239: ⚠️ Potential issue | 🟡 Minor

Render 0 values in the tooltip.

The current truthy check hides legitimate zero datapoints, so a series value of 0 disappears from the tooltip. Check for null/undefined instead.

🩹 Minimal fix
-                    {item.value && (
+                    {item.value !== undefined && item.value !== null && (
                       <span className="text-foreground font-mono font-medium tabular-nums">
                         {item.value.toLocaleString()}
                       </span>
                     )}
kits/agentic/mockai/components/ui/toast.tsx-77-87 (1)

77-87: ⚠️ Potential issue | 🟡 Minor

Give the close control an accessible name.

This is currently an icon-only button, so assistive tech will announce an unnamed control. Add aria-label or hidden text.

♿ Minimal fix
   <ToastPrimitives.Close
     ref={ref}
+    aria-label="Close toast"
     className={cn(
       'absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600',
       className,
     )}
🧹 Nitpick comments (26)
kits/agentic/mockai/components/ui/use-mobile.tsx (1)

10-12: Prefer event.matches over rechecking window.innerWidth.

The change event already provides the query result via event.matches. Using it avoids redundant property access and is more idiomatic.

♻️ Suggested improvement
-    const onChange = () => {
-      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)
-    }
+    const onChange = (event: MediaQueryListEvent) => {
+      setIsMobile(event.matches)
+    }
kits/agentic/mockai/components/ui/hover-card.tsx (1)

1-1: Rename this component file to PascalCase.

The file path uses hover-card.tsx; please rename to HoverCard.tsx to match the components filename convention.

As per coding guidelines: kits/**/components/**/*.{tsx,ts}: Use PascalCase for React component filenames in the components/ directory.

kits/agentic/mockai/components/ui/collapsible.tsx (1)

1-33: Filename casing does not follow the component naming guideline.

kits/agentic/mockai/components/ui/collapsible.tsx is lowercase; guideline requires PascalCase filenames in components/.

Rename to Collapsible.tsx (and update imports accordingly).
Based on learnings, "Applies to kits//components//*.{tsx,ts} : Use PascalCase for React component filenames in the components/ directory".

kits/agentic/mockai/components/ui/skeleton.tsx (1)

1-13: Consider PascalCase filename to match coding guidelines.

The file is named skeleton.tsx but the coding guidelines specify PascalCase for React component filenames in the components/ directory (e.g., Skeleton.tsx). However, this follows standard shadcn/ui naming conventions which use lowercase. Consider whether to align with project guidelines or maintain shadcn/ui consistency across all UI components.

kits/agentic/mockai/hooks/use-mobile.ts (1)

5-19: Consider exposing loading state to prevent layout flash on mobile.

The hook coerces undefined to false via !!isMobile, meaning mobile users briefly see desktop layout until the effect runs. For layout-critical usage, consider returning undefined during the indeterminate state so consumers can show a loading placeholder or skeleton.

Alternative signature if needed
-export function useIsMobile() {
+export function useIsMobile(): boolean | undefined {
   const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)
   // ... effect unchanged ...
-  return !!isMobile
+  return isMobile
 }
kits/agentic/mockai/components/ui/switch.tsx (1)

1-31: Consider renaming to Switch.tsx for consistency with coding guidelines.

The component implementation correctly wraps @radix-ui/react-switch with proper props forwarding, data-slot attributes, and Tailwind styling. However, the filename uses lowercase (switch.tsx) instead of PascalCase (Switch.tsx).

As per coding guidelines: "Use PascalCase for React component filenames in the components/ directory."

kits/agentic/mockai/components/ui/kbd.tsx (1)

1-1: Rename lowercase component files in components/ui to PascalCase.

This PR introduces lowercase component filenames (kbd.tsx, resizable.tsx, button.tsx, alert.tsx, calendar.tsx, scroll-area.tsx). Please rename them to PascalCase to align with kit conventions.

As per coding guidelines, "Use PascalCase for React component filenames in the components/ directory".

kits/agentic/mockai/tsconfig.json (1)

37-38: Remove duplicated include glob entry.

".next\\dev/types/**/*.ts" is listed twice; dropping the duplicate keeps the config cleaner.

Proposed fix
   "include": [
     "next-env.d.ts",
     "**/*.ts",
     "**/*.tsx",
     ".next/types/**/*.ts",
     ".next/dev/types/**/*.ts",
-    ".next\\dev/types/**/*.ts",
     ".next\\dev/types/**/*.ts"
   ],
kits/agentic/mockai/components/ui/toggle-group.tsx (1)

1-73: Rename the new UI component files to PascalCase.

This file—and the other newly added components/ui/*.tsx wrappers in this PR—uses lowercase/kebab-case filenames, which diverges from the repo convention for React component files and will keep imports inconsistent across kits.

As per coding guidelines, "Use PascalCase for React component filenames in the components/ directory".

kits/agentic/mockai/components/ui/pagination.tsx (1)

9-9: Unused import Button.

Only buttonVariants is used in this file; Button is imported but never referenced.

♻️ Proposed fix
-import { Button, buttonVariants } from '@/components/ui/button'
+import { buttonVariants } from '@/components/ui/button'
kits/agentic/mockai/components/ui/avatar.tsx (1)

1-53: Rename this file to PascalCase.

Please rename avatar.tsx to Avatar.tsx to match the kit component filename convention.

As per coding guidelines, "Use PascalCase for React component filenames in the components/ directory".

kits/agentic/mockai/components/ui/sheet.tsx (1)

1-139: Rename this file to PascalCase.

Please rename sheet.tsx to Sheet.tsx to align with the component filename rule.

As per coding guidelines, "Use PascalCase for React component filenames in the components/ directory".

kits/agentic/mockai/components/ui/alert-dialog.tsx (1)

1-157: Rename this file to PascalCase.

Please rename alert-dialog.tsx to AlertDialog.tsx for consistency with kit component naming standards.

As per coding guidelines, "Use PascalCase for React component filenames in the components/ directory".

kits/agentic/mockai/components/ui/card.tsx (1)

1-92: Rename this file to PascalCase.

Please rename card.tsx to Card.tsx to satisfy the components directory naming convention.

As per coding guidelines, "Use PascalCase for React component filenames in the components/ directory".

kits/agentic/mockai/components/ui/input-group.tsx (1)

1-169: Rename this file to PascalCase.

Please rename input-group.tsx to InputGroup.tsx to comply with the kit naming convention.

As per coding guidelines, "Use PascalCase for React component filenames in the components/ directory".

kits/agentic/mockai/components/ui/breadcrumb.tsx (1)

1-109: Rename this file to PascalCase.

Please rename breadcrumb.tsx to Breadcrumb.tsx to follow the required components naming style.

As per coding guidelines, "Use PascalCase for React component filenames in the components/ directory".

kits/agentic/mockai/components/ui/navigation-menu.tsx (1)

1-166: Rename this file to PascalCase.

Please rename navigation-menu.tsx to NavigationMenu.tsx to match the enforced naming convention.

As per coding guidelines, "Use PascalCase for React component filenames in the components/ directory".

kits/agentic/mockai/components/ui/drawer.tsx (1)

1-135: Rename this file to PascalCase.

Please rename drawer.tsx to Drawer.tsx to adhere to the component filename rule in kits.

As per coding guidelines, "Use PascalCase for React component filenames in the components/ directory".

kits/agentic/mockai/components/ui/context-menu.tsx (1)

1-252: Rename these new UI primitive files to PascalCase.

This file is being added under components/ as context-menu.tsx, and the same kebab-case pattern shows up in the sibling UI primitives in this PR. That diverges from the kit naming convention and will make imports inconsistent.

As per coding guidelines, "Use PascalCase for React component filenames in the components/ directory".

kits/agentic/mockai/components/theme-provider.tsx (1)

1-11: Rename file to PascalCase.

The filename theme-provider.tsx should be ThemeProvider.tsx to comply with the project's component naming conventions. As per coding guidelines: "Use PascalCase for React component filenames in the components/ directory".

kits/agentic/mockai/flows/feedback-flow/meta.json (1)

1-9: Consider adding a description for discoverability.

The description and tags fields are empty. Adding a brief description (e.g., "Evaluates candidate interview responses and provides structured feedback with ratings") would improve documentation and flow discoverability.

kits/agentic/mockai/components/header.tsx (1)

1-24: Rename file to PascalCase.

The filename header.tsx should be Header.tsx to comply with the project's component naming conventions. The component implementation itself is clean and correctly uses lucide-react for icons. As per coding guidelines: "Use PascalCase for React component filenames in the components/ directory".

kits/agentic/mockai/flows/agentic-generate-content/meta.json (1)

1-12: Flow metadata seems misaligned with mockai kit purpose.

This flow is named "Agentic Generation - Generate Content" with a test input for "write me a poem on AI", but the mockai kit is an interview preparation tool. Consider renaming to reflect the actual interview question generation use case, and adding a relevant description.

kits/agentic/mockai/flows/question-flow/config.json (1)

44-46: Remove the scaffolded user prompt.

Line 46 still sends Write your prompt here to the model. That placeholder becomes part of the real request, so either replace it with the interview-generation prompt or drop the extra user turn.

kits/agentic/mockai/components/ui/toast.tsx (1)

1-1: Rename this component file to PascalCase.

toast.tsx is a React component module under components/, so the filename misses the kit convention.

As per coding guidelines, Use PascalCase for React component filenames in the components/ directory.

kits/agentic/mockai/components/ui/chart.tsx (1)

1-1: Rename this component file to PascalCase.

chart.tsx is a React component module under components/, so the filename misses the kit convention.

As per coding guidelines, Use PascalCase for React component filenames in the components/ directory.


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c2a95e0f-8071-4117-862c-474c3e77a616

📥 Commits

Reviewing files that changed from the base of the PR and between cd0d519 and a92235c.

⛔ Files ignored due to path filters (11)
  • kits/agentic/mockai/package-lock.json is excluded by !**/package-lock.json
  • kits/agentic/mockai/public/apple-icon.png is excluded by !**/*.png
  • kits/agentic/mockai/public/icon-dark-32x32.png is excluded by !**/*.png
  • kits/agentic/mockai/public/icon-light-32x32.png is excluded by !**/*.png
  • kits/agentic/mockai/public/icon.svg is excluded by !**/*.svg
  • kits/agentic/mockai/public/lamatic-logo.png is excluded by !**/*.png
  • kits/agentic/mockai/public/placeholder-logo.png is excluded by !**/*.png
  • kits/agentic/mockai/public/placeholder-logo.svg is excluded by !**/*.svg
  • kits/agentic/mockai/public/placeholder-user.jpg is excluded by !**/*.jpg
  • kits/agentic/mockai/public/placeholder.jpg is excluded by !**/*.jpg
  • kits/agentic/mockai/public/placeholder.svg is excluded by !**/*.svg
📒 Files selected for processing (90)
  • kits/agentic/mockai/.env.example
  • kits/agentic/mockai/.gitignore
  • kits/agentic/mockai/README.md
  • kits/agentic/mockai/actions/orchestrate.ts
  • kits/agentic/mockai/app/globals.css
  • kits/agentic/mockai/app/layout.tsx
  • kits/agentic/mockai/app/page.tsx
  • kits/agentic/mockai/components.json
  • kits/agentic/mockai/components/header.tsx
  • kits/agentic/mockai/components/theme-provider.tsx
  • kits/agentic/mockai/components/ui/accordion.tsx
  • kits/agentic/mockai/components/ui/alert-dialog.tsx
  • kits/agentic/mockai/components/ui/alert.tsx
  • kits/agentic/mockai/components/ui/aspect-ratio.tsx
  • kits/agentic/mockai/components/ui/avatar.tsx
  • kits/agentic/mockai/components/ui/badge.tsx
  • kits/agentic/mockai/components/ui/breadcrumb.tsx
  • kits/agentic/mockai/components/ui/button-group.tsx
  • kits/agentic/mockai/components/ui/button.tsx
  • kits/agentic/mockai/components/ui/calendar.tsx
  • kits/agentic/mockai/components/ui/card.tsx
  • kits/agentic/mockai/components/ui/carousel.tsx
  • kits/agentic/mockai/components/ui/chart.tsx
  • kits/agentic/mockai/components/ui/checkbox.tsx
  • kits/agentic/mockai/components/ui/collapsible.tsx
  • kits/agentic/mockai/components/ui/command.tsx
  • kits/agentic/mockai/components/ui/context-menu.tsx
  • kits/agentic/mockai/components/ui/dialog.tsx
  • kits/agentic/mockai/components/ui/drawer.tsx
  • kits/agentic/mockai/components/ui/dropdown-menu.tsx
  • kits/agentic/mockai/components/ui/empty.tsx
  • kits/agentic/mockai/components/ui/field.tsx
  • kits/agentic/mockai/components/ui/form.tsx
  • kits/agentic/mockai/components/ui/hover-card.tsx
  • kits/agentic/mockai/components/ui/input-group.tsx
  • kits/agentic/mockai/components/ui/input-otp.tsx
  • kits/agentic/mockai/components/ui/input.tsx
  • kits/agentic/mockai/components/ui/item.tsx
  • kits/agentic/mockai/components/ui/kbd.tsx
  • kits/agentic/mockai/components/ui/label.tsx
  • kits/agentic/mockai/components/ui/menubar.tsx
  • kits/agentic/mockai/components/ui/navigation-menu.tsx
  • kits/agentic/mockai/components/ui/pagination.tsx
  • kits/agentic/mockai/components/ui/popover.tsx
  • kits/agentic/mockai/components/ui/progress.tsx
  • kits/agentic/mockai/components/ui/radio-group.tsx
  • kits/agentic/mockai/components/ui/resizable.tsx
  • kits/agentic/mockai/components/ui/scroll-area.tsx
  • kits/agentic/mockai/components/ui/select.tsx
  • kits/agentic/mockai/components/ui/separator.tsx
  • kits/agentic/mockai/components/ui/sheet.tsx
  • kits/agentic/mockai/components/ui/sidebar.tsx
  • kits/agentic/mockai/components/ui/skeleton.tsx
  • kits/agentic/mockai/components/ui/slider.tsx
  • kits/agentic/mockai/components/ui/sonner.tsx
  • kits/agentic/mockai/components/ui/spinner.tsx
  • kits/agentic/mockai/components/ui/switch.tsx
  • kits/agentic/mockai/components/ui/table.tsx
  • kits/agentic/mockai/components/ui/tabs.tsx
  • kits/agentic/mockai/components/ui/textarea.tsx
  • kits/agentic/mockai/components/ui/toast.tsx
  • kits/agentic/mockai/components/ui/toaster.tsx
  • kits/agentic/mockai/components/ui/toggle-group.tsx
  • kits/agentic/mockai/components/ui/toggle.tsx
  • kits/agentic/mockai/components/ui/tooltip.tsx
  • kits/agentic/mockai/components/ui/use-mobile.tsx
  • kits/agentic/mockai/components/ui/use-toast.ts
  • kits/agentic/mockai/config.json
  • kits/agentic/mockai/flows/agentic-generate-content/README.md
  • kits/agentic/mockai/flows/agentic-generate-content/config.json
  • kits/agentic/mockai/flows/agentic-generate-content/inputs.json
  • kits/agentic/mockai/flows/agentic-generate-content/meta.json
  • kits/agentic/mockai/flows/feedback-flow/README.md
  • kits/agentic/mockai/flows/feedback-flow/config.json
  • kits/agentic/mockai/flows/feedback-flow/inputs.json
  • kits/agentic/mockai/flows/feedback-flow/meta.json
  • kits/agentic/mockai/flows/question-flow/README.md
  • kits/agentic/mockai/flows/question-flow/config.json
  • kits/agentic/mockai/flows/question-flow/inputs.json
  • kits/agentic/mockai/flows/question-flow/meta.json
  • kits/agentic/mockai/hooks/use-mobile.ts
  • kits/agentic/mockai/hooks/use-toast.ts
  • kits/agentic/mockai/lib/lamatic-client.ts
  • kits/agentic/mockai/lib/utils.ts
  • kits/agentic/mockai/next.config.mjs
  • kits/agentic/mockai/orchestrate.js
  • kits/agentic/mockai/package.json
  • kits/agentic/mockai/postcss.config.mjs
  • kits/agentic/mockai/styles/globals.css
  • kits/agentic/mockai/tsconfig.json

Comment thread kits/agentic/mockai/actions/orchestrate.ts Outdated
Comment thread kits/agentic/mockai/actions/orchestrate.ts
Comment thread kits/agentic/mockai/app/page.tsx
Comment thread kits/agentic/mockai/components/ui/AspectRatio.tsx
Comment thread kits/agentic/mockai/components/ui/collapsible.tsx Outdated
Comment thread kits/agentic/mockai/flows/feedback-flow/config.json
Comment thread kits/agentic/mockai/lib/lamatic-client.ts Outdated
Comment thread kits/agentic/mockai/package.json
Comment thread kits/agentic/mockai/README.md
Comment thread kits/agentic/mockai/README.md
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
kits/agentic/mockai/app/page.tsx (1)

374-375: Remove unused visualizerScale computation.

visualizerScale is computed on line 375 but never used in the rendered JSX. This appears to be leftover code from when the audio visualizer UI was present.

🧹 Proposed fix
     const isLastQuestion = currentQuestionIndex === questions.length - 1

     const displayAnswer = currentAnswer + (interimResult ? (currentAnswer.endsWith(" ") ? "" : " ") + interimResult : "")
-
-    // Calculate a dynamic scale for the visualizer pulse (1 to 1.5 roughly)
-    const visualizerScale = 1 + Math.min(volume / 50, 0.5)

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 8cddd5c6-76ee-4267-9402-e9c24968e6a0

📥 Commits

Reviewing files that changed from the base of the PR and between a92235c and 7aca27f.

📒 Files selected for processing (1)
  • kits/agentic/mockai/app/page.tsx

@amanintech
Copy link
Copy Markdown
Member

Agent @sreecharan1306 can you please resolve all the comments to go to next steps.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 2, 2026

PR Validation Results

New Contributions Detected

  • Kit: kits/agentic/mockai

Check Results

Check Status
No edits to existing projects ✅ Pass
Required root files present ✅ Pass
Flow folder structure valid ✅ Pass
No changes outside contribution dirs ✅ Pass

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

@sreecharan1306
Copy link
Copy Markdown
Author

@amanintech I have resolved all the comments successfully, please do check.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 4, 2026

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 4, 2026

✅ Actions performed

Review triggered.

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.

@sreecharan1306
Copy link
Copy Markdown
Author

Hi @amanintech , I have resolved all the comments
Can you please look into them?
I am desperately waiting for the results

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 6, 2026

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 6, 2026

✅ Actions performed

Review triggered.

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.

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