@muyichengshayu/promptx 0.1.44 → 0.1.46
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/CHANGELOG.md +12 -0
- package/apps/runner/src/index.js +5 -0
- package/apps/runner/src/runManager.js +58 -8
- package/apps/server/src/agentSessionDiscovery.js +588 -0
- package/apps/server/src/agents/claudeCodeRunner.js +4 -0
- package/apps/server/src/agents/codexRunner.js +8 -1
- package/apps/server/src/agents/index.js +8 -0
- package/apps/server/src/agents/openCodeRunner.js +4 -0
- package/apps/server/src/codex.js +49 -21
- package/apps/server/src/codexRoutes.js +8 -0
- package/apps/server/src/index.js +48 -15
- package/apps/web/dist/assets/CodexSessionManagerDialog-D32D8icG.js +3 -0
- package/apps/web/dist/assets/TaskDiffReviewDialog-BXO-i1n_.js +2 -0
- package/apps/web/dist/assets/TaskDiffReviewDialog-Np_9C-g7.css +1 -0
- package/apps/web/dist/assets/WorkbenchSettingsDialog-DzhyGob8.js +1 -0
- package/apps/web/dist/assets/WorkbenchView-CVt59HvL.css +1 -0
- package/apps/web/dist/assets/WorkbenchView-Cz6odhoQ.js +47 -0
- package/apps/web/dist/assets/index-BJ1LY28p.css +1 -0
- package/apps/web/dist/assets/index-BJ75IHuM.js +2 -0
- package/apps/web/dist/assets/{vendor-markdown-BENmzbO1.js → vendor-markdown-9aQhqbjm.js} +1 -1
- package/apps/web/dist/assets/{vendor-misc-DxKJ95A9.js → vendor-misc-u-M8sNMf.js} +1 -1
- package/apps/web/dist/assets/{vendor-router-iukOUtEP.js → vendor-router-Dn8q3tJM.js} +1 -1
- package/apps/web/dist/assets/{vendor-shiki-core-BnzZnwfD.js → vendor-shiki-core-1BqeTDsZ.js} +1 -1
- package/apps/web/dist/assets/vendor-shiki-lang-bash-zsQu0xn-.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-c-BDF8vgks.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-cpp-DyDAaXl6.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-csharp-BWfTXJXw.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-css-DbAm1fUO.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-diff-DmGC1G26.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-dockerfile-3x-8396r.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-dotenv--IVOlX2Q.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-fish-Bpv3hhJP.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-go-CIGC59jP.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-html-Bt_TLLZN.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-ini-BIllfys4.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-java-CXxu9crF.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-javascript-Cha7GNZm.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-json-CCZCjDUh.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-less-DAToytC5.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-markdown-C6lwMXFp.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-powershell-lrpuM0ez.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-python-Bi9rmtY7.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-rust-GTGDbY6A.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-sass-DFtHupN8.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-scss-BrfBNyyi.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-sql-H6--iFN-.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-toml-aTteTWYL.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-tsx-DoKZm6AV.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-typescript-B5awnqri.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-vue-CnrgQ7Z5.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-xml-Bv-TNPJt.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-lang-yaml-DpxUxQ6M.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-theme-github-dark-default-DBX58552.js +1 -0
- package/apps/web/dist/assets/vendor-shiki-theme-github-light-RLAvZv0q.js +1 -0
- package/apps/web/dist/assets/{vendor-tiptap-COqMdKic.js → vendor-tiptap-rwYdQb1L.js} +1 -1
- package/apps/web/dist/assets/{vendor-ui-DTqxu3Qf.js → vendor-ui-C5E3MVzU.js} +1 -1
- package/apps/web/dist/index.html +4 -4
- package/package.json +1 -1
- package/packages/shared/src/index.js +16 -0
- package/scripts/service.mjs +107 -14
- package/apps/web/dist/assets/CodexSessionManagerDialog-D7MUHe2h.js +0 -1
- package/apps/web/dist/assets/TaskDiffReviewDialog-C3WgGtC2.js +0 -2
- package/apps/web/dist/assets/TaskDiffReviewDialog-Dvg4WGbp.css +0 -1
- package/apps/web/dist/assets/WorkbenchSettingsDialog-DPnL7UAx.js +0 -1
- package/apps/web/dist/assets/WorkbenchView-CB2beALS.js +0 -47
- package/apps/web/dist/assets/WorkbenchView-caF5wQfm.css +0 -1
- package/apps/web/dist/assets/index-By0kbUJQ.js +0 -2
- package/apps/web/dist/assets/index-qxA1pzRS.css +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-bash-DvIe5yFX.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-c-DsfNMf57.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-cpp-DJeq1KY_.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-csharp-CfWxWYxW.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-css-oWiIfyaT.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-diff-DPOfCluu.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-dockerfile-CehKevaB.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-dotenv-OOt7jwxE.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-fish-BIcGBJxU.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-go-B46FgY49.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-html-D2lGgzRb.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-ini-BRO-4anr.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-java-CNTxAD-j.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-javascript-hLLwg4kE.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-json-DVxgtBUk.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-less-Bm0zE0qZ.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-markdown-Ctd6eGrZ.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-powershell-C4XrPiEo.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-python-DzOtNOWI.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-rust-BYDOAjeh.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-sass-CegctIKi.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-scss-COA3uazA.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-sql-DUzqOedr.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-toml-BPfcgC5W.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-tsx-wehLdarw.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-typescript-CdBtsRXV.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-vue-Dz_8CJBS.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-xml-DvWyHJVz.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-lang-yaml-DzJ1MBJQ.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-theme-github-dark-default-CgnhGCyu.js +0 -1
- package/apps/web/dist/assets/vendor-shiki-theme-github-light-UIi0TSpi.js +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.46
|
|
4
|
+
|
|
5
|
+
- 项目管理新增本地会话发现与候选选择:`Codex / Claude Code / OpenCode` 都支持读取本机已有 session,创建或编辑项目时可直接按当前工作目录筛选并选择已有会话,不再只能手填 session ID。
|
|
6
|
+
- 补齐三种引擎的会话发现链路与回写一致性:`Codex` 改为直接读取带 WAL 的本地 SQLite,避免最新线程漏读;`OpenCode` 优先读取官方本地数据库,并在仅于最终结果返回 `threadId` 时也能正确回写到项目绑定。
|
|
7
|
+
- 收敛项目管理弹窗交互细节:目录比较逻辑抽到共享模块统一处理,候选会话列表增加短时缓存,减少同目录下反复打开弹窗时的重复请求与闪烁。
|
|
8
|
+
|
|
9
|
+
## 0.1.45
|
|
10
|
+
|
|
11
|
+
- 新增工作台“通用设置”:可配置 `Enter 发送 / Shift+Enter 发送 / 仅按钮发送` 三种发送行为,设置保存在本地,刷新后仍可延续;同时修复回车发送时编辑器会先插入一行空白再发送的问题。
|
|
12
|
+
- 继续统一代码相关阅读区的排版与字体:补齐 `font-mono` 到 `Geist Mono` 的全站映射,源码查看左侧列表、右侧代码预览以及代码变更弹窗统一收口到 `12px`,并上调源码右侧代码行高,减少“这里 11px、那里 13px”带来的割裂感。
|
|
13
|
+
- 加固 Windows 下的 `promptx stop`:服务停止改为优先停 `runner` 再停 `server`,Windows 上增加 `taskkill /T` 进程树回收、强杀后二次确认和超时错误返回;同时为 `server / runner` 补齐 `SIGTERM / SIGINT / SIGBREAK` 优雅退出链路,减少“有时 stop 不掉”的情况。
|
|
14
|
+
|
|
3
15
|
## 0.1.44
|
|
4
16
|
|
|
5
17
|
- 修复源码相关搜索列表的路径截断:源码查看、目录选择与 `@` 文件选择器里的搜索结果,文件名与完整路径都改为优先完整展示,不再因为单行省略而看不清长路径。
|
package/apps/runner/src/index.js
CHANGED
|
@@ -114,6 +114,11 @@ process.once('SIGINT', () => {
|
|
|
114
114
|
process.once('SIGTERM', () => {
|
|
115
115
|
shutdown().finally(() => process.exit(0))
|
|
116
116
|
})
|
|
117
|
+
if (process.platform === 'win32') {
|
|
118
|
+
process.once('SIGBREAK', () => {
|
|
119
|
+
shutdown().finally(() => process.exit(0))
|
|
120
|
+
})
|
|
121
|
+
}
|
|
117
122
|
|
|
118
123
|
async function syncConfigFromServer() {
|
|
119
124
|
try {
|
|
@@ -20,6 +20,7 @@ const DEFAULT_STOP_TIMEOUT_MS = Math.max(1000, Number(process.env.PROMPTX_RUNNER
|
|
|
20
20
|
const STOP_TIMEOUT_BUFFER_MS = Math.max(500, Number(process.env.PROMPTX_RUNNER_STOP_TIMEOUT_BUFFER_MS) || 2000)
|
|
21
21
|
const DEFAULT_MAX_CONCURRENT_RUNS = Math.max(1, Number(process.env.PROMPTX_RUNNER_MAX_CONCURRENT_RUNS) || 3)
|
|
22
22
|
const RUNNER_ID = String(process.env.PROMPTX_RUNNER_ID || 'local-runner').trim() || 'local-runner'
|
|
23
|
+
const DISPOSE_POLL_INTERVAL_MS = Math.max(50, Number(process.env.PROMPTX_RUNNER_DISPOSE_POLL_MS) || 100)
|
|
23
24
|
|
|
24
25
|
function nowIso() {
|
|
25
26
|
return new Date().toISOString()
|
|
@@ -47,6 +48,34 @@ function normalizeSession(payload = {}) {
|
|
|
47
48
|
}
|
|
48
49
|
}
|
|
49
50
|
|
|
51
|
+
function applyThreadIdentity(session = {}, threadId = '') {
|
|
52
|
+
const value = String(threadId || '').trim()
|
|
53
|
+
if (!value) {
|
|
54
|
+
return session
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const engine = String(session?.engine || '').trim() || 'codex'
|
|
58
|
+
if (engine === 'codex') {
|
|
59
|
+
return {
|
|
60
|
+
...session,
|
|
61
|
+
codexThreadId: value,
|
|
62
|
+
engineThreadId: value,
|
|
63
|
+
running: true,
|
|
64
|
+
started: true,
|
|
65
|
+
updatedAt: nowIso(),
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return {
|
|
70
|
+
...session,
|
|
71
|
+
engineSessionId: value,
|
|
72
|
+
engineThreadId: value,
|
|
73
|
+
running: true,
|
|
74
|
+
started: true,
|
|
75
|
+
updatedAt: nowIso(),
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
50
79
|
function createRunSnapshot(context = {}) {
|
|
51
80
|
const stopControl = getChildStopDiagnostics(context.child)
|
|
52
81
|
return {
|
|
@@ -111,6 +140,13 @@ function classifyStoppedErrorReason(context = {}) {
|
|
|
111
140
|
return 'user_requested_after_error'
|
|
112
141
|
}
|
|
113
142
|
|
|
143
|
+
function sleep(ms) {
|
|
144
|
+
return new Promise((resolve) => {
|
|
145
|
+
const timer = setTimeout(resolve, Math.max(0, Number(ms) || 0))
|
|
146
|
+
timer.unref?.()
|
|
147
|
+
})
|
|
148
|
+
}
|
|
149
|
+
|
|
114
150
|
export function createRunManager(options = {}) {
|
|
115
151
|
const serverClient = options.serverClient
|
|
116
152
|
const logger = options.logger || console
|
|
@@ -410,6 +446,15 @@ export function createRunManager(options = {}) {
|
|
|
410
446
|
}
|
|
411
447
|
|
|
412
448
|
async function handleStreamCompletion(context, result = {}) {
|
|
449
|
+
const completedThreadId = String(result?.threadId || '').trim()
|
|
450
|
+
if (completedThreadId) {
|
|
451
|
+
const nextSession = applyThreadIdentity(context.session, completedThreadId)
|
|
452
|
+
if (nextSession !== context.session) {
|
|
453
|
+
context.session = nextSession
|
|
454
|
+
queueEvent(context, createSessionUpdatedEnvelopeEvent(context.session))
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
|
|
413
458
|
if (context.stopRequestedAt) {
|
|
414
459
|
await finalizeRun(context, 'stopped', {
|
|
415
460
|
responseMessage: String(result?.message || '').trim(),
|
|
@@ -468,14 +513,7 @@ export function createRunManager(options = {}) {
|
|
|
468
513
|
return
|
|
469
514
|
}
|
|
470
515
|
|
|
471
|
-
context.session =
|
|
472
|
-
...context.session,
|
|
473
|
-
codexThreadId: value,
|
|
474
|
-
engineThreadId: value,
|
|
475
|
-
running: true,
|
|
476
|
-
started: true,
|
|
477
|
-
updatedAt: nowIso(),
|
|
478
|
-
}
|
|
516
|
+
context.session = applyThreadIdentity(context.session, value)
|
|
479
517
|
queueEvent(context, createSessionUpdatedEnvelopeEvent(context.session))
|
|
480
518
|
},
|
|
481
519
|
})
|
|
@@ -743,6 +781,18 @@ export function createRunManager(options = {}) {
|
|
|
743
781
|
this.stopRun(context.runId, { forceAfterMs: 1000 }).catch(() => null)
|
|
744
782
|
)
|
|
745
783
|
)
|
|
784
|
+
|
|
785
|
+
const deadline = Date.now() + DEFAULT_STOP_TIMEOUT_MS + STOP_TIMEOUT_BUFFER_MS
|
|
786
|
+
while (activeRuns.size && Date.now() < deadline) {
|
|
787
|
+
await sleep(DISPOSE_POLL_INTERVAL_MS)
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
if (activeRuns.size) {
|
|
791
|
+
logger.warn?.({
|
|
792
|
+
activeRunCount: activeRuns.size,
|
|
793
|
+
runIds: [...activeRuns.keys()],
|
|
794
|
+
}, 'runner dispose timed out before all active runs settled')
|
|
795
|
+
}
|
|
746
796
|
},
|
|
747
797
|
}
|
|
748
798
|
}
|