@wenathlan/extension 1.1.56 → 1.1.58

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 (40) hide show
  1. package/README.md +5 -3
  2. package/dist/agentmailbox.d.ts +42 -0
  3. package/dist/agentmailbox.d.ts.map +1 -0
  4. package/dist/blackboard.d.ts +55 -0
  5. package/dist/blackboard.d.ts.map +1 -0
  6. package/dist/index.d.ts +8 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +4570 -3392
  9. package/dist/index.js.map +4 -4
  10. package/dist/llm.d.ts +238 -0
  11. package/dist/llm.d.ts.map +1 -0
  12. package/dist/memory.d.ts +112 -1
  13. package/dist/memory.d.ts.map +1 -1
  14. package/dist/modelroute.d.ts +43 -0
  15. package/dist/modelroute.d.ts.map +1 -0
  16. package/dist/multiagent.d.ts +151 -0
  17. package/dist/multiagent.d.ts.map +1 -0
  18. package/dist/policy.d.ts +67 -1
  19. package/dist/policy.d.ts.map +1 -1
  20. package/dist/promptlibrary.d.ts +33 -0
  21. package/dist/promptlibrary.d.ts.map +1 -0
  22. package/dist/protocol.d.ts +115 -1
  23. package/dist/protocol.d.ts.map +1 -1
  24. package/dist/taskqueue.d.ts +97 -0
  25. package/dist/taskqueue.d.ts.map +1 -0
  26. package/dist/types.d.ts +375 -2
  27. package/dist/types.d.ts.map +1 -1
  28. package/dist/version.d.ts +1 -1
  29. package/extension/dist/background.js +5421 -3808
  30. package/extension/dist/background.js.map +4 -4
  31. package/extension/dist/manifest.json +1 -1
  32. package/extension/dist/pagebridge.js.map +1 -1
  33. package/extension/dist/popup.html +1 -1
  34. package/extension/dist/popup.js +23 -0
  35. package/extension/dist/popup.js.map +2 -2
  36. package/extension/dist/sidepanel.html +3 -1
  37. package/extension/dist/sidepanel.js +713 -0
  38. package/extension/dist/sidepanel.js.map +2 -2
  39. package/extension/manifest.json +1 -1
  40. package/package.json +1 -1
@@ -1,5 +1,5 @@
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.56</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><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><div id="workflowcontrols" class="actions"></div><div id="windowcontrols" class="actions"></div><p id="status" role="status">Loading session state.</p></main><script type="module" src="popup.js"></script></body>
4
+ <body><main><header><p class="eyebrow">DEVTHINK 1.1.58</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><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><div id="workflowcontrols" class="actions"></div><div id="windowcontrols" class="actions"></div><p id="status" role="status">Loading session state.</p></main><script type="module" src="popup.js"></script></body>
5
5
  </html>
@@ -37,6 +37,8 @@ var sessionstatenode = document.querySelector("#sessionstate");
37
37
  var workflowstatenode = document.querySelector("#workflowstate");
38
38
  var triggerstatenode = document.querySelector("#triggerstate");
39
39
  var mcpstatenode = document.querySelector("#mcpstate");
40
+ var modelstatenode = document.querySelector("#modelstate");
41
+ var swarmstatenode = document.querySelector("#swarmstate");
40
42
  var workflowcontrols = document.querySelector("#workflowcontrols");
41
43
  var windowcontrols = document.querySelector("#windowcontrols");
42
44
  var connectbutton = document.querySelector("#connect");
@@ -257,6 +259,25 @@ function renderworkflowstate(runs, control) {
257
259
  workflowcontrols.append(controls);
258
260
  }
259
261
  }
262
+ function rendermodelstate(state) {
263
+ if (!modelstatenode) return;
264
+ if (!state) {
265
+ modelstatenode.textContent = "Models: none connected.";
266
+ return;
267
+ }
268
+ const routed = state.tasks.filter((task) => task.provider !== void 0);
269
+ modelstatenode.textContent = `Models: ${routed.length > 0 ? routed.slice(0, 3).map((task) => `${task.kind} ${task.model}`).join(" \xB7 ") : "no route yet"} \xB7 ${state.usage.calls} call${state.usage.calls === 1 ? "" : "s"} \xB7 ${state.usage.totaltokens} tokens.`;
270
+ }
271
+ function renderswarmstate(state) {
272
+ if (!swarmstatenode) return;
273
+ if (!state) {
274
+ swarmstatenode.textContent = "Swarm: no agents.";
275
+ return;
276
+ }
277
+ swarmstatenode.textContent = `Swarm: ${state.overview.agents} agent${state.overview.agents === 1 ? "" : "s"}${state.overview.agents > 0 ? ` (${state.overview.active} active${state.overview.paused > 0 ? `, ${state.overview.paused} paused` : ""}${state.overview.stopped > 0 ? `, ${state.overview.stopped} stopped` : ""})` : ""} \xB7 ${state.overview.claimed} active task${state.overview.claimed === 1 ? "" : "s"}${state.overview.queued > 0 ? ` \xB7 ${state.overview.queued} queued` : ""}${state.killswitch.engaged ? " \xB7 killswitch engaged" : ""}.`;
278
+ if (state.overview.active > 0 || state.killswitch.engaged) swarmstatenode.dataset.state = "active";
279
+ else delete swarmstatenode.dataset.state;
280
+ }
260
281
  function rendermcpstate(state) {
261
282
  if (!mcpstatenode) return;
262
283
  const running = state?.state === "running";
@@ -300,6 +321,8 @@ async function restore() {
300
321
  renderworkflowstate(context.workflow?.runs, context.workflow?.control);
301
322
  rendertriggerstate(context.trigger?.rules, context.trigger?.queued, context.session?.pausedat !== void 0, triggerbuttonfired);
302
323
  rendermcpstate(context.mcp);
324
+ rendermodelstate(context.llm);
325
+ renderswarmstate(context.swarm);
303
326
  renderrulestate(context.activerules, (context.traffic?.blocks ?? []).filter((rule) => rule.revertedat === void 0).reduce((total, rule) => total + rule.hits, 0), (context.traffic?.mocks ?? []).filter((spec) => spec.revertedat === void 0).reduce((total, spec) => total + spec.hits, 0));
304
327
  const active = context.session && !context.session.stoppedat && context.session.expiresat > Date.now();
305
328
  if (pausebutton) {