@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.
- package/dist/index.js +31 -0
- package/dist/port-resolution.js +1 -1
- package/package.json +1 -1
- package/payload/platform/package-lock.json +18 -4
- package/payload/platform/services/claude-session-manager/dist/fs-watcher.d.ts +4 -3
- package/payload/platform/services/claude-session-manager/dist/fs-watcher.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/fs-watcher.js +159 -219
- package/payload/platform/services/claude-session-manager/dist/fs-watcher.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +9 -0
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js +262 -67
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/index.js +10 -0
- package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts +10 -4
- package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js +27 -8
- package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-path.d.ts +8 -0
- package/payload/platform/services/claude-session-manager/dist/jsonl-path.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-path.js +11 -0
- package/payload/platform/services/claude-session-manager/dist/jsonl-path.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +14 -6
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/reaper.d.ts +2 -0
- package/payload/platform/services/claude-session-manager/dist/reaper.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/reaper.js +6 -3
- package/payload/platform/services/claude-session-manager/dist/reaper.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/session-store.d.ts +6 -4
- package/payload/platform/services/claude-session-manager/dist/session-store.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/session-store.js +8 -10
- package/payload/platform/services/claude-session-manager/dist/session-store.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/types.d.ts +0 -4
- package/payload/platform/services/claude-session-manager/dist/types.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/user-title-store.d.ts +39 -0
- package/payload/platform/services/claude-session-manager/dist/user-title-store.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/user-title-store.js +138 -0
- package/payload/platform/services/claude-session-manager/dist/user-title-store.js.map +1 -0
- package/payload/premium-plugins/real-agent/plugins/brochures/skills/make-brochure/SKILL.md +1 -1
- package/payload/premium-plugins/real-agent/plugins/brochures/skills/property-brochure/SKILL.md +3 -0
- package/payload/server/public/assets/admin-BhEvxMrC.js +217 -0
- package/payload/server/public/assets/{data-3n20lir5.js → data-Cbo0tTS3.js} +1 -1
- package/payload/server/public/assets/{graph-ChwMpxn_.js → graph-Beucu3_J.js} +1 -1
- package/payload/server/public/assets/graph-labels-D15-eFQK.js +1 -0
- package/payload/server/public/assets/{page-DNjUtT5q.js → page-Bu8kO4jO.js} +2 -2
- package/payload/server/public/assets/{page-D3bFmqF4.js → page-C1hj89Gf.js} +1 -1
- package/payload/server/public/data.html +3 -3
- package/payload/server/public/graph.html +3 -3
- package/payload/server/public/index.html +4 -4
- package/payload/server/server-init.cjs +35 -3
- package/payload/server/server.js +33 -0
- package/payload/server/public/assets/admin-C57bDUgs.js +0 -217
- 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-
|
|
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-
|
|
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-
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/page-
|
|
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
|
-
//
|
|
128
|
-
|
|
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(
|
|
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
|
}
|
package/payload/server/server.js
CHANGED
|
@@ -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 },
|