@winspan/claude-forge 3.5.2 → 3.6.1

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 (62) hide show
  1. package/dist/autopilot/task-completion-detector.d.ts.map +1 -1
  2. package/dist/autopilot/task-completion-detector.js +10 -0
  3. package/dist/autopilot/task-completion-detector.js.map +1 -1
  4. package/dist/daemon/engine-registry.d.ts.map +1 -1
  5. package/dist/daemon/engine-registry.js +3 -0
  6. package/dist/daemon/engine-registry.js.map +1 -1
  7. package/dist/daemon/handler-context.d.ts +2 -0
  8. package/dist/daemon/handler-context.d.ts.map +1 -1
  9. package/dist/daemon/handlers/post-tool-use-handler.d.ts.map +1 -1
  10. package/dist/daemon/handlers/post-tool-use-handler.js +14 -30
  11. package/dist/daemon/handlers/post-tool-use-handler.js.map +1 -1
  12. package/dist/daemon/handlers/session-cleanup.d.ts +1 -0
  13. package/dist/daemon/handlers/session-cleanup.d.ts.map +1 -1
  14. package/dist/daemon/handlers/session-cleanup.js +24 -0
  15. package/dist/daemon/handlers/session-cleanup.js.map +1 -1
  16. package/dist/daemon/handlers/stop-handler.d.ts.map +1 -1
  17. package/dist/daemon/handlers/stop-handler.js +1 -0
  18. package/dist/daemon/handlers/stop-handler.js.map +1 -1
  19. package/dist/goal/goal-decomposer.d.ts.map +1 -1
  20. package/dist/goal/goal-decomposer.js +11 -1
  21. package/dist/goal/goal-decomposer.js.map +1 -1
  22. package/dist/pipeline/artifact-generator.d.ts.map +1 -1
  23. package/dist/pipeline/artifact-generator.js +50 -0
  24. package/dist/pipeline/artifact-generator.js.map +1 -1
  25. package/dist/pipeline/custom-node-type-store.d.ts +12 -0
  26. package/dist/pipeline/custom-node-type-store.d.ts.map +1 -0
  27. package/dist/pipeline/custom-node-type-store.js +54 -0
  28. package/dist/pipeline/custom-node-type-store.js.map +1 -0
  29. package/dist/pipeline/index.js +2 -2
  30. package/dist/pipeline/index.js.map +1 -1
  31. package/dist/pipeline/node-type-evolver.d.ts +18 -0
  32. package/dist/pipeline/node-type-evolver.d.ts.map +1 -0
  33. package/dist/pipeline/node-type-evolver.js +171 -0
  34. package/dist/pipeline/node-type-evolver.js.map +1 -0
  35. package/dist/pipeline/node-type-registry.d.ts +7 -1
  36. package/dist/pipeline/node-type-registry.d.ts.map +1 -1
  37. package/dist/pipeline/node-type-registry.js +169 -1
  38. package/dist/pipeline/node-type-registry.js.map +1 -1
  39. package/dist/pipeline/node-type-sync.d.ts.map +1 -1
  40. package/dist/pipeline/node-type-sync.js +10 -0
  41. package/dist/pipeline/node-type-sync.js.map +1 -1
  42. package/dist/pipeline/orchestration-enforcer.d.ts.map +1 -1
  43. package/dist/pipeline/orchestration-enforcer.js +4 -3
  44. package/dist/pipeline/orchestration-enforcer.js.map +1 -1
  45. package/dist/pipeline/store.d.ts.map +1 -1
  46. package/dist/pipeline/store.js +8 -2
  47. package/dist/pipeline/store.js.map +1 -1
  48. package/dist/pipeline/types.d.ts +1 -1
  49. package/dist/pipeline/types.d.ts.map +1 -1
  50. package/dist/types/core-types.d.ts +1 -1
  51. package/dist/types/core-types.d.ts.map +1 -1
  52. package/dist/types/core-types.js +13 -1
  53. package/dist/types/core-types.js.map +1 -1
  54. package/dist/web/routes/node-types.d.ts.map +1 -1
  55. package/dist/web/routes/node-types.js +101 -0
  56. package/dist/web/routes/node-types.js.map +1 -1
  57. package/dist/web-static/assets/index-B0aR8OSd.js +76 -0
  58. package/dist/web-static/assets/index-B3HcDvcB.css +1 -0
  59. package/dist/web-static/index.html +2 -2
  60. package/package.json +1 -1
  61. package/dist/web-static/assets/index-3iTzJKjz.js +0 -76
  62. package/dist/web-static/assets/index-CEtt07F4.css +0 -1
@@ -39,6 +39,15 @@ export function registerNodeTypeRoutes(app) {
39
39
  minToolCalls: nt.activity_threshold?.min_tool_calls,
40
40
  stagnationStrategy: nt.activity_threshold?.stagnation_strategy,
41
41
  },
42
+ expectedArtifacts: nt.expected_artifacts?.map(a => ({
43
+ type: a.type,
44
+ description: a.description,
45
+ pathPattern: a.path_pattern,
46
+ required: a.required,
47
+ minCount: a.min_count,
48
+ })) || [],
49
+ semanticValidation: nt.semantic_validation,
50
+ instructionSuffix: nt.instruction_suffix,
42
51
  }));
43
52
  res.json({ total: items.length, items });
44
53
  }
@@ -72,11 +81,103 @@ export function registerNodeTypeRoutes(app) {
72
81
  minToolCalls: nodeType.activity_threshold?.min_tool_calls,
73
82
  stagnationStrategy: nodeType.activity_threshold?.stagnation_strategy,
74
83
  },
84
+ expectedArtifacts: nodeType.expected_artifacts?.map(a => ({
85
+ type: a.type,
86
+ description: a.description,
87
+ pathPattern: a.path_pattern,
88
+ required: a.required,
89
+ minCount: a.min_count,
90
+ })) || [],
91
+ semanticValidation: nodeType.semantic_validation,
92
+ instructionSuffix: nodeType.instruction_suffix,
75
93
  });
76
94
  }
77
95
  catch (err) {
78
96
  handleError(err, res, 'node-type-detail');
79
97
  }
80
98
  });
99
+ // 创建自定义节点类型
100
+ app.post('/api/node-types', (req, res) => {
101
+ try {
102
+ const body = req.body;
103
+ const id = String(body.id || '').trim();
104
+ if (!id || !body.name) {
105
+ return res.status(400).json({ error: '缺少 id 或 name' });
106
+ }
107
+ if (registry.isBuiltin(id)) {
108
+ return res.status(400).json({ error: '不能覆盖内置节点类型' });
109
+ }
110
+ const nodeType = requestToNodeType(body);
111
+ registry.saveCustom(nodeType);
112
+ res.json({ success: true, id: nodeType.id });
113
+ }
114
+ catch (err) {
115
+ handleError(err, res, 'node-type-create');
116
+ }
117
+ });
118
+ // 更新节点类型
119
+ app.put('/api/node-types/:id', (req, res) => {
120
+ try {
121
+ const id = Array.isArray(req.params.id) ? req.params.id[0] : req.params.id;
122
+ if (registry.isBuiltin(id)) {
123
+ return res.status(400).json({ error: '内置节点类型不可修改' });
124
+ }
125
+ const existing = registry.resolve(id);
126
+ if (!existing) {
127
+ return res.status(404).json({ error: '节点类型不存在' });
128
+ }
129
+ const body = req.body;
130
+ const nodeType = requestToNodeType({ ...body, id });
131
+ registry.saveCustom(nodeType);
132
+ res.json({ success: true });
133
+ }
134
+ catch (err) {
135
+ handleError(err, res, 'node-type-update');
136
+ }
137
+ });
138
+ // 删除自定义节点类型
139
+ app.delete('/api/node-types/:id', (req, res) => {
140
+ try {
141
+ const id = Array.isArray(req.params.id) ? req.params.id[0] : req.params.id;
142
+ if (registry.isBuiltin(id)) {
143
+ return res.status(400).json({ error: '内置节点类型不可删除' });
144
+ }
145
+ const removed = registry.removeCustom(id);
146
+ if (!removed) {
147
+ return res.status(404).json({ error: '节点类型不存在或非自定义类型' });
148
+ }
149
+ res.json({ success: true });
150
+ }
151
+ catch (err) {
152
+ handleError(err, res, 'node-type-delete');
153
+ }
154
+ });
155
+ }
156
+ function requestToNodeType(body) {
157
+ const artifacts = (body.expectedArtifacts || []).map(a => ({
158
+ type: String(a.type || 'document'),
159
+ description: String(a.description || ''),
160
+ path_pattern: a.pathPattern ? String(a.pathPattern) : undefined,
161
+ required: a.required !== false,
162
+ min_count: typeof a.minCount === 'number' ? a.minCount : 1,
163
+ }));
164
+ return {
165
+ id: String(body.id),
166
+ name: String(body.name || ''),
167
+ description: String(body.description || ''),
168
+ semantic_category: (String(body.semanticCategory || 'code')),
169
+ completion: {
170
+ explicit_signal: 'FORGE_NODE_DONE',
171
+ heuristic: { require_write: true },
172
+ },
173
+ activity_threshold: {
174
+ min_tool_calls: typeof body.minToolCalls === 'number' ? body.minToolCalls : 20,
175
+ stagnation_strategy: (String(body.stagnationStrategy || 'balanced')),
176
+ },
177
+ default_skills: Array.isArray(body.defaultSkills) ? body.defaultSkills.map(String) : [],
178
+ expected_artifacts: artifacts.length > 0 ? artifacts : undefined,
179
+ semantic_validation: body.semanticValidation,
180
+ instruction_suffix: body.instructionSuffix ? String(body.instructionSuffix) : undefined,
181
+ };
81
182
  }
82
183
  //# sourceMappingURL=node-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-types.js","sourceRoot":"","sources":["../../../src/web/routes/node-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node-types.js","sourceRoot":"","sources":["../../../src/web/routes/node-types.ts"],"names":[],"mappings":"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"}