rivet-design 0.10.0 → 0.10.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 (126) hide show
  1. package/dist/config/flags.d.ts +3 -0
  2. package/dist/config/flags.d.ts.map +1 -1
  3. package/dist/config/flags.js +3 -0
  4. package/dist/config/flags.js.map +1 -1
  5. package/dist/index.d.ts +32 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +249 -3
  8. package/dist/index.js.map +1 -1
  9. package/dist/mcp/agent-variants/SessionStore.d.ts +43 -0
  10. package/dist/mcp/agent-variants/SessionStore.d.ts.map +1 -1
  11. package/dist/mcp/agent-variants/SessionStore.js +174 -9
  12. package/dist/mcp/agent-variants/SessionStore.js.map +1 -1
  13. package/dist/mcp/agent-variants/WorktreeOrchestrator.d.ts +21 -0
  14. package/dist/mcp/agent-variants/WorktreeOrchestrator.d.ts.map +1 -1
  15. package/dist/mcp/agent-variants/WorktreeOrchestrator.js +225 -11
  16. package/dist/mcp/agent-variants/WorktreeOrchestrator.js.map +1 -1
  17. package/dist/mcp/agent-variants/contracts.d.ts +13 -4
  18. package/dist/mcp/agent-variants/contracts.d.ts.map +1 -1
  19. package/dist/mcp/agent-variants/contracts.js +4 -1
  20. package/dist/mcp/agent-variants/contracts.js.map +1 -1
  21. package/dist/mcp/agent-variants/errors.d.ts +1 -1
  22. package/dist/mcp/agent-variants/errors.d.ts.map +1 -1
  23. package/dist/mcp/agent-variants/errors.js +1 -0
  24. package/dist/mcp/agent-variants/errors.js.map +1 -1
  25. package/dist/mcp/agent-variants/tools.d.ts.map +1 -1
  26. package/dist/mcp/agent-variants/tools.js +17 -0
  27. package/dist/mcp/agent-variants/tools.js.map +1 -1
  28. package/dist/mcp/changeBatchClassification.d.ts +2 -0
  29. package/dist/mcp/changeBatchClassification.d.ts.map +1 -1
  30. package/dist/mcp/changeBatchClassification.js +7 -0
  31. package/dist/mcp/changeBatchClassification.js.map +1 -1
  32. package/dist/mcp/server.d.ts +25 -0
  33. package/dist/mcp/server.d.ts.map +1 -1
  34. package/dist/mcp/server.js +156 -102
  35. package/dist/mcp/server.js.map +1 -1
  36. package/dist/proxy-middleware/preview-bridge.d.ts +24 -0
  37. package/dist/proxy-middleware/preview-bridge.d.ts.map +1 -0
  38. package/dist/proxy-middleware/preview-bridge.js +358 -0
  39. package/dist/proxy-middleware/preview-bridge.js.map +1 -0
  40. package/dist/proxy-middleware/proxy-config.d.ts +5 -1
  41. package/dist/proxy-middleware/proxy-config.d.ts.map +1 -1
  42. package/dist/proxy-middleware/proxy-config.js +62 -18
  43. package/dist/proxy-middleware/proxy-config.js.map +1 -1
  44. package/dist/routes/controls.d.ts +7 -0
  45. package/dist/routes/controls.d.ts.map +1 -0
  46. package/dist/routes/controls.js +50 -0
  47. package/dist/routes/controls.js.map +1 -0
  48. package/dist/routes/mcp.d.ts +3 -1
  49. package/dist/routes/mcp.d.ts.map +1 -1
  50. package/dist/routes/mcp.js +172 -28
  51. package/dist/routes/mcp.js.map +1 -1
  52. package/dist/routes/static.d.ts +6 -1
  53. package/dist/routes/static.d.ts.map +1 -1
  54. package/dist/routes/static.js +15 -3
  55. package/dist/routes/static.js.map +1 -1
  56. package/dist/server.d.ts +48 -0
  57. package/dist/server.d.ts.map +1 -1
  58. package/dist/server.js +230 -33
  59. package/dist/server.js.map +1 -1
  60. package/dist/services/AgentSessionService.d.ts +87 -0
  61. package/dist/services/AgentSessionService.d.ts.map +1 -0
  62. package/dist/services/AgentSessionService.js +275 -0
  63. package/dist/services/AgentSessionService.js.map +1 -0
  64. package/dist/services/ConfigManager.d.ts +7 -0
  65. package/dist/services/ConfigManager.d.ts.map +1 -1
  66. package/dist/services/ConfigManager.js +13 -0
  67. package/dist/services/ConfigManager.js.map +1 -1
  68. package/dist/services/FeatureFlagService.d.ts.map +1 -1
  69. package/dist/services/FeatureFlagService.js +13 -0
  70. package/dist/services/FeatureFlagService.js.map +1 -1
  71. package/dist/services/HostedDemoAuthSessionService.d.ts +6 -0
  72. package/dist/services/HostedDemoAuthSessionService.d.ts.map +1 -1
  73. package/dist/services/HostedDemoAuthSessionService.js +13 -0
  74. package/dist/services/HostedDemoAuthSessionService.js.map +1 -1
  75. package/dist/services/InlineVariantGenerationService.d.ts +50 -0
  76. package/dist/services/InlineVariantGenerationService.d.ts.map +1 -0
  77. package/dist/services/InlineVariantGenerationService.js +394 -0
  78. package/dist/services/InlineVariantGenerationService.js.map +1 -0
  79. package/dist/services/InterfaceGenerationService.d.ts +12 -0
  80. package/dist/services/InterfaceGenerationService.d.ts.map +1 -0
  81. package/dist/services/InterfaceGenerationService.js +256 -0
  82. package/dist/services/InterfaceGenerationService.js.map +1 -0
  83. package/dist/services/SessionBridgeService.d.ts +11 -3
  84. package/dist/services/SessionBridgeService.d.ts.map +1 -1
  85. package/dist/services/SessionBridgeService.js +35 -3
  86. package/dist/services/SessionBridgeService.js.map +1 -1
  87. package/dist/services/TerminalAgentRunner.d.ts +65 -0
  88. package/dist/services/TerminalAgentRunner.d.ts.map +1 -0
  89. package/dist/services/TerminalAgentRunner.js +511 -0
  90. package/dist/services/TerminalAgentRunner.js.map +1 -0
  91. package/dist/services/WorktreeManager.d.ts +5 -4
  92. package/dist/services/WorktreeManager.d.ts.map +1 -1
  93. package/dist/services/WorktreeManager.js +22 -12
  94. package/dist/services/WorktreeManager.js.map +1 -1
  95. package/dist/services/accessTokenRefresh.d.ts +8 -0
  96. package/dist/services/accessTokenRefresh.d.ts.map +1 -1
  97. package/dist/services/accessTokenRefresh.js +30 -1
  98. package/dist/services/accessTokenRefresh.js.map +1 -1
  99. package/dist/services/createAgentVariantsOrchestrator.d.ts +16 -0
  100. package/dist/services/createAgentVariantsOrchestrator.d.ts.map +1 -0
  101. package/dist/services/createAgentVariantsOrchestrator.js +42 -0
  102. package/dist/services/createAgentVariantsOrchestrator.js.map +1 -0
  103. package/dist/types/change-request-types.d.ts +29 -0
  104. package/dist/types/change-request-types.d.ts.map +1 -1
  105. package/dist/types/editor-interface-types.d.ts +67 -0
  106. package/dist/types/editor-interface-types.d.ts.map +1 -0
  107. package/dist/types/editor-interface-types.js +12 -0
  108. package/dist/types/editor-interface-types.js.map +1 -0
  109. package/dist/utils/elementFileHintSignals.d.ts +8 -0
  110. package/dist/utils/elementFileHintSignals.d.ts.map +1 -0
  111. package/dist/utils/elementFileHintSignals.js +40 -0
  112. package/dist/utils/elementFileHintSignals.js.map +1 -0
  113. package/dist/utils/formatElementTargetingContext.d.ts +34 -0
  114. package/dist/utils/formatElementTargetingContext.d.ts.map +1 -0
  115. package/dist/utils/formatElementTargetingContext.js +88 -0
  116. package/dist/utils/formatElementTargetingContext.js.map +1 -0
  117. package/dist/utils/queueAccess.d.ts +11 -0
  118. package/dist/utils/queueAccess.d.ts.map +1 -0
  119. package/dist/utils/queueAccess.js +15 -0
  120. package/dist/utils/queueAccess.js.map +1 -0
  121. package/package.json +1 -1
  122. package/src/ui/dist/assets/main-C8QYh4jE.css +1 -0
  123. package/src/ui/dist/assets/main-CMk2ORlB.js +645 -0
  124. package/src/ui/dist/index.html +2 -2
  125. package/src/ui/dist/assets/main-BZEruoyc.css +0 -1
  126. package/src/ui/dist/assets/main-CIJUZXe8.js +0 -382
@@ -0,0 +1,394 @@
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.InlineVariantGenerationService = void 0;
7
+ const crypto_1 = require("crypto");
8
+ const path_1 = __importDefault(require("path"));
9
+ const index_core_1 = require("../index-core");
10
+ const changeBatchClassification_1 = require("../mcp/changeBatchClassification");
11
+ const log = (0, index_core_1.createLogger)('InlineVariantGenerationService');
12
+ const INLINE_VARIANT_LEASE_HEARTBEAT_MS = 60_000;
13
+ const INLINE_VARIANT_BRIEF_DIRECTIONS = [
14
+ {
15
+ label: 'Refined Focus',
16
+ body: 'Subtle polish with tighter hierarchy and calmer emphasis.',
17
+ },
18
+ {
19
+ label: 'Bold Contrast',
20
+ body: 'Stronger contrast with clearer visual weight and presence.',
21
+ },
22
+ {
23
+ label: 'Airy Layout',
24
+ body: 'More breathing room with lighter spacing and softer rhythm.',
25
+ },
26
+ {
27
+ label: 'Editorial Polish',
28
+ body: 'Magazine-like composition with crisp details and confident tone.',
29
+ },
30
+ {
31
+ label: 'Playful Accent',
32
+ body: 'Expressive accents with lively color and approachable energy.',
33
+ },
34
+ {
35
+ label: 'Calm Minimal',
36
+ body: 'Reduced ornament with quiet structure and restrained styling.',
37
+ },
38
+ {
39
+ label: 'Dense Utility',
40
+ body: 'Compact information density with practical controls and clarity.',
41
+ },
42
+ {
43
+ label: 'Sharp Detail',
44
+ body: 'Precise edges with stronger alignment and cleaner finishing.',
45
+ },
46
+ ];
47
+ const hasWhitespace = (value) => /\s/.test(value);
48
+ const deriveTarget = (element) => {
49
+ const filePaths = element.filePaths ?? [];
50
+ if (filePaths.length === 1) {
51
+ return { type: 'file', ref: filePaths[0] };
52
+ }
53
+ if (element.rivetId) {
54
+ return {
55
+ type: 'element',
56
+ ref: `[data-rivet-id="${element.rivetId}"]`,
57
+ };
58
+ }
59
+ if (element.id && !hasWhitespace(element.id)) {
60
+ return { type: 'element', ref: `#${element.id}` };
61
+ }
62
+ if (element.xpath) {
63
+ return { type: 'element', ref: element.xpath };
64
+ }
65
+ const classTokens = element.className.trim().split(/\s+/).filter(Boolean);
66
+ if (classTokens.length === 1) {
67
+ return { type: 'element', ref: `.${classTokens[0]}` };
68
+ }
69
+ return { type: 'element', ref: element.tagName.toLowerCase() };
70
+ };
71
+ const getWorktreePath = (workItem) => {
72
+ if (!workItem.input || typeof workItem.input !== 'object') {
73
+ return null;
74
+ }
75
+ const worktreePath = workItem.input
76
+ .worktreePath;
77
+ return typeof worktreePath === 'string' && worktreePath.trim()
78
+ ? worktreePath
79
+ : null;
80
+ };
81
+ const getBrief = (workItem) => {
82
+ const input = workItem.input && typeof workItem.input === 'object'
83
+ ? workItem.input
84
+ : {};
85
+ return {
86
+ label: typeof input.briefLabel === 'string' && input.briefLabel.trim()
87
+ ? input.briefLabel
88
+ : 'Variant',
89
+ body: typeof input.briefBody === 'string' && input.briefBody.trim()
90
+ ? input.briefBody
91
+ : 'Create a distinct inline variation.',
92
+ };
93
+ };
94
+ const isInsidePath = (rootPath, candidatePath) => {
95
+ const relativePath = path_1.default.relative(rootPath, candidatePath);
96
+ return (relativePath === '' ||
97
+ (!relativePath.startsWith('..') && !path_1.default.isAbsolute(relativePath)));
98
+ };
99
+ const rebaseFilePath = (args) => {
100
+ const trimmedPath = args.filePath.trim();
101
+ if (!trimmedPath) {
102
+ return null;
103
+ }
104
+ if (!path_1.default.isAbsolute(trimmedPath)) {
105
+ const worktreeRelativePath = path_1.default.resolve(args.worktreeProjectPath, trimmedPath);
106
+ return isInsidePath(args.worktreeProjectPath, worktreeRelativePath)
107
+ ? worktreeRelativePath
108
+ : null;
109
+ }
110
+ if (isInsidePath(args.worktreePath, trimmedPath)) {
111
+ return trimmedPath;
112
+ }
113
+ if (args.baseProjectPath && isInsidePath(args.baseProjectPath, trimmedPath)) {
114
+ return path_1.default.join(args.worktreeProjectPath, path_1.default.relative(args.baseProjectPath, trimmedPath));
115
+ }
116
+ return null;
117
+ };
118
+ const rebaseFilePaths = (args) => Array.from(new Set(args.filePaths
119
+ .map((filePath) => rebaseFilePath({
120
+ filePath,
121
+ baseProjectPath: args.baseProjectPath,
122
+ worktreePath: args.worktreePath,
123
+ worktreeProjectPath: args.worktreeProjectPath,
124
+ }))
125
+ .filter((filePath) => Boolean(filePath))));
126
+ const rebaseElementFilePaths = (args) => ({
127
+ ...args.element,
128
+ filePaths: rebaseFilePaths({
129
+ filePaths: args.element.filePaths,
130
+ baseProjectPath: args.baseProjectPath,
131
+ worktreePath: args.worktreePath,
132
+ worktreeProjectPath: args.worktreeProjectPath,
133
+ }),
134
+ });
135
+ const buildInlineVariantBriefs = (count) => INLINE_VARIANT_BRIEF_DIRECTIONS.slice(0, count).map((brief) => ({
136
+ ...brief,
137
+ }));
138
+ const buildVariantChangeRequest = (args) => {
139
+ const brief = getBrief(args.workItem);
140
+ const instruction = [
141
+ `Create inline variant "${brief.label}".`,
142
+ `Variant direction: ${brief.body}`,
143
+ `Original request: ${args.comment.instruction}`,
144
+ 'Apply the change only in this variant worktree. Keep the edit scoped to the selected/commented element context.',
145
+ ].join('\n');
146
+ return {
147
+ ...args.baseRequest,
148
+ worktreePath: args.worktreePath,
149
+ sourceFiles: rebaseFilePaths({
150
+ filePaths: args.baseRequest.sourceFiles,
151
+ baseProjectPath: args.baseProjectPath,
152
+ worktreePath: args.worktreePath,
153
+ worktreeProjectPath: args.worktreeProjectPath,
154
+ }),
155
+ changes: [
156
+ {
157
+ ...args.comment,
158
+ element: rebaseElementFilePaths({
159
+ element: args.comment.element,
160
+ baseProjectPath: args.baseProjectPath,
161
+ worktreePath: args.worktreePath,
162
+ worktreeProjectPath: args.worktreeProjectPath,
163
+ }),
164
+ elements: args.comment.elements?.map((element) => rebaseElementFilePaths({
165
+ element,
166
+ baseProjectPath: args.baseProjectPath,
167
+ worktreePath: args.worktreePath,
168
+ worktreeProjectPath: args.worktreeProjectPath,
169
+ })),
170
+ instruction,
171
+ variantRequest: undefined,
172
+ },
173
+ ],
174
+ };
175
+ };
176
+ /**
177
+ * Runs selected-element variant requests through the server-owned variants lifecycle.
178
+ */
179
+ class InlineVariantGenerationService {
180
+ bridge;
181
+ orchestrator;
182
+ runner;
183
+ createSessionId;
184
+ leaseHeartbeatMs;
185
+ constructor(options) {
186
+ this.bridge = options.bridge;
187
+ this.orchestrator = options.orchestrator;
188
+ this.runner = options.runner;
189
+ this.createSessionId = options.createSessionId ?? crypto_1.randomUUID;
190
+ this.leaseHeartbeatMs =
191
+ options.leaseHeartbeatMs ?? INLINE_VARIANT_LEASE_HEARTBEAT_MS;
192
+ }
193
+ /**
194
+ * @effect Starts an inline variants session, runs each leased worktree with an isolated terminal agent, and reports each result.
195
+ */
196
+ async processVariantRequest(request) {
197
+ if (!(0, changeBatchClassification_1.isSingleVariantRequestBatch)(request)) {
198
+ this.bridge.reportFeedback('Inline variants require one variant comment.');
199
+ this.bridge.setStatus('READY');
200
+ return { success: false, error: 'Invalid inline variant request' };
201
+ }
202
+ const comment = request.changes[0];
203
+ const count = comment.variantRequest?.count;
204
+ if (typeof count !== 'number') {
205
+ this.bridge.reportFeedback('Inline variant request is missing a count.');
206
+ this.bridge.setStatus('READY');
207
+ return { success: false, error: 'Missing variant count' };
208
+ }
209
+ const agentLabel = this.runner.getDisplayName?.() ?? 'Claude Code';
210
+ this.bridge.setStatus('APPLYING');
211
+ this.bridge.reportFeedback(`Starting ${count} inline variants.`);
212
+ try {
213
+ const startResult = await this.orchestrator.startUnified({
214
+ prompt: comment.instruction,
215
+ target: deriveTarget(comment.element),
216
+ projectContext: { kind: 'existing' },
217
+ leaseOwner: `rivet-agent-${agentLabel.toLowerCase().replace(/\s+/g, '-')}`,
218
+ briefs: buildInlineVariantBriefs(count),
219
+ });
220
+ const leasedItems = startResult.leasedWorkItems ?? [];
221
+ this.bridge.reportFeedback(`Creating ${leasedItems.length} worktrees.`);
222
+ if (leasedItems.length === 0) {
223
+ const error = 'No inline variant work items were leased';
224
+ this.bridge.reportFeedback(`${error}.`);
225
+ await this.orchestrator
226
+ .cancel({
227
+ sessionId: startResult.sessionId,
228
+ reason: error,
229
+ })
230
+ .catch((cancelError) => {
231
+ log.warn('Inline variant session cancellation failed', cancelError);
232
+ });
233
+ this.bridge.setStatus('READY');
234
+ return { success: false, error };
235
+ }
236
+ const results = await Promise.all(leasedItems.map((workItem, index) => this.runLeasedVariantSafely({
237
+ request,
238
+ comment,
239
+ workItem,
240
+ leaseId: startResult.leaseId ?? '',
241
+ sessionId: startResult.sessionId,
242
+ index,
243
+ })));
244
+ const isSuccess = results.every((result) => result.success);
245
+ this.bridge.reportFeedback(isSuccess
246
+ ? `${agentLabel} finished generating inline variants.`
247
+ : `${agentLabel} finished with one or more variant failures.`);
248
+ this.bridge.reportFeedback('__RIVET_REFRESH_GIT__');
249
+ this.bridge.setStatus('READY');
250
+ return isSuccess
251
+ ? { success: true }
252
+ : {
253
+ success: false,
254
+ error: results.find((result) => !result.success)?.error ??
255
+ 'Inline variant generation failed',
256
+ };
257
+ }
258
+ catch (error) {
259
+ const message = error instanceof Error ? error.message : String(error);
260
+ log.error('Inline variant generation failed', error);
261
+ this.bridge.reportFeedback(`${agentLabel} failed variants: ${message}`);
262
+ this.bridge.reportFeedback('__RIVET_REFRESH_GIT__');
263
+ this.bridge.setStatus('READY');
264
+ return { success: false, error: message };
265
+ }
266
+ }
267
+ /**
268
+ * @effect Converts per-variant setup/reporting failures into failed results after sibling runs settle.
269
+ */
270
+ async runLeasedVariantSafely(args) {
271
+ try {
272
+ return await this.runLeasedVariant(args);
273
+ }
274
+ catch (error) {
275
+ const message = error instanceof Error ? error.message : String(error);
276
+ const brief = getBrief(args.workItem);
277
+ log.error(`Inline variant ${brief.label} failed`, error);
278
+ this.bridge.reportFeedback(`Variant ${brief.label} failed: ${message}`);
279
+ await this.orchestrator
280
+ .reportComplete({
281
+ sessionId: args.sessionId,
282
+ workItemId: args.workItem.id,
283
+ leaseId: args.leaseId,
284
+ attempt: args.workItem.attempt,
285
+ status: 'failed',
286
+ error: { code: 'VARIANT_RUN_FAILED', message },
287
+ })
288
+ .catch((reportError) => {
289
+ log.warn('Inline variant failure report failed', reportError);
290
+ });
291
+ return { success: false, error: message };
292
+ }
293
+ }
294
+ /**
295
+ * @effect Runs one leased code-generation item and reports its terminal status to the variants orchestrator.
296
+ */
297
+ async runLeasedVariant(args) {
298
+ const worktreePath = getWorktreePath(args.workItem);
299
+ const brief = getBrief(args.workItem);
300
+ if (!worktreePath) {
301
+ const error = `Variant ${brief.label} has no worktree path.`;
302
+ await this.orchestrator.reportComplete({
303
+ sessionId: args.sessionId,
304
+ workItemId: args.workItem.id,
305
+ leaseId: args.leaseId,
306
+ attempt: args.workItem.attempt,
307
+ status: 'failed',
308
+ error: { code: 'MISSING_WORKTREE', message: error },
309
+ });
310
+ this.bridge.reportFeedback(error);
311
+ return { success: false, error };
312
+ }
313
+ const agentLabel = this.runner.getDisplayName?.() ?? 'Claude Code';
314
+ const terminalSessionId = this.createSessionId();
315
+ const worktreeProjectPath = await this.orchestrator.getProjectCwdInWorktree(worktreePath);
316
+ this.bridge.reportFeedback(`Running ${agentLabel} for variant ${args.index + 1}: ${brief.label}.`);
317
+ await this.orchestrator.reportComplete({
318
+ sessionId: args.sessionId,
319
+ workItemId: args.workItem.id,
320
+ leaseId: args.leaseId,
321
+ attempt: args.workItem.attempt,
322
+ status: 'running',
323
+ });
324
+ const stopHeartbeat = this.startLeaseHeartbeat({
325
+ sessionId: args.sessionId,
326
+ workItem: args.workItem,
327
+ leaseId: args.leaseId,
328
+ });
329
+ let result;
330
+ try {
331
+ result = await this.runner.runChangeRequest({
332
+ request: buildVariantChangeRequest({
333
+ baseRequest: args.request,
334
+ comment: args.comment,
335
+ workItem: args.workItem,
336
+ worktreePath,
337
+ worktreeProjectPath,
338
+ baseProjectPath: this.bridge.getProjectPath(),
339
+ }),
340
+ cwd: worktreeProjectPath,
341
+ sessionId: terminalSessionId,
342
+ resumeSession: false,
343
+ onFeedback: (message) => this.bridge.reportFeedback(`${brief.label}: ${message}`),
344
+ });
345
+ }
346
+ finally {
347
+ stopHeartbeat();
348
+ }
349
+ if (!result.success) {
350
+ const error = result.error ?? 'unknown error';
351
+ await this.orchestrator.reportComplete({
352
+ sessionId: args.sessionId,
353
+ workItemId: args.workItem.id,
354
+ leaseId: args.leaseId,
355
+ attempt: args.workItem.attempt,
356
+ status: 'failed',
357
+ error: { code: 'AGENT_FAILED', message: error },
358
+ });
359
+ this.bridge.reportFeedback(`${agentLabel} failed variant ${brief.label}: ${error}`);
360
+ return { success: false, error };
361
+ }
362
+ await this.orchestrator.reportComplete({
363
+ sessionId: args.sessionId,
364
+ workItemId: args.workItem.id,
365
+ leaseId: args.leaseId,
366
+ attempt: args.workItem.attempt,
367
+ status: 'succeeded',
368
+ output: { worktreePath, changedFiles: [] },
369
+ });
370
+ this.bridge.reportFeedback(`${agentLabel} completed variant ${brief.label}.`);
371
+ return { success: true };
372
+ }
373
+ /**
374
+ * @effect Periodically reports a running status so long terminal agent runs keep their variant lease.
375
+ */
376
+ startLeaseHeartbeat(args) {
377
+ const interval = setInterval(() => {
378
+ void this.orchestrator
379
+ .reportComplete({
380
+ sessionId: args.sessionId,
381
+ workItemId: args.workItem.id,
382
+ leaseId: args.leaseId,
383
+ attempt: args.workItem.attempt,
384
+ status: 'running',
385
+ })
386
+ .catch((error) => {
387
+ log.warn('Inline variant lease heartbeat failed', error);
388
+ });
389
+ }, this.leaseHeartbeatMs);
390
+ return () => clearInterval(interval);
391
+ }
392
+ }
393
+ exports.InlineVariantGenerationService = InlineVariantGenerationService;
394
+ //# sourceMappingURL=InlineVariantGenerationService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InlineVariantGenerationService.js","sourceRoot":"","sources":["../../src/services/InlineVariantGenerationService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { EditorInterface, InterfaceSection } from '../types/editor-interface-types';
2
+ export type GenerateInterfaceParams = {
3
+ description: string;
4
+ existingSectionTitles?: string[];
5
+ elementSummary?: string;
6
+ tokenSummary?: string;
7
+ model?: string;
8
+ };
9
+ export declare const generateEditorInterface: (params: GenerateInterfaceParams) => Promise<InterfaceSection[]>;
10
+ /** Convenience: wrap sections into a full EditorInterface. */
11
+ export declare const asEditorInterface: (intent: string, sections: InterfaceSection[]) => EditorInterface;
12
+ //# sourceMappingURL=InterfaceGenerationService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InterfaceGenerationService.d.ts","sourceRoot":"","sources":["../../src/services/InterfaceGenerationService.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EAEf,gBAAgB,EACjB,MAAM,iCAAiC,CAAC;AAqLzC,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAyEF,eAAO,MAAM,uBAAuB,GAClC,QAAQ,uBAAuB,KAC9B,OAAO,CAAC,gBAAgB,EAAE,CAmC5B,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,MAAM,EACd,UAAU,gBAAgB,EAAE,KAC3B,eAAqD,CAAC"}