@useago/sdk 1.7.2 → 1.12.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.
Files changed (51) hide show
  1. package/CHANGELOG.md +175 -0
  2. package/README.md +96 -1
  3. package/dist/angular.cjs +1 -1
  4. package/dist/angular.d.cts +402 -5
  5. package/dist/angular.d.ts +402 -5
  6. package/dist/angular.js +11 -7
  7. package/dist/{createConversationSession-DP90nY71.js → createConversationSession-B1Qn-y0I.js} +3 -3
  8. package/dist/createConversationSession-B3v_xOU7.cjs +1 -0
  9. package/dist/createFormCollector-FvwDOqnV.cjs +1 -0
  10. package/dist/{createFormCollector-BivHRIAe.js → createFormCollector-m79zk_NA.js} +1 -1
  11. package/dist/createMockClient-BEOXI8yW.cjs +1 -0
  12. package/dist/{createMockClient-BDLW6tVc.js → createMockClient-Beao82tu.js} +31 -18
  13. package/dist/devtools.cjs +61 -12
  14. package/dist/devtools.d.cts +403 -5
  15. package/dist/devtools.d.ts +403 -5
  16. package/dist/devtools.js +225 -73
  17. package/dist/errors-BLfjXnLB.js +32 -0
  18. package/dist/errors-o1IB5fEu.cjs +1 -0
  19. package/dist/index.cjs +1 -1
  20. package/dist/index.d.cts +489 -7
  21. package/dist/index.d.ts +489 -7
  22. package/dist/index.js +124 -118
  23. package/dist/react.cjs +4 -4
  24. package/dist/react.d.cts +510 -3
  25. package/dist/react.d.ts +510 -3
  26. package/dist/react.js +1036 -752
  27. package/dist/sheetController-BThJRtOu.cjs +1 -0
  28. package/dist/sheetController-aEKXIvjk.js +343 -0
  29. package/dist/testing.cjs +1 -1
  30. package/dist/testing.d.cts +393 -3
  31. package/dist/testing.d.ts +393 -3
  32. package/dist/testing.js +1 -1
  33. package/dist/types-Ct1hlKwg.js +2408 -0
  34. package/dist/types-mcW8vB1U.cjs +10 -0
  35. package/dist/vue.cjs +1 -1
  36. package/dist/vue.d.cts +615 -3
  37. package/dist/vue.d.ts +615 -3
  38. package/dist/vue.js +202 -154
  39. package/dist/widget.cjs +6 -4
  40. package/dist/widget.d.cts +733 -5
  41. package/dist/widget.d.ts +733 -5
  42. package/dist/widget.js +3996 -786
  43. package/llms-full.txt +264 -31
  44. package/package.json +1 -1
  45. package/dist/AgoClient-7yXQ6R3O.cjs +0 -9
  46. package/dist/AgoClient-DTkBRGFE.js +0 -1965
  47. package/dist/createConversationSession-Bv6a15E0.cjs +0 -1
  48. package/dist/createFormCollector-CwfiYn0V.cjs +0 -1
  49. package/dist/createMockClient-BSNuN3ys.cjs +0 -1
  50. package/dist/sheetController-CBUVOroo.js +0 -205
  51. package/dist/sheetController-DY-sC13T.cjs +0 -1
@@ -10,7 +10,7 @@ function y(g = {}) {
10
10
  id: "mock-conv-1",
11
11
  title: "Mock Conversation",
12
12
  lastMessageDate: /* @__PURE__ */ new Date()
13
- }, o = /* @__PURE__ */ new Map(), c = [], m = {
13
+ }, n = /* @__PURE__ */ new Map(), c = [], m = {
14
14
  sendMessage: async () => a,
15
15
  continueMessage: async () => a,
16
16
  stop: async () => null,
@@ -27,8 +27,17 @@ function y(g = {}) {
27
27
  },
28
28
  rejectToolCall: async () => {
29
29
  },
30
+ getConfig: async () => ({
31
+ permissions: [],
32
+ proactive: { enabled: !1 }
33
+ }),
34
+ createTicket: async () => ({
35
+ id: "mock-ticket-1",
36
+ url: "https://example.test/tickets/mock-ticket-1"
37
+ }),
30
38
  submitFeedback: async () => {
31
39
  },
40
+ submitConversationFeedback: async () => a.id,
32
41
  registerFunction: () => {
33
42
  },
34
43
  unregisterFunction: () => !0,
@@ -50,49 +59,53 @@ function y(g = {}) {
50
59
  },
51
60
  getConfiguredAgent: () => {
52
61
  },
62
+ getUserIdentity: () => ({
63
+ email: void 0,
64
+ hasJwt: !1
65
+ }),
53
66
  getHttp: () => ({
54
67
  get: async () => ({}),
55
68
  post: async () => ({})
56
69
  }),
57
70
  emitProactiveEvent: (e, t) => {
58
- const n = o.get(e);
59
- n && [...n].forEach((s) => s(t));
71
+ const o = n.get(e);
72
+ o && [...o].forEach((s) => s(t));
60
73
  },
61
74
  on: (e, t) => {
62
- o.has(e) || o.set(e, /* @__PURE__ */ new Set()), o.get(e).add(t);
75
+ n.has(e) || n.set(e, /* @__PURE__ */ new Set()), n.get(e).add(t);
63
76
  },
64
77
  off: (e, t) => {
65
- o.get(e)?.delete(t);
78
+ n.get(e)?.delete(t);
66
79
  },
67
80
  once: (e, t) => {
68
- const n = (...s) => {
69
- o.get(e)?.delete(n), t(...s);
81
+ const o = (...s) => {
82
+ n.get(e)?.delete(o), t(...s);
70
83
  };
71
- o.has(e) || o.set(e, /* @__PURE__ */ new Set()), o.get(e).add(n);
84
+ n.has(e) || n.set(e, /* @__PURE__ */ new Set()), n.get(e).add(o);
72
85
  },
73
- waitFor: (e, t) => new Promise((n, s) => {
86
+ waitFor: (e, t) => new Promise((o, s) => {
74
87
  let r;
75
88
  const d = (f) => {
76
- r && clearTimeout(r), o.get(e)?.delete(d), n(f);
89
+ r && clearTimeout(r), n.get(e)?.delete(d), o(f);
77
90
  };
78
- o.has(e) || o.set(e, /* @__PURE__ */ new Set()), o.get(e).add(d), t?.timeout && (r = setTimeout(() => {
79
- o.get(e)?.delete(d), s(/* @__PURE__ */ new Error(`waitFor("${e}") timed out after ${t.timeout}ms`));
91
+ n.has(e) || n.set(e, /* @__PURE__ */ new Set()), n.get(e).add(d), t?.timeout && (r = setTimeout(() => {
92
+ n.get(e)?.delete(d), s(/* @__PURE__ */ new Error(`waitFor("${e}") timed out after ${t.timeout}ms`));
80
93
  }, t.timeout));
81
94
  }),
82
95
  updateConfig: () => {
83
96
  },
84
97
  destroy: () => {
85
- o.clear();
98
+ n.clear();
86
99
  },
87
100
  ...u
88
101
  }, i = {};
89
- for (const [e, t] of Object.entries(m)) i[e] = (...n) => (c.push({
102
+ for (const [e, t] of Object.entries(m)) i[e] = (...o) => (c.push({
90
103
  method: e,
91
- args: n
92
- }), t(...n));
104
+ args: o
105
+ }), t(...o));
93
106
  return i.proactive = null, i.__calls = c, i.__callsFor = (e) => c.filter((t) => t.method === e), i.__emitEvent = (e, t) => {
94
- const n = o.get(e);
95
- n && [...n].forEach((s) => s(t));
107
+ const o = n.get(e);
108
+ o && [...o].forEach((s) => s(t));
96
109
  }, i;
97
110
  }
98
111
  export {
package/dist/devtools.cjs CHANGED
@@ -1,26 +1,30 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function E(e,t,d){if(!e)return;const a=document.createElement("div");a.className=`dev-log-line dev-log-${d}`,a.textContent=`${new Date().toLocaleTimeString()} ${t}`,e.appendChild(a),e.scrollTop=e.scrollHeight}function k(e){let t;return e.type?t=e.type:e.content!==void 0?t="content":e.full_content!==void 0?t="full_content":e.status?t=`status:${e.status}`:t="event",`${t} ${JSON.stringify(e)}`}var T="ago_dev_panel_collapsed",N="ago_dev_events_collapsed";function u(e,t,d,a){e.classList.toggle("collapsed",t);const l=e.querySelector(".dev-toggle");l&&(l.textContent=t?"▢":"—",l.title=t?`Expand ${a}`:`Collapse ${a}`,l.setAttribute("aria-expanded",String(!t)));try{localStorage.setItem(d,t?"1":"0")}catch{}}function $(e,t,d){e.querySelector(".dev-toggle")?.addEventListener("click",l=>{l.stopPropagation(),u(e,!e.classList.contains("collapsed"),t,d)}),e.addEventListener("click",()=>{e.classList.contains("collapsed")&&u(e,!1,t,d)});let a=!1;try{a=localStorage.getItem(t)==="1"}catch{}u(e,a,t,d)}function _(e){const{client:t,target:d,label:a,side:l="right"}=e,f=document.querySelectorAll("#ago-dev-panel").length,x=f===0?"":`-${f+1}`,h=document.querySelectorAll(`#ago-dev-panel[data-ago-dev-side="${l}"]`).length,r=h>0?`${16+h*376}px`:"";let g=null,m=null,b=null;const L=()=>{const o=t.getContextSnapshot()?.entries??{};return Object.fromEntries(Object.entries(o).map(([n,{name:p,data:O}])=>[n,{name:p,data:O}]))},c=()=>{g&&(g.textContent=JSON.stringify(L(),null,2))},v=(o,n)=>{E(m,o,n)};q();const y=typeof d=="string"?document.querySelector(d):d instanceof Element?d:document.body,S=o=>{o.dataset.agoDevSide=l,l==="left"?(o.style.right="auto",o.style.left=r||"16px"):r&&(o.style.right=r)},s=document.createElement("aside");s.id="ago-dev-panel",s.className="ago-dev-card",S(s),(y??document.body).appendChild(s);const w=(t.getRegisteredFunctions?.()??[]).map(o=>o.name).join(", ")||"—";s.innerHTML=`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const te=require("./errors-o1IB5fEu.cjs");function Q(n,e,i){if(!n)return;const r=document.createElement("div");r.className=`dev-log-line dev-log-${i}`,r.textContent=`${new Date().toLocaleTimeString()} ${e}`,n.appendChild(r),n.scrollTop=n.scrollHeight}function ne(n){let e;return n.type?e=n.type:n.content!==void 0?e="content":n.full_content!==void 0?e="full_content":n.status?e=`status:${n.status}`:e="event",`${e} ${JSON.stringify(n)}`}var oe="ago_dev_panel_collapsed",ae="ago_dev_events_collapsed";function _(n,e,i,r){n.classList.toggle("collapsed",e);const v=n.querySelector(".dev-toggle");v&&(v.textContent=e?"▢":"—",v.title=e?`Expand ${r}`:`Collapse ${r}`,v.setAttribute("aria-expanded",String(!e)));try{localStorage.setItem(i,e?"1":"0")}catch{}}function W(n,e,i){n.querySelector(".dev-toggle")?.addEventListener("click",v=>{v.stopPropagation(),_(n,!n.classList.contains("collapsed"),e,i)}),n.addEventListener("click",()=>{n.classList.contains("collapsed")&&_(n,!1,e,i)});let r=!1;try{r=localStorage.getItem(e)==="1"}catch{}_(n,r,e,i)}var re=0;function de(n){const{client:e,target:i,label:r,side:v="right",enableFunctionRunner:P=!1}=n;if(P&&typeof e.executeClientFunction!="function")throw new te.AgoError("initDevPanel: enableFunctionRunner requires client.executeClientFunction. Pass a real AgoClient, not a mock that omits it.","dev_panel_missing_capability");let u=!1;const F=re++,R=F===0?"":`-${F+1}`,q=document.querySelectorAll(`#ago-dev-panel[data-ago-dev-side="${v}"]`).length,N=q>0?`${16+q*376}px`:"";let w=null,A=null,J=null;const Z=()=>{const t=e.getContextSnapshot()?.entries??{};return Object.fromEntries(Object.entries(t).map(([o,{name:d,data:a}])=>[o,{name:d,data:a}]))},h=()=>{u||w&&(w.textContent=JSON.stringify(Z(),null,2))},k=(t,o)=>{u||Q(A,t,o)};se();const D=typeof i=="string"?document.querySelector(i):i instanceof Element?i:document.body,M=t=>{t.dataset.agoDevSide=v,v==="left"?(t.style.right="auto",t.style.left=N||"16px"):N&&(t.style.right=N)},p=document.createElement("aside");p.id="ago-dev-panel",p.className="ago-dev-card",M(p),(D??document.body).appendChild(p),p.innerHTML=`
2
2
  <div class="dev-head">
3
3
  <span class="dev-badge">DEV</span>
4
- <span class="dev-title">${a?`DEV TOOLS · ${a}`:"DEV TOOLS · client-side function state — not for production"}</span>
4
+ <span class="dev-title">${r?`DEV TOOLS · ${r}`:"DEV TOOLS · client-side function state — not for production"}</span>
5
5
  <button type="button" class="dev-toggle" aria-label="Toggle dev tools">—</button>
6
6
  </div>
7
7
  <div class="dev-body">
8
- <div class="dev-fns">Registered functions: <code>${w}</code></div>
9
- <div class="dev-section-label">JSON object (built by the agent)</div>
10
- <pre class="dev-state" id="ago-dev-state"></pre>
11
- <div class="dev-section-label">Function calls</div>
12
- <div class="dev-log" id="ago-dev-log"></div>
8
+ <div class="dev-fns">Registered functions: <code></code></div>
9
+ <details class="dev-details" open>
10
+ <summary class="dev-section-label">JSON object (built by the agent)</summary>
11
+ <pre class="dev-state" id="ago-dev-state"></pre>
12
+ </details>
13
+ <details class="dev-details" open>
14
+ <summary class="dev-section-label">Function calls</summary>
15
+ <div class="dev-log" id="ago-dev-log"></div>
16
+ </details>
13
17
  </div>
14
- `,g=s.querySelector(".dev-state"),m=s.querySelector(".dev-log"),$(s,T+x,"dev tools");const i=document.createElement("aside");i.id="ago-dev-events",i.className="ago-dev-card",S(i),(y??document.body).appendChild(i),i.innerHTML=`
18
+ `,w=p.querySelector(".dev-state"),A=p.querySelector(".dev-log");const j=p.querySelector(".dev-fns code");let b=null,L=null,O="";const m=()=>{if(u)return;const t=e.getRegisteredFunctions?.()??[],o=t.map(a=>a.name);if(j&&(j.textContent=o.join(", ")||"—"),!b)return;let d=O;if(o.includes(d)||(d=o.includes("setPageState")?"setPageState":o[0]??""),O=d,b.innerHTML="",o.length===0){const a=document.createElement("option");a.textContent="(no functions registered)",a.disabled=!0,b.appendChild(a)}for(const a of o){const s=document.createElement("option");s.value=a,s.textContent=a,s.selected=a===d,b.appendChild(s)}if(L){const a=t.find(s=>s.name===d);L.textContent=a?JSON.stringify(a.parameters??{},null,2):""}};W(p,oe+R,"dev tools");const g=document.createElement("aside");g.id="ago-dev-events",g.className="ago-dev-card",M(g),(D??document.body).appendChild(g),g.innerHTML=`
15
19
  <div class="dev-head">
16
20
  <span class="dev-badge">SSE</span>
17
- <span class="dev-title">${a?`SSE EVENT LOG · ${a}`:"SSE EVENT LOG · raw stream messages"}</span>
21
+ <span class="dev-title">${r?`SSE EVENT LOG · ${r}`:"SSE EVENT LOG · raw stream messages"}</span>
18
22
  <button type="button" class="dev-toggle" aria-label="Toggle SSE event log">—</button>
19
23
  </div>
20
24
  <div class="dev-body">
21
25
  <div class="dev-log" id="ago-dev-event-log"></div>
22
26
  </div>
23
- `,b=i.querySelector(".dev-log"),$(i,N+x,"SSE event log"),t.on("stream:message",o=>{E(b,k(o),"event")}),t.on("function:invoke",({functionName:o,arguments:n})=>{v(`→ ${o}(${JSON.stringify(n??{})})`,"invoke")}),t.on("function:result",({result:o,error:n})=>{v(n?`✗ error: ${n}`:`← ${JSON.stringify(o)}`,n?"error":"result"),c()}),t.on("context:changed",c),t.on("conversation:loaded",o=>{const n=(o.messages??[]).flatMap(p=>p.toolCalls??[]);v(`⟳ hydrated "${o.title||o.id}" — replayed ${n.length} tool call${n.length===1?"":"s"}`,"hydrate"),c()}),c()}var C="ago-dev-panel-styles";function q(){if(document.getElementById(C))return;const e=document.createElement("style");e.id=C,e.textContent=z,document.head.appendChild(e)}var z=`
27
+ `,J=g.querySelector(".dev-log"),W(g,ae+R,"SSE event log");function I(t){u||Q(J,ne(t),"event")}function V({functionName:t,arguments:o}){u||(k(`→ ${t}(${JSON.stringify(o??{})})`,"invoke"),m())}function H({result:t,error:o}){u||(k(o?`✗ error: ${o}`:`← ${JSON.stringify(t)}`,o?"error":"result"),h(),m())}function U(){u||(h(),m())}function B(t){if(u)return;const o=(t.messages??[]).flatMap(d=>d.toolCalls??[]);k(`⟳ hydrated "${t.title||t.id}" — replayed ${o.length} tool call${o.length===1?"":"s"}`,"hydrate"),h()}if(e.on("stream:message",I),e.on("function:invoke",V),e.on("function:result",H),e.on("context:changed",U),e.on("conversation:loaded",B),P){const t=document.createElement("div");t.className="dev-runner";const o=document.createElement("div");o.className="dev-section-label",o.textContent="LOCAL FUNCTION RUNNER",t.appendChild(o);const d=document.createElement("div");d.className="dev-runner-warning",d.textContent="Executes locally. Does not contact the agent backend.",t.appendChild(d);const a=document.createElement("div");a.className="dev-runner-row";const s=document.createElement("select");s.className="dev-runner-select",a.appendChild(s);const y=document.createElement("button");y.type="button",y.className="dev-runner-btn dev-runner-btn-sm",y.textContent="Refresh",y.addEventListener("click",m),a.appendChild(y),t.appendChild(a),b=s;const $=document.createElement("div");$.className="dev-section-label",$.textContent="SCHEMA",t.appendChild($);const T=document.createElement("pre");T.className="dev-runner-schema",t.appendChild(T),L=T,s.addEventListener("change",()=>{O=s.value,m()});const z=document.createElement("div");z.className="dev-section-label",z.textContent="ARGUMENTS (JSON)",t.appendChild(z);const C=document.createElement("textarea");C.className="dev-runner-args",C.value="{}",C.spellcheck=!1,t.appendChild(C);const f=document.createElement("button");f.type="button",f.className="dev-runner-btn",f.textContent="Run",t.appendChild(f);const l=document.createElement("div");l.className="dev-runner-status",t.appendChild(l);const x=document.createElement("pre");x.className="dev-runner-result",t.appendChild(x);const E=document.createElement("div");E.className="dev-runner-bytes",t.appendChild(E);const ee=e.executeClientFunction.bind(e);f.addEventListener("click",async()=>{l.textContent="",x.textContent="",E.textContent="";let G;try{const c=JSON.parse(C.value);if(c===null||Array.isArray(c)||typeof c!="object"){l.textContent="Error: arguments must be a JSON object.",l.className="dev-runner-status dev-runner-error";return}G=c}catch(c){l.textContent=`Parse error: ${c instanceof Error?c.message:String(c)}`,l.className="dev-runner-status dev-runner-error";return}const Y=s.value;if(!Y)return;f.disabled=!0,l.textContent="Running…",l.className="dev-runner-status";let S,K=!1;try{S=await ee(Y,G),K=!0}catch(c){if(u)return;l.textContent="Execution error",l.className="dev-runner-status dev-runner-error",x.textContent=c instanceof Error?`${c.constructor.name}: ${c.message}`:String(c)}if(!u){if(K)if(l.textContent="OK",l.className="dev-runner-status dev-runner-ok",S===void 0)x.textContent="(undefined)";else try{x.textContent=JSON.stringify(S,null,2),E.textContent=`${new TextEncoder().encode(JSON.stringify(S)).length} bytes (UTF-8)`}catch{x.textContent="(result not serializable)"}f.disabled=!1,h(),m()}}),p.querySelector(".dev-body").appendChild(t)}return m(),h(),()=>{u||(u=!0,e.off("stream:message",I),e.off("function:invoke",V),e.off("function:result",H),e.off("context:changed",U),e.off("conversation:loaded",B),p.remove(),g.remove())}}var X="ago-dev-panel-styles";function se(){if(document.getElementById(X))return;const n=document.createElement("style");n.id=X,n.textContent=le,document.head.appendChild(n)}var le=`
24
28
  .ago-dev-card {
25
29
  position: fixed;
26
30
  right: 16px;
@@ -62,7 +66,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function E(e,
62
66
  cursor: pointer;
63
67
  }
64
68
  .ago-dev-card .dev-toggle:hover { color: #d7e0e8; border-color: #3a4655; }
65
- .ago-dev-card .dev-body { display: flex; flex-direction: column; gap: 8px; }
69
+ .ago-dev-card .dev-body { display: flex; flex-direction: column; gap: 8px; min-height: 0; overflow-y: auto; }
66
70
 
67
71
  /* Collapsed: shrink to a small clickable widget showing only the badge. */
68
72
  .ago-dev-card.collapsed {
@@ -85,6 +89,11 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function E(e,
85
89
  .ago-dev-card .dev-title { color: #f59e0b; font-size: 11px; line-height: 1.3; }
86
90
  .ago-dev-card .dev-fns { color: #7c8a99; font-size: 11px; }
87
91
  .ago-dev-card .dev-fns code { color: #9ecbff; }
92
+ .ago-dev-card .dev-details { margin: 0; }
93
+ .ago-dev-card .dev-details > summary { list-style: none; cursor: pointer; }
94
+ .ago-dev-card .dev-details > summary::-webkit-details-marker { display: none; }
95
+ .ago-dev-card .dev-details > summary::before { content: "▸ "; }
96
+ .ago-dev-card .dev-details[open] > summary::before { content: "▾ "; }
88
97
  .ago-dev-card .dev-section-label {
89
98
  color: #7c8a99;
90
99
  text-transform: uppercase;
@@ -120,4 +129,44 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function E(e,
120
129
  .ago-dev-card .dev-log-error { color: #fca5a5; }
121
130
  .ago-dev-card .dev-log-hydrate { color: #d8b4fe; }
122
131
  .ago-dev-card .dev-log-event { color: #7c8a99; }
123
- `;exports.initDevPanel=_;
132
+ /* Function runner */
133
+ .ago-dev-card .dev-runner { border-top: 1px solid #2a3441; padding-top: 8px; margin-top: 4px; }
134
+ .ago-dev-card .dev-runner-warning { color: #f59e0b; font-size: 10px; margin-bottom: 4px; }
135
+ .ago-dev-card .dev-runner-row { display: flex; gap: 6px; align-items: center; }
136
+ .ago-dev-card .dev-runner-select {
137
+ flex: 1;
138
+ background: #060a0e; color: #d7e0e8; border: 1px solid #2a3441;
139
+ border-radius: 6px; padding: 4px 6px; font: inherit; font-size: 11px;
140
+ }
141
+ .ago-dev-card .dev-runner-btn {
142
+ background: #1a2633; color: #9ecbff; border: 1px solid #2a3441;
143
+ border-radius: 6px; padding: 4px 10px; font: inherit; font-size: 11px;
144
+ cursor: pointer;
145
+ }
146
+ .ago-dev-card .dev-runner-btn:hover { background: #243040; }
147
+ .ago-dev-card .dev-runner-btn:disabled { opacity: .5; cursor: default; }
148
+ .ago-dev-card .dev-runner-btn-sm { padding: 4px 8px; }
149
+ .ago-dev-card .dev-runner-schema {
150
+ margin: 0; padding: 6px 8px; background: #060a0e;
151
+ border-radius: 6px; overflow: auto; max-height: 16vh;
152
+ white-space: pre; color: #7c8a99; font-size: 11px;
153
+ }
154
+ .ago-dev-card .dev-runner-args {
155
+ width: 100%; box-sizing: border-box; min-height: 48px; max-height: 20vh;
156
+ resize: vertical; background: #060a0e; color: #d7e0e8;
157
+ border: 1px solid #2a3441; border-radius: 6px; padding: 6px 8px;
158
+ font: inherit; font-size: 11px;
159
+ }
160
+ .ago-dev-card .dev-runner-status { font-size: 11px; margin-top: 4px; }
161
+ .ago-dev-card .dev-runner-ok { color: #86efac; }
162
+ .ago-dev-card .dev-runner-error { color: #fca5a5; }
163
+ .ago-dev-card .dev-runner-result {
164
+ margin: 0; padding: 6px 8px; background: #060a0e;
165
+ border-radius: 6px; overflow: auto; max-height: 24vh;
166
+ white-space: pre-wrap; word-break: break-word;
167
+ color: #c8e6c9; font-size: 11px;
168
+ }
169
+ .ago-dev-card .dev-runner-result:empty { display: none; }
170
+ .ago-dev-card .dev-runner-bytes { color: #7c8a99; font-size: 10px; margin-top: 2px; }
171
+ .ago-dev-card .dev-runner-bytes:empty { display: none; }
172
+ `;exports.initDevPanel=de;