@hunterzhu/pulse-cli 0.4.2 → 0.4.4
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/bin.js +3 -0
- package/dist/commands/resume.js +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/release-highlights.generated.js +32 -0
- package/package.json +2 -2
package/dist/bin.js
CHANGED
|
@@ -170,6 +170,7 @@ export async function hostOptions(parsed) {
|
|
|
170
170
|
const maxOutputTokens = option(parsed.options, 'max-output-tokens') ?? process.env.PULSE_MAX_OUTPUT_TOKENS;
|
|
171
171
|
const reasoningEffort = option(parsed.options, 'reasoning-effort') ?? process.env.PULSE_REASONING_EFFORT;
|
|
172
172
|
const maxTurns = option(parsed.options, 'max-turns') ?? process.env.PULSE_MAX_TURNS;
|
|
173
|
+
const maxRuntimeMs = option(parsed.options, 'max-runtime-ms') ?? process.env.PULSE_MAX_RUNTIME_MS;
|
|
173
174
|
const autoCompactPercent = option(parsed.options, 'auto-compact-percent') ?? process.env.PULSE_AUTO_COMPACT_PERCENT;
|
|
174
175
|
const apiKeyEnv = profile.apiKeyEnv ?? (profile.provider === 'anthropic' ? 'ANTHROPIC_API_KEY' : 'OPENAI_API_KEY');
|
|
175
176
|
const apiKey = process.env[apiKeyEnv];
|
|
@@ -184,6 +185,7 @@ export async function hostOptions(parsed) {
|
|
|
184
185
|
const configuredReasoningEffort = reasoningEffort === 'low' || reasoningEffort === 'medium' || reasoningEffort === 'high' ? reasoningEffort : modelSelection.reasoningEffort ?? profile.reasoningEffort;
|
|
185
186
|
const configuredToolChoice = profile.toolChoice;
|
|
186
187
|
const configuredMaxTurns = parsePositiveInteger(maxTurns) ?? config.maxTurns;
|
|
188
|
+
const configuredMaxRuntimeMs = parsePositiveInteger(maxRuntimeMs) ?? config.maxRuntimeMs;
|
|
187
189
|
const configuredAutoCompactPercent = parsePositiveInteger(autoCompactPercent) ?? config.autoCompactPercent;
|
|
188
190
|
const provider = {
|
|
189
191
|
provider: profile.provider,
|
|
@@ -378,6 +380,7 @@ export async function hostOptions(parsed) {
|
|
|
378
380
|
...(mockParallelPlan === undefined ? {} : { mockParallelPlan }),
|
|
379
381
|
...(approvalMode === undefined ? {} : { approvalMode }),
|
|
380
382
|
...(configuredMaxTurns === undefined ? {} : { maxTurns: configuredMaxTurns }),
|
|
383
|
+
...(configuredMaxRuntimeMs === undefined ? {} : { maxRuntimeMs: configuredMaxRuntimeMs }),
|
|
381
384
|
...(configuredAutoCompactPercent === undefined ? {} : { autoCompactPercent: Math.min(90, configuredAutoCompactPercent) }),
|
|
382
385
|
...(allowNetwork === undefined ? {} : { allowNetwork }),
|
|
383
386
|
...(config.networkHosts === undefined ? {} : { networkHosts: config.networkHosts }),
|
package/dist/commands/resume.js
CHANGED
|
@@ -31,7 +31,7 @@ export async function runResume(options, conversationId, task, format = 'text',
|
|
|
31
31
|
try {
|
|
32
32
|
await host.init();
|
|
33
33
|
const run = task
|
|
34
|
-
? await host.sendMessage(conversationId, { text: task, format: format === 'jsonl' ? 'jsonl' : 'text' })
|
|
34
|
+
? await host.sendMessage(conversationId, { text: task, continueTask: true, format: format === 'jsonl' ? 'jsonl' : 'text' })
|
|
35
35
|
: await host.resumeRun(conversationId);
|
|
36
36
|
activeRun = run;
|
|
37
37
|
let streamedText = false;
|
package/dist/config.d.ts
CHANGED
|
@@ -70,6 +70,8 @@ export interface PulseCliConfig {
|
|
|
70
70
|
capabilities?: PulseCliCapabilities;
|
|
71
71
|
approvalMode?: 'read-only' | 'ask' | 'auto';
|
|
72
72
|
maxTurns?: number;
|
|
73
|
+
/** Wall-clock limit for one run. Unset keeps the server default of 15 minutes. */
|
|
74
|
+
maxRuntimeMs?: number;
|
|
73
75
|
/** Percent of maxContextTokens that triggers automatic history compaction. Clamped to 1–90. */
|
|
74
76
|
autoCompactPercent?: number;
|
|
75
77
|
/** Explicit network destinations; workspace configuration cannot grant these. */
|
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
// Generated from CHANGELOG.md and CHANGELOG.en.md by scripts/release/sync-cli-highlights.mjs. Do not edit manually.
|
|
2
2
|
export const releaseHighlights = {
|
|
3
|
+
"0.4.4": [
|
|
4
|
+
{
|
|
5
|
+
"zh": "多阶段任务获得完整工具定义,并保留重试和依赖阶段的验收证据;补验证或补报告不再强制重复修改文件。",
|
|
6
|
+
"en": "Multi-stage tasks receive complete tool definitions and retain verified evidence across retries and dependencies; verification or report corrections no longer force redundant file edits."
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"zh": "验证阶段增加进度检查点,减少重复运行已完成检查;新文件优先小步创建,未提交草稿不能算作完成。",
|
|
10
|
+
"en": "Added validation progress checkpoints to reduce repeated completed checks; new files favor small creation steps, and uncommitted drafts do not count as finished work."
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"zh": "最终验收不再将无法验证的结果视为成功,缺失交付可恢复处理,最终报告保留实际交付内容。",
|
|
14
|
+
"en": "Final acceptance no longer treats unverifiable results as success, missing deliverables can recover, and final reports retain the actual delivered content."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"zh": "改善 DeepSeek 工具调用与结构化输出恢复、只读任务识别以及修改前基线测试流程。",
|
|
18
|
+
"en": "Improved DeepSeek tool-call and structured-output recovery, read-only task recognition, and baseline testing before edits."
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"zh": "`pulse resume` 继承原任务,追问上轮结果时保留只读语义;支持通过 `--max-runtime-ms`、环境变量或配置设置运行时限。",
|
|
22
|
+
"en": "`pulse resume` inherits the original task and keeps previous-run summaries read-only; runtime limits can be set through `--max-runtime-ms`, an environment variable, or configuration."
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"0.4.3": [
|
|
26
|
+
{
|
|
27
|
+
"zh": "OpenAI 兼容接口会按配置发送 reasoning effort;o1 与 o3 系列改用 `max_completion_tokens`。某个模型拒绝该参数时,只停用这一模型并重试。",
|
|
28
|
+
"en": "OpenAI-compatible requests send the configured reasoning effort, and o1/o3 models use `max_completion_tokens`. If one model rejects that parameter, only that model is disabled and the request is retried."
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"zh": "DeepSeek 协议仍使用 JSON object 和 schema 提示。其他协议即使模型名包含 deepseek,也继续使用 JSON schema。",
|
|
32
|
+
"en": "The DeepSeek protocol still uses JSON object mode with schema guidance. Other protocols keep JSON schema even when the model name contains deepseek."
|
|
33
|
+
}
|
|
34
|
+
],
|
|
3
35
|
"0.4.2": [
|
|
4
36
|
{
|
|
5
37
|
"zh": "阶段验收要求每条引用都有效;涉及文件、命令或测试的阶段必须有成功的工具证据,纯写作阶段仍可凭候选结果通过。",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hunterzhu/pulse-cli",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.4",
|
|
4
4
|
"description": "A local-first AI task assistant for coding, research, and file workflows.",
|
|
5
5
|
"license": "PolyForm-Noncommercial-1.0.0",
|
|
6
6
|
"keywords": [
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"registry": "https://registry.npmjs.org"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@hunterzhu/pulse-server": "0.4.
|
|
39
|
+
"@hunterzhu/pulse-server": "0.4.4",
|
|
40
40
|
"chalk": "^5.4.1",
|
|
41
41
|
"highlight.js": "^11.10.0",
|
|
42
42
|
"ink": "^7.1.1",
|