@rubytech/create-maxy-code 0.1.90 → 0.1.92

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.
Files changed (54) hide show
  1. package/dist/index.js +31 -0
  2. package/dist/port-resolution.js +1 -1
  3. package/package.json +1 -1
  4. package/payload/platform/package-lock.json +18 -4
  5. package/payload/platform/services/claude-session-manager/dist/fs-watcher.d.ts +4 -3
  6. package/payload/platform/services/claude-session-manager/dist/fs-watcher.d.ts.map +1 -1
  7. package/payload/platform/services/claude-session-manager/dist/fs-watcher.js +159 -219
  8. package/payload/platform/services/claude-session-manager/dist/fs-watcher.js.map +1 -1
  9. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +9 -0
  10. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  11. package/payload/platform/services/claude-session-manager/dist/http-server.js +262 -67
  12. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  13. package/payload/platform/services/claude-session-manager/dist/index.js +10 -0
  14. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  15. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts +10 -4
  16. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts.map +1 -1
  17. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js +27 -8
  18. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js.map +1 -1
  19. package/payload/platform/services/claude-session-manager/dist/jsonl-path.d.ts +8 -0
  20. package/payload/platform/services/claude-session-manager/dist/jsonl-path.d.ts.map +1 -1
  21. package/payload/platform/services/claude-session-manager/dist/jsonl-path.js +11 -0
  22. package/payload/platform/services/claude-session-manager/dist/jsonl-path.js.map +1 -1
  23. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  24. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +14 -6
  25. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  26. package/payload/platform/services/claude-session-manager/dist/reaper.d.ts +2 -0
  27. package/payload/platform/services/claude-session-manager/dist/reaper.d.ts.map +1 -1
  28. package/payload/platform/services/claude-session-manager/dist/reaper.js +6 -3
  29. package/payload/platform/services/claude-session-manager/dist/reaper.js.map +1 -1
  30. package/payload/platform/services/claude-session-manager/dist/session-store.d.ts +6 -4
  31. package/payload/platform/services/claude-session-manager/dist/session-store.d.ts.map +1 -1
  32. package/payload/platform/services/claude-session-manager/dist/session-store.js +8 -10
  33. package/payload/platform/services/claude-session-manager/dist/session-store.js.map +1 -1
  34. package/payload/platform/services/claude-session-manager/dist/types.d.ts +0 -4
  35. package/payload/platform/services/claude-session-manager/dist/types.d.ts.map +1 -1
  36. package/payload/platform/services/claude-session-manager/dist/user-title-store.d.ts +39 -0
  37. package/payload/platform/services/claude-session-manager/dist/user-title-store.d.ts.map +1 -0
  38. package/payload/platform/services/claude-session-manager/dist/user-title-store.js +138 -0
  39. package/payload/platform/services/claude-session-manager/dist/user-title-store.js.map +1 -0
  40. package/payload/premium-plugins/real-agent/plugins/brochures/skills/make-brochure/SKILL.md +1 -1
  41. package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/SKILL.md +3 -0
  42. package/payload/server/public/assets/admin-BhEvxMrC.js +217 -0
  43. package/payload/server/public/assets/{data-3n20lir5.js → data-Cbo0tTS3.js} +1 -1
  44. package/payload/server/public/assets/{graph-ChwMpxn_.js → graph-Beucu3_J.js} +1 -1
  45. package/payload/server/public/assets/graph-labels-D15-eFQK.js +1 -0
  46. package/payload/server/public/assets/{page-DNjUtT5q.js → page-Bu8kO4jO.js} +2 -2
  47. package/payload/server/public/assets/{page-D3bFmqF4.js → page-C1hj89Gf.js} +1 -1
  48. package/payload/server/public/data.html +3 -3
  49. package/payload/server/public/graph.html +3 -3
  50. package/payload/server/public/index.html +4 -4
  51. package/payload/server/server-init.cjs +35 -3
  52. package/payload/server/server.js +33 -0
  53. package/payload/server/public/assets/admin-C57bDUgs.js +0 -217
  54. package/payload/server/public/assets/graph-labels-CUgJgIwl.js +0 -1
@@ -5,13 +5,13 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Maxy</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/admin-C57bDUgs.js"></script>
8
+ <script type="module" crossorigin src="/assets/admin-BhEvxMrC.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-DD-I1_y5.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/ChatInput-DoS80kaC.js">
11
- <link rel="modulepreload" crossorigin href="/assets/graph-labels-CUgJgIwl.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/graph-labels-D15-eFQK.js">
12
12
  <link rel="modulepreload" crossorigin href="/assets/Checkbox-Bx8mRHQ3.js">
13
- <link rel="modulepreload" crossorigin href="/assets/page-D3bFmqF4.js">
14
- <link rel="modulepreload" crossorigin href="/assets/page-DNjUtT5q.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/page-C1hj89Gf.js">
14
+ <link rel="modulepreload" crossorigin href="/assets/page-Bu8kO4jO.js">
15
15
  <link rel="modulepreload" crossorigin href="/assets/lib-CCLURO3E.js">
16
16
  <link rel="stylesheet" crossorigin href="/assets/ChatInput-dLWJ0Q8I.css">
17
17
  <link rel="stylesheet" crossorigin href="/assets/admin-CWMpccrR.css">
@@ -17,6 +17,7 @@ const { spawnSync } = require('node:child_process')
17
17
  const { existsSync, readFileSync, writeFileSync } = require('node:fs')
18
18
  const os = require('node:os')
19
19
  const path = require('node:path')
20
+ const { monitorEventLoopDelay } = require('node:perf_hooks')
20
21
 
21
22
  // ---------------------------------------------------------------------------
22
23
  // 0. Start counter — Task 173
@@ -124,10 +125,41 @@ if (NOTIFY_SOCKET) {
124
125
  console.error('[server-init] sd_notify READY=1 sent')
125
126
  })
126
127
 
127
- // Watchdog ping every 15s (WatchdogSec=30, ping at half-interval)
128
- const watchdogInterval = setInterval(() => sdNotify('WATCHDOG=1'), 15_000)
128
+ // Task 249: WATCHDOG_USEC is injected by systemd when Type=notify +
129
+ // WatchdogSec= is configured (microseconds, integer). Reading it at runtime
130
+ // means a future unit-file bump (e.g. 120 → 180) propagates without code
131
+ // changes. Ping every 15s regardless of deadline: trivially satisfies
132
+ // systemd's "≤ half-deadline" requirement for any deadline ≥ 30s, and
133
+ // gives the near-miss check 15s observation windows so a long block is
134
+ // surfaced within 15s of unblocking.
135
+ const WATCHDOG_USEC = Number.parseInt(process.env.WATCHDOG_USEC ?? '', 10)
136
+ const watchdogDeadlineMs = Number.isFinite(WATCHDOG_USEC) && WATCHDOG_USEC > 0
137
+ ? Math.floor(WATCHDOG_USEC / 1000)
138
+ : null
139
+
140
+ // monitorEventLoopDelay records every libuv tick's lag; a sync block of N
141
+ // seconds shows up as histogram.max ≈ N*1000 ms in the cycle where the
142
+ // block ends. When max crosses 50% of the deadline we emit one line so
143
+ // `grep '[server-init] watchdog ping miss' server.log` answers "did we
144
+ // approach the deadline, and how close" without needing systemd state or
145
+ // journald. Histogram is reset every cycle so max reflects this window.
146
+ // Only enabled when the deadline is known — no point recording samples no
147
+ // one reads.
148
+ const loopHist = watchdogDeadlineMs !== null ? monitorEventLoopDelay({ resolution: 50 }) : null
149
+ if (loopHist) loopHist.enable()
150
+
151
+ const watchdogInterval = setInterval(() => {
152
+ sdNotify('WATCHDOG=1')
153
+ if (loopHist && watchdogDeadlineMs !== null) {
154
+ const maxMs = loopHist.max / 1_000_000
155
+ loopHist.reset()
156
+ if (maxMs >= watchdogDeadlineMs / 2) {
157
+ console.error(`[server-init] watchdog ping miss lag-ms=${Math.round(maxMs)} deadline-ms=${watchdogDeadlineMs}`)
158
+ }
159
+ }
160
+ }, 15_000)
129
161
  watchdogInterval.unref() // don't keep the process alive for this
130
- console.error('[server-init] watchdog enabled (15s interval)')
162
+ console.error(`[server-init] watchdog enabled (ping-interval-ms=15000 deadline-ms=${watchdogDeadlineMs ?? 'unset'})`)
131
163
  } else {
132
164
  console.error('[server-init] no NOTIFY_SOCKET, watchdog disabled')
133
165
  }
@@ -601,6 +601,7 @@ var serveStatic = (options = { root: "" }) => {
601
601
  import { readFileSync as readFileSync20, existsSync as existsSync22, watchFile } from "fs";
602
602
  import { resolve as resolve23, join as join13, basename as basename5 } from "path";
603
603
  import { homedir as homedir4 } from "os";
604
+ import { monitorEventLoopDelay } from "perf_hooks";
604
605
 
605
606
  // app/lib/agent-slug-pattern.ts
606
607
  var AGENT_SLUG_PATTERN = /^\/([a-z][a-z0-9-]{2,49})$/;
@@ -8452,6 +8453,23 @@ app14.post("/:sessionId/stop", async (c) => {
8452
8453
  if (!upstream) return c.json({ error: "manager-unreachable" }, 503);
8453
8454
  return new Response(upstream.body, { status: upstream.status, headers: upstream.headers });
8454
8455
  });
8456
+ app14.post("/:sessionId/rename", async (c) => {
8457
+ const sessionId = c.req.param("sessionId");
8458
+ const body = await c.req.text();
8459
+ const upstream = await fetch(
8460
+ `${managerBase2()}/${encodeURIComponent(sessionId)}/rename`,
8461
+ {
8462
+ method: "POST",
8463
+ headers: { "content-type": "application/json" },
8464
+ body
8465
+ }
8466
+ ).catch((err) => {
8467
+ console.error(`${TAG18} fetch-failed op=rename message=${err instanceof Error ? err.message : String(err)}`);
8468
+ return null;
8469
+ });
8470
+ if (!upstream) return c.json({ error: "manager-unreachable" }, 503);
8471
+ return new Response(upstream.body, { status: upstream.status, headers: upstream.headers });
8472
+ });
8455
8473
  app14.delete("/:sessionId", async (c) => {
8456
8474
  const sessionId = c.req.param("sessionId");
8457
8475
  const cacheKey = c.get("cacheKey") ?? "";
@@ -14085,6 +14103,21 @@ var port = requirePortEnv("MAXY_UI_INTERNAL_PORT", { tag: "ui-server" });
14085
14103
  var hostname = process.env.HOSTNAME ?? "127.0.0.1";
14086
14104
  var httpServer = serve({ fetch: app37.fetch, port, hostname });
14087
14105
  console.log(`${BRAND.productName} listening on http://${hostname}:${port}`);
14106
+ {
14107
+ const loopHist = monitorEventLoopDelay({ resolution: 50 });
14108
+ loopHist.enable();
14109
+ const LOG_THRESHOLD_MS = 1e3;
14110
+ const WINDOW_MS2 = 3e4;
14111
+ const lagTimer = setInterval(() => {
14112
+ const maxMs = loopHist.max / 1e6;
14113
+ const p99Ms = loopHist.percentile(99) / 1e6;
14114
+ loopHist.reset();
14115
+ if (maxMs >= LOG_THRESHOLD_MS) {
14116
+ console.error(`[event-loop] lag p99=${Math.round(p99Ms)} max=${Math.round(maxMs)} window=${WINDOW_MS2 / 1e3}s`);
14117
+ }
14118
+ }, WINDOW_MS2);
14119
+ lagTimer.unref();
14120
+ }
14088
14121
  console.log("[boot] auth-mode summary: oauth=8 api-key=1 (api-key consumer: invokePublicAgent only)");
14089
14122
  var SUBAPP_MANIFEST = [
14090
14123
  { prefix: "/api/health", file: "server/routes/health.ts", subapp: health_default },