@godmode-team/godmode 1.7.2 → 1.8.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 +94 -46
- package/README.md +190 -36
- package/assets/agent-roster/competitor-watch.md +40 -0
- package/assets/agent-roster/content-writer.md +35 -53
- package/assets/agent-roster/godmode-builder.md +2 -2
- package/assets/agent-roster/inbox-manager.md +38 -0
- package/assets/agent-roster/meeting-prep.md +40 -16
- package/assets/agent-roster/skill-optimizer.md +50 -0
- package/assets/agent-roster/weekly-review.md +42 -0
- package/assets/skills/autoresearch.md +1 -1
- package/assets/skills/pattern-scout.md +1 -1
- package/assets/skills/visual-qa.md +128 -0
- package/dist/godmode-ui/aeo.html +1 -1
- package/dist/godmode-ui/assets/brain-tab-Z-Uwg6EX.js +402 -0
- package/dist/godmode-ui/assets/connections-tab-DhJWQQBw.js +91 -0
- package/dist/godmode-ui/assets/ctrl-settings-niym-WgY.js +5 -0
- package/dist/godmode-ui/assets/dashboards-tab-D22kRTMW.js +137 -0
- package/dist/godmode-ui/assets/index-Covj4w7X.js +1994 -0
- package/dist/godmode-ui/assets/index-DmEmOd0w.css +1 -0
- package/dist/godmode-ui/assets/lit-core-CTInmNPB.js +3 -0
- package/dist/godmode-ui/assets/markdown-i_gIkIP3.js +59 -0
- package/dist/godmode-ui/assets/second-brain-tab-BINrzjjx.js +350 -0
- package/dist/godmode-ui/assets/setup-BnLadXY9.js +1 -0
- package/dist/godmode-ui/assets/team-tab-DE4DvNCS.js +296 -0
- package/dist/godmode-ui/assets/today-tab-BExVN_cu.js +209 -0
- package/dist/godmode-ui/assets/views-settings-nvLQdpIB.js +4643 -0
- package/dist/godmode-ui/assets/work-tab-DOrlU-Ge.js +1 -0
- package/dist/godmode-ui/assets/workspaces-C8dKMKC1.js +718 -0
- package/dist/godmode-ui/index.html +11 -5
- package/dist/index.js +1658 -36092
- package/dist/mcp-entry.js +1272 -0
- package/dist/standalone.js +1917 -0
- package/openclaw.plugin.json +36 -7
- package/package.json +25 -11
- package/scripts/godmode-gateway.service +41 -0
- package/scripts/install-systemd.sh +99 -0
- package/skill-cards/adversarial-board.md +63 -0
- package/skill-cards/autoresearch.md +39 -0
- package/skill-cards/bill-review.md +26 -0
- package/skill-cards/calendar.md +32 -0
- package/skill-cards/code-quality.md +31 -0
- package/skill-cards/competitor-scan.md +26 -0
- package/skill-cards/content-generation.md +26 -0
- package/skill-cards/context-deep-dive.md +65 -0
- package/skill-cards/cron-workflows.md +33 -0
- package/skill-cards/dashboards.md +38 -0
- package/skill-cards/delegate.md +57 -0
- package/skill-cards/files.md +38 -0
- package/skill-cards/godmode-builder.md +58 -0
- package/skill-cards/inbox-sweep.md +26 -0
- package/skill-cards/integrations.md +40 -0
- package/skill-cards/life-admin.md +26 -0
- package/skill-cards/meetings.md +42 -0
- package/skill-cards/meta-problem-solver.md +52 -0
- package/skill-cards/people.md +39 -0
- package/skill-cards/personal-brand.md +71 -0
- package/skill-cards/project-orchestrator.md +97 -0
- package/skill-cards/project-pipeline.md +78 -0
- package/skill-cards/proof-editor.md +28 -0
- package/skill-cards/quality-gate.md +57 -0
- package/skill-cards/quarterly-review.md +26 -0
- package/skill-cards/queue.md +40 -0
- package/skill-cards/screenpipe.md +49 -0
- package/skill-cards/second-brain.md +46 -0
- package/skill-cards/standup-prep.md +26 -0
- package/skill-cards/tasks.md +34 -0
- package/skill-cards/visual-qa.md +56 -0
- package/skill-cards/workspace-memory.md +51 -0
- package/skill-cards/x-twitter.md +37 -0
- package/dist/godmode-ui/assets/dashboards-CrT3s0NG.js +0 -1
- package/dist/godmode-ui/assets/index-BtwTHiwI.js +0 -9353
- package/dist/godmode-ui/assets/index-xiAdnGJD.css +0 -1
- package/dist/godmode-ui/assets/options-QuHclvvX.js +0 -1
- package/dist/godmode-ui/assets/second-brain-ghSM5E6X.js +0 -1
- package/dist/godmode-ui/assets/setup-CWjMtnE4.js +0 -1
- package/dist/godmode-ui/consciousness-icon-64.png +0 -0
- package/dist/godmode-ui/consciousness-icon.png +0 -0
- package/dist/godmode-ui/godmode-logo.png +0 -0
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
import{d as h,A as d,b as s,g as u,a as g,r as o,t as v}from"./lit-core-CTInmNPB.js";import{w as x}from"./index-Covj4w7X.js";import"./ctrl-settings-niym-WgY.js";import"./views-settings-nvLQdpIB.js";import"./markdown-i_gIkIP3.js";var f=Object.defineProperty,y=Object.getOwnPropertyDescriptor,a=(e,t,r,n)=>{for(var p=n>1?void 0:n?y(t,r):t,c=e.length-1,l;c>=0;c--)(l=e[c])&&(p=(n?l(t,r,p):l(p))||p);return n&&p&&f(t,r,p),p};const _="http://localhost:3100";let i=class extends h{constructor(){super(...arguments),this._phase="loading",this._url="",this._serverUp=!1,this._configured=!1,this._steps=[],this._error=null,this._iframeError=!1,this._customUrl="",this._showAdvanced=!1,this._agentCount=0,this._wasConnected=!1}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),this._checkStatus()}willUpdate(e){super.willUpdate(e);const t=this.ctx?.connected??!1;t&&!this._wasConnected&&this._checkStatus(),this._wasConnected=t}get _client(){return this.host?.client??this.ctx?.client}async _checkStatus(){this._phase="loading",this._error=null,this._steps=[];const e=this._client;if(!e){this._phase="error",this._error="Not connected to gateway.";return}try{const t=await e.request("paperclip.dashboardUrl",{});if(t?.ready){this._url=t.url??"",this._agentCount=t.agents?.length??0,this._phase="ready";return}const r=await e.request("paperclip.setup",{action:"check"});this._serverUp=r?.serverUp??!1,this._configured=r?.configured??!1,this._steps=r?.steps??[],this._phase="not-configured"}catch{this._phase="not-configured",this._serverUp=!1,this._configured=!1}}async _quickSetup(){const e=this._client;if(e){this._phase="installing",this._steps=[],this._error=null;try{const t=await e.request("paperclip.setup",{action:"install"});if(this._steps=[...t?.steps??[]],!t?.success){this._phase="error",this._error="Could not start Paperclip server. See details below.";return}this._url=t.url??_,this._phase="seeding";const r=await e.request("paperclip.setup",{action:"seed"});if(this._steps=[...this._steps,...r?.steps??[]],this._agentCount=r?.totalAgents??0,!r?.success){this._phase="error",this._error="Server is running but agent seeding failed.";return}this._phase="ready"}catch(t){this._phase="error",this._error=t instanceof Error?t.message:String(t)}}}async _connectExisting(){const e=this._client;if(!e)return;const t=this._customUrl.trim();if(t){this._phase="installing",this._steps=[],this._error=null;try{const r=await e.request("paperclip.setup",{action:"connect",url:t});if(this._steps=[...r?.steps??[]],!r?.success){this._phase="error",this._error="Could not connect to that server.";return}this._phase="seeding";const n=await e.request("paperclip.setup",{action:"seed"});this._steps=[...this._steps,...n?.steps??[]],this._agentCount=n?.totalAgents??0,this._phase=n?.success?"ready":"error",n?.success||(this._error="Connected but agent seeding failed.")}catch(r){this._phase="error",this._error=r instanceof Error?r.message:String(r)}}}async _seedOnly(){const e=this._client;if(e){this._phase="seeding",this._steps=[],this._error=null;try{const t=await e.request("paperclip.setup",{action:"seed"});this._steps=t?.steps??[],this._agentCount=t?.totalAgents??0,t?.success?this._phase="ready":(this._phase="error",this._error="Agent seeding failed.")}catch(t){this._phase="error",this._error=t instanceof Error?t.message:String(t)}}}_dashboardUrl(){let e="3100";if(this._url)try{const n=new URL(this._url);n.port&&(e=n.port)}catch{}const t=window.location.protocol,r=window.location.hostname;return`${t}//${r}:${e}`}_renderSteps(){return this._steps.length===0?d:s`
|
|
2
|
+
<div style="margin-top: 16px; font-size: 13px;">
|
|
3
|
+
${this._steps.map(e=>s`
|
|
4
|
+
<div style="
|
|
5
|
+
display: flex;
|
|
6
|
+
align-items: center;
|
|
7
|
+
gap: 8px;
|
|
8
|
+
padding: 4px 0;
|
|
9
|
+
color: ${e.status==="error"?"var(--danger, #ef4444)":e.status==="ok"?"var(--success, #22c55e)":"var(--muted)"};
|
|
10
|
+
">
|
|
11
|
+
<span>${e.status==="ok"?"✓":e.status==="error"?"✗":"•"}</span>
|
|
12
|
+
<span>${e.step}</span>
|
|
13
|
+
${e.detail?s`<span style="color: var(--muted); font-size: 12px; margin-left: auto; max-width: 50%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;" title="${e.detail}">${e.detail}</span>`:d}
|
|
14
|
+
</div>
|
|
15
|
+
`)}
|
|
16
|
+
</div>
|
|
17
|
+
`}render(){if(this._phase==="loading")return s`<div class="my-day-container">
|
|
18
|
+
<div class="my-day-card"><div class="my-day-card-content"><p>Checking agent team status...</p></div></div>
|
|
19
|
+
</div>`;if(this._phase==="ready"){const e=this._dashboardUrl();return this._iframeError?s`<div class="my-day-container">
|
|
20
|
+
<div class="my-day-card">
|
|
21
|
+
<div class="my-day-card-content" style="text-align: center; padding: 32px 24px;">
|
|
22
|
+
<h3 style="margin: 0 0 12px;">Agent Team Ready</h3>
|
|
23
|
+
<p style="color: var(--muted); margin: 0 0 8px; font-size: 13px;">
|
|
24
|
+
${this._agentCount} agents configured. Dashboard couldn't be embedded.
|
|
25
|
+
</p>
|
|
26
|
+
<a
|
|
27
|
+
href="${e}"
|
|
28
|
+
target="_blank"
|
|
29
|
+
rel="noopener"
|
|
30
|
+
style="
|
|
31
|
+
display: inline-block;
|
|
32
|
+
padding: 14px 40px;
|
|
33
|
+
background: var(--accent, #f59e0b);
|
|
34
|
+
color: var(--on-accent, #000);
|
|
35
|
+
font-size: 16px;
|
|
36
|
+
font-weight: 600;
|
|
37
|
+
border-radius: 10px;
|
|
38
|
+
text-decoration: none;
|
|
39
|
+
margin-top: 12px;
|
|
40
|
+
"
|
|
41
|
+
>Open Paperclip Dashboard</a>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
</div>`:s`<div style="
|
|
45
|
+
display: flex;
|
|
46
|
+
flex-direction: column;
|
|
47
|
+
height: calc(100vh - 16px);
|
|
48
|
+
padding: 0;
|
|
49
|
+
margin: -16px -24px 0;
|
|
50
|
+
">
|
|
51
|
+
<iframe
|
|
52
|
+
src="${e}"
|
|
53
|
+
style="
|
|
54
|
+
flex: 1;
|
|
55
|
+
width: 100%;
|
|
56
|
+
border: none;
|
|
57
|
+
background: var(--surface, #1a1a1a);
|
|
58
|
+
"
|
|
59
|
+
allow="clipboard-read; clipboard-write"
|
|
60
|
+
@error=${()=>{this._iframeError=!0}}
|
|
61
|
+
@load=${t=>{try{const r=t.target;r.contentDocument?.title===""&&r.contentDocument?.body?.children.length}catch{}}}
|
|
62
|
+
></iframe>
|
|
63
|
+
</div>`}return this._phase==="installing"||this._phase==="seeding"?s`<div class="my-day-container">
|
|
64
|
+
<div class="my-day-card">
|
|
65
|
+
<div class="my-day-card-content" style="padding: 32px 24px;">
|
|
66
|
+
<h3 style="margin: 0 0 12px;">${this._phase==="installing"?"Starting Paperclip Server...":"Seeding Agent Team..."}</h3>
|
|
67
|
+
<p style="color: var(--muted); margin: 0 0 16px; font-size: 13px;">
|
|
68
|
+
${this._phase==="installing"?"Installing and starting the Paperclip orchestration server. This may take a minute on first run.":"Creating agents from your GodMode persona roster."}
|
|
69
|
+
</p>
|
|
70
|
+
<div style="
|
|
71
|
+
width: 100%;
|
|
72
|
+
height: 4px;
|
|
73
|
+
background: var(--surface-2, #2a2a2a);
|
|
74
|
+
border-radius: 2px;
|
|
75
|
+
overflow: hidden;
|
|
76
|
+
">
|
|
77
|
+
<div style="
|
|
78
|
+
height: 100%;
|
|
79
|
+
background: var(--accent, #f59e0b);
|
|
80
|
+
border-radius: 2px;
|
|
81
|
+
animation: pulse-width 2s ease-in-out infinite;
|
|
82
|
+
width: ${this._phase==="seeding"?"70%":"40%"};
|
|
83
|
+
"></div>
|
|
84
|
+
</div>
|
|
85
|
+
${this._renderSteps()}
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
<style>
|
|
90
|
+
@keyframes pulse-width {
|
|
91
|
+
0%, 100% { opacity: 0.7; }
|
|
92
|
+
50% { opacity: 1; }
|
|
93
|
+
}
|
|
94
|
+
</style>`:this._phase==="error"?s`<div class="my-day-container">
|
|
95
|
+
<div class="my-day-card">
|
|
96
|
+
<div class="my-day-card-content" style="padding: 32px 24px;">
|
|
97
|
+
<h3 style="margin: 0 0 12px;">Setup Issue</h3>
|
|
98
|
+
${this._error?s`<p style="color: var(--danger, #ef4444); margin: 0 0 16px; font-size: 13px;">${this._error}</p>`:d}
|
|
99
|
+
${this._renderSteps()}
|
|
100
|
+
<div style="display: flex; gap: 12px; margin-top: 20px;">
|
|
101
|
+
<button
|
|
102
|
+
style="
|
|
103
|
+
padding: 10px 24px;
|
|
104
|
+
background: var(--accent, #f59e0b);
|
|
105
|
+
color: var(--on-accent, #000);
|
|
106
|
+
border: none;
|
|
107
|
+
border-radius: 8px;
|
|
108
|
+
font-weight: 600;
|
|
109
|
+
cursor: pointer;
|
|
110
|
+
font-size: 14px;
|
|
111
|
+
"
|
|
112
|
+
@click=${()=>{this._quickSetup()}}
|
|
113
|
+
>Try Again</button>
|
|
114
|
+
<button
|
|
115
|
+
style="
|
|
116
|
+
padding: 10px 24px;
|
|
117
|
+
background: transparent;
|
|
118
|
+
color: var(--muted);
|
|
119
|
+
border: 1px solid var(--border, #333);
|
|
120
|
+
border-radius: 8px;
|
|
121
|
+
cursor: pointer;
|
|
122
|
+
font-size: 14px;
|
|
123
|
+
"
|
|
124
|
+
@click=${()=>{this._checkStatus()}}
|
|
125
|
+
>Back</button>
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
</div>`:s`<div class="my-day-container">
|
|
130
|
+
<div class="my-day-card">
|
|
131
|
+
<div class="my-day-card-content" style="padding: 32px 24px;">
|
|
132
|
+
<!-- Header -->
|
|
133
|
+
<h3 style="margin: 0 0 8px; font-size: 20px;">Agent Team</h3>
|
|
134
|
+
<p style="color: var(--muted); margin: 0 0 24px; font-size: 14px; line-height: 1.5;">
|
|
135
|
+
Paperclip orchestrates your AI agent team — multiple specialists working on complex tasks in parallel.
|
|
136
|
+
Delegate work and get results delivered to your inbox.
|
|
137
|
+
</p>
|
|
138
|
+
|
|
139
|
+
<!-- Primary CTA: One-click setup -->
|
|
140
|
+
${this._serverUp&&this._configured?s`
|
|
141
|
+
<!-- Server running + configured but not ready — just seed -->
|
|
142
|
+
<button
|
|
143
|
+
style="
|
|
144
|
+
width: 100%;
|
|
145
|
+
padding: 16px 24px;
|
|
146
|
+
background: var(--accent, #f59e0b);
|
|
147
|
+
color: var(--on-accent, #000);
|
|
148
|
+
border: none;
|
|
149
|
+
border-radius: 10px;
|
|
150
|
+
font-weight: 600;
|
|
151
|
+
font-size: 16px;
|
|
152
|
+
cursor: pointer;
|
|
153
|
+
margin-bottom: 12px;
|
|
154
|
+
"
|
|
155
|
+
@click=${()=>{this._seedOnly()}}
|
|
156
|
+
>Seed Agent Team</button>
|
|
157
|
+
<p style="color: var(--muted); font-size: 12px; margin: 0 0 16px; text-align: center;">
|
|
158
|
+
Server is running — this will create agents from your persona roster.
|
|
159
|
+
</p>
|
|
160
|
+
`:this._serverUp?s`
|
|
161
|
+
<!-- Server running but not configured — seed will also write env vars -->
|
|
162
|
+
<button
|
|
163
|
+
style="
|
|
164
|
+
width: 100%;
|
|
165
|
+
padding: 16px 24px;
|
|
166
|
+
background: var(--accent, #f59e0b);
|
|
167
|
+
color: var(--on-accent, #000);
|
|
168
|
+
border: none;
|
|
169
|
+
border-radius: 10px;
|
|
170
|
+
font-weight: 600;
|
|
171
|
+
font-size: 16px;
|
|
172
|
+
cursor: pointer;
|
|
173
|
+
margin-bottom: 12px;
|
|
174
|
+
"
|
|
175
|
+
@click=${()=>{this._seedOnly()}}
|
|
176
|
+
>Connect & Seed Agents</button>
|
|
177
|
+
<p style="color: var(--muted); font-size: 12px; margin: 0 0 16px; text-align: center;">
|
|
178
|
+
Paperclip server detected. Click to configure and seed agents.
|
|
179
|
+
</p>
|
|
180
|
+
`:s`
|
|
181
|
+
<!-- No server — full setup -->
|
|
182
|
+
<button
|
|
183
|
+
style="
|
|
184
|
+
width: 100%;
|
|
185
|
+
padding: 16px 24px;
|
|
186
|
+
background: var(--accent, #f59e0b);
|
|
187
|
+
color: var(--on-accent, #000);
|
|
188
|
+
border: none;
|
|
189
|
+
border-radius: 10px;
|
|
190
|
+
font-weight: 600;
|
|
191
|
+
font-size: 16px;
|
|
192
|
+
cursor: pointer;
|
|
193
|
+
margin-bottom: 12px;
|
|
194
|
+
"
|
|
195
|
+
@click=${()=>{this._quickSetup()}}
|
|
196
|
+
>Set Up Agent Team</button>
|
|
197
|
+
<p style="color: var(--muted); font-size: 12px; margin: 0 0 16px; text-align: center;">
|
|
198
|
+
Installs Paperclip locally, starts the server, and creates agents from your persona roster.
|
|
199
|
+
</p>
|
|
200
|
+
`}
|
|
201
|
+
|
|
202
|
+
<!-- What you get -->
|
|
203
|
+
<div style="
|
|
204
|
+
background: var(--surface-2, rgba(255,255,255,0.03));
|
|
205
|
+
border-radius: 10px;
|
|
206
|
+
padding: 16px 20px;
|
|
207
|
+
margin-bottom: 16px;
|
|
208
|
+
">
|
|
209
|
+
<p style="margin: 0 0 12px; font-size: 13px; font-weight: 600; color: var(--text);">What you get:</p>
|
|
210
|
+
<div style="display: flex; flex-direction: column; gap: 8px; font-size: 13px; color: var(--muted);">
|
|
211
|
+
<div style="display: flex; align-items: center; gap: 10px;">
|
|
212
|
+
<span style="font-size: 16px;">👥</span>
|
|
213
|
+
<span>Your persona roster becomes a team of AI agents</span>
|
|
214
|
+
</div>
|
|
215
|
+
<div style="display: flex; align-items: center; gap: 10px;">
|
|
216
|
+
<span style="font-size: 16px;">📋</span>
|
|
217
|
+
<span>Delegate complex tasks — agents work in parallel</span>
|
|
218
|
+
</div>
|
|
219
|
+
<div style="display: flex; align-items: center; gap: 10px;">
|
|
220
|
+
<span style="font-size: 16px;">📥</span>
|
|
221
|
+
<span>Results delivered to your inbox when complete</span>
|
|
222
|
+
</div>
|
|
223
|
+
<div style="display: flex; align-items: center; gap: 10px;">
|
|
224
|
+
<span style="font-size: 16px;">📊</span>
|
|
225
|
+
<span>Full dashboard to monitor agent activity</span>
|
|
226
|
+
</div>
|
|
227
|
+
</div>
|
|
228
|
+
</div>
|
|
229
|
+
|
|
230
|
+
<!-- Advanced: Connect to existing server -->
|
|
231
|
+
<div style="border-top: 1px solid var(--border, #333); padding-top: 16px;">
|
|
232
|
+
<button
|
|
233
|
+
style="
|
|
234
|
+
background: none;
|
|
235
|
+
border: none;
|
|
236
|
+
color: var(--muted);
|
|
237
|
+
cursor: pointer;
|
|
238
|
+
font-size: 13px;
|
|
239
|
+
padding: 0;
|
|
240
|
+
display: flex;
|
|
241
|
+
align-items: center;
|
|
242
|
+
gap: 6px;
|
|
243
|
+
"
|
|
244
|
+
@click=${()=>{this._showAdvanced=!this._showAdvanced}}
|
|
245
|
+
>
|
|
246
|
+
<span style="transform: rotate(${this._showAdvanced?"90deg":"0deg"}); transition: transform 0.15s; display: inline-block;">\u25B6</span>
|
|
247
|
+
Connect to existing Paperclip server
|
|
248
|
+
</button>
|
|
249
|
+
|
|
250
|
+
${this._showAdvanced?s`
|
|
251
|
+
<div style="margin-top: 12px; display: flex; gap: 8px;">
|
|
252
|
+
<input
|
|
253
|
+
type="text"
|
|
254
|
+
placeholder="http://your-server:3100"
|
|
255
|
+
.value=${this._customUrl}
|
|
256
|
+
@input=${e=>{this._customUrl=e.target.value}}
|
|
257
|
+
style="
|
|
258
|
+
flex: 1;
|
|
259
|
+
padding: 10px 14px;
|
|
260
|
+
background: var(--surface-2, #1a1a1a);
|
|
261
|
+
color: var(--text, #fff);
|
|
262
|
+
border: 1px solid var(--border, #333);
|
|
263
|
+
border-radius: 8px;
|
|
264
|
+
font-size: 14px;
|
|
265
|
+
outline: none;
|
|
266
|
+
"
|
|
267
|
+
/>
|
|
268
|
+
<button
|
|
269
|
+
style="
|
|
270
|
+
padding: 10px 20px;
|
|
271
|
+
background: var(--surface-2, #2a2a2a);
|
|
272
|
+
color: var(--text);
|
|
273
|
+
border: 1px solid var(--border, #333);
|
|
274
|
+
border-radius: 8px;
|
|
275
|
+
font-weight: 600;
|
|
276
|
+
cursor: pointer;
|
|
277
|
+
font-size: 14px;
|
|
278
|
+
white-space: nowrap;
|
|
279
|
+
"
|
|
280
|
+
@click=${()=>{this._connectExisting()}}
|
|
281
|
+
?disabled=${!this._customUrl.trim()}
|
|
282
|
+
>Connect</button>
|
|
283
|
+
</div>
|
|
284
|
+
`:d}
|
|
285
|
+
</div>
|
|
286
|
+
|
|
287
|
+
<!-- Previous check results -->
|
|
288
|
+
${this._steps.length>0?s`
|
|
289
|
+
<div style="margin-top: 16px; border-top: 1px solid var(--border, #333); padding-top: 12px;">
|
|
290
|
+
<p style="margin: 0 0 8px; font-size: 12px; color: var(--muted);">Current status:</p>
|
|
291
|
+
${this._renderSteps()}
|
|
292
|
+
</div>
|
|
293
|
+
`:d}
|
|
294
|
+
</div>
|
|
295
|
+
</div>
|
|
296
|
+
</div>`}};a([u({context:x,subscribe:!0})],i.prototype,"ctx",2);a([g({attribute:!1})],i.prototype,"host",2);a([o()],i.prototype,"_phase",2);a([o()],i.prototype,"_url",2);a([o()],i.prototype,"_serverUp",2);a([o()],i.prototype,"_configured",2);a([o()],i.prototype,"_steps",2);a([o()],i.prototype,"_error",2);a([o()],i.prototype,"_iframeError",2);a([o()],i.prototype,"_customUrl",2);a([o()],i.prototype,"_showAdvanced",2);a([o()],i.prototype,"_agentCount",2);i=a([v("gm-team")],i);export{i as GmTeam};
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import{b as r,A as u,d as S,g as D,r as c,t as _}from"./lit-core-CTInmNPB.js";import{a as b,w as I}from"./index-Covj4w7X.js";import{ab as h}from"./ctrl-settings-niym-WgY.js";import{G as C}from"./views-settings-nvLQdpIB.js";import{s as L,a as m}from"./workspaces-C8dKMKC1.js";import"./markdown-i_gIkIP3.js";function x(t){const e=Date.now()-new Date(t).getTime(),a=Math.floor(e/6e4);if(a<1)return"just now";if(a<60)return`${a}m ago`;const o=Math.floor(a/60);return o<24?`${o}h ago`:`${Math.floor(o/24)}d ago`}function $(t){return t.source.persona?t.source.persona.replace(/-/g," ").replace(/\b\w/g,e=>e.toUpperCase()):t.source.skill?t.source.skill:t.type==="agent-execution"?"Agent":"Skill"}function B(t){return t<=2?"Poor":t<=4?"Below expectations":t<=6?"Okay":t<=8?"Good":"Excellent"}function v(t,e){if(t.scoringId!==e.id)return u;const a=t.scoringValue??7,o=t.feedbackText??"",i=a<=4,n=a<=4||a>=9;return r`
|
|
2
|
+
<div class="inbox-scoring">
|
|
3
|
+
<div class="inbox-score-label">
|
|
4
|
+
Rate this output
|
|
5
|
+
<span class="inbox-score-value ${a<=4?"low":a>=9?"high":""}">${a}/10 — ${B(a)}</span>
|
|
6
|
+
</div>
|
|
7
|
+
<div class="inbox-score-row">
|
|
8
|
+
${[1,2,3,4,5,6,7,8,9,10].map(s=>r`
|
|
9
|
+
<button
|
|
10
|
+
class="inbox-score-btn${s===a?" active":""}${s<=4?" low":s>=9?" high":""}"
|
|
11
|
+
@click=${()=>t.onSetScoring(e.id,s)}
|
|
12
|
+
>${s}</button>
|
|
13
|
+
`)}
|
|
14
|
+
</div>
|
|
15
|
+
${n?r`
|
|
16
|
+
<div class="inbox-feedback">
|
|
17
|
+
<textarea
|
|
18
|
+
class="inbox-feedback-input"
|
|
19
|
+
rows="3"
|
|
20
|
+
placeholder=${i?"What went wrong? This feedback improves the agent. (required)":"What made this great? (optional)"}
|
|
21
|
+
.value=${o}
|
|
22
|
+
@input=${s=>t.onFeedbackChange(s.target.value)}
|
|
23
|
+
></textarea>
|
|
24
|
+
</div>
|
|
25
|
+
`:u}
|
|
26
|
+
<div class="inbox-score-actions">
|
|
27
|
+
<button
|
|
28
|
+
class="btn btn--sm inbox-score-submit"
|
|
29
|
+
?disabled=${i&&!o.trim()}
|
|
30
|
+
@click=${()=>t.onScore(e.id,a,o.trim()||void 0)}
|
|
31
|
+
>Submit ${a}/10</button>
|
|
32
|
+
<button
|
|
33
|
+
class="btn btn--sm inbox-score-cancel"
|
|
34
|
+
@click=${()=>t.onSetScoring(null)}
|
|
35
|
+
>Cancel</button>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
`}function A(t,e){const a=e.deliverables??[];return r`
|
|
39
|
+
<div class="inbox-card inbox-card--project">
|
|
40
|
+
<div class="inbox-card-header">
|
|
41
|
+
<span class="inbox-card-source">Project Complete</span>
|
|
42
|
+
<span class="inbox-card-time">${x(e.createdAt)}</span>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="inbox-card-body">
|
|
45
|
+
<div class="inbox-card-title">${e.title}</div>
|
|
46
|
+
<div class="inbox-card-summary">${e.summary}</div>
|
|
47
|
+
${a.length>0?r`
|
|
48
|
+
<div class="inbox-deliverables">
|
|
49
|
+
${a.map(o=>r`
|
|
50
|
+
<div class="inbox-deliverable-row">
|
|
51
|
+
<span class="inbox-deliverable-persona">${o.persona.replace(/-/g," ")}</span>
|
|
52
|
+
<span class="inbox-deliverable-title">${o.title}</span>
|
|
53
|
+
${o.proofDocSlug?r`<button class="btn btn--sm" @click=${()=>t.onViewOutput(e.id)}>View</button>`:u}
|
|
54
|
+
</div>
|
|
55
|
+
`)}
|
|
56
|
+
</div>
|
|
57
|
+
`:u}
|
|
58
|
+
</div>
|
|
59
|
+
<div class="inbox-card-actions">
|
|
60
|
+
<button class="btn btn--sm primary" @click=${()=>t.onOpenChat(e.id)}>Review in Chat</button>
|
|
61
|
+
${e.proofDocSlug?r`<button class="btn btn--sm" @click=${()=>t.onViewOutput(e.id)}>View Deliverables</button>`:u}
|
|
62
|
+
<button class="btn btn--sm" @click=${()=>t.onSetScoring(e.id,7)}>Score</button>
|
|
63
|
+
<button class="btn btn--sm" @click=${()=>t.onDismiss(e.id)}>Dismiss</button>
|
|
64
|
+
</div>
|
|
65
|
+
${v(t,e)}
|
|
66
|
+
</div>
|
|
67
|
+
`}function O(t,e){if(e.type==="project-completion")return A(t,e);const a=!!(e.sessionId||e.source.taskId||e.source.queueItemId);return r`
|
|
68
|
+
<div class="inbox-card">
|
|
69
|
+
<div class="inbox-card-header">
|
|
70
|
+
<span class="inbox-card-source">${$(e)}</span>
|
|
71
|
+
<span class="inbox-card-time">${x(e.createdAt)}</span>
|
|
72
|
+
</div>
|
|
73
|
+
<div class="inbox-card-body">
|
|
74
|
+
<div class="inbox-card-title">${e.title}</div>
|
|
75
|
+
<div class="inbox-card-summary">${e.summary.slice(0,220)}${e.summary.length>220?"…":""}</div>
|
|
76
|
+
</div>
|
|
77
|
+
<div class="inbox-card-actions">
|
|
78
|
+
${e.outputPath?r`<button class="btn btn--sm" @click=${()=>t.onViewOutput(e.id)}>View Output</button>`:u}
|
|
79
|
+
${e.proofDocSlug?r`<button class="btn btn--sm" @click=${()=>t.onViewProof(e.id)}>Proof</button>`:u}
|
|
80
|
+
${a?r`<button class="btn btn--sm" @click=${()=>t.onOpenChat(e.id)}>Open Chat</button>`:u}
|
|
81
|
+
<button class="btn btn--sm primary" @click=${()=>t.onSetScoring(e.id,7)}>Complete</button>
|
|
82
|
+
<button class="btn btn--sm" @click=${()=>t.onDismiss(e.id)}>Dismiss</button>
|
|
83
|
+
</div>
|
|
84
|
+
${v(t,e)}
|
|
85
|
+
</div>
|
|
86
|
+
`}function R(t){const e=t.sortOrder??"newest",a=t.items.filter(i=>i.status==="pending").sort((i,n)=>{const s=new Date(n.createdAt).getTime()-new Date(i.createdAt).getTime();return e==="oldest"?-s:s}),o=t.count??a.length;return t.loading?r`<div class="inbox-loading">Loading inbox…</div>`:o===0?r`
|
|
87
|
+
<div class="my-day-card">
|
|
88
|
+
<div class="my-day-card-header">
|
|
89
|
+
<div class="my-day-card-title">
|
|
90
|
+
<span class="my-day-card-icon">📥</span>
|
|
91
|
+
<span>INBOX</span>
|
|
92
|
+
</div>
|
|
93
|
+
</div>
|
|
94
|
+
<div class="my-day-card-content">
|
|
95
|
+
<div class="my-day-empty">Nothing pending. Background agent work will appear here when it lands.</div>
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
98
|
+
`:r`
|
|
99
|
+
<div class="my-day-card">
|
|
100
|
+
<div class="my-day-card-header">
|
|
101
|
+
<div class="my-day-card-title">
|
|
102
|
+
<span class="my-day-card-icon">📥</span>
|
|
103
|
+
<span>INBOX</span>
|
|
104
|
+
<span class="tab-badge" style="margin-left: 8px;">${o}</span>
|
|
105
|
+
</div>
|
|
106
|
+
<div class="inbox-header-actions">
|
|
107
|
+
<button class="btn btn--sm" @click=${()=>t.onSortToggle?.()}>${e==="newest"?"Newest first":"Oldest first"}</button>
|
|
108
|
+
<button class="btn btn--sm" @click=${()=>t.onMarkAll()}>Mark All Complete</button>
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
<div class="my-day-card-content">
|
|
112
|
+
<div class="inbox-list">
|
|
113
|
+
${a.map(i=>O(t,i))}
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
`}const E=["~/godmode/memory/AGENT-DAY.md","~/godmode/AGENT-DAY.md"];function q(t){return[...[`~/godmode/memory/agent-day/${t}.md`,`~/godmode/memory/agent-log/${t}.md`,`~/godmode/memory/daily/${t}-agent-log.md`],...E]}function F(t){return["Needs Review","Active Sub-Agents","Completed Today","Queue","Feedback Log","AGENT-DAY"].filter(o=>t.includes(o)).length>=2}async function k(t,e){try{const a=e?{date:e}:{},o=await t.request("dailyBrief.get",a);return!o||!o.content||!o.date?null:o}catch(a){return console.error("[MyDay] Failed to load daily brief:",a),null}}async function M(t,e,a){const o=e||h(),i="agentLog.get";try{const n=await t.request(i,{date:o});if(n?.content?.trim()&&n?.sourcePath)return{date:n.date||o,content:n.content,updatedAt:n.updatedAt||new Date().toISOString(),sourcePath:n.sourcePath}}catch(n){console.warn(`[MyDay] ${i} unavailable, falling back to files.read:`,n)}return P(t,o)}async function P(t,e){const a=q(e),o=i=>i.includes("AGENT-DAY.md");for(const i of a)try{const n=await t.request("files.read",{path:i,maxSize:1e6});if(!n?.content?.trim()||!F(n.content)||o(i)&&typeof n.modifiedAt=="number"&&h(new Date(n.modifiedAt))!==e)continue;return{date:e,content:n.content,updatedAt:typeof n.modifiedAt=="number"?new Date(n.modifiedAt).toISOString():new Date().toISOString(),sourcePath:i}}catch{}return null}function y(t,e,a){return new Promise((o,i)=>{const n=setTimeout(()=>i(new Error(`${a} timed out after ${e}ms`)),e);t.then(s=>{clearTimeout(n),o(s)},s=>{clearTimeout(n),i(s)})})}const N={coding:"Builder",research:"Researcher",analysis:"Analyst",creative:"Creative",review:"Reviewer",ops:"Ops",task:"Agent",url:"Reader",idea:"Explorer"};async function f(t){if(!t.client||!t.connected)return[];t.todayTasksLoading=!0;try{const e=t.todaySelectedDate??h(),[a,o]=await Promise.all([t.client.request("tasks.today",{date:e,includeCompleted:!0}),t.client.request("queue.list",{limit:100}).catch(()=>({items:[]}))]),i=new Map;for(const s of o.items)s.sourceTaskId&&(s.status==="processing"||s.status==="review"||s.status==="needs-review"||s.status==="done"||s.status==="failed")&&i.set(s.sourceTaskId,{status:s.status,type:s.type,roleName:N[s.type]??s.type,queueItemId:s.id});const n=(a.tasks??[]).map(s=>({id:s.id,title:s.title,status:s.status,project:s.project,dueDate:s.dueDate,priority:s.priority,createdAt:s.createdAt,completedAt:s.completedAt,queueStatus:i.get(s.id)??null}));return t.todayTasks=n,n}catch(e){return console.error("[MyDay] Failed to load today tasks:",e),t.todayTasks??[]}finally{t.todayTasksLoading=!1}}async function V(t){if(!(!t.client||!t.connected)){t.inboxLoading=!0;try{const e=await t.client.request("inbox.list",{status:"pending",limit:50});t.inboxItems=e.items??[],t.inboxCount=e.pendingCount??0}catch(e){console.error("[MyDay] Failed to load inbox items:",e),t.inboxItems=[],t.inboxCount=0}finally{t.inboxLoading=!1}}}async function G(t){if(!(!t.client||!t.connected))try{const e=await t.client.request("trust.dashboard",{}),a=e.summaries.filter(o=>o.trustScore!==null);t.trustSummary={overallScore:e.overallScore,dailyStreak:e.dailyStreak,todayRated:e.todayRating!==null,workflowCount:e.workflows.length,highPerformers:a.filter(o=>(o.trustScore??0)>=8).length,needsAttention:a.filter(o=>(o.trustScore??10)<7).length}}catch{t.trustSummary=null}}async function Q(t){if(!t.client||!t.connected)return[];try{const a=(await t.client.request("queue.list",{limit:50}))?.items??[],o=Date.now()-1440*60*1e3;return a.filter(i=>!(i.status!=="review"&&i.status!=="needs-review"&&i.status!=="done"||i.status==="done"&&(i.completedAt??0)<o)).sort((i,n)=>(n.completedAt??0)-(i.completedAt??0)).map(i=>({id:i.id,title:i.title,summary:i.result?.summary??i.description??"",status:i.status==="needs-review"?"review":i.status,completedAt:i.completedAt,outputPath:i.result?.outputPath,prUrl:i.result?.prUrl,sourceTaskId:i.sourceTaskId,persona:i.personaHint??void 0,source:i.source}))}catch(e){return console.error("[MyDay] Failed to load queue results for decision cards:",e),[]}}async function j(t){if(!(!t.client||!t.connected)){t.dailyBriefLoading=!0,t.dailyBriefError=null;try{t.dailyBrief=await k(t.client,t.todaySelectedDate),t.loadBriefNotes&&await t.loadBriefNotes()}catch(e){t.dailyBriefError=e instanceof Error?e.message:"Failed to load daily brief",console.error("[MyDay] Brief load error:",e)}finally{t.dailyBriefLoading=!1}}}function U(t){const e=t||h(),a="VAULT",o=`01-Daily/${e}`,i=`obsidian://open?vault=${encodeURIComponent(a)}&file=${encodeURIComponent(o)}`;window.open(i,"_blank")}async function W(t){if(!t.client||!t.connected)return;t.myDayLoading=!0,t.myDayError=null,t.dailyBriefLoading=!0,t.agentLogLoading=!0,t.todayTasksLoading=!0;const e=t.todaySelectedDate,a=t.loadBriefNotes?y(t.loadBriefNotes(),5e3,"Brief Notes"):Promise.resolve(),o=await Promise.allSettled([y(k(t.client,e),1e4,"Daily Brief"),a,y(M(t.client,e),1e4,"Agent Log"),y(f(t),8e3,"Today Tasks"),y(V(t),5e3,"Inbox"),y(G(t),5e3,"Trust Summary")]);t.dailyBrief=o[0].status==="fulfilled"?o[0].value:null,t.agentLog=o[2].status==="fulfilled"?o[2].value:null;const i=["Brief","Brief Notes","Agent Log","Today Tasks","Inbox","Trust"],n=o.map((s,T)=>s.status==="rejected"?{section:i[T],reason:s.reason}:null).filter(Boolean);if(n.length>0){for(const s of n)console.warn(`[MyDay] ${s.section} failed:`,s.reason);n.length===o.length&&(t.myDayError="Failed to load daily brief")}t.myDayLoading=!1,t.dailyBriefLoading=!1,t.agentLogLoading=!1,t.todayTasksLoading=!1}var Y=Object.defineProperty,H=Object.getOwnPropertyDescriptor,w=t=>{throw TypeError(t)},l=(t,e,a,o)=>{for(var i=o>1?void 0:o?H(e,a):e,n=t.length-1,s;n>=0;n--)(s=t[n])&&(i=(o?s(e,a,i):s(i))||i);return o&&i&&Y(e,a,i),i},p=(t,e,a)=>e.has(t)||w("Cannot "+a),z=(t,e,a)=>(p(t,e,"read from private field"),a?a.call(t):e.get(t)),J=(t,e,a)=>e.has(t)?w("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,a),K=(t,e,a,o)=>(p(t,e,"write to private field"),e.set(t,a),a),g;function X(t){return t===h()}function Z(t){const e=new Date(t+"T12:00:00");return tt(e)}function tt(t){const e=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],a=["January","February","March","April","May","June","July","August","September","October","November","December"],o=e[t.getDay()],i=a[t.getMonth()],n=t.getDate();return`${o}, ${i} ${n}`}function et(t){return r`
|
|
118
|
+
<form class="ws-task-create-form" @submit=${e=>{e.preventDefault();const o=e.currentTarget.querySelector("input"),i=o.value.trim();i&&(t(i),o.value="")}}>
|
|
119
|
+
<input type="text" class="ws-task-create-input" placeholder="Add a task for today..." aria-label="New task title" />
|
|
120
|
+
<button type="submit" class="ws-task-create-btn" aria-label="Add task">Add</button>
|
|
121
|
+
</form>
|
|
122
|
+
`}function at(t){const e=L(t.todayTasks??[],"due"),a=e.filter(i=>i.status==="pending"),o=e.filter(i=>i.status==="complete");return r`
|
|
123
|
+
<div class="my-day-card today-tasks-panel">
|
|
124
|
+
<div class="my-day-card-header">
|
|
125
|
+
<div class="my-day-card-title">
|
|
126
|
+
<span class="my-day-card-icon">✅</span>
|
|
127
|
+
<span>TODAY'S TASKS</span>
|
|
128
|
+
</div>
|
|
129
|
+
<span class="today-tasks-count">
|
|
130
|
+
${a.length} open${o.length>0?r`, ${o.length} done`:u}
|
|
131
|
+
</span>
|
|
132
|
+
</div>
|
|
133
|
+
<div class="my-day-card-content">
|
|
134
|
+
${t.todayTasksLoading?r`<div class="brief-loading"><div class="spinner"></div><span>Loading tasks...</span></div>`:r`
|
|
135
|
+
${t.onCreateTask?et(t.onCreateTask):u}
|
|
136
|
+
<div class="today-tasks-list">
|
|
137
|
+
${a.length===0&&o.length===0?r`<div class="today-tasks-empty">No tasks for today. Type above to add one, or ask your ally to create tasks from your daily brief.</div>`:a.map(i=>m(i,t.onToggleTaskComplete,t.onStartTask,t.editingTaskId,t.onEditTask,t.onUpdateTask,t.onViewTaskOutput))}
|
|
138
|
+
</div>
|
|
139
|
+
${o.length>0?r`
|
|
140
|
+
<button class="today-completed-toggle" @click=${()=>t.onToggleCompletedTasks?.()}>
|
|
141
|
+
${t.showCompletedTasks?"Hide":"Show"} ${o.length} completed
|
|
142
|
+
</button>
|
|
143
|
+
${t.showCompletedTasks?r`<div class="today-tasks-list today-tasks-list--completed">
|
|
144
|
+
${o.map(i=>m(i,t.onToggleTaskComplete,t.onStartTask,t.editingTaskId,t.onEditTask,t.onUpdateTask))}
|
|
145
|
+
</div>`:u}
|
|
146
|
+
`:u}
|
|
147
|
+
`}
|
|
148
|
+
</div>
|
|
149
|
+
</div>
|
|
150
|
+
`}function ot(t){const e=h(),a=t.selectedDate??e,o=X(a),i=Z(a),n=t.viewMode??"brief";return r`
|
|
151
|
+
<div class="my-day-toolbar">
|
|
152
|
+
<div class="today-date-nav" role="navigation" aria-label="Date navigation">
|
|
153
|
+
${t.onDatePrev?r`<button class="today-date-btn" @click=${t.onDatePrev} title="Previous day" aria-label="Go to previous day">‹</button>`:u}
|
|
154
|
+
<span class="today-date-label ${o?"":"past-date"}" aria-live="polite">${i}</span>
|
|
155
|
+
${t.onDateNext?r`<button class="today-date-btn" @click=${t.onDateNext} title="Next day" aria-label="Go to next day">›</button>`:u}
|
|
156
|
+
${!o&&t.onDateToday?r`<button class="today-date-today-btn" @click=${t.onDateToday} aria-label="Return to today">Today</button>`:u}
|
|
157
|
+
</div>
|
|
158
|
+
<div class="today-view-tabs" role="tablist" aria-label="Today view">
|
|
159
|
+
<button class="today-view-tab ${n==="brief"?"active":""}"
|
|
160
|
+
role="tab" aria-selected=${n==="brief"?"true":"false"}
|
|
161
|
+
@click=${()=>t.onViewModeChange?.("brief")}>Brief</button>
|
|
162
|
+
<button class="today-view-tab ${n==="tasks"?"active":""}"
|
|
163
|
+
role="tab" aria-selected=${n==="tasks"?"true":"false"}
|
|
164
|
+
@click=${()=>t.onViewModeChange?.("tasks")}>Tasks</button>
|
|
165
|
+
<button class="today-view-tab ${n==="inbox"?"active":""}"
|
|
166
|
+
role="tab" aria-selected=${n==="inbox"?"true":"false"}
|
|
167
|
+
@click=${()=>t.onViewModeChange?.("inbox")}>Inbox${(t.inboxCount??t.inboxItems?.filter(s=>s.status==="pending").length??t.decisionCards?.items.length??0)>0?r`<span class="tab-badge" aria-label="pending items">${t.inboxCount??t.inboxItems?.filter(s=>s.status==="pending").length??t.decisionCards?.items.length}</span>`:u}</button>
|
|
168
|
+
</div>
|
|
169
|
+
<div class="today-quick-actions">
|
|
170
|
+
${new Date().getHours()<15?!t.focusPulseActive&&t.onStartMorningSet?r`<button class="today-morning-set-btn" @click=${t.onStartMorningSet}
|
|
171
|
+
title="Start your morning focus ritual">\u2600\uFE0F Start my day</button>`:u:t.onEveningCapture?r`<button class="today-evening-btn" @click=${t.onEveningCapture}
|
|
172
|
+
title="Reflect on your day and set up tomorrow">\uD83C\uDF19 Evening Capture</button>`:u}
|
|
173
|
+
${t.onRefresh?r`<button class="my-day-refresh-btn" @click=${t.onRefresh} title="Refresh / Generate Brief" aria-label="Refresh or generate today's brief">↻</button>`:null}
|
|
174
|
+
</div>
|
|
175
|
+
</div>
|
|
176
|
+
`}function it(t){return r`
|
|
177
|
+
<div class="my-day-brief-full">
|
|
178
|
+
${R({items:t.inboxItems??[],loading:t.inboxLoading,count:t.inboxCount,sortOrder:t.inboxSortOrder??"newest",scoringId:t.inboxScoringId,scoringValue:t.inboxScoringValue,feedbackText:t.inboxFeedbackText,onViewOutput:e=>t.onInboxViewOutput?.(e),onViewProof:e=>t.onInboxViewProof?.(e),onOpenChat:e=>t.onInboxOpenChat?.(e),onDismiss:e=>t.onInboxDismiss?.(e),onScore:(e,a,o)=>t.onInboxScore?.(e,a,o),onSetScoring:(e,a)=>t.onInboxSetScoring?.(e,a),onFeedbackChange:e=>t.onInboxFeedbackChange?.(e),onSortToggle:()=>t.onInboxSortToggle?.(),onMarkAll:()=>t.onInboxMarkAll?.()})}
|
|
179
|
+
</div>
|
|
180
|
+
`}function nt(t){const e=h();t.selectedDate;const a=t.viewMode??"brief";if(t.loading)return r`
|
|
181
|
+
<div class="my-day-container">
|
|
182
|
+
<div class="my-day-loading">
|
|
183
|
+
<div class="spinner"></div>
|
|
184
|
+
<span>Loading your day...</span>
|
|
185
|
+
</div>
|
|
186
|
+
</div>
|
|
187
|
+
`;if(t.error)return r`
|
|
188
|
+
<div class="my-day-container">
|
|
189
|
+
<div class="my-day-error">
|
|
190
|
+
<span class="error-icon">⚠</span>
|
|
191
|
+
<span>${t.error}</span>
|
|
192
|
+
${t.onRefresh?r`<button class="retry-button" @click=${t.onRefresh}>Retry</button>`:null}
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
`;const o={connected:t.connected,data:t.dailyBrief??null,loading:t.dailyBriefLoading,error:t.dailyBriefError,onRefresh:t.onBriefRefresh,onGenerate:t.onBriefGenerate,onOpenInObsidian:t.onBriefOpenInObsidian,onSaveBrief:t.onBriefSave,onToggleCheckbox:t.onBriefToggleCheckbox,onOpenFile:t.onOpenFile};return r`
|
|
196
|
+
<div class="my-day-container">
|
|
197
|
+
${a==="brief"?r`<div class="my-day-brief-full">
|
|
198
|
+
${C(o)}
|
|
199
|
+
</div>`:a==="tasks"?r`<div class="my-day-brief-full">${at(t)}</div>`:it(t)}
|
|
200
|
+
</div>
|
|
201
|
+
`}let d=class extends S{constructor(){super(...arguments),J(this,g),this.myDayLoading=!1,this.myDayError=null,this.todaySelectedDate=h(),this.todayViewMode="brief",this.dailyBrief=null,this.dailyBriefLoading=!1,this.dailyBriefError=null,this.agentLog=null,this.agentLogLoading=!1,this.agentLogError=null,this.briefNotes={},this.todayTasks=[],this.todayTasksLoading=!1,this.todayEditingTaskId=null,this.todayShowCompleted=!1,this.todayQueueResults=[],this.inboxItems=[],this.inboxLoading=!1,this.inboxCount=0,this.inboxScoringId=null,this.inboxScoringValue=void 0,this.inboxFeedbackText=void 0,this.inboxSortOrder="newest",this.trustSummary=null,this._unsubs=[],this._dataLoaded=!1}get ctx(){return z(this,g)}set ctx(t){K(this,g,t)}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),this._unsubs.push(b.on("refresh-requested",t=>{(t.target==="today"||t.target==="my-day")&&this.refresh()}))}willUpdate(t){this.ctx?.connected&&!this._dataLoaded&&!this.myDayLoading&&(this._dataLoaded=!0,this._loadAll())}disconnectedCallback(){for(const t of this._unsubs)t();this._unsubs=[],super.disconnectedCallback()}get _state(){return{client:this.ctx?.gateway??null,connected:this.ctx?.connected??!1,myDayLoading:this.myDayLoading,myDayError:this.myDayError,dailyBrief:this.dailyBrief,dailyBriefLoading:this.dailyBriefLoading,dailyBriefError:this.dailyBriefError,agentLog:this.agentLog,agentLogLoading:this.agentLogLoading,agentLogError:this.agentLogError,briefNotes:this.briefNotes,todaySelectedDate:this.todaySelectedDate,todayViewMode:this.todayViewMode,todayTasks:this.todayTasks,todayTasksLoading:this.todayTasksLoading,trustSummary:this.trustSummary,inboxItems:this.inboxItems,inboxLoading:this.inboxLoading,inboxCount:this.inboxCount,loadBriefNotes:()=>this._loadBriefNotes()}}_syncFromState(t){this.myDayLoading=t.myDayLoading??!1,this.myDayError=t.myDayError??null,this.dailyBrief=t.dailyBrief??null,this.dailyBriefLoading=t.dailyBriefLoading??!1,this.dailyBriefError=t.dailyBriefError??null,this.agentLog=t.agentLog??null,this.agentLogLoading=t.agentLogLoading??!1,this.agentLogError=t.agentLogError??null,this.briefNotes=t.briefNotes??{},this.todayTasks=t.todayTasks??[],this.todayTasksLoading=t.todayTasksLoading??!1,this.trustSummary=t.trustSummary??null,this.inboxItems=t.inboxItems??[],this.inboxLoading=t.inboxLoading??!1,this.inboxCount=t.inboxCount??0}async _loadAll(){const t=this._state;await W(t),this._syncFromState(t),this._loadDecisionCards()}async _loadBriefOnly(){const t=this._state;await j(t),this._syncFromState(t)}async _loadBriefNotes(){const t=this.ctx?.gateway;if(!t||!this.ctx?.connected)return;const e=this.todaySelectedDate;try{const a=await t.request("briefNotes.get",{date:e});this.briefNotes=a.notes??{}}catch(a){console.error("[GmToday] Brief notes load error:",a),this.briefNotes={}}}async _loadDecisionCards(){if(!(!this.ctx?.gateway||!this.ctx?.connected))try{const e=this._state;this.todayQueueResults=await Q(e)}catch{}}async refresh(){await this._loadAll()}_handleDatePrev(){const t=new Date(this.todaySelectedDate+"T12:00:00");t.setDate(t.getDate()-1),this.todaySelectedDate=h(t),this._loadBriefOnly()}_handleDateNext(){const t=new Date(this.todaySelectedDate+"T12:00:00");t.setDate(t.getDate()+1);const e=h(),a=h(t);a>e||(this.todaySelectedDate=a,this._loadBriefOnly())}_handleDateToday(){this.todaySelectedDate=h(),this._loadAll()}async _handleDailyBriefRefresh(){await this._loadBriefOnly()}async _handleDailyBriefGenerate(){const t=this.ctx?.gateway;if(!(!t||!this.ctx?.connected)){this.dailyBriefLoading=!0;try{await t.request("dailyBrief.generate",{}),await this._loadBriefOnly()}catch(e){this.dailyBriefError=e instanceof Error?e.message:"Failed to generate brief"}finally{this.dailyBriefLoading=!1}}}_handleDailyBriefOpenInObsidian(){const t=this.dailyBrief?.date;U(t)}async _handleBriefSave(t){const e=this.ctx?.gateway;if(!e||!this.ctx?.connected)return;const a=this.dailyBrief?.date||this.todaySelectedDate;try{await e.request("dailyBrief.update",{date:a,content:t}),this.dailyBrief&&(this.dailyBrief={...this.dailyBrief,updatedAt:new Date().toISOString()})}catch(o){console.error("[GmToday] Brief save failed:",o),this.ctx?.addToast?.("Failed to save brief","error")}}async _handleBriefToggleCheckbox(t,e){const a=this.ctx?.gateway;if(!a||!this.ctx?.connected)return;const o=this.dailyBrief?.date||this.todaySelectedDate;try{await a.request("dailyBrief.toggleCheckbox",{date:o,index:t,checked:e}),this.dailyBrief&&(this.dailyBrief={...this.dailyBrief,updatedAt:new Date().toISOString()})}catch(i){console.error("[GmToday] Checkbox toggle failed:",i)}}_handleViewModeChange(t){if(this.todayViewMode=t,t==="inbox"&&this.inboxItems.length===0&&!this.inboxLoading&&this._handleInboxRefresh(),t==="tasks"&&this.todayTasks.length===0&&!this.todayTasksLoading){const e=this._state;f(e).then(()=>{this.todayTasks=e.todayTasks??[],this.todayTasksLoading=e.todayTasksLoading??!1})}}_handleStartMorningSet(){this.ctx?.setTab?.("chat"),this.ctx?.send?.("chat.send",{message:"Let's do my morning set. Check my daily note for today's Win The Day items, review my calendar, and then walk me through a proposed plan for the day. Ask me clarifying questions before finalizing anything. Suggest which tasks you can handle vs what I should do myself. Do NOT call the morning_set tool or kick off any agents until I explicitly approve the plan."})}_handleEveningCapture(){this.ctx?.setTab?.("chat"),this.ctx?.send?.("chat.send",{message:`Let's do my evening capture. Walk me through these:
|
|
202
|
+
1. What went well today?
|
|
203
|
+
2. What didn't get done?
|
|
204
|
+
3. What should tomorrow's brief prioritize?
|
|
205
|
+
4. Ask me for an overall GodMode score (1-10) for today and any feedback. Submit it with the daily rating tool.`})}async _handleTaskStatusChange(t,e){const a=this.ctx?.gateway;if(!a||!this.ctx?.connected)return;const o=e==="complete"?"pending":"complete";try{await a.request("tasks.update",{id:t,status:o,completedAt:o==="complete"?new Date().toISOString():null});const i=this._state;await f(i),this.todayTasks=i.todayTasks??[],this.todayTasksLoading=i.todayTasksLoading??!1}catch(i){console.error("[GmToday] Task status change failed:",i)}}async _handleCreateTask(t){const e=this.ctx?.gateway;if(!(!e||!this.ctx?.connected))try{await e.request("tasks.create",{title:t,dueDate:h(),priority:"medium",source:"chat"});const a=this._state;await f(a),this.todayTasks=a.todayTasks??[],this.todayTasksLoading=a.todayTasksLoading??!1}catch(a){console.error("[GmToday] Create task failed:",a),this.ctx?.addToast?.("Failed to create task","error")}}_handleEditTask(t){this.todayEditingTaskId=t}async _handleUpdateTask(t,e){const a=this.ctx?.gateway;if(!(!a||!this.ctx?.connected))try{await a.request("tasks.update",{id:t,...e}),this.todayEditingTaskId=null;const o=this._state;await f(o),this.todayTasks=o.todayTasks??[],this.todayTasksLoading=o.todayTasksLoading??!1}catch(o){console.error("[GmToday] Update task failed:",o),this.ctx?.addToast?.("Failed to update task","error")}}_handleToggleCompleted(){this.todayShowCompleted=!this.todayShowCompleted}async _handleViewTaskOutput(t){const e=this.ctx?.gateway;if(!(!e||!this.ctx?.connected))try{const o=(await e.request("queue.list",{limit:100}))?.items?.find(s=>s.sourceTaskId===t);if(!o?.result?.outputPath){this.ctx?.addToast?.("No output available for this task","info");return}const i=await e.request("queue.readOutput",{path:o.result.outputPath}),n=o.result.outputPath.split("/").pop()??"Agent Output";this.ctx?.openSidebar?.({content:i.content,mimeType:"text/markdown",filePath:o.result.outputPath,title:n})}catch(a){console.error("[GmToday] View task output failed:",a),this.ctx?.addToast?.("Failed to load agent output","error")}}async _handleStartTask(t){const e=this.ctx?.gateway;if(!(!e||!this.ctx?.connected))try{const a=await e.request("tasks.openSession",{taskId:t});if(!a?.sessionId){this.ctx?.addToast?.("Failed to open session for task","error");return}let o="";if(a.created&&!a.queueOutput){const i=this.todayTasks?.find(s=>s.id===t),n=i?.project?` (project: ${i.project})`:"";o="Let's work on: "+(i?.title??"this task")+n}b.emit("chat-navigate",{sessionKey:a.sessionId,tab:"chat",message:o})}catch(a){console.error("[GmToday] Start task failed:",a),this.ctx?.addToast?.("Failed to start task session","error")}}async _handleDecisionApprove(t){const e=this.ctx?.gateway;if(!(!e||!this.ctx?.connected))try{await e.request("queue.approve",{id:t}),this.todayQueueResults=this.todayQueueResults.filter(a=>a.id!==t)}catch(a){console.error("[GmToday] Approve failed:",a),this.ctx?.addToast?.("Failed to approve","error")}}async _handleDecisionReject(t){const e=this.ctx?.gateway;if(!(!e||!this.ctx?.connected))try{await e.request("queue.reject",{id:t}),this.todayQueueResults=this.todayQueueResults.filter(a=>a.id!==t)}catch(a){console.error("[GmToday] Reject failed:",a),this.ctx?.addToast?.("Failed to reject","error")}}async _handleDecisionDismiss(t){const e=this.ctx?.gateway;if(!(!e||!this.ctx?.connected))try{await e.request("queue.remove",{id:t}),this.todayQueueResults=this.todayQueueResults.filter(a=>a.id!==t)}catch(a){console.error("[GmToday] Dismiss failed:",a),this.ctx?.addToast?.("Failed to dismiss","error")}}async _handleDecisionMarkComplete(t){const e=this.ctx?.gateway;if(!(!e||!this.ctx?.connected))try{const a=this.todayQueueResults?.find(o=>o.id===t);a?.sourceTaskId&&await e.request("tasks.update",{id:a.sourceTaskId,status:"complete"}),await e.request("queue.remove",{id:t}),this.todayQueueResults=this.todayQueueResults.filter(o=>o.id!==t),this.ctx?.addToast?.("Task marked complete","success")}catch(a){console.error("[GmToday] Mark complete failed:",a),this.ctx?.addToast?.("Failed to mark complete","error")}}async _handleDecisionRate(t,e,a){const o=this.ctx?.gateway;if(!(!o||!this.ctx?.connected))try{await o.request("trust.rate",{workflow:e,rating:a});const i=a<7;this.todayQueueResults=this.todayQueueResults.map(n=>n.id===t?{...n,userRating:a,feedbackPending:i}:n),i?this.ctx?.addToast?.(`Rated ${e} ${a}/10 — what could be better?`,"info"):(this.todayQueueResults?.find(s=>s.id===t)?.source==="cron"&&(await o.request("queue.remove",{id:t}),this.todayQueueResults=this.todayQueueResults.filter(s=>s.id!==t)),this.ctx?.addToast?.(`Rated ${e} ${a}/10`,"success"))}catch(i){console.error("[GmToday] Rate failed:",i),this.ctx?.addToast?.("Failed to submit rating","error")}}async _handleDecisionFeedback(t,e,a){const o=this.ctx?.gateway;if(!(!o||!this.ctx?.connected))try{a&&(await o.request("trust.feedback",{workflow:e,feedback:a}),this.ctx?.addToast?.(`Feedback saved for ${e} — will apply next time`,"success")),this.todayQueueResults?.find(n=>n.id===t)?.source==="cron"&&await o.request("queue.remove",{id:t}),this.todayQueueResults=this.todayQueueResults.map(n=>n.id===t?{...n,feedbackPending:!1}:n).filter(n=>!(n.id===t&&n.source==="cron"))}catch(i){console.error("[GmToday] Feedback failed:",i),this.ctx?.addToast?.("Failed to save feedback","error")}}_handleDecisionViewOutput(t,e){const a=this.ctx?.gateway;if(!a||!this.ctx?.connected){this.ctx?.addToast?.("Not connected to gateway","error");return}a.request("queue.readOutput",{path:e}).then(o=>{const i=e.split("/").pop()??"Agent Output";this.ctx?.openSidebar?.({content:o.content,mimeType:"text/markdown",filePath:e,title:i})}).catch(o=>{console.error("[GmToday] View output failed:",o),this.dispatchEvent(new CustomEvent("today-open-file",{detail:{path:e},bubbles:!0,composed:!0}))})}_handleDecisionOpenChat(t){this.dispatchEvent(new CustomEvent("today-decision-open-chat",{detail:{id:t,item:this.todayQueueResults?.find(e=>e.id===t)},bubbles:!0,composed:!0}))}async _handleInboxRefresh(){const t=this.ctx?.gateway;if(!(!t||!this.ctx?.connected)){this.inboxLoading=!0;try{const e=await t.request("inbox.list",{status:"pending",limit:50});this.inboxItems=e.items,this.inboxCount=e.pendingCount}catch(e){console.error("[GmToday] Inbox load failed:",e)}finally{this.inboxLoading=!1}}}async _handleInboxScore(t,e,a){const o=this.ctx?.gateway;if(!(!o||!this.ctx?.connected))try{await o.request("inbox.score",{itemId:t,score:e,feedback:a}),this.inboxScoringId=null,this.inboxScoringValue=void 0,this.inboxFeedbackText=void 0,await this._handleInboxRefresh()}catch(i){console.error("[GmToday] Inbox score failed:",i)}}async _handleInboxDismiss(t){const e=this.ctx?.gateway;if(!(!e||!this.ctx?.connected))try{await e.request("inbox.dismiss",{itemId:t}),await this._handleInboxRefresh()}catch(a){console.error("[GmToday] Inbox dismiss failed:",a)}}async _handleInboxMarkAll(){const t=this.ctx?.gateway;if(!(!t||!this.ctx?.connected))try{await t.request("inbox.markAllComplete",{}),await this._handleInboxRefresh()}catch(e){console.error("[GmToday] Inbox mark all failed:",e)}}async _handleInboxViewOutput(t){const e=this.inboxItems?.find(o=>o.id===t);if(!e)return;const a=this.ctx?.gateway;if(!a||!this.ctx?.connected){this.ctx?.addToast?.("Not connected to gateway","error");return}if(e.outputPath)try{const o=await a.request("queue.readOutput",{path:e.outputPath});if(o?.content){this.ctx?.openSidebar?.({content:o.content,mimeType:"text/markdown",filePath:e.outputPath,title:e.title});return}}catch{}if(e.source?.queueItemId)try{const i=(await a.request("queue.list",{limit:200}))?.items?.find(s=>s.id===e.source.queueItemId),n=i?.result?.outputPath;if(n){const s=await a.request("queue.readOutput",{path:n});if(s?.content){this.ctx?.openSidebar?.({content:s.content,mimeType:"text/markdown",filePath:n,title:e.title});return}}if(i?.result?.summary){this.ctx?.openSidebar?.({content:`# ${e.title}
|
|
206
|
+
|
|
207
|
+
${i.result.summary}`,mimeType:"text/markdown",title:e.title});return}}catch(o){console.error("[GmToday] Inbox queue lookup failed:",o)}if(e.proofDocSlug){this.dispatchEvent(new CustomEvent("today-open-proof",{detail:{slug:e.proofDocSlug},bubbles:!0,composed:!0}));return}e.summary?this.ctx?.openSidebar?.({content:`# ${e.title}
|
|
208
|
+
|
|
209
|
+
${e.summary}`,mimeType:"text/markdown",title:e.title}):this.ctx?.addToast?.("No output available for this item","info")}_handleInboxViewProof(t){const e=this.inboxItems?.find(a=>a.id===t);e?.proofDocSlug&&this.dispatchEvent(new CustomEvent("today-open-proof",{detail:{slug:e.proofDocSlug},bubbles:!0,composed:!0}))}_handleInboxOpenChat(t){this.dispatchEvent(new CustomEvent("today-inbox-open-chat",{detail:{itemId:t,item:this.inboxItems?.find(e=>e.id===t)},bubbles:!0,composed:!0}))}_handleInboxSetScoring(t,e){t!==this.inboxScoringId&&(this.inboxFeedbackText=""),this.inboxScoringId=t,this.inboxScoringValue=e??7}_handleInboxFeedbackChange(t){this.inboxFeedbackText=t}_handleInboxSortToggle(){this.inboxSortOrder=this.inboxSortOrder==="newest"?"oldest":"newest"}async _handleTrustDailyRate(t){const e=this.ctx?.gateway;if(e)try{await e.request("trust.dailyRate",{rating:t}),this.trustSummary&&(this.trustSummary={...this.trustSummary,todayRated:!0})}catch(a){console.error("[GmToday] Daily rate failed:",a),this.ctx?.addToast?.("Failed to submit daily rating","error")}}_handleNavigateToTrust(){this.ctx?.setTab?.("trust")}_handleOpenFile(t){this.dispatchEvent(new CustomEvent("today-open-file",{detail:{path:t},bubbles:!0,composed:!0}))}renderToolbar(){return ot({connected:this.ctx?.connected??!1,onRefresh:()=>{this.refresh()},selectedDate:this.todaySelectedDate,onDatePrev:()=>this._handleDatePrev(),onDateNext:()=>this._handleDateNext(),onDateToday:()=>this._handleDateToday(),viewMode:this.todayViewMode,onViewModeChange:t=>this._handleViewModeChange(t),focusPulseActive:!1,onStartMorningSet:()=>this._handleStartMorningSet(),inboxItems:this.inboxItems,inboxCount:this.inboxCount,onEveningCapture:()=>this._handleEveningCapture()})}render(){const t={connected:this.ctx?.connected??!1,loading:this.myDayLoading,error:this.myDayError,onRefresh:()=>{this.refresh()},dailyBrief:this.dailyBrief,dailyBriefLoading:this.dailyBriefLoading,dailyBriefError:this.dailyBriefError,onBriefRefresh:()=>{this._handleDailyBriefRefresh()},onBriefGenerate:()=>{this._handleDailyBriefGenerate()},onBriefOpenInObsidian:()=>this._handleDailyBriefOpenInObsidian(),onBriefSave:e=>{this._handleBriefSave(e)},onBriefToggleCheckbox:(e,a)=>{this._handleBriefToggleCheckbox(e,a)},onOpenFile:e=>this._handleOpenFile(e),selectedDate:this.todaySelectedDate,onDatePrev:()=>this._handleDatePrev(),onDateNext:()=>this._handleDateNext(),onDateToday:()=>this._handleDateToday(),viewMode:this.todayViewMode,onViewModeChange:e=>this._handleViewModeChange(e),agentLog:this.agentLog,agentLogLoading:this.agentLogLoading,agentLogError:this.agentLogError,onAgentLogRefresh:()=>{this.refresh()},focusPulseActive:!1,onStartMorningSet:()=>this._handleStartMorningSet(),todayTasks:this.todayTasks,todayTasksLoading:this.todayTasksLoading,onToggleTaskComplete:(e,a)=>{this._handleTaskStatusChange(e,a)},onStartTask:e=>this._handleStartTask(e),onViewTaskOutput:e=>{this._handleViewTaskOutput(e)},onCreateTask:e=>{this._handleCreateTask(e)},onEditTask:e=>this._handleEditTask(e),onUpdateTask:(e,a)=>{this._handleUpdateTask(e,a)},editingTaskId:this.todayEditingTaskId,showCompletedTasks:this.todayShowCompleted,onToggleCompletedTasks:()=>this._handleToggleCompleted(),decisionCards:(this.todayQueueResults??[]).length>0?{items:this.todayQueueResults,onApprove:e=>{this._handleDecisionApprove(e)},onReject:e=>{this._handleDecisionReject(e)},onDismiss:e=>{this._handleDecisionDismiss(e)},onViewOutput:(e,a)=>this._handleDecisionViewOutput(e,a),onOpenChat:e=>this._handleDecisionOpenChat(e),onMarkComplete:e=>{this._handleDecisionMarkComplete(e)},onRate:(e,a,o)=>{this._handleDecisionRate(e,a,o)},onFeedback:(e,a,o)=>{this._handleDecisionFeedback(e,a,o)}}:void 0,inboxItems:this.inboxItems,inboxLoading:this.inboxLoading,inboxCount:this.inboxCount,inboxScoringId:this.inboxScoringId,inboxScoringValue:this.inboxScoringValue,inboxFeedbackText:this.inboxFeedbackText,onInboxViewOutput:e=>this._handleInboxViewOutput(e),onInboxViewProof:e=>this._handleInboxViewProof(e),onInboxOpenChat:e=>this._handleInboxOpenChat(e),onInboxDismiss:e=>{this._handleInboxDismiss(e)},onInboxScore:(e,a,o)=>{this._handleInboxScore(e,a,o)},onInboxSetScoring:(e,a)=>this._handleInboxSetScoring(e,a),onInboxFeedbackChange:e=>this._handleInboxFeedbackChange(e),onInboxSortToggle:()=>this._handleInboxSortToggle(),inboxSortOrder:this.inboxSortOrder,onInboxMarkAll:()=>{this._handleInboxMarkAll()},trustSummary:this.trustSummary,onTrustDailyRate:e=>{this._handleTrustDailyRate(e)},onNavigateToTrust:()=>this._handleNavigateToTrust(),onEveningCapture:()=>this._handleEveningCapture()};return r`${this.renderToolbar()}${nt(t)}`}};g=new WeakMap;l([D({context:I,subscribe:!0})],d.prototype,"ctx",1);l([c()],d.prototype,"myDayLoading",2);l([c()],d.prototype,"myDayError",2);l([c()],d.prototype,"todaySelectedDate",2);l([c()],d.prototype,"todayViewMode",2);l([c()],d.prototype,"dailyBrief",2);l([c()],d.prototype,"dailyBriefLoading",2);l([c()],d.prototype,"dailyBriefError",2);l([c()],d.prototype,"agentLog",2);l([c()],d.prototype,"agentLogLoading",2);l([c()],d.prototype,"agentLogError",2);l([c()],d.prototype,"briefNotes",2);l([c()],d.prototype,"todayTasks",2);l([c()],d.prototype,"todayTasksLoading",2);l([c()],d.prototype,"todayEditingTaskId",2);l([c()],d.prototype,"todayShowCompleted",2);l([c()],d.prototype,"todayQueueResults",2);l([c()],d.prototype,"inboxItems",2);l([c()],d.prototype,"inboxLoading",2);l([c()],d.prototype,"inboxCount",2);l([c()],d.prototype,"inboxScoringId",2);l([c()],d.prototype,"inboxScoringValue",2);l([c()],d.prototype,"inboxFeedbackText",2);l([c()],d.prototype,"inboxSortOrder",2);l([c()],d.prototype,"trustSummary",2);d=l([_("gm-today")],d);export{d as GmToday};
|