@fgbg/mdocs 0.8.19 → 0.8.21

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 (97) hide show
  1. package/README.md +7 -1
  2. package/agent-skills/changelog/SKILL.md +13 -1
  3. package/agent-skills/getting-started-installation/SKILL.md +12 -2
  4. package/agent-skills/index.json +1 -1
  5. package/agent-skills/usage-onboarding-ai/SKILL.md +11 -0
  6. package/agent-skills/usage-settings/SKILL.md +15 -1
  7. package/bin/mdocs.js +1 -1
  8. package/dist/server/agent/Agent/choice-pending.js +10 -1
  9. package/dist/server/agent/Agent/choice-pending.js.map +1 -1
  10. package/dist/server/agent/Agent/context-usage.js +6 -5
  11. package/dist/server/agent/Agent/context-usage.js.map +1 -1
  12. package/dist/server/agent/Agent/hydrate-messages.js +137 -0
  13. package/dist/server/agent/Agent/hydrate-messages.js.map +1 -0
  14. package/dist/server/agent/Agent/run-pi-agent.js +115 -0
  15. package/dist/server/agent/Agent/run-pi-agent.js.map +1 -0
  16. package/dist/server/agent/Agent/run.js +49 -323
  17. package/dist/server/agent/Agent/run.js.map +1 -1
  18. package/dist/server/agent/Agent/session-manager.js +38 -3
  19. package/dist/server/agent/Agent/session-manager.js.map +1 -1
  20. package/dist/server/agent/Agent/skill-form-pending.js +77 -0
  21. package/dist/server/agent/Agent/skill-form-pending.js.map +1 -0
  22. package/dist/server/agent/Agent/stream-events.js +2 -0
  23. package/dist/server/agent/Agent/stream-events.js.map +1 -0
  24. package/dist/server/agent/Agent/system-prompt.js +8 -4
  25. package/dist/server/agent/Agent/system-prompt.js.map +1 -1
  26. package/dist/server/agent/Agent/tool-deps.js +7 -0
  27. package/dist/server/agent/Agent/tool-deps.js.map +1 -0
  28. package/dist/server/agent/Agent/tool-ui-effects.js +170 -0
  29. package/dist/server/agent/Agent/tool-ui-effects.js.map +1 -0
  30. package/dist/server/agent/Agent/tools-choice.js +44 -50
  31. package/dist/server/agent/Agent/tools-choice.js.map +1 -1
  32. package/dist/server/agent/Agent/tools-coding.get-working.test.js +10 -8
  33. package/dist/server/agent/Agent/tools-coding.get-working.test.js.map +1 -1
  34. package/dist/server/agent/Agent/tools-coding.js +51 -58
  35. package/dist/server/agent/Agent/tools-coding.js.map +1 -1
  36. package/dist/server/agent/Agent/tools-documents.get-document.test.js +2 -4
  37. package/dist/server/agent/Agent/tools-documents.get-document.test.js.map +1 -1
  38. package/dist/server/agent/Agent/tools-documents.js +192 -187
  39. package/dist/server/agent/Agent/tools-documents.js.map +1 -1
  40. package/dist/server/agent/Agent/tools-domains.js +155 -156
  41. package/dist/server/agent/Agent/tools-domains.js.map +1 -1
  42. package/dist/server/agent/Agent/tools-overwrite.js +93 -101
  43. package/dist/server/agent/Agent/tools-overwrite.js.map +1 -1
  44. package/dist/server/agent/Agent/tools-registry.js +26 -0
  45. package/dist/server/agent/Agent/tools-registry.js.map +1 -0
  46. package/dist/server/agent/Agent/tools-registry.test.js +67 -0
  47. package/dist/server/agent/Agent/tools-registry.test.js.map +1 -0
  48. package/dist/server/agent/Agent/tools-template.js +45 -0
  49. package/dist/server/agent/Agent/tools-template.js.map +1 -0
  50. package/dist/server/agent/Agent/tools-user-skills.js +176 -0
  51. package/dist/server/agent/Agent/tools-user-skills.js.map +1 -0
  52. package/dist/server/agent/Agent/tools-visitors.js +15 -22
  53. package/dist/server/agent/Agent/tools-visitors.js.map +1 -1
  54. package/dist/server/agent/Agent/tools.js +40 -33
  55. package/dist/server/agent/Agent/tools.js.map +1 -1
  56. package/dist/server/agent/Agent/user-skills.js +214 -0
  57. package/dist/server/agent/Agent/user-skills.js.map +1 -0
  58. package/dist/server/agent/Agent/user-skills.test.js +53 -0
  59. package/dist/server/agent/Agent/user-skills.test.js.map +1 -0
  60. package/dist/server/cli/main.js +10 -0
  61. package/dist/server/cli/main.js.map +1 -1
  62. package/dist/server/cli/self-update.js +158 -0
  63. package/dist/server/cli/self-update.js.map +1 -0
  64. package/dist/server/cli/self-update.test.js +17 -0
  65. package/dist/server/cli/self-update.test.js.map +1 -0
  66. package/dist/server/db/repositories/agent-user-skill.repo.js +78 -0
  67. package/dist/server/db/repositories/agent-user-skill.repo.js.map +1 -0
  68. package/dist/server/db/schema.js +11 -0
  69. package/dist/server/db/schema.js.map +1 -1
  70. package/dist/server/routes/agent.routes.js +198 -5
  71. package/dist/server/routes/agent.routes.js.map +1 -1
  72. package/dist/web/assets/AgentChatPanel-D95hI02c.js +1 -0
  73. package/dist/web/assets/AgentSkillFormCard-BtJ0QjLG.js +6 -0
  74. package/dist/web/assets/AiWriteWorkbench-Qam8cfY6.js +6 -0
  75. package/dist/web/assets/{DiagramEditor-BTRe45TX-DzJEhM4C.js → DiagramEditor-BTRe45TX-Did98cnP.js} +1 -1
  76. package/dist/web/assets/{DocumentEditor-NPbbAape.js → DocumentEditor-DtSzkl6A.js} +1 -1
  77. package/dist/web/assets/{MergeView-BnWbq08U.js → MergeView-DgFQHD5_.js} +1 -1
  78. package/dist/web/assets/{PlaygroundPage-BSGipUkC.js → PlaygroundPage-Dg57Xxpl.js} +1 -1
  79. package/dist/web/assets/SettingsPage-CkYpe5v7.js +1 -0
  80. package/dist/web/assets/{Toolbar-DjPuWk5G.js → Toolbar-0Y2wmGwe.js} +1 -1
  81. package/dist/web/assets/{VisitorPickerModal-BUS-cOq0.js → VisitorPickerModal-COxtOvc4.js} +1 -1
  82. package/dist/web/assets/{copy-hWOco_4c.js → copy-nOl0d3Th.js} +1 -1
  83. package/dist/web/assets/{diagram-gfUK8OHx.js → diagram-BJFhx-27.js} +332 -332
  84. package/dist/web/assets/{index-C46BU1-j.js → index-B-XJ-ScV.js} +22 -22
  85. package/dist/web/assets/index-CGvsjO9f.css +1 -0
  86. package/dist/web/assets/{meta2dEngine-BD2XbzaV-D7hJ1H1g.js → meta2dEngine-BD2XbzaV-e28q005B.js} +1 -1
  87. package/dist/web/assets/{motion-C4pN8CfU.js → motion-D-I76zAi.js} +1 -1
  88. package/dist/web/assets/{plus-CnKbiP8x.js → plus-DvBbg6jL.js} +1 -1
  89. package/dist/web/assets/{react-B7vrA7AR.js → react-BsVOIHR8.js} +3 -3
  90. package/dist/web/assets/{ui-DxdLi_28.js → ui-C3xtW1w8.js} +3 -3
  91. package/dist/web/index.html +4 -4
  92. package/package.json +1 -1
  93. package/dist/web/assets/AgentChatPanel-CLKeiDeR.js +0 -1
  94. package/dist/web/assets/AiWriteWorkbench-Ecp214S5.js +0 -6
  95. package/dist/web/assets/SettingsPage-OklrFCx7.js +0 -1
  96. package/dist/web/assets/history-AMIEbyMc.js +0 -6
  97. package/dist/web/assets/index-BksNm27A.css +0 -1
@@ -5,12 +5,7 @@ import { getDb } from "../../db/connection.js";
5
5
  import { addDomainMember, findDomainById, insertDomain, listDomainMemberIds, listDomains, } from "../../db/repositories/domain.repo.js";
6
6
  import { countDocumentsByDomain, listDomainIdsWithDocumentInviteForVisitor, } from "../../db/repositories/document.repo.js";
7
7
  import { findVisitorById } from "../../db/repositories/visitor.repo.js";
8
- function asToolResult(payload) {
9
- return {
10
- content: [{ type: "text", text: JSON.stringify(payload, null, 2) }],
11
- details: payload,
12
- };
13
- }
8
+ import { asToolResult } from "./tool-deps.js";
14
9
  /** 校验:域存在、restricted、且当前访客是创建者 */
15
10
  function requireRestrictedDomainAsCreator(domainId, actorVisitorId) {
16
11
  const db = getDb();
@@ -25,162 +20,166 @@ function requireRestrictedDomainAsCreator(domainId, actorVisitorId) {
25
20
  }
26
21
  return { db, domain };
27
22
  }
28
- export function createDomainTools(visitorId) {
29
- return [
30
- {
31
- name: "list_domains",
32
- label: "列出可见域",
33
- description: "列出当前访客可见域(domainId/domainName/permission/docCount)",
34
- parameters: Type.Object({}),
35
- execute: async () => {
36
- const db = getDb();
37
- const rows = listDomains(db);
38
- const invitedDomainIds = new Set(listDomainIdsWithDocumentInviteForVisitor(db, visitorId));
39
- const domains = rows
40
- .filter((r) => resolveDomainAccess(db, r, r.domain_id, visitorId, {
41
- documentInviteDomainIds: invitedDomainIds,
42
- }).kind !== "none")
43
- .map((r) => ({
44
- domainId: r.domain_id,
45
- domainName: r.domain_name,
46
- permission: r.permission,
47
- creatorVisitorId: r.creator_visitor_id,
48
- docCount: countDocumentsByDomain(db, r.domain_id),
49
- }));
50
- return asToolResult({ domains });
51
- },
23
+ export function listDomainsTool({ visitorId }) {
24
+ return {
25
+ name: "list_domains",
26
+ label: "列出可见域",
27
+ description: "列出当前访客可见域(domainId/domainName/permission/docCount)",
28
+ parameters: Type.Object({}),
29
+ execute: async () => {
30
+ const db = getDb();
31
+ const rows = listDomains(db);
32
+ const invitedDomainIds = new Set(listDomainIdsWithDocumentInviteForVisitor(db, visitorId));
33
+ const domains = rows
34
+ .filter((r) => resolveDomainAccess(db, r, r.domain_id, visitorId, {
35
+ documentInviteDomainIds: invitedDomainIds,
36
+ }).kind !== "none")
37
+ .map((r) => ({
38
+ domainId: r.domain_id,
39
+ domainName: r.domain_name,
40
+ permission: r.permission,
41
+ creatorVisitorId: r.creator_visitor_id,
42
+ docCount: countDocumentsByDomain(db, r.domain_id),
43
+ }));
44
+ return asToolResult({ domains });
52
45
  },
53
- {
54
- name: "create_domain",
55
- label: "创建域",
56
- description: "创建域(permission: public/restricted/private,默认 restricted)",
57
- parameters: Type.Object({
58
- domainName: Type.String({ description: "域名" }),
59
- permission: Type.Optional(Type.String({ description: "public | restricted | private" })),
60
- }),
61
- execute: async (_id, params) => {
62
- const { domainName, permission: rawPermission } = params;
63
- const name = domainName?.trim();
64
- if (!name)
65
- throw new Error("domainName is required");
66
- const permission = rawPermission?.trim() || "restricted";
67
- if (!["public", "restricted", "private"].includes(permission)) {
68
- throw new Error("invalid permission");
69
- }
70
- const db = getDb();
71
- const existing = db
72
- .prepare(`SELECT domain_id FROM domains WHERE domain_name = ?`)
73
- .get(name);
74
- if (existing)
75
- throw new Error("domain name already exists");
76
- const now = new Date().toISOString();
77
- const domainId = randomUUID();
78
- insertDomain(db, {
79
- domainId,
80
- domainName: name,
81
- creatorVisitorId: visitorId,
82
- createdAt: now,
83
- updatedAt: now,
84
- permission,
85
- });
86
- if (permission === "restricted") {
87
- addDomainMember(db, domainId, visitorId);
88
- }
89
- return asToolResult({
90
- domainId,
91
- domainName: name,
92
- permission,
93
- creatorVisitorId: visitorId,
94
- docCount: 0,
95
- });
96
- },
46
+ };
47
+ }
48
+ export function createDomainTool({ visitorId }) {
49
+ return {
50
+ name: "create_domain",
51
+ label: "创建域",
52
+ description: "创建域(permission: public/restricted/private,默认 restricted",
53
+ parameters: Type.Object({
54
+ domainName: Type.String({ description: "域名" }),
55
+ permission: Type.Optional(Type.String({ description: "public | restricted | private" })),
56
+ }),
57
+ execute: async (_id, params) => {
58
+ const { domainName, permission: rawPermission } = params;
59
+ const name = domainName?.trim();
60
+ if (!name)
61
+ throw new Error("domainName is required");
62
+ const permission = rawPermission?.trim() || "restricted";
63
+ if (!["public", "restricted", "private"].includes(permission)) {
64
+ throw new Error("invalid permission");
65
+ }
66
+ const db = getDb();
67
+ const existing = db
68
+ .prepare(`SELECT domain_id FROM domains WHERE domain_name = ?`)
69
+ .get(name);
70
+ if (existing)
71
+ throw new Error("domain name already exists");
72
+ const now = new Date().toISOString();
73
+ const domainId = randomUUID();
74
+ insertDomain(db, {
75
+ domainId,
76
+ domainName: name,
77
+ creatorVisitorId: visitorId,
78
+ createdAt: now,
79
+ updatedAt: now,
80
+ permission,
81
+ });
82
+ if (permission === "restricted") {
83
+ addDomainMember(db, domainId, visitorId);
84
+ }
85
+ return asToolResult({
86
+ domainId,
87
+ domainName: name,
88
+ permission,
89
+ creatorVisitorId: visitorId,
90
+ docCount: 0,
91
+ });
97
92
  },
98
- {
99
- name: "list_domain_members",
100
- label: "列出域成员",
101
- description: "列出 restricted 域的成员(仅域创建者可用)。返回 visitorId / visitorName / missing / disabled。",
102
- parameters: Type.Object({
103
- domainId: Type.String({ description: "域 ID" }),
104
- }),
105
- execute: async (_id, params) => {
106
- const domainId = params.domainId?.trim();
107
- if (!domainId)
108
- throw new Error("domainId is required");
109
- const { db, domain } = requireRestrictedDomainAsCreator(domainId, visitorId);
110
- const ids = listDomainMemberIds(db, domainId);
111
- const members = ids.map((id) => {
112
- const v = findVisitorById(db, id);
113
- if (!v) {
114
- return { visitorId: id, visitorName: "", missing: true, disabled: false };
115
- }
116
- return {
117
- visitorId: id,
118
- visitorName: v.visitor_name,
119
- missing: false,
120
- disabled: v.disabled_at != null,
121
- };
122
- });
123
- return asToolResult({
124
- domainId,
125
- domainName: domain.domain_name,
126
- memberCount: members.length,
127
- members,
128
- });
129
- },
93
+ };
94
+ }
95
+ export function listDomainMembersTool({ visitorId }) {
96
+ return {
97
+ name: "list_domain_members",
98
+ label: "列出域成员",
99
+ description: "列出 restricted 域的成员(仅域创建者可用)。返回 visitorId / visitorName / missing / disabled。",
100
+ parameters: Type.Object({
101
+ domainId: Type.String({ description: "域 ID" }),
102
+ }),
103
+ execute: async (_id, params) => {
104
+ const domainId = params.domainId?.trim();
105
+ if (!domainId)
106
+ throw new Error("domainId is required");
107
+ const { db, domain } = requireRestrictedDomainAsCreator(domainId, visitorId);
108
+ const ids = listDomainMemberIds(db, domainId);
109
+ const members = ids.map((id) => {
110
+ const v = findVisitorById(db, id);
111
+ if (!v) {
112
+ return { visitorId: id, visitorName: "", missing: true, disabled: false };
113
+ }
114
+ return {
115
+ visitorId: id,
116
+ visitorName: v.visitor_name,
117
+ missing: false,
118
+ disabled: v.disabled_at != null,
119
+ };
120
+ });
121
+ return asToolResult({
122
+ domainId,
123
+ domainName: domain.domain_name,
124
+ memberCount: members.length,
125
+ members,
126
+ });
130
127
  },
131
- {
132
- name: "add_domain_members",
133
- label: "添加域成员",
134
- description: "向 restricted 域追加成员(仅域创建者可用;不会清空现有成员)。visitorIds 来自「列出活跃访客」。创建者始终保留。",
135
- parameters: Type.Object({
136
- domainId: Type.String({ description: "域 ID" }),
137
- visitorIds: Type.Array(Type.String({ description: "要添加的访客 ID" }), {
138
- description: "访客 ID 数组",
139
- }),
128
+ };
129
+ }
130
+ export function addDomainMembersTool({ visitorId }) {
131
+ return {
132
+ name: "add_domain_members",
133
+ label: "添加域成员",
134
+ description: " restricted 域追加成员(仅域创建者可用;不会清空现有成员)。visitorIds 来自「列出活跃访客」。创建者始终保留。",
135
+ parameters: Type.Object({
136
+ domainId: Type.String({ description: "域 ID" }),
137
+ visitorIds: Type.Array(Type.String({ description: "要添加的访客 ID" }), {
138
+ description: "访客 ID 数组",
140
139
  }),
141
- execute: async (_id, params) => {
142
- const { domainId: rawDomainId, visitorIds } = params;
143
- const domainId = rawDomainId?.trim();
144
- if (!domainId)
145
- throw new Error("domainId is required");
146
- if (!Array.isArray(visitorIds) || visitorIds.length === 0) {
147
- throw new Error("visitorIds must be a non-empty array");
140
+ }),
141
+ execute: async (_id, params) => {
142
+ const { domainId: rawDomainId, visitorIds } = params;
143
+ const domainId = rawDomainId?.trim();
144
+ if (!domainId)
145
+ throw new Error("domainId is required");
146
+ if (!Array.isArray(visitorIds) || visitorIds.length === 0) {
147
+ throw new Error("visitorIds must be a non-empty array");
148
+ }
149
+ const { db, domain } = requireRestrictedDomainAsCreator(domainId, visitorId);
150
+ const uniqueIds = [...new Set(visitorIds.map((id) => id.trim()).filter(Boolean))];
151
+ if (uniqueIds.length === 0)
152
+ throw new Error("visitorIds must be a non-empty array");
153
+ const invalid = [];
154
+ const added = [];
155
+ const alreadyMember = [];
156
+ const before = new Set(listDomainMemberIds(db, domainId));
157
+ for (const vid of uniqueIds) {
158
+ const v = findVisitorById(db, vid);
159
+ if (!v) {
160
+ invalid.push(vid);
161
+ continue;
148
162
  }
149
- const { db, domain } = requireRestrictedDomainAsCreator(domainId, visitorId);
150
- const uniqueIds = [...new Set(visitorIds.map((id) => id.trim()).filter(Boolean))];
151
- if (uniqueIds.length === 0)
152
- throw new Error("visitorIds must be a non-empty array");
153
- const invalid = [];
154
- const added = [];
155
- const alreadyMember = [];
156
- const before = new Set(listDomainMemberIds(db, domainId));
157
- for (const vid of uniqueIds) {
158
- const v = findVisitorById(db, vid);
159
- if (!v) {
160
- invalid.push(vid);
161
- continue;
162
- }
163
- if (before.has(vid)) {
164
- alreadyMember.push(vid);
165
- continue;
166
- }
167
- addDomainMember(db, domainId, vid);
168
- added.push({ visitorId: vid, visitorName: v.visitor_name });
163
+ if (before.has(vid)) {
164
+ alreadyMember.push(vid);
165
+ continue;
169
166
  }
170
- if (invalid.length > 0 && added.length === 0) {
171
- throw new Error(`unknown visitor ids: ${invalid.join(", ")}`);
172
- }
173
- addDomainMember(db, domainId, domain.creator_visitor_id);
174
- return asToolResult({
175
- domainId,
176
- domainName: domain.domain_name,
177
- added,
178
- alreadyMember,
179
- invalidVisitorIds: invalid,
180
- memberCount: listDomainMemberIds(db, domainId).length,
181
- });
182
- },
167
+ addDomainMember(db, domainId, vid);
168
+ added.push({ visitorId: vid, visitorName: v.visitor_name });
169
+ }
170
+ if (invalid.length > 0 && added.length === 0) {
171
+ throw new Error(`unknown visitor ids: ${invalid.join(", ")}`);
172
+ }
173
+ addDomainMember(db, domainId, domain.creator_visitor_id);
174
+ return asToolResult({
175
+ domainId,
176
+ domainName: domain.domain_name,
177
+ added,
178
+ alreadyMember,
179
+ invalidVisitorIds: invalid,
180
+ memberCount: listDomainMemberIds(db, domainId).length,
181
+ });
183
182
  },
184
- ];
183
+ };
185
184
  }
186
185
  //# sourceMappingURL=tools-domains.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools-domains.js","sourceRoot":"","sources":["../../../../src/server/agent/Agent/tools-domains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EACL,eAAe,EACf,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,sBAAsB,EACtB,yCAAyC,GAC1C,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,SAAS,YAAY,CAAC,OAAgB;IACpC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QAC5E,OAAO,EAAE,OAAO;KACjB,CAAC;AACJ,CAAC;AAED,kCAAkC;AAClC,SAAS,gCAAgC,CAAC,QAAgB,EAAE,cAAsB;IAChF,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,kBAAkB,KAAK,cAAc,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,KAAK,YAAY,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,OAAO;QACL;YACE,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,OAAO;YACd,WAAW,EAAE,oDAAoD;YACjE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;gBACnB,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC7B,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,yCAAyC,CAAC,EAAE,EAAE,SAAS,CAAC,CACzD,CAAC;gBACF,MAAM,OAAO,GAAG,IAAI;qBACjB,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,mBAAmB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE;oBACjD,uBAAuB,EAAE,gBAAgB;iBAC1C,CAAC,CAAC,IAAI,KAAK,MAAM,CACrB;qBACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACX,QAAQ,EAAE,CAAC,CAAC,SAAS;oBACrB,UAAU,EAAE,CAAC,CAAC,WAAW;oBACzB,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,gBAAgB,EAAE,CAAC,CAAC,kBAAkB;oBACtC,QAAQ,EAAE,sBAAsB,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC;iBAClD,CAAC,CAAC,CAAC;gBACN,OAAO,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YACnC,CAAC;SACF;QACD;YACE,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,0DAA0D;YACvE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;gBACtB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;gBAC9C,UAAU,EAAE,IAAI,CAAC,QAAQ,CACvB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC,CAC9D;aACF,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;gBAC7B,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,MAGjD,CAAC;gBACF,MAAM,IAAI,GAAG,UAAU,EAAE,IAAI,EAAE,CAAC;gBAChC,IAAI,CAAC,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBACrD,MAAM,UAAU,GAAG,aAAa,EAAE,IAAI,EAAE,IAAI,YAAY,CAAC;gBACzD,IAAI,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC9D,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBACxC,CAAC;gBAED,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;gBACnB,MAAM,QAAQ,GAAG,EAAE;qBAChB,OAAO,CAAC,qDAAqD,CAAC;qBAC9D,GAAG,CAAC,IAAI,CAAC,CAAC;gBACb,IAAI,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBAE5D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBACrC,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;gBAC9B,YAAY,CAAC,EAAE,EAAE;oBACf,QAAQ;oBACR,UAAU,EAAE,IAAI;oBAChB,gBAAgB,EAAE,SAAS;oBAC3B,SAAS,EAAE,GAAG;oBACd,SAAS,EAAE,GAAG;oBACd,UAAU;iBACX,CAAC,CAAC;gBACH,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;oBAChC,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAC3C,CAAC;gBACD,OAAO,YAAY,CAAC;oBAClB,QAAQ;oBACR,UAAU,EAAE,IAAI;oBAChB,UAAU;oBACV,gBAAgB,EAAE,SAAS;oBAC3B,QAAQ,EAAE,CAAC;iBACZ,CAAC,CAAC;YACL,CAAC;SACF;QACD;YACE,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,OAAO;YACd,WAAW,EACT,8EAA8E;YAChF,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;gBACtB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;aAC/C,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;gBAC7B,MAAM,QAAQ,GAAI,MAA+B,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACnE,IAAI,CAAC,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBACvD,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,gCAAgC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAC7E,MAAM,GAAG,GAAG,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;gBAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;oBAC7B,MAAM,CAAC,GAAG,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBAClC,IAAI,CAAC,CAAC,EAAE,CAAC;wBACP,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;oBAC5E,CAAC;oBACD,OAAO;wBACL,SAAS,EAAE,EAAE;wBACb,WAAW,EAAE,CAAC,CAAC,YAAY;wBAC3B,OAAO,EAAE,KAAK;wBACd,QAAQ,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;qBAChC,CAAC;gBACJ,CAAC,CAAC,CAAC;gBACH,OAAO,YAAY,CAAC;oBAClB,QAAQ;oBACR,UAAU,EAAE,MAAM,CAAC,WAAW;oBAC9B,WAAW,EAAE,OAAO,CAAC,MAAM;oBAC3B,OAAO;iBACR,CAAC,CAAC;YACL,CAAC;SACF;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,OAAO;YACd,WAAW,EACT,qEAAqE;YACvE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;gBACtB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;gBAC9C,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,EAAE;oBAChE,WAAW,EAAE,UAAU;iBACxB,CAAC;aACH,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;gBAC7B,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAG7C,CAAC;gBACF,MAAM,QAAQ,GAAG,WAAW,EAAE,IAAI,EAAE,CAAC;gBACrC,IAAI,CAAC,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBACvD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1D,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBAC1D,CAAC;gBAED,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,gCAAgC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAC7E,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAClF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBAEpF,MAAM,OAAO,GAAa,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAiD,EAAE,CAAC;gBAC/D,MAAM,aAAa,GAAa,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAE1D,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;oBAC5B,MAAM,CAAC,GAAG,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;oBACnC,IAAI,CAAC,CAAC,EAAE,CAAC;wBACP,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAClB,SAAS;oBACX,CAAC;oBACD,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;wBACpB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACxB,SAAS;oBACX,CAAC;oBACD,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;oBACnC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;gBAC9D,CAAC;gBAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC7C,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChE,CAAC;gBAED,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBAEzD,OAAO,YAAY,CAAC;oBAClB,QAAQ;oBACR,UAAU,EAAE,MAAM,CAAC,WAAW;oBAC9B,KAAK;oBACL,aAAa;oBACb,iBAAiB,EAAE,OAAO;oBAC1B,WAAW,EAAE,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,MAAM;iBACtD,CAAC,CAAC;YACL,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tools-domains.js","sourceRoot":"","sources":["../../../../src/server/agent/Agent/tools-domains.ts"],"names":[],"mappings":"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"}
@@ -3,15 +3,10 @@ import { assertDocumentAccess, DocumentError } from "../../access/access-control
3
3
  import { getDocument, updateDocument } from "../../documents/document.service.js";
4
4
  import { isAlmostEmptyDocumentText } from "./almost-empty.js";
5
5
  import { DEFAULT_CHOICE_TIMEOUT_MS, waitForUserChoice, } from "./choice-pending.js";
6
+ import { asToolResult } from "./tool-deps.js";
6
7
  const OVERWRITE_OPTION = "直接覆写";
7
8
  const OPEN_CODING_OPTION = "打开帮写审阅";
8
9
  const CANCEL_OPTION = "取消";
9
- function asToolResult(payload) {
10
- return {
11
- content: [{ type: "text", text: JSON.stringify(payload, null, 2) }],
12
- details: payload,
13
- };
14
- }
15
10
  function classifyChoice(choice) {
16
11
  const t = choice.trim();
17
12
  if (t === OVERWRITE_OPTION || t === "覆写" || t.includes("直接覆写")) {
@@ -23,7 +18,6 @@ function classifyChoice(choice) {
23
18
  if (t === CANCEL_OPTION || t.includes("取消")) {
24
19
  return "cancel";
25
20
  }
26
- // 自由输入:含「覆写」优先;否则不当作同意覆写
27
21
  if (t.includes("覆写"))
28
22
  return "overwrite";
29
23
  return "cancel";
@@ -48,111 +42,109 @@ function doOverwrite(params) {
48
42
  /**
49
43
  * Ask 覆写:空文直写;有正文则请用户选「直接覆写 / 打开帮写 / 取消」。
50
44
  */
51
- export function createOverwriteTools(visitorId, hooks) {
52
- return [
53
- {
54
- name: "overwrite_document",
55
- label: "覆写文档正文",
56
- description: "将完整 Markdown 写入指定文档(服务端)。几乎空则直接写入;已有实质正文时本工具会弹出选择卡,选项固定为以下三项(勿另调 ask_user_choice 自拟其它文案):「直接覆写」「打开帮写审阅」「取消」。有正文不是无法覆写,只是要用户点选。必须传入完整 markdown。",
57
- parameters: Type.Object({
58
- documentId: Type.String({ description: "目标文档 documentId" }),
59
- markdown: Type.String({ description: "要写入的完整 Markdown 正文" }),
60
- }),
61
- execute: async (_id, params) => {
62
- const documentId = String(params.documentId ?? "").trim();
63
- const markdown = String(params.markdown ?? "");
64
- if (!documentId)
65
- throw new Error("documentId is required");
66
- try {
67
- assertDocumentAccess(documentId, visitorId, "edit");
68
- const doc = getDocument(documentId, visitorId, "text");
69
- const plain = doc.content ?? "";
70
- const displayName = String(doc.displayName ?? "").trim() || "未命名文档";
71
- const headCommitId = doc.headCommitId;
72
- if (!headCommitId) {
73
- throw new Error("DOCUMENT_HAS_NO_HEAD: 文档缺少 headCommitId,无法安全覆写");
74
- }
75
- if (isAlmostEmptyDocumentText(plain)) {
76
- return doOverwrite({
77
- visitorId,
78
- documentId,
79
- markdown,
80
- localBaseCommitId: headCommitId,
81
- });
82
- }
83
- const { requestId, promise } = waitForUserChoice({
45
+ export function overwriteDocumentTool({ visitorId, onEvent, signal, }) {
46
+ return {
47
+ name: "overwrite_document",
48
+ label: "覆写文档正文",
49
+ description: "将完整 Markdown 写入指定文档(服务端)。几乎空则直接写入;已有实质正文时本工具会弹出选择卡,选项固定为以下三项(勿另调 ask_user_choice 自拟其它文案):「直接覆写」「打开帮写审阅」「取消」。有正文不是无法覆写,只是要用户点选。必须传入完整 markdown。",
50
+ parameters: Type.Object({
51
+ documentId: Type.String({ description: "目标文档 documentId" }),
52
+ markdown: Type.String({ description: "要写入的完整 Markdown 正文" }),
53
+ }),
54
+ execute: async (_id, params) => {
55
+ const documentId = String(params.documentId ?? "").trim();
56
+ const markdown = String(params.markdown ?? "");
57
+ if (!documentId)
58
+ throw new Error("documentId is required");
59
+ try {
60
+ assertDocumentAccess(documentId, visitorId, "edit");
61
+ const doc = getDocument(documentId, visitorId, "text");
62
+ const plain = doc.content ?? "";
63
+ const displayName = String(doc.displayName ?? "").trim() || "未命名文档";
64
+ const headCommitId = doc.headCommitId;
65
+ if (!headCommitId) {
66
+ throw new Error("DOCUMENT_HAS_NO_HEAD: 文档缺少 headCommitId,无法安全覆写");
67
+ }
68
+ if (isAlmostEmptyDocumentText(plain)) {
69
+ return doOverwrite({
84
70
  visitorId,
85
- timeoutMs: DEFAULT_CHOICE_TIMEOUT_MS,
86
- signal: hooks.signal,
71
+ documentId,
72
+ markdown,
73
+ localBaseCommitId: headCommitId,
87
74
  });
88
- const expiresAt = new Date(Date.now() + DEFAULT_CHOICE_TIMEOUT_MS).toISOString();
89
- hooks.onChoiceCard({
90
- requestId,
91
- title: `「${displayName}」已有正文,请选择`,
92
- options: [OVERWRITE_OPTION, OPEN_CODING_OPTION, CANCEL_OPTION],
93
- expiresAt,
75
+ }
76
+ const { requestId, promise } = waitForUserChoice({
77
+ visitorId,
78
+ timeoutMs: DEFAULT_CHOICE_TIMEOUT_MS,
79
+ signal,
80
+ });
81
+ const expiresAt = new Date(Date.now() + DEFAULT_CHOICE_TIMEOUT_MS).toISOString();
82
+ onEvent({
83
+ type: "choice_card",
84
+ requestId,
85
+ title: `「${displayName}」已有正文,请选择`,
86
+ options: [OVERWRITE_OPTION, OPEN_CODING_OPTION, CANCEL_OPTION],
87
+ expiresAt,
88
+ });
89
+ const choiceResult = await promise;
90
+ if (choiceResult.status === "timeout") {
91
+ onEvent({ type: "choice_expired", requestId });
92
+ return asToolResult({
93
+ status: "timeout",
94
+ documentId,
95
+ overwritten: false,
96
+ message: "用户未在时限内选择;未覆写、未打开帮写",
94
97
  });
95
- const choiceResult = await promise;
96
- if (choiceResult.status === "timeout") {
97
- hooks.onChoiceExpired?.(requestId);
98
- return asToolResult({
99
- status: "timeout",
100
- documentId,
101
- overwritten: false,
102
- message: "用户未在时限内选择;未覆写、未打开帮写",
103
- });
104
- }
105
- if (choiceResult.status === "cancelled") {
106
- return asToolResult({
107
- status: "cancelled",
108
- documentId,
109
- overwritten: false,
110
- message: "选择已取消;未覆写、未打开帮写",
111
- });
112
- }
113
- const choice = choiceResult.choice ?? "";
114
- const action = classifyChoice(choice);
115
- if (action === "overwrite") {
116
- // 同意后重新读 head,避免等待期间被他人推进
117
- const fresh = getDocument(documentId, visitorId, "text");
118
- const base = fresh.headCommitId;
119
- if (!base) {
120
- throw new Error("DOCUMENT_HAS_NO_HEAD: 文档缺少 headCommitId,无法安全覆写");
121
- }
122
- return doOverwrite({
123
- visitorId,
124
- documentId,
125
- markdown,
126
- localBaseCommitId: base,
127
- });
128
- }
129
- if (action === "coding") {
130
- hooks.onOpenCoding({ documentId, displayName });
131
- return asToolResult({
132
- status: "redirected_to_coding",
133
- documentId,
134
- displayName,
135
- choice,
136
- overwritten: false,
137
- message: "已请前端打开帮写;Ask 未覆写服务端正文",
138
- });
98
+ }
99
+ if (choiceResult.status === "cancelled") {
100
+ return asToolResult({
101
+ status: "cancelled",
102
+ documentId,
103
+ overwritten: false,
104
+ message: "选择已取消;未覆写、未打开帮写",
105
+ });
106
+ }
107
+ const choice = choiceResult.choice ?? "";
108
+ const action = classifyChoice(choice);
109
+ if (action === "overwrite") {
110
+ const fresh = getDocument(documentId, visitorId, "text");
111
+ const base = fresh.headCommitId;
112
+ if (!base) {
113
+ throw new Error("DOCUMENT_HAS_NO_HEAD: 文档缺少 headCommitId,无法安全覆写");
139
114
  }
115
+ return doOverwrite({
116
+ visitorId,
117
+ documentId,
118
+ markdown,
119
+ localBaseCommitId: base,
120
+ });
121
+ }
122
+ if (action === "coding") {
123
+ onEvent({ type: "open_coding", documentId, displayName });
140
124
  return asToolResult({
141
- status: "declined",
125
+ status: "redirected_to_coding",
142
126
  documentId,
127
+ displayName,
143
128
  choice,
144
129
  overwritten: false,
145
- message: "用户取消;未覆写、未打开帮写",
130
+ message: "已请前端打开帮写;Ask 未覆写服务端正文",
146
131
  });
147
132
  }
148
- catch (err) {
149
- if (err instanceof DocumentError) {
150
- throw new Error(`${err.code}: ${err.message}`);
151
- }
152
- throw err;
133
+ return asToolResult({
134
+ status: "declined",
135
+ documentId,
136
+ choice,
137
+ overwritten: false,
138
+ message: "用户取消;未覆写、未打开帮写",
139
+ });
140
+ }
141
+ catch (err) {
142
+ if (err instanceof DocumentError) {
143
+ throw new Error(`${err.code}: ${err.message}`);
153
144
  }
154
- },
145
+ throw err;
146
+ }
155
147
  },
156
- ];
148
+ };
157
149
  }
158
150
  //# sourceMappingURL=tools-overwrite.js.map