@wenathlan/extension 1.1.64 → 1.1.65

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 (49) hide show
  1. package/README.md +4 -3
  2. package/dist/datagrid.d.ts +46 -0
  3. package/dist/datagrid.d.ts.map +1 -0
  4. package/dist/evidenceviews.d.ts +45 -0
  5. package/dist/evidenceviews.d.ts.map +1 -0
  6. package/dist/index.d.ts +9 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +752 -1
  9. package/dist/index.js.map +4 -4
  10. package/dist/memory.d.ts +38 -1
  11. package/dist/memory.d.ts.map +1 -1
  12. package/dist/pickerviews.d.ts +72 -0
  13. package/dist/pickerviews.d.ts.map +1 -0
  14. package/dist/policy.d.ts +59 -1
  15. package/dist/policy.d.ts.map +1 -1
  16. package/dist/portability.d.ts +35 -0
  17. package/dist/portability.d.ts.map +1 -0
  18. package/dist/protocol.d.ts +114 -1
  19. package/dist/protocol.d.ts.map +1 -1
  20. package/dist/quickactions.d.ts +46 -0
  21. package/dist/quickactions.d.ts.map +1 -0
  22. package/dist/siteprefs.d.ts +45 -0
  23. package/dist/siteprefs.d.ts.map +1 -0
  24. package/dist/statusviews.d.ts +65 -0
  25. package/dist/statusviews.d.ts.map +1 -0
  26. package/dist/tourviews.d.ts +28 -0
  27. package/dist/tourviews.d.ts.map +1 -0
  28. package/dist/types.d.ts +252 -4
  29. package/dist/types.d.ts.map +1 -1
  30. package/dist/version.d.ts +1 -1
  31. package/extension/dist/background.js +900 -2
  32. package/extension/dist/background.js.map +4 -4
  33. package/extension/dist/dashboardpage.html +1 -0
  34. package/extension/dist/dashboardpage.js +18 -0
  35. package/extension/dist/dashboardpage.js.map +2 -2
  36. package/extension/dist/manifest.json +1 -1
  37. package/extension/dist/optionspage.html +4 -0
  38. package/extension/dist/optionspage.js +149 -0
  39. package/extension/dist/optionspage.js.map +2 -2
  40. package/extension/dist/pagebridge.js.map +1 -1
  41. package/extension/dist/popup.html +2 -2
  42. package/extension/dist/popup.js +90 -0
  43. package/extension/dist/popup.js.map +2 -2
  44. package/extension/dist/sidepanel.html +2 -2
  45. package/extension/dist/sidepanel.js +84 -3
  46. package/extension/dist/sidepanel.js.map +2 -2
  47. package/extension/dist/style.css +3 -1
  48. package/extension/manifest.json +1 -1
  49. package/package.json +1 -1
@@ -1,8 +1,8 @@
1
1
  <!doctype html>
2
2
  <html lang="en">
3
3
  <head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Devthink</title><link rel="stylesheet" href="style.css"></head>
4
- <body><main><header><p class="eyebrow">DEVTHINK 1.1.64</p><h1>Browser bridge</h1><p>Consent is required before page access or action.</p></header><label for="endpoint">Optional agent endpoint</label><input id="endpoint" type="url" inputmode="url" placeholder="https://agent.example/proposal" autocomplete="off"><button id="connect">Approve endpoint origin</button><div class="actions"><button id="session">Start active tab session</button><button id="pause" class="secondary">Pause session</button><button id="openpanel" class="secondary">Review plans</button><button id="stop" class="danger">Stop</button></div>
4
+ <body><main><header><p class="eyebrow">DEVTHINK 1.1.65</p><h1>Browser bridge</h1><p>Consent is required before page access or action.</p></header><label for="endpoint">Optional agent endpoint</label><input id="endpoint" type="url" inputmode="url" placeholder="https://agent.example/proposal" autocomplete="off"><button id="connect">Approve endpoint origin</button><div class="actions"><button id="session">Start active tab session</button><button id="pause" class="secondary">Pause session</button><button id="openpanel" class="secondary">Review plans</button><button id="stop" class="danger">Stop</button></div>
5
5
  <section id="onboardingcard" class="panel" hidden></section>
6
6
  <section><h2>Task</h2><label for="taskinput">Describe a browser task in plain language</label><textarea id="taskinput" rows="3" placeholder="For example: collect the pricing table of this page into a dataset."></textarea><div class="actions"><button id="tasksubmit">Propose plan</button><span id="proposalstatus" class="muted">idle</span></div><div class="actions"><button id="runquick" class="secondary">Run</button><button id="cancelquick" class="secondary">Cancel run</button><button id="opendashboard" class="secondary">Open dashboard</button><button id="openoptions" class="secondary">Open options</button></div></section>
7
- <section><h2>Command palette</h2><div class="actions"><input id="paletteinput" placeholder="Search commands (ctrl+.)" aria-label="Command palette search"><button id="paletteopen" class="secondary">Palette</button></div><div id="palettematches" class="panel"></div></section><p id="capabilities" role="status" class="muted">Optional capabilities: loading.</p><p id="livelogic" role="status" class="muted">Held keys: none · Open dialogs answered: none.</p><p id="navstate" role="status" class="muted">Navigation: unknown.</p><p id="windowlayout" role="status" class="muted">Window layout: unknown.</p><p id="captchastate" role="status" class="muted">Captcha handoff: none.</p><p id="datasetstate" role="status" class="muted">Datasets: none collected yet.</p><p id="downloadstate" role="status" class="muted">Downloads: none.</p><p id="clipboardstate" role="status" class="muted">Clipboard consent: none waiting.</p><p id="capturestate" role="status" class="muted">Captures: none.</p><p id="mediastate" role="status" class="muted">Media: none.</p><p id="callstate" role="status" class="muted">Outbound calls: none.</p><p id="netstate" role="status" class="muted">Observed requests: none.</p><p id="rulestate" role="status" class="muted">Traffic rules: none active.</p><p id="debugstate" role="status" class="muted">Timeline: no errors captured.</p><p id="emulationstate" role="status" class="muted">Emulation: no active layer.</p><p id="sessionstate" role="status" class="muted">Sessions: none saved yet.</p><p id="workflowstate" role="status" class="muted">Workflows: none running.</p><p id="triggerstate" role="status" class="muted">Triggers: none armed.</p><p id="mcpstate" role="status" class="muted">Mcp server: stopped.</p><p id="modelstate" role="status" class="muted">Models: none connected.</p><p id="swarmstate" role="status" class="muted">Swarm: no agents.</p><p id="environmentstate" role="status" class="muted">Environments: no run state.</p><p id="securitystate" role="status" class="muted">Security: denydefault posture.</p><p id="sessiongridstate" role="status" class="muted">Session grid: no run yet.</p><div id="workflowcontrols" class="actions"></div><div id="windowcontrols" class="actions"></div><div id="environmentcontrols" class="actions"></div><div id="securitycontrols" class="actions"></div><div id="sessiongridcontrols" class="actions"></div><p id="status" role="status">Loading session state.</p></main><script type="module" src="popup.js"></script></body>
7
+ <section><h2>Recent runs</h2><div id="recenttray" class="panel" role="list" aria-label="Recent runs"></div></section><section><h2>Quick actions</h2><div id="quickactions" class="panel" role="list" aria-label="Quick actions of the active tab"></div></section><section><h2>Command palette</h2><div class="actions"><input id="paletteinput" placeholder="Search commands (ctrl+.)" aria-label="Command palette search"><button id="paletteopen" class="secondary">Palette</button></div><div id="palettematches" class="panel"></div></section><p id="capabilities" role="status" class="muted">Optional capabilities: loading.</p><p id="livelogic" role="status" class="muted">Held keys: none · Open dialogs answered: none.</p><p id="navstate" role="status" class="muted">Navigation: unknown.</p><p id="windowlayout" role="status" class="muted">Window layout: unknown.</p><p id="captchastate" role="status" class="muted">Captcha handoff: none.</p><p id="datasetstate" role="status" class="muted">Datasets: none collected yet.</p><p id="downloadstate" role="status" class="muted">Downloads: none.</p><p id="clipboardstate" role="status" class="muted">Clipboard consent: none waiting.</p><p id="capturestate" role="status" class="muted">Captures: none.</p><p id="mediastate" role="status" class="muted">Media: none.</p><p id="callstate" role="status" class="muted">Outbound calls: none.</p><p id="netstate" role="status" class="muted">Observed requests: none.</p><p id="rulestate" role="status" class="muted">Traffic rules: none active.</p><p id="debugstate" role="status" class="muted">Timeline: no errors captured.</p><p id="emulationstate" role="status" class="muted">Emulation: no active layer.</p><p id="sessionstate" role="status" class="muted">Sessions: none saved yet.</p><p id="workflowstate" role="status" class="muted">Workflows: none running.</p><p id="triggerstate" role="status" class="muted">Triggers: none armed.</p><p id="mcpstate" role="status" class="muted">Mcp server: stopped.</p><p id="modelstate" role="status" class="muted">Models: none connected.</p><p id="swarmstate" role="status" class="muted">Swarm: no agents.</p><p id="environmentstate" role="status" class="muted">Environments: no run state.</p><p id="securitystate" role="status" class="muted">Security: denydefault posture.</p><p id="sessiongridstate" role="status" class="muted">Session grid: no run yet.</p><div id="workflowcontrols" class="actions"></div><div id="windowcontrols" class="actions"></div><div id="environmentcontrols" class="actions"></div><div id="securitycontrols" class="actions"></div><div id="sessiongridcontrols" class="actions"></div><p id="status" role="status">Loading session state.</p></main><script type="module" src="popup.js"></script></body>
8
8
  </html>
@@ -668,4 +668,94 @@ async function renderonboarding() {
668
668
  }
669
669
  }
670
670
  void renderonboarding();
671
+ var recenttraynode = document.querySelector("#recenttray");
672
+ async function renderrecenttray() {
673
+ if (!recenttraynode) return;
674
+ try {
675
+ const result = await request({ kind: "views", recent: { list: true } });
676
+ const tray = result.tray ?? [];
677
+ recenttraynode.replaceChildren();
678
+ if (tray.length === 0) {
679
+ recenttraynode.textContent = "No run yet; the tray lists the latest runs with resume and reopen.";
680
+ return;
681
+ }
682
+ const list = document.createElement("ul");
683
+ list.className = "audit";
684
+ for (const entry of tray) {
685
+ const item = document.createElement("li");
686
+ item.textContent = `${entry.outcome} \u2014 ${entry.title || entry.runid} (${entry.origin})`;
687
+ if (entry.resumable) {
688
+ const resume = document.createElement("button");
689
+ resume.type = "button";
690
+ resume.className = "secondary";
691
+ resume.textContent = "Resume";
692
+ resume.addEventListener("click", () => {
693
+ void (async () => {
694
+ await request({ kind: "sessions", grid: { resume: { runid: entry.runid } } });
695
+ status(`The run ${entry.runid} resumed through the sessions seam.`);
696
+ })().catch((error) => status(error instanceof Error ? error.message : String(error), true));
697
+ });
698
+ item.append(" ", resume);
699
+ }
700
+ if (entry.reopenable) {
701
+ const reopen = document.createElement("button");
702
+ reopen.type = "button";
703
+ reopen.className = "secondary";
704
+ reopen.textContent = "Reopen";
705
+ reopen.addEventListener("click", () => {
706
+ void (async () => {
707
+ await request({ kind: "sessions", grid: { reopen: { runid: entry.runid } } });
708
+ status(`The run ${entry.runid} reopened through the sessions seam.`);
709
+ })().catch((error) => status(error instanceof Error ? error.message : String(error), true));
710
+ });
711
+ item.append(" ", reopen);
712
+ }
713
+ list.append(item);
714
+ }
715
+ recenttraynode.append(list);
716
+ } catch (error) {
717
+ recenttraynode.textContent = error instanceof Error ? error.message : String(error);
718
+ }
719
+ }
720
+ var quickactionsnode = document.querySelector("#quickactions");
721
+ async function renderquickactions() {
722
+ if (!quickactionsnode) return;
723
+ try {
724
+ const result = await request({ kind: "views", quickaction: { list: {}, surface: true } });
725
+ const actions = result.actions ?? [];
726
+ quickactionsnode.replaceChildren();
727
+ if (actions.length === 0) {
728
+ quickactionsnode.textContent = "No quickaction registers on this tab; grant its origin and the permitted actions surface.";
729
+ return;
730
+ }
731
+ const list = document.createElement("ul");
732
+ list.className = "audit";
733
+ for (const action of actions) {
734
+ const item = document.createElement("li");
735
+ item.textContent = action.label;
736
+ const run = document.createElement("button");
737
+ run.type = "button";
738
+ run.className = "secondary";
739
+ run.textContent = "Run";
740
+ run.addEventListener("click", () => {
741
+ void (async () => {
742
+ if (action.command === "opendashboardpage") {
743
+ await chrome.tabs.create({ url: chrome.runtime.getURL("dashboardpage.html") });
744
+ status("The dashboardpage opened in a new tab.");
745
+ } else {
746
+ await busaction("starttask");
747
+ status(`The ${action.id} quickaction routed through the command bus.`);
748
+ }
749
+ })().catch((error) => status(error instanceof Error ? error.message : String(error), true));
750
+ });
751
+ item.append(" ", run);
752
+ list.append(item);
753
+ }
754
+ quickactionsnode.append(list);
755
+ } catch (error) {
756
+ quickactionsnode.textContent = error instanceof Error ? error.message : String(error);
757
+ }
758
+ }
759
+ void renderrecenttray();
760
+ void renderquickactions();
671
761
  //# sourceMappingURL=popup.js.map