charon-hooks 0.1.0 → 0.1.6

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.
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Charon</title>
7
7
  <link rel="icon" href="/favicon.ico" />
8
- <script type="module" crossorigin src="/assets/index-hnnw32hs.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-BBZqXOn2.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/assets/index-Ccj2TupZ.css">
10
10
  </head>
11
11
  <body class="antialiased">
@@ -1,9 +1,32 @@
1
1
  // src/server/app.ts
2
2
  import { Hono as Hono7 } from "hono";
3
- import { logger } from "hono/logger";
4
3
 
5
- // src/server/middleware/static.ts
4
+ // src/server/middleware/logger.ts
6
5
  import { createMiddleware } from "hono/factory";
6
+ var QUIET_PATHS = [
7
+ "/api/triggers",
8
+ "/api/runs",
9
+ "/api/tunnel"
10
+ ];
11
+ var quietLogger = createMiddleware(async (c, next) => {
12
+ const start = Date.now();
13
+ const method = c.req.method;
14
+ const path = new URL(c.req.url).pathname;
15
+ await next();
16
+ const status = c.res.status;
17
+ const elapsed = Date.now() - start;
18
+ const isQuietPath = QUIET_PATHS.some((p) => path === p || path.startsWith(p + "?"));
19
+ if (method === "GET" && isQuietPath && status >= 200 && status < 300) {
20
+ return;
21
+ }
22
+ const statusColor = status >= 500 ? "31" : status >= 400 ? "33" : status >= 300 ? "36" : "32";
23
+ console.log(
24
+ ` \x1B[90m-->\x1B[0m \x1B[1m${method}\x1B[0m ${path} \x1B[${statusColor}m${status}\x1B[0m ${elapsed}ms`
25
+ );
26
+ });
27
+
28
+ // src/server/middleware/static.ts
29
+ import { createMiddleware as createMiddleware2 } from "hono/factory";
7
30
  import { readFileSync, existsSync, statSync } from "fs";
8
31
  import { join, extname, resolve } from "path";
9
32
  var MIME_TYPES = {
@@ -25,12 +48,12 @@ var MIME_TYPES = {
25
48
  function serveStatic({ root, path: fallbackPath }) {
26
49
  const rootDir = root ? resolve(root) : process.cwd();
27
50
  const fallback = fallbackPath ? resolve(fallbackPath) : null;
28
- return createMiddleware(async (c, next) => {
51
+ return createMiddleware2(async (c, next) => {
29
52
  if (c.req.method !== "GET" && c.req.method !== "HEAD") {
30
53
  return next();
31
54
  }
32
55
  const url = new URL(c.req.url);
33
- let pathname = decodeURIComponent(url.pathname);
56
+ const pathname = decodeURIComponent(url.pathname);
34
57
  if (pathname.includes("..")) {
35
58
  return next();
36
59
  }
@@ -1497,7 +1520,7 @@ var taskRoutes = new Hono6();
1497
1520
  taskRoutes.post("/complete", async (c) => {
1498
1521
  try {
1499
1522
  const body = await c.req.json();
1500
- const { summary, pid: _pid } = body;
1523
+ const { summary } = body;
1501
1524
  const now = (/* @__PURE__ */ new Date()).toISOString();
1502
1525
  const db2 = getDb();
1503
1526
  const recentRuns = listRuns(db2, { status: "completed", limit: 10 });
@@ -1565,7 +1588,7 @@ async function tunnelProxyMiddleware(c, next) {
1565
1588
 
1566
1589
  // src/server/app.ts
1567
1590
  var app = new Hono7();
1568
- app.use("*", logger());
1591
+ app.use("*", quietLogger);
1569
1592
  app.use("*", tunnelProxyMiddleware);
1570
1593
  app.route("/api/triggers", triggersRoutes);
1571
1594
  app.route("/api/runs", runsRoutes);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "charon-hooks",
3
- "version": "0.1.0",
3
+ "version": "0.1.6",
4
4
  "description": "Autonomous task triggering service - webhooks and cron to AI agents",
5
5
  "type": "module",
6
6
  "bin": {
@@ -45,6 +45,7 @@
45
45
  "zod": "^4.3.5"
46
46
  },
47
47
  "devDependencies": {
48
+ "@eslint/js": "^9.39.2",
48
49
  "@tailwindcss/postcss": "^4",
49
50
  "@tailwindcss/vite": "^4",
50
51
  "@types/better-sqlite3": "^7.6.13",
@@ -55,10 +56,12 @@
55
56
  "@types/react-dom": "^19",
56
57
  "@vitejs/plugin-react": "^4.4.0",
57
58
  "eslint": "^9",
59
+ "globals": "^17.0.0",
58
60
  "tailwindcss": "^4",
59
61
  "tsup": "^8.5.1",
60
62
  "tw-animate-css": "^1.4.0",
61
63
  "typescript": "5.9.3",
64
+ "typescript-eslint": "^8.52.0",
62
65
  "vite": "^6.0.0"
63
66
  },
64
67
  "ignoreScripts": [
@@ -1 +0,0 @@
1
- <svg fill="none" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M14.5 13.5V5.41a1 1 0 0 0-.3-.7L9.8.29A1 1 0 0 0 9.08 0H1.5v13.5A2.5 2.5 0 0 0 4 16h8a2.5 2.5 0 0 0 2.5-2.5m-1.5 0v-7H8v-5H3v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1M9.5 5V2.12L12.38 5zM5.13 5h-.62v1.25h2.12V5zm-.62 3h7.12v1.25H4.5zm.62 3h-.62v1.25h7.12V11z" clip-rule="evenodd" fill="#666" fill-rule="evenodd"/></svg>
@@ -1 +0,0 @@
1
- <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g clip-path="url(#a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.27 14.1a6.5 6.5 0 0 0 3.67-3.45q-1.24.21-2.7.34-.31 1.83-.97 3.1M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.48-1.52a7 7 0 0 1-.96 0H7.5a4 4 0 0 1-.84-1.32q-.38-.89-.63-2.08a40 40 0 0 0 3.92 0q-.25 1.2-.63 2.08a4 4 0 0 1-.84 1.31zm2.94-4.76q1.66-.15 2.95-.43a7 7 0 0 0 0-2.58q-1.3-.27-2.95-.43a18 18 0 0 1 0 3.44m-1.27-3.54a17 17 0 0 1 0 3.64 39 39 0 0 1-4.3 0 17 17 0 0 1 0-3.64 39 39 0 0 1 4.3 0m1.1-1.17q1.45.13 2.69.34a6.5 6.5 0 0 0-3.67-3.44q.65 1.26.98 3.1M8.48 1.5l.01.02q.41.37.84 1.31.38.89.63 2.08a40 40 0 0 0-3.92 0q.25-1.2.63-2.08a4 4 0 0 1 .85-1.32 7 7 0 0 1 .96 0m-2.75.4a6.5 6.5 0 0 0-3.67 3.44 29 29 0 0 1 2.7-.34q.31-1.83.97-3.1M4.58 6.28q-1.66.16-2.95.43a7 7 0 0 0 0 2.58q1.3.27 2.95.43a18 18 0 0 1 0-3.44m.17 4.71q-1.45-.12-2.69-.34a6.5 6.5 0 0 0 3.67 3.44q-.65-1.27-.98-3.1" fill="#666"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>
@@ -1 +0,0 @@
1
- <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1155 1000"><path d="m577.3 0 577.4 1000H0z" fill="#fff"/></svg>
@@ -1 +0,0 @@
1
- <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 2.5h13v10a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1zM0 1h16v11.5a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 0 12.5zm3.75 4.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5M7 4.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m1.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5" fill="#666"/></svg>