@jingyi0605/codingns 0.1.4 → 0.2.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/public/assets/{TerminalPage-4ulgBhv9.js → TerminalPage-BlbQuWi1.js} +1 -1
- package/dist/public/assets/gemini-D4G1NbrE.png +0 -0
- package/dist/public/assets/index-1VIm8lVL.css +1 -0
- package/dist/public/assets/index-Dti93O2S.js +109 -0
- package/dist/public/assets/kimi-BWNNSh7e.png +0 -0
- package/dist/public/index.html +2 -2
- package/dist/server/config/env.d.ts +7 -0
- package/dist/server/config/env.js +150 -1
- package/dist/server/config/env.js.map +1 -1
- package/dist/server/config/opencode-system-probe-helper-process.d.ts +24 -0
- package/dist/server/config/opencode-system-probe-helper-process.js +70 -5
- package/dist/server/config/opencode-system-probe-helper-process.js.map +1 -1
- package/dist/server/modules/butler/butler-action-context-service.d.ts +30 -0
- package/dist/server/modules/butler/butler-action-context-service.js +108 -0
- package/dist/server/modules/butler/butler-action-context-service.js.map +1 -0
- package/dist/server/modules/butler/butler-auth-service.d.ts +17 -0
- package/dist/server/modules/butler/butler-auth-service.js +91 -0
- package/dist/server/modules/butler/butler-auth-service.js.map +1 -0
- package/dist/server/modules/butler/butler-control-action-service.d.ts +65 -0
- package/dist/server/modules/butler/butler-control-action-service.js +296 -0
- package/dist/server/modules/butler/butler-control-action-service.js.map +1 -0
- package/dist/server/modules/butler/butler-control-session-service.d.ts +55 -0
- package/dist/server/modules/butler/butler-control-session-service.js +367 -0
- package/dist/server/modules/butler/butler-control-session-service.js.map +1 -0
- package/dist/server/modules/butler/butler-controller.d.ts +367 -0
- package/dist/server/modules/butler/butler-controller.js +475 -0
- package/dist/server/modules/butler/butler-controller.js.map +1 -0
- package/dist/server/modules/butler/butler-follow-up-evaluation-instruction-adapter.d.ts +34 -0
- package/dist/server/modules/butler/butler-follow-up-evaluation-instruction-adapter.js +77 -0
- package/dist/server/modules/butler/butler-follow-up-evaluation-instruction-adapter.js.map +1 -0
- package/dist/server/modules/butler/butler-follow-up-scheduler.d.ts +23 -0
- package/dist/server/modules/butler/butler-follow-up-scheduler.js +57 -0
- package/dist/server/modules/butler/butler-follow-up-scheduler.js.map +1 -0
- package/dist/server/modules/butler/butler-follow-up-service.d.ts +86 -0
- package/dist/server/modules/butler/butler-follow-up-service.js +948 -0
- package/dist/server/modules/butler/butler-follow-up-service.js.map +1 -0
- package/dist/server/modules/butler/butler-inbox-service.d.ts +35 -0
- package/dist/server/modules/butler/butler-inbox-service.js +136 -0
- package/dist/server/modules/butler/butler-inbox-service.js.map +1 -0
- package/dist/server/modules/butler/butler-notification-service.d.ts +12 -0
- package/dist/server/modules/butler/butler-notification-service.js +45 -0
- package/dist/server/modules/butler/butler-notification-service.js.map +1 -0
- package/dist/server/modules/butler/butler-profile-service.d.ts +26 -0
- package/dist/server/modules/butler/butler-profile-service.js +529 -0
- package/dist/server/modules/butler/butler-profile-service.js.map +1 -0
- package/dist/server/modules/butler/butler-project-service.d.ts +48 -0
- package/dist/server/modules/butler/butler-project-service.js +253 -0
- package/dist/server/modules/butler/butler-project-service.js.map +1 -0
- package/dist/server/modules/butler/butler-session-service.d.ts +79 -0
- package/dist/server/modules/butler/butler-session-service.js +503 -0
- package/dist/server/modules/butler/butler-session-service.js.map +1 -0
- package/dist/server/modules/butler/butler-session-summary-service.d.ts +55 -0
- package/dist/server/modules/butler/butler-session-summary-service.js +382 -0
- package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -0
- package/dist/server/modules/butler/context-aggregator.d.ts +187 -0
- package/dist/server/modules/butler/context-aggregator.js +807 -0
- package/dist/server/modules/butler/context-aggregator.js.map +1 -0
- package/dist/server/modules/butler/instruction-adapter.d.ts +28 -0
- package/dist/server/modules/butler/instruction-adapter.js +101 -0
- package/dist/server/modules/butler/instruction-adapter.js.map +1 -0
- package/dist/server/modules/butler/patrol-execution-service.d.ts +47 -0
- package/dist/server/modules/butler/patrol-execution-service.js +347 -0
- package/dist/server/modules/butler/patrol-execution-service.js.map +1 -0
- package/dist/server/modules/butler/patrol-plan-service.d.ts +54 -0
- package/dist/server/modules/butler/patrol-plan-service.js +272 -0
- package/dist/server/modules/butler/patrol-plan-service.js.map +1 -0
- package/dist/server/modules/butler/patrol-run-service.d.ts +60 -0
- package/dist/server/modules/butler/patrol-run-service.js +185 -0
- package/dist/server/modules/butler/patrol-run-service.js.map +1 -0
- package/dist/server/modules/butler/patrol-scheduler.d.ts +36 -0
- package/dist/server/modules/butler/patrol-scheduler.js +99 -0
- package/dist/server/modules/butler/patrol-scheduler.js.map +1 -0
- package/dist/server/modules/butler/project-memory-service.d.ts +30 -0
- package/dist/server/modules/butler/project-memory-service.js +103 -0
- package/dist/server/modules/butler/project-memory-service.js.map +1 -0
- package/dist/server/modules/butler/provider-adapter-registry.d.ts +61 -0
- package/dist/server/modules/butler/provider-adapter-registry.js +430 -0
- package/dist/server/modules/butler/provider-adapter-registry.js.map +1 -0
- package/dist/server/modules/butler/session-summary-instruction-adapter.d.ts +28 -0
- package/dist/server/modules/butler/session-summary-instruction-adapter.js +79 -0
- package/dist/server/modules/butler/session-summary-instruction-adapter.js.map +1 -0
- package/dist/server/modules/butler/session-summary-scheduler.d.ts +23 -0
- package/dist/server/modules/butler/session-summary-scheduler.js +57 -0
- package/dist/server/modules/butler/session-summary-scheduler.js.map +1 -0
- package/dist/server/modules/butler/verification-run-service.d.ts +73 -0
- package/dist/server/modules/butler/verification-run-service.js +633 -0
- package/dist/server/modules/butler/verification-run-service.js.map +1 -0
- package/dist/server/modules/file/file-controller.d.ts +12 -1
- package/dist/server/modules/file/file-controller.js +72 -1
- package/dist/server/modules/file/file-controller.js.map +1 -1
- package/dist/server/modules/file/file-preview-link-service.d.ts +22 -0
- package/dist/server/modules/file/file-preview-link-service.js +160 -0
- package/dist/server/modules/file/file-preview-link-service.js.map +1 -0
- package/dist/server/modules/preferences/profile-service.js +8 -2
- package/dist/server/modules/preferences/profile-service.js.map +1 -1
- package/dist/server/modules/sessions/claude-runtime-helper-process.js +1 -1
- package/dist/server/modules/sessions/claude-runtime-helper-process.js.map +1 -1
- package/dist/server/modules/sessions/codex-app-server-helper-client.d.ts +7 -2
- package/dist/server/modules/sessions/codex-app-server-helper-client.js +113 -2
- package/dist/server/modules/sessions/codex-app-server-helper-client.js.map +1 -1
- package/dist/server/modules/sessions/codex-app-server-helper-process.js +106 -1
- package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
- package/dist/server/modules/sessions/session-controller.d.ts +24 -1
- package/dist/server/modules/sessions/session-controller.js +34 -3
- package/dist/server/modules/sessions/session-controller.js.map +1 -1
- package/dist/server/modules/sessions/session-history-service.d.ts +47 -2
- package/dist/server/modules/sessions/session-history-service.js +881 -56
- package/dist/server/modules/sessions/session-history-service.js.map +1 -1
- package/dist/server/modules/sessions/session-live-runtime-service.d.ts +30 -2
- package/dist/server/modules/sessions/session-live-runtime-service.js +584 -159
- package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
- package/dist/server/modules/sessions/session-provider-error-mapper.js +94 -0
- package/dist/server/modules/sessions/session-provider-error-mapper.js.map +1 -1
- package/dist/server/modules/workbench/workbench-service.d.ts +7 -1
- package/dist/server/modules/workbench/workbench-service.js +31 -7
- package/dist/server/modules/workbench/workbench-service.js.map +1 -1
- package/dist/server/routes/butler.d.ts +3 -0
- package/dist/server/routes/butler.js +54 -0
- package/dist/server/routes/butler.js.map +1 -0
- package/dist/server/routes/files.js +2 -0
- package/dist/server/routes/files.js.map +1 -1
- package/dist/server/routes/sessions.js +1 -0
- package/dist/server/routes/sessions.js.map +1 -1
- package/dist/server/server/create-server.d.ts +65 -0
- package/dist/server/server/create-server.js +154 -5
- package/dist/server/server/create-server.js.map +1 -1
- package/dist/server/shared/utils/command-availability.d.ts +1 -0
- package/dist/server/shared/utils/command-availability.js +83 -0
- package/dist/server/shared/utils/command-availability.js.map +1 -0
- package/dist/server/storage/repositories/butler-control-event-repository.d.ts +8 -0
- package/dist/server/storage/repositories/butler-control-event-repository.js +78 -0
- package/dist/server/storage/repositories/butler-control-event-repository.js.map +1 -0
- package/dist/server/storage/repositories/butler-control-session-repository.d.ts +11 -0
- package/dist/server/storage/repositories/butler-control-session-repository.js +86 -0
- package/dist/server/storage/repositories/butler-control-session-repository.js.map +1 -0
- package/dist/server/storage/repositories/butler-follow-up-task-repository.d.ts +16 -0
- package/dist/server/storage/repositories/butler-follow-up-task-repository.js +252 -0
- package/dist/server/storage/repositories/butler-follow-up-task-repository.js.map +1 -0
- package/dist/server/storage/repositories/butler-inbox-item-repository.d.ts +15 -0
- package/dist/server/storage/repositories/butler-inbox-item-repository.js +111 -0
- package/dist/server/storage/repositories/butler-inbox-item-repository.js.map +1 -0
- package/dist/server/storage/repositories/butler-notification-archive-repository.d.ts +9 -0
- package/dist/server/storage/repositories/butler-notification-archive-repository.js +48 -0
- package/dist/server/storage/repositories/butler-notification-archive-repository.js.map +1 -0
- package/dist/server/storage/repositories/butler-profile-repository.d.ts +9 -0
- package/dist/server/storage/repositories/butler-profile-repository.js +86 -0
- package/dist/server/storage/repositories/butler-profile-repository.js.map +1 -0
- package/dist/server/storage/repositories/butler-project-repository.d.ts +14 -0
- package/dist/server/storage/repositories/butler-project-repository.js +140 -0
- package/dist/server/storage/repositories/butler-project-repository.js.map +1 -0
- package/dist/server/storage/repositories/butler-session-repository.d.ts +11 -0
- package/dist/server/storage/repositories/butler-session-repository.js +106 -0
- package/dist/server/storage/repositories/butler-session-repository.js.map +1 -0
- package/dist/server/storage/repositories/butler-session-summary-state-repository.d.ts +8 -0
- package/dist/server/storage/repositories/butler-session-summary-state-repository.js +62 -0
- package/dist/server/storage/repositories/butler-session-summary-state-repository.js.map +1 -0
- package/dist/server/storage/repositories/patrol-plan-repository.d.ts +27 -0
- package/dist/server/storage/repositories/patrol-plan-repository.js +119 -0
- package/dist/server/storage/repositories/patrol-plan-repository.js.map +1 -0
- package/dist/server/storage/repositories/patrol-run-repository.d.ts +28 -0
- package/dist/server/storage/repositories/patrol-run-repository.js +121 -0
- package/dist/server/storage/repositories/patrol-run-repository.js.map +1 -0
- package/dist/server/storage/repositories/project-memory-repository.d.ts +15 -0
- package/dist/server/storage/repositories/project-memory-repository.js +150 -0
- package/dist/server/storage/repositories/project-memory-repository.js.map +1 -0
- package/dist/server/storage/repositories/session-checkpoint-repository.d.ts +9 -0
- package/dist/server/storage/repositories/session-checkpoint-repository.js +72 -0
- package/dist/server/storage/repositories/session-checkpoint-repository.js.map +1 -0
- package/dist/server/storage/repositories/session-fork-repository.d.ts +8 -0
- package/dist/server/storage/repositories/session-fork-repository.js +69 -0
- package/dist/server/storage/repositories/session-fork-repository.js.map +1 -0
- package/dist/server/storage/repositories/session-index-repository.js +40 -2
- package/dist/server/storage/repositories/session-index-repository.js.map +1 -1
- package/dist/server/storage/repositories/session-message-origin-repository.d.ts +10 -0
- package/dist/server/storage/repositories/session-message-origin-repository.js +93 -0
- package/dist/server/storage/repositories/session-message-origin-repository.js.map +1 -0
- package/dist/server/storage/repositories/verification-run-repository.d.ts +29 -0
- package/dist/server/storage/repositories/verification-run-repository.js +125 -0
- package/dist/server/storage/repositories/verification-run-repository.js.map +1 -0
- package/dist/server/storage/sqlite/client.js +146 -0
- package/dist/server/storage/sqlite/client.js.map +1 -1
- package/dist/server/storage/sqlite/schema.sql +354 -0
- package/dist/server/types/domain.d.ts +286 -2
- package/dist/server/ws/ws-server.d.ts +2 -1
- package/dist/server/ws/ws-server.js +2 -1
- package/dist/server/ws/ws-server.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/index.d.ts +4 -0
- package/node_modules/@codingns/session-sync-core/dist/index.js +4 -0
- package/node_modules/@codingns/session-sync-core/dist/index.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.d.ts +18 -0
- package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.js +659 -0
- package/node_modules/@codingns/session-sync-core/dist/kimi-message-normalizer.js.map +1 -0
- package/node_modules/@codingns/session-sync-core/dist/kimi-shared.d.ts +11 -0
- package/node_modules/@codingns/session-sync-core/dist/kimi-shared.js +72 -0
- package/node_modules/@codingns/session-sync-core/dist/kimi-shared.js.map +1 -0
- package/node_modules/@codingns/session-sync-core/dist/patch-builder.d.ts +8 -0
- package/node_modules/@codingns/session-sync-core/dist/patch-builder.js +89 -0
- package/node_modules/@codingns/session-sync-core/dist/patch-builder.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.d.ts +6 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js +228 -7
- package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +26 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +499 -3
- package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/gemini.d.ts +41 -0
- package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js +1175 -0
- package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js.map +1 -0
- package/node_modules/@codingns/session-sync-core/dist/providers/kimi.d.ts +29 -0
- package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js +578 -0
- package/node_modules/@codingns/session-sync-core/dist/providers/kimi.js.map +1 -0
- package/node_modules/@codingns/session-sync-core/dist/providers/opencode.d.ts +5 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +271 -4
- package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/utils.d.ts +1 -0
- package/node_modules/@codingns/session-sync-core/dist/providers/utils.js +147 -19
- package/node_modules/@codingns/session-sync-core/dist/providers/utils.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.d.ts +2 -0
- package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js +43 -5
- package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.d.ts +12 -0
- package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +442 -71
- package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.d.ts +21 -0
- package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.js +537 -0
- package/node_modules/@codingns/session-sync-core/dist/runtime/gemini-runtime.js.map +1 -0
- package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.d.ts +38 -0
- package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.js +911 -0
- package/node_modules/@codingns/session-sync-core/dist/runtime/kimi-runtime.js.map +1 -0
- package/node_modules/@codingns/session-sync-core/dist/services.d.ts +2 -1
- package/node_modules/@codingns/session-sync-core/dist/services.js +55 -8
- package/node_modules/@codingns/session-sync-core/dist/services.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.d.ts +6 -0
- package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js +9 -0
- package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js.map +1 -0
- package/node_modules/@codingns/session-sync-core/dist/types.d.ts +27 -0
- package/node_modules/@codingns/session-sync-core/package.json +8 -0
- package/package.json +1 -1
- package/dist/public/assets/index-C5lu52cQ.css +0 -1
- package/dist/public/assets/index-WpdUo_Vs.js +0 -108
|
@@ -0,0 +1,475 @@
|
|
|
1
|
+
import { requireUserId } from "../preferences/common.js";
|
|
2
|
+
export class ButlerController {
|
|
3
|
+
butlerProfileService;
|
|
4
|
+
butlerControlSessionService;
|
|
5
|
+
butlerControlActionService;
|
|
6
|
+
butlerContextAggregator;
|
|
7
|
+
butlerFollowUpService;
|
|
8
|
+
butlerInboxService;
|
|
9
|
+
butlerNotificationService;
|
|
10
|
+
butlerProjectService;
|
|
11
|
+
butlerSessionService;
|
|
12
|
+
projectMemoryService;
|
|
13
|
+
patrolPlanService;
|
|
14
|
+
patrolRunService;
|
|
15
|
+
patrolExecutionService;
|
|
16
|
+
verificationRunService;
|
|
17
|
+
butlerActionContextService;
|
|
18
|
+
constructor(butlerProfileService, butlerControlSessionService, butlerControlActionService, butlerContextAggregator, butlerFollowUpService, butlerInboxService, butlerNotificationService, butlerProjectService, butlerSessionService, projectMemoryService, patrolPlanService, patrolRunService, patrolExecutionService, verificationRunService, butlerActionContextService) {
|
|
19
|
+
this.butlerProfileService = butlerProfileService;
|
|
20
|
+
this.butlerControlSessionService = butlerControlSessionService;
|
|
21
|
+
this.butlerControlActionService = butlerControlActionService;
|
|
22
|
+
this.butlerContextAggregator = butlerContextAggregator;
|
|
23
|
+
this.butlerFollowUpService = butlerFollowUpService;
|
|
24
|
+
this.butlerInboxService = butlerInboxService;
|
|
25
|
+
this.butlerNotificationService = butlerNotificationService;
|
|
26
|
+
this.butlerProjectService = butlerProjectService;
|
|
27
|
+
this.butlerSessionService = butlerSessionService;
|
|
28
|
+
this.projectMemoryService = projectMemoryService;
|
|
29
|
+
this.patrolPlanService = patrolPlanService;
|
|
30
|
+
this.patrolRunService = patrolRunService;
|
|
31
|
+
this.patrolExecutionService = patrolExecutionService;
|
|
32
|
+
this.verificationRunService = verificationRunService;
|
|
33
|
+
this.butlerActionContextService = butlerActionContextService;
|
|
34
|
+
}
|
|
35
|
+
getProfile = async (_request, reply) => {
|
|
36
|
+
const profile = this.butlerProfileService.getProfile();
|
|
37
|
+
reply.send({
|
|
38
|
+
initialized: profile !== null,
|
|
39
|
+
profile
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
initProfile = async (request, reply) => {
|
|
43
|
+
const profile = this.butlerProfileService.initProfile(request.body ?? {});
|
|
44
|
+
reply.status(201).send({
|
|
45
|
+
initialized: true,
|
|
46
|
+
profile
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
updateProfile = async (request, reply) => {
|
|
50
|
+
const profile = this.butlerProfileService.updateProfile(request.body ?? {});
|
|
51
|
+
reply.send({
|
|
52
|
+
initialized: true,
|
|
53
|
+
profile
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
getCurrentControlSession = async (request, reply) => {
|
|
57
|
+
reply.send({
|
|
58
|
+
controlSession: this.butlerControlSessionService.getCurrentSession(requireUserId(request))
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
listControlSessionEvents = async (_request, reply) => {
|
|
62
|
+
reply.send({
|
|
63
|
+
items: this.butlerControlActionService.listCurrentEvents()
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
resetControlSession = async (_request, reply) => {
|
|
67
|
+
this.butlerControlSessionService.resetCurrentSession();
|
|
68
|
+
reply.send({
|
|
69
|
+
controlSession: null
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
startControlSession = async (request, reply) => {
|
|
73
|
+
const controlSession = await this.butlerControlSessionService.startSession(requireUserId(request), request.body ?? {});
|
|
74
|
+
reply.status(201).send({ controlSession });
|
|
75
|
+
};
|
|
76
|
+
resumeControlSession = async (request, reply) => {
|
|
77
|
+
reply.send(await this.butlerControlSessionService.resumeCurrentSession(requireUserId(request)));
|
|
78
|
+
};
|
|
79
|
+
sendControlMessage = async (request, reply) => {
|
|
80
|
+
reply.status(202).send(await this.butlerControlSessionService.sendMessage(requireUserId(request), request.body ?? {}));
|
|
81
|
+
};
|
|
82
|
+
getOverview = async (request, reply) => {
|
|
83
|
+
reply.send({
|
|
84
|
+
overview: await this.butlerContextAggregator.getOverview(requireUserId(request))
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
listInboxItems = async (request, reply) => {
|
|
88
|
+
reply.send({
|
|
89
|
+
items: this.butlerInboxService.listItems({
|
|
90
|
+
workspaceId: request.query.workspaceId,
|
|
91
|
+
projectId: request.query.projectId,
|
|
92
|
+
status: request.query.status,
|
|
93
|
+
itemType: request.query.itemType
|
|
94
|
+
})
|
|
95
|
+
});
|
|
96
|
+
};
|
|
97
|
+
listFollowUpTasks = async (request, reply) => {
|
|
98
|
+
reply.send({
|
|
99
|
+
items: this.butlerFollowUpService.listTasks({
|
|
100
|
+
statuses: request.query.status ? [request.query.status] : undefined,
|
|
101
|
+
projectId: request.query.projectId,
|
|
102
|
+
sessionId: request.query.sessionId
|
|
103
|
+
})
|
|
104
|
+
});
|
|
105
|
+
};
|
|
106
|
+
createFollowUpTask = async (request, reply) => {
|
|
107
|
+
const task = await this.butlerFollowUpService.createTask(request.body ?? {}, requireUserId(request));
|
|
108
|
+
this.butlerActionContextService?.invalidateSessionActionContext(task.sessionId);
|
|
109
|
+
reply.status(201).send({
|
|
110
|
+
task
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
getFollowUpTask = async (request, reply) => {
|
|
114
|
+
reply.send({
|
|
115
|
+
task: this.butlerFollowUpService.getTask(request.params.taskId)
|
|
116
|
+
});
|
|
117
|
+
};
|
|
118
|
+
cancelFollowUpTask = async (request, reply) => {
|
|
119
|
+
const task = this.butlerFollowUpService.cancelTask(request.params.taskId, requireUserId(request));
|
|
120
|
+
this.butlerActionContextService?.invalidateSessionActionContext(task.sessionId);
|
|
121
|
+
reply.send({
|
|
122
|
+
task
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
createInboxItem = async (request, reply) => {
|
|
126
|
+
const item = this.butlerInboxService.createItem({
|
|
127
|
+
projectId: request.body.projectId,
|
|
128
|
+
itemType: request.body.itemType,
|
|
129
|
+
title: request.body.title,
|
|
130
|
+
content: request.body.content,
|
|
131
|
+
priority: request.body.priority,
|
|
132
|
+
status: request.body.status
|
|
133
|
+
});
|
|
134
|
+
reply.status(201).send({ item });
|
|
135
|
+
};
|
|
136
|
+
updateInboxItem = async (request, reply) => {
|
|
137
|
+
reply.send({
|
|
138
|
+
item: this.butlerInboxService.updateItem(request.params.itemId, {
|
|
139
|
+
projectId: request.body.projectId,
|
|
140
|
+
itemType: request.body.itemType,
|
|
141
|
+
title: request.body.title,
|
|
142
|
+
content: request.body.content,
|
|
143
|
+
priority: request.body.priority,
|
|
144
|
+
status: request.body.status
|
|
145
|
+
})
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
deleteInboxItem = async (request, reply) => {
|
|
149
|
+
this.butlerInboxService.deleteItem(request.params.itemId);
|
|
150
|
+
reply.status(204).send();
|
|
151
|
+
};
|
|
152
|
+
listNotificationArchives = async (request, reply) => {
|
|
153
|
+
reply.send({
|
|
154
|
+
items: this.butlerNotificationService.listArchivedNotifications(requireUserId(request))
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
updateNotificationArchive = async (request, reply) => {
|
|
158
|
+
const item = this.butlerNotificationService.setArchived(requireUserId(request), request.params.notificationId, request.body.archived === true);
|
|
159
|
+
reply.send({ item });
|
|
160
|
+
};
|
|
161
|
+
getContextSnapshot = async (request, reply) => {
|
|
162
|
+
reply.send({
|
|
163
|
+
snapshot: await this.butlerContextAggregator.getSnapshot(requireUserId(request))
|
|
164
|
+
});
|
|
165
|
+
};
|
|
166
|
+
getProjectContext = async (request, reply) => {
|
|
167
|
+
reply.send({
|
|
168
|
+
context: await this.butlerContextAggregator.getProjectContext(request.params.projectId, requireUserId(request))
|
|
169
|
+
});
|
|
170
|
+
};
|
|
171
|
+
searchSummaries = async (request, reply) => {
|
|
172
|
+
reply.send({
|
|
173
|
+
result: await this.butlerContextAggregator.searchSummaries(requireUserId(request), request.query.q ?? "", {
|
|
174
|
+
projectId: request.query.projectId?.trim() || null,
|
|
175
|
+
includeArchived: request.query.includeArchived === "true"
|
|
176
|
+
})
|
|
177
|
+
});
|
|
178
|
+
};
|
|
179
|
+
getSessionTarget = async (request, reply) => {
|
|
180
|
+
const sessionId = request.query.sessionId?.trim() ?? "";
|
|
181
|
+
const userId = requireUserId(request);
|
|
182
|
+
if (this.butlerActionContextService) {
|
|
183
|
+
const context = await this.butlerActionContextService.getSessionActionContext(sessionId, userId);
|
|
184
|
+
reply.send({
|
|
185
|
+
target: {
|
|
186
|
+
workspaceId: context.workspaceId,
|
|
187
|
+
project: context.project,
|
|
188
|
+
session: context.session
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
const workspaceId = this.butlerSessionService.getSessionWorkspaceId(sessionId);
|
|
194
|
+
const project = this.butlerProjectService.resolveWorkspaceActionProject(workspaceId);
|
|
195
|
+
const target = await this.butlerSessionService.resolveActionTarget(project.id, sessionId, userId);
|
|
196
|
+
reply.send({
|
|
197
|
+
target: {
|
|
198
|
+
workspaceId: target.workspaceId,
|
|
199
|
+
project,
|
|
200
|
+
session: target.session
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
};
|
|
204
|
+
getSessionActionContext = async (request, reply) => {
|
|
205
|
+
const sessionId = request.query.sessionId?.trim() ?? "";
|
|
206
|
+
const userId = requireUserId(request);
|
|
207
|
+
if (this.butlerActionContextService) {
|
|
208
|
+
reply.send({
|
|
209
|
+
context: await this.butlerActionContextService.getSessionActionContext(sessionId, userId)
|
|
210
|
+
});
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
const workspaceId = this.butlerSessionService.getSessionWorkspaceId(sessionId);
|
|
214
|
+
const project = this.butlerProjectService.resolveWorkspaceActionProject(workspaceId);
|
|
215
|
+
const target = await this.butlerSessionService.resolveActionTarget(project.id, sessionId, userId);
|
|
216
|
+
const latestFollowUpTask = this.butlerFollowUpService.listTasks({
|
|
217
|
+
sessionId,
|
|
218
|
+
limit: 1
|
|
219
|
+
})[0] ?? null;
|
|
220
|
+
reply.send({
|
|
221
|
+
context: {
|
|
222
|
+
workspaceId: target.workspaceId,
|
|
223
|
+
project: {
|
|
224
|
+
id: project.id,
|
|
225
|
+
workspaceId: project.workspaceId,
|
|
226
|
+
name: project.name,
|
|
227
|
+
repoRoot: project.repoRoot,
|
|
228
|
+
lifecycleStatus: project.lifecycleStatus,
|
|
229
|
+
riskLevel: project.riskLevel
|
|
230
|
+
},
|
|
231
|
+
session: target.session,
|
|
232
|
+
latestFollowUpTask
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
};
|
|
236
|
+
openProjectAction = async (request, reply) => {
|
|
237
|
+
const projectId = request.body.projectId?.trim() ?? "";
|
|
238
|
+
reply.send({
|
|
239
|
+
result: await this.butlerControlActionService.openProject(projectId, requireUserId(request))
|
|
240
|
+
});
|
|
241
|
+
};
|
|
242
|
+
resumeProjectSessionAction = async (request, reply) => {
|
|
243
|
+
reply.send({
|
|
244
|
+
result: await this.butlerControlActionService.resumeProjectSession({
|
|
245
|
+
projectId: request.body.projectId?.trim() ?? "",
|
|
246
|
+
butlerSessionId: request.body.butlerSessionId?.trim() ?? ""
|
|
247
|
+
}, requireUserId(request))
|
|
248
|
+
});
|
|
249
|
+
};
|
|
250
|
+
startPatrolAction = async (request, reply) => {
|
|
251
|
+
reply.status(201).send({
|
|
252
|
+
result: await this.butlerControlActionService.startPatrol({
|
|
253
|
+
projectId: request.body.projectId?.trim() ?? "",
|
|
254
|
+
planId: request.body.planId?.trim() || null,
|
|
255
|
+
triggerRef: request.body.triggerRef?.trim() || null,
|
|
256
|
+
butlerSessionId: request.body.butlerSessionId?.trim() || null,
|
|
257
|
+
suggestions: request.body.suggestions
|
|
258
|
+
})
|
|
259
|
+
});
|
|
260
|
+
};
|
|
261
|
+
startVerificationAction = async (request, reply) => {
|
|
262
|
+
reply.status(201).send({
|
|
263
|
+
result: await this.butlerControlActionService.startVerification({
|
|
264
|
+
projectId: request.body.projectId?.trim() ?? "",
|
|
265
|
+
verificationType: request.body.verificationType,
|
|
266
|
+
targetRef: request.body.targetRef?.trim() || null,
|
|
267
|
+
butlerSessionId: request.body.butlerSessionId?.trim() || null,
|
|
268
|
+
sourcePatrolRunId: request.body.sourcePatrolRunId?.trim() || null,
|
|
269
|
+
spec: request.body.spec
|
|
270
|
+
})
|
|
271
|
+
});
|
|
272
|
+
};
|
|
273
|
+
listProjects = async (request, reply) => {
|
|
274
|
+
reply.send({
|
|
275
|
+
items: this.butlerProjectService.list({
|
|
276
|
+
workspaceId: request.query.workspaceId?.trim() || undefined,
|
|
277
|
+
lifecycleStatus: request.query.status,
|
|
278
|
+
riskLevel: request.query.riskLevel
|
|
279
|
+
})
|
|
280
|
+
});
|
|
281
|
+
};
|
|
282
|
+
createProject = async (request, reply) => {
|
|
283
|
+
const project = this.butlerProjectService.create({
|
|
284
|
+
workspaceId: request.body.workspaceId?.trim() || "",
|
|
285
|
+
name: request.body.name?.trim() || "",
|
|
286
|
+
repoRoot: request.body.repoRoot?.trim() || "",
|
|
287
|
+
defaultProvider: request.body.defaultProvider?.trim() || null,
|
|
288
|
+
approvalMode: request.body.approvalMode,
|
|
289
|
+
config: request.body.config
|
|
290
|
+
});
|
|
291
|
+
reply.status(201).send({ project });
|
|
292
|
+
};
|
|
293
|
+
getProject = async (request, reply) => {
|
|
294
|
+
reply.send({
|
|
295
|
+
project: this.butlerProjectService.getById(request.params.projectId)
|
|
296
|
+
});
|
|
297
|
+
};
|
|
298
|
+
updateProject = async (request, reply) => {
|
|
299
|
+
reply.send({
|
|
300
|
+
project: this.butlerProjectService.update(request.params.projectId, {
|
|
301
|
+
name: request.body.name?.trim(),
|
|
302
|
+
defaultProvider: request.body.defaultProvider === undefined
|
|
303
|
+
? undefined
|
|
304
|
+
: request.body.defaultProvider?.trim() || null,
|
|
305
|
+
approvalMode: request.body.approvalMode,
|
|
306
|
+
lifecycleStatus: request.body.lifecycleStatus,
|
|
307
|
+
riskLevel: request.body.riskLevel,
|
|
308
|
+
config: request.body.config
|
|
309
|
+
})
|
|
310
|
+
});
|
|
311
|
+
};
|
|
312
|
+
getProjectOverview = async (request, reply) => {
|
|
313
|
+
const userId = requireUserId(request);
|
|
314
|
+
await this.butlerSessionService.ensureProjectSessionsSynced(request.params.projectId, userId);
|
|
315
|
+
const overview = this.butlerProjectService.getOverview(request.params.projectId);
|
|
316
|
+
reply.send({
|
|
317
|
+
...overview,
|
|
318
|
+
activeSessions: this.butlerSessionService.listByProject(request.params.projectId, userId)
|
|
319
|
+
});
|
|
320
|
+
};
|
|
321
|
+
listProjectSessions = async (request, reply) => {
|
|
322
|
+
await this.butlerSessionService.ensureProjectSessionsSynced(request.params.projectId, requireUserId(request));
|
|
323
|
+
reply.send({
|
|
324
|
+
items: this.butlerSessionService.listByProject(request.params.projectId, requireUserId(request))
|
|
325
|
+
});
|
|
326
|
+
};
|
|
327
|
+
importProjectSession = async (request, reply) => {
|
|
328
|
+
const session = this.butlerSessionService.importSession(request.params.projectId, {
|
|
329
|
+
sessionId: request.body.sessionId?.trim() || "",
|
|
330
|
+
role: request.body.role,
|
|
331
|
+
ownershipMode: request.body.ownershipMode
|
|
332
|
+
}, requireUserId(request));
|
|
333
|
+
reply.status(201).send({ session });
|
|
334
|
+
};
|
|
335
|
+
startProjectSession = async (request, reply) => {
|
|
336
|
+
const session = await this.butlerSessionService.startSession(request.params.projectId, {
|
|
337
|
+
providerId: request.body.providerId,
|
|
338
|
+
role: request.body.role,
|
|
339
|
+
ownershipMode: request.body.ownershipMode,
|
|
340
|
+
content: request.body.content,
|
|
341
|
+
model: request.body.model,
|
|
342
|
+
reasoningLevel: request.body.reasoningLevel,
|
|
343
|
+
permissionMode: request.body.permissionMode
|
|
344
|
+
}, requireUserId(request));
|
|
345
|
+
reply.status(201).send({ session });
|
|
346
|
+
};
|
|
347
|
+
captureProjectSessionSnapshot = async (request, reply) => {
|
|
348
|
+
const session = this.butlerSessionService.captureSessionSnapshot(request.params.projectId, request.params.butlerSessionId, requireUserId(request), {
|
|
349
|
+
sourceKind: request.body?.sourceKind
|
|
350
|
+
});
|
|
351
|
+
reply.status(201).send({ session });
|
|
352
|
+
};
|
|
353
|
+
resumeProjectSession = async (request, reply) => {
|
|
354
|
+
const resumed = await this.butlerSessionService.resumeSession(request.params.projectId, request.params.butlerSessionId, requireUserId(request));
|
|
355
|
+
reply.send(resumed);
|
|
356
|
+
};
|
|
357
|
+
listProjectMemories = async (request, reply) => {
|
|
358
|
+
reply.send({
|
|
359
|
+
items: this.projectMemoryService.listMemories(request.params.projectId, {
|
|
360
|
+
status: request.query.status,
|
|
361
|
+
memoryType: request.query.memoryType,
|
|
362
|
+
scopePath: request.query.scopePath?.trim() || undefined,
|
|
363
|
+
query: request.query.q?.trim() || undefined
|
|
364
|
+
})
|
|
365
|
+
});
|
|
366
|
+
};
|
|
367
|
+
createProjectMemory = async (request, reply) => {
|
|
368
|
+
const memory = this.projectMemoryService.createMemory(request.params.projectId, {
|
|
369
|
+
title: request.body.title,
|
|
370
|
+
scopePath: request.body.scopePath?.trim() || null,
|
|
371
|
+
content: request.body.content,
|
|
372
|
+
tags: request.body.tags,
|
|
373
|
+
confidence: request.body.confidence,
|
|
374
|
+
status: request.body.status,
|
|
375
|
+
memoryType: request.body.memoryType,
|
|
376
|
+
evidence: request.body.evidence
|
|
377
|
+
});
|
|
378
|
+
reply.status(201).send({ memory });
|
|
379
|
+
};
|
|
380
|
+
updateProjectMemory = async (request, reply) => {
|
|
381
|
+
reply.send({
|
|
382
|
+
memory: this.projectMemoryService.updateMemory(request.params.projectId, request.params.memoryId, {
|
|
383
|
+
title: request.body.title,
|
|
384
|
+
scopePath: request.body.scopePath === undefined ? undefined : request.body.scopePath?.trim() || null,
|
|
385
|
+
content: request.body.content,
|
|
386
|
+
tags: request.body.tags,
|
|
387
|
+
confidence: request.body.confidence,
|
|
388
|
+
status: request.body.status,
|
|
389
|
+
memoryType: request.body.memoryType,
|
|
390
|
+
evidence: request.body.evidence
|
|
391
|
+
})
|
|
392
|
+
});
|
|
393
|
+
};
|
|
394
|
+
listPatrolPlans = async (request, reply) => {
|
|
395
|
+
reply.send({
|
|
396
|
+
items: this.patrolPlanService.listPlans(request.params.projectId, {
|
|
397
|
+
enabled: request.query.enabled === undefined
|
|
398
|
+
? undefined
|
|
399
|
+
: request.query.enabled === "true",
|
|
400
|
+
executionMode: request.query.executionMode
|
|
401
|
+
})
|
|
402
|
+
});
|
|
403
|
+
};
|
|
404
|
+
createPatrolPlan = async (request, reply) => {
|
|
405
|
+
const plan = this.patrolPlanService.createPlan(request.params.projectId, {
|
|
406
|
+
name: request.body.name?.trim() || "",
|
|
407
|
+
triggerType: request.body.triggerType ?? "manual",
|
|
408
|
+
triggerConfig: request.body.triggerConfig ?? {},
|
|
409
|
+
executionMode: request.body.executionMode ?? "readonly",
|
|
410
|
+
patrolScope: request.body.patrolScope ?? {},
|
|
411
|
+
enabled: request.body.enabled
|
|
412
|
+
});
|
|
413
|
+
reply.status(201).send({ plan });
|
|
414
|
+
};
|
|
415
|
+
updatePatrolPlan = async (request, reply) => {
|
|
416
|
+
reply.send({
|
|
417
|
+
plan: this.patrolPlanService.updatePlan(request.params.projectId, request.params.planId, {
|
|
418
|
+
name: request.body.name,
|
|
419
|
+
triggerConfig: request.body.triggerConfig,
|
|
420
|
+
executionMode: request.body.executionMode,
|
|
421
|
+
patrolScope: request.body.patrolScope,
|
|
422
|
+
enabled: request.body.enabled,
|
|
423
|
+
lastScheduledAt: request.body.lastScheduledAt ?? undefined,
|
|
424
|
+
nextRunAt: request.body.nextRunAt ?? undefined
|
|
425
|
+
})
|
|
426
|
+
});
|
|
427
|
+
};
|
|
428
|
+
listPatrolRuns = async (request, reply) => {
|
|
429
|
+
reply.send({
|
|
430
|
+
items: this.patrolRunService.listRuns(request.params.projectId, {
|
|
431
|
+
status: request.query.status
|
|
432
|
+
})
|
|
433
|
+
});
|
|
434
|
+
};
|
|
435
|
+
startPatrolRun = async (request, reply) => {
|
|
436
|
+
const queuedRun = this.patrolRunService.startRun(request.params.projectId, {
|
|
437
|
+
planId: request.body.planId?.trim() || null,
|
|
438
|
+
triggeredBy: request.body.triggeredBy,
|
|
439
|
+
triggerRef: request.body.triggerRef?.trim() || null,
|
|
440
|
+
butlerSessionId: request.body.butlerSessionId?.trim() || null,
|
|
441
|
+
suggestions: request.body.suggestions
|
|
442
|
+
});
|
|
443
|
+
const run = await this.patrolExecutionService.executeQueuedRun(queuedRun.id);
|
|
444
|
+
reply.status(201).send({ run });
|
|
445
|
+
};
|
|
446
|
+
getPatrolRun = async (request, reply) => {
|
|
447
|
+
reply.send({
|
|
448
|
+
run: this.patrolRunService.getRun(request.params.projectId, request.params.runId)
|
|
449
|
+
});
|
|
450
|
+
};
|
|
451
|
+
listVerificationRuns = async (request, reply) => {
|
|
452
|
+
reply.send({
|
|
453
|
+
items: this.verificationRunService.listRuns(request.params.projectId, {
|
|
454
|
+
status: request.query.status,
|
|
455
|
+
verificationType: request.query.verificationType
|
|
456
|
+
})
|
|
457
|
+
});
|
|
458
|
+
};
|
|
459
|
+
startVerificationRun = async (request, reply) => {
|
|
460
|
+
const run = await this.verificationRunService.startRun(request.params.projectId, {
|
|
461
|
+
verificationType: request.body.verificationType,
|
|
462
|
+
targetRef: request.body.targetRef?.trim() || null,
|
|
463
|
+
butlerSessionId: request.body.butlerSessionId?.trim() || null,
|
|
464
|
+
sourcePatrolRunId: request.body.sourcePatrolRunId?.trim() || null,
|
|
465
|
+
spec: request.body.spec
|
|
466
|
+
});
|
|
467
|
+
reply.status(201).send({ run });
|
|
468
|
+
};
|
|
469
|
+
getVerificationRun = async (request, reply) => {
|
|
470
|
+
reply.send({
|
|
471
|
+
run: this.verificationRunService.getRun(request.params.projectId, request.params.verificationId)
|
|
472
|
+
});
|
|
473
|
+
};
|
|
474
|
+
}
|
|
475
|
+
//# sourceMappingURL=butler-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"butler-controller.js","sourceRoot":"","sources":["../../../../src/modules/butler/butler-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ButlerProject, SessionRunningState } from "../../types/domain.js";
|
|
2
|
+
export type ButlerFollowUpEvaluationDecision = "continue" | "waiting_user" | "completed" | "failed";
|
|
3
|
+
export interface ButlerFollowUpEvaluationInstructionEnvelope {
|
|
4
|
+
providerId: "codex" | "claude-code";
|
|
5
|
+
outputContractVersion: string;
|
|
6
|
+
prompt: string;
|
|
7
|
+
metadata: {
|
|
8
|
+
projectId: string;
|
|
9
|
+
projectName: string;
|
|
10
|
+
sessionId: string;
|
|
11
|
+
butlerSessionId: string;
|
|
12
|
+
transcriptLineCount: number;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export interface BuildButlerFollowUpEvaluationInstructionInput {
|
|
16
|
+
providerId: "codex" | "claude-code";
|
|
17
|
+
project: ButlerProject;
|
|
18
|
+
sessionId: string;
|
|
19
|
+
butlerSessionId: string;
|
|
20
|
+
sessionTitle: string | null;
|
|
21
|
+
objective: string;
|
|
22
|
+
completionCriteria: string;
|
|
23
|
+
runningState: SessionRunningState | null;
|
|
24
|
+
messageCount: number;
|
|
25
|
+
lastMessageAt: string | null;
|
|
26
|
+
autoContinueCount: number;
|
|
27
|
+
maxAutoContinueCount: number;
|
|
28
|
+
lastAutomationSummary: string | null;
|
|
29
|
+
latestAssistantText: string | null;
|
|
30
|
+
transcriptLines: string[];
|
|
31
|
+
}
|
|
32
|
+
export declare class ButlerFollowUpEvaluationInstructionAdapter {
|
|
33
|
+
buildInstruction(input: BuildButlerFollowUpEvaluationInstructionInput): ButlerFollowUpEvaluationInstructionEnvelope;
|
|
34
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
const OUTPUT_CONTRACT_VERSION = "butler-follow-up-evaluation-v1";
|
|
2
|
+
export class ButlerFollowUpEvaluationInstructionAdapter {
|
|
3
|
+
buildInstruction(input) {
|
|
4
|
+
const transcript = input.transcriptLines.length > 0
|
|
5
|
+
? input.transcriptLines.join("\n")
|
|
6
|
+
: "- 最近没有可用消息,请保守判断,并明确说明缺口。";
|
|
7
|
+
const prompt = [
|
|
8
|
+
"你现在是代码助手的后台跟进评估器,不负责和用户闲聊,也不负责直接开发。",
|
|
9
|
+
"你的唯一职责是判断:当前开发会话是否已经真正完成用户目标,是否必须等用户决定,还是应该继续自动推动。",
|
|
10
|
+
"禁止用套话凑结论,禁止只看最后一句就草率下判断。要结合目标、当前运行态和最近消息整体判断。",
|
|
11
|
+
"如果目标或上下文里提到了 spec,完成标准只能按 spec 明确要求的必做项判断。",
|
|
12
|
+
"不要把“建议下一步”“最佳实践”“可选优化”“顺手补一下”这类建议项扩成新的开发范围。",
|
|
13
|
+
"如果没有 spec,就先从目标和最近消息里归纳一句当前核心任务,后续只围绕这个核心任务判断是否完成。",
|
|
14
|
+
"除非目标本身明确要求,否则重构、补测试、补体验优化、顺手整理代码都不是必须完成条件。",
|
|
15
|
+
"如果信息不足,可以明确说信息不足;但只有在真的缺关键决策信息时,才返回 waiting_user。",
|
|
16
|
+
"如果已经达到预设的自动推进轮数上限,你不能再通过新增目标来继续扩会话范围。",
|
|
17
|
+
"",
|
|
18
|
+
"判断标准:",
|
|
19
|
+
"1. 只有目标已经实质完成,而且满足预设结束条件,才返回 completed;不能把建议项没做当成未完成。",
|
|
20
|
+
"2. 只有确实需要用户做选择、补业务信息、确认高风险操作,或者已经达到自动推进轮数上限时,才返回 waiting_user。",
|
|
21
|
+
"3. 只要目标还没完成、而且继续推进不会越权,就返回 continue,并给出下一条要发给开发会话的明确中文指令。",
|
|
22
|
+
"4. 只有当前上下文已经无法可靠判断,或者会话明显坏掉到无法继续时,才返回 failed。",
|
|
23
|
+
"",
|
|
24
|
+
"输出要求:",
|
|
25
|
+
"- 全部使用中文。",
|
|
26
|
+
"- 先写一小段中文结论,控制在 2 句内。",
|
|
27
|
+
"- 最后必须补一个 JSON 代码块,字段必须完整。",
|
|
28
|
+
"- decision 只能是 continue / waiting_user / completed / failed。",
|
|
29
|
+
"- continuePrompt 必须是要发给开发会话的下一条中文消息;decision 不是 continue 时填 null。",
|
|
30
|
+
"- waitingReason 只在 decision=waiting_user 时填写,其它情况填 null。",
|
|
31
|
+
"",
|
|
32
|
+
`项目名称:${input.project.name}`,
|
|
33
|
+
`项目路径:${input.project.repoRoot}`,
|
|
34
|
+
`代码助手会话 ID:${input.butlerSessionId}`,
|
|
35
|
+
`真实会话 ID:${input.sessionId}`,
|
|
36
|
+
`会话标题:${input.sessionTitle ?? "未命名会话"}`,
|
|
37
|
+
`用户目标:${input.objective}`,
|
|
38
|
+
`预设结束条件:${input.completionCriteria}`,
|
|
39
|
+
`当前运行态:${input.runningState ?? "未知"}`,
|
|
40
|
+
`当前消息数:${input.messageCount}`,
|
|
41
|
+
`最近消息时间:${input.lastMessageAt ?? "未知"}`,
|
|
42
|
+
`历史自动推进次数:${input.autoContinueCount}`,
|
|
43
|
+
`预设最多自动推进轮数:${input.maxAutoContinueCount}`,
|
|
44
|
+
`剩余自动推进轮数:${Math.max(input.maxAutoContinueCount - input.autoContinueCount, 0)}`,
|
|
45
|
+
`上一轮自动化摘要:${input.lastAutomationSummary?.trim() || "无"}`,
|
|
46
|
+
`最近一条助手结论:${input.latestAssistantText?.trim() || "无"}`,
|
|
47
|
+
"",
|
|
48
|
+
"最近消息摘录:",
|
|
49
|
+
transcript,
|
|
50
|
+
"",
|
|
51
|
+
"最终输出格式:",
|
|
52
|
+
"```json",
|
|
53
|
+
JSON.stringify({
|
|
54
|
+
decision: "continue",
|
|
55
|
+
summary: "一句中文结论",
|
|
56
|
+
waitingReason: null,
|
|
57
|
+
continuePrompt: "继续未完成的开发工作,先核对当前目标还有哪些没做完,然后直接补齐,不要只做总结。",
|
|
58
|
+
riskLevel: "medium"
|
|
59
|
+
}, null, 2),
|
|
60
|
+
"```",
|
|
61
|
+
"riskLevel 只能是 low / medium / high。"
|
|
62
|
+
].join("\n");
|
|
63
|
+
return {
|
|
64
|
+
providerId: input.providerId,
|
|
65
|
+
outputContractVersion: OUTPUT_CONTRACT_VERSION,
|
|
66
|
+
prompt,
|
|
67
|
+
metadata: {
|
|
68
|
+
projectId: input.project.id,
|
|
69
|
+
projectName: input.project.name,
|
|
70
|
+
sessionId: input.sessionId,
|
|
71
|
+
butlerSessionId: input.butlerSessionId,
|
|
72
|
+
transcriptLineCount: input.transcriptLines.length
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=butler-follow-up-evaluation-instruction-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"butler-follow-up-evaluation-instruction-adapter.js","sourceRoot":"","sources":["../../../../src/modules/butler/butler-follow-up-evaluation-instruction-adapter.ts"],"names":[],"mappings":"AAEA,MAAM,uBAAuB,GAAG,gCAAgC,CAAC;AAuCjE,MAAM,OAAO,0CAA0C;IACrD,gBAAgB,CACd,KAAoD;QAEpD,MAAM,UAAU,GACd,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;YAC9B,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,CAAC,CAAC,2BAA2B,CAAC;QAClC,MAAM,MAAM,GAAG;YACb,qCAAqC;YACrC,oDAAoD;YACpD,+CAA+C;YAC/C,4CAA4C;YAC5C,6CAA6C;YAC7C,oDAAoD;YACpD,4CAA4C;YAC5C,mDAAmD;YACnD,uCAAuC;YACvC,EAAE;YACF,OAAO;YACP,uDAAuD;YACvD,gEAAgE;YAChE,2DAA2D;YAC3D,+CAA+C;YAC/C,EAAE;YACF,OAAO;YACP,WAAW;YACX,uBAAuB;YACvB,4BAA4B;YAC5B,8DAA8D;YAC9D,mEAAmE;YACnE,0DAA0D;YAC1D,EAAE;YACF,QAAQ,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;YAC5B,QAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE;YAChC,aAAa,KAAK,CAAC,eAAe,EAAE;YACpC,WAAW,KAAK,CAAC,SAAS,EAAE;YAC5B,QAAQ,KAAK,CAAC,YAAY,IAAI,OAAO,EAAE;YACvC,QAAQ,KAAK,CAAC,SAAS,EAAE;YACzB,UAAU,KAAK,CAAC,kBAAkB,EAAE;YACpC,SAAS,KAAK,CAAC,YAAY,IAAI,IAAI,EAAE;YACrC,SAAS,KAAK,CAAC,YAAY,EAAE;YAC7B,UAAU,KAAK,CAAC,aAAa,IAAI,IAAI,EAAE;YACvC,YAAY,KAAK,CAAC,iBAAiB,EAAE;YACrC,cAAc,KAAK,CAAC,oBAAoB,EAAE;YAC1C,YAAY,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE;YAC/E,YAAY,KAAK,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE;YACxD,YAAY,KAAK,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE;YACtD,EAAE;YACF,SAAS;YACT,UAAU;YACV,EAAE;YACF,SAAS;YACT,SAAS;YACT,IAAI,CAAC,SAAS,CACZ;gBACE,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,QAAQ;gBACjB,aAAa,EAAE,IAAI;gBACnB,cAAc,EAAE,0CAA0C;gBAC1D,SAAS,EAAE,QAAQ;aACpB,EACD,IAAI,EACJ,CAAC,CACF;YACD,KAAK;YACL,oCAAoC;SACrC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,OAAO;YACL,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,qBAAqB,EAAE,uBAAuB;YAC9C,MAAM;YACN,QAAQ,EAAE;gBACR,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;gBAC3B,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;gBAC/B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,mBAAmB,EAAE,KAAK,CAAC,eAAe,CAAC,MAAM;aAClD;SACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ButlerFollowUpService } from "./butler-follow-up-service.js";
|
|
2
|
+
interface ButlerFollowUpSchedulerLogger {
|
|
3
|
+
error(message: string, detail?: unknown): void;
|
|
4
|
+
}
|
|
5
|
+
interface ButlerFollowUpSchedulerOptions {
|
|
6
|
+
intervalMs?: number;
|
|
7
|
+
now?: () => string;
|
|
8
|
+
logger?: ButlerFollowUpSchedulerLogger;
|
|
9
|
+
}
|
|
10
|
+
export declare class ButlerFollowUpScheduler {
|
|
11
|
+
private readonly butlerFollowUpService;
|
|
12
|
+
private readonly intervalMs;
|
|
13
|
+
private readonly now;
|
|
14
|
+
private readonly logger;
|
|
15
|
+
private timer;
|
|
16
|
+
private ticking;
|
|
17
|
+
constructor(butlerFollowUpService: Pick<ButlerFollowUpService, "runDueTasks">, options?: ButlerFollowUpSchedulerOptions);
|
|
18
|
+
start(): void;
|
|
19
|
+
dispose(): Promise<void>;
|
|
20
|
+
runOnce(): Promise<void>;
|
|
21
|
+
private tick;
|
|
22
|
+
}
|
|
23
|
+
export {};
|