oh-my-codex 0.4.3 → 0.5.0
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.md +17 -10
- package/dist/agents/definitions.d.ts.map +1 -1
- package/dist/agents/definitions.js +7 -13
- package/dist/agents/definitions.js.map +1 -1
- package/dist/agents/native-config.d.ts +20 -0
- package/dist/agents/native-config.d.ts.map +1 -0
- package/dist/agents/native-config.js +84 -0
- package/dist/agents/native-config.js.map +1 -0
- package/dist/catalog/__tests__/generator.test.d.ts +2 -0
- package/dist/catalog/__tests__/generator.test.d.ts.map +1 -0
- package/dist/catalog/__tests__/generator.test.js +42 -0
- package/dist/catalog/__tests__/generator.test.js.map +1 -0
- package/dist/catalog/__tests__/schema.test.d.ts +2 -0
- package/dist/catalog/__tests__/schema.test.d.ts.map +1 -0
- package/dist/catalog/__tests__/schema.test.js +33 -0
- package/dist/catalog/__tests__/schema.test.js.map +1 -0
- package/dist/catalog/reader.d.ts +19 -0
- package/dist/catalog/reader.d.ts.map +1 -0
- package/dist/catalog/reader.js +63 -0
- package/dist/catalog/reader.js.map +1 -0
- package/dist/catalog/schema.d.ts +32 -0
- package/dist/catalog/schema.d.ts.map +1 -0
- package/dist/catalog/schema.js +101 -0
- package/dist/catalog/schema.js.map +1 -0
- package/dist/cli/__tests__/index.test.js +109 -1
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/setup-scope.test.d.ts +2 -0
- package/dist/cli/__tests__/setup-scope.test.d.ts.map +1 -0
- package/dist/cli/__tests__/setup-scope.test.js +164 -0
- package/dist/cli/__tests__/setup-scope.test.js.map +1 -0
- package/dist/cli/catalog-contract.d.ts +10 -0
- package/dist/cli/catalog-contract.d.ts.map +1 -0
- package/dist/cli/catalog-contract.js +24 -0
- package/dist/cli/catalog-contract.js.map +1 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +7 -4
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.d.ts +10 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +124 -99
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/setup.d.ts +3 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +208 -47
- package/dist/cli/setup.js.map +1 -1
- package/dist/config/__tests__/generator-notify.test.js +28 -0
- package/dist/config/__tests__/generator-notify.test.js.map +1 -1
- package/dist/config/generator.d.ts +1 -0
- package/dist/config/generator.d.ts.map +1 -1
- package/dist/config/generator.js +34 -2
- package/dist/config/generator.js.map +1 -1
- package/dist/hooks/code-simplifier/__tests__/index.test.d.ts +2 -0
- package/dist/hooks/code-simplifier/__tests__/index.test.d.ts.map +1 -0
- package/dist/hooks/code-simplifier/__tests__/index.test.js +135 -0
- package/dist/hooks/code-simplifier/__tests__/index.test.js.map +1 -0
- package/dist/hooks/code-simplifier/index.d.ts +74 -0
- package/dist/hooks/code-simplifier/index.d.ts.map +1 -0
- package/dist/hooks/code-simplifier/index.js +145 -0
- package/dist/hooks/code-simplifier/index.js.map +1 -0
- package/dist/hooks/emulator.d.ts.map +1 -1
- package/dist/hooks/emulator.js +0 -1
- package/dist/hooks/emulator.js.map +1 -1
- package/dist/hooks/keyword-detector.d.ts.map +1 -1
- package/dist/hooks/keyword-detector.js +0 -3
- package/dist/hooks/keyword-detector.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/notifications/__tests__/tmux.test.js +61 -1
- package/dist/notifications/__tests__/tmux.test.js.map +1 -1
- package/dist/notifications/__tests__/verbosity.test.d.ts +2 -0
- package/dist/notifications/__tests__/verbosity.test.d.ts.map +1 -0
- package/dist/notifications/__tests__/verbosity.test.js +202 -0
- package/dist/notifications/__tests__/verbosity.test.js.map +1 -0
- package/dist/notifications/config.d.ts +14 -1
- package/dist/notifications/config.d.ts.map +1 -1
- package/dist/notifications/config.js +52 -0
- package/dist/notifications/config.js.map +1 -1
- package/dist/notifications/formatter.d.ts.map +1 -1
- package/dist/notifications/formatter.js +14 -0
- package/dist/notifications/formatter.js.map +1 -1
- package/dist/notifications/index.d.ts +3 -3
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +14 -4
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/tmux.d.ts +6 -0
- package/dist/notifications/tmux.d.ts.map +1 -1
- package/dist/notifications/tmux.js +31 -1
- package/dist/notifications/tmux.js.map +1 -1
- package/dist/notifications/types.d.ts +13 -0
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/team/__tests__/model-contract.test.d.ts +2 -0
- package/dist/team/__tests__/model-contract.test.d.ts.map +1 -0
- package/dist/team/__tests__/model-contract.test.js +47 -0
- package/dist/team/__tests__/model-contract.test.js.map +1 -0
- package/dist/team/__tests__/phase-controller.test.d.ts +2 -0
- package/dist/team/__tests__/phase-controller.test.d.ts.map +1 -0
- package/dist/team/__tests__/phase-controller.test.js +36 -0
- package/dist/team/__tests__/phase-controller.test.js.map +1 -0
- package/dist/team/__tests__/runtime.test.js +112 -8
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/tmux-session.test.js +71 -1
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/model-contract.d.ts +19 -0
- package/dist/team/model-contract.d.ts.map +1 -0
- package/dist/team/model-contract.js +123 -0
- package/dist/team/model-contract.js.map +1 -0
- package/dist/team/orchestrator.d.ts.map +1 -1
- package/dist/team/orchestrator.js +0 -1
- package/dist/team/orchestrator.js.map +1 -1
- package/dist/team/phase-controller.d.ts +10 -0
- package/dist/team/phase-controller.d.ts.map +1 -0
- package/dist/team/phase-controller.js +128 -0
- package/dist/team/phase-controller.js.map +1 -0
- package/dist/team/runtime.d.ts +3 -3
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +40 -74
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/state.d.ts +15 -0
- package/dist/team/state.d.ts.map +1 -1
- package/dist/team/state.js +35 -0
- package/dist/team/state.js.map +1 -1
- package/dist/team/team-ops.d.ts +3 -1
- package/dist/team/team-ops.d.ts.map +1 -1
- package/dist/team/team-ops.js +2 -0
- package/dist/team/team-ops.js.map +1 -1
- package/dist/team/tmux-session.d.ts +12 -0
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +33 -1
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/utils/paths.d.ts +2 -0
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +4 -0
- package/dist/utils/paths.js.map +1 -1
- package/package.json +2 -2
- package/prompts/code-simplifier.md +91 -0
- package/prompts/product-analyst.md +7 -7
- package/scripts/generate-catalog-docs.js +111 -0
- package/scripts/notify-hook.js +36 -1
- package/skills/build-fix/SKILL.md +3 -3
- package/skills/code-review/SKILL.md +3 -3
- package/skills/help/SKILL.md +4 -4
- package/skills/omx-setup/SKILL.md +24 -15
- package/skills/research/SKILL.md +28 -28
- package/skills/security-review/SKILL.md +3 -3
- package/templates/AGENTS.md +1 -8
- package/templates/catalog-manifest.json +397 -0
- package/prompts/deep-executor.md +0 -19
- package/prompts/scientist.md +0 -89
- package/skills/deepinit/SKILL.md +0 -320
- package/skills/learn-about-omx/SKILL.md +0 -37
- package/skills/learner/SKILL.md +0 -135
- package/skills/pipeline/SKILL.md +0 -407
- package/skills/project-session-manager/SKILL.md +0 -560
- package/skills/psm/SKILL.md +0 -20
- package/skills/release/SKILL.md +0 -83
- package/skills/ultrapilot/SKILL.md +0 -627
- package/skills/writer-memory/SKILL.md +0 -443
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const TEAM_LOW_COMPLEXITY_DEFAULT_MODEL = "gpt-5.3-codex-spark";
|
|
2
|
+
export interface ParsedTeamWorkerLaunchArgs {
|
|
3
|
+
passthrough: string[];
|
|
4
|
+
wantsBypass: boolean;
|
|
5
|
+
reasoningOverride: string | null;
|
|
6
|
+
modelOverride: string | null;
|
|
7
|
+
}
|
|
8
|
+
export interface ResolveTeamWorkerLaunchArgsOptions {
|
|
9
|
+
existingRaw?: string;
|
|
10
|
+
inheritedArgs?: string[];
|
|
11
|
+
fallbackModel?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function splitWorkerLaunchArgs(raw: string | undefined): string[];
|
|
14
|
+
export declare function parseTeamWorkerLaunchArgs(args: string[]): ParsedTeamWorkerLaunchArgs;
|
|
15
|
+
export declare function collectInheritableTeamWorkerArgs(codexArgs: string[]): string[];
|
|
16
|
+
export declare function normalizeTeamWorkerLaunchArgs(args: string[], preferredModel?: string): string[];
|
|
17
|
+
export declare function resolveTeamWorkerLaunchArgs(options: ResolveTeamWorkerLaunchArgsOptions): string[];
|
|
18
|
+
export declare function isLowComplexityAgentType(agentType?: string): boolean;
|
|
19
|
+
//# sourceMappingURL=model-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-contract.d.ts","sourceRoot":"","sources":["../../src/team/model-contract.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,iCAAiC,wBAAwB,CAAC;AAEvE,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,kCAAkC;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAgBD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAMvE;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAoDpF;AAED,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAQ9E;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAW/F;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,kCAAkC,GAAG,MAAM,EAAE,CAWjG;AAED,wBAAgB,wBAAwB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAMpE"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
const MADMAX_FLAG = '--madmax';
|
|
2
|
+
const CODEX_BYPASS_FLAG = '--dangerously-bypass-approvals-and-sandbox';
|
|
3
|
+
const MODEL_FLAG = '--model';
|
|
4
|
+
const CONFIG_FLAG = '-c';
|
|
5
|
+
const REASONING_KEY = 'model_reasoning_effort';
|
|
6
|
+
const LOW_COMPLEXITY_AGENT_TYPES = new Set([
|
|
7
|
+
'explore',
|
|
8
|
+
'explorer',
|
|
9
|
+
'style-reviewer',
|
|
10
|
+
'writer',
|
|
11
|
+
]);
|
|
12
|
+
export const TEAM_LOW_COMPLEXITY_DEFAULT_MODEL = 'gpt-5.3-codex-spark';
|
|
13
|
+
function isReasoningOverride(value) {
|
|
14
|
+
return new RegExp(`^${REASONING_KEY}\\s*=`).test(value.trim());
|
|
15
|
+
}
|
|
16
|
+
function isValidModelValue(value) {
|
|
17
|
+
return value.trim().length > 0 && !value.startsWith('-');
|
|
18
|
+
}
|
|
19
|
+
function normalizeOptionalModel(model) {
|
|
20
|
+
if (typeof model !== 'string')
|
|
21
|
+
return undefined;
|
|
22
|
+
const trimmed = model.trim();
|
|
23
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
24
|
+
}
|
|
25
|
+
export function splitWorkerLaunchArgs(raw) {
|
|
26
|
+
if (!raw || raw.trim() === '')
|
|
27
|
+
return [];
|
|
28
|
+
return raw
|
|
29
|
+
.split(/\s+/)
|
|
30
|
+
.map((s) => s.trim())
|
|
31
|
+
.filter(Boolean);
|
|
32
|
+
}
|
|
33
|
+
export function parseTeamWorkerLaunchArgs(args) {
|
|
34
|
+
const passthrough = [];
|
|
35
|
+
let wantsBypass = false;
|
|
36
|
+
let reasoningOverride = null;
|
|
37
|
+
let modelOverride = null;
|
|
38
|
+
for (let i = 0; i < args.length; i++) {
|
|
39
|
+
const arg = args[i];
|
|
40
|
+
if (arg === CODEX_BYPASS_FLAG || arg === MADMAX_FLAG) {
|
|
41
|
+
wantsBypass = true;
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (arg === MODEL_FLAG) {
|
|
45
|
+
const maybeValue = args[i + 1];
|
|
46
|
+
if (typeof maybeValue === 'string' && isValidModelValue(maybeValue)) {
|
|
47
|
+
modelOverride = maybeValue.trim();
|
|
48
|
+
i += 1;
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
passthrough.push(arg);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (arg.startsWith(`${MODEL_FLAG}=`)) {
|
|
55
|
+
const inlineValue = arg.slice(`${MODEL_FLAG}=`.length).trim();
|
|
56
|
+
if (isValidModelValue(inlineValue)) {
|
|
57
|
+
modelOverride = inlineValue;
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
passthrough.push(arg);
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (arg === CONFIG_FLAG) {
|
|
64
|
+
const maybeValue = args[i + 1];
|
|
65
|
+
if (typeof maybeValue === 'string' && isReasoningOverride(maybeValue)) {
|
|
66
|
+
reasoningOverride = maybeValue;
|
|
67
|
+
i += 1;
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
passthrough.push(arg);
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
passthrough,
|
|
75
|
+
wantsBypass,
|
|
76
|
+
reasoningOverride,
|
|
77
|
+
modelOverride,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
export function collectInheritableTeamWorkerArgs(codexArgs) {
|
|
81
|
+
const parsed = parseTeamWorkerLaunchArgs(codexArgs);
|
|
82
|
+
const inherited = [];
|
|
83
|
+
if (parsed.wantsBypass)
|
|
84
|
+
inherited.push(CODEX_BYPASS_FLAG);
|
|
85
|
+
if (parsed.reasoningOverride)
|
|
86
|
+
inherited.push(CONFIG_FLAG, parsed.reasoningOverride);
|
|
87
|
+
if (parsed.modelOverride)
|
|
88
|
+
inherited.push(MODEL_FLAG, parsed.modelOverride);
|
|
89
|
+
return inherited;
|
|
90
|
+
}
|
|
91
|
+
export function normalizeTeamWorkerLaunchArgs(args, preferredModel) {
|
|
92
|
+
const parsed = parseTeamWorkerLaunchArgs(args);
|
|
93
|
+
const normalized = [...parsed.passthrough];
|
|
94
|
+
if (parsed.wantsBypass)
|
|
95
|
+
normalized.push(CODEX_BYPASS_FLAG);
|
|
96
|
+
if (parsed.reasoningOverride)
|
|
97
|
+
normalized.push(CONFIG_FLAG, parsed.reasoningOverride);
|
|
98
|
+
const selectedModel = normalizeOptionalModel(preferredModel) ?? normalizeOptionalModel(parsed.modelOverride);
|
|
99
|
+
if (selectedModel)
|
|
100
|
+
normalized.push(MODEL_FLAG, selectedModel);
|
|
101
|
+
return normalized;
|
|
102
|
+
}
|
|
103
|
+
export function resolveTeamWorkerLaunchArgs(options) {
|
|
104
|
+
const envArgs = splitWorkerLaunchArgs(options.existingRaw);
|
|
105
|
+
const inheritedArgs = options.inheritedArgs ?? [];
|
|
106
|
+
const allArgs = [...envArgs, ...inheritedArgs];
|
|
107
|
+
const envModel = normalizeOptionalModel(parseTeamWorkerLaunchArgs(envArgs).modelOverride);
|
|
108
|
+
const inheritedModel = normalizeOptionalModel(parseTeamWorkerLaunchArgs(inheritedArgs).modelOverride);
|
|
109
|
+
const fallbackModel = normalizeOptionalModel(options.fallbackModel);
|
|
110
|
+
const selectedModel = envModel ?? inheritedModel ?? fallbackModel;
|
|
111
|
+
return normalizeTeamWorkerLaunchArgs(allArgs, selectedModel);
|
|
112
|
+
}
|
|
113
|
+
export function isLowComplexityAgentType(agentType) {
|
|
114
|
+
if (!agentType)
|
|
115
|
+
return false;
|
|
116
|
+
const normalized = agentType.trim().toLowerCase();
|
|
117
|
+
if (normalized === '')
|
|
118
|
+
return false;
|
|
119
|
+
if (normalized.endsWith('-low'))
|
|
120
|
+
return true;
|
|
121
|
+
return LOW_COMPLEXITY_AGENT_TYPES.has(normalized);
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=model-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-contract.js","sourceRoot":"","sources":["../../src/team/model-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/team/orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,UAAU,CAAC;AAC5F,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAC;AAIhE,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,SAAS,GAAG,aAAa,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpF,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,SAAS,CAAC;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAaD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,aAAa,GAAG,OAAO,CAGzF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa,GAAG,KAAK,IAAI,aAAa,CAExF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAE5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,GAAE,MAAU,GAAG,SAAS,CAW9F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,EAChB,EAAE,EAAE,SAAS,GAAG,aAAa,EAC7B,MAAM,CAAC,EAAE,MAAM,GACd,SAAS,CA4CX;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/team/orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,UAAU,CAAC;AAC5F,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAC;AAIhE,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,SAAS,GAAG,aAAa,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpF,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,SAAS,CAAC;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAaD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,aAAa,GAAG,OAAO,CAGzF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa,GAAG,KAAK,IAAI,aAAa,CAExF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAE5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,eAAe,EAAE,MAAM,EAAE,cAAc,GAAE,MAAU,GAAG,SAAS,CAW9F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,EAChB,EAAE,EAAE,SAAS,GAAG,aAAa,EAC7B,MAAM,CAAC,EAAE,MAAM,GACd,SAAS,CA4CX;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,EAAE,CAazD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAa7D"}
|
|
@@ -96,7 +96,6 @@ export function getPhaseAgents(phase) {
|
|
|
96
96
|
case 'team-prd':
|
|
97
97
|
return ['product-manager', 'analyst'];
|
|
98
98
|
case 'team-exec':
|
|
99
|
-
// deep-executor is maintained as a backward-compatible alias of executor.
|
|
100
99
|
return ['executor', 'designer', 'test-engineer'];
|
|
101
100
|
case 'team-verify':
|
|
102
101
|
return ['verifier', 'quality-reviewer', 'security-reviewer'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/team/orchestrator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/team/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type TeamPhase, type TerminalPhase } from './orchestrator.js';
|
|
2
|
+
import { type TeamPhaseState } from './state.js';
|
|
3
|
+
export declare function inferPhaseTargetFromTaskCounts(taskCounts: {
|
|
4
|
+
pending: number;
|
|
5
|
+
blocked: number;
|
|
6
|
+
in_progress: number;
|
|
7
|
+
failed: number;
|
|
8
|
+
}): TeamPhase | TerminalPhase;
|
|
9
|
+
export declare function reconcilePhaseStateForMonitor(persisted: TeamPhaseState | null, target: TeamPhase | TerminalPhase): TeamPhaseState;
|
|
10
|
+
//# sourceMappingURL=phase-controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phase-controller.d.ts","sourceRoot":"","sources":["../../src/team/phase-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,SAAS,EAEd,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACpF,SAAS,GAAG,aAAa,CAK3B;AAwED,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,cAAc,GAAG,IAAI,EAChC,MAAM,EAAE,SAAS,GAAG,aAAa,GAChC,cAAc,CAsChB"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { createTeamState, isTerminalPhase, transitionPhase, } from './orchestrator.js';
|
|
2
|
+
export function inferPhaseTargetFromTaskCounts(taskCounts) {
|
|
3
|
+
const allTasksTerminal = taskCounts.pending === 0 && taskCounts.blocked === 0 && taskCounts.in_progress === 0;
|
|
4
|
+
if (allTasksTerminal && taskCounts.failed === 0)
|
|
5
|
+
return 'complete';
|
|
6
|
+
if (allTasksTerminal && taskCounts.failed > 0)
|
|
7
|
+
return 'team-fix';
|
|
8
|
+
return 'team-exec';
|
|
9
|
+
}
|
|
10
|
+
function defaultPersistedPhaseState() {
|
|
11
|
+
return {
|
|
12
|
+
current_phase: 'team-exec',
|
|
13
|
+
max_fix_attempts: 3,
|
|
14
|
+
current_fix_attempt: 0,
|
|
15
|
+
transitions: [],
|
|
16
|
+
updated_at: new Date().toISOString(),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function toTeamState(phaseState) {
|
|
20
|
+
const state = createTeamState('team-runtime-monitor', phaseState.max_fix_attempts);
|
|
21
|
+
return {
|
|
22
|
+
...state,
|
|
23
|
+
active: !isTerminalPhase(phaseState.current_phase),
|
|
24
|
+
phase: phaseState.current_phase,
|
|
25
|
+
current_fix_attempt: phaseState.current_fix_attempt,
|
|
26
|
+
phase_transitions: [...phaseState.transitions],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function toPhaseState(state) {
|
|
30
|
+
return {
|
|
31
|
+
current_phase: state.phase,
|
|
32
|
+
max_fix_attempts: state.max_fix_attempts,
|
|
33
|
+
current_fix_attempt: state.current_fix_attempt,
|
|
34
|
+
transitions: [...state.phase_transitions],
|
|
35
|
+
updated_at: new Date().toISOString(),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function buildTransitionPath(from, to) {
|
|
39
|
+
if (from === to)
|
|
40
|
+
return [];
|
|
41
|
+
if (to === 'team-exec') {
|
|
42
|
+
if (from === 'team-plan')
|
|
43
|
+
return ['team-prd', 'team-exec'];
|
|
44
|
+
if (from === 'team-prd')
|
|
45
|
+
return ['team-exec'];
|
|
46
|
+
if (from === 'team-fix')
|
|
47
|
+
return ['team-exec'];
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
if (to === 'team-fix') {
|
|
51
|
+
if (from === 'team-plan')
|
|
52
|
+
return ['team-prd', 'team-exec', 'team-verify', 'team-fix'];
|
|
53
|
+
if (from === 'team-prd')
|
|
54
|
+
return ['team-exec', 'team-verify', 'team-fix'];
|
|
55
|
+
if (from === 'team-exec')
|
|
56
|
+
return ['team-verify', 'team-fix'];
|
|
57
|
+
if (from === 'team-verify')
|
|
58
|
+
return ['team-fix'];
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
if (to === 'complete') {
|
|
62
|
+
if (from === 'team-plan')
|
|
63
|
+
return ['team-prd', 'team-exec', 'team-verify', 'complete'];
|
|
64
|
+
if (from === 'team-prd')
|
|
65
|
+
return ['team-exec', 'team-verify', 'complete'];
|
|
66
|
+
if (from === 'team-exec')
|
|
67
|
+
return ['team-verify', 'complete'];
|
|
68
|
+
if (from === 'team-verify')
|
|
69
|
+
return ['complete'];
|
|
70
|
+
if (from === 'team-fix')
|
|
71
|
+
return ['complete'];
|
|
72
|
+
return [];
|
|
73
|
+
}
|
|
74
|
+
if (to === 'failed') {
|
|
75
|
+
if (from === 'team-plan')
|
|
76
|
+
return ['team-prd', 'team-exec', 'team-verify', 'failed'];
|
|
77
|
+
if (from === 'team-prd')
|
|
78
|
+
return ['team-exec', 'team-verify', 'failed'];
|
|
79
|
+
if (from === 'team-exec')
|
|
80
|
+
return ['team-verify', 'failed'];
|
|
81
|
+
if (from === 'team-verify')
|
|
82
|
+
return ['failed'];
|
|
83
|
+
if (from === 'team-fix')
|
|
84
|
+
return ['failed'];
|
|
85
|
+
return [];
|
|
86
|
+
}
|
|
87
|
+
return [];
|
|
88
|
+
}
|
|
89
|
+
export function reconcilePhaseStateForMonitor(persisted, target) {
|
|
90
|
+
const now = new Date().toISOString();
|
|
91
|
+
const base = persisted ?? defaultPersistedPhaseState();
|
|
92
|
+
if (base.current_phase === target) {
|
|
93
|
+
return {
|
|
94
|
+
...base,
|
|
95
|
+
updated_at: now,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
if (isTerminalPhase(base.current_phase)) {
|
|
99
|
+
if (isTerminalPhase(target))
|
|
100
|
+
return base;
|
|
101
|
+
return {
|
|
102
|
+
current_phase: target,
|
|
103
|
+
max_fix_attempts: base.max_fix_attempts,
|
|
104
|
+
current_fix_attempt: 0,
|
|
105
|
+
transitions: [
|
|
106
|
+
...base.transitions,
|
|
107
|
+
{
|
|
108
|
+
from: base.current_phase,
|
|
109
|
+
to: target,
|
|
110
|
+
at: now,
|
|
111
|
+
reason: 'tasks_reopened',
|
|
112
|
+
},
|
|
113
|
+
],
|
|
114
|
+
updated_at: now,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
let state = toTeamState(base);
|
|
118
|
+
const transitionPath = buildTransitionPath(state.phase, target);
|
|
119
|
+
for (const next of transitionPath) {
|
|
120
|
+
if (state.phase === next)
|
|
121
|
+
continue;
|
|
122
|
+
if (isTerminalPhase(state.phase))
|
|
123
|
+
break;
|
|
124
|
+
state = transitionPhase(state, next);
|
|
125
|
+
}
|
|
126
|
+
return toPhaseState(state);
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=phase-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phase-controller.js","sourceRoot":"","sources":["../../src/team/phase-controller.ts"],"names":[],"mappings":"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"}
|
package/dist/team/runtime.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type TeamConfig, type WorkerHeartbeat, type WorkerStatus, type TeamTask } from './team-ops.js';
|
|
2
2
|
import { type TeamPhase, type TerminalPhase } from './orchestrator.js';
|
|
3
|
+
import { TEAM_LOW_COMPLEXITY_DEFAULT_MODEL } from './model-contract.js';
|
|
3
4
|
/** Snapshot of the team state at a point in time */
|
|
4
5
|
export interface TeamSnapshot {
|
|
5
6
|
teamName: string;
|
|
@@ -37,8 +38,8 @@ export interface TeamRuntime {
|
|
|
37
38
|
interface ShutdownOptions {
|
|
38
39
|
force?: boolean;
|
|
39
40
|
}
|
|
40
|
-
export
|
|
41
|
-
export declare function resolveWorkerLaunchArgsFromEnv(env: NodeJS.ProcessEnv, agentType: string,
|
|
41
|
+
export { TEAM_LOW_COMPLEXITY_DEFAULT_MODEL };
|
|
42
|
+
export declare function resolveWorkerLaunchArgsFromEnv(env: NodeJS.ProcessEnv, agentType: string, inheritedLeaderModel?: string): string[];
|
|
42
43
|
/**
|
|
43
44
|
* Start a new team: init state, create tmux session, bootstrap workers.
|
|
44
45
|
*/
|
|
@@ -70,5 +71,4 @@ export declare function shutdownTeam(teamName: string, cwd: string, options?: Sh
|
|
|
70
71
|
export declare function resumeTeam(teamName: string, cwd: string): Promise<TeamRuntime | null>;
|
|
71
72
|
export declare function sendWorkerMessage(teamName: string, fromWorker: string, toWorker: string, body: string, cwd: string): Promise<void>;
|
|
72
73
|
export declare function broadcastWorkerMessage(teamName: string, fromWorker: string, body: string, cwd: string): Promise<void>;
|
|
73
|
-
export {};
|
|
74
74
|
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/team/runtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/team/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/team/runtime.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { join } from 'path';
|
|
2
2
|
import { existsSync } from 'fs';
|
|
3
3
|
import { readdir, readFile } from 'fs/promises';
|
|
4
|
-
import { getModelForMode } from '../config/models.js';
|
|
5
4
|
import { sanitizeTeamName, isTmuxAvailable, createTeamSession, waitForWorkerReady, sendToWorker, notifyLeaderStatus, isWorkerAlive, getWorkerPanePid, killWorker, killWorkerByPaneId, destroyTeamSession, listTeamSessions, } from './tmux-session.js';
|
|
6
|
-
import { teamInit as initTeamState, DEFAULT_MAX_WORKERS, teamReadConfig as readTeamConfig, teamWriteWorkerIdentity as writeWorkerIdentity, teamReadWorkerHeartbeat as readWorkerHeartbeat, teamReadWorkerStatus as readWorkerStatus, teamWriteWorkerInbox as writeWorkerInbox, teamCreateTask as createStateTask, teamReadTask as readTask, teamListTasks as listTasks, teamReadManifest as readTeamManifestV2, teamClaimTask as claimTask, teamReleaseTaskClaim as releaseTaskClaim, teamAppendEvent as appendTeamEvent, teamReadTaskApproval as readTaskApproval, teamListMailbox as listMailboxMessages, teamMarkMessageNotified as markMessageNotified, teamCleanup as cleanupTeamState, teamSaveConfig as saveTeamConfig, teamWriteShutdownRequest as writeShutdownRequest, teamReadShutdownAck as readShutdownAck, teamReadMonitorSnapshot as readMonitorSnapshot, teamWriteMonitorSnapshot as writeMonitorSnapshot, } from './team-ops.js';
|
|
5
|
+
import { teamInit as initTeamState, DEFAULT_MAX_WORKERS, teamReadConfig as readTeamConfig, teamWriteWorkerIdentity as writeWorkerIdentity, teamReadWorkerHeartbeat as readWorkerHeartbeat, teamReadWorkerStatus as readWorkerStatus, teamWriteWorkerInbox as writeWorkerInbox, teamCreateTask as createStateTask, teamReadTask as readTask, teamListTasks as listTasks, teamReadManifest as readTeamManifestV2, teamClaimTask as claimTask, teamReleaseTaskClaim as releaseTaskClaim, teamAppendEvent as appendTeamEvent, teamReadTaskApproval as readTaskApproval, teamListMailbox as listMailboxMessages, teamMarkMessageNotified as markMessageNotified, teamCleanup as cleanupTeamState, teamSaveConfig as saveTeamConfig, teamWriteShutdownRequest as writeShutdownRequest, teamReadShutdownAck as readShutdownAck, teamReadMonitorSnapshot as readMonitorSnapshot, teamWriteMonitorSnapshot as writeMonitorSnapshot, teamReadPhase as readTeamPhaseState, teamWritePhase as writeTeamPhaseState, } from './team-ops.js';
|
|
7
6
|
import { queueInboxInstruction, queueDirectMailboxMessage, queueBroadcastMailboxMessage, } from './mcp-comm.js';
|
|
8
7
|
import { generateWorkerOverlay, writeTeamWorkerInstructionsFile, removeTeamWorkerInstructionsFile, generateInitialInbox, generateTaskAssignmentInbox, generateShutdownInbox, generateTriggerMessage, generateMailboxTriggerMessage, } from './worker-bootstrap.js';
|
|
9
|
-
|
|
8
|
+
import { isLowComplexityAgentType, resolveTeamWorkerLaunchArgs, TEAM_LOW_COMPLEXITY_DEFAULT_MODEL, } from './model-contract.js';
|
|
9
|
+
import { inferPhaseTargetFromTaskCounts, reconcilePhaseStateForMonitor } from './phase-controller.js';
|
|
10
10
|
const MODEL_INSTRUCTIONS_FILE_ENV = 'OMX_MODEL_INSTRUCTIONS_FILE';
|
|
11
|
-
export const TEAM_LOW_COMPLEXITY_DEFAULT_MODEL = 'gpt-5.3-codex';
|
|
12
11
|
const previousModelInstructionsFileByTeam = new Map();
|
|
13
12
|
function resolveWorkerReadyTimeoutMs(env) {
|
|
14
13
|
const raw = env.OMX_TEAM_READY_TIMEOUT_MS;
|
|
@@ -20,24 +19,6 @@ function resolveWorkerReadyTimeoutMs(env) {
|
|
|
20
19
|
function shouldSkipWorkerReadyWait(env) {
|
|
21
20
|
return env.OMX_TEAM_SKIP_READY_WAIT === '1';
|
|
22
21
|
}
|
|
23
|
-
function hasExplicitModelArg(args) {
|
|
24
|
-
for (let i = 0; i < args.length; i++) {
|
|
25
|
-
const arg = args[i];
|
|
26
|
-
if (arg === MODEL_FLAG) {
|
|
27
|
-
const maybeValue = args[i + 1];
|
|
28
|
-
if (typeof maybeValue === 'string' && maybeValue.trim() !== '' && !maybeValue.startsWith('-')) {
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
if (arg.startsWith(`${MODEL_FLAG}=`)) {
|
|
34
|
-
const inline = arg.slice(`${MODEL_FLAG}=`.length).trim();
|
|
35
|
-
if (inline !== '')
|
|
36
|
-
return true;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
22
|
function setTeamModelInstructionsFile(teamName, filePath) {
|
|
42
23
|
if (!previousModelInstructionsFileByTeam.has(teamName)) {
|
|
43
24
|
previousModelInstructionsFileByTeam.set(teamName, process.env[MODEL_INSTRUCTIONS_FILE_ENV]);
|
|
@@ -55,24 +36,19 @@ function restoreTeamModelInstructionsFile(teamName) {
|
|
|
55
36
|
}
|
|
56
37
|
delete process.env[MODEL_INSTRUCTIONS_FILE_ENV];
|
|
57
38
|
}
|
|
58
|
-
export
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if (typeof configuredModel === 'string' && configuredModel.trim() !== '') {
|
|
72
|
-
return [...args, MODEL_FLAG, configuredModel.trim()];
|
|
73
|
-
}
|
|
74
|
-
// Hardcoded fallback: all agent types get the default model
|
|
75
|
-
return [...args, MODEL_FLAG, TEAM_LOW_COMPLEXITY_DEFAULT_MODEL];
|
|
39
|
+
export { TEAM_LOW_COMPLEXITY_DEFAULT_MODEL };
|
|
40
|
+
export function resolveWorkerLaunchArgsFromEnv(env, agentType, inheritedLeaderModel) {
|
|
41
|
+
const inheritedArgs = (typeof inheritedLeaderModel === 'string' && inheritedLeaderModel.trim() !== '')
|
|
42
|
+
? ['--model', inheritedLeaderModel.trim()]
|
|
43
|
+
: [];
|
|
44
|
+
const fallbackModel = isLowComplexityAgentType(agentType)
|
|
45
|
+
? TEAM_LOW_COMPLEXITY_DEFAULT_MODEL
|
|
46
|
+
: undefined;
|
|
47
|
+
return resolveTeamWorkerLaunchArgs({
|
|
48
|
+
existingRaw: env.OMX_TEAM_WORKER_LAUNCH_ARGS,
|
|
49
|
+
inheritedArgs,
|
|
50
|
+
fallbackModel,
|
|
51
|
+
});
|
|
76
52
|
}
|
|
77
53
|
/**
|
|
78
54
|
* Start a new team: init state, create tmux session, bootstrap workers.
|
|
@@ -103,8 +79,7 @@ export async function startTeam(teamName, task, agentType, workerCount, tasks, c
|
|
|
103
79
|
let sessionCreated = false;
|
|
104
80
|
const createdWorkerPaneIds = [];
|
|
105
81
|
let createdLeaderPaneId;
|
|
106
|
-
const
|
|
107
|
-
const workerLaunchArgs = resolveWorkerLaunchArgsFromEnv(process.env, agentType, configuredModel);
|
|
82
|
+
const workerLaunchArgs = resolveWorkerLaunchArgsFromEnv(process.env, agentType);
|
|
108
83
|
const workerReadyTimeoutMs = resolveWorkerReadyTimeoutMs(process.env);
|
|
109
84
|
const skipWorkerReadyWait = shouldSkipWorkerReadyWait(process.env);
|
|
110
85
|
try {
|
|
@@ -306,13 +281,11 @@ export async function monitorTeam(teamName, cwd) {
|
|
|
306
281
|
failed: allTasks.filter(t => t.status === 'failed').length,
|
|
307
282
|
};
|
|
308
283
|
const allTasksTerminal = taskCounts.pending === 0 && taskCounts.blocked === 0 && taskCounts.in_progress === 0;
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
else if (allTasksTerminal && taskCounts.failed > 0)
|
|
315
|
-
phase = 'team-fix';
|
|
284
|
+
const persistedPhase = await readTeamPhaseState(sanitized, cwd);
|
|
285
|
+
const targetPhase = inferPhaseTargetFromTaskCounts(taskCounts);
|
|
286
|
+
const phaseState = reconcilePhaseStateForMonitor(persistedPhase, targetPhase);
|
|
287
|
+
await writeTeamPhaseState(sanitized, phaseState, cwd);
|
|
288
|
+
const phase = phaseState.current_phase;
|
|
316
289
|
await emitMonitorDerivedEvents(sanitized, allTasks, workers, previousSnapshot, cwd);
|
|
317
290
|
const mailboxNotifiedByMessageId = await deliverPendingMailboxMessages(sanitized, config, workers, previousSnapshot?.mailboxNotifiedByMessageId ?? {}, cwd);
|
|
318
291
|
await writeMonitorSnapshot(sanitized, {
|
|
@@ -645,10 +618,7 @@ function notifyLeader(config, message) {
|
|
|
645
618
|
async function deliverPendingMailboxMessages(teamName, config, workers, previousNotifications, cwd) {
|
|
646
619
|
const nextNotifications = {};
|
|
647
620
|
const pendingIdsAcrossTeam = new Set();
|
|
648
|
-
const retryAfterMs = 15_000;
|
|
649
621
|
for (const worker of workers) {
|
|
650
|
-
if (!worker.alive)
|
|
651
|
-
continue;
|
|
652
622
|
const workerInfo = config.workers.find((w) => w.name === worker.name);
|
|
653
623
|
if (!workerInfo)
|
|
654
624
|
continue;
|
|
@@ -659,32 +629,28 @@ async function deliverPendingMailboxMessages(teamName, config, workers, previous
|
|
|
659
629
|
const pendingIds = pending.map((m) => m.message_id);
|
|
660
630
|
for (const id of pendingIds)
|
|
661
631
|
pendingIdsAcrossTeam.add(id);
|
|
632
|
+
// Preserve already-tracked notification timestamps in the next snapshot.
|
|
662
633
|
for (const msg of pending) {
|
|
663
634
|
nextNotifications[msg.message_id] = msg.notified_at || previousNotifications[msg.message_id] || '';
|
|
664
635
|
}
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
return true;
|
|
674
|
-
return nowMs - lastNotifiedMs >= retryAfterMs;
|
|
675
|
-
});
|
|
676
|
-
let notifiedNow = false;
|
|
677
|
-
if (!alreadyNotified || shouldRetry) {
|
|
678
|
-
notifiedNow = notifyWorker(config, workerInfo.index, generateMailboxTriggerMessage(worker.name, teamName, pending.length), workerInfo.pane_id);
|
|
679
|
-
}
|
|
680
|
-
if ((!alreadyNotified || shouldRetry) && !notifiedNow)
|
|
636
|
+
// Only notify for messages that have never been successfully notified.
|
|
637
|
+
// Using a message-ID set prevents re-notification on every monitor poll
|
|
638
|
+
// (issue #116). A message is considered notified when either:
|
|
639
|
+
// - notified_at is set in the mailbox file (persisted by markMessageNotified), or
|
|
640
|
+
// - the message_id exists in previousNotifications from the last snapshot.
|
|
641
|
+
// Both checks use Boolean() so an empty-string value is treated as unnotified.
|
|
642
|
+
const unnotified = pending.filter((m) => !m.notified_at && !previousNotifications[m.message_id]);
|
|
643
|
+
if (unnotified.length === 0)
|
|
681
644
|
continue;
|
|
682
|
-
if (!
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
645
|
+
if (!worker.alive)
|
|
646
|
+
continue;
|
|
647
|
+
const notifiedNow = notifyWorker(config, workerInfo.index, generateMailboxTriggerMessage(worker.name, teamName, unnotified.length), workerInfo.pane_id);
|
|
648
|
+
if (!notifiedNow)
|
|
649
|
+
continue;
|
|
650
|
+
for (const msg of unnotified) {
|
|
651
|
+
const notified = await markMessageNotified(teamName, worker.name, msg.message_id, cwd);
|
|
652
|
+
if (notified) {
|
|
653
|
+
nextNotifications[msg.message_id] = new Date().toISOString();
|
|
688
654
|
}
|
|
689
655
|
}
|
|
690
656
|
}
|