oh-my-opencode 4.19.1 → 4.19.2

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 (184) hide show
  1. package/README.ja.md +2 -2
  2. package/README.ko.md +2 -2
  3. package/README.md +2 -2
  4. package/README.ru.md +2 -2
  5. package/README.zh-cn.md +2 -2
  6. package/dist/agents/atlas/agent.d.ts +4 -2
  7. package/dist/agents/explore.d.ts +4 -2
  8. package/dist/agents/hephaestus/agent.d.ts +4 -2
  9. package/dist/agents/librarian.d.ts +4 -2
  10. package/dist/agents/metis.d.ts +4 -2
  11. package/dist/agents/momus.d.ts +3 -2
  12. package/dist/agents/multimodal-looker.d.ts +4 -2
  13. package/dist/agents/oracle.d.ts +4 -2
  14. package/dist/agents/sisyphus/claude-opus-5.d.ts +33 -0
  15. package/dist/agents/sisyphus/index.d.ts +2 -0
  16. package/dist/agents/sisyphus-agent-factory.d.ts +5 -2
  17. package/dist/agents/sisyphus-junior/agent.d.ts +4 -1
  18. package/dist/agents/types.d.ts +2 -2
  19. package/dist/cli/index.js +23454 -19200
  20. package/dist/cli-node/index.js +23454 -19200
  21. package/dist/config/schema/agent-names.d.ts +26 -26
  22. package/dist/config/schema/agent-overrides.d.ts +400 -400
  23. package/dist/config/schema/browser-automation.d.ts +2 -2
  24. package/dist/config/schema/categories.d.ts +36 -36
  25. package/dist/config/schema/commands.d.ts +2 -2
  26. package/dist/config/schema/dynamic-context-pruning.d.ts +1 -1
  27. package/dist/config/schema/experimental.d.ts +1 -1
  28. package/dist/config/schema/fallback-models.d.ts +25 -25
  29. package/dist/config/schema/hooks.d.ts +43 -43
  30. package/dist/config/schema/internal/permission.d.ts +9 -9
  31. package/dist/config/schema/keyword-detector.d.ts +6 -6
  32. package/dist/config/schema/oh-my-opencode-config.d.ts +402 -402
  33. package/dist/config/schema/tmux.d.ts +6 -6
  34. package/dist/create-hooks.d.ts +35 -35
  35. package/dist/features/background-agent/spawner/tmux-callback-invoker.d.ts +11 -0
  36. package/dist/features/builtin-commands/templates/start-work.d.ts +1 -1
  37. package/dist/features/claude-tasks/types.d.ts +4 -4
  38. package/dist/features/team-mode/team-runtime/shutdown-helpers.d.ts +1 -1
  39. package/dist/features/team-mode/team-runtime/shutdown-test-fixtures.d.ts +4 -4
  40. package/dist/features/team-mode/tools/lifecycle-test-fixture.d.ts +42 -42
  41. package/dist/features/tmux-subagent/environment-eligibility.d.ts +2 -0
  42. package/dist/features/tmux-subagent/index.d.ts +1 -0
  43. package/dist/features/tmux-subagent/tracked-session-state.d.ts +1 -0
  44. package/dist/features/tui-sidebar/snapshot-schema.d.ts +6 -6
  45. package/dist/help/schema/acp.d.ts +3 -3
  46. package/dist/help/schema/doctor.d.ts +4 -4
  47. package/dist/help/schema/status.d.ts +3 -3
  48. package/dist/hooks/goal/types.d.ts +5 -5
  49. package/dist/hooks/non-interactive-env/constants.d.ts +4 -1
  50. package/dist/hooks/start-work/parse-user-request.d.ts +2 -0
  51. package/dist/hooks/start-work/worktree-block.d.ts +5 -0
  52. package/dist/index.js +25231 -20301
  53. package/dist/mcp/types.d.ts +3 -3
  54. package/dist/oh-my-opencode.schema.json +1 -1
  55. package/dist/plugin/chat-message/loop-commands.d.ts +1 -0
  56. package/dist/plugin/command-execute-before.d.ts +3 -3
  57. package/dist/plugin/hooks/create-core-hooks.d.ts +25 -25
  58. package/dist/shared/tmux/tmux-utils/environment.d.ts +1 -1
  59. package/dist/shared/tmux/tmux-utils.d.ts +1 -1
  60. package/dist/shared/typescript-native-source-parser.d.ts +7 -0
  61. package/dist/skills/coding-agent-sessions/SKILL.md +5 -2
  62. package/dist/skills/coding-agent-sessions/references/all-platforms.md +3 -1
  63. package/dist/skills/coding-agent-sessions/references/senpi.md +15 -5
  64. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +46 -0
  65. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +19 -10
  66. package/dist/skills/debugging/SKILL.md +2 -1
  67. package/dist/skills/debugging/references/methodology/03-flaky-triage.md +47 -0
  68. package/dist/skills/programming/SKILL.md +11 -1
  69. package/dist/skills/programming/references/logging.md +6 -1
  70. package/dist/skills/programming/scripts/typescript/check-no-excuse-rules.ts +51 -17
  71. package/dist/skills/start-work/SKILL.md +12 -2
  72. package/dist/skills/ulw-plan/SKILL.md +1 -1
  73. package/dist/skills/ulw-plan/references/full-workflow.md +12 -1
  74. package/dist/skills/ulw-plan/references/intent-clear.md +1 -1
  75. package/dist/tools/task/types.d.ts +10 -10
  76. package/dist/tui.js +23468 -19218
  77. package/package.json +14 -14
  78. package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +2 -2
  79. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  80. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +8 -4
  81. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  82. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  83. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +296 -206
  84. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +126 -86
  85. package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
  86. package/packages/omo-codex/plugin/components/codegraph/src/hook.ts +21 -42
  87. package/packages/omo-codex/plugin/components/codegraph/src/serve.ts +3 -4
  88. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker.ts +12 -23
  89. package/packages/omo-codex/plugin/components/codegraph/test/hook-exclusion.test.ts +5 -0
  90. package/packages/omo-codex/plugin/components/codegraph/test/hook-store-upgrade.test.ts +33 -5
  91. package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +6 -1
  92. package/packages/omo-codex/plugin/components/codegraph/test/provisioned-node-guard.test.ts +6 -0
  93. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-facade.test.ts +1 -0
  94. package/packages/omo-codex/plugin/components/codegraph/test/serve-provision.test.ts +5 -5
  95. package/packages/omo-codex/plugin/components/codegraph/test/serve-unavailable.test.ts +1 -0
  96. package/packages/omo-codex/plugin/components/codegraph/test/serve.test.ts +24 -13
  97. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-flow.test.ts +58 -64
  98. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  99. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  100. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  101. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  102. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  103. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  104. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  105. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  106. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  107. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  108. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  109. package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +1 -1
  110. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
  111. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
  112. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  113. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  114. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  115. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  116. package/packages/omo-codex/plugin/components/ultrawork/directive.md +12 -7
  117. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  118. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  119. package/packages/omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md +12 -7
  120. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +1 -1
  121. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +12 -1
  122. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +1 -1
  123. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +12 -7
  124. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  125. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  126. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +2 -1
  127. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  128. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  129. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  130. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
  131. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  132. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  133. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  134. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  135. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  136. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  137. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  138. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  139. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  140. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
  141. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  142. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  143. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
  144. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  145. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
  146. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  147. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  148. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  149. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  150. package/packages/omo-codex/plugin/package-lock.json +13 -13
  151. package/packages/omo-codex/plugin/package.json +1 -1
  152. package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +10 -9
  153. package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +5 -2
  154. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +3 -1
  155. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/senpi.md +15 -5
  156. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +46 -0
  157. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +19 -10
  158. package/packages/omo-codex/plugin/skills/debugging/SKILL.md +2 -1
  159. package/packages/omo-codex/plugin/skills/debugging/references/methodology/03-flaky-triage.md +47 -0
  160. package/packages/omo-codex/plugin/skills/programming/SKILL.md +11 -1
  161. package/packages/omo-codex/plugin/skills/programming/references/logging.md +6 -1
  162. package/packages/omo-codex/plugin/skills/programming/scripts/typescript/check-no-excuse-rules.ts +51 -17
  163. package/packages/omo-codex/plugin/skills/start-work/SKILL.md +12 -2
  164. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +12 -7
  165. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +2 -1
  166. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +1 -1
  167. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +12 -1
  168. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +1 -1
  169. package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +22 -0
  170. package/packages/omo-codex/scripts/install-dist/install-local.mjs +1 -1
  171. package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +5 -2
  172. package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +3 -1
  173. package/packages/shared-skills/skills/coding-agent-sessions/references/senpi.md +15 -5
  174. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +46 -0
  175. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +19 -10
  176. package/packages/shared-skills/skills/debugging/SKILL.md +2 -1
  177. package/packages/shared-skills/skills/debugging/references/methodology/03-flaky-triage.md +47 -0
  178. package/packages/shared-skills/skills/programming/SKILL.md +11 -1
  179. package/packages/shared-skills/skills/programming/references/logging.md +6 -1
  180. package/packages/shared-skills/skills/programming/scripts/typescript/check-no-excuse-rules.ts +51 -17
  181. package/packages/shared-skills/skills/start-work/SKILL.md +12 -2
  182. package/packages/shared-skills/skills/ulw-plan/SKILL.md +1 -1
  183. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +12 -1
  184. package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +1 -1
@@ -1,33 +1,33 @@
1
1
  import { z } from "zod";
2
2
  import type { TmuxConfig, TmuxIsolation, TmuxLayout } from "@oh-my-opencode/tmux-core";
3
3
  export declare const TmuxLayoutSchema: z.ZodEnum<{
4
+ "even-horizontal": "even-horizontal";
5
+ "even-vertical": "even-vertical";
4
6
  "main-horizontal": "main-horizontal";
5
7
  "main-vertical": "main-vertical";
6
8
  tiled: "tiled";
7
- "even-horizontal": "even-horizontal";
8
- "even-vertical": "even-vertical";
9
9
  }>;
10
10
  export declare const TmuxIsolationSchema: z.ZodEnum<{
11
+ inline: "inline";
11
12
  session: "session";
12
13
  window: "window";
13
- inline: "inline";
14
14
  }>;
15
15
  export declare const TmuxConfigSchema: z.ZodObject<{
16
16
  enabled: z.ZodDefault<z.ZodBoolean>;
17
17
  layout: z.ZodDefault<z.ZodEnum<{
18
+ "even-horizontal": "even-horizontal";
19
+ "even-vertical": "even-vertical";
18
20
  "main-horizontal": "main-horizontal";
19
21
  "main-vertical": "main-vertical";
20
22
  tiled: "tiled";
21
- "even-horizontal": "even-horizontal";
22
- "even-vertical": "even-vertical";
23
23
  }>>;
24
24
  main_pane_size: z.ZodDefault<z.ZodNumber>;
25
25
  main_pane_min_width: z.ZodDefault<z.ZodNumber>;
26
26
  agent_pane_min_width: z.ZodDefault<z.ZodNumber>;
27
27
  isolation: z.ZodDefault<z.ZodEnum<{
28
+ inline: "inline";
28
29
  session: "session";
29
30
  window: "window";
30
- inline: "inline";
31
31
  }>>;
32
32
  }, z.core.$strip>;
33
33
  export type { TmuxConfig, TmuxIsolation, TmuxLayout };
@@ -31,41 +31,6 @@ export declare function createHooks(args: {
31
31
  mergedSkills: LoadedSkill[];
32
32
  availableSkills: AvailableSkill[];
33
33
  }): {
34
- disposeHooks: () => void;
35
- categorySkillReminder: ReturnType<typeof import("./hooks").createCategorySkillReminderHook> | null;
36
- autoSlashCommand: ReturnType<typeof import("./hooks").createAutoSlashCommandHook> | null;
37
- stopContinuationGuard: ReturnType<typeof import("./hooks").createStopContinuationGuardHook> | null;
38
- compactionContextInjector: ReturnType<typeof import("./hooks").createCompactionContextInjector> | null;
39
- compactionTodoPreserver: ReturnType<typeof import("./hooks").createCompactionTodoPreserverHook> | null;
40
- todoContinuationEnforcer: ReturnType<typeof import("./hooks").createTodoContinuationEnforcer> | null;
41
- unstableAgentBabysitter: ReturnType<typeof import("./plugin/unstable-agent-babysitter").createUnstableAgentBabysitter> | null;
42
- backgroundNotificationHook: ReturnType<typeof import("./hooks").createBackgroundNotificationHook> | null;
43
- atlasHook: ReturnType<typeof import("./hooks").createAtlasHook> | null;
44
- claudeCodeHooks: ReturnType<typeof import("./hooks").createClaudeCodeHooksHook> | null;
45
- keywordDetector: ReturnType<typeof import("./hooks").createKeywordDetectorHook> | null;
46
- contextInjectorMessagesTransform: ReturnType<typeof import("./features/context-injector").createContextInjectorMessagesTransformHook>;
47
- teamModeStatusInjector: ReturnType<typeof import("./hooks").createTeamModeStatusInjector> | null;
48
- teamMailboxInjector: ReturnType<typeof import("./hooks").createTeamMailboxInjector> | null;
49
- toolPairValidator: ReturnType<typeof import("./hooks").createToolPairValidatorHook> | null;
50
- monitorStatusInjector: ReturnType<typeof import("./hooks").createMonitorStatusInjectorHook> | null;
51
- commentChecker: ReturnType<typeof import("./hooks").createCommentCheckerHooks> | null;
52
- toolOutputTruncator: ReturnType<typeof import("./hooks").createToolOutputTruncatorHook> | null;
53
- directoryAgentsInjector: ReturnType<typeof import("./hooks").createDirectoryAgentsInjectorHook> | null;
54
- directoryReadmeInjector: ReturnType<typeof import("./hooks").createDirectoryReadmeInjectorHook> | null;
55
- emptyTaskResponseDetector: ReturnType<typeof import("./hooks").createEmptyTaskResponseDetectorHook> | null;
56
- rulesInjector: ReturnType<typeof import("./hooks").createRulesInjectorHook> | null;
57
- tasksTodowriteDisabler: ReturnType<typeof import("./hooks").createTasksTodowriteDisablerHook> | null;
58
- writeExistingFileGuard: ReturnType<typeof import("./hooks").createWriteExistingFileGuardHook> | null;
59
- bashFileReadGuard: ReturnType<typeof import("./hooks").createBashFileReadGuardHook> | null;
60
- hashlineReadEnhancer: ReturnType<typeof import("./hooks").createHashlineReadEnhancerHook> | null;
61
- jsonErrorRecovery: ReturnType<typeof import("./hooks").createJsonErrorRecoveryHook> | null;
62
- readImageResizer: ReturnType<typeof import("./hooks").createReadImageResizerHook> | null;
63
- todoDescriptionOverride: ReturnType<typeof import("./hooks").createTodoDescriptionOverrideHook> | null;
64
- webfetchRedirectGuard: ReturnType<typeof import("./hooks").createWebFetchRedirectGuardHook> | null;
65
- fsyncSkipWarning: ReturnType<typeof import("./hooks").createFsyncSkipWarningHook> | null;
66
- teamToolGating: ReturnType<typeof import("./hooks").createTeamToolGating> | null;
67
- notepadWriteGuard: ReturnType<typeof import("./hooks").createNotepadWriteGuardHook> | null;
68
- planFormatValidator: ReturnType<typeof import("./hooks").createPlanFormatValidatorHook> | null;
69
34
  preemptiveCompaction: ReturnType<typeof import("./hooks").createPreemptiveCompactionHook> | null;
70
35
  sessionNotification: ReturnType<typeof import("./hooks").createSessionNotification> | null;
71
36
  thinkMode: ReturnType<typeof import("./hooks").createThinkModeHook> | null;
@@ -90,5 +55,40 @@ export declare function createHooks(args: {
90
55
  taskResumeInfo: ReturnType<typeof import("./hooks").createTaskResumeInfoHook> | null;
91
56
  runtimeFallback: ReturnType<typeof import("./hooks").createRuntimeFallbackHook> | null;
92
57
  legacyPluginToast: ReturnType<typeof import("./hooks").createLegacyPluginToastHook> | null;
58
+ commentChecker: ReturnType<typeof import("./hooks").createCommentCheckerHooks> | null;
59
+ toolOutputTruncator: ReturnType<typeof import("./hooks").createToolOutputTruncatorHook> | null;
60
+ directoryAgentsInjector: ReturnType<typeof import("./hooks").createDirectoryAgentsInjectorHook> | null;
61
+ directoryReadmeInjector: ReturnType<typeof import("./hooks").createDirectoryReadmeInjectorHook> | null;
62
+ emptyTaskResponseDetector: ReturnType<typeof import("./hooks").createEmptyTaskResponseDetectorHook> | null;
63
+ rulesInjector: ReturnType<typeof import("./hooks").createRulesInjectorHook> | null;
64
+ tasksTodowriteDisabler: ReturnType<typeof import("./hooks").createTasksTodowriteDisablerHook> | null;
65
+ writeExistingFileGuard: ReturnType<typeof import("./hooks").createWriteExistingFileGuardHook> | null;
66
+ bashFileReadGuard: ReturnType<typeof import("./hooks").createBashFileReadGuardHook> | null;
67
+ hashlineReadEnhancer: ReturnType<typeof import("./hooks").createHashlineReadEnhancerHook> | null;
68
+ jsonErrorRecovery: ReturnType<typeof import("./hooks").createJsonErrorRecoveryHook> | null;
69
+ readImageResizer: ReturnType<typeof import("./hooks").createReadImageResizerHook> | null;
70
+ todoDescriptionOverride: ReturnType<typeof import("./hooks").createTodoDescriptionOverrideHook> | null;
71
+ webfetchRedirectGuard: ReturnType<typeof import("./hooks").createWebFetchRedirectGuardHook> | null;
72
+ fsyncSkipWarning: ReturnType<typeof import("./hooks").createFsyncSkipWarningHook> | null;
73
+ teamToolGating: ReturnType<typeof import("./hooks").createTeamToolGating> | null;
74
+ notepadWriteGuard: ReturnType<typeof import("./hooks").createNotepadWriteGuardHook> | null;
75
+ planFormatValidator: ReturnType<typeof import("./hooks").createPlanFormatValidatorHook> | null;
76
+ claudeCodeHooks: ReturnType<typeof import("./hooks").createClaudeCodeHooksHook> | null;
77
+ keywordDetector: ReturnType<typeof import("./hooks").createKeywordDetectorHook> | null;
78
+ contextInjectorMessagesTransform: ReturnType<typeof import("./features/context-injector").createContextInjectorMessagesTransformHook>;
79
+ teamModeStatusInjector: ReturnType<typeof import("./hooks").createTeamModeStatusInjector> | null;
80
+ teamMailboxInjector: ReturnType<typeof import("./hooks").createTeamMailboxInjector> | null;
81
+ toolPairValidator: ReturnType<typeof import("./hooks").createToolPairValidatorHook> | null;
82
+ monitorStatusInjector: ReturnType<typeof import("./hooks").createMonitorStatusInjectorHook> | null;
83
+ stopContinuationGuard: ReturnType<typeof import("./hooks").createStopContinuationGuardHook> | null;
84
+ compactionContextInjector: ReturnType<typeof import("./hooks").createCompactionContextInjector> | null;
85
+ compactionTodoPreserver: ReturnType<typeof import("./hooks").createCompactionTodoPreserverHook> | null;
86
+ todoContinuationEnforcer: ReturnType<typeof import("./hooks").createTodoContinuationEnforcer> | null;
87
+ unstableAgentBabysitter: ReturnType<typeof import("./plugin/unstable-agent-babysitter").createUnstableAgentBabysitter> | null;
88
+ backgroundNotificationHook: ReturnType<typeof import("./hooks").createBackgroundNotificationHook> | null;
89
+ atlasHook: ReturnType<typeof import("./hooks").createAtlasHook> | null;
90
+ categorySkillReminder: ReturnType<typeof import("./hooks").createCategorySkillReminderHook> | null;
91
+ autoSlashCommand: ReturnType<typeof import("./hooks").createAutoSlashCommandHook> | null;
92
+ disposeHooks: () => void;
93
93
  };
94
94
  export {};
@@ -0,0 +1,11 @@
1
+ import type { OnSubagentSessionCreated } from "../constants";
2
+ export interface TmuxCallbackInvocation {
3
+ callback: OnSubagentSessionCreated | undefined;
4
+ tmuxEnabled: boolean;
5
+ suppress: boolean;
6
+ sessionID: string;
7
+ parentID: string;
8
+ title: string;
9
+ log: (message: string, data?: unknown) => void;
10
+ }
11
+ export declare function invokeTmuxSessionCreatedCallback(invocation: TmuxCallbackInvocation): void;
@@ -1 +1 @@
1
- export declare const START_WORK_TEMPLATE = "You are starting an Atlas work session.\n\n## ARGUMENTS\n\n- `/start-work [plan-name] [--worktree <path>]`\n - `plan-name` (optional): name or partial match of the plan to start\n - `--worktree <path>` (optional): absolute path to an existing git worktree to work in\n - If specified and valid: hook pre-sets worktree_path in boulder.json\n - If specified but invalid: you must run `git worktree add <path> <branch>` first\n - If omitted: work directly in the current project directory (no worktree)\n\n## WHAT TO DO\n\n1. **Find available plans**: Search for Prometheus-generated plan files at `.omo/plans/`\n\n2. **Check for active boulder state**: Read `.omo/boulder.json` if it exists\n\n3. **Decision logic**:\n - If multiple active works are listed in your context:\n - This means boulder.json has more than one work with status: `active` or `paused`\n - Use the Question tool to ask the user which plan to resume\n - Resume by running `/start-work {plan-name}` for the selected plan\n - If the user says \"start a new plan\", continue with cold-start auto-selection logic\n - If exactly one active work is listed and the user did not name a plan:\n - Auto-resume that single active work\n - If no active plan OR plan is complete:\n - List available plan files\n - If ONE plan: auto-select it\n - If MULTIPLE plans: show list with timestamps, ask user to select\n\n4. **Worktree Setup** (ONLY when `--worktree` was explicitly specified and `worktree_path` not already set in boulder.json):\n 1. `git worktree list --porcelain` - see available worktrees\n 2. Create: `git worktree add <absolute-path> <branch-or-HEAD>`\n 3. Update boulder.json to add `\"worktree_path\": \"<absolute-path>\"`\n 4. All work happens inside that worktree directory\n\n5. **Create/Update boulder.json**:\n ```json\n {\n \"active_plan\": \"/absolute/path/to/plan.md\",\n \"started_at\": \"ISO_TIMESTAMP\",\n \"session_ids\": [\"session_id_1\", \"session_id_2\"],\n \"plan_name\": \"plan-name\",\n \"worktree_path\": \"/absolute/path/to/git/worktree\"\n }\n ```\n\n6. **Read the plan file** and start executing tasks according to atlas workflow\n\n## OUTPUT FORMAT\n\nWhen listing plans for selection:\n```\nAvailable Work Plans\n\nCurrent Time: {ISO timestamp}\nSession ID: {current session id}\n\n1. [plan-name-1.md] - Modified: {date} - Progress: 3/10 tasks\n2. [plan-name-2.md] - Modified: {date} - Progress: 0/5 tasks\n\nWhich plan would you like to work on? (Enter number or plan name)\n```\n\nWhen resuming existing work:\n```\nResuming Work Session\n\nActive Plan: {plan-name}\nProgress: {completed}/{total} tasks\nSessions: {count} (appending current session)\nWorktree: {worktree_path}\n\nReading plan and continuing from last incomplete task...\n```\n\nWhen auto-selecting single plan:\n```\nStarting Work Session\n\nPlan: {plan-name}\nSession ID: {session_id}\nStarted: {timestamp}\nWorktree: {worktree_path}\n\nReading plan and beginning execution...\n```\n\n## CRITICAL\n\n- The session_id is injected by the hook - use it directly\n- Always update boulder.json BEFORE starting work\n- If worktree_path is set in boulder.json, all work happens inside that worktree directory\n- Read the FULL plan file before delegating any tasks\n- Follow atlas delegation protocols (7-section format)\n\n## TASK BREAKDOWN (MANDATORY)\n\nAfter reading the plan file, you MUST decompose every plan task into granular, implementation-level sub-steps and register ALL of them as task/todo items BEFORE starting any work.\n\n**How to break down**:\n- Each plan checkbox item (e.g., `- [ ] Add user authentication`) must be split into concrete, actionable sub-tasks\n- Sub-tasks should be specific enough that each one touches a clear set of files/functions\n- Include: file to modify, what to change, expected behavior, and how to verify\n- Do NOT leave any task vague - \"implement feature X\" is NOT acceptable; \"add validateToken() to src/auth/middleware.ts that checks JWT expiry and returns 401\" IS acceptable\n\n**Example breakdown**:\nPlan task: `- [ ] Add rate limiting to API`\n\u2192 Todo items:\n 1. Create `src/middleware/rate-limiter.ts` with sliding window algorithm (max 100 req/min per IP)\n 2. Add RateLimiter middleware to `src/app.ts` router chain, before auth middleware\n 3. Add rate limit headers (X-RateLimit-Limit, X-RateLimit-Remaining) to response in `rate-limiter.ts`\n 4. Add test: verify 429 response after exceeding limit in `src/middleware/rate-limiter.test.ts`\n 5. Add test: verify headers are present on normal responses\n\nRegister these as task/todo items so progress is tracked and visible throughout the session.\n\n## WORKTREE COMPLETION\n\nWhen working in a worktree (`worktree_path` is set in boulder.json) and ALL plan tasks are complete:\n1. Commit all remaining changes in the worktree\n2. **Sync .omo state back**: Copy `.omo/` from the worktree to the main repo before removal.\n This is CRITICAL when `.omo/` is gitignored - state written during worktree execution would otherwise be lost.\n ```bash\n cp -r <worktree-path>/.omo/* <main-repo>/.omo/ 2>/dev/null || true\n ```\n3. Switch to the main working directory (the original repo, NOT the worktree)\n4. Merge the worktree branch into the current branch: `git merge <worktree-branch>`\n5. If merge succeeds, clean up: `git worktree remove <worktree-path>`\n6. Remove the boulder.json state\n\nThis is the DEFAULT behavior when `--worktree` was used. Skip merge only if the user explicitly instructs otherwise (e.g., asks to create a PR instead).";
1
+ export declare const START_WORK_TEMPLATE = "You are starting an Atlas work session.\n\n## ARGUMENTS\n\n- `/start-work [plan-name] [--worktree <path>] [--make-pr] [--ship]`\n - `plan-name` (optional): name or partial match of the plan to start\n - `--worktree <path>` (optional): absolute path to an existing git worktree to work in\n - If specified and valid: hook pre-sets worktree_path in boulder.json\n - If specified but invalid: you must run `git worktree add <path> <branch>` first\n - If omitted: work directly in the current project directory (no worktree)\n - `--make-pr` (optional): deliver the work as a pull request. IMPLIES worktree mode - when `--worktree` is omitted, create a task-owned worktree before implementation. On completion push the branch, open a reviewer-readable PR, and hand off with the PR URL (merge only on explicit user ask)\n - `--ship` (optional): full delivery lifecycle; implies `--make-pr`. After the PR opens, keep working until it is MERGED (CI + review gates, feedback addressed), then clean up the worktree and sync `.omo/` state back\n\n## WHAT TO DO\n\n1. **Find available plans**: Search for Prometheus-generated plan files at `.omo/plans/`\n\n2. **Check for active boulder state**: Read `.omo/boulder.json` if it exists\n\n3. **Decision logic**:\n - If multiple active works are listed in your context:\n - This means boulder.json has more than one work with status: `active` or `paused`\n - Use the Question tool to ask the user which plan to resume\n - Resume by running `/start-work {plan-name}` for the selected plan\n - If the user says \"start a new plan\", continue with cold-start auto-selection logic\n - If exactly one active work is listed and the user did not name a plan:\n - Auto-resume that single active work\n - If no active plan OR plan is complete:\n - List available plan files\n - If ONE plan: auto-select it\n - If MULTIPLE plans: show list with timestamps, ask user to select\n\n4. **Worktree Setup** (ONLY when `--worktree` was explicitly specified and `worktree_path` not already set in boulder.json):\n 1. `git worktree list --porcelain` - see available worktrees\n 2. Create: `git worktree add <absolute-path> <branch-or-HEAD>`\n 3. Update boulder.json to add `\"worktree_path\": \"<absolute-path>\"`\n 4. All work happens inside that worktree directory\n\n5. **Create/Update boulder.json**:\n ```json\n {\n \"active_plan\": \"/absolute/path/to/plan.md\",\n \"started_at\": \"ISO_TIMESTAMP\",\n \"session_ids\": [\"session_id_1\", \"session_id_2\"],\n \"plan_name\": \"plan-name\",\n \"worktree_path\": \"/absolute/path/to/git/worktree\"\n }\n ```\n\n6. **Read the plan file** and start executing tasks according to atlas workflow\n\n## OUTPUT FORMAT\n\nWhen listing plans for selection:\n```\nAvailable Work Plans\n\nCurrent Time: {ISO timestamp}\nSession ID: {current session id}\n\n1. [plan-name-1.md] - Modified: {date} - Progress: 3/10 tasks\n2. [plan-name-2.md] - Modified: {date} - Progress: 0/5 tasks\n\nWhich plan would you like to work on? (Enter number or plan name)\n```\n\nWhen resuming existing work:\n```\nResuming Work Session\n\nActive Plan: {plan-name}\nProgress: {completed}/{total} tasks\nSessions: {count} (appending current session)\nWorktree: {worktree_path}\n\nReading plan and continuing from last incomplete task...\n```\n\nWhen auto-selecting single plan:\n```\nStarting Work Session\n\nPlan: {plan-name}\nSession ID: {session_id}\nStarted: {timestamp}\nWorktree: {worktree_path}\n\nReading plan and beginning execution...\n```\n\n## CRITICAL\n\n- The session_id is injected by the hook - use it directly\n- Always update boulder.json BEFORE starting work\n- If worktree_path is set in boulder.json, all work happens inside that worktree directory\n- Read the FULL plan file before delegating any tasks\n- Follow atlas delegation protocols (7-section format)\n\n## GOAL + TASK BREAKDOWN (MANDATORY)\n\nDo BOTH of these immediately after reading the plan file, BEFORE starting any work. Skipping either is a defect.\n\n**1. Set the goal, in detail.** When a goal tool is available (`create_goal`), call it with a DETAILED objective: the plan name and path, the concrete end state, the phase/task counts, the delivery mode (direct, `--make-pr`, or `--ship`), and how completion will be verified. One work session = one goal. No goal tool -> record the same objective as the first `.omo/start-work/ledger.jsonl` entry.\n\n**2. Register every phase and task as todos.** Decompose every plan task into granular, implementation-level sub-steps and register ALL of them as task/todo items, grouped phase by phase (one phase per plan wave), BEFORE starting any work. Keep them current at every moment: mark in_progress when work dispatches and done immediately after its verification passes - never batch-complete at the end, never execute work that is not a registered todo. Discovered work is appended as a todo before it runs.\n\n**How to break down**:\n- Each plan checkbox item (e.g., `- [ ] Add user authentication`) must be split into concrete, actionable sub-tasks\n- Sub-tasks should be specific enough that each one touches a clear set of files/functions\n- Include: file to modify, what to change, expected behavior, and how to verify\n- Do NOT leave any task vague - \"implement feature X\" is NOT acceptable; \"add validateToken() to src/auth/middleware.ts that checks JWT expiry and returns 401\" IS acceptable\n\n**Example breakdown**:\nPlan task: `- [ ] Add rate limiting to API`\n\u2192 Todo items:\n 1. Create `src/middleware/rate-limiter.ts` with sliding window algorithm (max 100 req/min per IP)\n 2. Add RateLimiter middleware to `src/app.ts` router chain, before auth middleware\n 3. Add rate limit headers (X-RateLimit-Limit, X-RateLimit-Remaining) to response in `rate-limiter.ts`\n 4. Add test: verify 429 response after exceeding limit in `src/middleware/rate-limiter.test.ts`\n 5. Add test: verify headers are present on normal responses\n\nRegister these as task/todo items so progress is tracked and visible throughout the session.\n\n## WORKTREE COMPLETION\n\nWhen working in a worktree (`worktree_path` is set in boulder.json) and ALL plan tasks are complete:\n1. Commit all remaining changes in the worktree\n2. **Sync .omo state back**: Copy `.omo/` from the worktree to the main repo before removal.\n This is CRITICAL when `.omo/` is gitignored - state written during worktree execution would otherwise be lost.\n ```bash\n cp -r <worktree-path>/.omo/* <main-repo>/.omo/ 2>/dev/null || true\n ```\n3. Switch to the main working directory (the original repo, NOT the worktree)\n4. Merge the worktree branch into the current branch: `git merge <worktree-branch>`\n5. If merge succeeds, clean up: `git worktree remove <worktree-path>`\n6. Remove the boulder.json state\n\nThis is the DEFAULT behavior when `--worktree` was used alone. When `--make-pr` or `--ship` is active, skip the local merge and follow the PR Delivery Mode instructions in the session context instead: push the branch and open a PR (`--make-pr` hands off with the PR URL; `--ship` keeps working until the PR is merged), then clean up. Otherwise skip merge only if the user explicitly instructs otherwise (e.g., asks to create a PR instead).";
@@ -1,9 +1,9 @@
1
1
  import { z } from "zod";
2
2
  export declare const TaskStatusSchema: z.ZodEnum<{
3
- deleted: "deleted";
4
3
  completed: "completed";
5
- pending: "pending";
4
+ deleted: "deleted";
6
5
  in_progress: "in_progress";
6
+ pending: "pending";
7
7
  }>;
8
8
  export type TaskStatus = z.infer<typeof TaskStatusSchema>;
9
9
  export declare const TaskSchema: z.ZodObject<{
@@ -11,10 +11,10 @@ export declare const TaskSchema: z.ZodObject<{
11
11
  subject: z.ZodString;
12
12
  description: z.ZodString;
13
13
  status: z.ZodEnum<{
14
- deleted: "deleted";
15
14
  completed: "completed";
16
- pending: "pending";
15
+ deleted: "deleted";
17
16
  in_progress: "in_progress";
17
+ pending: "pending";
18
18
  }>;
19
19
  activeForm: z.ZodOptional<z.ZodString>;
20
20
  blocks: z.ZodArray<z.ZodString>;
@@ -1,5 +1,5 @@
1
1
  import type { Message, RuntimeState } from "../types";
2
- export declare const DELETABLE_MEMBER_STATUSES: Set<"running" | "completed" | "pending" | "idle" | "shutdown_approved" | "errored">;
2
+ export declare const DELETABLE_MEMBER_STATUSES: Set<"completed" | "errored" | "idle" | "pending" | "running" | "shutdown_approved">;
3
3
  export declare function createShutdownMessage(from: string, to: string, kind: Message["kind"], body: string): Message;
4
4
  export declare function getRuntimeMember(runtimeState: RuntimeState, memberName: string): RuntimeState["members"][number];
5
5
  export declare function getLeadMemberName(runtimeState: RuntimeState): string;
@@ -17,14 +17,14 @@ export declare function readInboxMessages(teamRunId: string, memberName: string,
17
17
  messageId: string;
18
18
  from: string;
19
19
  to: string;
20
- kind: "message" | "shutdown_request" | "shutdown_approved" | "shutdown_rejected" | "announcement";
20
+ kind: "announcement" | "message" | "shutdown_approved" | "shutdown_rejected" | "shutdown_request";
21
21
  body: string;
22
- timestamp: number;
23
22
  summary?: string | undefined;
24
23
  references?: {
25
24
  path: string;
26
25
  description?: string | undefined;
27
26
  }[] | undefined;
27
+ timestamp: number;
28
28
  correlationId?: string | undefined;
29
29
  color?: string | undefined;
30
30
  }[]>;
@@ -33,14 +33,14 @@ export declare function createTestMessage(overrides?: Partial<Parameters<typeof
33
33
  messageId: string;
34
34
  from: string;
35
35
  to: string;
36
- kind: "message" | "shutdown_request" | "shutdown_approved" | "shutdown_rejected" | "announcement";
36
+ kind: "announcement" | "message" | "shutdown_approved" | "shutdown_rejected" | "shutdown_request";
37
37
  body: string;
38
- timestamp: number;
39
38
  summary?: string | undefined;
40
39
  references?: {
41
40
  path: string;
42
41
  description?: string | undefined;
43
42
  }[] | undefined;
43
+ timestamp: number;
44
44
  correlationId?: string | undefined;
45
45
  color?: string | undefined;
46
46
  };
@@ -11,17 +11,23 @@ export declare const createTeamRunMock: import("bun:test").Mock<(spec: TeamSpec,
11
11
  version: 1;
12
12
  teamRunId: string;
13
13
  teamName: string;
14
- specSource: "user" | "project";
14
+ specSource: "project" | "user";
15
15
  createdAt: number;
16
- status: "failed" | "deleted" | "active" | "creating" | "shutdown_requested" | "deleting" | "orphaned";
16
+ status: "active" | "creating" | "deleted" | "deleting" | "failed" | "orphaned" | "shutdown_requested";
17
+ leadSessionId?: string | undefined;
18
+ tmuxLayout?: {
19
+ ownedSession: boolean;
20
+ targetSessionId: string;
21
+ focusWindowId?: string | undefined;
22
+ gridWindowId?: string | undefined;
23
+ paneIds?: string[] | undefined;
24
+ } | undefined;
17
25
  members: {
18
26
  name: string;
19
- agentType: "leader" | "general-purpose";
20
- status: "running" | "completed" | "pending" | "idle" | "shutdown_approved" | "errored";
21
- pendingInjectedMessageIds: string[];
22
27
  sessionId?: string | undefined;
23
28
  tmuxPaneId?: string | undefined;
24
29
  tmuxGridPaneId?: string | undefined;
30
+ agentType: "general-purpose" | "leader";
25
31
  subagent_type?: string | undefined;
26
32
  category?: string | undefined;
27
33
  model?: {
@@ -33,13 +39,15 @@ export declare const createTeamRunMock: import("bun:test").Mock<(spec: TeamSpec,
33
39
  top_p?: number | undefined;
34
40
  maxTokens?: number | undefined;
35
41
  thinking?: {
36
- type: "enabled" | "disabled";
42
+ type: "disabled" | "enabled";
37
43
  budgetTokens?: number | undefined;
38
44
  } | undefined;
39
45
  } | undefined;
46
+ status: "completed" | "errored" | "idle" | "pending" | "running" | "shutdown_approved";
40
47
  color?: string | undefined;
41
48
  worktreePath?: string | undefined;
42
49
  lastInjectedTurnMarker?: string | undefined;
50
+ pendingInjectedMessageIds: string[];
43
51
  }[];
44
52
  shutdownRequests: {
45
53
  memberId: string;
@@ -56,14 +64,6 @@ export declare const createTeamRunMock: import("bun:test").Mock<(spec: TeamSpec,
56
64
  maxWallClockMinutes: number;
57
65
  maxMemberTurns: number;
58
66
  };
59
- leadSessionId?: string | undefined;
60
- tmuxLayout?: {
61
- ownedSession: boolean;
62
- targetSessionId: string;
63
- focusWindowId?: string | undefined;
64
- gridWindowId?: string | undefined;
65
- paneIds?: string[] | undefined;
66
- } | undefined;
67
67
  }>>;
68
68
  export declare const deleteTeamMock: import("bun:test").Mock<(teamRunId: string, _config?: unknown, _tmuxMgr?: unknown, _bgMgr?: unknown, options?: {
69
69
  force?: boolean;
@@ -77,57 +77,63 @@ export declare const rejectShutdownMock: import("bun:test").Mock<(teamRunId: str
77
77
  export declare const loadTeamSpecMock: import("bun:test").Mock<() => Promise<{
78
78
  version: 1;
79
79
  name: string;
80
+ description?: string | undefined;
80
81
  createdAt: number;
82
+ leadAgentId?: string | undefined;
83
+ teamAllowedPaths?: string[] | undefined;
84
+ sessionPermission?: string | undefined;
81
85
  members: ({
82
86
  name: string;
87
+ cwd?: string | undefined;
88
+ worktreePath?: string | undefined;
89
+ subscriptions?: string[] | undefined;
83
90
  backendType: "in-process" | "tmux";
91
+ color?: string | undefined;
84
92
  isActive: boolean;
85
93
  kind: "category";
86
94
  category: string;
87
95
  prompt: string;
96
+ } | {
97
+ name: string;
88
98
  cwd?: string | undefined;
89
99
  worktreePath?: string | undefined;
90
100
  subscriptions?: string[] | undefined;
91
- color?: string | undefined;
92
- } | {
93
- name: string;
94
101
  backendType: "in-process" | "tmux";
102
+ color?: string | undefined;
95
103
  isActive: boolean;
96
104
  kind: "subagent_type";
97
105
  subagent_type: string;
98
- cwd?: string | undefined;
99
- worktreePath?: string | undefined;
100
- subscriptions?: string[] | undefined;
101
- color?: string | undefined;
102
106
  prompt?: string | undefined;
103
107
  })[];
104
- description?: string | undefined;
105
- leadAgentId?: string | undefined;
106
- teamAllowedPaths?: string[] | undefined;
107
- sessionPermission?: string | undefined;
108
108
  }>>;
109
109
  export declare const listActiveTeamsMock: import("bun:test").Mock<() => Promise<{
110
110
  teamRunId: string;
111
111
  teamName: string;
112
- status: "failed" | "deleted" | "active" | "creating" | "shutdown_requested" | "deleting" | "orphaned";
112
+ status: "active" | "creating" | "deleted" | "deleting" | "failed" | "orphaned" | "shutdown_requested";
113
113
  memberCount: number;
114
- scope: "user" | "project";
114
+ scope: "project" | "user";
115
115
  }[]>>;
116
116
  export declare const loadRuntimeStateMock: import("bun:test").Mock<(teamRunId: string) => Promise<{
117
117
  version: 1;
118
118
  teamRunId: string;
119
119
  teamName: string;
120
- specSource: "user" | "project";
120
+ specSource: "project" | "user";
121
121
  createdAt: number;
122
- status: "failed" | "deleted" | "active" | "creating" | "shutdown_requested" | "deleting" | "orphaned";
122
+ status: "active" | "creating" | "deleted" | "deleting" | "failed" | "orphaned" | "shutdown_requested";
123
+ leadSessionId?: string | undefined;
124
+ tmuxLayout?: {
125
+ ownedSession: boolean;
126
+ targetSessionId: string;
127
+ focusWindowId?: string | undefined;
128
+ gridWindowId?: string | undefined;
129
+ paneIds?: string[] | undefined;
130
+ } | undefined;
123
131
  members: {
124
132
  name: string;
125
- agentType: "leader" | "general-purpose";
126
- status: "running" | "completed" | "pending" | "idle" | "shutdown_approved" | "errored";
127
- pendingInjectedMessageIds: string[];
128
133
  sessionId?: string | undefined;
129
134
  tmuxPaneId?: string | undefined;
130
135
  tmuxGridPaneId?: string | undefined;
136
+ agentType: "general-purpose" | "leader";
131
137
  subagent_type?: string | undefined;
132
138
  category?: string | undefined;
133
139
  model?: {
@@ -139,13 +145,15 @@ export declare const loadRuntimeStateMock: import("bun:test").Mock<(teamRunId: s
139
145
  top_p?: number | undefined;
140
146
  maxTokens?: number | undefined;
141
147
  thinking?: {
142
- type: "enabled" | "disabled";
148
+ type: "disabled" | "enabled";
143
149
  budgetTokens?: number | undefined;
144
150
  } | undefined;
145
151
  } | undefined;
152
+ status: "completed" | "errored" | "idle" | "pending" | "running" | "shutdown_approved";
146
153
  color?: string | undefined;
147
154
  worktreePath?: string | undefined;
148
155
  lastInjectedTurnMarker?: string | undefined;
156
+ pendingInjectedMessageIds: string[];
149
157
  }[];
150
158
  shutdownRequests: {
151
159
  memberId: string;
@@ -162,14 +170,6 @@ export declare const loadRuntimeStateMock: import("bun:test").Mock<(teamRunId: s
162
170
  maxWallClockMinutes: number;
163
171
  maxMemberTurns: number;
164
172
  };
165
- leadSessionId?: string | undefined;
166
- tmuxLayout?: {
167
- ownedSession: boolean;
168
- targetSessionId: string;
169
- focusWindowId?: string | undefined;
170
- gridWindowId?: string | undefined;
171
- paneIds?: string[] | undefined;
172
- } | undefined;
173
173
  }>>;
174
174
  export declare const config: {
175
175
  enabled: boolean;
@@ -179,10 +179,10 @@ export declare const config: {
179
179
  max_messages_per_run: number;
180
180
  max_wall_clock_minutes: number;
181
181
  max_member_turns: number;
182
+ base_dir?: string | undefined;
182
183
  message_payload_max_bytes: number;
183
184
  recipient_unread_max_bytes: number;
184
185
  mailbox_poll_interval_ms: number;
185
- base_dir?: string | undefined;
186
186
  };
187
187
  export declare const mockClient: OpencodeClient;
188
188
  export declare const backgroundManager: BackgroundManager;
@@ -0,0 +1,2 @@
1
+ import type { TmuxConfig } from "../../config/schema";
2
+ export declare function selectTmuxManagerEnvironmentPredicate(isolation: TmuxConfig["isolation"]): () => boolean;
@@ -1,4 +1,5 @@
1
1
  export * from "./manager";
2
+ export * from "./environment-eligibility";
2
3
  export * from "./event-handlers";
3
4
  export * from "./polling";
4
5
  export * from "./session-created-event";
@@ -4,5 +4,6 @@ export declare function createTrackedSession(params: {
4
4
  paneId: string;
5
5
  description: string;
6
6
  now?: Date;
7
+ attachActivated?: boolean;
7
8
  }): TrackedSession;
8
9
  export declare function markTrackedSessionClosePending(tracked: TrackedSession): TrackedSession;
@@ -6,22 +6,22 @@ export declare const TuiRuntimeSnapshotSchema: z.ZodObject<{
6
6
  activeAgents: z.ZodArray<z.ZodObject<{
7
7
  name: z.ZodString;
8
8
  status: z.ZodEnum<{
9
- error: "error";
10
9
  busy: "busy";
10
+ error: "error";
11
+ idle: "idle";
11
12
  retry: "retry";
12
13
  running: "running";
13
- idle: "idle";
14
14
  }>;
15
15
  }, z.core.$strip>>;
16
16
  jobBoard: z.ZodArray<z.ZodObject<{
17
17
  title: z.ZodString;
18
18
  status: z.ZodEnum<{
19
- error: "error";
20
- running: "running";
21
- completed: "completed";
22
- pending: "pending";
23
19
  cancelled: "cancelled";
20
+ completed: "completed";
21
+ error: "error";
24
22
  interrupt: "interrupt";
23
+ pending: "pending";
24
+ running: "running";
25
25
  }>;
26
26
  toolCalls: z.ZodNullable<z.ZodNumber>;
27
27
  lastTool: z.ZodNullable<z.ZodString>;
@@ -19,9 +19,9 @@ export declare const AcpConnectionSchema: z.ZodObject<{
19
19
  id: z.ZodString;
20
20
  agentId: z.ZodString;
21
21
  state: z.ZodEnum<{
22
- error: "error";
23
22
  connected: "connected";
24
23
  disconnected: "disconnected";
24
+ error: "error";
25
25
  }>;
26
26
  startedAt: z.ZodNumber;
27
27
  messagesSent: z.ZodNumber;
@@ -47,9 +47,9 @@ export declare const AcpServerSchema: z.ZodObject<{
47
47
  id: z.ZodString;
48
48
  agentId: z.ZodString;
49
49
  state: z.ZodEnum<{
50
- error: "error";
51
50
  connected: "connected";
52
51
  disconnected: "disconnected";
52
+ error: "error";
53
53
  }>;
54
54
  startedAt: z.ZodNumber;
55
55
  messagesSent: z.ZodNumber;
@@ -77,9 +77,9 @@ export declare const AcpResultSchema: z.ZodObject<{
77
77
  id: z.ZodString;
78
78
  agentId: z.ZodString;
79
79
  state: z.ZodEnum<{
80
- error: "error";
81
80
  connected: "connected";
82
81
  disconnected: "disconnected";
82
+ error: "error";
83
83
  }>;
84
84
  startedAt: z.ZodNumber;
85
85
  messagesSent: z.ZodNumber;
@@ -16,9 +16,9 @@ export declare const DoctorIssueSchema: z.ZodObject<{
16
16
  export declare const CheckResultSchema: z.ZodObject<{
17
17
  name: z.ZodString;
18
18
  status: z.ZodEnum<{
19
- skip: "skip";
20
- pass: "pass";
21
19
  fail: "fail";
20
+ pass: "pass";
21
+ skip: "skip";
22
22
  warn: "warn";
23
23
  }>;
24
24
  message: z.ZodString;
@@ -82,9 +82,9 @@ export declare const DoctorResultSchema: z.ZodObject<{
82
82
  results: z.ZodArray<z.ZodObject<{
83
83
  name: z.ZodString;
84
84
  status: z.ZodEnum<{
85
- skip: "skip";
86
- pass: "pass";
87
85
  fail: "fail";
86
+ pass: "pass";
87
+ skip: "skip";
88
88
  warn: "warn";
89
89
  }>;
90
90
  message: z.ZodString;
@@ -6,8 +6,8 @@ import { z } from "zod";
6
6
  export declare const SessionStatusSchema: z.ZodObject<{
7
7
  type: z.ZodEnum<{
8
8
  busy: "busy";
9
- retry: "retry";
10
9
  idle: "idle";
10
+ retry: "retry";
11
11
  }>;
12
12
  attempt: z.ZodOptional<z.ZodNumber>;
13
13
  message: z.ZodOptional<z.ZodString>;
@@ -46,8 +46,8 @@ export declare const SystemHealthSchema: z.ZodObject<{
46
46
  statuses: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
47
47
  type: z.ZodEnum<{
48
48
  busy: "busy";
49
- retry: "retry";
50
49
  idle: "idle";
50
+ retry: "retry";
51
51
  }>;
52
52
  attempt: z.ZodOptional<z.ZodNumber>;
53
53
  message: z.ZodOptional<z.ZodString>;
@@ -94,8 +94,8 @@ export declare const StatusResultSchema: z.ZodObject<{
94
94
  statuses: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
95
95
  type: z.ZodEnum<{
96
96
  busy: "busy";
97
- retry: "retry";
98
97
  idle: "idle";
98
+ retry: "retry";
99
99
  }>;
100
100
  attempt: z.ZodOptional<z.ZodNumber>;
101
101
  message: z.ZodOptional<z.ZodString>;
@@ -2,8 +2,8 @@ import { z } from "zod";
2
2
  export declare const GOAL_STATUS_VALUES: readonly ["active", "paused", "complete"];
3
3
  export declare const GoalStatusSchema: z.ZodEnum<{
4
4
  active: "active";
5
- paused: "paused";
6
5
  complete: "complete";
6
+ paused: "paused";
7
7
  }>;
8
8
  export type GoalStatus = z.infer<typeof GoalStatusSchema>;
9
9
  export declare const GoalSchema: z.ZodObject<{
@@ -12,8 +12,8 @@ export declare const GoalSchema: z.ZodObject<{
12
12
  objective: z.ZodString;
13
13
  status: z.ZodEnum<{
14
14
  active: "active";
15
- paused: "paused";
16
15
  complete: "complete";
16
+ paused: "paused";
17
17
  }>;
18
18
  tokensUsed: z.ZodNumber;
19
19
  timeUsedSeconds: z.ZodNumber;
@@ -31,8 +31,8 @@ export declare const GoalFileSchema: z.ZodObject<{
31
31
  objective: z.ZodString;
32
32
  status: z.ZodEnum<{
33
33
  active: "active";
34
- paused: "paused";
35
34
  complete: "complete";
35
+ paused: "paused";
36
36
  }>;
37
37
  tokensUsed: z.ZodNumber;
38
38
  timeUsedSeconds: z.ZodNumber;
@@ -65,8 +65,8 @@ export declare const GoalToolSnapshotSchema: z.ZodObject<{
65
65
  objective: z.ZodString;
66
66
  status: z.ZodEnum<{
67
67
  active: "active";
68
- paused: "paused";
69
68
  complete: "complete";
69
+ paused: "paused";
70
70
  }>;
71
71
  tokensUsed: z.ZodNumber;
72
72
  timeUsedSeconds: z.ZodNumber;
@@ -80,8 +80,8 @@ export declare const GoalToolResponseSchema: z.ZodObject<{
80
80
  objective: z.ZodString;
81
81
  status: z.ZodEnum<{
82
82
  active: "active";
83
- paused: "paused";
84
83
  complete: "complete";
84
+ paused: "paused";
85
85
  }>;
86
86
  tokensUsed: z.ZodNumber;
87
87
  timeUsedSeconds: z.ZodNumber;
@@ -28,7 +28,10 @@ export declare const SHELL_COMMAND_PATTERNS: {
28
28
  readonly banned: readonly ["vim", "nano", "vi", "emacs", "less", "more", "man", "python (REPL)", "node (REPL)", "git add -p", "git rebase -i"];
29
29
  readonly workarounds: {
30
30
  readonly yesPipe: "yes | ./script.sh";
31
- readonly heredoc: "./script.sh <<EOF\noption1\noption2\nEOF";
31
+ readonly heredoc: `./script.sh <<EOF
32
+ option1
33
+ option2
34
+ EOF`;
32
35
  readonly expectAlternative: "Use environment variables or config files instead of expect";
33
36
  };
34
37
  };
@@ -1,5 +1,7 @@
1
1
  export interface ParsedUserRequest {
2
2
  planName: string | null;
3
3
  explicitWorktreePath: string | null;
4
+ makePr: boolean;
5
+ ship: boolean;
4
6
  }
5
7
  export declare function parseUserRequest(promptText: string): ParsedUserRequest;
@@ -1 +1,6 @@
1
1
  export declare function createWorktreeActiveBlock(worktreePath: string): string;
2
+ export interface PrDeliveryFlags {
3
+ readonly makePr: boolean;
4
+ readonly ship: boolean;
5
+ }
6
+ export declare function createPrDeliveryBlock(flags: PrDeliveryFlags, worktreePath: string | undefined): string;