@jingyi0605/codingns 0.3.5 → 0.3.6

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.
Files changed (140) hide show
  1. package/README.md +13 -0
  2. package/bin/codingns.mjs +880 -9
  3. package/dist/public/assets/{TerminalPage-CgrfstRm.js → TerminalPage-D00S4KM6.js} +16 -16
  4. package/dist/public/assets/index-BlOinYqR.js +122 -0
  5. package/dist/public/assets/index-Dg_7g6lA.css +1 -0
  6. package/dist/public/index.html +2 -2
  7. package/dist/server/config/opencode-base-url-resolver.d.ts +7 -0
  8. package/dist/server/config/opencode-base-url-resolver.js +48 -11
  9. package/dist/server/config/opencode-base-url-resolver.js.map +1 -1
  10. package/dist/server/config/opencode-system-probe-helper-client.d.ts +4 -0
  11. package/dist/server/config/opencode-system-probe-helper-client.js +29 -0
  12. package/dist/server/config/opencode-system-probe-helper-client.js.map +1 -1
  13. package/dist/server/config/opencode-system-probe-helper-process.d.ts +12 -0
  14. package/dist/server/config/opencode-system-probe-helper-process.js +34 -7
  15. package/dist/server/config/opencode-system-probe-helper-process.js.map +1 -1
  16. package/dist/server/modules/assistant-capability/assistant-capability-controller.d.ts +144 -0
  17. package/dist/server/modules/assistant-capability/assistant-capability-controller.js +242 -1
  18. package/dist/server/modules/assistant-capability/assistant-capability-controller.js.map +1 -1
  19. package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +133 -2
  20. package/dist/server/modules/assistant-capability/assistant-capability-service.js +395 -2
  21. package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -1
  22. package/dist/server/modules/butler/butler-inbox-instruction-adapter.js +7 -6
  23. package/dist/server/modules/butler/butler-inbox-instruction-adapter.js.map +1 -1
  24. package/dist/server/modules/butler/butler-workspace-context.js +24 -13
  25. package/dist/server/modules/butler/butler-workspace-context.js.map +1 -1
  26. package/dist/server/modules/debug-target/debug-target-controller.d.ts +13 -0
  27. package/dist/server/modules/debug-target/debug-target-controller.js +77 -2
  28. package/dist/server/modules/debug-target/debug-target-controller.js.map +1 -1
  29. package/dist/server/modules/debug-target/debug-target-service.d.ts +11 -2
  30. package/dist/server/modules/debug-target/debug-target-service.js +138 -3
  31. package/dist/server/modules/debug-target/debug-target-service.js.map +1 -1
  32. package/dist/server/modules/git/git-command-helper-client.d.ts +2 -0
  33. package/dist/server/modules/git/git-command-helper-client.js +52 -3
  34. package/dist/server/modules/git/git-command-helper-client.js.map +1 -1
  35. package/dist/server/modules/git/git-command-helper-process.js +62 -9
  36. package/dist/server/modules/git/git-command-helper-process.js.map +1 -1
  37. package/dist/server/modules/git/git-command-runner.d.ts +1 -0
  38. package/dist/server/modules/git/git-command-runner.js +25 -0
  39. package/dist/server/modules/git/git-command-runner.js.map +1 -1
  40. package/dist/server/modules/git/git-controller.js +8 -7
  41. package/dist/server/modules/git/git-controller.js.map +1 -1
  42. package/dist/server/modules/git/git-read-service.d.ts +7 -7
  43. package/dist/server/modules/git/git-read-service.js +41 -24
  44. package/dist/server/modules/git/git-read-service.js.map +1 -1
  45. package/dist/server/modules/model-switch/cc-switch-adapter.js +6 -2
  46. package/dist/server/modules/model-switch/cc-switch-adapter.js.map +1 -1
  47. package/dist/server/modules/provider/codex-model-options.js +2 -3
  48. package/dist/server/modules/provider/codex-model-options.js.map +1 -1
  49. package/dist/server/modules/provider/opencode-model-options.js +2 -3
  50. package/dist/server/modules/provider/opencode-model-options.js.map +1 -1
  51. package/dist/server/modules/provider/provider-discovery-helper-client.d.ts +9 -4
  52. package/dist/server/modules/provider/provider-discovery-helper-client.js +87 -11
  53. package/dist/server/modules/provider/provider-discovery-helper-client.js.map +1 -1
  54. package/dist/server/modules/provider/provider-discovery-helper-process.js +52 -47
  55. package/dist/server/modules/provider/provider-discovery-helper-process.js.map +1 -1
  56. package/dist/server/modules/provider/provider-discovery-runtime.d.ts +4 -0
  57. package/dist/server/modules/provider/provider-discovery-runtime.js +65 -0
  58. package/dist/server/modules/provider/provider-discovery-runtime.js.map +1 -0
  59. package/dist/server/modules/sessions/session-history-service.d.ts +5 -2
  60. package/dist/server/modules/sessions/session-history-service.js +214 -26
  61. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  62. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +2 -0
  63. package/dist/server/modules/sessions/session-live-runtime-service.js +67 -23
  64. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  65. package/dist/server/modules/skills/builtin-skill-service.d.ts +12 -0
  66. package/dist/server/modules/skills/builtin-skill-service.js +49 -0
  67. package/dist/server/modules/skills/builtin-skill-service.js.map +1 -0
  68. package/dist/server/modules/skills/builtin-skills/codingns-assistant/SKILL.md +75 -0
  69. package/dist/server/modules/skills/builtin-skills/codingns-assistant/agents/openai.yaml +4 -0
  70. package/dist/server/modules/skills/builtin-skills/codingns-assistant/references/cli-workflow.md +130 -0
  71. package/dist/server/modules/skills/skill-manager-service.d.ts +7 -0
  72. package/dist/server/modules/skills/skill-manager-service.js +98 -0
  73. package/dist/server/modules/skills/skill-manager-service.js.map +1 -1
  74. package/dist/server/modules/tailscale/tailscale-helper-client.d.ts +1 -0
  75. package/dist/server/modules/tailscale/tailscale-helper-client.js +12 -0
  76. package/dist/server/modules/tailscale/tailscale-helper-client.js.map +1 -1
  77. package/dist/server/modules/tasks/task-helper-client.d.ts +5 -0
  78. package/dist/server/modules/tasks/task-helper-client.js +45 -0
  79. package/dist/server/modules/tasks/task-helper-client.js.map +1 -1
  80. package/dist/server/modules/tasks/task-helper-process-handlers.d.ts +10 -3
  81. package/dist/server/modules/tasks/task-helper-process-handlers.js +7 -5
  82. package/dist/server/modules/tasks/task-helper-process-handlers.js.map +1 -1
  83. package/dist/server/modules/tasks/task-helper-process.js +11 -1
  84. package/dist/server/modules/tasks/task-helper-process.js.map +1 -1
  85. package/dist/server/modules/tasks/task-lane-executors.js +2 -2
  86. package/dist/server/modules/tasks/task-lane-executors.js.map +1 -1
  87. package/dist/server/modules/tasks/task-types.d.ts +1 -0
  88. package/dist/server/modules/tasks/task-types.js +1 -0
  89. package/dist/server/modules/tasks/task-types.js.map +1 -1
  90. package/dist/server/modules/terminal/command-template-service.d.ts +2 -2
  91. package/dist/server/modules/terminal/command-template-service.js +4 -4
  92. package/dist/server/modules/terminal/command-template-service.js.map +1 -1
  93. package/dist/server/modules/terminal/runtime/terminal-log-writer-client.js +1 -1
  94. package/dist/server/modules/terminal/runtime/terminal-log-writer-client.js.map +1 -1
  95. package/dist/server/modules/terminal/runtime/terminal-log-writer-process.js +160 -11
  96. package/dist/server/modules/terminal/runtime/terminal-log-writer-process.js.map +1 -1
  97. package/dist/server/modules/terminal/template-port-runtime.d.ts +1 -1
  98. package/dist/server/modules/terminal/template-port-runtime.js +87 -37
  99. package/dist/server/modules/terminal/template-port-runtime.js.map +1 -1
  100. package/dist/server/modules/terminal/terminal-service.d.ts +4 -0
  101. package/dist/server/modules/terminal/terminal-service.js +35 -1
  102. package/dist/server/modules/terminal/terminal-service.js.map +1 -1
  103. package/dist/server/modules/workbench/workbench-service.js +3 -3
  104. package/dist/server/modules/workbench/workbench-service.js.map +1 -1
  105. package/dist/server/modules/workbench/workspace-panel-snapshot-service.d.ts +1 -0
  106. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js +118 -39
  107. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js.map +1 -1
  108. package/dist/server/modules/workspace/workspace-code-composition.d.ts +1 -0
  109. package/dist/server/modules/workspace/workspace-code-composition.js +183 -1
  110. package/dist/server/modules/workspace/workspace-code-composition.js.map +1 -1
  111. package/dist/server/modules/workspace/workspace-service.js +54 -17
  112. package/dist/server/modules/workspace/workspace-service.js.map +1 -1
  113. package/dist/server/modules/worktree/worktree-cleanup-service.d.ts +1 -1
  114. package/dist/server/modules/worktree/worktree-cleanup-service.js +22 -17
  115. package/dist/server/modules/worktree/worktree-cleanup-service.js.map +1 -1
  116. package/dist/server/modules/worktree/worktree-controller.js +6 -5
  117. package/dist/server/modules/worktree/worktree-controller.js.map +1 -1
  118. package/dist/server/modules/worktree/worktree-manager.d.ts +1 -1
  119. package/dist/server/modules/worktree/worktree-manager.js +26 -19
  120. package/dist/server/modules/worktree/worktree-manager.js.map +1 -1
  121. package/dist/server/modules/worktree/worktree-merge-service.d.ts +2 -2
  122. package/dist/server/modules/worktree/worktree-merge-service.js +34 -27
  123. package/dist/server/modules/worktree/worktree-merge-service.js.map +1 -1
  124. package/dist/server/modules/worktree/worktree-sync-service.d.ts +1 -1
  125. package/dist/server/modules/worktree/worktree-sync-service.js +5 -3
  126. package/dist/server/modules/worktree/worktree-sync-service.js.map +1 -1
  127. package/dist/server/routes/assistant.js +24 -0
  128. package/dist/server/routes/assistant.js.map +1 -1
  129. package/dist/server/server/create-server.js +16 -1
  130. package/dist/server/server/create-server.js.map +1 -1
  131. package/dist/server/shared/http/request-abort.d.ts +2 -0
  132. package/dist/server/shared/http/request-abort.js +38 -0
  133. package/dist/server/shared/http/request-abort.js.map +1 -0
  134. package/dist/server/ws/workbench-ws-hub.d.ts +1 -0
  135. package/dist/server/ws/workbench-ws-hub.js +25 -3
  136. package/dist/server/ws/workbench-ws-hub.js.map +1 -1
  137. package/package.json +1 -1
  138. package/scripts/postinstall.mjs +33 -0
  139. package/dist/public/assets/index-Cek6u0b9.css +0 -1
  140. package/dist/public/assets/index-THHY79si.js +0 -122
@@ -27,6 +27,21 @@ interface AssistantTerminalHistoryQuery {
27
27
  beforeSeq?: string;
28
28
  limit?: string;
29
29
  }
30
+ interface AssistantDebugTargetParams {
31
+ targetId: string;
32
+ }
33
+ interface AssistantDebugRuntimeParams {
34
+ runtimeId: string;
35
+ }
36
+ interface AssistantDebugRuntimeHistoryQuery {
37
+ limit?: string;
38
+ }
39
+ interface AssistantWorkspaceBrowseQuery {
40
+ path?: string;
41
+ }
42
+ interface AssistantWorktreeTreeQuery {
43
+ rootWorkspaceId?: string;
44
+ }
30
45
  interface AssistantSendMessageBody {
31
46
  content?: string;
32
47
  clientRequestId?: string | null;
@@ -43,6 +58,62 @@ interface AssistantForkBody {
43
58
  interface AssistantTerminalInputBody {
44
59
  content?: string;
45
60
  }
61
+ interface AssistantCreateWorkspaceDirectoryBody {
62
+ parentPath?: string;
63
+ directoryName?: string;
64
+ }
65
+ interface AssistantImportWorkspaceBody {
66
+ path?: string;
67
+ name?: string | null;
68
+ }
69
+ interface AssistantCloneWorkspaceBody {
70
+ repositoryUrl?: string;
71
+ parentPath?: string;
72
+ directoryName?: string | null;
73
+ name?: string | null;
74
+ auth?: {
75
+ mode?: "none";
76
+ } | {
77
+ mode: "basic";
78
+ username?: string;
79
+ password?: string;
80
+ } | {
81
+ mode: "token";
82
+ username?: string;
83
+ token?: string;
84
+ };
85
+ }
86
+ interface AssistantReorderWorkspacesBody {
87
+ workspaceIds?: string[];
88
+ }
89
+ interface AssistantWorkspaceParams {
90
+ workspaceId: string;
91
+ }
92
+ interface AssistantWorkspaceNavigationStateBody {
93
+ collapsed?: unknown;
94
+ backgroundColor?: unknown;
95
+ }
96
+ interface AssistantCreateWorktreeBody {
97
+ sourceWorkspaceId?: string;
98
+ branchName?: string;
99
+ displayName?: string | null;
100
+ baseRef?: string | null;
101
+ }
102
+ interface AssistantWorktreeCleanupBody {
103
+ deleteBranch?: boolean;
104
+ }
105
+ interface AssistantAnalyzeDebugTargetBody {
106
+ workspaceId?: string;
107
+ rootPath?: string;
108
+ commandHints?: unknown;
109
+ }
110
+ interface AssistantDebugTargetLaunchPlanBody {
111
+ portRequests?: unknown;
112
+ }
113
+ interface AssistantRunDebugTargetBody extends AssistantDebugTargetLaunchPlanBody {
114
+ shell?: string;
115
+ runtimeType?: string | null;
116
+ }
46
117
  export declare class AssistantCapabilityController {
47
118
  private readonly assistantCapabilityService;
48
119
  constructor(assistantCapabilityService: AssistantCapabilityService);
@@ -85,5 +156,78 @@ export declare class AssistantCapabilityController {
85
156
  Params: AssistantTerminalParams;
86
157
  Body: AssistantTerminalInputBody;
87
158
  }>, reply: FastifyReply) => Promise<void>;
159
+ readonly closeTerminal: (request: FastifyRequest<{
160
+ Params: AssistantTerminalParams;
161
+ }>, reply: FastifyReply) => Promise<void>;
162
+ readonly listWorkspaces: (_request: FastifyRequest, reply: FastifyReply) => Promise<void>;
163
+ readonly browseWorkspaces: (request: FastifyRequest<{
164
+ Querystring: AssistantWorkspaceBrowseQuery;
165
+ }>, reply: FastifyReply) => Promise<void>;
166
+ readonly createWorkspaceDirectory: (request: FastifyRequest<{
167
+ Body: AssistantCreateWorkspaceDirectoryBody;
168
+ }>, reply: FastifyReply) => Promise<void>;
169
+ readonly importWorkspace: (request: FastifyRequest<{
170
+ Body: AssistantImportWorkspaceBody;
171
+ }>, reply: FastifyReply) => Promise<void>;
172
+ readonly cloneWorkspace: (request: FastifyRequest<{
173
+ Body: AssistantCloneWorkspaceBody;
174
+ }>, reply: FastifyReply) => Promise<void>;
175
+ readonly reorderWorkspaces: (request: FastifyRequest<{
176
+ Body: AssistantReorderWorkspacesBody;
177
+ }>, reply: FastifyReply) => Promise<void>;
178
+ readonly getWorkspaceManagementSummary: (request: FastifyRequest<{
179
+ Params: AssistantWorkspaceParams;
180
+ }>, reply: FastifyReply) => Promise<void>;
181
+ readonly updateWorkspaceNavigationState: (request: FastifyRequest<{
182
+ Params: AssistantWorkspaceParams;
183
+ Body: AssistantWorkspaceNavigationStateBody;
184
+ }>, reply: FastifyReply) => Promise<void>;
185
+ readonly removeWorkspace: (request: FastifyRequest<{
186
+ Params: AssistantWorkspaceParams;
187
+ }>, reply: FastifyReply) => Promise<void>;
188
+ readonly getWorktreeTree: (request: FastifyRequest<{
189
+ Querystring: AssistantWorktreeTreeQuery;
190
+ }>, reply: FastifyReply) => Promise<void>;
191
+ readonly createWorktree: (request: FastifyRequest<{
192
+ Body: AssistantCreateWorktreeBody;
193
+ }>, reply: FastifyReply) => Promise<void>;
194
+ readonly getWorktreeMergePreview: (request: FastifyRequest<{
195
+ Params: AssistantWorkspaceParams;
196
+ }>, reply: FastifyReply) => Promise<void>;
197
+ readonly mergeWorktreeIntoParent: (request: FastifyRequest<{
198
+ Params: AssistantWorkspaceParams;
199
+ }>, reply: FastifyReply) => Promise<void>;
200
+ readonly cleanupWorktree: (request: FastifyRequest<{
201
+ Params: AssistantWorkspaceParams;
202
+ Body: AssistantWorktreeCleanupBody;
203
+ }>, reply: FastifyReply) => Promise<void>;
204
+ readonly getDebugCompatibilityMatrix: (_request: FastifyRequest, reply: FastifyReply) => Promise<void>;
205
+ readonly analyzeDebugTarget: (request: FastifyRequest<{
206
+ Body: AssistantAnalyzeDebugTargetBody;
207
+ }>, reply: FastifyReply) => Promise<void>;
208
+ readonly getDebugFrameworkAnalysis: (request: FastifyRequest<{
209
+ Params: AssistantDebugTargetParams;
210
+ }>, reply: FastifyReply) => Promise<void>;
211
+ readonly refreshDebugFrameworkAnalysis: (request: FastifyRequest<{
212
+ Params: AssistantDebugTargetParams;
213
+ }>, reply: FastifyReply) => Promise<void>;
214
+ readonly createDebugLaunchPlan: (request: FastifyRequest<{
215
+ Params: AssistantDebugTargetParams;
216
+ Body: AssistantDebugTargetLaunchPlanBody;
217
+ }>, reply: FastifyReply) => Promise<void>;
218
+ readonly runDebugTarget: (request: FastifyRequest<{
219
+ Params: AssistantDebugTargetParams;
220
+ Body: AssistantRunDebugTargetBody;
221
+ }>, reply: FastifyReply) => Promise<void>;
222
+ readonly getLatestDebugRuntime: (request: FastifyRequest<{
223
+ Params: AssistantDebugTargetParams;
224
+ }>, reply: FastifyReply) => Promise<void>;
225
+ readonly listDebugRuntimes: (request: FastifyRequest<{
226
+ Params: AssistantDebugTargetParams;
227
+ Querystring: AssistantDebugRuntimeHistoryQuery;
228
+ }>, reply: FastifyReply) => Promise<void>;
229
+ readonly getDebugRuntime: (request: FastifyRequest<{
230
+ Params: AssistantDebugRuntimeParams;
231
+ }>, reply: FastifyReply) => Promise<void>;
88
232
  }
89
233
  export {};
@@ -79,7 +79,7 @@ export class AssistantCapabilityController {
79
79
  reply.send(await this.assistantCapabilityService.readTerminalHistory({
80
80
  terminalId: request.params.terminalId,
81
81
  beforeSeq: normalizeOptionalInteger(request.query.beforeSeq, "beforeSeq"),
82
- limit: normalizePositiveInteger(request.query.limit, 20, 100, "limit")
82
+ limit: normalizePositiveIntegerWithUpperClamp(request.query.limit, 20, 100, "limit")
83
83
  }));
84
84
  };
85
85
  sendTerminalInput = async (request, reply) => {
@@ -88,6 +88,135 @@ export class AssistantCapabilityController {
88
88
  content: requireNonEmptyText(request.body.content, "content", "终端输入必须提供 content")
89
89
  }));
90
90
  };
91
+ closeTerminal = async (request, reply) => {
92
+ reply.send(await this.assistantCapabilityService.closeTerminal(request.params.terminalId));
93
+ };
94
+ listWorkspaces = async (_request, reply) => {
95
+ reply.send(this.assistantCapabilityService.listWorkspaces());
96
+ };
97
+ browseWorkspaces = async (request, reply) => {
98
+ reply.send(this.assistantCapabilityService.browseWorkspaces(normalizeNullableText(request.query.path)));
99
+ };
100
+ createWorkspaceDirectory = async (request, reply) => {
101
+ reply.send(this.assistantCapabilityService.createWorkspaceDirectory({
102
+ parentPath: requireNonEmptyText(request.body.parentPath, "parentPath", "创建目录必须提供 parentPath"),
103
+ directoryName: requireNonEmptyText(request.body.directoryName, "directoryName", "创建目录必须提供 directoryName")
104
+ }));
105
+ };
106
+ importWorkspace = async (request, reply) => {
107
+ reply.send(this.assistantCapabilityService.importWorkspace({
108
+ path: requireNonEmptyText(request.body.path, "path", "导入工作区必须提供 path"),
109
+ name: normalizeNullableText(request.body.name)
110
+ }));
111
+ };
112
+ cloneWorkspace = async (request, reply) => {
113
+ reply.send(await this.assistantCapabilityService.cloneWorkspace({
114
+ repositoryUrl: requireNonEmptyText(request.body.repositoryUrl, "repositoryUrl", "克隆工作区必须提供 repositoryUrl"),
115
+ parentPath: requireNonEmptyText(request.body.parentPath, "parentPath", "克隆工作区必须提供 parentPath"),
116
+ directoryName: normalizeNullableText(request.body.directoryName),
117
+ name: normalizeNullableText(request.body.name),
118
+ auth: request.body.auth
119
+ }));
120
+ };
121
+ reorderWorkspaces = async (request, reply) => {
122
+ reply.send(this.assistantCapabilityService.reorderWorkspaces(Array.isArray(request.body.workspaceIds) ? request.body.workspaceIds : []));
123
+ };
124
+ getWorkspaceManagementSummary = async (request, reply) => {
125
+ reply.send(await this.assistantCapabilityService.getWorkspaceManagementSummary(request.params.workspaceId));
126
+ };
127
+ updateWorkspaceNavigationState = async (request, reply) => {
128
+ const input = {
129
+ workspaceId: request.params.workspaceId,
130
+ userId: requireUserId(request)
131
+ };
132
+ if (typeof request.body?.collapsed === "boolean") {
133
+ input.collapsed = request.body.collapsed;
134
+ }
135
+ if (request.body && Object.prototype.hasOwnProperty.call(request.body, "backgroundColor")) {
136
+ const rawBackgroundColor = request.body.backgroundColor;
137
+ if (rawBackgroundColor === null || typeof rawBackgroundColor === "string") {
138
+ input.backgroundColor = rawBackgroundColor;
139
+ }
140
+ }
141
+ reply.send(this.assistantCapabilityService.updateWorkspaceNavigationState(input));
142
+ };
143
+ removeWorkspace = async (request, reply) => {
144
+ reply.send(this.assistantCapabilityService.removeWorkspace(request.params.workspaceId));
145
+ };
146
+ getWorktreeTree = async (request, reply) => {
147
+ const rootWorkspaceId = normalizeNullableText(request.query.rootWorkspaceId);
148
+ if (!rootWorkspaceId) {
149
+ throw new AppError({
150
+ statusCode: 400,
151
+ errorCode: "INVALID_INPUT",
152
+ detail: "查询工作树必须提供 rootWorkspaceId",
153
+ field: "rootWorkspaceId"
154
+ });
155
+ }
156
+ reply.send(await this.assistantCapabilityService.getWorktreeTree(rootWorkspaceId));
157
+ };
158
+ createWorktree = async (request, reply) => {
159
+ reply.send(await this.assistantCapabilityService.createWorktree({
160
+ sourceWorkspaceId: requireNonEmptyText(request.body.sourceWorkspaceId, "sourceWorkspaceId", "创建工作树必须提供 sourceWorkspaceId"),
161
+ branchName: requireNonEmptyText(request.body.branchName, "branchName", "创建工作树必须提供 branchName"),
162
+ displayName: normalizeNullableText(request.body.displayName),
163
+ baseRef: normalizeNullableText(request.body.baseRef)
164
+ }));
165
+ };
166
+ getWorktreeMergePreview = async (request, reply) => {
167
+ reply.send(await this.assistantCapabilityService.getWorktreeMergePreview(request.params.workspaceId));
168
+ };
169
+ mergeWorktreeIntoParent = async (request, reply) => {
170
+ reply.send(await this.assistantCapabilityService.mergeWorktreeIntoParent(request.params.workspaceId));
171
+ };
172
+ cleanupWorktree = async (request, reply) => {
173
+ reply.send(await this.assistantCapabilityService.cleanupWorktree(request.params.workspaceId, requireUserId(request), {
174
+ deleteBranch: request.body?.deleteBranch === true
175
+ }));
176
+ };
177
+ getDebugCompatibilityMatrix = async (_request, reply) => {
178
+ reply.send(this.assistantCapabilityService.getDebugCompatibilityMatrix());
179
+ };
180
+ analyzeDebugTarget = async (request, reply) => {
181
+ reply.send(this.assistantCapabilityService.analyzeDebugTarget({
182
+ workspaceId: requireNonEmptyText(request.body.workspaceId, "workspaceId", "分析调试目标必须提供 workspaceId"),
183
+ rootPath: requireNonEmptyText(request.body.rootPath, "rootPath", "分析调试目标必须提供 rootPath"),
184
+ commandHints: normalizeCommandHints(request.body.commandHints)
185
+ }));
186
+ };
187
+ getDebugFrameworkAnalysis = async (request, reply) => {
188
+ reply.send(this.assistantCapabilityService.getDebugFrameworkAnalysis(request.params.targetId));
189
+ };
190
+ refreshDebugFrameworkAnalysis = async (request, reply) => {
191
+ reply.send(this.assistantCapabilityService.refreshDebugFrameworkAnalysis(request.params.targetId));
192
+ };
193
+ createDebugLaunchPlan = async (request, reply) => {
194
+ reply.send(await this.assistantCapabilityService.createDebugLaunchPlan({
195
+ targetId: request.params.targetId,
196
+ portRequests: normalizeDebugPortRequests(request.body?.portRequests)
197
+ }));
198
+ };
199
+ runDebugTarget = async (request, reply) => {
200
+ reply.send(await this.assistantCapabilityService.runDebugTarget({
201
+ targetId: request.params.targetId,
202
+ userId: requireUserId(request),
203
+ shell: normalizeNullableText(request.body?.shell),
204
+ runtimeType: normalizeTerminalRuntimeType(request.body?.runtimeType),
205
+ portRequests: normalizeDebugPortRequests(request.body?.portRequests)
206
+ }));
207
+ };
208
+ getLatestDebugRuntime = async (request, reply) => {
209
+ reply.send(await this.assistantCapabilityService.getLatestDebugRuntime(request.params.targetId));
210
+ };
211
+ listDebugRuntimes = async (request, reply) => {
212
+ reply.send(await this.assistantCapabilityService.listDebugRuntimes({
213
+ targetId: request.params.targetId,
214
+ limit: normalizePositiveInteger(request.query.limit, 5, 50, "limit")
215
+ }));
216
+ };
217
+ getDebugRuntime = async (request, reply) => {
218
+ reply.send(await this.assistantCapabilityService.getDebugRuntime(request.params.runtimeId));
219
+ };
91
220
  }
92
221
  function requireNonEmptyText(value, field, detail) {
93
222
  const text = value?.trim();
@@ -120,6 +249,21 @@ function normalizePositiveInteger(value, fallback, max, field) {
120
249
  }
121
250
  return parsed;
122
251
  }
252
+ function normalizePositiveIntegerWithUpperClamp(value, fallback, max, field) {
253
+ if (!value) {
254
+ return fallback;
255
+ }
256
+ const parsed = Number.parseInt(value, 10);
257
+ if (!Number.isInteger(parsed) || parsed < 1) {
258
+ throw new AppError({
259
+ statusCode: 400,
260
+ errorCode: "INVALID_INPUT",
261
+ detail: `${field} 必须是大于 0 的整数`,
262
+ field
263
+ });
264
+ }
265
+ return Math.min(parsed, max);
266
+ }
123
267
  function normalizeOptionalInteger(value, field) {
124
268
  if (!value) {
125
269
  return null;
@@ -135,4 +279,101 @@ function normalizeOptionalInteger(value, field) {
135
279
  }
136
280
  return parsed;
137
281
  }
282
+ function normalizeCommandHints(value) {
283
+ if (!Array.isArray(value)) {
284
+ return [];
285
+ }
286
+ return value
287
+ .filter((item) => typeof item === "string")
288
+ .map((item) => item.trim())
289
+ .filter(Boolean);
290
+ }
291
+ function normalizeTerminalRuntimeType(value) {
292
+ const normalized = normalizeNullableText(value);
293
+ if (!normalized) {
294
+ return null;
295
+ }
296
+ if (normalized === "embedded-pty"
297
+ || normalized === "tmux"
298
+ || normalized === "conpty-powershell"
299
+ || normalized === "conpty-cmd"
300
+ || normalized === "conpty-git-bash") {
301
+ return normalized;
302
+ }
303
+ throw new AppError({
304
+ statusCode: 400,
305
+ errorCode: "INVALID_INPUT",
306
+ detail: `不支持的终端 runtimeType:${normalized}`,
307
+ field: "runtimeType"
308
+ });
309
+ }
310
+ function normalizeDebugPortRequests(value) {
311
+ if (value === undefined || value === null) {
312
+ return [];
313
+ }
314
+ if (!Array.isArray(value)) {
315
+ throw new AppError({
316
+ statusCode: 400,
317
+ errorCode: "INVALID_INPUT",
318
+ detail: "portRequests 必须是数组",
319
+ field: "portRequests"
320
+ });
321
+ }
322
+ return value.map((item, index) => normalizeDebugPortRequestItem(item, index));
323
+ }
324
+ function normalizeDebugPortRequestItem(input, index) {
325
+ if (!input || typeof input !== "object" || Array.isArray(input)) {
326
+ throw new AppError({
327
+ statusCode: 400,
328
+ errorCode: "INVALID_INPUT",
329
+ detail: `portRequests[${index}] 必须是对象`,
330
+ field: "portRequests"
331
+ });
332
+ }
333
+ const item = input;
334
+ return {
335
+ serviceId: normalizeNullableText(item.serviceId),
336
+ role: normalizeDebugPortRequestRole(item.role),
337
+ cwd: normalizeNullableText(item.cwd),
338
+ name: normalizeNullableText(item.name),
339
+ command: normalizeNullableText(item.command),
340
+ port: normalizeDebugPortRequestPort(item.port, index)
341
+ };
342
+ }
343
+ function normalizeDebugPortRequestPort(value, index) {
344
+ if (typeof value === "number" && Number.isInteger(value)) {
345
+ return value;
346
+ }
347
+ if (typeof value === "string" && value.trim()) {
348
+ const parsed = Number.parseInt(value.trim(), 10);
349
+ if (Number.isInteger(parsed)) {
350
+ return parsed;
351
+ }
352
+ }
353
+ throw new AppError({
354
+ statusCode: 400,
355
+ errorCode: "INVALID_INPUT",
356
+ detail: `portRequests[${index}].port 必须是整数`,
357
+ field: "portRequests"
358
+ });
359
+ }
360
+ function normalizeDebugPortRequestRole(value) {
361
+ const normalized = normalizeNullableText(value);
362
+ if (!normalized) {
363
+ return null;
364
+ }
365
+ if (normalized === "frontend"
366
+ || normalized === "backend"
367
+ || normalized === "worker"
368
+ || normalized === "mock"
369
+ || normalized === "custom") {
370
+ return normalized;
371
+ }
372
+ throw new AppError({
373
+ statusCode: 400,
374
+ errorCode: "INVALID_INPUT",
375
+ detail: `不支持的调试服务角色:${normalized}`,
376
+ field: "portRequests"
377
+ });
378
+ }
138
379
  //# sourceMappingURL=assistant-capability-controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-capability-controller.js","sourceRoot":"","sources":["../../../../src/modules/assistant-capability/assistant-capability-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assistant-capability-controller.js","sourceRoot":"","sources":["../../../../src/modules/assistant-capability/assistant-capability-controller.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,14 @@
1
1
  import type { ButlerProjectService } from "../butler/butler-project-service.js";
2
2
  import type { ButlerSessionService } from "../butler/butler-session-service.js";
3
+ import type { DebugTargetPortRequest, DebugTargetService } from "../debug-target/debug-target-service.js";
3
4
  import type { SessionHistoryService } from "../sessions/session-history-service.js";
4
5
  import type { SessionLiveRuntimeService } from "../sessions/session-live-runtime-service.js";
5
6
  import type { TerminalService } from "../terminal/terminal-service.js";
7
+ import type { CloneWorkspaceInput, WorkspaceService } from "../workspace/workspace-service.js";
8
+ import type { WorktreeManager } from "../worktree/worktree-manager.js";
9
+ import type { WorktreeCleanupOptions, WorktreeCleanupService } from "../worktree/worktree-cleanup-service.js";
10
+ import type { WorktreeMergeService } from "../worktree/worktree-merge-service.js";
11
+ import type { WorktreeSyncService } from "../worktree/worktree-sync-service.js";
6
12
  type AssistantCapabilityMode = "read" | "proxy_execute";
7
13
  export interface AssistantCapabilityDescriptor {
8
14
  name: string;
@@ -16,7 +22,7 @@ export interface AssistantCapabilityReceipt<TPayload> {
16
22
  auditId: string;
17
23
  timestamp: string;
18
24
  targetRef: {
19
- kind: "project" | "session" | "terminal" | "none";
25
+ kind: "project" | "session" | "terminal" | "workspace" | "worktree" | "debug_target" | "debug_runtime" | "none";
20
26
  id: string | null;
21
27
  };
22
28
  payload: TPayload;
@@ -57,13 +63,62 @@ interface SendAssistantTerminalInput {
57
63
  terminalId: string;
58
64
  content: string;
59
65
  }
66
+ interface AnalyzeAssistantDebugTargetInput {
67
+ workspaceId: string;
68
+ rootPath: string;
69
+ commandHints?: string[];
70
+ }
71
+ interface CreateAssistantDebugLaunchPlanInput {
72
+ targetId: string;
73
+ portRequests: DebugTargetPortRequest[];
74
+ }
75
+ interface RunAssistantDebugTargetInput {
76
+ targetId: string;
77
+ userId: string;
78
+ shell?: string | null;
79
+ runtimeType?: Parameters<DebugTargetService["run"]>[0]["runtimeType"];
80
+ portRequests: DebugTargetPortRequest[];
81
+ }
82
+ interface CreateAssistantWorkspaceDirectoryInput {
83
+ parentPath: string;
84
+ directoryName: string;
85
+ }
86
+ interface ImportAssistantWorkspaceInput {
87
+ path: string;
88
+ name?: string | null;
89
+ }
90
+ interface CloneAssistantWorkspaceInput {
91
+ repositoryUrl: string;
92
+ parentPath: string;
93
+ directoryName?: string | null;
94
+ name?: string | null;
95
+ auth?: CloneWorkspaceInput["auth"];
96
+ }
97
+ interface UpdateAssistantWorkspaceNavigationStateInput {
98
+ workspaceId: string;
99
+ userId: string;
100
+ collapsed?: boolean;
101
+ backgroundColor?: string | null;
102
+ }
103
+ interface CreateAssistantWorktreeInput {
104
+ sourceWorkspaceId: string;
105
+ branchName: string;
106
+ displayName?: string | null;
107
+ baseRef?: string | null;
108
+ }
60
109
  export declare class AssistantCapabilityService {
61
110
  private readonly butlerProjectService;
62
111
  private readonly butlerSessionService;
63
112
  private readonly sessionHistoryService;
64
113
  private readonly sessionLiveRuntimeService;
65
114
  private readonly terminalService;
66
- constructor(butlerProjectService: Pick<ButlerProjectService, "list" | "getById" | "getOverview">, butlerSessionService: Pick<ButlerSessionService, "listByProject" | "ensureProjectSessionsSynced">, sessionHistoryService: Pick<SessionHistoryService, "getSession" | "readSessionHistory" | "forkSession">, sessionLiveRuntimeService: Pick<SessionLiveRuntimeService, "getSessionRuntime" | "sendLiveMessage">, terminalService: Pick<TerminalService, "listTerminals" | "readTerminalHistory" | "writeInput">);
115
+ private readonly debugTargetService;
116
+ private readonly workspaceService;
117
+ private readonly worktreeManager;
118
+ private readonly worktreeSyncService;
119
+ private readonly worktreeMergeService;
120
+ private readonly worktreeCleanupService;
121
+ constructor(butlerProjectService: Pick<ButlerProjectService, "list" | "getById" | "getOverview">, butlerSessionService: Pick<ButlerSessionService, "listByProject" | "ensureProjectSessionsSynced">, sessionHistoryService: Pick<SessionHistoryService, "getSession" | "readSessionHistory" | "forkSession">, sessionLiveRuntimeService: Pick<SessionLiveRuntimeService, "getSessionRuntime" | "sendLiveMessage">, terminalService: Pick<TerminalService, "listTerminals" | "readTerminalHistory" | "writeInput" | "closeTerminal">, debugTargetService: Pick<DebugTargetService, "analyze" | "getFrameworkAnalysis" | "refreshFrameworkAnalysis" | "createLaunchPlan" | "run" | "getLatestRuntimeDetail" | "getRecentRuntimeDetails" | "getRuntimeDetail" | "getCompatibilityMatrix">, workspaceService: Pick<WorkspaceService, "list" | "browseDirectories" | "createDirectory" | "importWorkspace" | "cloneWorkspace" | "reorderWorkspaces" | "getManagementSummary" | "removeWorkspace" | "updateNavigationState">, worktreeManager: Pick<WorktreeManager, "getTree" | "create">, worktreeSyncService: Pick<WorktreeSyncService, "syncRoot">, worktreeMergeService: Pick<WorktreeMergeService, "preview" | "apply">, worktreeCleanupService: Pick<WorktreeCleanupService, "cleanup">);
67
122
  listCapabilities(): AssistantCapabilityReceipt<{
68
123
  version: string;
69
124
  items: AssistantCapabilityDescriptor[];
@@ -110,6 +165,82 @@ export declare class AssistantCapabilityService {
110
165
  sendTerminalInput(input: SendAssistantTerminalInput): Promise<AssistantCapabilityReceipt<{
111
166
  result: Awaited<ReturnType<TerminalService["writeInput"]>>;
112
167
  }>>;
168
+ closeTerminal(terminalId: string): Promise<AssistantCapabilityReceipt<{
169
+ result: Awaited<ReturnType<TerminalService["closeTerminal"]>>;
170
+ }>>;
171
+ getDebugCompatibilityMatrix(): AssistantCapabilityReceipt<{
172
+ matrix: ReturnType<DebugTargetService["getCompatibilityMatrix"]>;
173
+ }>;
174
+ analyzeDebugTarget(input: AnalyzeAssistantDebugTargetInput): AssistantCapabilityReceipt<{
175
+ result: ReturnType<DebugTargetService["analyze"]>;
176
+ }>;
177
+ getDebugFrameworkAnalysis(targetId: string): AssistantCapabilityReceipt<{
178
+ result: ReturnType<DebugTargetService["getFrameworkAnalysis"]>;
179
+ }>;
180
+ refreshDebugFrameworkAnalysis(targetId: string): AssistantCapabilityReceipt<{
181
+ result: ReturnType<DebugTargetService["refreshFrameworkAnalysis"]>;
182
+ }>;
183
+ createDebugLaunchPlan(input: CreateAssistantDebugLaunchPlanInput): Promise<AssistantCapabilityReceipt<{
184
+ plan: Awaited<ReturnType<DebugTargetService["createLaunchPlan"]>>;
185
+ }>>;
186
+ runDebugTarget(input: RunAssistantDebugTargetInput): Promise<AssistantCapabilityReceipt<{
187
+ result: Awaited<ReturnType<DebugTargetService["run"]>>;
188
+ }>>;
189
+ getLatestDebugRuntime(targetId: string): Promise<AssistantCapabilityReceipt<{
190
+ runtime: Awaited<ReturnType<DebugTargetService["getLatestRuntimeDetail"]>>;
191
+ }>>;
192
+ listDebugRuntimes(input: {
193
+ targetId: string;
194
+ limit: number;
195
+ }): Promise<AssistantCapabilityReceipt<{
196
+ history: Awaited<ReturnType<DebugTargetService["getRecentRuntimeDetails"]>>;
197
+ }>>;
198
+ getDebugRuntime(runtimeId: string): Promise<AssistantCapabilityReceipt<{
199
+ runtime: Awaited<ReturnType<DebugTargetService["getRuntimeDetail"]>>;
200
+ }>>;
201
+ listWorkspaces(): AssistantCapabilityReceipt<{
202
+ items: ReturnType<WorkspaceService["list"]>;
203
+ }>;
204
+ browseWorkspaces(requestedPath?: string | null): AssistantCapabilityReceipt<{
205
+ result: ReturnType<WorkspaceService["browseDirectories"]>;
206
+ }>;
207
+ createWorkspaceDirectory(input: CreateAssistantWorkspaceDirectoryInput): AssistantCapabilityReceipt<{
208
+ result: ReturnType<WorkspaceService["createDirectory"]>;
209
+ }>;
210
+ importWorkspace(input: ImportAssistantWorkspaceInput): AssistantCapabilityReceipt<{
211
+ workspace: ReturnType<WorkspaceService["importWorkspace"]>;
212
+ }>;
213
+ cloneWorkspace(input: CloneAssistantWorkspaceInput): Promise<AssistantCapabilityReceipt<{
214
+ workspace: Awaited<ReturnType<WorkspaceService["cloneWorkspace"]>>;
215
+ }>>;
216
+ reorderWorkspaces(workspaceIds: string[]): AssistantCapabilityReceipt<{
217
+ items: ReturnType<WorkspaceService["reorderWorkspaces"]>;
218
+ }>;
219
+ getWorkspaceManagementSummary(workspaceId: string): Promise<AssistantCapabilityReceipt<{
220
+ summary: Awaited<ReturnType<WorkspaceService["getManagementSummary"]>>;
221
+ }>>;
222
+ updateWorkspaceNavigationState(input: UpdateAssistantWorkspaceNavigationStateInput): AssistantCapabilityReceipt<{
223
+ state: ReturnType<WorkspaceService["updateNavigationState"]>;
224
+ }>;
225
+ removeWorkspace(workspaceId: string): AssistantCapabilityReceipt<{
226
+ workspace: ReturnType<WorkspaceService["removeWorkspace"]>;
227
+ }>;
228
+ getWorktreeTree(rootWorkspaceId: string): Promise<AssistantCapabilityReceipt<{
229
+ rootWorkspaceId: string;
230
+ items: ReturnType<WorktreeManager["getTree"]>;
231
+ }>>;
232
+ createWorktree(input: CreateAssistantWorktreeInput): Promise<AssistantCapabilityReceipt<{
233
+ result: Awaited<ReturnType<WorktreeManager["create"]>>;
234
+ }>>;
235
+ getWorktreeMergePreview(workspaceId: string): Promise<AssistantCapabilityReceipt<{
236
+ preview: Awaited<ReturnType<WorktreeMergeService["preview"]>>;
237
+ }>>;
238
+ mergeWorktreeIntoParent(workspaceId: string): Promise<AssistantCapabilityReceipt<{
239
+ result: Awaited<ReturnType<WorktreeMergeService["apply"]>>;
240
+ }>>;
241
+ cleanupWorktree(workspaceId: string, userId: string, options: WorktreeCleanupOptions): Promise<AssistantCapabilityReceipt<{
242
+ result: Awaited<ReturnType<WorktreeCleanupService["cleanup"]>>;
243
+ }>>;
113
244
  private createReceipt;
114
245
  }
115
246
  export {};