oh-my-opencode 4.18.1 → 4.18.2
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/.agents/skills/codex-qa/scripts/lsp-e2e.sh +39 -16
- package/.agents/skills/opencode-qa/scripts/lsp-e2e.sh +111 -28
- package/bin/AGENTS.md +33 -0
- package/dist/cli/index.js +57 -18
- package/dist/cli-node/index.js +57 -18
- package/dist/hooks/anthropic-context-window-limit-recovery/empty-content-recovery-sdk.d.ts +6 -0
- package/dist/hooks/category-skill-reminder/hook.d.ts +9 -1
- package/dist/hooks/comment-checker/hook.d.ts +8 -1
- package/dist/hooks/todo-continuation-enforcer/types.d.ts +3 -0
- package/dist/index.js +560 -333
- package/dist/plugin/messages-transform.d.ts +1 -0
- package/dist/plugin-handlers/prometheus-agent-config-builder.d.ts +2 -0
- package/dist/tui.js +43 -4
- package/package.json +13 -13
- package/packages/git-bash-mcp/dist/cli.js +81 -19
- package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +4 -4
- package/packages/lsp-core/src/lsp/directory-diagnostics.test.ts +118 -1
- package/packages/lsp-core/src/lsp/directory-diagnostics.ts +1 -1
- package/packages/lsp-daemon/dist/cli.js +262 -63
- package/packages/lsp-daemon/dist/client.js +194 -50
- package/packages/lsp-daemon/dist/daemon-client.d.ts +2 -2
- package/packages/lsp-daemon/dist/daemon-client.js +26 -2
- package/packages/lsp-daemon/dist/ensure-daemon.d.ts +5 -4
- package/packages/lsp-daemon/dist/ensure-daemon.js +79 -18
- package/packages/lsp-daemon/dist/index.js +262 -63
- package/packages/lsp-daemon/dist/proxy.d.ts +2 -0
- package/packages/lsp-daemon/dist/proxy.js +79 -23
- package/packages/lsp-tools-mcp/dist/cli.js +82 -20
- package/packages/lsp-tools-mcp/dist/mcp.js +82 -20
- package/packages/lsp-tools-mcp/dist/tools.js +1 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/.mcp.json +2 -1
- 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/codegraph/dist/cli.js +100 -28
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +100 -28
- package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
- package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +21 -9
- package/packages/omo-codex/plugin/components/codegraph/test/mcp-bridge-fixtures.ts +35 -0
- package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge-lifecycle.test.ts +69 -0
- package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge.test.ts +57 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +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 +1 -1
- 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 +1 -1
- package/packages/omo-codex/plugin/components/lsp/.mcp.json +2 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
- package/packages/omo-codex/plugin/components/lsp/dist/cli.js +113 -31
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +1 -0
- package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-5.5.md +1 -1
- package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-5.6.md +5 -3
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/README.md +2 -2
- package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +3 -3
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/cli.js +2 -2
- 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 +1 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/src/boulder-reader.ts +1 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/src/codex-hook.ts +1 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/test/boulder-reader.test.ts +15 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +20 -0
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/directive.md +50 -33
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md +50 -33
- package/packages/omo-codex/plugin/components/ulw-loop/directive.md +50 -33
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +3 -3
- package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +5 -6
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +5 -6
- package/packages/omo-codex/plugin/components/ulw-loop/test/stop-resume-hook.test.ts +2 -2
- 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 +13 -13
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/scripts/sync-skills.mjs +10 -2
- package/packages/omo-codex/plugin/skills/review-work/SKILL.md +7 -0
- package/packages/omo-codex/plugin/skills/start-work/SKILL.md +3 -2
- package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +50 -33
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +1 -1
- package/packages/omo-codex/plugin/test/mcp-research-servers.test.mjs +1 -0
- package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +7 -0
- package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +35 -4
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +1 -1
|
@@ -105,9 +105,7 @@ notepad with a one-line reason each. Skipping a skill that fits the
|
|
|
105
105
|
task is a defect. Open a skill's body only when THIS session will
|
|
106
106
|
execute its workflow; skills a delegated session needs are named in
|
|
107
107
|
its prompt and read there, not here.
|
|
108
|
-
Next, fire the first discovery wave
|
|
109
|
-
things below): direct lookups plus `explorer` / `librarian` children
|
|
110
|
-
for unfamiliar layout or external contracts.
|
|
108
|
+
Next, fire the first discovery wave under Finding things below.
|
|
111
109
|
Then run Tier triage (above) on the change set and record the tier —
|
|
112
110
|
tier sizes evidence and review, never who plans. Size planning by
|
|
113
111
|
what the wave left UNDECIDED, not by how many steps you can list:
|
|
@@ -207,25 +205,27 @@ GOOD pair (test-first, ordered):
|
|
|
207
205
|
BAD: "Implement feature" / "Fix bug" / "Add tests later" / writing
|
|
208
206
|
production code before its failing test → rewrite.
|
|
209
207
|
|
|
210
|
-
# Finding things (lead with these,
|
|
208
|
+
# Finding things (lead with these, code-mode the first wave)
|
|
211
209
|
Never guess from memory — locate with the right tool, and re-read before
|
|
212
|
-
you claim or change.
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
`
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
-
|
|
228
|
-
`
|
|
210
|
+
you claim or change. **USE CODE MODE AGGRESSIVELY FOR BOUNDED WAVES.**
|
|
211
|
+
When multiple independent tool calls produce results that can be materially
|
|
212
|
+
filtered, joined, deduplicated, or reduced, make ONE `exec` / eval JavaScript
|
|
213
|
+
program that calls eligible tools concurrently with `Promise.all` and emits only
|
|
214
|
+
decision-relevant evidence. For shell-native repo work without programmatic
|
|
215
|
+
tool access, use ONE Python script with `concurrent.futures`, `subprocess`,
|
|
216
|
+
and utility functions to batch commands and reduce output. Keep direct calls
|
|
217
|
+
when one result chooses the next action, outputs are already small, semantic
|
|
218
|
+
judgment is required between calls, approval or side effects are involved,
|
|
219
|
+
or native artifacts / citations must be preserved.
|
|
220
|
+
- Architecture / flow / blast radius → `codegraph_explore` first when
|
|
221
|
+
`codegraph_*` exists; if unavailable, continue with repo tools and LSP.
|
|
222
|
+
- **SYMBOLS REQUIRE LSP** — definitions, references, rename impact,
|
|
223
|
+
workspace symbols, and diagnostics use the available `lsp_*` tools, not
|
|
224
|
+
text search. Run diagnostics after edits and treat errors as blocking.
|
|
225
|
+
- Repo text / filenames / history / bounded shell output → `rg`,
|
|
226
|
+
`rg --files`, `git`, and native utilities; narrow output in-program.
|
|
227
|
+
- Structural call / function / class / import shapes and codemods → the
|
|
228
|
+
`ast-grep` skill or `sg` with `$VAR` / `$$$` metavariables.
|
|
229
229
|
When discovery needs multiple angles or the module layout is
|
|
230
230
|
unfamiliar, delegate to the `explorer` subagent (read-only codebase
|
|
231
231
|
search, absolute-path results). For research that leaves the repo —
|
|
@@ -289,21 +289,39 @@ Until every success criterion PASSES with its evidence captured:
|
|
|
289
289
|
vars. Append a one-line cleanup receipt to the notepad next to the
|
|
290
290
|
artifact, e.g. `cleanup: killed 12345; tmux kill-session ulw-qa-foo;
|
|
291
291
|
rm -rf /tmp/ulw.aB12cD`. No receipt → criterion stays in_progress.
|
|
292
|
-
6. Verify: LSP diagnostics clean on changed files +
|
|
293
|
-
green (no skipped, no xfail added this
|
|
292
|
+
6. Verify: LSP diagnostics clean on changed files + the test scope
|
|
293
|
+
this criterion touched green (no skipped, no xfail added this
|
|
294
|
+
turn). Re-run a validation command (suite, typecheck, build) only
|
|
295
|
+
when its inputs changed since its last green run; ONE full-suite
|
|
296
|
+
pass belongs immediately before the final message, not after
|
|
297
|
+
every increment.
|
|
294
298
|
7. Mark completed. Append non-obvious findings / learnings.
|
|
295
|
-
8. After each increment, re-run
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
299
|
+
8. After each increment, re-run the scenarios that increment could
|
|
300
|
+
have affected; re-run the full set once, right before the final
|
|
301
|
+
message. Record PASS/FAIL inline with the evidence paths AND the
|
|
302
|
+
cleanup receipt. Loop until all PASS.
|
|
303
|
+
|
|
304
|
+
Within a step, follow Finding things; NEVER parallelise RED and GREEN of
|
|
305
|
+
the same criterion.
|
|
306
|
+
|
|
307
|
+
# Waiting discipline (a poll costs a full model round)
|
|
308
|
+
Every status check you issue as a tool call replays the entire
|
|
309
|
+
accumulated context through the model. When a command will run long
|
|
310
|
+
(installs, builds, test suites, containers, CI), run it to completion
|
|
311
|
+
in ONE call with a timeout sized to the expected duration, or send
|
|
312
|
+
output to a log file and read it once when a completion signal is
|
|
313
|
+
expected. Never re-poll the same surface with empty reads or
|
|
314
|
+
sub-minute waits — batch waiting into the fewest, longest blocking
|
|
315
|
+
calls the harness allows, and do independent root work while the
|
|
316
|
+
command runs. If two consecutive checks show no state change, double
|
|
317
|
+
the wait before the next check or switch to a completion signal.
|
|
301
318
|
|
|
302
319
|
# Codex subagent reliability
|
|
303
320
|
Every `multi_agent_v1.spawn_agent` message is self-contained and starts with
|
|
304
|
-
`TASK: <imperative assignment>`, then names `DELIVERABLE`, `SCOPE`,
|
|
305
|
-
`VERIFY
|
|
306
|
-
|
|
321
|
+
`TASK: <imperative assignment>`, then names `DELIVERABLE`, `SCOPE`,
|
|
322
|
+
`VERIFY`, and `STOP WHEN` — the observable condition that ends the
|
|
323
|
+
child's run; a child without a stop condition wanders past its goal.
|
|
324
|
+
State that it is an executable assignment, not a context handoff. Use `fork_context: false` unless full history is truly
|
|
307
325
|
required; paste only the context the child needs. Full-history forks can
|
|
308
326
|
make the child continue old parent context instead of the delegated task.
|
|
309
327
|
If your tool list has a flat `spawn_agent` with a required `task_name` instead of `multi_agent_v1.*` (`multi_agent_v2`), rewrite: `fork_context: false` becomes `fork_turns: "none"`, `send_input` becomes `send_message`, finished agents end on their own (no `close_agent`; `followup_task` re-tasks, `interrupt_agent` stops), and `wait_agent` takes only `timeout_ms`, returning on any child mailbox activity.
|
|
@@ -413,7 +431,6 @@ message + present for approval.
|
|
|
413
431
|
- Never suppress lints / errors / test failures. Never delete, skip,
|
|
414
432
|
`.only`, `.skip`, `xfail`, or comment out tests to green the suite.
|
|
415
433
|
- Never claim done from inference — only from captured evidence.
|
|
416
|
-
- Parallel tool calls for any independent work.
|
|
417
434
|
|
|
418
435
|
# Output discipline
|
|
419
436
|
- First line literally: `ULTRAWORK MODE ENABLED!`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-ultrawork",
|
|
3
|
-
"version": "4.18.
|
|
3
|
+
"version": "4.18.2",
|
|
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",
|
|
@@ -112,9 +112,7 @@ notepad with a one-line reason each. Skipping a skill that fits the
|
|
|
112
112
|
task is a defect. Open a skill's body only when THIS session will
|
|
113
113
|
execute its workflow; skills a delegated session needs are named in
|
|
114
114
|
its prompt and read there, not here.
|
|
115
|
-
Next, fire the first discovery wave
|
|
116
|
-
things below): direct lookups plus `explorer` / `librarian` children
|
|
117
|
-
for unfamiliar layout or external contracts.
|
|
115
|
+
Next, fire the first discovery wave under Finding things below.
|
|
118
116
|
Then run Tier triage (above) on the change set and record the tier —
|
|
119
117
|
tier sizes evidence and review, never who plans. Size planning by
|
|
120
118
|
what the wave left UNDECIDED, not by how many steps you can list:
|
|
@@ -214,25 +212,27 @@ GOOD pair (test-first, ordered):
|
|
|
214
212
|
BAD: "Implement feature" / "Fix bug" / "Add tests later" / writing
|
|
215
213
|
production code before its failing test → rewrite.
|
|
216
214
|
|
|
217
|
-
# Finding things (lead with these,
|
|
215
|
+
# Finding things (lead with these, code-mode the first wave)
|
|
218
216
|
Never guess from memory — locate with the right tool, and re-read before
|
|
219
|
-
you claim or change.
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
`
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
-
|
|
235
|
-
`
|
|
217
|
+
you claim or change. **USE CODE MODE AGGRESSIVELY FOR BOUNDED WAVES.**
|
|
218
|
+
When multiple independent tool calls produce results that can be materially
|
|
219
|
+
filtered, joined, deduplicated, or reduced, make ONE `exec` / eval JavaScript
|
|
220
|
+
program that calls eligible tools concurrently with `Promise.all` and emits only
|
|
221
|
+
decision-relevant evidence. For shell-native repo work without programmatic
|
|
222
|
+
tool access, use ONE Python script with `concurrent.futures`, `subprocess`,
|
|
223
|
+
and utility functions to batch commands and reduce output. Keep direct calls
|
|
224
|
+
when one result chooses the next action, outputs are already small, semantic
|
|
225
|
+
judgment is required between calls, approval or side effects are involved,
|
|
226
|
+
or native artifacts / citations must be preserved.
|
|
227
|
+
- Architecture / flow / blast radius → `codegraph_explore` first when
|
|
228
|
+
`codegraph_*` exists; if unavailable, continue with repo tools and LSP.
|
|
229
|
+
- **SYMBOLS REQUIRE LSP** — definitions, references, rename impact,
|
|
230
|
+
workspace symbols, and diagnostics use the available `lsp_*` tools, not
|
|
231
|
+
text search. Run diagnostics after edits and treat errors as blocking.
|
|
232
|
+
- Repo text / filenames / history / bounded shell output → `rg`,
|
|
233
|
+
`rg --files`, `git`, and native utilities; narrow output in-program.
|
|
234
|
+
- Structural call / function / class / import shapes and codemods → the
|
|
235
|
+
`ast-grep` skill or `sg` with `$VAR` / `$$$` metavariables.
|
|
236
236
|
When discovery needs multiple angles or the module layout is
|
|
237
237
|
unfamiliar, delegate to the `explorer` subagent (read-only codebase
|
|
238
238
|
search, absolute-path results). For research that leaves the repo —
|
|
@@ -296,21 +296,39 @@ Until every success criterion PASSES with its evidence captured:
|
|
|
296
296
|
vars. Append a one-line cleanup receipt to the notepad next to the
|
|
297
297
|
artifact, e.g. `cleanup: killed 12345; tmux kill-session ulw-qa-foo;
|
|
298
298
|
rm -rf /tmp/ulw.aB12cD`. No receipt → criterion stays in_progress.
|
|
299
|
-
6. Verify: LSP diagnostics clean on changed files +
|
|
300
|
-
green (no skipped, no xfail added this
|
|
299
|
+
6. Verify: LSP diagnostics clean on changed files + the test scope
|
|
300
|
+
this criterion touched green (no skipped, no xfail added this
|
|
301
|
+
turn). Re-run a validation command (suite, typecheck, build) only
|
|
302
|
+
when its inputs changed since its last green run; ONE full-suite
|
|
303
|
+
pass belongs immediately before the final message, not after
|
|
304
|
+
every increment.
|
|
301
305
|
7. Mark completed. Append non-obvious findings / learnings.
|
|
302
|
-
8. After each increment, re-run
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
306
|
+
8. After each increment, re-run the scenarios that increment could
|
|
307
|
+
have affected; re-run the full set once, right before the final
|
|
308
|
+
message. Record PASS/FAIL inline with the evidence paths AND the
|
|
309
|
+
cleanup receipt. Loop until all PASS.
|
|
310
|
+
|
|
311
|
+
Within a step, follow Finding things; NEVER parallelise RED and GREEN of
|
|
312
|
+
the same criterion.
|
|
313
|
+
|
|
314
|
+
# Waiting discipline (a poll costs a full model round)
|
|
315
|
+
Every status check you issue as a tool call replays the entire
|
|
316
|
+
accumulated context through the model. When a command will run long
|
|
317
|
+
(installs, builds, test suites, containers, CI), run it to completion
|
|
318
|
+
in ONE call with a timeout sized to the expected duration, or send
|
|
319
|
+
output to a log file and read it once when a completion signal is
|
|
320
|
+
expected. Never re-poll the same surface with empty reads or
|
|
321
|
+
sub-minute waits — batch waiting into the fewest, longest blocking
|
|
322
|
+
calls the harness allows, and do independent root work while the
|
|
323
|
+
command runs. If two consecutive checks show no state change, double
|
|
324
|
+
the wait before the next check or switch to a completion signal.
|
|
308
325
|
|
|
309
326
|
# Codex subagent reliability
|
|
310
327
|
Every `multi_agent_v1.spawn_agent` message is self-contained and starts with
|
|
311
|
-
`TASK: <imperative assignment>`, then names `DELIVERABLE`, `SCOPE`,
|
|
312
|
-
`VERIFY
|
|
313
|
-
|
|
328
|
+
`TASK: <imperative assignment>`, then names `DELIVERABLE`, `SCOPE`,
|
|
329
|
+
`VERIFY`, and `STOP WHEN` — the observable condition that ends the
|
|
330
|
+
child's run; a child without a stop condition wanders past its goal.
|
|
331
|
+
State that it is an executable assignment, not a context handoff. Use `fork_context: false` unless full history is truly
|
|
314
332
|
required; paste only the context the child needs. Full-history forks can
|
|
315
333
|
make the child continue old parent context instead of the delegated task.
|
|
316
334
|
If your tool list has a flat `spawn_agent` with a required `task_name` instead of `multi_agent_v1.*` (`multi_agent_v2`), rewrite: `fork_context: false` becomes `fork_turns: "none"`, `send_input` becomes `send_message`, finished agents end on their own (no `close_agent`; `followup_task` re-tasks, `interrupt_agent` stops), and `wait_agent` takes only `timeout_ms`, returning on any child mailbox activity.
|
|
@@ -420,7 +438,6 @@ message + present for approval.
|
|
|
420
438
|
- Never suppress lints / errors / test failures. Never delete, skip,
|
|
421
439
|
`.only`, `.skip`, `xfail`, or comment out tests to green the suite.
|
|
422
440
|
- Never claim done from inference — only from captured evidence.
|
|
423
|
-
- Parallel tool calls for any independent work.
|
|
424
441
|
|
|
425
442
|
# Output discipline
|
|
426
443
|
- First line literally: `ULTRAWORK MODE ENABLED!`
|
|
@@ -105,9 +105,7 @@ notepad with a one-line reason each. Skipping a skill that fits the
|
|
|
105
105
|
task is a defect. Open a skill's body only when THIS session will
|
|
106
106
|
execute its workflow; skills a delegated session needs are named in
|
|
107
107
|
its prompt and read there, not here.
|
|
108
|
-
Next, fire the first discovery wave
|
|
109
|
-
things below): direct lookups plus `explorer` / `librarian` children
|
|
110
|
-
for unfamiliar layout or external contracts.
|
|
108
|
+
Next, fire the first discovery wave under Finding things below.
|
|
111
109
|
Then run Tier triage (above) on the change set and record the tier —
|
|
112
110
|
tier sizes evidence and review, never who plans. Size planning by
|
|
113
111
|
what the wave left UNDECIDED, not by how many steps you can list:
|
|
@@ -207,25 +205,27 @@ GOOD pair (test-first, ordered):
|
|
|
207
205
|
BAD: "Implement feature" / "Fix bug" / "Add tests later" / writing
|
|
208
206
|
production code before its failing test → rewrite.
|
|
209
207
|
|
|
210
|
-
# Finding things (lead with these,
|
|
208
|
+
# Finding things (lead with these, code-mode the first wave)
|
|
211
209
|
Never guess from memory — locate with the right tool, and re-read before
|
|
212
|
-
you claim or change.
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
`
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
-
|
|
228
|
-
`
|
|
210
|
+
you claim or change. **USE CODE MODE AGGRESSIVELY FOR BOUNDED WAVES.**
|
|
211
|
+
When multiple independent tool calls produce results that can be materially
|
|
212
|
+
filtered, joined, deduplicated, or reduced, make ONE `exec` / eval JavaScript
|
|
213
|
+
program that calls eligible tools concurrently with `Promise.all` and emits only
|
|
214
|
+
decision-relevant evidence. For shell-native repo work without programmatic
|
|
215
|
+
tool access, use ONE Python script with `concurrent.futures`, `subprocess`,
|
|
216
|
+
and utility functions to batch commands and reduce output. Keep direct calls
|
|
217
|
+
when one result chooses the next action, outputs are already small, semantic
|
|
218
|
+
judgment is required between calls, approval or side effects are involved,
|
|
219
|
+
or native artifacts / citations must be preserved.
|
|
220
|
+
- Architecture / flow / blast radius → `codegraph_explore` first when
|
|
221
|
+
`codegraph_*` exists; if unavailable, continue with repo tools and LSP.
|
|
222
|
+
- **SYMBOLS REQUIRE LSP** — definitions, references, rename impact,
|
|
223
|
+
workspace symbols, and diagnostics use the available `lsp_*` tools, not
|
|
224
|
+
text search. Run diagnostics after edits and treat errors as blocking.
|
|
225
|
+
- Repo text / filenames / history / bounded shell output → `rg`,
|
|
226
|
+
`rg --files`, `git`, and native utilities; narrow output in-program.
|
|
227
|
+
- Structural call / function / class / import shapes and codemods → the
|
|
228
|
+
`ast-grep` skill or `sg` with `$VAR` / `$$$` metavariables.
|
|
229
229
|
When discovery needs multiple angles or the module layout is
|
|
230
230
|
unfamiliar, delegate to the `explorer` subagent (read-only codebase
|
|
231
231
|
search, absolute-path results). For research that leaves the repo —
|
|
@@ -289,21 +289,39 @@ Until every success criterion PASSES with its evidence captured:
|
|
|
289
289
|
vars. Append a one-line cleanup receipt to the notepad next to the
|
|
290
290
|
artifact, e.g. `cleanup: killed 12345; tmux kill-session ulw-qa-foo;
|
|
291
291
|
rm -rf /tmp/ulw.aB12cD`. No receipt → criterion stays in_progress.
|
|
292
|
-
6. Verify: LSP diagnostics clean on changed files +
|
|
293
|
-
green (no skipped, no xfail added this
|
|
292
|
+
6. Verify: LSP diagnostics clean on changed files + the test scope
|
|
293
|
+
this criterion touched green (no skipped, no xfail added this
|
|
294
|
+
turn). Re-run a validation command (suite, typecheck, build) only
|
|
295
|
+
when its inputs changed since its last green run; ONE full-suite
|
|
296
|
+
pass belongs immediately before the final message, not after
|
|
297
|
+
every increment.
|
|
294
298
|
7. Mark completed. Append non-obvious findings / learnings.
|
|
295
|
-
8. After each increment, re-run
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
299
|
+
8. After each increment, re-run the scenarios that increment could
|
|
300
|
+
have affected; re-run the full set once, right before the final
|
|
301
|
+
message. Record PASS/FAIL inline with the evidence paths AND the
|
|
302
|
+
cleanup receipt. Loop until all PASS.
|
|
303
|
+
|
|
304
|
+
Within a step, follow Finding things; NEVER parallelise RED and GREEN of
|
|
305
|
+
the same criterion.
|
|
306
|
+
|
|
307
|
+
# Waiting discipline (a poll costs a full model round)
|
|
308
|
+
Every status check you issue as a tool call replays the entire
|
|
309
|
+
accumulated context through the model. When a command will run long
|
|
310
|
+
(installs, builds, test suites, containers, CI), run it to completion
|
|
311
|
+
in ONE call with a timeout sized to the expected duration, or send
|
|
312
|
+
output to a log file and read it once when a completion signal is
|
|
313
|
+
expected. Never re-poll the same surface with empty reads or
|
|
314
|
+
sub-minute waits — batch waiting into the fewest, longest blocking
|
|
315
|
+
calls the harness allows, and do independent root work while the
|
|
316
|
+
command runs. If two consecutive checks show no state change, double
|
|
317
|
+
the wait before the next check or switch to a completion signal.
|
|
301
318
|
|
|
302
319
|
# Codex subagent reliability
|
|
303
320
|
Every `multi_agent_v1.spawn_agent` message is self-contained and starts with
|
|
304
|
-
`TASK: <imperative assignment>`, then names `DELIVERABLE`, `SCOPE`,
|
|
305
|
-
`VERIFY
|
|
306
|
-
|
|
321
|
+
`TASK: <imperative assignment>`, then names `DELIVERABLE`, `SCOPE`,
|
|
322
|
+
`VERIFY`, and `STOP WHEN` — the observable condition that ends the
|
|
323
|
+
child's run; a child without a stop condition wanders past its goal.
|
|
324
|
+
State that it is an executable assignment, not a context handoff. Use `fork_context: false` unless full history is truly
|
|
307
325
|
required; paste only the context the child needs. Full-history forks can
|
|
308
326
|
make the child continue old parent context instead of the delegated task.
|
|
309
327
|
If your tool list has a flat `spawn_agent` with a required `task_name` instead of `multi_agent_v1.*` (`multi_agent_v2`), rewrite: `fork_context: false` becomes `fork_turns: "none"`, `send_input` becomes `send_message`, finished agents end on their own (no `close_agent`; `followup_task` re-tasks, `interrupt_agent` stops), and `wait_agent` takes only `timeout_ms`, returning on any child mailbox activity.
|
|
@@ -413,7 +431,6 @@ message + present for approval.
|
|
|
413
431
|
- Never suppress lints / errors / test failures. Never delete, skip,
|
|
414
432
|
`.only`, `.skip`, `xfail`, or comment out tests to green the suite.
|
|
415
433
|
- Never claim done from inference — only from captured evidence.
|
|
416
|
-
- Parallel tool calls for any independent work.
|
|
417
434
|
|
|
418
435
|
# Output discipline
|
|
419
436
|
- First line literally: `ULTRAWORK MODE ENABLED!`
|
|
@@ -2943,7 +2943,7 @@ function boulderContinuationWillFire(cwd, sessionId) {
|
|
|
2943
2943
|
const entry = work;
|
|
2944
2944
|
const sessionIds = Array.isArray(entry["session_ids"]) ? entry["session_ids"] : [];
|
|
2945
2945
|
const continuable = entry["status"] === "active" || entry["status"] === "paused";
|
|
2946
|
-
return continuable && sessionIds.includes(`codex:${sessionId}`) &&
|
|
2946
|
+
return continuable && sessionIds.includes(`codex:${sessionId}`) && boulderPlanHasChecklist(cwd, entry);
|
|
2947
2947
|
});
|
|
2948
2948
|
} catch (error) {
|
|
2949
2949
|
if (error instanceof Error)
|
|
@@ -2961,7 +2961,7 @@ function transcriptShowsContextPressure(transcriptPath) {
|
|
|
2961
2961
|
throw error;
|
|
2962
2962
|
}
|
|
2963
2963
|
}
|
|
2964
|
-
function
|
|
2964
|
+
function boulderPlanHasChecklist(cwd, entry) {
|
|
2965
2965
|
const activePlan = entry["active_plan"];
|
|
2966
2966
|
if (typeof activePlan !== "string" || activePlan.trim().length === 0)
|
|
2967
2967
|
return false;
|
|
@@ -2970,7 +2970,7 @@ function boulderPlanHasRemainingTask(cwd, entry) {
|
|
|
2970
2970
|
const candidates = typeof worktree === "string" && worktree.trim().length > 0 && !isAbsolute2(activePlan) ? [join3(isAbsolute2(worktree) ? worktree : join3(cwd, worktree), activePlan), planPath] : [planPath];
|
|
2971
2971
|
for (const candidate of candidates) {
|
|
2972
2972
|
try {
|
|
2973
|
-
return readFileSync4(candidate, "utf8").split(/\r?\n/).some((line) => line.startsWith("- [ ] "));
|
|
2973
|
+
return readFileSync4(candidate, "utf8").split(/\r?\n/).some((line) => line.startsWith("- [ ] ") || line.startsWith("- [x] ") || line.startsWith("- [X] "));
|
|
2974
2974
|
} catch (error) {
|
|
2975
2975
|
if (!(error instanceof Error))
|
|
2976
2976
|
throw error;
|
|
@@ -139,7 +139,7 @@ function boulderContinuationWillFire(cwd, sessionId) {
|
|
|
139
139
|
const entry = work;
|
|
140
140
|
const sessionIds = Array.isArray(entry["session_ids"]) ? entry["session_ids"] : [];
|
|
141
141
|
const continuable = entry["status"] === "active" || entry["status"] === "paused";
|
|
142
|
-
return continuable && sessionIds.includes(`codex:${sessionId}`) &&
|
|
142
|
+
return continuable && sessionIds.includes(`codex:${sessionId}`) && boulderPlanHasChecklist(cwd, entry);
|
|
143
143
|
});
|
|
144
144
|
}
|
|
145
145
|
catch (error) {
|
|
@@ -159,10 +159,9 @@ function transcriptShowsContextPressure(transcriptPath) {
|
|
|
159
159
|
throw error;
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
|
-
// start-work-continuation
|
|
163
|
-
//
|
|
164
|
-
|
|
165
|
-
function boulderPlanHasRemainingTask(cwd, entry) {
|
|
162
|
+
// start-work-continuation owns an active Boulder plan until its final gate marks
|
|
163
|
+
// the work complete, including the zero-remaining checklist state.
|
|
164
|
+
function boulderPlanHasChecklist(cwd, entry) {
|
|
166
165
|
const activePlan = entry["active_plan"];
|
|
167
166
|
if (typeof activePlan !== "string" || activePlan.trim().length === 0)
|
|
168
167
|
return false;
|
|
@@ -175,7 +174,7 @@ function boulderPlanHasRemainingTask(cwd, entry) {
|
|
|
175
174
|
try {
|
|
176
175
|
return readFileSync(candidate, "utf8")
|
|
177
176
|
.split(/\r?\n/)
|
|
178
|
-
.some((line) => line.startsWith("- [ ] "));
|
|
177
|
+
.some((line) => line.startsWith("- [ ] ") || line.startsWith("- [x] ") || line.startsWith("- [X] "));
|
|
179
178
|
}
|
|
180
179
|
catch (error) {
|
|
181
180
|
if (!(error instanceof Error))
|
|
@@ -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 4.18.
|
|
10
|
+
"statusMessage": "(OmO 4.18.2) 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 4.18.
|
|
23
|
+
"statusMessage": "(OmO 4.18.2) 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 4.18.
|
|
34
|
+
"statusMessage": "(OmO 4.18.2) 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 4.18.
|
|
46
|
+
"statusMessage": "(OmO 4.18.2) 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": "4.18.
|
|
3
|
+
"version": "4.18.2",
|
|
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",
|
package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md
CHANGED
|
@@ -187,7 +187,7 @@ Trigger only for the final aggregate goal after every criterion in every goal is
|
|
|
187
187
|
2. FREEZE first — no more edits or rebases. At the frozen HEAD, re-run Manual-QA for any PASS criterion whose stamped tree differs from `git rev-parse --short "HEAD^{tree}"`, so every criterion is proven on the frozen tree; each artifact exists and is non-empty.
|
|
188
188
|
3a. Spawn lazycodex-code-reviewer and lazycodex-qa-executor in parallel (`fork_context: false` on v1; `fork_turns: "none"` on v2) with brief, goals, desired outcome, diff, evidence; wait for BOTH and confirm their report artifacts exist on disk.
|
|
189
189
|
3b. Only then spawn lazycodex-gate-reviewer with those artifact paths.
|
|
190
|
-
3c. The gate's approval binds to the frozen tree and covers its three lanes — code quality, hands-on QA, and goal verification. A later rebase or amend that keeps the tree identical
|
|
190
|
+
3c. The gate's approval binds to the frozen tree and full commit SHA and covers its three lanes — code quality, hands-on QA, and goal verification. Immediately append one durable `.omo/ulw-loop/ledger.jsonl` record per passing lane with the lane name, full SHA, verdict, and report artifact/source. Before reuse after continuation or compaction, re-read the ledger and require the exact lane/SHA pair; memory or an unstamped report is not coverage. A later rebase or amend that keeps the tree identical still has a new SHA and needs fresh lane stamps; changed content needs fresh review of the delta.
|
|
191
191
|
4. Treat timeout, missing deliverable, ack-only, `BLOCKED:`, or inconclusive review as a blocker. Any fix restarts the freeze at the new HEAD: re-run ONLY the proofs it invalidated and stamp the fresh output — never regenerate all evidence or relabel stale output to HEAD — re-review the delta at most TWICE; then record-review-blockers (step 5) and surface to the user.
|
|
192
192
|
5. If review remains blocked, run `omo ulw-loop record-review-blockers --goal-id <id> --title "<...>" --objective "<...>" --evidence "<review findings>" --codex-goal-json <snapshot> --json`.
|
|
193
193
|
6. If clean, checkpoint final completion:
|
|
@@ -142,7 +142,7 @@ function boulderContinuationWillFire(cwd: string, sessionId: string): boolean {
|
|
|
142
142
|
const entry = work as Record<string, unknown>;
|
|
143
143
|
const sessionIds = Array.isArray(entry["session_ids"]) ? entry["session_ids"] : [];
|
|
144
144
|
const continuable = entry["status"] === "active" || entry["status"] === "paused";
|
|
145
|
-
return continuable && sessionIds.includes(`codex:${sessionId}`) &&
|
|
145
|
+
return continuable && sessionIds.includes(`codex:${sessionId}`) && boulderPlanHasChecklist(cwd, entry);
|
|
146
146
|
});
|
|
147
147
|
} catch (error) {
|
|
148
148
|
if (error instanceof Error) return false;
|
|
@@ -160,10 +160,9 @@ function transcriptShowsContextPressure(transcriptPath: string): boolean {
|
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
-
// start-work-continuation
|
|
164
|
-
//
|
|
165
|
-
|
|
166
|
-
function boulderPlanHasRemainingTask(cwd: string, entry: Record<string, unknown>): boolean {
|
|
163
|
+
// start-work-continuation owns an active Boulder plan until its final gate marks
|
|
164
|
+
// the work complete, including the zero-remaining checklist state.
|
|
165
|
+
function boulderPlanHasChecklist(cwd: string, entry: Record<string, unknown>): boolean {
|
|
167
166
|
const activePlan = entry["active_plan"];
|
|
168
167
|
if (typeof activePlan !== "string" || activePlan.trim().length === 0) return false;
|
|
169
168
|
const planPath = isAbsolute(activePlan) ? activePlan : join(cwd, activePlan);
|
|
@@ -176,7 +175,7 @@ function boulderPlanHasRemainingTask(cwd: string, entry: Record<string, unknown>
|
|
|
176
175
|
try {
|
|
177
176
|
return readFileSync(candidate, "utf8")
|
|
178
177
|
.split(/\r?\n/)
|
|
179
|
-
.some((line) => line.startsWith("- [ ] "));
|
|
178
|
+
.some((line) => line.startsWith("- [ ] ") || line.startsWith("- [x] ") || line.startsWith("- [X] "));
|
|
180
179
|
} catch (error) {
|
|
181
180
|
if (!(error instanceof Error)) throw error;
|
|
182
181
|
}
|
|
@@ -110,7 +110,7 @@ describe("runStopResumeHook", () => {
|
|
|
110
110
|
expect(runStopResumeHook(stopPayload())).toBe("");
|
|
111
111
|
});
|
|
112
112
|
|
|
113
|
-
it("#given an active boulder work whose plan is exhausted #when the hook runs #then
|
|
113
|
+
it("#given an active boulder work whose plan is exhausted #when the hook runs #then defers to the final gate continuation", () => {
|
|
114
114
|
writeGoals([pendingGoal()]);
|
|
115
115
|
const plan = writeBoulderPlan(false);
|
|
116
116
|
writeFileSync(
|
|
@@ -118,7 +118,7 @@ describe("runStopResumeHook", () => {
|
|
|
118
118
|
JSON.stringify({ works: { w1: { session_ids: ["codex:s1"], status: "active", active_plan: plan } } }),
|
|
119
119
|
);
|
|
120
120
|
|
|
121
|
-
expect(
|
|
121
|
+
expect(runStopResumeHook(stopPayload())).toBe("");
|
|
122
122
|
});
|
|
123
123
|
|
|
124
124
|
it("#given a flat legacy boulder work with remaining plan tasks #when the hook runs #then still defers", () => {
|
|
@@ -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 4.18.
|
|
10
|
+
"statusMessage": "(OmO 4.18.2) 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 4.18.
|
|
10
|
+
"statusMessage": "(OmO 4.18.2) 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 4.18.
|
|
10
|
+
"statusMessage": "(OmO 4.18.2) 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 4.18.
|
|
10
|
+
"statusMessage": "(OmO 4.18.2) 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 4.18.
|
|
10
|
+
"statusMessage": "(OmO 4.18.2) 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 4.18.
|
|
10
|
+
"statusMessage": "(OmO 4.18.2) 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
|
],
|