@askexenow/exe-os 0.9.28 → 0.9.30
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 +48 -13
- package/dist/bin/exe-start-codex.js +48 -13
- package/dist/bin/install.js +48 -13
- package/package.json +1 -1
package/dist/bin/cli.js
CHANGED
|
@@ -30264,8 +30264,7 @@ async function mergeCodexHooks(packageRoot, homeDir = os20.homedir()) {
|
|
|
30264
30264
|
{
|
|
30265
30265
|
type: "command",
|
|
30266
30266
|
command: `node "${path45.join(packageRoot, "dist", "hooks", "session-start.js")}"${logSuffix}`,
|
|
30267
|
-
timeout: 30
|
|
30268
|
-
statusMessage: "exe-os: loading memory brief"
|
|
30267
|
+
timeout: 30
|
|
30269
30268
|
}
|
|
30270
30269
|
]
|
|
30271
30270
|
},
|
|
@@ -30396,6 +30395,46 @@ status_line = [${DEFAULT_CODEX_STATUS_LINE.map((s) => `"${s}"`).join(", ")}]`;
|
|
|
30396
30395
|
await writeFile9(configPath, content);
|
|
30397
30396
|
return "installed";
|
|
30398
30397
|
}
|
|
30398
|
+
function desiredCodexMcpSection(serverJsPath) {
|
|
30399
|
+
return [
|
|
30400
|
+
"[mcp_servers.exe-os]",
|
|
30401
|
+
`command = "node"`,
|
|
30402
|
+
`args = ["${serverJsPath}"]`,
|
|
30403
|
+
`startup_timeout_sec = ${CODEX_EXE_MCP_STARTUP_TIMEOUT_SEC}`,
|
|
30404
|
+
`tool_timeout_sec = ${CODEX_EXE_MCP_TOOL_TIMEOUT_SEC}`,
|
|
30405
|
+
""
|
|
30406
|
+
].join("\n");
|
|
30407
|
+
}
|
|
30408
|
+
function reconcileCodexMcpSection(sectionContent, serverJsPath) {
|
|
30409
|
+
const desiredLines = {
|
|
30410
|
+
command: `command = "node"`,
|
|
30411
|
+
args: `args = ["${serverJsPath}"]`,
|
|
30412
|
+
startup: `startup_timeout_sec = ${CODEX_EXE_MCP_STARTUP_TIMEOUT_SEC}`,
|
|
30413
|
+
tool: `tool_timeout_sec = ${CODEX_EXE_MCP_TOOL_TIMEOUT_SEC}`
|
|
30414
|
+
};
|
|
30415
|
+
let next = sectionContent;
|
|
30416
|
+
let changed = false;
|
|
30417
|
+
const replaceOrAppend = (regex, desired) => {
|
|
30418
|
+
if (regex.test(next)) {
|
|
30419
|
+
const updated = next.replace(regex, desired);
|
|
30420
|
+
if (updated !== next) {
|
|
30421
|
+
next = updated;
|
|
30422
|
+
changed = true;
|
|
30423
|
+
}
|
|
30424
|
+
return;
|
|
30425
|
+
}
|
|
30426
|
+
next = next.endsWith("\n") ? `${next}${desired}
|
|
30427
|
+
` : `${next}
|
|
30428
|
+
${desired}
|
|
30429
|
+
`;
|
|
30430
|
+
changed = true;
|
|
30431
|
+
};
|
|
30432
|
+
replaceOrAppend(/^command\s*=.*$/m, desiredLines.command);
|
|
30433
|
+
replaceOrAppend(/^args\s*=.*$/m, desiredLines.args);
|
|
30434
|
+
replaceOrAppend(/^startup_timeout_sec\s*=.*$/m, desiredLines.startup);
|
|
30435
|
+
replaceOrAppend(/^tool_timeout_sec\s*=.*$/m, desiredLines.tool);
|
|
30436
|
+
return { content: next, changed };
|
|
30437
|
+
}
|
|
30399
30438
|
async function registerCodexMcpServer(packageRoot, homeDir = os20.homedir()) {
|
|
30400
30439
|
const codexDir = path45.join(homeDir, ".codex");
|
|
30401
30440
|
const configPath = path45.join(codexDir, "config.toml");
|
|
@@ -30412,21 +30451,15 @@ async function registerCodexMcpServer(packageRoot, homeDir = os20.homedir()) {
|
|
|
30412
30451
|
const nextSectionMatch = afterHeader.match(/\n\[(?!mcp_servers\.exe-os)/);
|
|
30413
30452
|
const sectionEnd = nextSectionMatch ? headerIndex + sectionHeader.length + nextSectionMatch.index : content.length;
|
|
30414
30453
|
const sectionContent = content.slice(headerIndex, sectionEnd);
|
|
30415
|
-
|
|
30454
|
+
const reconciled = reconcileCodexMcpSection(sectionContent, serverJsPath);
|
|
30455
|
+
if (!reconciled.changed) {
|
|
30416
30456
|
return "already-registered";
|
|
30417
30457
|
}
|
|
30418
|
-
|
|
30419
|
-
command = "node"
|
|
30420
|
-
args = ["${serverJsPath}"]
|
|
30421
|
-
`;
|
|
30422
|
-
content = content.slice(0, headerIndex) + newSection2 + content.slice(sectionEnd);
|
|
30458
|
+
content = content.slice(0, headerIndex) + reconciled.content + content.slice(sectionEnd);
|
|
30423
30459
|
await writeFile9(configPath, content);
|
|
30424
30460
|
return "updated";
|
|
30425
30461
|
}
|
|
30426
|
-
const newSection =
|
|
30427
|
-
command = "node"
|
|
30428
|
-
args = ["${serverJsPath}"]
|
|
30429
|
-
`;
|
|
30462
|
+
const newSection = desiredCodexMcpSection(serverJsPath);
|
|
30430
30463
|
const separator = content.length > 0 && !content.endsWith("\n") ? "\n\n" : content.length > 0 ? "\n" : "";
|
|
30431
30464
|
content = content + separator + newSection;
|
|
30432
30465
|
await writeFile9(configPath, content);
|
|
@@ -30484,7 +30517,7 @@ async function runCodexInstaller(homeDir) {
|
|
|
30484
30517
|
`
|
|
30485
30518
|
);
|
|
30486
30519
|
}
|
|
30487
|
-
var DEFAULT_CODEX_STATUS_LINE;
|
|
30520
|
+
var DEFAULT_CODEX_STATUS_LINE, CODEX_EXE_MCP_STARTUP_TIMEOUT_SEC, CODEX_EXE_MCP_TOOL_TIMEOUT_SEC;
|
|
30488
30521
|
var init_installer3 = __esm({
|
|
30489
30522
|
"src/adapters/codex/installer.ts"() {
|
|
30490
30523
|
"use strict";
|
|
@@ -30498,6 +30531,8 @@ var init_installer3 = __esm({
|
|
|
30498
30531
|
"run-state",
|
|
30499
30532
|
"context-used"
|
|
30500
30533
|
];
|
|
30534
|
+
CODEX_EXE_MCP_STARTUP_TIMEOUT_SEC = 30;
|
|
30535
|
+
CODEX_EXE_MCP_TOOL_TIMEOUT_SEC = 120;
|
|
30501
30536
|
}
|
|
30502
30537
|
});
|
|
30503
30538
|
|
|
@@ -3565,8 +3565,7 @@ async function mergeCodexHooks(packageRoot, homeDir = os10.homedir()) {
|
|
|
3565
3565
|
{
|
|
3566
3566
|
type: "command",
|
|
3567
3567
|
command: `node "${path13.join(packageRoot, "dist", "hooks", "session-start.js")}"${logSuffix}`,
|
|
3568
|
-
timeout: 30
|
|
3569
|
-
statusMessage: "exe-os: loading memory brief"
|
|
3568
|
+
timeout: 30
|
|
3570
3569
|
}
|
|
3571
3570
|
]
|
|
3572
3571
|
},
|
|
@@ -3697,6 +3696,46 @@ status_line = [${DEFAULT_CODEX_STATUS_LINE.map((s) => `"${s}"`).join(", ")}]`;
|
|
|
3697
3696
|
await writeFile5(configPath, content);
|
|
3698
3697
|
return "installed";
|
|
3699
3698
|
}
|
|
3699
|
+
function desiredCodexMcpSection(serverJsPath) {
|
|
3700
|
+
return [
|
|
3701
|
+
"[mcp_servers.exe-os]",
|
|
3702
|
+
`command = "node"`,
|
|
3703
|
+
`args = ["${serverJsPath}"]`,
|
|
3704
|
+
`startup_timeout_sec = ${CODEX_EXE_MCP_STARTUP_TIMEOUT_SEC}`,
|
|
3705
|
+
`tool_timeout_sec = ${CODEX_EXE_MCP_TOOL_TIMEOUT_SEC}`,
|
|
3706
|
+
""
|
|
3707
|
+
].join("\n");
|
|
3708
|
+
}
|
|
3709
|
+
function reconcileCodexMcpSection(sectionContent, serverJsPath) {
|
|
3710
|
+
const desiredLines = {
|
|
3711
|
+
command: `command = "node"`,
|
|
3712
|
+
args: `args = ["${serverJsPath}"]`,
|
|
3713
|
+
startup: `startup_timeout_sec = ${CODEX_EXE_MCP_STARTUP_TIMEOUT_SEC}`,
|
|
3714
|
+
tool: `tool_timeout_sec = ${CODEX_EXE_MCP_TOOL_TIMEOUT_SEC}`
|
|
3715
|
+
};
|
|
3716
|
+
let next = sectionContent;
|
|
3717
|
+
let changed = false;
|
|
3718
|
+
const replaceOrAppend = (regex, desired) => {
|
|
3719
|
+
if (regex.test(next)) {
|
|
3720
|
+
const updated = next.replace(regex, desired);
|
|
3721
|
+
if (updated !== next) {
|
|
3722
|
+
next = updated;
|
|
3723
|
+
changed = true;
|
|
3724
|
+
}
|
|
3725
|
+
return;
|
|
3726
|
+
}
|
|
3727
|
+
next = next.endsWith("\n") ? `${next}${desired}
|
|
3728
|
+
` : `${next}
|
|
3729
|
+
${desired}
|
|
3730
|
+
`;
|
|
3731
|
+
changed = true;
|
|
3732
|
+
};
|
|
3733
|
+
replaceOrAppend(/^command\s*=.*$/m, desiredLines.command);
|
|
3734
|
+
replaceOrAppend(/^args\s*=.*$/m, desiredLines.args);
|
|
3735
|
+
replaceOrAppend(/^startup_timeout_sec\s*=.*$/m, desiredLines.startup);
|
|
3736
|
+
replaceOrAppend(/^tool_timeout_sec\s*=.*$/m, desiredLines.tool);
|
|
3737
|
+
return { content: next, changed };
|
|
3738
|
+
}
|
|
3700
3739
|
async function registerCodexMcpServer(packageRoot, homeDir = os10.homedir()) {
|
|
3701
3740
|
const codexDir = path13.join(homeDir, ".codex");
|
|
3702
3741
|
const configPath = path13.join(codexDir, "config.toml");
|
|
@@ -3713,21 +3752,15 @@ async function registerCodexMcpServer(packageRoot, homeDir = os10.homedir()) {
|
|
|
3713
3752
|
const nextSectionMatch = afterHeader.match(/\n\[(?!mcp_servers\.exe-os)/);
|
|
3714
3753
|
const sectionEnd = nextSectionMatch ? headerIndex + sectionHeader.length + nextSectionMatch.index : content.length;
|
|
3715
3754
|
const sectionContent = content.slice(headerIndex, sectionEnd);
|
|
3716
|
-
|
|
3755
|
+
const reconciled = reconcileCodexMcpSection(sectionContent, serverJsPath);
|
|
3756
|
+
if (!reconciled.changed) {
|
|
3717
3757
|
return "already-registered";
|
|
3718
3758
|
}
|
|
3719
|
-
|
|
3720
|
-
command = "node"
|
|
3721
|
-
args = ["${serverJsPath}"]
|
|
3722
|
-
`;
|
|
3723
|
-
content = content.slice(0, headerIndex) + newSection2 + content.slice(sectionEnd);
|
|
3759
|
+
content = content.slice(0, headerIndex) + reconciled.content + content.slice(sectionEnd);
|
|
3724
3760
|
await writeFile5(configPath, content);
|
|
3725
3761
|
return "updated";
|
|
3726
3762
|
}
|
|
3727
|
-
const newSection =
|
|
3728
|
-
command = "node"
|
|
3729
|
-
args = ["${serverJsPath}"]
|
|
3730
|
-
`;
|
|
3763
|
+
const newSection = desiredCodexMcpSection(serverJsPath);
|
|
3731
3764
|
const separator = content.length > 0 && !content.endsWith("\n") ? "\n\n" : content.length > 0 ? "\n" : "";
|
|
3732
3765
|
content = content + separator + newSection;
|
|
3733
3766
|
await writeFile5(configPath, content);
|
|
@@ -3785,7 +3818,7 @@ async function runCodexInstaller(homeDir) {
|
|
|
3785
3818
|
`
|
|
3786
3819
|
);
|
|
3787
3820
|
}
|
|
3788
|
-
var DEFAULT_CODEX_STATUS_LINE;
|
|
3821
|
+
var DEFAULT_CODEX_STATUS_LINE, CODEX_EXE_MCP_STARTUP_TIMEOUT_SEC, CODEX_EXE_MCP_TOOL_TIMEOUT_SEC;
|
|
3789
3822
|
var init_installer2 = __esm({
|
|
3790
3823
|
"src/adapters/codex/installer.ts"() {
|
|
3791
3824
|
"use strict";
|
|
@@ -3799,6 +3832,8 @@ var init_installer2 = __esm({
|
|
|
3799
3832
|
"run-state",
|
|
3800
3833
|
"context-used"
|
|
3801
3834
|
];
|
|
3835
|
+
CODEX_EXE_MCP_STARTUP_TIMEOUT_SEC = 30;
|
|
3836
|
+
CODEX_EXE_MCP_TOOL_TIMEOUT_SEC = 120;
|
|
3802
3837
|
}
|
|
3803
3838
|
});
|
|
3804
3839
|
|
package/dist/bin/install.js
CHANGED
|
@@ -1454,8 +1454,7 @@ async function mergeCodexHooks(packageRoot, homeDir = os6.homedir()) {
|
|
|
1454
1454
|
{
|
|
1455
1455
|
type: "command",
|
|
1456
1456
|
command: `node "${path8.join(packageRoot, "dist", "hooks", "session-start.js")}"${logSuffix}`,
|
|
1457
|
-
timeout: 30
|
|
1458
|
-
statusMessage: "exe-os: loading memory brief"
|
|
1457
|
+
timeout: 30
|
|
1459
1458
|
}
|
|
1460
1459
|
]
|
|
1461
1460
|
},
|
|
@@ -1586,6 +1585,46 @@ status_line = [${DEFAULT_CODEX_STATUS_LINE.map((s) => `"${s}"`).join(", ")}]`;
|
|
|
1586
1585
|
await writeFile4(configPath, content);
|
|
1587
1586
|
return "installed";
|
|
1588
1587
|
}
|
|
1588
|
+
function desiredCodexMcpSection(serverJsPath) {
|
|
1589
|
+
return [
|
|
1590
|
+
"[mcp_servers.exe-os]",
|
|
1591
|
+
`command = "node"`,
|
|
1592
|
+
`args = ["${serverJsPath}"]`,
|
|
1593
|
+
`startup_timeout_sec = ${CODEX_EXE_MCP_STARTUP_TIMEOUT_SEC}`,
|
|
1594
|
+
`tool_timeout_sec = ${CODEX_EXE_MCP_TOOL_TIMEOUT_SEC}`,
|
|
1595
|
+
""
|
|
1596
|
+
].join("\n");
|
|
1597
|
+
}
|
|
1598
|
+
function reconcileCodexMcpSection(sectionContent, serverJsPath) {
|
|
1599
|
+
const desiredLines = {
|
|
1600
|
+
command: `command = "node"`,
|
|
1601
|
+
args: `args = ["${serverJsPath}"]`,
|
|
1602
|
+
startup: `startup_timeout_sec = ${CODEX_EXE_MCP_STARTUP_TIMEOUT_SEC}`,
|
|
1603
|
+
tool: `tool_timeout_sec = ${CODEX_EXE_MCP_TOOL_TIMEOUT_SEC}`
|
|
1604
|
+
};
|
|
1605
|
+
let next = sectionContent;
|
|
1606
|
+
let changed = false;
|
|
1607
|
+
const replaceOrAppend = (regex, desired) => {
|
|
1608
|
+
if (regex.test(next)) {
|
|
1609
|
+
const updated = next.replace(regex, desired);
|
|
1610
|
+
if (updated !== next) {
|
|
1611
|
+
next = updated;
|
|
1612
|
+
changed = true;
|
|
1613
|
+
}
|
|
1614
|
+
return;
|
|
1615
|
+
}
|
|
1616
|
+
next = next.endsWith("\n") ? `${next}${desired}
|
|
1617
|
+
` : `${next}
|
|
1618
|
+
${desired}
|
|
1619
|
+
`;
|
|
1620
|
+
changed = true;
|
|
1621
|
+
};
|
|
1622
|
+
replaceOrAppend(/^command\s*=.*$/m, desiredLines.command);
|
|
1623
|
+
replaceOrAppend(/^args\s*=.*$/m, desiredLines.args);
|
|
1624
|
+
replaceOrAppend(/^startup_timeout_sec\s*=.*$/m, desiredLines.startup);
|
|
1625
|
+
replaceOrAppend(/^tool_timeout_sec\s*=.*$/m, desiredLines.tool);
|
|
1626
|
+
return { content: next, changed };
|
|
1627
|
+
}
|
|
1589
1628
|
async function registerCodexMcpServer(packageRoot, homeDir = os6.homedir()) {
|
|
1590
1629
|
const codexDir = path8.join(homeDir, ".codex");
|
|
1591
1630
|
const configPath = path8.join(codexDir, "config.toml");
|
|
@@ -1602,21 +1641,15 @@ async function registerCodexMcpServer(packageRoot, homeDir = os6.homedir()) {
|
|
|
1602
1641
|
const nextSectionMatch = afterHeader.match(/\n\[(?!mcp_servers\.exe-os)/);
|
|
1603
1642
|
const sectionEnd = nextSectionMatch ? headerIndex + sectionHeader.length + nextSectionMatch.index : content.length;
|
|
1604
1643
|
const sectionContent = content.slice(headerIndex, sectionEnd);
|
|
1605
|
-
|
|
1644
|
+
const reconciled = reconcileCodexMcpSection(sectionContent, serverJsPath);
|
|
1645
|
+
if (!reconciled.changed) {
|
|
1606
1646
|
return "already-registered";
|
|
1607
1647
|
}
|
|
1608
|
-
|
|
1609
|
-
command = "node"
|
|
1610
|
-
args = ["${serverJsPath}"]
|
|
1611
|
-
`;
|
|
1612
|
-
content = content.slice(0, headerIndex) + newSection2 + content.slice(sectionEnd);
|
|
1648
|
+
content = content.slice(0, headerIndex) + reconciled.content + content.slice(sectionEnd);
|
|
1613
1649
|
await writeFile4(configPath, content);
|
|
1614
1650
|
return "updated";
|
|
1615
1651
|
}
|
|
1616
|
-
const newSection =
|
|
1617
|
-
command = "node"
|
|
1618
|
-
args = ["${serverJsPath}"]
|
|
1619
|
-
`;
|
|
1652
|
+
const newSection = desiredCodexMcpSection(serverJsPath);
|
|
1620
1653
|
const separator = content.length > 0 && !content.endsWith("\n") ? "\n\n" : content.length > 0 ? "\n" : "";
|
|
1621
1654
|
content = content + separator + newSection;
|
|
1622
1655
|
await writeFile4(configPath, content);
|
|
@@ -1674,7 +1707,7 @@ async function runCodexInstaller(homeDir) {
|
|
|
1674
1707
|
`
|
|
1675
1708
|
);
|
|
1676
1709
|
}
|
|
1677
|
-
var DEFAULT_CODEX_STATUS_LINE;
|
|
1710
|
+
var DEFAULT_CODEX_STATUS_LINE, CODEX_EXE_MCP_STARTUP_TIMEOUT_SEC, CODEX_EXE_MCP_TOOL_TIMEOUT_SEC;
|
|
1678
1711
|
var init_installer2 = __esm({
|
|
1679
1712
|
"src/adapters/codex/installer.ts"() {
|
|
1680
1713
|
"use strict";
|
|
@@ -1688,6 +1721,8 @@ var init_installer2 = __esm({
|
|
|
1688
1721
|
"run-state",
|
|
1689
1722
|
"context-used"
|
|
1690
1723
|
];
|
|
1724
|
+
CODEX_EXE_MCP_STARTUP_TIMEOUT_SEC = 30;
|
|
1725
|
+
CODEX_EXE_MCP_TOOL_TIMEOUT_SEC = 120;
|
|
1691
1726
|
}
|
|
1692
1727
|
});
|
|
1693
1728
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askexenow/exe-os",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.30",
|
|
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",
|