@mindstudio-ai/agent 0.1.67 → 0.1.68

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.
package/dist/cli.js CHANGED
@@ -5052,6 +5052,84 @@ var init_client = __esm({
5052
5052
  return data;
5053
5053
  }
5054
5054
  // -------------------------------------------------------------------------
5055
+ // Issue reporting
5056
+ // -------------------------------------------------------------------------
5057
+ /**
5058
+ * File a bug report or feature idea into this app's issue tracker.
5059
+ *
5060
+ * For building an in-app "Report a bug" feature: wire the frontend UI to
5061
+ * an app backend method that calls this. The issue lands in the app's
5062
+ * issue tracker, visible to the app's team and available to the Remy agent.
5063
+ *
5064
+ * **Backend / managed-context only.** It authenticates with the app's hook
5065
+ * token (the same credential used for `db` queries), and the app id is
5066
+ * derived from that token server-side. Calling it outside a managed
5067
+ * context (e.g. with a plain API key) will fail with `401`.
5068
+ *
5069
+ * Rate limited per app (20 / 60s). On the limit this throws a
5070
+ * `MindStudioError` with `code === 'rate_limited'` and `status === 429` —
5071
+ * catch it to show a graceful "try again shortly" message. Every call
5072
+ * creates a new issue (no dedupe), so guard against double-submit in the UI.
5073
+ *
5074
+ * @returns The filed issue. Show `issue.number` to confirm "Reported as #42".
5075
+ *
5076
+ * @example
5077
+ * ```ts
5078
+ * // app backend method, e.g. exported as `reportBug`
5079
+ * export async function reportBug({ title, details, userEmail }) {
5080
+ * try {
5081
+ * const { number } = await mindstudio.reportIssue({
5082
+ * title,
5083
+ * body: details,
5084
+ * kind: 'bug',
5085
+ * reporter: userEmail, // free-form label; omit for anonymous
5086
+ * });
5087
+ * return { ok: true, issueNumber: number };
5088
+ * } catch (e) {
5089
+ * if (e instanceof MindStudioError && e.code === 'rate_limited') {
5090
+ * return { ok: false, retry: true };
5091
+ * }
5092
+ * throw e;
5093
+ * }
5094
+ * }
5095
+ * ```
5096
+ */
5097
+ async reportIssue(input) {
5098
+ const title = input.title?.trim();
5099
+ if (!title) {
5100
+ throw new MindStudioError("title is required", "missing_title", 400);
5101
+ }
5102
+ const url = `${this._currentHttpConfig.baseUrl}/_internal/v2/report-issue`;
5103
+ const res = await fetch(url, {
5104
+ method: "POST",
5105
+ headers: {
5106
+ "Content-Type": "application/json",
5107
+ Authorization: this._token
5108
+ },
5109
+ body: JSON.stringify({
5110
+ title,
5111
+ ...input.body !== void 0 && { body: input.body },
5112
+ ...input.kind !== void 0 && { kind: input.kind },
5113
+ ...input.reporter !== void 0 && { reporter: input.reporter }
5114
+ })
5115
+ });
5116
+ if (!res.ok) {
5117
+ let code = "report_issue_error";
5118
+ let message = `Report issue failed: ${res.status} ${res.statusText}`;
5119
+ let details;
5120
+ try {
5121
+ const body = await res.json();
5122
+ details = body;
5123
+ if (typeof body.errorString === "string") code = body.errorString;
5124
+ message = typeof body.errorMessage === "string" && body.errorMessage || typeof body.errorString === "string" && body.errorString || message;
5125
+ } catch {
5126
+ }
5127
+ throw new MindStudioError(message, code, res.status, details);
5128
+ }
5129
+ const data = await res.json();
5130
+ return data.issue;
5131
+ }
5132
+ // -------------------------------------------------------------------------
5055
5133
  // App context
5056
5134
  // -------------------------------------------------------------------------
5057
5135
  /**
@@ -5387,6 +5465,8 @@ function buildReferenceDocs(data) {
5387
5465
  \`\`\`
5388
5466
  Without this pattern, long-running operations appear to hang with no feedback to the user.
5389
5467
 
5468
+ Prompt caching and cost: Anthropic prompt caching is enabled automatically on every LLM call. There is NO SDK toggle, no opt-in flag, no configuration \u2014 it cannot be enabled or disabled. The platform marks the static portion of each request (system prompt + tool descriptions + leading conversation history) for caching, and subsequent calls within the 5-minute TTL read from cache at roughly 10% of full input cost. The \`$billingCost\` returned on every step result is the post-cache amount. In multi-turn chatbot / RAG / tool-use loops, expect 40-60% of input tokens to be served from cache after the first turn. NEVER tell a user "MindStudio doesn't support prompt caching" or "the SDK doesn't expose caching" \u2014 both are wrong. Caching is on, automatic, and already discounted. The SDK does not currently surface per-call cache hit/miss counts (no \`$cacheReadTokens\` field today), but the discount IS being applied. Real cost levers for chat/RAG/tool-using agents, in priority order: (1) trim tool descriptions \u2014 JSON tool schemas are larger than people expect and add to every turn, (2) cap conversation history by turn count or token budget with summarization on overflow (single biggest variable cost driver in multi-turn chat), (3) pre-filter large contexts via embedding retrieval before passing to the expensive model rather than dumping a whole library in the prompt, (4) shorten the system prompt \u2014 every K saved is one K not in the cache footprint either. Do NOT recommend "enabling prompt caching" as a cost-reduction strategy; it's already on and the savings are already in \`$billingCost\`.
5469
+
5390
5470
  Database queries (Query, Mutation) support both \`await\` and \`.then()/.catch()\` \u2014 use standard try/catch with await or chain \`.catch()\` directly.
5391
5471
 
5392
5472
  Filter predicates and bindings: Filters compile to SQL when the predicate uses field comparisons, &&/||, .includes(), null checks, and boolean fields with literal values. Predicates that reference outer-scope variables (e.g. \`o => o.companyId === input.companyId\`) cannot be compiled \u2014 JavaScript closures aren't inspectable from outside the function \u2014 so they fall back to JS and scan the whole table. For filters on tables that may grow, ALWAYS use the explicit-bindings form so the filter compiles to SQL: \`Investments.filter((i, $) => i.companyId === $.companyId, { companyId: input.companyId })\`. The second predicate parameter (any name \u2014 \`$\`, \`vars\`, \`b\`) signals that bindings are in play; the third argument provides the values. Supported on filter, findOne, count, some, every, removeAll. Bound array \u2192 \`$.ids.includes(o.field)\` compiles to IN; bound string \u2192 \`o.field.includes($.text)\` compiles to LIKE. Missing keys fall back to JS \u2014 the SDK does not substitute NULL. ALWAYS include an inline code comment when you write the bindings form so downstream coding agents don't "simplify" the bindings argument away, e.g. \`{ companyId: input.companyId } // bindings: lifts closure var so filter compiles to SQL\`.
@@ -5397,6 +5477,8 @@ function buildReferenceDocs(data) {
5397
5477
 
5398
5478
  Task agents: For multi-step tasks requiring autonomous tool use, use \`runTask()\`. Provide a prompt, input, SDK action names as tools (with optional default overrides), a \`structuredOutputExample\`, and a model. The platform runs a tool-use loop and returns structured output. Tools can include any SDK action \u2014 e.g. \`['searchGoogle', 'fetchUrl', { method: 'generateImage', defaults: { imageModelOverride: { model: 'seedream-4.5' } } }]\`. Supports SSE streaming via \`onEvent\` callback.
5399
5479
 
5480
+ Reporting bugs / ideas (\`reportIssue\`): For building an in-app "Report a bug" or feedback feature, use \`mindstudio.reportIssue({ title, body?, kind?, reporter? })\` (also importable directly as \`reportIssue\`). It files an issue into the app's issue tracker \u2014 visible to the app's team in the dashboard and pickup-able by the Remy agent. Backend only: wire it as frontend UI \u2192 app backend method \u2192 \`reportIssue\` (a browser can't call it; it uses the app's hook token, and the app id is derived server-side). \`kind\` is \`'bug'\` (default) or \`'idea'\`. \`reporter\` is a free-form display label (a name, email, or ticket id) \u2014 NOT an identity check and not tied to a user; pass the current user's email if you have it, or omit for anonymous. It returns the created issue \u2014 show \`result.number\` to confirm "Reported as #42". Rate limited per app (20/min): catch \`MindStudioError\` with \`code === 'rate_limited'\` and show a graceful "try again shortly" message, and debounce the submit button (every call creates a new issue \u2014 no dedupe).
5481
+
5400
5482
  Table options: \`db.defineTable<T>(name, { unique, defaults })\`.
5401
5483
  - \`unique: [['email'], ['userId', 'orgId']]\` \u2014 declares unique constraints (SDK communicates to platform, enables upsert).
5402
5484
  - \`defaults: { status: 'pending' }\` \u2014 client-side defaults applied in push() and upsert().
@@ -5983,7 +6065,7 @@ async function startMcpServer(options) {
5983
6065
  capabilities: { tools: {} },
5984
6066
  serverInfo: {
5985
6067
  name: "mindstudio-agent",
5986
- version: "0.1.67"
6068
+ version: "0.1.68"
5987
6069
  },
5988
6070
  instructions: 'Welcome to MindStudio \u2014 a platform with 200+ AI models, 850+ third-party integrations, and pre-built agents.\n\nGetting started:\n1. Call `ask` with any question about the SDK \u2014 it knows every action, model, and connector and returns working code with real model IDs and config options. Examples: ask("generate an image with FLUX"), ask("what models support vision?"), ask("how do I send a Slack message?").\n2. Call `changeName` to set your display name \u2014 use your name or whatever your user calls you. This is how you\'ll appear in MindStudio request logs.\n3. If you have a profile picture or icon, call `uploadFile` to upload it, then `changeProfilePicture` with the returned URL.\n4. For manual browsing, call `listActions` to discover all available actions.\n\nThen use the tools to generate text, images, video, audio, search the web, work with data sources, run agents, and more.\n\nImportant:\n- AI-powered actions (text generation, image generation, video, audio, etc.) cost money. Before running these, call `estimateActionCost` and confirm with the user before proceeding \u2014 unless they\'ve explicitly told you to go ahead.\n- Not all agents from `listAgents` are configured for API use. Do not try to run an agent just because it appears in the list \u2014 it will likely fail. Only run agents the user specifically asks you to run.'
5989
6071
  });
@@ -6956,7 +7038,7 @@ function isNewerVersion(current, latest) {
6956
7038
  return false;
6957
7039
  }
6958
7040
  async function checkForUpdate() {
6959
- const currentVersion = "0.1.67";
7041
+ const currentVersion = "0.1.68";
6960
7042
  if (!currentVersion) return null;
6961
7043
  try {
6962
7044
  const { loadConfig: loadConfig2, saveConfig: saveConfig2 } = await Promise.resolve().then(() => (init_config(), config_exports));
@@ -6985,7 +7067,7 @@ async function checkForUpdate() {
6985
7067
  }
6986
7068
  }
6987
7069
  function printUpdateNotice(latestVersion) {
6988
- const currentVersion = "0.1.67";
7070
+ const currentVersion = "0.1.68";
6989
7071
  process.stderr.write(
6990
7072
  `
6991
7073
  ${ansi2.cyanBright("Update available")} ${ansi2.gray(currentVersion + " \u2192")} ${ansi2.cyanBold(latestVersion)}
@@ -6998,7 +7080,7 @@ function isStandaloneBinary() {
6998
7080
  return !argv1.includes("node_modules");
6999
7081
  }
7000
7082
  async function cmdUpdate() {
7001
- const currentVersion = "0.1.67";
7083
+ const currentVersion = "0.1.68";
7002
7084
  process.stderr.write(
7003
7085
  ` ${ansi2.gray("Current version:")} ${currentVersion}
7004
7086
  `
@@ -7133,7 +7215,7 @@ async function cmdLogin(options) {
7133
7215
  process.stderr.write("\n");
7134
7216
  printLogo();
7135
7217
  process.stderr.write("\n");
7136
- const ver = "0.1.67";
7218
+ const ver = "0.1.68";
7137
7219
  process.stderr.write(
7138
7220
  ` ${ansi2.bold("MindStudio Agent")} ${ver ? " " + ansi2.gray("v" + ver) : ""}
7139
7221
  `
@@ -7460,7 +7542,7 @@ async function main() {
7460
7542
  try {
7461
7543
  if (command === "version" || command === "-v") {
7462
7544
  process.stdout.write(
7463
- "0.1.67\n"
7545
+ "0.1.68\n"
7464
7546
  );
7465
7547
  return;
7466
7548
  }
package/dist/index.d.ts CHANGED
@@ -192,6 +192,41 @@ interface ResolvedUser {
192
192
  /** Profile picture URL, if set. */
193
193
  profilePictureUrl?: string | null;
194
194
  }
195
+ /** Input for {@link MindStudioAgent.reportIssue}. */
196
+ interface ReportIssueInput {
197
+ /** Short summary. Required, non-empty, ≤ 300 chars (trimmed server-side). */
198
+ title: string;
199
+ /** Longer description. Optional, ≤ 10,000 chars. Defaults to `""`. */
200
+ body?: string;
201
+ /** Report kind. Defaults to `"bug"`. */
202
+ kind?: 'bug' | 'idea';
203
+ /**
204
+ * Free-form label for who reported it — a name, email, or ticket id.
205
+ * ≤ 200 chars. Display-only; NOT an identity check and NOT tied to a user.
206
+ * Omit for an anonymous report.
207
+ */
208
+ reporter?: string;
209
+ }
210
+ /** A filed issue, returned by {@link MindStudioAgent.reportIssue}. */
211
+ interface ReportedIssue {
212
+ id: string;
213
+ /** Friendly per-app number — show the user "Reported as #42". */
214
+ number: number;
215
+ title: string;
216
+ body: string;
217
+ kind: 'bug' | 'idea';
218
+ status: 'open';
219
+ /** `"sdk"` for in-app reports filed through this method. */
220
+ authorKind: 'sdk';
221
+ authorUserId: string | null;
222
+ /** Echoes the `reporter` that was sent, or null. */
223
+ reporter: string | null;
224
+ /** ISO-8601. */
225
+ createdAt: string;
226
+ /** ISO-8601. */
227
+ updatedAt: string;
228
+ closedAt: string | null;
229
+ }
195
230
  /** An AI model available on MindStudio. */
196
231
  interface MindStudioModel {
197
232
  id?: string;
@@ -1722,6 +1757,47 @@ declare class MindStudioAgent$1 {
1722
1757
  resolveUsers(userIds: string[]): Promise<{
1723
1758
  users: ResolvedUser[];
1724
1759
  }>;
1760
+ /**
1761
+ * File a bug report or feature idea into this app's issue tracker.
1762
+ *
1763
+ * For building an in-app "Report a bug" feature: wire the frontend UI to
1764
+ * an app backend method that calls this. The issue lands in the app's
1765
+ * issue tracker, visible to the app's team and available to the Remy agent.
1766
+ *
1767
+ * **Backend / managed-context only.** It authenticates with the app's hook
1768
+ * token (the same credential used for `db` queries), and the app id is
1769
+ * derived from that token server-side. Calling it outside a managed
1770
+ * context (e.g. with a plain API key) will fail with `401`.
1771
+ *
1772
+ * Rate limited per app (20 / 60s). On the limit this throws a
1773
+ * `MindStudioError` with `code === 'rate_limited'` and `status === 429` —
1774
+ * catch it to show a graceful "try again shortly" message. Every call
1775
+ * creates a new issue (no dedupe), so guard against double-submit in the UI.
1776
+ *
1777
+ * @returns The filed issue. Show `issue.number` to confirm "Reported as #42".
1778
+ *
1779
+ * @example
1780
+ * ```ts
1781
+ * // app backend method, e.g. exported as `reportBug`
1782
+ * export async function reportBug({ title, details, userEmail }) {
1783
+ * try {
1784
+ * const { number } = await mindstudio.reportIssue({
1785
+ * title,
1786
+ * body: details,
1787
+ * kind: 'bug',
1788
+ * reporter: userEmail, // free-form label; omit for anonymous
1789
+ * });
1790
+ * return { ok: true, issueNumber: number };
1791
+ * } catch (e) {
1792
+ * if (e instanceof MindStudioError && e.code === 'rate_limited') {
1793
+ * return { ok: false, retry: true };
1794
+ * }
1795
+ * throw e;
1796
+ * }
1797
+ * }
1798
+ * ```
1799
+ */
1800
+ reportIssue(input: ReportIssueInput): Promise<ReportedIssue>;
1725
1801
  /**
1726
1802
  * Get auth and database context for an app.
1727
1803
  *
@@ -8811,5 +8887,19 @@ declare const stream: (data: string | Record<string, unknown>) => Promise<void>;
8811
8887
  * ```
8812
8888
  */
8813
8889
  declare const resolveUser: (userId: string) => Promise<ResolvedUser | null>;
8890
+ /**
8891
+ * File a bug report or feature idea into this app's issue tracker.
8892
+ * Bound to the default singleton. Backend / managed-context only.
8893
+ *
8894
+ * @example
8895
+ * ```ts
8896
+ * import { reportIssue } from '@mindstudio-ai/agent';
8897
+ *
8898
+ * const { number } = await reportIssue({ title: 'Checkout fails', kind: 'bug' });
8899
+ * ```
8900
+ *
8901
+ * @see {@link MindStudioAgent.reportIssue}
8902
+ */
8903
+ declare const reportIssue: (input: ReportIssueInput) => Promise<ReportedIssue>;
8814
8904
 
8815
- export { type Accessor, type ActiveCampaignAddNoteStepInput, type ActiveCampaignAddNoteStepOutput, type ActiveCampaignCreateContactStepInput, type ActiveCampaignCreateContactStepOutput, type AddSubtitlesToVideoStepInput, type AddSubtitlesToVideoStepOutput, type AgentInfo, type AgentOptions, type AirtableCreateUpdateRecordStepInput, type AirtableCreateUpdateRecordStepOutput, type AirtableDeleteRecordStepInput, type AirtableDeleteRecordStepOutput, type AirtableGetRecordStepInput, type AirtableGetRecordStepOutput, type AirtableGetTableRecordsStepInput, type AirtableGetTableRecordsStepOutput, type AnalyzeImageStepInput, type AnalyzeImageStepOutput, type AnalyzeVideoStepInput, type AnalyzeVideoStepOutput, type AppAuthContext, type AppContextResult, type AppDatabase, type AppDatabaseColumnSchema, type AppDatabaseTable, type AppRoleAssignment, AuthContext, type AuthTableConfig, type BatchStepInput, type BatchStepResult, type CaptureThumbnailStepInput, type CaptureThumbnailStepOutput, type CheckAppRoleStepInput, type CheckAppRoleStepOutput, type CodaCreateUpdatePageStepInput, type CodaCreateUpdatePageStepOutput, type CodaCreateUpdateRowStepInput, type CodaCreateUpdateRowStepOutput, type CodaFindRowStepInput, type CodaFindRowStepOutput, type CodaGetPageStepInput, type CodaGetPageStepOutput, type CodaGetTableRowsStepInput, type CodaGetTableRowsStepOutput, type Connection, type ConnectorActionDetail, type ConnectorService, type ConvertPdfToImagesStepInput, type ConvertPdfToImagesStepOutput, type CreateDataSourceStepInput, type CreateDataSourceStepOutput, type CreateGmailDraftStepInput, type CreateGmailDraftStepOutput, type CreateGoogleCalendarEventStepInput, type CreateGoogleCalendarEventStepOutput, type CreateGoogleDocStepInput, type CreateGoogleDocStepOutput, type CreateGoogleSheetStepInput, type CreateGoogleSheetStepOutput, type Db, type DefineTableOptions, type DeleteDataSourceDocumentStepInput, type DeleteDataSourceDocumentStepOutput, type DeleteDataSourceStepInput, type DeleteDataSourceStepOutput, type DeleteGmailEmailStepInput, type DeleteGmailEmailStepOutput, type DeleteGoogleCalendarEventStepInput, type DeleteGoogleCalendarEventStepOutput, type DeleteGoogleSheetRowsStepInput, type DeleteGoogleSheetRowsStepOutput, type DetectChangesStepInput, type DetectChangesStepOutput, type DetectPIIStepInput, type DetectPIIStepOutput, type DiscordEditMessageStepInput, type DiscordEditMessageStepOutput, type DiscordSendFollowUpStepInput, type DiscordSendFollowUpStepOutput, type DiscordSendMessageStepInput, type DiscordSendMessageStepOutput, type DownloadVideoStepInput, type DownloadVideoStepOutput, type EnhanceImageGenerationPromptStepInput, type EnhanceImageGenerationPromptStepOutput, type EnhanceVideoGenerationPromptStepInput, type EnhanceVideoGenerationPromptStepOutput, type EnrichPersonStepInput, type EnrichPersonStepOutput, type ExecuteStepBatchOptions, type ExecuteStepBatchResult, type ExtractAudioFromVideoStepInput, type ExtractAudioFromVideoStepOutput, type ExtractTextStepInput, type ExtractTextStepOutput, type FetchDataSourceDocumentStepInput, type FetchDataSourceDocumentStepOutput, type FetchGoogleDocStepInput, type FetchGoogleDocStepOutput, type FetchGoogleSheetStepInput, type FetchGoogleSheetStepOutput, type FetchSlackChannelHistoryStepInput, type FetchSlackChannelHistoryStepOutput, type FetchYoutubeCaptionsStepInput, type FetchYoutubeCaptionsStepOutput, type FetchYoutubeChannelStepInput, type FetchYoutubeChannelStepOutput, type FetchYoutubeCommentsStepInput, type FetchYoutubeCommentsStepOutput, type FetchYoutubeVideoStepInput, type FetchYoutubeVideoStepOutput, type Generate3dModelStepInput, type Generate3dModelStepOutput, type GenerateAssetStepInput, type GenerateAssetStepOutput, type GenerateChartStepInput, type GenerateChartStepOutput, type GenerateImageStepInput, type GenerateImageStepOutput, type GenerateLipsyncStepInput, type GenerateLipsyncStepOutput, type GenerateMusicStepInput, type GenerateMusicStepOutput, type GeneratePdfStepInput, type GeneratePdfStepOutput, type GenerateStaticVideoFromImageStepInput, type GenerateStaticVideoFromImageStepOutput, type GenerateTextStepInput, type GenerateTextStepOutput, type GenerateVideoStepInput, type GenerateVideoStepOutput, type GetGmailAttachmentsStepInput, type GetGmailAttachmentsStepOutput, type GetGmailDraftStepInput, type GetGmailDraftStepOutput, type GetGmailEmailStepInput, type GetGmailEmailStepOutput, type GetGmailUnreadCountStepInput, type GetGmailUnreadCountStepOutput, type GetGoogleCalendarEventStepInput, type GetGoogleCalendarEventStepOutput, type GetGoogleDriveFileStepInput, type GetGoogleDriveFileStepOutput, type GetGoogleSheetInfoStepInput, type GetGoogleSheetInfoStepOutput, type GetMediaMetadataStepInput, type GetMediaMetadataStepOutput, type HubspotCreateCompanyStepInput, type HubspotCreateCompanyStepOutput, type HubspotCreateContactStepInput, type HubspotCreateContactStepOutput, type HubspotGetCompanyStepInput, type HubspotGetCompanyStepOutput, type HubspotGetContactStepInput, type HubspotGetContactStepOutput, type HunterApiCompanyEnrichmentStepInput, type HunterApiCompanyEnrichmentStepOutput, type HunterApiDomainSearchStepInput, type HunterApiDomainSearchStepOutput, type HunterApiEmailFinderStepInput, type HunterApiEmailFinderStepOutput, type HunterApiEmailVerificationStepInput, type HunterApiEmailVerificationStepOutput, type HunterApiPersonEnrichmentStepInput, type HunterApiPersonEnrichmentStepOutput, type ImageFaceSwapStepInput, type ImageFaceSwapStepOutput, type ImageRemoveWatermarkStepInput, type ImageRemoveWatermarkStepOutput, type InsertVideoClipsStepInput, type InsertVideoClipsStepOutput, type ListAgentsResult, type ListDataSourcesStepInput, type ListDataSourcesStepOutput, type ListGmailDraftsStepInput, type ListGmailDraftsStepOutput, type ListGmailLabelsStepInput, type ListGmailLabelsStepOutput, type ListGoogleCalendarEventsStepInput, type ListGoogleCalendarEventsStepOutput, type ListGoogleDriveFilesStepInput, type ListGoogleDriveFilesStepOutput, type ListRecentGmailEmailsStepInput, type ListRecentGmailEmailsStepOutput, type LogicStepInput, type LogicStepOutput, type MakeDotComRunScenarioStepInput, type MakeDotComRunScenarioStepOutput, type MergeAudioStepInput, type MergeAudioStepOutput, type MergeVideosStepInput, type MergeVideosStepOutput, type MeshyAnimateStepInput, type MeshyAnimateStepOutput, type MeshyImageTo3dStepInput, type MeshyImageTo3dStepOutput, type MeshyRemeshStepInput, type MeshyRemeshStepOutput, type MeshyRigStepInput, type MeshyRigStepOutput, type MeshyTextTo3dStepInput, type MeshyTextTo3dStepOutput, type MeshyTextureStepInput, type MeshyTextureStepOutput, MindStudioAgent, MindStudioError, type MindStudioModel, type MindStudioModelSummary, type MixAudioIntoVideoStepInput, type MixAudioIntoVideoStepOutput, type ModelType, type MonacoSnippet, type MonacoSnippetField, type MonacoSnippetFieldType, type MuteVideoStepInput, type MuteVideoStepOutput, type N8nRunNodeStepInput, type N8nRunNodeStepOutput, type NotionCreatePageStepInput, type NotionCreatePageStepOutput, type NotionUpdatePageStepInput, type NotionUpdatePageStepOutput, type PackagedWorkflow, type PackagedWorkflowInput, type PackagedWorkflowSignature, type ParticlePodcastsFindMentionsStepInput, type ParticlePodcastsFindMentionsStepOutput, type ParticlePodcastsGetEpisodeStepInput, type ParticlePodcastsGetEpisodeStepOutput, type ParticlePodcastsGetEpisodeTranscriptStepInput, type ParticlePodcastsGetEpisodeTranscriptStepOutput, type ParticlePodcastsSearchCompaniesStepInput, type ParticlePodcastsSearchCompaniesStepOutput, type ParticlePodcastsSearchDialogueStepInput, type ParticlePodcastsSearchDialogueStepOutput, type ParticlePodcastsSearchPodcastsStepInput, type ParticlePodcastsSearchPodcastsStepOutput, type PeopleSearchStepInput, type PeopleSearchStepOutput, type PostToLinkedInStepInput, type PostToLinkedInStepOutput, type PostToSlackChannelStepInput, type PostToSlackChannelStepOutput, type PostToXStepInput, type PostToXStepOutput, type PostToZapierStepInput, type PostToZapierStepOutput, type Predicate, type PushInput, Query, type QueryAppDatabaseStepInput, type QueryAppDatabaseStepOutput, type QueryDataSourceStepInput, type QueryDataSourceStepOutput, type QueryExternalDatabaseStepInput, type QueryExternalDatabaseStepOutput, type RedactPIIStepInput, type RedactPIIStepOutput, type RemoveBackgroundFromImageStepInput, type RemoveBackgroundFromImageStepOutput, type ReplyToGmailEmailStepInput, type ReplyToGmailEmailStepOutput, type RequestContext, type ResizeVideoStepInput, type ResizeVideoStepOutput, type ResolvedUser, Roles, type RunAgentOptions, type RunAgentResult, type RunFromConnectorRegistryStepInput, type RunFromConnectorRegistryStepOutput, type RunPackagedWorkflowStepInput, type RunPackagedWorkflowStepOutput, type RunTaskOptions, type RunTaskResult, type ScrapeLinkedInCompanyStepInput, type ScrapeLinkedInCompanyStepOutput, type ScrapeLinkedInProfileStepInput, type ScrapeLinkedInProfileStepOutput, type ScrapeUrlStepInput, type ScrapeUrlStepOutput, type ScrapeXPostStepInput, type ScrapeXPostStepOutput, type ScrapeXProfileStepInput, type ScrapeXProfileStepOutput, type ScreenshotUrlStepInput, type ScreenshotUrlStepOutput, type SearchGmailEmailsStepInput, type SearchGmailEmailsStepOutput, type SearchGoogleCalendarEventsStepInput, type SearchGoogleCalendarEventsStepOutput, type SearchGoogleDriveStepInput, type SearchGoogleDriveStepOutput, type SearchGoogleImagesStepInput, type SearchGoogleImagesStepOutput, type SearchGoogleNewsStepInput, type SearchGoogleNewsStepOutput, type SearchGoogleStepInput, type SearchGoogleStepOutput, type SearchGoogleTrendsStepInput, type SearchGoogleTrendsStepOutput, type SearchPerplexityStepInput, type SearchPerplexityStepOutput, type SearchXPostsStepInput, type SearchXPostsStepOutput, type SearchYoutubeStepInput, type SearchYoutubeStepOutput, type SearchYoutubeTrendsStepInput, type SearchYoutubeTrendsStepOutput, type SendEmailStepInput, type SendEmailStepOutput, type SendGmailDraftStepInput, type SendGmailDraftStepOutput, type SendGmailMessageStepInput, type SendGmailMessageStepOutput, type SendSMSStepInput, type SendSMSStepOutput, type SendSlackDirectMessageStepInput, type SendSlackDirectMessageStepOutput, type SetGmailReadStatusStepInput, type SetGmailReadStatusStepOutput, type SetRunTitleStepInput, type SetRunTitleStepOutput, type SetVariableStepInput, type SetVariableStepOutput, type StepCostEstimateEntry, type StepExecutionMeta, type StepExecutionOptions, type StepExecutionResult, type StepInputMap, type StepLogEvent, type StepMetadata, type StepMethods, type StepName, type StepOutputMap, type SystemFields, Table, type TaskEvent, type TaskToolCall, type TaskToolConfig, type TaskUsage, type TelegramEditMessageStepInput, type TelegramEditMessageStepOutput, type TelegramReplyToMessageStepInput, type TelegramReplyToMessageStepOutput, type TelegramSendAudioStepInput, type TelegramSendAudioStepOutput, type TelegramSendFileStepInput, type TelegramSendFileStepOutput, type TelegramSendImageStepInput, type TelegramSendImageStepOutput, type TelegramSendMessageStepInput, type TelegramSendMessageStepOutput, type TelegramSendVideoStepInput, type TelegramSendVideoStepOutput, type TelegramSetTypingStepInput, type TelegramSetTypingStepOutput, type TextToSpeechStepInput, type TextToSpeechStepOutput, type TranscribeAudioStepInput, type TranscribeAudioStepOutput, type TrimMediaStepInput, type TrimMediaStepOutput, type UpdateGmailLabelsStepInput, type UpdateGmailLabelsStepOutput, type UpdateGoogleCalendarEventStepInput, type UpdateGoogleCalendarEventStepOutput, type UpdateGoogleDocStepInput, type UpdateGoogleDocStepOutput, type UpdateGoogleSheetStepInput, type UpdateGoogleSheetStepOutput, type UpdateInput, type UploadDataSourceDocumentStepInput, type UploadDataSourceDocumentStepOutput, type UploadFileResult, type UpscaleImageStepInput, type UpscaleImageStepOutput, type UpscaleVideoStepInput, type UpscaleVideoStepOutput, type User, type UserInfoResult, type UserMessageStepInput, type UserMessageStepOutput, type VideoFaceSwapStepInput, type VideoFaceSwapStepOutput, type VideoRemoveBackgroundStepInput, type VideoRemoveBackgroundStepOutput, type VideoRemoveWatermarkStepInput, type VideoRemoveWatermarkStepOutput, type WatermarkImageStepInput, type WatermarkImageStepOutput, type WatermarkVideoStepInput, type WatermarkVideoStepOutput, type YouDotComFinanceResearchStepInput, type YouDotComFinanceResearchStepOutput, type YouDotComGetPageContentStepInput, type YouDotComGetPageContentStepOutput, type YouDotComLiveNewsStepInput, type YouDotComLiveNewsStepOutput, type YouDotComWebResearchStepInput, type YouDotComWebResearchStepOutput, type YouDotComWebSearchStepInput, type YouDotComWebSearchStepOutput, auth, blockTypeAliases, db, mindstudio as default, getRequestContext, mindstudio, monacoSnippets, resolveUser, runWithContext, stepMetadata, stream };
8905
+ export { type Accessor, type ActiveCampaignAddNoteStepInput, type ActiveCampaignAddNoteStepOutput, type ActiveCampaignCreateContactStepInput, type ActiveCampaignCreateContactStepOutput, type AddSubtitlesToVideoStepInput, type AddSubtitlesToVideoStepOutput, type AgentInfo, type AgentOptions, type AirtableCreateUpdateRecordStepInput, type AirtableCreateUpdateRecordStepOutput, type AirtableDeleteRecordStepInput, type AirtableDeleteRecordStepOutput, type AirtableGetRecordStepInput, type AirtableGetRecordStepOutput, type AirtableGetTableRecordsStepInput, type AirtableGetTableRecordsStepOutput, type AnalyzeImageStepInput, type AnalyzeImageStepOutput, type AnalyzeVideoStepInput, type AnalyzeVideoStepOutput, type AppAuthContext, type AppContextResult, type AppDatabase, type AppDatabaseColumnSchema, type AppDatabaseTable, type AppRoleAssignment, AuthContext, type AuthTableConfig, type BatchStepInput, type BatchStepResult, type CaptureThumbnailStepInput, type CaptureThumbnailStepOutput, type CheckAppRoleStepInput, type CheckAppRoleStepOutput, type CodaCreateUpdatePageStepInput, type CodaCreateUpdatePageStepOutput, type CodaCreateUpdateRowStepInput, type CodaCreateUpdateRowStepOutput, type CodaFindRowStepInput, type CodaFindRowStepOutput, type CodaGetPageStepInput, type CodaGetPageStepOutput, type CodaGetTableRowsStepInput, type CodaGetTableRowsStepOutput, type Connection, type ConnectorActionDetail, type ConnectorService, type ConvertPdfToImagesStepInput, type ConvertPdfToImagesStepOutput, type CreateDataSourceStepInput, type CreateDataSourceStepOutput, type CreateGmailDraftStepInput, type CreateGmailDraftStepOutput, type CreateGoogleCalendarEventStepInput, type CreateGoogleCalendarEventStepOutput, type CreateGoogleDocStepInput, type CreateGoogleDocStepOutput, type CreateGoogleSheetStepInput, type CreateGoogleSheetStepOutput, type Db, type DefineTableOptions, type DeleteDataSourceDocumentStepInput, type DeleteDataSourceDocumentStepOutput, type DeleteDataSourceStepInput, type DeleteDataSourceStepOutput, type DeleteGmailEmailStepInput, type DeleteGmailEmailStepOutput, type DeleteGoogleCalendarEventStepInput, type DeleteGoogleCalendarEventStepOutput, type DeleteGoogleSheetRowsStepInput, type DeleteGoogleSheetRowsStepOutput, type DetectChangesStepInput, type DetectChangesStepOutput, type DetectPIIStepInput, type DetectPIIStepOutput, type DiscordEditMessageStepInput, type DiscordEditMessageStepOutput, type DiscordSendFollowUpStepInput, type DiscordSendFollowUpStepOutput, type DiscordSendMessageStepInput, type DiscordSendMessageStepOutput, type DownloadVideoStepInput, type DownloadVideoStepOutput, type EnhanceImageGenerationPromptStepInput, type EnhanceImageGenerationPromptStepOutput, type EnhanceVideoGenerationPromptStepInput, type EnhanceVideoGenerationPromptStepOutput, type EnrichPersonStepInput, type EnrichPersonStepOutput, type ExecuteStepBatchOptions, type ExecuteStepBatchResult, type ExtractAudioFromVideoStepInput, type ExtractAudioFromVideoStepOutput, type ExtractTextStepInput, type ExtractTextStepOutput, type FetchDataSourceDocumentStepInput, type FetchDataSourceDocumentStepOutput, type FetchGoogleDocStepInput, type FetchGoogleDocStepOutput, type FetchGoogleSheetStepInput, type FetchGoogleSheetStepOutput, type FetchSlackChannelHistoryStepInput, type FetchSlackChannelHistoryStepOutput, type FetchYoutubeCaptionsStepInput, type FetchYoutubeCaptionsStepOutput, type FetchYoutubeChannelStepInput, type FetchYoutubeChannelStepOutput, type FetchYoutubeCommentsStepInput, type FetchYoutubeCommentsStepOutput, type FetchYoutubeVideoStepInput, type FetchYoutubeVideoStepOutput, type Generate3dModelStepInput, type Generate3dModelStepOutput, type GenerateAssetStepInput, type GenerateAssetStepOutput, type GenerateChartStepInput, type GenerateChartStepOutput, type GenerateImageStepInput, type GenerateImageStepOutput, type GenerateLipsyncStepInput, type GenerateLipsyncStepOutput, type GenerateMusicStepInput, type GenerateMusicStepOutput, type GeneratePdfStepInput, type GeneratePdfStepOutput, type GenerateStaticVideoFromImageStepInput, type GenerateStaticVideoFromImageStepOutput, type GenerateTextStepInput, type GenerateTextStepOutput, type GenerateVideoStepInput, type GenerateVideoStepOutput, type GetGmailAttachmentsStepInput, type GetGmailAttachmentsStepOutput, type GetGmailDraftStepInput, type GetGmailDraftStepOutput, type GetGmailEmailStepInput, type GetGmailEmailStepOutput, type GetGmailUnreadCountStepInput, type GetGmailUnreadCountStepOutput, type GetGoogleCalendarEventStepInput, type GetGoogleCalendarEventStepOutput, type GetGoogleDriveFileStepInput, type GetGoogleDriveFileStepOutput, type GetGoogleSheetInfoStepInput, type GetGoogleSheetInfoStepOutput, type GetMediaMetadataStepInput, type GetMediaMetadataStepOutput, type HubspotCreateCompanyStepInput, type HubspotCreateCompanyStepOutput, type HubspotCreateContactStepInput, type HubspotCreateContactStepOutput, type HubspotGetCompanyStepInput, type HubspotGetCompanyStepOutput, type HubspotGetContactStepInput, type HubspotGetContactStepOutput, type HunterApiCompanyEnrichmentStepInput, type HunterApiCompanyEnrichmentStepOutput, type HunterApiDomainSearchStepInput, type HunterApiDomainSearchStepOutput, type HunterApiEmailFinderStepInput, type HunterApiEmailFinderStepOutput, type HunterApiEmailVerificationStepInput, type HunterApiEmailVerificationStepOutput, type HunterApiPersonEnrichmentStepInput, type HunterApiPersonEnrichmentStepOutput, type ImageFaceSwapStepInput, type ImageFaceSwapStepOutput, type ImageRemoveWatermarkStepInput, type ImageRemoveWatermarkStepOutput, type InsertVideoClipsStepInput, type InsertVideoClipsStepOutput, type ListAgentsResult, type ListDataSourcesStepInput, type ListDataSourcesStepOutput, type ListGmailDraftsStepInput, type ListGmailDraftsStepOutput, type ListGmailLabelsStepInput, type ListGmailLabelsStepOutput, type ListGoogleCalendarEventsStepInput, type ListGoogleCalendarEventsStepOutput, type ListGoogleDriveFilesStepInput, type ListGoogleDriveFilesStepOutput, type ListRecentGmailEmailsStepInput, type ListRecentGmailEmailsStepOutput, type LogicStepInput, type LogicStepOutput, type MakeDotComRunScenarioStepInput, type MakeDotComRunScenarioStepOutput, type MergeAudioStepInput, type MergeAudioStepOutput, type MergeVideosStepInput, type MergeVideosStepOutput, type MeshyAnimateStepInput, type MeshyAnimateStepOutput, type MeshyImageTo3dStepInput, type MeshyImageTo3dStepOutput, type MeshyRemeshStepInput, type MeshyRemeshStepOutput, type MeshyRigStepInput, type MeshyRigStepOutput, type MeshyTextTo3dStepInput, type MeshyTextTo3dStepOutput, type MeshyTextureStepInput, type MeshyTextureStepOutput, MindStudioAgent, MindStudioError, type MindStudioModel, type MindStudioModelSummary, type MixAudioIntoVideoStepInput, type MixAudioIntoVideoStepOutput, type ModelType, type MonacoSnippet, type MonacoSnippetField, type MonacoSnippetFieldType, type MuteVideoStepInput, type MuteVideoStepOutput, type N8nRunNodeStepInput, type N8nRunNodeStepOutput, type NotionCreatePageStepInput, type NotionCreatePageStepOutput, type NotionUpdatePageStepInput, type NotionUpdatePageStepOutput, type PackagedWorkflow, type PackagedWorkflowInput, type PackagedWorkflowSignature, type ParticlePodcastsFindMentionsStepInput, type ParticlePodcastsFindMentionsStepOutput, type ParticlePodcastsGetEpisodeStepInput, type ParticlePodcastsGetEpisodeStepOutput, type ParticlePodcastsGetEpisodeTranscriptStepInput, type ParticlePodcastsGetEpisodeTranscriptStepOutput, type ParticlePodcastsSearchCompaniesStepInput, type ParticlePodcastsSearchCompaniesStepOutput, type ParticlePodcastsSearchDialogueStepInput, type ParticlePodcastsSearchDialogueStepOutput, type ParticlePodcastsSearchPodcastsStepInput, type ParticlePodcastsSearchPodcastsStepOutput, type PeopleSearchStepInput, type PeopleSearchStepOutput, type PostToLinkedInStepInput, type PostToLinkedInStepOutput, type PostToSlackChannelStepInput, type PostToSlackChannelStepOutput, type PostToXStepInput, type PostToXStepOutput, type PostToZapierStepInput, type PostToZapierStepOutput, type Predicate, type PushInput, Query, type QueryAppDatabaseStepInput, type QueryAppDatabaseStepOutput, type QueryDataSourceStepInput, type QueryDataSourceStepOutput, type QueryExternalDatabaseStepInput, type QueryExternalDatabaseStepOutput, type RedactPIIStepInput, type RedactPIIStepOutput, type RemoveBackgroundFromImageStepInput, type RemoveBackgroundFromImageStepOutput, type ReplyToGmailEmailStepInput, type ReplyToGmailEmailStepOutput, type ReportIssueInput, type ReportedIssue, type RequestContext, type ResizeVideoStepInput, type ResizeVideoStepOutput, type ResolvedUser, Roles, type RunAgentOptions, type RunAgentResult, type RunFromConnectorRegistryStepInput, type RunFromConnectorRegistryStepOutput, type RunPackagedWorkflowStepInput, type RunPackagedWorkflowStepOutput, type RunTaskOptions, type RunTaskResult, type ScrapeLinkedInCompanyStepInput, type ScrapeLinkedInCompanyStepOutput, type ScrapeLinkedInProfileStepInput, type ScrapeLinkedInProfileStepOutput, type ScrapeUrlStepInput, type ScrapeUrlStepOutput, type ScrapeXPostStepInput, type ScrapeXPostStepOutput, type ScrapeXProfileStepInput, type ScrapeXProfileStepOutput, type ScreenshotUrlStepInput, type ScreenshotUrlStepOutput, type SearchGmailEmailsStepInput, type SearchGmailEmailsStepOutput, type SearchGoogleCalendarEventsStepInput, type SearchGoogleCalendarEventsStepOutput, type SearchGoogleDriveStepInput, type SearchGoogleDriveStepOutput, type SearchGoogleImagesStepInput, type SearchGoogleImagesStepOutput, type SearchGoogleNewsStepInput, type SearchGoogleNewsStepOutput, type SearchGoogleStepInput, type SearchGoogleStepOutput, type SearchGoogleTrendsStepInput, type SearchGoogleTrendsStepOutput, type SearchPerplexityStepInput, type SearchPerplexityStepOutput, type SearchXPostsStepInput, type SearchXPostsStepOutput, type SearchYoutubeStepInput, type SearchYoutubeStepOutput, type SearchYoutubeTrendsStepInput, type SearchYoutubeTrendsStepOutput, type SendEmailStepInput, type SendEmailStepOutput, type SendGmailDraftStepInput, type SendGmailDraftStepOutput, type SendGmailMessageStepInput, type SendGmailMessageStepOutput, type SendSMSStepInput, type SendSMSStepOutput, type SendSlackDirectMessageStepInput, type SendSlackDirectMessageStepOutput, type SetGmailReadStatusStepInput, type SetGmailReadStatusStepOutput, type SetRunTitleStepInput, type SetRunTitleStepOutput, type SetVariableStepInput, type SetVariableStepOutput, type StepCostEstimateEntry, type StepExecutionMeta, type StepExecutionOptions, type StepExecutionResult, type StepInputMap, type StepLogEvent, type StepMetadata, type StepMethods, type StepName, type StepOutputMap, type SystemFields, Table, type TaskEvent, type TaskToolCall, type TaskToolConfig, type TaskUsage, type TelegramEditMessageStepInput, type TelegramEditMessageStepOutput, type TelegramReplyToMessageStepInput, type TelegramReplyToMessageStepOutput, type TelegramSendAudioStepInput, type TelegramSendAudioStepOutput, type TelegramSendFileStepInput, type TelegramSendFileStepOutput, type TelegramSendImageStepInput, type TelegramSendImageStepOutput, type TelegramSendMessageStepInput, type TelegramSendMessageStepOutput, type TelegramSendVideoStepInput, type TelegramSendVideoStepOutput, type TelegramSetTypingStepInput, type TelegramSetTypingStepOutput, type TextToSpeechStepInput, type TextToSpeechStepOutput, type TranscribeAudioStepInput, type TranscribeAudioStepOutput, type TrimMediaStepInput, type TrimMediaStepOutput, type UpdateGmailLabelsStepInput, type UpdateGmailLabelsStepOutput, type UpdateGoogleCalendarEventStepInput, type UpdateGoogleCalendarEventStepOutput, type UpdateGoogleDocStepInput, type UpdateGoogleDocStepOutput, type UpdateGoogleSheetStepInput, type UpdateGoogleSheetStepOutput, type UpdateInput, type UploadDataSourceDocumentStepInput, type UploadDataSourceDocumentStepOutput, type UploadFileResult, type UpscaleImageStepInput, type UpscaleImageStepOutput, type UpscaleVideoStepInput, type UpscaleVideoStepOutput, type User, type UserInfoResult, type UserMessageStepInput, type UserMessageStepOutput, type VideoFaceSwapStepInput, type VideoFaceSwapStepOutput, type VideoRemoveBackgroundStepInput, type VideoRemoveBackgroundStepOutput, type VideoRemoveWatermarkStepInput, type VideoRemoveWatermarkStepOutput, type WatermarkImageStepInput, type WatermarkImageStepOutput, type WatermarkVideoStepInput, type WatermarkVideoStepOutput, type YouDotComFinanceResearchStepInput, type YouDotComFinanceResearchStepOutput, type YouDotComGetPageContentStepInput, type YouDotComGetPageContentStepOutput, type YouDotComLiveNewsStepInput, type YouDotComLiveNewsStepOutput, type YouDotComWebResearchStepInput, type YouDotComWebResearchStepOutput, type YouDotComWebSearchStepInput, type YouDotComWebSearchStepOutput, auth, blockTypeAliases, db, mindstudio as default, getRequestContext, mindstudio, monacoSnippets, reportIssue, resolveUser, runWithContext, stepMetadata, stream };
package/dist/index.js CHANGED
@@ -4870,6 +4870,84 @@ var MindStudioAgent = class {
4870
4870
  return data;
4871
4871
  }
4872
4872
  // -------------------------------------------------------------------------
4873
+ // Issue reporting
4874
+ // -------------------------------------------------------------------------
4875
+ /**
4876
+ * File a bug report or feature idea into this app's issue tracker.
4877
+ *
4878
+ * For building an in-app "Report a bug" feature: wire the frontend UI to
4879
+ * an app backend method that calls this. The issue lands in the app's
4880
+ * issue tracker, visible to the app's team and available to the Remy agent.
4881
+ *
4882
+ * **Backend / managed-context only.** It authenticates with the app's hook
4883
+ * token (the same credential used for `db` queries), and the app id is
4884
+ * derived from that token server-side. Calling it outside a managed
4885
+ * context (e.g. with a plain API key) will fail with `401`.
4886
+ *
4887
+ * Rate limited per app (20 / 60s). On the limit this throws a
4888
+ * `MindStudioError` with `code === 'rate_limited'` and `status === 429` —
4889
+ * catch it to show a graceful "try again shortly" message. Every call
4890
+ * creates a new issue (no dedupe), so guard against double-submit in the UI.
4891
+ *
4892
+ * @returns The filed issue. Show `issue.number` to confirm "Reported as #42".
4893
+ *
4894
+ * @example
4895
+ * ```ts
4896
+ * // app backend method, e.g. exported as `reportBug`
4897
+ * export async function reportBug({ title, details, userEmail }) {
4898
+ * try {
4899
+ * const { number } = await mindstudio.reportIssue({
4900
+ * title,
4901
+ * body: details,
4902
+ * kind: 'bug',
4903
+ * reporter: userEmail, // free-form label; omit for anonymous
4904
+ * });
4905
+ * return { ok: true, issueNumber: number };
4906
+ * } catch (e) {
4907
+ * if (e instanceof MindStudioError && e.code === 'rate_limited') {
4908
+ * return { ok: false, retry: true };
4909
+ * }
4910
+ * throw e;
4911
+ * }
4912
+ * }
4913
+ * ```
4914
+ */
4915
+ async reportIssue(input) {
4916
+ const title = input.title?.trim();
4917
+ if (!title) {
4918
+ throw new MindStudioError("title is required", "missing_title", 400);
4919
+ }
4920
+ const url = `${this._currentHttpConfig.baseUrl}/_internal/v2/report-issue`;
4921
+ const res = await fetch(url, {
4922
+ method: "POST",
4923
+ headers: {
4924
+ "Content-Type": "application/json",
4925
+ Authorization: this._token
4926
+ },
4927
+ body: JSON.stringify({
4928
+ title,
4929
+ ...input.body !== void 0 && { body: input.body },
4930
+ ...input.kind !== void 0 && { kind: input.kind },
4931
+ ...input.reporter !== void 0 && { reporter: input.reporter }
4932
+ })
4933
+ });
4934
+ if (!res.ok) {
4935
+ let code = "report_issue_error";
4936
+ let message = `Report issue failed: ${res.status} ${res.statusText}`;
4937
+ let details;
4938
+ try {
4939
+ const body = await res.json();
4940
+ details = body;
4941
+ if (typeof body.errorString === "string") code = body.errorString;
4942
+ message = typeof body.errorMessage === "string" && body.errorMessage || typeof body.errorString === "string" && body.errorString || message;
4943
+ } catch {
4944
+ }
4945
+ throw new MindStudioError(message, code, res.status, details);
4946
+ }
4947
+ const data = await res.json();
4948
+ return data.issue;
4949
+ }
4950
+ // -------------------------------------------------------------------------
4873
4951
  // App context
4874
4952
  // -------------------------------------------------------------------------
4875
4953
  /**
@@ -5193,6 +5271,7 @@ var db = new Proxy(
5193
5271
  );
5194
5272
  var stream = (data) => mindstudio.stream(data);
5195
5273
  var resolveUser = (userId) => mindstudio.resolveUser(userId);
5274
+ var reportIssue = (input) => mindstudio.reportIssue(input);
5196
5275
  export {
5197
5276
  AuthContext,
5198
5277
  MindStudioAgent2 as MindStudioAgent,
@@ -5205,6 +5284,7 @@ export {
5205
5284
  getRequestContext,
5206
5285
  mindstudio,
5207
5286
  monacoSnippets,
5287
+ reportIssue,
5208
5288
  resolveUser,
5209
5289
  runWithContext,
5210
5290
  stepMetadata,