@askexenow/exe-os 0.9.121 → 0.9.122
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/bin/cli.js +1 -2
- package/dist/bin/customer-readiness.js +48 -0
- package/dist/mcp/register-tools.js +11 -4
- package/dist/mcp/server.js +11 -4
- package/package.json +1 -1
package/dist/bin/cli.js
CHANGED
|
@@ -37376,8 +37376,7 @@ function summarizeChunk(chunk, filePath) {
|
|
|
37376
37376
|
}
|
|
37377
37377
|
}
|
|
37378
37378
|
function isChunkable(filePath) {
|
|
37379
|
-
|
|
37380
|
-
return lang === "typescript" || lang === "javascript";
|
|
37379
|
+
return Boolean(languageForFile(filePath));
|
|
37381
37380
|
}
|
|
37382
37381
|
var LANGUAGE_BY_EXTENSION, TEXT_LIKE_LANGUAGES;
|
|
37383
37382
|
var init_code_chunker = __esm({
|
|
@@ -256,6 +256,54 @@ test("Platform procedures \u2014 all MCP tool actions documented", () => {
|
|
|
256
256
|
}
|
|
257
257
|
return true;
|
|
258
258
|
});
|
|
259
|
+
test("Build output \u2014 all URL-based dynamic imports have matching tsup entry points", () => {
|
|
260
|
+
const tsup = readSrc("tsup.config.ts");
|
|
261
|
+
const srcFiles = execSync(
|
|
262
|
+
`find src -name "*.ts" -not -path "*/node_modules/*" 2>/dev/null || true`,
|
|
263
|
+
{ encoding: "utf8", cwd: ROOT }
|
|
264
|
+
).trim().split("\n").filter(Boolean);
|
|
265
|
+
const missing = [];
|
|
266
|
+
for (const file of srcFiles) {
|
|
267
|
+
if (file.includes("customer-readiness")) continue;
|
|
268
|
+
const content = readSrc(file);
|
|
269
|
+
const urlImports = content.matchAll(/new URL\(\s*["'](\.\.?\/[^"'*]+\.js)["']\s*,\s*import\.meta\.url\s*\)/g);
|
|
270
|
+
for (const match of urlImports) {
|
|
271
|
+
const relPath = match[1];
|
|
272
|
+
if (relPath.includes("package.json")) continue;
|
|
273
|
+
const srcDir = path.dirname(file);
|
|
274
|
+
const resolved = path.normalize(path.join(srcDir, relPath));
|
|
275
|
+
const distKey = resolved.replace(/^src\//, "").replace(/\.js$/, "");
|
|
276
|
+
if (distKey.includes("..")) continue;
|
|
277
|
+
if (!tsup.includes(`"${distKey}"`)) {
|
|
278
|
+
missing.push(`${file} \u2192 ${relPath} (needs tsup entry: "${distKey}")`);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
if (missing.length > 0) {
|
|
283
|
+
return `Dynamic imports without tsup entries will crash at runtime:
|
|
284
|
+
${missing.join("\n ")}`;
|
|
285
|
+
}
|
|
286
|
+
return true;
|
|
287
|
+
});
|
|
288
|
+
test("Build output \u2014 every tsup entry point has a corresponding dist/ file", () => {
|
|
289
|
+
const tsup = readSrc("tsup.config.ts");
|
|
290
|
+
const entryPattern = /"([^"]+)":\s*"src\//g;
|
|
291
|
+
const entries = [];
|
|
292
|
+
for (const match of tsup.matchAll(entryPattern)) {
|
|
293
|
+
if (match[1]) entries.push(match[1]);
|
|
294
|
+
}
|
|
295
|
+
const missing = [];
|
|
296
|
+
for (const entry of entries) {
|
|
297
|
+
const distPath = path.join(ROOT, "dist", entry + ".js");
|
|
298
|
+
if (!existsSync(distPath)) {
|
|
299
|
+
missing.push(`dist/${entry}.js`);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
if (missing.length > 0) {
|
|
303
|
+
return `Missing dist files (build incomplete): ${missing.join(", ")}`;
|
|
304
|
+
}
|
|
305
|
+
return true;
|
|
306
|
+
});
|
|
259
307
|
console.log(`
|
|
260
308
|
\x1B[1m${pass + fail} tests: ${pass} passed, ${fail} failed\x1B[0m
|
|
261
309
|
`);
|
|
@@ -11796,6 +11796,12 @@ var init_tmux_routing = __esm({
|
|
|
11796
11796
|
});
|
|
11797
11797
|
|
|
11798
11798
|
// src/lib/task-scope.ts
|
|
11799
|
+
var task_scope_exports = {};
|
|
11800
|
+
__export(task_scope_exports, {
|
|
11801
|
+
getCurrentSessionScope: () => getCurrentSessionScope,
|
|
11802
|
+
sessionScopeFilter: () => sessionScopeFilter,
|
|
11803
|
+
strictSessionScopeFilter: () => strictSessionScopeFilter
|
|
11804
|
+
});
|
|
11799
11805
|
function getCurrentSessionScope() {
|
|
11800
11806
|
try {
|
|
11801
11807
|
return resolveExeSession();
|
|
@@ -20069,8 +20075,7 @@ function summarizeChunk(chunk, filePath) {
|
|
|
20069
20075
|
}
|
|
20070
20076
|
}
|
|
20071
20077
|
function isChunkable(filePath) {
|
|
20072
|
-
|
|
20073
|
-
return lang === "typescript" || lang === "javascript";
|
|
20078
|
+
return Boolean(languageForFile(filePath));
|
|
20074
20079
|
}
|
|
20075
20080
|
|
|
20076
20081
|
// src/lib/graph-rag.ts
|
|
@@ -21390,13 +21395,15 @@ async function getAgentSessionLoad() {
|
|
|
21390
21395
|
return { sessions: [], totalLive: 0, busySessions: 0, idleSessions: 0 };
|
|
21391
21396
|
}
|
|
21392
21397
|
const { getClient: getClient2 } = await Promise.resolve().then(() => (init_database(), database_exports));
|
|
21398
|
+
const { sessionScopeFilter: sessionScopeFilter2 } = await Promise.resolve().then(() => (init_task_scope(), task_scope_exports));
|
|
21393
21399
|
const client = getClient2();
|
|
21400
|
+
const scope = sessionScopeFilter2();
|
|
21394
21401
|
for (const s of liveAgentSessions) {
|
|
21395
21402
|
const agent = baseAgentName2(s.agentId);
|
|
21396
21403
|
const result3 = await client.execute({
|
|
21397
21404
|
sql: `SELECT COUNT(*) as cnt FROM tasks
|
|
21398
|
-
WHERE assigned_to = ? AND status IN ('open', 'in_progress')`,
|
|
21399
|
-
args: [agent]
|
|
21405
|
+
WHERE assigned_to = ? AND status IN ('open', 'in_progress')${scope.sql}`,
|
|
21406
|
+
args: [agent, ...scope.args]
|
|
21400
21407
|
});
|
|
21401
21408
|
const taskCount = Number(result3.rows[0]?.cnt ?? 0);
|
|
21402
21409
|
sessions.push({
|
package/dist/mcp/server.js
CHANGED
|
@@ -11796,6 +11796,12 @@ var init_tmux_routing = __esm({
|
|
|
11796
11796
|
});
|
|
11797
11797
|
|
|
11798
11798
|
// src/lib/task-scope.ts
|
|
11799
|
+
var task_scope_exports = {};
|
|
11800
|
+
__export(task_scope_exports, {
|
|
11801
|
+
getCurrentSessionScope: () => getCurrentSessionScope,
|
|
11802
|
+
sessionScopeFilter: () => sessionScopeFilter,
|
|
11803
|
+
strictSessionScopeFilter: () => strictSessionScopeFilter
|
|
11804
|
+
});
|
|
11799
11805
|
function getCurrentSessionScope() {
|
|
11800
11806
|
try {
|
|
11801
11807
|
return resolveExeSession();
|
|
@@ -20081,8 +20087,7 @@ function summarizeChunk(chunk, filePath) {
|
|
|
20081
20087
|
}
|
|
20082
20088
|
}
|
|
20083
20089
|
function isChunkable(filePath) {
|
|
20084
|
-
|
|
20085
|
-
return lang === "typescript" || lang === "javascript";
|
|
20090
|
+
return Boolean(languageForFile(filePath));
|
|
20086
20091
|
}
|
|
20087
20092
|
|
|
20088
20093
|
// src/lib/graph-rag.ts
|
|
@@ -21483,13 +21488,15 @@ async function getAgentSessionLoad() {
|
|
|
21483
21488
|
return { sessions: [], totalLive: 0, busySessions: 0, idleSessions: 0 };
|
|
21484
21489
|
}
|
|
21485
21490
|
const { getClient: getClient2 } = await Promise.resolve().then(() => (init_database(), database_exports));
|
|
21491
|
+
const { sessionScopeFilter: sessionScopeFilter2 } = await Promise.resolve().then(() => (init_task_scope(), task_scope_exports));
|
|
21486
21492
|
const client = getClient2();
|
|
21493
|
+
const scope = sessionScopeFilter2();
|
|
21487
21494
|
for (const s of liveAgentSessions) {
|
|
21488
21495
|
const agent = baseAgentName2(s.agentId);
|
|
21489
21496
|
const result3 = await client.execute({
|
|
21490
21497
|
sql: `SELECT COUNT(*) as cnt FROM tasks
|
|
21491
|
-
WHERE assigned_to = ? AND status IN ('open', 'in_progress')`,
|
|
21492
|
-
args: [agent]
|
|
21498
|
+
WHERE assigned_to = ? AND status IN ('open', 'in_progress')${scope.sql}`,
|
|
21499
|
+
args: [agent, ...scope.args]
|
|
21493
21500
|
});
|
|
21494
21501
|
const taskCount = Number(result3.rows[0]?.cnt ?? 0);
|
|
21495
21502
|
sessions.push({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askexenow/exe-os",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.122",
|
|
4
4
|
"description": "AI employee operating system — persistent memory, task management, and multi-agent coordination for Claude Code.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"type": "module",
|