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.
Files changed (116) hide show
  1. package/README.ja.md +25 -21
  2. package/README.ko.md +25 -21
  3. package/README.md +26 -22
  4. package/README.ru.md +24 -20
  5. package/README.zh-cn.md +25 -21
  6. package/dist/cli/index.js +12628 -13558
  7. package/dist/cli-node/index.js +12628 -13558
  8. package/dist/features/btw-side/tui-controller-types.d.ts +5 -0
  9. package/dist/features/btw-side/tui-controller.d.ts +8 -3
  10. package/dist/features/btw-side/tui-escape-return.d.ts +12 -0
  11. package/dist/features/btw-side/tui-keymap.d.ts +8 -1
  12. package/dist/features/btw-side/tui-picker-options.d.ts +20 -0
  13. package/dist/features/btw-side/tui-picker.d.ts +9 -0
  14. package/dist/features/btw-side/tui-session-catalog.d.ts +35 -0
  15. package/dist/features/btw-side/tui-side-start.d.ts +1 -1
  16. package/dist/features/opengateway-provider/index.d.ts +13 -0
  17. package/dist/index.js +8462 -6318
  18. package/dist/skills/frontend/SKILL.md +1 -0
  19. package/dist/skills/frontend/references/design/print-paged-media.md +76 -0
  20. package/dist/skills/ulw-research/SKILL.md +1 -1
  21. package/dist/skills/visual-qa/SKILL.md +3 -2
  22. package/dist/tui.js +3993 -5513
  23. package/package.json +22 -22
  24. package/packages/git-bash-mcp/package.json +1 -1
  25. package/packages/lsp-daemon/dist/cli.js +81 -113
  26. package/packages/lsp-daemon/dist/client.js +82 -117
  27. package/packages/lsp-daemon/dist/ensure-daemon.js +1 -0
  28. package/packages/lsp-daemon/dist/index.js +88 -122
  29. package/packages/lsp-daemon/dist/version-reap.js +1 -1
  30. package/packages/lsp-tools-mcp/dist/cli.js +62 -93
  31. package/packages/lsp-tools-mcp/dist/lsp/manager.js +62 -92
  32. package/packages/lsp-tools-mcp/dist/mcp.js +64 -95
  33. package/packages/lsp-tools-mcp/dist/request-context.js +11 -12
  34. package/packages/lsp-tools-mcp/dist/tools.js +73 -104
  35. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  36. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +30 -29
  37. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  38. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  39. package/packages/omo-codex/plugin/components/bootstrap/src/hook.ts +1 -0
  40. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +81 -64
  41. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +81 -65
  42. package/packages/omo-codex/plugin/components/codegraph/package.json +4 -4
  43. package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +1 -0
  44. package/packages/omo-codex/plugin/components/codegraph/src/session-start-hook-runtime.ts +1 -0
  45. package/packages/omo-codex/plugin/components/comment-checker/dist/cli.js +2 -1
  46. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  47. package/packages/omo-codex/plugin/components/comment-checker/package.json +5 -5
  48. package/packages/omo-codex/plugin/components/comment-checker/src/runner.ts +1 -0
  49. package/packages/omo-codex/plugin/components/git-bash/AGENTS.md +1 -1
  50. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  51. package/packages/omo-codex/plugin/components/git-bash/package.json +3 -4
  52. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  53. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +5 -5
  54. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
  55. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +70 -107
  56. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  57. package/packages/omo-codex/plugin/components/lsp/package.json +5 -5
  58. package/packages/omo-codex/plugin/components/lsp/src/cli.ts +1 -1
  59. package/packages/omo-codex/plugin/components/rules/dist/cli.js +14 -12
  60. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  61. package/packages/omo-codex/plugin/components/rules/package.json +7 -7
  62. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
  63. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +5 -5
  64. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  65. package/packages/omo-codex/plugin/components/teammode/package.json +5 -5
  66. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +25 -25
  67. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +31 -31
  68. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  69. package/packages/omo-codex/plugin/components/telemetry/package.json +5 -5
  70. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  71. package/packages/omo-codex/plugin/components/ultrawork/package.json +5 -5
  72. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +1 -3
  73. package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.js +1 -1
  74. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  75. package/packages/omo-codex/plugin/components/ulw-loop/package.json +5 -5
  76. package/packages/omo-codex/plugin/components/ulw-loop/src/paths.ts +1 -1
  77. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-create-goals.test.ts +25 -0
  78. package/packages/omo-codex/plugin/components/ulw-loop/test/paths.test.ts +9 -0
  79. package/packages/omo-codex/plugin/components/ulw-loop/vitest.config.ts +1 -0
  80. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  81. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  82. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  83. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
  84. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  85. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  86. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  87. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  88. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  89. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  90. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  91. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  92. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  93. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
  94. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  95. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  96. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
  97. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  98. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
  99. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  100. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  101. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  102. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  103. package/packages/omo-codex/plugin/package-lock.json +661 -375
  104. package/packages/omo-codex/plugin/package.json +1 -1
  105. package/packages/omo-codex/plugin/shared/package.json +2 -3
  106. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +1 -0
  107. package/packages/omo-codex/plugin/skills/frontend/references/design/print-paged-media.md +76 -0
  108. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +1 -1
  109. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +3 -2
  110. package/packages/omo-codex/scripts/install-dist/install-local.mjs +53 -53
  111. package/packages/shared-skills/skills/frontend/SKILL.md +1 -0
  112. package/packages/shared-skills/skills/frontend/references/design/print-paged-media.md +76 -0
  113. package/packages/shared-skills/skills/ulw-research/SKILL.md +1 -1
  114. package/packages/shared-skills/skills/visual-qa/SKILL.md +3 -2
  115. package/script/qa/web-terminal-visual-qa.mjs +2 -0
  116. package/script/qa/xterm-live-terminal.mjs +18 -2
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-teammode",
3
- "version": "5.0.0-beta.13",
3
+ "version": "5.0.0-beta.15",
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,
@@ -15,10 +15,10 @@
15
15
  "typecheck": "tsc --noEmit"
16
16
  },
17
17
  "devDependencies": {
18
- "@types/node": "^25.9.3",
19
- "bun-types": "^1.3.1",
20
- "typescript": "^6.0.3",
21
- "vitest": "^4.1.8"
18
+ "@types/node": "^26.2.0",
19
+ "bun-types": "^1.4.0",
20
+ "typescript": "^7.0.2",
21
+ "vitest": "^4.1.11"
22
22
  },
23
23
  "engines": {
24
24
  "node": ">=20.0.0"
@@ -1982,32 +1982,32 @@ class SimpleEventEmitter {
1982
1982
  // ../../../node_modules/.bun/@posthog+core@1.48.6/node_modules/@posthog/core/dist/error-tracking/index.mjs
1983
1983
  var exports_error_tracking = {};
1984
1984
  __export(exports_error_tracking, {
1985
- winjsStackLineParser: () => winjsStackLineParser,
1986
- stripReservedExceptionStepFields: () => stripReservedExceptionStepFields,
1987
- reverseAndStripFrames: () => reverseAndStripFrames,
1988
- resolveExceptionStepsConfig: () => resolveExceptionStepsConfig,
1989
- opera11StackLineParser: () => opera11StackLineParser,
1990
- opera10StackLineParser: () => opera10StackLineParser,
1991
- nodeStackLineParser: () => nodeStackLineParser,
1992
- getUtf8ByteLength: () => getUtf8ByteLength,
1993
- getInjectedReleaseId: () => getInjectedReleaseId,
1994
- geckoStackLineParser: () => geckoStackLineParser,
1995
- createStackParser: () => createStackParser,
1996
- createDefaultStackParser: () => createDefaultStackParser,
1997
- chromeStackLineParser: () => chromeStackLineParser,
1998
- StringCoercer: () => StringCoercer,
1999
- ReduceableCache: () => ReduceableCache,
2000
- PromiseRejectionEventCoercer: () => PromiseRejectionEventCoercer,
2001
- PrimitiveCoercer: () => PrimitiveCoercer,
2002
- ObjectCoercer: () => ObjectCoercer,
2003
- ExceptionStepsBuffer: () => ExceptionStepsBuffer,
2004
- EventCoercer: () => EventCoercer,
2005
- ErrorPropertiesBuilder: () => ErrorPropertiesBuilder,
2006
- ErrorEventCoercer: () => ErrorEventCoercer,
2007
- ErrorCoercer: () => ErrorCoercer,
2008
- EXCEPTION_STEP_INTERNAL_FIELDS: () => EXCEPTION_STEP_INTERNAL_FIELDS,
1985
+ DEFAULT_EXCEPTION_STEPS_CONFIG: () => DEFAULT_EXCEPTION_STEPS_CONFIG,
2009
1986
  DOMExceptionCoercer: () => DOMExceptionCoercer,
2010
- DEFAULT_EXCEPTION_STEPS_CONFIG: () => DEFAULT_EXCEPTION_STEPS_CONFIG
1987
+ EXCEPTION_STEP_INTERNAL_FIELDS: () => EXCEPTION_STEP_INTERNAL_FIELDS,
1988
+ ErrorCoercer: () => ErrorCoercer,
1989
+ ErrorEventCoercer: () => ErrorEventCoercer,
1990
+ ErrorPropertiesBuilder: () => ErrorPropertiesBuilder,
1991
+ EventCoercer: () => EventCoercer,
1992
+ ExceptionStepsBuffer: () => ExceptionStepsBuffer,
1993
+ ObjectCoercer: () => ObjectCoercer,
1994
+ PrimitiveCoercer: () => PrimitiveCoercer,
1995
+ PromiseRejectionEventCoercer: () => PromiseRejectionEventCoercer,
1996
+ ReduceableCache: () => ReduceableCache,
1997
+ StringCoercer: () => StringCoercer,
1998
+ chromeStackLineParser: () => chromeStackLineParser,
1999
+ createDefaultStackParser: () => createDefaultStackParser,
2000
+ createStackParser: () => createStackParser,
2001
+ geckoStackLineParser: () => geckoStackLineParser,
2002
+ getInjectedReleaseId: () => getInjectedReleaseId,
2003
+ getUtf8ByteLength: () => getUtf8ByteLength,
2004
+ nodeStackLineParser: () => nodeStackLineParser,
2005
+ opera10StackLineParser: () => opera10StackLineParser,
2006
+ opera11StackLineParser: () => opera11StackLineParser,
2007
+ resolveExceptionStepsConfig: () => resolveExceptionStepsConfig,
2008
+ reverseAndStripFrames: () => reverseAndStripFrames,
2009
+ stripReservedExceptionStepFields: () => stripReservedExceptionStepFields,
2010
+ winjsStackLineParser: () => winjsStackLineParser
2011
2011
  });
2012
2012
 
2013
2013
  // ../../../node_modules/.bun/@posthog+core@1.48.6/node_modules/@posthog/core/dist/error-tracking/chunk-ids.mjs
@@ -1978,32 +1978,32 @@ class SimpleEventEmitter {
1978
1978
  // ../../../../../node_modules/.bun/@posthog+core@1.48.6/node_modules/@posthog/core/dist/error-tracking/index.mjs
1979
1979
  var exports_error_tracking = {};
1980
1980
  __export(exports_error_tracking, {
1981
- winjsStackLineParser: () => winjsStackLineParser,
1982
- stripReservedExceptionStepFields: () => stripReservedExceptionStepFields,
1983
- reverseAndStripFrames: () => reverseAndStripFrames,
1984
- resolveExceptionStepsConfig: () => resolveExceptionStepsConfig,
1985
- opera11StackLineParser: () => opera11StackLineParser,
1986
- opera10StackLineParser: () => opera10StackLineParser,
1987
- nodeStackLineParser: () => nodeStackLineParser,
1988
- getUtf8ByteLength: () => getUtf8ByteLength,
1989
- getInjectedReleaseId: () => getInjectedReleaseId,
1990
- geckoStackLineParser: () => geckoStackLineParser,
1991
- createStackParser: () => createStackParser,
1992
- createDefaultStackParser: () => createDefaultStackParser,
1993
- chromeStackLineParser: () => chromeStackLineParser,
1994
- StringCoercer: () => StringCoercer,
1995
- ReduceableCache: () => ReduceableCache,
1996
- PromiseRejectionEventCoercer: () => PromiseRejectionEventCoercer,
1997
- PrimitiveCoercer: () => PrimitiveCoercer,
1998
- ObjectCoercer: () => ObjectCoercer,
1999
- ExceptionStepsBuffer: () => ExceptionStepsBuffer,
2000
- EventCoercer: () => EventCoercer,
2001
- ErrorPropertiesBuilder: () => ErrorPropertiesBuilder,
2002
- ErrorEventCoercer: () => ErrorEventCoercer,
2003
- ErrorCoercer: () => ErrorCoercer,
2004
- EXCEPTION_STEP_INTERNAL_FIELDS: () => EXCEPTION_STEP_INTERNAL_FIELDS,
1981
+ DEFAULT_EXCEPTION_STEPS_CONFIG: () => DEFAULT_EXCEPTION_STEPS_CONFIG,
2005
1982
  DOMExceptionCoercer: () => DOMExceptionCoercer,
2006
- DEFAULT_EXCEPTION_STEPS_CONFIG: () => DEFAULT_EXCEPTION_STEPS_CONFIG
1983
+ EXCEPTION_STEP_INTERNAL_FIELDS: () => EXCEPTION_STEP_INTERNAL_FIELDS,
1984
+ ErrorCoercer: () => ErrorCoercer,
1985
+ ErrorEventCoercer: () => ErrorEventCoercer,
1986
+ ErrorPropertiesBuilder: () => ErrorPropertiesBuilder,
1987
+ EventCoercer: () => EventCoercer,
1988
+ ExceptionStepsBuffer: () => ExceptionStepsBuffer,
1989
+ ObjectCoercer: () => ObjectCoercer,
1990
+ PrimitiveCoercer: () => PrimitiveCoercer,
1991
+ PromiseRejectionEventCoercer: () => PromiseRejectionEventCoercer,
1992
+ ReduceableCache: () => ReduceableCache,
1993
+ StringCoercer: () => StringCoercer,
1994
+ chromeStackLineParser: () => chromeStackLineParser,
1995
+ createDefaultStackParser: () => createDefaultStackParser,
1996
+ createStackParser: () => createStackParser,
1997
+ geckoStackLineParser: () => geckoStackLineParser,
1998
+ getInjectedReleaseId: () => getInjectedReleaseId,
1999
+ getUtf8ByteLength: () => getUtf8ByteLength,
2000
+ nodeStackLineParser: () => nodeStackLineParser,
2001
+ opera10StackLineParser: () => opera10StackLineParser,
2002
+ opera11StackLineParser: () => opera11StackLineParser,
2003
+ resolveExceptionStepsConfig: () => resolveExceptionStepsConfig,
2004
+ reverseAndStripFrames: () => reverseAndStripFrames,
2005
+ stripReservedExceptionStepFields: () => stripReservedExceptionStepFields,
2006
+ winjsStackLineParser: () => winjsStackLineParser
2007
2007
  });
2008
2008
 
2009
2009
  // ../../../../../node_modules/.bun/@posthog+core@1.48.6/node_modules/@posthog/core/dist/error-tracking/chunk-ids.mjs
@@ -7677,11 +7677,11 @@ function getPostHogDistinctIdForTesting(osProvider) {
7677
7677
  return getTelemetryDistinctId(MACHINE_ID_PREFIX, osProvider);
7678
7678
  }
7679
7679
  export {
7680
- getPostHogDistinctIdForTesting,
7681
- getPostHogDistinctId,
7682
- getComponentVersion,
7683
- createPluginPostHog,
7684
- __createPluginPostHogForTesting,
7680
+ DEFAULT_POSTHOG_API_KEY,
7685
7681
  DEFAULT_POSTHOG_HOST,
7686
- DEFAULT_POSTHOG_API_KEY
7682
+ __createPluginPostHogForTesting,
7683
+ createPluginPostHog,
7684
+ getComponentVersion,
7685
+ getPostHogDistinctId,
7686
+ getPostHogDistinctIdForTesting
7687
7687
  };
@@ -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.0.0-beta.13) Recording Session Telemetry"
10
+ "statusMessage": "(OmO 5.0.0-beta.15) 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.0.0-beta.13",
3
+ "version": "5.0.0-beta.15",
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",
@@ -44,10 +44,10 @@
44
44
  },
45
45
  "devDependencies": {
46
46
  "@oh-my-opencode/telemetry-core": "file:../../../../telemetry-core",
47
- "@biomejs/biome": "2.4.16",
48
- "@types/node": "^25.9.3",
49
- "typescript": "^6.0.3",
50
- "vitest": "^4.1.8"
47
+ "@biomejs/biome": "2.5.9",
48
+ "@types/node": "^26.2.0",
49
+ "typescript": "^7.0.2",
50
+ "vitest": "^4.1.11"
51
51
  },
52
52
  "engines": {
53
53
  "node": ">=20.0.0"
@@ -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.0.0-beta.13) Checking Ultrawork Trigger"
10
+ "statusMessage": "(OmO 5.0.0-beta.15) 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.0.0-beta.13",
3
+ "version": "5.0.0-beta.15",
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",
@@ -44,11 +44,11 @@
44
44
  "NOTICE"
45
45
  ],
46
46
  "devDependencies": {
47
- "@biomejs/biome": "2.4.16",
47
+ "@biomejs/biome": "2.5.9",
48
48
  "@oh-my-opencode/prompts-core": "file:../../../../prompts-core",
49
- "@types/node": "^25.9.3",
50
- "typescript": "^6.0.3",
51
- "vitest": "^4.1.8"
49
+ "@types/node": "^26.2.0",
50
+ "typescript": "^7.0.2",
51
+ "vitest": "^4.1.11"
52
52
  },
53
53
  "engines": {
54
54
  "node": ">=20.0.0"
@@ -33,8 +33,6 @@ var ULW_LOOP_SUCCESS_CRITERION_USER_MODELS = [
33
33
  ];
34
34
  // packages/omo-codex/plugin/components/ulw-loop/src/runtime.ts
35
35
  class UlwLoopError extends Error {
36
- code;
37
- details;
38
36
  constructor(message, code, opts) {
39
37
  super(message, opts?.cause === undefined ? undefined : { cause: opts.cause });
40
38
  this.name = "UlwLoopError";
@@ -48,7 +46,7 @@ function iso() {
48
46
  return new Date().toISOString();
49
47
  }
50
48
  // packages/omo-codex/plugin/components/ulw-loop/src/paths.ts
51
- var SESSION_ENV_KEYS = ["OMO_ULW_LOOP_SESSION_ID", "CODEX_SESSION_ID", "CODEX_THREAD_ID"];
49
+ var SESSION_ENV_KEYS = ["OMO_ULW_LOOP_SESSION_ID", "CODEX_SESSION_ID", "CODEX_THREAD_ID", "PI_SESSION_ID"];
52
50
  function normalizeUlwLoopSessionId(sessionId) {
53
51
  const trimmed = sessionId?.trim();
54
52
  if (!trimmed)
@@ -1,6 +1,6 @@
1
1
  import { isAbsolute, join, relative, sep } from "node:path";
2
2
  import { ULW_LOOP_BRIEF, ULW_LOOP_DIR, ULW_LOOP_GOALS, ULW_LOOP_LEDGER } from "./types.js";
3
- const SESSION_ENV_KEYS = ["OMO_ULW_LOOP_SESSION_ID", "CODEX_SESSION_ID", "CODEX_THREAD_ID"];
3
+ const SESSION_ENV_KEYS = ["OMO_ULW_LOOP_SESSION_ID", "CODEX_SESSION_ID", "CODEX_THREAD_ID", "PI_SESSION_ID"];
4
4
  export function normalizeUlwLoopSessionId(sessionId) {
5
5
  const trimmed = sessionId?.trim();
6
6
  if (!trimmed)
@@ -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.0.0-beta.13) Checking Ulw-Loop Steering"
10
+ "statusMessage": "(OmO 5.0.0-beta.15) 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 pre-tool-use",
22
22
  "timeout": 5,
23
- "statusMessage": "(OmO 5.0.0-beta.13) Enforcing Unlimited Ulw-Loop Budget"
23
+ "statusMessage": "(OmO 5.0.0-beta.15) Enforcing Unlimited Ulw-Loop Budget"
24
24
  }
25
25
  ]
26
26
  },
@@ -31,7 +31,7 @@
31
31
  "type": "command",
32
32
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use-spawn",
33
33
  "timeout": 5,
34
- "statusMessage": "(OmO 5.0.0-beta.13) Guarding Ulw-Loop Spawns"
34
+ "statusMessage": "(OmO 5.0.0-beta.15) Guarding Ulw-Loop Spawns"
35
35
  }
36
36
  ]
37
37
  }
@@ -43,7 +43,7 @@
43
43
  "type": "command",
44
44
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook stop",
45
45
  "timeout": 10,
46
- "statusMessage": "(OmO 5.0.0-beta.13) Checking Ulw-Loop Resume"
46
+ "statusMessage": "(OmO 5.0.0-beta.15) Checking Ulw-Loop Resume"
47
47
  }
48
48
  ]
49
49
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-ulw-loop",
3
- "version": "5.0.0-beta.13",
3
+ "version": "5.0.0-beta.15",
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",
@@ -47,10 +47,10 @@
47
47
  "check": "tsc --noEmit && biome check . && npm run build"
48
48
  },
49
49
  "devDependencies": {
50
- "@biomejs/biome": "2.4.16",
51
- "@types/node": "^25.9.3",
52
- "typescript": "^6.0.3",
53
- "vitest": "^4.1.8"
50
+ "@biomejs/biome": "2.5.9",
51
+ "@types/node": "^26.2.0",
52
+ "typescript": "^7.0.2",
53
+ "vitest": "^4.1.11"
54
54
  },
55
55
  "engines": {
56
56
  "node": ">=20.0.0"
@@ -5,7 +5,7 @@ export interface UlwLoopScope {
5
5
  readonly sessionId?: string | null;
6
6
  }
7
7
 
8
- const SESSION_ENV_KEYS = ["OMO_ULW_LOOP_SESSION_ID", "CODEX_SESSION_ID", "CODEX_THREAD_ID"] as const;
8
+ const SESSION_ENV_KEYS = ["OMO_ULW_LOOP_SESSION_ID", "CODEX_SESSION_ID", "CODEX_THREAD_ID", "PI_SESSION_ID"] as const;
9
9
  type EnvMap = Readonly<Record<string, string | undefined>>;
10
10
 
11
11
  export function normalizeUlwLoopSessionId(sessionId: string | null | undefined): string | null {
@@ -13,6 +13,7 @@ let err: string[];
13
13
  let originalCodexSessionId: string | undefined;
14
14
  let originalCodexThreadId: string | undefined;
15
15
  let originalOmoSessionId: string | undefined;
16
+ let originalPiSessionId: string | undefined;
16
17
 
17
18
  beforeEach(async () => {
18
19
  testDir = await mkdtemp(join(tmpdir(), "ug-cli-create-goals-"));
@@ -21,9 +22,11 @@ beforeEach(async () => {
21
22
  originalCodexSessionId = process.env["CODEX_SESSION_ID"];
22
23
  originalCodexThreadId = process.env["CODEX_THREAD_ID"];
23
24
  originalOmoSessionId = process.env["OMO_ULW_LOOP_SESSION_ID"];
25
+ originalPiSessionId = process.env["PI_SESSION_ID"];
24
26
  delete process.env["CODEX_SESSION_ID"];
25
27
  delete process.env["CODEX_THREAD_ID"];
26
28
  delete process.env["OMO_ULW_LOOP_SESSION_ID"];
29
+ delete process.env["PI_SESSION_ID"];
27
30
  vi.spyOn(process, "cwd").mockReturnValue(testDir);
28
31
  vi.spyOn(process.stdout, "write").mockImplementation((chunk: string | Uint8Array): boolean => {
29
32
  out.push(chunk.toString());
@@ -43,6 +46,8 @@ afterEach(async () => {
43
46
  else process.env["CODEX_THREAD_ID"] = originalCodexThreadId;
44
47
  if (originalOmoSessionId === undefined) delete process.env["OMO_ULW_LOOP_SESSION_ID"];
45
48
  else process.env["OMO_ULW_LOOP_SESSION_ID"] = originalOmoSessionId;
49
+ if (originalPiSessionId === undefined) delete process.env["PI_SESSION_ID"];
50
+ else process.env["PI_SESSION_ID"] = originalPiSessionId;
46
51
  await rm(testDir, { recursive: true, force: true });
47
52
  });
48
53
 
@@ -182,6 +187,26 @@ describe("ulwLoopCommand create-goals", () => {
182
187
  expect(await readFile(join(testDir, ".omo/ulw-loop/manual-456/goals.json"), "utf8")).toContain("Manual scoped");
183
188
  });
184
189
 
190
+ it("#given two Senpi sessions in one cwd #when each reads ulw-loop state #then only the owner sees its run", async () => {
191
+ process.env["PI_SESSION_ID"] = "session-A";
192
+ expect(await ulwLoopCommand(["create-goals", "--brief", "- Session A run", "--json"])).toBe(0);
193
+ resetOutput();
194
+
195
+ process.env["PI_SESSION_ID"] = "session-B";
196
+ expect(await ulwLoopCommand(["status", "--json"])).toBe(1);
197
+ expect(stdoutJson()).toMatchObject({ ok: false, error: { code: "ULW_LOOP_PLAN_MISSING" } });
198
+ resetOutput();
199
+
200
+ process.env["PI_SESSION_ID"] = "session-A";
201
+ expect(await ulwLoopCommand(["status", "--json"])).toBe(0);
202
+ expect(stdoutJson()).toMatchObject({
203
+ plan: {
204
+ goalsPath: ".omo/ulw-loop/session-A/goals.json",
205
+ goals: [{ title: "Session A run" }],
206
+ },
207
+ });
208
+ });
209
+
185
210
  it("#given a valueless --session-id #when creating goals #then it fails and writes no plan", async () => {
186
211
  const code = await ulwLoopCommand(["create-goals", "--session-id", "--brief", "- Alpha"]);
187
212
 
@@ -7,6 +7,7 @@ import {
7
7
  isWithinAttemptDir,
8
8
  normalizeUlwLoopSessionId,
9
9
  repoRelative,
10
+ resolveUlwLoopSessionIdFromEnv,
10
11
  ulwLoopBriefPath,
11
12
  ulwLoopDir,
12
13
  ulwLoopGoalsPath,
@@ -25,6 +26,14 @@ describe("ulwLoopDir(repo)", () => {
25
26
  });
26
27
  });
27
28
 
29
+ describe("resolveUlwLoopSessionIdFromEnv", () => {
30
+ it("#given a Senpi session env #when resolving scope #then uses the current Pi session id", () => {
31
+ expect(resolveUlwLoopSessionIdFromEnv({ PI_SESSION_ID: "01a00baf-feed-7f4d-a4a9-b8345c67cf72" })).toBe(
32
+ "01a00baf-feed-7f4d-a4a9-b8345c67cf72",
33
+ );
34
+ });
35
+ });
36
+
28
37
  describe("ulw-loop*Path helpers", () => {
29
38
  it("compose artifact filenames under ulwLoopDir", () => {
30
39
  // when/then
@@ -6,5 +6,6 @@ export default defineConfig({
6
6
  environment: "node",
7
7
  pool: "threads",
8
8
  isolate: true,
9
+ env: { PI_SESSION_ID: "" },
9
10
  },
10
11
  });
@@ -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.0.0-beta.13) Resetting Git Bash MCP Reminder",
10
+ "statusMessage": "(OmO 5.0.0-beta.15) 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.0.0-beta.13) Resetting LSP Diagnostics Cache",
10
+ "statusMessage": "(OmO 5.0.0-beta.15) 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.0.0-beta.13) Resetting Project Rule Cache",
10
+ "statusMessage": "(OmO 5.0.0-beta.15) 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/codegraph/dist/cli.js\" hook post-tool-use",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.0.0-beta.13) Checking CodeGraph Init Guidance",
10
+ "statusMessage": "(OmO 5.0.0-beta.15) Checking CodeGraph Init Guidance",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\codegraph\\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/comment-checker/dist/cli.js\" hook post-tool-use",
9
9
  "timeout": 30,
10
- "statusMessage": "(OmO 5.0.0-beta.13) Checking Comments",
10
+ "statusMessage": "(OmO 5.0.0-beta.15) 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.0.0-beta.13) Checking LSP Diagnostics",
10
+ "statusMessage": "(OmO 5.0.0-beta.15) 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.0.0-beta.13) Checking Thread Title Hygiene",
11
+ "statusMessage": "(OmO 5.0.0-beta.15) 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.0.0-beta.13) Matching Project Rules",
10
+ "statusMessage": "(OmO 5.0.0-beta.15) 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
  ],
@@ -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.0.0-beta.13) Enforcing Unlimited Goal Budget",
10
+ "statusMessage": "(OmO 5.0.0-beta.15) 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.0.0-beta.13) Guarding Ulw-Loop Spawns",
11
+ "statusMessage": "(OmO 5.0.0-beta.15) 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
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/git-bash/dist/cli.js\" hook pre-tool-use",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.0.0-beta.13) Recommending Git Bash MCP",
10
+ "statusMessage": "(OmO 5.0.0-beta.15) Recommending Git Bash MCP",
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 pre-tool-use"
12
12
  }
13
13
  ],
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/scripts/auto-update.mjs\" hook session-start",
9
9
  "timeout": 15,
10
- "statusMessage": "(OmO 5.0.0-beta.13) Checking Auto Update",
10
+ "statusMessage": "(OmO 5.0.0-beta.15) Checking Auto Update",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\scripts\\auto-update.mjs\" hook session-start"
12
12
  }
13
13
  ],
@@ -8,7 +8,7 @@
8
8
  "command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
9
9
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
10
10
  "timeout": 30,
11
- "statusMessage": "(OmO 5.0.0-beta.13) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 5.0.0-beta.15) Checking Bootstrap Provisioning"
12
12
  }
13
13
  ]
14
14
  }
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/codegraph/dist/cli.js\" hook session-start",
9
9
  "timeout": 15,
10
- "statusMessage": "(OmO 5.0.0-beta.13) Checking CodeGraph Bootstrap",
10
+ "statusMessage": "(OmO 5.0.0-beta.15) Checking CodeGraph Bootstrap",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\codegraph\\dist\\cli.js\" hook session-start"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook session-start",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.13) Loading Project Rules",
10
+ "statusMessage": "(OmO 5.0.0-beta.15) Loading 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 session-start"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/telemetry/dist/cli.js\" hook session-start",
9
9
  "timeout": 15,
10
- "statusMessage": "(OmO 5.0.0-beta.13) Recording Session Telemetry",
10
+ "statusMessage": "(OmO 5.0.0-beta.15) Recording Session Telemetry",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\telemetry\\dist\\cli.js\" hook session-start"
12
12
  }
13
13
  ]
@@ -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.13) Checking Start-Work Continuation",
10
+ "statusMessage": "(OmO 5.0.0-beta.15) Checking Start-Work Continuation",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\start-work-continuation\\dist\\cli.js\" hook stop"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook stop",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.13) Checking Ulw-Loop Resume",
10
+ "statusMessage": "(OmO 5.0.0-beta.15) Checking Ulw-Loop Resume",
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 stop"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/start-work-continuation/dist/cli.js\" hook subagent-stop",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.13) Checking Start-Work Continuation",
10
+ "statusMessage": "(OmO 5.0.0-beta.15) Checking Start-Work Continuation",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\start-work-continuation\\dist\\cli.js\" hook subagent-stop"
12
12
  }
13
13
  ]
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/components/lazycodex-executor-verify/dist/cli.js\" hook subagent-stop",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.13) Verifying LazyCodex Executor Evidence",
10
+ "statusMessage": "(OmO 5.0.0-beta.15) Verifying LazyCodex Executor Evidence",
11
11
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\lazycodex-executor-verify\\dist\\cli.js\" hook subagent-stop"
12
12
  }
13
13
  ],