@roarpeng/graphflow 1.7.10 → 1.7.12
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 +14 -0
- package/README.md +4 -4
- package/dist/agents/brainstormer.d.ts.map +1 -1
- package/dist/agents/brainstormer.js +3 -5
- package/dist/agents/brainstormer.js.map +1 -1
- package/dist/agents/planner.d.ts +1 -0
- package/dist/agents/planner.d.ts.map +1 -1
- package/dist/agents/planner.js +7 -4
- package/dist/agents/planner.js.map +1 -1
- package/dist/agents/task-clauses.d.ts +12 -0
- package/dist/agents/task-clauses.d.ts.map +1 -0
- package/dist/agents/task-clauses.js +54 -0
- package/dist/agents/task-clauses.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project are documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.7.12] - 2026-07-28
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- **`graphflow_plan` 误拆分析维度**:冒号后的评价维度列表(如 assumptions、failure modes、validation gates)不再被 `,`/`、`/`,` 拆成独立并行任务节点;仅当各子句都像可执行任务时才弱分隔
|
|
10
|
+
- **brainstormer** 共用同一 `splitTaskClauses`,避免目标澄清变成名词碎片
|
|
11
|
+
|
|
12
|
+
## [1.7.11] - 2026-07-27
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- **Settings 工具页**:同步展示 v1.7.11 本版亮点(MCP home-cwd 修复、install/doctor JSON 自检、Bridge 飞轮、无需 LLM 能力)
|
|
17
|
+
- **扩展 README / marketplace description**:对齐最新版本与 FAQ
|
|
18
|
+
|
|
5
19
|
## [1.7.10] - 2026-07-27
|
|
6
20
|
|
|
7
21
|
### Fixed
|
package/README.md
CHANGED
|
@@ -48,7 +48,7 @@ npx @roarpeng/graphflow context preview "orchestrator" --json
|
|
|
48
48
|
|
|
49
49
|
> ???????????????????CodeGraph ??????LSP ???????Serena ??????????Repomix ????GraphFlow ??????"?? + ?? + ?? + ????"???????agent ????token??????????????
|
|
50
50
|
|
|
51
|
-
## ???????v1.7.
|
|
51
|
+
## ???????v1.7.12+??
|
|
52
52
|
|
|
53
53
|
| ????| ?? |
|
|
54
54
|
| --- | --- |
|
|
@@ -131,7 +131,7 @@ npx @roarpeng/graphflow context preview "orchestrator" --json
|
|
|
131
131
|
|
|
132
132
|
### ????
|
|
133
133
|
|
|
134
|
-
- ?????**v1.7.
|
|
134
|
+
- ?????**v1.7.12**?root + vscode-extension??npm?`@roarpeng/graphflow@1.7.12`
|
|
135
135
|
- **GitHub Release**?push ??`main` ??CI ??`windows-2022` ??????VSIX ???? [GitHub Releases](https://github.com/Roarpeng/GraphFlow/releases)
|
|
136
136
|
- **Open VSX**:`main` / `v*` Build 成功后自动幂等发布到 [Open VSX](https://open-vsx.org/extension/roarpeng/graphflow-tool)(密钥 `open_vsx_token`,namespace `roarpeng`,与 `package.json` publisher 一致;版本已存在则跳过)
|
|
137
137
|
- **npm ??**?push tag `v*`?? `v1.4.1`????[Publish npm](https://github.com/Roarpeng/GraphFlow/actions/workflows/publish-npm.yml) ????
|
|
@@ -450,8 +450,8 @@ cp graphflow.config.example.json graphflow.config.json
|
|
|
450
450
|
CLI ????????`code` / `cursor` ????
|
|
451
451
|
|
|
452
452
|
```bash
|
|
453
|
-
code --install-extension graphflow-tool-1.7.
|
|
454
|
-
cursor --install-extension graphflow-tool-1.7.
|
|
453
|
+
code --install-extension graphflow-tool-1.7.12.vsix
|
|
454
|
+
cursor --install-extension graphflow-tool-1.7.12.vsix
|
|
455
455
|
```
|
|
456
456
|
|
|
457
457
|
### ????
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brainstormer.d.ts","sourceRoot":"","sources":["../../src/agents/brainstormer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"brainstormer.d.ts","sourceRoot":"","sources":["../../src/agents/brainstormer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGrF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAerD;AAID,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,cAAc,EACzB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC,CA2BnB"}
|
|
@@ -4,16 +4,14 @@ exports.brainstormTask = brainstormTask;
|
|
|
4
4
|
exports.brainstormTaskLlm = brainstormTaskLlm;
|
|
5
5
|
const logger_1 = require("../utils/logger");
|
|
6
6
|
const provider_executor_1 = require("../routing/provider-executor");
|
|
7
|
+
const task_clauses_1 = require("./task-clauses");
|
|
7
8
|
function brainstormTask(task) {
|
|
8
9
|
const normalized = task.trim();
|
|
9
10
|
if (!normalized) {
|
|
10
11
|
return ["澄清目标: 任务描述不能为空"];
|
|
11
12
|
}
|
|
12
|
-
const clauses = normalized
|
|
13
|
-
|
|
14
|
-
.map((part) => part.trim())
|
|
15
|
-
.filter(Boolean);
|
|
16
|
-
const focus = clauses.slice(0, 3);
|
|
13
|
+
const clauses = (0, task_clauses_1.splitTaskClauses)(normalized);
|
|
14
|
+
const focus = clauses.length > 1 ? clauses.slice(0, 3) : [normalized];
|
|
17
15
|
const ideas = [
|
|
18
16
|
`目标澄清: 明确要完成 ${focus.join("、")}`,
|
|
19
17
|
`实现路径: 先拆分子任务并并行推进,再做集成校验`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brainstormer.js","sourceRoot":"","sources":["../../src/agents/brainstormer.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"brainstormer.js","sourceRoot":"","sources":["../../src/agents/brainstormer.ts"],"names":[],"mappings":";;AAKA,wCAeC;AAID,8CA+BC;AAvDD,4CAAyC;AAEzC,oEAAqF;AACrF,iDAAkD;AAElD,SAAgB,cAAc,CAAC,IAAY;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,+BAAgB,EAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG;QACZ,eAAe,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAChC,0BAA0B;QAC1B,sBAAsB;KACvB,CAAC;IAEF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAExB,KAAK,UAAU,iBAAiB,CACrC,IAAY,EACZ,SAAyB,EACzB,OAAuB;IAEvB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,MAAM,GAAG;QACb,6DAA6D;QAC7D,mCAAmC;QACnC,wDAAwD;QACxD,SAAS,UAAU,EAAE;KACtB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,IAAA,qCAAiB,EAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,cAAc,CAAC,CAAC;QACxC,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW;IACvC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,GAAG;SACP,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;SACnF,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC"}
|
package/dist/agents/planner.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { TaskNode } from "../core/types";
|
|
2
2
|
import type { ModelSelection } from "../routing/model-router";
|
|
3
3
|
import { type PromptContext } from "../routing/provider-executor";
|
|
4
|
+
export { looksLikeActionableTaskClause, splitTaskClauses } from "./task-clauses";
|
|
4
5
|
export declare function planTasks(task: string, skillHints?: string[]): TaskNode[];
|
|
5
6
|
export interface PlanTasksLlmOptions {
|
|
6
7
|
selection: ModelSelection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../src/agents/planner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../src/agents/planner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGrF,OAAO,EAAE,6BAA6B,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAajF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAsBzE;AAUD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,cAAc,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAID,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAkBlG"}
|
package/dist/agents/planner.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.splitTaskClauses = exports.looksLikeActionableTaskClause = void 0;
|
|
3
4
|
exports.planTasks = planTasks;
|
|
4
5
|
exports.planTasksLlm = planTasksLlm;
|
|
5
6
|
const logger_1 = require("../utils/logger");
|
|
6
7
|
const provider_executor_1 = require("../routing/provider-executor");
|
|
8
|
+
const task_clauses_1 = require("./task-clauses");
|
|
9
|
+
var task_clauses_2 = require("./task-clauses");
|
|
10
|
+
Object.defineProperty(exports, "looksLikeActionableTaskClause", { enumerable: true, get: function () { return task_clauses_2.looksLikeActionableTaskClause; } });
|
|
11
|
+
Object.defineProperty(exports, "splitTaskClauses", { enumerable: true, get: function () { return task_clauses_2.splitTaskClauses; } });
|
|
7
12
|
function toNode(id, description, dependencies) {
|
|
8
13
|
return {
|
|
9
14
|
id,
|
|
@@ -15,10 +20,7 @@ function toNode(id, description, dependencies) {
|
|
|
15
20
|
};
|
|
16
21
|
}
|
|
17
22
|
function planTasks(task, skillHints) {
|
|
18
|
-
const parts = task
|
|
19
|
-
.split(/\band\b|,|;|并且|以及|然后|接着|同时|再|、|,|;|。/i)
|
|
20
|
-
.map((item) => item.trim())
|
|
21
|
-
.filter((item) => item.length > 0);
|
|
23
|
+
const parts = (0, task_clauses_1.splitTaskClauses)(task);
|
|
22
24
|
if (parts.length <= 1) {
|
|
23
25
|
const baseTask = task.trim();
|
|
24
26
|
return [
|
|
@@ -61,6 +63,7 @@ function buildPlannerPrompt(task, options) {
|
|
|
61
63
|
lines.push("- id: short string like task-1");
|
|
62
64
|
lines.push("- description: concrete actionable subtask");
|
|
63
65
|
lines.push("- dependencies: array of ids this task depends on (may be empty)");
|
|
66
|
+
lines.push("- Do NOT split a single analytical request into noun-phrase dimensions listed after a colon (e.g. assumptions, failure modes).");
|
|
64
67
|
lines.push(`Task: ${task}`);
|
|
65
68
|
if (options.skillHints && options.skillHints.length > 0) {
|
|
66
69
|
lines.push(`Skill hints: ${options.skillHints.join(", ")}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner.js","sourceRoot":"","sources":["../../src/agents/planner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"planner.js","sourceRoot":"","sources":["../../src/agents/planner.ts"],"names":[],"mappings":";;;AAmBA,8BAsBC;AAqBD,oCAkBC;AAhFD,4CAAyC;AAGzC,oEAAqF;AACrF,iDAAkD;AAElD,+CAAiF;AAAxE,6HAAA,6BAA6B,OAAA;AAAE,gHAAA,gBAAgB,OAAA;AAExD,SAAS,MAAM,CAAC,EAAU,EAAE,WAAmB,EAAE,YAAsB;IACrE,OAAO;QACL,EAAE;QACF,WAAW;QACX,YAAY;QACZ,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,WAAW;QACzB,UAAU,EAAE,CAAC;KACd,CAAC;AACJ,CAAC;AAED,SAAgB,SAAS,CAAC,IAAY,EAAE,UAAqB;IAC3D,MAAM,KAAK,GAAG,IAAA,+BAAgB,EAAC,IAAI,CAAC,CAAC;IAErC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,OAAO;YACL,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,UAAU,QAAQ,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC;YACtE,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,OAAO,QAAQ,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;YAC3E,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,UAAU,QAAQ,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;SAC/E,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC9C,MAAM,CAAC,QAAQ,KAAK,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAClE,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,CACtB,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,EAC1B,cAAc,CAAC,yBAAyB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,EACvE,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CACrC,CAAC;IAEF,OAAO,CAAC,GAAG,aAAa,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,UAAqB;IACzD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,GAAG,IAAI,kBAAkB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1D,CAAC;AAWD,MAAM,cAAc,GAAG,CAAC,CAAC;AAElB,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,OAA4B;IAC3E,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,IAAA,qCAAiB,EAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACvF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,cAAc,CAAC,CAAC;QACxC,OAAO,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAClD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CACzF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,OAA4B;IACpE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAC3E,KAAK,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;IAC3F,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IACzD,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;IAC/E,KAAK,CAAC,IAAI,CACR,gIAAgI,CACjI,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC5B,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClE,KAAK,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACrD,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC,CAAC,CAAC;QACJ,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,8BAA8B,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;QACpE,KAAK,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAQD,SAAS,gBAAgB,CAAC,GAAW;IACnC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACtB,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,cAAc,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAsB,EAAE,CAAC;IACpC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxC,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,KAAgC,CAAC;QAChD,MAAM,EAAE,GAAG,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,EAAE,CAAC;QACjH,MAAM,WAAW,GAAG,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,SAAS;QACX,CAAC;QACD,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC;QAC5C,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;YACjD,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC;YACzE,CAAC,CAAC,EAAE,CAAC;QACP,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACpE,IAAI,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAChC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,KAAK,IAAI,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,GAAG,KAAK,CAAC;YACjB,CAAC;iBAAM,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBACvB,MAAM,GAAG,IAAI,CAAC;YAChB,CAAC;iBAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACtB,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,QAAQ,GAAG,IAAI,CAAC;YAChB,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACtB,KAAK,IAAI,CAAC,CAAC;YACX,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* True when a clause looks like an actionable subtask rather than a noun-phrase
|
|
3
|
+
* dimension of a single analysis request.
|
|
4
|
+
*/
|
|
5
|
+
export declare function looksLikeActionableTaskClause(part: string): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Split a user task into independent work clauses for heuristic planning.
|
|
8
|
+
* Prefer conjunction-style separators; only use commas/顿号 when every part
|
|
9
|
+
* looks actionable so analytical lists stay one intent.
|
|
10
|
+
*/
|
|
11
|
+
export declare function splitTaskClauses(task: string): string[];
|
|
12
|
+
//# sourceMappingURL=task-clauses.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-clauses.d.ts","sourceRoot":"","sources":["../../src/agents/task-clauses.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAUnE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAuBvD"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.looksLikeActionableTaskClause = looksLikeActionableTaskClause;
|
|
4
|
+
exports.splitTaskClauses = splitTaskClauses;
|
|
5
|
+
/** Strong delimiters usually mark independent work items. */
|
|
6
|
+
const STRONG_TASK_SPLIT = /\band\b|;|并且|以及|然后|接着|同时|;|。/i;
|
|
7
|
+
/**
|
|
8
|
+
* Weak delimiters often mark list items inside one intent
|
|
9
|
+
* (e.g. "evaluate X: assumptions、failure modes、validation gates").
|
|
10
|
+
*/
|
|
11
|
+
const WEAK_TASK_SPLIT = /,|、|,/;
|
|
12
|
+
const ACTION_HINT = /\b(update|add|fix|refactor|implement|create|write|test|build|remove|delete|migrate|analyze|analyse|evaluate|review|design|improve|optimize|install|configure|document|validate|verify|investigate|compare|rank)\b|(更新|添加|增加|修复|重构|实现|创建|编写|测试|构建|删除|迁移|分析|评估|审查|设计|改进|优化|安装|配置|校验|验证|调研|对比)/i;
|
|
13
|
+
/**
|
|
14
|
+
* True when a clause looks like an actionable subtask rather than a noun-phrase
|
|
15
|
+
* dimension of a single analysis request.
|
|
16
|
+
*/
|
|
17
|
+
function looksLikeActionableTaskClause(part) {
|
|
18
|
+
const text = part.trim().replace(/^[::\-–—]\s*/, "");
|
|
19
|
+
if (text.length < 6) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
if (ACTION_HINT.test(text)) {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
// Short noun phrases ("failure modes", "validation gates") are not tasks.
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Split a user task into independent work clauses for heuristic planning.
|
|
30
|
+
* Prefer conjunction-style separators; only use commas/顿号 when every part
|
|
31
|
+
* looks actionable so analytical lists stay one intent.
|
|
32
|
+
*/
|
|
33
|
+
function splitTaskClauses(task) {
|
|
34
|
+
const normalized = task.trim();
|
|
35
|
+
if (!normalized) {
|
|
36
|
+
return [];
|
|
37
|
+
}
|
|
38
|
+
const strongParts = normalized
|
|
39
|
+
.split(STRONG_TASK_SPLIT)
|
|
40
|
+
.map((item) => item.trim())
|
|
41
|
+
.filter((item) => item.length > 0);
|
|
42
|
+
if (strongParts.length > 1) {
|
|
43
|
+
return strongParts;
|
|
44
|
+
}
|
|
45
|
+
const weakParts = normalized
|
|
46
|
+
.split(WEAK_TASK_SPLIT)
|
|
47
|
+
.map((item) => item.trim())
|
|
48
|
+
.filter((item) => item.length > 0);
|
|
49
|
+
if (weakParts.length > 1 && weakParts.every((part) => looksLikeActionableTaskClause(part))) {
|
|
50
|
+
return weakParts;
|
|
51
|
+
}
|
|
52
|
+
return [normalized];
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=task-clauses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-clauses.js","sourceRoot":"","sources":["../../src/agents/task-clauses.ts"],"names":[],"mappings":";;AAgBA,sEAUC;AAOD,4CAuBC;AAxDD,6DAA6D;AAC7D,MAAM,iBAAiB,GAAG,+BAA+B,CAAC;AAE1D;;;GAGG;AACH,MAAM,eAAe,GAAG,OAAO,CAAC;AAEhC,MAAM,WAAW,GACf,8RAA8R,CAAC;AAEjS;;;GAGG;AACH,SAAgB,6BAA6B,CAAC,IAAY;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,0EAA0E;IAC1E,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAAG,UAAU;SAC3B,KAAK,CAAC,iBAAiB,CAAC;SACxB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,SAAS,GAAG,UAAU;SACzB,KAAK,CAAC,eAAe,CAAC;SACtB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC3F,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,UAAU,CAAC,CAAC;AACtB,CAAC"}
|