lazycodex-ai 5.1.38 → 5.1.41

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.
Files changed (117) hide show
  1. package/dist/cli/index.js +229 -187
  2. package/dist/cli-node/index.js +229 -187
  3. package/package.json +1 -1
  4. package/packages/lsp-daemon/dist/cli.js +10 -0
  5. package/packages/lsp-daemon/dist/client.js +10 -0
  6. package/packages/lsp-daemon/dist/index.js +10 -0
  7. package/packages/lsp-tools-mcp/dist/cli.js +10 -0
  8. package/packages/lsp-tools-mcp/dist/lsp/manager.js +10 -0
  9. package/packages/lsp-tools-mcp/dist/mcp.js +10 -0
  10. package/packages/lsp-tools-mcp/dist/tools.js +10 -0
  11. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  12. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +24 -2
  13. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  14. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  15. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  16. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  17. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  18. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  19. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  20. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  21. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
  22. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +10 -0
  23. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  24. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  25. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  26. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  27. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  28. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  29. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +157 -151
  30. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +157 -151
  31. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  32. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  33. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  34. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  35. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +1 -1
  36. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +5 -4
  37. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  38. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  39. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  40. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  41. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  42. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  43. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  44. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  45. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  46. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  47. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  48. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  49. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  50. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  51. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  52. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  53. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  54. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  55. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  56. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  57. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  58. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  59. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  60. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  61. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  62. package/packages/omo-codex/plugin/package-lock.json +12 -12
  63. package/packages/omo-codex/plugin/package.json +1 -1
  64. package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
  65. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +6 -6
  66. package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +2 -2
  67. package/packages/omo-codex/plugin/skills/frontend/references/perfection/README.md +2 -2
  68. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/accent-stripes/declarations.ts +22 -13
  69. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/accent-stripes/findings.ts +7 -6
  70. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/accent-stripes/lint.ts +18 -24
  71. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/accent-stripes/markup.ts +14 -7
  72. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/accent-stripes/selector.ts +5 -1
  73. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/accent-stripes/tailwind.ts +32 -14
  74. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/check-accent-stripes.ts +1 -1
  75. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/inline-ok.tsx +1 -0
  76. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/neutral-and-flat.css +1 -1
  77. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/tailwind-ok.tsx +5 -2
  78. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/uniform-and-rings.css +2 -2
  79. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/accent-outlines.css +4 -0
  80. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/accent-outlines.tsx +8 -0
  81. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/{negative → positive}/flat-stripe-side.tsx +3 -1
  82. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/report-callouts.html +8 -0
  83. package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/square-surfaces.css +8 -0
  84. package/packages/omo-codex/plugin/skills/git-master/SKILL.md +1 -1
  85. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +1 -1
  86. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +5 -4
  87. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +10 -2
  88. package/packages/omo-codex/plugin/skills/ulw-research/references/deliverable-phase.md +10 -0
  89. package/packages/omo-codex/plugin/skills/ulw-research/references/report-visualization.md +23 -0
  90. package/packages/omo-codex/scripts/install-dist/install-local.mjs +195 -168
  91. package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
  92. package/packages/shared-skills/skills/frontend/SKILL.md +6 -6
  93. package/packages/shared-skills/skills/frontend/references/design/README.md +2 -2
  94. package/packages/shared-skills/skills/frontend/references/perfection/README.md +2 -2
  95. package/packages/shared-skills/skills/frontend/scripts/perfection/accent-stripes/declarations.ts +22 -13
  96. package/packages/shared-skills/skills/frontend/scripts/perfection/accent-stripes/findings.ts +7 -6
  97. package/packages/shared-skills/skills/frontend/scripts/perfection/accent-stripes/lint.ts +18 -24
  98. package/packages/shared-skills/skills/frontend/scripts/perfection/accent-stripes/markup.ts +14 -7
  99. package/packages/shared-skills/skills/frontend/scripts/perfection/accent-stripes/selector.ts +5 -1
  100. package/packages/shared-skills/skills/frontend/scripts/perfection/accent-stripes/tailwind.ts +32 -14
  101. package/packages/shared-skills/skills/frontend/scripts/perfection/check-accent-stripes.test.ts +15 -6
  102. package/packages/shared-skills/skills/frontend/scripts/perfection/check-accent-stripes.ts +1 -1
  103. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/inline-ok.tsx +1 -0
  104. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/neutral-and-flat.css +1 -1
  105. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/tailwind-ok.tsx +5 -2
  106. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/negative/uniform-and-rings.css +2 -2
  107. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/accent-outlines.css +4 -0
  108. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/accent-outlines.tsx +8 -0
  109. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/{negative → positive}/flat-stripe-side.tsx +3 -1
  110. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/report-callouts.html +8 -0
  111. package/packages/shared-skills/skills/frontend/scripts/perfection/fixtures/accent-stripes/positive/square-surfaces.css +8 -0
  112. package/packages/shared-skills/skills/git-master/SKILL.md +1 -1
  113. package/packages/shared-skills/skills/ulw-plan/SKILL.md +1 -1
  114. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +5 -4
  115. package/packages/shared-skills/skills/ulw-research/SKILL.md +10 -2
  116. package/packages/shared-skills/skills/ulw-research/references/deliverable-phase.md +10 -0
  117. package/packages/shared-skills/skills/ulw-research/references/report-visualization.md +23 -0
@@ -2133,7 +2133,7 @@ var package_default;
2133
2133
  var init_package = __esm(() => {
2134
2134
  package_default = {
2135
2135
  name: "oh-my-opencode",
2136
- version: "5.1.38",
2136
+ version: "5.1.41",
2137
2137
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
2138
2138
  main: "./dist/index.js",
2139
2139
  types: "dist/index.d.ts",
@@ -2310,7 +2310,7 @@ var init_package = __esm(() => {
2310
2310
  },
2311
2311
  devDependencies: {
2312
2312
  "@clack/prompts": "^1.8.1",
2313
- "@code-yeongyu/senpi": "2026.10.19",
2313
+ "@code-yeongyu/senpi": "2026.10.21-1",
2314
2314
  "@modelcontextprotocol/sdk": "^1.30.0",
2315
2315
  "@oh-my-opencode/agents-md-core": "workspace:*",
2316
2316
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
@@ -2351,6 +2351,7 @@ var init_package = __esm(() => {
2351
2351
  "@opentui/core": "^0.5.11",
2352
2352
  "@opentui/keymap": "^0.5.11",
2353
2353
  "@types/js-yaml": "^4.0.9",
2354
+ "@types/node": "26.6.2",
2354
2355
  "@types/picomatch": "^4.0.3",
2355
2356
  "@typescript/native-preview": "7.0.0-dev.20260707.2",
2356
2357
  "@typescript/typescript6": "6.0.2",
@@ -2370,18 +2371,18 @@ var init_package = __esm(() => {
2370
2371
  typescript: "^7.0.2"
2371
2372
  },
2372
2373
  optionalDependencies: {
2373
- "oh-my-opencode-darwin-arm64": "5.1.38",
2374
- "oh-my-opencode-darwin-x64": "5.1.38",
2375
- "oh-my-opencode-darwin-x64-baseline": "5.1.38",
2376
- "oh-my-opencode-linux-arm64": "5.1.38",
2377
- "oh-my-opencode-linux-arm64-musl": "5.1.38",
2378
- "oh-my-opencode-linux-x64": "5.1.38",
2379
- "oh-my-opencode-linux-x64-baseline": "5.1.38",
2380
- "oh-my-opencode-linux-x64-musl": "5.1.38",
2381
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.38",
2382
- "oh-my-opencode-windows-arm64": "5.1.38",
2383
- "oh-my-opencode-windows-x64": "5.1.38",
2384
- "oh-my-opencode-windows-x64-baseline": "5.1.38"
2374
+ "oh-my-opencode-darwin-arm64": "5.1.41",
2375
+ "oh-my-opencode-darwin-x64": "5.1.41",
2376
+ "oh-my-opencode-darwin-x64-baseline": "5.1.41",
2377
+ "oh-my-opencode-linux-arm64": "5.1.41",
2378
+ "oh-my-opencode-linux-arm64-musl": "5.1.41",
2379
+ "oh-my-opencode-linux-x64": "5.1.41",
2380
+ "oh-my-opencode-linux-x64-baseline": "5.1.41",
2381
+ "oh-my-opencode-linux-x64-musl": "5.1.41",
2382
+ "oh-my-opencode-linux-x64-musl-baseline": "5.1.41",
2383
+ "oh-my-opencode-windows-arm64": "5.1.41",
2384
+ "oh-my-opencode-windows-x64": "5.1.41",
2385
+ "oh-my-opencode-windows-x64-baseline": "5.1.41"
2385
2386
  },
2386
2387
  overrides: {
2387
2388
  hono: "^4.13.8",
@@ -76859,17 +76860,23 @@ var init_computer = __esm(() => {
76859
76860
  });
76860
76861
 
76861
76862
  // packages/omo-config-core/src/schema/git-master.ts
76862
- var OmoGitMasterSettingsShape, OmoGitMasterSettingsLayerSchema, OmoGitMasterSettingsSchema;
76863
+ var GIT_ENV_ASSIGNMENT_PATTERN, GitEnvPrefixSchema, OmoGitMasterSettingsShape, OmoGitMasterSettingsLayerSchema, OmoGitMasterSettingsSchema;
76863
76864
  var init_git_master = __esm(() => {
76864
76865
  init_zod();
76866
+ GIT_ENV_ASSIGNMENT_PATTERN = /^(?:[A-Za-z_][A-Za-z0-9_]*=[A-Za-z0-9_-]*)(?: [A-Za-z_][A-Za-z0-9_]*=[A-Za-z0-9_-]*)*$/;
76867
+ GitEnvPrefixSchema = string2().refine((value) => value === "" || GIT_ENV_ASSIGNMENT_PATTERN.test(value), {
76868
+ message: 'git_env_prefix must be empty or use shell-safe env assignments like "GIT_MASTER=1"'
76869
+ });
76865
76870
  OmoGitMasterSettingsShape = {
76866
76871
  commit_footer: union([boolean2(), string2()]),
76867
- include_co_authored_by: boolean2()
76872
+ include_co_authored_by: boolean2(),
76873
+ git_env_prefix: GitEnvPrefixSchema
76868
76874
  };
76869
76875
  OmoGitMasterSettingsLayerSchema = object(OmoGitMasterSettingsShape).partial().strict();
76870
76876
  OmoGitMasterSettingsSchema = OmoGitMasterSettingsLayerSchema.extend({
76871
76877
  commit_footer: union([boolean2(), string2()]).default(false),
76872
- include_co_authored_by: boolean2().default(false)
76878
+ include_co_authored_by: boolean2().default(false),
76879
+ git_env_prefix: GitEnvPrefixSchema.default("GIT_MASTER=1")
76873
76880
  }).strict();
76874
76881
  });
76875
76882
 
@@ -76884,10 +76891,29 @@ var init_harness = __esm(() => {
76884
76891
  OMO_CONFIG_LEGACY_HARNESS_IDS = Object.keys(OMO_CONFIG_LEGACY_HARNESS_ALIASES);
76885
76892
  });
76886
76893
 
76894
+ // packages/omo-config-core/src/schema/memory-agreements.ts
76895
+ var OMO_MEMORY_AGREEMENTS_DEFAULTS, OmoMemoryAgreementsSchema, OmoMemoryAgreementsLayerSchema;
76896
+ var init_memory_agreements = __esm(() => {
76897
+ init_zod();
76898
+ OMO_MEMORY_AGREEMENTS_DEFAULTS = { enabled: true, needs_human_threshold: 3, max_items: 64 };
76899
+ OmoMemoryAgreementsSchema = object({
76900
+ enabled: boolean2().default(OMO_MEMORY_AGREEMENTS_DEFAULTS.enabled),
76901
+ needs_human_threshold: number2().int().min(1).default(OMO_MEMORY_AGREEMENTS_DEFAULTS.needs_human_threshold),
76902
+ max_items: number2().int().min(8).max(256).default(OMO_MEMORY_AGREEMENTS_DEFAULTS.max_items)
76903
+ }).strict();
76904
+ OmoMemoryAgreementsLayerSchema = object({
76905
+ enabled: boolean2().optional(),
76906
+ needs_human_threshold: number2().int().min(1).optional(),
76907
+ max_items: number2().int().min(8).max(256).optional()
76908
+ }).strict();
76909
+ });
76910
+
76887
76911
  // packages/omo-config-core/src/schema/memory.ts
76888
76912
  var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryRecallEventCapsSchema, OmoMemoryRecallSchema, OmoMemoryNudgeSchema, OmoMemoryFactsSchema, OmoMemoryDreamSchema, OmoMemoryPeopleSchema, OmoMemorySoulSchema, OmoMemoryWriteNoticeSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryRecallEventCapsLayerSchema, OmoMemoryRecallLayerSchema, OmoMemoryNudgeLayerSchema, OmoMemoryFactsLayerSchema, OmoMemoryDreamLayerSchema, OmoMemoryPeopleLayerSchema, OmoMemorySoulLayerSchema, OmoMemoryWriteNoticeLayerSchema, OmoMemoryProjectionSchema, OmoMemoryProjectionLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
76889
76913
  var init_memory = __esm(() => {
76890
76914
  init_zod();
76915
+ init_memory_agreements();
76916
+ init_memory_agreements();
76891
76917
  OmoMemoryReflectionTriggerSchema = object({
76892
76918
  step_count: number2().int().nonnegative().default(25),
76893
76919
  on_compaction: boolean2().default(true)
@@ -77030,6 +77056,7 @@ var init_memory = __esm(() => {
77030
77056
  facts: OmoMemoryFactsLayerSchema.optional(),
77031
77057
  dream: OmoMemoryDreamLayerSchema.optional(),
77032
77058
  people: OmoMemoryPeopleLayerSchema.optional(),
77059
+ agreements: OmoMemoryAgreementsLayerSchema.optional(),
77033
77060
  soul: OmoMemorySoulLayerSchema.optional(),
77034
77061
  write_notice: OmoMemoryWriteNoticeLayerSchema.optional(),
77035
77062
  sync: OmoMemorySyncLayerSchema.optional(),
@@ -77060,6 +77087,7 @@ var init_memory = __esm(() => {
77060
77087
  auto_select_max_chars: 150000
77061
77088
  }),
77062
77089
  people: OmoMemoryPeopleSchema.default({ enabled: true, max_entries: 40, max_entry_chars: 200 }),
77090
+ agreements: OmoMemoryAgreementsSchema.default(OMO_MEMORY_AGREEMENTS_DEFAULTS),
77063
77091
  soul: OmoMemorySoulSchema.default({ edit_notice: true }),
77064
77092
  write_notice: OmoMemoryWriteNoticeSchema.default({ enabled: true }),
77065
77093
  sync: OmoMemorySyncSchema.default({ enabled: true }),
@@ -77086,6 +77114,7 @@ var init_memory = __esm(() => {
77086
77114
  facts: OmoMemoryFactsLayerSchema.optional(),
77087
77115
  dream: OmoMemoryDreamLayerSchema.optional(),
77088
77116
  people: OmoMemoryPeopleLayerSchema.optional(),
77117
+ agreements: OmoMemoryAgreementsLayerSchema.optional(),
77089
77118
  soul: OmoMemorySoulLayerSchema.optional(),
77090
77119
  write_notice: OmoMemoryWriteNoticeLayerSchema.optional(),
77091
77120
  sync: OmoMemorySyncLayerSchema.optional(),
@@ -82604,6 +82633,163 @@ var init_event_id = __esm(() => {
82604
82633
  fallbackEventId = createUuidV7Generator();
82605
82634
  });
82606
82635
 
82636
+ // packages/telemetry-core/src/machine-id.ts
82637
+ import { createHash as createHash5 } from "node:crypto";
82638
+ import os4 from "node:os";
82639
+ function getDefaultTelemetryOsProvider() {
82640
+ return os4;
82641
+ }
82642
+ function getTelemetryDistinctId(machineIdPrefix, osProvider = getDefaultTelemetryOsProvider()) {
82643
+ return createHash5("sha256").update(`${machineIdPrefix}${osProvider.hostname()}`).digest("hex");
82644
+ }
82645
+ var init_machine_id = () => {};
82646
+
82647
+ // packages/telemetry-core/src/injected-client.ts
82648
+ function isTelemetryClientEnabled(input) {
82649
+ const env = input.env ?? process.env;
82650
+ return !shouldDisableTelemetry({ env, productEnvPrefix: input.product.productEnvPrefix }) && hasTelemetryApiKey(env, input.product.defaultApiKey);
82651
+ }
82652
+ function createTelemetryClient(input) {
82653
+ if (!isTelemetryClientEnabled(input)) {
82654
+ return NO_OP_CLIENT;
82655
+ }
82656
+ const transport = createTransport(input);
82657
+ if (transport === null) {
82658
+ return NO_OP_CLIENT;
82659
+ }
82660
+ const sharedProperties = getSharedProperties(input);
82661
+ return {
82662
+ enabled: true,
82663
+ trackActive: ({ dayUTC, distinctId, reason }) => {
82664
+ try {
82665
+ transport.capture({
82666
+ distinctId,
82667
+ event: input.product.eventName,
82668
+ properties: {
82669
+ ...sharedProperties,
82670
+ $process_person_profile: false,
82671
+ day_utc: dayUTC,
82672
+ reason
82673
+ }
82674
+ });
82675
+ } catch (error) {
82676
+ input.diagnostics?.({
82677
+ event: "telemetry_capture_failed",
82678
+ source: input.source,
82679
+ error,
82680
+ errorKind: error instanceof Error ? "error" : "non_error"
82681
+ });
82682
+ }
82683
+ },
82684
+ flush: async () => {
82685
+ if (transport.flush === undefined) {
82686
+ return;
82687
+ }
82688
+ await transport.flush();
82689
+ },
82690
+ shutdown: async () => {
82691
+ try {
82692
+ await transport.shutdown();
82693
+ } catch (error) {
82694
+ input.diagnostics?.({
82695
+ event: "telemetry_shutdown_failed",
82696
+ source: input.source,
82697
+ error,
82698
+ errorKind: error instanceof Error ? "error" : "non_error"
82699
+ });
82700
+ }
82701
+ }
82702
+ };
82703
+ }
82704
+ function createTransport(input) {
82705
+ const env = input.env ?? process.env;
82706
+ const factory = input.transportFactory;
82707
+ try {
82708
+ return factory(getTelemetryApiKey(env, input.product.defaultApiKey), {
82709
+ enableExceptionAutocapture: false,
82710
+ enableLocalEvaluation: false,
82711
+ strictLocalEvaluation: true,
82712
+ disableRemoteConfig: true,
82713
+ flushAt: 1,
82714
+ flushInterval: 0,
82715
+ host: getTelemetryHost(env, input.product.defaultHost),
82716
+ disableGeoip: input.product.disableGeoip ?? false,
82717
+ ...input.product.transportOptions
82718
+ });
82719
+ } catch (error) {
82720
+ input.diagnostics?.({
82721
+ event: "telemetry_posthog_init_failed",
82722
+ source: input.source,
82723
+ error,
82724
+ errorKind: error instanceof Error ? "error" : "non_error"
82725
+ });
82726
+ return null;
82727
+ }
82728
+ }
82729
+ function getSharedProperties(input) {
82730
+ const osProvider = input.osProvider ?? getDefaultTelemetryOsProvider();
82731
+ const cpuInfo = getSafeCpuInfo(osProvider, input);
82732
+ return {
82733
+ platform: input.product.platform,
82734
+ product_name: input.product.productName,
82735
+ package_name: input.product.packageName,
82736
+ package_version: input.product.packageVersion,
82737
+ runtime: "bun",
82738
+ runtime_version: process.versions.bun ?? process.version,
82739
+ source: input.source,
82740
+ $os: osProvider.platform(),
82741
+ $os_version: osProvider.release(),
82742
+ os_arch: osProvider.arch(),
82743
+ os_type: osProvider.type(),
82744
+ cpu_count: cpuInfo.count,
82745
+ cpu_model: cpuInfo.model,
82746
+ total_memory_gb: Math.round(osProvider.totalmem() / 1024 / 1024 / 1024),
82747
+ locale: Intl.DateTimeFormat().resolvedOptions().locale,
82748
+ timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
82749
+ shell: process.env.SHELL,
82750
+ ci: Boolean(process.env.CI),
82751
+ terminal: process.env.TERM_PROGRAM,
82752
+ ...input.product.additionalProperties
82753
+ };
82754
+ }
82755
+ function getSafeCpuInfo(osProvider, input) {
82756
+ try {
82757
+ const cpuInfo = osProvider.cpus();
82758
+ return {
82759
+ count: cpuInfo.length,
82760
+ model: cpuInfo[0]?.model
82761
+ };
82762
+ } catch (error) {
82763
+ input.diagnostics?.({
82764
+ event: "telemetry_cpu_info_unavailable",
82765
+ source: "shared",
82766
+ error,
82767
+ errorKind: error instanceof Error ? "error" : "non_error"
82768
+ });
82769
+ return {
82770
+ count: 0,
82771
+ model: undefined
82772
+ };
82773
+ }
82774
+ }
82775
+ var NO_OP_CLIENT;
82776
+ var init_injected_client = __esm(() => {
82777
+ init_env();
82778
+ init_machine_id();
82779
+ NO_OP_CLIENT = {
82780
+ enabled: false,
82781
+ trackActive: () => {
82782
+ return;
82783
+ },
82784
+ flush: async () => {
82785
+ return;
82786
+ },
82787
+ shutdown: async () => {
82788
+ return;
82789
+ }
82790
+ };
82791
+ });
82792
+
82607
82793
  // node_modules/.bun/posthog-node@5.52.4/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/module.node.mjs
82608
82794
  import { dirname as dirname18, posix as posix7, sep as sep7 } from "path";
82609
82795
  function createModulerModifier() {
@@ -91977,18 +92163,7 @@ var init_index_node = __esm(() => {
91977
92163
  };
91978
92164
  });
91979
92165
 
91980
- // packages/telemetry-core/src/machine-id.ts
91981
- import { createHash as createHash5 } from "node:crypto";
91982
- import os4 from "node:os";
91983
- function getDefaultTelemetryOsProvider() {
91984
- return os4;
91985
- }
91986
- function getTelemetryDistinctId(machineIdPrefix, osProvider = getDefaultTelemetryOsProvider()) {
91987
- return createHash5("sha256").update(`${machineIdPrefix}${osProvider.hostname()}`).digest("hex");
91988
- }
91989
- var init_machine_id = () => {};
91990
-
91991
- // packages/telemetry-core/src/posthog-client.ts
92166
+ // packages/telemetry-core/src/posthog-transport.ts
91992
92167
  class PostHogTelemetryTransport {
91993
92168
  #client;
91994
92169
  constructor(apiKey, options) {
@@ -92007,161 +92182,21 @@ class PostHogTelemetryTransport {
92007
92182
  function createDefaultPostHogTransport(apiKey, options) {
92008
92183
  return new PostHogTelemetryTransport(apiKey, options);
92009
92184
  }
92010
- function isTelemetryClientEnabled(input) {
92011
- const env = input.env ?? process.env;
92012
- return !shouldDisableTelemetry({ env, productEnvPrefix: input.product.productEnvPrefix }) && hasTelemetryApiKey(env, input.product.defaultApiKey);
92013
- }
92014
- function createTelemetryClient(input) {
92015
- if (!isTelemetryClientEnabled(input)) {
92016
- return NO_OP_CLIENT;
92017
- }
92018
- const transport = createTransport(input);
92019
- if (transport === null) {
92020
- return NO_OP_CLIENT;
92021
- }
92022
- const sharedProperties = getSharedProperties(input);
92023
- return {
92024
- enabled: true,
92025
- trackActive: ({ dayUTC, distinctId, reason }) => {
92026
- try {
92027
- transport.capture({
92028
- distinctId,
92029
- event: input.product.eventName,
92030
- properties: {
92031
- ...sharedProperties,
92032
- $process_person_profile: false,
92033
- day_utc: dayUTC,
92034
- reason
92035
- }
92036
- });
92037
- } catch (error) {
92038
- input.diagnostics?.({
92039
- event: "telemetry_capture_failed",
92040
- source: input.source,
92041
- error,
92042
- errorKind: error instanceof Error ? "error" : "non_error"
92043
- });
92044
- }
92045
- },
92046
- flush: async () => {
92047
- if (transport.flush === undefined) {
92048
- return;
92049
- }
92050
- await transport.flush();
92051
- },
92052
- shutdown: async () => {
92053
- try {
92054
- await transport.shutdown();
92055
- } catch (error) {
92056
- input.diagnostics?.({
92057
- event: "telemetry_shutdown_failed",
92058
- source: input.source,
92059
- error,
92060
- errorKind: error instanceof Error ? "error" : "non_error"
92061
- });
92062
- }
92063
- }
92064
- };
92065
- }
92066
- function createTransport(input) {
92067
- const env = input.env ?? process.env;
92068
- const factory = input.transportFactory ?? createDefaultPostHogTransport;
92069
- try {
92070
- return factory(getTelemetryApiKey(env, input.product.defaultApiKey), {
92071
- enableExceptionAutocapture: false,
92072
- enableLocalEvaluation: false,
92073
- strictLocalEvaluation: true,
92074
- disableRemoteConfig: true,
92075
- flushAt: 1,
92076
- flushInterval: 0,
92077
- host: getTelemetryHost(env, input.product.defaultHost),
92078
- disableGeoip: input.product.disableGeoip ?? false,
92079
- ...input.product.transportOptions
92080
- });
92081
- } catch (error) {
92082
- input.diagnostics?.({
92083
- event: "telemetry_posthog_init_failed",
92084
- source: input.source,
92085
- error,
92086
- errorKind: error instanceof Error ? "error" : "non_error"
92087
- });
92088
- return null;
92089
- }
92090
- }
92091
- function getSharedProperties(input) {
92092
- const osProvider = input.osProvider ?? getDefaultTelemetryOsProvider();
92093
- const cpuInfo = getSafeCpuInfo(osProvider, input);
92094
- return {
92095
- platform: input.product.platform,
92096
- product_name: input.product.productName,
92097
- package_name: input.product.packageName,
92098
- package_version: input.product.packageVersion,
92099
- runtime: "bun",
92100
- runtime_version: process.versions.bun ?? process.version,
92101
- source: input.source,
92102
- $os: osProvider.platform(),
92103
- $os_version: osProvider.release(),
92104
- os_arch: osProvider.arch(),
92105
- os_type: osProvider.type(),
92106
- cpu_count: cpuInfo.count,
92107
- cpu_model: cpuInfo.model,
92108
- total_memory_gb: Math.round(osProvider.totalmem() / 1024 / 1024 / 1024),
92109
- locale: Intl.DateTimeFormat().resolvedOptions().locale,
92110
- timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
92111
- shell: process.env.SHELL,
92112
- ci: Boolean(process.env.CI),
92113
- terminal: process.env.TERM_PROGRAM,
92114
- ...input.product.additionalProperties
92115
- };
92116
- }
92117
- function getSafeCpuInfo(osProvider, input) {
92118
- try {
92119
- const cpuInfo = osProvider.cpus();
92120
- return {
92121
- count: cpuInfo.length,
92122
- model: cpuInfo[0]?.model
92123
- };
92124
- } catch (error) {
92125
- input.diagnostics?.({
92126
- event: "telemetry_cpu_info_unavailable",
92127
- source: "shared",
92128
- error,
92129
- errorKind: error instanceof Error ? "error" : "non_error"
92130
- });
92131
- return {
92132
- count: 0,
92133
- model: undefined
92134
- };
92135
- }
92136
- }
92137
- var NO_OP_CLIENT;
92138
- var init_posthog_client = __esm(() => {
92185
+ var init_posthog_transport = __esm(() => {
92139
92186
  init_index_node();
92140
- init_env();
92141
- init_machine_id();
92142
- NO_OP_CLIENT = {
92143
- enabled: false,
92144
- trackActive: () => {
92145
- return;
92146
- },
92147
- flush: async () => {
92148
- return;
92149
- },
92150
- shutdown: async () => {
92151
- return;
92152
- }
92153
- };
92154
92187
  });
92155
92188
 
92156
92189
  // packages/telemetry-core/src/events.ts
92157
- var ALLOWED_DOLLAR_KEYS;
92158
- var init_events = __esm(() => {
92159
- ALLOWED_DOLLAR_KEYS = new Set([
92160
- "$os",
92161
- "$os_version",
92162
- "$process_person_profile",
92163
- "$session_id"
92164
- ]);
92190
+ var init_events = () => {};
92191
+
92192
+ // packages/telemetry-core/src/posthog-client.ts
92193
+ function createTelemetryClient2(input) {
92194
+ return createTelemetryClient({ ...input, transportFactory: input.transportFactory ?? createDefaultPostHogTransport });
92195
+ }
92196
+ var init_posthog_client = __esm(() => {
92197
+ init_injected_client();
92198
+ init_posthog_transport();
92199
+ init_posthog_transport();
92165
92200
  });
92166
92201
 
92167
92202
  // packages/telemetry-core/src/record-daily-active.ts
@@ -92185,7 +92220,7 @@ var package_default2;
92185
92220
  var init_package2 = __esm(() => {
92186
92221
  package_default2 = {
92187
92222
  name: "@oh-my-opencode/omo-codex",
92188
- version: "5.1.38",
92223
+ version: "5.1.41",
92189
92224
  type: "module",
92190
92225
  private: true,
92191
92226
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -92315,7 +92350,7 @@ function resolveActivityStateProvider(options) {
92315
92350
  return () => getPostHogActivityCaptureState(options.now ?? new Date);
92316
92351
  }
92317
92352
  function createPostHogClient(source, options = {}) {
92318
- const client = createTelemetryClient({
92353
+ const client = createTelemetryClient2({
92319
92354
  diagnostics: writeTelemetryDiagnostic2,
92320
92355
  env: options.env ?? process.env,
92321
92356
  osProvider: options.osProvider ?? resolveOsProvider(),
@@ -99484,7 +99519,14 @@ var REQUIRED_PLUGIN_ARTIFACTS = [
99484
99519
  join63("extensions", "omo-memory-doctor.js"),
99485
99520
  join63("extensions", "omo-memory-memfs.js"),
99486
99521
  join63("extensions", "omo-memory-palace.js"),
99522
+ join63("extensions", "omo-session-history.js"),
99523
+ join63("extensions", "omo-recall-store.js"),
99524
+ join63("extensions", "omo-telemetry-posthog.js"),
99525
+ join63("extensions", "omo-memory-sync.js"),
99526
+ join63("extensions", "loro_wasm_bg.wasm"),
99527
+ join63("extensions", "CaseFolding.txt"),
99487
99528
  join63("extensions", "omo-thread-client.js"),
99529
+ join63("extensions", "omo-feedback.js"),
99488
99530
  join63("extensions", "assets.generated.json"),
99489
99531
  join63("extensions", "omo-member.js"),
99490
99532
  join63("extensions", "memory-run-supervisor.mjs"),
@@ -103813,21 +103855,21 @@ var GoalConfigSchema = object({
103813
103855
  });
103814
103856
  // packages/skills-loader-core/src/config/git-env-prefix.ts
103815
103857
  init_zod();
103816
- var GIT_ENV_ASSIGNMENT_PATTERN = /^(?:[A-Za-z_][A-Za-z0-9_]*=[A-Za-z0-9_-]*)(?: [A-Za-z_][A-Za-z0-9_]*=[A-Za-z0-9_-]*)*$/;
103858
+ var GIT_ENV_ASSIGNMENT_PATTERN2 = /^(?:[A-Za-z_][A-Za-z0-9_]*=[A-Za-z0-9_-]*)(?: [A-Za-z_][A-Za-z0-9_]*=[A-Za-z0-9_-]*)*$/;
103817
103859
  var GIT_ENV_PREFIX_VALIDATION_MESSAGE = 'git_env_prefix must be empty or use shell-safe env assignments like "GIT_MASTER=1"';
103818
103860
  function isValidGitEnvPrefix(value) {
103819
103861
  if (value === "") {
103820
103862
  return true;
103821
103863
  }
103822
- return GIT_ENV_ASSIGNMENT_PATTERN.test(value);
103864
+ return GIT_ENV_ASSIGNMENT_PATTERN2.test(value);
103823
103865
  }
103824
- var GitEnvPrefixSchema = string2().refine(isValidGitEnvPrefix, { message: GIT_ENV_PREFIX_VALIDATION_MESSAGE }).default("GIT_MASTER=1");
103866
+ var GitEnvPrefixSchema2 = string2().refine(isValidGitEnvPrefix, { message: GIT_ENV_PREFIX_VALIDATION_MESSAGE }).default("GIT_MASTER=1");
103825
103867
  // packages/omo-opencode/src/config/schema/git-master.ts
103826
103868
  init_zod();
103827
103869
  var GitMasterConfigSchema = object({
103828
103870
  commit_footer: union([boolean2(), string2()]).default(false),
103829
103871
  include_co_authored_by: boolean2().default(false),
103830
- git_env_prefix: GitEnvPrefixSchema
103872
+ git_env_prefix: GitEnvPrefixSchema2
103831
103873
  });
103832
103874
  // packages/omo-opencode/src/config/schema/hooks.ts
103833
103875
  init_zod();
@@ -106093,7 +106135,7 @@ function createPostHogClient2(source, options = {}) {
106093
106135
  if (shouldDisablePostHog(env, options.configEnabled)) {
106094
106136
  return NO_OP_POSTHOG2;
106095
106137
  }
106096
- const client = createTelemetryClient({
106138
+ const client = createTelemetryClient2({
106097
106139
  diagnostics: logTelemetryDiagnostic,
106098
106140
  env: createCoreCompatibleTelemetryEnv(env),
106099
106141
  osProvider: resolveOsProvider2(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lazycodex-ai",
3
- "version": "5.1.38",
3
+ "version": "5.1.41",
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",
@@ -1404,6 +1404,13 @@ function validateCwd(cwd) {
1404
1404
  };
1405
1405
  }
1406
1406
  }
1407
+ function guardPipeErrors(stream, pipe) {
1408
+ stream.on("error", (error) => {
1409
+ if (stream.listenerCount("error") > 1)
1410
+ return;
1411
+ reportBestEffortCleanupError(`server ${pipe}`, error);
1412
+ });
1413
+ }
1407
1414
  function wrap(proc) {
1408
1415
  const exitedPromise = new Promise((resolve) => {
1409
1416
  proc.once("close", (code) => resolve(code ?? 0));
@@ -1412,6 +1419,9 @@ function wrap(proc) {
1412
1419
  if (!proc.stdin || !proc.stdout || !proc.stderr) {
1413
1420
  throw new LspProcessSpawnError("Spawned process is missing one of stdin/stdout/stderr pipes");
1414
1421
  }
1422
+ guardPipeErrors(proc.stdin, "stdin");
1423
+ guardPipeErrors(proc.stdout, "stdout");
1424
+ guardPipeErrors(proc.stderr, "stderr");
1415
1425
  return {
1416
1426
  stdin: proc.stdin,
1417
1427
  stdout: proc.stdout,
@@ -1640,6 +1640,13 @@ function validateCwd(cwd) {
1640
1640
  };
1641
1641
  }
1642
1642
  }
1643
+ function guardPipeErrors(stream, pipe) {
1644
+ stream.on("error", (error) => {
1645
+ if (stream.listenerCount("error") > 1)
1646
+ return;
1647
+ reportBestEffortCleanupError(`server ${pipe}`, error);
1648
+ });
1649
+ }
1643
1650
  function wrap(proc) {
1644
1651
  const exitedPromise = new Promise((resolve) => {
1645
1652
  proc.once("close", (code) => resolve(code ?? 0));
@@ -1648,6 +1655,9 @@ function wrap(proc) {
1648
1655
  if (!proc.stdin || !proc.stdout || !proc.stderr) {
1649
1656
  throw new LspProcessSpawnError("Spawned process is missing one of stdin/stdout/stderr pipes");
1650
1657
  }
1658
+ guardPipeErrors(proc.stdin, "stdin");
1659
+ guardPipeErrors(proc.stdout, "stdout");
1660
+ guardPipeErrors(proc.stderr, "stderr");
1651
1661
  return {
1652
1662
  stdin: proc.stdin,
1653
1663
  stdout: proc.stdout,
@@ -465,6 +465,13 @@ function validateCwd(cwd) {
465
465
  };
466
466
  }
467
467
  }
468
+ function guardPipeErrors(stream, pipe) {
469
+ stream.on("error", (error) => {
470
+ if (stream.listenerCount("error") > 1)
471
+ return;
472
+ reportBestEffortCleanupError(`server ${pipe}`, error);
473
+ });
474
+ }
468
475
  function wrap(proc) {
469
476
  const exitedPromise = new Promise((resolve) => {
470
477
  proc.once("close", (code) => resolve(code ?? 0));
@@ -473,6 +480,9 @@ function wrap(proc) {
473
480
  if (!proc.stdin || !proc.stdout || !proc.stderr) {
474
481
  throw new LspProcessSpawnError("Spawned process is missing one of stdin/stdout/stderr pipes");
475
482
  }
483
+ guardPipeErrors(proc.stdin, "stdin");
484
+ guardPipeErrors(proc.stdout, "stdout");
485
+ guardPipeErrors(proc.stderr, "stderr");
476
486
  return {
477
487
  stdin: proc.stdin,
478
488
  stdout: proc.stdout,
@@ -470,6 +470,13 @@ function validateCwd(cwd) {
470
470
  };
471
471
  }
472
472
  }
473
+ function guardPipeErrors(stream, pipe) {
474
+ stream.on("error", (error) => {
475
+ if (stream.listenerCount("error") > 1)
476
+ return;
477
+ reportBestEffortCleanupError(`server ${pipe}`, error);
478
+ });
479
+ }
473
480
  function wrap(proc) {
474
481
  const exitedPromise = new Promise((resolve) => {
475
482
  proc.once("close", (code) => resolve(code ?? 0));
@@ -478,6 +485,9 @@ function wrap(proc) {
478
485
  if (!proc.stdin || !proc.stdout || !proc.stderr) {
479
486
  throw new LspProcessSpawnError("Spawned process is missing one of stdin/stdout/stderr pipes");
480
487
  }
488
+ guardPipeErrors(proc.stdin, "stdin");
489
+ guardPipeErrors(proc.stdout, "stdout");
490
+ guardPipeErrors(proc.stderr, "stderr");
481
491
  return {
482
492
  stdin: proc.stdin,
483
493
  stdout: proc.stdout,
@@ -465,6 +465,13 @@ function validateCwd(cwd) {
465
465
  };
466
466
  }
467
467
  }
468
+ function guardPipeErrors(stream, pipe) {
469
+ stream.on("error", (error) => {
470
+ if (stream.listenerCount("error") > 1)
471
+ return;
472
+ reportBestEffortCleanupError(`server ${pipe}`, error);
473
+ });
474
+ }
468
475
  function wrap(proc) {
469
476
  const exitedPromise = new Promise((resolve) => {
470
477
  proc.once("close", (code) => resolve(code ?? 0));
@@ -473,6 +480,9 @@ function wrap(proc) {
473
480
  if (!proc.stdin || !proc.stdout || !proc.stderr) {
474
481
  throw new LspProcessSpawnError("Spawned process is missing one of stdin/stdout/stderr pipes");
475
482
  }
483
+ guardPipeErrors(proc.stdin, "stdin");
484
+ guardPipeErrors(proc.stdout, "stdout");
485
+ guardPipeErrors(proc.stderr, "stderr");
476
486
  return {
477
487
  stdin: proc.stdin,
478
488
  stdout: proc.stdout,