maxsimcli 2.5.3 → 2.5.4
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/assets/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [2.5.4](https://github.com/maystudios/maxsim/compare/v2.5.3...v2.5.4) (2026-02-25)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **dashboard:** cross-platform compatibility fixes ([9101d90](https://github.com/maystudios/maxsim/commit/9101d90de233ea563227d9477721ac1fb1f39115))
|
|
7
|
+
|
|
1
8
|
## [2.5.3](https://github.com/maystudios/maxsim/compare/v2.5.2...v2.5.3) (2026-02-25)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -32444,7 +32444,7 @@ var require_websocket = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
32444
32444
|
const tls = require("tls");
|
|
32445
32445
|
const { randomBytes, createHash: createHash$1 } = require("crypto");
|
|
32446
32446
|
const { Duplex: Duplex$2, Readable: Readable$1 } = require("stream");
|
|
32447
|
-
const { URL
|
|
32447
|
+
const { URL } = require("url");
|
|
32448
32448
|
const PerMessageDeflate = require_permessage_deflate();
|
|
32449
32449
|
const Receiver = require_receiver();
|
|
32450
32450
|
const Sender = require_sender();
|
|
@@ -32973,9 +32973,9 @@ var require_websocket = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
32973
32973
|
websocket._closeTimeout = opts.closeTimeout;
|
|
32974
32974
|
if (!protocolVersions.includes(opts.protocolVersion)) throw new RangeError(`Unsupported protocol version: ${opts.protocolVersion} (supported versions: ${protocolVersions.join(", ")})`);
|
|
32975
32975
|
let parsedUrl;
|
|
32976
|
-
if (address instanceof URL
|
|
32976
|
+
if (address instanceof URL) parsedUrl = address;
|
|
32977
32977
|
else try {
|
|
32978
|
-
parsedUrl = new URL
|
|
32978
|
+
parsedUrl = new URL(address);
|
|
32979
32979
|
} catch (e) {
|
|
32980
32980
|
throw new SyntaxError(`Invalid URL: ${address}`);
|
|
32981
32981
|
}
|
|
@@ -33077,7 +33077,7 @@ var require_websocket = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
33077
33077
|
req.abort();
|
|
33078
33078
|
let addr;
|
|
33079
33079
|
try {
|
|
33080
|
-
addr = new URL
|
|
33080
|
+
addr = new URL(location, address);
|
|
33081
33081
|
} catch (e) {
|
|
33082
33082
|
emitErrorAndClose(websocket, /* @__PURE__ */ new SyntaxError(`Invalid URL: ${location}`));
|
|
33083
33083
|
return;
|
|
@@ -41434,14 +41434,10 @@ try {
|
|
|
41434
41434
|
const DISCONNECT_TIMEOUT_MS = 6e4;
|
|
41435
41435
|
const STATUS_INTERVAL_MS = 1e3;
|
|
41436
41436
|
const ACTIVE_THRESHOLD_MS = 2e3;
|
|
41437
|
-
const logDir$1 = node_path.join(node_path.dirname(new URL(require("url").pathToFileURL(__filename).href).pathname.replace(/^\/([A-Z]:)/i, "$1")), "..", "logs");
|
|
41438
41437
|
function ptyLog(level, ...args) {
|
|
41439
|
-
|
|
41440
|
-
|
|
41441
|
-
|
|
41442
|
-
const msg = args.map((a) => typeof a === "string" ? a : JSON.stringify(a)).join(" ");
|
|
41443
|
-
node_fs.appendFileSync(node_path.join(logDir$1, `dashboard-${ts.slice(0, 10)}.log`), `[${ts}] [${level}] [pty-manager] ${msg}\n`);
|
|
41444
|
-
} catch {}
|
|
41438
|
+
const ts = (/* @__PURE__ */ new Date()).toISOString();
|
|
41439
|
+
const msg = args.map((a) => typeof a === "string" ? a : JSON.stringify(a)).join(" ");
|
|
41440
|
+
console.error(`[${ts}] [${level}] [pty-manager] ${msg}`);
|
|
41445
41441
|
}
|
|
41446
41442
|
var PtyManager = class PtyManager {
|
|
41447
41443
|
static instance = null;
|
|
@@ -41596,8 +41592,7 @@ var PtyManager = class PtyManager {
|
|
|
41596
41592
|
|
|
41597
41593
|
//#endregion
|
|
41598
41594
|
//#region src/server.ts
|
|
41599
|
-
const
|
|
41600
|
-
const logDir = node_path.join(dashboardDir, "logs");
|
|
41595
|
+
const logDir = node_path.join(__dirname, "logs");
|
|
41601
41596
|
node_fs.mkdirSync(logDir, { recursive: true });
|
|
41602
41597
|
const logFile = node_path.join(logDir, `dashboard-${(/* @__PURE__ */ new Date()).toISOString().slice(0, 10)}.log`);
|
|
41603
41598
|
const logStream = node_fs.createWriteStream(logFile, { flags: "a" });
|
|
@@ -41707,7 +41702,7 @@ function setupWatcher(cwd, wss) {
|
|
|
41707
41702
|
function parseRoadmap(cwd) {
|
|
41708
41703
|
const roadmapPath = node_path.join(cwd, ".planning", "ROADMAP.md");
|
|
41709
41704
|
if (!node_fs.existsSync(roadmapPath)) return null;
|
|
41710
|
-
const content = node_fs.readFileSync(roadmapPath, "utf-8");
|
|
41705
|
+
const content = node_fs.readFileSync(roadmapPath, "utf-8").replace(/\r\n/g, "\n");
|
|
41711
41706
|
const phasesDir = node_path.join(cwd, ".planning", "phases");
|
|
41712
41707
|
const phasePattern = (0, import_dist.getPhasePattern)();
|
|
41713
41708
|
const phases = [];
|
|
@@ -41789,7 +41784,7 @@ function parseRoadmap(cwd) {
|
|
|
41789
41784
|
function parseState(cwd) {
|
|
41790
41785
|
const statePath = node_path.join(cwd, ".planning", "STATE.md");
|
|
41791
41786
|
if (!node_fs.existsSync(statePath)) return null;
|
|
41792
|
-
const content = node_fs.readFileSync(statePath, "utf-8");
|
|
41787
|
+
const content = node_fs.readFileSync(statePath, "utf-8").replace(/\r\n/g, "\n");
|
|
41793
41788
|
const position = (0, import_dist.stateExtractField)(content, "Current Position") || (0, import_dist.stateExtractField)(content, "Phase");
|
|
41794
41789
|
const lastActivity = (0, import_dist.stateExtractField)(content, "Last activity") || (0, import_dist.stateExtractField)(content, "Last Activity");
|
|
41795
41790
|
const currentPhase = (0, import_dist.stateExtractField)(content, "Current Phase") || (0, import_dist.stateExtractField)(content, "Phase");
|
|
@@ -41870,7 +41865,7 @@ function parsePhaseDetail(cwd, phaseId) {
|
|
|
41870
41865
|
const plans = [];
|
|
41871
41866
|
for (const planFileName of planFileNames) {
|
|
41872
41867
|
const planPath = node_path.join(phaseDir, planFileName);
|
|
41873
|
-
const content = node_fs.readFileSync(planPath, "utf-8");
|
|
41868
|
+
const content = node_fs.readFileSync(planPath, "utf-8").replace(/\r\n/g, "\n");
|
|
41874
41869
|
const frontmatter = (0, import_dist.extractFrontmatter)(content);
|
|
41875
41870
|
const tasks = [];
|
|
41876
41871
|
const taskRegex = /<task\s+type="([^"]*)"[^>]*>\s*<name>([^<]+)<\/name>([\s\S]*?)<\/task>/g;
|
|
@@ -41976,7 +41971,7 @@ app.patch("/api/roadmap", (req, res) => {
|
|
|
41976
41971
|
if (!node_fs.existsSync(roadmapPath)) return res.status(404).json({ error: "ROADMAP.md not found" });
|
|
41977
41972
|
const { phaseNumber, checked } = req.body;
|
|
41978
41973
|
if (!phaseNumber || checked === void 0) return res.status(400).json({ error: "phaseNumber and checked are required" });
|
|
41979
|
-
let content = node_fs.readFileSync(roadmapPath, "utf-8");
|
|
41974
|
+
let content = node_fs.readFileSync(roadmapPath, "utf-8").replace(/\r\n/g, "\n");
|
|
41980
41975
|
const escapedNum = phaseNumber.replace(".", "\\.");
|
|
41981
41976
|
const pattern = new RegExp(`(-\\s*\\[)(x| )(\\]\\s*.*Phase\\s+${escapedNum})`, "i");
|
|
41982
41977
|
if (!content.match(pattern)) return res.status(404).json({ error: `Phase ${phaseNumber} checkbox not found in ROADMAP.md` });
|
|
@@ -42000,7 +41995,7 @@ app.patch("/api/state", (req, res) => {
|
|
|
42000
41995
|
if (!isWithinPlanning(projectCwd, ".planning/STATE.md")) return res.status(400).json({ error: "Invalid path" });
|
|
42001
41996
|
const { field, value } = req.body;
|
|
42002
41997
|
if (!field || value === void 0) return res.status(400).json({ error: "field and value are required" });
|
|
42003
|
-
const updated = (0, import_dist.stateReplaceField)(node_fs.readFileSync(statePath, "utf-8"), field, value);
|
|
41998
|
+
const updated = (0, import_dist.stateReplaceField)(node_fs.readFileSync(statePath, "utf-8").replace(/\r\n/g, "\n"), field, value);
|
|
42004
41999
|
if (!updated) return res.status(404).json({ error: `Field "${field}" not found in STATE.md` });
|
|
42005
42000
|
suppressPath(statePath);
|
|
42006
42001
|
node_fs.writeFileSync(statePath, updated, "utf-8");
|
package/package.json
CHANGED