oh-my-opencode 5.0.0-beta.13 → 5.0.0-beta.15
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/README.ja.md +25 -21
- package/README.ko.md +25 -21
- package/README.md +26 -22
- package/README.ru.md +24 -20
- package/README.zh-cn.md +25 -21
- package/dist/cli/index.js +12628 -13558
- package/dist/cli-node/index.js +12628 -13558
- package/dist/features/btw-side/tui-controller-types.d.ts +5 -0
- package/dist/features/btw-side/tui-controller.d.ts +8 -3
- package/dist/features/btw-side/tui-escape-return.d.ts +12 -0
- package/dist/features/btw-side/tui-keymap.d.ts +8 -1
- package/dist/features/btw-side/tui-picker-options.d.ts +20 -0
- package/dist/features/btw-side/tui-picker.d.ts +9 -0
- package/dist/features/btw-side/tui-session-catalog.d.ts +35 -0
- package/dist/features/btw-side/tui-side-start.d.ts +1 -1
- package/dist/features/opengateway-provider/index.d.ts +13 -0
- package/dist/index.js +8462 -6318
- package/dist/skills/frontend/SKILL.md +1 -0
- package/dist/skills/frontend/references/design/print-paged-media.md +76 -0
- package/dist/skills/ulw-research/SKILL.md +1 -1
- package/dist/skills/visual-qa/SKILL.md +3 -2
- package/dist/tui.js +3993 -5513
- package/package.json +22 -22
- package/packages/git-bash-mcp/package.json +1 -1
- package/packages/lsp-daemon/dist/cli.js +81 -113
- package/packages/lsp-daemon/dist/client.js +82 -117
- package/packages/lsp-daemon/dist/ensure-daemon.js +1 -0
- package/packages/lsp-daemon/dist/index.js +88 -122
- package/packages/lsp-daemon/dist/version-reap.js +1 -1
- package/packages/lsp-tools-mcp/dist/cli.js +62 -93
- package/packages/lsp-tools-mcp/dist/lsp/manager.js +62 -92
- package/packages/lsp-tools-mcp/dist/mcp.js +64 -95
- package/packages/lsp-tools-mcp/dist/request-context.js +11 -12
- package/packages/lsp-tools-mcp/dist/tools.js +73 -104
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +30 -29
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/src/hook.ts +1 -0
- package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +81 -64
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +81 -65
- package/packages/omo-codex/plugin/components/codegraph/package.json +4 -4
- package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +1 -0
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-hook-runtime.ts +1 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/cli.js +2 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +5 -5
- package/packages/omo-codex/plugin/components/comment-checker/src/runner.ts +1 -0
- package/packages/omo-codex/plugin/components/git-bash/AGENTS.md +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +3 -4
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +5 -5
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
- package/packages/omo-codex/plugin/components/lsp/dist/cli.js +70 -107
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +5 -5
- package/packages/omo-codex/plugin/components/lsp/src/cli.ts +1 -1
- package/packages/omo-codex/plugin/components/rules/dist/cli.js +14 -12
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +7 -7
- package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/start-work-continuation/package.json +5 -5
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +5 -5
- package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +25 -25
- package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +31 -31
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +5 -5
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +1 -3
- package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.js +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/src/paths.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-create-goals.test.ts +25 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/paths.test.ts +9 -0
- package/packages/omo-codex/plugin/components/ulw-loop/vitest.config.ts +1 -0
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +661 -375
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/shared/package.json +2 -3
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +1 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/print-paged-media.md +76 -0
- package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +3 -2
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +53 -53
- package/packages/shared-skills/skills/frontend/SKILL.md +1 -0
- package/packages/shared-skills/skills/frontend/references/design/print-paged-media.md +76 -0
- package/packages/shared-skills/skills/ulw-research/SKILL.md +1 -1
- package/packages/shared-skills/skills/visual-qa/SKILL.md +3 -2
- package/script/qa/web-terminal-visual-qa.mjs +2 -0
- package/script/qa/xterm-live-terminal.mjs +18 -2
|
@@ -78,18 +78,17 @@ import { statSync as statSync5 } from "node:fs";
|
|
|
78
78
|
import { isAbsolute as isAbsolute5 } from "node:path";
|
|
79
79
|
|
|
80
80
|
class LspRequestContextParseError extends Error {
|
|
81
|
-
code;
|
|
82
|
-
name = "LspRequestContextParseError";
|
|
83
81
|
constructor(code, message) {
|
|
84
82
|
super(message);
|
|
85
83
|
this.code = code;
|
|
84
|
+
this.name = "LspRequestContextParseError";
|
|
86
85
|
}
|
|
87
86
|
}
|
|
88
87
|
|
|
89
88
|
class LspRequestContextUnavailableError extends Error {
|
|
90
|
-
name = "LspRequestContextUnavailableError";
|
|
91
89
|
constructor() {
|
|
92
90
|
super("LSP request context is required. Standalone MCP startup must install one with runWithRequestContext(createStandaloneMcpRequestContext()).");
|
|
91
|
+
this.name = "LspRequestContextUnavailableError";
|
|
93
92
|
}
|
|
94
93
|
}
|
|
95
94
|
var storage = new AsyncLocalStorage;
|
|
@@ -216,7 +215,6 @@ function isPlainRecord(value) {
|
|
|
216
215
|
}
|
|
217
216
|
|
|
218
217
|
class DaemonRequestError extends Error {
|
|
219
|
-
requestWritten;
|
|
220
218
|
constructor(message, requestWritten) {
|
|
221
219
|
super(message);
|
|
222
220
|
this.name = "DaemonRequestError";
|
|
@@ -239,7 +237,6 @@ class DaemonRequestCancelledError extends DaemonRequestError {
|
|
|
239
237
|
}
|
|
240
238
|
|
|
241
239
|
class DaemonRequestTimedOutError extends DaemonRequestError {
|
|
242
|
-
timeoutMs;
|
|
243
240
|
constructor(requestWritten, timeoutMs) {
|
|
244
241
|
super("daemon request timed out", requestWritten);
|
|
245
242
|
this.name = "DaemonRequestTimedOutError";
|
|
@@ -316,20 +313,18 @@ var OMO_LSP_DAEMON_VERSION = "OMO_LSP_DAEMON_VERSION";
|
|
|
316
313
|
var DAEMON_VERSION_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._+-]{0,127}$/;
|
|
317
314
|
|
|
318
315
|
class InvalidRuntimeOverrideError extends Error {
|
|
319
|
-
code = "invalid_runtime_override";
|
|
320
|
-
reason;
|
|
321
316
|
constructor(reason, message) {
|
|
322
317
|
super(message);
|
|
318
|
+
this.code = "invalid_runtime_override";
|
|
323
319
|
this.name = "InvalidRuntimeOverrideError";
|
|
324
320
|
this.reason = reason;
|
|
325
321
|
}
|
|
326
322
|
}
|
|
327
323
|
|
|
328
324
|
class InvalidDaemonVersionError extends Error {
|
|
329
|
-
code = "invalid_daemon_version";
|
|
330
|
-
version;
|
|
331
325
|
constructor(version) {
|
|
332
326
|
super("LSP daemon version must match [A-Za-z0-9][A-Za-z0-9._+-]{0,127}");
|
|
327
|
+
this.code = "invalid_daemon_version";
|
|
333
328
|
this.name = "InvalidDaemonVersionError";
|
|
334
329
|
this.version = version;
|
|
335
330
|
}
|
|
@@ -373,10 +368,9 @@ var requireFromHere = createRequire(import.meta.url);
|
|
|
373
368
|
var MAX_SOCKET_PATH_LENGTH = 100;
|
|
374
369
|
|
|
375
370
|
class InvalidDaemonDirectoryError extends Error {
|
|
376
|
-
code = "invalid_daemon_directory";
|
|
377
|
-
directory;
|
|
378
371
|
constructor(directory) {
|
|
379
372
|
super(`${OMO_LSP_DAEMON_DIR} must be an absolute path`);
|
|
373
|
+
this.code = "invalid_daemon_directory";
|
|
380
374
|
this.name = "InvalidDaemonDirectoryError";
|
|
381
375
|
this.directory = directory;
|
|
382
376
|
}
|
|
@@ -567,7 +561,8 @@ function spawnDaemonProcess(paths) {
|
|
|
567
561
|
try {
|
|
568
562
|
const child = spawn(resolveDaemonNodeExecutable(), [paths.cliPath, "daemon"], {
|
|
569
563
|
detached: true,
|
|
570
|
-
stdio: ["ignore", logFd, logFd]
|
|
564
|
+
stdio: ["ignore", logFd, logFd],
|
|
565
|
+
windowsHide: true
|
|
571
566
|
});
|
|
572
567
|
child.once("spawn", () => closeSync2(logFd));
|
|
573
568
|
child.once("error", (error) => {
|
|
@@ -688,22 +683,15 @@ function effectiveExtension(filePath) {
|
|
|
688
683
|
}
|
|
689
684
|
|
|
690
685
|
class LspConnectionClosedError extends Error {
|
|
691
|
-
serverId;
|
|
692
|
-
root;
|
|
693
|
-
name = "LspConnectionClosedError";
|
|
694
686
|
constructor(serverId, root, message) {
|
|
695
687
|
super(message ?? `LSP connection closed for ${serverId} at ${root}`);
|
|
696
688
|
this.serverId = serverId;
|
|
697
689
|
this.root = root;
|
|
690
|
+
this.name = "LspConnectionClosedError";
|
|
698
691
|
}
|
|
699
692
|
}
|
|
700
693
|
|
|
701
694
|
class LspProcessExitedError extends Error {
|
|
702
|
-
serverId;
|
|
703
|
-
root;
|
|
704
|
-
exitCode;
|
|
705
|
-
stderrTail;
|
|
706
|
-
name = "LspProcessExitedError";
|
|
707
695
|
constructor(serverId, root, exitCode, stderrTail) {
|
|
708
696
|
const stderrSuffix = stderrTail ? `
|
|
709
697
|
stderr tail: ${stderrTail}` : "";
|
|
@@ -712,46 +700,49 @@ stderr tail: ${stderrTail}` : "";
|
|
|
712
700
|
this.root = root;
|
|
713
701
|
this.exitCode = exitCode;
|
|
714
702
|
this.stderrTail = stderrTail;
|
|
703
|
+
this.name = "LspProcessExitedError";
|
|
715
704
|
}
|
|
716
705
|
}
|
|
717
706
|
|
|
718
707
|
class LspRequestTimeoutError extends Error {
|
|
719
|
-
method;
|
|
720
|
-
stderrTail;
|
|
721
|
-
name = "LspRequestTimeoutError";
|
|
722
708
|
constructor(method, stderrTail) {
|
|
723
709
|
const stderrSuffix = stderrTail ? `
|
|
724
710
|
recent stderr: ${stderrTail}` : "";
|
|
725
711
|
super(`LSP request timeout (method: ${method})${stderrSuffix}`);
|
|
726
712
|
this.method = method;
|
|
727
713
|
this.stderrTail = stderrTail;
|
|
714
|
+
this.name = "LspRequestTimeoutError";
|
|
728
715
|
}
|
|
729
716
|
}
|
|
730
717
|
|
|
731
718
|
class LspInvalidPathError extends Error {
|
|
732
|
-
|
|
719
|
+
constructor() {
|
|
720
|
+
super(...arguments);
|
|
721
|
+
this.name = "LspInvalidPathError";
|
|
722
|
+
}
|
|
733
723
|
}
|
|
734
724
|
|
|
735
725
|
class LspServerLookupError extends Error {
|
|
736
|
-
lookup;
|
|
737
|
-
name = "LspServerLookupError";
|
|
738
726
|
constructor(message, lookup) {
|
|
739
727
|
super(message);
|
|
740
728
|
this.lookup = lookup;
|
|
729
|
+
this.name = "LspServerLookupError";
|
|
741
730
|
}
|
|
742
731
|
}
|
|
743
732
|
|
|
744
733
|
class LspServerInitializingError extends Error {
|
|
745
|
-
originalError;
|
|
746
|
-
name = "LspServerInitializingError";
|
|
747
734
|
constructor(originalError) {
|
|
748
735
|
super(`LSP server is still initializing. Please retry in a few seconds. Original error: ${originalError.message}`);
|
|
749
736
|
this.originalError = originalError;
|
|
737
|
+
this.name = "LspServerInitializingError";
|
|
750
738
|
}
|
|
751
739
|
}
|
|
752
740
|
|
|
753
741
|
class LspProcessSpawnError extends Error {
|
|
754
|
-
|
|
742
|
+
constructor() {
|
|
743
|
+
super(...arguments);
|
|
744
|
+
this.name = "LspProcessSpawnError";
|
|
745
|
+
}
|
|
755
746
|
}
|
|
756
747
|
function isLspDeadConnectionError(err) {
|
|
757
748
|
return err instanceof LspConnectionClosedError || err instanceof LspProcessExitedError;
|
|
@@ -783,20 +774,31 @@ var METHOD_NOT_FOUND = -32601;
|
|
|
783
774
|
var INTERNAL_ERROR = -32603;
|
|
784
775
|
|
|
785
776
|
class JsonRpcConnection {
|
|
786
|
-
reader;
|
|
787
|
-
writer;
|
|
788
|
-
pendingRequests = new Map;
|
|
789
|
-
notificationHandlers = new Map;
|
|
790
|
-
requestHandlers = new Map;
|
|
791
|
-
closeHandlers = [];
|
|
792
|
-
errorHandlers = [];
|
|
793
|
-
inputBuffer = Buffer.alloc(0);
|
|
794
|
-
nextRequestId = 1;
|
|
795
|
-
listening = false;
|
|
796
|
-
disposed = false;
|
|
797
777
|
constructor(reader, writer) {
|
|
798
778
|
this.reader = reader;
|
|
799
779
|
this.writer = writer;
|
|
780
|
+
this.pendingRequests = new Map;
|
|
781
|
+
this.notificationHandlers = new Map;
|
|
782
|
+
this.requestHandlers = new Map;
|
|
783
|
+
this.closeHandlers = [];
|
|
784
|
+
this.errorHandlers = [];
|
|
785
|
+
this.inputBuffer = Buffer.alloc(0);
|
|
786
|
+
this.nextRequestId = 1;
|
|
787
|
+
this.listening = false;
|
|
788
|
+
this.disposed = false;
|
|
789
|
+
this.handleData = (chunk) => {
|
|
790
|
+
const chunkBuffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk, "utf8");
|
|
791
|
+
this.inputBuffer = Buffer.concat([this.inputBuffer, chunkBuffer]);
|
|
792
|
+
this.drainInputBuffer();
|
|
793
|
+
};
|
|
794
|
+
this.handleClose = () => {
|
|
795
|
+
for (const handler of this.closeHandlers) {
|
|
796
|
+
handler();
|
|
797
|
+
}
|
|
798
|
+
};
|
|
799
|
+
this.handleStreamError = (error) => {
|
|
800
|
+
this.emitError(error);
|
|
801
|
+
};
|
|
800
802
|
}
|
|
801
803
|
listen() {
|
|
802
804
|
if (this.listening)
|
|
@@ -917,19 +919,6 @@ class JsonRpcConnection {
|
|
|
917
919
|
this.notificationHandlers.clear();
|
|
918
920
|
this.requestHandlers.clear();
|
|
919
921
|
}
|
|
920
|
-
handleData = (chunk) => {
|
|
921
|
-
const chunkBuffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk, "utf8");
|
|
922
|
-
this.inputBuffer = Buffer.concat([this.inputBuffer, chunkBuffer]);
|
|
923
|
-
this.drainInputBuffer();
|
|
924
|
-
};
|
|
925
|
-
handleClose = () => {
|
|
926
|
-
for (const handler of this.closeHandlers) {
|
|
927
|
-
handler();
|
|
928
|
-
}
|
|
929
|
-
};
|
|
930
|
-
handleStreamError = (error) => {
|
|
931
|
-
this.emitError(error);
|
|
932
|
-
};
|
|
933
922
|
drainInputBuffer() {
|
|
934
923
|
while (true) {
|
|
935
924
|
const headerEnd = this.inputBuffer.indexOf(HEADER_SEPARATOR2);
|
|
@@ -1269,31 +1258,25 @@ function isPosition(value) {
|
|
|
1269
1258
|
}
|
|
1270
1259
|
|
|
1271
1260
|
class LspClientNotStartedError extends Error {
|
|
1272
|
-
serverId;
|
|
1273
|
-
root;
|
|
1274
|
-
name = "LspClientNotStartedError";
|
|
1275
1261
|
constructor(serverId, root) {
|
|
1276
1262
|
super("LSP client not started");
|
|
1277
1263
|
this.serverId = serverId;
|
|
1278
1264
|
this.root = root;
|
|
1265
|
+
this.name = "LspClientNotStartedError";
|
|
1279
1266
|
}
|
|
1280
1267
|
}
|
|
1281
1268
|
|
|
1282
1269
|
class LspClientTransport {
|
|
1283
|
-
root;
|
|
1284
|
-
server;
|
|
1285
|
-
proc = null;
|
|
1286
|
-
connection = null;
|
|
1287
|
-
stderrBuffer = [];
|
|
1288
|
-
processExited = false;
|
|
1289
|
-
diagnosticsStore = new Map;
|
|
1290
|
-
requestTimeoutMs;
|
|
1291
|
-
initializeTimeoutMs;
|
|
1292
|
-
workspaceApplyEditHandler = null;
|
|
1293
|
-
diagnosticPullSupported = false;
|
|
1294
1270
|
constructor(root, server2, timeouts = {}) {
|
|
1295
1271
|
this.root = root;
|
|
1296
1272
|
this.server = server2;
|
|
1273
|
+
this.proc = null;
|
|
1274
|
+
this.connection = null;
|
|
1275
|
+
this.stderrBuffer = [];
|
|
1276
|
+
this.processExited = false;
|
|
1277
|
+
this.diagnosticsStore = new Map;
|
|
1278
|
+
this.workspaceApplyEditHandler = null;
|
|
1279
|
+
this.diagnosticPullSupported = false;
|
|
1297
1280
|
this.requestTimeoutMs = timeouts.requestTimeoutMs ?? REQUEST_TIMEOUT_MS;
|
|
1298
1281
|
this.initializeTimeoutMs = timeouts.initializeTimeoutMs ?? INIT_TIMEOUT_MS;
|
|
1299
1282
|
}
|
|
@@ -1779,16 +1762,12 @@ function movedPath(candidate, oldPath, newPath) {
|
|
|
1779
1762
|
}
|
|
1780
1763
|
|
|
1781
1764
|
class WorkspaceDocumentState {
|
|
1782
|
-
sendNotification;
|
|
1783
|
-
clearDiagnostics;
|
|
1784
|
-
openDocuments = new Map;
|
|
1785
|
-
openByUri = new Map;
|
|
1786
|
-
openPromises = new Map;
|
|
1787
|
-
now;
|
|
1788
|
-
versionlessPublishQuiescenceMs;
|
|
1789
1765
|
constructor(sendNotification, clearDiagnostics, options = {}) {
|
|
1790
1766
|
this.sendNotification = sendNotification;
|
|
1791
1767
|
this.clearDiagnostics = clearDiagnostics;
|
|
1768
|
+
this.openDocuments = new Map;
|
|
1769
|
+
this.openByUri = new Map;
|
|
1770
|
+
this.openPromises = new Map;
|
|
1792
1771
|
this.now = options.now ?? (() => Date.now());
|
|
1793
1772
|
this.versionlessPublishQuiescenceMs = options.versionlessPublishQuiescenceMs ?? DEFAULT_VERSIONLESS_PUBLISH_QUIESCENCE_MS;
|
|
1794
1773
|
}
|
|
@@ -2042,13 +2021,11 @@ function workspaceApplyEditConcurrentFailureReason(phase) {
|
|
|
2042
2021
|
}
|
|
2043
2022
|
|
|
2044
2023
|
class WorkspaceEditPathError extends Error {
|
|
2045
|
-
path;
|
|
2046
|
-
detail;
|
|
2047
|
-
name = "WorkspaceEditPathError";
|
|
2048
2024
|
constructor(path2, detail) {
|
|
2049
2025
|
super(`${detail}: ${path2}`);
|
|
2050
2026
|
this.path = path2;
|
|
2051
2027
|
this.detail = detail;
|
|
2028
|
+
this.name = "WorkspaceEditPathError";
|
|
2052
2029
|
}
|
|
2053
2030
|
}
|
|
2054
2031
|
function isPathInsideWorkspace(filePath, workspaceRoot) {
|
|
@@ -2334,13 +2311,11 @@ function canonicalFingerprint(operations) {
|
|
|
2334
2311
|
}
|
|
2335
2312
|
|
|
2336
2313
|
class WorkspaceEditValidationError extends Error {
|
|
2337
|
-
changeIndex;
|
|
2338
|
-
detail;
|
|
2339
|
-
name = "WorkspaceEditValidationError";
|
|
2340
2314
|
constructor(changeIndex, detail) {
|
|
2341
2315
|
super(`change ${changeIndex}: ${detail}`);
|
|
2342
2316
|
this.changeIndex = changeIndex;
|
|
2343
2317
|
this.detail = detail;
|
|
2318
|
+
this.name = "WorkspaceEditValidationError";
|
|
2344
2319
|
}
|
|
2345
2320
|
}
|
|
2346
2321
|
function isRecord3(value) {
|
|
@@ -2822,10 +2797,9 @@ function simulateDelete(operation, virtual) {
|
|
|
2822
2797
|
}
|
|
2823
2798
|
|
|
2824
2799
|
class WorkspaceSnapshotBuilder {
|
|
2825
|
-
workspaceRoot;
|
|
2826
|
-
snapshots = new Map;
|
|
2827
2800
|
constructor(workspaceRoot) {
|
|
2828
2801
|
this.workspaceRoot = workspaceRoot;
|
|
2802
|
+
this.snapshots = new Map;
|
|
2829
2803
|
}
|
|
2830
2804
|
build(operations) {
|
|
2831
2805
|
this.add(this.workspaceRoot, false);
|
|
@@ -2868,8 +2842,10 @@ function snapshotOperations(operations, workspaceRoot) {
|
|
|
2868
2842
|
}
|
|
2869
2843
|
|
|
2870
2844
|
class PlanPathIndex {
|
|
2871
|
-
|
|
2872
|
-
|
|
2845
|
+
constructor() {
|
|
2846
|
+
this.firstChangeByPath = new Map;
|
|
2847
|
+
this.reportedPathByCanonical = new Map;
|
|
2848
|
+
}
|
|
2873
2849
|
build(operations) {
|
|
2874
2850
|
for (const operation of operations) {
|
|
2875
2851
|
switch (operation.kind) {
|
|
@@ -2956,14 +2932,11 @@ function isRecord4(value) {
|
|
|
2956
2932
|
}
|
|
2957
2933
|
|
|
2958
2934
|
class WorkspaceMutationController {
|
|
2959
|
-
workspaceRoot;
|
|
2960
|
-
documents;
|
|
2961
|
-
activeLease = null;
|
|
2962
|
-
nextLeaseId = 1;
|
|
2963
|
-
io;
|
|
2964
2935
|
constructor(workspaceRoot, documents) {
|
|
2965
2936
|
this.workspaceRoot = workspaceRoot;
|
|
2966
2937
|
this.documents = documents;
|
|
2938
|
+
this.activeLease = null;
|
|
2939
|
+
this.nextLeaseId = 1;
|
|
2967
2940
|
}
|
|
2968
2941
|
setIo(io) {
|
|
2969
2942
|
this.io = io;
|
|
@@ -3074,12 +3047,9 @@ var DIAGNOSTICS_FRESHNESS_TIMEOUT_MS = 3000;
|
|
|
3074
3047
|
var VERSIONLESS_PUBLISH_QUIESCENCE_MS = 250;
|
|
3075
3048
|
|
|
3076
3049
|
class LspClient extends LspClientConnection {
|
|
3077
|
-
diagnosticPullErrors = [];
|
|
3078
|
-
documents;
|
|
3079
|
-
workspaceMutations;
|
|
3080
|
-
diagnosticsFreshnessTimeoutMs;
|
|
3081
3050
|
constructor(root, server2, options = {}) {
|
|
3082
3051
|
super(root, server2, options);
|
|
3052
|
+
this.diagnosticPullErrors = [];
|
|
3083
3053
|
this.diagnosticsFreshnessTimeoutMs = options.diagnosticsFreshnessTimeoutMs ?? DIAGNOSTICS_FRESHNESS_TIMEOUT_MS;
|
|
3084
3054
|
this.documents = new WorkspaceDocumentState((method, params) => this.sendNotification(method, params), (uri) => this.diagnosticsStore.delete(uri), {
|
|
3085
3055
|
versionlessPublishQuiescenceMs: options.versionlessPublishQuiescenceMs ?? VERSIONLESS_PUBLISH_QUIESCENCE_MS
|
|
@@ -3375,16 +3345,11 @@ function awaitWithSignal2(promise, signal) {
|
|
|
3375
3345
|
}
|
|
3376
3346
|
|
|
3377
3347
|
class LspManager {
|
|
3378
|
-
clients = new Map;
|
|
3379
|
-
reaperHandle = null;
|
|
3380
|
-
signalDisposer = null;
|
|
3381
|
-
disposed = false;
|
|
3382
|
-
idleTimeoutMs;
|
|
3383
|
-
initTimeoutMs;
|
|
3384
|
-
reaperIntervalMs;
|
|
3385
|
-
clientFactory;
|
|
3386
|
-
now;
|
|
3387
3348
|
constructor(options = {}) {
|
|
3349
|
+
this.clients = new Map;
|
|
3350
|
+
this.reaperHandle = null;
|
|
3351
|
+
this.signalDisposer = null;
|
|
3352
|
+
this.disposed = false;
|
|
3388
3353
|
this.idleTimeoutMs = options.idleTimeoutMs ?? IDLE_TIMEOUT_MS;
|
|
3389
3354
|
this.initTimeoutMs = options.initTimeoutMs ?? INIT_TIMEOUT_MS;
|
|
3390
3355
|
this.reaperIntervalMs = options.reaperIntervalMs ?? REAPER_INTERVAL_MS;
|
|
@@ -5334,10 +5299,9 @@ var OMO_LSP_DAEMON_VERSION2 = "OMO_LSP_DAEMON_VERSION";
|
|
|
5334
5299
|
var DAEMON_VERSION_PATTERN2 = /^[A-Za-z0-9][A-Za-z0-9._+-]{0,127}$/;
|
|
5335
5300
|
|
|
5336
5301
|
class InvalidRuntimeOverrideError2 extends Error {
|
|
5337
|
-
code = "invalid_runtime_override";
|
|
5338
|
-
reason;
|
|
5339
5302
|
constructor(reason, message) {
|
|
5340
5303
|
super(message);
|
|
5304
|
+
this.code = "invalid_runtime_override";
|
|
5341
5305
|
this.name = "InvalidRuntimeOverrideError";
|
|
5342
5306
|
this.reason = reason;
|
|
5343
5307
|
}
|
|
@@ -5487,11 +5451,10 @@ import { existsSync as existsSync13, realpathSync as realpathSync6, statSync as
|
|
|
5487
5451
|
import { basename as basename4, delimiter as delimiter4, dirname as dirname2, isAbsolute as isAbsolute6, join as join8, relative as relative5, resolve as resolve9 } from "node:path";
|
|
5488
5452
|
|
|
5489
5453
|
class LspRequestContextParseError2 extends Error {
|
|
5490
|
-
code;
|
|
5491
|
-
name = "LspRequestContextParseError";
|
|
5492
5454
|
constructor(code, message) {
|
|
5493
5455
|
super(message);
|
|
5494
5456
|
this.code = code;
|
|
5457
|
+
this.name = "LspRequestContextParseError";
|
|
5495
5458
|
}
|
|
5496
5459
|
}
|
|
5497
5460
|
var storage2 = new AsyncLocalStorage2;
|
|
@@ -6040,7 +6003,7 @@ main().catch((error) => {
|
|
|
6040
6003
|
});
|
|
6041
6004
|
async function runPackageLspMcpCli() {
|
|
6042
6005
|
const cliPath = resolveLspDaemonCliPath();
|
|
6043
|
-
const child = spawn3(execPath2, [cliPath, "mcp"], { stdio: "inherit" });
|
|
6006
|
+
const child = spawn3(execPath2, [cliPath, "mcp"], { stdio: "inherit", windowsHide: true });
|
|
6044
6007
|
await new Promise((resolve10, reject) => {
|
|
6045
6008
|
child.once("error", reject);
|
|
6046
6009
|
child.once("exit", (code, signal) => {
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
10
10
|
"timeout": 60,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.15) Checking LSP Diagnostics"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"type": "command",
|
|
22
22
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
23
23
|
"timeout": 5,
|
|
24
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
24
|
+
"statusMessage": "(OmO 5.0.0-beta.15) Resetting LSP Diagnostics Cache"
|
|
25
25
|
}
|
|
26
26
|
]
|
|
27
27
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-lsp",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.15",
|
|
4
4
|
"description": "Codex plugin that exposes Language Server Protocol tools and post-edit diagnostics.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -54,10 +54,10 @@
|
|
|
54
54
|
"@code-yeongyu/lsp-daemon": "file:../../../../lsp-daemon"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
|
-
"@biomejs/biome": "2.
|
|
58
|
-
"@types/node": "^
|
|
59
|
-
"typescript": "^
|
|
60
|
-
"vitest": "^4.1.
|
|
57
|
+
"@biomejs/biome": "2.5.9",
|
|
58
|
+
"@types/node": "^26.2.0",
|
|
59
|
+
"typescript": "^7.0.2",
|
|
60
|
+
"vitest": "^4.1.11"
|
|
61
61
|
},
|
|
62
62
|
"engines": {
|
|
63
63
|
"node": ">=20.0.0"
|
|
@@ -33,7 +33,7 @@ main().catch((error: unknown) => {
|
|
|
33
33
|
|
|
34
34
|
async function runPackageLspMcpCli(): Promise<void> {
|
|
35
35
|
const cliPath = resolveLspDaemonCliPath();
|
|
36
|
-
const child = spawn(execPath, [cliPath, "mcp"], { stdio: "inherit" });
|
|
36
|
+
const child = spawn(execPath, [cliPath, "mcp"], { stdio: "inherit", windowsHide: true });
|
|
37
37
|
await new Promise<void>((resolve, reject) => {
|
|
38
38
|
child.once("error", reject);
|
|
39
39
|
child.once("exit", (code, signal) => {
|
|
@@ -19,12 +19,14 @@ var __toESM = (mod, isNodeMode, target) => {
|
|
|
19
19
|
}
|
|
20
20
|
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
21
21
|
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
if (mod && typeof mod === "object" || typeof mod === "function") {
|
|
23
|
+
for (let key of __getOwnPropNames(mod))
|
|
24
|
+
if (!__hasOwnProp.call(to, key))
|
|
25
|
+
__defProp(to, key, {
|
|
26
|
+
get: __accessProp.bind(mod, key),
|
|
27
|
+
enumerable: true
|
|
28
|
+
});
|
|
29
|
+
}
|
|
28
30
|
if (canCache)
|
|
29
31
|
cache.set(mod, to);
|
|
30
32
|
return to;
|
|
@@ -32,7 +34,7 @@ var __toESM = (mod, isNodeMode, target) => {
|
|
|
32
34
|
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
33
35
|
|
|
34
36
|
// ../../../node_modules/.bun/picomatch@4.0.5/node_modules/picomatch/lib/constants.js
|
|
35
|
-
var require_constants = __commonJS((exports, module)
|
|
37
|
+
var require_constants = __commonJS(function(exports, module) {
|
|
36
38
|
var WIN_SLASH = "\\\\/";
|
|
37
39
|
var WIN_NO_SLASH = `[^${WIN_SLASH}]`;
|
|
38
40
|
var DEFAULT_MAX_EXTGLOB_RECURSION = 0;
|
|
@@ -177,7 +179,7 @@ var require_constants = __commonJS((exports, module) => {
|
|
|
177
179
|
});
|
|
178
180
|
|
|
179
181
|
// ../../../node_modules/.bun/picomatch@4.0.5/node_modules/picomatch/lib/utils.js
|
|
180
|
-
var require_utils = __commonJS((exports)
|
|
182
|
+
var require_utils = __commonJS(function(exports) {
|
|
181
183
|
var {
|
|
182
184
|
REGEX_BACKSLASH,
|
|
183
185
|
REGEX_REMOVE_BACKSLASH,
|
|
@@ -240,7 +242,7 @@ var require_utils = __commonJS((exports) => {
|
|
|
240
242
|
});
|
|
241
243
|
|
|
242
244
|
// ../../../node_modules/.bun/picomatch@4.0.5/node_modules/picomatch/lib/scan.js
|
|
243
|
-
var require_scan = __commonJS((exports, module)
|
|
245
|
+
var require_scan = __commonJS(function(exports, module) {
|
|
244
246
|
var utils = require_utils();
|
|
245
247
|
var {
|
|
246
248
|
CHAR_ASTERISK,
|
|
@@ -555,7 +557,7 @@ var require_scan = __commonJS((exports, module) => {
|
|
|
555
557
|
});
|
|
556
558
|
|
|
557
559
|
// ../../../node_modules/.bun/picomatch@4.0.5/node_modules/picomatch/lib/parse.js
|
|
558
|
-
var require_parse = __commonJS((exports, module)
|
|
560
|
+
var require_parse = __commonJS(function(exports, module) {
|
|
559
561
|
var constants = require_constants();
|
|
560
562
|
var utils = require_utils();
|
|
561
563
|
var {
|
|
@@ -1574,7 +1576,7 @@ var require_parse = __commonJS((exports, module) => {
|
|
|
1574
1576
|
});
|
|
1575
1577
|
|
|
1576
1578
|
// ../../../node_modules/.bun/picomatch@4.0.5/node_modules/picomatch/lib/picomatch.js
|
|
1577
|
-
var require_picomatch = __commonJS((exports, module)
|
|
1579
|
+
var require_picomatch = __commonJS(function(exports, module) {
|
|
1578
1580
|
var scan = require_scan();
|
|
1579
1581
|
var parse = require_parse();
|
|
1580
1582
|
var utils = require_utils();
|
|
@@ -1714,7 +1716,7 @@ var require_picomatch = __commonJS((exports, module) => {
|
|
|
1714
1716
|
});
|
|
1715
1717
|
|
|
1716
1718
|
// ../../../node_modules/.bun/picomatch@4.0.5/node_modules/picomatch/index.js
|
|
1717
|
-
var require_picomatch2 = __commonJS((exports, module)
|
|
1719
|
+
var require_picomatch2 = __commonJS(function(exports, module) {
|
|
1718
1720
|
var pico = require_picomatch();
|
|
1719
1721
|
var utils = require_utils();
|
|
1720
1722
|
function picomatch(glob, options, returnState = false) {
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook session-start",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.15) Loading Project Rules"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"type": "command",
|
|
20
20
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
|
|
21
21
|
"timeout": 10,
|
|
22
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
22
|
+
"statusMessage": "(OmO 5.0.0-beta.15) Loading Project Rules"
|
|
23
23
|
}
|
|
24
24
|
]
|
|
25
25
|
}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"type": "command",
|
|
33
33
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
34
34
|
"timeout": 10,
|
|
35
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
35
|
+
"statusMessage": "(OmO 5.0.0-beta.15) Matching Project Rules"
|
|
36
36
|
}
|
|
37
37
|
]
|
|
38
38
|
}
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"type": "command",
|
|
46
46
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
47
47
|
"timeout": 10,
|
|
48
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
48
|
+
"statusMessage": "(OmO 5.0.0-beta.15) Resetting Project Rule Cache"
|
|
49
49
|
}
|
|
50
50
|
]
|
|
51
51
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-rules",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.15",
|
|
4
4
|
"description": "Codex plugin that injects project rule files into model context through lifecycle hooks.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -47,15 +47,15 @@
|
|
|
47
47
|
"check": "tsc --noEmit && biome check . && npm run build"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"picomatch": "^4.0.
|
|
50
|
+
"picomatch": "^4.0.5"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@oh-my-opencode/rules-engine": "file:../../../../rules-engine",
|
|
54
|
-
"@biomejs/biome": "2.
|
|
55
|
-
"@types/node": "^
|
|
56
|
-
"@types/picomatch": "^4.0.
|
|
57
|
-
"typescript": "^
|
|
58
|
-
"vitest": "^4.1.
|
|
54
|
+
"@biomejs/biome": "2.5.9",
|
|
55
|
+
"@types/node": "^26.2.0",
|
|
56
|
+
"@types/picomatch": "^4.0.3",
|
|
57
|
+
"typescript": "^7.0.2",
|
|
58
|
+
"vitest": "^4.1.11"
|
|
59
59
|
},
|
|
60
60
|
"engines": {
|
|
61
61
|
"node": ">=20.0.0"
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/start-work-continuation/dist/cli.js\" hook stop",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.15) Checking Start-Work Continuation"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"type": "command",
|
|
20
20
|
"command": "node \"${PLUGIN_ROOT}/components/start-work-continuation/dist/cli.js\" hook subagent-stop",
|
|
21
21
|
"timeout": 10,
|
|
22
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
22
|
+
"statusMessage": "(OmO 5.0.0-beta.15) Checking Start-Work Continuation"
|
|
23
23
|
}
|
|
24
24
|
]
|
|
25
25
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-start-work-continuation",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.15",
|
|
4
4
|
"description": "Codex Stop hook continuation injector for omo-codex start-work plans.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -42,10 +42,10 @@
|
|
|
42
42
|
"NOTICE"
|
|
43
43
|
],
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@biomejs/biome": "2.
|
|
46
|
-
"@types/node": "^
|
|
47
|
-
"typescript": "^
|
|
48
|
-
"vitest": "^4.1.
|
|
45
|
+
"@biomejs/biome": "2.5.9",
|
|
46
|
+
"@types/node": "^26.2.0",
|
|
47
|
+
"typescript": "^7.0.2",
|
|
48
|
+
"vitest": "^4.1.11"
|
|
49
49
|
},
|
|
50
50
|
"engines": {
|
|
51
51
|
"node": ">=20.0.0"
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
10
10
|
"timeout": 10,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.15) Checking Thread Title Hygiene"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|