cli-jaw 2.17.27 → 2.17.28
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/dist/bin/commands/status.js +9 -2
- package/dist/bin/commands/status.js.map +1 -1
- package/dist/src/routes/heartbeat.js +18 -2
- package/dist/src/routes/heartbeat.js.map +1 -1
- package/package.json +1 -1
- package/public/dist/assets/Heartbeat-Ca8DmJcw.js +1 -0
- package/public/dist/assets/{app-DUwWnKh3.js → app-CYayckBa.js} +1 -1
- package/public/dist/assets/{manager-BEvw_3H1.js → manager-CwqrZ2MH.js} +1 -1
- package/public/dist/index.html +1 -1
- package/public/dist/manager/index.html +1 -1
- package/public/js/features/heartbeat.ts +4 -1
- package/public/manager/src/settings/pages/components/heartbeat-helpers.ts +9 -1
- package/public/dist/assets/Heartbeat-B8c_YvS7.js +0 -1
|
@@ -81,8 +81,15 @@ try {
|
|
|
81
81
|
try {
|
|
82
82
|
const hbRes = await fetch(`${getServerUrl(resolvedPort)}/api/heartbeat`, { signal: AbortSignal.timeout(2000) });
|
|
83
83
|
const hb = asRecord(await hbRes.json());
|
|
84
|
-
const
|
|
85
|
-
|
|
84
|
+
const jobs = asArray(hb["jobs"]);
|
|
85
|
+
// A held job is enabled in the file but gets no timer, so counting
|
|
86
|
+
// the flag alone reports it as active. Held is named separately
|
|
87
|
+
// rather than folded into the count: an operator needs to know the
|
|
88
|
+
// job exists and why it is not running.
|
|
89
|
+
const held = jobs.filter((j) => j.enabled && j.held).length;
|
|
90
|
+
const active = jobs.filter((j) => j.enabled && !j.held).length;
|
|
91
|
+
console.log(` Heartbeat: ${active} job${active !== 1 ? 's' : ''} active`
|
|
92
|
+
+ (held ? ` (${held} held for an unmigrated mention-watch ledger)` : ''));
|
|
86
93
|
}
|
|
87
94
|
catch { } // best-effort: heartbeat probe optional when server is down
|
|
88
95
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../bin/commands/status.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../bin/commands/status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEvD,IAAI,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC;IAAE,YAAY,CAAC;;;;;;;;;;;;;CAa9C,CAAC,CAAC;AAEH,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE;QACL,mEAAmE;QACnE,uEAAuE;QACvE,wEAAwE;QACxE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;QACzC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;KACjD;IACD,MAAM,EAAE,KAAK;CAChB,CAAC,CAAC;AAEH;wEACwE;AACxE,SAAS,WAAW;IAChB,IAAI,MAAM,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAC/C,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAuB,CAAC;YAC5E,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3F,CAAC;IACL,CAAC;IAAC,MAAM,CAAC,CAAC,mDAAmD,CAAC,CAAC;IAC/D,IAAI,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QACrD,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAuB,CAAC;YAC/E,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrF,CAAC;IACL,CAAC;IAAC,MAAM,CAAC,CAAC,mDAAmD,CAAC,CAAC;IAC/D,OAAO,YAAY,CAAC;AACxB,CAAC;AAED,MAAM,YAAY,GAAG,WAAW,EAAE,CAAC;AACnC,MAAM,GAAG,GAAG,GAAG,YAAY,CAAC,YAAY,CAAC,eAAe,CAAC;AAEzD,IAAI,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpE,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;QACT,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAC;QACzD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7F,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,kCAAkC,YAAY,EAAE,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;YAE3D,mBAAmB;YACnB,IAAI,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChH,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBACxC,MAAM,IAAI,GAAG,OAAO,CAAuC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;gBACvE,mEAAmE;gBACnE,gEAAgE;gBAChE,mEAAmE;gBACnE,wCAAwC;gBACxC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;gBAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,OAAO,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS;sBACnE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,+CAA+C,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClF,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC,CAAC,4DAA4D;QAC5E,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACzB,CAAC;AACL,CAAC;AAAC,MAAM,CAAC;IACL,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,gCAAgC,YAAY,GAAG,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;IACnB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,sBAAsB,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,oBAAoB,QAAQ,uBAAuB,CAAC;IACpE,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5E,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,EAA6B,CAAC;QACjE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,mCAAmC,QAAQ,CAAC,MAAM,CAAC,SAAS,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3F,OAAO,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,IAAI,MAAM,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;;YAC9E,OAAO,CAAC,GAAG,CAAC,mCAAmC,QAAQ,GAAG,CAAC,CAAC;IACrE,CAAC;AACL,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { loadHeartbeatFile, saveHeartbeatFile, isHeartbeatDestination, isHeartbeatMentionWatch, settings } from '../core/config.js';
|
|
2
2
|
import { startHeartbeat } from '../memory/heartbeat.js';
|
|
3
3
|
import { validateHeartbeatScheduleInput } from '../memory/heartbeat-schedule.js';
|
|
4
|
-
import { approveLegacyFreshStart, quarantineState, detectLegacyMentionWatch } from '../memory/legacy-mention-watch-quarantine.js';
|
|
4
|
+
import { approveLegacyFreshStart, quarantineState, detectLegacyMentionWatch, isQuarantined } from '../memory/legacy-mention-watch-quarantine.js';
|
|
5
5
|
import { verifiedSlackWorkspace } from '../slack/verified-workspace.js';
|
|
6
6
|
import { getEmployees } from '../core/db.js';
|
|
7
7
|
import { stripUndefined } from '../core/strip-undefined.js';
|
|
@@ -72,7 +72,23 @@ export function normalizeHeartbeatPutRunnerFields(job, existing, employeeNames)
|
|
|
72
72
|
}) };
|
|
73
73
|
}
|
|
74
74
|
export function registerHeartbeatRoutes(app, requireAuth) {
|
|
75
|
-
|
|
75
|
+
// `enabled` is the operator's intent; it is not the same as running.
|
|
76
|
+
//
|
|
77
|
+
// A mention-watch job holding an unmigrated ledger is refused before a timer
|
|
78
|
+
// is even created, yet its file entry still says `enabled: true` — the file is
|
|
79
|
+
// intent and the hold is the system's judgement, deliberately stored apart.
|
|
80
|
+
// Every operator surface counts the file flag, so a held job read as ACTIVE.
|
|
81
|
+
// `held` is additive, so a client that ignores it behaves exactly as before.
|
|
82
|
+
app.get('/api/heartbeat', requireAuth, (_req, res) => {
|
|
83
|
+
const file = loadHeartbeatFile();
|
|
84
|
+
detectLegacyMentionWatch(Date.now());
|
|
85
|
+
res.json({
|
|
86
|
+
...file,
|
|
87
|
+
jobs: file.jobs.map(job => (job.mentionWatch && job.id && isQuarantined(job.id)
|
|
88
|
+
? { ...job, held: 'unmigrated_mention_watch_ledger' }
|
|
89
|
+
: job)),
|
|
90
|
+
});
|
|
91
|
+
});
|
|
76
92
|
app.put('/api/heartbeat', requireAuth, (req, res) => {
|
|
77
93
|
const data = req.body;
|
|
78
94
|
if (!data || !Array.isArray(data.jobs)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../../src/routes/heartbeat.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../../src/routes/heartbeat.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cli-jaw",
|
|
3
|
-
"version": "2.17.
|
|
3
|
+
"version": "2.17.28",
|
|
4
4
|
"description": "Personal AI assistant powered by Pi, Antigravity, AI-E, Claude, Claude E, Codex, Codex App, Cursor, Grok, Kiro, OpenCode, and Copilot — Web, Terminal, Telegram, and Discord interfaces with 107 built-in skills",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-CYoNlHAD.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-DZ1lls_P.js";import{a as c,i as l,s as u}from"./fields-E1L8aEhU.js";import{i as d}from"./agent-meta-_Idad3qq.js";import{t as f}from"./path-utils-QbjARuCC.js";var p=e(t(),1),m=n(),h=[{value:`every`,label:`every (interval)`},{value:`cron`,label:`cron expression`}];function g({job:e,index:t,bodyError:n,timeZoneError:r,onChange:i,onRemove:a}){let o=(0,p.useId)(),s=e.schedule.kind,d=e.schedule.timeZone??``;return(0,m.jsxs)(`fieldset`,{className:`settings-heartbeat-job`,"aria-label":`Heartbeat job ${t+1}${e.name?` (${e.name})`:``}`,children:[(0,m.jsx)(`legend`,{className:`settings-heartbeat-job-legend`,children:e.name||`Job ${t+1}`}),(0,m.jsx)(c,{id:`${o}-enabled`,label:`Enabled`,value:e.enabled,onChange:e=>i({enabled:e})}),(0,m.jsx)(u,{id:`${o}-name`,label:`Name`,value:e.name,placeholder:`Morning summary`,onChange:e=>i({name:e})}),(0,m.jsx)(l,{id:`${o}-kind`,label:`Schedule kind`,value:s,options:h,onChange:e=>{e===`every`&&s!==`every`?i({schedule:{kind:`every`,minutes:30,...d?{timeZone:d}:{}}}):e===`cron`&&s!==`cron`&&i({schedule:{kind:`cron`,cron:`0 9 * * *`,...d?{timeZone:d}:{}}})}}),s===`every`?(0,m.jsx)(u,{id:`${o}-minutes`,label:`Every (minutes)`,value:String(e.schedule.minutes??``),placeholder:`30`,error:n??null,onChange:e=>{let t=e.trim(),n=Number(t);i({schedule:{kind:`every`,minutes:Number.isFinite(n)?n:NaN,...d?{timeZone:d}:{}}})}}):(0,m.jsx)(u,{id:`${o}-cron`,label:`Cron expression`,value:e.schedule.cron??``,placeholder:`0 9 * * *`,error:n??null,onChange:e=>i({schedule:{kind:`cron`,cron:e,...d?{timeZone:d}:{}}})}),(0,m.jsx)(u,{id:`${o}-tz`,label:`Time zone (optional)`,value:d,placeholder:`Asia/Seoul`,error:r??null,onChange:t=>{let n=t.trim();i(s===`every`?{schedule:{kind:`every`,minutes:e.schedule.minutes,...n?{timeZone:n}:{}}}:{schedule:{kind:`cron`,cron:e.schedule.cron,...n?{timeZone:n}:{}}})}}),(0,m.jsxs)(`label`,{className:`settings-field settings-field-textarea`,htmlFor:`${o}-prompt`,children:[(0,m.jsx)(`span`,{className:`settings-field-label`,children:`Prompt`}),(0,m.jsx)(`textarea`,{id:`${o}-prompt`,rows:3,value:e.prompt,placeholder:`What should this heartbeat do?`,onChange:e=>i({prompt:e.target.value})})]}),(0,m.jsx)(`div`,{className:`settings-heartbeat-job-footer`,children:(0,m.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:a,children:`Remove job`})})]})}var _=/^\d+[smh]$/,v=/^([01]\d|2[0-3]):[0-5]\d$/,y=[`ai-e`,`claude`,`claude-e`,`codex`,`codex-app`,`copilot`,`cursor`,`kiro-code`,`gemini`,`grok`,`opencode`],b=[`heartbeat.enabled`,`heartbeat.every`,`heartbeat.activeHours.start`,`heartbeat.activeHours.end`,`heartbeat.target`],x=[`heartbeat.jobs`,`heartbeat.md`];function S(e){return _.test(e.trim())}function C(e){return v.test(e.trim())}var w=0;function T(e=Date.now()){return{id:`hb_${e}_${w++}`,name:``,enabled:!0,schedule:{kind:`every`,minutes:30},prompt:``}}function E(e){return e.startsWith(`heartbeat.`)&&e!==`heartbeat.jobs`&&e!==`heartbeat.md`}function D(e,t){if(!e||typeof e!=`object`)return null;let n=e,r=typeof n.id==`string`&&n.id.trim()?n.id.trim():`hb_unknown_${t}`,i=typeof n.name==`string`?n.name:``,a=n.enabled!==!1,o=typeof n.prompt==`string`?n.prompt:``,s=n.schedule,c;if(s&&typeof s==`object`){let e=s;c=e.kind===`cron`&&typeof e.cron==`string`?{kind:`cron`,cron:e.cron,...typeof e.timeZone==`string`&&e.timeZone?{timeZone:e.timeZone}:{}}:{kind:`every`,minutes:typeof e.minutes==`number`?e.minutes:30,...typeof e.timeZone==`string`&&e.timeZone?{timeZone:e.timeZone}:{}}}else c={kind:`every`,minutes:30};return{id:r,name:i,enabled:a,schedule:c,prompt:o}}function O(e){if(!e||typeof e!=`object`)return[];let t=e.jobs;return Array.isArray(t)?t.map((e,t)=>D(e,t)).filter(e=>e!==null):[]}function k(e){if(e.kind===`every`){let t=e.minutes;return!Number.isFinite(t)||t<=0||!Number.isInteger(t)?`Minutes must be a positive integer`:null}let t=e.cron?.trim()??``;return t?t.split(/\s+/).length<5?`Cron must have at least 5 fields`:null:`Cron expression required`}function A(e){return e.some(e=>k(e.schedule)!==null)}function j({port:e,client:t,dirty:n,snapshot:r}){let[i,a]=(0,p.useState)([]),[c,l]=(0,p.useState)([]),[u,d]=(0,p.useState)(!1),[f,h]=(0,p.useState)(null);(0,p.useEffect)(()=>{if(r.kind!==`ready`)return;let e=O(r.data);a(e),l(e)},[r]),(0,p.useEffect)(()=>{n.set(`heartbeat.jobs`,{value:i,original:c,valid:!A(i)})},[i,c,n]),(0,p.useEffect)(()=>()=>{n.remove(`heartbeat.jobs`)},[n]);let _=(0,p.useCallback)(async()=>{if(A(i)){h(`Fix invalid schedules before saving.`);return}d(!0),h(null);try{let e=O(await t.put(`/api/heartbeat`,{jobs:i}));a(e),l(e),n.remove(`heartbeat.jobs`)}catch(e){h(e instanceof Error?e.message:String(e))}finally{d(!1)}},[t,n,i]);if(r.kind===`loading`)return(0,m.jsx)(`p`,{className:`settings-section-hint`,children:`Loading jobs…`});if(r.kind===`offline`)return(0,m.jsx)(o,{port:e});if(r.kind===`error`)return(0,m.jsx)(s,{message:r.message});let v=n.pending.has(`heartbeat.jobs`),y=A(i);function b(e,t){a(n=>n.map((n,r)=>r===e?{...n,...t}:n))}function x(){a(e=>[...e,T()])}function S(e){a(t=>t.filter((t,n)=>n!==e))}return(0,m.jsxs)(m.Fragment,{children:[i.length===0?(0,m.jsx)(`p`,{className:`settings-section-hint`,children:`No jobs configured. Add one below.`}):(0,m.jsx)(`div`,{className:`settings-heartbeat-jobs-list`,children:i.map((e,t)=>(0,m.jsx)(g,{job:e,index:t,bodyError:k(e.schedule),onChange:e=>b(t,e),onRemove:()=>S(t)},e.id))}),(0,m.jsxs)(`div`,{className:`settings-heartbeat-jobs-footer`,children:[(0,m.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:x,children:`+ Add job`}),(0,m.jsx)(`button`,{type:`button`,className:`settings-action settings-action-save`,onClick:()=>void _(),disabled:u||!v||y,children:u?`Saving…`:`Apply jobs`})]}),f?(0,m.jsx)(`p`,{className:`settings-field-error`,role:`alert`,children:f}):null]})}function M({port:e,client:t,dirty:n,snapshot:r}){let[i,a]=(0,p.useState)(``),[c,l]=(0,p.useState)(``),[u,d]=(0,p.useState)(!1),[f,h]=(0,p.useState)(null);(0,p.useEffect)(()=>{if(r.kind!==`ready`)return;let e=r.data.content??``;a(e),l(e)},[r]),(0,p.useEffect)(()=>{n.set(`heartbeat.md`,{value:i,original:c,valid:!0})},[i,c,n]),(0,p.useEffect)(()=>()=>{n.remove(`heartbeat.md`)},[n]);let g=(0,p.useCallback)(async()=>{d(!0),h(null);try{await t.put(`/api/heartbeat-md`,{content:i}),l(i),n.remove(`heartbeat.md`)}catch(e){h(e instanceof Error?e.message:String(e))}finally{d(!1)}},[t,n,i]);if(r.kind===`loading`)return(0,m.jsx)(`p`,{className:`settings-section-hint`,children:`Loading template…`});if(r.kind===`offline`)return(0,m.jsx)(o,{port:e});if(r.kind===`error`)return(0,m.jsx)(s,{message:r.message});let _=n.pending.has(`heartbeat.md`);return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)(`label`,{className:`settings-field settings-field-textarea`,htmlFor:`hb-md`,children:[(0,m.jsx)(`span`,{className:`settings-field-label`,children:`Template`}),(0,m.jsx)(`textarea`,{id:`hb-md`,rows:10,spellCheck:!1,value:i,onChange:e=>a(e.target.value),style:{fontFamily:`ui-monospace, monospace`}})]}),(0,m.jsx)(`div`,{className:`settings-heartbeat-md-footer`,children:(0,m.jsx)(`button`,{type:`button`,className:`settings-action settings-action-save`,onClick:()=>void g(),disabled:u||!_,children:u?`Saving…`:`Save template`})}),f?(0,m.jsx)(`p`,{className:`settings-field-error`,role:`alert`,children:f}):null]})}function N({port:e,client:t,dirty:n,registerSave:h}){let g=r(t,`/api/settings`),_=r(t,`/api/heartbeat`),v=r(t,`/api/heartbeat-md`),[x,w]=(0,p.useState)(!1),[T,D]=(0,p.useState)(`30m`),[O,k]=(0,p.useState)(`08:00`),[A,N]=(0,p.useState)(`22:00`),[P,F]=(0,p.useState)(`all`);(0,p.useEffect)(()=>{if(g.state.kind!==`ready`)return;let e=g.state.data.heartbeat||{};w(!!e.enabled),D(typeof e.every==`string`?e.every:`30m`),k(e.activeHours?.start??`08:00`),N(e.activeHours?.end??`22:00`),F(typeof e.target==`string`?e.target:`all`)},[g.state]),(0,p.useEffect)(()=>()=>{for(let e of b)n.remove(e)},[n]);let I=(0,p.useMemo)(()=>g.state.kind===`ready`&&g.state.data.heartbeat||{},[g.state]),L=(0,p.useCallback)((e,t)=>n.set(e,t),[n]),R=(0,p.useRef)(0),z=(0,p.useCallback)(async()=>{let e=n.saveBundle(),r={};for(let[t,n]of Object.entries(e))E(t)&&(r[t]=n);if(Object.keys(r).length===0)return;let i=++R.current,a=f(r),o=await t.put(`/api/settings`,a);if(i!==R.current)return;let s=o&&typeof o==`object`&&`data`in o?o.data:o;for(let e of b)n.remove(e);g.setData(s);let c=s.heartbeat||{};w(!!c.enabled),D(typeof c.every==`string`?c.every:`30m`),k(c.activeHours?.start??`08:00`),N(c.activeHours?.end??`22:00`),F(typeof c.target==`string`?c.target:`all`),await g.refresh()},[t,n,g]);if((0,p.useEffect)(()=>{if(h)return h(z),()=>h(null)},[h,z]),g.state.kind===`loading`)return(0,m.jsx)(a,{});if(g.state.kind===`offline`)return(0,m.jsx)(o,{port:e});if(g.state.kind===`error`)return(0,m.jsx)(s,{message:g.state.message});let B=S(T)?null:"Use the form `<n>s|m|h`, e.g. `30m`",V=C(O)?null:`Use HH:MM (24h)`,H=C(A)?null:`Use HH:MM (24h)`,U=g.state.data.perCli||{},W=Object.keys(U),G=[{value:`all`,label:`all (broadcast)`},...(W.length>0?W:[...y]).map(e=>({value:e,label:d(e).label||e}))];return G.some(e=>e.value===P)||G.push({value:P,label:`${d(P).label||P} (legacy)`}),(0,m.jsxs)(`form`,{className:`settings-page-form`,onSubmit:e=>{e.preventDefault(),z()},children:[(0,m.jsxs)(i,{title:`Heartbeat`,hint:`Background prompts the agent runs on a schedule.`,children:[(0,m.jsx)(c,{id:`hb-enabled`,label:`Heartbeat enabled`,value:x,onChange:e=>{w(e),L(`heartbeat.enabled`,{value:e,original:!!I.enabled,valid:!0})}}),(0,m.jsx)(u,{id:`hb-every`,label:`Default interval`,value:T,placeholder:`30m`,error:B,onChange:e=>{D(e),L(`heartbeat.every`,{value:e,original:I.every??`30m`,valid:S(e)})}}),(0,m.jsx)(u,{id:`hb-start`,label:`Active hours start`,value:O,placeholder:`08:00`,error:V,onChange:e=>{k(e),L(`heartbeat.activeHours.start`,{value:e,original:I.activeHours?.start??`08:00`,valid:C(e)})}}),(0,m.jsx)(u,{id:`hb-end`,label:`Active hours end`,value:A,placeholder:`22:00`,error:H,onChange:e=>{N(e),L(`heartbeat.activeHours.end`,{value:e,original:I.activeHours?.end??`22:00`,valid:C(e)})}}),(0,m.jsx)(l,{id:`hb-target`,label:`Target`,value:P,options:G,onChange:e=>{F(e),L(`heartbeat.target`,{value:e,original:I.target??`all`,valid:!0})}})]}),(0,m.jsx)(i,{title:`Jobs`,hint:`Each job replaces the entire heartbeat.json on save. Concurrent edits from multiple browsers will overwrite — last write wins.`,children:(0,m.jsx)(j,{port:e,client:t,dirty:n,snapshot:_.state})}),(0,m.jsx)(i,{title:`Default heartbeat prompt template`,hint:`Markdown shown to the agent when a heartbeat fires without a job-specific prompt.`,children:(0,m.jsx)(M,{port:e,client:t,dirty:n,snapshot:v.state})})]})}export{x as PAGE_LOCAL_KEYS,b as SECTION_A_KEYS,y as TARGET_FALLBACK,N as default,E as isHeartbeatSettingsKey,k as jobScheduleBodyError,A as jobsHaveErrors,T as makeDefaultJob,O as normalizeJobsResponse,C as validateHHMM,S as validateInterval};
|
|
@@ -39,7 +39,7 @@ import{n as e,r as t}from"./vendor-render-BpGO1zp3.js";import{t as n}from"./stat
|
|
|
39
39
|
<textarea class="hb-prompt" rows="2" placeholder="${f(m(`hb.prompt`))}"
|
|
40
40
|
data-hb-prompt="${t}">${f(String(e.prompt||``))}</textarea>
|
|
41
41
|
</div>
|
|
42
|
-
`}).join(``);let r=t.filter(e=>e.enabled).length,i=document.getElementById(`hbSidebarBtn`);i&&(i.innerHTML=`${p.heartPulse} Heartbeat (${r})`)}var Ln=0;function Rn(){n.heartbeatJobs.push({id:`hb_${Date.now()}_${Ln++}`,name:``,enabled:!0,schedule:Wn({kind:`every`,minutes:5}),prompt:``}),P(),F()}function zn(e){n.heartbeatJobs.splice(e,1),P(),F()}function Bn(e){let t=n.heartbeatJobs[e];t&&(t.enabled=!t.enabled,P(),F())}async function F(){let e=n.heartbeatJobs.map(I);if(n.heartbeatJobs=e,n.heartbeatErrors=L(e),Object.keys(n.heartbeatErrors).length>0){P();return}let t=await i(`/api/heartbeat`,`PUT`,{jobs:e});t?.jobs&&(n.heartbeatJobs=t.jobs.map(I),n.heartbeatErrors=L(n.heartbeatJobs),P())}async function Vn(){try{let e=((await a(`/api/heartbeat`))?.jobs||[]).map(I).filter(e=>e.enabled).length,t=document.getElementById(`hbSidebarBtn`);t&&(t.innerHTML=`${p.heartPulse} Heartbeat (${e})`)}catch{}}function I(e){return{id:String(e.id||`hb_${Date.now()}_${Ln++}`),name:String(e.name||``),enabled:e.enabled!==!1,schedule:Hn(e.schedule),prompt:String(e.prompt||``)}}function Hn(e){let t=Un(e?.timeZone);if(e?.kind===`cron`){let n=typeof e.cron==`string`?e.cron.trim().replace(/\s+/g,` `):`0 9 * * *`;return t?{kind:`cron`,cron:n,timeZone:t}:{kind:`cron`,cron:n}}let n=typeof e?.minutes==`number`&&Number.isFinite(e.minutes)&&e.minutes>0?Math.max(1,Math.floor(e.minutes)):5;return t?{kind:`every`,minutes:n,timeZone:t}:{kind:`every`,minutes:n}}function Un(e){return(typeof e==`string`?e.trim():``)||void 0}function Wn(e){let t=Gn();return t?{...e,timeZone:t}:e}function Gn(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||void 0}catch{return}}function Kn(){let e=Gn();return e?`${m(`hb.timezoneAuto`)} ${e}`:m(`hb.timezoneAuto`)}function L(e){let t={};for(let n of e){let e=qn(n);e&&(t[n.id]=e)}return t}function qn(e){let t=Dn(e.schedule);return t.ok?null:Jn(t.code,t.error)}function Jn(e,t){switch(e){case`invalid_cron`:return m(`hb.invalidCron`);case`invalid_timezone`:return m(`hb.invalidTimeZone`);case`invalid_minutes`:return m(`hb.invalidMinutes`);default:return t||m(`hb.invalidSchedule`)}}function Yn(e){let t=e.timeZone||Gn()||`Asia/Seoul`;return e.kind===`cron`?m(`hb.scheduleHintCron`,{cron:`0 9 * * *`,timeZone:t}):m(`hb.scheduleHintEvery`,{minutes:e.minutes,timeZone:t})}var R=`jaw.uiTheme`,z=null;function Xn(e){return e===`dark`||e===`light`||e===`auto`}function Zn(e){return e===`light`||e===`auto`&&typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`}function Qn(n){let r=n===`light`?e:t;z||(z=document.createElement(`style`),z.id=`hljsTheme`,document.head.appendChild(z)),z.textContent=r}function $n(){!localStorage.getItem(R)&&localStorage.getItem(`theme`)&&(localStorage.setItem(R,localStorage.getItem(`theme`)),localStorage.removeItem(`theme`));let e=tr(),t=localStorage.getItem(R),n=window.matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`;B(e||t||n),document.getElementById(`toggleTheme`)?.addEventListener(`click`,er),window.addEventListener(`message`,rr),window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{let e=localStorage.getItem(R);(!e||e===`auto`)&&B(e||`auto`)}),window.addEventListener(`storage`,e=>{e.key===R&&e.newValue&&B(e.newValue)})}function er(){let e=(document.documentElement.getAttribute(`data-theme`)||`dark`)===`dark`?`light`:`dark`;B(e),localStorage.setItem(R,e)}function B(e){let t=Zn(e);document.documentElement.setAttribute(`data-theme`,t);let n=document.getElementById(`toggleTheme`);n&&n.classList.toggle(`is-light`,t===`light`),Qn(t),Ee(),ue()}function tr(){let e=new URLSearchParams(window.location.search).get(`jawTheme`);return Xn(e)?e:null}function nr(e){if(e===window.location.origin)return!0;try{let t=new URL(e).hostname;return t===`localhost`||t===`127.0.0.1`||t===`::1`||t===`[::1]`}catch{return!1}}function rr(e){if(window.parent===window||e.source!==window.parent||!nr(e.origin))return;let t=e.data;!t||t.type!==`jaw-preview-theme-sync`||!Xn(t.theme)||B(t.theme)}var ir=new Set([`j`,`k`,`i`,`n`,`p`]);function ar(e){if(e.altKey&&!e.ctrlKey&&!e.metaKey){let t=e.key.toLowerCase();return(t.length!==1||!ir.has(t))&&e.code?.startsWith(`Key`)&&(t=e.code.slice(3).toLowerCase()),ir.has(t)}return e.ctrlKey&&!e.metaKey&&!e.altKey?e.code===`Backquote`:!!(e.metaKey&&!e.ctrlKey&&!e.altKey&&(!e.shiftKey&&(e.code===`Backquote`||e.code===`KeyB`||e.code===`KeyJ`)||e.shiftKey&&(e.code===`KeyB`||e.code===`KeyD`||e.code===`KeyE`)))}function or(){window.parent!==window&&document.addEventListener(`keydown`,e=>{if(ar(e)){e.preventDefault();try{window.parent.postMessage({type:`jaw-preview-shortcut`,key:e.key,code:e.code,altKey:e.altKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey},`*`)}catch{}}})}var sr=50,cr=30,lr=80,ur=500,V=null,dr=!1;function fr(){if(dr||!(`ontouchstart`in window))return;dr=!0;let e=document.querySelector(`.chat-area`);e&&(e.addEventListener(`touchstart`,pr,{passive:!0}),e.addEventListener(`touchend`,mr,{passive:!0}))}function pr(e){let t=e.touches[0],n=window.innerWidth,r=null;t.clientX<cr?r=`left`:t.clientX>n-cr&&(r=`right`),V={startX:t.clientX,startY:t.clientY,startTime:Date.now(),isEdge:r}}function mr(e){if(!V)return;let t=e.changedTouches[0],n=t.clientX-V.startX,r=Math.abs(t.clientY-V.startY),i=Date.now()-V.startTime,a=V;V=null,!(r>lr||i>ur||Math.abs(n)<sr)&&(n>0&&a.isEdge===`left`&&re(),n<0&&a.isEdge===`right`&&te())}var H=!1,U=null,W=[],hr=null,gr=null,_r=0,G=!1,K=`stopped`,vr=15e3;function yr(){if(typeof MediaRecorder>`u`)return``;for(let e of[`audio/webm;codecs=opus`,`audio/mp4`,`audio/ogg;codecs=opus`])if(MediaRecorder.isTypeSupported(e))return e;return``}function br(e){let t=e;switch(t.name){case`NotAllowedError`:return m(`voice.micDenied`);case`NotFoundError`:return m(`voice.micNotFound`);case`NotReadableError`:case`AbortError`:return m(`voice.micBusy`);case`TimeoutError`:return Tr();default:return t instanceof TypeError||!navigator.mediaDevices?m(`voice.httpsRequired`):m(`voice.micDenied`)}}function xr(){let e=document;return e.permissionsPolicy||e.featurePolicy||null}function Sr(){try{return xr()?.allowsFeature?.(`microphone`)===!1}catch{return!1}}async function Cr(){try{return navigator.permissions?.query?(await navigator.permissions.query({name:`microphone`})).state:null}catch{return null}}function wr(){let e=new URL(window.location.href),t=new URL(e.href);e.hostname===`127.0.0.1`?t.hostname=`localhost`:e.hostname===`localhost`&&(t.hostname=`127.0.0.1`);let n=t.origin===e.origin?``:t.origin;return{origin:e.origin,alternateOrigin:n}}function Tr(){let e=wr();return e.alternateOrigin?m(`voice.requestTimeoutLoopback`,e):m(`voice.requestTimeout`,e)}function Er(e){let t=e;return t.name===`NotSupportedError`?m(`voice.unsupported`):t.name===`NotReadableError`||t.name===`AbortError`?m(`voice.micBusy`):t instanceof TypeError?m(`voice.httpsRequired`):m(`voice.interrupted`)}function q(e){if(window.parent!==window)try{window.parent.postMessage({type:`jaw-preview-stt-recording`,action:e},`*`)}catch{}}function Dr(){return new DOMException(`Timed out waiting for microphone permission prompt`,`TimeoutError`)}async function Or(){let e=!1,t=null,n=navigator.mediaDevices.getUserMedia({audio:!0}).then(t=>e?(t.getTracks().forEach(e=>e.stop()),null):t,t=>{if(e)return null;throw t}),r=new Promise((n,r)=>{t=setTimeout(()=>{e=!0,r(Dr())},vr)});try{let e=await Promise.race([n,r]);if(!e)throw Dr();return e}finally{t!==null&&clearTimeout(t)}}async function kr(){if(n.isRecording||G)return;if(typeof MediaRecorder>`u`||!navigator.mediaDevices?.getUserMedia){v(m(`voice.unsupported`),``,`error`);return}if(Sr()){v(m(`voice.policyBlocked`),``,`error`);return}if(await Cr()===`denied`){v(m(`voice.permissionDeniedBrowser`,wr()),``,`error`);return}G=!0,H=!1,K=`stopped`,Y(!1),q(`request`);let e=null;try{e=await Or(),hr=e}catch(e){G=!1,Y(!1),q(`failed`),v(br(e),``,`error`);return}try{let t=yr(),r=new MediaRecorder(e,t?{mimeType:t}:{});U=r,W=[],r.ondataavailable=e=>{e.data.size>0&&W.push(e.data)},r.onerror=()=>{H=!0,K=`failed`,n.isRecording=!1,Pr(),Y(!1),r.state===`recording`?r.stop():(W=[],J(),U=null,q(`failed`)),v(m(`voice.interrupted`),``,`error`)},r.onstop=async()=>{let e=K,n=H||e!==`stopped`;if(K=`stopped`,n){W=[],J(),U=null,H=!1,q(e);return}let i=r.mimeType||t||`audio/webm`,a=i.includes(`mp4`)?`.m4a`:i.includes(`ogg`)?`.ogg`:`.webm`,o=new Blob(W,{type:i});if(W=[],J(),U=null,H=!1,q(`stopped`),o.size>20*1024*1024){v(m(`voice.tooLarge`),``,`error`);return}if(o.size<1e3){v(m(`voice.tooShort`),``,`error`);return}await Cn(o,a,i)},r.start(),n.isRecording=!0,G=!1,_r=Date.now(),Y(!0),Nr(),q(`started`)}catch(e){G=!1,n.isRecording=!1,W=[],U=null,J(),Y(!1),q(`failed`),v(Er(e),``,`error`)}}function Ar(){!n.isRecording||!U||(K=`stopped`,U.state===`recording`?U.stop():(J(),U=null,q(`stopped`)),n.isRecording=!1,Pr(),Y(!1))}function jr(){!n.isRecording||!U||(H=!0,K=`cancelled`,U.state===`recording`?U.stop():(W=[],J(),U=null,q(`cancelled`)),n.isRecording=!1,Pr(),Y(!1))}function Mr(){n.isRecording?Ar():kr()}function J(){hr?.getTracks().forEach(e=>e.stop()),hr=null}function Nr(){let e=document.getElementById(`voiceTimer`);e&&(e.style.display=`inline`,gr=setInterval(()=>{let t=Math.floor((Date.now()-_r)/1e3);e.textContent=`${String(Math.floor(t/60)).padStart(2,`0`)}:${String(t%60).padStart(2,`0`)}`},500))}function Pr(){gr&&=(clearInterval(gr),null);let e=document.getElementById(`voiceTimer`);e&&(e.style.display=`none`,e.textContent=`00:00`)}function Y(e){let t=document.getElementById(`btnVoice`),n=document.getElementById(`btnVoiceCancel`),r=G&&!e;t&&(t.classList.toggle(`recording`,e),t.classList.toggle(`arming`,r),t.innerHTML=e?p.stop:p.mic,t.title=m(r?`voice.requesting`:e?`voice.stop`:`voice.start`),t.toggleAttribute(`aria-busy`,r),t instanceof HTMLButtonElement&&(t.disabled=r)),n&&(n.style.display=e?`inline-block`:`none`)}window.parent;var Fr=null,Ir=``,X=null,Lr=!1;function Rr(){let e=document.getElementById(`chatSearchInput`),t=document.getElementById(`chatSearchClose`),n=document.getElementById(`chatSearchResults`),r=document.getElementById(`chatSearchCount`);!e||!t||!n||!r||Lr||(Lr=!0,window.addEventListener(`message`,e=>{e.data?.type===`jaw-preview-search`&&zr()}),e.addEventListener(`input`,()=>{let t=e.value.trim();if(Fr&&clearTimeout(Fr),!t){qr(n,r);return}Fr=setTimeout(()=>void Vr(t,n,r),250)}),e.addEventListener(`keydown`,e=>{if(e.key===`Escape`){Z();return}e.key===`Enter`&&(e.preventDefault(),n.querySelector(`.chat-search-result`)?.click()),e.key===`ArrowDown`&&(e.preventDefault(),Kr(n,1)),e.key===`ArrowUp`&&(e.preventDefault(),Kr(n,-1))}),n.addEventListener(`wheel`,e=>{let t=n,r=t.scrollTop===0&&e.deltaY<0,i=t.scrollTop+t.clientHeight>=t.scrollHeight&&e.deltaY>0;!r&&!i&&e.stopPropagation(),(r||i)&&e.preventDefault()},{passive:!1}),t.addEventListener(`click`,Z))}function zr(){let e=document.getElementById(`chatSearch`),t=document.getElementById(`chatSearchInput`);!e||!t||(e.classList.contains(`open`)?Z():(e.classList.add(`open`),t.focus(),Br()))}function Z(){let e=document.getElementById(`chatSearch`),t=document.getElementById(`chatSearchInput`),n=document.getElementById(`chatSearchResults`),r=document.getElementById(`chatSearchCount`);e&&(e.classList.remove(`open`),t&&(t.value=``),n&&r&&qr(n,r),Ir=``)}function Br(){X=new Map,a(`/api/messages${Ae()}`).then(e=>{e&&(X=new Map,e.forEach((e,t)=>X.set(e.id,t)))}).catch(()=>{})}async function Vr(e,t,n){Ir=e;let r=await a(_e(`/api/messages/search?q=${encodeURIComponent(e)}&limit=20`));if(!(!r||Ir!==e)){if(n.textContent=r.length>0?`${r.length} found`:`no results`,r.length===0){t.classList.remove(`has-results`),t.innerHTML=``;return}t.innerHTML=r.map(t=>Hr(t,e)).join(``),t.classList.add(`has-results`),t.querySelectorAll(`.chat-search-result`).forEach(e=>{e.addEventListener(`click`,()=>{Gr(Number(e.dataset.msgId))})})}}function Hr(e,t){let n=e.role===`assistant`?`agent`:e.role,r=n===`agent`?e.cli||`agent`:`you`,i=e.match_field===`tool_log`,a=i?`<span class="chat-search-result-badge">tool</span>`:``,o=Wr(i?Ur(e.tool_log,t):e.content,t),s=Jr(e.created_at);return`<div class="chat-search-result" data-msg-id="${e.id}" tabindex="-1">
|
|
42
|
+
`}).join(``);let r=t.filter(e=>e.enabled).length,i=document.getElementById(`hbSidebarBtn`);i&&(i.innerHTML=`${p.heartPulse} Heartbeat (${r})`)}var Ln=0;function Rn(){n.heartbeatJobs.push({id:`hb_${Date.now()}_${Ln++}`,name:``,enabled:!0,schedule:Wn({kind:`every`,minutes:5}),prompt:``}),P(),F()}function zn(e){n.heartbeatJobs.splice(e,1),P(),F()}function Bn(e){let t=n.heartbeatJobs[e];t&&(t.enabled=!t.enabled,P(),F())}async function F(){let e=n.heartbeatJobs.map(I);if(n.heartbeatJobs=e,n.heartbeatErrors=L(e),Object.keys(n.heartbeatErrors).length>0){P();return}let t=await i(`/api/heartbeat`,`PUT`,{jobs:e});t?.jobs&&(n.heartbeatJobs=t.jobs.map(I),n.heartbeatErrors=L(n.heartbeatJobs),P())}async function Vn(){try{let e=((await a(`/api/heartbeat`))?.jobs||[]).filter(e=>e.enabled!==!1&&!e.held).length,t=document.getElementById(`hbSidebarBtn`);t&&(t.innerHTML=`${p.heartPulse} Heartbeat (${e})`)}catch{}}function I(e){return{id:String(e.id||`hb_${Date.now()}_${Ln++}`),name:String(e.name||``),enabled:e.enabled!==!1,schedule:Hn(e.schedule),prompt:String(e.prompt||``)}}function Hn(e){let t=Un(e?.timeZone);if(e?.kind===`cron`){let n=typeof e.cron==`string`?e.cron.trim().replace(/\s+/g,` `):`0 9 * * *`;return t?{kind:`cron`,cron:n,timeZone:t}:{kind:`cron`,cron:n}}let n=typeof e?.minutes==`number`&&Number.isFinite(e.minutes)&&e.minutes>0?Math.max(1,Math.floor(e.minutes)):5;return t?{kind:`every`,minutes:n,timeZone:t}:{kind:`every`,minutes:n}}function Un(e){return(typeof e==`string`?e.trim():``)||void 0}function Wn(e){let t=Gn();return t?{...e,timeZone:t}:e}function Gn(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||void 0}catch{return}}function Kn(){let e=Gn();return e?`${m(`hb.timezoneAuto`)} ${e}`:m(`hb.timezoneAuto`)}function L(e){let t={};for(let n of e){let e=qn(n);e&&(t[n.id]=e)}return t}function qn(e){let t=Dn(e.schedule);return t.ok?null:Jn(t.code,t.error)}function Jn(e,t){switch(e){case`invalid_cron`:return m(`hb.invalidCron`);case`invalid_timezone`:return m(`hb.invalidTimeZone`);case`invalid_minutes`:return m(`hb.invalidMinutes`);default:return t||m(`hb.invalidSchedule`)}}function Yn(e){let t=e.timeZone||Gn()||`Asia/Seoul`;return e.kind===`cron`?m(`hb.scheduleHintCron`,{cron:`0 9 * * *`,timeZone:t}):m(`hb.scheduleHintEvery`,{minutes:e.minutes,timeZone:t})}var R=`jaw.uiTheme`,z=null;function Xn(e){return e===`dark`||e===`light`||e===`auto`}function Zn(e){return e===`light`||e===`auto`&&typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`}function Qn(n){let r=n===`light`?e:t;z||(z=document.createElement(`style`),z.id=`hljsTheme`,document.head.appendChild(z)),z.textContent=r}function $n(){!localStorage.getItem(R)&&localStorage.getItem(`theme`)&&(localStorage.setItem(R,localStorage.getItem(`theme`)),localStorage.removeItem(`theme`));let e=tr(),t=localStorage.getItem(R),n=window.matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`;B(e||t||n),document.getElementById(`toggleTheme`)?.addEventListener(`click`,er),window.addEventListener(`message`,rr),window.matchMedia(`(prefers-color-scheme: dark)`).addEventListener(`change`,()=>{let e=localStorage.getItem(R);(!e||e===`auto`)&&B(e||`auto`)}),window.addEventListener(`storage`,e=>{e.key===R&&e.newValue&&B(e.newValue)})}function er(){let e=(document.documentElement.getAttribute(`data-theme`)||`dark`)===`dark`?`light`:`dark`;B(e),localStorage.setItem(R,e)}function B(e){let t=Zn(e);document.documentElement.setAttribute(`data-theme`,t);let n=document.getElementById(`toggleTheme`);n&&n.classList.toggle(`is-light`,t===`light`),Qn(t),Ee(),ue()}function tr(){let e=new URLSearchParams(window.location.search).get(`jawTheme`);return Xn(e)?e:null}function nr(e){if(e===window.location.origin)return!0;try{let t=new URL(e).hostname;return t===`localhost`||t===`127.0.0.1`||t===`::1`||t===`[::1]`}catch{return!1}}function rr(e){if(window.parent===window||e.source!==window.parent||!nr(e.origin))return;let t=e.data;!t||t.type!==`jaw-preview-theme-sync`||!Xn(t.theme)||B(t.theme)}var ir=new Set([`j`,`k`,`i`,`n`,`p`]);function ar(e){if(e.altKey&&!e.ctrlKey&&!e.metaKey){let t=e.key.toLowerCase();return(t.length!==1||!ir.has(t))&&e.code?.startsWith(`Key`)&&(t=e.code.slice(3).toLowerCase()),ir.has(t)}return e.ctrlKey&&!e.metaKey&&!e.altKey?e.code===`Backquote`:!!(e.metaKey&&!e.ctrlKey&&!e.altKey&&(!e.shiftKey&&(e.code===`Backquote`||e.code===`KeyB`||e.code===`KeyJ`)||e.shiftKey&&(e.code===`KeyB`||e.code===`KeyD`||e.code===`KeyE`)))}function or(){window.parent!==window&&document.addEventListener(`keydown`,e=>{if(ar(e)){e.preventDefault();try{window.parent.postMessage({type:`jaw-preview-shortcut`,key:e.key,code:e.code,altKey:e.altKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey},`*`)}catch{}}})}var sr=50,cr=30,lr=80,ur=500,V=null,dr=!1;function fr(){if(dr||!(`ontouchstart`in window))return;dr=!0;let e=document.querySelector(`.chat-area`);e&&(e.addEventListener(`touchstart`,pr,{passive:!0}),e.addEventListener(`touchend`,mr,{passive:!0}))}function pr(e){let t=e.touches[0],n=window.innerWidth,r=null;t.clientX<cr?r=`left`:t.clientX>n-cr&&(r=`right`),V={startX:t.clientX,startY:t.clientY,startTime:Date.now(),isEdge:r}}function mr(e){if(!V)return;let t=e.changedTouches[0],n=t.clientX-V.startX,r=Math.abs(t.clientY-V.startY),i=Date.now()-V.startTime,a=V;V=null,!(r>lr||i>ur||Math.abs(n)<sr)&&(n>0&&a.isEdge===`left`&&re(),n<0&&a.isEdge===`right`&&te())}var H=!1,U=null,W=[],hr=null,gr=null,_r=0,G=!1,K=`stopped`,vr=15e3;function yr(){if(typeof MediaRecorder>`u`)return``;for(let e of[`audio/webm;codecs=opus`,`audio/mp4`,`audio/ogg;codecs=opus`])if(MediaRecorder.isTypeSupported(e))return e;return``}function br(e){let t=e;switch(t.name){case`NotAllowedError`:return m(`voice.micDenied`);case`NotFoundError`:return m(`voice.micNotFound`);case`NotReadableError`:case`AbortError`:return m(`voice.micBusy`);case`TimeoutError`:return Tr();default:return t instanceof TypeError||!navigator.mediaDevices?m(`voice.httpsRequired`):m(`voice.micDenied`)}}function xr(){let e=document;return e.permissionsPolicy||e.featurePolicy||null}function Sr(){try{return xr()?.allowsFeature?.(`microphone`)===!1}catch{return!1}}async function Cr(){try{return navigator.permissions?.query?(await navigator.permissions.query({name:`microphone`})).state:null}catch{return null}}function wr(){let e=new URL(window.location.href),t=new URL(e.href);e.hostname===`127.0.0.1`?t.hostname=`localhost`:e.hostname===`localhost`&&(t.hostname=`127.0.0.1`);let n=t.origin===e.origin?``:t.origin;return{origin:e.origin,alternateOrigin:n}}function Tr(){let e=wr();return e.alternateOrigin?m(`voice.requestTimeoutLoopback`,e):m(`voice.requestTimeout`,e)}function Er(e){let t=e;return t.name===`NotSupportedError`?m(`voice.unsupported`):t.name===`NotReadableError`||t.name===`AbortError`?m(`voice.micBusy`):t instanceof TypeError?m(`voice.httpsRequired`):m(`voice.interrupted`)}function q(e){if(window.parent!==window)try{window.parent.postMessage({type:`jaw-preview-stt-recording`,action:e},`*`)}catch{}}function Dr(){return new DOMException(`Timed out waiting for microphone permission prompt`,`TimeoutError`)}async function Or(){let e=!1,t=null,n=navigator.mediaDevices.getUserMedia({audio:!0}).then(t=>e?(t.getTracks().forEach(e=>e.stop()),null):t,t=>{if(e)return null;throw t}),r=new Promise((n,r)=>{t=setTimeout(()=>{e=!0,r(Dr())},vr)});try{let e=await Promise.race([n,r]);if(!e)throw Dr();return e}finally{t!==null&&clearTimeout(t)}}async function kr(){if(n.isRecording||G)return;if(typeof MediaRecorder>`u`||!navigator.mediaDevices?.getUserMedia){v(m(`voice.unsupported`),``,`error`);return}if(Sr()){v(m(`voice.policyBlocked`),``,`error`);return}if(await Cr()===`denied`){v(m(`voice.permissionDeniedBrowser`,wr()),``,`error`);return}G=!0,H=!1,K=`stopped`,Y(!1),q(`request`);let e=null;try{e=await Or(),hr=e}catch(e){G=!1,Y(!1),q(`failed`),v(br(e),``,`error`);return}try{let t=yr(),r=new MediaRecorder(e,t?{mimeType:t}:{});U=r,W=[],r.ondataavailable=e=>{e.data.size>0&&W.push(e.data)},r.onerror=()=>{H=!0,K=`failed`,n.isRecording=!1,Pr(),Y(!1),r.state===`recording`?r.stop():(W=[],J(),U=null,q(`failed`)),v(m(`voice.interrupted`),``,`error`)},r.onstop=async()=>{let e=K,n=H||e!==`stopped`;if(K=`stopped`,n){W=[],J(),U=null,H=!1,q(e);return}let i=r.mimeType||t||`audio/webm`,a=i.includes(`mp4`)?`.m4a`:i.includes(`ogg`)?`.ogg`:`.webm`,o=new Blob(W,{type:i});if(W=[],J(),U=null,H=!1,q(`stopped`),o.size>20*1024*1024){v(m(`voice.tooLarge`),``,`error`);return}if(o.size<1e3){v(m(`voice.tooShort`),``,`error`);return}await Cn(o,a,i)},r.start(),n.isRecording=!0,G=!1,_r=Date.now(),Y(!0),Nr(),q(`started`)}catch(e){G=!1,n.isRecording=!1,W=[],U=null,J(),Y(!1),q(`failed`),v(Er(e),``,`error`)}}function Ar(){!n.isRecording||!U||(K=`stopped`,U.state===`recording`?U.stop():(J(),U=null,q(`stopped`)),n.isRecording=!1,Pr(),Y(!1))}function jr(){!n.isRecording||!U||(H=!0,K=`cancelled`,U.state===`recording`?U.stop():(W=[],J(),U=null,q(`cancelled`)),n.isRecording=!1,Pr(),Y(!1))}function Mr(){n.isRecording?Ar():kr()}function J(){hr?.getTracks().forEach(e=>e.stop()),hr=null}function Nr(){let e=document.getElementById(`voiceTimer`);e&&(e.style.display=`inline`,gr=setInterval(()=>{let t=Math.floor((Date.now()-_r)/1e3);e.textContent=`${String(Math.floor(t/60)).padStart(2,`0`)}:${String(t%60).padStart(2,`0`)}`},500))}function Pr(){gr&&=(clearInterval(gr),null);let e=document.getElementById(`voiceTimer`);e&&(e.style.display=`none`,e.textContent=`00:00`)}function Y(e){let t=document.getElementById(`btnVoice`),n=document.getElementById(`btnVoiceCancel`),r=G&&!e;t&&(t.classList.toggle(`recording`,e),t.classList.toggle(`arming`,r),t.innerHTML=e?p.stop:p.mic,t.title=m(r?`voice.requesting`:e?`voice.stop`:`voice.start`),t.toggleAttribute(`aria-busy`,r),t instanceof HTMLButtonElement&&(t.disabled=r)),n&&(n.style.display=e?`inline-block`:`none`)}window.parent;var Fr=null,Ir=``,X=null,Lr=!1;function Rr(){let e=document.getElementById(`chatSearchInput`),t=document.getElementById(`chatSearchClose`),n=document.getElementById(`chatSearchResults`),r=document.getElementById(`chatSearchCount`);!e||!t||!n||!r||Lr||(Lr=!0,window.addEventListener(`message`,e=>{e.data?.type===`jaw-preview-search`&&zr()}),e.addEventListener(`input`,()=>{let t=e.value.trim();if(Fr&&clearTimeout(Fr),!t){qr(n,r);return}Fr=setTimeout(()=>void Vr(t,n,r),250)}),e.addEventListener(`keydown`,e=>{if(e.key===`Escape`){Z();return}e.key===`Enter`&&(e.preventDefault(),n.querySelector(`.chat-search-result`)?.click()),e.key===`ArrowDown`&&(e.preventDefault(),Kr(n,1)),e.key===`ArrowUp`&&(e.preventDefault(),Kr(n,-1))}),n.addEventListener(`wheel`,e=>{let t=n,r=t.scrollTop===0&&e.deltaY<0,i=t.scrollTop+t.clientHeight>=t.scrollHeight&&e.deltaY>0;!r&&!i&&e.stopPropagation(),(r||i)&&e.preventDefault()},{passive:!1}),t.addEventListener(`click`,Z))}function zr(){let e=document.getElementById(`chatSearch`),t=document.getElementById(`chatSearchInput`);!e||!t||(e.classList.contains(`open`)?Z():(e.classList.add(`open`),t.focus(),Br()))}function Z(){let e=document.getElementById(`chatSearch`),t=document.getElementById(`chatSearchInput`),n=document.getElementById(`chatSearchResults`),r=document.getElementById(`chatSearchCount`);e&&(e.classList.remove(`open`),t&&(t.value=``),n&&r&&qr(n,r),Ir=``)}function Br(){X=new Map,a(`/api/messages${Ae()}`).then(e=>{e&&(X=new Map,e.forEach((e,t)=>X.set(e.id,t)))}).catch(()=>{})}async function Vr(e,t,n){Ir=e;let r=await a(_e(`/api/messages/search?q=${encodeURIComponent(e)}&limit=20`));if(!(!r||Ir!==e)){if(n.textContent=r.length>0?`${r.length} found`:`no results`,r.length===0){t.classList.remove(`has-results`),t.innerHTML=``;return}t.innerHTML=r.map(t=>Hr(t,e)).join(``),t.classList.add(`has-results`),t.querySelectorAll(`.chat-search-result`).forEach(e=>{e.addEventListener(`click`,()=>{Gr(Number(e.dataset.msgId))})})}}function Hr(e,t){let n=e.role===`assistant`?`agent`:e.role,r=n===`agent`?e.cli||`agent`:`you`,i=e.match_field===`tool_log`,a=i?`<span class="chat-search-result-badge">tool</span>`:``,o=Wr(i?Ur(e.tool_log,t):e.content,t),s=Jr(e.created_at);return`<div class="chat-search-result" data-msg-id="${e.id}" tabindex="-1">
|
|
43
43
|
<div class="chat-search-result-meta">
|
|
44
44
|
<span class="chat-search-result-role ${n}">${f(r)}</span>
|
|
45
45
|
${a}
|