@fatagnus/convex-feedback 0.2.7 → 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +346 -4
  2. package/dist/convex/_generated/api.d.ts +2310 -0
  3. package/dist/convex/_generated/api.d.ts.map +1 -0
  4. package/dist/convex/_generated/api.js +32 -0
  5. package/dist/convex/_generated/api.js.map +1 -0
  6. package/dist/convex/_generated/dataModel.d.ts +46 -0
  7. package/dist/convex/_generated/dataModel.d.ts.map +1 -0
  8. package/dist/convex/_generated/dataModel.js +11 -0
  9. package/dist/convex/_generated/dataModel.js.map +1 -0
  10. package/dist/convex/_generated/server.d.ts +121 -0
  11. package/dist/convex/_generated/server.d.ts.map +1 -0
  12. package/dist/convex/_generated/server.js +78 -0
  13. package/dist/convex/_generated/server.js.map +1 -0
  14. package/dist/convex/agents/bugReportAgent.d.ts +35 -9
  15. package/dist/convex/agents/bugReportAgent.d.ts.map +1 -1
  16. package/dist/convex/agents/bugReportAgent.js +61 -27
  17. package/dist/convex/agents/bugReportAgent.js.map +1 -1
  18. package/dist/convex/agents/feedbackAgent.d.ts +35 -9
  19. package/dist/convex/agents/feedbackAgent.d.ts.map +1 -1
  20. package/dist/convex/agents/feedbackAgent.js +61 -27
  21. package/dist/convex/agents/feedbackAgent.js.map +1 -1
  22. package/dist/convex/agents/feedbackInterviewAgent.d.ts +76 -0
  23. package/dist/convex/agents/feedbackInterviewAgent.d.ts.map +1 -0
  24. package/dist/convex/agents/feedbackInterviewAgent.js +812 -0
  25. package/dist/convex/agents/feedbackInterviewAgent.js.map +1 -0
  26. package/dist/convex/agents/index.d.ts +9 -0
  27. package/dist/convex/agents/index.d.ts.map +1 -0
  28. package/dist/convex/agents/index.js +13 -0
  29. package/dist/convex/agents/index.js.map +1 -0
  30. package/dist/convex/apiKeys.d.ts +56 -0
  31. package/dist/convex/apiKeys.d.ts.map +1 -0
  32. package/dist/convex/apiKeys.js +197 -0
  33. package/dist/convex/apiKeys.js.map +1 -0
  34. package/dist/convex/bugReports.d.ts +131 -11
  35. package/dist/convex/bugReports.d.ts.map +1 -1
  36. package/dist/convex/bugReports.js +138 -10
  37. package/dist/convex/bugReports.js.map +1 -1
  38. package/dist/convex/emails/bugReportEmails.d.ts +31 -2
  39. package/dist/convex/emails/bugReportEmails.d.ts.map +1 -1
  40. package/dist/convex/emails/bugReportEmails.js +6 -3
  41. package/dist/convex/emails/bugReportEmails.js.map +1 -1
  42. package/dist/convex/emails/feedbackEmails.d.ts +31 -2
  43. package/dist/convex/emails/feedbackEmails.d.ts.map +1 -1
  44. package/dist/convex/emails/feedbackEmails.js +6 -3
  45. package/dist/convex/emails/feedbackEmails.js.map +1 -1
  46. package/dist/convex/feedback.d.ts +132 -11
  47. package/dist/convex/feedback.d.ts.map +1 -1
  48. package/dist/convex/feedback.js +146 -9
  49. package/dist/convex/feedback.js.map +1 -1
  50. package/dist/convex/http.d.ts +39 -0
  51. package/dist/convex/http.d.ts.map +1 -0
  52. package/dist/convex/http.js +467 -0
  53. package/dist/convex/http.js.map +1 -0
  54. package/dist/convex/index.d.ts +8 -1
  55. package/dist/convex/index.d.ts.map +1 -1
  56. package/dist/convex/index.js +8 -1
  57. package/dist/convex/index.js.map +1 -1
  58. package/dist/convex/inputRequests.d.ts +118 -0
  59. package/dist/convex/inputRequests.d.ts.map +1 -0
  60. package/dist/convex/inputRequests.js +141 -0
  61. package/dist/convex/inputRequests.js.map +1 -0
  62. package/dist/convex/prompts.d.ts +110 -0
  63. package/dist/convex/prompts.d.ts.map +1 -0
  64. package/dist/convex/prompts.js +403 -0
  65. package/dist/convex/prompts.js.map +1 -0
  66. package/dist/convex/schema.d.ts +310 -54
  67. package/dist/convex/schema.d.ts.map +1 -1
  68. package/dist/convex/schema.js +120 -2
  69. package/dist/convex/schema.js.map +1 -1
  70. package/dist/convex/supportTeams.d.ts +69 -7
  71. package/dist/convex/supportTeams.d.ts.map +1 -1
  72. package/dist/index.d.ts +28 -2
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +25 -2
  75. package/dist/index.js.map +1 -1
  76. package/dist/types.d.ts +35 -0
  77. package/dist/types.d.ts.map +1 -1
  78. package/package.json +12 -5
  79. package/src/convex/_generated/api.ts +1 -0
  80. package/src/convex/agents/feedbackInterviewAgent.ts +6 -12
  81. package/src/convex/apiKeys.test.ts +79 -0
  82. package/src/convex/apiKeys.ts +223 -0
  83. package/src/convex/bugReports.ts +126 -1
  84. package/src/convex/feedback.ts +134 -1
  85. package/src/convex/http.test.ts +76 -0
  86. package/src/convex/http.ts +630 -0
  87. package/src/convex/index.ts +11 -0
  88. package/src/convex/prompts.test.ts +185 -0
  89. package/src/convex/prompts.ts +605 -0
  90. package/src/convex/schema.ts +52 -2
  91. package/src/convex/ticketNumbers.ts +4 -0
  92. package/src/convex/tsconfig.json +24 -0
  93. package/src/index.ts +33 -1
  94. package/src/types.ts +38 -0
  95. package/dist/convex/convex.config.d.ts +0 -3
  96. package/dist/convex/convex.config.d.ts.map +0 -1
  97. package/dist/convex/convex.config.js +0 -6
  98. package/dist/convex/convex.config.js.map +0 -1
@@ -15,29 +15,22 @@ import { v } from "convex/values";
15
15
  import { Agent, createThread } from "@convex-dev/agent";
16
16
  import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
17
17
  import { components, internal } from "../_generated/api";
18
- import { internalAction, internalQuery } from "../_generated/server";
19
- // Create OpenRouter provider
20
- const openrouter = createOpenAICompatible({
21
- name: "openrouter",
22
- baseURL: "https://openrouter.ai/api/v1",
23
- headers: {
24
- Authorization: `Bearer ${process.env.OPENROUTER_API_KEY}`,
25
- },
26
- });
18
+ import { action, internalAction, internalQuery } from "../_generated/server";
19
+ // Helper to create OpenRouter provider dynamically
20
+ // This is created dynamically because Convex components don't inherit parent env vars
21
+ function createOpenRouterProvider(apiKey) {
22
+ return createOpenAICompatible({
23
+ name: "openrouter",
24
+ baseURL: "https://openrouter.ai/api/v1",
25
+ headers: {
26
+ Authorization: `Bearer ${apiKey}`,
27
+ },
28
+ });
29
+ }
27
30
  // Agent name constant
28
31
  const AGENT_NAME = "Bug Report Analyst";
29
- // ============================================================================
30
- // Agent Definition
31
- // ============================================================================
32
- /**
33
- * Bug Report Analysis Agent
34
- *
35
- * Analyzes bug report submissions and generates comprehensive analysis.
36
- */
37
- export const bugReportAgent = new Agent(components.agent, {
38
- name: AGENT_NAME,
39
- languageModel: openrouter.languageModel("anthropic/claude-sonnet-4"),
40
- instructions: `You are the Bug Report Analyst, an AI assistant that analyzes bug report submissions.
32
+ // Agent instructions (shared between dynamic agent instances)
33
+ const BUG_REPORT_AGENT_INSTRUCTIONS = `You are the Bug Report Analyst, an AI assistant that analyzes bug report submissions.
41
34
 
42
35
  When given a bug report, you will:
43
36
  1. **Summarize** the bug in 2-3 clear sentences
@@ -67,10 +60,7 @@ Always respond in the following JSON format:
67
60
  - Reproduction steps should be specific and actionable
68
61
  - Suggested fix should be practical and implementable
69
62
  - Effort estimation should account for investigation, fix, testing, and deployment
70
- - Severity should reflect user impact and business criticality`,
71
- tools: {},
72
- maxSteps: 3,
73
- });
63
+ - Severity should reflect user impact and business criticality`;
74
64
  // ============================================================================
75
65
  // Internal Queries
76
66
  // ============================================================================
@@ -120,20 +110,27 @@ export const getBugReportForAnalysis = internalQuery({
120
110
  export const processBugReport = internalAction({
121
111
  args: {
122
112
  bugReportId: v.id("bugReports"),
113
+ // Optional API keys - passed from parent app since components don't inherit env vars
114
+ openRouterApiKey: v.optional(v.string()),
115
+ resendApiKey: v.optional(v.string()),
116
+ resendFromEmail: v.optional(v.string()),
123
117
  },
124
118
  returns: v.object({
125
119
  success: v.boolean(),
126
120
  error: v.optional(v.string()),
127
121
  }),
128
122
  handler: async (ctx, args) => {
129
- // Check if OpenRouter API key is configured
130
- if (!process.env.OPENROUTER_API_KEY) {
123
+ // Check if OpenRouter API key is configured - prefer args (from parent app), fallback to env
124
+ const apiKey = args.openRouterApiKey || process.env.OPENROUTER_API_KEY;
125
+ if (!apiKey) {
131
126
  console.log("OPENROUTER_API_KEY not configured, skipping AI analysis");
132
127
  // Still try to send notifications without AI analysis
133
128
  try {
134
129
  await ctx.runAction(internal.emails.bugReportEmails.sendBugReportNotifications, {
135
130
  reportId: args.bugReportId,
136
131
  analysis: null,
132
+ resendApiKey: args.resendApiKey,
133
+ resendFromEmail: args.resendFromEmail,
137
134
  });
138
135
  }
139
136
  catch {
@@ -152,6 +149,16 @@ export const processBugReport = internalAction({
152
149
  const threadId = await createThread(ctx, components.agent, {
153
150
  title: `Bug Report Analysis: ${bugReport.title}`,
154
151
  });
152
+ // Create OpenRouter provider dynamically with the API key
153
+ const openrouter = createOpenRouterProvider(apiKey);
154
+ // Create agent dynamically to ensure API key is available at runtime
155
+ const bugReportAgent = new Agent(components.agent, {
156
+ name: AGENT_NAME,
157
+ languageModel: openrouter.languageModel("anthropic/claude-sonnet-4"),
158
+ instructions: BUG_REPORT_AGENT_INSTRUCTIONS,
159
+ tools: {},
160
+ maxSteps: 3,
161
+ });
155
162
  // Build the prompt for analysis
156
163
  const consoleErrorsSection = bugReport.consoleErrors
157
164
  ? `**Console Errors:** ${bugReport.consoleErrors}`
@@ -228,6 +235,8 @@ Provide your analysis in the JSON format specified.`;
228
235
  suggestedFix: analysis.suggestedFix,
229
236
  estimatedEffort: analysis.estimatedEffort,
230
237
  },
238
+ resendApiKey: args.resendApiKey,
239
+ resendFromEmail: args.resendFromEmail,
231
240
  });
232
241
  // Mark notifications as sent
233
242
  await ctx.runMutation(internal.bugReports.markNotificationsSent, {
@@ -240,4 +249,29 @@ Provide your analysis in the JSON format specified.`;
240
249
  return { success: true };
241
250
  },
242
251
  });
252
+ /**
253
+ * Public wrapper for processBugReport that can be called from parent app.
254
+ * Accepts optional API keys since Convex components don't inherit parent env vars.
255
+ */
256
+ export const processBugReportPublic = action({
257
+ args: {
258
+ bugReportId: v.id("bugReports"),
259
+ openRouterApiKey: v.optional(v.string()),
260
+ resendApiKey: v.optional(v.string()),
261
+ resendFromEmail: v.optional(v.string()),
262
+ },
263
+ returns: v.object({
264
+ success: v.boolean(),
265
+ error: v.optional(v.string()),
266
+ }),
267
+ handler: async (ctx, args) => {
268
+ // Delegate to the internal action
269
+ return await ctx.runAction(internal.agents.bugReportAgent.processBugReport, {
270
+ bugReportId: args.bugReportId,
271
+ openRouterApiKey: args.openRouterApiKey,
272
+ resendApiKey: args.resendApiKey,
273
+ resendFromEmail: args.resendFromEmail,
274
+ });
275
+ },
276
+ });
243
277
  //# sourceMappingURL=bugReportAgent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bugReportAgent.js","sourceRoot":"","sources":["../../../src/convex/agents/bugReportAgent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bugReportAgent.js","sourceRoot":"","sources":["../../../src/convex/agents/bugReportAgent.ts"],"names":[],"mappings":"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"}
@@ -10,20 +10,46 @@
10
10
  *
11
11
  * Triggers email notifications to the reporter and assigned team.
12
12
  */
13
- import { Agent } from "@convex-dev/agent";
14
- /**
15
- * Feedback Analysis Agent
16
- *
17
- * Analyzes feedback submissions and generates comprehensive reports.
18
- */
19
- export declare const feedbackAgent: Agent<object, {}>;
20
13
  /**
21
14
  * Get feedback by ID for analysis
22
15
  */
23
- export declare const getFeedbackForAnalysis: any;
16
+ export declare const getFeedbackForAnalysis: import("convex/server").RegisteredQuery<"internal", {
17
+ feedbackId: import("convex/values").GenericId<"feedback">;
18
+ }, Promise<{
19
+ _id: import("convex/values").GenericId<"feedback">;
20
+ type: "feature_request" | "change_request" | "general";
21
+ title: string;
22
+ description: string;
23
+ priority: "critical" | "nice_to_have" | "important";
24
+ reporterName: string;
25
+ reporterEmail: string;
26
+ url: string;
27
+ browserInfo: string;
28
+ }>>;
24
29
  /**
25
30
  * Analyze feedback using AI and send notifications.
26
31
  * This is the main entry point triggered after feedback creation.
27
32
  */
28
- export declare const processFeedback: any;
33
+ export declare const processFeedback: import("convex/server").RegisteredAction<"internal", {
34
+ openRouterApiKey?: string;
35
+ resendApiKey?: string;
36
+ resendFromEmail?: string;
37
+ feedbackId: import("convex/values").GenericId<"feedback">;
38
+ }, Promise<{
39
+ success: boolean;
40
+ error?: string;
41
+ }>>;
42
+ /**
43
+ * Public wrapper for processFeedback that can be called from parent app.
44
+ * Accepts optional API keys since Convex components don't inherit parent env vars.
45
+ */
46
+ export declare const processFeedbackPublic: import("convex/server").RegisteredAction<"public", {
47
+ openRouterApiKey?: string;
48
+ resendApiKey?: string;
49
+ resendFromEmail?: string;
50
+ feedbackId: import("convex/values").GenericId<"feedback">;
51
+ }, Promise<{
52
+ success: boolean;
53
+ error?: string;
54
+ }>>;
29
55
  //# sourceMappingURL=feedbackAgent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feedbackAgent.d.ts","sourceRoot":"","sources":["../../../src/convex/agents/feedbackAgent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,KAAK,EAAgB,MAAM,mBAAmB,CAAC;AAsBxD;;;;GAIG;AACH,eAAO,MAAM,aAAa,mBAmCxB,CAAC;AAMH;;GAEG;AACH,eAAO,MAAM,sBAAsB,KAmCjC,CAAC;AAMH;;;GAGG;AACH,eAAO,MAAM,eAAe,KAqI1B,CAAC"}
1
+ {"version":3,"file":"feedbackAgent.d.ts","sourceRoot":"","sources":["../../../src/convex/agents/feedbackAgent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA0DH;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;GAmCjC,CAAC;AAMH;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;aAYqB,OAAO;YAAU,MAAM;GA8ItE,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;aAWe,OAAO;YAAU,MAAM;GAStE,CAAC"}
@@ -14,29 +14,22 @@ import { v } from "convex/values";
14
14
  import { Agent, createThread } from "@convex-dev/agent";
15
15
  import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
16
16
  import { components, internal } from "../_generated/api";
17
- import { internalAction, internalQuery } from "../_generated/server";
18
- // Create OpenRouter provider
19
- const openrouter = createOpenAICompatible({
20
- name: "openrouter",
21
- baseURL: "https://openrouter.ai/api/v1",
22
- headers: {
23
- Authorization: `Bearer ${process.env.OPENROUTER_API_KEY}`,
24
- },
25
- });
17
+ import { action, internalAction, internalQuery } from "../_generated/server";
18
+ // Helper to create OpenRouter provider dynamically
19
+ // This is created dynamically because Convex components don't inherit parent env vars
20
+ function createOpenRouterProvider(apiKey) {
21
+ return createOpenAICompatible({
22
+ name: "openrouter",
23
+ baseURL: "https://openrouter.ai/api/v1",
24
+ headers: {
25
+ Authorization: `Bearer ${apiKey}`,
26
+ },
27
+ });
28
+ }
26
29
  // Agent name constant
27
30
  const AGENT_NAME = "Feedback Analyst";
28
- // ============================================================================
29
- // Agent Definition
30
- // ============================================================================
31
- /**
32
- * Feedback Analysis Agent
33
- *
34
- * Analyzes feedback submissions and generates comprehensive reports.
35
- */
36
- export const feedbackAgent = new Agent(components.agent, {
37
- name: AGENT_NAME,
38
- languageModel: openrouter.languageModel("anthropic/claude-sonnet-4"),
39
- instructions: `You are the Feedback Analyst, an AI assistant that analyzes user feedback submissions.
31
+ // Agent instructions (shared between dynamic agent instances)
32
+ const FEEDBACK_AGENT_INSTRUCTIONS = `You are the Feedback Analyst, an AI assistant that analyzes user feedback submissions.
40
33
 
41
34
  When given feedback, you will:
42
35
  1. **Summarize** the feedback in 2-3 clear sentences
@@ -63,10 +56,7 @@ Always respond in the following JSON format:
63
56
  - Consider both technical and business impact
64
57
  - Action items should be specific and actionable
65
58
  - Effort estimation should account for development, testing, and deployment
66
- - Priority should reflect urgency and user impact`,
67
- tools: {},
68
- maxSteps: 3,
69
- });
59
+ - Priority should reflect urgency and user impact`;
70
60
  // ============================================================================
71
61
  // Internal Queries
72
62
  // ============================================================================
@@ -116,20 +106,27 @@ export const getFeedbackForAnalysis = internalQuery({
116
106
  export const processFeedback = internalAction({
117
107
  args: {
118
108
  feedbackId: v.id("feedback"),
109
+ // Optional API keys - passed from parent app since components don't inherit env vars
110
+ openRouterApiKey: v.optional(v.string()),
111
+ resendApiKey: v.optional(v.string()),
112
+ resendFromEmail: v.optional(v.string()),
119
113
  },
120
114
  returns: v.object({
121
115
  success: v.boolean(),
122
116
  error: v.optional(v.string()),
123
117
  }),
124
118
  handler: async (ctx, args) => {
125
- // Check if OpenRouter API key is configured
126
- if (!process.env.OPENROUTER_API_KEY) {
119
+ // Check if OpenRouter API key is configured - prefer args (from parent app), fallback to env
120
+ const apiKey = args.openRouterApiKey || process.env.OPENROUTER_API_KEY;
121
+ if (!apiKey) {
127
122
  console.log("OPENROUTER_API_KEY not configured, skipping AI analysis");
128
123
  // Still try to send notifications without AI analysis
129
124
  try {
130
125
  await ctx.runAction(internal.emails.feedbackEmails.sendFeedbackNotifications, {
131
126
  feedbackId: args.feedbackId,
132
127
  analysis: null,
128
+ resendApiKey: args.resendApiKey,
129
+ resendFromEmail: args.resendFromEmail,
133
130
  });
134
131
  }
135
132
  catch {
@@ -148,6 +145,16 @@ export const processFeedback = internalAction({
148
145
  const threadId = await createThread(ctx, components.agent, {
149
146
  title: `Feedback Analysis: ${feedback.title}`,
150
147
  });
148
+ // Create OpenRouter provider dynamically with the API key
149
+ const openrouter = createOpenRouterProvider(apiKey);
150
+ // Create agent dynamically to ensure API key is available at runtime
151
+ const feedbackAgent = new Agent(components.agent, {
152
+ name: AGENT_NAME,
153
+ languageModel: openrouter.languageModel("anthropic/claude-sonnet-4"),
154
+ instructions: FEEDBACK_AGENT_INSTRUCTIONS,
155
+ tools: {},
156
+ maxSteps: 3,
157
+ });
151
158
  // Build the prompt for analysis
152
159
  const analysisPrompt = `Please analyze the following feedback submission:
153
160
 
@@ -217,6 +224,8 @@ Provide your analysis in the JSON format specified.`;
217
224
  estimatedEffort: analysis.estimatedEffort,
218
225
  suggestedPriority: analysis.suggestedPriority,
219
226
  },
227
+ resendApiKey: args.resendApiKey,
228
+ resendFromEmail: args.resendFromEmail,
220
229
  });
221
230
  // Mark notifications as sent
222
231
  await ctx.runMutation(internal.feedback.markNotificationsSent, {
@@ -229,4 +238,29 @@ Provide your analysis in the JSON format specified.`;
229
238
  return { success: true };
230
239
  },
231
240
  });
241
+ /**
242
+ * Public wrapper for processFeedback that can be called from parent app.
243
+ * Accepts optional API keys since Convex components don't inherit parent env vars.
244
+ */
245
+ export const processFeedbackPublic = action({
246
+ args: {
247
+ feedbackId: v.id("feedback"),
248
+ openRouterApiKey: v.optional(v.string()),
249
+ resendApiKey: v.optional(v.string()),
250
+ resendFromEmail: v.optional(v.string()),
251
+ },
252
+ returns: v.object({
253
+ success: v.boolean(),
254
+ error: v.optional(v.string()),
255
+ }),
256
+ handler: async (ctx, args) => {
257
+ // Delegate to the internal action
258
+ return await ctx.runAction(internal.agents.feedbackAgent.processFeedback, {
259
+ feedbackId: args.feedbackId,
260
+ openRouterApiKey: args.openRouterApiKey,
261
+ resendApiKey: args.resendApiKey,
262
+ resendFromEmail: args.resendFromEmail,
263
+ });
264
+ },
265
+ });
232
266
  //# sourceMappingURL=feedbackAgent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"feedbackAgent.js","sourceRoot":"","sources":["../../../src/convex/agents/feedbackAgent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feedbackAgent.js","sourceRoot":"","sources":["../../../src/convex/agents/feedbackAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Feedback Interview Agent
3
+ *
4
+ * Conducts AI-powered interviews to help users articulate bug reports
5
+ * and feedback through a conversational experience.
6
+ *
7
+ * Features:
8
+ * - Context-aware questions based on app information
9
+ * - Human-in-the-loop input collection
10
+ * - Generates well-structured reports from conversations
11
+ */
12
+ /**
13
+ * Create an interview session
14
+ */
15
+ export declare const createSession: import("convex/server").RegisteredMutation<"internal", {
16
+ context?: string;
17
+ reporterType: "staff" | "customer";
18
+ reporterId: string;
19
+ reporterEmail: string;
20
+ reporterName: string;
21
+ threadId: string;
22
+ reportType: "bug" | "feedback";
23
+ }, Promise<import("convex/values").GenericId<"interviewSessions">>>;
24
+ /**
25
+ * Update an interview session with generated report
26
+ */
27
+ export declare const updateSession: import("convex/server").RegisteredMutation<"internal", {
28
+ generatedTitle?: string;
29
+ generatedDescription?: string;
30
+ generatedSeverity?: "low" | "medium" | "high" | "critical";
31
+ generatedFeedbackType?: "feature_request" | "change_request" | "general";
32
+ generatedPriority?: "critical" | "nice_to_have" | "important";
33
+ generatedFeatureArea?: string;
34
+ generatedReproSteps?: string[];
35
+ isComplete?: boolean;
36
+ sessionId: import("convex/values").GenericId<"interviewSessions">;
37
+ }, Promise<any>>;
38
+ /**
39
+ * Get an interview session by thread ID
40
+ */
41
+ export declare const getSessionByThread: import("convex/server").RegisteredQuery<"public", {
42
+ threadId: string;
43
+ }, Promise<{
44
+ _id: import("convex/values").GenericId<"interviewSessions">;
45
+ _creationTime: number;
46
+ context?: string;
47
+ generatedTitle?: string;
48
+ generatedDescription?: string;
49
+ generatedSeverity?: "low" | "medium" | "high" | "critical";
50
+ generatedFeedbackType?: "feature_request" | "change_request" | "general";
51
+ generatedPriority?: "critical" | "nice_to_have" | "important";
52
+ generatedFeatureArea?: string;
53
+ generatedReproSteps?: string[];
54
+ reporterType: "staff" | "customer";
55
+ reporterId: string;
56
+ reporterEmail: string;
57
+ reporterName: string;
58
+ createdAt: number;
59
+ updatedAt: number;
60
+ threadId: string;
61
+ reportType: "bug" | "feedback";
62
+ isComplete: boolean;
63
+ }>>;
64
+ /**
65
+ * Start a bug report interview
66
+ */
67
+ export declare const startBugInterview: any;
68
+ /**
69
+ * Start a feedback interview
70
+ */
71
+ export declare const startFeedbackInterview: any;
72
+ /**
73
+ * Continue the interview after user provides input
74
+ */
75
+ export declare const continueInterview: any;
76
+ //# sourceMappingURL=feedbackInterviewAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedbackInterviewAgent.d.ts","sourceRoot":"","sources":["../../../src/convex/agents/feedbackInterviewAgent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAmOH;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;mEA0BxB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;gBAkCxB,CAAC;AAMH;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;GA+C7B,CAAC;AA4JH;;GAEG;AACH,eAAO,MAAM,iBAAiB,KA4H5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB,KA4HjC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB,KAsK5B,CAAC"}