@nextop-os/workspace-issue-manager 0.0.17 → 0.0.18
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/{chunk-5YEGAJKA.js → chunk-H2ZF6X6A.js} +18 -4
- package/dist/chunk-H2ZF6X6A.js.map +1 -0
- package/dist/{chunk-LYYOPZIJ.js → chunk-HKIH3OTZ.js} +32 -78
- package/dist/chunk-HKIH3OTZ.js.map +1 -0
- package/dist/{chunk-RX6P2DPR.js → chunk-IYLTKFVO.js} +3353 -2984
- package/dist/chunk-IYLTKFVO.js.map +1 -0
- package/dist/contracts/index.d.ts +27 -1
- package/dist/{feature-B6_wXych.d.ts → feature-Qe1b5W0D.d.ts} +6 -1
- package/dist/i18n/index.js +1 -1
- package/dist/index.d.ts +14 -5
- package/dist/index.js +12 -2
- package/dist/react/index.d.ts +20 -5
- package/dist/react/index.js +3 -3
- package/dist/workbench/index.d.ts +7 -2
- package/dist/workbench/index.js +84 -4
- package/dist/workbench/index.js.map +1 -1
- package/package.json +5 -4
- package/dist/chunk-5YEGAJKA.js.map +0 -1
- package/dist/chunk-LYYOPZIJ.js.map +0 -1
- package/dist/chunk-RX6P2DPR.js.map +0 -1
|
@@ -21,8 +21,10 @@ var issueManagerEn = {
|
|
|
21
21
|
addSubtask: "Add subtask",
|
|
22
22
|
askAgentToRun: "Ask agent to run",
|
|
23
23
|
cancel: "Cancel",
|
|
24
|
+
clearSearch: "Clear search",
|
|
25
|
+
collapseIssueList: "Collapse issue list",
|
|
24
26
|
copyShareLink: "Copy share link",
|
|
25
|
-
createIssue: "
|
|
27
|
+
createIssue: "New issue",
|
|
26
28
|
createTask: "Create task",
|
|
27
29
|
delete: "Delete",
|
|
28
30
|
deleteIssue: "Delete issue",
|
|
@@ -30,12 +32,13 @@ var issueManagerEn = {
|
|
|
30
32
|
edit: "Edit",
|
|
31
33
|
editIssue: "Edit issue",
|
|
32
34
|
editTask: "Edit task",
|
|
35
|
+
expandIssueList: "Expand issue list",
|
|
33
36
|
inviteCollaborator: "Invite collaborator",
|
|
34
37
|
insertReferences: "Insert references",
|
|
35
38
|
moreActions: "More actions",
|
|
36
39
|
openReference: "Open",
|
|
37
40
|
refresh: "Refresh",
|
|
38
|
-
referenceWorkspaceFiles: "Reference
|
|
41
|
+
referenceWorkspaceFiles: "Reference files",
|
|
39
42
|
removeReference: "Remove",
|
|
40
43
|
runTask: "Run task",
|
|
41
44
|
saveIssue: "Save issue",
|
|
@@ -89,6 +92,7 @@ var issueManagerEn = {
|
|
|
89
92
|
messages: {
|
|
90
93
|
clipboardUnavailable: "Clipboard is unavailable.",
|
|
91
94
|
copiedShareLink: "Share link copied.",
|
|
95
|
+
issueRefreshFailed: "Couldn't refresh issues.",
|
|
92
96
|
issueDeleted: "Issue deleted.",
|
|
93
97
|
issueSaved: "Issue saved.",
|
|
94
98
|
issueContentEmpty: "No issue description yet.",
|
|
@@ -105,6 +109,8 @@ var issueManagerEn = {
|
|
|
105
109
|
noTasksForIssueBody: "Create the first task for this issue and let an agent or yourself execute it.",
|
|
106
110
|
noSubtasksForIssue: "You can continue breaking down this item by adding subtasks.",
|
|
107
111
|
noTasks: "No tasks yet.",
|
|
112
|
+
refreshingIssues: "Refreshing issues...",
|
|
113
|
+
titleRequired: "Enter a title before saving.",
|
|
108
114
|
runExitCode: "Codex exited with code {{code}}.",
|
|
109
115
|
runCompleted: "Run completed.",
|
|
110
116
|
runFailed: "Run failed.",
|
|
@@ -126,6 +132,7 @@ var issueManagerEn = {
|
|
|
126
132
|
confirm: "Use selected references",
|
|
127
133
|
emptyDirectory: "This folder is empty.",
|
|
128
134
|
emptySearch: "No matching files or folders.",
|
|
135
|
+
loading: "Loading...",
|
|
129
136
|
searchPlaceholder: "Search files and folders",
|
|
130
137
|
selectedCount: "{{count}} selected",
|
|
131
138
|
title: "Pick workspace references"
|
|
@@ -155,6 +162,8 @@ var issueManagerZhCN = {
|
|
|
155
162
|
addSubtask: "\u6DFB\u52A0\u5B50\u4EFB\u52A1",
|
|
156
163
|
askAgentToRun: "\u8BA9 Agent \u6267\u884C",
|
|
157
164
|
cancel: "\u53D6\u6D88",
|
|
165
|
+
clearSearch: "\u6E05\u7A7A\u641C\u7D22",
|
|
166
|
+
collapseIssueList: "\u6536\u8D77\u4E8B\u9879\u5217\u8868",
|
|
158
167
|
copyShareLink: "\u590D\u5236\u5206\u4EAB\u94FE\u63A5",
|
|
159
168
|
createIssue: "\u65B0\u5EFA\u4E8B\u9879",
|
|
160
169
|
createTask: "\u65B0\u5EFA\u4EFB\u52A1",
|
|
@@ -164,12 +173,13 @@ var issueManagerZhCN = {
|
|
|
164
173
|
edit: "\u7F16\u8F91",
|
|
165
174
|
editIssue: "\u7F16\u8F91\u4E8B\u9879",
|
|
166
175
|
editTask: "\u7F16\u8F91\u4EFB\u52A1",
|
|
176
|
+
expandIssueList: "\u5C55\u5F00\u4E8B\u9879\u5217\u8868",
|
|
167
177
|
inviteCollaborator: "\u9080\u8BF7\u534F\u4F5C\u8005",
|
|
168
178
|
insertReferences: "\u63D2\u5165\u5F15\u7528",
|
|
169
179
|
moreActions: "\u66F4\u591A\u64CD\u4F5C",
|
|
170
180
|
openReference: "\u6253\u5F00",
|
|
171
181
|
refresh: "\u5237\u65B0",
|
|
172
|
-
referenceWorkspaceFiles: "\u5F15\u7528\
|
|
182
|
+
referenceWorkspaceFiles: "\u5F15\u7528\u6587\u4EF6",
|
|
173
183
|
removeReference: "\u79FB\u9664",
|
|
174
184
|
runTask: "\u8FD0\u884C\u4EFB\u52A1",
|
|
175
185
|
saveIssue: "\u4FDD\u5B58\u4E8B\u9879",
|
|
@@ -223,6 +233,7 @@ var issueManagerZhCN = {
|
|
|
223
233
|
messages: {
|
|
224
234
|
clipboardUnavailable: "\u5F53\u524D\u73AF\u5883\u65E0\u6CD5\u8BBF\u95EE\u526A\u8D34\u677F\u3002",
|
|
225
235
|
copiedShareLink: "\u5DF2\u590D\u5236\u5206\u4EAB\u94FE\u63A5\u3002",
|
|
236
|
+
issueRefreshFailed: "\u5237\u65B0\u4E8B\u9879\u5217\u8868\u5931\u8D25\u3002",
|
|
226
237
|
issueDeleted: "\u4E8B\u9879\u5DF2\u5220\u9664\u3002",
|
|
227
238
|
issueSaved: "\u4E8B\u9879\u5DF2\u4FDD\u5B58\u3002",
|
|
228
239
|
issueContentEmpty: "\u8FD9\u4E2A\u4E8B\u9879\u8FD8\u6CA1\u6709\u63CF\u8FF0\u3002",
|
|
@@ -239,6 +250,8 @@ var issueManagerZhCN = {
|
|
|
239
250
|
noTasksForIssueBody: "\u4E3A\u8FD9\u4E2A\u4E8B\u9879\u521B\u5EFA\u7B2C\u4E00\u4E2A\u4EFB\u52A1\uFF0C\u7136\u540E\u4EA4\u7ED9 Agent \u6216\u4F60\u81EA\u5DF1\u6267\u884C\u3002",
|
|
240
251
|
noSubtasksForIssue: "\u4F60\u53EF\u4EE5\u56F4\u7ED5\u5F53\u524D\u4EFB\u52A1\u7EE7\u7EED\u6DFB\u52A0\u5B50\u4EFB\u52A1",
|
|
241
252
|
noTasks: "\u8FD8\u6CA1\u6709\u4EFB\u52A1\u3002",
|
|
253
|
+
refreshingIssues: "\u6B63\u5728\u5237\u65B0\u4E8B\u9879\u5217\u8868...",
|
|
254
|
+
titleRequired: "\u8BF7\u5148\u586B\u5199\u6807\u9898\u540E\u518D\u4FDD\u5B58\u3002",
|
|
242
255
|
runExitCode: "Codex \u4EE5\u9000\u51FA\u7801 {{code}} \u7ED3\u675F\u3002",
|
|
243
256
|
runCompleted: "\u8FD0\u884C\u5DF2\u5B8C\u6210\u3002",
|
|
244
257
|
runFailed: "\u8FD0\u884C\u5931\u8D25\u3002",
|
|
@@ -260,6 +273,7 @@ var issueManagerZhCN = {
|
|
|
260
273
|
confirm: "\u4F7F\u7528\u5DF2\u9009\u5F15\u7528",
|
|
261
274
|
emptyDirectory: "\u5F53\u524D\u76EE\u5F55\u4E3A\u7A7A\u3002",
|
|
262
275
|
emptySearch: "\u6CA1\u6709\u5339\u914D\u7684\u6587\u4EF6\u6216\u6587\u4EF6\u5939\u3002",
|
|
276
|
+
loading: "\u6B63\u5728\u52A0\u8F7D...",
|
|
263
277
|
searchPlaceholder: "\u641C\u7D22\u6587\u4EF6\u548C\u6587\u4EF6\u5939",
|
|
264
278
|
selectedCount: "\u5DF2\u9009\u62E9 {{count}} \u9879",
|
|
265
279
|
title: "\u9009\u62E9\u5DE5\u4F5C\u533A\u5F15\u7528"
|
|
@@ -310,4 +324,4 @@ export {
|
|
|
310
324
|
issueManagerI18nResources,
|
|
311
325
|
createIssueManagerI18nRuntime
|
|
312
326
|
};
|
|
313
|
-
//# sourceMappingURL=chunk-
|
|
327
|
+
//# sourceMappingURL=chunk-H2ZF6X6A.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/i18n/issueManagerI18n.ts"],"sourcesContent":["import {\n createI18nRuntime,\n createScopedI18nRuntime,\n createScopedLocaleObjectsI18nModuleManifest,\n type I18nDictionary,\n type I18nRuntime\n} from \"@nextop-os/ui-i18n-runtime\";\n\ntype IssueManagerI18nLocale = \"en\" | \"zh-CN\";\n\nexport const issueManagerI18nNamespace = \"issueManager\";\nexport const issueManagerI18nModule =\n createScopedLocaleObjectsI18nModuleManifest({\n localeObjectByLocale: {\n en: \"issueManagerEn\",\n \"zh-CN\": \"issueManagerZhCN\"\n },\n name: \"workspace-issue-manager\",\n namespace: issueManagerI18nNamespace,\n sourceRoot: \"packages/workspace/issue-manager/src\"\n });\n\nconst issueManagerEn = {\n actions: {\n add: \"Add\",\n addReferences: \"Add references\",\n addSubtask: \"Add subtask\",\n askAgentToRun: \"Ask agent to run\",\n cancel: \"Cancel\",\n clearSearch: \"Clear search\",\n collapseIssueList: \"Collapse issue list\",\n copyShareLink: \"Copy share link\",\n createIssue: \"New issue\",\n createTask: \"Create task\",\n delete: \"Delete\",\n deleteIssue: \"Delete issue\",\n deleteTask: \"Delete task\",\n edit: \"Edit\",\n editIssue: \"Edit issue\",\n editTask: \"Edit task\",\n expandIssueList: \"Expand issue list\",\n inviteCollaborator: \"Invite collaborator\",\n insertReferences: \"Insert references\",\n moreActions: \"More actions\",\n openReference: \"Open\",\n refresh: \"Refresh\",\n referenceWorkspaceFiles: \"Reference files\",\n removeReference: \"Remove\",\n runTask: \"Run task\",\n saveIssue: \"Save issue\",\n saveSubtask: \"Save subtask\",\n saveTask: \"Save task\",\n uploadFiles: \"Upload files\",\n uploadFolder: \"Upload folder\"\n },\n composer: {\n issueContentPlaceholder: \"Describe the issue, goals, or context.\",\n issueTitlePlaceholder: \"Issue title\",\n subtaskContentPlaceholder:\n \"Add the subtask goal, execution approach, and acceptance criteria.\",\n subtaskTitlePlaceholder: \"Enter a subtask title\",\n taskContentPlaceholder: \"Describe the executable task and expected result.\",\n taskTitlePlaceholder: \"Task title\"\n },\n confirmations: {\n deleteIssue: \"Delete this issue?\",\n deleteTask: \"Delete this task?\"\n },\n dockLabel: \"Tasks\",\n emptyState:\n \"Create an issue, add the goal and references, then start executing.\",\n labels: {\n allStatus: \"All\",\n content: \"Content\",\n contextReferences: \"Context references\",\n createdAt: \"Created\",\n creator: \"Creator\",\n description: \"Description\",\n executionOutputs: \"Execution outputs\",\n issueDetails: \"Issue details\",\n issueList: \"Issues\",\n latestRunStatus: \"Latest execution status\",\n outputs: \"Outputs\",\n priority: \"Priority\",\n provider: \"Provider\",\n recentRuns: \"Recent runs\",\n requirementDescription: \"Requirements\",\n resizeIssueList: \"Resize issue list\",\n searchIssues: \"Search issues\",\n scrollStatusTabsLeft: \"Scroll status tabs left\",\n scrollStatusTabsRight: \"Scroll status tabs right\",\n status: \"Status\",\n subtasks: \"Subtasks\",\n title: \"Title\",\n updatedAt: \"Updated\",\n taskCount: \"{{count}} tasks\",\n taskDetails: \"Task details\",\n taskList: \"Tasks\"\n },\n messages: {\n clipboardUnavailable: \"Clipboard is unavailable.\",\n copiedShareLink: \"Share link copied.\",\n issueRefreshFailed: \"Couldn't refresh issues.\",\n issueDeleted: \"Issue deleted.\",\n issueSaved: \"Issue saved.\",\n issueContentEmpty: \"No issue description yet.\",\n noExecutionOutputs: \"No execution outputs yet.\",\n noExecutionStatus: \"No execution records yet.\",\n noIssueReferences: \"No issue references yet.\",\n noIssuesForFilterBody:\n \"Try another filter, or create a new issue to get things started.\",\n noIssuesForFilterTitle: \"No issues match the current filter.\",\n noIssues: \"No issues yet.\",\n noOutputs: \"No outputs yet.\",\n noRecentRuns: \"No runs yet.\",\n taskContentEmpty: \"No task description yet.\",\n noTaskReferences: \"No task references yet.\",\n noTasksForIssueBody:\n \"Create the first task for this issue and let an agent or yourself execute it.\",\n noSubtasksForIssue:\n \"You can continue breaking down this item by adding subtasks.\",\n noTasks: \"No tasks yet.\",\n refreshingIssues: \"Refreshing issues...\",\n titleRequired: \"Enter a title before saving.\",\n runExitCode: \"Codex exited with code {{code}}.\",\n runCompleted: \"Run completed.\",\n runFailed: \"Run failed.\",\n runStarted: \"Run started.\",\n runStatusMissing:\n \"Terminal exited before the issue run produced a status marker.\",\n runTimedOut: \"Issue run timed out while waiting for Codex output.\",\n taskDeleted: \"Task deleted.\",\n taskSaved: \"Task saved.\",\n uploadTypeConflict: \"Upload target contains conflicting entry types.\",\n workspacePathUnavailable: \"Workspace path is unavailable.\"\n },\n priority: {\n high: \"High\",\n low: \"Low\",\n medium: \"Medium\"\n },\n referencePicker: {\n browse: \"Browse\",\n confirm: \"Use selected references\",\n emptyDirectory: \"This folder is empty.\",\n emptySearch: \"No matching files or folders.\",\n loading: \"Loading...\",\n searchPlaceholder: \"Search files and folders\",\n selectedCount: \"{{count}} selected\",\n title: \"Pick workspace references\"\n },\n run: {\n failedSummaryFallback: \"Run failed\",\n outputDirectory: \"Output directory\",\n requester: \"Requester\",\n status: \"Run status\",\n summary: \"Summary\"\n },\n status: {\n canceled: \"Canceled\",\n completed: \"Completed\",\n failed: \"Failed\",\n notStarted: \"Not started\",\n pendingAcceptance: \"Pending acceptance\",\n running: \"Running\",\n unknown: \"Unknown\"\n },\n title: \"Task Center\"\n} as const satisfies I18nDictionary;\n\nconst issueManagerZhCN = {\n actions: {\n add: \"添加\",\n addReferences: \"添加引用\",\n addSubtask: \"添加子任务\",\n askAgentToRun: \"让 Agent 执行\",\n cancel: \"取消\",\n clearSearch: \"清空搜索\",\n collapseIssueList: \"收起事项列表\",\n copyShareLink: \"复制分享链接\",\n createIssue: \"新建事项\",\n createTask: \"新建任务\",\n delete: \"删除\",\n deleteIssue: \"删除事项\",\n deleteTask: \"删除任务\",\n edit: \"编辑\",\n editIssue: \"编辑事项\",\n editTask: \"编辑任务\",\n expandIssueList: \"展开事项列表\",\n inviteCollaborator: \"邀请协作者\",\n insertReferences: \"插入引用\",\n moreActions: \"更多操作\",\n openReference: \"打开\",\n refresh: \"刷新\",\n referenceWorkspaceFiles: \"引用文件\",\n removeReference: \"移除\",\n runTask: \"运行任务\",\n saveIssue: \"保存事项\",\n saveSubtask: \"保存子任务\",\n saveTask: \"保存任务\",\n uploadFiles: \"上传文件\",\n uploadFolder: \"上传文件夹\"\n },\n composer: {\n issueContentPlaceholder: \"补充这个事项的背景、目标或上下文。\",\n issueTitlePlaceholder: \"事项标题\",\n subtaskContentPlaceholder: \"补充子任务目标、执行方式和验收标准\",\n subtaskTitlePlaceholder: \"请输入子任务标题\",\n taskContentPlaceholder: \"描述这个任务的执行要求和预期结果。\",\n taskTitlePlaceholder: \"任务标题\"\n },\n confirmations: {\n deleteIssue: \"确定删除这个事项吗?\",\n deleteTask: \"确定删除这个任务吗?\"\n },\n dockLabel: \"任务\",\n emptyState: \"新建事项,补充需求描述和相关文件,即可开始执行。\",\n labels: {\n allStatus: \"全部\",\n content: \"内容\",\n contextReferences: \"上下文引用\",\n createdAt: \"创建时间\",\n creator: \"创建者\",\n description: \"描述\",\n executionOutputs: \"执行产物\",\n issueDetails: \"事项详情\",\n issueList: \"事项\",\n latestRunStatus: \"最新执行状态\",\n outputs: \"输出产物\",\n priority: \"优先级\",\n provider: \"Provider\",\n recentRuns: \"最近运行\",\n requirementDescription: \"需求描述\",\n resizeIssueList: \"调整事项列表宽度\",\n searchIssues: \"搜索事项\",\n scrollStatusTabsLeft: \"向左滚动状态标签\",\n scrollStatusTabsRight: \"向右滚动状态标签\",\n status: \"状态\",\n subtasks: \"子任务\",\n title: \"标题\",\n updatedAt: \"更新时间\",\n taskCount: \"{{count}} 个任务\",\n taskDetails: \"任务详情\",\n taskList: \"任务\"\n },\n messages: {\n clipboardUnavailable: \"当前环境无法访问剪贴板。\",\n copiedShareLink: \"已复制分享链接。\",\n issueRefreshFailed: \"刷新事项列表失败。\",\n issueDeleted: \"事项已删除。\",\n issueSaved: \"事项已保存。\",\n issueContentEmpty: \"这个事项还没有描述。\",\n noExecutionOutputs: \"暂无执行产物\",\n noExecutionStatus: \"暂无执行记录\",\n noIssueReferences: \"这个事项还没有引用。\",\n noIssuesForFilterBody: \"试试切换筛选条件,或者新建一个事项。\",\n noIssuesForFilterTitle: \"当前筛选条件下暂无事项。\",\n noIssues: \"还没有事项。\",\n noOutputs: \"还没有输出产物。\",\n noRecentRuns: \"还没有运行记录。\",\n taskContentEmpty: \"这个任务还没有描述。\",\n noTaskReferences: \"这个任务还没有引用。\",\n noTasksForIssueBody:\n \"为这个事项创建第一个任务,然后交给 Agent 或你自己执行。\",\n noSubtasksForIssue: \"你可以围绕当前任务继续添加子任务\",\n noTasks: \"还没有任务。\",\n refreshingIssues: \"正在刷新事项列表...\",\n titleRequired: \"请先填写标题后再保存。\",\n runExitCode: \"Codex 以退出码 {{code}} 结束。\",\n runCompleted: \"运行已完成。\",\n runFailed: \"运行失败。\",\n runStarted: \"运行已开始。\",\n runStatusMissing: \"终端在写入运行状态前就退出了。\",\n runTimedOut: \"等待 Codex 输出超时。\",\n taskDeleted: \"任务已删除。\",\n taskSaved: \"任务已保存。\",\n uploadTypeConflict: \"上传目标中存在类型冲突的同名条目。\",\n workspacePathUnavailable: \"当前工作区路径不可用。\"\n },\n priority: {\n high: \"高\",\n low: \"低\",\n medium: \"中\"\n },\n referencePicker: {\n browse: \"浏览\",\n confirm: \"使用已选引用\",\n emptyDirectory: \"当前目录为空。\",\n emptySearch: \"没有匹配的文件或文件夹。\",\n loading: \"正在加载...\",\n searchPlaceholder: \"搜索文件和文件夹\",\n selectedCount: \"已选择 {{count}} 项\",\n title: \"选择工作区引用\"\n },\n run: {\n failedSummaryFallback: \"运行失败\",\n outputDirectory: \"输出目录\",\n requester: \"发起人\",\n status: \"运行状态\",\n summary: \"摘要\"\n },\n status: {\n canceled: \"已取消\",\n completed: \"已完成\",\n failed: \"失败\",\n notStarted: \"未启动\",\n pendingAcceptance: \"待验收\",\n running: \"执行中\",\n unknown: \"未知\"\n },\n title: \"任务中心\"\n} as const satisfies I18nDictionary;\n\nexport type IssueManagerI18nKey = string;\n\nexport type IssueManagerI18nRuntime = I18nRuntime<IssueManagerI18nKey>;\n\nconst issueManagerDefaults: Record<IssueManagerI18nLocale, I18nDictionary> = {\n en: issueManagerEn,\n \"zh-CN\": issueManagerZhCN\n};\n\nexport const issueManagerI18nResources = {\n en: {\n [issueManagerI18nNamespace]: issueManagerDefaults.en\n },\n \"zh-CN\": {\n [issueManagerI18nNamespace]: issueManagerDefaults[\"zh-CN\"]\n }\n} as const satisfies Record<IssueManagerI18nLocale, I18nDictionary>;\n\nconst defaultIssueManagerI18n = createI18nRuntime({\n dictionaries: [issueManagerI18nResources.en]\n});\n\nexport function createIssueManagerI18nRuntime(\n runtime: I18nRuntime<string> | undefined\n): IssueManagerI18nRuntime {\n return createScopedI18nRuntime<IssueManagerI18nKey>(\n runtime ?? defaultIssueManagerI18n,\n issueManagerI18nNamespace\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createIssueManagerI18nRuntime
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-H2ZF6X6A.js";
|
|
4
4
|
|
|
5
5
|
// src/core/feature.ts
|
|
6
6
|
var defaultIssueManagerNodeState = {
|
|
@@ -17,6 +17,7 @@ function createIssueManagerFeature(input) {
|
|
|
17
17
|
fileAdapter: input.fileAdapter,
|
|
18
18
|
i18n: createIssueManagerI18nRuntime(input.i18n),
|
|
19
19
|
identityAdapter: input.identityAdapter,
|
|
20
|
+
notifications: input.notifications,
|
|
20
21
|
shareAdapter: input.shareAdapter
|
|
21
22
|
};
|
|
22
23
|
}
|
|
@@ -37,63 +38,28 @@ function normalizeNullableString(value) {
|
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
// src/core/content.ts
|
|
41
|
+
import {
|
|
42
|
+
createRichTextMentionHref,
|
|
43
|
+
createRichTextMentionMarkdown,
|
|
44
|
+
extractPlainTextFromContent,
|
|
45
|
+
extractPlainTextWithoutFilesFromContent,
|
|
46
|
+
extractRichTextMentionsFromContent,
|
|
47
|
+
normalizeRichTextContent,
|
|
48
|
+
parseRichTextMentionHref,
|
|
49
|
+
removeRichTextMentionFromContent
|
|
50
|
+
} from "@nextop-os/ui-rich-text/core";
|
|
40
51
|
var markdownLinkPattern = /\[([^\]]+)\]\(([^)\s]+)\)/g;
|
|
41
|
-
var markdownImagePattern = /!\[([^\]]*)\]\(([^)\s]+)\)/g;
|
|
42
52
|
var externalLinkPrefix = /^(?:[a-z]+:)?\/\//i;
|
|
43
53
|
var mentionLinkPrefix = /^mention:\/\//i;
|
|
44
|
-
function
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const trimmed = normalizeLineEndings(value ?? "").trim();
|
|
49
|
-
if (!trimmed) {
|
|
50
|
-
return "";
|
|
51
|
-
}
|
|
52
|
-
const markdown = convertLegacyDocumentString(trimmed);
|
|
53
|
-
return markdown || trimmed;
|
|
54
|
-
}
|
|
55
|
-
function convertLegacyDocumentString(value) {
|
|
56
|
-
try {
|
|
57
|
-
const parsed = JSON.parse(value);
|
|
58
|
-
if (parsed?.type !== "doc" || !Array.isArray(parsed.content)) {
|
|
59
|
-
return "";
|
|
60
|
-
}
|
|
61
|
-
return renderLegacyNodesToMarkdown(parsed.content).trim();
|
|
62
|
-
} catch {
|
|
63
|
-
return "";
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
function renderLegacyNodesToMarkdown(nodes) {
|
|
67
|
-
return nodes.map((node) => renderLegacyNodeToMarkdown(node)).filter((part) => part.length > 0).join("\n\n");
|
|
68
|
-
}
|
|
69
|
-
function renderLegacyNodeToMarkdown(node) {
|
|
70
|
-
if (!node) {
|
|
71
|
-
return "";
|
|
72
|
-
}
|
|
73
|
-
if (node.type === "text") {
|
|
74
|
-
return node.text ?? "";
|
|
75
|
-
}
|
|
76
|
-
if (node.type === "workspaceFileLink") {
|
|
77
|
-
const attrs = node.attrs ?? {};
|
|
78
|
-
const kind = attrs.kind === "folder" ? "folder" : "file";
|
|
79
|
-
const hrefValue = (typeof attrs.href === "string" ? attrs.href : void 0) || (typeof attrs.path === "string" ? attrs.path : void 0) || "";
|
|
80
|
-
const href = normalizeIssueManagerWorkspaceFileLinkHref(hrefValue, kind);
|
|
81
|
-
const label = (typeof attrs.name === "string" ? attrs.name : void 0)?.trim() || href.split("/").filter(Boolean).at(-1) || href;
|
|
82
|
-
return href && label ? `[${label}](${href})` : label;
|
|
83
|
-
}
|
|
84
|
-
if (Array.isArray(node.content)) {
|
|
85
|
-
const inline = node.content.map((child) => renderLegacyNodeToMarkdown(child)).filter((part) => part.length > 0).join("").trim();
|
|
86
|
-
if (!inline) {
|
|
87
|
-
return "";
|
|
88
|
-
}
|
|
89
|
-
if (node.type === "paragraph") {
|
|
90
|
-
return inline;
|
|
91
|
-
}
|
|
92
|
-
return inline;
|
|
54
|
+
function isWorkspaceReferenceHref(href) {
|
|
55
|
+
const trimmed = href.trim();
|
|
56
|
+
if (!trimmed || mentionLinkPrefix.test(trimmed) || externalLinkPrefix.test(trimmed)) {
|
|
57
|
+
return false;
|
|
93
58
|
}
|
|
94
|
-
return
|
|
59
|
+
return true;
|
|
95
60
|
}
|
|
96
|
-
|
|
61
|
+
var normalizeIssueManagerContent = normalizeRichTextContent;
|
|
62
|
+
function normalizeIssueManagerWorkspaceFileLinkHref(pathOrHref, kind = "file") {
|
|
97
63
|
const trimmed = pathOrHref.trim();
|
|
98
64
|
if (!trimmed) {
|
|
99
65
|
return "";
|
|
@@ -103,16 +69,6 @@ function normalizeWorkspacePath(pathOrHref, kind) {
|
|
|
103
69
|
}
|
|
104
70
|
return trimmed;
|
|
105
71
|
}
|
|
106
|
-
function isWorkspaceReferenceHref(href) {
|
|
107
|
-
const trimmed = href.trim();
|
|
108
|
-
if (!trimmed || mentionLinkPrefix.test(trimmed) || externalLinkPrefix.test(trimmed)) {
|
|
109
|
-
return false;
|
|
110
|
-
}
|
|
111
|
-
return true;
|
|
112
|
-
}
|
|
113
|
-
function normalizeIssueManagerWorkspaceFileLinkHref(pathOrHref, kind = "file") {
|
|
114
|
-
return normalizeWorkspacePath(pathOrHref, kind);
|
|
115
|
-
}
|
|
116
72
|
function createIssueManagerWorkspaceFileLinkMarkdown(input) {
|
|
117
73
|
const kind = input.kind === "folder" ? "folder" : "file";
|
|
118
74
|
const href = normalizeIssueManagerWorkspaceFileLinkHref(input.path, kind);
|
|
@@ -188,20 +144,13 @@ function removeIssueManagerWorkspaceFileLinkFromContent(content, path) {
|
|
|
188
144
|
}).join("\n").replace(/\n{3,}/g, "\n\n");
|
|
189
145
|
return next.trim();
|
|
190
146
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
function extractIssueManagerPlainTextWithoutFilesFromContent(value) {
|
|
199
|
-
const content = normalizeIssueManagerContent(value);
|
|
200
|
-
if (!content) {
|
|
201
|
-
return "";
|
|
202
|
-
}
|
|
203
|
-
return content.replace(markdownImagePattern, " ").replace(markdownLinkPattern, " ").replace(/^[\s>*#+-]+/gm, " ").replace(/`([^`]+)`/g, " $1 ").replace(/[*_~]/g, " ").replace(/\s+/g, " ").trim();
|
|
204
|
-
}
|
|
147
|
+
var extractIssueManagerPlainTextFromContent = extractPlainTextFromContent;
|
|
148
|
+
var extractIssueManagerPlainTextWithoutFilesFromContent = extractPlainTextWithoutFilesFromContent;
|
|
149
|
+
var createIssueManagerMentionHref = createRichTextMentionHref;
|
|
150
|
+
var createIssueManagerMentionMarkdown = createRichTextMentionMarkdown;
|
|
151
|
+
var parseIssueManagerMentionHref = parseRichTextMentionHref;
|
|
152
|
+
var extractIssueManagerMentionsFromContent = extractRichTextMentionsFromContent;
|
|
153
|
+
var removeIssueManagerMentionFromContent = removeRichTextMentionFromContent;
|
|
205
154
|
|
|
206
155
|
// src/core/runPrompt.ts
|
|
207
156
|
function buildIssueManagerRunOutputDir(issueId, taskId, runId) {
|
|
@@ -300,9 +249,14 @@ export {
|
|
|
300
249
|
removeIssueManagerWorkspaceFileLinkFromContent,
|
|
301
250
|
extractIssueManagerPlainTextFromContent,
|
|
302
251
|
extractIssueManagerPlainTextWithoutFilesFromContent,
|
|
252
|
+
createIssueManagerMentionHref,
|
|
253
|
+
createIssueManagerMentionMarkdown,
|
|
254
|
+
parseIssueManagerMentionHref,
|
|
255
|
+
extractIssueManagerMentionsFromContent,
|
|
256
|
+
removeIssueManagerMentionFromContent,
|
|
303
257
|
buildIssueManagerRunOutputDir,
|
|
304
258
|
buildIssueManagerUploadDir,
|
|
305
259
|
resolveIssueManagerWorkspaceRuntimePath,
|
|
306
260
|
buildIssueManagerRunPrompt
|
|
307
261
|
};
|
|
308
|
-
//# sourceMappingURL=chunk-
|
|
262
|
+
//# sourceMappingURL=chunk-HKIH3OTZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/feature.ts","../src/core/content.ts","../src/core/runPrompt.ts"],"sourcesContent":["import type { I18nRuntime } from \"@nextop-os/ui-i18n-runtime\";\nimport {\n createIssueManagerI18nRuntime,\n type IssueManagerI18nRuntime\n} from \"../i18n/issueManagerI18n.ts\";\nimport type {\n IssueManagerAgentRunner,\n IssueManagerBackend,\n IssueManagerFileAdapter,\n IssueManagerIdentityAdapter,\n IssueManagerNodeState,\n IssueManagerShareAdapter\n} from \"../contracts/index.ts\";\n\nexport interface IssueManagerNotificationSink {\n tips(title: string): void;\n}\n\nexport interface IssueManagerFeature {\n agentRunner: IssueManagerAgentRunner;\n backend: IssueManagerBackend;\n fileAdapter?: IssueManagerFileAdapter;\n i18n: IssueManagerI18nRuntime;\n identityAdapter: IssueManagerIdentityAdapter;\n notifications?: IssueManagerNotificationSink;\n shareAdapter?: IssueManagerShareAdapter;\n}\n\nexport interface CreateIssueManagerFeatureInput {\n agentRunner: IssueManagerAgentRunner;\n backend: IssueManagerBackend;\n fileAdapter?: IssueManagerFileAdapter;\n i18n?: I18nRuntime<string>;\n identityAdapter: IssueManagerIdentityAdapter;\n notifications?: IssueManagerNotificationSink;\n shareAdapter?: IssueManagerShareAdapter;\n}\n\nexport const defaultIssueManagerNodeState: IssueManagerNodeState = {\n issueSearchQuery: \"\",\n issueStatusFilter: \"all\",\n selectedAgentProvider: \"codex\",\n selectedIssueId: null,\n selectedTaskId: null\n};\n\nexport function createIssueManagerFeature(\n input: CreateIssueManagerFeatureInput\n): IssueManagerFeature {\n return {\n agentRunner: input.agentRunner,\n backend: input.backend,\n fileAdapter: input.fileAdapter,\n i18n: createIssueManagerI18nRuntime(input.i18n),\n identityAdapter: input.identityAdapter,\n notifications: input.notifications,\n shareAdapter: input.shareAdapter\n };\n}\n\nexport function normalizeIssueManagerNodeState(\n state: Partial<IssueManagerNodeState> | null | undefined\n): IssueManagerNodeState {\n return {\n ...defaultIssueManagerNodeState,\n ...state,\n issueSearchQuery: state?.issueSearchQuery?.trim() ?? \"\",\n issueStatusFilter: state?.issueStatusFilter ?? \"all\",\n selectedAgentProvider: state?.selectedAgentProvider?.trim() || \"codex\",\n selectedIssueId: normalizeNullableString(state?.selectedIssueId),\n selectedTaskId: normalizeNullableString(state?.selectedTaskId)\n };\n}\n\nfunction normalizeNullableString(\n value: string | null | undefined\n): string | null {\n const trimmed = value?.trim() ?? \"\";\n return trimmed.length > 0 ? trimmed : null;\n}\n","import {\n createRichTextMentionHref,\n createRichTextMentionMarkdown,\n extractPlainTextFromContent,\n extractPlainTextWithoutFilesFromContent,\n extractRichTextMentionsFromContent,\n normalizeRichTextContent,\n parseRichTextMentionHref,\n removeRichTextMentionFromContent\n} from \"@nextop-os/ui-rich-text/core\";\nimport type { RichTextMentionAttrs } from \"@nextop-os/ui-rich-text/types\";\n\nexport type IssueManagerWorkspaceFileLinkRef = {\n href: string;\n kind: \"file\" | \"folder\";\n name: string;\n path: string;\n};\n\nexport type IssueManagerWorkspaceFileLinkInput = {\n kind?: \"file\" | \"folder\";\n name?: string | null;\n path: string;\n};\n\nexport type IssueManagerMentionRef = RichTextMentionAttrs;\nexport type IssueManagerMentionAttrs = RichTextMentionAttrs;\n\nconst markdownLinkPattern = /\\[([^\\]]+)\\]\\(([^)\\s]+)\\)/g;\nconst externalLinkPrefix = /^(?:[a-z]+:)?\\/\\//i;\nconst mentionLinkPrefix = /^mention:\\/\\//i;\n\nfunction isWorkspaceReferenceHref(href: string): boolean {\n const trimmed = href.trim();\n if (\n !trimmed ||\n mentionLinkPrefix.test(trimmed) ||\n externalLinkPrefix.test(trimmed)\n ) {\n return false;\n }\n return true;\n}\n\nexport const normalizeIssueManagerContent = normalizeRichTextContent;\n\nexport function normalizeIssueManagerWorkspaceFileLinkHref(\n pathOrHref: string,\n kind: \"file\" | \"folder\" = \"file\"\n): string {\n const trimmed = pathOrHref.trim();\n if (!trimmed) {\n return \"\";\n }\n if (kind === \"folder\" && !trimmed.endsWith(\"/\")) {\n return `${trimmed}/`;\n }\n return trimmed;\n}\n\nexport function createIssueManagerWorkspaceFileLinkMarkdown(\n input: IssueManagerWorkspaceFileLinkInput\n): string {\n const kind = input.kind === \"folder\" ? \"folder\" : \"file\";\n const href = normalizeIssueManagerWorkspaceFileLinkHref(input.path, kind);\n const displayName =\n input.name?.trim() ||\n href.split(\"/\").filter(Boolean).at(-1) ||\n href ||\n input.path.trim();\n if (!href || !displayName) {\n return \"\";\n }\n return `[${displayName}](${href})`;\n}\n\nexport function appendIssueManagerWorkspaceFileLinksToContent(\n value: string | null | undefined,\n refs: readonly IssueManagerWorkspaceFileLinkInput[]\n): string {\n const content = normalizeIssueManagerContent(value);\n const existing = new Set(\n extractIssueManagerWorkspaceFileLinksFromContent(content).map(\n (ref) => ref.path\n )\n );\n const rendered = refs\n .map((ref) => {\n const kind = ref.kind === \"folder\" ? \"folder\" : \"file\";\n const path = normalizeIssueManagerWorkspaceFileLinkHref(ref.path, kind);\n if (!path || existing.has(path)) {\n return \"\";\n }\n existing.add(path);\n return createIssueManagerWorkspaceFileLinkMarkdown({\n ...ref,\n kind,\n path\n });\n })\n .filter(Boolean);\n\n if (rendered.length === 0) {\n return content;\n }\n\n return content ? `${content}\\n\\n${rendered.join(\"\\n\")}` : rendered.join(\"\\n\");\n}\n\nexport function extractIssueManagerWorkspaceFileLinksFromContent(\n value: string | null | undefined\n): IssueManagerWorkspaceFileLinkRef[] {\n const content = normalizeIssueManagerContent(value);\n const refs = new Map<string, IssueManagerWorkspaceFileLinkRef>();\n for (const match of content.matchAll(markdownLinkPattern)) {\n const name = match[1]?.trim() ?? \"\";\n const href = match[2]?.trim() ?? \"\";\n if (!name || !isWorkspaceReferenceHref(href)) {\n continue;\n }\n const kind = href.endsWith(\"/\") ? \"folder\" : \"file\";\n const path = normalizeIssueManagerWorkspaceFileLinkHref(href, kind);\n if (!path || refs.has(path)) {\n continue;\n }\n refs.set(path, {\n href: path,\n kind,\n name,\n path\n });\n }\n return [...refs.values()];\n}\n\nexport function removeIssueManagerWorkspaceFileLinkFromContent(\n content: string,\n path: string\n): string {\n const targetPath = path.trim();\n if (!targetPath) {\n return normalizeIssueManagerContent(content);\n }\n const normalized = normalizeIssueManagerContent(content);\n const next = normalized\n .split(\"\\n\")\n .filter((line) => {\n const trimmed = line.trim();\n if (!trimmed) {\n return true;\n }\n const refs = extractIssueManagerWorkspaceFileLinksFromContent(trimmed);\n return !refs.some((ref) => ref.path === targetPath) || refs.length > 1;\n })\n .join(\"\\n\")\n .replace(/\\n{3,}/g, \"\\n\\n\");\n return next.trim();\n}\n\nexport const extractIssueManagerPlainTextFromContent =\n extractPlainTextFromContent;\nexport const extractIssueManagerPlainTextWithoutFilesFromContent =\n extractPlainTextWithoutFilesFromContent;\n\nexport const createIssueManagerMentionHref = createRichTextMentionHref;\nexport const createIssueManagerMentionMarkdown = createRichTextMentionMarkdown;\nexport const parseIssueManagerMentionHref = parseRichTextMentionHref;\nexport const extractIssueManagerMentionsFromContent =\n extractRichTextMentionsFromContent;\nexport const removeIssueManagerMentionFromContent =\n removeRichTextMentionFromContent;\n","import type {\n IssueManagerIssueSummary,\n IssueManagerTaskSummary\n} from \"../contracts/index.ts\";\nimport {\n extractIssueManagerPlainTextFromContent,\n extractIssueManagerWorkspaceFileLinksFromContent\n} from \"./content.ts\";\n\nexport function buildIssueManagerRunOutputDir(\n issueId: string,\n taskId: string,\n runId: string\n): string {\n return `/workspace/issues/${issueId}/tasks/${taskId}/runs/${runId}`;\n}\n\nexport function buildIssueManagerUploadDir(\n issueId: string,\n taskId?: string | null\n): string {\n const normalizedTaskId = taskId?.trim();\n if (normalizedTaskId) {\n return `/workspace/issues/${issueId}/tasks/${normalizedTaskId}/attachments`;\n }\n return `/workspace/issues/${issueId}/attachments`;\n}\n\nexport function resolveIssueManagerWorkspaceRuntimePath(\n workspaceRoot: string,\n requestedPath: string\n): string {\n const normalizedWorkspaceRoot = workspaceRoot.trim().replace(/\\/+$/, \"\");\n const normalizedRequestedPath = requestedPath.trim();\n\n if (!normalizedWorkspaceRoot || !normalizedRequestedPath) {\n return normalizedRequestedPath;\n }\n\n if (\n normalizedRequestedPath === normalizedWorkspaceRoot ||\n normalizedRequestedPath.startsWith(`${normalizedWorkspaceRoot}/`)\n ) {\n return normalizedRequestedPath;\n }\n\n if (normalizedRequestedPath === \"/workspace\") {\n return normalizedWorkspaceRoot;\n }\n\n if (normalizedRequestedPath.startsWith(\"/workspace/\")) {\n return `${normalizedWorkspaceRoot}/${normalizedRequestedPath.slice(\"/workspace/\".length)}`;\n }\n\n if (!normalizedRequestedPath.startsWith(\"/\")) {\n return `${normalizedWorkspaceRoot}/${normalizedRequestedPath.replace(/^\\/+/, \"\")}`;\n }\n\n return normalizedRequestedPath;\n}\n\nexport function buildIssueManagerRunPrompt(input: {\n issue: IssueManagerIssueSummary;\n runId: string;\n task: IssueManagerTaskSummary;\n workspaceRoot: string;\n}): string {\n const outputDir = resolveIssueManagerWorkspaceRuntimePath(\n input.workspaceRoot,\n buildIssueManagerRunOutputDir(\n input.issue.issueId,\n input.task.taskId,\n input.runId\n )\n );\n const workspaceFileRefs = collectIssueManagerWorkspaceReferencePaths(\n input.task.content || \"\",\n input.issue.content || \"\"\n )\n .map(\n (refPath) =>\n `- [file] ${resolveIssueManagerWorkspaceRuntimePath(input.workspaceRoot, refPath)}`\n )\n .join(\"\\n\");\n const taskContent = extractIssueManagerPlainTextFromContent(\n input.task.content || \"\"\n );\n const issueContent = extractIssueManagerPlainTextFromContent(\n input.issue.content || \"\"\n );\n\n return [\n \"你正在处理一个工作区任务。\",\n \"\",\n `Issue 标题:${input.issue.title}`,\n `Issue 内容:${issueContent || \"(无补充内容)\"}`,\n `Task 标题:${input.task.title}`,\n `Task 内容:${taskContent || \"(无补充内容)\"}`,\n `当前工作目录:${input.workspaceRoot}`,\n `任务输出目录:${outputDir}`,\n \"\",\n \"引用资料:\",\n workspaceFileRefs || \"- (无引用资料)\",\n \"\",\n \"执行要求:\",\n `1. 在 ${input.workspaceRoot} 下工作,不要切换到其他无关目录。`,\n \"2. 如需读取引用资料,请直接使用上面的路径。\",\n `3. 如果用户没有另行指定位置,所有最终产物都写入 ${outputDir}/。`,\n \"4. 至少输出 summary.md,说明处理结果、改动与结论。\",\n \"5. 不要把最终产物写到工作区之外。\"\n ].join(\"\\n\");\n}\n\nfunction collectIssueManagerWorkspaceReferencePaths(\n ...contents: string[]\n): string[] {\n const paths = new Set<string>();\n for (const content of contents) {\n for (const ref of extractIssueManagerWorkspaceFileLinksFromContent(\n content\n )) {\n paths.add(ref.path);\n }\n }\n return [...paths];\n}\n"],"mappings":"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","names":[]}
|