@wolfx/oh-my-openagent 3.17.10 → 3.17.13
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/README.ja.md +1 -1
- package/README.ko.md +1 -1
- package/README.md +1 -1
- package/README.ru.md +1 -1
- package/README.zh-cn.md +1 -1
- package/dist/agents/hephaestus/gpt-5-5.d.ts +3 -9
- package/dist/agents/sisyphus/gpt-5-5.d.ts +3 -17
- package/dist/agents/sisyphus-junior/gpt-5-5.d.ts +2 -11
- package/dist/features/background-agent/manager.d.ts +13 -9
- package/dist/features/background-agent/types.d.ts +12 -12
- package/dist/features/background-agent/wait-for-task-session.d.ts +1 -1
- package/dist/features/team-mode/resolve-caller-team-lead.d.ts +8 -0
- package/dist/hooks/keyword-detector/analyze/default.d.ts +1 -1
- package/dist/hooks/ralph-loop/loop-session-recovery.d.ts +7 -0
- package/dist/hooks/session-notification-scheduler.d.ts +2 -4
- package/dist/hooks/session-notification-utils.d.ts +1 -0
- package/dist/index.js +912 -382
- package/package.json +7 -7
package/README.ja.md
CHANGED
|
@@ -117,7 +117,7 @@ curl -s https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/refs/head
|
|
|
117
117
|
|
|
118
118
|
**注記**: 公開されているパッケージおよびバイナリ名は `oh-my-opencode` を使用してください。`opencode.json` 内では、互換性レイヤーがプラグインエントリ `oh-my-openagent` を優先しますが、従来の `oh-my-opencode` エントリも警告付きで読み込まれます。プラグイン設定ファイルは依然として `oh-my-opencode.json` または `oh-my-opencode.jsonc` を使用するのが一般的で、移行期間中は従来のファイル名と改名後のファイル名の両方が認識されます。
|
|
119
119
|
|
|
120
|
-
|
|
120
|
+
匿名のテレメトリは、アクティブなインストール数(DAU/WAU/MAU)の集計のためにデフォルトで有効になっています。マシン1台につきUTC日あたり最大1回イベントが送信され、ハッシュ化されたインストール識別子を使用し、生のホスト名は使用せず、PostHog person profile も作成されません。無効化するには `OMO_SEND_ANONYMOUS_TELEMETRY=0` または `OMO_DISABLE_POSTHOG=1` を設定してください。[プライバシーポリシー](docs/legal/privacy-policy.md)と[利用規約](docs/legal/terms-of-service.md)をご覧ください。
|
|
121
121
|
|
|
122
122
|
---
|
|
123
123
|
|
package/README.ko.md
CHANGED
|
@@ -111,7 +111,7 @@ curl -s https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/refs/head
|
|
|
111
111
|
|
|
112
112
|
**참고**: 배포된 패키지와 바이너리 이름은 `oh-my-opencode`를 사용하세요. `opencode.json` 내부에서는 호환성 레이어가 이제 플러그인 엔트리 `oh-my-openagent`를 우선시하며, 레거시 `oh-my-opencode` 엔트리는 경고와 함께 여전히 로드됩니다. 플러그인 설정 파일은 여전히 일반적으로 `oh-my-opencode.json` 또는 `oh-my-opencode.jsonc`를 사용하며, 전환 기간 동안 레거시와 변경된 basename 모두 인식됩니다.
|
|
113
113
|
|
|
114
|
-
익명 텔레메트리는 설치
|
|
114
|
+
익명 텔레메트리는 활성 설치 수(DAU/WAU/MAU) 집계를 위해 기본적으로 활성화되어 있습니다. 머신당 UTC 하루에 최대 1회만 이벤트가 전송되며, 해시된 설치 식별자를 사용하고 원시 호스트명은 절대 사용하지 않으며 PostHog person profile은 생성되지 않습니다. `OMO_SEND_ANONYMOUS_TELEMETRY=0` 또는 `OMO_DISABLE_POSTHOG=1`로 비활성화할 수 있습니다. [개인정보처리방침](docs/legal/privacy-policy.md)과 [서비스 이용약관](docs/legal/terms-of-service.md)을 참조하세요.
|
|
115
115
|
|
|
116
116
|
---
|
|
117
117
|
|
package/README.md
CHANGED
|
@@ -113,7 +113,7 @@ curl -s https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/refs/head
|
|
|
113
113
|
|
|
114
114
|
**Note**: Use the published package and binary name `oh-my-opencode`. Inside `opencode.json`, the compatibility layer now prefers the plugin entry `oh-my-openagent`, while legacy `oh-my-opencode` entries still load with a warning. Plugin config files still commonly use `oh-my-opencode.json` or `oh-my-opencode.jsonc`, and both legacy and renamed basenames are recognized during the transition.
|
|
115
115
|
|
|
116
|
-
Anonymous telemetry is enabled by default to
|
|
116
|
+
Anonymous telemetry is enabled by default to track active installations (DAU/WAU/MAU). A single event is sent at most once per UTC day per machine using a hashed installation identifier, never the raw hostname, and PostHog person profiles are not created. Disable with `OMO_SEND_ANONYMOUS_TELEMETRY=0` or `OMO_DISABLE_POSTHOG=1`. See [Privacy Policy](docs/legal/privacy-policy.md) and [Terms of Service](docs/legal/terms-of-service.md).
|
|
117
117
|
|
|
118
118
|
---
|
|
119
119
|
|
package/README.ru.md
CHANGED
|
@@ -103,7 +103,7 @@ curl -s https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/refs/head
|
|
|
103
103
|
|
|
104
104
|
**Примечание**: Используйте опубликованное имя пакета и бинарника `oh-my-opencode`. Внутри `opencode.json` слой совместимости теперь предпочитает точку входа плагина `oh-my-openagent`, в то время как устаревшие записи `oh-my-opencode` все еще загружаются с предупреждением. Файлы конфигурации плагина по-прежнему часто используют `oh-my-opencode.json` или `oh-my-opencode.jsonc`, и как устаревшие, так и переименованные базовые имена распознаются во время переходного периода.
|
|
105
105
|
|
|
106
|
-
Анонимная телеметрия включена по умолчанию для
|
|
106
|
+
Анонимная телеметрия включена по умолчанию для подсчёта активных установок (DAU/WAU/MAU). Не более одного события на машину за UTC-сутки, использует хешированный идентификатор установки, никогда не использует исходное имя хоста, и не создаёт PostHog person profile. Можно отключить через `OMO_SEND_ANONYMOUS_TELEMETRY=0` или `OMO_DISABLE_POSTHOG=1`. См. [Политику конфиденциальности](docs/legal/privacy-policy.md) и [Условия обслуживания](docs/legal/terms-of-service.md).
|
|
107
107
|
|
|
108
108
|
------
|
|
109
109
|
|
package/README.zh-cn.md
CHANGED
|
@@ -118,7 +118,7 @@ curl -s https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/refs/head
|
|
|
118
118
|
|
|
119
119
|
**注意**:请使用已发布的包名和二进制名 `oh-my-opencode`。在 `opencode.json` 中,兼容性层现在优先使用插件入口 `oh-my-openagent`,而旧的 `oh-my-opencode` 条目仍会加载并显示警告。插件配置文件通常仍使用 `oh-my-opencode.json` 或 `oh-my-opencode.jsonc`,在过渡期间新旧两种文件名都会被识别。
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
匿名遥测默认开启,用于统计活跃安装数(DAU/WAU/MAU)。每台机器每个 UTC 日最多发送一次事件,使用哈希化的安装标识符,绝不会使用原始主机名,且不会创建 PostHog person profile。可通过 `OMO_SEND_ANONYMOUS_TELEMETRY=0` 或 `OMO_DISABLE_POSTHOG=1` 禁用。详见 [隐私政策](docs/legal/privacy-policy.md) 和 [服务条款](docs/legal/terms-of-service.md)。
|
|
122
122
|
|
|
123
123
|
---
|
|
124
124
|
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* GPT-5.5 Hephaestus prompt - outcome-first,
|
|
3
|
-
*
|
|
4
|
-
* Lifts Sisyphus's "FULL DELEGATION -> FULL MANUAL QA" rule into
|
|
5
|
-
* the Delegation Contract: on every delegated task, re-read code,
|
|
6
|
-
* run lsp/tests, and drive the artifact through its matching
|
|
7
|
-
* surface (interactive_bash for TUI/CLI, playwright for browser,
|
|
8
|
-
* curl for HTTP, driver script for library). Decision rules over
|
|
9
|
-
* absolutes; hard invariants live in Stop Rules.
|
|
2
|
+
* GPT-5.5 Hephaestus prompt - outcome-first autonomous deep worker,
|
|
3
|
+
* gated on personal manual QA of the artifact through its surface.
|
|
10
4
|
*/
|
|
11
5
|
import type { AvailableAgent, AvailableTool, AvailableSkill, AvailableCategory } from "../dynamic-agent-prompt-builder";
|
|
12
|
-
export declare function buildGpt55HephaestusPrompt(
|
|
6
|
+
export declare function buildGpt55HephaestusPrompt(availableAgents: AvailableAgent[], _availableTools?: AvailableTool[], availableSkills?: AvailableSkill[], availableCategories?: AvailableCategory[], useTaskSystem?: boolean): string;
|
|
@@ -1,20 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* GPT-5.5
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* Design principles (from drafts/gpt-5-5/sisyphus.md):
|
|
6
|
-
* - Codex-style section structure: `# General` -> `## Autonomy and Persistence`
|
|
7
|
-
* -> `## Task execution` -> `## Validating your work` -> `# Working with the user`
|
|
8
|
-
* -> `# Tool Guidelines`.
|
|
9
|
-
* - Single `{{ personality }}` slot for per-user persona variants (default /
|
|
10
|
-
* friendly / pragmatic). Empty string today; reserved for future substitution.
|
|
11
|
-
* - `{{ taskSystemGuide }}` slot switches between todo-based and task-based
|
|
12
|
-
* tracking tools depending on harness configuration.
|
|
13
|
-
* - Prose-first output, bullets only when content is inherently list-shaped.
|
|
14
|
-
* - Contract frames (not threat frames). GPT-5.5 follows instructions well.
|
|
15
|
-
* - Explicit opener blacklist to block "Done -", "Got it", "Great question", etc.
|
|
16
|
-
* - Agent identity XML block is prepended to override OpenCode's default
|
|
17
|
-
* "You are Claude" system prompt.
|
|
2
|
+
* GPT-5.5 Sisyphus prompt - orchestrator that delegates work, supervises
|
|
3
|
+
* execution, and ships verified outcomes through the right specialists.
|
|
18
4
|
*/
|
|
19
5
|
import type { AvailableAgent, AvailableTool, AvailableSkill, AvailableCategory } from "../dynamic-agent-prompt-builder";
|
|
20
|
-
export declare function buildGpt55SisyphusPrompt(
|
|
6
|
+
export declare function buildGpt55SisyphusPrompt(model: string, availableAgents: AvailableAgent[], _availableTools?: AvailableTool[], availableSkills?: AvailableSkill[], availableCategories?: AvailableCategory[], useTaskSystem?: boolean): string;
|
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* GPT-5.5
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* Derived from drafts/gpt-5-5/sisyphus-junior.md (reviewed 2026-04).
|
|
6
|
-
*
|
|
7
|
-
* Why a separate module: Sisyphus-Junior is the category-spawned counterpart
|
|
8
|
-
* to Hephaestus. The base prompt is category-agnostic; the actual category
|
|
9
|
-
* context (deep, quick, ultrabrain, writing) is appended at runtime via the
|
|
10
|
-
* `promptAppend` parameter. GPT-5.5 is expected to integrate the category
|
|
11
|
-
* context and base instructions coherently without explicit framing beyond
|
|
12
|
-
* the "Category context" closing section.
|
|
2
|
+
* GPT-5.5 Sisyphus-Junior prompt - focused executor for orchestrator-routed
|
|
3
|
+
* categorized tasks, gated on personal manual QA of the artifact's surface.
|
|
13
4
|
*/
|
|
14
5
|
export declare function buildGpt55SisyphusJuniorPrompt(useTaskSystem: boolean, promptAppend?: string): string;
|
|
@@ -21,6 +21,15 @@ export interface SubagentSessionCreatedEvent {
|
|
|
21
21
|
title: string;
|
|
22
22
|
}
|
|
23
23
|
export type OnSubagentSessionCreated = (event: SubagentSessionCreatedEvent) => Promise<void>;
|
|
24
|
+
export interface BackgroundManagerConfig {
|
|
25
|
+
pluginContext: PluginInput;
|
|
26
|
+
config?: BackgroundTaskConfig;
|
|
27
|
+
tmuxConfig?: TmuxConfig;
|
|
28
|
+
onSubagentSessionCreated?: OnSubagentSessionCreated;
|
|
29
|
+
onShutdown?: () => void | Promise<void>;
|
|
30
|
+
enableParentSessionNotifications?: boolean;
|
|
31
|
+
modelFallbackControllerAccessor?: ModelFallbackControllerAccessor;
|
|
32
|
+
}
|
|
24
33
|
export declare class BackgroundManager {
|
|
25
34
|
private tasks;
|
|
26
35
|
private tasksByParentSession;
|
|
@@ -49,15 +58,10 @@ export declare class BackgroundManager {
|
|
|
49
58
|
private preStartDescendantReservations;
|
|
50
59
|
private enableParentSessionNotifications;
|
|
51
60
|
private modelFallbackControllerAccessor?;
|
|
61
|
+
private loggedSessionStatusUnavailable;
|
|
52
62
|
readonly taskHistory: TaskHistory;
|
|
53
63
|
private cachedCircuitBreakerSettings?;
|
|
54
|
-
constructor(
|
|
55
|
-
tmuxConfig?: TmuxConfig;
|
|
56
|
-
onSubagentSessionCreated?: OnSubagentSessionCreated;
|
|
57
|
-
onShutdown?: () => void | Promise<void>;
|
|
58
|
-
enableParentSessionNotifications?: boolean;
|
|
59
|
-
modelFallbackControllerAccessor?: ModelFallbackControllerAccessor;
|
|
60
|
-
});
|
|
64
|
+
constructor(config: BackgroundManagerConfig);
|
|
61
65
|
private abortSessionWithLogging;
|
|
62
66
|
assertCanSpawn(parentSessionID: string): Promise<SubagentSpawnContext>;
|
|
63
67
|
reserveSubagentSpawn(parentSessionID: string): Promise<{
|
|
@@ -90,8 +94,8 @@ export declare class BackgroundManager {
|
|
|
90
94
|
*/
|
|
91
95
|
trackTask(input: {
|
|
92
96
|
taskId: string;
|
|
93
|
-
|
|
94
|
-
|
|
97
|
+
sessionId: string;
|
|
98
|
+
parentSessionId: string;
|
|
95
99
|
description: string;
|
|
96
100
|
agent?: string;
|
|
97
101
|
parentAgent?: string;
|
|
@@ -18,11 +18,11 @@ export interface TaskProgress {
|
|
|
18
18
|
}
|
|
19
19
|
export type BackgroundTaskAttemptStatus = BackgroundTaskStatus;
|
|
20
20
|
export interface BackgroundTaskAttempt {
|
|
21
|
-
|
|
21
|
+
attemptId: string;
|
|
22
22
|
attemptNumber: number;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
sessionId?: string;
|
|
24
|
+
providerId?: string;
|
|
25
|
+
modelId?: string;
|
|
26
26
|
variant?: string;
|
|
27
27
|
status: BackgroundTaskAttemptStatus;
|
|
28
28
|
error?: string;
|
|
@@ -31,10 +31,10 @@ export interface BackgroundTaskAttempt {
|
|
|
31
31
|
}
|
|
32
32
|
export interface BackgroundTask {
|
|
33
33
|
id: string;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
sessionId?: string;
|
|
35
|
+
rootSessionId?: string;
|
|
36
|
+
parentSessionId: string;
|
|
37
|
+
parentMessageId: string;
|
|
38
38
|
description: string;
|
|
39
39
|
prompt: string;
|
|
40
40
|
agent: string;
|
|
@@ -89,8 +89,8 @@ export interface LaunchInput {
|
|
|
89
89
|
description: string;
|
|
90
90
|
prompt: string;
|
|
91
91
|
agent: string;
|
|
92
|
-
|
|
93
|
-
|
|
92
|
+
parentSessionId: string;
|
|
93
|
+
parentMessageId: string;
|
|
94
94
|
parentModel?: {
|
|
95
95
|
providerID: string;
|
|
96
96
|
modelID: string;
|
|
@@ -109,8 +109,8 @@ export interface LaunchInput {
|
|
|
109
109
|
export interface ResumeInput {
|
|
110
110
|
sessionId: string;
|
|
111
111
|
prompt: string;
|
|
112
|
-
|
|
113
|
-
|
|
112
|
+
parentSessionId: string;
|
|
113
|
+
parentMessageId: string;
|
|
114
114
|
parentModel?: {
|
|
115
115
|
providerID: string;
|
|
116
116
|
modelID: string;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type TeamSpec } from "./types";
|
|
2
|
+
export type CallerTeamLead = {
|
|
3
|
+
agentTypeId?: string;
|
|
4
|
+
displayName?: string;
|
|
5
|
+
isEligibleForTeamLead: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare function resolveCallerTeamLead(rawAgentName: string | undefined): CallerTeamLead;
|
|
8
|
+
export declare function shouldReuseCallerLeadSession(spec: TeamSpec, callerAgentTypeId: string | undefined): boolean;
|
|
@@ -9,4 +9,4 @@
|
|
|
9
9
|
* - Vietnamese: phân tích, điều tra, nghiên cứu, kiểm tra, xem xét, chẩn đoán, giải thích, tìm hiểu, gỡ lỗi, tại sao
|
|
10
10
|
*/
|
|
11
11
|
export declare const ANALYZE_PATTERN: RegExp;
|
|
12
|
-
export declare const ANALYZE_MESSAGE = "[analyze-mode]\nANALYSIS MODE. Gather context before diving deep:\n\nCONTEXT GATHERING (parallel):\n- 1-2 explore agents (codebase patterns, implementations)\n- 1-2 librarian agents (if external library involved)\n- Direct tools: Grep, AST-grep, LSP for targeted searches\n\nIF COMPLEX - DO NOT STRUGGLE ALONE. Consult specialists:\n- **Oracle**: Conventional problems (architecture, debugging, complex logic)\n- **Artistry**: Non-conventional problems (different approach needed)\n\nSYNTHESIZE findings before proceeding.\n---\nMANDATORY task params: ALWAYS include load_skills
|
|
12
|
+
export declare const ANALYZE_MESSAGE = "[analyze-mode]\nANALYSIS MODE. Gather context before diving deep:\n\nCONTEXT GATHERING (parallel):\n- 1-2 explore agents (codebase patterns, implementations)\n- 1-2 librarian agents (if external library involved)\n- Direct tools: Grep, AST-grep, LSP for targeted searches\n\nIF COMPLEX - DO NOT STRUGGLE ALONE. Consult specialists:\n- **Oracle**: Conventional problems (architecture, debugging, complex logic)\n- **Artistry**: Non-conventional problems (different approach needed)\n\nSYNTHESIZE findings before proceeding.\n---\nMANDATORY task params: ALWAYS include load_skills and run_in_background when calling task. Evaluate available skills before dispatch - pass task-appropriate skills when relevant, pass [] ONLY when no skill matches the task domain.\nExample: task(subagent_type=\"explore\", prompt=\"...\", run_in_background=true, load_skills=[])";
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { PluginInput } from "@opencode-ai/plugin";
|
|
2
|
-
import type { Platform } from "./session-notification-sender";
|
|
3
2
|
type SessionNotificationConfig = {
|
|
4
3
|
playSound: boolean;
|
|
5
4
|
soundPath: string;
|
|
@@ -11,11 +10,10 @@ type SessionNotificationConfig = {
|
|
|
11
10
|
};
|
|
12
11
|
export declare function createIdleNotificationScheduler(options: {
|
|
13
12
|
ctx: PluginInput;
|
|
14
|
-
platform: Platform;
|
|
15
13
|
config: SessionNotificationConfig;
|
|
16
14
|
hasIncompleteTodos: (ctx: PluginInput, sessionID: string) => Promise<boolean>;
|
|
17
|
-
send: (ctx: PluginInput,
|
|
18
|
-
playSound: (ctx: PluginInput,
|
|
15
|
+
send: (ctx: PluginInput, sessionID: string) => Promise<void>;
|
|
16
|
+
playSound: (ctx: PluginInput, soundPath: string) => Promise<void>;
|
|
19
17
|
}): {
|
|
20
18
|
markSessionActivity: (sessionID: string) => void;
|
|
21
19
|
scheduleIdleNotification: (sessionID: string) => void;
|
|
@@ -6,5 +6,6 @@ export declare const getAfplayPath: () => Promise<string | null>;
|
|
|
6
6
|
export declare const getPaplayPath: () => Promise<string | null>;
|
|
7
7
|
export declare const getAplayPath: () => Promise<string | null>;
|
|
8
8
|
export declare const getTerminalNotifierPath: () => Promise<string | null>;
|
|
9
|
+
export declare const getCmuxPath: () => Promise<string | null>;
|
|
9
10
|
export declare function startBackgroundCheck(platform: Platform): void;
|
|
10
11
|
export {};
|