@kynver-app/runtime 0.2.68 → 0.2.69

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.
@@ -1,16 +1,16 @@
1
- function w(e){let r=e.trim();if(!r.startsWith("{")&&!r.startsWith("["))return null;try{return JSON.parse(r)}catch{return null}}function s(e,r=2400){if(e==null)return;let n=(typeof e=="string"?e:JSON.stringify(e,null,2)).trim();if(n)return n.length<=r?n:`${n.slice(0,r-1).trimEnd()}\u2026`}function $(e){let r=e.trim();if(!r)return null;let o=w(r);if(o!==null)return o;for(let n of r.split(`
2
- `)){let a=w(n);if(a!==null)return a}return null}function N(e){let r=[];switch(r.push(`Background auto-complete \xB7 ${e.runId} / ${e.worker}`),e.outcome){case"completed":r.push("Outcome: harness completion posted to AgentOS successfully."),r.push("AgentOS task should close or advance to review per completion routing."),r.push("Next: check Command Center \u2014 no manual complete needed unless the board still shows running.");break;case"blocked":r.push(`Outcome: worker finished but completion was blocked${e.httpStatus?` (HTTP ${e.httpStatus})`:""}.`),e.reason&&r.push(`Blocker: ${e.reason}`),r.push("Next: fix the blocker (auth, landing gate, dirty worktree) and replay completion from Command Center.");break;case"timed_out":r.push(`Outcome: monitor gave up waiting \u2014 ${e.reason??"worker did not finish in time"}.`),r.push("Next: inspect the worker process/logs; stop or unblock the worker, then retry auto-complete.");break;case"missing_link":r.push(`Outcome: cannot complete \u2014 ${e.reason??"worker missing agentOsId/taskId"}.`),r.push("Next: re-dispatch with board linkage or run `kynver worker complete` with --agent-os-id.");break;default:r.push(`Outcome: ${e.outcome}`)}return{primary:r.join(`
3
- `),diagnostic:s(e)}}function S(e){let r=[],o=typeof e.monitorId=="string"?e.monitorId:void 0;if(r.push(o?`Harness monitor tick \xB7 ${e.runId} (${o})`:`Harness monitor tick \xB7 ${e.runId}`),!e.workers.length)return r.push("No workers in scope for this poll."),{primary:r.join(`
4
- `),diagnostic:s(e)};for(let t of e.workers){let i=t.autoComplete.eligible?"eligible for auto-complete":"not auto-completing",m=t.autoComplete.blockers.length>0?` (${t.autoComplete.blockers.slice(0,2).join("; ")})`:"";r.push(`\u2022 ${t.worker}: ${t.workerStatus}, ${t.health}${t.healthReason?` \u2014 ${t.healthReason}`:""}; ${i}${m}`),t.taskStatus&&r.push(` Board task: ${t.taskStatus}${t.leaseOwner?` (lease: ${t.leaseOwner})`:""}`)}let n=e.autoCompleted?.filter(t=>t.outcome==="completed"&&t.ok)??[],a=e.autoCompleted?.filter(t=>!t.ok&&t.outcome!=="skipped")??[];n.length&&r.push(`Auto-completed: ${n.map(t=>t.worker).join(", ")} \u2014 AgentOS completion should be posted.`),a.length&&r.push(`Auto-complete blocked: ${a.map(t=>`${t.worker}${t.reason?` (${t.reason})`:""}`).join("; ")}`),e.leaseRenewal?.failed?.length&&r.push(`Lease renew failed for: ${e.leaseRenewal.failed.map(t=>t.worker).join(", ")}`);let u=e.workers.length>0&&e.workers.every(t=>t.autoComplete.terminalVerified)&&(e.autoCompleted?.every(t=>t.ok||t.outcome==="skipped")??!0);return r.push(u?"Next: monitor loop should stop \u2014 all workers terminal and handled.":"Next: monitor will poll again until workers are terminal-verified or max time elapses."),{primary:r.join(`
5
- `),diagnostic:s(e)}}function H(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function p(e){return typeof e=="string"&&e.trim()?e.trim():null}function C(e){let r=H(e);if(!r)return{primary:"Harness worker complete finished with no parseable result.",diagnostic:s(e)};let o=p(r.worker)??"worker",n=p(r.runId),a=p(r.status)==="skipped",u=typeof r.httpStatus=="number"?r.httpStatus:null,t=H(r.response),i=[];if(i.push(`Harness worker complete \xB7 ${o}${n?` (${n})`:""}`),a)return i.push(`Outcome: skipped \u2014 ${p(r.reason)??"worker not finished yet"}.`),i.push("Next: wait for the worker to exit or post a finalResult, then retry complete."),{primary:i.join(`
6
- `),diagnostic:s(e)};let m=p(t?.outcome),k=H(t?.task),d=p(k?.status),h=p(k?.prUrl)??p(t?.prUrl);if(u&&u>=200&&u<300)i.push("Outcome: completion callback accepted by AgentOS."),m&&i.push(`Routing: ${m.replace(/_/g," ")}`),d&&i.push(`AgentOS task status: ${d}`),h&&i.push(`PR: ${h}`),i.push("Next: check Command Center for review scheduling or blockers.");else{i.push(`Outcome: completion failed${u!=null?` (HTTP ${u})`:""}.`);let g=p(t?.detail)??p(t?.error);g&&i.push(`Blocker: ${g}`),i.push("Next: fix the reported blocker and replay completion from the board.")}return{primary:i.join(`
7
- `),diagnostic:s(e)}}function y(e){return typeof e=="string"&&e.trim()?e.trim():null}function j(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function f(e){let r=j(e);if(!r)return!1;let o=y(r.runId),n=y(r.worker);return!o||!n?!1:typeof r.pid=="number"||typeof r.worktreePath=="string"||typeof r.workerDir=="string"}function O(e){let r=e.trim();if(!r)return null;let o=w(r);if(o!==null&&f(o))return o;let n=/\{[\s\S]*?\}/g,a;for(;(a=n.exec(r))!==null;){let u=w(a[0]);if(u!==null&&f(u))return u}return null}function b(e){let r=j(e);if(!r||!f(r))return{primary:"Harness worker start completed on the runner.",diagnostic:s(e)};let o=y(r.worker)??"worker",n=y(r.runId),a=y(r.branch),u=typeof r.pid=="number"?r.pid:null,t=[];return t.push(`Harness worker ${o}${n?` started on run ${n}`:" started"}.`),typeof u=="number"&&t.push(`PID: ${u}`),a&&t.push(`Branch: ${a}`),t.push("The worker is running in the background on the runner host."),{primary:t.join(`
8
- `),diagnostic:s(e)}}function l(e){return typeof e=="string"&&e.trim()?e.trim():null}function A(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function T(e){let r=A(e);return r?l(r.prUrl)??l(r.pr):null}function R(e){let r=A(e);if(!r)return{primary:"Harness worker status unavailable.",diagnostic:s(e)};let o=l(r.worker)??l(r.name)??"worker",n=l(r.runId),a=l(r.status)??"unknown",u=r.alive===!0,t=A(r.attention),i=l(t?.state)??l(r.attentionState),m=l(t?.reason)??l(r.attentionReason),k=l(r.taskId),d=l(r.prUrl)??T(r.finalResult),h=l(r.branch),g=l(r.headCommit),c=[];return c.push(`Harness worker ${o}${n?` (${n})`:""}`),c.push(`Process: ${u?"running":"stopped"} \xB7 harness status: ${a}`),i&&c.push(m?`Attention: ${i} \u2014 ${m}`:`Attention: ${i}`),k&&c.push(`AgentOS task: ${k}`),d&&c.push(`PR: ${d}`),h&&c.push(`Branch: ${h}`),g&&c.push(`Commit: ${g.slice(0,12)}`),a==="done"||a==="exited"?c.push(d?"Outcome: worker finished \u2014 open the PR or check Command Center for review routing.":"Outcome: worker finished \u2014 check Command Center for task status and next action."):i==="blocked"||i==="needs_attention"?c.push("Next: resolve the blocker on the board or wait for the monitor to auto-complete when terminal."):u&&c.push("Next: wait for completion or poll again; background monitor will auto-complete when eligible."),{primary:c.join(`
9
- `),diagnostic:s(e)}}var W="\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Diagnostic (JSON) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500";function I(e){return e.diagnostic?.trim()?`${e.primary}
1
+ function f(e){let t=e.trim();if(!t.startsWith("{")&&!t.startsWith("["))return null;try{return JSON.parse(t)}catch{return null}}function u(e,t=2400){if(e==null)return;let n=(typeof e=="string"?e:JSON.stringify(e,null,2)).trim();if(n)return n.length<=t?n:`${n.slice(0,t-1).trimEnd()}\u2026`}function k(e){let t=e.trim();if(!t)return null;let o=f(t);if(o!==null)return o;for(let n of t.split(`
2
+ `)){let s=f(n);if(s!==null)return s}return null}function O(e){let t=[];switch(t.push(`Background auto-complete \xB7 ${e.runId} / ${e.worker}`),e.outcome){case"completed":t.push("Outcome: harness completion posted to AgentOS successfully."),t.push("AgentOS task should close or advance to review per completion routing."),t.push("Next: check Command Center \u2014 no manual complete needed unless the board still shows running.");break;case"blocked":t.push(`Outcome: worker finished but completion was blocked${e.httpStatus?` (HTTP ${e.httpStatus})`:""}.`),e.reason&&t.push(`Blocker: ${e.reason}`),t.push("Next: fix the blocker (auth, landing gate, dirty worktree) and replay completion from Command Center.");break;case"timed_out":t.push(`Outcome: monitor gave up waiting \u2014 ${e.reason??"worker did not finish in time"}.`),t.push("Next: inspect the worker process/logs; stop or unblock the worker, then retry auto-complete.");break;case"missing_link":t.push(`Outcome: cannot complete \u2014 ${e.reason??"worker missing agentOsId/taskId"}.`),t.push("Next: re-dispatch with board linkage or run `kynver worker complete` with --agent-os-id.");break;default:t.push(`Outcome: ${e.outcome}`)}return{primary:t.join(`
3
+ `),diagnostic:u(e)}}function x(e){let t=[],o=typeof e.monitorId=="string"?e.monitorId:void 0;if(t.push(o?`Harness monitor tick \xB7 ${e.runId} (${o})`:`Harness monitor tick \xB7 ${e.runId}`),!e.workers.length)return t.push("No workers in scope for this poll."),{primary:t.join(`
4
+ `),diagnostic:u(e)};for(let r of e.workers){let i=r.autoComplete.eligible?"eligible for auto-complete":"not auto-completing",d=r.autoComplete.blockers.length>0?` (${r.autoComplete.blockers.slice(0,2).join("; ")})`:"";t.push(`\u2022 ${r.worker}: ${r.workerStatus}, ${r.health}${r.healthReason?` \u2014 ${r.healthReason}`:""}; ${i}${d}`),r.taskStatus&&t.push(` Board task: ${r.taskStatus}${r.leaseOwner?` (lease: ${r.leaseOwner})`:""}`)}let n=e.autoCompleted?.filter(r=>r.outcome==="completed"&&r.ok)??[],s=e.autoCompleted?.filter(r=>!r.ok&&r.outcome!=="skipped")??[];n.length&&t.push(`Auto-completed: ${n.map(r=>r.worker).join(", ")} \u2014 AgentOS completion should be posted.`),s.length&&t.push(`Auto-complete blocked: ${s.map(r=>`${r.worker}${r.reason?` (${r.reason})`:""}`).join("; ")}`),e.leaseRenewal?.failed?.length&&t.push(`Lease renew failed for: ${e.leaseRenewal.failed.map(r=>r.worker).join(", ")}`);let a=e.workers.length>0&&e.workers.every(r=>r.autoComplete.terminalVerified)&&(e.autoCompleted?.every(r=>r.ok||r.outcome==="skipped")??!0);return t.push(a?"Next: monitor loop should stop \u2014 all workers terminal and handled.":"Next: monitor will poll again until workers are terminal-verified or max time elapses."),{primary:t.join(`
5
+ `),diagnostic:u(e)}}function j(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function m(e){return typeof e=="string"&&e.trim()?e.trim():null}function I(e){let t=j(e);if(!t)return{primary:"Harness worker complete finished with no parseable result.",diagnostic:u(e)};let o=m(t.worker)??"worker",n=m(t.runId),s=m(t.status)==="skipped",a=typeof t.httpStatus=="number"?t.httpStatus:null,r=j(t.response),i=[];if(i.push(`Harness worker complete \xB7 ${o}${n?` (${n})`:""}`),s)return i.push(`Outcome: skipped \u2014 ${m(t.reason)??"worker not finished yet"}.`),i.push("Next: wait for the worker to exit or post a finalResult, then retry complete."),{primary:i.join(`
6
+ `),diagnostic:u(e)};let d=m(r?.outcome),l=j(r?.task),h=m(l?.status),w=m(l?.prUrl)??m(r?.prUrl);if(a&&a>=200&&a<300)i.push("Outcome: completion callback accepted by AgentOS."),d&&i.push(`Routing: ${d.replace(/_/g," ")}`),h&&i.push(`AgentOS task status: ${h}`),w&&i.push(`PR: ${w}`),i.push("Next: check Command Center for review scheduling or blockers.");else{i.push(`Outcome: completion failed${a!=null?` (HTTP ${a})`:""}.`);let y=m(r?.detail)??m(r?.error);y&&i.push(`Blocker: ${y}`),i.push("Next: fix the reported blocker and replay completion from the board.")}return{primary:i.join(`
7
+ `),diagnostic:u(e)}}function R(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function B(e){if(!e)return"";let t=typeof e.freeMemBytes=="number"?e.freeMemBytes:null,o=typeof e.memReserveBytes=="number"?e.memReserveBytes:null;if(t===null||o===null)return"";let n=Math.round(t/1024/1024),s=Math.round(o/1024/1024);return` (~${n}MB free vs ${s}MB reserve)`}var $=" No harness worker was started \u2014 report this failure to the user and do not implement the coding task inline.";function A(e){let t=R(e);return t?!!(t.skipped===!0||t.action==="dispatch"||typeof t.runId=="string"&&(t.outcomes!==void 0||Array.isArray(t.skipped))||t.dryRun===!1&&typeof t.startedCount=="number"):!1}function b(e){let t=R(e);if(!t||!A(t))return null;if(t.ok===!1&&typeof t.error=="string"&&t.error.trim())return{failed:!0,message:`Worker dispatch failed: ${t.error.trim()}${$}`};if(t.skipped===!0){let o=typeof t.reason=="string"&&t.reason.trim()?t.reason.trim():"no resource slots",n=B(R(t.resourceGate));return{failed:!0,message:`Worker dispatch blocked: ${o}${n}.${$}`}}if(t.dryRun===!1){let o=typeof t.startedCount=="number"?t.startedCount:null,n=Array.isArray(t.outcomes)?t.outcomes:[];if(o===0){let s=n.map(l=>R(l)).find(l=>l&&l.started!==!0&&l.nonFatal!==!0),a=s&&typeof s.error=="string"&&s.error.trim()?s.error.trim():null,r=Array.isArray(t.skipped)?R(t.skipped[0]):null,i=r&&typeof r.skipReason=="string"?r.skipReason:null;return{failed:!0,message:`Worker dispatch failed: ${a??i??"dispatch started 0 workers"}.${$}`}}}return null}function T(e){let t=e.trim();if(!t)return null;let o=t.match(/run dispatch failed:\s*(.+?)(?:\n|$)/i);if(o?.[1]?.trim())return{failed:!0,message:`Worker dispatch failed: ${o[1].trim()}${$}`};let n=t.match(/run\s+\S+\s+is bound to runner\s+"([^"]+)"\s+but this host is\s+"([^"]+)"/i);if(n)return{failed:!0,message:`Worker dispatch refused: active run is bound to ${n[1]} but this box is ${n[2]}.${$}`};let s=f(t);if(s!==null){let r=b(s);if(r)return r}let a=k(t);if(a!==null){let r=b(a);if(r)return r}return null}function S(e){return{primary:e.message}}function N(e){return typeof e=="string"&&e.trim()?e.trim():null}function F(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function g(e){let t=F(e);if(!t)return!1;let o=N(t.runId),n=N(t.worker);return!o||!n?!1:typeof t.pid=="number"||typeof t.worktreePath=="string"||typeof t.workerDir=="string"}function W(e){let t=e.trim();if(!t)return null;let o=f(t);if(o!==null&&g(o))return o;let n=/\{[\s\S]*?\}/g,s;for(;(s=n.exec(t))!==null;){let a=f(s[0]);if(a!==null&&g(a))return a}return null}function H(e){let t=F(e);if(!t||!g(t))return{primary:"Harness worker start completed on the runner.",diagnostic:u(e)};let o=N(t.worker)??"worker",n=N(t.runId),s=N(t.branch),a=typeof t.pid=="number"?t.pid:null,r=[];return r.push(`Harness worker ${o}${n?` started on run ${n}`:" started"}.`),typeof a=="number"&&r.push(`PID: ${a}`),s&&r.push(`Branch: ${s}`),r.push("The worker is running in the background on the runner host."),{primary:r.join(`
8
+ `),diagnostic:u(e)}}function c(e){return typeof e=="string"&&e.trim()?e.trim():null}function D(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function P(e){let t=D(e);return t?c(t.prUrl)??c(t.pr):null}function C(e){let t=D(e);if(!t)return{primary:"Harness worker status unavailable.",diagnostic:u(e)};let o=c(t.worker)??c(t.name)??"worker",n=c(t.runId),s=c(t.status)??"unknown",a=t.alive===!0,r=D(t.attention),i=c(r?.state)??c(t.attentionState),d=c(r?.reason)??c(t.attentionReason),l=c(t.taskId),h=c(t.prUrl)??P(t.finalResult),w=c(t.branch),y=c(t.headCommit),p=[];return p.push(`Harness worker ${o}${n?` (${n})`:""}`),p.push(`Process: ${a?"running":"stopped"} \xB7 harness status: ${s}`),i&&p.push(d?`Attention: ${i} \u2014 ${d}`:`Attention: ${i}`),l&&p.push(`AgentOS task: ${l}`),h&&p.push(`PR: ${h}`),w&&p.push(`Branch: ${w}`),y&&p.push(`Commit: ${y.slice(0,12)}`),s==="done"||s==="exited"?p.push(h?"Outcome: worker finished \u2014 open the PR or check Command Center for review routing.":"Outcome: worker finished \u2014 check Command Center for task status and next action."):i==="blocked"||i==="needs_attention"?p.push("Next: resolve the blocker on the board or wait for the monitor to auto-complete when terminal."):a&&p.push("Next: wait for completion or poll again; background monitor will auto-complete when eligible."),{primary:p.join(`
9
+ `),diagnostic:u(e)}}var _="\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Diagnostic (JSON) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500";function M(e){return e.diagnostic?.trim()?`${e.primary}
10
10
 
11
- ${W}
12
- ${e.diagnostic}`:e.primary}function J(e){let r=[`Harness ${e.scope} ${e.action} failed.`];e.timedOut?r.push("Reason: command timed out on the runner host."):e.error?r.push(`Reason: ${e.error}`):e.exitCode!=null&&r.push(`Exit code: ${e.exitCode}`);let o=e.stderr.trim();o&&r.push(`Stderr: ${o.split(`
13
- `).slice(-3).join(" ")}`),r.push("Next: retry on the runner host or inspect harness logs.");let n=$(e.stdout);return{primary:r.join(`
14
- `),diagnostic:s(n??{stdout:e.stdout,stderr:e.stderr})}}function x(e){if(!e.ok)return J(e);let r=$(e.stdout);if(r===null){let o=e.stdout.trim()||e.stderr.trim()||"(no output)";return{primary:`Harness ${e.scope} ${e.action} finished.
15
- ${o.slice(0,800)}`,diagnostic:s({stdout:e.stdout,stderr:e.stderr})}}if(e.scope==="worker"&&e.action==="start"&&f(r))return b(r);if(e.scope==="worker"&&e.action==="status")return R(r);if(e.scope==="worker"&&e.action==="complete")return C(r);if(e.scope==="monitor"&&(e.action==="tick"||e.action==="run-loop"))return S(r);if(e.scope==="monitor"&&e.action==="auto-complete"){let o=r;if(o.outcome&&o.worker&&o.runId)return N(r);if(Array.isArray(o.blockers))return{primary:[`Monitor auto-complete blocked \xB7 ${o.runId??"run"} / ${o.worker??"worker"}`,`Blockers: ${o.blockers.join("; ")}`,"Next: resolve blockers on the runner, then retry auto-complete."].join(`
16
- `),diagnostic:s(r)}}if(e.scope==="run"&&e.action==="status"){let o=r.workers;return Array.isArray(o)&&o.length===1?R(o[0]):{primary:`Harness run status \xB7 ${r.runId??"run"} (${Array.isArray(o)?o.length:0} workers).`,diagnostic:s(r)}}return{primary:`Harness ${e.scope} ${e.action} completed successfully on the runner.`,diagnostic:s(r)}}export{O as extractWorkerStartRecordFromText,x as formatHarnessToolReadable,b as formatWorkerStartNotice,I as joinHarnessNotice};
11
+ ${_}
12
+ ${e.diagnostic}`:e.primary}function E(e){let t=[`Harness ${e.scope} ${e.action} failed.`];e.timedOut?t.push("Reason: command timed out on the runner host."):e.error?t.push(`Reason: ${e.error}`):e.exitCode!=null&&t.push(`Exit code: ${e.exitCode}`);let o=e.stderr.trim();o&&t.push(`Stderr: ${o.split(`
13
+ `).slice(-3).join(" ")}`),t.push("Next: retry on the runner host or inspect harness logs.");let n=k(e.stdout);return{primary:t.join(`
14
+ `),diagnostic:u(n??{stdout:e.stdout,stderr:e.stderr})}}function J(e){if(!e.ok)return E(e);let t=k(e.stdout);if(t===null){let o=e.stdout.trim()||e.stderr.trim()||"(no output)";return{primary:`Harness ${e.scope} ${e.action} finished.
15
+ ${o.slice(0,800)}`,diagnostic:u({stdout:e.stdout,stderr:e.stderr})}}if(e.scope==="worker"&&e.action==="start"&&g(t))return H(t);if(e.scope==="worker"&&e.action==="status")return C(t);if(e.scope==="worker"&&e.action==="complete")return I(t);if(e.scope==="monitor"&&(e.action==="tick"||e.action==="run-loop"))return x(t);if(e.scope==="monitor"&&e.action==="auto-complete"){let o=t;if(o.outcome&&o.worker&&o.runId)return O(t);if(Array.isArray(o.blockers))return{primary:[`Monitor auto-complete blocked \xB7 ${o.runId??"run"} / ${o.worker??"worker"}`,`Blockers: ${o.blockers.join("; ")}`,"Next: resolve blockers on the runner, then retry auto-complete."].join(`
16
+ `),diagnostic:u(t)}}if(e.scope==="run"&&e.action==="dispatch"&&A(t)){let o=b(t);if(o?.failed)return S(o)}if(e.scope==="run"&&e.action==="status"){let o=t.workers;return Array.isArray(o)&&o.length===1?C(o[0]):{primary:`Harness run status \xB7 ${t.runId??"run"} (${Array.isArray(o)?o.length:0} workers).`,diagnostic:u(t)}}return{primary:`Harness ${e.scope} ${e.action} completed successfully on the runner.`,diagnostic:u(t)}}export{T as extractRunDispatchOutcomeFromText,W as extractWorkerStartRecordFromText,J as formatHarnessToolReadable,S as formatRunDispatchFailureNotice,H as formatWorkerStartNotice,M as joinHarnessNotice};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kynver-app/runtime",
3
- "version": "0.2.68",
3
+ "version": "0.2.69",
4
4
  "description": "Kynver AgentOS local execution runtime and CLI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",