oh-my-opencode 5.0.0-beta.6 → 5.0.0-beta.7
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.md +12 -1
- package/dist/cli/index.js +274 -190
- package/dist/cli-node/index.js +274 -190
- package/dist/index.js +95 -22
- package/dist/tui.js +77 -4
- 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/codegraph/dist/cli.js +76 -3
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +76 -3
- package/packages/omo-codex/plugin/components/codegraph/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/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/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/directive.md +6 -0
- 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 +6 -0
- package/packages/omo-codex/plugin/components/ulw-loop/directive.md +6 -0
- 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/SKILL.md +3 -2
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +106 -0
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +1 -0
- 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/skills/ultrawork/SKILL.md +6 -0
- package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +3 -2
- package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +106 -0
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +1 -0
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
|
@@ -5817,11 +5817,12 @@ var OmoCodegraphSettingsSchema = OmoCodegraphSettingsLayerSchema.extend({
|
|
|
5817
5817
|
|
|
5818
5818
|
// ../../../../omo-config-core/src/schema/memory.ts
|
|
5819
5819
|
var OmoMemoryReflectionTriggerSchema = object({
|
|
5820
|
-
step_count: number2().int().nonnegative().default(
|
|
5820
|
+
step_count: number2().int().nonnegative().default(25),
|
|
5821
5821
|
on_compaction: boolean2().default(true)
|
|
5822
5822
|
}).strict();
|
|
5823
5823
|
var OmoMemoryReflectionSchema = object({
|
|
5824
|
-
|
|
5824
|
+
enabled: boolean2().default(true),
|
|
5825
|
+
trigger: OmoMemoryReflectionTriggerSchema.default({ step_count: 25, on_compaction: true }),
|
|
5825
5826
|
merge: _enum(["auto", "integration"]).default("auto"),
|
|
5826
5827
|
category: string2().min(1).default("quick"),
|
|
5827
5828
|
timeout_minutes: number2().int().positive().default(15),
|
|
@@ -5834,11 +5835,36 @@ var OmoMemorySyncSchema = object({
|
|
|
5834
5835
|
var OmoMemorySearchSchema = object({
|
|
5835
5836
|
enabled: boolean2().default(true)
|
|
5836
5837
|
}).strict();
|
|
5838
|
+
var OmoMemoryNudgeSchema = object({
|
|
5839
|
+
enabled: boolean2().default(true),
|
|
5840
|
+
every_user_turns: number2().int().min(1).default(10)
|
|
5841
|
+
}).strict();
|
|
5842
|
+
var OmoMemoryFactsSchema = object({
|
|
5843
|
+
enabled: boolean2().default(true),
|
|
5844
|
+
debounce_settles: number2().int().min(1).default(4)
|
|
5845
|
+
}).strict();
|
|
5846
|
+
var OmoMemoryDreamSchema = object({
|
|
5847
|
+
enabled: boolean2().default(true),
|
|
5848
|
+
idle_minutes: number2().int().min(0).default(30),
|
|
5849
|
+
min_hours_between: number2().int().min(1).default(24),
|
|
5850
|
+
shutdown_launch: boolean2().default(true),
|
|
5851
|
+
auto_select_max: number2().int().min(1).max(10).default(5),
|
|
5852
|
+
auto_select_max_chars: number2().int().min(1e4).default(150000)
|
|
5853
|
+
}).strict();
|
|
5854
|
+
var OmoMemoryPeopleSchema = object({
|
|
5855
|
+
enabled: boolean2().default(true),
|
|
5856
|
+
max_entries: number2().int().min(1).max(100).default(40),
|
|
5857
|
+
max_entry_chars: number2().int().min(50).max(500).default(200)
|
|
5858
|
+
}).strict();
|
|
5859
|
+
var OmoMemorySoulSchema = object({
|
|
5860
|
+
edit_notice: boolean2().default(true)
|
|
5861
|
+
}).strict();
|
|
5837
5862
|
var OmoMemoryReflectionTriggerLayerSchema = object({
|
|
5838
5863
|
step_count: number2().int().nonnegative().optional(),
|
|
5839
5864
|
on_compaction: boolean2().optional()
|
|
5840
5865
|
}).strict();
|
|
5841
5866
|
var OmoMemoryReflectionLayerSchema = object({
|
|
5867
|
+
enabled: boolean2().optional(),
|
|
5842
5868
|
trigger: OmoMemoryReflectionTriggerLayerSchema.optional(),
|
|
5843
5869
|
merge: _enum(["auto", "integration"]).optional(),
|
|
5844
5870
|
category: string2().min(1).optional(),
|
|
@@ -5852,10 +5878,39 @@ var OmoMemorySyncLayerSchema = object({
|
|
|
5852
5878
|
var OmoMemorySearchLayerSchema = object({
|
|
5853
5879
|
enabled: boolean2().optional()
|
|
5854
5880
|
}).strict();
|
|
5881
|
+
var OmoMemoryNudgeLayerSchema = object({
|
|
5882
|
+
enabled: boolean2().optional(),
|
|
5883
|
+
every_user_turns: number2().int().min(1).optional()
|
|
5884
|
+
}).strict();
|
|
5885
|
+
var OmoMemoryFactsLayerSchema = object({
|
|
5886
|
+
enabled: boolean2().optional(),
|
|
5887
|
+
debounce_settles: number2().int().min(1).optional()
|
|
5888
|
+
}).strict();
|
|
5889
|
+
var OmoMemoryDreamLayerSchema = object({
|
|
5890
|
+
enabled: boolean2().optional(),
|
|
5891
|
+
idle_minutes: number2().int().min(0).optional(),
|
|
5892
|
+
min_hours_between: number2().int().min(1).optional(),
|
|
5893
|
+
shutdown_launch: boolean2().optional(),
|
|
5894
|
+
auto_select_max: number2().int().min(1).max(10).optional(),
|
|
5895
|
+
auto_select_max_chars: number2().int().min(1e4).optional()
|
|
5896
|
+
}).strict();
|
|
5897
|
+
var OmoMemoryPeopleLayerSchema = object({
|
|
5898
|
+
enabled: boolean2().optional(),
|
|
5899
|
+
max_entries: number2().int().min(1).max(100).optional(),
|
|
5900
|
+
max_entry_chars: number2().int().min(50).max(500).optional()
|
|
5901
|
+
}).strict();
|
|
5902
|
+
var OmoMemorySoulLayerSchema = object({
|
|
5903
|
+
edit_notice: boolean2().optional()
|
|
5904
|
+
}).strict();
|
|
5855
5905
|
var OmoMemoryAgentOverridesSchema = object({
|
|
5856
5906
|
enabled: boolean2().optional(),
|
|
5857
5907
|
agent: string2().min(1).optional(),
|
|
5858
5908
|
reflection: OmoMemoryReflectionLayerSchema.optional(),
|
|
5909
|
+
nudge: OmoMemoryNudgeLayerSchema.optional(),
|
|
5910
|
+
facts: OmoMemoryFactsLayerSchema.optional(),
|
|
5911
|
+
dream: OmoMemoryDreamLayerSchema.optional(),
|
|
5912
|
+
people: OmoMemoryPeopleLayerSchema.optional(),
|
|
5913
|
+
soul: OmoMemorySoulLayerSchema.optional(),
|
|
5859
5914
|
sync: OmoMemorySyncLayerSchema.optional(),
|
|
5860
5915
|
search: OmoMemorySearchLayerSchema.optional(),
|
|
5861
5916
|
compile_warn_tokens: number2().int().positive().optional()
|
|
@@ -5865,12 +5920,25 @@ var OmoMemorySettingsSchema = object({
|
|
|
5865
5920
|
agent: string2().min(1).default("auto"),
|
|
5866
5921
|
tool_exposure: _enum(["direct", "search"]).default("direct"),
|
|
5867
5922
|
reflection: OmoMemoryReflectionSchema.default({
|
|
5868
|
-
|
|
5923
|
+
enabled: true,
|
|
5924
|
+
trigger: { step_count: 25, on_compaction: true },
|
|
5869
5925
|
merge: "auto",
|
|
5870
5926
|
category: "quick",
|
|
5871
5927
|
timeout_minutes: 15,
|
|
5872
5928
|
sandbox: "auto"
|
|
5873
5929
|
}),
|
|
5930
|
+
nudge: OmoMemoryNudgeSchema.default({ enabled: true, every_user_turns: 10 }),
|
|
5931
|
+
facts: OmoMemoryFactsSchema.default({ enabled: true, debounce_settles: 4 }),
|
|
5932
|
+
dream: OmoMemoryDreamSchema.default({
|
|
5933
|
+
enabled: true,
|
|
5934
|
+
idle_minutes: 30,
|
|
5935
|
+
min_hours_between: 24,
|
|
5936
|
+
shutdown_launch: true,
|
|
5937
|
+
auto_select_max: 5,
|
|
5938
|
+
auto_select_max_chars: 150000
|
|
5939
|
+
}),
|
|
5940
|
+
people: OmoMemoryPeopleSchema.default({ enabled: true, max_entries: 40, max_entry_chars: 200 }),
|
|
5941
|
+
soul: OmoMemorySoulSchema.default({ edit_notice: true }),
|
|
5874
5942
|
sync: OmoMemorySyncSchema.default({ enabled: true }),
|
|
5875
5943
|
search: OmoMemorySearchSchema.default({ enabled: true }),
|
|
5876
5944
|
compile_warn_tokens: number2().int().positive().default(30000),
|
|
@@ -5881,6 +5949,11 @@ var OmoMemorySettingsLayerSchema = object({
|
|
|
5881
5949
|
agent: string2().min(1).optional(),
|
|
5882
5950
|
tool_exposure: _enum(["direct", "search"]).optional(),
|
|
5883
5951
|
reflection: OmoMemoryReflectionLayerSchema.optional(),
|
|
5952
|
+
nudge: OmoMemoryNudgeLayerSchema.optional(),
|
|
5953
|
+
facts: OmoMemoryFactsLayerSchema.optional(),
|
|
5954
|
+
dream: OmoMemoryDreamLayerSchema.optional(),
|
|
5955
|
+
people: OmoMemoryPeopleLayerSchema.optional(),
|
|
5956
|
+
soul: OmoMemorySoulLayerSchema.optional(),
|
|
5884
5957
|
sync: OmoMemorySyncLayerSchema.optional(),
|
|
5885
5958
|
search: OmoMemorySearchLayerSchema.optional(),
|
|
5886
5959
|
compile_warn_tokens: number2().int().positive().optional(),
|
|
@@ -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.7) 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.7) 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.7) Verifying LazyCodex Executor Evidence"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -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.7",
|
|
4
|
+
"inputDigest": "sha256:8a84cb04f394489ea0398adc626f998d153d9d3b31f2e12b91f5d06e389862c9",
|
|
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.7) 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.7) 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.7) 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.7) 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.7) 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.7) Resetting Project Rule Cache"
|
|
49
49
|
}
|
|
50
50
|
]
|
|
51
51
|
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/start-work-continuation/dist/cli.js\" hook stop",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.7) Checking Start-Work Continuation"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"type": "command",
|
|
20
20
|
"command": "node \"${PLUGIN_ROOT}/components/start-work-continuation/dist/cli.js\" hook subagent-stop",
|
|
21
21
|
"timeout": 10,
|
|
22
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
22
|
+
"statusMessage": "(OmO 5.0.0-beta.7) Checking Start-Work Continuation"
|
|
23
23
|
}
|
|
24
24
|
]
|
|
25
25
|
}
|
|
@@ -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.7) 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.7",
|
|
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",
|
|
@@ -126,6 +126,12 @@ exactly `objective`; do not include `status`. Only when no goal tool
|
|
|
126
126
|
exists on this surface, open your reply with a `# Goal` block treated
|
|
127
127
|
as binding. Goals are unlimited; never invent a numeric budget or
|
|
128
128
|
limit.
|
|
129
|
+
Check `get_goal` first: continue a matching active goal instead of
|
|
130
|
+
duplicating one; surface a conflicting one. Write the objective
|
|
131
|
+
outcome-first: the concrete thing that will be TRUE when done (an
|
|
132
|
+
outcome, never an activity), the named deliverable surfaces, and
|
|
133
|
+
explicit scope bounds — a vague objective produces vague criteria,
|
|
134
|
+
and vague criteria cannot be proven.
|
|
129
135
|
The criteria MUST list, upfront:
|
|
130
136
|
- The user-visible deliverable in one line, and the tier with its
|
|
131
137
|
justification.
|
|
@@ -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.7",
|
|
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",
|
|
@@ -133,6 +133,12 @@ exactly `objective`; do not include `status`. Only when no goal tool
|
|
|
133
133
|
exists on this surface, open your reply with a `# Goal` block treated
|
|
134
134
|
as binding. Goals are unlimited; never invent a numeric budget or
|
|
135
135
|
limit.
|
|
136
|
+
Check `get_goal` first: continue a matching active goal instead of
|
|
137
|
+
duplicating one; surface a conflicting one. Write the objective
|
|
138
|
+
outcome-first: the concrete thing that will be TRUE when done (an
|
|
139
|
+
outcome, never an activity), the named deliverable surfaces, and
|
|
140
|
+
explicit scope bounds — a vague objective produces vague criteria,
|
|
141
|
+
and vague criteria cannot be proven.
|
|
136
142
|
The criteria MUST list, upfront:
|
|
137
143
|
- The user-visible deliverable in one line, and the tier with its
|
|
138
144
|
justification.
|
|
@@ -126,6 +126,12 @@ exactly `objective`; do not include `status`. Only when no goal tool
|
|
|
126
126
|
exists on this surface, open your reply with a `# Goal` block treated
|
|
127
127
|
as binding. Goals are unlimited; never invent a numeric budget or
|
|
128
128
|
limit.
|
|
129
|
+
Check `get_goal` first: continue a matching active goal instead of
|
|
130
|
+
duplicating one; surface a conflicting one. Write the objective
|
|
131
|
+
outcome-first: the concrete thing that will be TRUE when done (an
|
|
132
|
+
outcome, never an activity), the named deliverable surfaces, and
|
|
133
|
+
explicit scope bounds — a vague objective produces vague criteria,
|
|
134
|
+
and vague criteria cannot be proven.
|
|
129
135
|
The criteria MUST list, upfront:
|
|
130
136
|
- The user-visible deliverable in one line, and the tier with its
|
|
131
137
|
justification.
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit --with-ultrawork",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.7) Checking Ulw-Loop Steering"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"type": "command",
|
|
21
21
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
|
|
22
22
|
"timeout": 5,
|
|
23
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
23
|
+
"statusMessage": "(OmO 5.0.0-beta.7) Enforcing Unlimited Ulw-Loop Budget"
|
|
24
24
|
}
|
|
25
25
|
]
|
|
26
26
|
},
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"type": "command",
|
|
32
32
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use-spawn",
|
|
33
33
|
"timeout": 5,
|
|
34
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
34
|
+
"statusMessage": "(OmO 5.0.0-beta.7) Guarding Ulw-Loop Spawns"
|
|
35
35
|
}
|
|
36
36
|
]
|
|
37
37
|
}
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"type": "command",
|
|
44
44
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook stop",
|
|
45
45
|
"timeout": 10,
|
|
46
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
46
|
+
"statusMessage": "(OmO 5.0.0-beta.7) Checking Ulw-Loop Resume"
|
|
47
47
|
}
|
|
48
48
|
]
|
|
49
49
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-ulw-loop",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.7",
|
|
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",
|
|
@@ -15,12 +15,13 @@ This skill is intentionally compact. The full workflow lives in `references/full
|
|
|
15
15
|
|
|
16
16
|
1. Open `references/full-workflow.md`.
|
|
17
17
|
2. Read through **Bootstrap** (including its tier triage), **Execution Loop**, the **Manual-QA channels** table, and the **Stop Rules** before running any ULW command or recording evidence.
|
|
18
|
-
3.
|
|
18
|
+
3. Open `references/define-goal.md` and register the run's goal by it. Goal creation is NEVER skipped: shape the objective and every success criterion by that reference before any implementation.
|
|
19
|
+
4. If the task has code edits, tests, QA, or commit work, follow the full workflow's delegation and evidence rules. Tests alone never prove done.
|
|
19
20
|
|
|
20
21
|
## Non-Negotiables
|
|
21
22
|
|
|
22
23
|
- Use the ulw-loop CLI state under `.omo/ulw-loop`; do not hand-edit goal state.
|
|
23
|
-
- Register goals up front (`omo-agent-toolkit ulw-loop create-goals`, then `create_goal` from the printed handoff) and mirror every atomic step into the live `update_plan` checklist: one ultra-granular step per action, exactly one in_progress, transitions marked the instant they happen.
|
|
24
|
+
- Register goals up front, shaped by `references/define-goal.md` (`omo-agent-toolkit ulw-loop create-goals`, then `create_goal` from the printed handoff), and mirror every atomic step into the live `update_plan` checklist: one ultra-granular step per action, exactly one in_progress, transitions marked the instant they happen.
|
|
24
25
|
- After any compaction or context loss, re-read brief + goals + ledger FIRST plus `omo-agent-toolkit ulw-loop status --json`, then resume; never re-plan from scratch.
|
|
25
26
|
- If `omo-agent-toolkit ulw-loop create-goals` says the existing aggregate is already complete, start unrelated new work with a fresh `--session-id <new-id>` instead of steering or forcing the completed default state. Use `--force` only to intentionally overwrite completed evidence.
|
|
26
27
|
- Every success criterion needs observable evidence from a real surface: a channel (terminal/TUI via the xterm.js web terminal, HTTP, browser, computer-use) or, for CLI- or data-shaped criteria, an auxiliary surface (CLI stdout, DB diff, parsed config dump).
|
package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Define Goal
|
|
2
|
+
|
|
3
|
+
How to turn a brief into a registered goal the run can be held to. Read this BEFORE calling `create_goal`: the objective you register is the binding contract for the whole run, and the run's quality is capped by the quality of this objective.
|
|
4
|
+
|
|
5
|
+
A goal is a prompt to the agent that executes it, including future-you after compaction. It earns its tokens the way any prompt does: it carries only what the run cannot re-derive later, the outcome, the proof, the bounds, and the stop state. Everything else is noise that steals attention from the parts that decide completion.
|
|
6
|
+
|
|
7
|
+
## The quality bar
|
|
8
|
+
|
|
9
|
+
Before registering, the objective must answer all five:
|
|
10
|
+
|
|
11
|
+
1. What concrete thing will be TRUE when this is done? An outcome, never an activity.
|
|
12
|
+
2. What evidence will prove it? Commands, validators, artifacts someone can open.
|
|
13
|
+
3. What quantitative or binary threshold defines success?
|
|
14
|
+
4. What scope boundaries matter? What is in, and what is explicitly out.
|
|
15
|
+
5. What should make the agent stop and ask instead of grinding?
|
|
16
|
+
|
|
17
|
+
An objective that cannot answer one of these is not ready. Repair it (below) before calling the tool.
|
|
18
|
+
|
|
19
|
+
## Objective anatomy
|
|
20
|
+
|
|
21
|
+
Write the objective outcome-first, in this order:
|
|
22
|
+
|
|
23
|
+
1. **Outcome**: one sentence stating what will be true, naming the artifact, system, repo, or user-facing behavior involved.
|
|
24
|
+
2. **Deliverables**: the named surfaces the work lands on (files, endpoints, packages, environments). Use literal paths and names: the executing agent interprets the objective literally and will not infer surfaces you did not name.
|
|
25
|
+
3. **Success criteria**: sized by tier (below), each one a binary observable with its scenario and evidence named upfront.
|
|
26
|
+
4. **Scope bounds**: what is out of scope, stated wherever ambiguity would let the run expand. Unstated bounds do not exist.
|
|
27
|
+
5. **WHEN TO STOP**: one line, "I'll stop right away when <the exact observable state that ends this run>". This line is binding: the moment it holds, the run delivers and stops. Work past it is a defect, not diligence.
|
|
28
|
+
|
|
29
|
+
State the motivation when it changes execution ("p95 matters because the checkout SLA is 300ms") and omit it when it does not. Positive statements beat prohibitions: "verify against staging" carries more signal than "do not touch production".
|
|
30
|
+
|
|
31
|
+
## Success criteria construction
|
|
32
|
+
|
|
33
|
+
Count by tier, mirroring the run's tier triage:
|
|
34
|
+
|
|
35
|
+
- LIGHT (known pattern, no open design decisions): 1-2 criteria, happy path plus the riskiest edge.
|
|
36
|
+
- HEAVY (new module or abstraction, auth or security, external integration, schema or migration, concurrency, cross-domain refactor, or the user demanded care): 3+ criteria covering happy path, edge (boundary, empty, malformed, concurrent), adjacent-surface regression named by file and function, and the adversarial risk the change actually creates.
|
|
37
|
+
|
|
38
|
+
Every criterion carries, at definition time, not after the work:
|
|
39
|
+
|
|
40
|
+
- a binary pass condition ("returns 200 and the body matches the schema", never "works correctly");
|
|
41
|
+
- the exact scenario: the literal command, request, page action, or payload that will prove it;
|
|
42
|
+
- the evidence artifact it will capture: transcript, status plus body, screenshot path, diff, parsed dump;
|
|
43
|
+
- the failing-first proof (test id or scenario) that will be captured RED before implementation.
|
|
44
|
+
|
|
45
|
+
A criterion that cannot fail is not a criterion. If no input could make the scenario fail, it measures nothing; rewrite it until failure is possible.
|
|
46
|
+
|
|
47
|
+
## Make it quantitative
|
|
48
|
+
|
|
49
|
+
Prefer numbers that represent real success over decorative precision. A threshold nobody would act on differently is noise.
|
|
50
|
+
|
|
51
|
+
| Domain | Quantify as |
|
|
52
|
+
| --- | --- |
|
|
53
|
+
| Bug fix | reproduction first, fix second: the failing case captured RED, then the same validator green |
|
|
54
|
+
| Tests | the exact command and required pass condition, plus run count for flake-sensitive suites |
|
|
55
|
+
| Performance | metric, target threshold, measurement method, and run count ("p95 under 250ms across 3 consecutive local runs") |
|
|
56
|
+
| Quality work | the observable acceptance bar: lint, typecheck, and test pass; reviewed examples; a user-approved artifact |
|
|
57
|
+
| Research | the decision the research must enable, the sources or systems in scope, and the evidence standard per claim |
|
|
58
|
+
| Operations | healthy state, monitoring window, failure threshold, and the rollback or escalation trigger |
|
|
59
|
+
|
|
60
|
+
## Repair weak goals
|
|
61
|
+
|
|
62
|
+
Reject pure activity objectives: "make progress", "keep investigating", "improve things", "work on X". They cannot fail, so they cannot finish.
|
|
63
|
+
|
|
64
|
+
Rewrite vague goals into measurable ones when local context makes the rewrite safe. Ask ONE narrow question only when the missing detail changes the intended outcome or its validation, shaped around the missing validator or bound:
|
|
65
|
+
|
|
66
|
+
- "What metric defines success here: latency, cost, accuracy, or user-visible behavior?"
|
|
67
|
+
- "Which environment do I verify against: local, staging, or production?"
|
|
68
|
+
- "What is the minimum evidence you want before this goal is marked complete?"
|
|
69
|
+
|
|
70
|
+
When the user cannot provide a metric, propose the most honest binary validator available and proceed with it stated in the objective.
|
|
71
|
+
|
|
72
|
+
Weak: "Make checkout faster."
|
|
73
|
+
Repaired: "Reduce checkout API p95 below 250ms on the documented slow path with the smallest safe server-side change; prove it with `npm run test:checkout` green plus the local latency benchmark showing p95 under 250ms across 3 consecutive runs; out of scope: client-side changes and new caching layers."
|
|
74
|
+
|
|
75
|
+
Weak: "Keep investigating the PR comments."
|
|
76
|
+
Repaired: "Resolve every open change-requesting review comment on PR 123 touching only the affected auth files and their tests; prove it with the targeted auth test command green plus `gh pr view 123` showing zero unresolved change-request threads."
|
|
77
|
+
|
|
78
|
+
## Registration protocol
|
|
79
|
+
|
|
80
|
+
1. Call `get_goal` first, then act by state:
|
|
81
|
+
|
|
82
|
+
| get_goal shows | Action |
|
|
83
|
+
| --- | --- |
|
|
84
|
+
| no active goal | Register with `create_goal`, passing exactly `objective`. Never include lifecycle fields such as `status`; never register a goal in prose, a notepad, or a plan instead of the tool. |
|
|
85
|
+
| an active goal matching this intent | Continue it. Never register a duplicate. |
|
|
86
|
+
| an active goal conflicting with this intent | Stop and surface the conflict; the user decides whether to finish it, complete it, or branch. |
|
|
87
|
+
|
|
88
|
+
2. Goals are unlimited. Never invent a numeric budget, token limit, or deadline the user did not state.
|
|
89
|
+
3. In a ulw-loop run, the loop CLI owns per-goal state (`.omo/ulw-loop/goals.json`): `create_goal` registers the aggregate objective from the printed handoff, and this reference shapes both that objective and every goal's `successCriteria` at `create-goals` time.
|
|
90
|
+
|
|
91
|
+
## Completion honesty
|
|
92
|
+
|
|
93
|
+
- Report `update_goal` complete only after auditing every criterion against evidence captured in this run. A green suite is supporting evidence, never completion proof by itself.
|
|
94
|
+
- Waiting is not blocked: while a monitor, background child, or scheduled continuation can wake the run, end the turn and let it fire. Blocked requires a true impasse: no live resumption channel, and the same block recurring across consecutive turns.
|
|
95
|
+
- The moment the WHEN TO STOP line holds with evidence in hand, deliver and stop.
|
|
96
|
+
|
|
97
|
+
## Anti-patterns
|
|
98
|
+
|
|
99
|
+
| Anti-pattern | Why it fails | Instead |
|
|
100
|
+
| --- | --- | --- |
|
|
101
|
+
| Activity objective ("investigate X") | Cannot fail, so cannot finish; the run wanders | Name the outcome the activity must produce and its evidence |
|
|
102
|
+
| Criteria added after implementation | The contract bent to fit the work; nothing was proven | Write criteria and scenarios at registration, before any edit |
|
|
103
|
+
| Decorative precision ("99.97% uptime" nobody measures) | A threshold no validator checks is noise wearing a suit | Only thresholds a named validator will actually check |
|
|
104
|
+
| Padded objective (role prose, restated context, filler) | Every extra token competes with the criteria for attention | Outcome, deliverables, criteria, bounds, stop line; nothing else |
|
|
105
|
+
| Goal registered in prose or a notepad | Nothing binds the run; completion becomes a vibe | `create_goal` with the objective, every time the tool exists |
|
|
106
|
+
| Duplicate goal for the same intent | Two contracts, neither authoritative | Continue the active goal or surface the conflict |
|
package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md
CHANGED
|
@@ -121,6 +121,7 @@ only when deliberately overwriting completed evidence.
|
|
|
121
121
|
Write state through the CLI path. Do not hand-edit state files.
|
|
122
122
|
|
|
123
123
|
### 2. Refine success criteria + a Prometheus-grade QA and parallelism plan per goal
|
|
124
|
+
Shape every goal's objective and `successCriteria` by `references/define-goal.md`: its quality bar, objective anatomy, and criterion construction govern this step.
|
|
124
125
|
Gather context BEFORE planning with parallel `explorer` / `librarian` workers plus your own read-only tools.
|
|
125
126
|
First survey available skills: read every loosely-relevant skill's description, deliberately choose which this work uses, and prefer applying genuinely-relevant skills over working raw.
|
|
126
127
|
Then run tier triage per goal — rigor (LIGHT/HEAVY below) and shape (`delivery` default, or `research` when the deliverable is a cited answer, not an artifact) — and record both in an `annotate_ledger` steering entry. Default is LIGHT — a narrow change inside existing layers. Take HEAVY only on a fact you can point to: a new module / abstraction / domain model; auth, security, or session; an external integration; a DB schema or migration; concurrency, transaction boundaries, or cache invalidation; a cross-domain refactor; or the user signaled care or demanded review. When unsure, take HEAVY; upgrade the moment a HEAVY fact surfaces, never downgrade mid-run.
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/git-bash/dist/cli.js\" hook post-compact",
|
|
9
9
|
"timeout": 5,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.7) Resetting Git Bash MCP Reminder",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\git-bash\\dist\\cli.js\" hook post-compact"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/lsp/dist/cli.js\" hook post-compact",
|
|
9
9
|
"timeout": 5,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.7) Resetting LSP Diagnostics Cache",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\lsp\\dist\\cli.js\" hook post-compact"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook post-compact",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.7) 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
|
],
|