oh-my-opencode 4.19.1 → 4.19.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/command/publish.md +95 -28
- package/.agents/skills/publish/SKILL.md +20 -6
- package/.opencode/command/publish.md +95 -28
- package/README.ja.md +2 -2
- package/README.ko.md +2 -2
- package/README.md +2 -2
- package/README.ru.md +2 -2
- package/README.zh-cn.md +2 -2
- package/THIRD-PARTY-NOTICES.md +7 -7
- package/dist/agents/atlas/agent.d.ts +4 -2
- package/dist/agents/explore.d.ts +4 -2
- package/dist/agents/hephaestus/agent.d.ts +4 -2
- package/dist/agents/librarian.d.ts +4 -2
- package/dist/agents/metis.d.ts +4 -2
- package/dist/agents/momus.d.ts +3 -2
- package/dist/agents/multimodal-looker.d.ts +4 -2
- package/dist/agents/oracle.d.ts +4 -2
- package/dist/agents/sisyphus/claude-opus-5.d.ts +33 -0
- package/dist/agents/sisyphus/index.d.ts +2 -0
- package/dist/agents/sisyphus-agent-factory.d.ts +5 -2
- package/dist/agents/sisyphus-junior/agent.d.ts +4 -1
- package/dist/agents/sisyphus-runtime-prompt-reconciler.d.ts +1 -1
- package/dist/agents/types.d.ts +2 -2
- package/dist/cli/config-migrate.d.ts +8 -0
- package/dist/cli/doctor/checks/legacy-config-leftovers.d.ts +10 -0
- package/dist/cli/doctor/checks/model-resolution-config.d.ts +1 -1
- package/dist/cli/doctor/checks/tools-lsp.d.ts +1 -1
- package/dist/cli/doctor/framework/constants.d.ts +1 -1
- package/dist/cli/index.js +95391 -88524
- package/dist/cli-node/index.js +95504 -88637
- package/dist/config/schema/agent-names.d.ts +26 -26
- package/dist/config/schema/agent-overrides.d.ts +400 -400
- package/dist/config/schema/browser-automation.d.ts +2 -2
- package/dist/config/schema/categories.d.ts +36 -36
- package/dist/config/schema/commands.d.ts +2 -2
- package/dist/config/schema/dynamic-context-pruning.d.ts +1 -1
- package/dist/config/schema/experimental.d.ts +1 -1
- package/dist/config/schema/fallback-models.d.ts +25 -25
- package/dist/config/schema/hooks.d.ts +43 -43
- package/dist/config/schema/internal/permission.d.ts +9 -9
- package/dist/config/schema/keyword-detector.d.ts +6 -6
- package/dist/config/schema/oh-my-opencode-config.d.ts +402 -402
- package/dist/config/schema/tmux.d.ts +6 -6
- package/dist/config/validate.d.ts +2 -1
- package/dist/config-migration/deep-diff.d.ts +1 -0
- package/dist/config-migration/discovery-paths.d.ts +11 -0
- package/dist/config-migration/discovery-roots.d.ts +7 -0
- package/dist/config-migration/discovery.d.ts +4 -0
- package/dist/config-migration/index.d.ts +9 -0
- package/dist/config-migration/legacy-history.d.ts +3 -0
- package/dist/config-migration/migration-executor.d.ts +4 -0
- package/dist/config-migration/migration-plans.d.ts +14 -0
- package/dist/config-migration/record-values.d.ts +4 -0
- package/dist/config-migration/schema-url.d.ts +1 -0
- package/dist/config-migration/transform-config-jsonc.d.ts +2 -0
- package/dist/config-migration/transform-opencode.d.ts +2 -0
- package/dist/config-migration/transform-types.d.ts +24 -0
- package/dist/config-migration/types.d.ts +39 -0
- package/dist/create-hooks.d.ts +35 -35
- package/dist/features/background-agent/spawner/tmux-callback-invoker.d.ts +11 -0
- package/dist/features/builtin-commands/templates/hyperplan.d.ts +1 -1
- package/dist/features/builtin-commands/templates/start-work.d.ts +1 -1
- package/dist/features/claude-tasks/types.d.ts +4 -4
- package/dist/features/team-mode/team-runtime/shutdown-helpers.d.ts +1 -1
- package/dist/features/team-mode/team-runtime/shutdown-test-fixtures.d.ts +4 -4
- package/dist/features/team-mode/tools/lifecycle-test-fixture.d.ts +42 -42
- package/dist/features/tmux-subagent/environment-eligibility.d.ts +2 -0
- package/dist/features/tmux-subagent/index.d.ts +1 -0
- package/dist/features/tmux-subagent/tracked-session-state.d.ts +1 -0
- package/dist/features/tui-sidebar/snapshot-schema.d.ts +6 -6
- package/dist/help/schema/acp.d.ts +3 -3
- package/dist/help/schema/doctor.d.ts +4 -4
- package/dist/help/schema/status.d.ts +3 -3
- package/dist/hooks/auto-update-checker/constants.d.ts +3 -3
- package/dist/hooks/goal/types.d.ts +5 -5
- package/dist/hooks/non-interactive-env/constants.d.ts +4 -1
- package/dist/hooks/start-work/parse-user-request.d.ts +2 -0
- package/dist/hooks/start-work/worktree-block.d.ts +5 -0
- package/dist/index.js +35450 -28257
- package/dist/mcp/types.d.ts +3 -3
- package/dist/oh-my-opencode.schema.json +1 -1
- package/dist/plugin/chat-message/loop-commands.d.ts +1 -0
- package/dist/plugin/command-execute-before.d.ts +3 -3
- package/dist/plugin/hooks/create-core-hooks.d.ts +25 -25
- package/dist/plugin-config/omo-config-chain.d.ts +14 -0
- package/dist/plugin-config/unknown-key-diagnostics.d.ts +5 -0
- package/dist/plugin-config.d.ts +2 -2
- package/dist/shared/agent-display-names.d.ts +1 -1
- package/dist/shared/jsonc-parser.d.ts +1 -1
- package/dist/shared/migration.d.ts +5 -1
- package/dist/shared/opencode-config-dir-types.d.ts +0 -1
- package/dist/shared/plugin-identity.d.ts +6 -8
- package/dist/shared/project-discovery-dirs.d.ts +0 -1
- package/dist/shared/tmux/tmux-utils/environment.d.ts +1 -1
- package/dist/shared/tmux/tmux-utils.d.ts +1 -1
- package/dist/shared/typescript-native-source-parser.d.ts +7 -0
- package/dist/skills/coding-agent-sessions/SKILL.md +5 -2
- package/dist/skills/coding-agent-sessions/references/all-platforms.md +3 -1
- package/dist/skills/coding-agent-sessions/references/senpi.md +15 -5
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +46 -0
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +19 -10
- package/dist/skills/debugging/SKILL.md +2 -1
- package/dist/skills/debugging/references/methodology/03-flaky-triage.md +47 -0
- package/dist/skills/frontend/ATTRIBUTION.md +7 -0
- package/dist/skills/frontend/SKILL.md +4 -1
- package/dist/skills/frontend/references/design/README.md +8 -0
- package/dist/skills/frontend/references/design/_INDEX.md +14 -1
- package/dist/skills/frontend/references/design/interaction-skill.md +144 -0
- package/dist/skills/programming/SKILL.md +11 -1
- package/dist/skills/programming/references/logging.md +6 -1
- package/dist/skills/programming/scripts/typescript/check-no-excuse-rules.ts +51 -17
- package/dist/skills/start-work/SKILL.md +12 -2
- package/dist/skills/ulw-plan/SKILL.md +1 -1
- package/dist/skills/ulw-plan/references/full-workflow.md +12 -1
- package/dist/skills/ulw-plan/references/intent-clear.md +1 -1
- package/dist/startup-migration.d.ts +28 -0
- package/dist/testing/create-plugin-module.d.ts +4 -0
- package/dist/tools/task/types.d.ts +10 -10
- package/dist/tui.js +31812 -26849
- package/package.json +14 -14
- package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +21 -5
- package/packages/lsp-core/src/lsp/fixtures/workspace-edit-server.mjs +11 -2
- package/packages/omo-codex/THIRD-PARTY-NOTICES.md +2 -2
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +8 -4
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/codegraph/AGENTS.md +11 -5
- package/packages/omo-codex/plugin/components/codegraph/NOTICE +1 -1
- package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +10272 -2600
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +7341 -562
- package/packages/omo-codex/plugin/components/codegraph/package.json +2 -2
- package/packages/omo-codex/plugin/components/codegraph/src/hook-input.ts +33 -0
- package/packages/omo-codex/plugin/components/codegraph/src/hook-types.ts +36 -10
- package/packages/omo-codex/plugin/components/codegraph/src/hook.ts +170 -186
- package/packages/omo-codex/plugin/components/codegraph/src/post-tool-use-hook.ts +34 -0
- package/packages/omo-codex/plugin/components/codegraph/src/serve.ts +22 -5
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-command.ts +106 -0
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-cooldown.ts +145 -0
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-hook-runtime.ts +21 -0
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-lock.ts +139 -0
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-outcome.ts +15 -0
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-paths.ts +32 -0
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-project.ts +109 -0
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker-result.ts +148 -0
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker.ts +126 -186
- package/packages/omo-codex/plugin/components/codegraph/test/hook-exclusion.test.ts +9 -4
- package/packages/omo-codex/plugin/components/codegraph/test/hook-session-start-guard.test.ts +160 -0
- package/packages/omo-codex/plugin/components/codegraph/test/hook-store-upgrade.test.ts +12 -110
- package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +29 -20
- package/packages/omo-codex/plugin/components/codegraph/test/mcp-bridge-fixtures.ts +3 -3
- package/packages/omo-codex/plugin/components/codegraph/test/package-runtime.test.ts +2 -2
- package/packages/omo-codex/plugin/components/codegraph/test/provisioned-node-guard.test.ts +11 -5
- package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge.test.ts +3 -3
- package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-facade.test.ts +2 -1
- package/packages/omo-codex/plugin/components/codegraph/test/serve-provision.test.ts +50 -5
- package/packages/omo-codex/plugin/components/codegraph/test/serve-unavailable.test.ts +3 -2
- package/packages/omo-codex/plugin/components/codegraph/test/serve.test.ts +24 -13
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-node-support.test.ts +70 -13
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-project.test.ts +58 -0
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-state.test.ts +104 -0
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-trust-boundary.test.ts +4 -2
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-cooldown.test.ts +116 -0
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-flow.test.ts +114 -119
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/dist/cli.js +31 -14
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +1 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/directive.md +12 -7
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md +12 -7
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +12 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/directive.md +12 -7
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +19 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +42 -41
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/shared/src/config-loader.ts +165 -16
- package/packages/omo-codex/plugin/shared/src/config-migration.ts +162 -0
- package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +196 -18
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +5 -2
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +3 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/senpi.md +15 -5
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +46 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +19 -10
- package/packages/omo-codex/plugin/skills/debugging/SKILL.md +2 -1
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/03-flaky-triage.md +47 -0
- package/packages/omo-codex/plugin/skills/frontend/ATTRIBUTION.md +7 -0
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +4 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +8 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +14 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/interaction-skill.md +144 -0
- package/packages/omo-codex/plugin/skills/programming/SKILL.md +11 -1
- package/packages/omo-codex/plugin/skills/programming/references/logging.md +6 -1
- package/packages/omo-codex/plugin/skills/programming/scripts/typescript/check-no-excuse-rules.ts +51 -17
- package/packages/omo-codex/plugin/skills/start-work/SKILL.md +12 -2
- package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +12 -7
- package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +19 -1
- package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +12 -1
- package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +1 -1
- package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +22 -0
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +1 -1
- package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +5 -2
- package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +3 -1
- package/packages/shared-skills/skills/coding-agent-sessions/references/senpi.md +15 -5
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +46 -0
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +19 -10
- package/packages/shared-skills/skills/debugging/SKILL.md +2 -1
- package/packages/shared-skills/skills/debugging/references/methodology/03-flaky-triage.md +47 -0
- package/packages/shared-skills/skills/frontend/ATTRIBUTION.md +7 -0
- package/packages/shared-skills/skills/frontend/SKILL.md +4 -1
- package/packages/shared-skills/skills/frontend/references/design/README.md +8 -0
- package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +14 -1
- package/packages/shared-skills/skills/frontend/references/design/interaction-skill.md +144 -0
- package/packages/shared-skills/skills/programming/SKILL.md +11 -1
- package/packages/shared-skills/skills/programming/references/logging.md +6 -1
- package/packages/shared-skills/skills/programming/scripts/typescript/check-no-excuse-rules.ts +51 -17
- package/packages/shared-skills/skills/start-work/SKILL.md +12 -2
- package/packages/shared-skills/skills/ulw-plan/SKILL.md +1 -1
- package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +12 -1
- package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +1 -1
- package/dist/plugin-config/layered-config-loader.d.ts +0 -2
- package/dist/plugin-config/single-config-loader.d.ts +0 -4
- package/dist/shared/migrate-legacy-config-file.d.ts +0 -1
- package/dist/shared/migration/config-migration.d.ts +0 -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 };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { OmoConfigEnv } from "@oh-my-opencode/omo-config-core";
|
|
1
2
|
import { type OhMyOpenCodeConfig } from "./schema";
|
|
2
3
|
export type PluginConfigValidation = {
|
|
3
4
|
readonly valid: boolean;
|
|
@@ -5,4 +6,4 @@ export type PluginConfigValidation = {
|
|
|
5
6
|
readonly path: string | null;
|
|
6
7
|
readonly config: OhMyOpenCodeConfig;
|
|
7
8
|
};
|
|
8
|
-
export declare function validatePluginConfig(directory: string): PluginConfigValidation;
|
|
9
|
+
export declare function validatePluginConfig(directory: string, environment?: OmoConfigEnv): PluginConfigValidation;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function deepDifference(base: Readonly<Record<string, unknown>>, profile: Readonly<Record<string, unknown>>): Record<string, unknown>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ConfigMigrationDiscoveryOptions, type ConfigMigrationPathOperations } from "./types";
|
|
2
|
+
export declare const CONFIG_FILE_NAMES: readonly ["oh-my-openagent.jsonc", "oh-my-openagent.json", "oh-my-opencode.jsonc", "oh-my-opencode.json"];
|
|
3
|
+
export declare function isWindowsPathOperations(options: ConfigMigrationDiscoveryOptions): boolean;
|
|
4
|
+
export declare function discoveryFileSystem(options: ConfigMigrationDiscoveryOptions): import("./types").ConfigMigrationDiscoveryFileSystem;
|
|
5
|
+
export declare function usesWindowsPathSemantics(options: ConfigMigrationDiscoveryOptions): boolean;
|
|
6
|
+
export declare function hostPathOperations(options: ConfigMigrationDiscoveryOptions): ConfigMigrationPathOperations;
|
|
7
|
+
export declare function canonicalPath(path: string, options: ConfigMigrationDiscoveryOptions): string;
|
|
8
|
+
export declare function pathKey(path: string, options: ConfigMigrationDiscoveryOptions): string;
|
|
9
|
+
export declare function configPaths(directory: string, options: ConfigMigrationDiscoveryOptions): readonly string[];
|
|
10
|
+
export declare function profileDirectories(root: string, options: ConfigMigrationDiscoveryOptions): readonly string[];
|
|
11
|
+
export declare function projectDirectories(options: ConfigMigrationDiscoveryOptions): readonly string[];
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ConfigMigrationDiscoveryOptions } from "./types";
|
|
2
|
+
export type ConfigRoot = {
|
|
3
|
+
readonly activeProfile?: string;
|
|
4
|
+
readonly path: string;
|
|
5
|
+
readonly precedence: number;
|
|
6
|
+
};
|
|
7
|
+
export declare function configRoots(options: ConfigMigrationDiscoveryOptions): readonly ConfigRoot[];
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type ConfigMigrationDiscoveryOptions, type LegacyConfigMigrationGroup } from "./types";
|
|
2
|
+
export declare const OPENCODE_CONFIG_MIGRATION_ID = "2026-07-opencode-config-unification";
|
|
3
|
+
export declare const CONFIG_JSONC_MIGRATION_ID = "2026-07-codex-config-jsonc";
|
|
4
|
+
export declare function discoverLegacyConfigGroups(options: ConfigMigrationDiscoveryOptions): readonly LegacyConfigMigrationGroup[];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { CONFIG_JSONC_MIGRATION_ID, OPENCODE_CONFIG_MIGRATION_ID, discoverLegacyConfigGroups, } from "./discovery";
|
|
2
|
+
export { createLegacyConfigMigrationPlans, } from "./migration-plans";
|
|
3
|
+
export { executeLegacyConfigMigrationPlan } from "./migration-executor";
|
|
4
|
+
export { transformConfigJsoncSources } from "./transform-config-jsonc";
|
|
5
|
+
export { transformOpenCodeSources } from "./transform-opencode";
|
|
6
|
+
export type { ExecuteLegacyConfigMigrationPlanOptions } from "./migration-executor";
|
|
7
|
+
export type { CreateLegacyConfigMigrationPlansOptions, LegacyConfigMigrationPlan, } from "./migration-plans";
|
|
8
|
+
export type { ConfigMigrationTransformResult, LoadedLegacyConfigSource, OpenCodeTransformScope, TransformConfigJsoncSourcesInput, TransformOpenCodeSourcesInput, } from "./transform-types";
|
|
9
|
+
export type { ConfigMigrationDiscoveryFileSystem, ConfigMigrationDiscoveryOptions, ConfigMigrationPathOperations, DiscoveredLegacyConfigSource, LegacyConfigMigrationGroup, LegacyConfigSourceKind, } from "./types";
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { DiscoveredLegacyConfigSource } from "./types";
|
|
2
|
+
import type { LoadedLegacyConfigSource } from "./transform-types";
|
|
3
|
+
export declare function legacyMigrationHistory(discovered: readonly DiscoveredLegacyConfigSource[], loaded: readonly LoadedLegacyConfigSource[]): Record<string, readonly string[]>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type MigrationRunResult, type RunMigrationOptions } from "@oh-my-opencode/omo-config-core";
|
|
2
|
+
import type { LegacyConfigMigrationPlan } from "./migration-plans";
|
|
3
|
+
export type ExecuteLegacyConfigMigrationPlanOptions = Omit<RunMigrationOptions, "id" | "sources" | "targetPath" | "transform">;
|
|
4
|
+
export declare function executeLegacyConfigMigrationPlan(plan: LegacyConfigMigrationPlan, options?: ExecuteLegacyConfigMigrationPlanOptions): MigrationRunResult;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MigrationSourceDescriptor, MigrationTransform } from "@oh-my-opencode/omo-config-core";
|
|
2
|
+
import type { ConfigMigrationDiscoveryOptions } from "./types";
|
|
3
|
+
import type { ConfigMigrationTransformResult } from "./transform-types";
|
|
4
|
+
export type LegacyConfigMigrationPlan = {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
readonly inspect: (sources: Parameters<MigrationTransform>[0]) => ConfigMigrationTransformResult;
|
|
7
|
+
readonly sources: readonly MigrationSourceDescriptor[];
|
|
8
|
+
readonly targetPath: string;
|
|
9
|
+
readonly transform: MigrationTransform;
|
|
10
|
+
};
|
|
11
|
+
export type CreateLegacyConfigMigrationPlansOptions = ConfigMigrationDiscoveryOptions & {
|
|
12
|
+
readonly backupTimestamp?: string;
|
|
13
|
+
};
|
|
14
|
+
export declare function createLegacyConfigMigrationPlans(options: CreateLegacyConfigMigrationPlansOptions): readonly LegacyConfigMigrationPlan[];
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function isPlainRecord(value: unknown): value is Record<string, unknown>;
|
|
2
|
+
export declare function copyRecord(value: Readonly<Record<string, unknown>>): Record<string, unknown>;
|
|
3
|
+
export declare function mergeRecords(base: Readonly<Record<string, unknown>>, override: Readonly<Record<string, unknown>>): Record<string, unknown>;
|
|
4
|
+
export declare function withoutLegacyMetadata(value: Readonly<Record<string, unknown>>): Record<string, unknown>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const OMO_SCHEMA_URL = "https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/assets/omo.schema.json";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { DiscoveredLegacyConfigSource } from "./types";
|
|
2
|
+
export type LoadedLegacyConfigSource = {
|
|
3
|
+
readonly path: string;
|
|
4
|
+
readonly value: unknown;
|
|
5
|
+
};
|
|
6
|
+
export type ConfigMigrationTransformResult = {
|
|
7
|
+
readonly diagnostics: readonly string[];
|
|
8
|
+
readonly document: Record<string, unknown>;
|
|
9
|
+
};
|
|
10
|
+
export type OpenCodeTransformScope = {
|
|
11
|
+
readonly kind: "user";
|
|
12
|
+
} | {
|
|
13
|
+
readonly kind: "project";
|
|
14
|
+
readonly projectRoot: string;
|
|
15
|
+
};
|
|
16
|
+
export type TransformOpenCodeSourcesInput = {
|
|
17
|
+
readonly discovered: readonly DiscoveredLegacyConfigSource[];
|
|
18
|
+
readonly scope: OpenCodeTransformScope;
|
|
19
|
+
readonly sources: readonly LoadedLegacyConfigSource[];
|
|
20
|
+
};
|
|
21
|
+
export type TransformConfigJsoncSourcesInput = {
|
|
22
|
+
readonly discovered: readonly DiscoveredLegacyConfigSource[];
|
|
23
|
+
readonly sources: readonly LoadedLegacyConfigSource[];
|
|
24
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export type ConfigMigrationPathOperations = {
|
|
2
|
+
readonly basename: (path: string) => string;
|
|
3
|
+
readonly dirname: (path: string) => string;
|
|
4
|
+
readonly isAbsolute: (path: string) => boolean;
|
|
5
|
+
readonly join: (...paths: string[]) => string;
|
|
6
|
+
readonly normalize: (path: string) => string;
|
|
7
|
+
readonly relative: (from: string, to: string) => string;
|
|
8
|
+
readonly resolve: (...paths: string[]) => string;
|
|
9
|
+
};
|
|
10
|
+
export type ConfigMigrationDiscoveryFileSystem = {
|
|
11
|
+
readonly existsSync: (path: string) => boolean;
|
|
12
|
+
readonly readdirSync: (path: string) => string[];
|
|
13
|
+
readonly realpathSync: (path: string) => string;
|
|
14
|
+
};
|
|
15
|
+
export declare const DEFAULT_DISCOVERY_FILE_SYSTEM: ConfigMigrationDiscoveryFileSystem;
|
|
16
|
+
export type LegacyConfigSourceKind = "config-jsonc" | "migration-sidecar" | "profile-config" | "project-config" | "user-config";
|
|
17
|
+
export type DiscoveredLegacyConfigSource = {
|
|
18
|
+
readonly baseRoot?: string;
|
|
19
|
+
readonly configPath: string;
|
|
20
|
+
readonly isActiveProfile?: boolean;
|
|
21
|
+
readonly kind: LegacyConfigSourceKind;
|
|
22
|
+
readonly path: string;
|
|
23
|
+
readonly precedence: number;
|
|
24
|
+
readonly profile?: string;
|
|
25
|
+
readonly projectRoot?: string;
|
|
26
|
+
};
|
|
27
|
+
export type LegacyConfigMigrationGroup = {
|
|
28
|
+
readonly id: string;
|
|
29
|
+
readonly sources: readonly DiscoveredLegacyConfigSource[];
|
|
30
|
+
};
|
|
31
|
+
export type ConfigMigrationDiscoveryOptions = {
|
|
32
|
+
readonly cwd: string;
|
|
33
|
+
readonly environment?: Readonly<Record<string, string | undefined>>;
|
|
34
|
+
readonly fileSystem?: ConfigMigrationDiscoveryFileSystem;
|
|
35
|
+
readonly homeDir: string;
|
|
36
|
+
readonly pathOperations: ConfigMigrationPathOperations;
|
|
37
|
+
readonly platform?: NodeJS.Platform;
|
|
38
|
+
readonly tauriConfigDirs?: readonly string[];
|
|
39
|
+
};
|
package/dist/create-hooks.d.ts
CHANGED
|
@@ -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 HYPERPLAN_TEMPLATE = "You are running the `/hyperplan` command \u2014 adversarial multi-agent planning via team-mode.\n\nLOAD THE HYPERPLAN SKILL IMMEDIATELY:\n\n```\nskill(name=\"hyperplan\")\n```\n\nAfter loading the skill, follow its 7-phase workflow EXACTLY using this user request.\n\nRoster contract: call `team_create` with category members `unspecified-low`, `unspecified-high`, `ultrabrain`, and `artistry`. Include `deep` only if the category is enabled; if `deep` is disabled or unavailable, retry without only that member and state the degraded roster.\n\n<user-request>\n$ARGUMENTS\n</user-request>\n\nIf team-mode is unavailable (`team_*` tools missing), instruct the user to set `team_mode.enabled: true` in `~/.
|
|
1
|
+
export declare const HYPERPLAN_TEMPLATE = "You are running the `/hyperplan` command \u2014 adversarial multi-agent planning via team-mode.\n\nLOAD THE HYPERPLAN SKILL IMMEDIATELY:\n\n```\nskill(name=\"hyperplan\")\n```\n\nAfter loading the skill, follow its 7-phase workflow EXACTLY using this user request.\n\nRoster contract: call `team_create` with category members `unspecified-low`, `unspecified-high`, `ultrabrain`, and `artistry`. Include `deep` only if the category is enabled; if `deep` is disabled or unavailable, retry without only that member and state the degraded roster.\n\n<user-request>\n$ARGUMENTS\n</user-request>\n\nIf team-mode is unavailable (`team_*` tools missing), instruct the user to set `team_mode.enabled: true` in `~/.omo/omo.jsonc` and restart opencode.";
|
|
@@ -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\
|
|
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
|
-
|
|
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
|
-
|
|
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<"
|
|
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: "
|
|
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: "
|
|
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: "
|
|
14
|
+
specSource: "project" | "user";
|
|
15
15
|
createdAt: number;
|
|
16
|
-
status: "
|
|
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: "
|
|
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: "
|
|
112
|
+
status: "active" | "creating" | "deleted" | "deleting" | "failed" | "orphaned" | "shutdown_requested";
|
|
113
113
|
memberCount: number;
|
|
114
|
-
scope: "
|
|
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: "
|
|
120
|
+
specSource: "project" | "user";
|
|
121
121
|
createdAt: number;
|
|
122
|
-
status: "
|
|
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: "
|
|
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;
|