oh-my-openagent 5.0.0-beta.64 → 5.0.0-beta.65
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/dist/cli/index.js +21 -16
- package/dist/cli-node/index.js +21 -16
- package/dist/hooks/plan-format-validator/hook.d.ts +19 -0
- package/dist/index.js +120 -32
- package/dist/skills/ulw-plan/references/full-workflow.md +1 -0
- package/dist/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -0
- package/dist/tui.js +7 -2
- package/package.json +13 -13
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +6 -1
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +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/ultrawork/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -0
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -0
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +8 -3
- package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +1 -0
- package/packages/shared-skills/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -0
package/dist/cli/index.js
CHANGED
|
@@ -64,7 +64,7 @@ var package_default;
|
|
|
64
64
|
var init_package = __esm(() => {
|
|
65
65
|
package_default = {
|
|
66
66
|
name: "oh-my-opencode",
|
|
67
|
-
version: "5.0.0-beta.
|
|
67
|
+
version: "5.0.0-beta.65",
|
|
68
68
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
69
69
|
main: "./dist/index.js",
|
|
70
70
|
types: "dist/index.d.ts",
|
|
@@ -285,18 +285,18 @@ var init_package = __esm(() => {
|
|
|
285
285
|
typescript: "^7.0.2"
|
|
286
286
|
},
|
|
287
287
|
optionalDependencies: {
|
|
288
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
289
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
290
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
291
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
292
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
293
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
294
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
295
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
296
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
297
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
298
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
299
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
288
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.65",
|
|
289
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.65",
|
|
290
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.65",
|
|
291
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.65",
|
|
292
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.65",
|
|
293
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.65",
|
|
294
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.65",
|
|
295
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.65",
|
|
296
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.65",
|
|
297
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.65",
|
|
298
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.65",
|
|
299
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.65"
|
|
300
300
|
},
|
|
301
301
|
overrides: {
|
|
302
302
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -73073,7 +73073,7 @@ var init_format_on_mutation = __esm(() => {
|
|
|
73073
73073
|
});
|
|
73074
73074
|
|
|
73075
73075
|
// packages/omo-config-core/src/schema/config.ts
|
|
73076
|
-
var OmoOpenCodeHarnessConfigSchema, OmoTypedHarnessConfigSchema, OmoConfigProfileSchema, OmoConfigSchema, OmoConfigLayerSchema;
|
|
73076
|
+
var OmoOpenCodeHarnessConfigSchema, OmoDisabledSkillsSchema, OmoTypedHarnessConfigSchema, OmoConfigProfileSchema, OmoConfigSchema, OmoConfigLayerSchema;
|
|
73077
73077
|
var init_config = __esm(() => {
|
|
73078
73078
|
init_zod();
|
|
73079
73079
|
init_agent();
|
|
@@ -73087,6 +73087,7 @@ var init_config = __esm(() => {
|
|
|
73087
73087
|
init_telemetry();
|
|
73088
73088
|
init_format_on_mutation();
|
|
73089
73089
|
OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
|
|
73090
|
+
OmoDisabledSkillsSchema = array(string2());
|
|
73090
73091
|
OmoTypedHarnessConfigSchema = object({
|
|
73091
73092
|
formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
|
|
73092
73093
|
categories: OmoCategoriesConfigSchema.optional(),
|
|
@@ -73098,7 +73099,8 @@ var init_config = __esm(() => {
|
|
|
73098
73099
|
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
73099
73100
|
model_profile: string2().optional(),
|
|
73100
73101
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
73101
|
-
telemetry: OmoTelemetrySettingsLayerSchema.optional()
|
|
73102
|
+
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
73103
|
+
disabled_skills: OmoDisabledSkillsSchema.optional()
|
|
73102
73104
|
}).strict();
|
|
73103
73105
|
OmoConfigProfileSchema = object({
|
|
73104
73106
|
formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
|
|
@@ -73112,6 +73114,7 @@ var init_config = __esm(() => {
|
|
|
73112
73114
|
model_profile: string2().optional(),
|
|
73113
73115
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
73114
73116
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
73117
|
+
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
73115
73118
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
73116
73119
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
73117
73120
|
"[codex]": OmoTypedHarnessConfigSchema.optional()
|
|
@@ -73129,6 +73132,7 @@ var init_config = __esm(() => {
|
|
|
73129
73132
|
model_profile: string2().optional(),
|
|
73130
73133
|
memory: OmoMemorySettingsSchema.optional(),
|
|
73131
73134
|
telemetry: OmoTelemetrySettingsSchema.optional(),
|
|
73135
|
+
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
73132
73136
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
73133
73137
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
73134
73138
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
@@ -73149,6 +73153,7 @@ var init_config = __esm(() => {
|
|
|
73149
73153
|
model_profile: string2().optional(),
|
|
73150
73154
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
73151
73155
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
73156
|
+
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
73152
73157
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
73153
73158
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
73154
73159
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
@@ -84542,7 +84547,7 @@ var package_default2;
|
|
|
84542
84547
|
var init_package2 = __esm(() => {
|
|
84543
84548
|
package_default2 = {
|
|
84544
84549
|
name: "@oh-my-opencode/omo-codex",
|
|
84545
|
-
version: "5.0.0-beta.
|
|
84550
|
+
version: "5.0.0-beta.65",
|
|
84546
84551
|
type: "module",
|
|
84547
84552
|
private: true,
|
|
84548
84553
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
package/dist/cli-node/index.js
CHANGED
|
@@ -65,7 +65,7 @@ var package_default;
|
|
|
65
65
|
var init_package = __esm(() => {
|
|
66
66
|
package_default = {
|
|
67
67
|
name: "oh-my-opencode",
|
|
68
|
-
version: "5.0.0-beta.
|
|
68
|
+
version: "5.0.0-beta.65",
|
|
69
69
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
70
70
|
main: "./dist/index.js",
|
|
71
71
|
types: "dist/index.d.ts",
|
|
@@ -286,18 +286,18 @@ var init_package = __esm(() => {
|
|
|
286
286
|
typescript: "^7.0.2"
|
|
287
287
|
},
|
|
288
288
|
optionalDependencies: {
|
|
289
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
290
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
291
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
292
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
293
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
294
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
295
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
296
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
297
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
298
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
299
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
300
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
289
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.65",
|
|
290
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.65",
|
|
291
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.65",
|
|
292
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.65",
|
|
293
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.65",
|
|
294
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.65",
|
|
295
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.65",
|
|
296
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.65",
|
|
297
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.65",
|
|
298
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.65",
|
|
299
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.65",
|
|
300
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.65"
|
|
301
301
|
},
|
|
302
302
|
overrides: {
|
|
303
303
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -73152,7 +73152,7 @@ var init_format_on_mutation = __esm(() => {
|
|
|
73152
73152
|
});
|
|
73153
73153
|
|
|
73154
73154
|
// packages/omo-config-core/src/schema/config.ts
|
|
73155
|
-
var OmoOpenCodeHarnessConfigSchema, OmoTypedHarnessConfigSchema, OmoConfigProfileSchema, OmoConfigSchema, OmoConfigLayerSchema;
|
|
73155
|
+
var OmoOpenCodeHarnessConfigSchema, OmoDisabledSkillsSchema, OmoTypedHarnessConfigSchema, OmoConfigProfileSchema, OmoConfigSchema, OmoConfigLayerSchema;
|
|
73156
73156
|
var init_config = __esm(() => {
|
|
73157
73157
|
init_zod();
|
|
73158
73158
|
init_agent();
|
|
@@ -73166,6 +73166,7 @@ var init_config = __esm(() => {
|
|
|
73166
73166
|
init_telemetry();
|
|
73167
73167
|
init_format_on_mutation();
|
|
73168
73168
|
OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
|
|
73169
|
+
OmoDisabledSkillsSchema = array(string2());
|
|
73169
73170
|
OmoTypedHarnessConfigSchema = object({
|
|
73170
73171
|
formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
|
|
73171
73172
|
categories: OmoCategoriesConfigSchema.optional(),
|
|
@@ -73177,7 +73178,8 @@ var init_config = __esm(() => {
|
|
|
73177
73178
|
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
73178
73179
|
model_profile: string2().optional(),
|
|
73179
73180
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
73180
|
-
telemetry: OmoTelemetrySettingsLayerSchema.optional()
|
|
73181
|
+
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
73182
|
+
disabled_skills: OmoDisabledSkillsSchema.optional()
|
|
73181
73183
|
}).strict();
|
|
73182
73184
|
OmoConfigProfileSchema = object({
|
|
73183
73185
|
formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
|
|
@@ -73191,6 +73193,7 @@ var init_config = __esm(() => {
|
|
|
73191
73193
|
model_profile: string2().optional(),
|
|
73192
73194
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
73193
73195
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
73196
|
+
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
73194
73197
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
73195
73198
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
73196
73199
|
"[codex]": OmoTypedHarnessConfigSchema.optional()
|
|
@@ -73208,6 +73211,7 @@ var init_config = __esm(() => {
|
|
|
73208
73211
|
model_profile: string2().optional(),
|
|
73209
73212
|
memory: OmoMemorySettingsSchema.optional(),
|
|
73210
73213
|
telemetry: OmoTelemetrySettingsSchema.optional(),
|
|
73214
|
+
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
73211
73215
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
73212
73216
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
73213
73217
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
@@ -73228,6 +73232,7 @@ var init_config = __esm(() => {
|
|
|
73228
73232
|
model_profile: string2().optional(),
|
|
73229
73233
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
73230
73234
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
73235
|
+
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
73231
73236
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
73232
73237
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
73233
73238
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
@@ -84621,7 +84626,7 @@ var package_default2;
|
|
|
84621
84626
|
var init_package2 = __esm(() => {
|
|
84622
84627
|
package_default2 = {
|
|
84623
84628
|
name: "@oh-my-opencode/omo-codex",
|
|
84624
|
-
version: "5.0.0-beta.
|
|
84629
|
+
version: "5.0.0-beta.65",
|
|
84625
84630
|
type: "module",
|
|
84626
84631
|
private: true,
|
|
84627
84632
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -1,4 +1,22 @@
|
|
|
1
1
|
import type { PluginInput } from "@opencode-ai/plugin";
|
|
2
|
+
/**
|
|
3
|
+
* The five Effort bands the plan template offers. Effort is a size signal, never a wall-clock
|
|
4
|
+
* estimate: a plan that says "200 hours" is model prose, not a measurement.
|
|
5
|
+
*/
|
|
6
|
+
export declare const PLAN_EFFORT_BANDS: readonly ["Quick", "Short", "Medium", "Large", "XL"];
|
|
7
|
+
export type PlanEffortBand = (typeof PLAN_EFFORT_BANDS)[number];
|
|
8
|
+
/** Maps a written duration ("200 hours", "3 days", "2-3 weeks") to the band that bounds it. */
|
|
9
|
+
export declare function effortBandForDuration(value: string): PlanEffortBand | null;
|
|
10
|
+
type EffortNormalization = {
|
|
11
|
+
readonly content: string;
|
|
12
|
+
readonly original: string;
|
|
13
|
+
readonly band: PlanEffortBand;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Rewrites an `**Effort:**` value that carries a duration to the bounding band. Band values,
|
|
17
|
+
* localized labels, and anything without a number+unit are left alone.
|
|
18
|
+
*/
|
|
19
|
+
export declare function normalizePlanEffort(content: string): EffortNormalization | null;
|
|
2
20
|
/**
|
|
3
21
|
* Programmatic plan format validator.
|
|
4
22
|
*
|
|
@@ -19,3 +37,4 @@ export declare function createPlanFormatValidatorHook(_ctx: PluginInput): {
|
|
|
19
37
|
metadata: unknown;
|
|
20
38
|
}) => Promise<void>;
|
|
21
39
|
};
|
|
40
|
+
export {};
|
package/dist/index.js
CHANGED
|
@@ -23114,6 +23114,7 @@ var OmoFormatOnMutationSchema = OmoFormatOnMutationLayerSchema.extend({
|
|
|
23114
23114
|
|
|
23115
23115
|
// packages/omo-config-core/src/schema/config.ts
|
|
23116
23116
|
var OmoOpenCodeHarnessConfigSchema = z14.record(z14.string(), z14.unknown());
|
|
23117
|
+
var OmoDisabledSkillsSchema = z14.array(z14.string());
|
|
23117
23118
|
var OmoTypedHarnessConfigSchema = z14.object({
|
|
23118
23119
|
formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
|
|
23119
23120
|
categories: OmoCategoriesConfigSchema.optional(),
|
|
@@ -23125,7 +23126,8 @@ var OmoTypedHarnessConfigSchema = z14.object({
|
|
|
23125
23126
|
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
23126
23127
|
model_profile: z14.string().optional(),
|
|
23127
23128
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
23128
|
-
telemetry: OmoTelemetrySettingsLayerSchema.optional()
|
|
23129
|
+
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
23130
|
+
disabled_skills: OmoDisabledSkillsSchema.optional()
|
|
23129
23131
|
}).strict();
|
|
23130
23132
|
var OmoConfigProfileSchema = z14.object({
|
|
23131
23133
|
formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
|
|
@@ -23139,6 +23141,7 @@ var OmoConfigProfileSchema = z14.object({
|
|
|
23139
23141
|
model_profile: z14.string().optional(),
|
|
23140
23142
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
23141
23143
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
23144
|
+
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
23142
23145
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
23143
23146
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
23144
23147
|
"[codex]": OmoTypedHarnessConfigSchema.optional()
|
|
@@ -23156,6 +23159,7 @@ var OmoConfigSchema = z14.object({
|
|
|
23156
23159
|
model_profile: z14.string().optional(),
|
|
23157
23160
|
memory: OmoMemorySettingsSchema.optional(),
|
|
23158
23161
|
telemetry: OmoTelemetrySettingsSchema.optional(),
|
|
23162
|
+
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
23159
23163
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
23160
23164
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
23161
23165
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
@@ -23176,6 +23180,7 @@ var OmoConfigLayerSchema = z14.object({
|
|
|
23176
23180
|
model_profile: z14.string().optional(),
|
|
23177
23181
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
23178
23182
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
23183
|
+
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
23179
23184
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
23180
23185
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
23181
23186
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
@@ -96510,7 +96515,7 @@ function getCachedVersion(options = {}) {
|
|
|
96510
96515
|
// package.json
|
|
96511
96516
|
var package_default = {
|
|
96512
96517
|
name: "oh-my-opencode",
|
|
96513
|
-
version: "5.0.0-beta.
|
|
96518
|
+
version: "5.0.0-beta.65",
|
|
96514
96519
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
96515
96520
|
main: "./dist/index.js",
|
|
96516
96521
|
types: "dist/index.d.ts",
|
|
@@ -96731,18 +96736,18 @@ var package_default = {
|
|
|
96731
96736
|
typescript: "^7.0.2"
|
|
96732
96737
|
},
|
|
96733
96738
|
optionalDependencies: {
|
|
96734
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
96735
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
96736
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
96737
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
96738
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
96739
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
96740
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
96741
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
96742
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
96743
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
96744
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
96745
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
96739
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.65",
|
|
96740
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.65",
|
|
96741
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.65",
|
|
96742
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.65",
|
|
96743
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.65",
|
|
96744
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.65",
|
|
96745
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.65",
|
|
96746
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.65",
|
|
96747
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.65",
|
|
96748
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.65",
|
|
96749
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.65",
|
|
96750
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.65"
|
|
96746
96751
|
},
|
|
96747
96752
|
overrides: {
|
|
96748
96753
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -122090,7 +122095,7 @@ function createNotepadWriteGuardHook() {
|
|
|
122090
122095
|
};
|
|
122091
122096
|
}
|
|
122092
122097
|
// packages/omo-opencode/src/hooks/plan-format-validator/hook.ts
|
|
122093
|
-
import { existsSync as existsSync83, readFileSync as readFileSync56 } from "fs";
|
|
122098
|
+
import { existsSync as existsSync83, readFileSync as readFileSync56, writeFileSync as writeFileSync21 } from "fs";
|
|
122094
122099
|
import { resolve as resolve24 } from "path";
|
|
122095
122100
|
init_logger2();
|
|
122096
122101
|
var WRITE_TOOLS = new Set(["Write", "Edit", "write", "edit"]);
|
|
@@ -122101,6 +122106,79 @@ var TOPLEVEL_CHECKBOX = /^[-*]\s*\[[ xX]?\]/;
|
|
|
122101
122106
|
var TODO_TASK = /^- \[[ xX]\] [1-9]\d*\. .+$/;
|
|
122102
122107
|
var FINAL_WAVE_TASK = /^- \[[ xX]\] F[1-9]\d*\. .+$/i;
|
|
122103
122108
|
var FENCE_PATTERN2 = /^[ \t]{0,3}(`{3,}|~{3,})(.*)$/;
|
|
122109
|
+
var EFFORT_LINE = /^(\*\*Effort:\*\*[ \t]*)(.*)$/;
|
|
122110
|
+
var DURATION_VALUE = /(\d+(?:[.,]\d+)?)\s*(?:-|\u2013|to)?\s*(\d+(?:[.,]\d+)?)?\s*(min(?:ute)?s?|h(?:ou)?rs?|d(?:ay)?s?|w(?:ee)?ks?|mo(?:nth)?s?)\b/i;
|
|
122111
|
+
var HOURS_PER_UNIT = {
|
|
122112
|
+
min: 1 / 60,
|
|
122113
|
+
h: 1,
|
|
122114
|
+
d: 8,
|
|
122115
|
+
w: 40,
|
|
122116
|
+
mo: 160
|
|
122117
|
+
};
|
|
122118
|
+
var BAND_UPPER_BOUND_HOURS = [
|
|
122119
|
+
["Quick", 1],
|
|
122120
|
+
["Short", 4],
|
|
122121
|
+
["Medium", 16],
|
|
122122
|
+
["Large", 40]
|
|
122123
|
+
];
|
|
122124
|
+
function unitKey(unit) {
|
|
122125
|
+
const lower = unit.toLowerCase();
|
|
122126
|
+
if (lower.startsWith("mi"))
|
|
122127
|
+
return "min";
|
|
122128
|
+
if (lower.startsWith("mo"))
|
|
122129
|
+
return "mo";
|
|
122130
|
+
return lower.charAt(0);
|
|
122131
|
+
}
|
|
122132
|
+
function effortBandForDuration(value) {
|
|
122133
|
+
const match = value.match(DURATION_VALUE);
|
|
122134
|
+
if (match === null)
|
|
122135
|
+
return null;
|
|
122136
|
+
const upper = (match[2] ?? match[1] ?? "").replace(",", ".");
|
|
122137
|
+
const unit = match[3] ?? "";
|
|
122138
|
+
const hours = Number.parseFloat(upper) * (HOURS_PER_UNIT[unitKey(unit)] ?? 1);
|
|
122139
|
+
if (!Number.isFinite(hours))
|
|
122140
|
+
return null;
|
|
122141
|
+
for (const [band, bound] of BAND_UPPER_BOUND_HOURS) {
|
|
122142
|
+
if (hours <= bound)
|
|
122143
|
+
return band;
|
|
122144
|
+
}
|
|
122145
|
+
return "XL";
|
|
122146
|
+
}
|
|
122147
|
+
function normalizePlanEffort(content) {
|
|
122148
|
+
const lines = content.split(/\r?\n/);
|
|
122149
|
+
for (let index = 0;index < lines.length; index += 1) {
|
|
122150
|
+
const line = lines[index] ?? "";
|
|
122151
|
+
const match = line.match(EFFORT_LINE);
|
|
122152
|
+
if (match === null)
|
|
122153
|
+
continue;
|
|
122154
|
+
const prefix = match[1] ?? "";
|
|
122155
|
+
const value = (match[2] ?? "").trim();
|
|
122156
|
+
const band = effortBandForDuration(value);
|
|
122157
|
+
if (band === null)
|
|
122158
|
+
return null;
|
|
122159
|
+
lines[index] = `${prefix}${band}`;
|
|
122160
|
+
const newline = content.includes(`\r
|
|
122161
|
+
`) ? `\r
|
|
122162
|
+
` : `
|
|
122163
|
+
`;
|
|
122164
|
+
return { content: lines.join(newline), original: value, band };
|
|
122165
|
+
}
|
|
122166
|
+
return null;
|
|
122167
|
+
}
|
|
122168
|
+
function buildEffortWarning(normalized) {
|
|
122169
|
+
return [
|
|
122170
|
+
"",
|
|
122171
|
+
"<plan-format-warning>",
|
|
122172
|
+
`Effort was written as a duration (\`${normalized.original}\`) and has been replaced with the band \`${normalized.band}\`.`,
|
|
122173
|
+
"Effort is a size band, never a wall-clock estimate. Use exactly one of:",
|
|
122174
|
+
" Quick (single edit, minutes of agent work) | Short (one focused change, a few files)",
|
|
122175
|
+
" | Medium (multi-file feature in one session) | Large (several waves, one long session)",
|
|
122176
|
+
" | XL (multi-session or architectural work).",
|
|
122177
|
+
"Size is communicated by the counted todo rows; do not write hours or days.",
|
|
122178
|
+
"</plan-format-warning>"
|
|
122179
|
+
].join(`
|
|
122180
|
+
`);
|
|
122181
|
+
}
|
|
122104
122182
|
function analyzeStructuredSections(content) {
|
|
122105
122183
|
const lines = content.split(/\r?\n/);
|
|
122106
122184
|
const sections = [];
|
|
@@ -122217,7 +122295,17 @@ function createPlanFormatValidatorHook(_ctx) {
|
|
|
122217
122295
|
const resolvedPath = resolve24(_ctx.directory, filePath);
|
|
122218
122296
|
if (!existsSync83(resolvedPath))
|
|
122219
122297
|
return;
|
|
122220
|
-
|
|
122298
|
+
let content = readFileSync56(resolvedPath, "utf-8");
|
|
122299
|
+
const effort = normalizePlanEffort(content);
|
|
122300
|
+
if (effort !== null) {
|
|
122301
|
+
content = effort.content;
|
|
122302
|
+
writeFileSync21(resolvedPath, content, "utf-8");
|
|
122303
|
+
log2(`[plan-format-validator] Plan ${filePath}: Effort "${effort.original}" normalized to ${effort.band}`, {
|
|
122304
|
+
sessionID: input.sessionID,
|
|
122305
|
+
filePath
|
|
122306
|
+
});
|
|
122307
|
+
output.output = `${output.output}${buildEffortWarning(effort)}`;
|
|
122308
|
+
}
|
|
122221
122309
|
const formatStats = analyzeStructuredSections(content);
|
|
122222
122310
|
if (!formatStats.recognized)
|
|
122223
122311
|
return;
|
|
@@ -127044,7 +127132,7 @@ import { pathToFileURL } from "url";
|
|
|
127044
127132
|
|
|
127045
127133
|
// packages/omo-opencode/src/tools/look-at/image-converter.ts
|
|
127046
127134
|
import * as childProcess2 from "child_process";
|
|
127047
|
-
import { existsSync as existsSync93, mkdtempSync, readFileSync as readFileSync60, rmSync as rmSync5, unlinkSync as unlinkSync15, writeFileSync as
|
|
127135
|
+
import { existsSync as existsSync93, mkdtempSync, readFileSync as readFileSync60, rmSync as rmSync5, unlinkSync as unlinkSync15, writeFileSync as writeFileSync22 } from "fs";
|
|
127048
127136
|
import { tmpdir as tmpdir7 } from "os";
|
|
127049
127137
|
import { dirname as dirname41, join as join112 } from "path";
|
|
127050
127138
|
var SUPPORTED_FORMATS = new Set([
|
|
@@ -127169,7 +127257,7 @@ function convertBase64ImageToJpeg(base64Data, mimeType) {
|
|
|
127169
127257
|
try {
|
|
127170
127258
|
const cleanBase64 = base64Data.replace(/^data:[^;]+;base64,/, "");
|
|
127171
127259
|
const buffer = Buffer.from(cleanBase64, "base64");
|
|
127172
|
-
|
|
127260
|
+
writeFileSync22(inputPath, buffer);
|
|
127173
127261
|
log2(`[image-converter] Converting Base64 ${mimeType} to JPEG`);
|
|
127174
127262
|
const outputPath = convertImageToJpeg(inputPath, mimeType);
|
|
127175
127263
|
tempFiles.push(outputPath);
|
|
@@ -131490,7 +131578,7 @@ var TaskDeleteInputSchema = z54.object({
|
|
|
131490
131578
|
|
|
131491
131579
|
// packages/omo-opencode/src/features/claude-tasks/storage.ts
|
|
131492
131580
|
import { join as join113, dirname as dirname42, basename as basename18, isAbsolute as isAbsolute17 } from "path";
|
|
131493
|
-
import { existsSync as existsSync94, mkdirSync as mkdirSync20, readFileSync as readFileSync62, writeFileSync as
|
|
131581
|
+
import { existsSync as existsSync94, mkdirSync as mkdirSync20, readFileSync as readFileSync62, writeFileSync as writeFileSync23, renameSync as renameSync8, unlinkSync as unlinkSync16, readdirSync as readdirSync25 } from "fs";
|
|
131494
131582
|
import { randomUUID as randomUUID9 } from "crypto";
|
|
131495
131583
|
function ignoreClaudeTaskStorageError(error) {
|
|
131496
131584
|
if (error instanceof Error)
|
|
@@ -131549,7 +131637,7 @@ function writeJsonAtomic(filePath, data) {
|
|
|
131549
131637
|
ensureDir(dir);
|
|
131550
131638
|
const tempPath = `${filePath}.tmp.${Date.now()}`;
|
|
131551
131639
|
try {
|
|
131552
|
-
|
|
131640
|
+
writeFileSync23(tempPath, JSON.stringify(data, null, 2), "utf-8");
|
|
131553
131641
|
renameSync8(tempPath, filePath);
|
|
131554
131642
|
} catch (error) {
|
|
131555
131643
|
try {
|
|
@@ -131589,7 +131677,7 @@ async function acquireLock2(dirPath, options = {}) {
|
|
|
131589
131677
|
const waitTimeoutMs = options.waitTimeoutMs ?? resolveLockWaitTimeoutMs();
|
|
131590
131678
|
const baseRetryDelayMs = options.retryDelayMs ?? DEFAULT_LOCK_RETRY_DELAY_MS;
|
|
131591
131679
|
const createLock = (timestamp) => {
|
|
131592
|
-
|
|
131680
|
+
writeFileSync23(lockPath, JSON.stringify({ id: lockId, timestamp }), {
|
|
131593
131681
|
encoding: "utf-8",
|
|
131594
131682
|
flag: "wx"
|
|
131595
131683
|
});
|
|
@@ -140758,7 +140846,7 @@ import {
|
|
|
140758
140846
|
readFileSync as readFileSync65,
|
|
140759
140847
|
renameSync as renameSync10,
|
|
140760
140848
|
unlinkSync as unlinkSync17,
|
|
140761
|
-
writeFileSync as
|
|
140849
|
+
writeFileSync as writeFileSync25
|
|
140762
140850
|
} from "fs";
|
|
140763
140851
|
import { basename as basename19, dirname as dirname43, join as join122 } from "path";
|
|
140764
140852
|
|
|
@@ -140788,7 +140876,7 @@ function getOpenCodeCliConfigDir(env = process.env) {
|
|
|
140788
140876
|
}
|
|
140789
140877
|
|
|
140790
140878
|
// packages/mcp-client-core/src/mcp-oauth/storage-index.ts
|
|
140791
|
-
import { chmodSync as chmodSync3, existsSync as existsSync97, readFileSync as readFileSync64, renameSync as renameSync9, writeFileSync as
|
|
140879
|
+
import { chmodSync as chmodSync3, existsSync as existsSync97, readFileSync as readFileSync64, renameSync as renameSync9, writeFileSync as writeFileSync24 } from "fs";
|
|
140792
140880
|
import { join as join121 } from "path";
|
|
140793
140881
|
var INDEX_FILE_NAME = "index.json";
|
|
140794
140882
|
function isTokenIndex(value) {
|
|
@@ -140816,7 +140904,7 @@ function writeTokenIndex(storageDir, index) {
|
|
|
140816
140904
|
try {
|
|
140817
140905
|
const indexPath = getIndexPath(storageDir);
|
|
140818
140906
|
const tempPath = `${indexPath}.tmp.${Date.now()}`;
|
|
140819
|
-
|
|
140907
|
+
writeFileSync24(tempPath, JSON.stringify(index, null, 2), { encoding: "utf-8", mode: 384 });
|
|
140820
140908
|
chmodSync3(tempPath, 384);
|
|
140821
140909
|
renameSync9(tempPath, indexPath);
|
|
140822
140910
|
return true;
|
|
@@ -140942,7 +141030,7 @@ function writeTokenFile(filePath, token) {
|
|
|
140942
141030
|
mkdirSync21(dir, { recursive: true });
|
|
140943
141031
|
}
|
|
140944
141032
|
const tempPath = `${filePath}.tmp.${Date.now()}`;
|
|
140945
|
-
|
|
141033
|
+
writeFileSync25(tempPath, JSON.stringify(token, null, 2), { encoding: "utf-8", mode: 384 });
|
|
140946
141034
|
chmodSync4(tempPath, 384);
|
|
140947
141035
|
renameSync10(tempPath, filePath);
|
|
140948
141036
|
return true;
|
|
@@ -149334,7 +149422,7 @@ import {
|
|
|
149334
149422
|
renameSync as renameSync11,
|
|
149335
149423
|
statSync as statSync14,
|
|
149336
149424
|
unlinkSync as unlinkSync18,
|
|
149337
|
-
writeFileSync as
|
|
149425
|
+
writeFileSync as writeFileSync26
|
|
149338
149426
|
} from "fs";
|
|
149339
149427
|
|
|
149340
149428
|
// packages/openclaw-core/src/reply-listener-paths.ts
|
|
@@ -149376,7 +149464,7 @@ function ignoreReplyListenerLogError(error) {
|
|
|
149376
149464
|
}
|
|
149377
149465
|
function writeSecureReplyListenerFile(filePath, content) {
|
|
149378
149466
|
ensureReplyListenerStateDir();
|
|
149379
|
-
|
|
149467
|
+
writeFileSync26(filePath, content, { mode: REPLY_LISTENER_SECURE_FILE_MODE });
|
|
149380
149468
|
try {
|
|
149381
149469
|
chmodSync5(filePath, REPLY_LISTENER_SECURE_FILE_MODE);
|
|
149382
149470
|
} catch (error) {
|
|
@@ -149452,7 +149540,7 @@ import { constants as constants23, closeSync as closeSync4, existsSync as exists
|
|
|
149452
149540
|
import { randomUUID as randomUUID12 } from "crypto";
|
|
149453
149541
|
|
|
149454
149542
|
// packages/openclaw-core/src/session-registry-storage.ts
|
|
149455
|
-
import { existsSync as existsSync101, mkdirSync as mkdirSync24, readFileSync as readFileSync68, writeFileSync as
|
|
149543
|
+
import { existsSync as existsSync101, mkdirSync as mkdirSync24, readFileSync as readFileSync68, writeFileSync as writeFileSync27 } from "fs";
|
|
149456
149544
|
import { dirname as dirname45 } from "path";
|
|
149457
149545
|
function isSessionMapping(value) {
|
|
149458
149546
|
if (typeof value !== "object" || value === null)
|
|
@@ -149506,13 +149594,13 @@ function rewriteRegistryUnsafe(mappings) {
|
|
|
149506
149594
|
ensureRegistryDir();
|
|
149507
149595
|
const registryPath = getRegistryPath();
|
|
149508
149596
|
if (mappings.length === 0) {
|
|
149509
|
-
|
|
149597
|
+
writeFileSync27(registryPath, "", { mode: SECURE_FILE_MODE });
|
|
149510
149598
|
return;
|
|
149511
149599
|
}
|
|
149512
149600
|
const content = mappings.map((mapping) => JSON.stringify(mapping)).join(`
|
|
149513
149601
|
`) + `
|
|
149514
149602
|
`;
|
|
149515
|
-
|
|
149603
|
+
writeFileSync27(registryPath, content, { mode: SECURE_FILE_MODE });
|
|
149516
149604
|
}
|
|
149517
149605
|
|
|
149518
149606
|
// packages/openclaw-core/src/session-registry-lock.ts
|
|
@@ -174155,7 +174243,7 @@ var OMO_CODEX_PLUGIN_CACHE_PUBLISHERS = new Set(["sisyphuslabs"]);
|
|
|
174155
174243
|
import { join as join135 } from "path";
|
|
174156
174244
|
|
|
174157
174245
|
// packages/utils/src/process-sweep/family-sweeper.ts
|
|
174158
|
-
import { existsSync as existsSync109, mkdirSync as mkdirSync25, statSync as statSync16, utimesSync, writeFileSync as
|
|
174246
|
+
import { existsSync as existsSync109, mkdirSync as mkdirSync25, statSync as statSync16, utimesSync, writeFileSync as writeFileSync28 } from "fs";
|
|
174159
174247
|
import { dirname as dirname48 } from "path";
|
|
174160
174248
|
var DEFAULT_GRACE_MS = 2000;
|
|
174161
174249
|
var DEFAULT_THROTTLE_MS = 60 * 60 * 1000;
|
|
@@ -174253,7 +174341,7 @@ function isSweepThrottled(stampFile, nowMs, throttleMs) {
|
|
|
174253
174341
|
}
|
|
174254
174342
|
function writeSweepStamp(stampFile, nowMs) {
|
|
174255
174343
|
mkdirSync25(dirname48(stampFile), { recursive: true });
|
|
174256
|
-
|
|
174344
|
+
writeFileSync28(stampFile, `${new Date(nowMs).toISOString()}
|
|
174257
174345
|
`);
|
|
174258
174346
|
const stampDate = new Date(nowMs);
|
|
174259
174347
|
utimesSync(stampFile, stampDate, stampDate);
|
|
@@ -146,6 +146,7 @@ No Metis, no plan file, no execution until the user approves. The UNCLEAR path a
|
|
|
146
146
|
# <slug> - Work Plan
|
|
147
147
|
## TL;DR (For humans)
|
|
148
148
|
(What you'll get / Why this approach / What it will NOT do / Effort / Risk / Decisions)
|
|
149
|
+
> Effort is exactly one band - Quick (single edit, minutes of agent work), Short (one focused change, a few files), Medium (multi-file feature in one session), Large (several waves, one long session), XL (multi-session or architectural work). NEVER write hours or days: the counted todo rows are the size signal, and a written duration is rewritten to a band before the user sees the plan.
|
|
149
150
|
## Scope
|
|
150
151
|
## Verification strategy
|
|
151
152
|
## Execution strategy
|
|
@@ -238,6 +238,7 @@ export function buildPlanSkeleton(slug, intent) {
|
|
|
238
238
|
**What it will NOT do:** <fill last - 1-3 plain lines mirroring Must NOT have>
|
|
239
239
|
|
|
240
240
|
**Effort:** <Quick | Short | Medium | Large | XL>
|
|
241
|
+
<!-- Effort is exactly ONE band, never hours/days. Quick = single edit, minutes of agent work; Short = one focused change, a few files; Medium = multi-file feature in one session; Large = several waves, one long session; XL = multi-session or architectural work. A written duration is rewritten to a band. -->
|
|
241
242
|
**Risk:** <Low | Medium | High> - <one-line driver>
|
|
242
243
|
${decisionsLine}
|
|
243
244
|
|
package/dist/tui.js
CHANGED
|
@@ -68446,7 +68446,7 @@ var init_format_on_mutation = __esm(() => {
|
|
|
68446
68446
|
});
|
|
68447
68447
|
|
|
68448
68448
|
// packages/omo-config-core/src/schema/config.ts
|
|
68449
|
-
var OmoOpenCodeHarnessConfigSchema, OmoTypedHarnessConfigSchema, OmoConfigProfileSchema, OmoConfigSchema, OmoConfigLayerSchema;
|
|
68449
|
+
var OmoOpenCodeHarnessConfigSchema, OmoDisabledSkillsSchema, OmoTypedHarnessConfigSchema, OmoConfigProfileSchema, OmoConfigSchema, OmoConfigLayerSchema;
|
|
68450
68450
|
var init_config = __esm(() => {
|
|
68451
68451
|
init_zod();
|
|
68452
68452
|
init_agent();
|
|
@@ -68460,6 +68460,7 @@ var init_config = __esm(() => {
|
|
|
68460
68460
|
init_telemetry();
|
|
68461
68461
|
init_format_on_mutation();
|
|
68462
68462
|
OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
|
|
68463
|
+
OmoDisabledSkillsSchema = array(string2());
|
|
68463
68464
|
OmoTypedHarnessConfigSchema = object({
|
|
68464
68465
|
formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
|
|
68465
68466
|
categories: OmoCategoriesConfigSchema.optional(),
|
|
@@ -68471,7 +68472,8 @@ var init_config = __esm(() => {
|
|
|
68471
68472
|
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
68472
68473
|
model_profile: string2().optional(),
|
|
68473
68474
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
68474
|
-
telemetry: OmoTelemetrySettingsLayerSchema.optional()
|
|
68475
|
+
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
68476
|
+
disabled_skills: OmoDisabledSkillsSchema.optional()
|
|
68475
68477
|
}).strict();
|
|
68476
68478
|
OmoConfigProfileSchema = object({
|
|
68477
68479
|
formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
|
|
@@ -68485,6 +68487,7 @@ var init_config = __esm(() => {
|
|
|
68485
68487
|
model_profile: string2().optional(),
|
|
68486
68488
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
68487
68489
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
68490
|
+
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
68488
68491
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
68489
68492
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
68490
68493
|
"[codex]": OmoTypedHarnessConfigSchema.optional()
|
|
@@ -68502,6 +68505,7 @@ var init_config = __esm(() => {
|
|
|
68502
68505
|
model_profile: string2().optional(),
|
|
68503
68506
|
memory: OmoMemorySettingsSchema.optional(),
|
|
68504
68507
|
telemetry: OmoTelemetrySettingsSchema.optional(),
|
|
68508
|
+
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
68505
68509
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
68506
68510
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
68507
68511
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
@@ -68522,6 +68526,7 @@ var init_config = __esm(() => {
|
|
|
68522
68526
|
model_profile: string2().optional(),
|
|
68523
68527
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
68524
68528
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
68529
|
+
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
68525
68530
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
68526
68531
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
68527
68532
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|