* Update an existing Skill on the Hub (new version).
(nodeId, skillId, content, opts, gene)
| 313 | * Update an existing Skill on the Hub (new version). |
| 314 | */ |
| 315 | function updateSkillOnHub(nodeId, skillId, content, opts, gene) { |
| 316 | var hubUrl = getHubUrl(); |
| 317 | if (!hubUrl) return Promise.resolve({ ok: false, error: 'no_hub_url' }); |
| 318 | |
| 319 | var tags = opts.tags || gene.signals_match || []; |
| 320 | tags = tags.filter(function (t) { |
| 321 | var s = String(t || '').trim(); |
| 322 | return s.length >= 3 && !/^\d+$/.test(s) && !/\d{10,}/.test(s); |
| 323 | }); |
| 324 | |
| 325 | var body = { |
| 326 | sender_id: nodeId, |
| 327 | skill_id: skillId, |
| 328 | content: content, |
| 329 | category: opts.category || gene.category || null, |
| 330 | tags: tags, |
| 331 | changelog: 'Iterative evolution update', |
| 332 | }; |
| 333 | |
| 334 | var endpoint = hubUrl.replace(/\/+$/, '') + '/a2a/skill/store/update'; |
| 335 | |
| 336 | return hubFetch(endpoint, { |
| 337 | method: 'PUT', |
| 338 | headers: buildSkillStoreHeaders(), |
| 339 | body: JSON.stringify(body), |
| 340 | signal: AbortSignal.timeout(15000), |
| 341 | }) |
| 342 | .then(function (res) { return res.json().then(function (data) { return { status: res.status, data: data }; }); }) |
| 343 | .then(function (result) { |
| 344 | if (result.status >= 200 && result.status < 300) { |
| 345 | return { ok: true, result: result.data }; |
| 346 | } |
| 347 | return { ok: false, error: result.data?.error || 'update_failed', status: result.status }; |
| 348 | }) |
| 349 | .catch(function (err) { return { ok: false, error: err.message }; }); |
| 350 | } |
| 351 | |
| 352 | module.exports = { |
| 353 | geneToSkillMd: geneToSkillMd, |
no test coverage detected