@lemoncat7/dsh-partner 1.11.2 → 1.13.0

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 (156) hide show
  1. package/README.md +25 -1
  2. package/docs/architecture.md +1 -0
  3. package/docs/memory-quality.md +115 -0
  4. package/docs/releases/1.12.0.md +25 -0
  5. package/lib/agent-runtime.d.ts +1 -1
  6. package/lib/agent-runtime.d.ts.map +1 -1
  7. package/lib/agent-runtime.js +16 -11
  8. package/lib/agent-runtime.js.map +1 -1
  9. package/lib/api/features/memory-layers-api.d.ts +5 -0
  10. package/lib/api/features/memory-layers-api.d.ts.map +1 -0
  11. package/lib/api/features/memory-layers-api.js +42 -0
  12. package/lib/api/features/memory-layers-api.js.map +1 -0
  13. package/lib/api/features/workspace-api.d.ts.map +1 -1
  14. package/lib/api/features/workspace-api.js +7 -0
  15. package/lib/api/features/workspace-api.js.map +1 -1
  16. package/lib/api/http.d.ts +1 -1
  17. package/lib/api/http.d.ts.map +1 -1
  18. package/lib/api/http.js +2 -2
  19. package/lib/api/http.js.map +1 -1
  20. package/lib/api.d.ts.map +1 -1
  21. package/lib/api.js +5 -1
  22. package/lib/api.js.map +1 -1
  23. package/lib/client-api.d.ts +2 -0
  24. package/lib/client-api.d.ts.map +1 -1
  25. package/lib/client.d.ts.map +1 -1
  26. package/lib/client.js +4902 -4453
  27. package/lib/client.js.map +4 -4
  28. package/lib/collaboration/composition.js +7 -3
  29. package/lib/collaboration/composition.js.map +1 -1
  30. package/lib/concern-store.d.ts +1 -0
  31. package/lib/concern-store.d.ts.map +1 -1
  32. package/lib/concern-store.js +17 -0
  33. package/lib/concern-store.js.map +1 -1
  34. package/lib/daily-review.d.ts +1 -0
  35. package/lib/daily-review.d.ts.map +1 -1
  36. package/lib/daily-review.js +14 -3
  37. package/lib/daily-review.js.map +1 -1
  38. package/lib/index.d.ts.map +1 -1
  39. package/lib/index.js +13 -0
  40. package/lib/index.js.map +1 -1
  41. package/lib/memory-artifacts.d.ts +42 -0
  42. package/lib/memory-artifacts.d.ts.map +1 -0
  43. package/lib/memory-artifacts.js +120 -0
  44. package/lib/memory-artifacts.js.map +1 -0
  45. package/lib/memory-domain.d.ts +10 -0
  46. package/lib/memory-domain.d.ts.map +1 -1
  47. package/lib/memory-journal.d.ts +16 -0
  48. package/lib/memory-journal.d.ts.map +1 -0
  49. package/lib/memory-journal.js +51 -0
  50. package/lib/memory-journal.js.map +1 -0
  51. package/lib/memory-prompt-context.d.ts.map +1 -1
  52. package/lib/memory-prompt-context.js +2 -1
  53. package/lib/memory-prompt-context.js.map +1 -1
  54. package/lib/memory-quality.d.ts +4 -0
  55. package/lib/memory-quality.d.ts.map +1 -0
  56. package/lib/memory-quality.js +16 -0
  57. package/lib/memory-quality.js.map +1 -0
  58. package/lib/memory-reflection.d.ts +15 -2
  59. package/lib/memory-reflection.d.ts.map +1 -1
  60. package/lib/memory-reflection.js +101 -17
  61. package/lib/memory-reflection.js.map +1 -1
  62. package/lib/memory-retrieval.d.ts +5 -0
  63. package/lib/memory-retrieval.d.ts.map +1 -0
  64. package/lib/memory-retrieval.js +20 -0
  65. package/lib/memory-retrieval.js.map +1 -0
  66. package/lib/memory-store.d.ts +26 -2
  67. package/lib/memory-store.d.ts.map +1 -1
  68. package/lib/memory-store.js +142 -50
  69. package/lib/memory-store.js.map +1 -1
  70. package/lib/memory-worker.d.ts +25 -0
  71. package/lib/memory-worker.d.ts.map +1 -0
  72. package/lib/memory-worker.js +42 -0
  73. package/lib/memory-worker.js.map +1 -0
  74. package/lib/profile-domain.d.ts.map +1 -1
  75. package/lib/profile-domain.js +12 -4
  76. package/lib/profile-domain.js.map +1 -1
  77. package/lib/skills/import-request.d.ts +3 -0
  78. package/lib/skills/import-request.d.ts.map +1 -0
  79. package/lib/skills/import-request.js +26 -0
  80. package/lib/skills/import-request.js.map +1 -0
  81. package/lib/skills/package-zip.d.ts +5 -0
  82. package/lib/skills/package-zip.d.ts.map +1 -0
  83. package/lib/skills/package-zip.js +75 -0
  84. package/lib/skills/package-zip.js.map +1 -0
  85. package/lib/skills/package.d.ts +15 -0
  86. package/lib/skills/package.d.ts.map +1 -0
  87. package/lib/skills/package.js +48 -0
  88. package/lib/skills/package.js.map +1 -0
  89. package/lib/skills/repository.d.ts +2 -0
  90. package/lib/skills/repository.d.ts.map +1 -1
  91. package/lib/skills/repository.js +7 -0
  92. package/lib/skills/repository.js.map +1 -1
  93. package/lib/skills/service.d.ts +2 -0
  94. package/lib/skills/service.d.ts.map +1 -1
  95. package/lib/skills/service.js +10 -2
  96. package/lib/skills/service.js.map +1 -1
  97. package/lib/skills/task-planning.d.ts +2 -2
  98. package/lib/skills/task-planning.d.ts.map +1 -1
  99. package/lib/skills/task-planning.js +8 -1
  100. package/lib/skills/task-planning.js.map +1 -1
  101. package/lib/ui/memory/automation-settings.d.ts +8 -0
  102. package/lib/ui/memory/automation-settings.d.ts.map +1 -0
  103. package/lib/ui/memory/automation-settings.js +60 -0
  104. package/lib/ui/memory/automation-settings.js.map +1 -0
  105. package/lib/ui/memory/concern-board.d.ts +12 -0
  106. package/lib/ui/memory/concern-board.d.ts.map +1 -0
  107. package/lib/ui/memory/concern-board.js +129 -0
  108. package/lib/ui/memory/concern-board.js.map +1 -0
  109. package/lib/ui/memory/concern-panel.d.ts +7 -0
  110. package/lib/ui/memory/concern-panel.d.ts.map +1 -0
  111. package/lib/ui/memory/concern-panel.js +62 -0
  112. package/lib/ui/memory/concern-panel.js.map +1 -0
  113. package/lib/ui/memory/experience-view.d.ts +8 -0
  114. package/lib/ui/memory/experience-view.d.ts.map +1 -0
  115. package/lib/ui/memory/experience-view.js +52 -0
  116. package/lib/ui/memory/experience-view.js.map +1 -0
  117. package/lib/ui/memory/history-view.d.ts +6 -0
  118. package/lib/ui/memory/history-view.d.ts.map +1 -0
  119. package/lib/ui/memory/history-view.js +40 -0
  120. package/lib/ui/memory/history-view.js.map +1 -0
  121. package/lib/ui/memory/memory-cards.d.ts +14 -0
  122. package/lib/ui/memory/memory-cards.d.ts.map +1 -0
  123. package/lib/ui/memory/memory-cards.js +17 -0
  124. package/lib/ui/memory/memory-cards.js.map +1 -0
  125. package/lib/ui/memory/memory-detail.d.ts +8 -0
  126. package/lib/ui/memory/memory-detail.d.ts.map +1 -0
  127. package/lib/ui/memory/memory-detail.js +45 -0
  128. package/lib/ui/memory/memory-detail.js.map +1 -0
  129. package/lib/ui/memory/memory-graph.d.ts +8 -0
  130. package/lib/ui/memory/memory-graph.d.ts.map +1 -0
  131. package/lib/ui/memory/memory-graph.js +43 -0
  132. package/lib/ui/memory/memory-graph.js.map +1 -0
  133. package/lib/ui/memory/memory-library.d.ts +9 -0
  134. package/lib/ui/memory/memory-library.d.ts.map +1 -0
  135. package/lib/ui/memory/memory-library.js +38 -0
  136. package/lib/ui/memory/memory-library.js.map +1 -0
  137. package/lib/ui/memory/memory-panel.d.ts +10 -0
  138. package/lib/ui/memory/memory-panel.d.ts.map +1 -0
  139. package/lib/ui/memory/memory-panel.js +48 -0
  140. package/lib/ui/memory/memory-panel.js.map +1 -0
  141. package/lib/ui/memory/types.d.ts +44 -0
  142. package/lib/ui/memory/types.d.ts.map +1 -0
  143. package/lib/ui/memory/types.js +2 -0
  144. package/lib/ui/memory/types.js.map +1 -0
  145. package/lib/ui/memory/use-memory-resource.d.ts +9 -0
  146. package/lib/ui/memory/use-memory-resource.d.ts.map +1 -0
  147. package/lib/ui/memory/use-memory-resource.js +65 -0
  148. package/lib/ui/memory/use-memory-resource.js.map +1 -0
  149. package/lib/ui/skill-import-dialog.d.ts +5 -0
  150. package/lib/ui/skill-import-dialog.d.ts.map +1 -0
  151. package/lib/ui/skill-import-dialog.js +72 -0
  152. package/lib/ui/skill-import-dialog.js.map +1 -0
  153. package/lib/ui/skills-panel.d.ts.map +1 -1
  154. package/lib/ui/skills-panel.js +3 -1
  155. package/lib/ui/skills-panel.js.map +1 -1
  156. package/package.json +3 -1
@@ -18,6 +18,9 @@ export function isProfileBaselineEntry(memory) {
18
18
  && (memory.locked === true || (memory.confidence >= PROFILE_CONFIDENCE_MIN && memory.importance >= PROFILE_IMPORTANCE_MIN));
19
19
  }
20
20
  export function buildProfileSnapshot(companionId, scopeId, memories) {
21
+ const now = Date.now();
22
+ memories = memories.filter(item => item.companionId === companionId && item.scopeId === scopeId
23
+ && (item.expiresAt === undefined || item.expiresAt > now));
21
24
  const entries = [];
22
25
  const subjects = new Set();
23
26
  for (const memory of memories.filter(isProfileBaselineEntry).sort(compareProfileEntries)) {
@@ -29,17 +32,22 @@ export function buildProfileSnapshot(companionId, scopeId, memories) {
29
32
  if (entries.length >= PROFILE_ENTRY_LIMIT)
30
33
  break;
31
34
  }
32
- const version = createHash('sha256').update(entries.map(entry => [
35
+ const preferences = memories.filter(item => item.kind === 'preference' && item.status === 'active'
36
+ && (item.locked || (item.confidence >= .8 && item.importance >= .65 && new Set(item.evidence.map(source => source.turnId)).size >= 2)))
37
+ .sort((a, b) => Number(Boolean(b.locked)) - Number(Boolean(a.locked)) || b.importance - a.importance || b.updatedAt - a.updatedAt).slice(0, 4);
38
+ const baseline = [...entries, ...preferences];
39
+ const version = createHash('sha256').update(baseline.map(entry => [
33
40
  entry.id, canonicalProfileSubject(entry.subject) ?? entry.subject, entry.content, entry.locked ? 1 : 0,
34
41
  ].join('\u0000')).join('\u0001')).digest('hex').slice(0, 12);
35
42
  return {
36
43
  companionId,
37
44
  scopeId,
38
45
  version,
39
- ...(entries[0] ? { updatedAt: Math.max(...entries.map(entry => entry.updatedAt)) } : {}),
46
+ ...(baseline[0] ? { updatedAt: Math.max(...baseline.map(entry => entry.updatedAt)) } : {}),
40
47
  entries,
41
- evidenceCount: new Set(entries.flatMap(entry => entry.evidence.map(evidence => evidence.turnId))).size,
42
- lockedCount: entries.filter(entry => entry.locked).length,
48
+ preferences,
49
+ evidenceCount: new Set(baseline.flatMap(entry => entry.evidence.map(evidence => evidence.turnId))).size,
50
+ lockedCount: baseline.filter(entry => entry.locked).length,
43
51
  };
44
52
  }
45
53
  function compareProfileEntries(left, right) {
@@ -1 +1 @@
1
- {"version":3,"file":"profile-domain.js","sourceRoot":"","sources":["../src/profile-domain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile-domain.js","sourceRoot":"","sources":["../src/profile-domain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type SkillPackageFile } from './package.js';
2
+ export declare function decodeSkillImport(body: Record<string, unknown>): Uint8Array | SkillPackageFile[];
3
+ //# sourceMappingURL=import-request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-request.d.ts","sourceRoot":"","sources":["../../src/skills/import-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8D,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAEhH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,GAAG,gBAAgB,EAAE,CAiBhG"}
@@ -0,0 +1,26 @@
1
+ import { SKILL_FILE_LIMIT, SKILL_PACKAGE_FILES, SKILL_PACKAGE_LIMIT } from './package.js';
2
+ export function decodeSkillImport(body) {
3
+ const decode = (value, limit) => {
4
+ if (typeof value !== 'string' || value.length > Math.ceil(limit / 3) * 4 || value.length % 4 || /[^A-Za-z0-9+/=]/u.test(value))
5
+ throw new Error('Skill 文件编码无效或大小超限');
6
+ const bytes = Buffer.from(value, 'base64');
7
+ if (bytes.length > limit || bytes.toString('base64') !== value)
8
+ throw new Error('Skill 文件大小超限或编码无效');
9
+ return bytes;
10
+ };
11
+ if (body.kind === 'zip')
12
+ return decode(body.data, SKILL_PACKAGE_LIMIT);
13
+ if (body.kind !== 'directory' || !Array.isArray(body.files) || body.files.length > SKILL_PACKAGE_FILES)
14
+ throw new Error('请选择 ZIP 压缩包或 Skill 目录');
15
+ let total = 0;
16
+ return body.files.map(file => {
17
+ if (!file || typeof file !== 'object' || typeof file.path !== 'string')
18
+ throw new Error('Skill 文件路径无效');
19
+ const bytes = decode(file.data, SKILL_FILE_LIMIT);
20
+ total += bytes.length;
21
+ if (total > SKILL_PACKAGE_LIMIT)
22
+ throw new Error('Skill 目录超过 32 MiB');
23
+ return { path: file.path, bytes };
24
+ });
25
+ }
26
+ //# sourceMappingURL=import-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-request.js","sourceRoot":"","sources":["../../src/skills/import-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAyB,MAAM,cAAc,CAAA;AAEhH,MAAM,UAAU,iBAAiB,CAAC,IAA6B;IAC7D,MAAM,MAAM,GAAG,CAAC,KAAc,EAAE,KAAa,EAAU,EAAE;QACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;QACpK,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAC1C,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;QACpG,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;IACtE,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,mBAAmB;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAChJ,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC3B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;QACvG,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;QACjD,KAAK,IAAI,KAAK,CAAC,MAAM,CAAA;QACrB,IAAI,KAAK,GAAG,mBAAmB;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;QACrE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAA;IACnC,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { type SkillPackage } from './package.js';
2
+ export declare function packageCrc(bytes: Uint8Array): number;
3
+ /** Bounded async decompression. Never follows links or writes archive paths. */
4
+ export declare function readSkillZip(bytes: Uint8Array): Promise<SkillPackage>;
5
+ //# sourceMappingURL=package-zip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-zip.d.ts","sourceRoot":"","sources":["../../src/skills/package-zip.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgG,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAO9I,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIpD;AAED,gFAAgF;AAChF,wBAAsB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAsC3E"}
@@ -0,0 +1,75 @@
1
+ import { inflateRaw } from 'node:zlib';
2
+ import { promisify } from 'node:util';
3
+ import { packagePath, prepareSkillPackage, SKILL_FILE_LIMIT, SKILL_PACKAGE_FILES, SKILL_PACKAGE_LIMIT } from './package.js';
4
+ const inflate = promisify(inflateRaw);
5
+ const crcTable = Uint32Array.from({ length: 256 }, (_, value) => {
6
+ let crc = value;
7
+ for (let bit = 0; bit < 8; bit++)
8
+ crc = crc & 1 ? 0xedb88320 ^ (crc >>> 1) : crc >>> 1;
9
+ return crc >>> 0;
10
+ });
11
+ export function packageCrc(bytes) {
12
+ let crc = 0xffffffff;
13
+ for (const byte of bytes)
14
+ crc = crcTable[(crc ^ byte) & 255] ^ (crc >>> 8);
15
+ return (crc ^ 0xffffffff) >>> 0;
16
+ }
17
+ /** Bounded async decompression. Never follows links or writes archive paths. */
18
+ export async function readSkillZip(bytes) {
19
+ const buffer = Buffer.from(bytes);
20
+ if (buffer.length > SKILL_PACKAGE_LIMIT)
21
+ throw new Error('ZIP 超过 32 MiB');
22
+ let end = -1;
23
+ for (let pos = buffer.length - 22; pos >= Math.max(0, buffer.length - 65557); pos--) {
24
+ if (buffer.readUInt32LE(pos) === 0x06054b50 && pos + 22 + buffer.readUInt16LE(pos + 20) === buffer.length) {
25
+ end = pos;
26
+ break;
27
+ }
28
+ }
29
+ if (end < 0)
30
+ throw new Error('不是有效的 ZIP 压缩包');
31
+ const count = buffer.readUInt16LE(end + 10), centralSize = buffer.readUInt32LE(end + 12), central = buffer.readUInt32LE(end + 16);
32
+ if (buffer.readUInt16LE(end + 4) || buffer.readUInt16LE(end + 6) || count !== buffer.readUInt16LE(end + 8) || count > SKILL_PACKAGE_FILES * 2 || central + centralSize !== end)
33
+ throw new Error('不支持分卷、ZIP64 或超出文件数量限制的 ZIP');
34
+ let cursor = central, total = 0;
35
+ const files = [];
36
+ for (let index = 0; index < count; index++) {
37
+ if (cursor + 46 > end || buffer.readUInt32LE(cursor) !== 0x02014b50)
38
+ throw new Error('ZIP 目录损坏');
39
+ const flags = buffer.readUInt16LE(cursor + 8), method = buffer.readUInt16LE(cursor + 10), crc = buffer.readUInt32LE(cursor + 16);
40
+ const compressed = buffer.readUInt32LE(cursor + 20), size = buffer.readUInt32LE(cursor + 24);
41
+ const nameLength = buffer.readUInt16LE(cursor + 28), extra = buffer.readUInt16LE(cursor + 30), comment = buffer.readUInt16LE(cursor + 32);
42
+ const mode = buffer.readUInt32LE(cursor + 38) >>> 16, local = buffer.readUInt32LE(cursor + 42);
43
+ if (cursor + 46 + nameLength + extra + comment > end || flags & 1 || buffer.readUInt16LE(cursor + 34))
44
+ throw new Error('ZIP 目录损坏或已加密');
45
+ const rawName = buffer.subarray(cursor + 46, cursor + 46 + nameLength);
46
+ const name = new TextDecoder('utf-8', { fatal: true }).decode(rawName);
47
+ cursor += 46 + nameLength + extra + comment;
48
+ const kind = mode & 0xf000;
49
+ if (kind && kind !== 0x8000 && kind !== 0x4000)
50
+ throw new Error('Skill 包不能包含符号链接或特殊文件');
51
+ const path = packagePath(name.endsWith('/') ? name.slice(0, -1) : name);
52
+ if (name.endsWith('/')) {
53
+ if (size || compressed)
54
+ throw new Error('ZIP 目录数据无效');
55
+ continue;
56
+ }
57
+ total += size;
58
+ if (size > SKILL_FILE_LIMIT || total > SKILL_PACKAGE_LIMIT || files.length >= SKILL_PACKAGE_FILES)
59
+ throw new Error('Skill 展开大小或文件数量超限');
60
+ if (local + 30 > central || buffer.readUInt32LE(local) !== 0x04034b50 || buffer.readUInt16LE(local + 6) !== flags || buffer.readUInt16LE(local + 8) !== method)
61
+ throw new Error('ZIP 文件头损坏');
62
+ const localNameLength = buffer.readUInt16LE(local + 26), start = local + 30 + localNameLength + buffer.readUInt16LE(local + 28);
63
+ if (start + compressed > central || !buffer.subarray(local + 30, local + 30 + localNameLength).equals(rawName))
64
+ throw new Error('ZIP 文件内容或路径不一致');
65
+ const input = buffer.subarray(start, start + compressed);
66
+ const output = method === 0 ? input : method === 8 ? await inflate(input, { maxOutputLength: Math.max(1, Math.min(size, SKILL_FILE_LIMIT)) }) : undefined;
67
+ if (!output || output.length !== size || packageCrc(output) !== crc)
68
+ throw new Error('ZIP 压缩方式不支持或文件校验失败');
69
+ files.push({ path, bytes: output });
70
+ }
71
+ if (cursor !== end)
72
+ throw new Error('ZIP 目录长度不一致');
73
+ return prepareSkillPackage(files);
74
+ }
75
+ //# sourceMappingURL=package-zip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-zip.js","sourceRoot":"","sources":["../../src/skills/package-zip.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /** Common validation for browser directory uploads and ZIP packages. */
2
+ export declare const SKILL_PACKAGE_LIMIT: number;
3
+ export declare const SKILL_FILE_LIMIT: number;
4
+ export declare const SKILL_PACKAGE_FILES = 512;
5
+ export interface SkillPackageFile {
6
+ path: string;
7
+ bytes: Uint8Array;
8
+ }
9
+ export interface SkillPackage {
10
+ document: string;
11
+ files: SkillPackageFile[];
12
+ }
13
+ export declare function packagePath(path: string): string;
14
+ export declare function prepareSkillPackage(input: SkillPackageFile[]): SkillPackage;
15
+ //# sourceMappingURL=package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../src/skills/package.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,eAAO,MAAM,mBAAmB,QAAmB,CAAA;AACnD,eAAO,MAAM,gBAAgB,QAAkB,CAAA;AAC/C,eAAO,MAAM,mBAAmB,MAAM,CAAA;AACtC,MAAM,WAAW,gBAAgB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE;AACrE,MAAM,WAAW,YAAY;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,gBAAgB,EAAE,CAAA;CAAE;AAE7E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,YAAY,CA0B3E"}
@@ -0,0 +1,48 @@
1
+ /** Common validation for browser directory uploads and ZIP packages. */
2
+ export const SKILL_PACKAGE_LIMIT = 32 * 1024 * 1024;
3
+ export const SKILL_FILE_LIMIT = 8 * 1024 * 1024;
4
+ export const SKILL_PACKAGE_FILES = 512;
5
+ export function packagePath(path) {
6
+ const normalized = path.normalize('NFC').replace(/\\/g, '/');
7
+ if (!normalized || normalized.length > 500 || /[\u0000-\u001f\u007f:]/u.test(normalized) || normalized.startsWith('/'))
8
+ throw new Error('Skill 包含无效或绝对路径');
9
+ const parts = normalized.split('/');
10
+ if (parts.some(part => !part || part === '.' || part === '..' || /[. ]$/u.test(part) || /^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\.|$)/iu.test(part)))
11
+ throw new Error('Skill 包含不安全的文件路径');
12
+ return normalized;
13
+ }
14
+ export function prepareSkillPackage(input) {
15
+ if (!input.length || input.length > SKILL_PACKAGE_FILES)
16
+ throw new Error(`Skill 包应包含 1–${SKILL_PACKAGE_FILES} 个文件`);
17
+ let total = 0;
18
+ const seen = new Set();
19
+ const files = input.map(file => {
20
+ const path = packagePath(file.path), key = path.toLowerCase();
21
+ if (seen.has(key))
22
+ throw new Error(`Skill 包含重复文件:${path}`);
23
+ seen.add(key);
24
+ total += file.bytes.byteLength;
25
+ if (file.bytes.byteLength > SKILL_FILE_LIMIT || total > SKILL_PACKAGE_LIMIT)
26
+ throw new Error('Skill 文件超过 8 MiB 或展开后的包超过 32 MiB');
27
+ return { path, bytes: file.bytes };
28
+ }).filter(file => !file.path.split('/').some(part => ['__MACOSX', '.DS_Store', '.git', 'node_modules'].includes(part)));
29
+ const documents = files.filter(file => file.path.split('/').at(-1)?.toLowerCase() === 'skill.md');
30
+ const depth = Math.min(...documents.map(file => file.path.split('/').length));
31
+ const roots = documents.filter(file => file.path.split('/').length === depth);
32
+ if (roots.length !== 1)
33
+ throw new Error(roots.length ? '包含多个 Skill,请分别选择每个 Skill 目录或压缩包导入' : '没有找到 SKILL.md,请选择包含该文件的 Skill 目录或 ZIP');
34
+ const main = roots[0];
35
+ if (main.bytes.byteLength > 512 * 1024)
36
+ throw new Error('SKILL.md 超过 512 KiB');
37
+ const prefix = main.path.slice(0, main.path.length - 'SKILL.md'.length);
38
+ const selected = files.filter(file => file.path.startsWith(prefix)).map(file => ({ ...file, path: file === main ? 'SKILL.md' : file.path.slice(prefix.length) }));
39
+ const paths = new Set(selected.map(file => file.path.toLowerCase()));
40
+ for (const file of selected) {
41
+ const parts = file.path.toLowerCase().split('/');
42
+ for (let length = 1; length < parts.length; length++)
43
+ if (paths.has(parts.slice(0, length).join('/')))
44
+ throw new Error('Skill 文件与目录路径冲突');
45
+ }
46
+ return { document: new TextDecoder('utf-8', { fatal: true }).decode(main.bytes), files: selected.filter(file => file.path !== 'SKILL.md') };
47
+ }
48
+ //# sourceMappingURL=package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.js","sourceRoot":"","sources":["../../src/skills/package.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { LoadedSkill, PartnerSkill, SkillSourceKind } from './domain.js';
2
+ import { type SkillPackageFile } from './package.js';
2
3
  export declare class SkillRepository {
3
4
  readonly root: string;
4
5
  constructor(root: string);
@@ -11,6 +12,7 @@ export declare class SkillRepository {
11
12
  sourceId?: string;
12
13
  trusted: boolean;
13
14
  now?: number;
15
+ files?: SkillPackageFile[];
14
16
  }): Promise<PartnerSkill>;
15
17
  remove(skill: PartnerSkill): Promise<void>;
16
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/skills/repository.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAI7E,qBAAa,eAAe;IACd,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;IAE3B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ/C,OAAO,CAAC,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,eAAe,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IA+BnJ,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CAKjD"}
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/skills/repository.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAIzE,qBAAa,eAAe;IACd,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;IAE3B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ/C,OAAO,CAAC,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,eAAe,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAqC/K,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CAKjD"}
@@ -2,6 +2,7 @@ import { randomUUID } from 'node:crypto';
2
2
  import { mkdir, rename, rm, writeFile } from 'node:fs/promises';
3
3
  import { dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
4
4
  import { loadSkill, skillMetadata } from './loader.js';
5
+ import { prepareSkillPackage } from './package.js';
5
6
  const SAFE_ID = /^[a-z0-9][a-z0-9._-]{0,119}$/i;
6
7
  export class SkillRepository {
7
8
  root;
@@ -23,6 +24,7 @@ export class SkillRepository {
23
24
  throw new Error('Skill id is invalid');
24
25
  if (Buffer.byteLength(input.document) > 512 * 1024)
25
26
  throw new Error('SKILL.md exceeds the 512 KiB limit');
27
+ const resources = input.files ? prepareSkillPackage([{ path: 'SKILL.md', bytes: Buffer.from(input.document) }, ...input.files]).files : [];
26
28
  await this.initialize();
27
29
  const now = input.now ?? Date.now();
28
30
  const target = join(this.root, input.id);
@@ -31,6 +33,11 @@ export class SkillRepository {
31
33
  await mkdir(temporary, { recursive: false, mode: 0o700 });
32
34
  try {
33
35
  await writeFile(join(temporary, 'SKILL.md'), input.document, { encoding: 'utf8', mode: 0o600, flag: 'wx' });
36
+ for (const file of resources) {
37
+ const destination = join(temporary, file.path);
38
+ await mkdir(dirname(destination), { recursive: true, mode: 0o700 });
39
+ await writeFile(destination, file.bytes, { mode: 0o600, flag: 'wx' });
40
+ }
34
41
  const loaded = await loadSkill({
35
42
  id: input.id, rootPath: temporary, source: input.source, ...(input.sourceId ? { sourceId: input.sourceId } : {}),
36
43
  trusted: input.trusted, installedAt: now, updatedAt: now,
@@ -1 +1 @@
1
- {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/skills/repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/skills/repository.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { Companion, PartnerState } from '../domain.js';
2
2
  import type { PartnerStore } from '../store.js';
3
3
  import type { LoadedSkill, MarketSkillEntry, PartnerSkill, SkillMarketSource } from './domain.js';
4
4
  import { SkillRepository } from './repository.js';
5
+ import { type SkillPackageFile } from './package.js';
5
6
  export declare class SkillService {
6
7
  private readonly store;
7
8
  readonly repository: SkillRepository;
@@ -12,6 +13,7 @@ export declare class SkillService {
12
13
  bindings(companionId: string, state?: Pick<PartnerState, 'skills' | 'skillBindings'>): PartnerSkill[];
13
14
  load(skillId: string): Promise<LoadedSkill>;
14
15
  installLocal(document: string, id?: string): Promise<PartnerSkill>;
16
+ importPackage(input: Uint8Array | SkillPackageFile[]): Promise<PartnerSkill>;
15
17
  private installLocalLocked;
16
18
  uninstall(skillId: string): Promise<void>;
17
19
  private uninstallLocked;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/skills/service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG/C,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEjG,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAYjD,qBAAa,YAAY;IAIX,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAgB,QAAQ,CAAC,UAAU,EAAE,eAAe;IAHtF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;gBAErB,KAAK,EAAE,YAAY,EAAW,UAAU,EAAE,eAAe;IAEhF,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,GAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,eAAe,CAAyB,GAAG,YAAY,EAAE;IAKtH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ3C,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YAI1D,kBAAkB;IAU1B,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAIjC,eAAe;IAUvB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjF,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAe3D,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASzD,eAAe,IAAI;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;IAIlC,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAQlE,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAc9G,MAAM,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;QAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IAWjJ,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YAI/D,mBAAmB;YA6BnB,UAAU;YAQV,WAAW;IAMzB,OAAO,CAAC,qBAAqB;CAI9B;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,WAAW,GAAE,WAAW,CAAC,MAAM,CAAa,GAAG,MAAM,CAMtI"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/skills/service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG/C,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEjG,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAIjD,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAUzE,qBAAa,YAAY;IAIX,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAgB,QAAQ,CAAC,UAAU,EAAE,eAAe;IAHtF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;gBAErB,KAAK,EAAE,YAAY,EAAW,UAAU,EAAE,eAAe;IAEhF,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,GAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,eAAe,CAAyB,GAAG,YAAY,EAAE;IAKtH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ3C,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAIlE,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;YAOpE,kBAAkB;IAU1B,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAIjC,eAAe;IAUvB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjF,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAe3D,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASzD,eAAe,IAAI;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;IAIlC,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAQlE,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAc9G,MAAM,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;QAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IAWjJ,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YAI/D,mBAAmB;YA6BnB,UAAU;YAQV,WAAW;IAMzB,OAAO,CAAC,qBAAqB;CAI9B;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,WAAW,GAAE,WAAW,CAAC,MAAM,CAAa,GAAG,MAAM,CAMtI"}
@@ -5,6 +5,8 @@ import { sha256 } from './loader.js';
5
5
  import { BUILTIN_SKILLS, BUILTIN_SKILL_SOURCE } from './builtin.js';
6
6
  import { marketRequest, parseMarketResponse } from './markets/adapters.js';
7
7
  import { extractSkillMarkdown } from './zip.js';
8
+ import { prepareSkillPackage } from './package.js';
9
+ import { readSkillZip } from './package-zip.js';
8
10
  import { normalizeProxyUrl, requestRemoteBytes, requestRemoteText } from './network.js';
9
11
  const MARKET_CACHE_MS = 5 * 60_000;
10
12
  const MAX_MARKET_BYTES = 1024 * 1024;
@@ -51,10 +53,16 @@ export class SkillService {
51
53
  async installLocal(document, id) {
52
54
  return this.mutations.use(() => this.installLocalLocked(document, id));
53
55
  }
54
- async installLocalLocked(document, id) {
56
+ async importPackage(input) {
57
+ return this.mutations.use(async () => {
58
+ const bundle = Array.isArray(input) ? prepareSkillPackage(input) : await readSkillZip(input);
59
+ return this.installLocalLocked(bundle.document, undefined, bundle.files);
60
+ });
61
+ }
62
+ async installLocalLocked(document, id, files) {
55
63
  const skillId = id ? requiredText(id, 'skill id', 120) : `skill-${randomUUID()}`;
56
64
  this.assertInstallCapacity(skillId);
57
- const installed = await this.repository.install({ id: skillId, document, source: 'local', trusted: true });
65
+ const installed = await this.repository.install({ id: skillId, document, source: 'local', trusted: true, ...(files ? { files } : {}) });
58
66
  await this.store.update(state => {
59
67
  state.skills = [...state.skills.filter(item => item.id !== installed.id), installed];
60
68
  });
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/skills/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEvF,MAAM,eAAe,GAAG,CAAC,GAAG,MAAM,CAAA;AAClC,MAAM,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAA;AACpC,MAAM,eAAe,GAAG,GAAG,GAAG,IAAI,CAAA;AAIlC,MAAM,OAAO,YAAY;IAIM;IAA8B;IAH1C,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAA;IACtC,SAAS,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,CAAA;IAElD,YAA6B,KAAmB,EAAW,UAA2B;QAAzD,UAAK,GAAL,KAAK,CAAc;QAAW,eAAU,GAAV,UAAU,CAAiB;IAAG,CAAC;IAE1F,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAA;QAClC,MAAM,YAAY,GAAmB,EAAE,CAAA;QACvC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC;YACjD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;gBAAE,SAAQ;YACxC,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YAC5C,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAAE,SAAQ;YACrE,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QAClK,CAAC;QACD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBAC3D,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;gBAClE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAA;YACvE,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,QAAQ,CAAC,WAAmB,EAAE,QAAwD,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;QACzG,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QACvI,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,CAAA;QAC5E,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAChD,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;QAC/H,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,EAAW;QAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAA;IACxE,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,QAAgB,EAAE,EAAW;QAC5D,MAAM,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,EAAE,EAAE,CAAA;QAChF,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1G,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC9B,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;QACtF,CAAC,CAAC,CAAA;QACF,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAe;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAA;IAChE,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,OAAe;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,CAAA;QAC5E,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QACrD,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC9B,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,CAAA;YAC/D,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAA;QACpF,CAAC,CAAC,CAAA;QACF,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,WAAmB,EAAE,OAAe,EAAE,OAAgB;QACrE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAA;QACnC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,WAAW,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QACxG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAC9F,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC9B,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,KAAK,WAAW,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAA;YACzH,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;QAC7D,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAAc;QAClC,MAAM,KAAK,GAAG,KAAgC,CAAA;QAC9C,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAA;QAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,MAAM,MAAM,GAAsB;YAChC,EAAE,EAAE,UAAU,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ;YACtG,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG;SAC9H,CAAA;QACD,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC9B,IAAI,KAAK,CAAC,kBAAkB,CAAC,MAAM,IAAI,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;YAC/F,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,CAAC,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,QAAgB;QACvC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAA;YAC1E,IAAI,MAAM,EAAE,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;YACtF,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAA;QAC1F,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC7B,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,kBAAkB,CAAA;IACjD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,KAAc;QACrC,MAAM,KAAK,GAAG,KAAgC,CAAA;QAC9C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAClD,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,kBAAkB,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA,CAAC,CAAC,CAAC,CAAA;QAC7F,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QAClB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAA;IAC/B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAc;QAC9B,MAAM,KAAK,GAAG,KAAgC,CAAA;QAC9C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACrF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;QACnG,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAwD,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAA;QACjI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YAC/J,MAAM,IAAI,KAAK,CAAC,kBAAkB,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAA;QAChF,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAA;IACpK,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACrF,MAAM,MAAM,GAA+C,EAAE,CAAA;QAC7D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;YAC1D,IAAI,CAAC;gBAAC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;YAAC,CAAC;YACnD,OAAO,KAAK,EAAE,CAAC;gBAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAAC,OAAO,EAAE,CAAA;YAAC,CAAC;QAClI,CAAC,CAAC,CAAC,CAAA;QACH,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAC7G,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,OAAe;QACnD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;IAC9E,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,QAAgB,EAAE,OAAe;QACjE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAA;QACnC,IAAI,QAAQ,KAAK,oBAAoB,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YAC3C,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;YAC9D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YAC9J,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBAC9B,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;YACtF,CAAC,CAAC,CAAA;YACF,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,CAAA;QAC1G,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QAClE,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,CAAA;QACtF,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAA;QAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,KAAK,KAAK;YAC1C,CAAC,CAAC,MAAM,iBAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,QAAQ,CAAC;YACpE,CAAC,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;QACzE,IAAI,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QACnI,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAC9C,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO;SACvF,CAAC,CAAA;QACF,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC9B,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;QACtF,CAAC,CAAC,CAAA;QACF,OAAO,SAAS,CAAA;IAClB,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,MAAyB,EAAE,KAAc;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACxC,IAAI,CAAC,KAAK,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;YAAE,OAAO,MAAM,CAAC,OAAO,CAAA;QAC5E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;QAC/E,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,EAAE,CAAC,CAAA;QAC/E,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,MAAyB,EAAE,QAAiB;QACpE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;QACrC,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAClF,OAAO,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;IACrD,CAAC;IAEO,qBAAqB,CAAC,OAAe;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAA;QAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IACzH,CAAC;CACF;AAED,MAAM,UAAU,mBAAmB,CAAC,SAAoB,EAAE,MAAsB,EAAE,cAAmC,IAAI,GAAG,EAAE;IAC5H,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAChF,OAAO;QACL,+KAA+K;QAC/K,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACnL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,KAAa,EAAE,OAAoB,EAAE,EAAE,QAAiB;IAC5F,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACzC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,2CAA2C,CAAC,CAAA;IAC9F,OAAO,iBAAiB,CAAC;QACvB,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO;QACnE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClC,CAAC,CAAA;AACJ,CAAC;AACD,KAAK,UAAU,iBAAiB,CAAC,GAAW,EAAE,KAAa,EAAE,QAAiB;IAC5E,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC;QACrC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM;QACpE,OAAO,EAAE,EAAE,MAAM,EAAE,0CAA0C,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnG,CAAC,CAAA;IACF,OAAO,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC3C,CAAC;AACD,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;IAC1B,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IACpH,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;IAAC,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAA;IACpC,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;AACvB,CAAC;AACD,SAAS,iBAAiB,CAAC,KAAa;IACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAA;IAC1E,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;IACvF,OAAO,QAAQ,CAAA;AACjB,CAAC;AACD,SAAS,iBAAiB,CAAC,OAA2B;IACpD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAA,CAAC,CAAC,CAAC,CAAA;AAC9I,CAAC"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/skills/service.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /** Versioned built-in instructions; installed copies update through SkillService. */
2
- export declare const TASK_PLANNING_VERSION = "1.5.0";
2
+ export declare const TASK_PLANNING_VERSION = "1.6.0";
3
3
  export declare const TASK_PLANNING_DESCRIPTION = "\u6536\u5230\u5B9E\u9645\u5DE5\u4F5C\u9700\u6C42\u65F6\uFF0C\u4E3B\u52A8\u6309\u6388\u6743\u4F19\u4F34\u7684\u4E13\u957F\u59D4\u6D3E\uFF1B\u5355\u4E00\u4E13\u4E1A\u6574\u9879\u4EA4\u4ED8\uFF0C\u591A\u4E13\u4E1A\u6309\u4EA7\u51FA\u62C6\u89E3\u3001\u5B89\u6392\u4F9D\u8D56\u5E76\u63D0\u4EA4\u770B\u677F\uFF0C\u65E0\u9700\u7528\u6237\u70B9\u540D\u89E6\u53D1\u3002";
4
- export declare const TASK_PLANNING_DOCUMENT = "---\nname: task-planning\ndisplay-name: \u4EFB\u52A1\u62C6\u89E3\u4E0E\u770B\u677F\u63A8\u8FDB\ndescription: \u6536\u5230\u5B9E\u9645\u5DE5\u4F5C\u9700\u6C42\u65F6\uFF0C\u4E3B\u52A8\u6309\u6388\u6743\u4F19\u4F34\u7684\u4E13\u957F\u59D4\u6D3E\uFF1B\u5355\u4E00\u4E13\u4E1A\u6574\u9879\u4EA4\u4ED8\uFF0C\u591A\u4E13\u4E1A\u6309\u4EA7\u51FA\u62C6\u89E3\u3001\u5B89\u6392\u4F9D\u8D56\u5E76\u63D0\u4EA4\u770B\u677F\uFF0C\u65E0\u9700\u7528\u6237\u70B9\u540D\u89E6\u53D1\u3002\nversion: 1.5.0\ncontext: inline\nallowed-tools: [partner_requirements, partner_task_board, partner_collaborate]\n---\n# \u4E13\u4E1A\u5206\u5DE5\u4E0E\u770B\u677F\u63A8\u8FDB\n\n\u4E13\u4E1A\u7684\u4E8B\u4EA4\u7ED9\u4E13\u4E1A\u7684\u4F19\u4F34\u3002\u6536\u5230\u5B9E\u9645\u5DE5\u4F5C\u8BF7\u6C42\u65F6\uFF0C\u5148\u5339\u914D\u6240\u9700\u4E13\u957F\u4E0E\u5F53\u524D\u5DF2\u6388\u6743\u4F19\u4F34\u7684\u804C\u8D23\u3001\u5B9E\u9645\u80FD\u529B\u548C\u5DF2\u542F\u7528 Skill\uFF0C\u518D\u51B3\u5B9A\u8C01\u6267\u884C\u3001\u662F\u5426\u62C6\u5206\u3002\u4E0D\u8981\u5148\u81EA\u5DF1\u505A\u5B8C\uFF0C\u518D\u8865\u770B\u677F\u8BB0\u5F55\u3002\u7528\u6237\u5DF2\u6388\u6743\u534F\u4F5C\u5E76\u63D0\u51FA\u5DE5\u4F5C\u76EE\u6807\u65F6\uFF0C\u4E0D\u9700\u8981\u518D\u8BE2\u95EE\u201C\u8981\u4E0D\u8981\u62C6\u89E3\u201D\u6216\u7B49\u5F85\u7528\u6237\u9010\u4E2A @\u3002\n\n## \u5206\u5DE5\u51B3\u7B56\n\n- \u5206\u5DE5\u5B57\u6BB5\u4E0D\u53EF\u98A0\u5012\uFF1A\u4F60\uFF08A\uFF09\u628A\u5DE5\u4F5C\u4EA4\u7ED9\u4E13\u4E1A\u4F19\u4F34 B \u65F6\uFF0Cassignee=B\uFF08\u5B9E\u9645\u6267\u884C\u8005\uFF09\uFF0Creviewer=A\uFF08\u9A8C\u6536\u8005\uFF0C\u521B\u5EFA\u65F6\u53EF\u7701\u7565\u5E76\u9ED8\u8BA4\u81EA\u5DF1\uFF09\u3002\u9700\u6C42 owner \u662F\u7EDF\u7B79\u6536\u5C3E\u8D1F\u8D23\u4EBA\uFF0C\u4E0D\u7B49\u4E8E\u5B50\u4EFB\u52A1\u6267\u884C\u8005\u3002\u53EA\u6709\u81EA\u5DF1\u5B9E\u9645\u505A\u5DE5\u4F5C\u624D\u628A assignee \u586B\u6210\u81EA\u5DF1\uFF1B\u4E0D\u8981\u628A\u88AB\u59D4\u6D3E\u7684\u4EBA\u586B\u6210 reviewer\u3002\n- \u7528\u6237\u8981\u6C42\u5B9E\u9645\u5B8C\u6210\u65F6\u4F7F\u7528 autoRun=true\uFF1B\u53EA\u6709\u660E\u786E\u53EA\u89C4\u5212\u6216\u7B49\u5F85\u786E\u8BA4\u624D\u7528 false\u3002status=ready \u52A0 autoRun=false \u4ECD\u7136\u53EA\u4FDD\u5B58\u3001\u4E0D\u6267\u884C\u3002\u521B\u5EFA\u6216\u66F4\u65B0\u540E\u6838\u5BF9\u8FD4\u56DE\u7684 assignment \u4E2D\u6267\u884C\u8005\u3001\u9A8C\u6536\u8005\u548C\u81EA\u52A8\u6267\u884C\u72B6\u6001\u518D\u6C47\u62A5\uFF1B\u53D1\u73B0\u586B\u9519\uFF0C\u5E94\u8BFB\u53D6\u6700\u65B0 revision \u540E update \u539F\u4EFB\u52A1\uFF0C\u4E0D\u91CD\u590D\u521B\u5EFA\u3002\u5DF2\u63D0\u4EA4\u6216\u6392\u961F\u4E0D\u7B49\u4E8E\u5DF2\u5B8C\u6210\u3002\n\n- \u5DF2\u6536\u5230\u5177\u4F53\u770B\u677F\u4EFB\u52A1\u65F6\uFF0C\u4F60\u9996\u5148\u662F\u8BE5\u4EFB\u52A1\u6267\u884C\u8005\uFF0C\u4E0D\u662F\u9700\u6C42\u8D1F\u8D23\u4EBA\u3002\u4E0D\u8981\u628A\u6B63\u5728\u6267\u884C\u7684\u540C\u4E00 taskId \u518D delegate \u7ED9\u522B\u4EBA\u3002\u53D1\u73B0\u7F3A\u5C11\u771F\u5B9E\u6587\u4EF6\u5DE5\u5177\u3001\u9700\u8981\u6362\u4EBA\u6216\u62C6\u5206\u65F6\uFF0C\u8C03\u7528 partner_task_board request_replan\uFF08taskId\u3001expectedRevision\u3001message\uFF09\uFF0C\u8BF4\u660E\u7F3A\u53E3\u4E0E\u4FDD\u7559\u7684\u4EA7\u51FA\uFF0C\u968F\u540E\u7ED3\u675F\u672C\u8F6E\u3002\u4E0D\u5F97\u6539 state.json\u3001\u4F2A\u9020\u6587\u4EF6\u4EA4\u4ED8\u6216\u6301\u7EED\u91CD\u590D\u5931\u8D25\u8C03\u7528\u3002\n- \u9A8C\u6536\u666E\u901A\u7F3A\u9879\u7528 reject \u7684 reworkMode=rework\uFF1B\u7F3A\u5DE5\u5177\u3001\u9700\u91CD\u65B0\u62C6\u5206/\u6362\u4EBA\u7528 reworkMode=replan\u3002\u8FDE\u7EED\u4E09\u6B21\u6253\u56DE\u81EA\u52A8\u6682\u505C\uFF0C\u7531\u9700\u6C42\u8D1F\u8D23\u4EBA\u6838\u5B9E\u539F\u56E0\u5E76\u8C03\u6574\u3002\u53EA\u6709\u8D1F\u8D23\u4EBA\u53EF reopen \u539F\u9700\u6C42\u8FFD\u52A0\u4EFB\u52A1\uFF1B\u8C03\u6574\u539F\u4EFB\u52A1\u540E\u663E\u5F0F update autoRun=true \u6062\u590D\uFF0C\u4E0D\u80FD\u539F\u6837\u91CD\u8BD5\u4EE3\u66FF\u89E3\u51B3\u95EE\u9898\u3002\n- \u8981\u6C42\u771F\u5B9E\u6587\u4EF6\u65F6\u5FC5\u987B\u6838\u9A8C\u8DEF\u5F84\u3001\u5B9E\u9645\u5185\u5BB9\u4E0E\u76F8\u5173\u8FD0\u884C\u7ED3\u679C\uFF1B\u6587\u5B57\u8BA1\u5212\u3001\u58F0\u79F0\u201C\u5DF2\u7ECF\u521B\u5EFA\u201D\u548C\u89D2\u8272\u63CF\u8FF0\u5747\u4E0D\u80FD\u4EE3\u66FF\u6587\u4EF6\u8BC1\u636E\u3002\u6838\u9A8C\u5DE5\u5177\u4E0D\u53EF\u7528\u65F6\u660E\u786E\u62A5\u963B\u585E\uFF0C\u4E0D\u731C\u6D4B\u901A\u8FC7\u6216\u539F\u6837\u5FAA\u73AF\u6253\u56DE\u3002\n\n- \u6709\u804C\u8D23\u548C\u6267\u884C\u80FD\u529B\u5339\u914D\u7684\u4E13\u4E1A\u4F19\u4F34\u65F6\uFF0C\u4F18\u5148\u4EA4\u7ED9\u8BE5\u4F19\u4F34\uFF0C\u5373\u4F7F\u4F60\u4E5F\u80FD\u5B8C\u6210\u3001\u5DE5\u4F5C\u770B\u8D77\u6765\u7B80\u5355\u6216\u53EA\u6709\u4E00\u4E2A\u4EA4\u4ED8\u7269\u3002\u4F60\u8D1F\u8D23\u6F84\u6E05\u5FC5\u8981\u8F93\u5165\u3001\u5206\u914D\u3001\u9A8C\u6536\u548C\u6700\u7EC8\u6C47\u603B\uFF0C\u4E0D\u91CD\u590D\u6267\u884C\u5DF2\u7ECF\u59D4\u6D3E\u7684\u5DE5\u4F5C\u3002\n- \u5355\u4E00\u4E13\u4E1A\u5373\u53EF\u5B8C\u6210\uFF1A\u521B\u5EFA\u4E00\u4E2A\u5B8C\u6574\u4EFB\u52A1\u4EA4\u7ED9\u8BE5\u4E13\u4E1A\u4F19\u4F34\uFF0C\u4E0D\u4E3A\u201C\u62C6\u89E3\u201D\u51D1\u6570\u91CF\u3002\u591A\u4E2A\u4E13\u4E1A\u3001\u53EF\u72EC\u7ACB\u9A8C\u6536\u7684\u4EA7\u51FA\u6216\u771F\u5B9E\u524D\u7F6E\u4F9D\u8D56\uFF1A\u6309\u4EA4\u4ED8\u8FB9\u754C\u62C6\u5206\uFF0C\u72EC\u7ACB\u5DE5\u4F5C\u5E76\u884C\u3001\u4F9D\u8D56\u5DE5\u4F5C\u4E32\u884C\uFF0C\u4E0D\u628A\u5185\u90E8\u63A8\u7406\u6B65\u9AA4\u62C6\u6210\u4EFB\u52A1\u3002\n- \u9009\u62E9\u4F9D\u636E\u662F\u6388\u6743\u76EE\u5F55\u4E2D\u7684\u804C\u8D23\u3001\u80FD\u529B\u548C\u5DF2\u542F\u7528 Skill\uFF0C\u4E0D\u662F\u540D\u5B57\u6216\u201C\u7A7A\u95F2\u201D\u6807\u7B7E\u3002\u6709\u591A\u4E2A\u5408\u9002\u6267\u884C\u8005\u65F6\u7ED3\u5408\u5339\u914D\u7A0B\u5EA6\u548C\u8D1F\u8F7D\u9009\u62E9\uFF1B\u4E13\u4E1A\u4F19\u4F34\u5FD9\u788C\u53EF\u6B63\u5E38\u6392\u961F\uFF0C\u4E0D\u56E0 busy \u5C31\u9ED8\u8BA4\u81EA\u5DF1\u63A5\u7BA1\u3002\u6388\u6743\u76EE\u5F55\u4E0D\u662F\u5B9E\u65F6\u8D1F\u8F7D\u627F\u8BFA\uFF0C\u9700\u8981\u65F6\u91CD\u65B0\u67E5\u8BE2\u3002\n- \u6CA1\u6709\u5339\u914D\u4E14\u83B7\u6388\u6743\u7684\u4E13\u4E1A\u4F19\u4F34\u65F6\uFF0C\u624D\u7531\u81EA\u5DF1\u5728\u80FD\u529B\u8303\u56F4\u5185\u5B8C\u6210\uFF1B\u7F3A\u5C11\u5FC5\u8981\u80FD\u529B\u6216\u5173\u952E\u8F93\u5165\u5C31\u8BF4\u660E\u5177\u4F53\u7F3A\u53E3\uFF0C\u4E0D\u865A\u6784\u5206\u5DE5\uFF0C\u4E5F\u4E0D\u64C5\u81EA\u521B\u5EFA\u4F19\u4F34\u3001\u542F\u7528\u80FD\u529B\u6216\u6269\u5927\u6388\u6743\u3002\u81EA\u5DF1\u7684\u72EC\u7ACB\u4EA4\u4ED8\u9636\u6BB5\u4E5F\u53EF\u8FDB\u5165\u770B\u677F\u3002\n- \u4F8B\u5982\u201C\u591A\u6765\u6E90\u6536\u96C6 + \u771F\u5B9E\u6027\u6838\u9A8C + \u7ED3\u8BBA\u6574\u7406 + \u5185\u5BB9\u65B9\u5411\u201D\uFF0C\u5E94\u533A\u5206\u8BC1\u636E\u6536\u96C6\u3001\u6838\u9A8C\u548C\u7EFC\u5408\u4EA4\u4ED8\uFF0C\u5E76\u5EFA\u7ACB\u771F\u5B9E\u4F9D\u8D56\uFF1B\u5F00\u53D1\u9700\u6C42\u53EF\u4EE5\u4F9D\u636E\u9700\u6C42\u6F84\u6E05\u3001\u67B6\u6784\u3001\u5B9E\u73B0\u3001\u6D4B\u8BD5\u7B49\u5B9E\u9645\u4EA4\u4ED8\u9009\u62E9\u9636\u6BB5\uFF0C\u4E0D\u56FA\u5B9A\u9636\u6BB5\u6216\u4EFB\u52A1\u6570\u91CF\u3002\n\n## \u9002\u7528\u8FB9\u754C\n\n- \u95F2\u804A\u3001\u6982\u5FF5\u89E3\u91CA\u6216\u5BF9\u5F53\u524D\u7ED3\u679C\u7684\u8FFD\u95EE\u53EF\u76F4\u63A5\u7B54\u590D\uFF0C\u4E0D\u662F\u6BCF\u53E5\u8BDD\u90FD\u8981\u521B\u5EFA\u770B\u677F\u3002\u201C\u6574\u7406\u4E00\u4EFD\u8D44\u6599\u3001\u68C0\u67E5\u8FD9\u4E2A\u95EE\u9898\u3001\u5B9E\u73B0\u8FD9\u4E2A\u529F\u80FD\u201D\u5C5E\u4E8E\u5B9E\u9645\u4EA4\u4ED8\uFF0C\u4E0D\u80FD\u4EC5\u4EE5\u201C\u6211\u4F1A\u505A\u3001\u4EFB\u52A1\u7B80\u5355\u201D\u4E3A\u7531\u8DF3\u8FC7\u4E13\u4E1A\u5339\u914D\u3002\n- \u7528\u6237\u660E\u786E\u201C\u4F60\u81EA\u5DF1\u505A\u3001\u4E0D\u8981\u59D4\u6D3E\u201D\u65F6\u9075\u5FAA\u6307\u5B9A\u5206\u5DE5\uFF1B\u201C\u53EA\u8BA8\u8BBA\u3001\u53EA\u89C4\u5212\u3001\u7B49\u6211\u786E\u8BA4\u3001\u4E0D\u8981\u6267\u884C\u201D\u65F6\u4E0D\u63D0\u4EA4\u6267\u884C\u3002\u4EC5\u8981\u6C42\u62C6\u89E3\u65B9\u6848\u65F6\u8F93\u51FA\u8BA1\u5212\u6216\u4FDD\u5B58\u4E0D\u6267\u884C\u7684\u770B\u677F\uFF1B\u8981\u6C42\u5B8C\u6210\u5DE5\u4F5C\uFF08\u5305\u62EC\u201C\u62C6\u89E3\u5E76\u5904\u7406\u201D\uFF09\u65F6\u63D0\u4EA4\u771F\u5B9E\u6267\u884C\uFF0C\u4E0D\u80FD\u56E0\u4E3A\u51FA\u73B0\u201C\u62C6\u89E3\u201D\u5C31\u9ED8\u8BA4\u53EA\u89C4\u5212\u3002\n- \u5DF2\u6536\u5230\u660E\u786E\u8303\u56F4\u7684\u770B\u677F\u5B50\u4EFB\u52A1\u65F6\uFF0C\u4F60\u5DF2\u7ECF\u662F\u8BE5\u9636\u6BB5\u6267\u884C\u8005\uFF0C\u5B8C\u6210\u8BE5\u8303\u56F4\uFF0C\u4E0D\u628A\u540C\u4E00\u4EFB\u52A1\u91CD\u65B0\u8F6C\u6D3E\u6216\u65E0\u9650\u9012\u5F52\u62C6\u89E3\u3002\u82E5\u5B9E\u9645\u7F3A\u5C11\u80FD\u529B\u6216\u53D1\u73B0\u8303\u56F4\u5916\u5DE5\u4F5C\uFF0C\u5411\u521B\u5EFA\u8005\u8BF4\u660E\u5177\u4F53\u7F3A\u53E3\uFF0C\u7531\u5176\u8C03\u6574\u5206\u5DE5\uFF1B\u9A8C\u6536\u56DE\u8C03\u6309\u9A8C\u6536\u534F\u8BAE\u5904\u7406\uFF0C\u4E0D\u5F53\u4F5C\u65B0\u7684\u5DE5\u4F5C\u8BF7\u6C42\u3002\n- \u5177\u5907 Skill \u6216\u67D0\u4F19\u4F34\u53EF\u7528\u4E0D\u4EE3\u8868\u83B7\u5F97\u65B0\u6743\u9650\uFF1B\u5916\u90E8\u53D1\u5E03\u3001\u5220\u9664\u7B49\u52A8\u4F5C\u4ECD\u670D\u4ECE\u7528\u6237\u6388\u6743\u4E0E DSH \u5DE5\u5177\u6743\u9650\u3002\n\n## \u9700\u6C42\u5F52\u5C5E\u4E0E\u6536\u5C3E\n\n- \u4E00\u6B21\u7528\u6237\u4EA4\u4ED8\u76EE\u6807\u5BF9\u5E94\u4E00\u4E2A\u9700\u6C42\u5757\u3002\u7528\u6237\u8BF4\u201C\u7EE7\u7EED\u3001\u4E0B\u4E00\u6B65\u3001\u5728\u521A\u624D\u65B9\u6848\u4E0A\u505A\u89C6\u89C9/\u5B9E\u73B0\u201D\u65F6\uFF0C\u5148\u67E5\u539F\u4EFB\u52A1\u7684 requirementId \u5E76\u590D\u7528\u8BE5\u9700\u6C42\uFF1B\u6362\u4E13\u4E1A\u4F19\u4F34\u6216\u8FDB\u5165\u4E0B\u4E00\u9636\u6BB5\u4E0D\u7B49\u4E8E\u65B0\u9700\u6C42\u3002\u53EA\u6709\u72EC\u7ACB\u4EA4\u4ED8\u76EE\u6807\u624D create \u9700\u6C42\uFF0C\u4E0D\u80FD\u56E0\u6F0F\u586B\u5F52\u5C5E\u53E6\u5EFA\u3002\u5404\u4EFB\u52A1\u521B\u5EFA\u5FC5\u987B\u660E\u786E\u586B\u5199 requirementId\uFF1BdependencyTaskIds \u53EA\u8868\u793A\u5148\u540E\u5173\u7CFB\uFF0C\u4E0D\u80FD\u4EE3\u66FF\u5F52\u5C5E\u3002\u591A\u4E2A\u539F\u9700\u6C42\u90FD\u53EF\u80FD\u5339\u914D\u65F6\u6838\u5BF9\u7528\u6237\u4E0A\u4E0B\u6587\uFF0C\u4E0D\u51ED\u6807\u9898\u731C\u6D4B\u5408\u5E76\u3002\n- \u8FFD\u52A0\u4EFB\u52A1\u4E0D\u662F\u4FEE\u6539\u5DF2\u5B8C\u6210\u4EFB\u52A1\uFF1A\u89C4\u5212\u6001\u76F4\u63A5\u5F80\u539F\u9700\u6C42\u6DFB\u52A0\uFF1B\u5DF2\u63D0\u4EA4\u6216\u5DF2\u5F52\u6863\u65F6\uFF0C\u7531\u8D1F\u8D23\u4EBA\u660E\u786E reopen \u540E\u8FFD\u52A0\uFF1B\u53EF\u4EE5\u9644 title/description \u8BF4\u660E\u65B0\u589E\u9636\u6BB5\u7684\u6574\u4F53\u8303\u56F4\uFF0C\u4FDD\u7559\u5386\u53F2\u6210\u679C\uFF0C\u4E0D\u91CD\u8DD1\u5DF2\u9A8C\u6536\u4EFB\u52A1\u3002\u53EA\u5728\u7528\u6237\u6539\u53D8\u65E7\u4EA4\u4ED8\u7684\u9A8C\u6536\u8981\u6C42\u65F6\u7528 update \u6539\u5199\u76F8\u5E94\u9700\u6C42/\u4EFB\u52A1\u3002\u786E\u8BA4\u5168\u90E8\u76EE\u6807\u8303\u56F4\u5DF2\u5B89\u6392\u540E\u518D submit\uFF1B\u5982\u679C\u5F53\u524D\u53EA\u63A8\u8FDB\u4E00\u9636\u6BB5\u3001\u540E\u7EED\u5F85\u7528\u6237\u51B3\u5B9A\uFF0C\u53EF\u4EE5\u4FDD\u6301\u89C4\u5212\u6001\uFF0C\u4E0D\u628A\u9636\u6BB5\u5B8C\u6210\u5F53\u6210\u6574\u4F53\u5B8C\u6210\u3002\u5B50\u4EFB\u52A1\u6267\u884C\u8005\u53EA\u5B8C\u6210\u53D7\u6D3E\u8303\u56F4\uFF0C\u4E0D\u53E6\u62C6\u4E00\u5957\u91CD\u590D\u4EFB\u52A1\u3002\n- \u5B50\u4EFB\u52A1\u6267\u884C\u3001\u8FD4\u5DE5\u3001\u9A8C\u6536\u4E0D\u5355\u72EC\u901A\u77E5\u7528\u6237\u3002\u4EC5\u5F53\u9700\u6C42\u53EA\u5269\u5DF2\u5B8C\u6210/\u53D7\u963B\u4EFB\u52A1\u4E14\u6CA1\u6709\u6392\u961F\u6267\u884C\u65F6\uFF0C\u7CFB\u7EDF\u7EDF\u4E00\u6C47\u62A5\u6210\u679C\u6216\u963B\u585E\uFF1B\u5F85\u5F00\u59CB\u3001\u6267\u884C\u4E2D\u3001\u5F85\u9A8C\u6536\u4E0D\u89E6\u53D1\u9636\u6BB5\u901A\u77E5\u3002\u9636\u6BB5\u901A\u77E5\u4E0D\u4F9D\u8D56\u5F52\u6863\u3002\u5B8C\u6574\u8303\u56F4\u5DF2\u786E\u8BA4\u4E14\u5168\u90E8\u9A8C\u6536\u5B8C\u6210\u624D\u603B\u7ED3\u5F52\u6863\uFF1B\u8D1F\u8D23\u4EBA\u4E5F\u53EF\u7528 finish \u660E\u786E\u5B8C\u6210\u3002\u53D6\u6D88/\u5220\u9664\u7684\u5DE5\u4F5C\u4E0D\u7B97\u6210\u529F\uFF0C\u4E0D\u5F97\u7528\u5220\u9664\u672A\u5B8C\u6210\u4EFB\u52A1\u4F2A\u9020\u9700\u6C42\u5B8C\u6210\u3002\n- \u672C\u6280\u80FD\u5C5E\u4E8E\u4F19\u4F34\u63D2\u4EF6\uFF0C\u5DF2\u6CE8\u5165\u5C31\u76F4\u63A5\u5E94\u7528\uFF1B\u9700\u8981\u8BFB\u53D6\u65F6\u4F7F\u7528 partner_skill load\uFF0C\u4E0D\u80FD\u8C03\u7528\u539F\u751F skill(name=\"task-planning\")\u3002\n\n## \u6267\u884C\u534F\u8BAE\n\n\u6574\u4EFD\u5206\u5DE5\u5DF2\u7ECF\u660E\u786E\u65F6\uFF0C\u4F18\u5148\u7528 partner_requirements submit_plan \u4E00\u6B21\u4FDD\u5B58\u5E76\u63D0\u4EA4\uFF0C\u4E0D\u518D\u9010\u4E2A create \u51D1\u9F50\u8BA1\u5212\u3002\u4ECD\u7531\u672C Skill \u51B3\u5B9A\u4E13\u4E1A\u5206\u5DE5\uFF0C\u5DE5\u5177\u4E0D\u65B0\u589E\u56FA\u5B9A\u884C\u4E1A\u6D41\u7A0B\u6216\u5F3A\u5236\u524D\u7F6E\u6B65\u9AA4\u3002\n\n- \u7528\u7A33\u5B9A submissionKey \u6807\u8BC6\u8FD9\u6B21\u63D0\u4EA4\uFF1B\u7F51\u7EDC\u8D85\u65F6\u91CD\u8BD5\u590D\u7528\u539F key \u548C\u539F\u8BA1\u5212\uFF0C\u4E0D\u6362 key\u3001\u4E0D\u91CD\u590D\u521B\u5EFA\u3002\u8FD4\u56DE replayed \u8868\u793A\u53D6\u56DE\u539F\u63D0\u4EA4\uFF0C\u4E0D\u662F\u518D\u6B21\u6267\u884C\uFF1Bremoved \u8868\u793A\u76F8\u5173\u5DE5\u4F5C\u5DF2\u88AB\u5220\u9664\uFF0C\u4E0D\u80FD\u501F\u91CD\u8BD5\u91CD\u5EFA\u3002\n- \u65B0\u76EE\u6807\u586B\u5199 title/description\uFF1B\u540C\u4E00\u76EE\u6807\u7EED\u505A\u586B\u5199\u539F requirementId/expectedRevision\uFF0C\u5FC5\u8981\u65F6\u5148\u7531\u8D1F\u8D23\u4EBA reopen\u3002\u6BCF\u9879\u7528\u5C40\u90E8 key\uFF0CdependsOn \u5F15\u7528\u672C\u8BA1\u5212 key\uFF0CdependencyTaskIds \u5F15\u7528\u539F\u9700\u6C42\u5DF2\u6709\u4EFB\u52A1 ID\uFF1B\u4E0D\u5FC5\u63D0\u524D\u77E5\u9053\u7CFB\u7EDF\u751F\u6210\u7684\u4EFB\u52A1 ID\u3002\u6574\u6279\u6388\u6743\u3001\u4F9D\u8D56\u3001\u5B57\u6BB5\u548C\u5BB9\u91CF\u6821\u9A8C\u901A\u8FC7\u624D\u4FDD\u5B58\u3002\n- \u6BCF\u9879\u660E\u786E assigneeCompanionId\uFF08\u771F\u6B63\u6267\u884C\u8005\u7684\u7A33\u5B9A ID\uFF09\uFF0CreviewerCompanionId \u9ED8\u8BA4\u81EA\u5DF1\u3002\u6309\u4EA4\u4ED8\u8FB9\u754C\u586B\u5199 acceptanceCriteria\uFF0C\u907F\u514D\u628A\u7814\u7A76\u7ED3\u8BBA\u6216\u7F8E\u89C2\u7A0B\u5EA6\u4F2A\u88C5\u6210\u7A0B\u5E8F\u80FD\u81EA\u52A8\u9A8C\u8BC1\u7684\u4E8B\u5B9E\u3002\u5B9E\u9645\u6267\u884C autoRun=true\uFF1B\u53EA\u89C4\u5212 false\u3002\u5B8C\u6574\u8303\u56F4\u786E\u8BA4\u624D completeScope=true\uFF0C\u540E\u7EED\u5F85\u51B3\u5B9A\u5219 false\uFF0C\u4E0D\u628A\u9636\u6BB5\u5B8C\u6210\u5F53\u6574\u4F53\u5B8C\u6210\u3002\n- \u4F1A\u4FEE\u6539\u76F8\u540C\u4EE3\u7801\u5E93\u3001\u6587\u4EF6\u6216\u670D\u52A1\u65F6\u586B\u5199\u4E00\u81F4\u7684 resourceKeys\uFF0C\u4F8B\u5982 repo:team/api\u3001service:staging\uFF1B\u72EC\u7ACB\u53EA\u8BFB\u5DE5\u4F5C\u4E0D\u4E3A\u51D1\u5E76\u884C\u9650\u5236\u800C\u4E71\u52A0\u9501\u3002\u76F8\u540C\u8D44\u6E90\u5728\u770B\u677F\u5185\u4E32\u884C\uFF0C\u8FD9\u4E0D\u8986\u76D6\u5176\u4ED6\u4F1A\u8BDD\u6216\u64CD\u4F5C\u7CFB\u7EDF\uFF0C\u4E5F\u4E0D\u6388\u4E88\u8BBF\u95EE\u6743\u9650\u3002\u4F9D\u8D56\u5173\u7CFB\u548C\u8D44\u6E90\u51B2\u7A81\u662F\u4E24\u56DE\u4E8B\u3002\n- \u9A8C\u6536\u6709\u6E05\u5355\u7684\u4EFB\u52A1\u65F6\uFF0Caccept/reject \u7684 checks \u4F7F\u7528 1-based criterion \u7F16\u53F7\uFF0C\u9010\u9879\u586B\u5199 passed/failed/unverified\uFF0C\u4EE5\u53CA\u5B9E\u9645 evidence \u6216\u7F3A\u9879 reason\u3002\u6267\u884C\u8005\u63D0\u4F9B\u7684\u8BC1\u636E\u4E0D\u662F\u81EA\u52A8\u901A\u8FC7\u51ED\u8BC1\uFF1B\u65E0\u6CD5\u5B9E\u9645\u6838\u9A8C\u5FC5\u987B\u660E\u786E unverified\uFF0C\u4E0D\u5F97\u4E3A\u4E86\u8BA9\u6D41\u7A0B\u7EE7\u7EED\u7F16\u9020\u901A\u8FC7\u3002\u6253\u56DE\u53EA\u4FEE\u5177\u4F53\u7F3A\u9879\uFF1B\u7F3A\u5DE5\u5177\u6216\u8303\u56F4\u9700\u8981\u8C03\u6574\u4ECD\u8D70 replan\u3002\n- \u8C03\u5EA6\u53CD\u9988 scheduling \u533A\u5206\u524D\u7F6E\u672A\u9A8C\u6536\u3001\u8D44\u6E90\u5360\u7528\u3001\u7B49\u5F85\u6267\u884C\u7A7A\u4F4D\u3001\u7B49\u5F85\u91CD\u8BD5\u3001\u4EC5\u89C4\u5212\u548C\u91CD\u89C4\u5212\uFF1B\u6B63\u5E38\u7B49\u5F85\u4E0D\u91CD\u590D\u63D0\u4EA4\u6216\u91CD\u5EFA\u4EFB\u52A1\u3002\u6CA1\u6709\u6574\u4EFD\u8BA1\u5212\u65F6\uFF0C\u4E0B\u9762\u7684\u9010\u9879\u521B\u5EFA\u534F\u8BAE\u4ECD\u53EF\u7528\u4E8E\u5C0F\u8303\u56F4\u8FFD\u52A0\u548C\u65E7\u4EFB\u52A1\u7EF4\u62A4\u3002\n\n1. \u7528\u4E00\u53E5\u8BDD\u8BF4\u660E\u6B63\u5728\u5E94\u7528\u201C\u4EFB\u52A1\u62C6\u89E3\u4E0E\u770B\u677F\u63A8\u8FDB\u201D\u53CA\u91C7\u7528\u7684\u4E13\u4E1A\u5206\u5DE5\u3002\u8BFB\u53D6 partner_task_board list\uFF0C\u907F\u514D\u91CD\u590D\u521B\u5EFA\u540C\u4E00\u5DE5\u4F5C\uFF1B\u6839\u636E\u6388\u6743\u76EE\u5F55\u4E2D\u7684\u7A33\u5B9A id\u3001\u804C\u8D23\u3001\u80FD\u529B\u4E0E Skill \u9009\u62E9\u6267\u884C\u8005\uFF0C\u76EE\u5F55\u7F3A\u5931\u3001\u521A\u66F4\u65B0\u6388\u6743\u6216\u4FE1\u606F\u4E0D\u8DB3\u65F6\u7528 partner_collaborate directory \u6838\u5BF9\uFF0C\u4E0D\u9760\u540D\u5B57\u731C\u6D4B\u3002\n2. \u6309\u4F9D\u8D56\u987A\u5E8F\u521B\u5EFA\u4EFB\u52A1\uFF0C\u524D\u7F6E\u521B\u5EFA\u540E\u5C06\u8FD4\u56DE\u7684\u771F\u5B9E id \u586B\u5165\u540E\u7EED dependencyTaskIds\u3002\u6BCF\u4E2A\u4EFB\u52A1\u586B\u5199\u6240\u5C5E requirementId\uFF0C\u5E76\u5199\u6E05\u76EE\u6807\u3001\u8F93\u5165\u6765\u6E90\u3001\u53EF\u9A8C\u6536\u4EA4\u4ED8\u7269\u3001\u7EA6\u675F\u548C\u9A8C\u6536\u6761\u4EF6\uFF1B\u4E0D\u80FD\u53EA\u5199\u7B3C\u7EDF\u7684\u4E00\u53E5\u8BDD\u8BA9\u6267\u884C\u8005\u91CD\u65B0\u731C\u9700\u6C42\u3002\n3. \u5BF9\u7528\u6237\u8981\u6C42\u771F\u6B63\u5B8C\u6210\u7684\u5DE5\u4F5C\uFF0Ccreate \u6307\u5B9A assignee\uFF0CautoRun \u9ED8\u8BA4\u5F00\u542F\uFF1B\u4F9D\u8D56\u672A\u5B8C\u6210\u4E5F\u63D0\u4EA4\u6267\u884C\u610F\u56FE\uFF0C\u7531\u961F\u5217\u7B49\u5F85\u5168\u90E8\u524D\u7F6E\u4EFB\u52A1\u9A8C\u6536\u4E3A done \u540E\u81EA\u52A8\u542F\u52A8\u3002\u81EA\u5DF1\u7684\u9636\u6BB5\u4E5F\u6307\u5B9A\u81EA\u5DF1\u7684 id\uFF0C\u4E0D\u5FC5\u628A\u6240\u6709\u4EFB\u52A1\u90FD\u4EA4\u7ED9\u522B\u4EBA\u3002\n4. \u53EA\u89C4\u5212\u65F6\u660E\u786E autoRun=false\uFF1B\u6CA1\u6709\u8D1F\u8D23\u4EBA\u5219\u4FDD\u6301\u672A\u63D0\u4EA4\u3002\u5DF2\u6709\u4EFB\u52A1\u9700\u8981\u6267\u884C\u65F6\u7528 partner_collaborate delegate\uFF0C\u4E0D\u8981\u91CD\u590D\u5EFA\u4EFB\u52A1\u3002\u5DE5\u5177\u4EC5\u8FD4\u56DE submitted/queued \u8868\u793A\u5DF2\u6392\u961F\uFF0C\u4E0D\u4EE3\u8868\u5DF2\u7ECF\u5B8C\u6210\u3002\n5. \u6CA1\u6709\u7279\u6B8A\u6307\u5B9A\u65F6\u9A8C\u6536\u8005\u662F\u521B\u5EFA\u4F19\u4F34\u3002\u4EFB\u52A1\u5206\u914D\u540E\u7ACB\u5373\u8FD4\u56DE\u7CBE\u7B80\u5206\u5DE5\u8868\u53CA\u6240\u5C5E\u539F\u9700\u6C42\uFF1A\u4EFB\u52A1\u3001\u8D1F\u8D23\u4EBA\u3001\u4F9D\u8D56\u3001\u6267\u884C/\u7B49\u5F85\u72B6\u6001\u3001\u9A8C\u6536\u5B89\u6392\uFF1B\u662F\u5426 submit \u6309\u4E0A\u8FF0\u8303\u56F4\u786E\u8BA4\u89C4\u5219\u5224\u65AD\uFF0C\u4E0D\u5FAA\u73AF\u67E5\u8BE2\u3001\u4E0D\u963B\u585E\u7B49\u5F85\u6267\u884C\u7ED3\u679C\u3002\n6. \u6536\u5230\u9A8C\u6536\u56DE\u8C03\u65F6\u6838\u5BF9\u5B9E\u9645\u4EA7\u51FA\uFF0C\u901A\u8FC7\u8C03\u7528 accept\uFF0C\u4E0D\u901A\u8FC7\u8C03\u7528 reject \u5E76\u8BF4\u660E\u5177\u4F53\u5DEE\u8DDD\uFF1B\u5DF2\u63D0\u4EA4\u7684\u540E\u7EED\u4EFB\u52A1\u4F1A\u81EA\u52A8\u63A5\u7EED\u3002\u9700\u6C42\u5B8C\u6210\u540E\u6309\u771F\u5B9E\u7ED3\u679C\u7EDF\u4E00\u6C47\u62A5\uFF0C\u4E0D\u7528\u5B50\u4EFB\u52A1\u8FDB\u5C55\u66FF\u4EE3\u6574\u4F53\u9A8C\u6536\u7ED3\u8BBA\u3002\n";
4
+ export declare const TASK_PLANNING_DOCUMENT = "---\nname: task-planning\ndisplay-name: \u4EFB\u52A1\u62C6\u89E3\u4E0E\u770B\u677F\u63A8\u8FDB\ndescription: \u6536\u5230\u5B9E\u9645\u5DE5\u4F5C\u9700\u6C42\u65F6\uFF0C\u4E3B\u52A8\u6309\u6388\u6743\u4F19\u4F34\u7684\u4E13\u957F\u59D4\u6D3E\uFF1B\u5355\u4E00\u4E13\u4E1A\u6574\u9879\u4EA4\u4ED8\uFF0C\u591A\u4E13\u4E1A\u6309\u4EA7\u51FA\u62C6\u89E3\u3001\u5B89\u6392\u4F9D\u8D56\u5E76\u63D0\u4EA4\u770B\u677F\uFF0C\u65E0\u9700\u7528\u6237\u70B9\u540D\u89E6\u53D1\u3002\nversion: 1.6.0\ncontext: inline\nallowed-tools: [partner_requirements, partner_task_board, partner_collaborate]\n---\n# \u4E13\u4E1A\u5206\u5DE5\u4E0E\u770B\u677F\u63A8\u8FDB\n\n\u4E13\u4E1A\u7684\u4E8B\u4EA4\u7ED9\u4E13\u4E1A\u7684\u4F19\u4F34\u3002\u6536\u5230\u5B9E\u9645\u5DE5\u4F5C\u8BF7\u6C42\u65F6\uFF0C\u5148\u5339\u914D\u6240\u9700\u4E13\u957F\u4E0E\u5F53\u524D\u5DF2\u6388\u6743\u4F19\u4F34\u7684\u804C\u8D23\u3001\u5B9E\u9645\u80FD\u529B\u548C\u5DF2\u542F\u7528 Skill\uFF0C\u518D\u51B3\u5B9A\u8C01\u6267\u884C\u3001\u662F\u5426\u62C6\u5206\u3002\u4E0D\u8981\u5148\u81EA\u5DF1\u505A\u5B8C\uFF0C\u518D\u8865\u770B\u677F\u8BB0\u5F55\u3002\u7528\u6237\u5DF2\u6388\u6743\u534F\u4F5C\u5E76\u63D0\u51FA\u5DE5\u4F5C\u76EE\u6807\u65F6\uFF0C\u4E0D\u9700\u8981\u518D\u8BE2\u95EE\u201C\u8981\u4E0D\u8981\u62C6\u89E3\u201D\u6216\u7B49\u5F85\u7528\u6237\u9010\u4E2A @\u3002\n\n## \u770B\u677F\u59D4\u6D3E\u4E0E\u4E34\u65F6\u5B50 Agent \u7684\u533A\u522B\n\n- \u672C\u6280\u80FD\u6240\u8BF4\u7684\u201C\u5206\u89E3\u4EFB\u52A1\u3001\u4E13\u4E1A\u5206\u5DE5\u201D\u662F\u521B\u5EFA\u6301\u4E45\u5316\u9700\u6C42\u548C\u770B\u677F\u4EFB\u52A1\uFF0C\u518D\u6307\u6D3E\u5DF2\u6388\u6743\u7684\u4F19\u4F34\uFF0C\u4E0D\u662F\u8C03\u7528\u539F\u751F Agent / subagent / spawn_agent \u5E76\u884C\u7814\u7A76\u3002\u4E34\u65F6\u5B50 Agent \u4E0D\u4F1A\u81EA\u52A8\u6210\u4E3A\u770B\u677F\u4EFB\u52A1\uFF0C\u4E5F\u4E0D\u5177\u5907\u8BE5\u9700\u6C42\u7684\u4F9D\u8D56\u3001\u9A8C\u6536\u3001\u6062\u590D\u548C\u6E20\u9053\u6C47\u603B\u6D41\u7A0B\uFF1B\u4E0D\u80FD\u628A\u542F\u52A8\u5B50 Agent \u62A5\u544A\u6210\u201C\u5DF2\u5B8C\u6210\u770B\u677F\u5206\u5DE5\u201D\u3002\n- \u7528\u6237\u660E\u786E\u8981\u6C42\u201C\u91CD\u65B0\u8BBE\u8BA1\u4E00\u4E0B\uFF0C\u5206\u89E3\u4EFB\u52A1\uFF0C\u597D\u597D\u8C03\u7814\uFF0C\u786E\u8BA4\u53EF\u884C\u6027\u201D\u7B49\u5B9E\u9645\u4EA4\u4ED8\u65F6\uFF0C\u5148\u590D\u7528\u6216\u521B\u5EFA\u9700\u6C42\uFF0C\u6309\u8C03\u7814\u8BC1\u636E\u3001\u53EF\u884C\u6027\u9A8C\u8BC1\u3001\u8BBE\u8BA1\u4EA7\u51FA\u7B49\u771F\u5B9E\u4EA4\u4ED8\u8FB9\u754C\u63D0\u4EA4\u770B\u677F\u5206\u5DE5\u3002\u9700\u8981\u8C03\u7814\u624D\u80FD\u786E\u5B9A\u5B9E\u73B0\u65B9\u6848\uFF0C\u53EF\u4EE5\u5148\u63D0\u4EA4\u8C03\u7814\u4E0E\u9A8C\u8BC1\u4EFB\u52A1\uFF0C\u540E\u7EED\u5728\u539F\u9700\u6C42\u8FFD\u52A0\u5B9E\u73B0\u4EFB\u52A1\uFF1B\u4E0D\u80FD\u4EE5\u201C\u5148\u8C03\u7814\u201D\u4E3A\u7531\u5148\u5F00\u4E00\u6279\u4E34\u65F6\u5B50 Agent \u7ED5\u8FC7\u770B\u677F\u3002\n- \u53EA\u6709\u7528\u6237\u660E\u786E\u6307\u5B9A\u4E34\u65F6\u5B50 Agent\uFF0C\u6216\u5DF2\u7ECF\u627F\u63A5\u4E00\u4E2A\u770B\u677F\u4EFB\u52A1\u3001\u5728\u5141\u8BB8\u7684\u5DE5\u5177\u6743\u9650\u5185\u505A\u8303\u56F4\u5185\u8F85\u52A9\u5DE5\u4F5C\u65F6\uFF0C\u624D\u53EF\u9009\u62E9\u539F\u751F\u5B50 Agent\u3002\u8F85\u52A9\u7ED3\u679C\u4ECD\u7531\u8BE5\u770B\u677F\u4EFB\u52A1\u6267\u884C\u8005\u8D1F\u8D23\uFF0C\u4E0D\u66FF\u4EE3\u4EFB\u52A1\u5F52\u5C5E\u3001\u9A8C\u6536\u548C\u4EA4\u4ED8\uFF0C\u4E5F\u4E0D\u5F97\u6269\u5927\u4F19\u4F34\u95F4\u6388\u6743\u3002\n- \u770B\u677F\u5DE5\u5177\u4E0D\u53EF\u7528\u3001\u6388\u6743\u4F19\u4F34\u4E0D\u5339\u914D\u6216\u7F3A\u5C11\u6267\u884C\u80FD\u529B\u65F6\uFF0C\u8BF4\u660E\u5177\u4F53\u7F3A\u53E3\uFF1B\u4E0D\u6697\u4E2D\u5207\u6362\u6210\u5B50 Agent \u5192\u5145\u4F19\u4F34\u59D4\u6D3E\u3002\u4EC5\u89C4\u5212\u4ECD\u6309\u7528\u6237\u8981\u6C42\u4E0D\u542F\u52A8\u6267\u884C\u3002\n\n## \u5206\u5DE5\u51B3\u7B56\n\n- \u5206\u5DE5\u5B57\u6BB5\u4E0D\u53EF\u98A0\u5012\uFF1A\u4F60\uFF08A\uFF09\u628A\u5DE5\u4F5C\u4EA4\u7ED9\u4E13\u4E1A\u4F19\u4F34 B \u65F6\uFF0Cassignee=B\uFF08\u5B9E\u9645\u6267\u884C\u8005\uFF09\uFF0Creviewer=A\uFF08\u9A8C\u6536\u8005\uFF0C\u521B\u5EFA\u65F6\u53EF\u7701\u7565\u5E76\u9ED8\u8BA4\u81EA\u5DF1\uFF09\u3002\u9700\u6C42 owner \u662F\u7EDF\u7B79\u6536\u5C3E\u8D1F\u8D23\u4EBA\uFF0C\u4E0D\u7B49\u4E8E\u5B50\u4EFB\u52A1\u6267\u884C\u8005\u3002\u53EA\u6709\u81EA\u5DF1\u5B9E\u9645\u505A\u5DE5\u4F5C\u624D\u628A assignee \u586B\u6210\u81EA\u5DF1\uFF1B\u4E0D\u8981\u628A\u88AB\u59D4\u6D3E\u7684\u4EBA\u586B\u6210 reviewer\u3002\n- \u7528\u6237\u8981\u6C42\u5B9E\u9645\u5B8C\u6210\u65F6\u4F7F\u7528 autoRun=true\uFF1B\u53EA\u6709\u660E\u786E\u53EA\u89C4\u5212\u6216\u7B49\u5F85\u786E\u8BA4\u624D\u7528 false\u3002status=ready \u52A0 autoRun=false \u4ECD\u7136\u53EA\u4FDD\u5B58\u3001\u4E0D\u6267\u884C\u3002\u521B\u5EFA\u6216\u66F4\u65B0\u540E\u6838\u5BF9\u8FD4\u56DE\u7684 assignment \u4E2D\u6267\u884C\u8005\u3001\u9A8C\u6536\u8005\u548C\u81EA\u52A8\u6267\u884C\u72B6\u6001\u518D\u6C47\u62A5\uFF1B\u53D1\u73B0\u586B\u9519\uFF0C\u5E94\u8BFB\u53D6\u6700\u65B0 revision \u540E update \u539F\u4EFB\u52A1\uFF0C\u4E0D\u91CD\u590D\u521B\u5EFA\u3002\u5DF2\u63D0\u4EA4\u6216\u6392\u961F\u4E0D\u7B49\u4E8E\u5DF2\u5B8C\u6210\u3002\n\n- \u5DF2\u6536\u5230\u5177\u4F53\u770B\u677F\u4EFB\u52A1\u65F6\uFF0C\u4F60\u9996\u5148\u662F\u8BE5\u4EFB\u52A1\u6267\u884C\u8005\uFF0C\u4E0D\u662F\u9700\u6C42\u8D1F\u8D23\u4EBA\u3002\u4E0D\u8981\u628A\u6B63\u5728\u6267\u884C\u7684\u540C\u4E00 taskId \u518D delegate \u7ED9\u522B\u4EBA\u3002\u53D1\u73B0\u7F3A\u5C11\u771F\u5B9E\u6587\u4EF6\u5DE5\u5177\u3001\u9700\u8981\u6362\u4EBA\u6216\u62C6\u5206\u65F6\uFF0C\u8C03\u7528 partner_task_board request_replan\uFF08taskId\u3001expectedRevision\u3001message\uFF09\uFF0C\u8BF4\u660E\u7F3A\u53E3\u4E0E\u4FDD\u7559\u7684\u4EA7\u51FA\uFF0C\u968F\u540E\u7ED3\u675F\u672C\u8F6E\u3002\u4E0D\u5F97\u6539 state.json\u3001\u4F2A\u9020\u6587\u4EF6\u4EA4\u4ED8\u6216\u6301\u7EED\u91CD\u590D\u5931\u8D25\u8C03\u7528\u3002\n- \u9A8C\u6536\u666E\u901A\u7F3A\u9879\u7528 reject \u7684 reworkMode=rework\uFF1B\u7F3A\u5DE5\u5177\u3001\u9700\u91CD\u65B0\u62C6\u5206/\u6362\u4EBA\u7528 reworkMode=replan\u3002\u8FDE\u7EED\u4E09\u6B21\u6253\u56DE\u81EA\u52A8\u6682\u505C\uFF0C\u7531\u9700\u6C42\u8D1F\u8D23\u4EBA\u6838\u5B9E\u539F\u56E0\u5E76\u8C03\u6574\u3002\u53EA\u6709\u8D1F\u8D23\u4EBA\u53EF reopen \u539F\u9700\u6C42\u8FFD\u52A0\u4EFB\u52A1\uFF1B\u8C03\u6574\u539F\u4EFB\u52A1\u540E\u663E\u5F0F update autoRun=true \u6062\u590D\uFF0C\u4E0D\u80FD\u539F\u6837\u91CD\u8BD5\u4EE3\u66FF\u89E3\u51B3\u95EE\u9898\u3002\n- \u8981\u6C42\u771F\u5B9E\u6587\u4EF6\u65F6\u5FC5\u987B\u6838\u9A8C\u8DEF\u5F84\u3001\u5B9E\u9645\u5185\u5BB9\u4E0E\u76F8\u5173\u8FD0\u884C\u7ED3\u679C\uFF1B\u6587\u5B57\u8BA1\u5212\u3001\u58F0\u79F0\u201C\u5DF2\u7ECF\u521B\u5EFA\u201D\u548C\u89D2\u8272\u63CF\u8FF0\u5747\u4E0D\u80FD\u4EE3\u66FF\u6587\u4EF6\u8BC1\u636E\u3002\u6838\u9A8C\u5DE5\u5177\u4E0D\u53EF\u7528\u65F6\u660E\u786E\u62A5\u963B\u585E\uFF0C\u4E0D\u731C\u6D4B\u901A\u8FC7\u6216\u539F\u6837\u5FAA\u73AF\u6253\u56DE\u3002\n\n- \u6709\u804C\u8D23\u548C\u6267\u884C\u80FD\u529B\u5339\u914D\u7684\u4E13\u4E1A\u4F19\u4F34\u65F6\uFF0C\u4F18\u5148\u4EA4\u7ED9\u8BE5\u4F19\u4F34\uFF0C\u5373\u4F7F\u4F60\u4E5F\u80FD\u5B8C\u6210\u3001\u5DE5\u4F5C\u770B\u8D77\u6765\u7B80\u5355\u6216\u53EA\u6709\u4E00\u4E2A\u4EA4\u4ED8\u7269\u3002\u4F60\u8D1F\u8D23\u6F84\u6E05\u5FC5\u8981\u8F93\u5165\u3001\u5206\u914D\u3001\u9A8C\u6536\u548C\u6700\u7EC8\u6C47\u603B\uFF0C\u4E0D\u91CD\u590D\u6267\u884C\u5DF2\u7ECF\u59D4\u6D3E\u7684\u5DE5\u4F5C\u3002\n- \u5355\u4E00\u4E13\u4E1A\u5373\u53EF\u5B8C\u6210\uFF1A\u521B\u5EFA\u4E00\u4E2A\u5B8C\u6574\u4EFB\u52A1\u4EA4\u7ED9\u8BE5\u4E13\u4E1A\u4F19\u4F34\uFF0C\u4E0D\u4E3A\u201C\u62C6\u89E3\u201D\u51D1\u6570\u91CF\u3002\u591A\u4E2A\u4E13\u4E1A\u3001\u53EF\u72EC\u7ACB\u9A8C\u6536\u7684\u4EA7\u51FA\u6216\u771F\u5B9E\u524D\u7F6E\u4F9D\u8D56\uFF1A\u6309\u4EA4\u4ED8\u8FB9\u754C\u62C6\u5206\uFF0C\u72EC\u7ACB\u5DE5\u4F5C\u5E76\u884C\u3001\u4F9D\u8D56\u5DE5\u4F5C\u4E32\u884C\uFF0C\u4E0D\u628A\u5185\u90E8\u63A8\u7406\u6B65\u9AA4\u62C6\u6210\u4EFB\u52A1\u3002\n- \u9009\u62E9\u4F9D\u636E\u662F\u6388\u6743\u76EE\u5F55\u4E2D\u7684\u804C\u8D23\u3001\u80FD\u529B\u548C\u5DF2\u542F\u7528 Skill\uFF0C\u4E0D\u662F\u540D\u5B57\u6216\u201C\u7A7A\u95F2\u201D\u6807\u7B7E\u3002\u6709\u591A\u4E2A\u5408\u9002\u6267\u884C\u8005\u65F6\u7ED3\u5408\u5339\u914D\u7A0B\u5EA6\u548C\u8D1F\u8F7D\u9009\u62E9\uFF1B\u4E13\u4E1A\u4F19\u4F34\u5FD9\u788C\u53EF\u6B63\u5E38\u6392\u961F\uFF0C\u4E0D\u56E0 busy \u5C31\u9ED8\u8BA4\u81EA\u5DF1\u63A5\u7BA1\u3002\u6388\u6743\u76EE\u5F55\u4E0D\u662F\u5B9E\u65F6\u8D1F\u8F7D\u627F\u8BFA\uFF0C\u9700\u8981\u65F6\u91CD\u65B0\u67E5\u8BE2\u3002\n- \u6CA1\u6709\u5339\u914D\u4E14\u83B7\u6388\u6743\u7684\u4E13\u4E1A\u4F19\u4F34\u65F6\uFF0C\u624D\u7531\u81EA\u5DF1\u5728\u80FD\u529B\u8303\u56F4\u5185\u5B8C\u6210\uFF1B\u7F3A\u5C11\u5FC5\u8981\u80FD\u529B\u6216\u5173\u952E\u8F93\u5165\u5C31\u8BF4\u660E\u5177\u4F53\u7F3A\u53E3\uFF0C\u4E0D\u865A\u6784\u5206\u5DE5\uFF0C\u4E5F\u4E0D\u64C5\u81EA\u521B\u5EFA\u4F19\u4F34\u3001\u542F\u7528\u80FD\u529B\u6216\u6269\u5927\u6388\u6743\u3002\u81EA\u5DF1\u7684\u72EC\u7ACB\u4EA4\u4ED8\u9636\u6BB5\u4E5F\u53EF\u8FDB\u5165\u770B\u677F\u3002\n- \u4F8B\u5982\u201C\u591A\u6765\u6E90\u6536\u96C6 + \u771F\u5B9E\u6027\u6838\u9A8C + \u7ED3\u8BBA\u6574\u7406 + \u5185\u5BB9\u65B9\u5411\u201D\uFF0C\u5E94\u533A\u5206\u8BC1\u636E\u6536\u96C6\u3001\u6838\u9A8C\u548C\u7EFC\u5408\u4EA4\u4ED8\uFF0C\u5E76\u5EFA\u7ACB\u771F\u5B9E\u4F9D\u8D56\uFF1B\u5F00\u53D1\u9700\u6C42\u53EF\u4EE5\u4F9D\u636E\u9700\u6C42\u6F84\u6E05\u3001\u67B6\u6784\u3001\u5B9E\u73B0\u3001\u6D4B\u8BD5\u7B49\u5B9E\u9645\u4EA4\u4ED8\u9009\u62E9\u9636\u6BB5\uFF0C\u4E0D\u56FA\u5B9A\u9636\u6BB5\u6216\u4EFB\u52A1\u6570\u91CF\u3002\n\n## \u9002\u7528\u8FB9\u754C\n\n- \u95F2\u804A\u3001\u6982\u5FF5\u89E3\u91CA\u6216\u5BF9\u5F53\u524D\u7ED3\u679C\u7684\u8FFD\u95EE\u53EF\u76F4\u63A5\u7B54\u590D\uFF0C\u4E0D\u662F\u6BCF\u53E5\u8BDD\u90FD\u8981\u521B\u5EFA\u770B\u677F\u3002\u201C\u6574\u7406\u4E00\u4EFD\u8D44\u6599\u3001\u68C0\u67E5\u8FD9\u4E2A\u95EE\u9898\u3001\u5B9E\u73B0\u8FD9\u4E2A\u529F\u80FD\u201D\u5C5E\u4E8E\u5B9E\u9645\u4EA4\u4ED8\uFF0C\u4E0D\u80FD\u4EC5\u4EE5\u201C\u6211\u4F1A\u505A\u3001\u4EFB\u52A1\u7B80\u5355\u201D\u4E3A\u7531\u8DF3\u8FC7\u4E13\u4E1A\u5339\u914D\u3002\n- \u7528\u6237\u660E\u786E\u201C\u4F60\u81EA\u5DF1\u505A\u3001\u4E0D\u8981\u59D4\u6D3E\u201D\u65F6\u9075\u5FAA\u6307\u5B9A\u5206\u5DE5\uFF1B\u201C\u53EA\u8BA8\u8BBA\u3001\u53EA\u89C4\u5212\u3001\u7B49\u6211\u786E\u8BA4\u3001\u4E0D\u8981\u6267\u884C\u201D\u65F6\u4E0D\u63D0\u4EA4\u6267\u884C\u3002\u4EC5\u8981\u6C42\u62C6\u89E3\u65B9\u6848\u65F6\u8F93\u51FA\u8BA1\u5212\u6216\u4FDD\u5B58\u4E0D\u6267\u884C\u7684\u770B\u677F\uFF1B\u8981\u6C42\u5B8C\u6210\u5DE5\u4F5C\uFF08\u5305\u62EC\u201C\u62C6\u89E3\u5E76\u5904\u7406\u201D\uFF09\u65F6\u63D0\u4EA4\u771F\u5B9E\u6267\u884C\uFF0C\u4E0D\u80FD\u56E0\u4E3A\u51FA\u73B0\u201C\u62C6\u89E3\u201D\u5C31\u9ED8\u8BA4\u53EA\u89C4\u5212\u3002\n- \u5DF2\u6536\u5230\u660E\u786E\u8303\u56F4\u7684\u770B\u677F\u5B50\u4EFB\u52A1\u65F6\uFF0C\u4F60\u5DF2\u7ECF\u662F\u8BE5\u9636\u6BB5\u6267\u884C\u8005\uFF0C\u5B8C\u6210\u8BE5\u8303\u56F4\uFF0C\u4E0D\u628A\u540C\u4E00\u4EFB\u52A1\u91CD\u65B0\u8F6C\u6D3E\u6216\u65E0\u9650\u9012\u5F52\u62C6\u89E3\u3002\u82E5\u5B9E\u9645\u7F3A\u5C11\u80FD\u529B\u6216\u53D1\u73B0\u8303\u56F4\u5916\u5DE5\u4F5C\uFF0C\u5411\u521B\u5EFA\u8005\u8BF4\u660E\u5177\u4F53\u7F3A\u53E3\uFF0C\u7531\u5176\u8C03\u6574\u5206\u5DE5\uFF1B\u9A8C\u6536\u56DE\u8C03\u6309\u9A8C\u6536\u534F\u8BAE\u5904\u7406\uFF0C\u4E0D\u5F53\u4F5C\u65B0\u7684\u5DE5\u4F5C\u8BF7\u6C42\u3002\n- \u5177\u5907 Skill \u6216\u67D0\u4F19\u4F34\u53EF\u7528\u4E0D\u4EE3\u8868\u83B7\u5F97\u65B0\u6743\u9650\uFF1B\u5916\u90E8\u53D1\u5E03\u3001\u5220\u9664\u7B49\u52A8\u4F5C\u4ECD\u670D\u4ECE\u7528\u6237\u6388\u6743\u4E0E DSH \u5DE5\u5177\u6743\u9650\u3002\n\n## \u9700\u6C42\u5F52\u5C5E\u4E0E\u6536\u5C3E\n\n- \u4E00\u6B21\u7528\u6237\u4EA4\u4ED8\u76EE\u6807\u5BF9\u5E94\u4E00\u4E2A\u9700\u6C42\u5757\u3002\u7528\u6237\u8BF4\u201C\u7EE7\u7EED\u3001\u4E0B\u4E00\u6B65\u3001\u5728\u521A\u624D\u65B9\u6848\u4E0A\u505A\u89C6\u89C9/\u5B9E\u73B0\u201D\u65F6\uFF0C\u5148\u67E5\u539F\u4EFB\u52A1\u7684 requirementId \u5E76\u590D\u7528\u8BE5\u9700\u6C42\uFF1B\u6362\u4E13\u4E1A\u4F19\u4F34\u6216\u8FDB\u5165\u4E0B\u4E00\u9636\u6BB5\u4E0D\u7B49\u4E8E\u65B0\u9700\u6C42\u3002\u53EA\u6709\u72EC\u7ACB\u4EA4\u4ED8\u76EE\u6807\u624D create \u9700\u6C42\uFF0C\u4E0D\u80FD\u56E0\u6F0F\u586B\u5F52\u5C5E\u53E6\u5EFA\u3002\u5404\u4EFB\u52A1\u521B\u5EFA\u5FC5\u987B\u660E\u786E\u586B\u5199 requirementId\uFF1BdependencyTaskIds \u53EA\u8868\u793A\u5148\u540E\u5173\u7CFB\uFF0C\u4E0D\u80FD\u4EE3\u66FF\u5F52\u5C5E\u3002\u591A\u4E2A\u539F\u9700\u6C42\u90FD\u53EF\u80FD\u5339\u914D\u65F6\u6838\u5BF9\u7528\u6237\u4E0A\u4E0B\u6587\uFF0C\u4E0D\u51ED\u6807\u9898\u731C\u6D4B\u5408\u5E76\u3002\n- \u8FFD\u52A0\u4EFB\u52A1\u4E0D\u662F\u4FEE\u6539\u5DF2\u5B8C\u6210\u4EFB\u52A1\uFF1A\u89C4\u5212\u6001\u76F4\u63A5\u5F80\u539F\u9700\u6C42\u6DFB\u52A0\uFF1B\u5DF2\u63D0\u4EA4\u6216\u5DF2\u5F52\u6863\u65F6\uFF0C\u7531\u8D1F\u8D23\u4EBA\u660E\u786E reopen \u540E\u8FFD\u52A0\uFF1B\u53EF\u4EE5\u9644 title/description \u8BF4\u660E\u65B0\u589E\u9636\u6BB5\u7684\u6574\u4F53\u8303\u56F4\uFF0C\u4FDD\u7559\u5386\u53F2\u6210\u679C\uFF0C\u4E0D\u91CD\u8DD1\u5DF2\u9A8C\u6536\u4EFB\u52A1\u3002\u53EA\u5728\u7528\u6237\u6539\u53D8\u65E7\u4EA4\u4ED8\u7684\u9A8C\u6536\u8981\u6C42\u65F6\u7528 update \u6539\u5199\u76F8\u5E94\u9700\u6C42/\u4EFB\u52A1\u3002\u786E\u8BA4\u5168\u90E8\u76EE\u6807\u8303\u56F4\u5DF2\u5B89\u6392\u540E\u518D submit\uFF1B\u5982\u679C\u5F53\u524D\u53EA\u63A8\u8FDB\u4E00\u9636\u6BB5\u3001\u540E\u7EED\u5F85\u7528\u6237\u51B3\u5B9A\uFF0C\u53EF\u4EE5\u4FDD\u6301\u89C4\u5212\u6001\uFF0C\u4E0D\u628A\u9636\u6BB5\u5B8C\u6210\u5F53\u6210\u6574\u4F53\u5B8C\u6210\u3002\u5B50\u4EFB\u52A1\u6267\u884C\u8005\u53EA\u5B8C\u6210\u53D7\u6D3E\u8303\u56F4\uFF0C\u4E0D\u53E6\u62C6\u4E00\u5957\u91CD\u590D\u4EFB\u52A1\u3002\n- \u5B50\u4EFB\u52A1\u6267\u884C\u3001\u8FD4\u5DE5\u3001\u9A8C\u6536\u4E0D\u5355\u72EC\u901A\u77E5\u7528\u6237\u3002\u4EC5\u5F53\u9700\u6C42\u53EA\u5269\u5DF2\u5B8C\u6210/\u53D7\u963B\u4EFB\u52A1\u4E14\u6CA1\u6709\u6392\u961F\u6267\u884C\u65F6\uFF0C\u7CFB\u7EDF\u7EDF\u4E00\u6C47\u62A5\u6210\u679C\u6216\u963B\u585E\uFF1B\u5F85\u5F00\u59CB\u3001\u6267\u884C\u4E2D\u3001\u5F85\u9A8C\u6536\u4E0D\u89E6\u53D1\u9636\u6BB5\u901A\u77E5\u3002\u9636\u6BB5\u901A\u77E5\u4E0D\u4F9D\u8D56\u5F52\u6863\u3002\u5B8C\u6574\u8303\u56F4\u5DF2\u786E\u8BA4\u4E14\u5168\u90E8\u9A8C\u6536\u5B8C\u6210\u624D\u603B\u7ED3\u5F52\u6863\uFF1B\u8D1F\u8D23\u4EBA\u4E5F\u53EF\u7528 finish \u660E\u786E\u5B8C\u6210\u3002\u53D6\u6D88/\u5220\u9664\u7684\u5DE5\u4F5C\u4E0D\u7B97\u6210\u529F\uFF0C\u4E0D\u5F97\u7528\u5220\u9664\u672A\u5B8C\u6210\u4EFB\u52A1\u4F2A\u9020\u9700\u6C42\u5B8C\u6210\u3002\n- \u672C\u6280\u80FD\u5C5E\u4E8E\u4F19\u4F34\u63D2\u4EF6\uFF0C\u5DF2\u6CE8\u5165\u5C31\u76F4\u63A5\u5E94\u7528\uFF1B\u9700\u8981\u8BFB\u53D6\u65F6\u4F7F\u7528 partner_skill load\uFF0C\u4E0D\u80FD\u8C03\u7528\u539F\u751F skill(name=\"task-planning\")\u3002\n\n## \u6267\u884C\u534F\u8BAE\n\n\u6574\u4EFD\u5206\u5DE5\u5DF2\u7ECF\u660E\u786E\u65F6\uFF0C\u4F18\u5148\u7528 partner_requirements submit_plan \u4E00\u6B21\u4FDD\u5B58\u5E76\u63D0\u4EA4\uFF0C\u4E0D\u518D\u9010\u4E2A create \u51D1\u9F50\u8BA1\u5212\u3002\u4ECD\u7531\u672C Skill \u51B3\u5B9A\u4E13\u4E1A\u5206\u5DE5\uFF0C\u5DE5\u5177\u4E0D\u65B0\u589E\u56FA\u5B9A\u884C\u4E1A\u6D41\u7A0B\u6216\u5F3A\u5236\u524D\u7F6E\u6B65\u9AA4\u3002\n\n- \u7528\u7A33\u5B9A submissionKey \u6807\u8BC6\u8FD9\u6B21\u63D0\u4EA4\uFF1B\u7F51\u7EDC\u8D85\u65F6\u91CD\u8BD5\u590D\u7528\u539F key \u548C\u539F\u8BA1\u5212\uFF0C\u4E0D\u6362 key\u3001\u4E0D\u91CD\u590D\u521B\u5EFA\u3002\u8FD4\u56DE replayed \u8868\u793A\u53D6\u56DE\u539F\u63D0\u4EA4\uFF0C\u4E0D\u662F\u518D\u6B21\u6267\u884C\uFF1Bremoved \u8868\u793A\u76F8\u5173\u5DE5\u4F5C\u5DF2\u88AB\u5220\u9664\uFF0C\u4E0D\u80FD\u501F\u91CD\u8BD5\u91CD\u5EFA\u3002\n- \u65B0\u76EE\u6807\u586B\u5199 title/description\uFF1B\u540C\u4E00\u76EE\u6807\u7EED\u505A\u586B\u5199\u539F requirementId/expectedRevision\uFF0C\u5FC5\u8981\u65F6\u5148\u7531\u8D1F\u8D23\u4EBA reopen\u3002\u6BCF\u9879\u7528\u5C40\u90E8 key\uFF0CdependsOn \u5F15\u7528\u672C\u8BA1\u5212 key\uFF0CdependencyTaskIds \u5F15\u7528\u539F\u9700\u6C42\u5DF2\u6709\u4EFB\u52A1 ID\uFF1B\u4E0D\u5FC5\u63D0\u524D\u77E5\u9053\u7CFB\u7EDF\u751F\u6210\u7684\u4EFB\u52A1 ID\u3002\u6574\u6279\u6388\u6743\u3001\u4F9D\u8D56\u3001\u5B57\u6BB5\u548C\u5BB9\u91CF\u6821\u9A8C\u901A\u8FC7\u624D\u4FDD\u5B58\u3002\n- \u6BCF\u9879\u660E\u786E assigneeCompanionId\uFF08\u771F\u6B63\u6267\u884C\u8005\u7684\u7A33\u5B9A ID\uFF09\uFF0CreviewerCompanionId \u9ED8\u8BA4\u81EA\u5DF1\u3002\u6309\u4EA4\u4ED8\u8FB9\u754C\u586B\u5199 acceptanceCriteria\uFF0C\u907F\u514D\u628A\u7814\u7A76\u7ED3\u8BBA\u6216\u7F8E\u89C2\u7A0B\u5EA6\u4F2A\u88C5\u6210\u7A0B\u5E8F\u80FD\u81EA\u52A8\u9A8C\u8BC1\u7684\u4E8B\u5B9E\u3002\u5B9E\u9645\u6267\u884C autoRun=true\uFF1B\u53EA\u89C4\u5212 false\u3002\u5B8C\u6574\u8303\u56F4\u786E\u8BA4\u624D completeScope=true\uFF0C\u540E\u7EED\u5F85\u51B3\u5B9A\u5219 false\uFF0C\u4E0D\u628A\u9636\u6BB5\u5B8C\u6210\u5F53\u6574\u4F53\u5B8C\u6210\u3002\n- \u4F1A\u4FEE\u6539\u76F8\u540C\u4EE3\u7801\u5E93\u3001\u6587\u4EF6\u6216\u670D\u52A1\u65F6\u586B\u5199\u4E00\u81F4\u7684 resourceKeys\uFF0C\u4F8B\u5982 repo:team/api\u3001service:staging\uFF1B\u72EC\u7ACB\u53EA\u8BFB\u5DE5\u4F5C\u4E0D\u4E3A\u51D1\u5E76\u884C\u9650\u5236\u800C\u4E71\u52A0\u9501\u3002\u76F8\u540C\u8D44\u6E90\u5728\u770B\u677F\u5185\u4E32\u884C\uFF0C\u8FD9\u4E0D\u8986\u76D6\u5176\u4ED6\u4F1A\u8BDD\u6216\u64CD\u4F5C\u7CFB\u7EDF\uFF0C\u4E5F\u4E0D\u6388\u4E88\u8BBF\u95EE\u6743\u9650\u3002\u4F9D\u8D56\u5173\u7CFB\u548C\u8D44\u6E90\u51B2\u7A81\u662F\u4E24\u56DE\u4E8B\u3002\n- \u9A8C\u6536\u6709\u6E05\u5355\u7684\u4EFB\u52A1\u65F6\uFF0Caccept/reject \u7684 checks \u4F7F\u7528 1-based criterion \u7F16\u53F7\uFF0C\u9010\u9879\u586B\u5199 passed/failed/unverified\uFF0C\u4EE5\u53CA\u5B9E\u9645 evidence \u6216\u7F3A\u9879 reason\u3002\u6267\u884C\u8005\u63D0\u4F9B\u7684\u8BC1\u636E\u4E0D\u662F\u81EA\u52A8\u901A\u8FC7\u51ED\u8BC1\uFF1B\u65E0\u6CD5\u5B9E\u9645\u6838\u9A8C\u5FC5\u987B\u660E\u786E unverified\uFF0C\u4E0D\u5F97\u4E3A\u4E86\u8BA9\u6D41\u7A0B\u7EE7\u7EED\u7F16\u9020\u901A\u8FC7\u3002\u6253\u56DE\u53EA\u4FEE\u5177\u4F53\u7F3A\u9879\uFF1B\u7F3A\u5DE5\u5177\u6216\u8303\u56F4\u9700\u8981\u8C03\u6574\u4ECD\u8D70 replan\u3002\n- \u8C03\u5EA6\u53CD\u9988 scheduling \u533A\u5206\u524D\u7F6E\u672A\u9A8C\u6536\u3001\u8D44\u6E90\u5360\u7528\u3001\u7B49\u5F85\u6267\u884C\u7A7A\u4F4D\u3001\u7B49\u5F85\u91CD\u8BD5\u3001\u4EC5\u89C4\u5212\u548C\u91CD\u89C4\u5212\uFF1B\u6B63\u5E38\u7B49\u5F85\u4E0D\u91CD\u590D\u63D0\u4EA4\u6216\u91CD\u5EFA\u4EFB\u52A1\u3002\u6CA1\u6709\u6574\u4EFD\u8BA1\u5212\u65F6\uFF0C\u4E0B\u9762\u7684\u9010\u9879\u521B\u5EFA\u534F\u8BAE\u4ECD\u53EF\u7528\u4E8E\u5C0F\u8303\u56F4\u8FFD\u52A0\u548C\u65E7\u4EFB\u52A1\u7EF4\u62A4\u3002\n\n1. \u7528\u4E00\u53E5\u8BDD\u8BF4\u660E\u6B63\u5728\u5E94\u7528\u201C\u4EFB\u52A1\u62C6\u89E3\u4E0E\u770B\u677F\u63A8\u8FDB\u201D\u53CA\u91C7\u7528\u7684\u4E13\u4E1A\u5206\u5DE5\u3002\u8BFB\u53D6 partner_task_board list\uFF0C\u907F\u514D\u91CD\u590D\u521B\u5EFA\u540C\u4E00\u5DE5\u4F5C\uFF1B\u6839\u636E\u6388\u6743\u76EE\u5F55\u4E2D\u7684\u7A33\u5B9A id\u3001\u804C\u8D23\u3001\u80FD\u529B\u4E0E Skill \u9009\u62E9\u6267\u884C\u8005\uFF0C\u76EE\u5F55\u7F3A\u5931\u3001\u521A\u66F4\u65B0\u6388\u6743\u6216\u4FE1\u606F\u4E0D\u8DB3\u65F6\u7528 partner_collaborate directory \u6838\u5BF9\uFF0C\u4E0D\u9760\u540D\u5B57\u731C\u6D4B\u3002\n2. \u6309\u4F9D\u8D56\u987A\u5E8F\u521B\u5EFA\u4EFB\u52A1\uFF0C\u524D\u7F6E\u521B\u5EFA\u540E\u5C06\u8FD4\u56DE\u7684\u771F\u5B9E id \u586B\u5165\u540E\u7EED dependencyTaskIds\u3002\u6BCF\u4E2A\u4EFB\u52A1\u586B\u5199\u6240\u5C5E requirementId\uFF0C\u5E76\u5199\u6E05\u76EE\u6807\u3001\u8F93\u5165\u6765\u6E90\u3001\u53EF\u9A8C\u6536\u4EA4\u4ED8\u7269\u3001\u7EA6\u675F\u548C\u9A8C\u6536\u6761\u4EF6\uFF1B\u4E0D\u80FD\u53EA\u5199\u7B3C\u7EDF\u7684\u4E00\u53E5\u8BDD\u8BA9\u6267\u884C\u8005\u91CD\u65B0\u731C\u9700\u6C42\u3002\n3. \u5BF9\u7528\u6237\u8981\u6C42\u771F\u6B63\u5B8C\u6210\u7684\u5DE5\u4F5C\uFF0Ccreate \u6307\u5B9A assignee\uFF0CautoRun \u9ED8\u8BA4\u5F00\u542F\uFF1B\u4F9D\u8D56\u672A\u5B8C\u6210\u4E5F\u63D0\u4EA4\u6267\u884C\u610F\u56FE\uFF0C\u7531\u961F\u5217\u7B49\u5F85\u5168\u90E8\u524D\u7F6E\u4EFB\u52A1\u9A8C\u6536\u4E3A done \u540E\u81EA\u52A8\u542F\u52A8\u3002\u81EA\u5DF1\u7684\u9636\u6BB5\u4E5F\u6307\u5B9A\u81EA\u5DF1\u7684 id\uFF0C\u4E0D\u5FC5\u628A\u6240\u6709\u4EFB\u52A1\u90FD\u4EA4\u7ED9\u522B\u4EBA\u3002\n4. \u53EA\u89C4\u5212\u65F6\u660E\u786E autoRun=false\uFF1B\u6CA1\u6709\u8D1F\u8D23\u4EBA\u5219\u4FDD\u6301\u672A\u63D0\u4EA4\u3002\u5DF2\u6709\u4EFB\u52A1\u9700\u8981\u6267\u884C\u65F6\u7528 partner_collaborate delegate\uFF0C\u4E0D\u8981\u91CD\u590D\u5EFA\u4EFB\u52A1\u3002\u5DE5\u5177\u4EC5\u8FD4\u56DE submitted/queued \u8868\u793A\u5DF2\u6392\u961F\uFF0C\u4E0D\u4EE3\u8868\u5DF2\u7ECF\u5B8C\u6210\u3002\n5. \u6CA1\u6709\u7279\u6B8A\u6307\u5B9A\u65F6\u9A8C\u6536\u8005\u662F\u521B\u5EFA\u4F19\u4F34\u3002\u4EFB\u52A1\u5206\u914D\u540E\u7ACB\u5373\u8FD4\u56DE\u7CBE\u7B80\u5206\u5DE5\u8868\u53CA\u6240\u5C5E\u539F\u9700\u6C42\uFF1A\u4EFB\u52A1\u3001\u8D1F\u8D23\u4EBA\u3001\u4F9D\u8D56\u3001\u6267\u884C/\u7B49\u5F85\u72B6\u6001\u3001\u9A8C\u6536\u5B89\u6392\uFF1B\u662F\u5426 submit \u6309\u4E0A\u8FF0\u8303\u56F4\u786E\u8BA4\u89C4\u5219\u5224\u65AD\uFF0C\u4E0D\u5FAA\u73AF\u67E5\u8BE2\u3001\u4E0D\u963B\u585E\u7B49\u5F85\u6267\u884C\u7ED3\u679C\u3002\n6. \u6536\u5230\u9A8C\u6536\u56DE\u8C03\u65F6\u6838\u5BF9\u5B9E\u9645\u4EA7\u51FA\uFF0C\u901A\u8FC7\u8C03\u7528 accept\uFF0C\u4E0D\u901A\u8FC7\u8C03\u7528 reject \u5E76\u8BF4\u660E\u5177\u4F53\u5DEE\u8DDD\uFF1B\u5DF2\u63D0\u4EA4\u7684\u540E\u7EED\u4EFB\u52A1\u4F1A\u81EA\u52A8\u63A5\u7EED\u3002\u9700\u6C42\u5B8C\u6210\u540E\u6309\u771F\u5B9E\u7ED3\u679C\u7EDF\u4E00\u6C47\u62A5\uFF0C\u4E0D\u7528\u5B50\u4EFB\u52A1\u8FDB\u5C55\u66FF\u4EE3\u6574\u4F53\u9A8C\u6536\u7ED3\u8BBA\u3002\n";
5
5
  //# sourceMappingURL=task-planning.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"task-planning.d.ts","sourceRoot":"","sources":["../../src/skills/task-planning.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,eAAO,MAAM,qBAAqB,UAAU,CAAA;AAC5C,eAAO,MAAM,yBAAyB,6WAAiE,CAAA;AACvG,eAAO,MAAM,sBAAsB,qvmBA0DlC,CAAA"}
1
+ {"version":3,"file":"task-planning.d.ts","sourceRoot":"","sources":["../../src/skills/task-planning.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,eAAO,MAAM,qBAAqB,UAAU,CAAA;AAC5C,eAAO,MAAM,yBAAyB,6WAAiE,CAAA;AACvG,eAAO,MAAM,sBAAsB,yvrBAiElC,CAAA"}