quoroom 0.1.36 → 0.1.37
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/out/mcp/api-server.js +46 -41
- package/out/mcp/cli.js +48 -44
- package/out/mcp/server.js +1 -1
- package/package.json +2 -2
package/out/mcp/api-server.js
CHANGED
|
@@ -9914,7 +9914,7 @@ var require_package = __commonJS({
|
|
|
9914
9914
|
"package.json"(exports2, module2) {
|
|
9915
9915
|
module2.exports = {
|
|
9916
9916
|
name: "quoroom",
|
|
9917
|
-
version: "0.1.
|
|
9917
|
+
version: "0.1.37",
|
|
9918
9918
|
description: "Open-source local AI agent framework \u2014 Queen, Workers, Quorum. Experimental research tool.",
|
|
9919
9919
|
main: "./out/mcp/server.js",
|
|
9920
9920
|
bin: {
|
|
@@ -9938,7 +9938,7 @@ var require_package = __commonJS({
|
|
|
9938
9938
|
"build:parallel": "node scripts/build-parallel.js",
|
|
9939
9939
|
"build:fast": "node scripts/build-parallel.js --skip-typecheck",
|
|
9940
9940
|
"build:mcp": "node scripts/build-mcp.js",
|
|
9941
|
-
"build:ui": "vite build --config src/ui/vite.config.ts
|
|
9941
|
+
"build:ui": "vite build --config src/ui/vite.config.ts",
|
|
9942
9942
|
"kill:ports": "node scripts/kill-ports.js",
|
|
9943
9943
|
"kill:dev-ports": "npm run kill:ports -- 3700 3702 4700 3715 5173 5174",
|
|
9944
9944
|
"kill:quoroom-runtime": "node scripts/kill-quoroom-runtime.js",
|
|
@@ -10928,6 +10928,7 @@ var require_node_cron = __commonJS({
|
|
|
10928
10928
|
var index_exports = {};
|
|
10929
10929
|
__export(index_exports, {
|
|
10930
10930
|
_isLoopbackAddress: () => isLoopbackAddress,
|
|
10931
|
+
_resolveStaticDirForStart: () => resolveStaticDirForStart,
|
|
10931
10932
|
_shellQuote: () => shellQuote,
|
|
10932
10933
|
_windowsQuote: () => windowsQuote,
|
|
10933
10934
|
createApiServer: () => createApiServer,
|
|
@@ -32381,6 +32382,13 @@ function getAutoUpdateStatus() {
|
|
|
32381
32382
|
return status;
|
|
32382
32383
|
}
|
|
32383
32384
|
function initBootHealthCheck() {
|
|
32385
|
+
if (import_node_fs4.default.existsSync(USER_APP_DIR) && !import_node_fs4.default.existsSync(VERSION_FILE)) {
|
|
32386
|
+
try {
|
|
32387
|
+
console.error("[auto-update] Removing legacy unversioned user app cache");
|
|
32388
|
+
import_node_fs4.default.rmSync(USER_APP_DIR, { recursive: true, force: true });
|
|
32389
|
+
} catch {
|
|
32390
|
+
}
|
|
32391
|
+
}
|
|
32384
32392
|
if (import_node_fs4.default.existsSync(VERSION_FILE)) {
|
|
32385
32393
|
try {
|
|
32386
32394
|
const info = JSON.parse(import_node_fs4.default.readFileSync(VERSION_FILE, "utf-8"));
|
|
@@ -32508,7 +32516,7 @@ function semverGt(a, b) {
|
|
|
32508
32516
|
}
|
|
32509
32517
|
function getCurrentVersion() {
|
|
32510
32518
|
try {
|
|
32511
|
-
return true ? "0.1.
|
|
32519
|
+
return true ? "0.1.37" : null.version;
|
|
32512
32520
|
} catch {
|
|
32513
32521
|
return "0.0.0";
|
|
32514
32522
|
}
|
|
@@ -32689,7 +32697,7 @@ var cachedVersion = null;
|
|
|
32689
32697
|
function getVersion3() {
|
|
32690
32698
|
if (cachedVersion) return cachedVersion;
|
|
32691
32699
|
try {
|
|
32692
|
-
cachedVersion = true ? "0.1.
|
|
32700
|
+
cachedVersion = true ? "0.1.37" : null.version;
|
|
32693
32701
|
} catch {
|
|
32694
32702
|
cachedVersion = "unknown";
|
|
32695
32703
|
}
|
|
@@ -34609,6 +34617,11 @@ var MIME_TYPES = {
|
|
|
34609
34617
|
".webp": "image/webp",
|
|
34610
34618
|
".webmanifest": "application/manifest+json"
|
|
34611
34619
|
};
|
|
34620
|
+
var NO_CACHE_RESPONSE_HEADERS = {
|
|
34621
|
+
"Cache-Control": "no-cache, no-store, must-revalidate",
|
|
34622
|
+
"Pragma": "no-cache",
|
|
34623
|
+
"Expires": "0"
|
|
34624
|
+
};
|
|
34612
34625
|
var PROFILE_HTTP = process.env.QUOROOM_PROFILE_HTTP === "1";
|
|
34613
34626
|
var PROFILE_HTTP_SLOW_MS = Math.max(1, Number.parseInt(process.env.QUOROOM_PROFILE_HTTP_SLOW_MS ?? "300", 10) || 300);
|
|
34614
34627
|
var PROFILE_HTTP_ENDPOINTS = /* @__PURE__ */ new Set([
|
|
@@ -34634,26 +34647,6 @@ function maybeLogHttpProfile(method, pathname, statusCode, durationMs) {
|
|
|
34634
34647
|
const slowMark = durationMs >= PROFILE_HTTP_SLOW_MS ? " SLOW" : "";
|
|
34635
34648
|
console.error(`[http-prof] ${method} ${normalized} -> ${statusCode} (${durationMs}ms)${slowMark}`);
|
|
34636
34649
|
}
|
|
34637
|
-
function getCacheControl(filePath, ext) {
|
|
34638
|
-
const normalized = filePath.replace(/\\/g, "/");
|
|
34639
|
-
const base2 = import_node_path9.default.basename(filePath);
|
|
34640
|
-
if (base2 === "sw.js") return "no-cache, no-store, must-revalidate";
|
|
34641
|
-
if (ext === ".html") return "no-cache, no-store, must-revalidate";
|
|
34642
|
-
if (ext === ".webmanifest") return "public, max-age=3600";
|
|
34643
|
-
if (base2 === "social.png" || base2.startsWith("social-")) {
|
|
34644
|
-
return "no-cache, max-age=0, must-revalidate";
|
|
34645
|
-
}
|
|
34646
|
-
if (normalized.includes("/assets/") && /-[A-Za-z0-9_-]{8,}\./.test(base2)) {
|
|
34647
|
-
return "public, max-age=31536000, immutable";
|
|
34648
|
-
}
|
|
34649
|
-
if (base2.startsWith("icon-") || base2 === "apple-touch-icon.png" || [".png", ".jpg", ".jpeg", ".svg", ".ico", ".webp", ".woff", ".woff2"].includes(ext)) {
|
|
34650
|
-
return "public, max-age=604800";
|
|
34651
|
-
}
|
|
34652
|
-
if (ext === ".js" || ext === ".css") {
|
|
34653
|
-
return "public, max-age=3600";
|
|
34654
|
-
}
|
|
34655
|
-
return "no-cache, max-age=0";
|
|
34656
|
-
}
|
|
34657
34650
|
function serveStatic(staticDir, pathname, res) {
|
|
34658
34651
|
const safePath = import_node_path9.default.normalize(pathname).replace(/^(\.\.[/\\])+/, "");
|
|
34659
34652
|
let filePath = import_node_path9.default.join(staticDir, safePath);
|
|
@@ -34666,7 +34659,7 @@ function serveStatic(staticDir, pathname, res) {
|
|
|
34666
34659
|
if (import_node_path9.default.extname(safePath)) {
|
|
34667
34660
|
res.writeHead(404, {
|
|
34668
34661
|
"Content-Type": "text/plain; charset=utf-8",
|
|
34669
|
-
|
|
34662
|
+
...NO_CACHE_RESPONSE_HEADERS
|
|
34670
34663
|
});
|
|
34671
34664
|
res.end("Not Found");
|
|
34672
34665
|
return;
|
|
@@ -34677,8 +34670,9 @@ function serveStatic(staticDir, pathname, res) {
|
|
|
34677
34670
|
const contentType = MIME_TYPES[ext] ?? "application/octet-stream";
|
|
34678
34671
|
const headers = {
|
|
34679
34672
|
"Content-Type": contentType,
|
|
34680
|
-
|
|
34673
|
+
...NO_CACHE_RESPONSE_HEADERS
|
|
34681
34674
|
};
|
|
34675
|
+
if (ext === ".html") headers["Clear-Site-Data"] = '"cache"';
|
|
34682
34676
|
const stream = import_node_fs6.default.createReadStream(filePath);
|
|
34683
34677
|
stream.on("open", () => {
|
|
34684
34678
|
res.writeHead(200, headers);
|
|
@@ -34686,11 +34680,26 @@ function serveStatic(staticDir, pathname, res) {
|
|
|
34686
34680
|
});
|
|
34687
34681
|
stream.on("error", () => {
|
|
34688
34682
|
if (!res.headersSent) {
|
|
34689
|
-
res.writeHead(404, {
|
|
34683
|
+
res.writeHead(404, {
|
|
34684
|
+
"Content-Type": "text/plain; charset=utf-8",
|
|
34685
|
+
...NO_CACHE_RESPONSE_HEADERS
|
|
34686
|
+
});
|
|
34690
34687
|
}
|
|
34691
34688
|
res.end("Not Found");
|
|
34692
34689
|
});
|
|
34693
34690
|
}
|
|
34691
|
+
function resolveStaticDirForStart() {
|
|
34692
|
+
const userUiDir = import_node_path9.default.join(USER_APP_DIR, "ui");
|
|
34693
|
+
const bundledUiDir = import_node_path9.default.join(__dirname, "../ui");
|
|
34694
|
+
const readyVersion = getReadyUpdateVersion();
|
|
34695
|
+
if (readyVersion && import_node_fs6.default.existsSync(import_node_path9.default.join(userUiDir, "index.html"))) {
|
|
34696
|
+
return userUiDir;
|
|
34697
|
+
}
|
|
34698
|
+
if (import_node_fs6.default.existsSync(bundledUiDir)) {
|
|
34699
|
+
return bundledUiDir;
|
|
34700
|
+
}
|
|
34701
|
+
return void 0;
|
|
34702
|
+
}
|
|
34694
34703
|
var RATE_LIMIT_WINDOW_MS2 = 6e4;
|
|
34695
34704
|
var RATE_LIMIT_READ = 300;
|
|
34696
34705
|
var RATE_LIMIT_WRITE = 120;
|
|
@@ -34748,14 +34757,15 @@ function createApiServer(options = {}) {
|
|
|
34748
34757
|
});
|
|
34749
34758
|
}
|
|
34750
34759
|
if (req.method === "OPTIONS") {
|
|
34751
|
-
const headers = {};
|
|
34760
|
+
const headers = { ...NO_CACHE_RESPONSE_HEADERS };
|
|
34752
34761
|
setCorsHeaders(origin, headers);
|
|
34753
34762
|
res.writeHead(204, headers);
|
|
34754
34763
|
res.end();
|
|
34755
34764
|
return;
|
|
34756
34765
|
}
|
|
34757
34766
|
const responseHeaders = {
|
|
34758
|
-
"Content-Type": "application/json"
|
|
34767
|
+
"Content-Type": "application/json",
|
|
34768
|
+
...NO_CACHE_RESPONSE_HEADERS
|
|
34759
34769
|
};
|
|
34760
34770
|
if (isCloudDeployment()) {
|
|
34761
34771
|
Object.assign(responseHeaders, CLOUD_SECURITY_HEADERS);
|
|
@@ -34785,10 +34795,7 @@ function createApiServer(options = {}) {
|
|
|
34785
34795
|
}
|
|
34786
34796
|
if (pathname === "/api/auth/handshake" && req.method === "GET") {
|
|
34787
34797
|
const handshakeHeaders = {
|
|
34788
|
-
...responseHeaders
|
|
34789
|
-
"Cache-Control": "no-store, no-cache, must-revalidate, proxy-revalidate",
|
|
34790
|
-
"Pragma": "no-cache",
|
|
34791
|
-
"Expires": "0"
|
|
34798
|
+
...responseHeaders
|
|
34792
34799
|
};
|
|
34793
34800
|
if (isCloudDeployment()) {
|
|
34794
34801
|
res.writeHead(403, handshakeHeaders);
|
|
@@ -34954,7 +34961,10 @@ function createApiServer(options = {}) {
|
|
|
34954
34961
|
if (options.staticDir) {
|
|
34955
34962
|
serveStatic(options.staticDir, pathname, res);
|
|
34956
34963
|
} else {
|
|
34957
|
-
res.writeHead(404, {
|
|
34964
|
+
res.writeHead(404, {
|
|
34965
|
+
"Content-Type": "text/plain; charset=utf-8",
|
|
34966
|
+
...NO_CACHE_RESPONSE_HEADERS
|
|
34967
|
+
});
|
|
34958
34968
|
res.end("Not Found");
|
|
34959
34969
|
}
|
|
34960
34970
|
});
|
|
@@ -35068,13 +35078,7 @@ function startServer(options = {}) {
|
|
|
35068
35078
|
const bindHost = process.env.QUOROOM_BIND_HOST || (deploymentMode === "cloud" ? DEFAULT_BIND_HOST_CLOUD : DEFAULT_BIND_HOST_LOCAL);
|
|
35069
35079
|
initBootHealthCheck();
|
|
35070
35080
|
if (!options.staticDir) {
|
|
35071
|
-
|
|
35072
|
-
const bundledUiDir = import_node_path9.default.join(__dirname, "../ui");
|
|
35073
|
-
if (import_node_fs6.default.existsSync(import_node_path9.default.join(userUiDir, "index.html"))) {
|
|
35074
|
-
options.staticDir = userUiDir;
|
|
35075
|
-
} else if (import_node_fs6.default.existsSync(bundledUiDir)) {
|
|
35076
|
-
options.staticDir = bundledUiDir;
|
|
35077
|
-
}
|
|
35081
|
+
options.staticDir = resolveStaticDirForStart();
|
|
35078
35082
|
}
|
|
35079
35083
|
const dbPath = process.env.QUOROOM_DB_PATH || import_node_path9.default.join(options.dataDir ?? getDataDir(), "data.db");
|
|
35080
35084
|
const { server, token, db: serverDb } = createApiServer(options);
|
|
@@ -35171,6 +35175,7 @@ function startServer(options = {}) {
|
|
|
35171
35175
|
// Annotate the CommonJS export names for ESM import in node:
|
|
35172
35176
|
0 && (module.exports = {
|
|
35173
35177
|
_isLoopbackAddress,
|
|
35178
|
+
_resolveStaticDirForStart,
|
|
35174
35179
|
_shellQuote,
|
|
35175
35180
|
_windowsQuote,
|
|
35176
35181
|
createApiServer,
|
package/out/mcp/cli.js
CHANGED
|
@@ -52537,7 +52537,7 @@ var server_exports = {};
|
|
|
52537
52537
|
async function main() {
|
|
52538
52538
|
const server = new McpServer({
|
|
52539
52539
|
name: "quoroom",
|
|
52540
|
-
version: true ? "0.1.
|
|
52540
|
+
version: true ? "0.1.37" : "0.0.0"
|
|
52541
52541
|
});
|
|
52542
52542
|
registerMemoryTools(server);
|
|
52543
52543
|
registerSchedulerTools(server);
|
|
@@ -54189,7 +54189,7 @@ var require_package = __commonJS({
|
|
|
54189
54189
|
"package.json"(exports2, module2) {
|
|
54190
54190
|
module2.exports = {
|
|
54191
54191
|
name: "quoroom",
|
|
54192
|
-
version: "0.1.
|
|
54192
|
+
version: "0.1.37",
|
|
54193
54193
|
description: "Open-source local AI agent framework \u2014 Queen, Workers, Quorum. Experimental research tool.",
|
|
54194
54194
|
main: "./out/mcp/server.js",
|
|
54195
54195
|
bin: {
|
|
@@ -54213,7 +54213,7 @@ var require_package = __commonJS({
|
|
|
54213
54213
|
"build:parallel": "node scripts/build-parallel.js",
|
|
54214
54214
|
"build:fast": "node scripts/build-parallel.js --skip-typecheck",
|
|
54215
54215
|
"build:mcp": "node scripts/build-mcp.js",
|
|
54216
|
-
"build:ui": "vite build --config src/ui/vite.config.ts
|
|
54216
|
+
"build:ui": "vite build --config src/ui/vite.config.ts",
|
|
54217
54217
|
"kill:ports": "node scripts/kill-ports.js",
|
|
54218
54218
|
"kill:dev-ports": "npm run kill:ports -- 3700 3702 4700 3715 5173 5174",
|
|
54219
54219
|
"kill:quoroom-runtime": "node scripts/kill-quoroom-runtime.js",
|
|
@@ -59621,6 +59621,13 @@ function getAutoUpdateStatus() {
|
|
|
59621
59621
|
return status;
|
|
59622
59622
|
}
|
|
59623
59623
|
function initBootHealthCheck() {
|
|
59624
|
+
if (import_node_fs4.default.existsSync(USER_APP_DIR) && !import_node_fs4.default.existsSync(VERSION_FILE)) {
|
|
59625
|
+
try {
|
|
59626
|
+
console.error("[auto-update] Removing legacy unversioned user app cache");
|
|
59627
|
+
import_node_fs4.default.rmSync(USER_APP_DIR, { recursive: true, force: true });
|
|
59628
|
+
} catch {
|
|
59629
|
+
}
|
|
59630
|
+
}
|
|
59624
59631
|
if (import_node_fs4.default.existsSync(VERSION_FILE)) {
|
|
59625
59632
|
try {
|
|
59626
59633
|
const info = JSON.parse(import_node_fs4.default.readFileSync(VERSION_FILE, "utf-8"));
|
|
@@ -59748,7 +59755,7 @@ function semverGt(a, b) {
|
|
|
59748
59755
|
}
|
|
59749
59756
|
function getCurrentVersion() {
|
|
59750
59757
|
try {
|
|
59751
|
-
return true ? "0.1.
|
|
59758
|
+
return true ? "0.1.37" : null.version;
|
|
59752
59759
|
} catch {
|
|
59753
59760
|
return "0.0.0";
|
|
59754
59761
|
}
|
|
@@ -59955,7 +59962,7 @@ var init_updateChecker = __esm({
|
|
|
59955
59962
|
function getVersion3() {
|
|
59956
59963
|
if (cachedVersion) return cachedVersion;
|
|
59957
59964
|
try {
|
|
59958
|
-
cachedVersion = true ? "0.1.
|
|
59965
|
+
cachedVersion = true ? "0.1.37" : null.version;
|
|
59959
59966
|
} catch {
|
|
59960
59967
|
cachedVersion = "unknown";
|
|
59961
59968
|
}
|
|
@@ -65441,6 +65448,7 @@ var init_shell_path = __esm({
|
|
|
65441
65448
|
var server_exports2 = {};
|
|
65442
65449
|
__export(server_exports2, {
|
|
65443
65450
|
_isLoopbackAddress: () => isLoopbackAddress,
|
|
65451
|
+
_resolveStaticDirForStart: () => resolveStaticDirForStart,
|
|
65444
65452
|
_shellQuote: () => shellQuote,
|
|
65445
65453
|
_windowsQuote: () => windowsQuote,
|
|
65446
65454
|
createApiServer: () => createApiServer,
|
|
@@ -65615,26 +65623,6 @@ function maybeLogHttpProfile(method, pathname, statusCode, durationMs) {
|
|
|
65615
65623
|
const slowMark = durationMs >= PROFILE_HTTP_SLOW_MS ? " SLOW" : "";
|
|
65616
65624
|
console.error(`[http-prof] ${method} ${normalized} -> ${statusCode} (${durationMs}ms)${slowMark}`);
|
|
65617
65625
|
}
|
|
65618
|
-
function getCacheControl(filePath, ext) {
|
|
65619
|
-
const normalized = filePath.replace(/\\/g, "/");
|
|
65620
|
-
const base2 = import_node_path9.default.basename(filePath);
|
|
65621
|
-
if (base2 === "sw.js") return "no-cache, no-store, must-revalidate";
|
|
65622
|
-
if (ext === ".html") return "no-cache, no-store, must-revalidate";
|
|
65623
|
-
if (ext === ".webmanifest") return "public, max-age=3600";
|
|
65624
|
-
if (base2 === "social.png" || base2.startsWith("social-")) {
|
|
65625
|
-
return "no-cache, max-age=0, must-revalidate";
|
|
65626
|
-
}
|
|
65627
|
-
if (normalized.includes("/assets/") && /-[A-Za-z0-9_-]{8,}\./.test(base2)) {
|
|
65628
|
-
return "public, max-age=31536000, immutable";
|
|
65629
|
-
}
|
|
65630
|
-
if (base2.startsWith("icon-") || base2 === "apple-touch-icon.png" || [".png", ".jpg", ".jpeg", ".svg", ".ico", ".webp", ".woff", ".woff2"].includes(ext)) {
|
|
65631
|
-
return "public, max-age=604800";
|
|
65632
|
-
}
|
|
65633
|
-
if (ext === ".js" || ext === ".css") {
|
|
65634
|
-
return "public, max-age=3600";
|
|
65635
|
-
}
|
|
65636
|
-
return "no-cache, max-age=0";
|
|
65637
|
-
}
|
|
65638
65626
|
function serveStatic(staticDir, pathname, res) {
|
|
65639
65627
|
const safePath = import_node_path9.default.normalize(pathname).replace(/^(\.\.[/\\])+/, "");
|
|
65640
65628
|
let filePath = import_node_path9.default.join(staticDir, safePath);
|
|
@@ -65647,7 +65635,7 @@ function serveStatic(staticDir, pathname, res) {
|
|
|
65647
65635
|
if (import_node_path9.default.extname(safePath)) {
|
|
65648
65636
|
res.writeHead(404, {
|
|
65649
65637
|
"Content-Type": "text/plain; charset=utf-8",
|
|
65650
|
-
|
|
65638
|
+
...NO_CACHE_RESPONSE_HEADERS
|
|
65651
65639
|
});
|
|
65652
65640
|
res.end("Not Found");
|
|
65653
65641
|
return;
|
|
@@ -65658,8 +65646,9 @@ function serveStatic(staticDir, pathname, res) {
|
|
|
65658
65646
|
const contentType = MIME_TYPES[ext] ?? "application/octet-stream";
|
|
65659
65647
|
const headers = {
|
|
65660
65648
|
"Content-Type": contentType,
|
|
65661
|
-
|
|
65649
|
+
...NO_CACHE_RESPONSE_HEADERS
|
|
65662
65650
|
};
|
|
65651
|
+
if (ext === ".html") headers["Clear-Site-Data"] = '"cache"';
|
|
65663
65652
|
const stream = import_node_fs6.default.createReadStream(filePath);
|
|
65664
65653
|
stream.on("open", () => {
|
|
65665
65654
|
res.writeHead(200, headers);
|
|
@@ -65667,11 +65656,26 @@ function serveStatic(staticDir, pathname, res) {
|
|
|
65667
65656
|
});
|
|
65668
65657
|
stream.on("error", () => {
|
|
65669
65658
|
if (!res.headersSent) {
|
|
65670
|
-
res.writeHead(404, {
|
|
65659
|
+
res.writeHead(404, {
|
|
65660
|
+
"Content-Type": "text/plain; charset=utf-8",
|
|
65661
|
+
...NO_CACHE_RESPONSE_HEADERS
|
|
65662
|
+
});
|
|
65671
65663
|
}
|
|
65672
65664
|
res.end("Not Found");
|
|
65673
65665
|
});
|
|
65674
65666
|
}
|
|
65667
|
+
function resolveStaticDirForStart() {
|
|
65668
|
+
const userUiDir = import_node_path9.default.join(USER_APP_DIR, "ui");
|
|
65669
|
+
const bundledUiDir = import_node_path9.default.join(__dirname, "../ui");
|
|
65670
|
+
const readyVersion = getReadyUpdateVersion();
|
|
65671
|
+
if (readyVersion && import_node_fs6.default.existsSync(import_node_path9.default.join(userUiDir, "index.html"))) {
|
|
65672
|
+
return userUiDir;
|
|
65673
|
+
}
|
|
65674
|
+
if (import_node_fs6.default.existsSync(bundledUiDir)) {
|
|
65675
|
+
return bundledUiDir;
|
|
65676
|
+
}
|
|
65677
|
+
return void 0;
|
|
65678
|
+
}
|
|
65675
65679
|
function checkRateLimit2(ip, method) {
|
|
65676
65680
|
const isWrite = method !== "GET" && method !== "HEAD" && method !== "OPTIONS";
|
|
65677
65681
|
const limit = isWrite ? RATE_LIMIT_WRITE : RATE_LIMIT_READ;
|
|
@@ -65713,14 +65717,15 @@ function createApiServer(options = {}) {
|
|
|
65713
65717
|
});
|
|
65714
65718
|
}
|
|
65715
65719
|
if (req.method === "OPTIONS") {
|
|
65716
|
-
const headers = {};
|
|
65720
|
+
const headers = { ...NO_CACHE_RESPONSE_HEADERS };
|
|
65717
65721
|
setCorsHeaders(origin, headers);
|
|
65718
65722
|
res.writeHead(204, headers);
|
|
65719
65723
|
res.end();
|
|
65720
65724
|
return;
|
|
65721
65725
|
}
|
|
65722
65726
|
const responseHeaders = {
|
|
65723
|
-
"Content-Type": "application/json"
|
|
65727
|
+
"Content-Type": "application/json",
|
|
65728
|
+
...NO_CACHE_RESPONSE_HEADERS
|
|
65724
65729
|
};
|
|
65725
65730
|
if (isCloudDeployment()) {
|
|
65726
65731
|
Object.assign(responseHeaders, CLOUD_SECURITY_HEADERS);
|
|
@@ -65750,10 +65755,7 @@ function createApiServer(options = {}) {
|
|
|
65750
65755
|
}
|
|
65751
65756
|
if (pathname === "/api/auth/handshake" && req.method === "GET") {
|
|
65752
65757
|
const handshakeHeaders = {
|
|
65753
|
-
...responseHeaders
|
|
65754
|
-
"Cache-Control": "no-store, no-cache, must-revalidate, proxy-revalidate",
|
|
65755
|
-
"Pragma": "no-cache",
|
|
65756
|
-
"Expires": "0"
|
|
65758
|
+
...responseHeaders
|
|
65757
65759
|
};
|
|
65758
65760
|
if (isCloudDeployment()) {
|
|
65759
65761
|
res.writeHead(403, handshakeHeaders);
|
|
@@ -65919,7 +65921,10 @@ function createApiServer(options = {}) {
|
|
|
65919
65921
|
if (options.staticDir) {
|
|
65920
65922
|
serveStatic(options.staticDir, pathname, res);
|
|
65921
65923
|
} else {
|
|
65922
|
-
res.writeHead(404, {
|
|
65924
|
+
res.writeHead(404, {
|
|
65925
|
+
"Content-Type": "text/plain; charset=utf-8",
|
|
65926
|
+
...NO_CACHE_RESPONSE_HEADERS
|
|
65927
|
+
});
|
|
65923
65928
|
res.end("Not Found");
|
|
65924
65929
|
}
|
|
65925
65930
|
});
|
|
@@ -66033,13 +66038,7 @@ function startServer(options = {}) {
|
|
|
66033
66038
|
const bindHost = process.env.QUOROOM_BIND_HOST || (deploymentMode === "cloud" ? DEFAULT_BIND_HOST_CLOUD : DEFAULT_BIND_HOST_LOCAL);
|
|
66034
66039
|
initBootHealthCheck();
|
|
66035
66040
|
if (!options.staticDir) {
|
|
66036
|
-
|
|
66037
|
-
const bundledUiDir = import_node_path9.default.join(__dirname, "../ui");
|
|
66038
|
-
if (import_node_fs6.default.existsSync(import_node_path9.default.join(userUiDir, "index.html"))) {
|
|
66039
|
-
options.staticDir = userUiDir;
|
|
66040
|
-
} else if (import_node_fs6.default.existsSync(bundledUiDir)) {
|
|
66041
|
-
options.staticDir = bundledUiDir;
|
|
66042
|
-
}
|
|
66041
|
+
options.staticDir = resolveStaticDirForStart();
|
|
66043
66042
|
}
|
|
66044
66043
|
const dbPath = process.env.QUOROOM_DB_PATH || import_node_path9.default.join(options.dataDir ?? getDataDir(), "data.db");
|
|
66045
66044
|
const { server, token, db: serverDb } = createApiServer(options);
|
|
@@ -66133,7 +66132,7 @@ function startServer(options = {}) {
|
|
|
66133
66132
|
process.on("SIGINT", () => shutdown(0));
|
|
66134
66133
|
process.on("SIGTERM", () => shutdown(0));
|
|
66135
66134
|
}
|
|
66136
|
-
var import_node_http2, import_node_https3, import_node_url, import_node_fs6, import_node_path9, import_node_os8, import_node_child_process8, DEFAULT_PORT, DEFAULT_BIND_HOST_LOCAL, DEFAULT_BIND_HOST_CLOUD, requestProcessShutdown, MIME_TYPES, PROFILE_HTTP, PROFILE_HTTP_SLOW_MS, PROFILE_HTTP_ENDPOINTS, RATE_LIMIT_WINDOW_MS2, RATE_LIMIT_READ, RATE_LIMIT_WRITE, rateBuckets2, CLOUD_SECURITY_HEADERS;
|
|
66135
|
+
var import_node_http2, import_node_https3, import_node_url, import_node_fs6, import_node_path9, import_node_os8, import_node_child_process8, DEFAULT_PORT, DEFAULT_BIND_HOST_LOCAL, DEFAULT_BIND_HOST_CLOUD, requestProcessShutdown, MIME_TYPES, NO_CACHE_RESPONSE_HEADERS, PROFILE_HTTP, PROFILE_HTTP_SLOW_MS, PROFILE_HTTP_ENDPOINTS, RATE_LIMIT_WINDOW_MS2, RATE_LIMIT_READ, RATE_LIMIT_WRITE, rateBuckets2, CLOUD_SECURITY_HEADERS;
|
|
66137
66136
|
var init_server4 = __esm({
|
|
66138
66137
|
"src/server/index.ts"() {
|
|
66139
66138
|
"use strict";
|
|
@@ -66184,6 +66183,11 @@ var init_server4 = __esm({
|
|
|
66184
66183
|
".webp": "image/webp",
|
|
66185
66184
|
".webmanifest": "application/manifest+json"
|
|
66186
66185
|
};
|
|
66186
|
+
NO_CACHE_RESPONSE_HEADERS = {
|
|
66187
|
+
"Cache-Control": "no-cache, no-store, must-revalidate",
|
|
66188
|
+
"Pragma": "no-cache",
|
|
66189
|
+
"Expires": "0"
|
|
66190
|
+
};
|
|
66187
66191
|
PROFILE_HTTP = process.env.QUOROOM_PROFILE_HTTP === "1";
|
|
66188
66192
|
PROFILE_HTTP_SLOW_MS = Math.max(1, Number.parseInt(process.env.QUOROOM_PROFILE_HTTP_SLOW_MS ?? "300", 10) || 300);
|
|
66189
66193
|
PROFILE_HTTP_ENDPOINTS = /* @__PURE__ */ new Set([
|
|
@@ -66224,7 +66228,7 @@ __export(update_exports, {
|
|
|
66224
66228
|
});
|
|
66225
66229
|
function getCurrentVersion2() {
|
|
66226
66230
|
try {
|
|
66227
|
-
return true ? "0.1.
|
|
66231
|
+
return true ? "0.1.37" : null.version;
|
|
66228
66232
|
} catch {
|
|
66229
66233
|
return "0.0.0";
|
|
66230
66234
|
}
|
package/out/mcp/server.js
CHANGED
|
@@ -49085,7 +49085,7 @@ init_db();
|
|
|
49085
49085
|
async function main() {
|
|
49086
49086
|
const server = new McpServer({
|
|
49087
49087
|
name: "quoroom",
|
|
49088
|
-
version: true ? "0.1.
|
|
49088
|
+
version: true ? "0.1.37" : "0.0.0"
|
|
49089
49089
|
});
|
|
49090
49090
|
registerMemoryTools(server);
|
|
49091
49091
|
registerSchedulerTools(server);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "quoroom",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.37",
|
|
4
4
|
"description": "Open-source local AI agent framework — Queen, Workers, Quorum. Experimental research tool.",
|
|
5
5
|
"main": "./out/mcp/server.js",
|
|
6
6
|
"bin": {
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"build:parallel": "node scripts/build-parallel.js",
|
|
25
25
|
"build:fast": "node scripts/build-parallel.js --skip-typecheck",
|
|
26
26
|
"build:mcp": "node scripts/build-mcp.js",
|
|
27
|
-
"build:ui": "vite build --config src/ui/vite.config.ts
|
|
27
|
+
"build:ui": "vite build --config src/ui/vite.config.ts",
|
|
28
28
|
"kill:ports": "node scripts/kill-ports.js",
|
|
29
29
|
"kill:dev-ports": "npm run kill:ports -- 3700 3702 4700 3715 5173 5174",
|
|
30
30
|
"kill:quoroom-runtime": "node scripts/kill-quoroom-runtime.js",
|