aicodeman 1.1.13 → 1.1.15

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 (65) hide show
  1. package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
  2. package/dist/web/public/{app.a24e7b65.js → app.61e2966f.js} +13 -12
  3. package/dist/web/public/app.61e2966f.js.br +0 -0
  4. package/dist/web/public/app.61e2966f.js.gz +0 -0
  5. package/dist/web/public/constants.1c779517.js.gz +0 -0
  6. package/dist/web/public/image-input.0ea86695.js.gz +0 -0
  7. package/dist/web/public/index.html +7 -7
  8. package/dist/web/public/index.html.br +0 -0
  9. package/dist/web/public/index.html.gz +0 -0
  10. package/dist/web/public/input-cjk.4e950e0a.js.gz +0 -0
  11. package/dist/web/public/keyboard-accessory.3f91acef.js.gz +0 -0
  12. package/dist/web/public/mobile-handlers.b5a667ef.js.gz +0 -0
  13. package/dist/web/public/mobile.38346326.css.gz +0 -0
  14. package/dist/web/public/{notification-manager.9c984ac2.js → notification-manager.ca9dc40d.js} +1 -1
  15. package/dist/web/public/notification-manager.ca9dc40d.js.br +0 -0
  16. package/dist/web/public/{notification-manager.9c984ac2.js.gz → notification-manager.ca9dc40d.js.gz} +0 -0
  17. package/dist/web/public/orchestrator-panel.js +2 -2
  18. package/dist/web/public/orchestrator-panel.js.br +0 -0
  19. package/dist/web/public/orchestrator-panel.js.gz +0 -0
  20. package/dist/web/public/{panels-ui.f3f08e26.js → panels-ui.aedcf302.js} +17 -17
  21. package/dist/web/public/panels-ui.aedcf302.js.br +0 -0
  22. package/dist/web/public/panels-ui.aedcf302.js.gz +0 -0
  23. package/dist/web/public/ralph-panel.6de2d0f8.js.gz +0 -0
  24. package/dist/web/public/ralph-wizard.13a1831e.js.gz +0 -0
  25. package/dist/web/public/respawn-ui.2d249da9.js.gz +0 -0
  26. package/dist/web/public/sanitize-html.bc7078d6.js.gz +0 -0
  27. package/dist/web/public/{session-ui.1463b824.js → session-ui.0ee6c334.js} +5 -5
  28. package/dist/web/public/{session-ui.1463b824.js.br → session-ui.0ee6c334.js.br} +0 -0
  29. package/dist/web/public/{session-ui.1463b824.js.gz → session-ui.0ee6c334.js.gz} +0 -0
  30. package/dist/web/public/settings-ui.38feb956.js.gz +0 -0
  31. package/dist/web/public/{styles.e0388c26.css → styles.4d2984bd.css} +1 -1
  32. package/dist/web/public/styles.4d2984bd.css.br +0 -0
  33. package/dist/web/public/styles.4d2984bd.css.gz +0 -0
  34. package/dist/web/public/{subagent-windows.07e139f2.js → subagent-windows.69b60c35.js} +8 -4
  35. package/dist/web/public/subagent-windows.69b60c35.js.br +0 -0
  36. package/dist/web/public/subagent-windows.69b60c35.js.gz +0 -0
  37. package/dist/web/public/sw.js.gz +0 -0
  38. package/dist/web/public/terminal-ui.70596bbd.js.gz +0 -0
  39. package/dist/web/public/ultracode-panel.js +13 -23
  40. package/dist/web/public/ultracode-panel.js.br +0 -0
  41. package/dist/web/public/ultracode-panel.js.gz +0 -0
  42. package/dist/web/public/ultracode-windows.js +449 -12
  43. package/dist/web/public/ultracode-windows.js.br +0 -0
  44. package/dist/web/public/ultracode-windows.js.gz +0 -0
  45. package/dist/web/public/upload.html.gz +0 -0
  46. package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
  47. package/dist/web/public/vendor/marked.min.js.gz +0 -0
  48. package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
  49. package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
  50. package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
  51. package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
  52. package/dist/web/public/vendor/xterm-zerolag-input.137ad9f0.js.gz +0 -0
  53. package/dist/web/public/vendor/xterm.css.gz +0 -0
  54. package/dist/web/public/vendor/xterm.min.js.gz +0 -0
  55. package/dist/web/public/voice-input.085e9e73.js.gz +0 -0
  56. package/package.json +1 -1
  57. package/dist/web/public/app.a24e7b65.js.br +0 -0
  58. package/dist/web/public/app.a24e7b65.js.gz +0 -0
  59. package/dist/web/public/notification-manager.9c984ac2.js.br +0 -0
  60. package/dist/web/public/panels-ui.f3f08e26.js.br +0 -0
  61. package/dist/web/public/panels-ui.f3f08e26.js.gz +0 -0
  62. package/dist/web/public/styles.e0388c26.css.br +0 -0
  63. package/dist/web/public/styles.e0388c26.css.gz +0 -0
  64. package/dist/web/public/subagent-windows.07e139f2.js.br +0 -0
  65. package/dist/web/public/subagent-windows.07e139f2.js.gz +0 -0
@@ -33,10 +33,10 @@ Object.assign(CodemanApp.prototype, {
33
33
  const truncatedName = displayName.length > 25 ? displayName.substring(0, 25) + '…' : displayName;
34
34
  const statusClass = agent?.status || 'idle';
35
35
  agentItems.push(`
36
- <div class="subagent-dropdown-item" onclick="event.stopPropagation(); app.restoreMinimizedSubagent('${escapeHtml(agentId)}', '${escapeHtml(sessionId)}')" title="Click to restore">
36
+ <div class="subagent-dropdown-item" onclick="event.stopPropagation(); app.restoreMinimizedSubagent(${escapeHtml(JSON.stringify(agentId))}, ${escapeHtml(JSON.stringify(sessionId))})" title="Click to restore">
37
37
  <span class="subagent-dropdown-status ${statusClass}"></span>
38
38
  <span class="subagent-dropdown-name">${escapeHtml(truncatedName)}</span>
39
- <span class="subagent-dropdown-close" onclick="event.stopPropagation(); app.permanentlyCloseMinimizedSubagent('${escapeHtml(agentId)}', '${escapeHtml(sessionId)}')" title="Dismiss">&times;</span>
39
+ <span class="subagent-dropdown-close" onclick="event.stopPropagation(); app.permanentlyCloseMinimizedSubagent(${escapeHtml(JSON.stringify(agentId))}, ${escapeHtml(JSON.stringify(sessionId))})" title="Dismiss">&times;</span>
40
40
  </div>
41
41
  `);
42
42
  }
@@ -461,6 +461,10 @@ Object.assign(CodemanApp.prototype, {
461
461
  if (typeof this._appendUltracodeConnectionLines === 'function') {
462
462
  this._appendUltracodeConnectionLines(svg, rects);
463
463
  }
464
+ // Agent-transcript windows → their run window / tab (ultracode-windows.js).
465
+ if (typeof this._appendUltracodeAgentConnectionLines === 'function') {
466
+ this._appendUltracodeAgentConnectionLines(svg, rects);
467
+ }
464
468
  },
465
469
 
466
470
  // ═══════════════════════════════════════════════════════════════
@@ -695,7 +699,7 @@ Object.assign(CodemanApp.prototype, {
695
699
  parentSessionId && parentSessionName
696
700
  ? `<div class="subagent-window-parent" data-parent-session="${parentSessionId}">
697
701
  <span class="parent-label">from</span>
698
- <span class="parent-name" onclick="app.selectSession('${escapeHtml(parentSessionId)}')">${escapeHtml(parentSessionName)}</span>
702
+ <span class="parent-name" onclick="app.selectSession(${escapeHtml(JSON.stringify(parentSessionId))})">${escapeHtml(parentSessionName)}</span>
699
703
  </div>`
700
704
  : '';
701
705
 
@@ -716,7 +720,7 @@ Object.assign(CodemanApp.prototype, {
716
720
  <span class="status ${agent.status}">${agent.status}</span>
717
721
  </div>
718
722
  <div class="subagent-window-actions">
719
- <button onclick="app.closeSubagentWindow('${escapeHtml(agentId)}')" title="Minimize to tab">─</button>
723
+ <button onclick="app.closeSubagentWindow(${escapeHtml(JSON.stringify(agentId))})" title="Minimize to tab">─</button>
720
724
  </div>
721
725
  </div>
722
726
  ${parentHeader}
Binary file
@@ -131,12 +131,15 @@ Object.assign(CodemanApp.prototype, {
131
131
  }
132
132
  },
133
133
 
134
- // Phase 4: open an agent's live transcript by agentId. The workflow agent's
134
+ // Phase 4: fetch an agent's live transcript by agentId. The workflow agent's
135
135
  // agentId is byte-identical to the agent-<id>.jsonl stem already tracked by
136
136
  // subagent-watcher, so we reuse the existing transcript route — no watcher edits.
137
- // Graceful when the agent isn't tracked yet / aged out / tracking disabled.
138
- async openWorkflowAgentTranscript(agentId) {
139
- if (!agentId) return;
137
+ // Returns { formatted: string[], entryCount } or null when nothing is available
138
+ // (queued / aged out of tracking / tracking disabled). Rendering into a connected
139
+ // in-page floating window lives in ultracode-windows.js (openUltracodeAgentWindow)
140
+ // we no longer spawn a detached browser popup.
141
+ async _fetchWorkflowAgentTranscript(agentId) {
142
+ if (!agentId) return null;
140
143
  let data = null;
141
144
  try {
142
145
  const res = await fetch(`/api/subagents/${encodeURIComponent(agentId)}/transcript?format=formatted`);
@@ -147,21 +150,8 @@ Object.assign(CodemanApp.prototype, {
147
150
  const ok = data && data.success && data.data;
148
151
  const formatted = ok ? data.data.formatted : null;
149
152
  const entryCount = ok ? data.data.entryCount || 0 : 0;
150
- if (!formatted || !entryCount) {
151
- alert(
152
- 'No transcript available for this agent yet — it may be queued, aged out of tracking, or subagent tracking is disabled.'
153
- );
154
- return;
155
- }
156
- const win = window.open('', '_blank', 'width=860,height=640');
157
- if (!win) return; // popup blocked
158
- win.document.write(
159
- `<html><head><title>Workflow agent ${escapeHtml(agentId)} transcript</title>` +
160
- `<style>body{background:#1a1a2e;color:#eee;font-family:monospace;padding:20px}pre{white-space:pre-wrap;word-wrap:break-word}</style>` +
161
- `</head><body><h2>Workflow agent ${escapeHtml(agentId)} (${entryCount} entries)</h2>` +
162
- `<pre>${escapeHtml(formatted.join('\n'))}</pre></body></html>`
163
- );
164
- win.document.close();
153
+ if (!formatted || !entryCount) return null;
154
+ return { formatted, entryCount };
165
155
  },
166
156
 
167
157
  // ----- Render (debounced) -----
@@ -214,7 +204,7 @@ Object.assign(CodemanApp.prototype, {
214
204
  phasesHtml = `<div class="ultracode-phase-list">${chips.join('')}</div>`;
215
205
  }
216
206
  return (
217
- `<div class="ultracode-run-item${active ? ' selected' : ''}" onclick="app.selectWorkflowRun('${escapeHtml(r.runId)}')">` +
207
+ `<div class="ultracode-run-item${active ? ' selected' : ''}" onclick="app.selectWorkflowRun(${escapeHtml(JSON.stringify(r.runId))})">` +
218
208
  `<div class="ultracode-run-head"><span class="ultracode-run-name">${name}</span>` +
219
209
  `<span class="ultracode-status ${statusCls}">${escapeHtml(status || '—')}</span></div>` +
220
210
  `<div class="ultracode-run-stats">${escapeHtml(stats)}</div>` +
@@ -262,13 +252,13 @@ Object.assign(CodemanApp.prototype, {
262
252
  const header =
263
253
  `<div class="ultracode-phase-header"><span>${escapeHtml(title)}</span>` +
264
254
  `<span class="ultracode-phase-sub">${this._fmtNum(tok)} tok · ${tools} tools</span></div>`;
265
- return header + group.map((a) => this._workflowAgentCardHtml(a)).join('');
255
+ return header + group.map((a) => this._workflowAgentCardHtml(a, runId)).join('');
266
256
  })
267
257
  .join('');
268
258
  detail.innerHTML = html;
269
259
  },
270
260
 
271
- _workflowAgentCardHtml(a) {
261
+ _workflowAgentCardHtml(a, runId) {
272
262
  const state = String(a.state || 'start');
273
263
  const stateCls = this._workflowAgentStateClass(state);
274
264
  const stateLabel = state === 'start' ? 'queued' : state === 'progress' ? 'running' : state;
@@ -289,7 +279,7 @@ Object.assign(CodemanApp.prototype, {
289
279
  const cardStateCls = state === 'done' ? ' uw-state-done' : state === 'progress' ? ' uw-state-working' : '';
290
280
  const cardAttrs = clickable
291
281
  ? ` class="ultracode-agent-card ultracode-agent-card--clickable${cardStateCls}" role="button" tabindex="0"` +
292
- ` title="View transcript" onclick="app.openWorkflowAgentTranscript('${escapeHtml(a.agentId)}')"`
282
+ ` title="View transcript" onclick="app.openUltracodeAgentWindow(${escapeHtml(JSON.stringify(a.agentId))},${escapeHtml(JSON.stringify(runId || ''))})"`
293
283
  : ` class="ultracode-agent-card${cardStateCls}"`;
294
284
  return (
295
285
  `<div${cardAttrs}>` +