@skj1724/oh-my-opencode 3.18.12 → 3.18.14

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 CHANGED
@@ -53770,7 +53770,7 @@ var {
53770
53770
  // package.json
53771
53771
  var package_default = {
53772
53772
  name: "@skj1724/oh-my-opencode",
53773
- version: "3.18.12",
53773
+ version: "3.18.14",
53774
53774
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
53775
53775
  main: "./dist/index.js",
53776
53776
  types: "dist/index.d.ts",
@@ -53838,7 +53838,7 @@ var package_default = {
53838
53838
  "js-yaml": "^4.1.1",
53839
53839
  "jsonc-parser": "^3.3.1",
53840
53840
  picocolors: "^1.1.1",
53841
- picomatch: "^4.0.2",
53841
+ picomatch: "^4.0.4",
53842
53842
  "posthog-node": "5.28.11",
53843
53843
  "vscode-jsonrpc": "^8.2.0"
53844
53844
  },
@@ -74094,7 +74094,9 @@ var BuiltinCommandNameSchema = exports_external.enum([
74094
74094
  "refactor",
74095
74095
  "start-work",
74096
74096
  "stop-continuation",
74097
- "remove-ai-slops"
74097
+ "handoff",
74098
+ "remove-ai-slops",
74099
+ "open-plan"
74098
74100
  ]);
74099
74101
  // src/config/schema/dynamic-context-pruning.ts
74100
74102
  var DynamicContextPruningConfigSchema = exports_external.object({
@@ -7,6 +7,8 @@ export declare const BuiltinCommandNameSchema: z.ZodEnum<{
7
7
  refactor: "refactor";
8
8
  "start-work": "start-work";
9
9
  "stop-continuation": "stop-continuation";
10
+ handoff: "handoff";
10
11
  "remove-ai-slops": "remove-ai-slops";
12
+ "open-plan": "open-plan";
11
13
  }>;
12
14
  export type BuiltinCommandName = z.infer<typeof BuiltinCommandNameSchema>;
@@ -24,7 +24,9 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
24
24
  refactor: "refactor";
25
25
  "start-work": "start-work";
26
26
  "stop-continuation": "stop-continuation";
27
+ handoff: "handoff";
27
28
  "remove-ai-slops": "remove-ai-slops";
29
+ "open-plan": "open-plan";
28
30
  }>>>;
29
31
  disabled_tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
30
32
  mcp_env_allowlist: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -1,5 +1,6 @@
1
+ import type { BuiltinCommandName } from "../../config/schema/commands";
2
+ export type { BuiltinCommandName };
1
3
  import type { CommandDefinition } from "../claude-code-command-loader";
2
- export type BuiltinCommandName = "init-deep" | "ralph-loop" | "cancel-ralph" | "ulw-loop" | "refactor" | "start-work" | "stop-continuation" | "handoff" | "remove-ai-slops" | "open-plan";
3
4
  export interface BuiltinCommandConfig {
4
5
  disabled_commands?: BuiltinCommandName[];
5
6
  }
package/dist/index.js CHANGED
@@ -3014,6 +3014,7 @@ function truncateDescription(description, maxLength = 120) {
3014
3014
  var require_constants = __commonJS((exports, module) => {
3015
3015
  var WIN_SLASH = "\\\\/";
3016
3016
  var WIN_NO_SLASH = `[^${WIN_SLASH}]`;
3017
+ var DEFAULT_MAX_EXTGLOB_RECURSION = 0;
3017
3018
  var DOT_LITERAL = "\\.";
3018
3019
  var PLUS_LITERAL = "\\+";
3019
3020
  var QMARK_LITERAL = "\\?";
@@ -3064,6 +3065,7 @@ var require_constants = __commonJS((exports, module) => {
3064
3065
  SEP: "\\"
3065
3066
  };
3066
3067
  var POSIX_REGEX_SOURCE = {
3068
+ __proto__: null,
3067
3069
  alnum: "a-zA-Z0-9",
3068
3070
  alpha: "a-zA-Z",
3069
3071
  ascii: "\\x00-\\x7F",
@@ -3080,6 +3082,7 @@ var require_constants = __commonJS((exports, module) => {
3080
3082
  xdigit: "A-Fa-f0-9"
3081
3083
  };
3082
3084
  module.exports = {
3085
+ DEFAULT_MAX_EXTGLOB_RECURSION,
3083
3086
  MAX_LENGTH: 1024 * 64,
3084
3087
  POSIX_REGEX_SOURCE,
3085
3088
  REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g,
@@ -3557,6 +3560,213 @@ var require_parse = __commonJS((exports, module) => {
3557
3560
  var syntaxError = (type2, char) => {
3558
3561
  return `Missing ${type2}: "${char}" - use "\\\\${char}" to match literal characters`;
3559
3562
  };
3563
+ var splitTopLevel = (input) => {
3564
+ const parts = [];
3565
+ let bracket = 0;
3566
+ let paren = 0;
3567
+ let quote = 0;
3568
+ let value = "";
3569
+ let escaped = false;
3570
+ for (const ch of input) {
3571
+ if (escaped === true) {
3572
+ value += ch;
3573
+ escaped = false;
3574
+ continue;
3575
+ }
3576
+ if (ch === "\\") {
3577
+ value += ch;
3578
+ escaped = true;
3579
+ continue;
3580
+ }
3581
+ if (ch === '"') {
3582
+ quote = quote === 1 ? 0 : 1;
3583
+ value += ch;
3584
+ continue;
3585
+ }
3586
+ if (quote === 0) {
3587
+ if (ch === "[") {
3588
+ bracket++;
3589
+ } else if (ch === "]" && bracket > 0) {
3590
+ bracket--;
3591
+ } else if (bracket === 0) {
3592
+ if (ch === "(") {
3593
+ paren++;
3594
+ } else if (ch === ")" && paren > 0) {
3595
+ paren--;
3596
+ } else if (ch === "|" && paren === 0) {
3597
+ parts.push(value);
3598
+ value = "";
3599
+ continue;
3600
+ }
3601
+ }
3602
+ }
3603
+ value += ch;
3604
+ }
3605
+ parts.push(value);
3606
+ return parts;
3607
+ };
3608
+ var isPlainBranch = (branch) => {
3609
+ let escaped = false;
3610
+ for (const ch of branch) {
3611
+ if (escaped === true) {
3612
+ escaped = false;
3613
+ continue;
3614
+ }
3615
+ if (ch === "\\") {
3616
+ escaped = true;
3617
+ continue;
3618
+ }
3619
+ if (/[?*+@!()[\]{}]/.test(ch)) {
3620
+ return false;
3621
+ }
3622
+ }
3623
+ return true;
3624
+ };
3625
+ var normalizeSimpleBranch = (branch) => {
3626
+ let value = branch.trim();
3627
+ let changed = true;
3628
+ while (changed === true) {
3629
+ changed = false;
3630
+ if (/^@\([^\\()[\]{}|]+\)$/.test(value)) {
3631
+ value = value.slice(2, -1);
3632
+ changed = true;
3633
+ }
3634
+ }
3635
+ if (!isPlainBranch(value)) {
3636
+ return;
3637
+ }
3638
+ return value.replace(/\\(.)/g, "$1");
3639
+ };
3640
+ var hasRepeatedCharPrefixOverlap = (branches) => {
3641
+ const values = branches.map(normalizeSimpleBranch).filter(Boolean);
3642
+ for (let i2 = 0;i2 < values.length; i2++) {
3643
+ for (let j = i2 + 1;j < values.length; j++) {
3644
+ const a = values[i2];
3645
+ const b = values[j];
3646
+ const char = a[0];
3647
+ if (!char || a !== char.repeat(a.length) || b !== char.repeat(b.length)) {
3648
+ continue;
3649
+ }
3650
+ if (a === b || a.startsWith(b) || b.startsWith(a)) {
3651
+ return true;
3652
+ }
3653
+ }
3654
+ }
3655
+ return false;
3656
+ };
3657
+ var parseRepeatedExtglob = (pattern, requireEnd = true) => {
3658
+ if (pattern[0] !== "+" && pattern[0] !== "*" || pattern[1] !== "(") {
3659
+ return;
3660
+ }
3661
+ let bracket = 0;
3662
+ let paren = 0;
3663
+ let quote = 0;
3664
+ let escaped = false;
3665
+ for (let i2 = 1;i2 < pattern.length; i2++) {
3666
+ const ch = pattern[i2];
3667
+ if (escaped === true) {
3668
+ escaped = false;
3669
+ continue;
3670
+ }
3671
+ if (ch === "\\") {
3672
+ escaped = true;
3673
+ continue;
3674
+ }
3675
+ if (ch === '"') {
3676
+ quote = quote === 1 ? 0 : 1;
3677
+ continue;
3678
+ }
3679
+ if (quote === 1) {
3680
+ continue;
3681
+ }
3682
+ if (ch === "[") {
3683
+ bracket++;
3684
+ continue;
3685
+ }
3686
+ if (ch === "]" && bracket > 0) {
3687
+ bracket--;
3688
+ continue;
3689
+ }
3690
+ if (bracket > 0) {
3691
+ continue;
3692
+ }
3693
+ if (ch === "(") {
3694
+ paren++;
3695
+ continue;
3696
+ }
3697
+ if (ch === ")") {
3698
+ paren--;
3699
+ if (paren === 0) {
3700
+ if (requireEnd === true && i2 !== pattern.length - 1) {
3701
+ return;
3702
+ }
3703
+ return {
3704
+ type: pattern[0],
3705
+ body: pattern.slice(2, i2),
3706
+ end: i2
3707
+ };
3708
+ }
3709
+ }
3710
+ }
3711
+ };
3712
+ var getStarExtglobSequenceOutput = (pattern) => {
3713
+ let index = 0;
3714
+ const chars = [];
3715
+ while (index < pattern.length) {
3716
+ const match = parseRepeatedExtglob(pattern.slice(index), false);
3717
+ if (!match || match.type !== "*") {
3718
+ return;
3719
+ }
3720
+ const branches = splitTopLevel(match.body).map((branch2) => branch2.trim());
3721
+ if (branches.length !== 1) {
3722
+ return;
3723
+ }
3724
+ const branch = normalizeSimpleBranch(branches[0]);
3725
+ if (!branch || branch.length !== 1) {
3726
+ return;
3727
+ }
3728
+ chars.push(branch);
3729
+ index += match.end + 1;
3730
+ }
3731
+ if (chars.length < 1) {
3732
+ return;
3733
+ }
3734
+ const source = chars.length === 1 ? utils.escapeRegex(chars[0]) : `[${chars.map((ch) => utils.escapeRegex(ch)).join("")}]`;
3735
+ return `${source}*`;
3736
+ };
3737
+ var repeatedExtglobRecursion = (pattern) => {
3738
+ let depth = 0;
3739
+ let value = pattern.trim();
3740
+ let match = parseRepeatedExtglob(value);
3741
+ while (match) {
3742
+ depth++;
3743
+ value = match.body.trim();
3744
+ match = parseRepeatedExtglob(value);
3745
+ }
3746
+ return depth;
3747
+ };
3748
+ var analyzeRepeatedExtglob = (body, options) => {
3749
+ if (options.maxExtglobRecursion === false) {
3750
+ return { risky: false };
3751
+ }
3752
+ const max = typeof options.maxExtglobRecursion === "number" ? options.maxExtglobRecursion : constants5.DEFAULT_MAX_EXTGLOB_RECURSION;
3753
+ const branches = splitTopLevel(body).map((branch) => branch.trim());
3754
+ if (branches.length > 1) {
3755
+ if (branches.some((branch) => branch === "") || branches.some((branch) => /^[*?]+$/.test(branch)) || hasRepeatedCharPrefixOverlap(branches)) {
3756
+ return { risky: true };
3757
+ }
3758
+ }
3759
+ for (const branch of branches) {
3760
+ const safeOutput = getStarExtglobSequenceOutput(branch);
3761
+ if (safeOutput) {
3762
+ return { risky: true, safeOutput };
3763
+ }
3764
+ if (repeatedExtglobRecursion(branch) > max) {
3765
+ return { risky: true };
3766
+ }
3767
+ }
3768
+ return { risky: false };
3769
+ };
3560
3770
  var parse3 = (input, options) => {
3561
3771
  if (typeof input !== "string") {
3562
3772
  throw new TypeError("Expected a string");
@@ -3688,6 +3898,8 @@ var require_parse = __commonJS((exports, module) => {
3688
3898
  token.prev = prev;
3689
3899
  token.parens = state3.parens;
3690
3900
  token.output = state3.output;
3901
+ token.startIndex = state3.index;
3902
+ token.tokensIndex = tokens.length;
3691
3903
  const output = (opts.capture ? "(" : "") + token.open;
3692
3904
  increment("parens");
3693
3905
  push({ type: type2, value: value2, output: state3.output ? "" : ONE_CHAR });
@@ -3695,6 +3907,26 @@ var require_parse = __commonJS((exports, module) => {
3695
3907
  extglobs.push(token);
3696
3908
  };
3697
3909
  const extglobClose = (token) => {
3910
+ const literal = input.slice(token.startIndex, state3.index + 1);
3911
+ const body = input.slice(token.startIndex + 2, state3.index);
3912
+ const analysis = analyzeRepeatedExtglob(body, opts);
3913
+ if ((token.type === "plus" || token.type === "star") && analysis.risky) {
3914
+ const safeOutput = analysis.safeOutput ? (token.output ? "" : ONE_CHAR) + (opts.capture ? `(${analysis.safeOutput})` : analysis.safeOutput) : undefined;
3915
+ const open = tokens[token.tokensIndex];
3916
+ open.type = "text";
3917
+ open.value = literal;
3918
+ open.output = safeOutput || utils.escapeRegex(literal);
3919
+ for (let i2 = token.tokensIndex + 1;i2 < tokens.length; i2++) {
3920
+ tokens[i2].value = "";
3921
+ tokens[i2].output = "";
3922
+ delete tokens[i2].suffix;
3923
+ }
3924
+ state3.output = token.output + open.output;
3925
+ state3.backtrack = true;
3926
+ push({ type: "paren", extglob: true, value, output: "" });
3927
+ decrement("parens");
3928
+ return;
3929
+ }
3698
3930
  let output = token.close + (opts.capture ? ")" : "");
3699
3931
  let rest;
3700
3932
  if (token.type === "negate") {
@@ -81784,7 +82016,9 @@ var BuiltinCommandNameSchema = z12.enum([
81784
82016
  "refactor",
81785
82017
  "start-work",
81786
82018
  "stop-continuation",
81787
- "remove-ai-slops"
82019
+ "handoff",
82020
+ "remove-ai-slops",
82021
+ "open-plan"
81788
82022
  ]);
81789
82023
  // src/config/schema/dynamic-context-pruning.ts
81790
82024
  import { z as z13 } from "zod";
@@ -130770,7 +131004,7 @@ class PostHog extends PostHogBackendClient {
130770
131004
  // package.json
130771
131005
  var package_default = {
130772
131006
  name: "@skj1724/oh-my-opencode",
130773
- version: "3.18.12",
131007
+ version: "3.18.14",
130774
131008
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
130775
131009
  main: "./dist/index.js",
130776
131010
  types: "dist/index.d.ts",
@@ -130838,7 +131072,7 @@ var package_default = {
130838
131072
  "js-yaml": "^4.1.1",
130839
131073
  "jsonc-parser": "^3.3.1",
130840
131074
  picocolors: "^1.1.1",
130841
- picomatch: "^4.0.2",
131075
+ picomatch: "^4.0.4",
130842
131076
  "posthog-node": "5.28.11",
130843
131077
  "vscode-jsonrpc": "^8.2.0"
130844
131078
  },
@@ -67,7 +67,9 @@
67
67
  "refactor",
68
68
  "start-work",
69
69
  "stop-continuation",
70
- "remove-ai-slops"
70
+ "handoff",
71
+ "remove-ai-slops",
72
+ "open-plan"
71
73
  ]
72
74
  }
73
75
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skj1724/oh-my-opencode",
3
- "version": "3.18.12",
3
+ "version": "3.18.14",
4
4
  "description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
5
5
  "main": "./dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -68,7 +68,7 @@
68
68
  "js-yaml": "^4.1.1",
69
69
  "jsonc-parser": "^3.3.1",
70
70
  "picocolors": "^1.1.1",
71
- "picomatch": "^4.0.2",
71
+ "picomatch": "^4.0.4",
72
72
  "posthog-node": "5.28.11",
73
73
  "vscode-jsonrpc": "^8.2.0"
74
74
  },