evil-omo 3.17.0 → 3.17.5

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 (161) hide show
  1. package/README.ja.md +6 -2
  2. package/README.ko.md +6 -2
  3. package/README.ru.md +6 -2
  4. package/README.zh-cn.md +6 -2
  5. package/dist/__tests__/perf/fixtures/in-tree/packages/pkg-one/src/file-16.d.ts +1 -0
  6. package/dist/__tests__/perf/fixtures/in-tree/packages/pkg-one/src/file-17.d.ts +1 -0
  7. package/dist/__tests__/perf/fixtures/in-tree/packages/pkg-one/src/file-18.d.ts +1 -0
  8. package/dist/__tests__/perf/fixtures/in-tree/packages/pkg-one/src/file-19.d.ts +1 -0
  9. package/dist/__tests__/perf/fixtures/in-tree/packages/pkg-one/src/file-20.d.ts +1 -0
  10. package/dist/__tests__/perf/fixtures/in-tree/src/app/file-01.d.ts +1 -0
  11. package/dist/__tests__/perf/fixtures/in-tree/src/app/file-02.d.ts +1 -0
  12. package/dist/__tests__/perf/fixtures/in-tree/src/app/file-03.d.ts +1 -0
  13. package/dist/__tests__/perf/fixtures/in-tree/src/app/file-04.d.ts +1 -0
  14. package/dist/__tests__/perf/fixtures/in-tree/src/app/file-05.d.ts +1 -0
  15. package/dist/__tests__/perf/fixtures/in-tree/src/app/file-06.d.ts +1 -0
  16. package/dist/__tests__/perf/fixtures/in-tree/src/app/file-07.d.ts +1 -0
  17. package/dist/__tests__/perf/fixtures/in-tree/src/app/file-08.d.ts +1 -0
  18. package/dist/__tests__/perf/fixtures/in-tree/src/app/file-09.d.ts +1 -0
  19. package/dist/__tests__/perf/fixtures/in-tree/src/app/file-10.d.ts +1 -0
  20. package/dist/__tests__/perf/fixtures/in-tree/src/lib/file-11.d.ts +1 -0
  21. package/dist/__tests__/perf/fixtures/in-tree/src/lib/file-12.d.ts +1 -0
  22. package/dist/__tests__/perf/fixtures/in-tree/src/lib/file-13.d.ts +1 -0
  23. package/dist/__tests__/perf/fixtures/in-tree/src/lib/file-14.d.ts +1 -0
  24. package/dist/__tests__/perf/fixtures/in-tree/src/lib/file-15.d.ts +1 -0
  25. package/dist/agents/atlas/default-prompt-sections.d.ts +2 -2
  26. package/dist/agents/atlas/gemini-prompt-sections.d.ts +1 -1
  27. package/dist/agents/atlas/gpt-prompt-sections.d.ts +1 -1
  28. package/dist/agents/types.d.ts +1 -1
  29. package/dist/cli/doctor/spawn-with-timeout.d.ts +8 -0
  30. package/dist/cli/index.js +18440 -16031
  31. package/dist/cli/install-validators.d.ts +1 -0
  32. package/dist/cli/model-fallback-types.d.ts +1 -0
  33. package/dist/cli/provider-model-id-transform.d.ts +1 -1
  34. package/dist/cli/types.d.ts +3 -0
  35. package/dist/config/schema/agent-definitions.d.ts +3 -0
  36. package/dist/config/schema/background-task.d.ts +0 -1
  37. package/dist/config/schema/evil-omo-config.d.ts +11 -3
  38. package/dist/create-hooks.d.ts +2 -0
  39. package/dist/create-managers.d.ts +2 -0
  40. package/dist/create-tools.d.ts +3 -2
  41. package/dist/evil-omo.schema.json +24 -6
  42. package/dist/features/background-agent/index.d.ts +2 -0
  43. package/dist/features/background-agent/process-cleanup.test-helpers.d.ts +4 -0
  44. package/dist/features/background-agent/session-existence.d.ts +1 -1
  45. package/dist/features/background-agent/subagent-spawn-limits.d.ts +1 -8
  46. package/dist/features/background-agent/task-poller.d.ts +1 -0
  47. package/dist/features/background-agent/wait-for-task-session.d.ts +17 -0
  48. package/dist/features/builtin-commands/commands.d.ts +2 -1
  49. package/dist/features/claude-code-agent-loader/agent-definitions-loader.d.ts +3 -0
  50. package/dist/features/claude-code-agent-loader/index.d.ts +3 -0
  51. package/dist/features/claude-code-agent-loader/json-agent-loader.d.ts +2 -0
  52. package/dist/features/claude-code-agent-loader/loader.d.ts +2 -0
  53. package/dist/features/claude-code-agent-loader/opencode-config-agents-reader.d.ts +2 -0
  54. package/dist/features/claude-code-agent-loader/types.d.ts +9 -1
  55. package/dist/features/claude-code-command-loader/loader-cache.d.ts +6 -0
  56. package/dist/features/claude-code-command-loader/loader.d.ts +2 -0
  57. package/dist/features/team-mode/index.d.ts +2 -0
  58. package/dist/features/team-mode/team-layout-tmux/index.d.ts +1 -0
  59. package/dist/features/team-mode/team-layout-tmux/layout.d.ts +15 -0
  60. package/dist/features/team-mode/team-worktree/cleanup.d.ts +3 -0
  61. package/dist/features/team-mode/team-worktree/index.d.ts +2 -0
  62. package/dist/features/team-mode/team-worktree/manager.d.ts +15 -0
  63. package/dist/features/team-mode/types.d.ts +210 -0
  64. package/dist/features/tmux-subagent/event-handlers.d.ts +0 -4
  65. package/dist/features/tmux-subagent/index.d.ts +0 -3
  66. package/dist/features/tmux-subagent/manager.d.ts +4 -0
  67. package/dist/features/tmux-subagent/polling-manager.d.ts +2 -1
  68. package/dist/features/tool-metadata-store/index.d.ts +7 -0
  69. package/dist/features/tool-metadata-store/publish-tool-metadata.d.ts +9 -0
  70. package/dist/features/tool-metadata-store/recover-tool-metadata.d.ts +3 -0
  71. package/dist/features/tool-metadata-store/resolve-tool-call-id.d.ts +6 -0
  72. package/dist/features/tool-metadata-store/task-metadata-contract.d.ts +10 -0
  73. package/dist/hooks/atlas/system-reminder-templates.d.ts +2 -2
  74. package/dist/hooks/auto-update-checker/hook/deferred-startup-check.d.ts +1 -0
  75. package/dist/hooks/comment-checker/initialization-gate.d.ts +1 -0
  76. package/dist/hooks/directory-agents-injector/finder.d.ts +1 -1
  77. package/dist/hooks/directory-agents-injector/hook.d.ts +7 -7
  78. package/dist/hooks/directory-readme-injector/finder.d.ts +1 -1
  79. package/dist/hooks/directory-readme-injector/hook.d.ts +7 -7
  80. package/dist/hooks/index.d.ts +1 -1
  81. package/dist/hooks/keyword-detector/ultrawork/planner.d.ts +1 -1
  82. package/dist/hooks/model-fallback/controller-accessor.d.ts +8 -0
  83. package/dist/hooks/model-fallback/fallback-state-controller.d.ts +26 -0
  84. package/dist/hooks/model-fallback/hook.d.ts +21 -16
  85. package/dist/hooks/model-fallback/index.d.ts +2 -0
  86. package/dist/hooks/model-fallback/next-fallback.d.ts +8 -0
  87. package/dist/hooks/preemptive-compaction-trigger.d.ts +13 -0
  88. package/dist/hooks/preemptive-compaction-types.d.ts +53 -0
  89. package/dist/hooks/preemptive-compaction.d.ts +3 -15
  90. package/dist/hooks/rules-injector/cache.d.ts +5 -0
  91. package/dist/hooks/rules-injector/injector.d.ts +2 -0
  92. package/dist/hooks/rules-injector/project-root-finder.d.ts +1 -0
  93. package/dist/hooks/rules-injector/rule-file-finder.d.ts +2 -19
  94. package/dist/hooks/rules-injector/rule-scan-cache.d.ts +6 -0
  95. package/dist/hooks/session-notification-event-properties.d.ts +5 -0
  96. package/dist/hooks/session-notification-init.d.ts +7 -0
  97. package/dist/hooks/todo-continuation-enforcer/session-state.d.ts +1 -0
  98. package/dist/hooks/write-existing-file-guard/tool-execute-before-handler.d.ts +1 -1
  99. package/dist/index.d.ts +3 -3
  100. package/dist/index.js +70250 -92660
  101. package/dist/openclaw/config.d.ts +1 -1
  102. package/dist/openclaw/dispatcher.d.ts +0 -1
  103. package/dist/openclaw/gateway-url-validation.d.ts +1 -0
  104. package/dist/plugin/hooks/create-core-hooks.d.ts +2 -0
  105. package/dist/plugin/hooks/create-session-hooks.d.ts +2 -0
  106. package/dist/plugin/tool-registry.d.ts +1 -1
  107. package/dist/shared/agent-tool-restrictions.d.ts +0 -5
  108. package/dist/shared/excluded-dirs.d.ts +1 -0
  109. package/dist/shared/index.d.ts +5 -0
  110. package/dist/shared/jsonc-parser.d.ts +8 -5
  111. package/dist/shared/load-opencode-plugins.d.ts +1 -0
  112. package/dist/shared/migration/migrations-sidecar.d.ts +1 -1
  113. package/dist/shared/model-capabilities/supplemental-entries.d.ts +2 -0
  114. package/dist/shared/opencode-provider-auth.d.ts +3 -0
  115. package/dist/shared/parse-tools-config.d.ts +6 -0
  116. package/dist/shared/permission-compat.d.ts +1 -1
  117. package/dist/shared/project-discovery-dirs.d.ts +2 -0
  118. package/dist/shared/resolve-agent-definition-paths.d.ts +1 -0
  119. package/dist/shared/ripgrep-cli.d.ts +8 -0
  120. package/dist/shared/tmux/tmux-utils/index.d.ts +1 -0
  121. package/dist/shared/tmux/tmux-utils/session-kill.d.ts +1 -0
  122. package/dist/shared/tmux/tmux-utils/session-spawn.d.ts +1 -0
  123. package/dist/shared/tmux/tmux-utils/spawn-process.d.ts +1 -0
  124. package/dist/shared/tmux/tmux-utils/stale-session-sweep.d.ts +11 -0
  125. package/dist/shared/tmux/tmux-utils.d.ts +3 -1
  126. package/dist/tools/ast-grep/pattern-hints.d.ts +4 -0
  127. package/dist/tools/ast-grep/tool-descriptions.d.ts +3 -0
  128. package/dist/tools/call-omo-agent/agent-resolver.d.ts +17 -0
  129. package/dist/tools/call-omo-agent/constants.d.ts +1 -1
  130. package/dist/tools/call-omo-agent/sync-executor.d.ts +2 -3
  131. package/dist/tools/call-omo-agent/tools.d.ts +2 -1
  132. package/dist/tools/delegate-task/background-continuation.d.ts +1 -1
  133. package/dist/tools/delegate-task/delegated-model-config.d.ts +3 -0
  134. package/dist/tools/delegate-task/executor-types.d.ts +2 -0
  135. package/dist/tools/delegate-task/fallback-entry-resolution.d.ts +12 -0
  136. package/dist/tools/delegate-task/fallback-entry-settings.d.ts +7 -0
  137. package/dist/tools/delegate-task/resolve-metadata-model.d.ts +9 -0
  138. package/dist/tools/delegate-task/subagent-discovery.d.ts +15 -0
  139. package/dist/tools/delegate-task/sync-continuation.d.ts +2 -2
  140. package/dist/tools/delegate-task/sync-task-fallback.d.ts +12 -0
  141. package/dist/tools/delegate-task/task-id.d.ts +2 -0
  142. package/dist/tools/delegate-task/tool-argument-preparation.d.ts +2 -0
  143. package/dist/tools/delegate-task/tool-description.d.ts +9 -0
  144. package/dist/tools/delegate-task/types.d.ts +4 -5
  145. package/dist/tools/glob/constants.d.ts +1 -1
  146. package/dist/tools/grep/cli.d.ts +1 -1
  147. package/dist/tools/grep/constants.d.ts +0 -8
  148. package/dist/tools/look-at/look-at-input-preparer.d.ts +22 -0
  149. package/dist/tools/look-at/look-at-prompt.d.ts +2 -0
  150. package/dist/tools/look-at/look-at-session-runner.d.ts +12 -0
  151. package/dist/tools/skill/constants.d.ts +1 -1
  152. package/dist/tools/skill/description-formatter.d.ts +1 -1
  153. package/dist/tools/skill/session-skill-cache.d.ts +1 -0
  154. package/dist/tools/skill-mcp/parse-skill-mcp-arguments.d.ts +1 -0
  155. package/package.json +20 -17
  156. package/dist/features/tmux-subagent/cleanup.d.ts +0 -9
  157. package/dist/features/tmux-subagent/session-created-handler.d.ts +0 -22
  158. package/dist/features/tmux-subagent/session-deleted-handler.d.ts +0 -15
  159. package/dist/plugin-dispose.d.ts +0 -13
  160. package/dist/tools/delegate-task/resolve-call-id.d.ts +0 -2
  161. /package/dist/{tools/delegate-task → shared}/model-string-parser.d.ts +0 -0
@@ -30,4 +30,5 @@ export declare function detectedToInitialValues(detected: DetectedConfig): {
30
30
  zaiCodingPlan: BooleanArg;
31
31
  kimiForCoding: BooleanArg;
32
32
  opencodeGo: BooleanArg;
33
+ vercelAiGateway: BooleanArg;
33
34
  };
@@ -10,6 +10,7 @@ export interface ProviderAvailability {
10
10
  zai: boolean;
11
11
  kimiForCoding: boolean;
12
12
  opencodeGo: boolean;
13
+ vercelAiGateway: boolean;
13
14
  isMaxPlan: boolean;
14
15
  }
15
16
  export interface AgentConfig {
@@ -1 +1 @@
1
- export { transformModelForProvider } from "../shared/provider-model-id-transform";
1
+ export declare function transformModelForProvider(provider: string, model: string): string;
@@ -10,6 +10,7 @@ export interface InstallArgs {
10
10
  zaiCodingPlan?: BooleanArg;
11
11
  kimiForCoding?: BooleanArg;
12
12
  opencodeGo?: BooleanArg;
13
+ vercelAiGateway?: BooleanArg;
13
14
  skipAuth?: boolean;
14
15
  }
15
16
  export interface InstallConfig {
@@ -22,6 +23,7 @@ export interface InstallConfig {
22
23
  hasZaiCodingPlan: boolean;
23
24
  hasKimiForCoding: boolean;
24
25
  hasOpencodeGo: boolean;
26
+ hasVercelAiGateway: boolean;
25
27
  }
26
28
  export interface ConfigMergeResult {
27
29
  success: boolean;
@@ -40,4 +42,5 @@ export interface DetectedConfig {
40
42
  hasZaiCodingPlan: boolean;
41
43
  hasKimiForCoding: boolean;
42
44
  hasOpencodeGo: boolean;
45
+ hasVercelAiGateway: boolean;
43
46
  }
@@ -0,0 +1,3 @@
1
+ import { z } from "zod";
2
+ export declare const AgentDefinitionPathSchema: z.ZodString;
3
+ export declare const AgentDefinitionsConfigSchema: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -4,7 +4,6 @@ export declare const BackgroundTaskConfigSchema: z.ZodObject<{
4
4
  providerConcurrency: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
5
5
  modelConcurrency: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
6
6
  maxDepth: z.ZodOptional<z.ZodNumber>;
7
- maxDescendants: z.ZodOptional<z.ZodNumber>;
8
7
  staleTimeoutMs: z.ZodOptional<z.ZodNumber>;
9
8
  messageStalenessTimeoutMs: z.ZodOptional<z.ZodNumber>;
10
9
  taskTtlMs: z.ZodOptional<z.ZodNumber>;
@@ -3,9 +3,18 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
3
3
  $schema: z.ZodOptional<z.ZodString>;
4
4
  new_task_system_enabled: z.ZodOptional<z.ZodBoolean>;
5
5
  default_run_agent: z.ZodOptional<z.ZodString>;
6
+ agent_definitions: z.ZodOptional<z.ZodArray<z.ZodString>>;
6
7
  disabled_mcps: z.ZodOptional<z.ZodArray<z.ZodString>>;
7
8
  disabled_agents: z.ZodOptional<z.ZodArray<z.ZodString>>;
8
- disabled_skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
9
+ disabled_skills: z.ZodOptional<z.ZodArray<z.ZodEnum<{
10
+ playwright: "playwright";
11
+ "agent-browser": "agent-browser";
12
+ "dev-browser": "dev-browser";
13
+ "frontend-ui-ux": "frontend-ui-ux";
14
+ "git-master": "git-master";
15
+ "review-work": "review-work";
16
+ "ai-slop-remover": "ai-slop-remover";
17
+ }>>>;
9
18
  disabled_hooks: z.ZodOptional<z.ZodArray<z.ZodString>>;
10
19
  disabled_commands: z.ZodOptional<z.ZodArray<z.ZodEnum<{
11
20
  "init-deep": "init-deep";
@@ -1987,7 +1996,6 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1987
1996
  providerConcurrency: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
1988
1997
  modelConcurrency: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
1989
1998
  maxDepth: z.ZodOptional<z.ZodNumber>;
1990
- maxDescendants: z.ZodOptional<z.ZodNumber>;
1991
1999
  staleTimeoutMs: z.ZodOptional<z.ZodNumber>;
1992
2000
  messageStalenessTimeoutMs: z.ZodOptional<z.ZodNumber>;
1993
2001
  taskTtlMs: z.ZodOptional<z.ZodNumber>;
@@ -2043,7 +2051,7 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
2043
2051
  babysitting: z.ZodOptional<z.ZodObject<{
2044
2052
  timeout_ms: z.ZodDefault<z.ZodNumber>;
2045
2053
  }, z.core.$strip>>;
2046
- git_master: z.ZodOptional<z.ZodObject<{
2054
+ git_master: z.ZodDefault<z.ZodObject<{
2047
2055
  commit_footer: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
2048
2056
  include_co_authored_by: z.ZodDefault<z.ZodBoolean>;
2049
2057
  git_env_prefix: z.ZodDefault<z.ZodString>;
@@ -2,6 +2,7 @@ import type { AvailableSkill } from "./agents/dynamic-agent-prompt-builder";
2
2
  import type { HookName, OhMyOpenCodeConfig } from "./config";
3
3
  import type { LoadedSkill } from "./features/opencode-skill-loader/types";
4
4
  import type { BackgroundManager } from "./features/background-agent";
5
+ import type { ModelFallbackControllerAccessor } from "./hooks/model-fallback";
5
6
  import type { PluginContext } from "./plugin/types";
6
7
  import type { ModelCacheState } from "./plugin-state";
7
8
  export type CreatedHooks = ReturnType<typeof createHooks>;
@@ -22,6 +23,7 @@ export declare function createHooks(args: {
22
23
  pluginConfig: OhMyOpenCodeConfig;
23
24
  modelCacheState: ModelCacheState;
24
25
  backgroundManager: BackgroundManager;
26
+ modelFallbackControllerAccessor?: ModelFallbackControllerAccessor;
25
27
  isHookEnabled: (hookName: HookName) => boolean;
26
28
  safeHookEnabled: boolean;
27
29
  mergedSkills: LoadedSkill[];
@@ -8,6 +8,7 @@ import { TmuxSessionManager } from "./features/tmux-subagent";
8
8
  import { registerManagerForCleanup } from "./features/background-agent/process-cleanup";
9
9
  import { createConfigHandler } from "./plugin-handlers";
10
10
  import { markServerRunningInProcess } from "./shared/tmux/tmux-utils/server-health";
11
+ import type { ModelFallbackControllerAccessor } from "./hooks/model-fallback";
11
12
  type CreateManagersDeps = {
12
13
  BackgroundManagerClass: typeof BackgroundManager;
13
14
  SkillMcpManagerClass: typeof SkillMcpManager;
@@ -22,6 +23,7 @@ export type Managers = {
22
23
  backgroundManager: BackgroundManager;
23
24
  skillMcpManager: SkillMcpManager;
24
25
  configHandler: ReturnType<typeof createConfigHandler>;
26
+ modelFallbackControllerAccessor: ModelFallbackControllerAccessor;
25
27
  };
26
28
  export declare function createManagers(args: {
27
29
  ctx: PluginContext;
@@ -4,7 +4,7 @@ import type { BrowserAutomationProvider } from "./config/schema/browser-automati
4
4
  import type { LoadedSkill } from "./features/opencode-skill-loader/types";
5
5
  import type { PluginContext, ToolsRecord } from "./plugin/types";
6
6
  import type { Managers } from "./create-managers";
7
- export type CreateToolsResult = {
7
+ type CreateToolsResult = {
8
8
  filteredTools: ToolsRecord;
9
9
  mergedSkills: LoadedSkill[];
10
10
  availableSkills: AvailableSkill[];
@@ -16,5 +16,6 @@ export type CreateToolsResult = {
16
16
  export declare function createTools(args: {
17
17
  ctx: PluginContext;
18
18
  pluginConfig: OhMyOpenCodeConfig;
19
- managers: Pick<Managers, "backgroundManager" | "tmuxSessionManager" | "skillMcpManager">;
19
+ managers: Pick<Managers, "backgroundManager" | "tmuxSessionManager" | "skillMcpManager" | "modelFallbackControllerAccessor">;
20
20
  }): Promise<CreateToolsResult>;
21
+ export {};
@@ -14,6 +14,13 @@
14
14
  "default_run_agent": {
15
15
  "type": "string"
16
16
  },
17
+ "agent_definitions": {
18
+ "type": "array",
19
+ "items": {
20
+ "type": "string",
21
+ "minLength": 1
22
+ }
23
+ },
17
24
  "disabled_mcps": {
18
25
  "type": "array",
19
26
  "items": {
@@ -32,7 +39,15 @@
32
39
  "type": "array",
33
40
  "items": {
34
41
  "type": "string",
35
- "minLength": 1
42
+ "enum": [
43
+ "playwright",
44
+ "agent-browser",
45
+ "dev-browser",
46
+ "frontend-ui-ux",
47
+ "git-master",
48
+ "review-work",
49
+ "ai-slop-remover"
50
+ ]
36
51
  }
37
52
  },
38
53
  "disabled_hooks": {
@@ -5623,11 +5638,6 @@
5623
5638
  "minimum": 1,
5624
5639
  "maximum": 9007199254740991
5625
5640
  },
5626
- "maxDescendants": {
5627
- "type": "integer",
5628
- "minimum": 1,
5629
- "maximum": 9007199254740991
5630
- },
5631
5641
  "staleTimeoutMs": {
5632
5642
  "type": "number",
5633
5643
  "minimum": 60000
@@ -5860,6 +5870,11 @@
5860
5870
  "additionalProperties": false
5861
5871
  },
5862
5872
  "git_master": {
5873
+ "default": {
5874
+ "commit_footer": true,
5875
+ "include_co_authored_by": true,
5876
+ "git_env_prefix": "GIT_MASTER=1"
5877
+ },
5863
5878
  "type": "object",
5864
5879
  "properties": {
5865
5880
  "commit_footer": {
@@ -6058,5 +6073,8 @@
6058
6073
  }
6059
6074
  }
6060
6075
  },
6076
+ "required": [
6077
+ "git_master"
6078
+ ],
6061
6079
  "additionalProperties": false
6062
6080
  }
@@ -1,2 +1,4 @@
1
1
  export * from "./types";
2
2
  export { BackgroundManager, type SubagentSessionCreatedEvent, type OnSubagentSessionCreated } from "./manager";
3
+ export { waitForTaskSessionID } from "./wait-for-task-session";
4
+ export type { WaitForTaskSessionIDOptions } from "./wait-for-task-session";
@@ -0,0 +1,4 @@
1
+ type ProcessCleanupEvent = NodeJS.Signals | "beforeExit" | "exit" | "uncaughtException" | "unhandledRejection";
2
+ export declare function getNewListener(signal: ProcessCleanupEvent, existingListeners: Function[]): () => void;
3
+ export declare function flushMicrotasks(): Promise<void>;
4
+ export {};
@@ -1,3 +1,3 @@
1
1
  import type { OpencodeClient } from "./opencode-client";
2
2
  export declare const MIN_SESSION_GONE_POLLS = 3;
3
- export declare function verifySessionExists(client: OpencodeClient, sessionID: string): Promise<boolean>;
3
+ export declare function verifySessionExists(client: OpencodeClient, sessionID: string, directory?: string): Promise<boolean>;
@@ -1,23 +1,16 @@
1
1
  import type { BackgroundTaskConfig } from "../../config/schema";
2
2
  import type { OpencodeClient } from "./constants";
3
3
  export declare const DEFAULT_MAX_SUBAGENT_DEPTH = 3;
4
- export declare const DEFAULT_MAX_ROOT_SESSION_SPAWN_BUDGET = 50;
5
4
  export interface SubagentSpawnContext {
6
5
  rootSessionID: string;
7
6
  parentDepth: number;
8
7
  childDepth: number;
9
8
  }
10
9
  export declare function getMaxSubagentDepth(config?: BackgroundTaskConfig): number;
11
- export declare function getMaxRootSessionSpawnBudget(config?: BackgroundTaskConfig): number;
12
- export declare function resolveSubagentSpawnContext(client: OpencodeClient, parentSessionID: string): Promise<SubagentSpawnContext>;
10
+ export declare function resolveSubagentSpawnContext(client: OpencodeClient, parentSessionID: string, directory?: string): Promise<SubagentSpawnContext>;
13
11
  export declare function createSubagentDepthLimitError(input: {
14
12
  childDepth: number;
15
13
  maxDepth: number;
16
14
  parentSessionID: string;
17
15
  rootSessionID: string;
18
16
  }): Error;
19
- export declare function createSubagentDescendantLimitError(input: {
20
- rootSessionID: string;
21
- descendantCount: number;
22
- maxDescendants: number;
23
- }): Error;
@@ -14,6 +14,7 @@ export type SessionStatusMap = Record<string, {
14
14
  export declare function checkAndInterruptStaleTasks(args: {
15
15
  tasks: Iterable<BackgroundTask>;
16
16
  client: OpencodeClient;
17
+ directory?: string;
17
18
  config: BackgroundTaskConfig | undefined;
18
19
  concurrencyManager: ConcurrencyManager;
19
20
  notifyParentSession: (task: BackgroundTask) => Promise<void>;
@@ -0,0 +1,17 @@
1
+ import type { BackgroundTaskStatus } from "./types";
2
+ type AbortSignalLike = {
3
+ aborted: boolean;
4
+ };
5
+ interface TaskReader {
6
+ getTask(taskID: string): {
7
+ sessionID?: string;
8
+ status?: BackgroundTaskStatus;
9
+ } | undefined;
10
+ }
11
+ export interface WaitForTaskSessionIDOptions {
12
+ timeoutMs?: number;
13
+ intervalMs?: number;
14
+ signal?: AbortSignalLike;
15
+ }
16
+ export declare function waitForTaskSessionID(manager: TaskReader, taskID: string, options?: WaitForTaskSessionIDOptions): Promise<string | undefined>;
17
+ export {};
@@ -1,5 +1,6 @@
1
1
  import type { BuiltinCommandName, BuiltinCommands } from "./types";
2
- export interface LoadBuiltinCommandsOptions {
2
+ interface LoadBuiltinCommandsOptions {
3
3
  useRegisteredAgents?: boolean;
4
4
  }
5
5
  export declare function loadBuiltinCommands(disabledCommands?: BuiltinCommandName[], options?: LoadBuiltinCommandsOptions): BuiltinCommands;
6
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { AgentScope, ClaudeCodeAgentConfig, LoadedAgent } from "./types";
2
+ export declare function parseMarkdownAgentFile(filePath: string, scope: AgentScope): LoadedAgent | null;
3
+ export declare function loadAgentDefinitions(paths: string[], scope: AgentScope): Record<string, ClaudeCodeAgentConfig>;
@@ -1,2 +1,5 @@
1
1
  export * from "./types";
2
2
  export * from "./loader";
3
+ export * from "./agent-definitions-loader";
4
+ export * from "./opencode-config-agents-reader";
5
+ export * from "./json-agent-loader";
@@ -0,0 +1,2 @@
1
+ import type { AgentScope, LoadedAgent } from "./types";
2
+ export declare function parseJsonAgentFile(filePath: string, scope: AgentScope): LoadedAgent | null;
@@ -1,3 +1,5 @@
1
1
  import type { ClaudeCodeAgentConfig } from "./types";
2
2
  export declare function loadUserAgents(): Record<string, ClaudeCodeAgentConfig>;
3
3
  export declare function loadProjectAgents(directory?: string): Record<string, ClaudeCodeAgentConfig>;
4
+ export declare function loadOpencodeGlobalAgents(): Record<string, ClaudeCodeAgentConfig>;
5
+ export declare function loadOpencodeProjectAgents(directory?: string): Record<string, ClaudeCodeAgentConfig>;
@@ -0,0 +1,2 @@
1
+ import type { ClaudeCodeAgentConfig } from "./types";
2
+ export declare function readOpencodeConfigAgents(directory: string): Record<string, ClaudeCodeAgentConfig>;
@@ -1,5 +1,5 @@
1
1
  import type { AgentConfig } from "@opencode-ai/sdk";
2
- export type AgentScope = "user" | "project";
2
+ export type AgentScope = "user" | "project" | "opencode" | "opencode-project" | "definition-file" | "opencode-config";
3
3
  export type ClaudeCodeAgentConfig = Omit<AgentConfig, "model"> & {
4
4
  model?: string | {
5
5
  providerID: string;
@@ -13,6 +13,14 @@ export interface AgentFrontmatter {
13
13
  tools?: string;
14
14
  mode?: "subagent" | "primary" | "all";
15
15
  }
16
+ export interface AgentJsonDefinition {
17
+ name: string;
18
+ description?: string;
19
+ model?: string;
20
+ tools?: string | string[];
21
+ mode?: "subagent" | "primary" | "all";
22
+ prompt: string;
23
+ }
16
24
  export interface LoadedAgent {
17
25
  name: string;
18
26
  path: string;
@@ -0,0 +1,6 @@
1
+ import type { CommandDefinition } from "./types";
2
+ export declare function getCommandLoaderCacheKey(directory?: string): Promise<string>;
3
+ export declare function getCachedCommands(cacheKey: string): Promise<Record<string, CommandDefinition>> | undefined;
4
+ export declare function setCachedCommands(cacheKey: string, commands: Promise<Record<string, CommandDefinition>>): void;
5
+ export declare function deleteCachedCommands(cacheKey: string): void;
6
+ export declare function clearCommandLoaderCache(): void;
@@ -1,4 +1,6 @@
1
+ import { clearCommandLoaderCache } from "./loader-cache";
1
2
  import type { CommandDefinition } from "./types";
3
+ export { clearCommandLoaderCache };
2
4
  export declare function loadUserCommands(): Promise<Record<string, CommandDefinition>>;
3
5
  export declare function loadProjectCommands(directory?: string): Promise<Record<string, CommandDefinition>>;
4
6
  export declare function loadOpencodeGlobalCommands(): Promise<Record<string, CommandDefinition>>;
@@ -0,0 +1,2 @@
1
+ export * from "./types";
2
+ export * from "./team-worktree";
@@ -0,0 +1 @@
1
+ export { canVisualize, createTeamLayout, removeTeamLayout } from "./layout";
@@ -0,0 +1,15 @@
1
+ import type { TmuxSessionManager } from "../../tmux-subagent/manager";
2
+ type TeamLayoutMember = {
3
+ name: string;
4
+ sessionId: string;
5
+ color?: string;
6
+ };
7
+ type TeamLayoutResult = {
8
+ focusWindowId: string;
9
+ gridWindowId: string;
10
+ panesByMember: Record<string, string>;
11
+ };
12
+ export declare function canVisualize(): boolean;
13
+ export declare function createTeamLayout(teamRunId: string, members: Array<TeamLayoutMember>, tmuxMgr: TmuxSessionManager): Promise<TeamLayoutResult | null>;
14
+ export declare function removeTeamLayout(teamRunId: string, tmuxMgr: TmuxSessionManager): Promise<void>;
15
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { TeamModeConfig } from "./manager";
2
+ export declare function removeWorktree(worktreePath: string): Promise<void>;
3
+ export declare function findOrphanWorktrees(baseDir: string, _config: TeamModeConfig): Promise<string[]>;
@@ -0,0 +1,2 @@
1
+ export { GitUnavailableError, createWorktree, isGitAvailable, validateWorktreeSpec } from "./manager";
2
+ export { findOrphanWorktrees, removeWorktree } from "./cleanup";
@@ -0,0 +1,15 @@
1
+ export type TeamModeConfig = {
2
+ worktreeBaseDir?: string;
3
+ };
4
+ export declare class GitUnavailableError extends Error {
5
+ constructor();
6
+ }
7
+ declare function runGit(args: string[], cwd?: string): Promise<{
8
+ code: number;
9
+ stderr: string;
10
+ }>;
11
+ export declare function setGitCommandRunnerForTests(runner: typeof runGit): void;
12
+ export declare function isGitAvailable(): Promise<boolean>;
13
+ export declare function validateWorktreeSpec(spec: string): void;
14
+ export declare function createWorktree(repoRoot: string, _teamRunId: string, _memberName: string, worktreePath: string, _config: TeamModeConfig): Promise<string>;
15
+ export {};
@@ -0,0 +1,210 @@
1
+ import { z } from "zod";
2
+ export declare const MESSAGE_KINDS: readonly ["message", "shutdown_request", "shutdown_approved", "shutdown_rejected", "announcement"];
3
+ export declare const MEMBER_KINDS: readonly ["category", "subagent_type"];
4
+ export declare const TASK_STATUSES: readonly ["pending", "claimed", "in_progress", "completed", "deleted"];
5
+ export declare const RUNTIME_STATUSES: readonly ["creating", "active", "shutdown_requested", "deleting", "deleted", "failed", "orphaned"];
6
+ export declare const CategoryMemberSchema: z.ZodObject<{
7
+ name: z.ZodString;
8
+ cwd: z.ZodOptional<z.ZodString>;
9
+ worktreePath: z.ZodOptional<z.ZodString>;
10
+ subscriptions: z.ZodOptional<z.ZodArray<z.ZodString>>;
11
+ backendType: z.ZodDefault<z.ZodEnum<{
12
+ tmux: "tmux";
13
+ "in-process": "in-process";
14
+ }>>;
15
+ color: z.ZodOptional<z.ZodString>;
16
+ isActive: z.ZodDefault<z.ZodBoolean>;
17
+ kind: z.ZodLiteral<"category">;
18
+ category: z.ZodString;
19
+ prompt: z.ZodString;
20
+ }, z.core.$strict>;
21
+ export declare const SubagentMemberSchema: z.ZodObject<{
22
+ name: z.ZodString;
23
+ cwd: z.ZodOptional<z.ZodString>;
24
+ worktreePath: z.ZodOptional<z.ZodString>;
25
+ subscriptions: z.ZodOptional<z.ZodArray<z.ZodString>>;
26
+ backendType: z.ZodDefault<z.ZodEnum<{
27
+ tmux: "tmux";
28
+ "in-process": "in-process";
29
+ }>>;
30
+ color: z.ZodOptional<z.ZodString>;
31
+ isActive: z.ZodDefault<z.ZodBoolean>;
32
+ kind: z.ZodLiteral<"subagent_type">;
33
+ subagent_type: z.ZodString;
34
+ prompt: z.ZodOptional<z.ZodString>;
35
+ }, z.core.$strict>;
36
+ export declare const MemberSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
37
+ name: z.ZodString;
38
+ cwd: z.ZodOptional<z.ZodString>;
39
+ worktreePath: z.ZodOptional<z.ZodString>;
40
+ subscriptions: z.ZodOptional<z.ZodArray<z.ZodString>>;
41
+ backendType: z.ZodDefault<z.ZodEnum<{
42
+ tmux: "tmux";
43
+ "in-process": "in-process";
44
+ }>>;
45
+ color: z.ZodOptional<z.ZodString>;
46
+ isActive: z.ZodDefault<z.ZodBoolean>;
47
+ kind: z.ZodLiteral<"category">;
48
+ category: z.ZodString;
49
+ prompt: z.ZodString;
50
+ }, z.core.$strict>, z.ZodObject<{
51
+ name: z.ZodString;
52
+ cwd: z.ZodOptional<z.ZodString>;
53
+ worktreePath: z.ZodOptional<z.ZodString>;
54
+ subscriptions: z.ZodOptional<z.ZodArray<z.ZodString>>;
55
+ backendType: z.ZodDefault<z.ZodEnum<{
56
+ tmux: "tmux";
57
+ "in-process": "in-process";
58
+ }>>;
59
+ color: z.ZodOptional<z.ZodString>;
60
+ isActive: z.ZodDefault<z.ZodBoolean>;
61
+ kind: z.ZodLiteral<"subagent_type">;
62
+ subagent_type: z.ZodString;
63
+ prompt: z.ZodOptional<z.ZodString>;
64
+ }, z.core.$strict>], "kind">;
65
+ export declare const TeamSpecSchema: z.ZodObject<{
66
+ version: z.ZodLiteral<1>;
67
+ name: z.ZodString;
68
+ description: z.ZodOptional<z.ZodString>;
69
+ createdAt: z.ZodNumber;
70
+ leadAgentId: z.ZodString;
71
+ teamAllowedPaths: z.ZodOptional<z.ZodArray<z.ZodString>>;
72
+ sessionPermission: z.ZodOptional<z.ZodString>;
73
+ members: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
74
+ name: z.ZodString;
75
+ cwd: z.ZodOptional<z.ZodString>;
76
+ worktreePath: z.ZodOptional<z.ZodString>;
77
+ subscriptions: z.ZodOptional<z.ZodArray<z.ZodString>>;
78
+ backendType: z.ZodDefault<z.ZodEnum<{
79
+ tmux: "tmux";
80
+ "in-process": "in-process";
81
+ }>>;
82
+ color: z.ZodOptional<z.ZodString>;
83
+ isActive: z.ZodDefault<z.ZodBoolean>;
84
+ kind: z.ZodLiteral<"category">;
85
+ category: z.ZodString;
86
+ prompt: z.ZodString;
87
+ }, z.core.$strict>, z.ZodObject<{
88
+ name: z.ZodString;
89
+ cwd: z.ZodOptional<z.ZodString>;
90
+ worktreePath: z.ZodOptional<z.ZodString>;
91
+ subscriptions: z.ZodOptional<z.ZodArray<z.ZodString>>;
92
+ backendType: z.ZodDefault<z.ZodEnum<{
93
+ tmux: "tmux";
94
+ "in-process": "in-process";
95
+ }>>;
96
+ color: z.ZodOptional<z.ZodString>;
97
+ isActive: z.ZodDefault<z.ZodBoolean>;
98
+ kind: z.ZodLiteral<"subagent_type">;
99
+ subagent_type: z.ZodString;
100
+ prompt: z.ZodOptional<z.ZodString>;
101
+ }, z.core.$strict>], "kind">>;
102
+ }, z.core.$strip>;
103
+ export declare const MessageSchema: z.ZodObject<{
104
+ version: z.ZodLiteral<1>;
105
+ messageId: z.ZodString;
106
+ from: z.ZodString;
107
+ to: z.ZodString;
108
+ kind: z.ZodEnum<{
109
+ message: "message";
110
+ shutdown_request: "shutdown_request";
111
+ shutdown_approved: "shutdown_approved";
112
+ shutdown_rejected: "shutdown_rejected";
113
+ announcement: "announcement";
114
+ }>;
115
+ body: z.ZodString;
116
+ summary: z.ZodOptional<z.ZodString>;
117
+ references: z.ZodOptional<z.ZodArray<z.ZodObject<{
118
+ path: z.ZodString;
119
+ description: z.ZodOptional<z.ZodString>;
120
+ }, z.core.$strict>>>;
121
+ timestamp: z.ZodNumber;
122
+ correlationId: z.ZodOptional<z.ZodString>;
123
+ color: z.ZodOptional<z.ZodString>;
124
+ }, z.core.$strip>;
125
+ export declare const TaskSchema: z.ZodObject<{
126
+ version: z.ZodLiteral<1>;
127
+ id: z.ZodString;
128
+ subject: z.ZodString;
129
+ description: z.ZodString;
130
+ activeForm: z.ZodOptional<z.ZodString>;
131
+ status: z.ZodEnum<{
132
+ pending: "pending";
133
+ in_progress: "in_progress";
134
+ completed: "completed";
135
+ deleted: "deleted";
136
+ claimed: "claimed";
137
+ }>;
138
+ owner: z.ZodOptional<z.ZodString>;
139
+ blocks: z.ZodDefault<z.ZodArray<z.ZodString>>;
140
+ blockedBy: z.ZodDefault<z.ZodArray<z.ZodString>>;
141
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
142
+ createdAt: z.ZodNumber;
143
+ updatedAt: z.ZodNumber;
144
+ claimedAt: z.ZodOptional<z.ZodNumber>;
145
+ }, z.core.$strip>;
146
+ export declare const RuntimeStateSchema: z.ZodObject<{
147
+ version: z.ZodLiteral<1>;
148
+ teamRunId: z.ZodString;
149
+ teamName: z.ZodString;
150
+ specSource: z.ZodEnum<{
151
+ user: "user";
152
+ project: "project";
153
+ }>;
154
+ createdAt: z.ZodNumber;
155
+ status: z.ZodEnum<{
156
+ deleted: "deleted";
157
+ failed: "failed";
158
+ active: "active";
159
+ creating: "creating";
160
+ shutdown_requested: "shutdown_requested";
161
+ deleting: "deleting";
162
+ orphaned: "orphaned";
163
+ }>;
164
+ leadSessionId: z.ZodOptional<z.ZodString>;
165
+ members: z.ZodArray<z.ZodObject<{
166
+ name: z.ZodString;
167
+ sessionId: z.ZodOptional<z.ZodString>;
168
+ tmuxPaneId: z.ZodOptional<z.ZodString>;
169
+ agentType: z.ZodEnum<{
170
+ leader: "leader";
171
+ "general-purpose": "general-purpose";
172
+ }>;
173
+ status: z.ZodEnum<{
174
+ pending: "pending";
175
+ completed: "completed";
176
+ running: "running";
177
+ idle: "idle";
178
+ errored: "errored";
179
+ shutdown_approved: "shutdown_approved";
180
+ }>;
181
+ color: z.ZodOptional<z.ZodString>;
182
+ worktreePath: z.ZodOptional<z.ZodString>;
183
+ lastInjectedTurnMarker: z.ZodOptional<z.ZodString>;
184
+ pendingInjectedMessageIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
185
+ }, z.core.$strict>>;
186
+ shutdownRequests: z.ZodDefault<z.ZodArray<z.ZodObject<{
187
+ memberId: z.ZodString;
188
+ requestedAt: z.ZodNumber;
189
+ approvedAt: z.ZodOptional<z.ZodNumber>;
190
+ rejectedReason: z.ZodOptional<z.ZodString>;
191
+ }, z.core.$strict>>>;
192
+ bounds: z.ZodObject<{
193
+ maxMembers: z.ZodDefault<z.ZodNumber>;
194
+ maxParallelMembers: z.ZodDefault<z.ZodNumber>;
195
+ maxMessagesPerRun: z.ZodDefault<z.ZodNumber>;
196
+ maxWallClockMinutes: z.ZodDefault<z.ZodNumber>;
197
+ maxMemberTurns: z.ZodDefault<z.ZodNumber>;
198
+ }, z.core.$strict>;
199
+ }, z.core.$strip>;
200
+ export declare const AGENT_ELIGIBILITY_REGISTRY: Readonly<Record<string, {
201
+ verdict: "eligible" | "conditional" | "hard-reject";
202
+ rejectionMessage?: string;
203
+ }>>;
204
+ export type TeamSpec = z.infer<typeof TeamSpecSchema>;
205
+ export type Member = z.infer<typeof MemberSchema>;
206
+ export type CategoryMember = z.infer<typeof CategoryMemberSchema>;
207
+ export type SubagentMember = z.infer<typeof SubagentMemberSchema>;
208
+ export type Message = z.infer<typeof MessageSchema>;
209
+ export type Task = z.infer<typeof TaskSchema>;
210
+ export type RuntimeState = z.infer<typeof RuntimeStateSchema>;
@@ -1,6 +1,2 @@
1
1
  export { coerceSessionCreatedEvent } from "./session-created-event";
2
2
  export type { SessionCreatedEvent } from "./session-created-event";
3
- export { handleSessionCreated } from "./session-created-handler";
4
- export type { SessionCreatedHandlerDeps } from "./session-created-handler";
5
- export { handleSessionDeleted } from "./session-deleted-handler";
6
- export type { SessionDeletedHandlerDeps } from "./session-deleted-handler";
@@ -1,10 +1,7 @@
1
1
  export * from "./manager";
2
2
  export * from "./event-handlers";
3
3
  export * from "./polling";
4
- export * from "./cleanup";
5
4
  export * from "./session-created-event";
6
- export * from "./session-created-handler";
7
- export * from "./session-deleted-handler";
8
5
  export * from "./polling-constants";
9
6
  export * from "./session-status-parser";
10
7
  export * from "./session-message-count";