@jetcrab/pi-desk-subagent 0.0.0-stage → 1.0.1
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/LICENSE +201 -0
- package/README.md +4 -2
- package/agents/dev.md +13 -0
- package/agents/explore.md +83 -0
- package/agents/internal/research-worker.md +40 -0
- package/agents/research.md +44 -0
- package/dist/agent-config.d.ts +30 -0
- package/dist/agent-config.js +236 -0
- package/dist/browser/chunks/browser-ZO5HSBS2.js +46 -0
- package/dist/browser/chunks/browser-settings-CFHVYNTB.js +76 -0
- package/dist/browser/entry.js +1 -0
- package/dist/external-research.d.ts +76 -0
- package/dist/external-research.js +637 -0
- package/dist/global-settings.d.ts +20 -0
- package/dist/global-settings.js +100 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +4 -0
- package/dist/pi-desk.d.ts +7 -0
- package/dist/pi-desk.js +164 -0
- package/dist/research-runtime.d.ts +23 -0
- package/dist/research-runtime.js +101 -0
- package/dist/subagent-capabilities.d.ts +18 -0
- package/dist/subagent-capabilities.js +83 -0
- package/dist/subagent-message.d.ts +10 -0
- package/dist/subagent-message.js +24 -0
- package/dist/subagent-runtime.d.ts +93 -0
- package/dist/subagent-runtime.js +1290 -0
- package/package.json +56 -3
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import{useId as z,useState as R,useSyncExternalStore as L}from"react";import{createRoot as K}from"react-dom/client";import{PluginAlert as q,PluginButton as C,PluginCard as O,PluginErrorBoundary as Z,PluginScroll as T,PluginSurface as G,useMessageDetail as J,useMessageHandle as W}from"@jetcrab/pi-desk-sdk/react/base";import{PluginMarkdown as X}from"@jetcrab/pi-desk-sdk/react/markdown";import{Fragment as H,jsx as s,jsxs as n}from"react/jsx-runtime";var _=`
|
|
2
|
+
.subagent-message{width:100%;min-width:0;container-type:inline-size}
|
|
3
|
+
.subagent-message .subagent-message-card{padding:0;overflow:hidden;border-radius:.5rem;font-size:.875rem;line-height:1.5}
|
|
4
|
+
.subagent-message .subagent-message-card-error{border-color:color-mix(in srgb,var(--destructive) 55%,var(--border))}
|
|
5
|
+
.subagent-message-header{display:grid;width:100%;grid-template-columns:1rem minmax(0,1fr) auto;align-items:start;gap:.5rem;border:0;padding:.625rem .75rem;background:transparent;color:inherit;text-align:left;font:inherit}
|
|
6
|
+
button.subagent-message-header{cursor:pointer}
|
|
7
|
+
button.subagent-message-header:hover{background:var(--pi-desk-plugin-muted,var(--muted))}
|
|
8
|
+
.subagent-message-header:focus-visible{outline:2px solid var(--pi-desk-plugin-ring,var(--ring));outline-offset:-2px}
|
|
9
|
+
.subagent-message-agent-icon{width:1rem;height:1rem;margin-top:.125rem;color:var(--foreground)}
|
|
10
|
+
.subagent-message-headline{display:flex;min-width:0;flex-wrap:wrap;align-items:center;gap:.25rem .5rem}
|
|
11
|
+
.subagent-message-name{font-weight:600}
|
|
12
|
+
.subagent-message-type{border-radius:.25rem;background:var(--pi-desk-plugin-muted,var(--muted));padding:0 .375rem;font-size:.75rem;font-weight:500}
|
|
13
|
+
.subagent-message-action{color:var(--pi-desk-plugin-muted-foreground,var(--muted-foreground));font-size:.75rem}
|
|
14
|
+
.subagent-message-status{display:flex;align-items:center;justify-content:flex-end;gap:.375rem;white-space:nowrap;font-size:.75rem;color:var(--pi-desk-plugin-muted-foreground,var(--muted-foreground))}
|
|
15
|
+
.subagent-message-status-success{color:var(--status-success,var(--foreground))}
|
|
16
|
+
.subagent-message-status-warning{color:var(--status-warning,var(--foreground))}
|
|
17
|
+
.subagent-message-status-error{color:var(--pi-desk-plugin-destructive,var(--destructive))}
|
|
18
|
+
.subagent-message-status-running::before{content:"";width:.625rem;height:.625rem;border:1.5px solid currentColor;border-right-color:transparent;border-radius:50%;animation:subagent-message-spin .8s linear infinite}
|
|
19
|
+
.subagent-message-list .subagent-message-status-running::before{content:none;animation:none}
|
|
20
|
+
.subagent-message-chevron{width:.875rem;height:.875rem;transition:transform .15s}
|
|
21
|
+
.subagent-message-chevron[data-open="true"]{transform:rotate(180deg)}
|
|
22
|
+
.subagent-message-task{grid-column:2/-1;display:flex;min-width:0;align-items:baseline;gap:.5rem}
|
|
23
|
+
.subagent-message-title{min-width:0;flex:1;overflow-wrap:anywhere;font-weight:500}
|
|
24
|
+
.subagent-message-id{flex-shrink:0;color:var(--pi-desk-plugin-muted-foreground,var(--muted-foreground));font-size:.75rem}
|
|
25
|
+
.subagent-message-preview{grid-column:2/-1;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;color:var(--pi-desk-plugin-muted-foreground,var(--muted-foreground));overflow-wrap:anywhere}
|
|
26
|
+
.subagent-message-error{grid-column:2/-1;color:var(--pi-desk-plugin-destructive,var(--destructive));overflow-wrap:anywhere}
|
|
27
|
+
.subagent-message-detail{border-top:1px solid var(--pi-desk-plugin-border,var(--border));padding:.75rem}
|
|
28
|
+
.subagent-message-detail-label{margin:0 0 .5rem;font:inherit;font-weight:600}
|
|
29
|
+
.subagent-message-meta{display:flex;flex-wrap:wrap;gap:.25rem .5rem;margin:0;padding:.5rem .75rem;border-top:1px solid var(--pi-desk-plugin-border,var(--border));font-size:.75rem;color:var(--pi-desk-plugin-muted-foreground,var(--muted-foreground))}
|
|
30
|
+
.subagent-message-meta code{overflow-wrap:anywhere}
|
|
31
|
+
.subagent-message-detail-scroll{max-height:min(20rem,45dvh)}
|
|
32
|
+
.subagent-message-detail-scroll-viewport{padding-right:.25rem;overscroll-behavior:contain}
|
|
33
|
+
.subagent-message-output{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font:inherit}
|
|
34
|
+
.subagent-records{list-style:none;margin:0;padding:0 .75rem;border-top:1px solid var(--pi-desk-plugin-border,var(--border))}
|
|
35
|
+
.subagent-record{padding:.625rem 0}.subagent-record+.subagent-record{border-top:1px solid var(--pi-desk-plugin-border,var(--border))}
|
|
36
|
+
.subagent-record-head{display:flex;align-items:baseline;gap:.75rem}
|
|
37
|
+
.subagent-record-title{min-width:0;flex:1;overflow-wrap:anywhere;font-weight:500}
|
|
38
|
+
.subagent-record-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .5rem;margin-top:.25rem;font-size:.75rem;color:var(--pi-desk-plugin-muted-foreground,var(--muted-foreground))}
|
|
39
|
+
.subagent-record-meta code{overflow-wrap:anywhere}
|
|
40
|
+
.subagent-record-meta time{margin-left:auto;font-variant-numeric:tabular-nums}
|
|
41
|
+
.subagent-records-scroll{max-height:min(24rem,55dvh)}
|
|
42
|
+
.subagent-records-more{border-top:1px solid var(--pi-desk-plugin-border,var(--border));padding:.25rem .75rem}
|
|
43
|
+
@keyframes subagent-message-spin{to{transform:rotate(360deg)}}
|
|
44
|
+
@container(max-width:22rem){.subagent-message-task{flex-wrap:wrap}.subagent-message-title{flex-basis:100%}.subagent-message-id{font-size:.75rem}.subagent-record-head{gap:.5rem}}
|
|
45
|
+
@media(prefers-reduced-motion:reduce){.subagent-message-status-running::before{animation:none;border-style:dotted}.subagent-message-chevron{transition:none}}
|
|
46
|
+
`;function l(e){return typeof e=="string"&&e.trim()?e.trim():null}function $(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function D(e){return e==="completed"?{label:"\u5DF2\u5B8C\u6210",tone:"success"}:e==="failed"||e==="error"?{label:"\u6267\u884C\u5931\u8D25",tone:"error"}:e==="interrupted"||e==="aborted"?{label:"\u5DF2\u4E2D\u65AD",tone:"warning"}:e==="stopped"?{label:"\u5DF2\u505C\u6B62",tone:"warning"}:{label:"\u8FD0\u884C\u4E2D",tone:"running"}}function F(e,o,t,r){if(e==="return")return D(t);if(t==="error"||t==="failed")return{label:e==="list"?"\u67E5\u8BE2\u5931\u8D25":"\u8BF7\u6C42\u5931\u8D25",tone:"error"};let a=t==="completed";return{label:e==="list"?a?"\u5DF2\u67E5\u8BE2":"\u67E5\u8BE2\u4E2D":o==="stop"?a?"\u5DF2\u8BF7\u6C42\u505C\u6B62":"\u8BF7\u6C42\u4E2D":o==="steer"?a?r==="queued"?"\u5DF2\u6392\u961F":"\u5DF2\u53D1\u9001":"\u53D1\u9001\u4E2D":o==="resume"?a?"\u5DF2\u6062\u590D\u8FD0\u884C":"\u6062\u590D\u4E2D":a?"\u5DF2\u542F\u52A8":"\u542F\u52A8\u4E2D",tone:a?"normal":"running"}}function U(e,o){return e&&/^Agent \S+ 当前不是 running$/u.test(e)?o==="steer"?"\u5B50\u4EE3\u7406\u5F53\u524D\u672A\u8FD0\u884C\uFF0C\u65E0\u6CD5\u8865\u5145\u8981\u6C42\u3002":"\u5B50\u4EE3\u7406\u5F53\u524D\u672A\u8FD0\u884C\uFF0C\u65E0\u6CD5\u8BF7\u6C42\u505C\u6B62\u3002":e&&/^Agent \S+ 仍在运行$/u.test(e)?"\u5B50\u4EE3\u7406\u4ECD\u5728\u8FD0\u884C\uFF0C\u65E0\u6CD5\u518D\u6B21\u542F\u52A8\u3002":e}function Y({records:e,region:o}){let[t,r]=R(!1),a=z(),p=new Intl.DateTimeFormat(o.locale,{timeZone:o.timeZone,month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1});return n(H,{children:[s(T,{className:"subagent-records-scroll","aria-label":"\u5B50\u4EE3\u7406\u8BB0\u5F55",id:a,children:s("ol",{className:"subagent-records",children:(t?e:e.slice(0,3)).map((i,w)=>{let d=l(i.taskId),g=D(i.status);return n("li",{className:"subagent-record",children:[n("div",{className:"subagent-record-head",children:[s("span",{className:"subagent-record-title",children:l(i.title)??"\u5B50\u4EE3\u7406\u4EFB\u52A1"}),s("span",{className:`subagent-message-status subagent-message-status-${g.tone}`,children:g.label})]}),n("div",{className:"subagent-record-meta",children:[s("span",{children:l(i.agentType)}),d?s("code",{children:d}):null,typeof i.startedAt=="number"?s("time",{dateTime:new Date(i.startedAt).toISOString(),children:p.format(i.startedAt)}):null]})]},d??w)})})}),e.length>3?s("div",{className:"subagent-records-more",children:s(C,{size:"sm",variant:"ghost","aria-expanded":t,"aria-controls":a,onClick:()=>r(!t),children:t?"\u6536\u8D77\u8BB0\u5F55":`\u67E5\u770B\u5168\u90E8 ${e.length} \u6761`})}):null]})}function Q({kind:e,handle:o,host:t}){let r=W(o),a=J(o),p=L(c=>t.settings.subscribe(c),()=>t.settings.getSnapshot()).region,[i,w]=R(!1),d=z(),g=l(r.summary.action),N=l(r.summary.agentType),u=l(r.summary.taskId),h=l(r.summary.query),v=l(r.summary.error),m=Array.isArray(r.summary.agents)?r.summary.agents.flatMap(c=>{let V=$(c);return V?[V]:[]}):null,y=F(e,g,v?"error":e==="return"?l(r.summary.status)??r.fixed.status:r.fixed.status,r.summary.delivery),b=e==="return"?"\u8FD4\u56DE\u7ED3\u679C":e==="list"?h?"\u67E5\u8BE2\u8BB0\u5F55":"\u6700\u8FD1\u8BB0\u5F55":g==="resume"?"\u7EE7\u7EED\u6267\u884C":g==="stop"?"\u8BF7\u6C42\u505C\u6B62":g==="steer"?"\u8865\u5145\u8981\u6C42":"\u542F\u52A8\u4EFB\u52A1",P=e==="list"?m?m.length>0?`\u5171 ${m.length} \u6761\u5B50\u4EE3\u7406\u8BB0\u5F55`:"\u6682\u65E0\u5B50\u4EE3\u7406\u8BB0\u5F55":h?`\u5B50\u4EE3\u7406 ${h}`:"\u5F53\u524D\u4F1A\u8BDD\u7684\u5B50\u4EE3\u7406\u8BB0\u5F55":l(r.summary.title)??"\u5B50\u4EE3\u7406\u4EFB\u52A1",S=g==="steer"?l(r.summary.preview):null,k="entryId"in r.location&&r.fixed.hasDetail,M=$(a.detail),x=l(M?.markdown),A=l(M?.output),B=e==="start"?g==="resume"?"\u8FFD\u52A0\u8981\u6C42":"\u4EFB\u52A1\u8981\u6C42":g==="steer"?"\u8865\u5145\u8981\u6C42":e==="return"?"\u6267\u884C\u7ED3\u679C":"\u67E5\u8BE2\u7ED3\u679C",I=()=>{a.load().catch(c=>{console.warn("[\u5B50\u4EE3\u7406] \u6D88\u606F\u8BE6\u60C5\u52A0\u8F7D\u5931\u8D25",{taskId:u,operation:b,error:c})})},j=()=>{w(!i),!i&&a.detail===void 0&&!a.loading&&I()},E=n(H,{children:[n("svg",{className:"subagent-message-agent-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[s("path",{d:"M12 8V4H8M4 12H2m20 0h-2"}),s("rect",{x:"4",y:"8",width:"16",height:"12",rx:"2"}),s("path",{d:"M9 12v2m6-2v2m-6 3h6"})]}),n("span",{className:"subagent-message-headline",children:[s("span",{className:"subagent-message-name",children:"\u5B50\u4EE3\u7406"}),N?s("span",{className:"subagent-message-type",children:N}):null,s("span",{className:"subagent-message-action",children:b})]}),n("span",{className:`subagent-message-status subagent-message-status-${y.tone}`,children:[s("span",{children:y.label}),k?s("svg",{className:"subagent-message-chevron","data-open":i?"true":"false",viewBox:"0 0 24 24","aria-hidden":"true",children:s("path",{d:"m6 9 6 6 6-6",fill:"none",stroke:"currentColor",strokeWidth:"2"})}):null]}),n("span",{className:"subagent-message-task",children:[s("span",{className:"subagent-message-title",children:P}),u?n("code",{className:"subagent-message-id",title:u,children:["#",u.slice(0,8)]}):null]}),S?s("span",{className:"subagent-message-preview",children:S}):null,v?s("span",{className:"subagent-message-error",children:U(v,g)}):null]});return n(G,{className:`subagent-message${e==="list"?" subagent-message-list":""}`,role:"group","aria-label":`\u5B50\u4EE3\u7406${b}\u6D88\u606F`,children:[s("style",{children:_}),n(O,{className:`subagent-message-card subagent-message-card-${y.tone}`,children:[k?s("button",{type:"button",className:"subagent-message-header","aria-expanded":i,"aria-controls":d,"aria-label":`\u5B50\u4EE3\u7406${b}\uFF1A${P}`,onClick:j,children:E}):s("div",{className:"subagent-message-header",children:E}),m?.length?s(Y,{records:m,region:p}):null,i&&k?n("div",{id:d,children:[n("div",{className:"subagent-message-detail",children:[s("h3",{className:"subagent-message-detail-label",children:B}),a.loading?s("span",{role:"status",children:"\u6B63\u5728\u52A0\u8F7D\u8BE6\u60C5\u2026"}):a.error?n(q,{tone:"error",children:[a.error.message,s(C,{size:"sm",onClick:I,children:"\u91CD\u8BD5"})]}):x||A?s(T,{className:"subagent-message-detail-scroll",viewportClassName:"subagent-message-detail-scroll-viewport","aria-label":B,children:x?s(X,{content:x}):s("pre",{className:"subagent-message-output",children:A})}):s("span",{children:"\u6682\u65E0\u8BE6\u60C5"})]}),u?n("p",{className:"subagent-message-meta",children:[s("span",{children:"\u5B50\u4EE3\u7406 ID"}),s("code",{children:u})]}):null]}):null,!r.fixed.hasDetail&&u?n("p",{className:"subagent-message-meta",children:[s("span",{children:"\u5B50\u4EE3\u7406 ID"}),s("code",{children:u})]}):null]})]})}function ee(e,o,t){let r=K(e);return r.render(s(Z,{onError:t,children:o})),()=>r.unmount()}function f(e){return{mount({container:o,target:t,host:r}){return ee(o,s(Q,{kind:e,handle:t.message,host:r}),a=>t.reportError(a))}}}var ne=f("start"),oe=f("return"),ie=f("list"),le=f("control");export{le as controlMessageView,ie as listMessageView,oe as returnMessageView,ne as startMessageView};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import{useEffect as L,useRef as J,useState as d}from"react";import{createRoot as R}from"react-dom/client";import{PluginAlert as H,PluginButton as V,PluginCheckbox as z,PluginConfirmDialog as G,PluginErrorBoundary as M,PluginLoadingState as T,PluginPanelHeader as q,PluginSelectField as C,PluginSurface as F}from"@jetcrab/pi-desk-sdk/react/base";import{Fragment as W,jsx as t,jsxs as o}from"react/jsx-runtime";var X=[{value:"",label:"\u89D2\u8272\u9ED8\u8BA4"},{value:"off",label:"\u5173\u95ED"},{value:"minimal",label:"\u6781\u4F4E"},{value:"low",label:"\u4F4E"},{value:"medium",label:"\u4E2D"},{value:"high",label:"\u9AD8"},{value:"xhigh",label:"\u6781\u9AD8"},{value:"max",label:"\u6700\u5927"}],j=`
|
|
2
|
+
.subagent-settings {
|
|
3
|
+
min-height: 100%;
|
|
4
|
+
container-name: subagent-settings;
|
|
5
|
+
background: var(--pi-desk-plugin-background, var(--background));
|
|
6
|
+
}
|
|
7
|
+
.subagent-settings .subagent-settings-header {
|
|
8
|
+
position: sticky;
|
|
9
|
+
top: 0;
|
|
10
|
+
z-index: 1;
|
|
11
|
+
padding: 1rem;
|
|
12
|
+
background: var(--pi-desk-plugin-background, var(--background));
|
|
13
|
+
}
|
|
14
|
+
.subagent-settings-content {
|
|
15
|
+
display: grid;
|
|
16
|
+
gap: 1rem;
|
|
17
|
+
min-width: 0;
|
|
18
|
+
padding: 1rem;
|
|
19
|
+
}
|
|
20
|
+
.subagent-settings-columns { display: none; }
|
|
21
|
+
.subagent-settings-agent {
|
|
22
|
+
display: grid;
|
|
23
|
+
gap: .75rem;
|
|
24
|
+
min-width: 0;
|
|
25
|
+
padding: .75rem 0;
|
|
26
|
+
border-bottom: 1px solid var(--pi-desk-plugin-border, var(--border));
|
|
27
|
+
}
|
|
28
|
+
.subagent-settings-agent:last-child { border-bottom: 0; }
|
|
29
|
+
.subagent-settings-toggle {
|
|
30
|
+
display: flex;
|
|
31
|
+
align-items: center;
|
|
32
|
+
gap: .5rem;
|
|
33
|
+
min-width: 0;
|
|
34
|
+
min-height: 2rem;
|
|
35
|
+
font-weight: 500;
|
|
36
|
+
cursor: pointer;
|
|
37
|
+
}
|
|
38
|
+
.subagent-settings-toggle span { overflow-wrap: anywhere; }
|
|
39
|
+
.subagent-settings-fields { display: grid; min-width: 0; gap: .75rem; }
|
|
40
|
+
.subagent-settings-note {
|
|
41
|
+
margin: 0;
|
|
42
|
+
color: var(--pi-desk-plugin-muted-foreground, var(--muted-foreground));
|
|
43
|
+
}
|
|
44
|
+
@container subagent-settings (min-width: 34rem) {
|
|
45
|
+
.subagent-settings-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
46
|
+
}
|
|
47
|
+
@container subagent-settings (min-width: 40rem) {
|
|
48
|
+
.subagent-settings .subagent-settings-header { padding: 1.5rem; }
|
|
49
|
+
.subagent-settings-content { padding: 1rem 1.5rem 1.5rem; }
|
|
50
|
+
.subagent-settings-columns, .subagent-settings-agent {
|
|
51
|
+
display: grid;
|
|
52
|
+
grid-template-columns: 8rem minmax(0, 1fr) 9rem;
|
|
53
|
+
align-items: center;
|
|
54
|
+
gap: .75rem;
|
|
55
|
+
}
|
|
56
|
+
.subagent-settings-columns {
|
|
57
|
+
min-height: 2rem;
|
|
58
|
+
border-bottom: 1px solid var(--pi-desk-plugin-border, var(--border));
|
|
59
|
+
color: var(--pi-desk-plugin-muted-foreground, var(--muted-foreground));
|
|
60
|
+
font-size: .75rem;
|
|
61
|
+
font-weight: 500;
|
|
62
|
+
}
|
|
63
|
+
.subagent-settings-fields { display: contents; }
|
|
64
|
+
.subagent-settings-field > label {
|
|
65
|
+
position: absolute;
|
|
66
|
+
width: 1px;
|
|
67
|
+
height: 1px;
|
|
68
|
+
padding: 0;
|
|
69
|
+
margin: -1px;
|
|
70
|
+
overflow: hidden;
|
|
71
|
+
clip-path: inset(50%);
|
|
72
|
+
white-space: nowrap;
|
|
73
|
+
border: 0;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
`;function K({host:u,target:g,signal:s}){let[i,m]=d(null),[c,v]=d([]),[D,k]=d(!0),[a,w]=d(!1),[h,b]=d(null),[E,y]=d(!1),r=J(null),f=i!==null&&JSON.stringify(c)!==JSON.stringify(i.agents);L(()=>(g.setBeforeLeave(()=>a?!1:f?new Promise(e=>{r.current?.(!1),r.current=e,y(!0)}):!0),()=>{g.setBeforeLeave(null),r.current?.(!1),r.current=null}),[g,f,a]);async function P(){return await u.piDesk.invokeGlobal("settings-get",{})}function N(e){s.aborted||(m(e),v(e.agents))}function x(e){s.aborted||b(e instanceof Error?e.message:String(e))}function B(){s.aborted||k(!1)}async function O(){await P().then(N).catch(x).finally(B)}async function $(){k(!0),b(null),await O()}L(()=>{P().then(N).catch(x).finally(B)},[]);function S(e,l){v(n=>n.map(p=>p.name===e?{...p,...l}:p))}async function A(){if(!(!i||!f||a)){w(!0),b(null);try{let e=c.filter((n,p)=>JSON.stringify(n)!==JSON.stringify(i.agents[p])),l=await u.piDesk.invokeGlobal("settings-save",{agents:e});if(s.aborted)return;m({...i,agents:l.agents}),v(l.agents),u.notify({level:"success",title:"\u5B50\u4EE3\u7406\u8BBE\u7F6E\u5DF2\u4FDD\u5B58"})}catch(e){s.aborted||b(e instanceof Error?e.message:String(e))}finally{s.aborted||w(!1)}}}let I=[{value:"",label:"\u89D2\u8272\u9ED8\u8BA4\u6A21\u578B"},...(i?.models??[]).map(e=>({value:`${e.provider}/${e.modelId}`,label:`${e.provider} / ${e.name||e.modelId}`,textValue:`${e.provider} ${e.modelId}`}))];return o(F,{className:"subagent-settings",children:[t("style",{children:j}),t(q,{className:"subagent-settings-header",title:"\u5B50\u4EE3\u7406",description:"\u5168\u5C40\u9ED8\u8BA4\u914D\u7F6E\uFF0C\u9879\u76EE\u8BBE\u7F6E\u4F18\u5148\u3002",actions:t(V,{disabled:!f||a,onClick:()=>void A(),children:a?"\u4FDD\u5B58\u4E2D\u2026":"\u4FDD\u5B58\u8BBE\u7F6E"})}),t("div",{className:"subagent-settings-content",children:t(T,{loading:D&&!i,error:i?null:h,onRetry:()=>void $(),children:i?o(W,{children:[o("div",{className:"subagent-settings-list",children:[o("div",{className:"subagent-settings-columns","aria-hidden":"true",children:[t("span",{children:"\u5B50\u4EE3\u7406"}),t("span",{children:"\u6A21\u578B"}),t("span",{children:"\u601D\u8003\u7B49\u7EA7"})]}),c.map(e=>{let l=[...I];return e.model&&!l.some(n=>n.value===e.model)&&l.push({value:e.model,label:`${e.model}\uFF08\u5F53\u524D\u4E0D\u53EF\u7528\uFF09`}),o("div",{className:"subagent-settings-agent",role:"group","aria-label":e.name,children:[o("label",{className:"subagent-settings-toggle",children:[t(z,{"aria-label":`\u542F\u7528 ${e.name}`,checked:!e.disabled,disabled:a,onChange:n=>S(e.name,{disabled:!n.target.checked})}),t("span",{children:e.name})]}),o("div",{className:"subagent-settings-fields",children:[t(C,{className:"subagent-settings-field",label:"\u6A21\u578B",value:e.model,options:l,disabled:a||e.disabled,onValueChange:n=>S(e.name,{model:n??"",thinking:n?e.thinking:null})}),t(C,{className:"subagent-settings-field",label:"\u601D\u8003\u7B49\u7EA7",value:e.thinking??"",options:X,disabled:a||e.disabled||!e.model,onValueChange:n=>S(e.name,{thinking:n||null})})]})]},e.name)})]}),h?t(H,{tone:"error",density:"compact",children:h}):null,t("p",{className:"subagent-settings-note",children:"\u4FDD\u5B58\u540E\u4E0B\u6B21\u542F\u52A8\u6216\u6062\u590D\u5B50\u4EE3\u7406\u65F6\u751F\u6548\uFF0C\u8FD0\u884C\u4E2D\u7684\u4EFB\u52A1\u4E0D\u53D7\u5F71\u54CD\u3002"})]}):null})}),t(G,{open:E,title:"\u653E\u5F03\u672A\u4FDD\u5B58\u7684\u8BBE\u7F6E\uFF1F",confirmLabel:"\u653E\u5F03\u4FEE\u6539",onConfirm:()=>{r.current?.(!0),r.current=null,y(!1)},onOpenChange:e=>{e||(r.current?.(!1),r.current=null,y(!1))}})]})}var Q=0,U={mount({container:u,host:g,target:s,signal:i}){let m=R(u,{identifierPrefix:`subagent-settings-${++Q}-`});return m.render(t(M,{onError:c=>g.notify({level:"error",title:"\u5B50\u4EE3\u7406\u8BBE\u7F6E\u663E\u793A\u5931\u8D25",description:c.message}),children:t(K,{host:g,target:s,signal:i})})),()=>m.unmount()}},ee=U;export{ee as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function n(t){if(typeof t!="function")throw new Error("Browser Entry factory must be a function");return t}var r=()=>import("./chunks/browser-ZO5HSBS2.js"),a=n(t=>{t.registerContribution("settings-page","subagent",{label:"\u5B50\u4EE3\u7406",icon:{type:"builtin",name:"bot"},load:()=>import("./chunks/browser-settings-CFHVYNTB.js").then(e=>e.default)}),t.registerContribution("message-view","start",{viewKey:"subagent/start",priority:100,load:()=>r().then(e=>e.startMessageView)}),t.registerContribution("message-view","list",{viewKey:"subagent/list",priority:100,load:()=>r().then(e=>e.listMessageView)}),t.registerContribution("message-view","control",{viewKey:"subagent/control",priority:100,load:()=>r().then(e=>e.controlMessageView)}),t.registerContribution("message-view","return",{viewKey:"subagent/return",priority:100,load:()=>r().then(e=>e.returnMessageView)})});export{a as default};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { ExtensionAPI, ExtensionFactory } from '@earendil-works/pi-coding-agent';
|
|
2
|
+
type ResearchCacheKind = 'web-search' | 'page' | 'github-search' | 'repository';
|
|
3
|
+
type ResearchCacheIndexEntry = {
|
|
4
|
+
key: string;
|
|
5
|
+
kind: ResearchCacheKind;
|
|
6
|
+
relativePath: string;
|
|
7
|
+
source: string;
|
|
8
|
+
createdAt: string;
|
|
9
|
+
updatedAt: string;
|
|
10
|
+
lastUsedAt: string;
|
|
11
|
+
contentHash: string;
|
|
12
|
+
repositoryPath?: string;
|
|
13
|
+
};
|
|
14
|
+
type ResearchCacheRecord = {
|
|
15
|
+
version: 1;
|
|
16
|
+
key: string;
|
|
17
|
+
kind: ResearchCacheKind;
|
|
18
|
+
source: string;
|
|
19
|
+
createdAt: string;
|
|
20
|
+
contentHash: string;
|
|
21
|
+
data: unknown;
|
|
22
|
+
};
|
|
23
|
+
type CachedResearch = {
|
|
24
|
+
entry: ResearchCacheIndexEntry;
|
|
25
|
+
record: ResearchCacheRecord;
|
|
26
|
+
};
|
|
27
|
+
export type ResearchCacheOptions = {
|
|
28
|
+
cwd: string;
|
|
29
|
+
now?: () => number;
|
|
30
|
+
};
|
|
31
|
+
declare function hashText(value: string): string;
|
|
32
|
+
declare function cacheKey(kind: ResearchCacheKind, value: unknown): string;
|
|
33
|
+
/**
|
|
34
|
+
* 保留正文中的块级断行,避免把网页压成无法引用的一整段文本。
|
|
35
|
+
*/
|
|
36
|
+
export declare function extractReadableText(html: string): string;
|
|
37
|
+
export declare class ResearchCache {
|
|
38
|
+
readonly root: string;
|
|
39
|
+
private readonly indexPath;
|
|
40
|
+
private readonly now;
|
|
41
|
+
constructor(options: ResearchCacheOptions);
|
|
42
|
+
get(key: string): Promise<CachedResearch | undefined>;
|
|
43
|
+
put(params: {
|
|
44
|
+
key: string;
|
|
45
|
+
kind: ResearchCacheKind;
|
|
46
|
+
source: string;
|
|
47
|
+
data: unknown;
|
|
48
|
+
repositoryPath?: string;
|
|
49
|
+
}): Promise<CachedResearch>;
|
|
50
|
+
cleanup(): Promise<void>;
|
|
51
|
+
private withLock;
|
|
52
|
+
private cleanupUnlocked;
|
|
53
|
+
private cleanupIndexUnlocked;
|
|
54
|
+
private readIndex;
|
|
55
|
+
private writeIndexUnlocked;
|
|
56
|
+
private resolveEntryPath;
|
|
57
|
+
private writeJson;
|
|
58
|
+
}
|
|
59
|
+
export declare function ensureCachedRepository(params: {
|
|
60
|
+
pi: ExtensionAPI;
|
|
61
|
+
cache: ResearchCache;
|
|
62
|
+
cwd: string;
|
|
63
|
+
repository: string;
|
|
64
|
+
ref?: string;
|
|
65
|
+
refresh: boolean;
|
|
66
|
+
onProgress?: (text: string) => void;
|
|
67
|
+
}): Promise<{
|
|
68
|
+
cached: CachedResearch;
|
|
69
|
+
cacheStatus: 'hit' | 'miss';
|
|
70
|
+
}>;
|
|
71
|
+
export declare function createExternalResearchExtension(): ExtensionFactory;
|
|
72
|
+
export declare const __test__: {
|
|
73
|
+
cacheKey: typeof cacheKey;
|
|
74
|
+
hashText: typeof hashText;
|
|
75
|
+
};
|
|
76
|
+
export {};
|