oh-my-opencode-cohub 1.2.4 → 1.4.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/dist/cli/index.js +0 -0
- package/dist/context/engine.d.ts +5 -0
- package/dist/context/engine.d.ts.map +1 -1
- package/dist/context/extractor.d.ts.map +1 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +158 -69
- package/dist/prompts/council.d.ts.map +1 -1
- package/dist/prompts/designer.d.ts.map +1 -1
- package/dist/prompts/explorer.d.ts.map +1 -1
- package/dist/prompts/fixer.d.ts.map +1 -1
- package/dist/prompts/librarian.d.ts.map +1 -1
- package/dist/prompts/observer.d.ts.map +1 -1
- package/dist/prompts/oracle.d.ts.map +1 -1
- package/dist/prompts/orchestrator.d.ts +1 -1
- package/dist/prompts/orchestrator.d.ts.map +1 -1
- package/dist/prompts/planner.d.ts.map +1 -1
- package/dist/prompts/rule-app.d.ts.map +1 -1
- package/dist/prompts/rule-project.d.ts.map +1 -1
- package/dist/prompts/rule-user.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/index.js.map +0 -1
- package/dist/instructions/chinese.js +0 -9
- package/dist/instructions/chinese.js.map +0 -1
- package/dist/prompts/council.js +0 -63
- package/dist/prompts/council.js.map +0 -1
- package/dist/prompts/designer.js +0 -66
- package/dist/prompts/designer.js.map +0 -1
- package/dist/prompts/explorer.js +0 -37
- package/dist/prompts/explorer.js.map +0 -1
- package/dist/prompts/fixer.js +0 -52
- package/dist/prompts/fixer.js.map +0 -1
- package/dist/prompts/librarian.js +0 -29
- package/dist/prompts/librarian.js.map +0 -1
- package/dist/prompts/observer.js +0 -26
- package/dist/prompts/observer.js.map +0 -1
- package/dist/prompts/oracle.js +0 -31
- package/dist/prompts/oracle.js.map +0 -1
- package/dist/prompts/orchestrator.js +0 -239
- package/dist/prompts/orchestrator.js.map +0 -1
- package/dist/prompts/planner.js +0 -12
- package/dist/prompts/planner.js.map +0 -1
- package/dist/prompts/rule-app.js +0 -6
- package/dist/prompts/rule-app.js.map +0 -1
- package/dist/prompts/rule-project.js +0 -6
- package/dist/prompts/rule-project.js.map +0 -1
- package/dist/prompts/rule-user.js +0 -6
- package/dist/prompts/rule-user.js.map +0 -1
- package/dist/task-manager/tracker.js +0 -117
- package/dist/task-manager/tracker.js.map +0 -1
- package/dist/task-manager/types.js +0 -2
- package/dist/task-manager/types.js.map +0 -1
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
export class TaskTracker {
|
|
2
|
-
jobs = new Map();
|
|
3
|
-
counters = new Map();
|
|
4
|
-
/** 最近一次 tool hook 收到的 parentSessionId */
|
|
5
|
-
_currentParentSessionId = '';
|
|
6
|
-
get currentParentSessionId() {
|
|
7
|
-
return this._currentParentSessionId;
|
|
8
|
-
}
|
|
9
|
-
/** 生成代理别名,如 fixer → "fix-1", explorer → "exp-2" */
|
|
10
|
-
alias(agentType) {
|
|
11
|
-
const short = agentType.slice(0, 4).replace(/[^a-z]/gi, '');
|
|
12
|
-
const n = (this.counters.get(agentType) ?? 0) + 1;
|
|
13
|
-
this.counters.set(agentType, n);
|
|
14
|
-
return `${short}-${n}`;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* 在 tool.execute.before 中调用,注册即将执行的任务
|
|
18
|
-
*/
|
|
19
|
-
registerBeforeTask(parentSessionId, args) {
|
|
20
|
-
this._currentParentSessionId = parentSessionId;
|
|
21
|
-
const agent = args.subagent_type ?? 'unknown';
|
|
22
|
-
const alias = this.alias(agent);
|
|
23
|
-
const label = typeof args.description === 'string' ? args.description : alias;
|
|
24
|
-
this.jobs.set(alias, {
|
|
25
|
-
alias,
|
|
26
|
-
sessionId: '', // 后续通过 session.created 事件更新
|
|
27
|
-
parentSessionId,
|
|
28
|
-
agent,
|
|
29
|
-
label,
|
|
30
|
-
status: 'running',
|
|
31
|
-
terminalReconciled: false,
|
|
32
|
-
createdAt: Date.now(),
|
|
33
|
-
});
|
|
34
|
-
return alias;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* 在 tool.execute.after 中调用,更新任务完成状态
|
|
38
|
-
* 匹配 parentSessionId 下最近创建且仍为 running 的任务
|
|
39
|
-
*/
|
|
40
|
-
updateAfterTask(parentSessionId, status, sessionId) {
|
|
41
|
-
this._currentParentSessionId = parentSessionId;
|
|
42
|
-
// 找到该 parent 下最近创建的 running 任务
|
|
43
|
-
let latest;
|
|
44
|
-
for (const job of this.jobs.values()) {
|
|
45
|
-
if (job.parentSessionId === parentSessionId &&
|
|
46
|
-
job.status === 'running' &&
|
|
47
|
-
(!latest || job.createdAt > latest.createdAt)) {
|
|
48
|
-
latest = job;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
if (latest) {
|
|
52
|
-
latest.status = status;
|
|
53
|
-
if (sessionId)
|
|
54
|
-
latest.sessionId = sessionId;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* 生成 Background Job Board 文本
|
|
59
|
-
*/
|
|
60
|
-
getBoardText(parentSessionId) {
|
|
61
|
-
const pid = parentSessionId || this._currentParentSessionId;
|
|
62
|
-
const activeJobs = [];
|
|
63
|
-
const reusableJobs = [];
|
|
64
|
-
for (const job of this.jobs.values()) {
|
|
65
|
-
if (job.parentSessionId !== pid)
|
|
66
|
-
continue;
|
|
67
|
-
if (job.status === 'running') {
|
|
68
|
-
activeJobs.push(job);
|
|
69
|
-
}
|
|
70
|
-
else if (job.status === 'completed' && !job.terminalReconciled) {
|
|
71
|
-
reusableJobs.push(job);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
if (activeJobs.length === 0 && reusableJobs.length === 0)
|
|
75
|
-
return null;
|
|
76
|
-
const lines = [];
|
|
77
|
-
lines.push('### Background Job Board');
|
|
78
|
-
lines.push('SENTINEL: background-job-board-v2');
|
|
79
|
-
lines.push('Do not poll running jobs. Wait for hook-driven completion, or use cancel_task only for explicit cancellation. Reconcile terminal jobs before final response.');
|
|
80
|
-
lines.push('Completed or reconciled sessions are reusable by alias for the same specialist/context.');
|
|
81
|
-
lines.push('Timed-out running sessions are recoverable by alias for safe resume after a live busy signal.');
|
|
82
|
-
lines.push('Cancelled or errored sessions are not reusable.');
|
|
83
|
-
lines.push('');
|
|
84
|
-
if (activeJobs.length > 0) {
|
|
85
|
-
lines.push('#### Active / Unreconciled');
|
|
86
|
-
for (const j of activeJobs) {
|
|
87
|
-
lines.push(` - ${j.alias} / ${j.sessionId || 'pending'} / ${j.agent} / ${j.status}`);
|
|
88
|
-
}
|
|
89
|
-
lines.push('');
|
|
90
|
-
}
|
|
91
|
-
if (reusableJobs.length > 0) {
|
|
92
|
-
lines.push('#### Reusable Sessions');
|
|
93
|
-
for (const j of reusableJobs) {
|
|
94
|
-
lines.push(` - ${j.alias} / ${j.sessionId || 'n/a'} / ${j.agent} / completed, reusable`);
|
|
95
|
-
}
|
|
96
|
-
lines.push('');
|
|
97
|
-
}
|
|
98
|
-
return lines.join('\n');
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* 标记任务已调和(不再显示在 Unreconciled 中)
|
|
102
|
-
*/
|
|
103
|
-
reconcileJob(alias) {
|
|
104
|
-
const job = this.jobs.get(alias);
|
|
105
|
-
if (job) {
|
|
106
|
-
job.terminalReconciled = true;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* 检查任务是否可复用
|
|
111
|
-
*/
|
|
112
|
-
isReusable(alias) {
|
|
113
|
-
const job = this.jobs.get(alias);
|
|
114
|
-
return job?.status === 'completed' && job.terminalReconciled;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
//# sourceMappingURL=tracker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/task-manager/tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/task-manager/types.ts"],"names":[],"mappings":""}
|