@veolab/discoverylab 1.0.0 → 1.1.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.
package/dist/cli.js CHANGED
@@ -11,7 +11,7 @@ program.command("serve").description("Start the DiscoveryLab web UI server").opt
11
11
  console.log(chalk.cyan("\n DiscoveryLab"));
12
12
  console.log(chalk.gray(" AI-powered app testing & evidence generator\n"));
13
13
  try {
14
- const { startServer } = await import("./server-Q4FBWQUA.js");
14
+ const { startServer } = await import("./server-G32U7VOQ.js");
15
15
  await startServer(port);
16
16
  console.log(chalk.green(` Server running at http://localhost:${port}`));
17
17
  console.log(chalk.gray(" Press Ctrl+C to stop\n"));
@@ -26,7 +26,7 @@ program.command("serve").description("Start the DiscoveryLab web UI server").opt
26
26
  program.command("setup").description("Check and configure DiscoveryLab dependencies").action(async () => {
27
27
  console.log(chalk.cyan("\n DiscoveryLab Setup\n"));
28
28
  try {
29
- const { setupStatusTool } = await import("./setup-27CQAX6K.js");
29
+ const { setupStatusTool } = await import("./setup-EQTU7FI6.js");
30
30
  const result = await setupStatusTool.handler({});
31
31
  if (result.isError) {
32
32
  console.error(chalk.red(" Setup check failed"));
@@ -111,7 +111,7 @@ program.command("mcp").description("Run as MCP server (for Claude Code integrati
111
111
  const { getDatabase } = await import("./db-IWIL65EX.js");
112
112
  getDatabase();
113
113
  const { mcpServer } = await import("./server-3FBHBA7L.js");
114
- const { uiTools, projectTools, setupTools, captureTools, analyzeTools, canvasTools, exportTools, testingTools, integrationTools } = await import("./tools-NFJEZ2FF.js");
114
+ const { uiTools, projectTools, setupTools, captureTools, analyzeTools, canvasTools, exportTools, testingTools, integrationTools } = await import("./tools-3KYHPDCJ.js");
115
115
  mcpServer.registerTools([
116
116
  ...uiTools,
117
117
  ...projectTools,
package/dist/index.html CHANGED
@@ -6978,15 +6978,18 @@
6978
6978
  <div class="setting-item">
6979
6979
  <label class="setting-label">Anthropic Model</label>
6980
6980
  <select class="setting-input" id="anthropicModel" style="cursor: pointer;">
6981
- <option value="claude-sonnet-4-20250514">Claude Sonnet 4 ($3/$15 per 1M tokens)</option>
6982
- <option value="claude-opus-4-5-20250514">Claude Opus 4.5 ($5/$25) - Most capable</option>
6983
- <option value="claude-sonnet-4-5-20250514">Claude Sonnet 4.5 ($3/$15)</option>
6984
- <option value="claude-3-5-haiku-20241022">Claude Haiku 3.5 ($1/$5)</option>
6985
- <option value="claude-3-haiku-20240307">Claude Haiku 3 ($0.25/$1.25) - Cheapest</option>
6981
+ <option value="claude-sonnet-4-6">Claude Sonnet 4.6 (recommended default)</option>
6982
+ <option value="claude-opus-4-6">Claude Opus 4.6 (most capable)</option>
6983
+ <option value="claude-haiku-4-5">Claude Haiku 4.5 (fastest/lowest cost)</option>
6984
+ <option value="claude-opus-4-1">Claude Opus 4.1</option>
6985
+ <option value="claude-sonnet-4">Claude Sonnet 4</option>
6986
+ <option value="claude-3-7-sonnet-latest">Claude Sonnet 3.7</option>
6987
+ <option value="claude-3-5-sonnet-latest">Claude Sonnet 3.5</option>
6988
+ <option value="claude-3-5-haiku-latest">Claude Haiku 3.5</option>
6986
6989
  </select>
6987
6990
  </div>
6988
6991
  <div class="setting-item">
6989
- <label class="setting-label">OpenAI API Key (GPT-4)</label>
6992
+ <label class="setting-label">OpenAI API Key</label>
6990
6993
  <input type="password" class="setting-input" id="openaiApiKey" placeholder="sk-..." autocomplete="off">
6991
6994
  <div style="font-size: 10px; color: var(--text-muted); margin-top: 4px;">
6992
6995
  <a href="https://platform.openai.com/api-keys" target="_blank" style="color: var(--accent);">Get API key</a> - Alternative
@@ -6996,26 +6999,29 @@
6996
6999
  <label class="setting-label">OpenAI Model</label>
6997
7000
  <select class="setting-input" id="openaiModel" style="cursor: pointer;">
6998
7001
  <optgroup label="GPT-5 Series (Latest)">
6999
- <option value="gpt-5.2">GPT-5.2 ($1.25/$10) - Best for coding & agents</option>
7000
- <option value="gpt-5-mini">GPT-5 Mini ($0.25/$2) - Fast & efficient</option>
7001
- <option value="gpt-5-nano">GPT-5 Nano ($0.05/$0.40) - Fastest & cheapest</option>
7002
+ <option value="gpt-5.2">GPT-5.2 (best default for coding/agents)</option>
7003
+ <option value="gpt-5">GPT-5</option>
7004
+ <option value="gpt-5-mini">GPT-5 Mini (fast/efficient)</option>
7005
+ <option value="gpt-5-nano">GPT-5 Nano (lowest cost)</option>
7002
7006
  </optgroup>
7003
7007
  <optgroup label="GPT-4.1 Series">
7004
- <option value="gpt-4.1">GPT-4.1 ($3/$12)</option>
7005
- <option value="gpt-4.1-mini">GPT-4.1 Mini ($0.80/$3.20)</option>
7006
- <option value="gpt-4.1-nano">GPT-4.1 Nano ($0.20/$0.80)</option>
7008
+ <option value="gpt-4.1">GPT-4.1</option>
7009
+ <option value="gpt-4.1-mini">GPT-4.1 Mini</option>
7010
+ <option value="gpt-4.1-nano">GPT-4.1 Nano</option>
7007
7011
  </optgroup>
7008
7012
  <optgroup label="GPT-4o Series">
7009
- <option value="gpt-4o">GPT-4o ($2.50/$10)</option>
7010
- <option value="gpt-4o-mini">GPT-4o Mini ($0.15/$0.60)</option>
7013
+ <option value="gpt-4o">GPT-4o</option>
7014
+ <option value="gpt-4o-mini">GPT-4o Mini</option>
7011
7015
  </optgroup>
7012
7016
  <optgroup label="o-Series (Reasoning)">
7013
- <option value="o4-mini">o4-mini ($4/$16) - Latest reasoning</option>
7017
+ <option value="o4-mini">o4-mini (latest fast reasoning)</option>
7018
+ <option value="o3">o3 (strong reasoning)</option>
7014
7019
  <option value="o3-mini">o3-mini</option>
7015
- <option value="o1">o1 ($15/$60)</option>
7016
- <option value="o1-mini">o1-mini ($3/$12)</option>
7017
7020
  </optgroup>
7018
7021
  </select>
7022
+ <div style="font-size: 10px; color: var(--text-muted); margin-top: 4px;">
7023
+ Keep this list focused on general-purpose models that work well in DiscoveryLab.
7024
+ </div>
7019
7025
  </div>
7020
7026
  <div class="setting-item">
7021
7027
  <label class="setting-label">Claude CLI Model (Local)</label>
@@ -7030,7 +7036,7 @@
7030
7036
  </div>
7031
7037
  </div>
7032
7038
  <div class="setting-item">
7033
- <label class="setting-label">Ollama URL (Local - Free)</label>
7039
+ <label class="setting-label">Ollama URL (Local - Free, optional)</label>
7034
7040
  <div style="display: flex; gap: 8px;">
7035
7041
  <input type="text" class="setting-input" id="ollamaUrl" placeholder="http://localhost:11434" autocomplete="off" style="flex: 1;">
7036
7042
  <button type="button" class="btn btn-secondary" onclick="checkOllamaStatus()" title="Check Ollama status" style="padding: 8px 10px; min-width: auto;">
@@ -7041,7 +7047,7 @@
7041
7047
  </button>
7042
7048
  </div>
7043
7049
  <div style="font-size: 10px; color: var(--text-muted); margin-top: 4px;">
7044
- <a href="https://ollama.ai" target="_blank" style="color: var(--accent);">Install Ollama</a> - Run: <code style="background: var(--bg-tertiary); padding: 1px 4px; border-radius: 3px;">ollama run llama3.2</code>
7050
+ <a href="https://ollama.ai" target="_blank" style="color: var(--accent);">Install Ollama</a> - Only used when provider is set to <strong>Ollama</strong>. Install any model (example: <code style="background: var(--bg-tertiary); padding: 1px 4px; border-radius: 3px;">ollama pull llama3.2</code>).
7045
7051
  </div>
7046
7052
  </div>
7047
7053
  <div class="setting-item" id="ollamaModelContainer">
@@ -8058,11 +8064,12 @@
8058
8064
  }
8059
8065
  }
8060
8066
 
8061
- function saveSettingsFromForm() {
8067
+ async function saveSettingsFromForm() {
8062
8068
  persistCaptureSettingsFromForm({ silent: false });
8063
8069
 
8064
8070
  // Also save LLM settings
8065
- saveLLMSettings();
8071
+ const llmSaved = await saveLLMSettings({ silent: true });
8072
+ if (llmSaved === false) return;
8066
8073
  closeAllModals();
8067
8074
  }
8068
8075
 
@@ -8113,7 +8120,7 @@
8113
8120
  const data = await response.json();
8114
8121
 
8115
8122
  document.getElementById('anthropicApiKey').value = data.anthropicApiKey || '';
8116
- document.getElementById('anthropicModel').value = data.anthropicModel || 'claude-sonnet-4-20250514';
8123
+ document.getElementById('anthropicModel').value = data.anthropicModel || 'claude-sonnet-4-6';
8117
8124
  document.getElementById('openaiApiKey').value = data.openaiApiKey || '';
8118
8125
  document.getElementById('openaiModel').value = data.openaiModel || 'gpt-5.2';
8119
8126
  document.getElementById('ollamaUrl').value = data.ollamaUrl || 'http://localhost:11434';
@@ -8121,13 +8128,13 @@
8121
8128
  currentOllamaModel = data.ollamaModel || 'llama3.2';
8122
8129
 
8123
8130
  // Update preferred provider dropdown
8124
- updatePreferredProviderDropdown(data.preferredProvider || 'auto');
8131
+ await updatePreferredProviderDropdown(data.preferredProvider || 'auto');
8125
8132
 
8126
8133
  // Update status
8127
- updateLLMStatus();
8134
+ await updateLLMStatus();
8128
8135
 
8129
8136
  // Check Ollama status and load models
8130
- checkOllamaStatus();
8137
+ await checkOllamaStatus();
8131
8138
  } catch (e) {
8132
8139
  console.log('Failed to load LLM settings:', e);
8133
8140
  }
@@ -8141,19 +8148,18 @@
8141
8148
  const data = await response.json();
8142
8149
  let html = '<option value="auto">Auto (priority order)</option>';
8143
8150
  for (const p of (data.providers || [])) {
8144
- if (p.available && p.configured) {
8145
- const selected = currentValue === p.key ? ' selected' : '';
8146
- html += `<option value="${p.key}"${selected}>${p.name}</option>`;
8147
- }
8151
+ const selected = currentValue === p.key ? ' selected' : '';
8152
+ const ready = !!(p.available && p.configured);
8153
+ const suffix = ready ? '' : (p.available ? ' (setup incomplete)' : ' (unavailable)');
8154
+ html += `<option value="${p.key}"${selected}>${p.name}${suffix}</option>`;
8148
8155
  }
8149
- select.innerHTML = html;
8150
- // Ensure current value is set even if provider is not currently available
8151
8156
  if (currentValue && currentValue !== 'auto') {
8152
- const exists = [...select.options].some(o => o.value === currentValue);
8153
- if (!exists) {
8154
- select.value = 'auto';
8157
+ const known = (data.providers || []).some(p => p.key === currentValue);
8158
+ if (!known) {
8159
+ html += `<option value="${currentValue}" selected>${currentValue} (saved, unknown)</option>`;
8155
8160
  }
8156
8161
  }
8162
+ select.innerHTML = html;
8157
8163
  } catch (e) {
8158
8164
  console.log('Failed to update preferred provider dropdown:', e);
8159
8165
  }
@@ -8245,7 +8251,7 @@
8245
8251
  <div style="padding: 10px; background: var(--bg-tertiary); border-radius: 6px; font-size: 12px;">
8246
8252
  <div style="color: var(--warning); margin-bottom: 6px;">No models installed</div>
8247
8253
  <div style="color: var(--text-muted);">
8248
- Run: <code style="background: var(--bg-elevated); padding: 1px 4px; border-radius: 3px;">ollama pull llama3.2</code>
8254
+ Install any model (example): <code style="background: var(--bg-elevated); padding: 1px 4px; border-radius: 3px;">ollama pull llama3.2</code>
8249
8255
  </div>
8250
8256
  </div>
8251
8257
  `;
@@ -8288,7 +8294,8 @@
8288
8294
  }
8289
8295
  }
8290
8296
 
8291
- async function saveLLMSettings() {
8297
+ async function saveLLMSettings(options = {}) {
8298
+ const { silent = false } = options;
8292
8299
  try {
8293
8300
  // Get Ollama model from select or use current value
8294
8301
  const ollamaModelSelect = document.getElementById('ollamaModel');
@@ -8296,7 +8303,7 @@
8296
8303
 
8297
8304
  const settings = {
8298
8305
  anthropicApiKey: document.getElementById('anthropicApiKey')?.value || '',
8299
- anthropicModel: document.getElementById('anthropicModel')?.value || 'claude-sonnet-4-20250514',
8306
+ anthropicModel: document.getElementById('anthropicModel')?.value || 'claude-sonnet-4-6',
8300
8307
  openaiApiKey: document.getElementById('openaiApiKey')?.value || '',
8301
8308
  openaiModel: document.getElementById('openaiModel')?.value || 'gpt-5.2',
8302
8309
  claudeCliModel: document.getElementById('claudeCliModel')?.value || 'haiku',
@@ -8305,11 +8312,19 @@
8305
8312
  preferredProvider: document.getElementById('preferredProvider')?.value || 'auto'
8306
8313
  };
8307
8314
 
8308
- await fetch('/api/settings/llm', {
8315
+ const response = await fetch('/api/settings/llm', {
8309
8316
  method: 'PUT',
8310
8317
  headers: { 'Content-Type': 'application/json' },
8311
8318
  body: JSON.stringify(settings)
8312
8319
  });
8320
+ if (!response.ok) {
8321
+ let message = `HTTP ${response.status}`;
8322
+ try {
8323
+ const errorData = await response.json();
8324
+ if (errorData?.error) message = errorData.error;
8325
+ } catch {}
8326
+ throw new Error(message);
8327
+ }
8313
8328
 
8314
8329
  // Update current model
8315
8330
  currentOllamaModel = ollamaModel;
@@ -8317,8 +8332,14 @@
8317
8332
  await checkOllamaStatus();
8318
8333
  await updatePreferredProviderDropdown(settings.preferredProvider || 'auto');
8319
8334
  await updateLLMStatus();
8335
+ if (!silent) {
8336
+ showToast('LLM settings saved', 'success', 2000);
8337
+ }
8338
+ return true;
8320
8339
  } catch (e) {
8321
8340
  console.error('Failed to save LLM settings:', e);
8341
+ showToast('Failed to save LLM settings', 'error', 5000);
8342
+ return false;
8322
8343
  }
8323
8344
  }
8324
8345
 
@@ -8400,6 +8421,16 @@
8400
8421
  document.getElementById('closeSettings').addEventListener('click', closeAllModals);
8401
8422
  document.getElementById('refreshSetup').addEventListener('click', loadSetupStatus);
8402
8423
  document.getElementById('saveSettings')?.addEventListener('click', saveSettingsFromForm);
8424
+ ['preferredProvider', 'anthropicModel', 'openaiModel', 'claudeCliModel', 'ollamaUrl', 'anthropicApiKey', 'openaiApiKey'].forEach((id) => {
8425
+ document.getElementById(id)?.addEventListener('change', () => {
8426
+ void saveLLMSettings({ silent: true });
8427
+ });
8428
+ });
8429
+ document.getElementById('ollamaModelSelector')?.addEventListener('change', (event) => {
8430
+ if (event.target && event.target.id === 'ollamaModel') {
8431
+ void saveLLMSettings({ silent: true });
8432
+ }
8433
+ });
8403
8434
 
8404
8435
  // Close modal on overlay click
8405
8436
  [shortcutsModal, settingsModal].forEach(modal => {
@@ -14060,7 +14091,16 @@
14060
14091
  return;
14061
14092
  }
14062
14093
 
14063
- updateAnalysisTerminalStep(step, status, detail);
14094
+ const failureDetail = (status === 'failed' && error)
14095
+ ? (detail ? `${detail} (${error})` : error)
14096
+ : detail;
14097
+
14098
+ if (status === 'failed') {
14099
+ const logMessage = failureDetail || detail || error || 'unknown error';
14100
+ console.warn(`[AnalysisProgress] ${step} failed for project ${projectId}: ${logMessage}`);
14101
+ }
14102
+
14103
+ updateAnalysisTerminalStep(step, status, failureDetail);
14064
14104
  }
14065
14105
 
14066
14106
  function updateAnalysisTerminalStep(step, status, detail) {
package/dist/index.js CHANGED
@@ -1,4 +1,8 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ startServer,
4
+ stopServer
5
+ } from "./chunk-6H3NXFX3.js";
2
6
  import {
3
7
  analyzeTools,
4
8
  canvasTools,
@@ -9,19 +13,13 @@ import {
9
13
  taskHubTools,
10
14
  testingTools,
11
15
  uiTools
12
- } from "./chunk-7NP64TGJ.js";
16
+ } from "./chunk-RUGHHO4K.js";
17
+ import "./chunk-NBAUZ7X2.js";
13
18
  import "./chunk-W3WJGYR6.js";
19
+ import "./chunk-PTXSB3UV.js";
14
20
  import {
15
21
  setupTools
16
- } from "./chunk-7IDQLLBW.js";
17
- import {
18
- mcpServer
19
- } from "./chunk-QJXXHOV7.js";
20
- import {
21
- startServer,
22
- stopServer
23
- } from "./chunk-L5IJZV5F.js";
24
- import "./chunk-NBAUZ7X2.js";
22
+ } from "./chunk-IGZ5TICZ.js";
25
23
  import {
26
24
  closeDatabase,
27
25
  exportDestinations,
@@ -32,6 +30,9 @@ import {
32
30
  projects,
33
31
  settings
34
32
  } from "./chunk-VY3BLXBW.js";
33
+ import {
34
+ mcpServer
35
+ } from "./chunk-QJXXHOV7.js";
35
36
  import "./chunk-MLKGABMK.js";
36
37
 
37
38
  // src/core/protocol/types.ts
@@ -0,0 +1,38 @@
1
+ import {
2
+ BrowserDevices,
3
+ PlaywrightActions,
4
+ createFormSubmissionScript,
5
+ createLoginScript,
6
+ createNavigationScript,
7
+ generatePlaywrightScript,
8
+ getBrowserDevice,
9
+ getPlaywrightVersion,
10
+ installPlaywrightBrowsers,
11
+ isPlaywrightInstalled,
12
+ listBrowserDevices,
13
+ runPlaywrightScript,
14
+ runPlaywrightTest,
15
+ savePlaywrightScript,
16
+ showPlaywrightReport,
17
+ startPlaywrightCodegen
18
+ } from "./chunk-PTXSB3UV.js";
19
+ import "./chunk-VY3BLXBW.js";
20
+ import "./chunk-MLKGABMK.js";
21
+ export {
22
+ BrowserDevices,
23
+ PlaywrightActions,
24
+ createFormSubmissionScript,
25
+ createLoginScript,
26
+ createNavigationScript,
27
+ generatePlaywrightScript,
28
+ getBrowserDevice,
29
+ getPlaywrightVersion,
30
+ installPlaywrightBrowsers,
31
+ isPlaywrightInstalled,
32
+ listBrowserDevices,
33
+ runPlaywrightScript,
34
+ runPlaywrightTest,
35
+ savePlaywrightScript,
36
+ showPlaywrightReport,
37
+ startPlaywrightCodegen
38
+ };
@@ -0,0 +1,13 @@
1
+ import {
2
+ app,
3
+ startServer,
4
+ stopServer
5
+ } from "./chunk-EQOZSXAT.js";
6
+ import "./chunk-NBAUZ7X2.js";
7
+ import "./chunk-VY3BLXBW.js";
8
+ import "./chunk-MLKGABMK.js";
9
+ export {
10
+ app,
11
+ startServer,
12
+ stopServer
13
+ };
@@ -0,0 +1,13 @@
1
+ import {
2
+ app,
3
+ startServer,
4
+ stopServer
5
+ } from "./chunk-SIOQVM2E.js";
6
+ import "./chunk-NBAUZ7X2.js";
7
+ import "./chunk-VY3BLXBW.js";
8
+ import "./chunk-MLKGABMK.js";
9
+ export {
10
+ app,
11
+ startServer,
12
+ stopServer
13
+ };
@@ -0,0 +1,13 @@
1
+ import {
2
+ app,
3
+ startServer,
4
+ stopServer
5
+ } from "./chunk-6H3NXFX3.js";
6
+ import "./chunk-NBAUZ7X2.js";
7
+ import "./chunk-VY3BLXBW.js";
8
+ import "./chunk-MLKGABMK.js";
9
+ export {
10
+ app,
11
+ startServer,
12
+ stopServer
13
+ };
@@ -0,0 +1,17 @@
1
+ import {
2
+ setupCheckTool,
3
+ setupInitTool,
4
+ setupInstallTool,
5
+ setupStatusTool,
6
+ setupTools
7
+ } from "./chunk-IGZ5TICZ.js";
8
+ import "./chunk-VY3BLXBW.js";
9
+ import "./chunk-QJXXHOV7.js";
10
+ import "./chunk-MLKGABMK.js";
11
+ export {
12
+ setupCheckTool,
13
+ setupInitTool,
14
+ setupInstallTool,
15
+ setupStatusTool,
16
+ setupTools
17
+ };
@@ -0,0 +1,178 @@
1
+ import {
2
+ analyzeScreenshotTool,
3
+ analyzeTools,
4
+ analyzeVideoTool,
5
+ canvasCompareTool,
6
+ canvasCreateTool,
7
+ canvasDevicesTool,
8
+ canvasHtmlTool,
9
+ canvasPresetsTool,
10
+ canvasSvgTool,
11
+ canvasTools,
12
+ captureEmulatorTool,
13
+ captureScreenTool,
14
+ captureTools,
15
+ driveFolderTool,
16
+ driveLoginTool,
17
+ driveQuickExportTool,
18
+ driveStatusTool,
19
+ driveUploadTool,
20
+ exportBatchTool,
21
+ exportClipboardTool,
22
+ exportConcatTool,
23
+ exportGifTool,
24
+ exportImageTool,
25
+ exportInfoTool,
26
+ exportMockupsTool,
27
+ exportRevealTool,
28
+ exportSequenceTool,
29
+ exportThumbnailTool,
30
+ exportToTool,
31
+ exportTools,
32
+ exportTrimTool,
33
+ exportVideoTool,
34
+ extractFramesTool,
35
+ integrationTools,
36
+ jiraAttachTool,
37
+ jiraCommentTool,
38
+ jiraCreateTool,
39
+ jiraLoginTool,
40
+ jiraQuickExportTool,
41
+ jiraStatusTool,
42
+ listEmulatorsTool,
43
+ maestroGenerateTool,
44
+ maestroRunTool,
45
+ maestroStatusTool,
46
+ maestroStudioTool,
47
+ notionExportTool,
48
+ notionLoginTool,
49
+ notionQuickExportTool,
50
+ notionStatusTool,
51
+ playwrightCodegenTool,
52
+ playwrightDevicesTool,
53
+ playwrightGenerateTool,
54
+ playwrightInstallTool,
55
+ playwrightReportTool,
56
+ playwrightRunTool,
57
+ playwrightStatusTool,
58
+ projectCreateTool,
59
+ projectDeleteTool,
60
+ projectGetTool,
61
+ projectListTool,
62
+ projectSaveTool,
63
+ projectTools,
64
+ startRecordingTool,
65
+ stopRecordingTool,
66
+ taskHubGenerateTool,
67
+ taskHubLinksAddTool,
68
+ taskHubLinksListTool,
69
+ taskHubLinksRemoveTool,
70
+ taskHubMetadataFetchTool,
71
+ taskHubRequirementsGetTool,
72
+ taskHubTestMapGetTool,
73
+ taskHubTestMapToggleTool,
74
+ taskHubTools,
75
+ testDevicesTool,
76
+ testingTools,
77
+ uiOpenTool,
78
+ uiStatusTool,
79
+ uiTools,
80
+ videoInfoTool
81
+ } from "./chunk-RUGHHO4K.js";
82
+ import "./chunk-NBAUZ7X2.js";
83
+ import "./chunk-W3WJGYR6.js";
84
+ import "./chunk-PTXSB3UV.js";
85
+ import {
86
+ setupCheckTool,
87
+ setupInitTool,
88
+ setupStatusTool,
89
+ setupTools
90
+ } from "./chunk-IGZ5TICZ.js";
91
+ import "./chunk-VY3BLXBW.js";
92
+ import "./chunk-QJXXHOV7.js";
93
+ import "./chunk-MLKGABMK.js";
94
+ export {
95
+ analyzeScreenshotTool,
96
+ analyzeTools,
97
+ analyzeVideoTool,
98
+ canvasCompareTool,
99
+ canvasCreateTool,
100
+ canvasDevicesTool,
101
+ canvasHtmlTool,
102
+ canvasPresetsTool,
103
+ canvasSvgTool,
104
+ canvasTools,
105
+ captureEmulatorTool,
106
+ captureScreenTool,
107
+ captureTools,
108
+ driveFolderTool,
109
+ driveLoginTool,
110
+ driveQuickExportTool,
111
+ driveStatusTool,
112
+ driveUploadTool,
113
+ exportBatchTool,
114
+ exportClipboardTool,
115
+ exportConcatTool,
116
+ exportGifTool,
117
+ exportImageTool,
118
+ exportInfoTool,
119
+ exportMockupsTool,
120
+ exportRevealTool,
121
+ exportSequenceTool,
122
+ exportThumbnailTool,
123
+ exportToTool,
124
+ exportTools,
125
+ exportTrimTool,
126
+ exportVideoTool,
127
+ extractFramesTool,
128
+ integrationTools,
129
+ jiraAttachTool,
130
+ jiraCommentTool,
131
+ jiraCreateTool,
132
+ jiraLoginTool,
133
+ jiraQuickExportTool,
134
+ jiraStatusTool,
135
+ listEmulatorsTool,
136
+ maestroGenerateTool,
137
+ maestroRunTool,
138
+ maestroStatusTool,
139
+ maestroStudioTool,
140
+ notionExportTool,
141
+ notionLoginTool,
142
+ notionQuickExportTool,
143
+ notionStatusTool,
144
+ playwrightCodegenTool,
145
+ playwrightDevicesTool,
146
+ playwrightGenerateTool,
147
+ playwrightInstallTool,
148
+ playwrightReportTool,
149
+ playwrightRunTool,
150
+ playwrightStatusTool,
151
+ projectCreateTool,
152
+ projectDeleteTool,
153
+ projectGetTool,
154
+ projectListTool,
155
+ projectSaveTool,
156
+ projectTools,
157
+ setupCheckTool,
158
+ setupInitTool,
159
+ setupStatusTool,
160
+ setupTools,
161
+ startRecordingTool,
162
+ stopRecordingTool,
163
+ taskHubGenerateTool,
164
+ taskHubLinksAddTool,
165
+ taskHubLinksListTool,
166
+ taskHubLinksRemoveTool,
167
+ taskHubMetadataFetchTool,
168
+ taskHubRequirementsGetTool,
169
+ taskHubTestMapGetTool,
170
+ taskHubTestMapToggleTool,
171
+ taskHubTools,
172
+ testDevicesTool,
173
+ testingTools,
174
+ uiOpenTool,
175
+ uiStatusTool,
176
+ uiTools,
177
+ videoInfoTool
178
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veolab/discoverylab",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "AI-powered app testing & evidence generator - Claude Code Plugin",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",