lazycodex-ai 5.1.3 → 5.1.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.
Files changed (62) hide show
  1. package/dist/cli/index.js +149 -19
  2. package/dist/cli-node/index.js +149 -19
  3. package/package.json +1 -1
  4. package/packages/lsp-daemon/dist/cli.js +2 -1
  5. package/packages/lsp-daemon/dist/client.js +2 -1
  6. package/packages/lsp-daemon/dist/index.js +2 -1
  7. package/packages/lsp-tools-mcp/dist/cli.js +2 -1
  8. package/packages/lsp-tools-mcp/dist/mcp.js +2 -1
  9. package/packages/lsp-tools-mcp/dist/tools.js +2 -1
  10. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  11. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  12. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  13. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  14. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  15. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  16. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  17. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  18. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  19. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +4 -4
  20. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +141 -107
  21. package/packages/omo-codex/plugin/components/lsp/dist/lsp-session-state.js +2 -2
  22. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  23. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  24. package/packages/omo-codex/plugin/components/lsp/src/lsp-session-state.ts +2 -2
  25. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  26. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  27. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  28. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  29. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  30. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  31. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  32. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  33. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  34. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  35. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  36. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  37. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  38. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  39. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  40. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  41. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  42. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  43. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  44. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  45. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  46. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  47. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  48. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  49. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  50. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  51. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  52. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  53. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  54. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  55. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  56. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  57. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  58. package/packages/omo-codex/plugin/package-lock.json +12 -12
  59. package/packages/omo-codex/plugin/package.json +1 -1
  60. package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
  61. package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
  62. package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-lazycodex-executor-verify",
3
- "version": "5.1.3",
3
+ "version": "5.1.4",
4
4
  "description": "Codex SubagentStop evidence verifier for LazyCodex executor completions.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "version": "5.1.3",
4
- "inputDigest": "sha256:affd143b968dfe926241288a42ac81d6f67cd8a853569bd8d7bac0c9ee6ed75c",
3
+ "version": "5.1.4",
4
+ "inputDigest": "sha256:4b9c0202761e8abe92155e627fa7548e4252aadd31dd92f1412d6bf1e357ed23",
5
5
  "outputs": [
6
6
  {
7
7
  "path": "cli.d.ts",
@@ -9,7 +9,7 @@
9
9
  },
10
10
  {
11
11
  "path": "cli.js",
12
- "sha256": "a0155ce31758825f26a35acbc894361e22a6531bab3fc47bc1f5c2ed054580ef"
12
+ "sha256": "d793d83fb82b1fafe52e619f545c5195398498d1f95f15d84904fe3d0a20befe"
13
13
  },
14
14
  {
15
15
  "path": "codex-hook-cli.d.ts",
@@ -41,7 +41,7 @@
41
41
  },
42
42
  {
43
43
  "path": "lsp-session-state.js",
44
- "sha256": "d9c1f4bbace5a8a1fad3d0c3d225e4019700946b2391d1d5ae4d2362ca2e495f"
44
+ "sha256": "8c0e4fff28cb9deaca9c1b12ed2b0663a93fdf8532a8028f90a241b0607b8368"
45
45
  },
46
46
  {
47
47
  "path": "mutated-file-paths.d.ts",
@@ -4989,7 +4989,8 @@ function missingDependencyAvailability(error) {
4989
4989
  extensions: [...error.lookup.server.extensions],
4990
4990
  installHint: error.lookup.installHint,
4991
4991
  installDecisionTool: context.capabilities.installDecisionTool,
4992
- installDecisionsPath: context.installDecisionsPath
4992
+ installDecisionsPath: context.installDecisionsPath,
4993
+ decision: loadInstallDecision(error.lookup.server.id)?.decision ?? null
4993
4994
  };
4994
4995
  default: {
4995
4996
  const exhaustive = error.lookup;
@@ -5782,109 +5783,18 @@ function callDiagnosticsViaDaemon2(filePath, options) {
5782
5783
  return callDiagnosticsViaDaemon(filePath, options);
5783
5784
  }
5784
5785
 
5785
- // ../../../../lsp-core/src/post-edit/orchestration.ts
5786
- import { extname as extname2 } from "node:path";
5787
- var DEFAULT_MAX_CONCURRENCY = 4;
5788
- var CLEAN_DIAGNOSTICS_TEXT = "No diagnostics found";
5789
- function createPostEditNotConfiguredCache() {
5790
- return { notConfiguredExtensions: new Set };
5791
- }
5792
- async function collectPostEditDiagnostics(input) {
5793
- const cache = input.cache === undefined ? createPostEditNotConfiguredCache() : input.cache;
5794
- const filePaths = firstSeenDiagnosticTargets(input.filePaths, cache);
5795
- const results = await runBoundedDiagnostics(filePaths, input.runDiagnostics, input.maxConcurrency);
5796
- const blocks = [];
5797
- const observations = [];
5798
- for (const result of results) {
5799
- const classification = classifyDiagnostics(result.outcome);
5800
- switch (classification.kind) {
5801
- case "clean":
5802
- observations.push({ filePath: result.filePath, kind: "clean" });
5803
- break;
5804
- case "not_configured":
5805
- cache.notConfiguredExtensions.add(classification.extension);
5806
- observations.push({ filePath: result.filePath, kind: "not_configured" });
5807
- break;
5808
- case "block":
5809
- blocks.push({ filePath: result.filePath, diagnostics: classification.diagnostics });
5810
- observations.push({ filePath: result.filePath, kind: "block" });
5811
- break;
5812
- default: {
5813
- const exhaustive = classification;
5814
- return exhaustive;
5815
- }
5816
- }
5817
- }
5818
- return { blocks, observations };
5819
- }
5820
- function firstSeenDiagnosticTargets(filePaths, cache) {
5821
- const seen = new Set;
5822
- const targets = [];
5823
- for (const filePath of filePaths) {
5824
- if (filePath.length === 0 || seen.has(filePath))
5825
- continue;
5826
- seen.add(filePath);
5827
- const extension = extensionKey(filePath);
5828
- if (extension !== undefined && cache.notConfiguredExtensions.has(extension))
5829
- continue;
5830
- targets.push({ index: targets.length, filePath });
5831
- }
5832
- return targets;
5833
- }
5834
- async function runBoundedDiagnostics(filePaths, runDiagnostics, maxConcurrency) {
5835
- const results = [];
5836
- const workerCount = Math.min(Math.max(1, maxConcurrency ?? DEFAULT_MAX_CONCURRENCY), filePaths.length);
5837
- let nextIndex = 0;
5838
- async function worker() {
5839
- for (;; ) {
5840
- const target = filePaths[nextIndex];
5841
- nextIndex += 1;
5842
- if (target === undefined)
5843
- return;
5844
- results[target.index] = {
5845
- index: target.index,
5846
- filePath: target.filePath,
5847
- outcome: await collectFileDiagnostics(target.filePath, runDiagnostics)
5848
- };
5849
- }
5850
- }
5851
- await Promise.all(Array.from({ length: workerCount }, () => worker()));
5852
- return results.filter((result) => result !== undefined);
5853
- }
5854
- async function collectFileDiagnostics(filePath, runDiagnostics) {
5855
- try {
5856
- return normalizeDiagnosticsOutcome(await runDiagnostics(filePath));
5857
- } catch (error) {
5858
- if (error instanceof Error)
5859
- return formatDiagnosticsError(error);
5860
- return normalizeDiagnosticsText(String(error));
5861
- }
5862
- }
5863
- function normalizeDiagnosticsOutcome(outcome) {
5864
- if (typeof outcome === "string")
5865
- return normalizeDiagnosticsText(outcome);
5866
- return outcome;
5867
- }
5868
- function normalizeDiagnosticsText(text) {
5869
- return text.trim();
5870
- }
5871
- function formatDiagnosticsError(error) {
5872
- const message = normalizeDiagnosticsText(error.message);
5873
- return message.length > 0 ? message : normalizeDiagnosticsText(String(error));
5874
- }
5875
- function classifyDiagnostics(outcome) {
5876
- if (typeof outcome !== "string") {
5877
- return { kind: "not_configured", extension: outcome.extension };
5878
- }
5879
- const diagnostics = outcome;
5880
- if (diagnostics.length === 0 || diagnostics === CLEAN_DIAGNOSTICS_TEXT)
5881
- return { kind: "clean" };
5882
- return { kind: "block", diagnostics };
5883
- }
5884
- function extensionKey(filePath) {
5885
- const extension = extname2(filePath).toLowerCase();
5886
- return extension.length === 0 ? undefined : extension;
5887
- }
5786
+ // ../../../../lsp-core/src/lsp/workspace-markers.ts
5787
+ var GIT_WORKSPACE_MARKER2 = ".git";
5788
+ var PROJECT_WORKSPACE_MARKERS2 = [
5789
+ "package.json",
5790
+ "pyproject.toml",
5791
+ "Cargo.toml",
5792
+ "go.mod",
5793
+ "pom.xml",
5794
+ "build.gradle"
5795
+ ];
5796
+ var WORKSPACE_MARKERS2 = [GIT_WORKSPACE_MARKER2, ...PROJECT_WORKSPACE_MARKERS2];
5797
+
5888
5798
  // ../../../../lsp-core/src/request-context.ts
5889
5799
  import { AsyncLocalStorage as AsyncLocalStorage2 } from "node:async_hooks";
5890
5800
  import { existsSync as existsSync13, realpathSync as realpathSync6, statSync as statSync6 } from "node:fs";
@@ -6007,7 +5917,131 @@ function errorCode2(error) {
6007
5917
  const code = Reflect.get(error, "code");
6008
5918
  return typeof code === "string" ? code : undefined;
6009
5919
  }
6010
-
5920
+ // ../../../../lsp-core/src/post-edit/not-installed-guidance.ts
5921
+ function notInstalledGuidance(filePath, outcome, state, locateFile) {
5922
+ if (outcome.decision !== undefined)
5923
+ return outcome.text;
5924
+ if (locateFile !== undefined && locateFile(filePath) !== "project")
5925
+ return;
5926
+ if (outcome.installDecisionTool)
5927
+ return outcome.text;
5928
+ if (state.notInstalledServers.has(outcome.serverId))
5929
+ return;
5930
+ state.notInstalledServers.add(outcome.serverId);
5931
+ return outcome.text;
5932
+ }
5933
+ // ../../../../lsp-core/src/post-edit/orchestration.ts
5934
+ import { extname as extname2 } from "node:path";
5935
+ var DEFAULT_MAX_CONCURRENCY = 4;
5936
+ var CLEAN_DIAGNOSTICS_TEXT = "No diagnostics found";
5937
+ function createPostEditNotConfiguredCache() {
5938
+ return { notConfiguredExtensions: new Set, notInstalledServers: new Set };
5939
+ }
5940
+ async function collectPostEditDiagnostics(input) {
5941
+ const cache = input.cache === undefined ? createPostEditNotConfiguredCache() : input.cache;
5942
+ const filePaths = firstSeenDiagnosticTargets(input.filePaths, cache);
5943
+ const results = await runBoundedDiagnostics(filePaths, input.runDiagnostics, input.maxConcurrency);
5944
+ const blocks = [];
5945
+ const observations = [];
5946
+ for (const result of results) {
5947
+ const outcome = result.outcome;
5948
+ const classification = typeof outcome !== "string" && outcome.kind === "not_installed" ? classifyNotInstalled(notInstalledGuidance(result.filePath, outcome, cache, input.locateFile)) : classifyDiagnostics(outcome);
5949
+ switch (classification.kind) {
5950
+ case "not_installed":
5951
+ observations.push({ filePath: result.filePath, kind: "not_installed" });
5952
+ break;
5953
+ case "clean":
5954
+ observations.push({ filePath: result.filePath, kind: "clean" });
5955
+ break;
5956
+ case "not_configured":
5957
+ cache.notConfiguredExtensions.add(classification.extension);
5958
+ observations.push({ filePath: result.filePath, kind: "not_configured" });
5959
+ break;
5960
+ case "block":
5961
+ blocks.push({ filePath: result.filePath, diagnostics: classification.diagnostics });
5962
+ observations.push({ filePath: result.filePath, kind: "block" });
5963
+ break;
5964
+ default: {
5965
+ const exhaustive = classification;
5966
+ return exhaustive;
5967
+ }
5968
+ }
5969
+ }
5970
+ return { blocks, observations };
5971
+ }
5972
+ function firstSeenDiagnosticTargets(filePaths, cache) {
5973
+ const seen = new Set;
5974
+ const targets = [];
5975
+ for (const filePath of filePaths) {
5976
+ if (filePath.length === 0 || seen.has(filePath))
5977
+ continue;
5978
+ seen.add(filePath);
5979
+ const extension = extensionKey(filePath);
5980
+ if (extension !== undefined && cache.notConfiguredExtensions.has(extension))
5981
+ continue;
5982
+ targets.push({ index: targets.length, filePath });
5983
+ }
5984
+ return targets;
5985
+ }
5986
+ async function runBoundedDiagnostics(filePaths, runDiagnostics, maxConcurrency) {
5987
+ const results = [];
5988
+ const workerCount = Math.min(Math.max(1, maxConcurrency ?? DEFAULT_MAX_CONCURRENCY), filePaths.length);
5989
+ let nextIndex = 0;
5990
+ async function worker() {
5991
+ for (;; ) {
5992
+ const target = filePaths[nextIndex];
5993
+ nextIndex += 1;
5994
+ if (target === undefined)
5995
+ return;
5996
+ results[target.index] = {
5997
+ index: target.index,
5998
+ filePath: target.filePath,
5999
+ outcome: await collectFileDiagnostics(target.filePath, runDiagnostics)
6000
+ };
6001
+ }
6002
+ }
6003
+ await Promise.all(Array.from({ length: workerCount }, () => worker()));
6004
+ return results.filter((result) => result !== undefined);
6005
+ }
6006
+ async function collectFileDiagnostics(filePath, runDiagnostics) {
6007
+ try {
6008
+ return normalizeDiagnosticsOutcome(await runDiagnostics(filePath));
6009
+ } catch (error) {
6010
+ if (error instanceof Error)
6011
+ return formatDiagnosticsError(error);
6012
+ return normalizeDiagnosticsText(String(error));
6013
+ }
6014
+ }
6015
+ function normalizeDiagnosticsOutcome(outcome) {
6016
+ if (typeof outcome === "string")
6017
+ return normalizeDiagnosticsText(outcome);
6018
+ if (outcome.kind === "not_installed")
6019
+ return { ...outcome, text: normalizeDiagnosticsText(outcome.text) };
6020
+ return outcome;
6021
+ }
6022
+ function classifyNotInstalled(guidance) {
6023
+ return guidance === undefined ? { kind: "not_installed" } : { kind: "block", diagnostics: guidance };
6024
+ }
6025
+ function normalizeDiagnosticsText(text) {
6026
+ return text.trim();
6027
+ }
6028
+ function formatDiagnosticsError(error) {
6029
+ const message = normalizeDiagnosticsText(error.message);
6030
+ return message.length > 0 ? message : normalizeDiagnosticsText(String(error));
6031
+ }
6032
+ function classifyDiagnostics(outcome) {
6033
+ if (typeof outcome !== "string") {
6034
+ return { kind: "not_configured", extension: outcome.extension };
6035
+ }
6036
+ const diagnostics = outcome;
6037
+ if (diagnostics.length === 0 || diagnostics === CLEAN_DIAGNOSTICS_TEXT)
6038
+ return { kind: "clean" };
6039
+ return { kind: "block", diagnostics };
6040
+ }
6041
+ function extensionKey(filePath) {
6042
+ const extension = extname2(filePath).toLowerCase();
6043
+ return extension.length === 0 ? undefined : extension;
6044
+ }
6011
6045
  // src/daemon-cli-path.ts
6012
6046
  import { existsSync as existsSync14, readFileSync as readFileSync7 } from "node:fs";
6013
6047
  import { createRequire as createRequire2 } from "node:module";
@@ -6081,9 +6115,9 @@ function sessionIdFrom(input) {
6081
6115
  }
6082
6116
  function readLspPostEditCache(sessionId) {
6083
6117
  if (sessionId === undefined)
6084
- return { notConfiguredExtensions: new Set };
6118
+ return { notConfiguredExtensions: new Set, notInstalledServers: new Set };
6085
6119
  const state = readSessionState(sessionStatePath(sessionId));
6086
- return { notConfiguredExtensions: new Set(state.notConfiguredExtensions) };
6120
+ return { notConfiguredExtensions: new Set(state.notConfiguredExtensions), notInstalledServers: new Set };
6087
6121
  }
6088
6122
  function writeLspPostEditCache(sessionId, cache) {
6089
6123
  if (sessionId === undefined)
@@ -6,9 +6,9 @@ export function sessionIdFrom(input) {
6
6
  }
7
7
  export function readLspPostEditCache(sessionId) {
8
8
  if (sessionId === undefined)
9
- return { notConfiguredExtensions: new Set() };
9
+ return { notConfiguredExtensions: new Set(), notInstalledServers: new Set() };
10
10
  const state = readSessionState(sessionStatePath(sessionId));
11
- return { notConfiguredExtensions: new Set(state.notConfiguredExtensions) };
11
+ return { notConfiguredExtensions: new Set(state.notConfiguredExtensions), notInstalledServers: new Set() };
12
12
  }
13
13
  export function writeLspPostEditCache(sessionId, cache) {
14
14
  if (sessionId === undefined)
@@ -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.1.3) Checking LSP Diagnostics"
11
+ "statusMessage": "(OmO 5.1.4) 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.1.3) Resetting LSP Diagnostics Cache"
24
+ "statusMessage": "(OmO 5.1.4) 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.1.3",
3
+ "version": "5.1.4",
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",
@@ -13,9 +13,9 @@ export function sessionIdFrom(input: { readonly session_id?: unknown }): string
13
13
  }
14
14
 
15
15
  export function readLspPostEditCache(sessionId: string | undefined): PostEditNotConfiguredCache {
16
- if (sessionId === undefined) return { notConfiguredExtensions: new Set() };
16
+ if (sessionId === undefined) return { notConfiguredExtensions: new Set(), notInstalledServers: new Set() };
17
17
  const state = readSessionState(sessionStatePath(sessionId));
18
- return { notConfiguredExtensions: new Set(state.notConfiguredExtensions) };
18
+ return { notConfiguredExtensions: new Set(state.notConfiguredExtensions), notInstalledServers: new Set() };
19
19
  }
20
20
 
21
21
  export function writeLspPostEditCache(sessionId: string | undefined, cache: PostEditNotConfiguredCache): void {
@@ -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.1.3) Loading Project Rules"
10
+ "statusMessage": "(OmO 5.1.4) 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.1.3) Loading Project Rules"
22
+ "statusMessage": "(OmO 5.1.4) 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.1.3) Matching Project Rules"
35
+ "statusMessage": "(OmO 5.1.4) 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.1.3) Resetting Project Rule Cache"
48
+ "statusMessage": "(OmO 5.1.4) 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.1.3",
3
+ "version": "5.1.4",
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",
@@ -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.1.3) Checking Thread Title Hygiene"
11
+ "statusMessage": "(OmO 5.1.4) Checking Thread Title Hygiene"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-teammode",
3
- "version": "5.1.3",
3
+ "version": "5.1.4",
4
4
  "description": "Codex team-mode hook component that keeps background thread titles descriptive after create_thread.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook session-start",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.1.3) Recording Session Telemetry"
10
+ "statusMessage": "(OmO 5.1.4) Recording Session Telemetry"
11
11
  }
12
12
  ]
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-telemetry",
3
- "version": "5.1.3",
3
+ "version": "5.1.4",
4
4
  "description": "Codex plugin component that emits omo-codex anonymous daily-active telemetry on SessionStart.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.1.3) Checking Ultrawork Trigger"
10
+ "statusMessage": "(OmO 5.1.4) Checking Ultrawork Trigger"
11
11
  }
12
12
  ]
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-ultrawork",
3
- "version": "5.1.3",
3
+ "version": "5.1.4",
4
4
  "description": "Codex plugin that injects the ultrawork orchestration directive and ships LazyCodex planning, review, QA, and gate agent roles.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/ulw-execute-continuation/dist/cli.js\" hook stop",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.1.3) Checking Ulw-Execute Continuation"
10
+ "statusMessage": "(OmO 5.1.4) Checking Ulw-Execute Continuation"
11
11
  }
12
12
  ]
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-ulw-execute-continuation",
3
- "version": "5.1.3",
3
+ "version": "5.1.4",
4
4
  "description": "Codex Stop hook continuation injector for omo-codex ulw-execute plans.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit --with-ultrawork",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.1.3) Checking Ulw-Loop Steering"
10
+ "statusMessage": "(OmO 5.1.4) Checking Ulw-Loop Steering"
11
11
  }
12
12
  ]
13
13
  }
@@ -20,7 +20,7 @@
20
20
  "type": "command",
21
21
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use-spawn",
22
22
  "timeout": 5,
23
- "statusMessage": "(OmO 5.1.3) Recording Spawn Admission"
23
+ "statusMessage": "(OmO 5.1.4) Recording Spawn Admission"
24
24
  }
25
25
  ]
26
26
  }
@@ -33,7 +33,7 @@
33
33
  "type": "command",
34
34
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
35
35
  "timeout": 5,
36
- "statusMessage": "(OmO 5.1.3) Enforcing Unlimited Ulw-Loop Budget"
36
+ "statusMessage": "(OmO 5.1.4) Enforcing Unlimited Ulw-Loop Budget"
37
37
  }
38
38
  ]
39
39
  },
@@ -44,7 +44,7 @@
44
44
  "type": "command",
45
45
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use-spawn",
46
46
  "timeout": 5,
47
- "statusMessage": "(OmO 5.1.3) Guarding Ulw-Loop Spawns"
47
+ "statusMessage": "(OmO 5.1.4) Guarding Ulw-Loop Spawns"
48
48
  }
49
49
  ]
50
50
  }
@@ -56,7 +56,7 @@
56
56
  "type": "command",
57
57
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook stop",
58
58
  "timeout": 10,
59
- "statusMessage": "(OmO 5.1.3) Checking Ulw-Loop Resume"
59
+ "statusMessage": "(OmO 5.1.4) Checking Ulw-Loop Resume"
60
60
  }
61
61
  ]
62
62
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-ulw-loop",
3
- "version": "5.1.3",
3
+ "version": "5.1.4",
4
4
  "description": "Codex plugin: durable repo-native multi-goal orchestration with embedded success criteria and observable evidence audit.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/git-bash/dist/cli.js\" hook post-compact",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.1.3) Resetting Git Bash MCP Reminder",
10
+ "statusMessage": "(OmO 5.1.4) Resetting Git Bash MCP Reminder",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\git-bash\\dist\\cli.js\" hook post-compact"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/lsp/dist/cli.js\" hook post-compact",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.1.3) Resetting LSP Diagnostics Cache",
10
+ "statusMessage": "(OmO 5.1.4) Resetting LSP Diagnostics Cache",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\lsp\\dist\\cli.js\" hook post-compact"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook post-compact",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.1.3) Resetting Project Rule Cache",
10
+ "statusMessage": "(OmO 5.1.4) Resetting Project Rule Cache",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\rules\\dist\\cli.js\" hook post-compact"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/comment-checker/dist/cli.js\" hook post-tool-use",
9
9
  "timeout": 30,
10
- "statusMessage": "(OmO 5.1.3) Checking Comments",
10
+ "statusMessage": "(OmO 5.1.4) Checking Comments",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\comment-checker\\dist\\cli.js\" hook post-tool-use"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/lsp/dist/cli.js\" hook post-tool-use",
9
9
  "timeout": 60,
10
- "statusMessage": "(OmO 5.1.3) Checking LSP Diagnostics",
10
+ "statusMessage": "(OmO 5.1.4) Checking LSP Diagnostics",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\lsp\\dist\\cli.js\" hook post-tool-use"
12
12
  }
13
13
  ],
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/components/teammode/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 10,
11
- "statusMessage": "(OmO 5.1.3) Checking Thread Title Hygiene",
11
+ "statusMessage": "(OmO 5.1.4) Checking Thread Title Hygiene",
12
12
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\teammode\\dist\\cli.js\" hook post-tool-use"
13
13
  }
14
14
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook post-tool-use",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.1.3) Matching Project Rules",
10
+ "statusMessage": "(OmO 5.1.4) Matching Project Rules",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\rules\\dist\\cli.js\" hook post-tool-use"
12
12
  }
13
13
  ],
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook post-tool-use-spawn",
10
10
  "timeout": 5,
11
- "statusMessage": "(OmO 5.1.3) Recording Spawn Admission",
11
+ "statusMessage": "(OmO 5.1.4) Recording Spawn Admission",
12
12
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook post-tool-use-spawn"
13
13
  }
14
14
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook pre-tool-use",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.1.3) Enforcing Unlimited Goal Budget",
10
+ "statusMessage": "(OmO 5.1.4) Enforcing Unlimited Goal Budget",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook pre-tool-use"
12
12
  }
13
13
  ],
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook pre-tool-use-spawn",
10
10
  "timeout": 5,
11
- "statusMessage": "(OmO 5.1.3) Guarding Ulw-Loop Spawns",
11
+ "statusMessage": "(OmO 5.1.4) Guarding Ulw-Loop Spawns",
12
12
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook pre-tool-use-spawn"
13
13
  }
14
14
  ]