rivet-design 0.21.9 → 0.22.0

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 (225) hide show
  1. package/README.md +5 -1
  2. package/README.npm.md +5 -1
  3. package/bin/rivet.js +4 -0
  4. package/dist/agent-variants/PreviewRuntime.d.ts.map +1 -1
  5. package/dist/agent-variants/PreviewRuntime.js +3 -5
  6. package/dist/agent-variants/PreviewRuntime.js.map +1 -1
  7. package/dist/agent-variants/SessionStore.d.ts +21 -2
  8. package/dist/agent-variants/SessionStore.d.ts.map +1 -1
  9. package/dist/agent-variants/SessionStore.js +88 -71
  10. package/dist/agent-variants/SessionStore.js.map +1 -1
  11. package/dist/agent-variants/VariantWorkspaceManager.d.ts.map +1 -1
  12. package/dist/agent-variants/VariantWorkspaceManager.js +8 -14
  13. package/dist/agent-variants/VariantWorkspaceManager.js.map +1 -1
  14. package/dist/agent-variants/WorkspaceProvisioning.d.ts.map +1 -1
  15. package/dist/agent-variants/WorkspaceProvisioning.js +32 -21
  16. package/dist/agent-variants/WorkspaceProvisioning.js.map +1 -1
  17. package/dist/agent-variants/WorktreeOrchestrator.d.ts +7 -37
  18. package/dist/agent-variants/WorktreeOrchestrator.d.ts.map +1 -1
  19. package/dist/agent-variants/WorktreeOrchestrator.js +148 -103
  20. package/dist/agent-variants/WorktreeOrchestrator.js.map +1 -1
  21. package/dist/agent-variants/contextAssets.d.ts.map +1 -1
  22. package/dist/agent-variants/contextAssets.js +2 -8
  23. package/dist/agent-variants/contextAssets.js.map +1 -1
  24. package/dist/agent-variants/contracts.d.ts +103 -63
  25. package/dist/agent-variants/contracts.d.ts.map +1 -1
  26. package/dist/agent-variants/contracts.js.map +1 -1
  27. package/dist/agent-variants/staticPreviewFiles.d.ts +33 -0
  28. package/dist/agent-variants/staticPreviewFiles.d.ts.map +1 -0
  29. package/dist/agent-variants/staticPreviewFiles.js +109 -0
  30. package/dist/agent-variants/staticPreviewFiles.js.map +1 -0
  31. package/dist/agent-variants/staticPreviewRefinements.d.ts.map +1 -1
  32. package/dist/agent-variants/staticPreviewRefinements.js +3 -3
  33. package/dist/agent-variants/staticPreviewRefinements.js.map +1 -1
  34. package/dist/agent-variants/variantContext.d.ts.map +1 -1
  35. package/dist/agent-variants/variantContext.js +2 -8
  36. package/dist/agent-variants/variantContext.js.map +1 -1
  37. package/dist/agent-variants/variantWorkspaceFiles.d.ts +0 -1
  38. package/dist/agent-variants/variantWorkspaceFiles.d.ts.map +1 -1
  39. package/dist/agent-variants/variantWorkspaceFiles.js +5 -10
  40. package/dist/agent-variants/variantWorkspaceFiles.js.map +1 -1
  41. package/dist/agent-variants/workItemBriefing.d.ts.map +1 -1
  42. package/dist/agent-variants/workItemBriefing.js +4 -0
  43. package/dist/agent-variants/workItemBriefing.js.map +1 -1
  44. package/dist/agent-variants/workItemInput.d.ts +5950 -0
  45. package/dist/agent-variants/workItemInput.d.ts.map +1 -0
  46. package/dist/agent-variants/workItemInput.js +76 -0
  47. package/dist/agent-variants/workItemInput.js.map +1 -0
  48. package/dist/agent-variants/workItemPreviewRoutes.d.ts +23 -0
  49. package/dist/agent-variants/workItemPreviewRoutes.d.ts.map +1 -0
  50. package/dist/agent-variants/workItemPreviewRoutes.js +95 -0
  51. package/dist/agent-variants/workItemPreviewRoutes.js.map +1 -0
  52. package/dist/cli/handoff.d.ts +5 -0
  53. package/dist/cli/handoff.d.ts.map +1 -1
  54. package/dist/cli/handoff.js +13 -10
  55. package/dist/cli/handoff.js.map +1 -1
  56. package/dist/config/proxy.d.ts +3 -0
  57. package/dist/config/proxy.d.ts.map +1 -1
  58. package/dist/config/proxy.js +7 -5
  59. package/dist/config/proxy.js.map +1 -1
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +46 -7
  62. package/dist/index.js.map +1 -1
  63. package/dist/install/agentSkill.d.ts +16 -0
  64. package/dist/install/agentSkill.d.ts.map +1 -0
  65. package/dist/install/agentSkill.js +54 -0
  66. package/dist/install/agentSkill.js.map +1 -0
  67. package/dist/install/allowlists.d.ts +3 -1
  68. package/dist/install/allowlists.d.ts.map +1 -1
  69. package/dist/install/allowlists.js +89 -27
  70. package/dist/install/allowlists.js.map +1 -1
  71. package/dist/install/automaticCliUpdate.d.ts.map +1 -1
  72. package/dist/install/automaticCliUpdate.js +6 -11
  73. package/dist/install/automaticCliUpdate.js.map +1 -1
  74. package/dist/install/channelCli.d.ts.map +1 -1
  75. package/dist/install/channelCli.js +2 -37
  76. package/dist/install/channelCli.js.map +1 -1
  77. package/dist/install/channelManager.d.ts +2 -1
  78. package/dist/install/channelManager.d.ts.map +1 -1
  79. package/dist/install/channelManager.js +23 -20
  80. package/dist/install/channelManager.js.map +1 -1
  81. package/dist/install/codexSkill.d.ts +1 -8
  82. package/dist/install/codexSkill.d.ts.map +1 -1
  83. package/dist/install/codexSkill.js +9 -50
  84. package/dist/install/codexSkill.js.map +1 -1
  85. package/dist/install/cursorSkill.d.ts +6 -0
  86. package/dist/install/cursorSkill.d.ts.map +1 -0
  87. package/dist/install/cursorSkill.js +36 -0
  88. package/dist/install/cursorSkill.js.map +1 -0
  89. package/dist/install/globalBootstrap.d.ts +3 -2
  90. package/dist/install/globalBootstrap.d.ts.map +1 -1
  91. package/dist/install/globalBootstrap.js +9 -41
  92. package/dist/install/globalBootstrap.js.map +1 -1
  93. package/dist/install/harnesses.d.ts +27 -0
  94. package/dist/install/harnesses.d.ts.map +1 -1
  95. package/dist/install/harnesses.js +174 -76
  96. package/dist/install/harnesses.js.map +1 -1
  97. package/dist/library/importFiles.d.ts.map +1 -1
  98. package/dist/library/importFiles.js +3 -3
  99. package/dist/library/importFiles.js.map +1 -1
  100. package/dist/prototype-host.js +2 -1
  101. package/dist/prototype-host.js.map +1 -1
  102. package/dist/proxy-middleware/proxy-config.d.ts +10 -0
  103. package/dist/proxy-middleware/proxy-config.d.ts.map +1 -1
  104. package/dist/proxy-middleware/proxy-config.js +20 -29
  105. package/dist/proxy-middleware/proxy-config.js.map +1 -1
  106. package/dist/routes/agentVariants.d.ts +1 -5
  107. package/dist/routes/agentVariants.d.ts.map +1 -1
  108. package/dist/routes/agentVariants.js +42 -85
  109. package/dist/routes/agentVariants.js.map +1 -1
  110. package/dist/routes/library/staticPreview.d.ts.map +1 -1
  111. package/dist/routes/library/staticPreview.js +9 -7
  112. package/dist/routes/library/staticPreview.js.map +1 -1
  113. package/dist/routes/prototypeHost.d.ts.map +1 -1
  114. package/dist/routes/prototypeHost.js +3 -3
  115. package/dist/routes/prototypeHost.js.map +1 -1
  116. package/dist/routes/staticPreviewPolicy.d.ts +13 -0
  117. package/dist/routes/staticPreviewPolicy.d.ts.map +1 -0
  118. package/dist/routes/staticPreviewPolicy.js +61 -0
  119. package/dist/routes/staticPreviewPolicy.js.map +1 -0
  120. package/dist/routes/variantRequestSchema.d.ts +4 -4
  121. package/dist/services/AuthService.js +3 -3
  122. package/dist/services/AuthService.js.map +1 -1
  123. package/dist/services/BundleStore.d.ts.map +1 -1
  124. package/dist/services/BundleStore.js +4 -8
  125. package/dist/services/BundleStore.js.map +1 -1
  126. package/dist/services/DependencyPreparationService.d.ts.map +1 -1
  127. package/dist/services/DependencyPreparationService.js +4 -3
  128. package/dist/services/DependencyPreparationService.js.map +1 -1
  129. package/dist/services/OperatingSystemServices.d.ts +5 -0
  130. package/dist/services/OperatingSystemServices.d.ts.map +1 -1
  131. package/dist/services/OperatingSystemServices.js +9 -3
  132. package/dist/services/OperatingSystemServices.js.map +1 -1
  133. package/dist/services/ProjectImport.d.ts.map +1 -1
  134. package/dist/services/ProjectImport.js +2 -1
  135. package/dist/services/ProjectImport.js.map +1 -1
  136. package/dist/services/ProjectPackageManager.d.ts +0 -1
  137. package/dist/services/ProjectPackageManager.d.ts.map +1 -1
  138. package/dist/services/ProjectPackageManager.js +5 -12
  139. package/dist/services/ProjectPackageManager.js.map +1 -1
  140. package/dist/services/PrototypeBuildService.d.ts.map +1 -1
  141. package/dist/services/PrototypeBuildService.js +10 -6
  142. package/dist/services/PrototypeBuildService.js.map +1 -1
  143. package/dist/services/VariantHistoryService.d.ts +3 -0
  144. package/dist/services/VariantHistoryService.d.ts.map +1 -1
  145. package/dist/services/VariantHistoryService.js +36 -12
  146. package/dist/services/VariantHistoryService.js.map +1 -1
  147. package/dist/services/WorktreeManager.d.ts.map +1 -1
  148. package/dist/services/WorktreeManager.js +4 -4
  149. package/dist/services/WorktreeManager.js.map +1 -1
  150. package/dist/services/packageManagerProcess.d.ts +20 -0
  151. package/dist/services/packageManagerProcess.d.ts.map +1 -0
  152. package/dist/services/packageManagerProcess.js +55 -0
  153. package/dist/services/packageManagerProcess.js.map +1 -0
  154. package/dist/services/referenceImages.d.ts.map +1 -1
  155. package/dist/services/referenceImages.js +4 -4
  156. package/dist/services/referenceImages.js.map +1 -1
  157. package/dist/services/staticProjectTarget.d.ts.map +1 -1
  158. package/dist/services/staticProjectTarget.js +3 -5
  159. package/dist/services/staticProjectTarget.js.map +1 -1
  160. package/dist/storage/library/ProjectPreviewCache.d.ts +2 -2
  161. package/dist/types/preview-routes.d.ts +6 -0
  162. package/dist/types/preview-routes.d.ts.map +1 -0
  163. package/dist/types/preview-routes.js +35 -0
  164. package/dist/types/preview-routes.js.map +1 -0
  165. package/dist/types/variant-history.d.ts +6 -0
  166. package/dist/types/variant-history.d.ts.map +1 -1
  167. package/dist/utils/pathContainment.d.ts +15 -0
  168. package/dist/utils/pathContainment.d.ts.map +1 -0
  169. package/dist/utils/pathContainment.js +46 -0
  170. package/dist/utils/pathContainment.js.map +1 -0
  171. package/dist/utils/skillWriter.d.ts +5 -2
  172. package/dist/utils/skillWriter.d.ts.map +1 -1
  173. package/dist/utils/skillWriter.js +93 -34
  174. package/dist/utils/skillWriter.js.map +1 -1
  175. package/dist/utils/staticPreviewPage.d.ts +11 -0
  176. package/dist/utils/staticPreviewPage.d.ts.map +1 -0
  177. package/dist/utils/staticPreviewPage.js +40 -0
  178. package/dist/utils/staticPreviewPage.js.map +1 -0
  179. package/package.json +6 -2
  180. package/src/ui/dist/assets/{LibraryEntry-BaphzdNv.js → LibraryEntry-CjxmVfhv.js} +8 -8
  181. package/src/ui/dist/assets/main-CdSzrhWD.js +435 -0
  182. package/src/ui/dist/assets/main-DVb3ws41.css +1 -0
  183. package/src/ui/dist/index.html +2 -2
  184. package/dist/agent-variants/elementRefToTarget.d.ts +0 -4
  185. package/dist/agent-variants/elementRefToTarget.d.ts.map +0 -1
  186. package/dist/agent-variants/elementRefToTarget.js +0 -30
  187. package/dist/agent-variants/elementRefToTarget.js.map +0 -1
  188. package/dist/prompts/commentVariationPromptConfig.d.ts +0 -7
  189. package/dist/prompts/commentVariationPromptConfig.d.ts.map +0 -1
  190. package/dist/prompts/commentVariationPromptConfig.js +0 -12
  191. package/dist/prompts/commentVariationPromptConfig.js.map +0 -1
  192. package/dist/prompts/commentVariationPromptSnapshot.d.ts +0 -3
  193. package/dist/prompts/commentVariationPromptSnapshot.d.ts.map +0 -1
  194. package/dist/prompts/commentVariationPromptSnapshot.js +0 -31
  195. package/dist/prompts/commentVariationPromptSnapshot.js.map +0 -1
  196. package/dist/prompts/commentVariationPrompts.d.ts +0 -7
  197. package/dist/prompts/commentVariationPrompts.d.ts.map +0 -1
  198. package/dist/prompts/commentVariationPrompts.js +0 -54
  199. package/dist/prompts/commentVariationPrompts.js.map +0 -1
  200. package/dist/services/adapters/TailwindTokenAdapter.d.ts +0 -17
  201. package/dist/services/adapters/TailwindTokenAdapter.d.ts.map +0 -1
  202. package/dist/services/adapters/TailwindTokenAdapter.js +0 -284
  203. package/dist/services/adapters/TailwindTokenAdapter.js.map +0 -1
  204. package/dist/services/extractors/CSSVariableExtractor.d.ts +0 -10
  205. package/dist/services/extractors/CSSVariableExtractor.d.ts.map +0 -1
  206. package/dist/services/extractors/CSSVariableExtractor.js +0 -110
  207. package/dist/services/extractors/CSSVariableExtractor.js.map +0 -1
  208. package/dist/services/staticStarter.d.ts +0 -3
  209. package/dist/services/staticStarter.d.ts.map +0 -1
  210. package/dist/services/staticStarter.js +0 -129
  211. package/dist/services/staticStarter.js.map +0 -1
  212. package/dist/utils/elementFileHintSignals.d.ts +0 -3
  213. package/dist/utils/elementFileHintSignals.d.ts.map +0 -1
  214. package/dist/utils/elementFileHintSignals.js +0 -35
  215. package/dist/utils/elementFileHintSignals.js.map +0 -1
  216. package/dist/utils/formatElementTargetingContext.d.ts +0 -28
  217. package/dist/utils/formatElementTargetingContext.d.ts.map +0 -1
  218. package/dist/utils/formatElementTargetingContext.js +0 -82
  219. package/dist/utils/formatElementTargetingContext.js.map +0 -1
  220. package/dist/utils/variantPreviewPort.d.ts +0 -15
  221. package/dist/utils/variantPreviewPort.d.ts.map +0 -1
  222. package/dist/utils/variantPreviewPort.js +0 -25
  223. package/dist/utils/variantPreviewPort.js.map +0 -1
  224. package/src/ui/dist/assets/main-CVCXVenP.js +0 -435
  225. package/src/ui/dist/assets/main-vcYlLdli.css +0 -1
@@ -3,10 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.claudeWorkerAgentPaths = void 0;
7
- exports.writeSkillFileIfNeeded = writeSkillFileIfNeeded;
6
+ exports.writeWorkerAgentIfNeeded = exports.hasClaudeWorkerAgent = exports.claudeWorkerAgentPaths = exports.writeSkillFileIfNeeded = exports.hasClaudeSkill = exports.claudeSkillPath = void 0;
8
7
  exports.claudeWorkerAgentPath = claudeWorkerAgentPath;
9
- exports.writeWorkerAgentIfNeeded = writeWorkerAgentIfNeeded;
10
8
  exports.writeCursorRulesIfNeeded = writeCursorRulesIfNeeded;
11
9
  const fs_1 = __importDefault(require("fs"));
12
10
  const path_1 = __importDefault(require("path"));
@@ -16,32 +14,74 @@ const claude_skill_1 = require("./skills/claude-skill");
16
14
  const cursor_rules_1 = require("./skills/cursor-rules");
17
15
  const workerDefaults_1 = require("../hosts/workerDefaults");
18
16
  const errorMessage_1 = require("./errorMessage");
17
+ const agentSkill_1 = require("../install/agentSkill");
18
+ const CLAUDE_SKILL_VERSION_PATTERN = /^\[\/\/\]: # \(rivet-skill-version:\s*(\d+)\)\r?$/m;
19
+ const WORKER_AGENT_VERSION_PATTERN = /^\[\/\/\]: # \(rivet-worker-agent-version:\s*(\d+)\)\r?$/m;
20
+ const CLAUDE_SKILL_MARKER = '[//]: # (rivet-skill-version:';
21
+ const WORKER_AGENT_MARKER = '[//]: # (rivet-worker-agent-version:';
19
22
  const log = (0, logger_1.createLogger)('SkillWriter');
20
23
  function getInstalledVersion(content, pattern) {
21
24
  const match = content.match(pattern);
22
25
  return match ? parseInt(match[1], 10) : 0;
23
26
  }
24
- function writeSkillFileIfNeeded() {
27
+ const isAgentDirectory = (directoryPath, isShared = false) => {
28
+ const readStatus = isShared ? fs_1.default.statSync : fs_1.default.lstatSync;
29
+ const existing = readStatus(directoryPath, { throwIfNoEntry: false });
30
+ return !existing || existing.isDirectory();
31
+ };
32
+ const hasAgentFile = ({ filePath, directories, ownedDirectory, versionMarker, }) => {
25
33
  try {
26
- const skillsBase = path_1.default.join(os_1.default.homedir(), '.claude', 'skills');
27
- const skillDir = path_1.default.join(skillsBase, claude_skill_1.CLAUDE_SKILL_DIR);
28
- const skillPath = path_1.default.join(skillDir, claude_skill_1.CLAUDE_SKILL_FILENAME);
29
- if (!fs_1.default.existsSync(skillsBase)) {
30
- fs_1.default.mkdirSync(skillsBase, { recursive: true });
31
- }
32
- if (fs_1.default.existsSync(skillDir) && fs_1.default.statSync(skillDir).isFile()) {
33
- fs_1.default.unlinkSync(skillDir);
34
- }
35
- if (!fs_1.default.existsSync(skillDir)) {
36
- fs_1.default.mkdirSync(skillDir, { recursive: true });
37
- }
38
- if (fs_1.default.existsSync(skillPath)) {
39
- const existing = fs_1.default.readFileSync(skillPath, 'utf8');
40
- const installed = getInstalledVersion(existing, /rivet-skill-version:\s*(\d+)/);
41
- if (installed >= claude_skill_1.CLAUDE_SKILL_VERSION)
42
- return { success: true };
43
- }
44
- fs_1.default.writeFileSync(skillPath, claude_skill_1.CLAUDE_SKILL_CONTENT, 'utf8');
34
+ return (directories.every((directory) => isAgentDirectory(directory, true)) &&
35
+ (!ownedDirectory || isAgentDirectory(ownedDirectory)) &&
36
+ fs_1.default.lstatSync(filePath).isFile() &&
37
+ getInstalledVersion(fs_1.default.readFileSync(filePath, 'utf8'), versionMarker) > 0);
38
+ }
39
+ catch {
40
+ return false;
41
+ }
42
+ };
43
+ const agentFileConflict = (file) => {
44
+ const directory = file.directories.find((candidate) => !isAgentDirectory(candidate, true));
45
+ const ownedDirectory = file.ownedDirectory && !isAgentDirectory(file.ownedDirectory)
46
+ ? file.ownedDirectory
47
+ : undefined;
48
+ const existing = fs_1.default.lstatSync(file.filePath, { throwIfNoEntry: false });
49
+ const conflictPath = directory ??
50
+ ownedDirectory ??
51
+ (existing && !hasAgentFile(file) ? file.filePath : undefined);
52
+ return conflictPath
53
+ ? `A user-managed file or symlink exists at ${conflictPath}. Move or rename it before installing Rivet.`
54
+ : undefined;
55
+ };
56
+ const claudeSkillPath = () => path_1.default.join(os_1.default.homedir(), '.claude', 'skills', claude_skill_1.CLAUDE_SKILL_DIR, claude_skill_1.CLAUDE_SKILL_FILENAME);
57
+ exports.claudeSkillPath = claudeSkillPath;
58
+ const claudeSkillFile = () => ({
59
+ filePath: (0, exports.claudeSkillPath)(),
60
+ directories: [
61
+ path_1.default.join(os_1.default.homedir(), '.claude'),
62
+ path_1.default.join(os_1.default.homedir(), '.claude', 'skills'),
63
+ ],
64
+ ownedDirectory: path_1.default.dirname((0, exports.claudeSkillPath)()),
65
+ versionMarker: CLAUDE_SKILL_VERSION_PATTERN,
66
+ });
67
+ const hasClaudeSkill = () => hasAgentFile(claudeSkillFile());
68
+ exports.hasClaudeSkill = hasClaudeSkill;
69
+ const writeSkillFileIfNeeded = () => {
70
+ try {
71
+ const skill = claudeSkillFile();
72
+ const conflict = agentFileConflict(skill);
73
+ if (conflict)
74
+ return { success: false, error: conflict };
75
+ if ((0, exports.hasClaudeSkill)() &&
76
+ getInstalledVersion(fs_1.default.readFileSync(skill.filePath, 'utf8'), CLAUDE_SKILL_VERSION_PATTERN) >= claude_skill_1.CLAUDE_SKILL_VERSION)
77
+ return { success: true };
78
+ const result = (0, agentSkill_1.writeAgentSkill)({
79
+ filePath: skill.filePath,
80
+ content: claude_skill_1.CLAUDE_SKILL_CONTENT,
81
+ marker: CLAUDE_SKILL_MARKER,
82
+ });
83
+ if (!result.ok)
84
+ return { success: false, error: result.error };
45
85
  log.info('Wrote Rivet Claude skill file');
46
86
  return { success: true };
47
87
  }
@@ -53,24 +93,42 @@ function writeSkillFileIfNeeded() {
53
93
  log.debug('Could not write skill file:', error);
54
94
  return { success: false, error: code ? `${code}: ${message}` : message };
55
95
  }
56
- }
96
+ };
97
+ exports.writeSkillFileIfNeeded = writeSkillFileIfNeeded;
57
98
  function claudeWorkerAgentPath() {
58
99
  return path_1.default.join(os_1.default.homedir(), '.claude', 'agents', workerDefaults_1.RIVET_WORKER_AGENT_FILENAME);
59
100
  }
60
101
  const claudeWorkerAgentPaths = () => Object.values(workerDefaults_1.RIVET_WORKER_AGENT_DEFINITIONS).map((definition) => path_1.default.join(os_1.default.homedir(), '.claude', 'agents', definition.filename));
61
102
  exports.claudeWorkerAgentPaths = claudeWorkerAgentPaths;
62
- function writeWorkerAgentIfNeeded() {
103
+ const claudeWorkerFile = (filePath) => ({
104
+ filePath,
105
+ directories: [
106
+ path_1.default.join(os_1.default.homedir(), '.claude'),
107
+ path_1.default.join(os_1.default.homedir(), '.claude', 'agents'),
108
+ ],
109
+ versionMarker: WORKER_AGENT_VERSION_PATTERN,
110
+ });
111
+ const hasClaudeWorkerAgent = (filePath) => hasAgentFile(claudeWorkerFile(filePath));
112
+ exports.hasClaudeWorkerAgent = hasClaudeWorkerAgent;
113
+ const writeWorkerAgentIfNeeded = () => {
63
114
  try {
115
+ for (const filePath of (0, exports.claudeWorkerAgentPaths)()) {
116
+ const conflict = agentFileConflict(claudeWorkerFile(filePath));
117
+ if (conflict)
118
+ return { success: false, error: conflict };
119
+ }
64
120
  for (const definition of Object.values(workerDefaults_1.RIVET_WORKER_AGENT_DEFINITIONS)) {
65
121
  const agentPath = path_1.default.join(os_1.default.homedir(), '.claude', 'agents', definition.filename);
66
- fs_1.default.mkdirSync(path_1.default.dirname(agentPath), { recursive: true });
67
- if (fs_1.default.existsSync(agentPath)) {
68
- const existing = fs_1.default.readFileSync(agentPath, 'utf8');
69
- const installed = getInstalledVersion(existing, /rivet-worker-agent-version:\s*(\d+)/);
70
- if (installed >= workerDefaults_1.RIVET_WORKER_AGENT_VERSION)
71
- continue;
72
- }
73
- fs_1.default.writeFileSync(agentPath, definition.content, 'utf8');
122
+ if ((0, exports.hasClaudeWorkerAgent)(agentPath) &&
123
+ getInstalledVersion(fs_1.default.readFileSync(agentPath, 'utf8'), WORKER_AGENT_VERSION_PATTERN) >= workerDefaults_1.RIVET_WORKER_AGENT_VERSION)
124
+ continue;
125
+ const result = (0, agentSkill_1.writeAgentSkill)({
126
+ filePath: agentPath,
127
+ content: definition.content,
128
+ marker: WORKER_AGENT_MARKER,
129
+ });
130
+ if (!result.ok)
131
+ return { success: false, error: result.error };
74
132
  }
75
133
  log.info('Wrote Rivet worker agent definitions for Claude Code');
76
134
  return { success: true };
@@ -83,7 +141,8 @@ function writeWorkerAgentIfNeeded() {
83
141
  log.debug('Could not write worker agent definition:', error);
84
142
  return { success: false, error: code ? `${code}: ${message}` : message };
85
143
  }
86
- }
144
+ };
145
+ exports.writeWorkerAgentIfNeeded = writeWorkerAgentIfNeeded;
87
146
  function writeCursorRulesIfNeeded(projectPath) {
88
147
  try {
89
148
  const rulesDir = path_1.default.join(projectPath, '.cursor', 'rules');
@@ -1 +1 @@
1
- {"version":3,"file":"skillWriter.js","sourceRoot":"","sources":["../../src/utils/skillWriter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skillWriter.js","sourceRoot":"","sources":["../../src/utils/skillWriter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare const staticPreviewPagePath: ({ entryPath, routePath, }: {
2
+ entryPath: string;
3
+ routePath?: string;
4
+ }) => string;
5
+ export declare const isStaticPreviewHtmlFile: ({ assetPath, filePath, isEntry, previewRoutes, }: {
6
+ assetPath: string;
7
+ filePath?: string;
8
+ isEntry?: boolean;
9
+ previewRoutes?: unknown;
10
+ }) => boolean;
11
+ //# sourceMappingURL=staticPreviewPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staticPreviewPage.d.ts","sourceRoot":"","sources":["../../src/utils/staticPreviewPage.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,qBAAqB,GAAI,2BAGnC;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,KAAG,MASH,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,kDAKrC;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,KAAG,OAgBH,CAAC"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isStaticPreviewHtmlFile = exports.staticPreviewPagePath = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const preview_routes_1 = require("../types/preview-routes");
9
+ const staticPreviewPagePath = ({ entryPath, routePath, }) => {
10
+ if (!routePath)
11
+ return entryPath;
12
+ const route = preview_routes_1.previewRouteSchema.parse(routePath);
13
+ const pathname = decodeURIComponent(route.split(/[?#]/)[0]);
14
+ if (pathname === '/')
15
+ return entryPath;
16
+ const relativePath = pathname.slice(1);
17
+ return relativePath.endsWith('/')
18
+ ? relativePath + 'index.html'
19
+ : relativePath;
20
+ };
21
+ exports.staticPreviewPagePath = staticPreviewPagePath;
22
+ const isStaticPreviewHtmlFile = ({ assetPath, filePath, isEntry = false, previewRoutes, }) => {
23
+ if (isEntry || /\.html?$/i.test(filePath ?? assetPath))
24
+ return true;
25
+ if (!Array.isArray(previewRoutes) ||
26
+ previewRoutes.length > preview_routes_1.PREVIEW_ROUTE_LIMIT)
27
+ return false;
28
+ return previewRoutes.some((route) => {
29
+ const parsed = preview_routes_1.previewRouteSchema.safeParse(route);
30
+ if (!parsed.success)
31
+ return false;
32
+ const pagePath = (0, exports.staticPreviewPagePath)({
33
+ entryPath: '',
34
+ routePath: parsed.data,
35
+ });
36
+ return path_1.default.normalize(pagePath) === path_1.default.normalize(assetPath);
37
+ });
38
+ };
39
+ exports.isStaticPreviewHtmlFile = isStaticPreviewHtmlFile;
40
+ //# sourceMappingURL=staticPreviewPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staticPreviewPage.js","sourceRoot":"","sources":["../../src/utils/staticPreviewPage.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,4DAGiC;AAE1B,MAAM,qBAAqB,GAAG,CAAC,EACpC,SAAS,EACT,SAAS,GAIV,EAAU,EAAE;IACX,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,MAAM,KAAK,GAAG,mCAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI,QAAQ,KAAK,GAAG;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC/B,CAAC,CAAC,YAAY,GAAG,YAAY;QAC7B,CAAC,CAAC,YAAY,CAAC;AACnB,CAAC,CAAC;AAfW,QAAA,qBAAqB,yBAehC;AAEK,MAAM,uBAAuB,GAAG,CAAC,EACtC,SAAS,EACT,QAAQ,EACR,OAAO,GAAG,KAAK,EACf,aAAa,GAMd,EAAW,EAAE;IACZ,IAAI,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACpE,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;QAC7B,aAAa,CAAC,MAAM,GAAG,oCAAmB;QAE1C,OAAO,KAAK,CAAC;IACf,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QAClC,MAAM,MAAM,GAAG,mCAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAA,6BAAqB,EAAC;YACrC,SAAS,EAAE,EAAE;YACb,SAAS,EAAE,MAAM,CAAC,IAAI;SACvB,CAAC,CAAC;QACH,OAAO,cAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,cAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA1BW,QAAA,uBAAuB,2BA0BlC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rivet-design",
3
- "version": "0.21.9",
3
+ "version": "0.22.0",
4
4
  "description": "Local visual web development tool with AI-powered code modification",
5
5
  "main": "dist/index.js",
6
6
  "workspaces": [
@@ -66,7 +66,7 @@
66
66
  "fix:comments": "node scripts/code-comments.mjs --write"
67
67
  },
68
68
  "dependencies": {
69
- "@modelcontextprotocol/sdk": "1.31.0",
69
+ "@modelcontextprotocol/sdk": "1.32.0",
70
70
  "@sentry/node": "10.44.0",
71
71
  "ajv": "8.20.0",
72
72
  "cors": "^2.8.5",
@@ -91,8 +91,10 @@
91
91
  "@anthropic-ai/sdk": "^0.74.0",
92
92
  "@csstools/css-tokenizer": "^3.0.4",
93
93
  "@eslint/js": "^9.36.0",
94
+ "@playwright/test": "^1.58.2",
94
95
  "@types/cors": "^2.8.19",
95
96
  "@types/express": "^5.0.3",
97
+ "@types/express-serve-static-core": "^5.0.0",
96
98
  "@types/jest": "^30.0.0",
97
99
  "@types/js-yaml": "^4.0.9",
98
100
  "@types/markdown-it": "^14.2.0",
@@ -107,11 +109,13 @@
107
109
  "@typescript-eslint/parser": "^8.44.0",
108
110
  "@vitejs/plugin-react": "^4.2.1",
109
111
  "autoprefixer": "^10.4.16",
112
+ "csstype": "^3.2.2",
110
113
  "dockerfile-ast": "^0.7.1",
111
114
  "eslint": "^9.36.0",
112
115
  "eslint-config-prettier": "^10.1.8",
113
116
  "eslint-plugin-react": "^7.37.5",
114
117
  "eslint-plugin-react-hooks": "^5.2.0",
118
+ "globals": "^14.0.0",
115
119
  "husky": "^9.1.7",
116
120
  "jest": "^30.1.3",
117
121
  "jest-environment-jsdom": "^30.2.0",
@@ -1,35 +1,35 @@
1
- var Be=s=>{throw TypeError(s)};var Ee=(s,t,r)=>t.has(s)||Be("Cannot "+r);var h=(s,t,r)=>(Ee(s,t,"read from private field"),r?r.call(s):t.get(s)),z=(s,t,r)=>t.has(s)?Be("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(s):t.set(s,r),L=(s,t,r,i)=>(Ee(s,t,"write to private field"),i?i.call(s,r):t.set(s,r),r),A=(s,t,r)=>(Ee(s,t,"access private method"),r);import{S as lt,s as ct,h as Ve,g as Kt,n as fe,r as Qt,Q as dt,u as _e,a as Bt,b as Vt,c as d,e as Gt,d as Yt,f as Wt,i as ut,j as Ge,k as Jt,l as Xt,m as Zt,o as ce,p as me,q as es,t as e,B as J,v as Pe,P as ts,w as ss,x as rs,y as is,z as as,X as ht,D as mt,A as pt,C as xt,E as ft,F as bt,G as yt,H as gt,I as Ye,J as ns,K as os,L as ls,M as cs,N as ne,O as Se,R as ds,T as vt,U as ee,V as Y,W as x,Y as re,Z as H,_ as wt,$ as us,a0 as hs,a1 as ms,a2 as ps,a3 as xs,a4 as fs,a5 as bs,a6 as ys,a7 as B,a8 as gs,a9 as vs,aa as We,ab as ws,ac as js,ad as Ns,ae as ks,af as Ss,ag as jt,ah as _s,ai as Is,aj as Rs,ak as Cs,al as Es,am as Ps}from"./main-CVCXVenP.js";var ie,ae,U,ye,se,pe,Te,nt,Ts=(nt=class extends lt{constructor(t,r){super();z(this,se);z(this,ie);z(this,ae);z(this,U);z(this,ye);L(this,ie,t),this.setOptions(r),this.bindMethods(),A(this,se,pe).call(this)}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(t){var i;const r=this.options;this.options=h(this,ie).defaultMutationOptions(t),ct(this.options,r)||h(this,ie).getMutationCache().notify({type:"observerOptionsUpdated",mutation:h(this,U),observer:this}),r!=null&&r.mutationKey&&this.options.mutationKey&&Ve(r.mutationKey)!==Ve(this.options.mutationKey)?this.reset():((i=h(this,U))==null?void 0:i.state.status)==="pending"&&h(this,U).setOptions(this.options)}onSubscribe(){this.listeners.size===1&&h(this,U)&&(h(this,U).addObserver(this),A(this,se,pe).call(this))}onUnsubscribe(){var t;this.hasListeners()||(t=h(this,U))==null||t.removeObserver(this)}onMutationUpdate(t){A(this,se,pe).call(this),A(this,se,Te).call(this,t)}getCurrentResult(){return h(this,ae)}reset(){var t;(t=h(this,U))==null||t.removeObserver(this),L(this,U,void 0),A(this,se,pe).call(this),A(this,se,Te).call(this)}mutate(t,r){var i;return L(this,ye,r),(i=h(this,U))==null||i.removeObserver(this),L(this,U,h(this,ie).getMutationCache().build(h(this,ie),this.options)),h(this,U).addObserver(this),h(this,U).execute(t)}},ie=new WeakMap,ae=new WeakMap,U=new WeakMap,ye=new WeakMap,se=new WeakSet,pe=function(){var r;const t=((r=h(this,U))==null?void 0:r.state)??Kt();L(this,ae,{...t,isPending:t.status==="pending",isSuccess:t.status==="success",isError:t.status==="error",isIdle:t.status==="idle",mutate:this.mutate,reset:this.reset})},Te=function(t){fe.batch(()=>{var i,n,o,a;const r=h(this,ye);if(r&&this.hasListeners()){const l=h(this,ae).variables,m=h(this,ae).context,f={client:h(this,ie),meta:this.options.meta,mutationKey:this.options.mutationKey};if((t==null?void 0:t.type)==="success"){try{(i=r.onSuccess)==null||i.call(r,t.data,l,m,f)}catch(b){Promise.reject(b)}try{(n=r.onSettled)==null||n.call(r,t.data,null,l,m,f)}catch(b){Promise.reject(b)}}else if((t==null?void 0:t.type)==="error"){try{(o=r.onError)==null||o.call(r,t.error,l,m,f)}catch(b){Promise.reject(b)}try{(a=r.onSettled)==null||a.call(r,void 0,t.error,l,m,f)}catch(b){Promise.reject(b)}}}this.listeners.forEach(l=>{l(h(this,ae))})})},nt);function Je(s,t){const r=new Set(t);return s.filter(i=>!r.has(i))}var ue,Q,he,oe,G,le,ge,ve,we,je,O,Le,Oe,Nt,Me,Ae,De,ot,Ls=(ot=class extends lt{constructor(t,r,i){super();z(this,O);z(this,ue);z(this,Q);z(this,he);z(this,oe);z(this,G);z(this,le);z(this,ge);z(this,ve);z(this,we);z(this,je,[]);L(this,ue,t),L(this,oe,i),L(this,he,[]),L(this,G,[]),L(this,Q,[]),this.setQueries(r)}onSubscribe(){this.listeners.size===1&&h(this,G).forEach(t=>{t.subscribe(r=>{A(this,O,Ae).call(this,t,r)})})}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,h(this,G).forEach(t=>{t.destroy()})}setQueries(t,r){L(this,he,t),L(this,oe,r),fe.batch(()=>{const i=h(this,G),n=A(this,O,Me).call(this,h(this,he));n.forEach(p=>p.observer.setOptions(p.defaultedQueryOptions));const o=n.map(p=>p.observer),a=o.map(p=>p.getCurrentResult()),l=i.length!==o.length,m=o.some((p,j)=>p!==i[j]),f=l||m,b=f?!0:a.some((p,j)=>{const N=h(this,Q)[j];return!N||!ct(p,N)});!f&&!b||(f&&(L(this,je,n),L(this,G,o)),L(this,Q,a),this.hasListeners()&&(f&&(Je(i,o).forEach(p=>{p.destroy()}),Je(o,i).forEach(p=>{p.subscribe(j=>{A(this,O,Ae).call(this,p,j)})})),A(this,O,De).call(this)))})}getCurrentResult(){return h(this,Q)}getQueries(){return h(this,G).map(t=>t.getCurrentQuery())}getObservers(){return h(this,G)}getOptimisticResult(t,r){const i=A(this,O,Me).call(this,t),n=i.map(a=>a.observer.getOptimisticResult(a.defaultedQueryOptions)),o=i.map(a=>a.defaultedQueryOptions.queryHash);return[n,a=>A(this,O,Oe).call(this,a??n,r,o),()=>A(this,O,Le).call(this,n,i)]}},ue=new WeakMap,Q=new WeakMap,he=new WeakMap,oe=new WeakMap,G=new WeakMap,le=new WeakMap,ge=new WeakMap,ve=new WeakMap,we=new WeakMap,je=new WeakMap,O=new WeakSet,Le=function(t,r){const i=new Set;return r.map((n,o)=>{const a=t[o];return n.defaultedQueryOptions.notifyOnChangeProps?a:n.observer.trackResult(a,l=>{i.has(l)||(i.add(l),r.forEach(m=>{m.observer.trackProp(l)}))})})},Oe=function(t,r,i){if(r){const n=h(this,we),o=i!==void 0&&n!==void 0&&(n.length!==i.length||i.some((a,l)=>a!==n[l]));return(h(this,Q)!==h(this,ve)||o||r!==h(this,ge))&&(L(this,ge,r),L(this,ve,h(this,Q)),i!==void 0&&L(this,we,i),L(this,le,Qt(h(this,le),r(t)))),h(this,le)}return t},Nt=function(){var t;return!((t=h(this,oe))!=null&&t.combine)||h(this,G).some((r,i)=>{var n;return r.options.suspense&&((n=h(this,Q)[i])==null?void 0:n.data)===void 0})},Me=function(t){const r=new Map;h(this,G).forEach(n=>{const o=n.options.queryHash;if(!o)return;const a=r.get(o);a?a.push(n):r.set(o,[n])});const i=[];return t.forEach(n=>{var l;const o=h(this,ue).defaultQueryOptions(n),a=((l=r.get(o.queryHash))==null?void 0:l.shift())??new dt(h(this,ue),o);i.push({defaultedQueryOptions:o,observer:a})}),i},Ae=function(t,r){const i=h(this,G).indexOf(t);i!==-1&&(L(this,Q,h(this,Q).slice()),h(this,Q)[i]=r,A(this,O,De).call(this))},De=function(){var t;if(this.hasListeners()){const r=A(this,O,Nt).call(this),i=h(this,le),n=r?i:A(this,O,Oe).call(this,A(this,O,Le).call(this,h(this,Q),h(this,je)),(t=h(this,oe))==null?void 0:t.combine);(r||i!==n)&&fe.batch(()=>{this.listeners.forEach(o=>{o(h(this,Q))})})}},ot);function Os({queries:s,...t},r){const i=_e(),n=Bt(),o=Vt(),a=t.subscribed!==!1,l=d.useMemo(()=>s.map(S=>{const y=i.defaultQueryOptions(S);return y._optimisticResults=n?"isRestoring":a?"optimistic":void 0,y}),[s,i,n,a]);l.forEach(S=>{Gt(S);const y=i.getQueryCache().get(S.queryHash);Yt(S,o,y)}),Wt(o);const[m]=d.useState(()=>new Ls(i,l,t)),[f,b,p]=m.getOptimisticResult(l,t.combine),j=!n&&a;d.useSyncExternalStore(d.useCallback(S=>j?m.subscribe(fe.batchCalls(S)):ut,[m,j]),()=>m.getCurrentResult(),()=>m.getCurrentResult()),d.useEffect(()=>{m.setQueries(l,t)},[l,t,m]);const N=f.some((S,y)=>Ge(l[y],S))?f.flatMap((S,y)=>{const k=l[y];if(k&&Ge(k,S)){const $=new dt(i,k);return Jt(k,$,o)}return[]}):[];if(N.length>0)throw Promise.all(N);const R=f.find((S,y)=>{const k=l[y];return k&&Xt({result:S,errorResetBoundary:o,throwOnError:k.throwOnError,query:i.getQueryCache().get(k.queryHash),suspense:k.suspense})});if(R)throw R.error;return b(p())}function xe(s,t){const r=_e(),[i]=d.useState(()=>new Ts(r,s));d.useEffect(()=>{i.setOptions(s)},[i,s]);const n=d.useSyncExternalStore(d.useCallback(a=>i.subscribe(fe.batchCalls(a)),[i]),()=>i.getCurrentResult(),()=>i.getCurrentResult()),o=d.useCallback((...a)=>{i.mutate(a[0],a[1]).catch(ut)},[i]);if(n.error&&Zt(i.options.throwOnError,[n.error]))throw n.error;return{...n,mutate:o,mutateAsync:n.mutate}}/**
2
- * @license lucide-react v1.59.0 - ISC
1
+ var Be=s=>{throw TypeError(s)};var Ee=(s,t,r)=>t.has(s)||Be("Cannot "+r);var h=(s,t,r)=>(Ee(s,t,"read from private field"),r?r.call(s):t.get(s)),z=(s,t,r)=>t.has(s)?Be("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(s):t.set(s,r),L=(s,t,r,i)=>(Ee(s,t,"write to private field"),i?i.call(s,r):t.set(s,r),r),A=(s,t,r)=>(Ee(s,t,"access private method"),r);import{S as lt,s as ct,h as Ve,g as Kt,n as fe,r as Qt,Q as dt,u as _e,a as Bt,b as Vt,c as d,e as Gt,d as Yt,f as Wt,i as ut,j as Ge,k as Jt,l as Xt,m as Zt,o as ce,p as me,q as es,t as e,B as J,v as Pe,P as ts,w as ss,x as rs,y as is,z as as,X as ht,D as mt,A as pt,C as xt,E as ft,F as bt,G as yt,H as gt,I as Ye,J as ns,K as os,L as ls,M as cs,N as ne,O as Se,R as ds,T as vt,U as ee,V as Y,W as x,Y as re,Z as H,_ as wt,$ as us,a0 as hs,a1 as ms,a2 as ps,a3 as xs,a4 as fs,a5 as bs,a6 as ys,a7 as B,a8 as gs,a9 as vs,aa as We,ab as ws,ac as js,ad as Ns,ae as ks,af as Ss,ag as jt,ah as _s,ai as Is,aj as Rs,ak as Cs,al as Es,am as Ps}from"./main-CdSzrhWD.js";var ie,ae,U,ye,se,pe,Te,nt,Ts=(nt=class extends lt{constructor(t,r){super();z(this,se);z(this,ie);z(this,ae);z(this,U);z(this,ye);L(this,ie,t),this.setOptions(r),this.bindMethods(),A(this,se,pe).call(this)}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(t){var i;const r=this.options;this.options=h(this,ie).defaultMutationOptions(t),ct(this.options,r)||h(this,ie).getMutationCache().notify({type:"observerOptionsUpdated",mutation:h(this,U),observer:this}),r!=null&&r.mutationKey&&this.options.mutationKey&&Ve(r.mutationKey)!==Ve(this.options.mutationKey)?this.reset():((i=h(this,U))==null?void 0:i.state.status)==="pending"&&h(this,U).setOptions(this.options)}onSubscribe(){this.listeners.size===1&&h(this,U)&&(h(this,U).addObserver(this),A(this,se,pe).call(this))}onUnsubscribe(){var t;this.hasListeners()||(t=h(this,U))==null||t.removeObserver(this)}onMutationUpdate(t){A(this,se,pe).call(this),A(this,se,Te).call(this,t)}getCurrentResult(){return h(this,ae)}reset(){var t;(t=h(this,U))==null||t.removeObserver(this),L(this,U,void 0),A(this,se,pe).call(this),A(this,se,Te).call(this)}mutate(t,r){var i;return L(this,ye,r),(i=h(this,U))==null||i.removeObserver(this),L(this,U,h(this,ie).getMutationCache().build(h(this,ie),this.options)),h(this,U).addObserver(this),h(this,U).execute(t)}},ie=new WeakMap,ae=new WeakMap,U=new WeakMap,ye=new WeakMap,se=new WeakSet,pe=function(){var r;const t=((r=h(this,U))==null?void 0:r.state)??Kt();L(this,ae,{...t,isPending:t.status==="pending",isSuccess:t.status==="success",isError:t.status==="error",isIdle:t.status==="idle",mutate:this.mutate,reset:this.reset})},Te=function(t){fe.batch(()=>{var i,n,o,a;const r=h(this,ye);if(r&&this.hasListeners()){const l=h(this,ae).variables,m=h(this,ae).context,f={client:h(this,ie),meta:this.options.meta,mutationKey:this.options.mutationKey};if((t==null?void 0:t.type)==="success"){try{(i=r.onSuccess)==null||i.call(r,t.data,l,m,f)}catch(b){Promise.reject(b)}try{(n=r.onSettled)==null||n.call(r,t.data,null,l,m,f)}catch(b){Promise.reject(b)}}else if((t==null?void 0:t.type)==="error"){try{(o=r.onError)==null||o.call(r,t.error,l,m,f)}catch(b){Promise.reject(b)}try{(a=r.onSettled)==null||a.call(r,void 0,t.error,l,m,f)}catch(b){Promise.reject(b)}}}this.listeners.forEach(l=>{l(h(this,ae))})})},nt);function Je(s,t){const r=new Set(t);return s.filter(i=>!r.has(i))}var ue,Q,he,oe,G,le,ge,ve,we,je,O,Le,Oe,Nt,Me,Ae,De,ot,Ls=(ot=class extends lt{constructor(t,r,i){super();z(this,O);z(this,ue);z(this,Q);z(this,he);z(this,oe);z(this,G);z(this,le);z(this,ge);z(this,ve);z(this,we);z(this,je,[]);L(this,ue,t),L(this,oe,i),L(this,he,[]),L(this,G,[]),L(this,Q,[]),this.setQueries(r)}onSubscribe(){this.listeners.size===1&&h(this,G).forEach(t=>{t.subscribe(r=>{A(this,O,Ae).call(this,t,r)})})}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,h(this,G).forEach(t=>{t.destroy()})}setQueries(t,r){L(this,he,t),L(this,oe,r),fe.batch(()=>{const i=h(this,G),n=A(this,O,Me).call(this,h(this,he));n.forEach(p=>p.observer.setOptions(p.defaultedQueryOptions));const o=n.map(p=>p.observer),a=o.map(p=>p.getCurrentResult()),l=i.length!==o.length,m=o.some((p,j)=>p!==i[j]),f=l||m,b=f?!0:a.some((p,j)=>{const N=h(this,Q)[j];return!N||!ct(p,N)});!f&&!b||(f&&(L(this,je,n),L(this,G,o)),L(this,Q,a),this.hasListeners()&&(f&&(Je(i,o).forEach(p=>{p.destroy()}),Je(o,i).forEach(p=>{p.subscribe(j=>{A(this,O,Ae).call(this,p,j)})})),A(this,O,De).call(this)))})}getCurrentResult(){return h(this,Q)}getQueries(){return h(this,G).map(t=>t.getCurrentQuery())}getObservers(){return h(this,G)}getOptimisticResult(t,r){const i=A(this,O,Me).call(this,t),n=i.map(a=>a.observer.getOptimisticResult(a.defaultedQueryOptions)),o=i.map(a=>a.defaultedQueryOptions.queryHash);return[n,a=>A(this,O,Oe).call(this,a??n,r,o),()=>A(this,O,Le).call(this,n,i)]}},ue=new WeakMap,Q=new WeakMap,he=new WeakMap,oe=new WeakMap,G=new WeakMap,le=new WeakMap,ge=new WeakMap,ve=new WeakMap,we=new WeakMap,je=new WeakMap,O=new WeakSet,Le=function(t,r){const i=new Set;return r.map((n,o)=>{const a=t[o];return n.defaultedQueryOptions.notifyOnChangeProps?a:n.observer.trackResult(a,l=>{i.has(l)||(i.add(l),r.forEach(m=>{m.observer.trackProp(l)}))})})},Oe=function(t,r,i){if(r){const n=h(this,we),o=i!==void 0&&n!==void 0&&(n.length!==i.length||i.some((a,l)=>a!==n[l]));return(h(this,Q)!==h(this,ve)||o||r!==h(this,ge))&&(L(this,ge,r),L(this,ve,h(this,Q)),i!==void 0&&L(this,we,i),L(this,le,Qt(h(this,le),r(t)))),h(this,le)}return t},Nt=function(){var t;return!((t=h(this,oe))!=null&&t.combine)||h(this,G).some((r,i)=>{var n;return r.options.suspense&&((n=h(this,Q)[i])==null?void 0:n.data)===void 0})},Me=function(t){const r=new Map;h(this,G).forEach(n=>{const o=n.options.queryHash;if(!o)return;const a=r.get(o);a?a.push(n):r.set(o,[n])});const i=[];return t.forEach(n=>{var l;const o=h(this,ue).defaultQueryOptions(n),a=((l=r.get(o.queryHash))==null?void 0:l.shift())??new dt(h(this,ue),o);i.push({defaultedQueryOptions:o,observer:a})}),i},Ae=function(t,r){const i=h(this,G).indexOf(t);i!==-1&&(L(this,Q,h(this,Q).slice()),h(this,Q)[i]=r,A(this,O,De).call(this))},De=function(){var t;if(this.hasListeners()){const r=A(this,O,Nt).call(this),i=h(this,le),n=r?i:A(this,O,Oe).call(this,A(this,O,Le).call(this,h(this,Q),h(this,je)),(t=h(this,oe))==null?void 0:t.combine);(r||i!==n)&&fe.batch(()=>{this.listeners.forEach(o=>{o(h(this,Q))})})}},ot);function Os({queries:s,...t},r){const i=_e(),n=Bt(),o=Vt(),a=t.subscribed!==!1,l=d.useMemo(()=>s.map(S=>{const y=i.defaultQueryOptions(S);return y._optimisticResults=n?"isRestoring":a?"optimistic":void 0,y}),[s,i,n,a]);l.forEach(S=>{Gt(S);const y=i.getQueryCache().get(S.queryHash);Yt(S,o,y)}),Wt(o);const[m]=d.useState(()=>new Ls(i,l,t)),[f,b,p]=m.getOptimisticResult(l,t.combine),j=!n&&a;d.useSyncExternalStore(d.useCallback(S=>j?m.subscribe(fe.batchCalls(S)):ut,[m,j]),()=>m.getCurrentResult(),()=>m.getCurrentResult()),d.useEffect(()=>{m.setQueries(l,t)},[l,t,m]);const N=f.some((S,y)=>Ge(l[y],S))?f.flatMap((S,y)=>{const k=l[y];if(k&&Ge(k,S)){const $=new dt(i,k);return Jt(k,$,o)}return[]}):[];if(N.length>0)throw Promise.all(N);const R=f.find((S,y)=>{const k=l[y];return k&&Xt({result:S,errorResetBoundary:o,throwOnError:k.throwOnError,query:i.getQueryCache().get(k.queryHash),suspense:k.suspense})});if(R)throw R.error;return b(p())}function xe(s,t){const r=_e(),[i]=d.useState(()=>new Ts(r,s));d.useEffect(()=>{i.setOptions(s)},[i,s]);const n=d.useSyncExternalStore(d.useCallback(a=>i.subscribe(fe.batchCalls(a)),[i]),()=>i.getCurrentResult(),()=>i.getCurrentResult()),o=d.useCallback((...a)=>{i.mutate(a[0],a[1]).catch(ut)},[i]);if(n.error&&Zt(i.options.throwOnError,[n.error]))throw n.error;return{...n,mutate:o,mutateAsync:n.mutate}}/**
2
+ * @license lucide-react v1.60.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
5
5
  * See the LICENSE file in the root directory of this source tree.
6
6
  */const kt={name:"arrow-up-right",size:24,node:[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]};kt.node;const St=ce(kt);/**
7
- * @license lucide-react v1.59.0 - ISC
7
+ * @license lucide-react v1.60.0 - ISC
8
8
  *
9
9
  * This source code is licensed under the ISC license.
10
10
  * See the LICENSE file in the root directory of this source tree.
11
11
  */const _t={name:"clipboard-copy",size:24,node:[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",key:"4jdomd"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v4",key:"3hqy98"}],["path",{d:"M21 14H11",key:"1bme5i"}],["path",{d:"m15 10-4 4 4 4",key:"5dvupr"}]]};_t.node;const Ms=ce(_t);/**
12
- * @license lucide-react v1.59.0 - ISC
12
+ * @license lucide-react v1.60.0 - ISC
13
13
  *
14
14
  * This source code is licensed under the ISC license.
15
15
  * See the LICENSE file in the root directory of this source tree.
16
16
  */const It={name:"ellipsis",size:24,node:[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],aliases:["more-horizontal"]};It.node;const As=ce(It);/**
17
- * @license lucide-react v1.59.0 - ISC
17
+ * @license lucide-react v1.60.0 - ISC
18
18
  *
19
19
  * This source code is licensed under the ISC license.
20
20
  * See the LICENSE file in the root directory of this source tree.
21
21
  */const Rt={name:"folder-open",size:24,node:[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]};Rt.node;const Xe=ce(Rt);/**
22
- * @license lucide-react v1.59.0 - ISC
22
+ * @license lucide-react v1.60.0 - ISC
23
23
  *
24
24
  * This source code is licensed under the ISC license.
25
25
  * See the LICENSE file in the root directory of this source tree.
26
26
  */const Ct={name:"image-off",size:24,node:[["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}],["path",{d:"M10.41 10.41a2 2 0 1 1-2.83-2.83",key:"1bzlo9"}],["line",{x1:"13.5",x2:"6",y1:"13.5",y2:"21",key:"1q0aeu"}],["line",{x1:"18",x2:"21",y1:"12",y2:"15",key:"5mozeu"}],["path",{d:"M3.59 3.59A1.99 1.99 0 0 0 3 5v14a2 2 0 0 0 2 2h14c.55 0 1.052-.22 1.41-.59",key:"mmje98"}],["path",{d:"M21 15V5a2 2 0 0 0-2-2H9",key:"43el77"}]]};Ct.node;const Ds=ce(Ct);/**
27
- * @license lucide-react v1.59.0 - ISC
27
+ * @license lucide-react v1.60.0 - ISC
28
28
  *
29
29
  * This source code is licensed under the ISC license.
30
30
  * See the LICENSE file in the root directory of this source tree.
31
31
  */const Et={name:"images",size:24,node:[["path",{d:"m22 11-1.296-1.296a2.4 2.4 0 0 0-3.408 0L11 16",key:"9kzy35"}],["path",{d:"M4 8a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2",key:"1t0f0t"}],["circle",{cx:"13",cy:"7",r:"1",fill:"currentColor",key:"1obus6"}],["rect",{x:"8",y:"2",width:"14",height:"14",rx:"2",key:"1gvhby"}]]};Et.node;const qs=ce(Et);/**
32
- * @license lucide-react v1.59.0 - ISC
32
+ * @license lucide-react v1.60.0 - ISC
33
33
  *
34
34
  * This source code is licensed under the ISC license.
35
35
  * See the LICENSE file in the root directory of this source tree.