oh-my-opencode 5.0.0-beta.87 → 5.0.0-beta.89
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +1 -11
- package/README.ko.md +1 -11
- package/README.md +1 -1
- package/README.ru.md +1 -11
- package/README.zh-cn.md +1 -11
- package/dist/cli/index.js +90 -73
- package/dist/cli-node/index.js +90 -73
- package/dist/index.js +368 -347
- package/dist/skills/browser/runtime/omowright/manifest.json +1 -1
- package/dist/skills/frontend/references/design/ambience-skill.md +2 -1
- package/dist/skills/frontend/references/design/design-system-architecture.md +30 -7
- package/dist/skills/frontend/references/design/interaction-skill.md +17 -5
- package/dist/skills/ulw-plan/SKILL.md +5 -5
- package/dist/skills/ulw-plan/references/full-workflow.md +13 -9
- package/dist/skills/ulw-plan/references/intent-clear.md +5 -6
- package/dist/skills/ulw-plan/references/intent-unclear.md +2 -2
- package/dist/skills/ulw-plan/scripts/plan-templates.mjs +180 -0
- package/dist/skills/ulw-plan/scripts/scaffold-plan.mjs +3 -154
- package/package.json +14 -14
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -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/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/dist/.omo-runtime-manifest.json +2 -2
- 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/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- 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/plan.toml +16 -3
- 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/ulw-plan/SKILL.md +5 -5
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +13 -9
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +5 -6
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +2 -2
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/scripts/plan-templates.mjs +180 -0
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/scripts/scaffold-plan.mjs +3 -154
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- 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-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/post-tool-use-recording-spawn-admission.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-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-ulw-execute-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-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 +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/ambience-skill.md +2 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/design-system-architecture.md +30 -7
- package/packages/omo-codex/plugin/skills/frontend/references/design/interaction-skill.md +17 -5
- package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +5 -5
- package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +13 -9
- package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +5 -6
- package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +2 -2
- package/packages/omo-codex/plugin/skills/ulw-plan/scripts/plan-templates.mjs +180 -0
- package/packages/omo-codex/plugin/skills/ulw-plan/scripts/scaffold-plan.mjs +3 -154
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
- package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/shared-skills/skills/frontend/references/design/ambience-skill.md +2 -1
- package/packages/shared-skills/skills/frontend/references/design/design-system-architecture.md +30 -7
- package/packages/shared-skills/skills/frontend/references/design/interaction-skill.md +17 -5
- package/packages/shared-skills/skills/ulw-plan/SKILL.md +5 -5
- package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +13 -9
- package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +5 -6
- package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +2 -2
- package/packages/shared-skills/skills/ulw-plan/scripts/plan-templates.mjs +180 -0
- package/packages/shared-skills/skills/ulw-plan/scripts/scaffold-plan.mjs +3 -154
|
@@ -23,26 +23,10 @@
|
|
|
23
23
|
import { lstat, mkdir, writeFile, readFile, realpath } from "node:fs/promises";
|
|
24
24
|
import { dirname, join, relative, resolve, isAbsolute } from "node:path";
|
|
25
25
|
import { pathToFileURL } from "node:url";
|
|
26
|
+
import { FINAL_VERIFICATION_ITEMS, PLAN_SECTION_HEADERS, buildDraft, buildPlanSkeleton } from "./plan-templates.mjs";
|
|
26
27
|
|
|
27
|
-
// The
|
|
28
|
-
|
|
29
|
-
export const PLAN_SECTION_HEADERS = [
|
|
30
|
-
"## TL;DR (For humans)",
|
|
31
|
-
"## Scope",
|
|
32
|
-
"## Verification strategy",
|
|
33
|
-
"## Execution strategy",
|
|
34
|
-
"## Todos",
|
|
35
|
-
"## Final verification wave",
|
|
36
|
-
"## Commit strategy",
|
|
37
|
-
"## Success criteria",
|
|
38
|
-
];
|
|
39
|
-
|
|
40
|
-
export const FINAL_VERIFICATION_ITEMS = [
|
|
41
|
-
"F1. Plan compliance audit",
|
|
42
|
-
"F2. Code quality review",
|
|
43
|
-
"F3. Real manual QA",
|
|
44
|
-
"F4. Scope fidelity",
|
|
45
|
-
];
|
|
28
|
+
// The emitted text lives in plan-templates.mjs; re-exported so importers keep one entry point.
|
|
29
|
+
export { FINAL_VERIFICATION_ITEMS, PLAN_SECTION_HEADERS, buildDraft, buildPlanSkeleton };
|
|
46
30
|
|
|
47
31
|
const SLUG_PATTERN = /^[a-z0-9][a-z0-9-]{0,79}$/;
|
|
48
32
|
|
|
@@ -151,141 +135,6 @@ export function isUlwArtifact(content) {
|
|
|
151
135
|
return isPlan || isDraft;
|
|
152
136
|
}
|
|
153
137
|
|
|
154
|
-
export function buildDraft(slug, intent, { reviewRequired = false } = {}) {
|
|
155
|
-
const assumptionsNote =
|
|
156
|
-
intent === "unclear"
|
|
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."
|
|
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`;
|
|
188
|
-
return `---
|
|
189
|
-
slug: ${slug}
|
|
190
|
-
status: drafting
|
|
191
|
-
intent: ${intent}
|
|
192
|
-
${reviewState}
|
|
193
|
-
approach: <fill: the approach you intend to plan>
|
|
194
|
-
---
|
|
195
|
-
|
|
196
|
-
# Draft: ${slug}
|
|
197
|
-
|
|
198
|
-
## Components (topology ledger)
|
|
199
|
-
<!-- Lock the SHAPE before depth. One row per top-level component that can succeed or fail independently. -->
|
|
200
|
-
<!-- id | outcome (one line) | status: active|deferred | evidence path -->
|
|
201
|
-
|
|
202
|
-
## Open assumptions (announced defaults)
|
|
203
|
-
<!-- ${assumptionsNote} -->
|
|
204
|
-
<!-- assumption | adopted default | rationale | reversible? -->
|
|
205
|
-
|
|
206
|
-
## Findings (cited - path:lines)
|
|
207
|
-
|
|
208
|
-
## Decisions (with rationale)
|
|
209
|
-
|
|
210
|
-
## Scope IN
|
|
211
|
-
|
|
212
|
-
## Scope OUT (Must NOT have)
|
|
213
|
-
|
|
214
|
-
## Open questions
|
|
215
|
-
|
|
216
|
-
## Approval gate
|
|
217
|
-
status: drafting
|
|
218
|
-
<!-- When exploration is exhausted and unknowns are answered, set status: awaiting-approval. -->
|
|
219
|
-
<!-- That durable record is the loop guard: on a later turn read it and resume at the gate instead of re-running exploration. -->
|
|
220
|
-
`;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
export function buildPlanSkeleton(slug, intent) {
|
|
224
|
-
const decisionsLine =
|
|
225
|
-
intent === "unclear"
|
|
226
|
-
? "**Decisions I made for you:** <fill last - the best-practice defaults you adopted; the user vetoes any here>"
|
|
227
|
-
: "**Decisions to sanity-check:** <fill last - the few choices worth a human glance>";
|
|
228
|
-
return `# ${slug} - Work Plan
|
|
229
|
-
|
|
230
|
-
## TL;DR (For humans)
|
|
231
|
-
<!-- Fill this LAST, after the detailed plan below is written, so it summarizes the REAL plan. -->
|
|
232
|
-
<!-- Plain English for a non-engineer: NO file paths, NO todo numbers, NO wave/agent/tool names. -->
|
|
233
|
-
|
|
234
|
-
**What you'll get:** <fill last - deliverables in human terms, 1-2 sentences>
|
|
235
|
-
|
|
236
|
-
**Why this approach:** <fill last - the one or two load-bearing decisions and why>
|
|
237
|
-
|
|
238
|
-
**What it will NOT do:** <fill last - 1-3 plain lines mirroring Must NOT have>
|
|
239
|
-
|
|
240
|
-
**Effort:** <Quick | Short | Medium | Large | XL>
|
|
241
|
-
<!-- Effort is exactly ONE band, never hours/days. Quick = single edit, minutes of agent work; Short = one focused change, a few files; Medium = multi-file feature in one session; Large = several waves, one long session; XL = multi-session or architectural work. A written duration is rewritten to a band. -->
|
|
242
|
-
**Risk:** <Low | Medium | High> - <one-line driver>
|
|
243
|
-
${decisionsLine}
|
|
244
|
-
|
|
245
|
-
Your next move: <fill - e.g. approve, or run a high-accuracy review>. Full execution detail follows below.
|
|
246
|
-
|
|
247
|
-
---
|
|
248
|
-
|
|
249
|
-
> TL;DR (machine): <1 line - effort, risk, deliverables>
|
|
250
|
-
|
|
251
|
-
## Scope
|
|
252
|
-
### Must have
|
|
253
|
-
### Must NOT have (guardrails, anti-slop, scope boundaries)
|
|
254
|
-
|
|
255
|
-
## Verification strategy
|
|
256
|
-
> Zero human intervention - all verification is agent-executed.
|
|
257
|
-
- Test decision: <TDD | tests-after | none> + framework
|
|
258
|
-
- Evidence: <attemptDir>/task-<N>-${slug}.<ext> (attemptDir = currentAttemptDir from the ulw-loop status operation - on Senpi the eval SDK import, const { agentToolkit } = await import(\`\${env("OMO_AGENT_TOOLKIT_SDK_ROOT")}/sdk.js\`) then agentToolkit.status(), on Codex the omo-agent-toolkit CLI, .omo/evidence/ulw/<session>/<goalId>/a<attempt>; outside ulw-loop use .omo/evidence/)
|
|
259
|
-
|
|
260
|
-
## Execution strategy
|
|
261
|
-
### Parallel execution waves
|
|
262
|
-
> Target 5-8 todos per wave. Fewer than 3 (except the final) means you under-split.
|
|
263
|
-
|
|
264
|
-
### Dependency matrix
|
|
265
|
-
| Todo | Depends on | Blocks | Can parallelize with |
|
|
266
|
-
| --- | --- | --- | --- |
|
|
267
|
-
|
|
268
|
-
## Todos
|
|
269
|
-
> Implementation + Test = ONE todo. Never separate.
|
|
270
|
-
<!-- APPEND TASK BATCHES BELOW THIS LINE WITH edit/apply_patch - never rewrite the headers above. -->
|
|
271
|
-
- [ ] 1. <title>
|
|
272
|
-
What to do / Must NOT do: <...>
|
|
273
|
-
Parallelization: Wave <N> | Blocked by: <...> | Blocks: <...>
|
|
274
|
-
References (executor has NO interview context - be exhaustive): <src/path:lines>
|
|
275
|
-
Acceptance criteria (agent-executable): <exact command or assertion>
|
|
276
|
-
QA scenarios (name the exact tool + invocation): happy + failure, Evidence <attemptDir>/task-1-${slug}.<ext>
|
|
277
|
-
Commit: <Y/N> | <type>(<scope>): <summary>
|
|
278
|
-
|
|
279
|
-
## Final verification wave
|
|
280
|
-
> Runs in parallel after ALL todos. ALL must APPROVE. Surface results and wait for the user's explicit okay before declaring complete.
|
|
281
|
-
${FINAL_VERIFICATION_ITEMS.map((item) => `- [ ] ${item}`).join("\n")}
|
|
282
|
-
|
|
283
|
-
## Commit strategy
|
|
284
|
-
|
|
285
|
-
## Success criteria
|
|
286
|
-
`;
|
|
287
|
-
}
|
|
288
|
-
|
|
289
138
|
// Resume-safe write: plain re-run on an existing ulw-plan artifact is a no-op
|
|
290
139
|
// success; --reset overwrites but refuses to discard a hand-edited file unless
|
|
291
140
|
// --force is also passed.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oh-my-opencode",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.89",
|
|
4
4
|
"description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -183,7 +183,7 @@
|
|
|
183
183
|
"zod": "^4.6.5"
|
|
184
184
|
},
|
|
185
185
|
"devDependencies": {
|
|
186
|
-
"@code-yeongyu/senpi": "2026.9.
|
|
186
|
+
"@code-yeongyu/senpi": "2026.9.24",
|
|
187
187
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
188
188
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
189
189
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -224,18 +224,18 @@
|
|
|
224
224
|
"typescript": "^7.0.2"
|
|
225
225
|
},
|
|
226
226
|
"optionalDependencies": {
|
|
227
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
228
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
229
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
230
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
231
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
232
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
233
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
234
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
235
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
236
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
237
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
238
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
227
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.89",
|
|
228
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.89",
|
|
229
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.89",
|
|
230
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.89",
|
|
231
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.89",
|
|
232
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.89",
|
|
233
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.89",
|
|
234
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.89",
|
|
235
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.89",
|
|
236
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.89",
|
|
237
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.89",
|
|
238
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.89"
|
|
239
239
|
},
|
|
240
240
|
"overrides": {
|
|
241
241
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
|
|
9
9
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
|
|
10
10
|
"timeout": 30,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.89) Checking Bootstrap Provisioning"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sisyphuslabs/codex-bootstrap",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.89",
|
|
4
4
|
"description": "Codex SessionStart bootstrap component that provisions LazyCodex runtime dependencies from a detached worker.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": true,
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
|
|
10
10
|
"timeout": 5,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.89) Recommending Git Bash MCP"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"type": "command",
|
|
21
21
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
22
22
|
"timeout": 5,
|
|
23
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
23
|
+
"statusMessage": "(OmO 5.0.0-beta.89) Resetting Git Bash MCP Reminder"
|
|
24
24
|
}
|
|
25
25
|
]
|
|
26
26
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/components/lazycodex-executor-verify/dist/cli.js\" hook subagent-stop",
|
|
10
10
|
"timeout": 10,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.89) Verifying LazyCodex Executor Evidence"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-lazycodex-executor-verify",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.89",
|
|
4
4
|
"description": "Codex SubagentStop evidence verifier for LazyCodex executor completions.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"version": "5.0.0-beta.
|
|
4
|
-
"inputDigest": "sha256:
|
|
3
|
+
"version": "5.0.0-beta.89",
|
|
4
|
+
"inputDigest": "sha256:5bd77d1313eca86b5e1dee027c016557f30a207aba677b12b40bf1d48462ecfd",
|
|
5
5
|
"outputs": [
|
|
6
6
|
{
|
|
7
7
|
"path": "cli.d.ts",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
10
10
|
"timeout": 60,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.89) Checking LSP Diagnostics"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"type": "command",
|
|
22
22
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
23
23
|
"timeout": 5,
|
|
24
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
24
|
+
"statusMessage": "(OmO 5.0.0-beta.89) Resetting LSP Diagnostics Cache"
|
|
25
25
|
}
|
|
26
26
|
]
|
|
27
27
|
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook session-start",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.89) Loading Project Rules"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"type": "command",
|
|
20
20
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
|
|
21
21
|
"timeout": 10,
|
|
22
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
22
|
+
"statusMessage": "(OmO 5.0.0-beta.89) Loading Project Rules"
|
|
23
23
|
}
|
|
24
24
|
]
|
|
25
25
|
}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"type": "command",
|
|
33
33
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
34
34
|
"timeout": 10,
|
|
35
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
35
|
+
"statusMessage": "(OmO 5.0.0-beta.89) Matching Project Rules"
|
|
36
36
|
}
|
|
37
37
|
]
|
|
38
38
|
}
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"type": "command",
|
|
46
46
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
47
47
|
"timeout": 10,
|
|
48
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
48
|
+
"statusMessage": "(OmO 5.0.0-beta.89) Resetting Project Rule Cache"
|
|
49
49
|
}
|
|
50
50
|
]
|
|
51
51
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
10
10
|
"timeout": 10,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.89) Checking Thread Title Hygiene"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-telemetry",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.89",
|
|
4
4
|
"description": "Codex plugin component that emits omo-codex anonymous daily-active telemetry on SessionStart.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -11,7 +11,7 @@ Role: strategic planning consultant. You produce a single, bulletproof, executab
|
|
|
11
11
|
You ARE the planner. You ARE NOT an implementer. You read, search, run read-only analysis, and write exactly ONE plan file - never source code, never product builds, never the actual feature. When the caller says "do X / fix X / build X", interpret it as "create a work plan for X". If the caller explicitly demands implementation, REFUSE and answer: "I'm a planner. I produce the work plan. Spawn a worker agent or execute the plan yourself to implement."
|
|
12
12
|
|
|
13
13
|
# Goal
|
|
14
|
-
Deliver ONE executable plan that a downstream executor can follow with no further interview. Every task is atomic, with explicit references, agent-executable acceptance criteria, QA scenarios, and a commit instruction. I fit work whose design remains open after discovery: ambiguous scope, competing decompositions, unclear boundaries, or uncertain dependency ordering. I am the wrong tool for a known checklist however many steps it has, for work the caller is delegating to another session, for a single-file edit with an obvious pattern, or when the caller already has a plan and just wants execution - say so instead of planning.
|
|
14
|
+
Deliver ONE executable plan that reaches the ideal state for the affected user and that a downstream executor can follow with no further interview. Before drafting, name who the result touches (a customer, another programmer, a program or agent consuming it), how they use it today and after, the state in which nothing snags, regresses, or degrades for them (IS rows, each with a reason), and every gap from today (GAP rows, each with a reason); every task closes a GAP row and `## Success criteria` proves every IS row. "MVP" / "phase 1" subsets are never invented; when the ideal state exceeds the literal request, say so in one line and plan the ideal state. Every task is atomic, with explicit references, agent-executable acceptance criteria, QA scenarios, and a commit instruction. I fit work whose design remains open after discovery: ambiguous scope, competing decompositions, unclear boundaries, or uncertain dependency ordering. I am the wrong tool for a known checklist however many steps it has, for work the caller is delegating to another session, for a single-file edit with an obvious pattern, or when the caller already has a plan and just wants execution - say so instead of planning.
|
|
15
15
|
|
|
16
16
|
# Phase 1 - Context gathering (MANDATORY - never plan blind)
|
|
17
17
|
Fire parallel research BEFORE drafting:
|
|
@@ -31,11 +31,20 @@ Write ONE plan to `.omo/plans/<slug>.md` (create the directory if absent). No "P
|
|
|
31
31
|
|
|
32
32
|
## TL;DR
|
|
33
33
|
> Summary: <1-2 sentences>
|
|
34
|
+
> For whom: <the affected user and what changes for them>
|
|
34
35
|
> Deliverables: <bullet list>
|
|
35
36
|
> Effort: <Quick | Short | Medium | Large | XL> (one band, never hours/days: Quick = single edit, minutes of agent work; Short = one focused change, a few files; Medium = multi-file feature in one session; Large = several waves, one long session; XL = multi-session or architectural work)
|
|
36
37
|
> Risk: <Low | Medium | High> - <one-line driver>
|
|
37
38
|
|
|
38
39
|
## Scope
|
|
40
|
+
### Affected user and ideal state
|
|
41
|
+
**Affected user:** <who, and how they use it today and after>
|
|
42
|
+
|
|
43
|
+
| Row | Statement | Reason |
|
|
44
|
+
|-----|-----------|--------|
|
|
45
|
+
| IS-1 | <what the user does, sees, or never has break> | <why this is the ideal for them> |
|
|
46
|
+
| GAP-1 | <how today differs from IS-1> | <why it matters to them> |
|
|
47
|
+
|
|
39
48
|
### Must have
|
|
40
49
|
- ...
|
|
41
50
|
|
|
@@ -81,6 +90,7 @@ Critical path: Task 1 -> Task 2 -> Task 6
|
|
|
81
90
|
|
|
82
91
|
What to do: <clear implementation steps>
|
|
83
92
|
Must NOT do: <explicit exclusions>
|
|
93
|
+
Closes: GAP-<n>
|
|
84
94
|
|
|
85
95
|
Parallelization: Can parallel: <YES|NO> | Wave <N> | Blocks: [<tasks>] | Blocked by: [<tasks>]
|
|
86
96
|
|
|
@@ -116,7 +126,7 @@ Critical path: Task 1 -> Task 2 -> Task 6
|
|
|
116
126
|
- [ ] F1. Plan compliance audit - every task done, every acceptance criterion met
|
|
117
127
|
- [ ] F2. Code quality review - diagnostics clean, idioms match, no dead code
|
|
118
128
|
- [ ] F3. Real manual QA - every QA scenario executed with evidence captured
|
|
119
|
-
- [ ] F4.
|
|
129
|
+
- [ ] F4. Ideal-state fidelity - delivered behavior checked against every IS row 1:1; a shortfall becomes new task rows, never a note; nothing Must-NOT-Have introduced
|
|
120
130
|
|
|
121
131
|
## Commit strategy
|
|
122
132
|
- One logical change per commit. Conventional Commits (`<type>(<scope>): <subject>` body + footer).
|
|
@@ -125,7 +135,10 @@ Critical path: Task 1 -> Task 2 -> Task 6
|
|
|
125
135
|
- Reference the plan file path in the final commit footer: `Plan: .omo/plans/<slug>.md`.
|
|
126
136
|
|
|
127
137
|
## Success criteria
|
|
128
|
-
|
|
138
|
+
| IS | Delivering task(s) | Proving QA scenario | Evidence |
|
|
139
|
+
|----|--------------------|---------------------|----------|
|
|
140
|
+
| IS-1 | <N> | <scenario name from task N> | <attemptDir>/task-<N>-<slug>.<ext> |
|
|
141
|
+
- Every IS row above has a delivering task and a proving scenario; all QA scenarios pass with captured evidence; F1-F4 approved; commit history clean.
|
|
129
142
|
```
|
|
130
143
|
|
|
131
144
|
# Constraints
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
|
|
9
9
|
"timeout": 5,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.89) Checking Ultrawork Trigger"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-ultrawork",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.89",
|
|
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",
|
|
@@ -24,13 +24,13 @@ If another active mode mandates its own first line (ultrawork does), print that
|
|
|
24
24
|
Directly under the marker, before any exploration, state the working contract once, in your own words, carrying ALL of these commitments:
|
|
25
25
|
|
|
26
26
|
1. **Persona + no-implementation pledge** - from now on you work as Prometheus, a planning consultant, and you will never start implementation - no product-code edits, no implementer subagents - until the user explicitly says okay; even then, approval authorizes writing the plan only, and execution starts in a separate worker session (e.g. `$ulw-execute`).
|
|
27
|
-
2. **Workflow preview** - the order of what happens next: parallel read-only exploration (plus outside research when the repo cannot answer) until the open unknowns are resolved; the intent verdict from INTENT ROUTING, announced; questions to the user ONLY when a genuine owner-decision survives exploration - or when exploration and research both come back empty on a fork the plan cannot proceed without; then the approval brief, and the plan is written only after the explicit okay.
|
|
27
|
+
2. **Workflow preview** - the order of what happens next: parallel read-only exploration (plus outside research when the repo cannot answer) until the open unknowns are resolved; the affected user, the ideal state, and the gap list, announced; the intent verdict from INTENT ROUTING, announced; questions to the user ONLY when a genuine owner-decision survives exploration - or when exploration and research both come back empty on a fork the plan cannot proceed without; then the approval brief, and the plan is written only after the explicit okay.
|
|
28
28
|
|
|
29
29
|
Example opening (adapt the wording, keep every commitment):
|
|
30
30
|
|
|
31
31
|
> ULW-PLAN MODE ENABLED!
|
|
32
32
|
> From now on I am working as Prometheus, a planning consultant. I will not start any implementation until you explicitly say okay - and approval authorizes writing the plan only; execution starts separately (e.g. `$ulw-execute`).
|
|
33
|
-
> Next, in order: (1) parallel read-only exploration and research, (2) intent verdict announced (CLEAR or UNCLEAR, plus whether high-accuracy review is required), (
|
|
33
|
+
> Next, in order: (1) parallel read-only exploration and research, (2) the affected user, the ideal state for them, and every gap from today, announced, (3) intent verdict announced (CLEAR or UNCLEAR, plus whether high-accuracy review is required), (4) questions only for the forks the ideal state and exploration cannot settle - or where research finds nothing on a blocking decision, (5) approval brief, then (6) the plan is written after your okay.
|
|
34
34
|
|
|
35
35
|
## INTENT ROUTING - pick ONE intent reference
|
|
36
36
|
|
|
@@ -68,10 +68,10 @@ When producing the plan, encode every executable item as a column-zero Markdown
|
|
|
68
68
|
|
|
69
69
|
## Universal invariants (hold on every path)
|
|
70
70
|
|
|
71
|
-
- **
|
|
72
|
-
- **
|
|
71
|
+
- **The ideal state for the affected user is the north star.** Before the brief, name who this output touches - a customer, another programmer, a program or agent consuming it, often more than one - and how each uses it today and will use it after; write the state in which nothing snags, feels odd, regresses, or degrades for them, one row per property with its reason, then every difference between that state and today, each with its reason. Record both in the draft; the plan exists to close every gap row. "MVP", "v1", "phase 1", or any reduced subset is never an option you invent or ask about; when the ideal state is larger than the literal request, say so in one line and plan the ideal state.
|
|
72
|
+
- **Decision-complete is how the plan gets there.** The executor has NO interview context - spell out exact paths, "every X in Y", and an explicit Must-NOT-Have (a guardrail against unrequested additions, never a reduction). Leave the implementer ZERO judgment calls.
|
|
73
73
|
- **Explore before asking.** Discoverable facts (repo/system/docs truth) -> research and cite, never ask. Preferences/tradeoffs -> the only things you bring to the user. When unsure which, treat it as a user-decision.
|
|
74
|
-
- **Two filters** on every candidate question, in order: (1) Could collected evidence answer it? -> explore instead. (2)
|
|
74
|
+
- **Two filters** on every candidate question, in order: (1) Could collected evidence answer it? -> explore instead. (2) Does the ideal state for the affected user settle it - or, failing that, the stated intent plus a defensible default? -> resolve to that, record it, do not ask - UNLESS it is an owner-decision, which always survives as a question even when a default exists: anything irreversible / destructive / safety-critical, or a cross-cutting product choice the user lives with (public config surface, distribution / packaging, external dependency or pinned SHA, data / schema shape, real budget / paid-service spend, expected scale or capacity target, target-audience / compliance limits). Extrinsic constraints (budget, mandated stack, scale, audience) leave no repo evidence, so exploration can never surface them - sweep those axes explicitly once per plan and classify each as explored, defaulted (ledger), or asked. Default the reversible internals; surface the owner-decisions.
|
|
75
75
|
- **Explore to sufficiency, then STOP.** One research wave per open question; stop when the clearance check is answerable; never re-explore to double-check.
|
|
76
76
|
- **Parallel-dispatch** independent research in ONE turn and keep working while it runs. Subagent outputs are CLAIMS until you independently verify them.
|
|
77
77
|
- **Approval is not execution.** Approval authorizes writing the plan ONLY, never implementation. ONE request -> ONE plan, however large.
|