dodo-mcp 1.0.6 → 1.2.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/README.md +74 -20
- package/dist/cli/main.js +152 -28
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/menu.js +2 -2
- package/dist/cli/menu.js.map +1 -1
- package/dist/config/globalConfig.js +7 -3
- package/dist/config/globalConfig.js.map +1 -1
- package/dist/config/tunnelConfig.js +2 -1
- package/dist/config/tunnelConfig.js.map +1 -1
- package/dist/projects/ownerAdmin.js +86 -0
- package/dist/projects/ownerAdmin.js.map +1 -0
- package/dist/projects/registry.js +90 -9
- package/dist/projects/registry.js.map +1 -1
- package/dist/security/projectAccess.js +69 -0
- package/dist/security/projectAccess.js.map +1 -0
- package/dist/security/projectAuthority.js +5 -1
- package/dist/security/projectAuthority.js.map +1 -1
- package/dist/server/appServer.js +23 -9
- package/dist/server/appServer.js.map +1 -1
- package/dist/server/bootstrap.js +9 -1
- package/dist/server/bootstrap.js.map +1 -1
- package/dist/server/configUi/app.css +8 -0
- package/dist/server/configUi/app.js +142 -18
- package/dist/server/configUi/index.html +50 -13
- package/dist/server/installationRuntime.js +6 -2
- package/dist/server/installationRuntime.js.map +1 -1
- package/dist/server/instructions.js +1 -1
- package/dist/server/instructions.js.map +1 -1
- package/dist/server/ipcDispatch.js +3 -0
- package/dist/server/ipcDispatch.js.map +1 -1
- package/dist/server/localConfig.js +80 -13
- package/dist/server/localConfig.js.map +1 -1
- package/dist/services/ai/subagents.js +1 -1
- package/dist/services/ai/subagents.js.map +1 -1
- package/dist/services/android/adbBackend.js +106 -0
- package/dist/services/android/adbBackend.js.map +1 -0
- package/dist/services/android/androidPolicy.js +61 -0
- package/dist/services/android/androidPolicy.js.map +1 -0
- package/dist/services/android/androidService.js +444 -0
- package/dist/services/android/androidService.js.map +1 -0
- package/dist/services/android/protocol.js +39 -0
- package/dist/services/android/protocol.js.map +1 -0
- package/dist/services/multimodal/storage.js +10 -1
- package/dist/services/multimodal/storage.js.map +1 -1
- package/dist/services/schedules/scheduleService.js +8 -1
- package/dist/services/schedules/scheduleService.js.map +1 -1
- package/dist/setup/componentProbes.js +7 -1
- package/dist/setup/componentProbes.js.map +1 -1
- package/dist/setup/setup.js +11 -1
- package/dist/setup/setup.js.map +1 -1
- package/dist/store/db.js +14 -0
- package/dist/store/db.js.map +1 -1
- package/dist/tools/agentRuntimeTools.js +2 -3
- package/dist/tools/agentRuntimeTools.js.map +1 -1
- package/dist/tools/androidTools.js +113 -0
- package/dist/tools/androidTools.js.map +1 -0
- package/dist/tools/catalog.js +3 -0
- package/dist/tools/catalog.js.map +1 -1
- package/dist/tools/context.js +85 -5
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/projectTools.js +1 -1
- package/dist/tools/projectTools.js.map +1 -1
- package/dist/tools/surface.js +18 -11
- package/dist/tools/surface.js.map +1 -1
- package/dist/tunnel/control.js +11 -4
- package/dist/tunnel/control.js.map +1 -1
- package/dist/tunnel/log.js +32 -0
- package/dist/tunnel/log.js.map +1 -1
- package/dist/tunnel/supervisor.js +103 -24
- package/dist/tunnel/supervisor.js.map +1 -1
- package/docs/ANDROID.md +105 -28
- package/docs/ARCHITECTURE.md +16 -7
- package/docs/AUTH.md +6 -0
- package/docs/COMPATIBILITY.md +14 -7
- package/docs/MANUAL_ACCEPTANCE.md +40 -6
- package/docs/PROJECTS.md +73 -2
- package/docs/RELEASE_1.1.0.md +69 -0
- package/docs/RELEASE_1.2.0.md +75 -0
- package/docs/RELEASE_NOTES.md +30 -0
- package/docs/SECURITY.md +45 -6
- package/docs/TEST_REPORT.md +96 -0
- package/docs/TUNNEL.md +79 -16
- package/docs/adr/048-persistent-connection-mode.md +3 -1
- package/docs/adr/049-android-adb-control.md +52 -0
- package/docs/adr/050-cloudflare-local-and-project-access.md +67 -0
- package/docs/adr/README.md +2 -0
- package/package.json +6 -2
- package/schemas/global-config.schema.json +1 -0
- package/schemas/tools.compact.json +312 -9
- package/schemas/tools.hybrid.json +485 -152
- package/schemas/tools.json +3610 -534
|
@@ -345,3 +345,11 @@ body.swal2-toast-shown .swal2-container { background: transparent !important; }
|
|
|
345
345
|
#client-manage-delete { margin: 12px 0; }
|
|
346
346
|
#client-manage-list small { overflow-wrap: anywhere; }
|
|
347
347
|
#confirm-text { white-space: pre-line; overflow-wrap: anywhere; max-height: 55vh; overflow-y: auto; }
|
|
348
|
+
|
|
349
|
+
/* ---- Per-project access level (Simple Project Access Policy) ---- */
|
|
350
|
+
.project-access { display: flex; flex-wrap: wrap; align-items: end; gap: var(--s2) var(--s3); padding: var(--s3); border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--panel); }
|
|
351
|
+
.project-access label { display: flex; flex-direction: column; gap: 6px; font-size: .86rem; flex: 1 1 210px; min-width: 0; }
|
|
352
|
+
.project-access select { width: 100%; }
|
|
353
|
+
.project-access .help { flex-basis: 100%; margin: 0; }
|
|
354
|
+
.project-access .btn { flex: none; }
|
|
355
|
+
.project-access-status { flex-basis: 100%; }
|
|
@@ -217,7 +217,10 @@
|
|
|
217
217
|
// chips
|
|
218
218
|
const c = s.connection || {};
|
|
219
219
|
if (c.workspaceSelected === false) setChip('chip-mcp', 'warn', '⚠', 'เปิดอยู่ แต่รอเจ้าของเลือก workspace');
|
|
220
|
-
else if (c.activeMcpUrl)
|
|
220
|
+
else if (c.activeMcpUrl) {
|
|
221
|
+
const connectionLabel = c.connectionMode === 'tunnel' ? 'DODO Tunnel' : c.connectionMode === 'external' ? 'Cloudflare Local' : 'เฉพาะเครื่อง';
|
|
222
|
+
setChip('chip-mcp', s.state === 'switching' ? 'busy' : 'ok', s.state === 'switching' ? '⟳' : '●', s.state === 'switching' ? 'กำลังสลับ workspace' : `${connectionLabel} · ${c.activeMcpUrl.replace(/^https?:\/\//, '')}`);
|
|
223
|
+
}
|
|
221
224
|
else setChip('chip-mcp', 'warn', '○', 'ไม่มี HTTP listener ใน entry นี้');
|
|
222
225
|
if (c.oauthConfigured === true) setChip('chip-oauth', 'ok', '●', `เปิดใช้ · ${c.activePublicUrl || c.activeMcpUrl}`);
|
|
223
226
|
else if (c.oauthConfigured === false) setChip('chip-oauth', 'warn', '⚠', 'LOCKED — ยังไม่ตั้ง public URL');
|
|
@@ -260,11 +263,23 @@
|
|
|
260
263
|
: 'การอ่านและควบคุมหน้าต่างปิดอยู่';
|
|
261
264
|
$('desktop-disable').disabled = !desktop || desktop.mode === 'off';
|
|
262
265
|
|
|
266
|
+
const android = w && s.android && s.android.policy;
|
|
267
|
+
$('android-mode').textContent = android ? android.mode : 'off';
|
|
268
|
+
$('android-summary').textContent = android && android.mode !== 'off'
|
|
269
|
+
? android.persistent
|
|
270
|
+
? `อนุญาต ${android.allowedDevices.join(', ')} — จำสำหรับ DODO installation นี้จนกว่าจะปิด`
|
|
271
|
+
: `อนุญาต ${android.allowedDevices.join(', ')} ถึง ${new Date(android.expiresAt).toLocaleTimeString()}`
|
|
272
|
+
: 'การเข้าถึง Android ปิดอยู่';
|
|
273
|
+
$('android-disable').disabled = !android || android.mode === 'off';
|
|
274
|
+
|
|
263
275
|
// permissions — personal mode hides the per-project ACL/trust ceremony
|
|
264
276
|
// entirely (a short note with a tooltip replaces it); managed mode keeps
|
|
265
277
|
// every original control. Pure presentation: no scope/guard changes.
|
|
266
278
|
const p = s.permissions;
|
|
267
|
-
|
|
279
|
+
// Read the installation-level mode, not the per-workspace permissions
|
|
280
|
+
// block: `permissions` is null until a workspace is selected, which used to
|
|
281
|
+
// make a fresh personal-mode install render the managed-mode ACL cards.
|
|
282
|
+
const personalMode = (s.accessMode ?? (p && p.accessMode)) === 'personal';
|
|
268
283
|
$('card-perm').hidden = personalMode;
|
|
269
284
|
$('card-clients').hidden = personalMode;
|
|
270
285
|
$('personal-note').hidden = !personalMode;
|
|
@@ -350,16 +365,20 @@
|
|
|
350
365
|
const browserFormSig = JSON.stringify([browserMode ? browserMode.value : 'local', Number($('tunnel-metrics').value), Number($('tunnel-restarts').value)]);
|
|
351
366
|
const tunnelDirty = !force && lastTunnelFormSig !== null && browserFormSig !== lastTunnelFormSig;
|
|
352
367
|
if (!tunnelDirty) {
|
|
353
|
-
$('tunnel-mode-local').checked = tunnel.connectionMode
|
|
368
|
+
$('tunnel-mode-local').checked = tunnel.connectionMode === 'local';
|
|
369
|
+
$('tunnel-mode-external').checked = tunnel.connectionMode === 'external';
|
|
354
370
|
$('tunnel-mode-tunnel').checked = tunnel.connectionMode === 'tunnel';
|
|
355
371
|
$('tunnel-metrics').value = String(tunnel.metricsPort || 21732);
|
|
356
372
|
$('tunnel-restarts').value = String(tunnel.maxRestarts ?? 2);
|
|
357
373
|
}
|
|
358
|
-
$('tunnel-credential').textContent = tunnel.
|
|
359
|
-
?
|
|
360
|
-
: tunnel.
|
|
361
|
-
?
|
|
362
|
-
:
|
|
374
|
+
$('tunnel-credential').textContent = tunnel.connectionMode !== 'tunnel'
|
|
375
|
+
? 'ไม่ใช้ token ในโหมดนี้ — token ใช้เฉพาะเมื่อ DODO เป็นผู้เริ่ม cloudflared'
|
|
376
|
+
: tunnel.credentialConfigured
|
|
377
|
+
? `● มี credential แล้ว (${tunnel.credentialStorage}; ไม่แสดงค่า)`
|
|
378
|
+
: tunnel.credentialStore && tunnel.credentialStore.available
|
|
379
|
+
? `○ ยังไม่มี credential · พร้อมบันทึกใน ${tunnel.credentialStore.provider}`
|
|
380
|
+
: `✕ credential store ใช้ไม่ได้${tunnel.credentialStore && tunnel.credentialStore.provider ? ` (${tunnel.credentialStore.provider})` : ''}`;
|
|
381
|
+
syncTunnelControls();
|
|
363
382
|
lastTunnelFormSig = serverFormSig;
|
|
364
383
|
const tunnelRuntime = tunnel.runtime || {};
|
|
365
384
|
const currentTunnel = tunnelRuntime.current;
|
|
@@ -370,8 +389,12 @@
|
|
|
370
389
|
$('tunnel-badge').className = 'badge warn';
|
|
371
390
|
$('tunnel-badge').textContent = `◌ Tunnel ${currentTunnel.phase || 'กำลังเริ่ม'}`;
|
|
372
391
|
} else {
|
|
373
|
-
$('tunnel-badge').className = tunnel.connectionMode === 'tunnel' ? 'badge warn' : 'badge';
|
|
374
|
-
$('tunnel-badge').textContent = tunnel.connectionMode === 'tunnel'
|
|
392
|
+
$('tunnel-badge').className = tunnel.connectionMode === 'tunnel' ? 'badge warn' : tunnel.connectionMode === 'external' ? 'badge ok' : 'badge';
|
|
393
|
+
$('tunnel-badge').textContent = tunnel.connectionMode === 'tunnel'
|
|
394
|
+
? '◌ เลือก DODO Tunnel · ต้อง restart'
|
|
395
|
+
: tunnel.connectionMode === 'external'
|
|
396
|
+
? '● ใช้ Cloudflare ที่รันในเครื่อง'
|
|
397
|
+
: '● ใช้เฉพาะเครื่อง';
|
|
375
398
|
}
|
|
376
399
|
|
|
377
400
|
// clients
|
|
@@ -436,6 +459,47 @@
|
|
|
436
459
|
head.append(titleWrap, status);
|
|
437
460
|
|
|
438
461
|
const root = document.createElement('code'); root.className = 'path project-path'; root.textContent = project.root; root.title = project.root;
|
|
462
|
+
|
|
463
|
+
// ระดับการเข้าถึง: ค่าเดียวที่ควบคุมว่า AI ทำอะไรได้ในโปรเจกต์นี้
|
|
464
|
+
const accessRow = document.createElement('div'); accessRow.className = 'project-access';
|
|
465
|
+
const accessLabel = document.createElement('label');
|
|
466
|
+
accessLabel.textContent = 'ระดับการเข้าถึง';
|
|
467
|
+
const accessSelect = document.createElement('select');
|
|
468
|
+
accessSelect.setAttribute('aria-label', `ระดับการเข้าถึงของ ${project.displayName}`);
|
|
469
|
+
for (const [value, text] of [['read', 'อ่านอย่างเดียว'], ['edit', 'แก้ไข'], ['full', 'ทำงานเต็มรูปแบบ']]) {
|
|
470
|
+
const option = document.createElement('option'); option.value = value; option.textContent = text;
|
|
471
|
+
accessSelect.append(option);
|
|
472
|
+
}
|
|
473
|
+
accessSelect.value = project.accessLevel;
|
|
474
|
+
accessLabel.append(accessSelect);
|
|
475
|
+
const accessSummary = document.createElement('p'); accessSummary.className = 'help'; accessSummary.textContent = project.accessSummary;
|
|
476
|
+
const accessStatus = document.createElement('p'); accessStatus.className = 'help project-access-status'; accessStatus.setAttribute('role', 'status'); accessStatus.setAttribute('aria-live', 'polite');
|
|
477
|
+
const accessSave = document.createElement('button'); accessSave.type = 'button'; accessSave.className = 'btn small'; accessSave.textContent = 'บันทึกระดับ';
|
|
478
|
+
accessSave.disabled = true;
|
|
479
|
+
accessSelect.addEventListener('change', () => { accessSave.disabled = accessSelect.value === project.accessLevel; accessStatus.textContent = ''; });
|
|
480
|
+
accessSave.addEventListener('click', () => withBusy(accessSave, 'กำลังบันทึก…', async () => {
|
|
481
|
+
const chosen = accessSelect.value;
|
|
482
|
+
try {
|
|
483
|
+
// The backend is the source of truth: only report success once it confirms.
|
|
484
|
+
const saved = await api('projects/access', { projectId: project.projectId, access: chosen }, context);
|
|
485
|
+
// Update this card from the backend's response instead of re-rendering
|
|
486
|
+
// the whole list: a full re-render replaced the node and threw away
|
|
487
|
+
// the confirmation the owner needs to see.
|
|
488
|
+
project.accessLevel = saved.project.accessLevel;
|
|
489
|
+
accessSelect.value = saved.project.accessLevel;
|
|
490
|
+
accessSummary.textContent = saved.project.accessSummary;
|
|
491
|
+
accessStatus.textContent = `✓ บันทึกแล้ว: ${saved.project.accessSummary}`;
|
|
492
|
+
accessSave.disabled = true;
|
|
493
|
+
notify('success', `ตั้งระดับของ ${saved.project.displayName} เป็น ${saved.project.accessLevel} แล้ว`);
|
|
494
|
+
} catch (error) {
|
|
495
|
+
accessSelect.value = project.accessLevel;
|
|
496
|
+
accessSave.disabled = true;
|
|
497
|
+
accessStatus.textContent = `✕ ${error.message}`;
|
|
498
|
+
notify('error', `เปลี่ยนระดับไม่สำเร็จ: ${error.message}`);
|
|
499
|
+
}
|
|
500
|
+
}));
|
|
501
|
+
accessRow.append(accessLabel, accessSummary, accessSave, accessStatus);
|
|
502
|
+
|
|
439
503
|
const description = document.createElement('p'); description.className = 'help project-status'; description.textContent = project.statusText;
|
|
440
504
|
const details = document.createElement('details'); details.className = 'details';
|
|
441
505
|
const summary = document.createElement('summary'); summary.textContent = 'รายละเอียด registry';
|
|
@@ -455,7 +519,9 @@
|
|
|
455
519
|
const switched = await api('workspace/switch', { path: project.root }, context);
|
|
456
520
|
if (switched.changed) {
|
|
457
521
|
switchedOnce = true;
|
|
458
|
-
notify('success',
|
|
522
|
+
notify('success', result.accessMode === 'personal'
|
|
523
|
+
? `สลับไปที่ ${project.displayName} แล้ว — AI ต้องเรียก project_overview ใหม่ และใช้ระดับ ${project.accessLevel} ของโปรเจกต์นี้`
|
|
524
|
+
: `สลับไปที่ ${project.displayName} แล้ว — AI ต้องเรียก project_overview ใหม่ และ client ต้องมีสิทธิ์ใน workspace ใหม่`, true);
|
|
459
525
|
}
|
|
460
526
|
await refresh(true);
|
|
461
527
|
} catch (error) {
|
|
@@ -476,7 +542,7 @@
|
|
|
476
542
|
} catch (error) { notify('error', `นำโปรเจกต์ออกไม่สำเร็จ: ${error.message}`); }
|
|
477
543
|
}));
|
|
478
544
|
actions.append(switchButton, removeButton);
|
|
479
|
-
article.append(head, root, description, details, actions);
|
|
545
|
+
article.append(head, root, accessRow, description, details, actions);
|
|
480
546
|
list.append(article);
|
|
481
547
|
}
|
|
482
548
|
}
|
|
@@ -495,18 +561,23 @@
|
|
|
495
561
|
const context = workspaceContext();
|
|
496
562
|
withBusy($('project-add'), 'กำลังเพิ่ม…', async () => {
|
|
497
563
|
try {
|
|
498
|
-
const body = { path: projectPath };
|
|
564
|
+
const body = { path: projectPath, access: $('project-add-access').value };
|
|
499
565
|
if (displayName) body.displayName = displayName;
|
|
500
566
|
const result = await api('projects/add', body, context);
|
|
567
|
+
// Only the backend decides whether a project is usable; the message
|
|
568
|
+
// reflects the mode it reports, never a canned assumption.
|
|
569
|
+
const ready = result.project.requiresClientAcl
|
|
570
|
+
? `เพิ่ม ${result.project.displayName} แล้ว (ระดับ ${result.project.accessLevel}) — โหมดแยกสิทธิ์: อนุญาต client สำหรับโปรเจกต์นี้ก่อนใช้งาน`
|
|
571
|
+
: `เพิ่ม ${result.project.displayName} แล้ว — พร้อมใช้ทันที (${result.project.accessSummary})`;
|
|
501
572
|
if ($('project-add-open').checked) {
|
|
502
573
|
const switched = await api('workspace/switch', { path: result.project.root }, context);
|
|
503
574
|
switchedOnce = Boolean(switched.changed);
|
|
504
|
-
notify('success',
|
|
575
|
+
notify('success', `${ready} · AI ต้องเรียก project_overview ใหม่`, true);
|
|
505
576
|
pathInput.value = ''; nameInput.value = '';
|
|
506
577
|
await refresh(true);
|
|
507
578
|
} else {
|
|
508
579
|
pathInput.value = ''; nameInput.value = '';
|
|
509
|
-
notify(result.changed ? 'success' : 'info', result.relocated ? `อัปเดต path ของ ${result.project.displayName} แล้ว โดยไม่คัดลอกสิทธิ์ workspace เดิม` : result.changed ?
|
|
580
|
+
notify(result.changed ? 'success' : 'info', result.relocated ? `อัปเดต path ของ ${result.project.displayName} แล้ว โดยไม่คัดลอกสิทธิ์ workspace เดิม` : result.changed ? ready : 'โปรเจกต์นี้อยู่ใน registry แล้ว');
|
|
510
581
|
await loadProjects(true);
|
|
511
582
|
}
|
|
512
583
|
} catch (error) {
|
|
@@ -831,6 +902,46 @@
|
|
|
831
902
|
}).finally(() => { $('desktop-disable').disabled = !state || !state.desktop || state.desktop.policy.mode === 'off'; });
|
|
832
903
|
});
|
|
833
904
|
|
|
905
|
+
$('android-scan').addEventListener('click', (ev) => withBusy(ev.currentTarget, 'กำลังค้นหา…', async () => {
|
|
906
|
+
const error = $('android-error'); error.hidden = true;
|
|
907
|
+
try {
|
|
908
|
+
const result = await api('android/devices');
|
|
909
|
+
const fieldset = $('android-devices');
|
|
910
|
+
fieldset.querySelectorAll('label').forEach((node) => node.remove());
|
|
911
|
+
if (!result.devices || result.devices.length === 0) {
|
|
912
|
+
error.textContent = 'ไม่พบอุปกรณ์ — ตรวจ adb devices และยอมรับ RSA prompt บนมือถือ'; error.hidden = false;
|
|
913
|
+
$('android-form').hidden = false; return;
|
|
914
|
+
}
|
|
915
|
+
for (const device of result.devices) {
|
|
916
|
+
const label = document.createElement('label'); label.className = 'check';
|
|
917
|
+
const input = document.createElement('input'); input.type = 'checkbox'; input.name = 'android-device'; input.value = device.serial;
|
|
918
|
+
input.disabled = device.state !== 'device'; input.checked = device.state === 'device';
|
|
919
|
+
label.append(input, document.createTextNode(` ${device.serial} — ${device.model || device.device || 'Android'} (${device.state})`));
|
|
920
|
+
fieldset.append(label);
|
|
921
|
+
}
|
|
922
|
+
$('android-form').hidden = false;
|
|
923
|
+
notify('success', `พบ ${result.devices.length} อุปกรณ์`);
|
|
924
|
+
} catch (e) { error.textContent = `✕ ${e.message}`; error.hidden = false; $('android-form').hidden = false; }
|
|
925
|
+
}));
|
|
926
|
+
|
|
927
|
+
$('android-form').addEventListener('submit', (ev) => {
|
|
928
|
+
ev.preventDefault();
|
|
929
|
+
const devices = [...document.querySelectorAll('input[name="android-device"]:checked')].map((input) => input.value);
|
|
930
|
+
const error = $('android-error'); error.hidden = true;
|
|
931
|
+
if (devices.length === 0) { error.textContent = '✕ เลือกอุปกรณ์ online อย่างน้อยหนึ่งเครื่อง'; error.hidden = false; return; }
|
|
932
|
+
withBusy($('android-save'), 'กำลังบันทึก…', async () => {
|
|
933
|
+
try {
|
|
934
|
+
await api('android/policy', { mode: $('android-policy-mode').value, allowedDevices: devices, persistent: $('android-persist').checked });
|
|
935
|
+
notify('success', 'บันทึกสิทธิ์ Android แล้ว'); await refresh(true);
|
|
936
|
+
} catch (e) { error.textContent = `✕ ${e.message}`; error.hidden = false; notify('error', 'บันทึกสิทธิ์ Android ไม่สำเร็จ'); }
|
|
937
|
+
});
|
|
938
|
+
});
|
|
939
|
+
|
|
940
|
+
$('android-disable').addEventListener('click', () => withBusy($('android-disable'), 'กำลังปิด…', async () => {
|
|
941
|
+
try { await api('android/policy', { mode: 'off' }); await refresh(true); notify('success', 'ปิด Android access แล้ว'); }
|
|
942
|
+
catch (e) { notify('error', `ปิด Android access ไม่สำเร็จ: ${e.message}`); }
|
|
943
|
+
}));
|
|
944
|
+
|
|
834
945
|
// ---- permissions ----
|
|
835
946
|
$('perm-form').addEventListener('submit', (ev) => {
|
|
836
947
|
ev.preventDefault();
|
|
@@ -891,6 +1002,17 @@
|
|
|
891
1002
|
});
|
|
892
1003
|
|
|
893
1004
|
// ---- Cloudflare Tunnel ----
|
|
1005
|
+
function syncTunnelControls() {
|
|
1006
|
+
const mode = document.querySelector('input[name="connectionMode"]:checked')?.value || 'local';
|
|
1007
|
+
const managed = mode === 'tunnel';
|
|
1008
|
+
$('tunnel-credential-fields').hidden = !managed;
|
|
1009
|
+
$('tunnel-token').disabled = !managed;
|
|
1010
|
+
$('tunnel-metrics').disabled = !managed;
|
|
1011
|
+
$('tunnel-restarts').disabled = !managed;
|
|
1012
|
+
if (!managed) $('tunnel-token').value = '';
|
|
1013
|
+
}
|
|
1014
|
+
document.querySelectorAll('input[name="connectionMode"]').forEach((input) => input.addEventListener('change', syncTunnelControls));
|
|
1015
|
+
|
|
894
1016
|
$('tunnel-form').addEventListener('submit', (ev) => {
|
|
895
1017
|
ev.preventDefault();
|
|
896
1018
|
const errorElement = $('tunnel-error');
|
|
@@ -913,12 +1035,14 @@
|
|
|
913
1035
|
}
|
|
914
1036
|
withBusy($('tunnel-save'), 'กำลังบันทึก…', async () => {
|
|
915
1037
|
try {
|
|
916
|
-
const body = { connectionMode, metricsPort, maxRestarts, ...(token ? { token } : {}) };
|
|
1038
|
+
const body = { connectionMode, metricsPort, maxRestarts, ...(connectionMode === 'tunnel' && token ? { token } : {}) };
|
|
917
1039
|
const result = await api('tunnel/config', body);
|
|
918
1040
|
tokenInput.value = '';
|
|
919
1041
|
notify('info', result.connectionMode === 'tunnel'
|
|
920
|
-
? 'บันทึกแล้ว — restart DODO
|
|
921
|
-
:
|
|
1042
|
+
? 'บันทึกแล้ว — restart DODO เพื่อให้ DODO เริ่ม Tunnel เป็น MCP endpoint หลัก'
|
|
1043
|
+
: result.connectionMode === 'external'
|
|
1044
|
+
? 'บันทึกแล้ว — restart DODO แล้วรัน cloudflared ที่ติดตั้งในเครื่องด้วยตนเอง'
|
|
1045
|
+
: 'บันทึกแล้ว — restart DODO เพื่อใช้ MCP เฉพาะในเครื่อง');
|
|
922
1046
|
await refresh(true);
|
|
923
1047
|
} catch (error) {
|
|
924
1048
|
tokenInput.value = '';
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
|
|
116
116
|
<section class="card" id="card-projects" aria-labelledby="h-projects">
|
|
117
117
|
<div class="card-head">
|
|
118
|
-
<h2 id="h-projects">Project Registry</h2>
|
|
118
|
+
<h2 id="h-projects">โปรเจกต์และสิทธิ์ของ AI <span class="muted">Project Registry</span></h2>
|
|
119
119
|
<span class="badge" id="projects-count" hidden></span>
|
|
120
120
|
</div>
|
|
121
121
|
<div class="card-state" id="projects-loading">กำลังโหลด…</div>
|
|
@@ -128,9 +128,15 @@
|
|
|
128
128
|
<form id="project-add-form" class="form" novalidate>
|
|
129
129
|
<label for="project-add-path">เพิ่มโปรเจกต์ด้วย absolute path</label>
|
|
130
130
|
<input id="project-add-path" name="path" type="text" autocomplete="off" spellcheck="false" placeholder="/Users/you/projects/app" aria-describedby="project-add-help project-add-error" required>
|
|
131
|
-
<label for="project-add-name"
|
|
131
|
+
<label for="project-add-name">ชื่อโปรเจกต์ <span class="muted">(ใช้เรียกโปรเจกต์นี้กับ AI)</span></label>
|
|
132
|
+
<input id="project-add-name" name="displayName" type="text" autocomplete="off" maxlength="120" placeholder="auto-upload">
|
|
133
|
+
<label for="project-add-access">ระดับการเข้าถึง <button type="button" class="help-tip" data-tip="กำหนดสิ่งที่ AI ทำได้ในโปรเจกต์นี้ และเป็นเพดานสูงสุด สิทธิ์จริงคือส่วนที่ทับกับ OAuth scope ของ client นั้น เช่น token ที่อ่านได้อย่างเดียวจะยังอ่านได้อย่างเดียวแม้เลือกทำงานเต็มรูปแบบ" aria-label="คำอธิบาย: ระดับการเข้าถึง">?</button></label>
|
|
132
134
|
<div class="input-row">
|
|
133
|
-
<
|
|
135
|
+
<select id="project-add-access" name="access">
|
|
136
|
+
<option value="read">อ่านอย่างเดียว — อ่าน ค้นหา วิเคราะห์</option>
|
|
137
|
+
<option value="edit" selected>แก้ไข — อ่านและแก้ไฟล์</option>
|
|
138
|
+
<option value="full">ทำงานเต็มรูปแบบ — อ่าน แก้ไฟล์ และรันคำสั่ง/ทดสอบ</option>
|
|
139
|
+
</select>
|
|
134
140
|
<button type="submit" class="btn primary" id="project-add">เพิ่มโปรเจกต์</button>
|
|
135
141
|
</div>
|
|
136
142
|
<label class="check"><input type="checkbox" id="project-add-open" checked><span>เปิดโปรเจกต์นี้ทันทีหลังเพิ่ม</span></label>
|
|
@@ -145,9 +151,9 @@
|
|
|
145
151
|
<div class="card-state error-state" id="projects-error" hidden></div>
|
|
146
152
|
</section>
|
|
147
153
|
|
|
148
|
-
<p class="callout info" id="personal-note" hidden><span aria-hidden="true">ℹ</span><span>โหมดส่วนตัว:
|
|
154
|
+
<p class="callout info" id="personal-note" hidden><span aria-hidden="true">ℹ</span><span>โหมดส่วนตัว: ตั้งสิทธิ์ของแต่ละโปรเจกต์จากช่อง “ระดับการเข้าถึง” ในการ์ดด้านบนได้เลย ไม่ต้องตั้ง Client ACL หรือ Trust ซ้ำ <button type="button" class="help-tip" data-tip="ระดับ อ่าน/แก้ไข/ทำงานเต็มรูปแบบเป็นเพดานต่อโปรเจกต์ และยังถูกจำกัดด้วย OAuth scope, sandbox, path/secret guards และ expected hash เปลี่ยนเป็นโหมดแยกสิทธิ์ละเอียดได้ที่หน้า Settings" aria-label="คำอธิบาย: โหมดส่วนตัว">?</button></span></p>
|
|
149
155
|
|
|
150
|
-
<section class="card" id="card-perm" aria-labelledby="h-perm">
|
|
156
|
+
<section class="card" id="card-perm" hidden aria-labelledby="h-perm">
|
|
151
157
|
<div class="card-head">
|
|
152
158
|
<h2 id="h-perm">Trust ของโปรเจกต์นี้ <button type="button" class="help-tip" data-tip="ระดับสิทธิ์ที่บันทึกไว้ต่อโปรเจกต์ ส่วน 'สิทธิ์ที่มีผล' คือค่าที่ใช้จริงในรอบนี้ ซึ่งอาจต่างกันเมื่อรันด้วย override flag" aria-label="คำอธิบาย: trust และ effective trust">?</button></h2>
|
|
153
159
|
<span class="badge" id="perm-effective-badge" hidden></span>
|
|
@@ -184,7 +190,7 @@
|
|
|
184
190
|
<div class="card-state error-state" id="perm-error" hidden></div>
|
|
185
191
|
</section>
|
|
186
192
|
|
|
187
|
-
<section class="card" id="card-clients" aria-labelledby="h-clients">
|
|
193
|
+
<section class="card" id="card-clients" hidden aria-labelledby="h-clients">
|
|
188
194
|
<div class="card-head"><h2 id="h-clients">Client access <button type="button" class="help-tip" data-tip="OAuth scopes กำหนดขอบเขตสูงสุดของ token (อ่าน/แก้ไฟล์/รันคำสั่ง) การอนุญาตที่นี่มีผลเฉพาะโฟลเดอร์นี้ และไม่เพิ่ม scope ให้ token ที่ออกไปแล้ว" aria-label="คำอธิบาย: OAuth scopes">?</button></h2><span class="badge" id="clients-count" hidden></span></div>
|
|
189
195
|
<div class="card-state" id="clients-loading">กำลังโหลด…</div>
|
|
190
196
|
<div class="card-body" id="clients-body" hidden>
|
|
@@ -279,17 +285,20 @@
|
|
|
279
285
|
</section>
|
|
280
286
|
|
|
281
287
|
<section class="card" id="card-tunnel" aria-labelledby="h-tunnel">
|
|
282
|
-
<div class="card-head"><h2 id="h-tunnel">การเชื่อมต่อ MCP <button type="button" class="help-tip" data-tip="เลือกได้หนึ่งโหมดต่อ DODO installation:
|
|
288
|
+
<div class="card-head"><h2 id="h-tunnel">การเชื่อมต่อ MCP <button type="button" class="help-tip" data-tip="เลือกได้หนึ่งโหมดต่อ DODO installation: ใช้เฉพาะเครื่อง, ใช้ Cloudflare ที่คุณติดตั้งและรันเอง, หรือให้ DODO ดูแล cloudflared ด้วย Tunnel token" aria-label="คำอธิบาย: connection mode">?</button></h2><span class="badge" id="tunnel-badge">กำลังตรวจ…</span></div>
|
|
283
289
|
<form id="tunnel-form" class="form" novalidate>
|
|
284
290
|
<fieldset>
|
|
285
291
|
<legend>โหมดที่ใช้เมื่อเปิด DODO</legend>
|
|
286
|
-
<label class="check"><input id="tunnel-mode-local" name="connectionMode" type="radio" value="local"><span><b
|
|
287
|
-
<label class="check"><input id="tunnel-mode-
|
|
292
|
+
<label class="check"><input id="tunnel-mode-local" name="connectionMode" type="radio" value="local"><span><b>เฉพาะเครื่อง (Loopback)</b><small>AI ในเครื่องใช้ <code>127.0.0.1:21730/mcp</code> โดยไม่มี Cloudflare</small></span></label>
|
|
293
|
+
<label class="check"><input id="tunnel-mode-external" name="connectionMode" type="radio" value="external"><span><b>Cloudflare Local (ติดตั้งในเครื่อง)</b><small>คุณติดตั้งและรัน <code>cloudflared</code> เอง DODO ใช้ Public MCP URL แต่ไม่อ่าน token และไม่ควบคุม process</small></span></label>
|
|
294
|
+
<label class="check"><input id="tunnel-mode-tunnel" name="connectionMode" type="radio" value="tunnel"><span><b>DODO Tunnel</b><small>DODO อ่าน token จาก credential store และเริ่ม/หยุด cloudflared พร้อม DODO</small></span></label>
|
|
288
295
|
</fieldset>
|
|
289
|
-
<
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
296
|
+
<div id="tunnel-credential-fields">
|
|
297
|
+
<label for="tunnel-token">Cloudflare Tunnel token</label>
|
|
298
|
+
<input id="tunnel-token" name="token" type="password" autocomplete="new-password" spellcheck="false" maxlength="8192" placeholder="เว้นว่างเพื่อใช้ credential ที่บันทึกไว้" aria-describedby="tunnel-credential tunnel-error">
|
|
299
|
+
<p class="help" id="tunnel-credential">ใช้เฉพาะโหมด DODO Tunnel · กำลังตรวจ credential store…</p>
|
|
300
|
+
<p class="help">Token เป็น write-only และเก็บใน Keychain/Credential Manager/Secret Service เท่านั้น หน้าเว็บจะไม่อ่านค่ากลับมา</p>
|
|
301
|
+
</div>
|
|
293
302
|
<details class="details">
|
|
294
303
|
<summary>ค่าขั้นสูง</summary>
|
|
295
304
|
<div class="two-col">
|
|
@@ -304,6 +313,34 @@
|
|
|
304
313
|
</form>
|
|
305
314
|
</section>
|
|
306
315
|
|
|
316
|
+
<section class="card" id="card-android" aria-labelledby="h-android">
|
|
317
|
+
<div class="card-head"><h2 id="h-android">Android / ADB <button type="button" class="help-tip" data-tip="DODO จะควบคุมเฉพาะ serial ที่เจ้าของเลือก และไม่ pair/connect/root เครื่องให้อัตโนมัติ มือถือต้องอนุญาต ADB ให้เครื่องนี้ก่อน" aria-label="คำอธิบาย: สิทธิ์ Android ADB">?</button></h2><span class="badge" id="android-mode">off</span></div>
|
|
318
|
+
<div class="card-body">
|
|
319
|
+
<p id="android-summary">การเข้าถึง Android ปิดอยู่</p>
|
|
320
|
+
<div class="actions">
|
|
321
|
+
<button type="button" class="btn" id="android-scan">ค้นหาอุปกรณ์ ADB</button>
|
|
322
|
+
<button type="button" class="btn danger" id="android-disable" disabled>ปิดและลืมสิทธิ์ Android</button>
|
|
323
|
+
</div>
|
|
324
|
+
<form id="android-form" hidden>
|
|
325
|
+
<fieldset id="android-devices"><legend>เลือกอุปกรณ์จาก serial จริง</legend></fieldset>
|
|
326
|
+
<div class="two-col">
|
|
327
|
+
<label>ระดับการเข้าถึง
|
|
328
|
+
<select id="android-policy-mode"><option value="view">ดูข้อมูลและหน้าจอ</option><option value="control">ดูและควบคุม</option></select>
|
|
329
|
+
</label>
|
|
330
|
+
<label class="check"><input id="android-persist" type="checkbox" checked> จำสิทธิ์จนกว่าจะกดปิด</label>
|
|
331
|
+
</div>
|
|
332
|
+
<p class="error" id="android-error" role="alert" hidden></p>
|
|
333
|
+
<div class="actions"><button type="submit" class="btn primary" id="android-save">บันทึกสิทธิ์อุปกรณ์</button></div>
|
|
334
|
+
</form>
|
|
335
|
+
<details class="details">
|
|
336
|
+
<summary>วิธีเชื่อมต่อและขอบเขต</summary>
|
|
337
|
+
<p class="help">ติดตั้ง Android SDK Platform-Tools เปิด USB debugging หรือ Wireless debugging แล้วกดยอมรับ RSA prompt บนมือถือ จากนั้นกด “ค้นหาอุปกรณ์ ADB”</p>
|
|
338
|
+
<p class="help">โหมดดูอนุญาต screenshot, UI hierarchy, logcat, package และไฟล์แบบ bounded ส่วนโหมดควบคุมเพิ่ม tap/swipe/text/key, app actions, ติดตั้ง APK, push file และ advanced device-only command ทุก action ยังต้องมี <code>dodo:exec</code> และผ่าน trust/approval เดิม</p>
|
|
339
|
+
<p class="help">DODO ไม่เปิด pairing, ไม่ใช้ pairing code, ไม่ root, ไม่จัดการ ADB server และไม่ถือว่า directory guard เป็น sandbox ของมือถือ</p>
|
|
340
|
+
</details>
|
|
341
|
+
</div>
|
|
342
|
+
</section>
|
|
343
|
+
|
|
307
344
|
<section class="card" id="card-desktop" aria-labelledby="h-desktop">
|
|
308
345
|
<div class="card-head"><h2 id="h-desktop">Desktop access <button type="button" class="help-tip" data-tip="สิทธิ์อ่าน/ควบคุมหน้าต่างเป็นระดับ installation เมื่อจำแบบ --persist และผูก workspace เมื่อเป็นแบบชั่วคราว แยกจาก OS permission (Screen Recording / Accessibility) ที่ต้องให้ผ่านหน้าต่างระบบ" aria-label="คำอธิบาย: desktop และ Chrome permission">?</button></h2><span class="badge" id="desktop-mode">off</span></div>
|
|
309
346
|
<div class="card-body">
|
|
@@ -6,6 +6,7 @@ import { DodoError } from '../errors.js';
|
|
|
6
6
|
import { bootstrapWorkspace } from './bootstrap.js';
|
|
7
7
|
import { attachOptionalServices } from './optionalServices.js';
|
|
8
8
|
import { projectAuthority, isOwner } from '../security/projectAuthority.js';
|
|
9
|
+
import { isPersonalMode } from '../security/accessMode.js';
|
|
9
10
|
/** Explicit target runtimes never replace the legacy default workspace. */
|
|
10
11
|
export class InstallationRuntime {
|
|
11
12
|
initial;
|
|
@@ -48,8 +49,11 @@ export class InstallationRuntime {
|
|
|
48
49
|
if (!r)
|
|
49
50
|
throw new DodoError('FORBIDDEN', 'project unavailable or not authorized');
|
|
50
51
|
const authority = projectAuthority(this.store, p, r.workspaceId);
|
|
51
|
-
if (authority.scopes.length === 0)
|
|
52
|
-
throw new DodoError('WORKSPACE_ACCESS_REQUIRED',
|
|
52
|
+
if (authority.scopes.length === 0) {
|
|
53
|
+
throw new DodoError('WORKSPACE_ACCESS_REQUIRED', isPersonalMode(this.store)
|
|
54
|
+
? `no usable scope for project "${r.displayName}" (access level: ${r.accessLevel}); raise the level in Local Config > Projects or reconnect the client with the scopes you need`
|
|
55
|
+
: 'owner must allow access to the target project');
|
|
56
|
+
}
|
|
53
57
|
if (!r.available)
|
|
54
58
|
throw new DodoError('PATH_DENIED', 'registered project directory is not ready');
|
|
55
59
|
return r;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installationRuntime.js","sourceRoot":"","sources":["../../src/server/installationRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAA8B,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"installationRuntime.js","sourceRoot":"","sources":["../../src/server/installationRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const COMMON_INSTRUCTIONS = `DODO uses the connected client's OAuth scopes (HTTP), workspace access and local trust settings. Start with project_overview to get the active workspace and its capabilities. Pass workspaceId and workspaceEpoch from that overview to other tools; refresh overview after restart or a local owner workspace switch. project_overview also lists owner-registered projects this client may read: use projectId on project_overview/list_files/read_files or projectId/projectIds on search_code for bounded read-only federation without changing the active workspace. For concurrent work in another registered project, call project_overview with targetProjectId, then pass that targetProjectId and its returned workspaceId/workspaceEpoch to every operation. Do not mix targetProjectId with read-federation projectId/projectIds. Gateway target/context fields belong at the top level, never inside args. Selecting a target does not change the default project or grant permission. Use bounded reads/search, preview and expected hashes for edits, and job polling for long commands. Respect local approval errors, secret/path guards and separate Desktop permissions. Commands in trusted mode execute with OS-user privileges unless sandboxed. Scheduled commands require local owner approval of their immutable specification before execution. Do not use exec or desktop to approve yourself or change owner security settings.`;
|
|
1
|
+
const COMMON_INSTRUCTIONS = `DODO uses the connected client's OAuth scopes (HTTP), workspace access and local trust settings. Start with project_overview to get the active workspace and its capabilities. Pass workspaceId and workspaceEpoch from that overview to other tools; refresh overview after restart or a local owner workspace switch. project_overview also lists owner-registered projects this client may read: use projectId on project_overview/list_files/read_files or projectId/projectIds on search_code for bounded read-only federation without changing the active workspace. For concurrent work in another registered project, call project_overview with targetProjectId, then pass that targetProjectId and its returned workspaceId/workspaceEpoch to every operation. Do not mix targetProjectId with read-federation projectId/projectIds. WHEN THE USER NAMES A PROJECT (for example "use DODO to fix the auto-upload project"), do not ask them for a project ID: pass that name as targetProject on project_overview, take the workspaceId/workspaceEpoch it returns, and send targetProject plus that context on every following operation. targetProject accepts the owner's project name and resolves to exactly one registered project; if the name is unknown or ambiguous the call fails with the available candidates, so re-read project_overview rather than guessing. Send either targetProject or targetProjectId, not two that disagree. Gateway target/context fields belong at the top level, never inside args. Selecting a target does not change the default project or grant permission. Use bounded reads/search, preview and expected hashes for edits, and job polling for long commands. Respect local approval errors, secret/path guards and separate Desktop permissions. Commands in trusted mode execute with OS-user privileges unless sandboxed. Scheduled commands require local owner approval of their immutable specification before execution. Do not use exec or desktop to approve yourself or change owner security settings.`;
|
|
2
2
|
const SUBAGENT_INSTRUCTIONS = ` The overview ai.profiles list contains authorized profile IDs: discover subagent_spawn/status/result/control to delegate work with an idempotency key and retrieve actual receipts. Agents cannot spawn child agents or approve themselves.`;
|
|
3
3
|
const SUBAGENT_HIDDEN_INSTRUCTIONS = ` Sub-agent operations are not exposed to this MCP connection; the owner can still create and manage agents in the private Local Config web workbench.`;
|
|
4
4
|
const COMPACT_SUFFIX = ` This connection uses the COMPACT tool surface: a few dodo_* gateway tools cover every exposed capability. Choose the gateway for the domain (dodo_read/dodo_write/dodo_exec for code, dodo_git_*, dodo_desktop_*, dodo_assist_*, dodo_media, dodo_browser, dodo_game, dodo_workflow_*, dodo_schedule, dodo_web), set operation to the target operation and put its own arguments in args. Use dodo_discover when you need a capability not obvious from a gateway's operation list, or to fetch an operation's exact input schema before calling it. Gateways change nothing about permissions: the target operation's scope, trust policy, approvals and guards apply exactly as if called directly.`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/server/instructions.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG,
|
|
1
|
+
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/server/instructions.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG,28DAA28D,CAAC;AAEx+D,MAAM,qBAAqB,GAAG,8OAA8O,CAAC;AAC7Q,MAAM,4BAA4B,GAAG,uJAAuJ,CAAC;AAC7L,MAAM,cAAc,GAAG,wqBAAwqB,CAAC;AAChsB,MAAM,aAAa,GAAG,ynBAAynB,CAAC;AAEhpB,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;AAClF,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,GAAG,cAAc,CAAC;AAC5E,MAAM,CAAC,MAAM,mBAAmB,GAAG,sBAAsB,GAAG,aAAa,CAAC;AAE1E,MAAM,UAAU,eAAe,CAAC,OAAsC,EAAE,WAAmC,EAAE,SAAS,EAAE,IAAI,EAAE;IAC5H,MAAM,IAAI,GAAG,mBAAmB,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC;IAC/G,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,GAAG,cAAc,CAAC;IACxD,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,GAAG,aAAa,CAAC;IACtD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -123,6 +123,9 @@ export function createIpcDispatcher(ctx) {
|
|
|
123
123
|
}
|
|
124
124
|
case 'desktop.status': return services.desktop.status();
|
|
125
125
|
case 'desktop.policy': return services.desktop.setPolicy(args);
|
|
126
|
+
case 'android.status': return services.android.status();
|
|
127
|
+
case 'android.devices': return services.android.allDevices();
|
|
128
|
+
case 'android.policy': return services.android.setPolicy(args);
|
|
126
129
|
case 'trust.set': {
|
|
127
130
|
const mode = String(args['mode']);
|
|
128
131
|
if (!['inspect', 'edit', 'trusted'].includes(mode))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipcDispatch.js","sourceRoot":"","sources":["../../src/server/ipcDispatch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ipcDispatch.js","sourceRoot":"","sources":["../../src/server/ipcDispatch.ts"],"names":[],"mappings":"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"}
|