oh-my-opencode 4.18.1 → 4.19.0
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/README.ja.md +2 -2
- package/README.ko.md +2 -2
- package/README.md +4 -4
- package/README.ru.md +2 -2
- package/README.zh-cn.md +2 -2
- package/bin/AGENTS.md +33 -0
- package/dist/agents/atlas/agent.d.ts +6 -5
- package/dist/agents/sisyphus/index.d.ts +5 -0
- package/dist/agents/sisyphus/kimi-k3.d.ts +19 -0
- package/dist/agents/sisyphus-agent-factory.d.ts +1 -1
- package/dist/agents/sisyphus-junior/agent.d.ts +8 -4
- package/dist/agents/sisyphus-junior/index.d.ts +2 -0
- package/dist/agents/sisyphus-junior/kimi-k3.d.ts +12 -0
- package/dist/agents/types.d.ts +2 -2
- package/dist/cli/index.js +690 -139
- package/dist/cli-node/index.js +690 -139
- package/dist/config/index.d.ts +1 -1
- package/dist/config/schema/browser-automation.d.ts +1 -0
- package/dist/config/schema/commands.d.ts +1 -3
- package/dist/config/schema/default-mode.d.ts +1 -1
- package/dist/config/schema/goal.d.ts +7 -0
- package/dist/config/schema/hooks.d.ts +1 -1
- package/dist/config/schema/oh-my-opencode-config.d.ts +6 -10
- package/dist/config/schema/ralph-loop.d.ts +1 -1
- package/dist/config/schema.d.ts +1 -1
- package/dist/create-hooks.d.ts +1 -1
- package/dist/features/builtin-commands/templates/goal.d.ts +1 -0
- package/dist/features/builtin-commands/templates/stop-continuation.d.ts +1 -1
- package/dist/features/builtin-commands/types.d.ts +1 -1
- package/dist/hooks/anthropic-context-window-limit-recovery/empty-content-recovery-sdk.d.ts +6 -0
- package/dist/hooks/auto-slash-command/executor.d.ts +1 -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/goal/command-arguments.d.ts +13 -0
- package/dist/hooks/goal/controller.d.ts +26 -0
- package/dist/hooks/goal/index.d.ts +23 -0
- package/dist/hooks/goal/prompt.d.ts +3 -0
- package/dist/hooks/goal/store.d.ts +8 -0
- package/dist/hooks/goal/tools.d.ts +10 -0
- package/dist/hooks/goal/types.d.ts +93 -0
- package/dist/hooks/goal/validation.d.ts +4 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/keyword-detector/hook.d.ts +1 -2
- package/dist/hooks/ralph-loop/types.d.ts +1 -1
- package/dist/hooks/todo-continuation-enforcer/types.d.ts +3 -0
- package/dist/index.js +3706 -4329
- package/dist/oh-my-opencode.schema.json +23 -19
- package/dist/plugin/chat-message/loop-commands.d.ts +1 -1
- package/dist/plugin/chat-message/types.d.ts +23 -10
- package/dist/plugin/hooks/create-core-hooks.d.ts +1 -1
- package/dist/plugin/hooks/create-session-hooks.d.ts +3 -2
- package/dist/plugin/hooks/create-transform-hooks.d.ts +0 -2
- package/dist/plugin/messages-transform.d.ts +1 -0
- package/dist/plugin/stop-continuation.d.ts +2 -2
- package/dist/plugin-handlers/prometheus-agent-config-builder.d.ts +2 -0
- package/dist/shared/system-directive.d.ts +0 -1
- package/dist/skills/ulw-plan/SKILL.md +11 -7
- package/dist/skills/ulw-plan/references/full-workflow.md +117 -6
- package/dist/skills/ulw-plan/scripts/scaffold-plan.mjs +46 -10
- package/dist/skills/ulw-research/SKILL.md +3 -3
- package/dist/tools/delegate-task/types.d.ts +0 -1
- package/dist/tui.js +115 -28
- package/package.json +14 -14
- 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/dist/cli.js +352 -17
- 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/AGENTS.md +7 -6
- package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +195 -56
- 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/hook-exclusion.test.ts +1 -1
- 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/AGENTS.md +1 -0
- 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/AGENTS.md +8 -0
- 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 +148 -61
- 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 +4 -72
- package/packages/omo-codex/plugin/components/start-work-continuation/src/codex-hook.ts +1 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/src/plan-checklist.ts +171 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/test/boulder-reader.test.ts +213 -24
- package/packages/omo-codex/plugin/components/start-work-continuation/test/cli.test.ts +4 -3
- package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +25 -4
- package/packages/omo-codex/plugin/components/start-work-continuation/test/fixtures/plan-scaffold.md +15 -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/AGENTS.md +10 -10
- package/packages/omo-codex/plugin/components/ultrawork/agents/momus.toml +3 -3
- 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/ultrawork/skills/ulw-plan/SKILL.md +11 -7
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +117 -6
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/scripts/scaffold-plan.mjs +46 -10
- 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/migrate-codex-config/multi-agent-v2-guard.mjs +32 -28
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/subagent-limit-guard.mjs +17 -45
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/toml-section-editor.mjs +455 -0
- package/packages/omo-codex/plugin/scripts/sync-skills.mjs +13 -20
- 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/skills/ulw-plan/SKILL.md +11 -7
- package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +117 -6
- package/packages/omo-codex/plugin/skills/ulw-plan/scripts/scaffold-plan.mjs +46 -10
- package/packages/omo-codex/plugin/test/aggregate-agents.test.mjs +2 -2
- package/packages/omo-codex/plugin/test/lcx-bug-skills.test.mjs +2 -2
- package/packages/omo-codex/plugin/test/mcp-research-servers.test.mjs +1 -0
- package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +6 -6
- package/packages/omo-codex/plugin/test/multi-agent-v2-regression.test.mjs +3 -3
- package/packages/omo-codex/plugin/test/scaffold-plan.test.mjs +62 -0
- package/packages/omo-codex/plugin/test/subagent-limit-migration.test.mjs +271 -14
- package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +7 -0
- package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +38 -22
- package/packages/omo-codex/plugin/test/sync-skills.test.mjs +0 -5
- package/packages/omo-codex/plugin/test/ulw-plan-review-state-contract.test.mjs +293 -0
- package/packages/omo-codex/scripts/install-config.test.mjs +10 -10
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +353 -18
- package/packages/omo-codex/scripts/install-generated-bundle.test.mjs +39 -2
- package/packages/shared-skills/skills/ulw-plan/SKILL.md +11 -7
- package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +117 -6
- package/packages/shared-skills/skills/ulw-plan/scripts/scaffold-plan.mjs +46 -10
- package/packages/shared-skills/skills/ulw-research/SKILL.md +3 -3
- package/dist/features/builtin-commands/templates/ralph-loop.d.ts +0 -3
- package/dist/skills/ultraresearch/SKILL.md +0 -10
- package/packages/shared-skills/skills/lcx-contribute-bug-fix/SKILL.md +0 -273
- package/packages/shared-skills/skills/lcx-contribute-bug-fix/agents/openai.yaml +0 -12
- package/packages/shared-skills/skills/lcx-contribute-bug-fix/scripts/create-pr-body.mjs +0 -107
- package/packages/shared-skills/skills/lcx-doctor/SKILL.md +0 -128
- package/packages/shared-skills/skills/lcx-doctor/agents/openai.yaml +0 -11
- package/packages/shared-skills/skills/lcx-report-bug/SKILL.md +0 -268
- package/packages/shared-skills/skills/lcx-report-bug/agents/openai.yaml +0 -11
- package/packages/shared-skills/skills/ultraresearch/SKILL.md +0 -10
- /package/{dist → packages/omo-codex/plugin/components/lcx}/skills/lcx-contribute-bug-fix/SKILL.md +0 -0
- /package/{dist → packages/omo-codex/plugin/components/lcx}/skills/lcx-contribute-bug-fix/agents/openai.yaml +0 -0
- /package/{dist → packages/omo-codex/plugin/components/lcx}/skills/lcx-contribute-bug-fix/scripts/create-pr-body.mjs +0 -0
- /package/{dist → packages/omo-codex/plugin/components/lcx}/skills/lcx-doctor/SKILL.md +0 -0
- /package/{dist → packages/omo-codex/plugin/components/lcx}/skills/lcx-doctor/agents/openai.yaml +0 -0
- /package/{dist → packages/omo-codex/plugin/components/lcx}/skills/lcx-report-bug/SKILL.md +0 -0
- /package/{dist → packages/omo-codex/plugin/components/lcx}/skills/lcx-report-bug/agents/openai.yaml +0 -0
package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/scripts/scaffold-plan.mjs
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// bootstrap, no npm/pip install, and no POSIX-shell or python3 precondition - the
|
|
7
7
|
// two things genuinely not guaranteed on native Windows across the omo harnesses.
|
|
8
8
|
//
|
|
9
|
-
// Usage: node "<skill-root>/scripts/scaffold-plan.mjs" <slug> [--clear|--unclear] [--reset [--force]]
|
|
9
|
+
// Usage: node "<skill-root>/scripts/scaffold-plan.mjs" <slug> [--clear|--unclear] [--draft-only] [--review-required] [--reset [--force]]
|
|
10
10
|
//
|
|
11
11
|
// RESUME-SAFE: run it ONCE at plan generation. A plain re-run on an existing
|
|
12
12
|
// ulw-plan artifact is a NO-OP success (it never overwrites your appended todos),
|
|
@@ -52,20 +52,24 @@ export function parseArgs(argv) {
|
|
|
52
52
|
let intent = "unspecified";
|
|
53
53
|
let force = false;
|
|
54
54
|
let reset = false;
|
|
55
|
+
let draftOnly = false;
|
|
56
|
+
let reviewRequired = false;
|
|
55
57
|
for (const arg of rest) {
|
|
56
58
|
if (arg === "--clear") intent = "clear";
|
|
57
59
|
else if (arg === "--unclear") intent = "unclear";
|
|
58
60
|
else if (arg === "--reset") reset = true;
|
|
59
61
|
else if (arg === "--force") force = true;
|
|
62
|
+
else if (arg === "--draft-only") draftOnly = true;
|
|
63
|
+
else if (arg === "--review-required") reviewRequired = true;
|
|
60
64
|
else if (arg.startsWith("--")) throw new Error(`unknown flag: ${arg}`);
|
|
61
65
|
else if (slug === undefined) slug = arg;
|
|
62
66
|
else throw new Error(`unexpected argument: ${arg}`);
|
|
63
67
|
}
|
|
64
|
-
if (!slug) throw new Error('usage: scaffold-plan.mjs <slug> [--clear|--unclear] [--reset [--force]]');
|
|
68
|
+
if (!slug) throw new Error('usage: scaffold-plan.mjs <slug> [--clear|--unclear] [--draft-only] [--review-required] [--reset [--force]]');
|
|
65
69
|
if (!SLUG_PATTERN.test(slug)) {
|
|
66
70
|
throw new Error(`invalid slug "${slug}" - use lowercase letters, digits, and hyphens only`);
|
|
67
71
|
}
|
|
68
|
-
return { slug, intent, reset, force };
|
|
72
|
+
return { slug, intent, reset, force, draftOnly, reviewRequired };
|
|
69
73
|
}
|
|
70
74
|
|
|
71
75
|
// Resolve a project-relative path and confine it under .omo/ - the script's own
|
|
@@ -147,16 +151,45 @@ export function isUlwArtifact(content) {
|
|
|
147
151
|
return isPlan || isDraft;
|
|
148
152
|
}
|
|
149
153
|
|
|
150
|
-
export function buildDraft(slug, intent) {
|
|
154
|
+
export function buildDraft(slug, intent, { reviewRequired = false } = {}) {
|
|
151
155
|
const assumptionsNote =
|
|
152
156
|
intent === "unclear"
|
|
153
157
|
? "Intent is UNCLEAR: research resolves ambiguity, defaults are adopted (not asked), and each is surfaced in the plan's human TL;DR for veto."
|
|
154
158
|
: "Record any default you adopt instead of asking, so the user can veto it at the gate.";
|
|
159
|
+
const reviewState = reviewRequired
|
|
160
|
+
? `review_required: true
|
|
161
|
+
plan_path: .omo/plans/${slug}.md
|
|
162
|
+
plan_sha256: null
|
|
163
|
+
review_round_id: null
|
|
164
|
+
pending-action: write and review .omo/plans/${slug}.md
|
|
165
|
+
review:
|
|
166
|
+
momus:
|
|
167
|
+
status: pending
|
|
168
|
+
workspace_root: null
|
|
169
|
+
runtime_home: null
|
|
170
|
+
target: .omo/plans/${slug}.md
|
|
171
|
+
round_id: null
|
|
172
|
+
plan_sha256: null
|
|
173
|
+
launch_id: null
|
|
174
|
+
session: null
|
|
175
|
+
result: null
|
|
176
|
+
independent:
|
|
177
|
+
status: pending
|
|
178
|
+
workspace_root: null
|
|
179
|
+
runtime_home: null
|
|
180
|
+
target: .omo/plans/${slug}.md
|
|
181
|
+
round_id: null
|
|
182
|
+
plan_sha256: null
|
|
183
|
+
launch_id: null
|
|
184
|
+
session: null
|
|
185
|
+
result: null`
|
|
186
|
+
: `review_required: false
|
|
187
|
+
pending-action: write .omo/plans/${slug}.md`;
|
|
155
188
|
return `---
|
|
156
189
|
slug: ${slug}
|
|
157
190
|
status: drafting
|
|
158
191
|
intent: ${intent}
|
|
159
|
-
|
|
192
|
+
${reviewState}
|
|
160
193
|
approach: <fill: the approach you intend to plan>
|
|
161
194
|
---
|
|
162
195
|
|
|
@@ -273,21 +306,24 @@ export async function writeGuarded(cwd, relPath, content, { reset = false, force
|
|
|
273
306
|
return { relPath, status: existing ? "reset" : "created" };
|
|
274
307
|
}
|
|
275
308
|
|
|
276
|
-
export async function scaffold(cwd, { slug, intent, reset = false, force = false }) {
|
|
309
|
+
export async function scaffold(cwd, { slug, intent, reset = false, force = false, draftOnly = false, reviewRequired = false }) {
|
|
277
310
|
const draftRel = join(".omo", "drafts", `${slug}.md`);
|
|
311
|
+
const draft = await writeGuarded(cwd, draftRel, buildDraft(slug, intent, { reviewRequired }), { reset, force });
|
|
312
|
+
if (draftOnly) return [draft];
|
|
278
313
|
const planRel = join(".omo", "plans", `${slug}.md`);
|
|
279
|
-
const draft = await writeGuarded(cwd, draftRel, buildDraft(slug, intent), { reset, force });
|
|
280
314
|
const plan = await writeGuarded(cwd, planRel, buildPlanSkeleton(slug, intent), { reset, force });
|
|
281
315
|
return [draft, plan];
|
|
282
316
|
}
|
|
283
317
|
|
|
284
318
|
async function main() {
|
|
285
|
-
const { slug, intent, reset, force } = parseArgs(process.argv);
|
|
286
|
-
const results = await scaffold(process.cwd(), { slug, intent, reset, force });
|
|
319
|
+
const { slug, intent, reset, force, draftOnly, reviewRequired } = parseArgs(process.argv);
|
|
320
|
+
const results = await scaffold(process.cwd(), { slug, intent, reset, force, draftOnly, reviewRequired });
|
|
287
321
|
for (const r of results) process.stdout.write(`${r.status}: ${r.relPath}\n`);
|
|
288
322
|
const created = results.some((r) => r.status !== "exists");
|
|
289
323
|
process.stdout.write(
|
|
290
|
-
|
|
324
|
+
draftOnly
|
|
325
|
+
? `next: record intent, findings, decisions, review state, and the approval gate in the draft; create the plan only after approval.\n`
|
|
326
|
+
: created
|
|
291
327
|
? `next: record findings/decisions in the draft, then APPEND task batches into the "## Todos" region of the plan; fill "## TL;DR (For humans)" LAST.\n`
|
|
292
328
|
: `skeleton already present - left untouched. APPEND task batches into the "## Todos" region; the human "## TL;DR (For humans)" stays on top.\n`,
|
|
293
329
|
);
|
|
@@ -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.
|
|
10
|
+
"statusMessage": "(OmO 4.19.0) 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.
|
|
23
|
+
"statusMessage": "(OmO 4.19.0) 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.
|
|
34
|
+
"statusMessage": "(OmO 4.19.0) 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.
|
|
46
|
+
"statusMessage": "(OmO 4.19.0) 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.
|
|
3
|
+
"version": "4.19.0",
|
|
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.
|
|
10
|
+
"statusMessage": "(OmO 4.19.0) 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.
|
|
10
|
+
"statusMessage": "(OmO 4.19.0) 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.
|
|
10
|
+
"statusMessage": "(OmO 4.19.0) 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.
|
|
10
|
+
"statusMessage": "(OmO 4.19.0) 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.
|
|
10
|
+
"statusMessage": "(OmO 4.19.0) 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.
|
|
10
|
+
"statusMessage": "(OmO 4.19.0) 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 4.
|
|
11
|
+
"statusMessage": "(OmO 4.19.0) 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 4.
|
|
10
|
+
"statusMessage": "(OmO 4.19.0) 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 4.
|
|
10
|
+
"statusMessage": "(OmO 4.19.0) 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 4.
|
|
11
|
+
"statusMessage": "(OmO 4.19.0) 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 4.
|
|
10
|
+
"statusMessage": "(OmO 4.19.0) 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": 5,
|
|
10
|
-
"statusMessage": "(OmO 4.
|
|
10
|
+
"statusMessage": "(OmO 4.19.0) 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 4.
|
|
11
|
+
"statusMessage": "(OmO 4.19.0) 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": 5,
|
|
10
|
-
"statusMessage": "(OmO 4.
|
|
10
|
+
"statusMessage": "(OmO 4.19.0) 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 4.
|
|
10
|
+
"statusMessage": "(OmO 4.19.0) 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": 5,
|
|
10
|
-
"statusMessage": "(OmO 4.
|
|
10
|
+
"statusMessage": "(OmO 4.19.0) 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 4.
|
|
10
|
+
"statusMessage": "(OmO 4.19.0) 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 4.
|
|
10
|
+
"statusMessage": "(OmO 4.19.0) 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 4.
|
|
10
|
+
"statusMessage": "(OmO 4.19.0) 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
|
]
|
package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json
CHANGED
|
@@ -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 4.
|
|
10
|
+
"statusMessage": "(OmO 4.19.0) 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
|
],
|