@superblocksteam/vite-plugin-file-sync 2.0.105-next.0 → 2.0.105-next.2

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 (148) hide show
  1. package/dist/ai-service/agent/middleware.d.ts.map +1 -1
  2. package/dist/ai-service/agent/middleware.js +33 -0
  3. package/dist/ai-service/agent/middleware.js.map +1 -1
  4. package/dist/ai-service/agent/prompts/api-prompts.d.ts +3 -3
  5. package/dist/ai-service/agent/prompts/api-prompts.d.ts.map +1 -1
  6. package/dist/ai-service/agent/prompts/api-prompts.js +254 -60
  7. package/dist/ai-service/agent/prompts/api-prompts.js.map +1 -1
  8. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
  9. package/dist/ai-service/agent/prompts/build-base-system-prompt.js +14 -0
  10. package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
  11. package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
  12. package/dist/ai-service/agent/tool-message-utils.js +3 -0
  13. package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
  14. package/dist/ai-service/agent/tools/apis/api-testing-state.d.ts.map +1 -1
  15. package/dist/ai-service/agent/tools/apis/api-testing-state.js +1 -2
  16. package/dist/ai-service/agent/tools/apis/api-testing-state.js.map +1 -1
  17. package/dist/ai-service/agent/tools/apis/sdk-registry.d.ts +11 -0
  18. package/dist/ai-service/agent/tools/apis/sdk-registry.d.ts.map +1 -1
  19. package/dist/ai-service/agent/tools/apis/sdk-registry.js +41 -1
  20. package/dist/ai-service/agent/tools/apis/sdk-registry.js.map +1 -1
  21. package/dist/ai-service/agent/tools/apis/test-api.d.ts +1 -1
  22. package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -1
  23. package/dist/ai-service/agent/tools/apis/test-api.js +34 -4
  24. package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
  25. package/dist/ai-service/agent/tools/build-debug.d.ts.map +1 -1
  26. package/dist/ai-service/agent/tools/build-debug.js +11 -13
  27. package/dist/ai-service/agent/tools/build-debug.js.map +1 -1
  28. package/dist/ai-service/agent/tools/build-finalize.d.ts.map +1 -1
  29. package/dist/ai-service/agent/tools/build-finalize.js +12 -0
  30. package/dist/ai-service/agent/tools/build-finalize.js.map +1 -1
  31. package/dist/ai-service/agent/tools/index.d.ts +1 -0
  32. package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
  33. package/dist/ai-service/agent/tools/index.js +1 -0
  34. package/dist/ai-service/agent/tools/index.js.map +1 -1
  35. package/dist/ai-service/agent/tools/integrations/index.d.ts +1 -0
  36. package/dist/ai-service/agent/tools/integrations/index.d.ts.map +1 -1
  37. package/dist/ai-service/agent/tools/integrations/index.js +1 -0
  38. package/dist/ai-service/agent/tools/integrations/index.js.map +1 -1
  39. package/dist/ai-service/agent/tools/integrations/integration-setup.d.ts +85 -0
  40. package/dist/ai-service/agent/tools/integrations/integration-setup.d.ts.map +1 -0
  41. package/dist/ai-service/agent/tools/integrations/integration-setup.js +343 -0
  42. package/dist/ai-service/agent/tools/integrations/integration-setup.js.map +1 -0
  43. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  44. package/dist/ai-service/agent/tools.js +19 -2
  45. package/dist/ai-service/agent/tools.js.map +1 -1
  46. package/dist/ai-service/agent/tools2/access-control.d.ts.map +1 -1
  47. package/dist/ai-service/agent/tools2/access-control.js +5 -2
  48. package/dist/ai-service/agent/tools2/access-control.js.map +1 -1
  49. package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -1
  50. package/dist/ai-service/agent/tools2/registry.js +7 -4
  51. package/dist/ai-service/agent/tools2/registry.js.map +1 -1
  52. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js +2 -2
  53. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js.map +1 -1
  54. package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.d.ts +18 -0
  55. package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.d.ts.map +1 -0
  56. package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.js +82 -0
  57. package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.js.map +1 -0
  58. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +1 -0
  59. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
  60. package/dist/ai-service/agent/tools2/types.d.ts +13 -1
  61. package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
  62. package/dist/ai-service/agent/tools2/types.js +12 -0
  63. package/dist/ai-service/agent/tools2/types.js.map +1 -1
  64. package/dist/ai-service/chat/chat-session-store.d.ts +3 -1
  65. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  66. package/dist/ai-service/chat/chat-session-store.js +57 -0
  67. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  68. package/dist/ai-service/features.d.ts +14 -1
  69. package/dist/ai-service/features.d.ts.map +1 -1
  70. package/dist/ai-service/features.js +12 -2
  71. package/dist/ai-service/features.js.map +1 -1
  72. package/dist/ai-service/index.d.ts +0 -1
  73. package/dist/ai-service/index.d.ts.map +1 -1
  74. package/dist/ai-service/index.js +11 -26
  75. package/dist/ai-service/index.js.map +1 -1
  76. package/dist/ai-service/integrations/store.d.ts +21 -0
  77. package/dist/ai-service/integrations/store.d.ts.map +1 -1
  78. package/dist/ai-service/integrations/store.js +50 -0
  79. package/dist/ai-service/integrations/store.js.map +1 -1
  80. package/dist/ai-service/llm/error.d.ts +11 -1
  81. package/dist/ai-service/llm/error.d.ts.map +1 -1
  82. package/dist/ai-service/llm/error.js +9 -0
  83. package/dist/ai-service/llm/error.js.map +1 -1
  84. package/dist/ai-service/llm/stream/config.d.ts +2 -0
  85. package/dist/ai-service/llm/stream/config.d.ts.map +1 -1
  86. package/dist/ai-service/llm/stream/config.js +2 -1
  87. package/dist/ai-service/llm/stream/config.js.map +1 -1
  88. package/dist/ai-service/llm/stream/errors.d.ts +13 -1
  89. package/dist/ai-service/llm/stream/errors.d.ts.map +1 -1
  90. package/dist/ai-service/llm/stream/errors.js +17 -1
  91. package/dist/ai-service/llm/stream/errors.js.map +1 -1
  92. package/dist/ai-service/llm/stream/idle-monitor.d.ts +63 -0
  93. package/dist/ai-service/llm/stream/idle-monitor.d.ts.map +1 -0
  94. package/dist/ai-service/llm/stream/idle-monitor.js +106 -0
  95. package/dist/ai-service/llm/stream/idle-monitor.js.map +1 -0
  96. package/dist/ai-service/llm/stream/managed-stream.d.ts +4 -1
  97. package/dist/ai-service/llm/stream/managed-stream.d.ts.map +1 -1
  98. package/dist/ai-service/llm/stream/managed-stream.js +14 -2
  99. package/dist/ai-service/llm/stream/managed-stream.js.map +1 -1
  100. package/dist/ai-service/llm/stream/observers/llmobs.d.ts +1 -0
  101. package/dist/ai-service/llm/stream/observers/llmobs.d.ts.map +1 -1
  102. package/dist/ai-service/llm/stream/observers/llmobs.js +47 -6
  103. package/dist/ai-service/llm/stream/observers/llmobs.js.map +1 -1
  104. package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
  105. package/dist/ai-service/llm/stream/orchestrator.js +23 -2
  106. package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
  107. package/dist/ai-service/llm/stream/retry-engine.d.ts.map +1 -1
  108. package/dist/ai-service/llm/stream/retry-engine.js +4 -11
  109. package/dist/ai-service/llm/stream/retry-engine.js.map +1 -1
  110. package/dist/ai-service/skills/system/superblocks-api/references/sql-databases.generated.d.ts +1 -1
  111. package/dist/ai-service/skills/system/superblocks-api/references/sql-databases.generated.d.ts.map +1 -1
  112. package/dist/ai-service/skills/system/superblocks-api/references/sql-databases.generated.js +10 -3
  113. package/dist/ai-service/skills/system/superblocks-api/references/sql-databases.generated.js.map +1 -1
  114. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts +1 -1
  115. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts.map +1 -1
  116. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js +107 -19
  117. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js.map +1 -1
  118. package/dist/ai-service/state-machine/clark-fsm.d.ts +4 -0
  119. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  120. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  121. package/dist/ai-service/state-machine/handlers/agent-planning.js +105 -5
  122. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  123. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts +1 -1
  124. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
  125. package/dist/ai-service/state-machine/handlers/awaiting-user.js +8 -24
  126. package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
  127. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  128. package/dist/ai-service/state-machine/handlers/llm-generating.js +64 -4
  129. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  130. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  131. package/dist/file-sync-vite-plugin.js +9 -0
  132. package/dist/file-sync-vite-plugin.js.map +1 -1
  133. package/dist/git-service/azure-devops-workflow.d.ts +6 -0
  134. package/dist/git-service/azure-devops-workflow.d.ts.map +1 -0
  135. package/dist/git-service/azure-devops-workflow.js +12 -0
  136. package/dist/git-service/azure-devops-workflow.js.map +1 -0
  137. package/dist/parsing/index.d.ts +1 -1
  138. package/dist/parsing/index.d.ts.map +1 -1
  139. package/dist/parsing/index.js +1 -1
  140. package/dist/parsing/index.js.map +1 -1
  141. package/dist/parsing/sdk-registry.d.ts +12 -0
  142. package/dist/parsing/sdk-registry.d.ts.map +1 -1
  143. package/dist/parsing/sdk-registry.js +78 -22
  144. package/dist/parsing/sdk-registry.js.map +1 -1
  145. package/dist/socket-manager.d.ts.map +1 -1
  146. package/dist/socket-manager.js +12 -2
  147. package/dist/socket-manager.js.map +1 -1
  148. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/ai-service/agent/middleware.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAUnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAC/C;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,GAAE,MAAiC,GAC1C,cAAc,CA0BhB;AA0BD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,CAAC,EAAE;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,cAAc,CAsCjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KAEjB,CAAC;CACH;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAiBhE;AAuND;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CA0BpE"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/ai-service/agent/middleware.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAWnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAC/C;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,GAAE,MAAiC,GAC1C,cAAc,CA0BhB;AA4DD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,CAAC,EAAE;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,cAAc,CAsCjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KAEjB,CAAC;CACH;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAiBhE;AA0ND;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CA0BpE"}
@@ -3,6 +3,7 @@ import { scanContentForSecrets, SecretRedactor } from "../security/index.js";
3
3
  import { getApiDocsToolFactory } from "./tools/apis/get-api-docs.js";
4
4
  import { testApiToolFactory } from "./tools/apis/test-api.js";
5
5
  import { buildCaptureScreenshotToolFactory } from "./tools/build-capture-screenshot.js";
6
+ import { buildDebugToolFactory } from "./tools/build-debug.js";
6
7
  import { buildReadFileToolFactory } from "./tools/build-read-file.js";
7
8
  import { executeRequestToIntegrationToolFactory } from "./tools/index.js";
8
9
  import { grepToolFactory } from "./tools2/tools/grep.js";
@@ -62,6 +63,7 @@ const SECRET_SCAN_ENABLED_TOOLS = new Set([
62
63
  ]);
63
64
  const TOOL_LOG_SUMMARY_NAMES = {
64
65
  buildCaptureScreenshot: buildCaptureScreenshotToolFactory.name,
66
+ buildDebug: buildDebugToolFactory.name,
65
67
  buildReadFile: buildReadFileToolFactory.name,
66
68
  executeRequestToIntegration: executeRequestToIntegrationToolFactory.name,
67
69
  getApiDocs: getApiDocsToolFactory.name,
@@ -69,6 +71,34 @@ const TOOL_LOG_SUMMARY_NAMES = {
69
71
  testApi: testApiToolFactory.name,
70
72
  webFetch: webFetchToolFactory.name,
71
73
  };
74
+ function summarizeBuildDebugResult(result) {
75
+ if (!result || typeof result !== "object" || Array.isArray(result)) {
76
+ const outputChars = typeof result === "string"
77
+ ? result.length
78
+ : safeJsonStringify(result).length;
79
+ return {
80
+ fallback: true,
81
+ outputChars,
82
+ type: Array.isArray(result) ? "array" : typeof result,
83
+ };
84
+ }
85
+ const root = result;
86
+ const typeErrors = typeof root.typeErrors === "string" ? root.typeErrors : undefined;
87
+ const buildSystemErrors = Array.isArray(root.buildSystemErrors)
88
+ ? root.buildSystemErrors
89
+ : undefined;
90
+ const runtimeErrors = Array.isArray(root.runtimeErrors)
91
+ ? root.runtimeErrors
92
+ : undefined;
93
+ const message = typeof root.message === "string" ? root.message : undefined;
94
+ return {
95
+ status: root.status,
96
+ typeErrorChars: typeErrors?.length ?? 0,
97
+ buildErrorCount: buildSystemErrors?.length ?? 0,
98
+ runtimeErrorCount: runtimeErrors?.length ?? 0,
99
+ messageChars: message?.length ?? 0,
100
+ };
101
+ }
72
102
  /**
73
103
  * Middleware to scan and redact secrets from tool outputs.
74
104
  *
@@ -166,6 +196,9 @@ function summarizeToolResultForLogs(toolName, result) {
166
196
  if (toolName === TOOL_LOG_SUMMARY_NAMES.buildCaptureScreenshot) {
167
197
  return summarizeScreenshotResult(result);
168
198
  }
199
+ if (toolName === TOOL_LOG_SUMMARY_NAMES.buildDebug) {
200
+ return summarizeBuildDebugResult(result);
201
+ }
169
202
  const sanitizedResult = sanitizeLogObject(result);
170
203
  const serializedSanitizedResult = JSON.stringify(sanitizedResult);
171
204
  const fallbackSummary = (type) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/ai-service/agent/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,sCAAsC,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD,yGAAyG;AACzG,uDAAuD;AACvD,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAC/C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAC3B,WAAmB,wBAAwB;IAE3C,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,OAAO;YACL,GAAG,IAAI;YACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;gBAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAElD,mEAAmE;gBACnE,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;oBACzD,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,0BAA0B;gBAC1B,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBAC/C,IAAI,YAAY,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;oBACnC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;oBAClD,OAAO,oBAAoB,YAAY,CAAC,MAAM,+BAA+B,QAAQ;;EAE7F,SAAS;UACD,CAAC;gBACH,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IACxC,wBAAwB,CAAC,IAAI;IAC7B,kBAAkB,CAAC,IAAI;IACvB,sCAAsC,CAAC,IAAI;CAC5C,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG;IAC7B,sBAAsB,EAAE,iCAAiC,CAAC,IAAI;IAC9D,aAAa,EAAE,wBAAwB,CAAC,IAAI;IAC5C,2BAA2B,EAAE,sCAAsC,CAAC,IAAI;IACxE,UAAU,EAAE,qBAAqB,CAAC,IAAI;IACtC,IAAI,EAAE,eAAe,CAAC,IAAI;IAC1B,OAAO,EAAE,kBAAkB,CAAC,IAAI;IAChC,QAAQ,EAAE,mBAAmB,CAAC,IAAI;CAC1B,CAAC;AAEX;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAGxC;IACC,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAElD,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,mDAAmD;QACnD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QAED,iDAAiD;QACjD,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,GAAG,IAAI;YACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;gBACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;gBAEzD,wCAAwC;gBACxC,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBAE/C,8BAA8B;gBAC9B,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,YAAY,EAAE;oBAC3D,OAAO;iBACR,CAAC,CAAC;gBAEH,8CAA8C;gBAC9C,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;oBAC3B,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,iCAAiC;gBACjC,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACzD,OAAO,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAgBD;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO;YACL,KAAK,EAAE;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC1C,qDAAqD;aACtD;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE;YACL,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC3C;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,yBAAyB,CAAC,MAAe;IAChD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,MAAM;SACtD,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAiC,CAAC;IAC/C,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAE5E,OAAO;QACL,YAAY,EAAE,OAAO,EAAE,MAAM;QAC7B,gBAAgB,EAAE,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ;QACxD,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QACvE,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KACxE,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CACjC,QAAgB,EAChB,MAAe;IAEf,6EAA6E;IAC7E,2EAA2E;IAC3E,wEAAwE;IACxE,IAAI,QAAQ,KAAK,sBAAsB,CAAC,sBAAsB,EAAE,CAAC;QAC/D,OAAO,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,eAAe,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAClE,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC;QACzC,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,yBAAyB,EAAE,MAAM,IAAI,CAAC;QACnD,IAAI;KACL,CAAC,CAAC;IAEH,IAAI,QAAQ,KAAK,sBAAsB,CAAC,aAAa,EAAE,CAAC;QACtD,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;YACxC,OAAO,eAAe,CACpB,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,eAAe,CAClE,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACxE,MAAM,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACtE,OAAO;YACL,WAAW,EAAE,eAAe,CAAC,MAAM;YACnC,UAAU,EAAE,YAAY,CAAC,MAAM;YAC/B,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;SAC1E,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,KAAK,sBAAsB,CAAC,2BAA2B,EAAE,CAAC;QACpE,IACE,CAAC,eAAe;YAChB,OAAO,eAAe,KAAK,QAAQ;YACnC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAC9B,CAAC;YACD,OAAO,eAAe,CACpB,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,eAAe,CAClE,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,eAA0C,CAAC;QACxD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;QAChC,MAAM,YAAY,GAChB,WAAW;YACX,OAAO,WAAW,KAAK,QAAQ;YAC/B,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;YACzB,CAAC,CAAE,WAAuC;YAC1C,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,OAAO,GACX,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;YACjD,CAAC,CAAC,YAAY,CAAC,OAAO;YACtB,CAAC,CAAC,SAAS,CAAC;QAEhB,OAAO;YACL,SAAS,EAAE,WAAW,KAAK,SAAS;YACpC,SAAS,EAAE,IAAI,CAAC,SAAS,KAAK,IAAI;YAClC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;YACrD,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;gBACrC,CAAC,CAAC,WAAW,CAAC,MAAM;gBACpB,CAAC,CAAC,OAAO,EAAE,MAAM;SACpB,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,KAAK,sBAAsB,CAAC,IAAI,EAAE,CAAC;QAC7C,IACE,CAAC,eAAe;YAChB,OAAO,eAAe,KAAK,QAAQ;YACnC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAC9B,CAAC;YACD,OAAO,eAAe,CACpB,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,eAAe,CAClE,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,eAA0C,CAAC;QACxD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;SACtC,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,KAAK,sBAAsB,CAAC,QAAQ,EAAE,CAAC;QACjD,IACE,CAAC,eAAe;YAChB,OAAO,eAAe,KAAK,QAAQ;YACnC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAC9B,CAAC;YACD,OAAO,eAAe,CACpB,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,eAAe,CAClE,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,eAA0C,CAAC;QACxD,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5E,OAAO;YACL,YAAY,EAAE,OAAO,EAAE,MAAM;YAC7B,UAAU,EAAE,IAAI,CAAC,IAAI,KAAK,UAAU;YACpC,WAAW,EACT,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;gBAC9D,CAAC,CAAC,IAAI,CAAC,WAAW;gBAClB,CAAC,CAAC,SAAS;SAChB,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,KAAK,sBAAsB,CAAC,UAAU,EAAE,CAAC;QACnD,IACE,CAAC,eAAe;YAChB,OAAO,eAAe,KAAK,QAAQ;YACnC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAC9B,CAAC;YACD,OAAO,eAAe,CACpB,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,eAAe,CAClE,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,eAA0C,CAAC;QACxD,MAAM,aAAa,GACjB,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC3D,CAAC,CAAC,IAAI,CAAC,gBAAgB;YACvB,CAAC,CAAC,SAAS,CAAC;QACd,OAAO;YACL,kBAAkB,EAAE,aAAa,EAAE,MAAM;YACzC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,aAAa,EAAE,gBAAgB,EAAE,MAAM;YACvC,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,KAAK,sBAAsB,CAAC,OAAO,EAAE,CAAC;QAChD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IACE,CAAC,eAAe;QAChB,OAAO,eAAe,KAAK,QAAQ;QACnC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAC9B,CAAC;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,MAAM,IAAI,GAAG,eAA0C,CAAC;IACxD,MAAM,YAAY,GAChB,IAAI,CAAC,MAAM;QACX,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QAC/B,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QACzB,CAAC,CAAE,IAAI,CAAC,MAAkC;QAC1C,CAAC,CAAC,SAAS,CAAC;IAEhB,oFAAoF;IACpF,MAAM,QAAQ,GAAG,YAAY,IAAI,CAAC,CAAC,aAAa,IAAI,YAAY,CAAC,CAAC;IAElE,MAAM,WAAW,GACf,CAAC,QAAQ;QACT,YAAY,EAAE,WAAW;QACzB,OAAO,YAAY,CAAC,WAAW,KAAK,QAAQ;QAC5C,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC;QACtC,CAAC,CAAE,YAAY,CAAC,WAAuC;QACvD,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,YAAY;YAClB,CAAC,CAAC;gBACE,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC;oBAC5C,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM;oBAC5B,CAAC,CAAC,YAAY,CAAC,KAAK,KAAK,SAAS;wBAChC,CAAC,CAAC,CAAC;wBACH,CAAC,CAAC,SAAS;gBACf,aAAa,EAAE,YAAY,CAAC,aAAa;gBACzC,UAAU,EACR,YAAY,CAAC,OAAO,KAAK,SAAS,IAAI,YAAY,CAAC,OAAO,KAAK,IAAI;gBACrE,cAAc,EAAE,OAAO,CAAC,WAAW,CAAC;gBACpC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS;gBACjE,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAClE,OAAO,EAAE,YAAY,CAAC,OAAO;aAC9B;YACH,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,OAAO;YACL,GAAG,IAAI;YACP,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc;gBACjC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,KAAK,EAAE,KAAK,CAAC,CAAC;gBAE5C,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;oBAC3D,MAAM,CAAC,IAAI,CACT,SAAS,IAAI,CAAC,IAAI,KAAK,EACvB,0BAA0B,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAC9C,CAAC;oBACF,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,oEAAoE;oBACpE,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;oBAC3C,MAAM,OAAO,GAAG,SAAS,IAAI,CAAC,IAAI,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBACnE,MAAM,QAAQ,GACZ,KAAK,YAAY,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;oBACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;oBACrC,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/ai-service/agent/middleware.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  * YAML-based API prompt section (legacy experience).
9
9
  *
10
10
  * Uses:
11
- * - useApi from @superblocksteam/library
11
+ * - useApi / useApiData / executeApi from @superblocksteam/library
12
12
  * - APIs in apis/ApiName/api.yaml
13
13
  * - getApiDocs tool is mandatory before API work
14
14
  */
@@ -17,8 +17,8 @@ export declare function buildYamlApiSection(): string;
17
17
  * SDK-based API prompt section (new experience).
18
18
  *
19
19
  * Uses:
20
- * - useApi from @/hooks/useApi.js
21
- * - APIs in server/apis/ApiName/api.ts
20
+ * - useApi from @/hooks/useApi.js, useApiData from @/hooks/useApiData.js, executeApi from @/lib/executeApi.js
21
+ * - API modules under server/apis/ (group by domain or feature, e.g. server/apis/users/get-users.ts; paths are flexible)
22
22
  * - SDK READMEs for documentation
23
23
  * - Zod schemas and integration IDs
24
24
  */
@@ -1 +1 @@
1
- {"version":3,"file":"api-prompts.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/prompts/api-prompts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAiJ5C;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAgY3C;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,CAsBhE"}
1
+ {"version":3,"file":"api-prompts.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/prompts/api-prompts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAkO5C;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAse3C;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,CAiChE"}
@@ -8,7 +8,7 @@
8
8
  * YAML-based API prompt section (legacy experience).
9
9
  *
10
10
  * Uses:
11
- * - useApi from @superblocksteam/library
11
+ * - useApi / useApiData / executeApi from @superblocksteam/library
12
12
  * - APIs in apis/ApiName/api.yaml
13
13
  * - getApiDocs tool is mandatory before API work
14
14
  */
@@ -66,36 +66,41 @@ If the user requests checking user data, like email, ID, this information cannot
66
66
  You must NEVER attempt to rely on frontend data for security-critical operations, rely on the injected \`Global\` object in APIs instead.
67
67
  </permissions>
68
68
 
69
- APIs MUST be loaded using \`useApi\` from \`@superblocksteam/library\` with the exact API name based on its folder. The hook returns \`{ run, cancel, loading, data, error }\`:
70
- - \`run(inputs)\` — execute the API imperatively (e.g. on button click)
71
- - \`cancel()\` cancel in-flight requests
72
- - \`loading\`boolean, true while the most recent call is in flight
73
- - \`data\`last successful response (persists across re-runs, stale-while-revalidate)
74
- - \`error\`the error from the most recent failed call, or \`undefined\` if the last call succeeded
69
+ APIs MUST be loaded using hooks and utilities from \`@superblocksteam/library\` with the exact API name based on its folder name under apis/. Having apis/<ApiName>/api.yaml, the first argument should be \`<ApiName>\`.
70
+
71
+ **Three primitives for three use cases:**
72
+ - **\`useApiData\`**React hook for data loading (reads). Auto-fetches on mount and when inputs change. Has shared cache, stale-while-revalidate, retry, and auto-refetch.
73
+ - **\`useApi\`**React hook for mutations/actions (writes). Call \`run()\` manually on button click, form submit, etc. No auto-fetch, no cache.
74
+ - **\`executeApi\`**Plain function for calling APIs outside React (utility functions, event handlers, initialization logic). Returns a Promise.
75
75
 
76
- **Two modes:**
77
- - **Imperative** — \`const { run, loading, data } = useApi("CreateOrder")\` — call \`run()\` manually
78
- - **Declarative** — \`const { loading, data } = useApi("GetUsers", { email, name })\` — auto-fetches on mount and when inputs change
76
+ **CRITICAL: Use \`useApiData\` for data loading, \`useApi\` for mutations, and \`executeApi\` outside React components. Do NOT use \`useApi\` with a second argument for data loading — that pattern is deprecated.**
79
77
 
80
- **CRITICAL: Do NOT create custom wrapper hooks around useApi. Do NOT manage loading or data state with separate useState — useApi handles this for you. Do NOT use useRef guards for HMR — declarative mode has built-in double-fetch prevention.**
78
+ **CRITICAL: Do NOT create custom wrapper hooks around these hooks. Do NOT manage loading or data state with separate useState — the hooks handle this for you.**
81
79
 
82
80
  **CRITICAL: When a user says that an API is not working or has an error, ALWAYS check the API call sites in the application and ensure the inputs are correct! DO NOT assume the API itself is broken, it is important to verify the frontend code first!**
83
81
 
84
82
  \`\`\`typescript
85
- // Declarative mode — auto-fetches when inputs change (preferred for data loading)
86
- import { useApi } from "@superblocksteam/library";
83
+ // Data loading — auto-fetches when inputs change (preferred for reads)
84
+ import { useApiData } from "@superblocksteam/library";
87
85
 
88
- const { loading, data } = useApi("GetUsers", { email: email ?? null, name: name ?? null });
89
- // \`data\` updates automatically, \`loading\` tracks in-flight state
86
+ const { data, loading, isError, error, fetching } = useApiData("GetUsers", { email: email ?? null, name: name ?? null });
87
+ // \`data\` updates automatically, \`loading\` is true on first fetch with no cached data
88
+ // \`fetching\` is true during any fetch (including background refetch)
89
+ // \`error\` is populated if the fetch fails — no try/catch needed
90
90
  // Re-fetches when email or name changes — no useEffect needed
91
+ // IMPORTANT: Always use \`fetching\` to show a loading indicator during refetches
92
+
93
+ if (loading) return <Skeleton />;
94
+ if (isError) return <ErrorBanner error={error} />;
95
+ return <UserList users={data.users} />;
91
96
  \`\`\`
92
97
 
93
98
  \`\`\`typescript
94
- // Imperative mode — for event-driven actions (button clicks, form submissions)
99
+ // Mutations — for event-driven actions (button clicks, form submissions)
95
100
  import { useApi } from "@superblocksteam/library";
96
101
  import { toast } from "sonner";
97
102
 
98
- const { run: createOrder, loading } = useApi("CreateOrder");
103
+ const { run: createOrder, loading, error } = useApi("CreateOrder");
99
104
 
100
105
  const handleSubmit = useCallback(async () => {
101
106
  try {
@@ -110,16 +115,71 @@ const handleSubmit = useCallback(async () => {
110
115
  }, [item, qty, createOrder]);
111
116
  \`\`\`
112
117
 
118
+ \`\`\`typescript
119
+ // Refetch after a mutation — combine useApiData + useApi
120
+ import { useApiData, useApi } from "@superblocksteam/library";
121
+
122
+ const { data: todos, refetch } = useApiData("GetTodos", {});
123
+ const { run: createTodo } = useApi("CreateTodo");
124
+
125
+ const handleCreate = async (title: string) => {
126
+ await createTodo({ title });
127
+ await refetch(); // Refresh the list after mutation
128
+ };
129
+ \`\`\`
130
+
131
+ \`\`\`typescript
132
+ // Outside React — utility functions, event handlers, initialization logic
133
+ import { executeApi } from "@superblocksteam/library";
134
+
135
+ // Simple call — returns a Promise
136
+ const users = await executeApi("GetUsers", { email: "a@b.com" });
137
+
138
+ // With cancellation
139
+ const controller = new AbortController();
140
+ const data = await executeApi("GetUser", { id: userId }, { signal: controller.signal });
141
+
142
+ // In a utility function (no React hooks needed)
143
+ async function syncUserData(userId: string) {
144
+ const user = await executeApi("GetUser", { id: userId });
145
+ const orders = await executeApi("GetOrders", { userId: user.id });
146
+ return { user, orders };
147
+ }
148
+ \`\`\`
149
+
150
+ **\`useApiData\` returns \`{ data, error, status, fetchStatus, loading, fetching, isError, isSuccess, isStale, refetch, cancel }\`:**
151
+ - \`data\` — cached/fetched response (persists across background refetches)
152
+ - \`error\` — error from the last failed fetch (cleared on success)
153
+ - \`loading\` — true when fetching for the first time with no cached data
154
+ - \`fetching\` — true when any fetch is in progress (including background refetch)
155
+ - \`isError\` / \`isSuccess\` — boolean status helpers
156
+ - \`refetch()\` — manually trigger a fresh fetch
157
+ - \`cancel()\` — abort the current in-flight fetch
158
+
159
+ **\`useApi\` returns \`{ run, cancel, loading, data, error, status, variables, reset }\`:**
160
+ - \`run(inputs)\` — execute the API imperatively
161
+ - \`cancel()\` — cancel in-flight requests
162
+ - \`loading\` — boolean, true while the most recent call is in flight
163
+ - \`data\` — last successful response (persists across re-runs)
164
+ - \`error\` — error from the last failed run (cleared on next success)
165
+ - \`status\` — \`"idle" | "pending" | "success" | "error"\`
166
+ - \`reset()\` — reset state back to idle
167
+
168
+ **\`executeApi(apiName, inputs?, options?)\` returns \`Promise<TOutput>\`:**
169
+ - Plain async function — no React hooks, no caching, no reactive state
170
+ - Use for utility functions, event handlers, initialization logic, and non-component code
171
+ - Supports \`{ signal: AbortSignal }\` option for cancellation
172
+ - Errors are thrown as exceptions — use try/catch or .catch()
173
+
113
174
  ### Critical Rules
114
175
 
115
176
  1. **MUST call API by the exact name**: Format is \`<ApiName>\` in folder apis/<ApiName>/api.yaml
116
- 2. **Always pass parameters to the function**: \`await run({ param1: value1, param2: value2 })\`
117
- 3. **Use \`loading\` and \`data\` from useApi**: Do NOT create separate useState for loading or response data
118
- 4. **Prefer declarative mode for data fetching**: Pass inputs directly: \`useApi("GetUsers", { email })\`. Only use imperative mode for event-driven actions.
119
- 5. **Do NOT create wrapper hooks**: Use \`useApi\` directly in components no \`useGetUsers\` pattern needed
120
- 6. **ALWAYS check API input/output interfaces**: NEVER guess the response structure - use the actual interface defined by the API
121
- 7. **ALWAYS include all parameters in the function call**: NEVER omit parameters the API expects, even if they are optional, they should be included and passed as null
122
- 8. **ALWAYS include error handling**: In imperative mode, wrap \`run()\` in try/catch. In declarative mode, check the \`error\` field for failure details.
177
+ 2. **Always pass parameters to the function**: \`await run({ param1: value1, param2: value2 })\` for useApi, or as the second argument for useApiData / executeApi
178
+ 3. **Use \`useApiData\` for data loading, \`useApi\` for mutations, \`executeApi\` outside React**: Do NOT create separate useState for loading, response data, or error state
179
+ 4. **Do NOT create wrapper hooks**: Use the hooks directly in components no \`useGetUsers\` pattern needed
180
+ 5. **ALWAYS check API input/output interfaces**: NEVER guess the response structure - use the actual interface defined by the API
181
+ 6. **ALWAYS include all parameters in the function call**: NEVER omit parameters the API expects, even if they are optional, they should be included and passed as null
182
+ 7. **ALWAYS include error handling**: In useApi, wrap \`run()\` in try/catch. In useApiData, check the \`error\` or \`isError\` fields. For executeApi, use try/catch or .catch().
123
183
 
124
184
  ### File Handling
125
185
 
@@ -145,13 +205,34 @@ Efficiency is key when building applications for production. You should always b
145
205
  when it comes to loading data from APIs.
146
206
 
147
207
  Here are some examples (not exhaustive) that you should consider when building applications:
148
- 1. **Default to Smart Loading**: Always check for existing data before showing loading states
208
+ 1. **Always show loading indicators on refetch**: When inputs change (e.g. filters, search), show a visual loading indicator while new data loads. Use \`fetching\` from useApiData.
149
209
  2. **Loading State Hierarchy**:
150
- - Empty state → Full loading
151
- - Has data → Keep showing data during refetch
152
- - Error state → Show error with retry option, optionally keep stale data in background in case of retry
210
+ - No data yet (\`loading\`) → Full skeleton placeholder
211
+ - Has data, refetching (\`fetching\` && !\`loading\`) → Keep showing current data with a loading overlay (e.g. reduced opacity, inline spinner)
212
+ - Error state (\`isError\`) → Show error with retry option, optionally keep stale data visible
153
213
  3. **Debounce Rapid Requests**: Prevent multiple API calls in short succession
154
- 4. **Use declarative useApi for automatic refetching**: Pass inputs directly to useApi for data that should refresh when dependencies change.
214
+ 4. **Use useApiData for automatic refetching**: \`useApiData\` auto-refetches when inputs change and supports \`staleTime\`, \`refetchOnWindowFocus\`, and \`refetchOnReconnect\` options.
215
+
216
+ \`\`\`tsx
217
+ // ✅ CORRECT — loading indicator when filters change
218
+ const { data, loading, fetching, isError, error } = useApiData("GetOrders", { status: statusFilter, search });
219
+
220
+ if (loading) return <Skeleton />; // First load: full skeleton
221
+ if (isError) return <ErrorBanner error={error} />;
222
+ return (
223
+ <div className={fetching ? "opacity-50 pointer-events-none" : ""}>
224
+ <OrderTable orders={data.orders} /> {/* Keep showing data during refetch */}
225
+ </div>
226
+ );
227
+ \`\`\`
228
+
229
+ \`\`\`tsx
230
+ // ❌ WRONG — no loading indicator when filters change. User sees stale data with no feedback.
231
+ const { data, loading } = useApiData("GetOrders", { status: statusFilter, search });
232
+
233
+ if (loading) return <Skeleton />;
234
+ return <OrderTable orders={data.orders} />;
235
+ \`\`\`
155
236
 
156
237
  ### Interpreting testApi Results
157
238
 
@@ -162,8 +243,8 @@ Here are some examples (not exhaustive) that you should consider when building a
162
243
  * SDK-based API prompt section (new experience).
163
244
  *
164
245
  * Uses:
165
- * - useApi from @/hooks/useApi.js
166
- * - APIs in server/apis/ApiName/api.ts
246
+ * - useApi from @/hooks/useApi.js, useApiData from @/hooks/useApiData.js, executeApi from @/lib/executeApi.js
247
+ * - API modules under server/apis/ (group by domain or feature, e.g. server/apis/users/get-users.ts; paths are flexible)
167
248
  * - SDK READMEs for documentation
168
249
  * - Zod schemas and integration IDs
169
250
  */
@@ -181,11 +262,13 @@ Before writing ANY API, you MUST:
181
262
  - This is REQUIRED before creating or modifying any API
182
263
 
183
264
  2. **Read the integration-specific README** for EACH integration you plan to use:
184
- - Path: \`node_modules/@superblocksteam/sdk-api/src/integrations/<integration>/README.md\`
265
+ - Path: \`node_modules/@superblocksteam/sdk-api/src/integrations/<pluginId>/README.md\`
266
+ - The \`<pluginId>\` is the integration's plugin type (e.g. \`postgres\`, \`redshift\`, \`openai_v2\`) — the same value returned in the \`plugin.id\` field from \`searchIntegrations\`
185
267
  - Example: For Postgres, read \`node_modules/@superblocksteam/sdk-api/src/integrations/postgres/README.md\`
186
268
  - Example: For OpenAI, read \`node_modules/@superblocksteam/sdk-api/src/integrations/openai_v2/README.md\`
187
269
  - These contain integration-specific methods, parameters, and usage examples
188
270
  - Do NOT guess or hallucinate integration methods - the README is the source of truth
271
+ - **Important:** \`node_modules\` is excluded from file listing and glob results. Use \`grep\` to find files in \`node_modules\` (e.g. \`grep("redshift", path="node_modules/@superblocksteam/sdk-api/src", files_with_matches)\`), then \`build_readFile\` to read them
189
272
 
190
273
  **Trace Metadata:**
191
274
  All integration client methods accept an optional \`metadata\` parameter as the last argument: \`{ label?: string, description?: string }\`. When \`includeDiagnostics\` is enabled, this metadata appears in the trace view. Always include a \`label\` on each integration call to make traces readable. Example: \`ctx.integrations.db.query(sql, Schema, params, { label: "Fetch active users" })\`.
@@ -193,7 +276,7 @@ All integration client methods accept an optional \`metadata\` parameter as the
193
276
  **CRITICAL - Method Validation:**
194
277
  Before calling ANY integration client method, you MUST:
195
278
  1. Read the integration's README to understand available methods and their signatures
196
- 2. Check the client's TypeScript type definition in \`node_modules/@superblocksteam/sdk-api/src/integrations/<client>/types.ts\` if needed
279
+ 2. Check the client's TypeScript type definition in \`node_modules/@superblocksteam/sdk-api/src/integrations/<pluginId>/types.ts\` if needed (use \`grep\` to find files, then \`build_readFile\` to read — glob/listing exclude \`node_modules\`)
197
280
  3. Verify the method exists and review its exact signature
198
281
  4. Do NOT hallucinate methods based on the real service's API (e.g., \`openai.createChatCompletion()\` doesn't exist - check the README for actual methods)
199
282
  </sdk>
@@ -277,12 +360,16 @@ If the user requests checking user data, like email, ID, this information cannot
277
360
  You must NEVER attempt to rely on frontend data for security-critical operations, rely on the injected \`Global\` object in APIs instead.
278
361
  </permissions>
279
362
 
363
+ **First argument to \`useApi\` / \`useApiData\` / \`executeApi\`:** each key on the default export in \`server/apis/index.ts\` — not the \`name\` field inside \`api({ … })\` when those differ. Use \`index.ts\` and existing call sites;
364
+
280
365
  **CRITICAL: When debugging data issues:**
281
366
  - If the UI is showing no data, ALWAYS test the relevant APIs first to verify they are actually returning data
282
367
  - DO NOT assume the API itself is correct or broken without testing it - verify both the API response AND the frontend code
283
368
 
369
+ **File layout:** Group APIs under \`server/apis/\` by domain or feature (e.g. \`users/\`, \`orders/\`, \`billing/\`). Use descriptive file names (\`get-users.ts\`, \`create-order.ts\`) instead of repeating \`api.ts\` inside a folder named after the registry key. The path is independent of the string passed to \`useApi("...")\`—only \`server/apis/index.ts\` maps names to files.
370
+
284
371
  \`\`\`typescript
285
- // API definition in server/apis/GetUsers/api.ts
372
+ // API definition in server/apis/users/get-users.ts
286
373
  import { api, z, postgres } from "@superblocksteam/sdk-api";
287
374
 
288
375
  // Integration IDs from the integrations panel - store in constants with descriptive names
@@ -344,21 +431,27 @@ WHERE plan = ANY($1::text[]) -- ❌ WRONG: "operator does not exis
344
431
  Rule: Before writing \`::type\` casts, check the actual column type via \`grepMetadata\`. Use \`::text\` only for built-in text columns.
345
432
 
346
433
  \`\`\`typescript
347
- // Calling the API from frontend use useApi directly in components
348
- import { useApi } from "@/hooks/useApi.js";
434
+ // Data loading auto-fetches when inputs change (preferred for reads)
435
+ import { useApiData } from "@/hooks/useApiData.js";
349
436
 
350
- // Declarative mode auto-fetches when inputs change (preferred for data loading)
351
- const { loading, data } = useApi("GetUsers", { email, name });
352
- // \`data\` updates automatically with the response, \`loading\` tracks in-flight state
437
+ const { data, loading, isError, error, fetching } = useApiData("GetUsers", { email, name });
438
+ // \`data\` updates automatically, \`loading\` is true on first fetch with no cached data
439
+ // \`fetching\` is true during any fetch (including background refetch)
440
+ // \`error\` is populated if the fetch fails — no try/catch needed
353
441
  // Re-fetches when email or name changes — no useEffect needed
442
+ // IMPORTANT: Always use \`fetching\` to show a loading indicator during refetches
443
+
444
+ if (loading) return <Skeleton />;
445
+ if (isError) return <ErrorBanner error={error} />;
446
+ return <UserList users={data.users} />;
354
447
  \`\`\`
355
448
 
356
449
  \`\`\`typescript
357
- // Imperative mode — for event-driven actions (button clicks, form submissions)
450
+ // Mutations — for event-driven actions (button clicks, form submissions)
358
451
  import { useApi } from "@/hooks/useApi.js";
359
452
  import { toast } from "sonner";
360
453
 
361
- const { run: createOrder, loading } = useApi("CreateOrder");
454
+ const { run: createOrder, loading, error } = useApi("CreateOrder");
362
455
 
363
456
  const handleSubmit = useCallback(async () => {
364
457
  try {
@@ -373,24 +466,93 @@ const handleSubmit = useCallback(async () => {
373
466
  }, [item, qty, createOrder]);
374
467
  \`\`\`
375
468
 
376
- **useApi returns \`{ run, cancel, loading, data, error }\`:**
469
+ \`\`\`typescript
470
+ // Refetch after a mutation — combine useApiData + useApi
471
+ import { useApiData } from "@/hooks/useApiData.js";
472
+ import { useApi } from "@/hooks/useApi.js";
473
+
474
+ const { data: todos, refetch } = useApiData("GetTodos", {});
475
+ const { run: createTodo } = useApi("CreateTodo");
476
+
477
+ const handleCreate = async (title: string) => {
478
+ await createTodo({ title });
479
+ await refetch(); // Refresh the list after mutation
480
+ };
481
+ \`\`\`
482
+
483
+ \`\`\`typescript
484
+ // Conditional fetching and stale-while-revalidate
485
+ import { useApiData } from "@/hooks/useApiData.js";
486
+
487
+ // Only fetch when userId is available
488
+ const { data } = useApiData("GetUser", { id: userId }, { enabled: !!userId });
489
+
490
+ // Show cached data while refreshing in background
491
+ const { data, fetching } = useApiData("GetMetrics", {}, { staleTime: 30_000 });
492
+ \`\`\`
493
+
494
+ \`\`\`typescript
495
+ // Outside React — utility functions, event handlers, initialization logic
496
+ import { executeApi } from "@/lib/executeApi.js";
497
+
498
+ // Simple call — returns a Promise
499
+ const users = await executeApi("GetUsers", { email: "a@b.com" });
500
+
501
+ // With cancellation
502
+ const controller = new AbortController();
503
+ const data = await executeApi("GetUser", { id: userId }, { signal: controller.signal });
504
+
505
+ // In a utility function (no React hooks needed)
506
+ async function syncUserData(userId: string) {
507
+ const user = await executeApi("GetUser", { id: userId });
508
+ const orders = await executeApi("GetOrders", { userId: user.id });
509
+ return { user, orders };
510
+ }
511
+ \`\`\`
512
+
513
+ **Three primitives for three use cases:**
514
+ - **\`useApiData\`** — React hook for data loading (reads). Auto-fetches on mount and when inputs change.
515
+ - **\`useApi\`** — React hook for mutations/actions (writes). Call \`run()\` manually.
516
+ - **\`executeApi\`** — Plain function for calling APIs outside React (utility functions, event handlers, initialization logic).
517
+
518
+ **\`useApiData\` returns \`{ data, error, status, fetchStatus, loading, fetching, isError, isSuccess, isStale, refetch, cancel }\`:**
519
+ - \`data\` — cached/fetched response (persists across background refetches)
520
+ - \`error\` — error from the last failed fetch (cleared on success)
521
+ - \`loading\` — true when fetching for the first time with no cached data
522
+ - \`fetching\` — true when any fetch is in progress (including background refetch)
523
+ - \`isError\` / \`isSuccess\` — boolean status helpers
524
+ - \`refetch()\` — manually trigger a fresh fetch
525
+ - \`cancel()\` — abort the current in-flight fetch
526
+ - Options: \`enabled\`, \`staleTime\`, \`gcTime\`, \`retry\`, \`refetchOnWindowFocus\`, \`refetchOnReconnect\`, \`refetchInterval\`, \`placeholderData\`
527
+
528
+ **\`useApi\` returns \`{ run, cancel, loading, data, error, status, variables, reset }\`:**
377
529
  - \`run(inputs)\` — execute the API imperatively
378
530
  - \`cancel()\` — cancel in-flight requests
379
531
  - \`loading\` — boolean, true while the most recent call is in flight
380
- - \`data\` — last successful response (persists across re-runs, stale-while-revalidate)
381
- - \`error\` — the error from the most recent failed call, or \`undefined\` if the last call succeeded
532
+ - \`data\` — last successful response (persists across re-runs)
533
+ - \`error\` — error from the last failed run (cleared on next success)
534
+ - \`status\` — \`"idle" | "pending" | "success" | "error"\`
535
+ - \`reset()\` — reset state back to idle
536
+
537
+ **\`executeApi(apiName, inputs?, options?)\` returns \`Promise<TOutput>\`:**
538
+ - Plain async function — no React hooks, no caching, no reactive state
539
+ - Use for utility functions, event handlers, initialization logic, and non-component code
540
+ - Supports \`{ signal: AbortSignal }\` option for cancellation
541
+ - Errors are thrown as exceptions — use try/catch or .catch()
382
542
 
383
- **CRITICAL: Do NOT create custom wrapper hooks around useApi. Do NOT manage loading or data state with separate useState useApi handles this for you. Do NOT use useRef guards for HMR declarative mode has built-in double-fetch prevention.**
543
+ **CRITICAL: Use \`useApiData\` for data loading, \`useApi\` for mutations, and \`executeApi\` outside React components. Do NOT use \`useApi\` with a second argument for data loadingthat pattern is deprecated.**
544
+
545
+ **CRITICAL: Do NOT create custom wrapper hooks around these hooks. Do NOT manage loading or data state with separate useState — the hooks handle this for you.**
384
546
 
385
547
  ### Critical Rules
386
548
 
387
- 1. **Import useApi from hooks**: Always import \`useApi\` from \`@/hooks/useApi.js\`, NOT from \`@superblocksteam/library\`. This provides automatic type inference from the API registry.
388
- 2. **Use \`loading\` and \`data\` from useApi**: Do NOT create separate useState for loading or response data
389
- 3. **Prefer declarative mode for data fetching**: Pass inputs directly: \`useApi("GetUsers", { email })\`. Only use imperative mode for event-driven actions.
390
- 4. **Do NOT create wrapper hooks**: Use \`useApi\` directly in components — no \`useGetUsers\` pattern needed
549
+ 1. **Import from the app wrappers**: \`useApi\` from \`@/hooks/useApi.js\`, \`useApiData\` from \`@/hooks/useApiData.js\`, \`executeApi\` from \`@/lib/executeApi.js\` — not from \`@superblocksteam/library\` (those wrappers wire \`createTypedApi\` / \`createTypedExecuteApi\` to your registry).
550
+ 2. **MUST use the exact property name from \`server/apis/index.ts\`** as the first hook argument.
551
+ 3. **Use \`useApiData\` for data loading, \`useApi\` for mutations, \`executeApi\` outside React**: Do NOT create separate useState for loading, response data, or error state
552
+ 4. **Do NOT create wrapper hooks**: Use the hooks directly in components — no \`useGetUsers\` pattern needed
391
553
  5. **ALWAYS check API input/output interfaces**: NEVER guess the response structure - use the actual interface defined by the API
392
554
  6. **ALWAYS include all parameters in the function call**: NEVER omit parameters the API expects, even if they are optional, they should be included and passed as null
393
- 7. **ALWAYS include error handling**: In imperative mode, wrap \`run()\` in try/catch. In declarative mode, check the \`error\` field for failure details.
555
+ 7. **ALWAYS include error handling**: In useApi, wrap \`run()\` in try/catch. In useApiData, check the \`error\` or \`isError\` fields. For executeApi, use try/catch or .catch().
394
556
 
395
557
  ### File Handling
396
558
 
@@ -539,13 +701,34 @@ Efficiency is key when building applications for production. You should always b
539
701
  when it comes to loading data from APIs.
540
702
 
541
703
  Here are some examples (not exhaustive) that you should consider when building applications:
542
- 1. **Default to Smart Loading**: Always check for existing data before showing loading states
704
+ 1. **Always show loading indicators on refetch**: When inputs change (e.g. filters, search), show a visual loading indicator while new data loads. Use \`fetching\` from useApiData.
543
705
  2. **Loading State Hierarchy**:
544
- - Empty state → Full loading
545
- - Has data → Keep showing data during refetch
546
- - Error state → Show error with retry option, optionally keep stale data in background in case of retry
706
+ - No data yet (\`loading\`) → Full skeleton placeholder
707
+ - Has data, refetching (\`fetching\` && !\`loading\`) → Keep showing current data with a loading overlay (e.g. reduced opacity, inline spinner)
708
+ - Error state (\`isError\`) → Show error with retry option, optionally keep stale data visible
547
709
  3. **Debounce Rapid Requests**: Prevent multiple API calls in short succession
548
- 4. **Use declarative useApi for automatic refetching**: Pass inputs directly to useApi for data that should refresh when dependencies change.
710
+ 4. **Use useApiData for automatic refetching**: \`useApiData\` auto-refetches when inputs change and supports \`staleTime\`, \`refetchOnWindowFocus\`, and \`refetchOnReconnect\` options.
711
+
712
+ \`\`\`tsx
713
+ // ✅ CORRECT — loading indicator when filters change
714
+ const { data, loading, fetching, isError, error } = useApiData("GetOrders", { status: statusFilter, search });
715
+
716
+ if (loading) return <Skeleton />; // First load: full skeleton
717
+ if (isError) return <ErrorBanner error={error} />;
718
+ return (
719
+ <div className={fetching ? "opacity-50 pointer-events-none" : ""}>
720
+ <OrderTable orders={data.orders} /> {/* Keep showing data during refetch */}
721
+ </div>
722
+ );
723
+ \`\`\`
724
+
725
+ \`\`\`tsx
726
+ // ❌ WRONG — no loading indicator when filters change. User sees stale data with no feedback.
727
+ const { data, loading } = useApiData("GetOrders", { status: statusFilter, search });
728
+
729
+ if (loading) return <Skeleton />;
730
+ return <OrderTable orders={data.orders} />;
731
+ \`\`\`
549
732
 
550
733
  ### Interpreting testApi Results
551
734
 
@@ -560,14 +743,25 @@ Here are some examples (not exhaustive) that you should consider when building a
560
743
  */
561
744
  export function buildApiToolGuidance(sdkEnabled) {
562
745
  if (sdkEnabled) {
563
- return `**Deleting APIs:** When deleting an API, only delete the \`server/apis/ApiName/api.ts\` file. The delete tool will automatically remove the entire API directory (\`server/apis/ApiName/\`), all generated files, and any scratch files. Do NOT make multiple delete calls for the same API.
746
+ return `**Deleting APIs:** Remove the API from \`server/apis/index.ts\`, then delete its implementation. If the API is part of a larger feature, leave the rest of the code alone.
747
+
748
+ **Creating APIs:** Register every API in \`server/apis/index.ts\` so \`useApi\` gets types and the runtime can resolve entry points. Use \`.js\` extensions in import specifiers (ESM). Prefer domain folders and descriptive file names, not \`server/apis/SomeApi/api.ts\` by default.
749
+
750
+ \`\`\`typescript
751
+ // server/apis/index.ts — one module per API (default export)
752
+ import CreateOrder from './orders/create-order.js';
753
+ import GetUsers from './users/get-users.js';
754
+ const apis = { CreateOrder, GetUsers } as const;
755
+ export default apis;
756
+ export type ApiRegistry = typeof apis;
757
+ \`\`\`
758
+
759
+ **Multiple APIs in one module** — use named imports when several \`api({...})\` definitions share a file (e.g. related mutations):
564
760
 
565
- **Creating APIs:** When creating a new API, also add it to the registry at \`server/apis/index.ts\`. This enables type inference for \`useApi\`:
566
761
  \`\`\`typescript
567
762
  // server/apis/index.ts
568
- // IMPORTANT: Use .js extension for imports (required for ESM compatibility)
569
- import NewApi from './NewApi/api.js';
570
- const apis = { ..., NewApi } as const;
763
+ import { ArchiveUser, UpdateProfile } from './users/account-mutations.js';
764
+ const apis = { ..., ArchiveUser, UpdateProfile } as const;
571
765
  export default apis;
572
766
  export type ApiRegistry = typeof apis;
573
767
  \`\`\`
@@ -1 +1 @@
1
- {"version":3,"file":"api-prompts.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/prompts/api-prompts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA+ID,CAAC;AACT,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA8XD,CAAC;AACT,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAmB;IACtD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO;;;;;;;;;;;;;;;;uCAgB4B,CAAC;IACtC,CAAC;IAED,OAAO,oRAAoR,CAAC;AAC9R,CAAC"}
1
+ {"version":3,"file":"api-prompts.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/prompts/api-prompts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAgOD,CAAC;AACT,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAoeD,CAAC;AACT,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAmB;IACtD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;uCA2B4B,CAAC;IACtC,CAAC;IAED,OAAO,oRAAoR,CAAC;AAC9R,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"build-base-system-prompt.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/prompts/build-base-system-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAKpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAStD,eAAO,MAAM,qBAAqB,GAChC,QAAQ,eAAe,EACvB,OAAO,MAAM,EACb,eAAe,MAAM,EACrB,sBAAsB,MAAM,EAC5B,yBAAyB,MAAM,WAqPhC,CAAC"}
1
+ {"version":3,"file":"build-base-system-prompt.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/prompts/build-base-system-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAKpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAStD,eAAO,MAAM,qBAAqB,GAChC,QAAQ,eAAe,EACvB,OAAO,MAAM,EACb,eAAe,MAAM,EACrB,sBAAsB,MAAM,EAC5B,yBAAyB,MAAM,WAqQhC,CAAC"}