lazycodex-ai 5.0.1 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +2 -1
- package/README.ko.md +2 -1
- package/README.md +2 -1
- package/README.ru.md +2 -1
- package/README.zh-cn.md +2 -1
- package/dist/cli/index.js +241 -144
- package/dist/cli-node/index.js +241 -144
- package/package.json +6 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +26 -3
- 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/AGENTS.md +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/dist/cli.js +42 -32
- 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-execute-continuation/src/plan-checklist.ts +55 -29
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/test/boulder-reader.test.ts +51 -0
- 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/coding-agent-sessions/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/aside_scanner.py +3 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/cli.py +4 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/file_scanners.py +6 -2
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +7 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/transcript.py +3 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/types.py +3 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/find-agent-sessions.py +4 -0
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +37 -14
- package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +1 -1
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/aside_scanner.py +3 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/cli.py +4 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/file_scanners.py +6 -2
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +7 -1
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/transcript.py +3 -1
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/types.py +3 -1
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/find-agent-sessions.py +4 -0
|
@@ -11,17 +11,31 @@ const TODO_HEADING_PATTERN = /^##[ \t]+TODOs(?:[ \t]+#+)?[ \t]*$/i;
|
|
|
11
11
|
const FINAL_VERIFICATION_HEADING_PATTERN = /^##[ \t]+Final Verification Wave(?:[ \t]+#+)?[ \t]*$/i;
|
|
12
12
|
const SECTION_BOUNDARY_HEADING_PATTERN = /^#{1,2}(?:[ \t]+|$)/;
|
|
13
13
|
const FENCE_PATTERN = /^[ \t]{0,3}(`{3,}|~{3,})(.*)$/;
|
|
14
|
-
const SIMPLE_CHECKBOX_PATTERN = /^[-*][ \t]*\[[ \t]*([xX]?)[ \t]*\][ \t]+(.+)$/;
|
|
15
|
-
const
|
|
16
|
-
const
|
|
14
|
+
const SIMPLE_CHECKBOX_PATTERN = /^[-*][ \t]*\[[ \t]*([xX~]?)[ \t]*\][ \t]+(.+)$/;
|
|
15
|
+
const STRUCTURED_CHECKBOX_PATTERN = /^- \[([ xX~])\] (.+)$/;
|
|
16
|
+
const TODO_TASK_LABEL_PATTERN =
|
|
17
|
+
/^([1-9]\d*|T[1-9]\d*(?:\.[1-9]\d*[a-z]?)?)(?:\.[ \t]+|[ \t]+(?:[-\u2014][ \t]+)?)(.+)$/i;
|
|
18
|
+
const FINAL_WAVE_TASK_LABEL_PATTERN =
|
|
19
|
+
/^([FH][1-9]\d*(?:\.[1-9]\d*[a-z]?)?)(?:\.[ \t]+|[ \t]+(?:[-\u2014][ \t]+)?)(.+)$/i;
|
|
17
20
|
|
|
18
21
|
type ChecklistSection = "todo" | "final-wave" | "other";
|
|
19
22
|
|
|
23
|
+
// Mirrors @oh-my-opencode/boulder-state's plan grammar: `[~]` marks a blocked task that counts toward
|
|
24
|
+
// the total but is neither completed nor remaining work.
|
|
25
|
+
type CheckboxStatus = "open" | "done" | "in-progress";
|
|
26
|
+
|
|
20
27
|
type ParsedCheckbox = {
|
|
21
|
-
readonly
|
|
28
|
+
readonly status: CheckboxStatus;
|
|
22
29
|
readonly label: string;
|
|
23
30
|
};
|
|
24
31
|
|
|
32
|
+
type ChecklistCounter = {
|
|
33
|
+
completed: number;
|
|
34
|
+
remaining: number;
|
|
35
|
+
total: number;
|
|
36
|
+
nextTaskLabel: string | null;
|
|
37
|
+
};
|
|
38
|
+
|
|
25
39
|
type MarkdownFence = {
|
|
26
40
|
readonly marker: "`" | "~";
|
|
27
41
|
readonly length: number;
|
|
@@ -42,9 +56,8 @@ export function parsePlanChecklist(markdown: string): PlanChecklist {
|
|
|
42
56
|
const lines = markdown.split(/\r?\n/);
|
|
43
57
|
if (!hasStructuredSection(lines)) return parseSimpleChecklist(lines);
|
|
44
58
|
|
|
45
|
-
|
|
46
|
-
let
|
|
47
|
-
let nextTaskLabel: string | null = null;
|
|
59
|
+
const counter = emptyCounter();
|
|
60
|
+
let hasUntrackedTopLevelCheckbox = false;
|
|
48
61
|
let section: ChecklistSection = "other";
|
|
49
62
|
let fence: MarkdownFence | null = null;
|
|
50
63
|
|
|
@@ -63,18 +76,32 @@ export function parsePlanChecklist(markdown: string): PlanChecklist {
|
|
|
63
76
|
section = parseStructuredSectionHeading(line);
|
|
64
77
|
continue;
|
|
65
78
|
}
|
|
66
|
-
if (section === "other")
|
|
79
|
+
if (section === "other") {
|
|
80
|
+
if (parseSimpleTopLevelCheckbox(line) !== null) hasUntrackedTopLevelCheckbox = true;
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
67
83
|
|
|
68
84
|
const checkbox = parseStructuredCheckbox(line, section);
|
|
69
|
-
if (checkbox
|
|
70
|
-
if (checkbox.checked) completed += 1;
|
|
71
|
-
else {
|
|
72
|
-
remaining += 1;
|
|
73
|
-
nextTaskLabel = nextTaskLabel ?? checkbox.label;
|
|
74
|
-
}
|
|
85
|
+
if (checkbox !== null) countCheckbox(counter, checkbox);
|
|
75
86
|
}
|
|
76
87
|
|
|
77
|
-
|
|
88
|
+
// Canonical headings that hold only template text while the real rows live under another heading
|
|
89
|
+
// would otherwise count nothing; fall back to every top-level checkbox in that case.
|
|
90
|
+
if (counter.total === 0 && hasUntrackedTopLevelCheckbox) return parseSimpleChecklist(lines);
|
|
91
|
+
return { ...counter };
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function emptyCounter(): ChecklistCounter {
|
|
95
|
+
return { completed: 0, remaining: 0, total: 0, nextTaskLabel: null };
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function countCheckbox(counter: ChecklistCounter, checkbox: ParsedCheckbox): void {
|
|
99
|
+
counter.total += 1;
|
|
100
|
+
if (checkbox.status === "done") counter.completed += 1;
|
|
101
|
+
else if (checkbox.status === "open") {
|
|
102
|
+
counter.remaining += 1;
|
|
103
|
+
counter.nextTaskLabel = counter.nextTaskLabel ?? checkbox.label;
|
|
104
|
+
}
|
|
78
105
|
}
|
|
79
106
|
|
|
80
107
|
function hasStructuredSection(lines: readonly string[]): boolean {
|
|
@@ -95,9 +122,7 @@ function hasStructuredSection(lines: readonly string[]): boolean {
|
|
|
95
122
|
}
|
|
96
123
|
|
|
97
124
|
function parseSimpleChecklist(lines: readonly string[]): PlanChecklist {
|
|
98
|
-
|
|
99
|
-
let remaining = 0;
|
|
100
|
-
let nextTaskLabel: string | null = null;
|
|
125
|
+
const counter = emptyCounter();
|
|
101
126
|
let fence: MarkdownFence | null = null;
|
|
102
127
|
|
|
103
128
|
for (const line of lines) {
|
|
@@ -112,15 +137,10 @@ function parseSimpleChecklist(lines: readonly string[]): PlanChecklist {
|
|
|
112
137
|
}
|
|
113
138
|
|
|
114
139
|
const checkbox = parseSimpleTopLevelCheckbox(line);
|
|
115
|
-
if (checkbox
|
|
116
|
-
if (checkbox.checked) completed += 1;
|
|
117
|
-
else {
|
|
118
|
-
remaining += 1;
|
|
119
|
-
nextTaskLabel = nextTaskLabel ?? checkbox.label;
|
|
120
|
-
}
|
|
140
|
+
if (checkbox !== null) countCheckbox(counter, checkbox);
|
|
121
141
|
}
|
|
122
142
|
|
|
123
|
-
return {
|
|
143
|
+
return { ...counter };
|
|
124
144
|
}
|
|
125
145
|
|
|
126
146
|
function parseStructuredSectionHeading(line: string): ChecklistSection {
|
|
@@ -130,12 +150,13 @@ function parseStructuredSectionHeading(line: string): ChecklistSection {
|
|
|
130
150
|
}
|
|
131
151
|
|
|
132
152
|
function parseStructuredCheckbox(line: string, section: "todo" | "final-wave"): ParsedCheckbox | null {
|
|
133
|
-
const
|
|
134
|
-
const match = line.match(pattern);
|
|
153
|
+
const match = line.match(STRUCTURED_CHECKBOX_PATTERN);
|
|
135
154
|
const marker = match?.[1];
|
|
136
155
|
const label = match?.[2];
|
|
137
156
|
if (marker === undefined || label === undefined) return null;
|
|
138
|
-
|
|
157
|
+
const labelPattern = section === "todo" ? TODO_TASK_LABEL_PATTERN : FINAL_WAVE_TASK_LABEL_PATTERN;
|
|
158
|
+
if (!labelPattern.test(label)) return null;
|
|
159
|
+
return { status: parseCheckboxStatus(marker), label };
|
|
139
160
|
}
|
|
140
161
|
|
|
141
162
|
function parseSimpleTopLevelCheckbox(line: string): ParsedCheckbox | null {
|
|
@@ -143,7 +164,12 @@ function parseSimpleTopLevelCheckbox(line: string): ParsedCheckbox | null {
|
|
|
143
164
|
const marker = match?.[1];
|
|
144
165
|
const label = match?.[2];
|
|
145
166
|
if (marker === undefined || label === undefined) return null;
|
|
146
|
-
return {
|
|
167
|
+
return { status: parseCheckboxStatus(marker), label };
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
function parseCheckboxStatus(marker: string): CheckboxStatus {
|
|
171
|
+
if (marker.toLowerCase() === "x") return "done";
|
|
172
|
+
return marker === "~" ? "in-progress" : "open";
|
|
147
173
|
}
|
|
148
174
|
|
|
149
175
|
function parseOpeningFence(line: string): MarkdownFence | null {
|
package/packages/omo-codex/plugin/components/ulw-execute-continuation/test/boulder-reader.test.ts
CHANGED
|
@@ -64,6 +64,57 @@ describe("ulw-execute plan checklist consumption", () => {
|
|
|
64
64
|
expect(checklist).toEqual({ completed: 1, remaining: 2, total: 3, nextTaskLabel: "1. Build hook" });
|
|
65
65
|
});
|
|
66
66
|
|
|
67
|
+
it("#given T, F and H task IDs and blocked rows #when parsed #then they count like the shared boulder-state parser", () => {
|
|
68
|
+
// given
|
|
69
|
+
const planPath = createPlan(
|
|
70
|
+
[
|
|
71
|
+
"## TODOs",
|
|
72
|
+
"- [x] T1.1 Completed implementation",
|
|
73
|
+
"- [~] T1.2 \u2014 Blocked on a user decision",
|
|
74
|
+
"- [ ] T6.3a Remaining implementation",
|
|
75
|
+
"## Final Verification Wave",
|
|
76
|
+
"- [ ] F1 \u2014 Plan compliance audit",
|
|
77
|
+
"- [x] H1 \u2014 User approval",
|
|
78
|
+
].join("\n"),
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
// when
|
|
82
|
+
const checklist = getPlanChecklist(planPath);
|
|
83
|
+
|
|
84
|
+
// then
|
|
85
|
+
expect(checklist).toEqual({
|
|
86
|
+
completed: 2,
|
|
87
|
+
remaining: 2,
|
|
88
|
+
total: 5,
|
|
89
|
+
nextTaskLabel: "T6.3a Remaining implementation",
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it("#given template-only counted sections and rows under another heading #when parsed #then top-level rows are counted", () => {
|
|
94
|
+
// given
|
|
95
|
+
const planPath = createPlan(
|
|
96
|
+
[
|
|
97
|
+
"## TODOs",
|
|
98
|
+
"Template task guidance.",
|
|
99
|
+
"## Progress Tracker",
|
|
100
|
+
"- [x] T1.1 \u2014 Schema",
|
|
101
|
+
"- [~] T5.1 \u2014 Verification engine \u2014 BLOCKED: user decision",
|
|
102
|
+
"- [ ] F5 \u2014 Delta verification",
|
|
103
|
+
].join("\n"),
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
// when
|
|
107
|
+
const checklist = getPlanChecklist(planPath);
|
|
108
|
+
|
|
109
|
+
// then
|
|
110
|
+
expect(checklist).toEqual({
|
|
111
|
+
completed: 1,
|
|
112
|
+
remaining: 1,
|
|
113
|
+
total: 3,
|
|
114
|
+
nextTaskLabel: "F5 \u2014 Delta verification",
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
|
|
67
118
|
it("#given all top-level tasks complete #when parsed #then next task is null", () => {
|
|
68
119
|
// given
|
|
69
120
|
const planPath = createPlan(
|
|
@@ -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
|
|
10
|
+
"statusMessage": "(OmO 5.1.0) Checking Ulw-Loop Steering"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"type": "command",
|
|
21
21
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use-spawn",
|
|
22
22
|
"timeout": 5,
|
|
23
|
-
"statusMessage": "(OmO 5.0
|
|
23
|
+
"statusMessage": "(OmO 5.1.0) Recording Spawn Admission"
|
|
24
24
|
}
|
|
25
25
|
]
|
|
26
26
|
}
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"type": "command",
|
|
34
34
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
|
|
35
35
|
"timeout": 5,
|
|
36
|
-
"statusMessage": "(OmO 5.0
|
|
36
|
+
"statusMessage": "(OmO 5.1.0) Enforcing Unlimited Ulw-Loop Budget"
|
|
37
37
|
}
|
|
38
38
|
]
|
|
39
39
|
},
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"type": "command",
|
|
45
45
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use-spawn",
|
|
46
46
|
"timeout": 5,
|
|
47
|
-
"statusMessage": "(OmO 5.0
|
|
47
|
+
"statusMessage": "(OmO 5.1.0) Guarding Ulw-Loop Spawns"
|
|
48
48
|
}
|
|
49
49
|
]
|
|
50
50
|
}
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"type": "command",
|
|
57
57
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook stop",
|
|
58
58
|
"timeout": 10,
|
|
59
|
-
"statusMessage": "(OmO 5.0
|
|
59
|
+
"statusMessage": "(OmO 5.1.0) Checking Ulw-Loop Resume"
|
|
60
60
|
}
|
|
61
61
|
]
|
|
62
62
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-ulw-loop",
|
|
3
|
-
"version": "5.0
|
|
3
|
+
"version": "5.1.0",
|
|
4
4
|
"description": "Codex plugin: durable repo-native multi-goal orchestration with embedded success criteria and observable evidence audit.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -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
|
|
10
|
+
"statusMessage": "(OmO 5.1.0) Resetting Git Bash MCP Reminder",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\git-bash\\dist\\cli.js\" hook post-compact"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/lsp/dist/cli.js\" hook post-compact",
|
|
9
9
|
"timeout": 5,
|
|
10
|
-
"statusMessage": "(OmO 5.0
|
|
10
|
+
"statusMessage": "(OmO 5.1.0) Resetting LSP Diagnostics Cache",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\lsp\\dist\\cli.js\" hook post-compact"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook post-compact",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0
|
|
10
|
+
"statusMessage": "(OmO 5.1.0) Resetting Project Rule Cache",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\rules\\dist\\cli.js\" hook post-compact"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/comment-checker/dist/cli.js\" hook post-tool-use",
|
|
9
9
|
"timeout": 30,
|
|
10
|
-
"statusMessage": "(OmO 5.0
|
|
10
|
+
"statusMessage": "(OmO 5.1.0) Checking Comments",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\comment-checker\\dist\\cli.js\" hook post-tool-use"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/lsp/dist/cli.js\" hook post-tool-use",
|
|
9
9
|
"timeout": 60,
|
|
10
|
-
"statusMessage": "(OmO 5.0
|
|
10
|
+
"statusMessage": "(OmO 5.1.0) Checking LSP Diagnostics",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\lsp\\dist\\cli.js\" hook post-tool-use"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/components/teammode/dist/cli.js\" hook post-tool-use",
|
|
10
10
|
"timeout": 10,
|
|
11
|
-
"statusMessage": "(OmO 5.0
|
|
11
|
+
"statusMessage": "(OmO 5.1.0) Checking Thread Title Hygiene",
|
|
12
12
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\teammode\\dist\\cli.js\" hook post-tool-use"
|
|
13
13
|
}
|
|
14
14
|
]
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook post-tool-use",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0
|
|
10
|
+
"statusMessage": "(OmO 5.1.0) Matching Project Rules",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\rules\\dist\\cli.js\" hook post-tool-use"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook post-tool-use-spawn",
|
|
10
10
|
"timeout": 5,
|
|
11
|
-
"statusMessage": "(OmO 5.0
|
|
11
|
+
"statusMessage": "(OmO 5.1.0) Recording Spawn Admission",
|
|
12
12
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook post-tool-use-spawn"
|
|
13
13
|
}
|
|
14
14
|
]
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook pre-tool-use",
|
|
9
9
|
"timeout": 5,
|
|
10
|
-
"statusMessage": "(OmO 5.0
|
|
10
|
+
"statusMessage": "(OmO 5.1.0) Enforcing Unlimited Goal Budget",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook pre-tool-use"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook pre-tool-use-spawn",
|
|
10
10
|
"timeout": 5,
|
|
11
|
-
"statusMessage": "(OmO 5.0
|
|
11
|
+
"statusMessage": "(OmO 5.1.0) Guarding Ulw-Loop Spawns",
|
|
12
12
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook pre-tool-use-spawn"
|
|
13
13
|
}
|
|
14
14
|
]
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/git-bash/dist/cli.js\" hook pre-tool-use",
|
|
9
9
|
"timeout": 5,
|
|
10
|
-
"statusMessage": "(OmO 5.0
|
|
10
|
+
"statusMessage": "(OmO 5.1.0) Recommending Git Bash MCP",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\git-bash\\dist\\cli.js\" hook pre-tool-use"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/scripts/auto-update.mjs\" hook session-start",
|
|
9
9
|
"timeout": 15,
|
|
10
|
-
"statusMessage": "(OmO 5.0
|
|
10
|
+
"statusMessage": "(OmO 5.1.0) Checking Auto Update",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\scripts\\auto-update.mjs\" hook session-start"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
|
|
9
9
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
|
|
10
10
|
"timeout": 30,
|
|
11
|
-
"statusMessage": "(OmO 5.0
|
|
11
|
+
"statusMessage": "(OmO 5.1.0) Checking Bootstrap Provisioning"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook session-start",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0
|
|
10
|
+
"statusMessage": "(OmO 5.1.0) Loading Project Rules",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\rules\\dist\\cli.js\" hook session-start"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/telemetry/dist/cli.js\" hook session-start",
|
|
9
9
|
"timeout": 15,
|
|
10
|
-
"statusMessage": "(OmO 5.0
|
|
10
|
+
"statusMessage": "(OmO 5.1.0) Recording Session Telemetry",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\telemetry\\dist\\cli.js\" hook session-start"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/ulw-execute-continuation/dist/cli.js\" hook stop",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0
|
|
10
|
+
"statusMessage": "(OmO 5.1.0) Checking Ulw-Execute Continuation",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-execute-continuation\\dist\\cli.js\" hook stop"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook stop",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0
|
|
10
|
+
"statusMessage": "(OmO 5.1.0) Checking Ulw-Loop Resume",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook stop"
|
|
12
12
|
}
|
|
13
13
|
]
|
package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/lazycodex-executor-verify/dist/cli.js\" hook subagent-stop",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0
|
|
10
|
+
"statusMessage": "(OmO 5.1.0) Verifying LazyCodex Executor Evidence",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\lazycodex-executor-verify\\dist\\cli.js\" hook subagent-stop"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/ultrawork/dist/cli.js\" hook user-prompt-submit",
|
|
9
9
|
"timeout": 5,
|
|
10
|
-
"statusMessage": "(OmO 5.0
|
|
10
|
+
"statusMessage": "(OmO 5.1.0) Checking Ultrawork Trigger",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ultrawork\\dist\\cli.js\" hook user-prompt-submit"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/ulw-loop/dist/cli.js\" hook user-prompt-submit",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0
|
|
10
|
+
"statusMessage": "(OmO 5.1.0) Checking Ulw-Loop Steering",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\ulw-loop\\dist\\cli.js\" hook user-prompt-submit"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/rules/dist/cli.js\" hook user-prompt-submit",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.0
|
|
10
|
+
"statusMessage": "(OmO 5.1.0) Loading Project Rules",
|
|
11
11
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\node-dispatch.ps1\" \"${PLUGIN_ROOT}\\components\\rules\\dist\\cli.js\" hook user-prompt-submit"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sisyphuslabs/omo-codex-plugin",
|
|
3
|
-
"version": "5.0
|
|
3
|
+
"version": "5.1.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@sisyphuslabs/omo-codex-plugin",
|
|
9
|
-
"version": "5.0
|
|
9
|
+
"version": "5.1.0",
|
|
10
10
|
"workspaces": [
|
|
11
11
|
"components/comment-checker",
|
|
12
12
|
"components/git-bash",
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
},
|
|
96
96
|
"components/comment-checker": {
|
|
97
97
|
"name": "@code-yeongyu/codex-comment-checker",
|
|
98
|
-
"version": "5.0
|
|
98
|
+
"version": "5.1.0",
|
|
99
99
|
"license": "MIT",
|
|
100
100
|
"bin": {
|
|
101
101
|
"omo-comment-checker": "dist/cli.js"
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
},
|
|
118
118
|
"components/git-bash": {
|
|
119
119
|
"name": "@sisyphuslabs/codex-git-bash-hook",
|
|
120
|
-
"version": "5.0
|
|
120
|
+
"version": "5.1.0",
|
|
121
121
|
"bin": {
|
|
122
122
|
"omo-git-bash-hook": "dist/cli.js"
|
|
123
123
|
},
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
},
|
|
132
132
|
"components/lazycodex-executor-verify": {
|
|
133
133
|
"name": "@code-yeongyu/codex-lazycodex-executor-verify",
|
|
134
|
-
"version": "5.0
|
|
134
|
+
"version": "5.1.0",
|
|
135
135
|
"license": "MIT",
|
|
136
136
|
"bin": {
|
|
137
137
|
"lazycodex-executor-verify": "dist/cli.js"
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
},
|
|
150
150
|
"components/lsp": {
|
|
151
151
|
"name": "@code-yeongyu/codex-lsp",
|
|
152
|
-
"version": "5.0
|
|
152
|
+
"version": "5.1.0",
|
|
153
153
|
"license": "MIT",
|
|
154
154
|
"dependencies": {
|
|
155
155
|
"@code-yeongyu/lsp-daemon": "file:../../../../lsp-daemon",
|
|
@@ -171,7 +171,7 @@
|
|
|
171
171
|
},
|
|
172
172
|
"components/rules": {
|
|
173
173
|
"name": "@code-yeongyu/codex-rules",
|
|
174
|
-
"version": "5.0
|
|
174
|
+
"version": "5.1.0",
|
|
175
175
|
"license": "MIT",
|
|
176
176
|
"dependencies": {
|
|
177
177
|
"picomatch": "^4.0.7"
|
|
@@ -194,7 +194,7 @@
|
|
|
194
194
|
},
|
|
195
195
|
"components/teammode": {
|
|
196
196
|
"name": "@sisyphuslabs/codex-teammode",
|
|
197
|
-
"version": "5.0
|
|
197
|
+
"version": "5.1.0",
|
|
198
198
|
"devDependencies": {
|
|
199
199
|
"@types/node": "^26.6.2",
|
|
200
200
|
"@vitest/coverage-v8": "5.0.1",
|
|
@@ -208,7 +208,7 @@
|
|
|
208
208
|
},
|
|
209
209
|
"components/telemetry": {
|
|
210
210
|
"name": "@code-yeongyu/codex-telemetry",
|
|
211
|
-
"version": "5.0
|
|
211
|
+
"version": "5.1.0",
|
|
212
212
|
"license": "MIT",
|
|
213
213
|
"bin": {
|
|
214
214
|
"omo-telemetry": "dist/cli.js"
|
|
@@ -227,7 +227,7 @@
|
|
|
227
227
|
},
|
|
228
228
|
"components/ultrawork": {
|
|
229
229
|
"name": "@code-yeongyu/codex-ultrawork",
|
|
230
|
-
"version": "5.0
|
|
230
|
+
"version": "5.1.0",
|
|
231
231
|
"license": "MIT",
|
|
232
232
|
"bin": {
|
|
233
233
|
"omo-ultrawork": "dist/cli.js"
|
|
@@ -246,7 +246,7 @@
|
|
|
246
246
|
},
|
|
247
247
|
"components/ulw-execute-continuation": {
|
|
248
248
|
"name": "@code-yeongyu/codex-ulw-execute-continuation",
|
|
249
|
-
"version": "5.0
|
|
249
|
+
"version": "5.1.0",
|
|
250
250
|
"license": "MIT",
|
|
251
251
|
"bin": {
|
|
252
252
|
"omo-ulw-execute-continuation": "dist/cli.js"
|
|
@@ -264,7 +264,7 @@
|
|
|
264
264
|
},
|
|
265
265
|
"components/ulw-loop": {
|
|
266
266
|
"name": "@code-yeongyu/codex-ulw-loop",
|
|
267
|
-
"version": "5.0
|
|
267
|
+
"version": "5.1.0",
|
|
268
268
|
"license": "MIT",
|
|
269
269
|
"bin": {
|
|
270
270
|
"omo-ulw-loop": "dist/cli.js",
|
|
@@ -66,7 +66,7 @@ The finder prints JSON for stdout and `jq`. Every result includes:
|
|
|
66
66
|
| `detail_hint` | Ready-to-run `read` command for detailed inspection |
|
|
67
67
|
| `match_reasons` | Search-only array explaining which field/content matched each query |
|
|
68
68
|
|
|
69
|
-
Each `match_reasons` entry includes `query`, `platform`, `field`, and `snippet`, so you can tell which platform matched and what content caused the hit without opening every transcript.
|
|
69
|
+
Each `match_reasons` entry includes `query`, `platform`, `field`, and `snippet`, so you can tell which platform matched and what content caused the hit without opening every transcript. `field` is `user_message` when the query matched a user prompt that the `first_user_message`/`last_user_message` previews do not cover, such as a prompt in the middle of the session.
|
|
70
70
|
|
|
71
71
|
## Filters
|
|
72
72
|
|
|
@@ -93,6 +93,7 @@ def _aside_session(path: Path, index: dict[str, _StateRow]) -> Session:
|
|
|
93
93
|
sid = _dir_session_id(path.parent.name)
|
|
94
94
|
row = index.get(sid)
|
|
95
95
|
first_user = last_user = ""
|
|
96
|
+
prompts: list[str] = []
|
|
96
97
|
provider = model = None
|
|
97
98
|
created = updated = None
|
|
98
99
|
usage: JsonMap = {}
|
|
@@ -107,6 +108,7 @@ def _aside_session(path: Path, index: dict[str, _StateRow]) -> Session:
|
|
|
107
108
|
if prompt:
|
|
108
109
|
first_user = first_user or prompt
|
|
109
110
|
last_user = prompt
|
|
111
|
+
prompts.append(prompt)
|
|
110
112
|
elif role == "assistant":
|
|
111
113
|
provider = provider or text(data.get("provider"))
|
|
112
114
|
model = model or text(data.get("model"))
|
|
@@ -125,6 +127,7 @@ def _aside_session(path: Path, index: dict[str, _StateRow]) -> Session:
|
|
|
125
127
|
row.parent_id if row is not None else None,
|
|
126
128
|
row.title if row is not None and row.parent_id is not None else None,
|
|
127
129
|
last_user,
|
|
130
|
+
tuple(prompts),
|
|
128
131
|
)
|
|
129
132
|
|
|
130
133
|
|