oh-my-opencode 5.0.0-beta.53 → 5.0.0-beta.55
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/command/publish.md +15 -7
- package/.agents/skills/publish/SKILL.md +15 -7
- package/.opencode/command/publish.md +15 -7
- package/dist/cli/index.js +53 -19
- package/dist/cli-node/index.js +53 -19
- package/dist/index.js +58 -17
- package/dist/tui.js +34 -4
- package/package.json +15 -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/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- 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/dist/checkpoint-codex-validation.d.ts +5 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.js +14 -34
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-continuation.js +1 -4
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.d.ts +0 -18
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.js +1 -88
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.d.ts +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +10 -3
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-arg-parser.js +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-subcommands.js +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +86 -174
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.d.ts +2 -18
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.js +23 -33
- package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.d.ts +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.js +16 -9
- 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/components/ulw-loop/src/checkpoint-codex-validation.ts +18 -59
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-continuation.ts +1 -6
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-reconciliation.ts +1 -124
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +11 -3
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-arg-parser.ts +10 -4
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-subcommands.ts +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-snapshot.ts +31 -50
- package/packages/omo-codex/plugin/components/ulw-loop/src/review-blockers.ts +29 -10
- package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-final.test.ts +0 -82
- package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint.test.ts +16 -22
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-checkpoint.test.ts +27 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-json-errors.test.ts +25 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-snapshot.test.ts +34 -11
- package/packages/omo-codex/plugin/components/ulw-loop/test/guided-recovery.test.ts +9 -47
- package/packages/omo-codex/plugin/components/ulw-loop/test/review-blockers.test.ts +9 -7
- 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/scripts/install-dist/install-local.mjs +2 -2
package/dist/tui.js
CHANGED
|
@@ -68018,7 +68018,7 @@ var init_harness = __esm(() => {
|
|
|
68018
68018
|
});
|
|
68019
68019
|
|
|
68020
68020
|
// packages/omo-config-core/src/schema/memory.ts
|
|
68021
|
-
var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryRecallSchema, OmoMemoryNudgeSchema, OmoMemoryFactsSchema, OmoMemoryDreamSchema, OmoMemoryPeopleSchema, OmoMemorySoulSchema, OmoMemoryWriteNoticeSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryRecallLayerSchema, OmoMemoryNudgeLayerSchema, OmoMemoryFactsLayerSchema, OmoMemoryDreamLayerSchema, OmoMemoryPeopleLayerSchema, OmoMemorySoulLayerSchema, OmoMemoryWriteNoticeLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
|
|
68021
|
+
var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryRecallEventCapsSchema, OmoMemoryRecallSchema, OmoMemoryNudgeSchema, OmoMemoryFactsSchema, OmoMemoryDreamSchema, OmoMemoryPeopleSchema, OmoMemorySoulSchema, OmoMemoryWriteNoticeSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryRecallEventCapsLayerSchema, OmoMemoryRecallLayerSchema, OmoMemoryNudgeLayerSchema, OmoMemoryFactsLayerSchema, OmoMemoryDreamLayerSchema, OmoMemoryPeopleLayerSchema, OmoMemorySoulLayerSchema, OmoMemoryWriteNoticeLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
|
|
68022
68022
|
var init_memory = __esm(() => {
|
|
68023
68023
|
init_zod();
|
|
68024
68024
|
OmoMemoryReflectionTriggerSchema = object({
|
|
@@ -68040,9 +68040,20 @@ var init_memory = __esm(() => {
|
|
|
68040
68040
|
OmoMemorySearchSchema = object({
|
|
68041
68041
|
enabled: boolean2().default(true)
|
|
68042
68042
|
}).strict();
|
|
68043
|
+
OmoMemoryRecallEventCapsSchema = object({
|
|
68044
|
+
tool_args: number2().int().nonnegative().default(400),
|
|
68045
|
+
result_head: number2().int().nonnegative().default(600),
|
|
68046
|
+
assistant: number2().int().nonnegative().default(1500),
|
|
68047
|
+
prompt: number2().int().nonnegative().default(4000)
|
|
68048
|
+
}).strict();
|
|
68043
68049
|
OmoMemoryRecallSchema = object({
|
|
68044
68050
|
enabled: boolean2().default(true),
|
|
68045
|
-
max_items: number2().int().min(1).max(5).default(2)
|
|
68051
|
+
max_items: number2().int().min(1).max(5).default(2),
|
|
68052
|
+
category: string2().min(1).default("quick"),
|
|
68053
|
+
event_caps: OmoMemoryRecallEventCapsSchema.default({ tool_args: 400, result_head: 600, assistant: 1500, prompt: 4000 }),
|
|
68054
|
+
sidecar_max_tokens: number2().int().positive().default(48000),
|
|
68055
|
+
max_concurrent_wakes: number2().int().positive().default(2),
|
|
68056
|
+
tool_budget: number2().int().positive().default(8)
|
|
68046
68057
|
}).strict();
|
|
68047
68058
|
OmoMemoryNudgeSchema = object({
|
|
68048
68059
|
enabled: boolean2().default(true),
|
|
@@ -68090,9 +68101,20 @@ var init_memory = __esm(() => {
|
|
|
68090
68101
|
OmoMemorySearchLayerSchema = object({
|
|
68091
68102
|
enabled: boolean2().optional()
|
|
68092
68103
|
}).strict();
|
|
68104
|
+
OmoMemoryRecallEventCapsLayerSchema = object({
|
|
68105
|
+
tool_args: number2().int().nonnegative().optional(),
|
|
68106
|
+
result_head: number2().int().nonnegative().optional(),
|
|
68107
|
+
assistant: number2().int().nonnegative().optional(),
|
|
68108
|
+
prompt: number2().int().nonnegative().optional()
|
|
68109
|
+
}).strict();
|
|
68093
68110
|
OmoMemoryRecallLayerSchema = object({
|
|
68094
68111
|
enabled: boolean2().optional(),
|
|
68095
|
-
max_items: number2().int().min(1).max(5).optional()
|
|
68112
|
+
max_items: number2().int().min(1).max(5).optional(),
|
|
68113
|
+
category: string2().min(1).optional(),
|
|
68114
|
+
event_caps: OmoMemoryRecallEventCapsLayerSchema.optional(),
|
|
68115
|
+
sidecar_max_tokens: number2().int().positive().optional(),
|
|
68116
|
+
max_concurrent_wakes: number2().int().positive().optional(),
|
|
68117
|
+
tool_budget: number2().int().positive().optional()
|
|
68096
68118
|
}).strict();
|
|
68097
68119
|
OmoMemoryNudgeLayerSchema = object({
|
|
68098
68120
|
enabled: boolean2().optional(),
|
|
@@ -68162,7 +68184,15 @@ var init_memory = __esm(() => {
|
|
|
68162
68184
|
write_notice: OmoMemoryWriteNoticeSchema.default({ enabled: true }),
|
|
68163
68185
|
sync: OmoMemorySyncSchema.default({ enabled: true }),
|
|
68164
68186
|
search: OmoMemorySearchSchema.default({ enabled: true }),
|
|
68165
|
-
recall: OmoMemoryRecallSchema.default({
|
|
68187
|
+
recall: OmoMemoryRecallSchema.default({
|
|
68188
|
+
enabled: true,
|
|
68189
|
+
max_items: 2,
|
|
68190
|
+
category: "quick",
|
|
68191
|
+
event_caps: { tool_args: 400, result_head: 600, assistant: 1500, prompt: 4000 },
|
|
68192
|
+
sidecar_max_tokens: 48000,
|
|
68193
|
+
max_concurrent_wakes: 2,
|
|
68194
|
+
tool_budget: 8
|
|
68195
|
+
}),
|
|
68166
68196
|
compile_warn_tokens: number2().int().positive().default(30000),
|
|
68167
68197
|
agents: record(string2(), OmoMemoryAgentOverridesSchema).default({})
|
|
68168
68198
|
}).strict();
|
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.55",
|
|
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",
|
|
@@ -138,6 +138,7 @@
|
|
|
138
138
|
"typecheck:packages": "tsgo --noEmit -p packages/rules-engine/tsconfig.json && tsgo --noEmit -p packages/delegate-core/tsconfig.json && tsgo --noEmit -p packages/mcp-stdio-core/tsconfig.json && tsgo --noEmit -p packages/mcp-client-core/tsconfig.json && tsgo --noEmit -p packages/git-bash-mcp/tsconfig.json && tsgo --noEmit -p packages/ast-grep-mcp/tsconfig.json && tsgo --noEmit -p packages/lsp-core/tsconfig.json && tsgo --noEmit -p packages/utils/tsconfig.json && tsgo --noEmit -p packages/model-core/tsconfig.json && tsgo --noEmit -p packages/omo-config-core/tsconfig.json && tsgo --noEmit -p packages/prompts-core/tsconfig.json && tsgo --noEmit -p packages/comment-checker-core/tsconfig.json && tsgo --noEmit -p packages/hashline-core/tsconfig.json && tsgo --noEmit -p packages/tmux-core/tsconfig.json && tsgo --noEmit -p packages/team-core/tsconfig.json && tsgo --noEmit -p packages/openclaw-core/tsconfig.json && tsgo --noEmit -p packages/boulder-state/tsconfig.json && tsgo --noEmit -p packages/memory-core/tsconfig.json && tsgo --noEmit -p packages/telemetry-core/tsconfig.json && tsgo --noEmit -p packages/claude-code-compat-core/tsconfig.json && tsgo --noEmit -p packages/skills-loader-core/tsconfig.json && tsgo --noEmit -p packages/agents-md-core/tsconfig.json && tsgo --noEmit -p packages/omo-codex/plugin/shared/tsconfig.json && tsgo --noEmit -p packages/omo-codex/tsconfig.json && tsgo --noEmit -p packages/omo-senpi/tsconfig.json && tsgo --noEmit -p packages/senpi-task/tsconfig.json && tsgo --noEmit -p packages/pi-goal/tsconfig.json && tsgo --noEmit -p packages/pi-webfetch/tsconfig.json && tsgo --noEmit -p packages/omo-opencode/tsconfig.json && tsgo --noEmit -p packages/omo-native/tsconfig.json",
|
|
139
139
|
"typecheck:script": "tsgo --noEmit -p script/tsconfig.json",
|
|
140
140
|
"test": "bun test --timeout 20000",
|
|
141
|
+
"changelog:section": "bun script/changelog-section.ts",
|
|
141
142
|
"test:codex": "bun run build:codex-install && bun run build:git-bash-mcp && bun run build:lsp-tools-mcp && bun run build:lsp-daemon && npm --prefix packages/lsp-tools-mcp test && npm --prefix packages/omo-codex/plugin ci && npm --prefix packages/omo-codex/plugin/components/ulw-loop test && bun run --cwd packages/omo-codex/plugin build && node scripts/check-third-party-notices.mjs --ship && bun test --timeout 20000 packages/omo-opencode/src/cli/cli-installer.platform.test.ts packages/omo-codex/src/install/codex-cache.test.ts packages/omo-codex/src/install/codex-cleanup.test.ts packages/omo-codex/src/install/codex-config-agent-cleanup.test.ts packages/omo-codex/src/install/codex-config-autonomous-features.test.ts packages/omo-codex/src/install/codex-config-reasoning.test.ts packages/omo-codex/src/install/codex-config-toml.test.ts packages/omo-codex/src/install/codex-project-local-cleanup.test.ts packages/omo-codex/src/install/install-codex-project-local-cleanup.test.ts packages/omo-codex/src/install/install-codex.test.ts packages/omo-codex/src/install/install-codex-packaged.test.ts packages/omo-codex/src/install/link-cached-plugin-agents.test.ts packages/omo-codex/src/**/*.test.ts packages/utils/src/jsonc-parser.test.ts packages/utils/src/frontmatter.test.ts packages/hashline-core/src/hash-computation.test.ts packages/hashline-core/src/smoke-untested-modules.test.ts packages/rules-engine/src/index.test.ts packages/rules-engine/src/security-boundary.test.ts packages/agents-md-core/src/injector.test.ts packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts && node --test packages/omo-codex/plugin/test/*.test.mjs packages/omo-codex/scripts/install-cache-copy.test.mjs packages/omo-codex/scripts/install-cli-args.test.mjs packages/omo-codex/scripts/install-delegated-command.test.mjs packages/omo-codex/scripts/install-config-autonomous-features.test.mjs packages/omo-codex/scripts/install-config-autonomous.test.mjs packages/omo-codex/scripts/install-config-reasoning.test.mjs packages/omo-codex/scripts/install-config.test.mjs packages/omo-codex/scripts/install-hook-targets.test.mjs packages/omo-codex/scripts/install-project-local-cleanup.test.mjs packages/omo-codex/scripts/install-lazycodex-version-stamp.test.mjs packages/omo-codex/scripts/install-local-entrypoint.test.mjs packages/omo-codex/scripts/install-local-git-bash-preflight.test.mjs packages/omo-codex/scripts/install-local.test.mjs packages/omo-codex/scripts/install-marketplace-cache.test.mjs packages/omo-codex/scripts/install-mcp-context7-runtime.test.mjs packages/omo-codex/scripts/install-mcp-runtime.test.mjs packages/omo-codex/scripts/install-packaged-local.test.mjs packages/omo-codex/scripts/install-generated-bundle.test.mjs packages/omo-codex/scripts/install-agent-links.test.mjs packages/omo-codex/scripts/install-bin-links.test.mjs",
|
|
142
143
|
"test:fast": "bun run script/test-fast.ts",
|
|
143
144
|
"test:senpi": "bun run build:senpi-plugin && tsgo --noEmit -p packages/omo-senpi/tsconfig.json && bun test --timeout 20000 packages/omo-senpi && bun test ./.agents/skills/senpi-qa/scripts/resolve-evidence-dir.test.mjs",
|
|
@@ -184,7 +185,7 @@
|
|
|
184
185
|
"zod": "^4.4.3"
|
|
185
186
|
},
|
|
186
187
|
"devDependencies": {
|
|
187
|
-
"@code-yeongyu/senpi": "2026.9.
|
|
188
|
+
"@code-yeongyu/senpi": "2026.9.11",
|
|
188
189
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
189
190
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
190
191
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -225,18 +226,18 @@
|
|
|
225
226
|
"typescript": "^7.0.2"
|
|
226
227
|
},
|
|
227
228
|
"optionalDependencies": {
|
|
228
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
229
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
230
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
231
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
232
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
233
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
234
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
235
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
236
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
237
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
238
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
239
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
229
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.55",
|
|
230
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.55",
|
|
231
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.55",
|
|
232
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.55",
|
|
233
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.55",
|
|
234
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.55",
|
|
235
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.55",
|
|
236
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.55",
|
|
237
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.55",
|
|
238
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.55",
|
|
239
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.55",
|
|
240
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.55"
|
|
240
241
|
},
|
|
241
242
|
"overrides": {
|
|
242
243
|
"@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.55) 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.55",
|
|
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.55) 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.55) 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.55) 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.55",
|
|
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.55",
|
|
4
|
+
"inputDigest": "sha256:905ced446a06d5fb3a4a193745ebd9539de050fab9cfe3b582c203c50785723f",
|
|
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.55) 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.55) 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.55) 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.55) 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.55) 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.55) 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.55) 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.55",
|
|
4
4
|
"description": "Codex plugin component that emits omo-codex anonymous daily-active telemetry on SessionStart.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
|
|
9
9
|
"timeout": 5,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.55) 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.55",
|
|
4
4
|
"description": "Codex plugin that injects the ultrawork orchestration directive and ships LazyCodex planning, review, QA, and gate agent roles.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/ulw-execute-continuation/dist/cli.js\" hook stop",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.55) Checking Ulw-Execute Continuation"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -8,5 +8,9 @@ export declare function validateCheckpointCodexGoal(input: {
|
|
|
8
8
|
readonly raw: string | undefined;
|
|
9
9
|
readonly evidence: string;
|
|
10
10
|
readonly scope?: UlwLoopScope;
|
|
11
|
-
}): Promise<
|
|
11
|
+
}): Promise<{
|
|
12
|
+
readonly raw: unknown;
|
|
13
|
+
readonly nextActions: readonly string[];
|
|
14
|
+
readonly warnings: readonly string[];
|
|
15
|
+
}>;
|
|
12
16
|
export declare function combineCheckpointValidationErrors(codexError: UlwLoopError, gateError: UlwLoopError): UlwLoopError;
|
|
@@ -1,42 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { codexGoalMode, compatibleCodexObjectives, expectedCodexObjective, isFinalRunCompletionCandidate, } from "./goal-status.js";
|
|
1
|
+
import { CodexGoalSnapshotError, formatCodexGoalReconciliation, readCodexGoalSnapshotInput, reconcileCodexGoalSnapshot, } from "./codex-goal-snapshot.js";
|
|
2
|
+
import { codexGoalMode, compatibleCodexObjectives, expectedCodexObjective } from "./goal-status.js";
|
|
4
3
|
import { UlwLoopError } from "./types.js";
|
|
5
|
-
function normalizeObjective(value) {
|
|
6
|
-
return value.replace(/\s+/g, " ").trim();
|
|
7
|
-
}
|
|
8
4
|
export async function validateCheckpointCodexGoal(input) {
|
|
9
|
-
const aggregate = codexGoalMode(input.plan) === "aggregate";
|
|
10
|
-
const final = isFinalRunCompletionCandidate(input.plan, input.goal);
|
|
11
5
|
const snapshot = await readCodexGoalSnapshotInput(input.raw, input.repoRoot);
|
|
12
|
-
const
|
|
6
|
+
const expected = expectedCodexObjective(input.plan, input.goal);
|
|
13
7
|
const reconciliation = reconcileCodexGoalSnapshot(snapshot, {
|
|
14
|
-
expectedObjective,
|
|
15
|
-
...(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
requireComplete: !aggregate || final,
|
|
19
|
-
});
|
|
20
|
-
if (reconciliation.ok)
|
|
21
|
-
return reconciliation.snapshot.raw;
|
|
22
|
-
const objective = snapshot?.objective;
|
|
23
|
-
const mismatchedTaskObjective = snapshot?.available === true &&
|
|
24
|
-
objective !== undefined &&
|
|
25
|
-
normalizeObjective(objective) !== normalizeObjective(expectedObjective);
|
|
26
|
-
const completedTaskScoped = mismatchedTaskObjective &&
|
|
27
|
-
snapshot.status === "complete" &&
|
|
28
|
-
(await canReconcileCompletedTaskScopedAggregateSnapshot(input.repoRoot, input.plan, input.goal, objective, input.evidence, input.scope));
|
|
29
|
-
const activeFinalTaskScoped = mismatchedTaskObjective &&
|
|
30
|
-
snapshot.status === "active" &&
|
|
31
|
-
(await canReconcileActiveFinalTaskScopedAggregateSnapshot(input.repoRoot, input.plan, input.goal, objective, input.evidence, input.scope));
|
|
32
|
-
if (completedTaskScoped || activeFinalTaskScoped)
|
|
33
|
-
return reconciliation.snapshot.raw;
|
|
34
|
-
throw codexSnapshotMismatchError({
|
|
35
|
-
reconciliation,
|
|
36
|
-
snapshot,
|
|
37
|
-
expectedObjective,
|
|
38
|
-
taskScopedHint: { goal: input.goal, aggregate, final },
|
|
8
|
+
expectedObjective: expected,
|
|
9
|
+
...(codexGoalMode(input.plan) === "aggregate"
|
|
10
|
+
? { acceptedObjectives: compatibleCodexObjectives(input.plan) }
|
|
11
|
+
: {}),
|
|
39
12
|
});
|
|
13
|
+
if (!reconciliation.ok)
|
|
14
|
+
throw new CodexGoalSnapshotError(formatCodexGoalReconciliation(reconciliation));
|
|
15
|
+
return {
|
|
16
|
+
raw: snapshot?.raw,
|
|
17
|
+
nextActions: reconciliation.warnings,
|
|
18
|
+
warnings: reconciliation.warnings.filter((warning) => warning.startsWith("driver_objective_differs")),
|
|
19
|
+
};
|
|
40
20
|
}
|
|
41
21
|
export function combineCheckpointValidationErrors(codexError, gateError) {
|
|
42
22
|
return new UlwLoopError(`${codexError.message}\n${gateError.message}`, "ULW_LOOP_QUALITY_GATE_INVALID", {
|
|
@@ -27,10 +27,7 @@ export async function checkpoint(repoRoot, argv, json, scope) {
|
|
|
27
27
|
const goalId = required(argv, "--goal-id");
|
|
28
28
|
const statusValue = checkpointStatus(required(argv, "--status"));
|
|
29
29
|
const evidence = required(argv, "--evidence");
|
|
30
|
-
const codexGoalJson = await parseCodexGoalJson(
|
|
31
|
-
if (statusValue === "complete" && codexGoalJson === undefined) {
|
|
32
|
-
throw new UlwLoopError("Missing --codex-goal-json.", "ULW_LOOP_CODEX_GOAL_JSON_REQUIRED");
|
|
33
|
-
}
|
|
30
|
+
const codexGoalJson = await parseCodexGoalJson(readValue(argv, "--codex-goal-json"));
|
|
34
31
|
const qualityGateJson = readValue(argv, "--quality-gate-json");
|
|
35
32
|
const args = {
|
|
36
33
|
goalId,
|
|
@@ -1,20 +1,2 @@
|
|
|
1
|
-
import type { CodexGoalReconciliation, CodexGoalSnapshot } from "./codex-goal-snapshot.js";
|
|
2
|
-
import { type UlwLoopScope } from "./paths.js";
|
|
3
|
-
import type { UlwLoopItem, UlwLoopPlan } from "./types.js";
|
|
4
1
|
import { UlwLoopError } from "./types.js";
|
|
5
|
-
export interface CodexSnapshotMismatchInput {
|
|
6
|
-
readonly reconciliation: CodexGoalReconciliation;
|
|
7
|
-
readonly snapshot: CodexGoalSnapshot | null | undefined;
|
|
8
|
-
readonly expectedObjective: string;
|
|
9
|
-
/** Only the checkpoint path can fall back to task-scoped aggregate reconciliation, so only it asks for that hint. */
|
|
10
|
-
readonly taskScopedHint?: {
|
|
11
|
-
readonly goal: UlwLoopItem;
|
|
12
|
-
readonly aggregate: boolean;
|
|
13
|
-
readonly final: boolean;
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
2
|
export declare function combineCheckpointValidationErrors(codexError: UlwLoopError, gateError: UlwLoopError): UlwLoopError;
|
|
17
|
-
export declare function codexSnapshotMismatchError(input: CodexSnapshotMismatchInput): UlwLoopError;
|
|
18
|
-
export declare function canReconcileCompletedTaskScopedAggregateSnapshot(repoRoot: string, plan: UlwLoopPlan, goal: UlwLoopItem, snapshotObjective: string, evidence: string, scope?: UlwLoopScope): Promise<boolean>;
|
|
19
|
-
export declare function canReconcileActiveFinalTaskScopedAggregateSnapshot(repoRoot: string, plan: UlwLoopPlan, goal: UlwLoopItem, snapshotObjective: string, evidence: string, scope?: UlwLoopScope): Promise<boolean>;
|
|
20
|
-
export declare function buildTaskScopedAggregateReconciliationHint(goal: UlwLoopItem, final: boolean): string;
|
|
@@ -1,93 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { readFile } from "node:fs/promises";
|
|
3
|
-
import { codexGoalMismatchRecovery, formatCodexGoalReconciliation } from "./codex-goal-snapshot.js";
|
|
4
|
-
import { codexGoalMode, isFinalRunCompletionCandidate } from "./goal-status.js";
|
|
5
|
-
import { ulwLoopBriefPath } from "./paths.js";
|
|
6
|
-
import { ULW_LOOP_DIR, ULW_LOOP_GOALS, ULW_LOOP_LEDGER, UlwLoopError } from "./types.js";
|
|
1
|
+
import { UlwLoopError } from "./types.js";
|
|
7
2
|
export function combineCheckpointValidationErrors(codexError, gateError) {
|
|
8
3
|
return new UlwLoopError(`${codexError.message}\n${gateError.message}`, "ULW_LOOP_QUALITY_GATE_INVALID", {
|
|
9
4
|
details: { ...(codexError.details ?? {}), ...(gateError.details ?? {}) },
|
|
10
5
|
});
|
|
11
6
|
}
|
|
12
|
-
export function codexSnapshotMismatchError(input) {
|
|
13
|
-
const { reconciliation, snapshot, taskScopedHint } = input;
|
|
14
|
-
const hint = taskScopedHint?.aggregate === true && snapshot?.status === "complete" && snapshot.objective !== undefined
|
|
15
|
-
? buildTaskScopedAggregateReconciliationHint(taskScopedHint.goal, taskScopedHint.final)
|
|
16
|
-
: "";
|
|
17
|
-
const recovery = codexGoalMismatchRecovery(input.expectedObjective, snapshot);
|
|
18
|
-
return new UlwLoopError(`${formatCodexGoalReconciliation(reconciliation)}${hint}\n${recovery.message}`, "ulw_loop_codex_snapshot_mismatch", { details: recovery.details });
|
|
19
|
-
}
|
|
20
|
-
function normalizeObjective(value) {
|
|
21
|
-
return value.replace(/\s+/g, " ").trim();
|
|
22
|
-
}
|
|
23
|
-
function textMentionsUlwLoopPlanArtifact(value) {
|
|
24
|
-
const normalized = (value ?? "").toLowerCase();
|
|
25
|
-
return (normalized.includes(ULW_LOOP_DIR.toLowerCase()) ||
|
|
26
|
-
normalized.includes(ULW_LOOP_GOALS.toLowerCase()) ||
|
|
27
|
-
normalized.includes(ULW_LOOP_LEDGER.toLowerCase()));
|
|
28
|
-
}
|
|
29
|
-
function textMentionsGoalId(value, goalId) {
|
|
30
|
-
return (value ?? "").toLowerCase().includes(goalId.toLowerCase());
|
|
31
|
-
}
|
|
32
|
-
function textHasCompletionValidationEvidence(value) {
|
|
33
|
-
const normalized = (value ?? "").toLowerCase();
|
|
34
|
-
const done = /\b(?:planned work|implementation|deliverables?|scope|task|work)\b/.test(normalized) &&
|
|
35
|
-
/\b(?:done|complete|completed|finished|shipped)\b/.test(normalized);
|
|
36
|
-
const verified = /\b(?:validation|verification|tests?|build|lint|review|quality gate|code-review)\b/.test(normalized) &&
|
|
37
|
-
/\b(?:passed|complete|completed|clean|green|approve|approved|clear)\b/.test(normalized);
|
|
38
|
-
return done && verified;
|
|
39
|
-
}
|
|
40
|
-
async function snapshotObjectiveMapsToUlwLoopPlan(repoRoot, snapshotObjective, scope) {
|
|
41
|
-
const actual = normalizeObjective(snapshotObjective).toLowerCase();
|
|
42
|
-
if (textMentionsUlwLoopPlanArtifact(actual))
|
|
43
|
-
return true;
|
|
44
|
-
if (actual.length < 24 || !existsSync(ulwLoopBriefPath(repoRoot, scope)))
|
|
45
|
-
return false;
|
|
46
|
-
try {
|
|
47
|
-
const brief = normalizeObjective(await readFile(ulwLoopBriefPath(repoRoot, scope), "utf8")).toLowerCase();
|
|
48
|
-
return brief.length >= 24 && (brief.includes(actual) || actual.includes(brief));
|
|
49
|
-
}
|
|
50
|
-
catch (error) {
|
|
51
|
-
if (error instanceof Error)
|
|
52
|
-
return false;
|
|
53
|
-
throw error;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
export async function canReconcileCompletedTaskScopedAggregateSnapshot(repoRoot, plan, goal, snapshotObjective, evidence, scope) {
|
|
57
|
-
if (codexGoalMode(plan) !== "aggregate")
|
|
58
|
-
return false;
|
|
59
|
-
if (goal.status !== "in_progress" || plan.activeGoalId !== goal.id)
|
|
60
|
-
return false;
|
|
61
|
-
if (isFinalRunCompletionCandidate(plan, goal)) {
|
|
62
|
-
return snapshotObjectiveMapsToUlwLoopPlan(repoRoot, snapshotObjective, scope);
|
|
63
|
-
}
|
|
64
|
-
if (!textMentionsUlwLoopPlanArtifact(evidence) || !textMentionsGoalId(evidence, goal.id))
|
|
65
|
-
return false;
|
|
66
|
-
if (!textHasCompletionValidationEvidence(evidence))
|
|
67
|
-
return false;
|
|
68
|
-
return snapshotObjectiveMapsToUlwLoopPlan(repoRoot, snapshotObjective, scope);
|
|
69
|
-
}
|
|
70
|
-
export async function canReconcileActiveFinalTaskScopedAggregateSnapshot(repoRoot, plan, goal, snapshotObjective, evidence, scope) {
|
|
71
|
-
if (codexGoalMode(plan) !== "aggregate")
|
|
72
|
-
return false;
|
|
73
|
-
if (goal.status !== "in_progress" || plan.activeGoalId !== goal.id)
|
|
74
|
-
return false;
|
|
75
|
-
if (!isFinalRunCompletionCandidate(plan, goal))
|
|
76
|
-
return false;
|
|
77
|
-
if (!textHasCompletionValidationEvidence(evidence))
|
|
78
|
-
return false;
|
|
79
|
-
return snapshotObjectiveMapsToUlwLoopPlan(repoRoot, snapshotObjective, scope);
|
|
80
|
-
}
|
|
81
|
-
function buildCompletedLegacyGoalRemediation(goal) {
|
|
82
|
-
return [
|
|
83
|
-
"If get_goal returns a different completed legacy/thread objective, do not repeat --status complete in this thread.",
|
|
84
|
-
`Record a non-terminal blocker with: omo-agent-toolkit ulw-loop checkpoint --goal-id ${goal.id} --status blocked --evidence "<completed legacy Codex goal blocks create_goal in this thread>" --codex-goal-json "<different completed get_goal JSON or path>".`,
|
|
85
|
-
"Then continue only from a Codex goal context with no active/completed conflicting goal, in the same repo/worktree, and create the intended goal there.",
|
|
86
|
-
].join(" ");
|
|
87
|
-
}
|
|
88
|
-
export function buildTaskScopedAggregateReconciliationHint(goal, final) {
|
|
89
|
-
if (final) {
|
|
90
|
-
return ` Final task-scoped aggregate reconciliation requires the checkpoint goal to be the active in-progress final OMO goal and the completed get_goal objective to map to the ulw-loop brief or artifact. ${buildCompletedLegacyGoalRemediation(goal)}`;
|
|
91
|
-
}
|
|
92
|
-
return ` Completed task-scoped aggregate reconciliation requires the checkpoint goal to be the active in-progress OMO goal, evidence that names that active OMO goal id, names .omo/ulw-loop/goals.json or ledger.jsonl, includes completed implementation plus validation/review evidence, and a get_goal objective that maps to the ulw-loop brief/artifact. ${buildCompletedLegacyGoalRemediation(goal)}`;
|
|
93
|
-
}
|
|
@@ -12,5 +12,7 @@ export interface CheckpointUlwLoopResult {
|
|
|
12
12
|
readonly goal: UlwLoopItem;
|
|
13
13
|
readonly ledgerEntry: UlwLoopLedgerEntry;
|
|
14
14
|
readonly aggregateCompletion?: UlwLoopAggregateCompletion;
|
|
15
|
+
readonly nextActions: readonly string[];
|
|
16
|
+
readonly warnings: readonly string[];
|
|
15
17
|
}
|
|
16
18
|
export declare function checkpointUlwLoop(repoRoot: string, args: CheckpointUlwLoopArgs, scope?: UlwLoopScope): Promise<CheckpointUlwLoopResult>;
|