wherdr 1.3.0 → 1.3.2
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/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{BB3uOVbO.js → 8ksjcuDu.js} +51 -41
- package/.output/public/_nuxt/{AgentView.DE2GDt4O.css → AgentView.C4YOwvZG.css} +1 -1
- package/.output/public/_nuxt/B7QP1TFs.js +23 -0
- package/.output/public/_nuxt/{Bta8at9w.js → BOpBIziZ.js} +2 -2
- package/.output/public/_nuxt/BWXdFfeg.js +17 -0
- package/.output/public/_nuxt/COFCNFpG.js +83 -0
- package/.output/public/_nuxt/{C3BWhslt.js → Cd8j9O5w.js} +1 -1
- package/.output/public/_nuxt/CkZ8t6uB.js +1 -0
- package/.output/public/_nuxt/{OAXEskzA.js → D4Yz4rat.js} +4 -4
- package/.output/public/_nuxt/{C3P2P5Mv.js → D7sxNXx1.js} +1 -1
- package/.output/public/_nuxt/DViwOclv.js +1 -0
- package/.output/public/_nuxt/DoD7Qb5P.js +30 -0
- package/.output/public/_nuxt/DyBZDSCV.js +2 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/7afbf062-5369-4002-b20d-7a582ff6e0f1.json +1 -0
- package/.output/public/_nuxt/{entry.SHBiCXBL.css → entry.Crt1r4l3.css} +1 -1
- package/.output/public/_nuxt/hePW80VL.js +1 -0
- package/.output/public/sw.js +1 -1
- package/.output/server/chunks/_/branding.mjs +1 -1
- package/.output/server/chunks/_/package.mjs +96 -0
- package/.output/server/chunks/_/plugins.mjs +11 -3
- package/.output/server/chunks/_/projectBoard.mjs +1 -1
- package/.output/server/chunks/_/projectsPlugin.mjs +1 -1
- package/.output/server/chunks/_/selfupdate.mjs +82 -0
- package/.output/server/chunks/_/updates.mjs +50 -0
- package/.output/server/chunks/_/worktrees.mjs +1 -1
- package/.output/server/chunks/_/ws.mjs +1 -1
- package/.output/server/chunks/nitro/nitro.mjs +1728 -917
- package/.output/server/chunks/raw/bump-homebrew.mjs +7 -0
- package/.output/server/chunks/raw/herdr-plugin.mjs +1 -1
- package/.output/server/chunks/routes/api/_..._.mjs +5 -1
- package/.output/server/chunks/routes/api/agents.post.mjs +5 -1
- package/.output/server/chunks/routes/api/ask-tab.post.mjs +5 -1
- package/.output/server/chunks/routes/api/attach.post.mjs +5 -1
- package/.output/server/chunks/routes/api/auth/disable.post.mjs +5 -1
- package/.output/server/chunks/routes/api/auth/lock-all.post.mjs +5 -1
- package/.output/server/chunks/routes/api/auth/lock.post.mjs +5 -1
- package/.output/server/chunks/routes/api/auth/login/options.post.mjs +5 -1
- package/.output/server/chunks/routes/api/auth/login/verify.post.mjs +5 -1
- package/.output/server/chunks/routes/api/auth/max-session.post.mjs +5 -1
- package/.output/server/chunks/routes/api/auth/register/options.post.mjs +5 -1
- package/.output/server/chunks/routes/api/auth/register/verify.post.mjs +5 -1
- package/.output/server/chunks/routes/api/auth/status.get.mjs +5 -1
- package/.output/server/chunks/routes/api/changes.get.mjs +5 -1
- package/.output/server/chunks/routes/api/chat/image.get.mjs +5 -1
- package/.output/server/chunks/routes/api/chat.get.mjs +5 -1
- package/.output/server/chunks/routes/api/choose.post.mjs +5 -1
- package/.output/server/chunks/routes/api/claude-statusline.post.mjs +5 -1
- package/.output/server/chunks/routes/api/close/status.get.mjs +5 -1
- package/.output/server/chunks/routes/api/close.post.mjs +5 -1
- package/.output/server/chunks/routes/api/codex-update.post.mjs +5 -1
- package/.output/server/chunks/routes/api/commands.get.mjs +5 -1
- package/.output/server/chunks/routes/api/config.get.mjs +5 -1
- package/.output/server/chunks/routes/api/dirs.get.mjs +5 -1
- package/.output/server/chunks/routes/api/dismiss.post.mjs +5 -1
- package/.output/server/chunks/routes/api/effort.post.mjs +5 -1
- package/.output/server/chunks/routes/api/efforts.get.mjs +5 -1
- package/.output/server/chunks/routes/api/file.post.mjs +5 -1
- package/.output/server/chunks/routes/api/gitroot.get.mjs +5 -1
- package/.output/server/chunks/routes/api/health.get.mjs +36 -0
- package/.output/server/chunks/routes/api/index.get.mjs +5 -1
- package/.output/server/chunks/routes/api/input.post.mjs +5 -1
- package/.output/server/chunks/routes/api/interrupt.post.mjs +5 -1
- package/.output/server/chunks/routes/api/isgit.get.mjs +5 -1
- package/.output/server/chunks/routes/api/machine/awake.get.mjs +5 -1
- package/.output/server/chunks/routes/api/machine/awake.post.mjs +5 -1
- package/.output/server/chunks/routes/api/machine/order.get.mjs +5 -1
- package/.output/server/chunks/routes/api/machine/order.post.mjs +5 -1
- package/.output/server/chunks/routes/api/machine/rename.post.mjs +5 -1
- package/.output/server/chunks/routes/api/menu.post.mjs +5 -1
- package/.output/server/chunks/routes/api/model.post.mjs +5 -1
- package/.output/server/chunks/routes/api/models.get.mjs +5 -1
- package/.output/server/chunks/routes/api/nav.post.mjs +5 -1
- package/.output/server/chunks/routes/api/onboarding.get.mjs +5 -1
- package/.output/server/chunks/routes/api/onboarding.post.mjs +5 -1
- package/.output/server/chunks/routes/api/phone.get.mjs +5 -6
- package/.output/server/chunks/routes/api/phone.post.mjs +5 -6
- package/.output/server/chunks/routes/api/plugins/actions.get.mjs +5 -1
- package/.output/server/chunks/routes/api/plugins/invoke.post.mjs +5 -1
- package/.output/server/chunks/routes/api/plugins/profiles.get.mjs +5 -1
- package/.output/server/chunks/routes/api/plugins/projects.get.mjs +5 -1
- package/.output/server/chunks/routes/api/plugins/projects.post.mjs +5 -1
- package/.output/server/chunks/routes/api/plugins/thread-limits.get.mjs +6 -2
- package/.output/server/chunks/routes/api/plugins/thread-limits.post.mjs +6 -2
- package/.output/server/chunks/routes/api/project/report.get.mjs +5 -1
- package/.output/server/chunks/routes/api/prompt.post.mjs +6 -2
- package/.output/server/chunks/routes/api/push/quiet.post.mjs +6 -2
- package/.output/server/chunks/routes/api/push/subscribe.post.mjs +6 -2
- package/.output/server/chunks/routes/api/push/test.post.mjs +6 -2
- package/.output/server/chunks/routes/api/push/unsubscribe.post.mjs +6 -2
- package/.output/server/chunks/routes/api/quotas.get.mjs +6 -2
- package/.output/server/chunks/routes/api/rename.post.mjs +5 -1
- package/.output/server/chunks/routes/api/requeue.post.mjs +6 -2
- package/.output/server/chunks/routes/api/restart.get.mjs +5 -1
- package/.output/server/chunks/routes/api/restart.post.mjs +5 -1
- package/.output/server/chunks/routes/api/reveal.post.mjs +5 -1
- package/.output/server/chunks/routes/api/screen-key.post.mjs +6 -2
- package/.output/server/chunks/routes/api/screen.get.mjs +12 -6
- package/.output/server/chunks/routes/api/search.get.mjs +6 -2
- package/.output/server/chunks/routes/api/seen.post.mjs +6 -2
- package/.output/server/chunks/routes/api/sessions.get.mjs +6 -2
- package/.output/server/chunks/routes/api/sessions.post.mjs +6 -2
- package/.output/server/chunks/routes/api/space.post.mjs +6 -2
- package/.output/server/chunks/routes/api/state.get.mjs +6 -2
- package/.output/server/chunks/routes/api/unqueue.post.mjs +6 -2
- package/.output/server/chunks/routes/api/update/status.get.mjs +38 -0
- package/.output/server/chunks/routes/api/update.get.mjs +11 -50
- package/.output/server/chunks/routes/api/update.post.mjs +41 -0
- package/.output/server/chunks/routes/api/upload.post.mjs +5 -1
- package/.output/server/chunks/routes/api/worktrees/remove.post.mjs +5 -1
- package/.output/server/chunks/routes/api/worktrees.get.mjs +5 -1
- package/.output/server/chunks/routes/favicon.ico.get.mjs +5 -1
- package/.output/server/chunks/routes/icons/_name_.get.mjs +6 -2
- package/.output/server/chunks/routes/renderer.mjs +7 -3
- package/.output/server/chunks/routes/uploads/_...name_.get.mjs +6 -2
- package/.output/server/chunks/routes/ws/_..._.mjs +6 -2
- package/.output/server/chunks/routes/ws/events.mjs +6 -2
- package/.output/server/chunks/routes/ws/mirror.mjs +6 -2
- package/.output/server/chunks/routes/ws/term.mjs +8 -4
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/index.mjs +6 -2
- package/.output/server/package.json +1 -1
- package/README.md +216 -45
- package/bin/lib/brew.mjs +86 -0
- package/bin/lib/commands.mjs +74 -16
- package/bin/lib/core.mjs +23 -3
- package/bin/lib/tailnet.d.mts +12 -3
- package/bin/lib/tailnet.mjs +103 -25
- package/bin/lib/updater.mjs +267 -0
- package/package.json +2 -1
- package/.output/public/_nuxt/01adBkx4.js +0 -1
- package/.output/public/_nuxt/BJsf0WRn.js +0 -2
- package/.output/public/_nuxt/BpQH8Ho1.js +0 -1
- package/.output/public/_nuxt/Cc2bsOcu.js +0 -83
- package/.output/public/_nuxt/DKmoLFfn.js +0 -30
- package/.output/public/_nuxt/DLLQgP0d.js +0 -1
- package/.output/public/_nuxt/DcCZr0Ya.js +0 -17
- package/.output/public/_nuxt/DsD2R-37.js +0 -23
- package/.output/public/_nuxt/builds/meta/ff11fc8b-1e70-4261-a76e-a52155efb196.json +0 -1
- package/.output/server/chunks/_/phone.mjs +0 -343
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,o)=>(o=n==null?{}:e(i(n)),c(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));export{s as n,l as r,o as t};
|
package/.output/public/sw.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
var sw = self;
|
|
16
16
|
var CACHE = "wherdr-v1";
|
|
17
17
|
var NETWORK_WAIT_MS = 3e3;
|
|
18
|
-
var PRECACHE = ["/", ...[{"revision":"e6a852ba6e2a724d2255af526cb04083","url":"manifest.webmanifest"},{"revision":"b1a14fab8c06784649bf26c636747a86","url":"manifest-en.webmanifest"},{"revision":null,"url":"_nuxt/yzABg5xl.js"},{"revision":null,"url":"_nuxt/wherdr-symbols.C1LsPKmg.woff2"},{"revision":null,"url":"_nuxt/wherdr-nerd-powerline.B_kAMxXr.woff2"},{"revision":null,"url":"_nuxt/wherdr-nerd-octicons.Hl4VEx8m.woff2"},{"revision":null,"url":"_nuxt/wherdr-nerd-material-4.CO_PudDR.woff2"},{"revision":null,"url":"_nuxt/wherdr-nerd-material-3.8xz7iX-Y.woff2"},{"revision":null,"url":"_nuxt/wherdr-nerd-material-2.C_flbBWO.woff2"},{"revision":null,"url":"_nuxt/wherdr-nerd-material-1.BdvqkCqW.woff2"},{"revision":null,"url":"_nuxt/wherdr-nerd-extension.Dai_ky39.woff2"},{"revision":null,"url":"_nuxt/wherdr-nerd-devicons.ZMSFX1sW.woff2"},{"revision":null,"url":"_nuxt/wherdr-nerd-codicons.CtEsfSAf.woff2"},{"revision":null,"url":"_nuxt/wherdr-nerd-awesome.DQ3_iAfa.woff2"},{"revision":null,"url":"_nuxt/jetbrains-mono-vietnamese-wght-normal.Bt-aOZkq.woff2"},{"revision":null,"url":"_nuxt/jetbrains-mono-latin-wght-normal.B9CIFXIH.woff2"},{"revision":null,"url":"_nuxt/jetbrains-mono-latin-ext-wght-normal.DBQx-q_a.woff2"},{"revision":null,"url":"_nuxt/jetbrains-mono-greek-wght-normal.Bw9x6K1M.woff2"},{"revision":null,"url":"_nuxt/jetbrains-mono-cyrillic-wght-normal.D73BlboJ.woff2"},{"revision":null,"url":"_nuxt/inter-vietnamese-wght-normal.CBcvBZtf.woff2"},{"revision":null,"url":"_nuxt/inter-latin-wght-normal.Dx4kXJAl.woff2"},{"revision":null,"url":"_nuxt/inter-latin-ext-wght-normal.DO1Apj_S.woff2"},{"revision":null,"url":"_nuxt/inter-greek-wght-normal.CkhJZR-_.woff2"},{"revision":null,"url":"_nuxt/inter-greek-ext-wght-normal.DlzME5K_.woff2"},{"revision":null,"url":"_nuxt/inter-cyrillic-wght-normal.DqGufNeO.woff2"},{"revision":null,"url":"_nuxt/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2"},{"revision":null,"url":"_nuxt/error-500.Bwd7zAaE.css"},{"revision":null,"url":"_nuxt/error-404.Bb87HomL.css"},{"revision":null,"url":"_nuxt/entry.
|
|
18
|
+
var PRECACHE = ["/", ...[{"revision":"e6a852ba6e2a724d2255af526cb04083","url":"manifest.webmanifest"},{"revision":"b1a14fab8c06784649bf26c636747a86","url":"manifest-en.webmanifest"},{"revision":null,"url":"_nuxt/yzABg5xl.js"},{"revision":null,"url":"_nuxt/wherdr-symbols.C1LsPKmg.woff2"},{"revision":null,"url":"_nuxt/wherdr-nerd-powerline.B_kAMxXr.woff2"},{"revision":null,"url":"_nuxt/wherdr-nerd-octicons.Hl4VEx8m.woff2"},{"revision":null,"url":"_nuxt/wherdr-nerd-material-4.CO_PudDR.woff2"},{"revision":null,"url":"_nuxt/wherdr-nerd-material-3.8xz7iX-Y.woff2"},{"revision":null,"url":"_nuxt/wherdr-nerd-material-2.C_flbBWO.woff2"},{"revision":null,"url":"_nuxt/wherdr-nerd-material-1.BdvqkCqW.woff2"},{"revision":null,"url":"_nuxt/wherdr-nerd-extension.Dai_ky39.woff2"},{"revision":null,"url":"_nuxt/wherdr-nerd-devicons.ZMSFX1sW.woff2"},{"revision":null,"url":"_nuxt/wherdr-nerd-codicons.CtEsfSAf.woff2"},{"revision":null,"url":"_nuxt/wherdr-nerd-awesome.DQ3_iAfa.woff2"},{"revision":null,"url":"_nuxt/jetbrains-mono-vietnamese-wght-normal.Bt-aOZkq.woff2"},{"revision":null,"url":"_nuxt/jetbrains-mono-latin-wght-normal.B9CIFXIH.woff2"},{"revision":null,"url":"_nuxt/jetbrains-mono-latin-ext-wght-normal.DBQx-q_a.woff2"},{"revision":null,"url":"_nuxt/jetbrains-mono-greek-wght-normal.Bw9x6K1M.woff2"},{"revision":null,"url":"_nuxt/jetbrains-mono-cyrillic-wght-normal.D73BlboJ.woff2"},{"revision":null,"url":"_nuxt/inter-vietnamese-wght-normal.CBcvBZtf.woff2"},{"revision":null,"url":"_nuxt/inter-latin-wght-normal.Dx4kXJAl.woff2"},{"revision":null,"url":"_nuxt/inter-latin-ext-wght-normal.DO1Apj_S.woff2"},{"revision":null,"url":"_nuxt/inter-greek-wght-normal.CkhJZR-_.woff2"},{"revision":null,"url":"_nuxt/inter-greek-ext-wght-normal.DlzME5K_.woff2"},{"revision":null,"url":"_nuxt/inter-cyrillic-wght-normal.DqGufNeO.woff2"},{"revision":null,"url":"_nuxt/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2"},{"revision":null,"url":"_nuxt/hePW80VL.js"},{"revision":null,"url":"_nuxt/error-500.Bwd7zAaE.css"},{"revision":null,"url":"_nuxt/error-404.Bb87HomL.css"},{"revision":null,"url":"_nuxt/entry.Crt1r4l3.css"},{"revision":null,"url":"_nuxt/bLP7Jj-b.js"},{"revision":null,"url":"_nuxt/archivo-vietnamese-wght-normal.XAtsl5Q_.woff2"},{"revision":null,"url":"_nuxt/archivo-latin-wght-normal.E0tuGl4L.woff2"},{"revision":null,"url":"_nuxt/archivo-latin-ext-wght-normal.C4zznr8T.woff2"},{"revision":null,"url":"_nuxt/SiL1FJ5s.js"},{"revision":null,"url":"_nuxt/DyBZDSCV.js"},{"revision":null,"url":"_nuxt/DoD7Qb5P.js"},{"revision":null,"url":"_nuxt/DViwOclv.js"},{"revision":null,"url":"_nuxt/D7sxNXx1.js"},{"revision":null,"url":"_nuxt/D4Yz4rat.js"},{"revision":null,"url":"_nuxt/CkZ8t6uB.js"},{"revision":null,"url":"_nuxt/Ci8N4mWR.js"},{"revision":null,"url":"_nuxt/Cd8j9O5w.js"},{"revision":null,"url":"_nuxt/CXG-cOdh.js"},{"revision":null,"url":"_nuxt/CWwyK2XK.js"},{"revision":null,"url":"_nuxt/COFCNFpG.js"},{"revision":null,"url":"_nuxt/Bd17z0YL.js"},{"revision":null,"url":"_nuxt/BWXdFfeg.js"},{"revision":null,"url":"_nuxt/BOpBIziZ.js"},{"revision":null,"url":"_nuxt/BDNMzG2s.js"},{"revision":null,"url":"_nuxt/B7QP1TFs.js"},{"revision":null,"url":"_nuxt/AgentView.C4YOwvZG.css"},{"revision":null,"url":"_nuxt/8ksjcuDu.js"},{"revision":"1292385bc85e7918dcd3f376296d99dc","url":"_nuxt/builds/latest.json"},{"revision":null,"url":"_nuxt/builds/meta/7afbf062-5369-4002-b20d-7a582ff6e0f1.json"}].map((e) => "/" + (typeof e === "string" ? e : e.url).replace(/^\//, ""))];
|
|
19
19
|
sw.addEventListener("install", (e) => {
|
|
20
20
|
e.waitUntil((async () => {
|
|
21
21
|
const c = await caches.open(CACHE);
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
var name = "wherdr";
|
|
2
|
+
var version = "1.3.2";
|
|
3
|
+
var license = "MIT";
|
|
4
|
+
var type = "module";
|
|
5
|
+
var description = "Unofficial mobile web client (PWA) to drive the coding agents running in Herdr";
|
|
6
|
+
var keywords = [
|
|
7
|
+
"herdr",
|
|
8
|
+
"pwa",
|
|
9
|
+
"claude-code",
|
|
10
|
+
"codex",
|
|
11
|
+
"coding-agents",
|
|
12
|
+
"remote",
|
|
13
|
+
"mobile"
|
|
14
|
+
];
|
|
15
|
+
var homepage = "https://wherdr.dev";
|
|
16
|
+
var repository = {
|
|
17
|
+
type: "git",
|
|
18
|
+
url: "git+https://github.com/afloury/wherdr.git"
|
|
19
|
+
};
|
|
20
|
+
var bugs = "https://github.com/afloury/wherdr/issues";
|
|
21
|
+
var bin = {
|
|
22
|
+
wherdr: "bin/wherdr.mjs"
|
|
23
|
+
};
|
|
24
|
+
var files = [
|
|
25
|
+
".output",
|
|
26
|
+
"!.output/**/*.map",
|
|
27
|
+
"bin"
|
|
28
|
+
];
|
|
29
|
+
var engines = {
|
|
30
|
+
node: ">=22"
|
|
31
|
+
};
|
|
32
|
+
var scripts = {
|
|
33
|
+
dev: "nuxt dev",
|
|
34
|
+
build: "nuxt build",
|
|
35
|
+
"build:demo": "VITE_WHERDR_DEMO=1 nuxt generate",
|
|
36
|
+
start: "HOST=${HOST:-127.0.0.1} PORT=${PORT:-7683} node .output/server/index.mjs",
|
|
37
|
+
typecheck: "nuxt typecheck",
|
|
38
|
+
test: "vitest run",
|
|
39
|
+
"test:e2e": "playwright test",
|
|
40
|
+
prepare: "nuxt prepare",
|
|
41
|
+
prepack: "nuxt build && node scripts/pack-output.mjs",
|
|
42
|
+
"check:leaks": "node scripts/check-leaks.mjs",
|
|
43
|
+
"hooks:install": "git config core.hooksPath .githooks"
|
|
44
|
+
};
|
|
45
|
+
var dependencies = {
|
|
46
|
+
"qrcode-terminal": "^0.12.0"
|
|
47
|
+
};
|
|
48
|
+
var devDependencies = {
|
|
49
|
+
"@fontsource-variable/archivo": "^5.3.0",
|
|
50
|
+
"@fontsource-variable/inter": "^5.3.0",
|
|
51
|
+
"@fontsource-variable/jetbrains-mono": "^5.3.0",
|
|
52
|
+
"@iconify-json/lucide": "^1.2.136",
|
|
53
|
+
"@nuxt/test-utils": "^4.3.3",
|
|
54
|
+
"@nuxt/ui": "^4.11.2",
|
|
55
|
+
"@playwright/test": "^1.63.0",
|
|
56
|
+
"@simplewebauthn/browser": "^13.3.0",
|
|
57
|
+
"@simplewebauthn/server": "^13.3.3",
|
|
58
|
+
"@types/node": "^22.0.0",
|
|
59
|
+
"@types/web-push": "^3.6.4",
|
|
60
|
+
"@vite-pwa/nuxt": "^1.1.1",
|
|
61
|
+
"@vue/test-utils": "^2.5.1",
|
|
62
|
+
"@xterm/addon-fit": "^0.10.0",
|
|
63
|
+
"@xterm/addon-webgl": "^0.18.0",
|
|
64
|
+
"@xterm/xterm": "^5.5.0",
|
|
65
|
+
dompurify: "^3.4.16",
|
|
66
|
+
"happy-dom": "^20.14.5",
|
|
67
|
+
marked: "^15.0.12",
|
|
68
|
+
nuxt: "^4.5.2",
|
|
69
|
+
tailwindcss: "^4.3.3",
|
|
70
|
+
typescript: "~5.9.3",
|
|
71
|
+
vitest: "^4.1.11",
|
|
72
|
+
vue: "^3.5.0",
|
|
73
|
+
"vue-router": "^4.5.0",
|
|
74
|
+
"vue-tsc": "^3.0.0",
|
|
75
|
+
"web-push": "^3.6.7"
|
|
76
|
+
};
|
|
77
|
+
const pkg = {
|
|
78
|
+
name: name,
|
|
79
|
+
version: version,
|
|
80
|
+
license: license,
|
|
81
|
+
type: type,
|
|
82
|
+
description: description,
|
|
83
|
+
keywords: keywords,
|
|
84
|
+
homepage: homepage,
|
|
85
|
+
repository: repository,
|
|
86
|
+
bugs: bugs,
|
|
87
|
+
bin: bin,
|
|
88
|
+
files: files,
|
|
89
|
+
engines: engines,
|
|
90
|
+
scripts: scripts,
|
|
91
|
+
dependencies: dependencies,
|
|
92
|
+
devDependencies: devDependencies
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export { pkg as p };
|
|
96
|
+
//# sourceMappingURL=package.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { m as machineFor,
|
|
1
|
+
import { m as machineFor, aA as herdrOn, H as HerdrError, f as findPane, a5 as splitId, Q as log, ad as underHome, aj as isGitRepo, o as fmt, aB as getState, F as sleep, aC as HERDR_CHILD_ENV, V as HOME, a1 as IN_DOCKER, aD as HERDR_BIN } from '../nitro/nitro.mjs';
|
|
2
2
|
import { execFile } from 'node:child_process';
|
|
3
3
|
import { b as binaryOn } from './projectBoard.mjs';
|
|
4
4
|
import { c as cleanProjectInput, r as repoArgument, a as projectCommandArgs, b as parseProfileList, s as setupHeader, t as tickerRunning, P as PROJECT_INPUTS, d as readOnlyMessage } from './projectsActions.mjs';
|
|
@@ -31,13 +31,20 @@ function shortLabel(title, pluginName) {
|
|
|
31
31
|
const rest = title.replace(new RegExp(`^${esc}\\s*[:\xB7\u2014\u2013-]\\s*`, "i"), "").trim();
|
|
32
32
|
return rest ? rest[0].toUpperCase() + rest.slice(1) : title;
|
|
33
33
|
}
|
|
34
|
+
const isOwnPlugin = (id) => id === "wherdr" || id.endsWith(".wherdr");
|
|
35
|
+
function opensInHerdr(a) {
|
|
36
|
+
if (a.placement === "popup" || a.placement === "overlay") return true;
|
|
37
|
+
const cmd = Array.isArray(a.command) ? a.command.map(String).join(" ") : "";
|
|
38
|
+
if (/\bplugin\s+pane\s+open\b/.test(cmd)) return true;
|
|
39
|
+
return /(^|[-_:])popup($|[-_:])/i.test(String(a.action_id || ""));
|
|
40
|
+
}
|
|
34
41
|
function normalizeActions(actions, plugins = []) {
|
|
35
42
|
const byId = new Map(plugins.filter((p) => p && p.plugin_id).map((p) => [p.plugin_id, p]));
|
|
36
43
|
const out = [];
|
|
37
44
|
for (const a of actions || []) {
|
|
38
45
|
const plugin = String((a == null ? void 0 : a.plugin_id) || "");
|
|
39
46
|
const id = String((a == null ? void 0 : a.action_id) || "");
|
|
40
|
-
if (!PLUGIN_ID_RE.test(plugin) || !ACTION_ID_RE.test(id)) continue;
|
|
47
|
+
if (!PLUGIN_ID_RE.test(plugin) || !ACTION_ID_RE.test(id) || isOwnPlugin(plugin)) continue;
|
|
41
48
|
const p = byId.get(plugin);
|
|
42
49
|
if (p && p.enabled === false) continue;
|
|
43
50
|
const ctx = (Array.isArray(a.contexts) ? a.contexts : []).map(String);
|
|
@@ -56,7 +63,8 @@ function normalizeActions(actions, plugins = []) {
|
|
|
56
63
|
description,
|
|
57
64
|
agent,
|
|
58
65
|
machine,
|
|
59
|
-
confirm: needsConfirm({ id, title })
|
|
66
|
+
confirm: needsConfirm({ id, title }),
|
|
67
|
+
inHerdr: opensInHerdr(a)
|
|
60
68
|
});
|
|
61
69
|
}
|
|
62
70
|
return out.sort((x, y) => x.pluginName.localeCompare(y.pluginName) || x.label.localeCompare(y.label));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { execFile } from 'node:child_process';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import {
|
|
3
|
+
import { aE as currentMachineSlots, aF as paneBaseMachine, H as HerdrError, m as machineFor, aC as HERDR_CHILD_ENV, aD as HERDR_BIN, aA as herdrOn, aG as projectOf, aH as isProjectThread } from '../nitro/nitro.mjs';
|
|
4
4
|
|
|
5
5
|
const fold = (s) => s.normalize("NFD").replace(/[̀-ͯ]/g, "").toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
|
|
6
6
|
const KINDS = [
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { promises, constants } from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import { H as HerdrError, o as fmt,
|
|
3
|
+
import { H as HerdrError, o as fmt, aA as herdrOn } from '../nitro/nitro.mjs';
|
|
4
4
|
|
|
5
5
|
const PROJECTS_REPO = "eliasstravik/herdr-projects";
|
|
6
6
|
const PROJECTS_INSTALL_ARGS = ["plugin", "install", PROJECTS_REPO, "--yes"];
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { spawnSync, spawn } from 'node:child_process';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { p as pkg } from './package.mjs';
|
|
6
|
+
import { bh as installMode, H as HerdrError, Q as log, bi as oneTapMode, bl as updateRunning } from '../nitro/nitro.mjs';
|
|
7
|
+
import { c as checkUpdate } from './updates.mjs';
|
|
8
|
+
|
|
9
|
+
function wherdrDir(env = process.env) {
|
|
10
|
+
const home = os.homedir();
|
|
11
|
+
const dir = env.WHERDR_DIR || path.join(home, "wherdr");
|
|
12
|
+
return path.resolve(dir === "~" ? home : dir.startsWith("~/") ? path.join(home, dir.slice(2)) : dir);
|
|
13
|
+
}
|
|
14
|
+
function readJob(dir) {
|
|
15
|
+
try {
|
|
16
|
+
const job = JSON.parse(fs.readFileSync(path.join(dir, "update.json"), "utf8"));
|
|
17
|
+
return job && typeof job.state === "string" ? job : null;
|
|
18
|
+
} catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function buildPlan(o) {
|
|
23
|
+
if (!oneTapMode(o.mode)) throw new HerdrError("update_manual", "This installation cannot update itself: run the update command");
|
|
24
|
+
if (updateRunning(o.job, o.now)) throw new HerdrError("update_running", "An update is already in progress");
|
|
25
|
+
if (!o.latest || o.to !== o.latest) throw new HerdrError("update_version", "No newer version to install");
|
|
26
|
+
return {
|
|
27
|
+
kind: o.mode,
|
|
28
|
+
from: o.current,
|
|
29
|
+
to: o.latest,
|
|
30
|
+
root: o.root,
|
|
31
|
+
dir: o.dir,
|
|
32
|
+
runtime: o.runtime,
|
|
33
|
+
serverPid: o.pid,
|
|
34
|
+
port: String(o.env.NITRO_PORT || o.env.PORT || 3e3),
|
|
35
|
+
host: String(o.env.NITRO_HOST || o.env.HOST || "127.0.0.1"),
|
|
36
|
+
registry: o.env.npm_config_registry || "https://registry.npmjs.org"
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const packageRoot = () => process.env.WHERDR_ROOT || path.resolve(path.dirname(process.argv[1] || ""), "..", "..");
|
|
40
|
+
async function startUpdate(to) {
|
|
41
|
+
const dir = wherdrDir();
|
|
42
|
+
const info = await checkUpdate();
|
|
43
|
+
const root = packageRoot();
|
|
44
|
+
const plan = buildPlan({
|
|
45
|
+
mode: installMode(process.env.WHERDR_INSTALL),
|
|
46
|
+
current: pkg.version,
|
|
47
|
+
latest: info.latest,
|
|
48
|
+
to,
|
|
49
|
+
job: readJob(dir),
|
|
50
|
+
now: Date.now(),
|
|
51
|
+
root,
|
|
52
|
+
dir,
|
|
53
|
+
runtime: process.execPath,
|
|
54
|
+
pid: process.pid,
|
|
55
|
+
env: process.env
|
|
56
|
+
});
|
|
57
|
+
const source = path.join(root, "bin", "lib", "updater.mjs");
|
|
58
|
+
if (!fs.existsSync(source)) throw new HerdrError("update_manual", "The updater is missing from this installation: run the update command");
|
|
59
|
+
const work = path.join(dir, "update");
|
|
60
|
+
fs.mkdirSync(work, { recursive: true });
|
|
61
|
+
const updater = path.join(work, "updater.mjs");
|
|
62
|
+
const planFile = path.join(work, "plan.json");
|
|
63
|
+
fs.copyFileSync(source, updater);
|
|
64
|
+
fs.writeFileSync(planFile, `${JSON.stringify(plan, null, 2)}
|
|
65
|
+
`);
|
|
66
|
+
const now = Date.now();
|
|
67
|
+
const job = { state: "installing", from: plan.from, to: plan.to, mode: plan.kind, startedAt: now, updatedAt: now };
|
|
68
|
+
fs.writeFileSync(path.join(dir, "update.json"), `${JSON.stringify(job)}
|
|
69
|
+
`);
|
|
70
|
+
const out = fs.openSync(path.join(dir, "update.log"), "a");
|
|
71
|
+
const scoped = !!process.env.INVOCATION_ID && spawnSync("systemd-run", ["--version"], { stdio: "ignore" }).status === 0;
|
|
72
|
+
const [cmd, args] = scoped ? ["systemd-run", ["--user", "--scope", "--collect", "--quiet", process.execPath, updater, planFile]] : [process.execPath, [updater, planFile]];
|
|
73
|
+
const child = spawn(cmd, args, { cwd: dir, env: process.env, detached: true, stdio: ["ignore", out, out] });
|
|
74
|
+
fs.closeSync(out);
|
|
75
|
+
child.on("error", (e) => log(`update: ${e.message}`));
|
|
76
|
+
child.unref();
|
|
77
|
+
log(`update: ${plan.from} \u2192 ${plan.to} (${plan.kind}) started, pid ${child.pid}`);
|
|
78
|
+
return job;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export { readJob as r, startUpdate as s, wherdrDir as w };
|
|
82
|
+
//# sourceMappingURL=selfupdate.mjs.map
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { p as pkg } from './package.mjs';
|
|
2
|
+
import { bh as installMode, bi as oneTapMode, bj as updateCommand, bk as compareVersions } from '../nitro/nitro.mjs';
|
|
3
|
+
|
|
4
|
+
const REPO = "afloury/wherdr";
|
|
5
|
+
const RELEASES_URL = `https://api.github.com/repos/${REPO}/releases/latest`;
|
|
6
|
+
const DAY_MS = 24 * 60 * 60 * 1e3;
|
|
7
|
+
const RETRY_MS = 60 * 60 * 1e3;
|
|
8
|
+
function createUpdateChecker(opts) {
|
|
9
|
+
var _a;
|
|
10
|
+
const now = (_a = opts.now) != null ? _a : Date.now;
|
|
11
|
+
let cached = null;
|
|
12
|
+
let nextAt = 0;
|
|
13
|
+
let pending = null;
|
|
14
|
+
async function refresh() {
|
|
15
|
+
try {
|
|
16
|
+
const res = await opts.fetch(RELEASES_URL);
|
|
17
|
+
if (!res.ok) throw new Error("http");
|
|
18
|
+
const body = await res.json();
|
|
19
|
+
if (typeof body.tag_name !== "string") throw new Error("tag");
|
|
20
|
+
cached = { version: body.tag_name.replace(/^v/, ""), url: typeof body.html_url === "string" ? body.html_url : "" };
|
|
21
|
+
nextAt = now() + DAY_MS;
|
|
22
|
+
} catch {
|
|
23
|
+
nextAt = now() + RETRY_MS;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return async function check() {
|
|
27
|
+
const mode = installMode(opts.env.WHERDR_INSTALL);
|
|
28
|
+
const base = { current: opts.current, mode, command: updateCommand(mode, REPO), oneTap: oneTapMode(mode) };
|
|
29
|
+
if (String(opts.env.WHERDR_UPDATE_CHECK || "").toLowerCase() === "off") return { ...base, latest: null, url: null, checked: false };
|
|
30
|
+
if (now() >= nextAt) {
|
|
31
|
+
pending != null ? pending : pending = refresh().finally(() => {
|
|
32
|
+
pending = null;
|
|
33
|
+
});
|
|
34
|
+
await pending;
|
|
35
|
+
}
|
|
36
|
+
const newer = cached && compareVersions(cached.version, opts.current) > 0;
|
|
37
|
+
return { ...base, latest: newer ? cached.version : null, url: newer ? cached.url || null : null, checked: !!cached };
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const checkUpdate = createUpdateChecker({
|
|
41
|
+
current: pkg.version,
|
|
42
|
+
env: process.env,
|
|
43
|
+
fetch: (url) => fetch(url, {
|
|
44
|
+
headers: { accept: "application/vnd.github+json", "user-agent": "wherdr" },
|
|
45
|
+
signal: AbortSignal.timeout(1e4)
|
|
46
|
+
})
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
export { checkUpdate as c };
|
|
50
|
+
//# sourceMappingURL=updates.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { bm as allMachines, G as getMachine, H as HerdrError, a5 as splitId, aA as herdrOn, p as poll, bn as recentDirs, bo as joinId, aB as getState } from '../nitro/nitro.mjs';
|
|
2
2
|
|
|
3
3
|
const opts = { trust_repository: true };
|
|
4
4
|
async function machineWorktrees(m) {
|