@xrkseek/harness 0.5.10 → 0.5.11

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 (191) hide show
  1. package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts +4 -3
  2. package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts.map +1 -1
  3. package/node_modules/@xrkseek/core-agent-loop/dist/index.js +22 -60
  4. package/node_modules/@xrkseek/core-agent-loop/dist/index.js.map +1 -1
  5. package/node_modules/@xrkseek/core-agent-loop/dist/settle-batch.d.ts +11 -3
  6. package/node_modules/@xrkseek/core-agent-loop/dist/settle-batch.d.ts.map +1 -1
  7. package/node_modules/@xrkseek/core-agent-loop/dist/settle-batch.js +23 -8
  8. package/node_modules/@xrkseek/core-agent-loop/dist/settle-batch.js.map +1 -1
  9. package/node_modules/@xrkseek/core-session/dist/sqlite-store.d.ts.map +1 -1
  10. package/node_modules/@xrkseek/core-session/dist/sqlite-store.js +27 -1
  11. package/node_modules/@xrkseek/core-session/dist/sqlite-store.js.map +1 -1
  12. package/node_modules/@xrkseek/core-tools/dist/index.d.ts +1 -1
  13. package/node_modules/@xrkseek/core-tools/dist/index.d.ts.map +1 -1
  14. package/node_modules/@xrkseek/core-tools/dist/index.js +1 -1
  15. package/node_modules/@xrkseek/core-tools/dist/index.js.map +1 -1
  16. package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.d.ts +9 -0
  17. package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.d.ts.map +1 -1
  18. package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.js +45 -18
  19. package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.js.map +1 -1
  20. package/node_modules/@xrkseek/exec-fs/dist/index.d.ts +9 -1
  21. package/node_modules/@xrkseek/exec-fs/dist/index.d.ts.map +1 -1
  22. package/node_modules/@xrkseek/exec-fs/dist/index.js +18 -13
  23. package/node_modules/@xrkseek/exec-fs/dist/index.js.map +1 -1
  24. package/node_modules/@xrkseek/exec-fs/dist/paths.d.ts +11 -0
  25. package/node_modules/@xrkseek/exec-fs/dist/paths.d.ts.map +1 -1
  26. package/node_modules/@xrkseek/exec-fs/dist/paths.js +40 -0
  27. package/node_modules/@xrkseek/exec-fs/dist/paths.js.map +1 -1
  28. package/node_modules/@xrkseek/exec-memory/dist/index.d.ts +2 -2
  29. package/node_modules/@xrkseek/exec-memory/dist/index.d.ts.map +1 -1
  30. package/node_modules/@xrkseek/exec-memory/dist/index.js +2 -2
  31. package/node_modules/@xrkseek/exec-memory/dist/index.js.map +1 -1
  32. package/node_modules/@xrkseek/exec-memory/dist/store.d.ts +18 -0
  33. package/node_modules/@xrkseek/exec-memory/dist/store.d.ts.map +1 -1
  34. package/node_modules/@xrkseek/exec-memory/dist/store.js +108 -7
  35. package/node_modules/@xrkseek/exec-memory/dist/store.js.map +1 -1
  36. package/node_modules/@xrkseek/exec-memory/dist/tools.d.ts.map +1 -1
  37. package/node_modules/@xrkseek/exec-memory/dist/tools.js +17 -1
  38. package/node_modules/@xrkseek/exec-memory/dist/tools.js.map +1 -1
  39. package/node_modules/@xrkseek/exec-memory/dist/write-path.d.ts +2 -0
  40. package/node_modules/@xrkseek/exec-memory/dist/write-path.d.ts.map +1 -1
  41. package/node_modules/@xrkseek/exec-memory/dist/write-path.js +28 -3
  42. package/node_modules/@xrkseek/exec-memory/dist/write-path.js.map +1 -1
  43. package/node_modules/@xrkseek/exec-sandbox/dist/resolve.d.ts +7 -4
  44. package/node_modules/@xrkseek/exec-sandbox/dist/resolve.d.ts.map +1 -1
  45. package/node_modules/@xrkseek/exec-sandbox/dist/resolve.js +4 -0
  46. package/node_modules/@xrkseek/exec-sandbox/dist/resolve.js.map +1 -1
  47. package/node_modules/@xrkseek/exec-sandbox/dist/service.d.ts +7 -0
  48. package/node_modules/@xrkseek/exec-sandbox/dist/service.d.ts.map +1 -1
  49. package/node_modules/@xrkseek/exec-sandbox/dist/service.js +18 -8
  50. package/node_modules/@xrkseek/exec-sandbox/dist/service.js.map +1 -1
  51. package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts +16 -0
  52. package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts.map +1 -1
  53. package/node_modules/@xrkseek/preset-harness/dist/preset.js +13 -2
  54. package/node_modules/@xrkseek/preset-harness/dist/preset.js.map +1 -1
  55. package/node_modules/@xrkseek/preset-harness/dist/tsconfig.tsbuildinfo +1 -1
  56. package/node_modules/@xrkseek/preset-minimal/dist/tsconfig.tsbuildinfo +1 -1
  57. package/node_modules/@xrkseek/preset-server/dist/preset.d.ts.map +1 -1
  58. package/node_modules/@xrkseek/preset-server/dist/preset.js +4 -1
  59. package/node_modules/@xrkseek/preset-server/dist/preset.js.map +1 -1
  60. package/node_modules/@xrkseek/preset-server/dist/tsconfig.tsbuildinfo +1 -1
  61. package/node_modules/@xrkseek/server-face/dist/adapt/index.d.ts +1 -1
  62. package/node_modules/@xrkseek/server-face/dist/adapt/index.d.ts.map +1 -1
  63. package/node_modules/@xrkseek/server-face/dist/adapt/index.js +1 -1
  64. package/node_modules/@xrkseek/server-face/dist/adapt/index.js.map +1 -1
  65. package/node_modules/@xrkseek/server-face/dist/adapt/model-route.d.ts +5 -0
  66. package/node_modules/@xrkseek/server-face/dist/adapt/model-route.d.ts.map +1 -1
  67. package/node_modules/@xrkseek/server-face/dist/adapt/model-route.js +16 -0
  68. package/node_modules/@xrkseek/server-face/dist/adapt/model-route.js.map +1 -1
  69. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.d.ts +32 -0
  70. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.d.ts.map +1 -1
  71. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.js +87 -0
  72. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.js.map +1 -1
  73. package/node_modules/@xrkseek/server-face/dist/agent-roster-store.d.ts +102 -0
  74. package/node_modules/@xrkseek/server-face/dist/agent-roster-store.d.ts.map +1 -0
  75. package/node_modules/@xrkseek/server-face/dist/agent-roster-store.js +495 -0
  76. package/node_modules/@xrkseek/server-face/dist/agent-roster-store.js.map +1 -0
  77. package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.d.ts +12 -0
  78. package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.d.ts.map +1 -0
  79. package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.js +141 -0
  80. package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.js.map +1 -0
  81. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.d.ts +6 -0
  82. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.d.ts.map +1 -1
  83. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.js +61 -0
  84. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.js.map +1 -1
  85. package/node_modules/@xrkseek/server-face/dist/capture-member-playbook.d.ts +6 -0
  86. package/node_modules/@xrkseek/server-face/dist/capture-member-playbook.d.ts.map +1 -0
  87. package/node_modules/@xrkseek/server-face/dist/capture-member-playbook.js +43 -0
  88. package/node_modules/@xrkseek/server-face/dist/capture-member-playbook.js.map +1 -0
  89. package/node_modules/@xrkseek/server-face/dist/context.d.ts +4 -0
  90. package/node_modules/@xrkseek/server-face/dist/context.d.ts.map +1 -1
  91. package/node_modules/@xrkseek/server-face/dist/dispatch.d.ts.map +1 -1
  92. package/node_modules/@xrkseek/server-face/dist/dispatch.js +19 -0
  93. package/node_modules/@xrkseek/server-face/dist/dispatch.js.map +1 -1
  94. package/node_modules/@xrkseek/server-face/dist/fork-cut.d.ts +3 -2
  95. package/node_modules/@xrkseek/server-face/dist/fork-cut.d.ts.map +1 -1
  96. package/node_modules/@xrkseek/server-face/dist/fork-cut.js +58 -20
  97. package/node_modules/@xrkseek/server-face/dist/fork-cut.js.map +1 -1
  98. package/node_modules/@xrkseek/server-face/dist/handlers/session.d.ts.map +1 -1
  99. package/node_modules/@xrkseek/server-face/dist/handlers/session.js +60 -20
  100. package/node_modules/@xrkseek/server-face/dist/handlers/session.js.map +1 -1
  101. package/node_modules/@xrkseek/server-face/dist/handlers/subagent.d.ts.map +1 -1
  102. package/node_modules/@xrkseek/server-face/dist/handlers/subagent.js +5 -0
  103. package/node_modules/@xrkseek/server-face/dist/handlers/subagent.js.map +1 -1
  104. package/node_modules/@xrkseek/server-face/dist/handlers/team.d.ts +11 -0
  105. package/node_modules/@xrkseek/server-face/dist/handlers/team.d.ts.map +1 -0
  106. package/node_modules/@xrkseek/server-face/dist/handlers/team.js +268 -0
  107. package/node_modules/@xrkseek/server-face/dist/handlers/team.js.map +1 -0
  108. package/node_modules/@xrkseek/server-face/dist/index.d.ts +4 -0
  109. package/node_modules/@xrkseek/server-face/dist/index.d.ts.map +1 -1
  110. package/node_modules/@xrkseek/server-face/dist/index.js +4 -0
  111. package/node_modules/@xrkseek/server-face/dist/index.js.map +1 -1
  112. package/node_modules/@xrkseek/server-face/dist/model-catalog.d.ts +11 -1
  113. package/node_modules/@xrkseek/server-face/dist/model-catalog.d.ts.map +1 -1
  114. package/node_modules/@xrkseek/server-face/dist/model-catalog.js +27 -1
  115. package/node_modules/@xrkseek/server-face/dist/model-catalog.js.map +1 -1
  116. package/node_modules/@xrkseek/server-face/dist/presence-tools.d.ts.map +1 -1
  117. package/node_modules/@xrkseek/server-face/dist/presence-tools.js +15 -6
  118. package/node_modules/@xrkseek/server-face/dist/presence-tools.js.map +1 -1
  119. package/node_modules/@xrkseek/server-face/dist/presets-catalog.d.ts +16 -0
  120. package/node_modules/@xrkseek/server-face/dist/presets-catalog.d.ts.map +1 -1
  121. package/node_modules/@xrkseek/server-face/dist/presets-catalog.js +5 -0
  122. package/node_modules/@xrkseek/server-face/dist/presets-catalog.js.map +1 -1
  123. package/node_modules/@xrkseek/server-face/dist/projections/units/turn-outline.d.ts +8 -2
  124. package/node_modules/@xrkseek/server-face/dist/projections/units/turn-outline.d.ts.map +1 -1
  125. package/node_modules/@xrkseek/server-face/dist/projections/units/turn-outline.js +14 -12
  126. package/node_modules/@xrkseek/server-face/dist/projections/units/turn-outline.js.map +1 -1
  127. package/node_modules/@xrkseek/server-face/dist/runtime.d.ts.map +1 -1
  128. package/node_modules/@xrkseek/server-face/dist/runtime.js +19 -0
  129. package/node_modules/@xrkseek/server-face/dist/runtime.js.map +1 -1
  130. package/node_modules/@xrkseek/server-face/dist/session-model-store.d.ts +2 -0
  131. package/node_modules/@xrkseek/server-face/dist/session-model-store.d.ts.map +1 -1
  132. package/node_modules/@xrkseek/server-face/dist/session-model-store.js +14 -0
  133. package/node_modules/@xrkseek/server-face/dist/session-model-store.js.map +1 -1
  134. package/node_modules/@xrkseek/server-face/dist/session-status.d.ts +13 -0
  135. package/node_modules/@xrkseek/server-face/dist/session-status.d.ts.map +1 -1
  136. package/node_modules/@xrkseek/server-face/dist/session-status.js +19 -2
  137. package/node_modules/@xrkseek/server-face/dist/session-status.js.map +1 -1
  138. package/node_modules/@xrkseek/server-face/dist/session-thread-publish.d.ts +17 -0
  139. package/node_modules/@xrkseek/server-face/dist/session-thread-publish.d.ts.map +1 -0
  140. package/node_modules/@xrkseek/server-face/dist/session-thread-publish.js +34 -0
  141. package/node_modules/@xrkseek/server-face/dist/session-thread-publish.js.map +1 -0
  142. package/node_modules/@xrkseek/server-face/dist/session-thread-store.d.ts +38 -0
  143. package/node_modules/@xrkseek/server-face/dist/session-thread-store.d.ts.map +1 -0
  144. package/node_modules/@xrkseek/server-face/dist/session-thread-store.js +207 -0
  145. package/node_modules/@xrkseek/server-face/dist/session-thread-store.js.map +1 -0
  146. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.d.ts +12 -0
  147. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.d.ts.map +1 -0
  148. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.js +223 -0
  149. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.js.map +1 -0
  150. package/node_modules/@xrkseek/server-face/dist/settings-document.d.ts.map +1 -1
  151. package/node_modules/@xrkseek/server-face/dist/settings-document.js +10 -11
  152. package/node_modules/@xrkseek/server-face/dist/settings-document.js.map +1 -1
  153. package/node_modules/@xrkseek/server-face/dist/settings-schemas.d.ts.map +1 -1
  154. package/node_modules/@xrkseek/server-face/dist/settings-schemas.js +5 -10
  155. package/node_modules/@xrkseek/server-face/dist/settings-schemas.js.map +1 -1
  156. package/node_modules/@xrkseek/server-face/dist/subagent-registry.d.ts +19 -0
  157. package/node_modules/@xrkseek/server-face/dist/subagent-registry.d.ts.map +1 -1
  158. package/node_modules/@xrkseek/server-face/dist/subagent-registry.js +47 -13
  159. package/node_modules/@xrkseek/server-face/dist/subagent-registry.js.map +1 -1
  160. package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts +21 -0
  161. package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts.map +1 -1
  162. package/node_modules/@xrkseek/server-face/dist/subagent-tools.js +148 -37
  163. package/node_modules/@xrkseek/server-face/dist/subagent-tools.js.map +1 -1
  164. package/node_modules/@xrkseek/server-face/dist/types.d.ts +9 -0
  165. package/node_modules/@xrkseek/server-face/dist/types.d.ts.map +1 -1
  166. package/node_modules/@xrkseek/server-face/dist/wire/paths.d.ts.map +1 -1
  167. package/node_modules/@xrkseek/server-face/dist/wire/paths.js +2 -0
  168. package/node_modules/@xrkseek/server-face/dist/wire/paths.js.map +1 -1
  169. package/node_modules/@xrkseek/server-face/dist/workspace-face.d.ts.map +1 -1
  170. package/node_modules/@xrkseek/server-face/dist/workspace-face.js +7 -0
  171. package/node_modules/@xrkseek/server-face/dist/workspace-face.js.map +1 -1
  172. package/node_modules/@xrkseek/server-host/dist/agent-cache.d.ts +5 -1
  173. package/node_modules/@xrkseek/server-host/dist/agent-cache.d.ts.map +1 -1
  174. package/node_modules/@xrkseek/server-host/dist/agent-cache.js +29 -3
  175. package/node_modules/@xrkseek/server-host/dist/agent-cache.js.map +1 -1
  176. package/node_modules/@xrkseek/server-host/dist/index.d.ts +21 -0
  177. package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
  178. package/node_modules/@xrkseek/server-host/dist/index.js +105 -8
  179. package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
  180. package/node_modules/@xrkseek/server-http/dist/static.d.ts.map +1 -1
  181. package/node_modules/@xrkseek/server-http/dist/static.js +45 -5
  182. package/node_modules/@xrkseek/server-http/dist/static.js.map +1 -1
  183. package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.d.ts +8 -0
  184. package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.d.ts.map +1 -1
  185. package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.js +6 -2
  186. package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.js.map +1 -1
  187. package/node_modules/@xrkseek/workspace/dist/index.d.ts +16 -0
  188. package/node_modules/@xrkseek/workspace/dist/index.d.ts.map +1 -1
  189. package/node_modules/@xrkseek/workspace/dist/index.js +17 -8
  190. package/node_modules/@xrkseek/workspace/dist/index.js.map +1 -1
  191. package/package.json +1 -1
@@ -0,0 +1,495 @@
1
+ /**
2
+ * Agent Team roster: the child's tools, inject, and playbook as named profiles.
3
+ * Parent sessions already edit those surfaces via preset / `.xrk` / the user
4
+ * message; a 干员 is the same three surfaces for `subagent`.
5
+ * Global members live in `global.json`; workspace members overlay per canvas.
6
+ */
7
+ import { existsSync, mkdirSync, readFileSync } from "node:fs";
8
+ import { randomUUID } from "node:crypto";
9
+ import path from "node:path";
10
+ import { resolveXrkHome } from "@xrkseek/server-config";
11
+ import { isAgentTeamSpawnRole, roleDeniedTools, } from "./agent-team-roles.js";
12
+ import { tryWriteJsonSidecar } from "./json-sidecar.js";
13
+ export const MEMBER_NAME_MAX = 40;
14
+ export const MEMBER_PLAYBOOK_MAX = 8_000;
15
+ export const MEMBER_FACE_MAX = 80_000;
16
+ export const MEMBER_BRIEF_MAX = 160;
17
+ export const GLOBAL_ROSTER_ID = "global";
18
+ export const MEMBER_SHAPES = [
19
+ "blob",
20
+ "wedge",
21
+ "gem",
22
+ "squircle",
23
+ "drop",
24
+ "pill",
25
+ "petal",
26
+ "loaf",
27
+ "heart",
28
+ "star",
29
+ "hex",
30
+ "egg",
31
+ "cloud",
32
+ "shield",
33
+ ];
34
+ export const MEMBER_COLORS = [
35
+ "cream",
36
+ "mist",
37
+ "peach",
38
+ "sage",
39
+ "lilac",
40
+ "slate",
41
+ "coral",
42
+ "butter",
43
+ "mint",
44
+ "sky",
45
+ "rose",
46
+ "cocoa",
47
+ "honey",
48
+ "ocean",
49
+ "grape",
50
+ "blush",
51
+ "sand",
52
+ "ink",
53
+ "ice",
54
+ "matcha",
55
+ ];
56
+ export const MEMBER_KITS = [
57
+ "none",
58
+ "bow",
59
+ "cap",
60
+ "beanie",
61
+ "visor",
62
+ "specs",
63
+ "specs-rect",
64
+ "specs-cat",
65
+ "specs-sun",
66
+ "halo",
67
+ ];
68
+ const ID_RE = /^mem_[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}$/;
69
+ const TOOL_NAME_RE = /^[a-zA-Z][a-zA-Z0-9._-]{0,63}$/;
70
+ /** Default allow-list for a file-only 干员 (release / inspect). */
71
+ export const MEMBER_FILE_TOOLS = ["bash", "read", "grep", "glob"];
72
+ export function parseRosterScope(raw) {
73
+ return raw === "global" ? "global" : "workspace";
74
+ }
75
+ export function rosterRoot(productHome) {
76
+ return path.join(path.resolve(productHome ?? resolveXrkHome()), "agent-rosters");
77
+ }
78
+ function sanitizeWorkspaceId(workspaceId) {
79
+ const trimmed = workspaceId.trim();
80
+ if (!trimmed || trimmed.includes("..") || trimmed.includes("/") || trimmed.includes("\\")) {
81
+ throw new Error(`invalid workspaceId: ${workspaceId}`);
82
+ }
83
+ return trimmed;
84
+ }
85
+ function filePath(workspaceId, productHome) {
86
+ return path.join(rosterRoot(productHome), `${sanitizeWorkspaceId(workspaceId)}.json`);
87
+ }
88
+ function mintId() {
89
+ return `mem_${randomUUID().replaceAll("-", "").slice(0, 16)}`;
90
+ }
91
+ function clip(value, max) {
92
+ return value.trim().slice(0, max);
93
+ }
94
+ function isMemberShape(value) {
95
+ return MEMBER_SHAPES.includes(value);
96
+ }
97
+ function isMemberColor(value) {
98
+ return MEMBER_COLORS.includes(value);
99
+ }
100
+ function isMemberKit(value) {
101
+ return MEMBER_KITS.includes(value);
102
+ }
103
+ function parseFace(raw) {
104
+ if (typeof raw !== "string")
105
+ return undefined;
106
+ const face = raw.trim();
107
+ if (!face || face.length > MEMBER_FACE_MAX)
108
+ return undefined;
109
+ if (!/^data:image\/(png|jpe?g|webp|gif);base64,[A-Za-z0-9+/=\s]+$/i.test(face)) {
110
+ return undefined;
111
+ }
112
+ return face.replace(/\s+/g, "");
113
+ }
114
+ export function parseMemberAppearance(raw, fallback) {
115
+ const base = raw && typeof raw === "object" && !Array.isArray(raw)
116
+ ? raw
117
+ : {};
118
+ const shape = isMemberShape(base.shape) ? base.shape : fallback.shape;
119
+ const color = isMemberColor(base.color) ? base.color : fallback.color;
120
+ const kitRaw = Object.prototype.hasOwnProperty.call(base, "kit")
121
+ ? base.kit
122
+ : fallback.kit;
123
+ const kit = isMemberKit(kitRaw) && kitRaw !== "none" ? kitRaw : undefined;
124
+ const face = Object.prototype.hasOwnProperty.call(base, "face")
125
+ ? parseFace(base.face)
126
+ : fallback.face;
127
+ return {
128
+ shape,
129
+ color,
130
+ ...(kit ? { kit } : {}),
131
+ ...(face ? { face } : {}),
132
+ };
133
+ }
134
+ export function parseMemberToolPolicy(raw) {
135
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
136
+ return undefined;
137
+ const o = raw;
138
+ const mode = o.mode === "allow" || o.mode === "deny" ? o.mode : undefined;
139
+ if (!mode)
140
+ return undefined;
141
+ const names = Array.isArray(o.names)
142
+ ? o.names.flatMap((n) => {
143
+ const name = typeof n === "string" ? n.trim().toLowerCase() : "";
144
+ return name && TOOL_NAME_RE.test(name) ? [name] : [];
145
+ }).slice(0, 48)
146
+ : [];
147
+ if (names.length === 0)
148
+ return undefined;
149
+ return { mode, names };
150
+ }
151
+ export function parseMemberInject(raw, fallback) {
152
+ return raw === "subagent" || raw === "minimal" ? raw : fallback;
153
+ }
154
+ function briefOf(name, playbook, explicit) {
155
+ const from = explicit?.trim() || playbook.split(/\n/)[0] || name;
156
+ return clip(from, MEMBER_BRIEF_MAX);
157
+ }
158
+ /** Deny-only: a 干员 may weaken the parent preset, never add tools. */
159
+ export function applyRosterToolPolicy(tools, role, policy) {
160
+ const denied = new Set(roleDeniedTools(role).map((name) => name.toLowerCase()));
161
+ if (policy?.mode === "deny") {
162
+ for (const name of policy.names)
163
+ denied.add(name.toLowerCase());
164
+ }
165
+ if (policy?.mode === "allow") {
166
+ const keep = new Set(policy.names.map((name) => name.toLowerCase()));
167
+ for (const row of tools.list()) {
168
+ const key = row.name.toLowerCase();
169
+ if (!keep.has(key) || denied.has(key)) {
170
+ tools.unregister(row.name);
171
+ }
172
+ }
173
+ return;
174
+ }
175
+ for (const row of tools.list()) {
176
+ if (denied.has(row.name.toLowerCase()))
177
+ tools.unregister(row.name);
178
+ }
179
+ }
180
+ export function rosterPublicFields(row) {
181
+ return {
182
+ id: row.id,
183
+ name: row.name,
184
+ role: row.role,
185
+ scope: row.scope,
186
+ brief: row.brief,
187
+ inject: row.inject,
188
+ seed: row.seed === true,
189
+ appearance: row.appearance,
190
+ ...(row.tools ? { tools: row.tools } : {}),
191
+ };
192
+ }
193
+ export function formatRosterCatalog(members) {
194
+ if (members.length === 0)
195
+ return "(no Agent Team members yet)";
196
+ return members
197
+ .map((row) => {
198
+ const pub = rosterPublicFields(row);
199
+ const tools = pub.tools?.mode === "allow"
200
+ ? ` tools=${pub.tools.names.join(",")}`
201
+ : pub.tools?.mode === "deny"
202
+ ? ` deny=${pub.tools.names.join(",")}`
203
+ : "";
204
+ return `- ${pub.id} [${pub.scope}] ${pub.name} · ${pub.role} · inject=${pub.inject} · ${pub.brief}${tools}`;
205
+ })
206
+ .join("\n")
207
+ .slice(0, 2_400);
208
+ }
209
+ function sameSeedBody(a, b) {
210
+ return (a.name === b.name &&
211
+ a.role === b.role &&
212
+ a.brief === b.brief &&
213
+ a.inject === b.inject &&
214
+ a.playbook === b.playbook &&
215
+ JSON.stringify(a.appearance) === JSON.stringify(b.appearance) &&
216
+ JSON.stringify(a.tools ?? null) === JSON.stringify(b.tools ?? null));
217
+ }
218
+ export function mergeGlobalSeedMembers(existing, now = Date.now()) {
219
+ const catalog = seedGlobalRosterMembers(now);
220
+ const leftover = new Map(existing.map((row) => [row.id, row]));
221
+ const members = [];
222
+ for (const seed of catalog) {
223
+ const prev = leftover.get(seed.id);
224
+ leftover.delete(seed.id);
225
+ if (!prev) {
226
+ members.push(seed);
227
+ continue;
228
+ }
229
+ if (prev.seed === true) {
230
+ const next = { ...seed, updatedAt: prev.updatedAt };
231
+ members.push(sameSeedBody(prev, next) ? prev : next);
232
+ }
233
+ else {
234
+ members.push(prev);
235
+ }
236
+ }
237
+ for (const rest of leftover.values()) {
238
+ if (rest.seed === true)
239
+ continue;
240
+ members.push(rest);
241
+ }
242
+ return {
243
+ members,
244
+ changed: JSON.stringify(members) !== JSON.stringify(existing),
245
+ };
246
+ }
247
+ export function seedGlobalRosterMembers(now = Date.now()) {
248
+ return [
249
+ {
250
+ id: "mem_seed_researcher",
251
+ name: "调研员",
252
+ role: "researcher",
253
+ appearance: { shape: "blob", color: "mist" },
254
+ seed: true,
255
+ updatedAt: now,
256
+ inject: "minimal",
257
+ brief: "只读调研,引用路径与原文。",
258
+ playbook: "You are the workspace researcher. Gather facts with read/search tools. " +
259
+ "Cite paths and quotes. Do not make durable edits unless the task explicitly requires them.",
260
+ },
261
+ {
262
+ id: "mem_seed_worker",
263
+ name: "施工员",
264
+ role: "worker",
265
+ appearance: { shape: "wedge", color: "sage" },
266
+ seed: true,
267
+ updatedAt: now,
268
+ inject: "minimal",
269
+ brief: "按任务改代码,不扩范围。",
270
+ playbook: "You are the workspace implementer. Execute the assigned task precisely. " +
271
+ "Prefer concrete edits and evidence. Stay inside the given scope.",
272
+ },
273
+ {
274
+ id: "mem_seed_reviewer",
275
+ name: "审稿员",
276
+ role: "reviewer",
277
+ appearance: { shape: "gem", color: "lilac" },
278
+ seed: true,
279
+ updatedAt: now,
280
+ inject: "minimal",
281
+ brief: "只读审稿,先报缺陷。",
282
+ playbook: "You are the workspace reviewer. Read-only review unless asked to patch. " +
283
+ "Report defects first. Do not expand scope.",
284
+ },
285
+ {
286
+ id: "mem_seed_lead",
287
+ name: "调度员",
288
+ role: "lead",
289
+ appearance: { shape: "blob", color: "slate" },
290
+ seed: true,
291
+ updatedAt: now,
292
+ inject: "minimal",
293
+ brief: "拆任务、协调干员。",
294
+ playbook: "You are the workspace lead. Break work into clear sub-tasks, coordinate teammates, " +
295
+ "and keep a short status of blockers and next steps. " +
296
+ "When a specialist fits, spawn with subagent member_id from team_list rather than restating tools or playbook.",
297
+ },
298
+ ];
299
+ }
300
+ function parseMember(raw) {
301
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
302
+ return undefined;
303
+ const o = raw;
304
+ if (typeof o.id !== "string" || !ID_RE.test(o.id))
305
+ return undefined;
306
+ if (typeof o.name !== "string")
307
+ return undefined;
308
+ const name = clip(o.name, MEMBER_NAME_MAX);
309
+ if (!name)
310
+ return undefined;
311
+ const playbook = typeof o.playbook === "string" ? clip(o.playbook, MEMBER_PLAYBOOK_MAX) : "";
312
+ if (!playbook)
313
+ return undefined;
314
+ const role = isAgentTeamSpawnRole(o.role) ? o.role : "default";
315
+ const updatedAt = typeof o.updatedAt === "number" && Number.isFinite(o.updatedAt)
316
+ ? o.updatedAt
317
+ : 0;
318
+ const appearance = parseMemberAppearance(o.appearance, {
319
+ shape: "blob",
320
+ color: "cream",
321
+ });
322
+ const tools = parseMemberToolPolicy(o.tools);
323
+ const inject = parseMemberInject(o.inject, "minimal");
324
+ const brief = briefOf(name, playbook, typeof o.brief === "string" ? o.brief : undefined);
325
+ return {
326
+ id: o.id,
327
+ name,
328
+ playbook,
329
+ role,
330
+ appearance,
331
+ brief,
332
+ inject,
333
+ updatedAt,
334
+ ...(tools ? { tools } : {}),
335
+ ...(o.seed === true ? { seed: true } : {}),
336
+ };
337
+ }
338
+ export class FaceAgentRosterStore {
339
+ productHome;
340
+ cache = new Map();
341
+ constructor(productHome) {
342
+ this.productHome = productHome;
343
+ }
344
+ emptyOrSeed(workspaceId) {
345
+ if (workspaceId === GLOBAL_ROSTER_ID) {
346
+ return { version: 1, members: [...seedGlobalRosterMembers()] };
347
+ }
348
+ return { version: 1, members: [] };
349
+ }
350
+ load(workspaceId) {
351
+ const cached = this.cache.get(workspaceId);
352
+ if (cached)
353
+ return cached;
354
+ const file = filePath(workspaceId, this.productHome);
355
+ if (!existsSync(file)) {
356
+ const doc = this.emptyOrSeed(workspaceId);
357
+ this.cache.set(workspaceId, doc);
358
+ this.save(workspaceId, doc);
359
+ return doc;
360
+ }
361
+ try {
362
+ const parsed = JSON.parse(readFileSync(file, "utf8"));
363
+ const o = parsed && typeof parsed === "object" ? parsed : undefined;
364
+ const members = Array.isArray(o?.members)
365
+ ? o.members.flatMap((row) => {
366
+ const member = parseMember(row);
367
+ return member ? [member] : [];
368
+ })
369
+ : [];
370
+ if (workspaceId === GLOBAL_ROSTER_ID) {
371
+ const merged = mergeGlobalSeedMembers(members);
372
+ const doc = { version: 1, members: merged.members };
373
+ this.cache.set(workspaceId, doc);
374
+ if (merged.changed)
375
+ this.save(workspaceId, doc);
376
+ return doc;
377
+ }
378
+ const doc = { version: 1, members };
379
+ this.cache.set(workspaceId, doc);
380
+ return doc;
381
+ }
382
+ catch {
383
+ const doc = this.emptyOrSeed(workspaceId);
384
+ this.cache.set(workspaceId, doc);
385
+ return doc;
386
+ }
387
+ }
388
+ save(workspaceId, doc) {
389
+ this.cache.set(workspaceId, doc);
390
+ const dir = rosterRoot(this.productHome);
391
+ mkdirSync(dir, { recursive: true });
392
+ tryWriteJsonSidecar(filePath(workspaceId, this.productHome), doc);
393
+ }
394
+ list(workspaceId) {
395
+ return this.load(workspaceId).members;
396
+ }
397
+ /** Global members first, then workspace; same id → workspace wins. */
398
+ listVisible(workspaceId) {
399
+ const byId = new Map();
400
+ for (const row of this.list(GLOBAL_ROSTER_ID)) {
401
+ byId.set(row.id, { ...row, scope: "global" });
402
+ }
403
+ if (workspaceId !== GLOBAL_ROSTER_ID) {
404
+ for (const row of this.list(workspaceId)) {
405
+ byId.set(row.id, { ...row, scope: "workspace" });
406
+ }
407
+ }
408
+ return [...byId.values()];
409
+ }
410
+ get(workspaceId, memberId) {
411
+ const local = this.list(workspaceId).find((row) => row.id === memberId);
412
+ if (local)
413
+ return { ...local, scope: workspaceId === GLOBAL_ROSTER_ID ? "global" : "workspace" };
414
+ const global = this.list(GLOBAL_ROSTER_ID).find((row) => row.id === memberId);
415
+ return global ? { ...global, scope: "global" } : undefined;
416
+ }
417
+ upsert(workspaceId, input) {
418
+ const name = clip(input.name, MEMBER_NAME_MAX);
419
+ const playbook = clip(input.playbook, MEMBER_PLAYBOOK_MAX);
420
+ if (!name || !playbook)
421
+ return undefined;
422
+ const role = input.role ?? "default";
423
+ const doc = this.load(workspaceId);
424
+ const now = Date.now();
425
+ const id = input.id?.trim();
426
+ const fallback = { shape: "blob", color: "cream" };
427
+ const inject = parseMemberInject(input.inject, "minimal");
428
+ const tools = input.tools === null ? undefined : parseMemberToolPolicy(input.tools);
429
+ if (id) {
430
+ if (!ID_RE.test(id))
431
+ return undefined;
432
+ const index = doc.members.findIndex((row) => row.id === id);
433
+ const prev = index === -1 ? undefined : doc.members[index];
434
+ const appearance = parseMemberAppearance({
435
+ ...(prev?.appearance ?? fallback),
436
+ ...(input.appearance ?? {}),
437
+ }, prev?.appearance ?? fallback);
438
+ const nextTools = input.tools === undefined
439
+ ? prev?.tools
440
+ : tools;
441
+ const next = {
442
+ id,
443
+ name,
444
+ playbook,
445
+ role,
446
+ appearance,
447
+ brief: briefOf(name, playbook, input.brief ?? prev?.brief),
448
+ inject: input.inject !== undefined ? inject : (prev?.inject ?? "minimal"),
449
+ updatedAt: now,
450
+ ...(nextTools ? { tools: nextTools } : {}),
451
+ };
452
+ const members = index === -1
453
+ ? [...doc.members, next]
454
+ : doc.members.map((row, i) => (i === index ? next : row));
455
+ this.save(workspaceId, { version: 1, members });
456
+ return next;
457
+ }
458
+ const minted = {
459
+ id: mintId(),
460
+ name,
461
+ playbook,
462
+ role,
463
+ appearance: parseMemberAppearance(input.appearance ?? fallback, fallback),
464
+ brief: briefOf(name, playbook, input.brief),
465
+ inject,
466
+ updatedAt: now,
467
+ ...(tools ? { tools } : {}),
468
+ };
469
+ this.save(workspaceId, { version: 1, members: [...doc.members, minted] });
470
+ return minted;
471
+ }
472
+ /**
473
+ * Write into global.json or the canvas file. Promoting to global drops a
474
+ * same-id workspace overlay so the global record is visible again.
475
+ */
476
+ upsertAtScope(canvasWorkspaceId, scope, input) {
477
+ const target = scope === "global" ? GLOBAL_ROSTER_ID : canvasWorkspaceId;
478
+ const member = this.upsert(target, input);
479
+ if (member &&
480
+ scope === "global" &&
481
+ canvasWorkspaceId !== GLOBAL_ROSTER_ID) {
482
+ this.remove(canvasWorkspaceId, member.id);
483
+ }
484
+ return member;
485
+ }
486
+ remove(workspaceId, memberId) {
487
+ const doc = this.load(workspaceId);
488
+ const members = doc.members.filter((row) => row.id !== memberId);
489
+ if (members.length === doc.members.length)
490
+ return false;
491
+ this.save(workspaceId, { version: 1, members });
492
+ return true;
493
+ }
494
+ }
495
+ //# sourceMappingURL=agent-roster-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-roster-store.js","sourceRoot":"","sources":["../src/agent-roster-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Model-facing team_list / team_save — child's tools, inject, and playbook.
3
+ */
4
+ import type { ToolRegistry } from "@xrkseek/core-tools";
5
+ import type { FaceRuntime } from "./context.js";
6
+ export interface BindAgentRosterToolsOptions {
7
+ readonly runtime: FaceRuntime;
8
+ readonly sessionId: string;
9
+ }
10
+ /** Register team_list / team_save. Spawn stays `subagent` + member_id. */
11
+ export declare function bindAgentRosterTools(tools: ToolRegistry, options: BindAgentRosterToolsOptions): void;
12
+ //# sourceMappingURL=agent-roster-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-roster-tools.d.ts","sourceRoot":"","sources":["../src/agent-roster-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAYhD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAYD,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,2BAA2B,GACnC,IAAI,CAmIN"}