hanoman 0.1.31 → 0.1.33
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/build-info.json +3 -3
- package/dist/cli.js +1 -0
- package/dist/server.js +25 -3
- package/package.json +2 -1
- package/web/assets/{index-CFtKJvO8.js → index-Ce9LtSUQ.js} +50 -50
- package/web/index.html +1 -1
package/dist/build-info.json
CHANGED
package/dist/cli.js
CHANGED
|
@@ -29451,6 +29451,7 @@ var init_pack = __esm({
|
|
|
29451
29451
|
"@prisma/client",
|
|
29452
29452
|
"node-pty",
|
|
29453
29453
|
"pdfkit",
|
|
29454
|
+
"sharp",
|
|
29454
29455
|
"prisma",
|
|
29455
29456
|
"pg"
|
|
29456
29457
|
];
|
package/dist/server.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require =
|
|
1
|
+
import { createRequire as __hanomanCreateRequire } from 'module'; const require = __hanomanCreateRequire(import.meta.url);
|
|
2
2
|
var __create = Object.create;
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -24263,6 +24263,7 @@ import { existsSync as existsSync15 } from "node:fs";
|
|
|
24263
24263
|
|
|
24264
24264
|
// src/web-dir.ts
|
|
24265
24265
|
import { resolve } from "node:path";
|
|
24266
|
+
var shouldServeWeb = (env) => env.NODE_ENV === "production" || Boolean(env.HANOMAN_WEB_DIR?.trim());
|
|
24266
24267
|
function pickWebDir(distDir, env, exists) {
|
|
24267
24268
|
const forced = env.HANOMAN_WEB_DIR?.trim();
|
|
24268
24269
|
if (forced) {
|
|
@@ -29929,11 +29930,32 @@ function wsControlOrigins(env) {
|
|
|
29929
29930
|
function assertWsOrigin(origin, allowed) {
|
|
29930
29931
|
if (!origin || !allowed.has(origin)) throw new Error("WebSocket Origin rejected");
|
|
29931
29932
|
}
|
|
29933
|
+
function wsAllowlistFor(configured, host2, env) {
|
|
29934
|
+
if (configured.size > 0 || env.NODE_ENV === "production") return configured;
|
|
29935
|
+
const value = host2?.trim().toLowerCase();
|
|
29936
|
+
if (!value) return configured;
|
|
29937
|
+
let parsed;
|
|
29938
|
+
try {
|
|
29939
|
+
parsed = new URL(`http://${value}`);
|
|
29940
|
+
} catch {
|
|
29941
|
+
return configured;
|
|
29942
|
+
}
|
|
29943
|
+
if (!parsed.host || parsed.username || parsed.password || parsed.pathname !== "/" || parsed.search || parsed.hash) return configured;
|
|
29944
|
+
const hosts = /* @__PURE__ */ new Set([parsed.host]);
|
|
29945
|
+
if (parsed.port === "80" || parsed.port === "443") hosts.add(parsed.hostname);
|
|
29946
|
+
const allowed = /* @__PURE__ */ new Set();
|
|
29947
|
+
for (const candidate of hosts) {
|
|
29948
|
+
allowed.add(`http://${candidate}`);
|
|
29949
|
+
allowed.add(`https://${candidate}`);
|
|
29950
|
+
}
|
|
29951
|
+
return allowed;
|
|
29952
|
+
}
|
|
29932
29953
|
function admitBrowserWs(req, target2, allowedOrigins) {
|
|
29933
29954
|
const origin = typeof req.headers.origin === "string" ? req.headers.origin : void 0;
|
|
29934
29955
|
if (!origin && process.env.NODE_ENV === "test" && allowedOrigins.size === 0)
|
|
29935
29956
|
return { kind: "test", id: "test" };
|
|
29936
|
-
|
|
29957
|
+
const host2 = typeof req.headers.host === "string" ? req.headers.host : void 0;
|
|
29958
|
+
assertWsOrigin(origin, wsAllowlistFor(allowedOrigins, host2, process.env));
|
|
29937
29959
|
const token = ticketFromProtocol(req.headers["sec-websocket-protocol"]);
|
|
29938
29960
|
if (!token) throw new Error("WebSocket ticket required");
|
|
29939
29961
|
const principal = consumeWsTicket(token, target2);
|
|
@@ -44789,7 +44811,7 @@ function buildApp({ requireAuth = true, agentDocFile, env = process.env } = {})
|
|
|
44789
44811
|
await api.register(portal_default);
|
|
44790
44812
|
await api.register(client_accounts_default);
|
|
44791
44813
|
}, { prefix: "/api" });
|
|
44792
|
-
if (env
|
|
44814
|
+
if (shouldServeWeb(env)) {
|
|
44793
44815
|
const dist = pickWebDir(dirname12(fileURLToPath4(import.meta.url)), env, existsSync15);
|
|
44794
44816
|
if (dist) {
|
|
44795
44817
|
app2.register(fastifyStatic, { root: dist });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hanoman",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.33",
|
|
4
4
|
"description": "Orchestrator + dashboard workflow docs-driven untuk sesi Claude Code / Codex",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"@prisma/client": "^6.19.0",
|
|
35
35
|
"node-pty": "^1.1.0",
|
|
36
36
|
"pdfkit": "^0.19.1",
|
|
37
|
+
"sharp": "^0.35.3",
|
|
37
38
|
"prisma": "^6.19.0",
|
|
38
39
|
"pg": "^8.13.1"
|
|
39
40
|
},
|