@indexnetwork/protocol 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/README.md +113 -0
  2. package/dist/agents/chat.agent.js +2 -2
  3. package/dist/agents/chat.agent.js.map +1 -1
  4. package/dist/agents/chat.prompt.d.ts.map +1 -1
  5. package/dist/agents/chat.prompt.js +44 -32
  6. package/dist/agents/chat.prompt.js.map +1 -1
  7. package/dist/agents/chat.prompt.modules.js +16 -16
  8. package/dist/agents/chat.prompt.modules.js.map +1 -1
  9. package/dist/agents/negotiation.proposer.d.ts +1 -1
  10. package/dist/agents/negotiation.proposer.d.ts.map +1 -1
  11. package/dist/agents/negotiation.responder.d.ts +1 -1
  12. package/dist/agents/negotiation.responder.d.ts.map +1 -1
  13. package/dist/agents/opportunity.evaluator.d.ts +1 -1
  14. package/dist/agents/opportunity.evaluator.d.ts.map +1 -1
  15. package/dist/agents/opportunity.evaluator.js +2 -2
  16. package/dist/agents/opportunity.evaluator.js.map +1 -1
  17. package/dist/agents/opportunity.presenter.js +1 -1
  18. package/dist/agents/opportunity.presenter.js.map +1 -1
  19. package/dist/graphs/chat.graph.d.ts +9 -9
  20. package/dist/graphs/chat.graph.d.ts.map +1 -1
  21. package/dist/graphs/chat.graph.js +2 -2
  22. package/dist/graphs/chat.graph.js.map +1 -1
  23. package/dist/graphs/home.graph.d.ts +5 -5
  24. package/dist/graphs/home.graph.d.ts.map +1 -1
  25. package/dist/graphs/home.graph.js +2 -2
  26. package/dist/graphs/home.graph.js.map +1 -1
  27. package/dist/graphs/intent.graph.d.ts +21 -21
  28. package/dist/graphs/intent.graph.d.ts.map +1 -1
  29. package/dist/graphs/intent.graph.js +8 -8
  30. package/dist/graphs/intent.graph.js.map +1 -1
  31. package/dist/graphs/intent_network.graph.d.ts +398 -0
  32. package/dist/graphs/intent_network.graph.d.ts.map +1 -0
  33. package/dist/graphs/intent_network.graph.js +345 -0
  34. package/dist/graphs/intent_network.graph.js.map +1 -0
  35. package/dist/graphs/negotiation.graph.d.ts +27 -27
  36. package/dist/graphs/negotiation.graph.d.ts.map +1 -1
  37. package/dist/graphs/negotiation.graph.js +2 -2
  38. package/dist/graphs/negotiation.graph.js.map +1 -1
  39. package/dist/graphs/network.graph.d.ts +620 -0
  40. package/dist/graphs/network.graph.d.ts.map +1 -0
  41. package/dist/graphs/network.graph.js +226 -0
  42. package/dist/graphs/network.graph.js.map +1 -0
  43. package/dist/graphs/network_membership.graph.d.ts +250 -0
  44. package/dist/graphs/network_membership.graph.d.ts.map +1 -0
  45. package/dist/graphs/network_membership.graph.js +204 -0
  46. package/dist/graphs/network_membership.graph.js.map +1 -0
  47. package/dist/graphs/opportunity.graph.d.ts +33 -33
  48. package/dist/graphs/opportunity.graph.d.ts.map +1 -1
  49. package/dist/graphs/opportunity.graph.js +161 -144
  50. package/dist/graphs/opportunity.graph.js.map +1 -1
  51. package/dist/graphs/profile.graph.js +4 -4
  52. package/dist/graphs/profile.graph.js.map +1 -1
  53. package/dist/graphs/tests/chat.graph.mocks.d.ts +14 -14
  54. package/dist/graphs/tests/chat.graph.mocks.d.ts.map +1 -1
  55. package/dist/graphs/tests/chat.graph.mocks.js +23 -23
  56. package/dist/graphs/tests/chat.graph.mocks.js.map +1 -1
  57. package/dist/index.d.ts +3 -3
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +3 -3
  60. package/dist/index.js.map +1 -1
  61. package/dist/interfaces/database.interface.d.ts +111 -111
  62. package/dist/interfaces/database.interface.d.ts.map +1 -1
  63. package/dist/interfaces/embedder.interface.d.ts +1 -1
  64. package/dist/interfaces/embedder.interface.d.ts.map +1 -1
  65. package/dist/mcp/mcp.server.js +1 -1
  66. package/dist/mcp/mcp.server.js.map +1 -1
  67. package/dist/states/chat.state.d.ts +2 -2
  68. package/dist/states/chat.state.js +2 -2
  69. package/dist/states/chat.state.js.map +1 -1
  70. package/dist/states/home.state.d.ts +1 -1
  71. package/dist/states/home.state.js +1 -1
  72. package/dist/states/home.state.js.map +1 -1
  73. package/dist/states/intent.state.d.ts +4 -4
  74. package/dist/states/intent.state.d.ts.map +1 -1
  75. package/dist/states/intent.state.js +1 -1
  76. package/dist/states/intent.state.js.map +1 -1
  77. package/dist/states/intent_network.state.d.ts +148 -0
  78. package/dist/states/intent_network.state.d.ts.map +1 -0
  79. package/dist/states/intent_network.state.js +100 -0
  80. package/dist/states/intent_network.state.js.map +1 -0
  81. package/dist/states/negotiation.state.d.ts +4 -4
  82. package/dist/states/negotiation.state.d.ts.map +1 -1
  83. package/dist/states/negotiation.state.js +1 -1
  84. package/dist/states/negotiation.state.js.map +1 -1
  85. package/dist/states/network.state.d.ts +179 -0
  86. package/dist/states/network.state.d.ts.map +1 -0
  87. package/dist/states/network.state.js +56 -0
  88. package/dist/states/network.state.js.map +1 -0
  89. package/dist/states/network_membership.state.d.ts +77 -0
  90. package/dist/states/network_membership.state.d.ts.map +1 -0
  91. package/dist/states/network_membership.state.js +43 -0
  92. package/dist/states/network_membership.state.js.map +1 -0
  93. package/dist/states/opportunity.state.d.ts +15 -15
  94. package/dist/states/opportunity.state.d.ts.map +1 -1
  95. package/dist/states/opportunity.state.js +6 -6
  96. package/dist/states/opportunity.state.js.map +1 -1
  97. package/dist/streamers/chat.streamer.d.ts +2 -2
  98. package/dist/streamers/chat.streamer.d.ts.map +1 -1
  99. package/dist/streamers/chat.streamer.js +6 -6
  100. package/dist/streamers/chat.streamer.js.map +1 -1
  101. package/dist/support/opportunity.discover.js +2 -2
  102. package/dist/support/opportunity.discover.js.map +1 -1
  103. package/dist/support/opportunity.enricher.js +2 -2
  104. package/dist/support/opportunity.enricher.js.map +1 -1
  105. package/dist/support/protocol.logger.d.ts +1 -1
  106. package/dist/support/protocol.logger.d.ts.map +1 -1
  107. package/dist/tools/index.d.ts.map +1 -1
  108. package/dist/tools/index.js +21 -17
  109. package/dist/tools/index.js.map +1 -1
  110. package/dist/tools/intent.tools.js +67 -67
  111. package/dist/tools/intent.tools.js.map +1 -1
  112. package/dist/tools/network.tools.d.ts +3 -0
  113. package/dist/tools/network.tools.d.ts.map +1 -0
  114. package/dist/tools/network.tools.js +423 -0
  115. package/dist/tools/network.tools.js.map +1 -0
  116. package/dist/tools/opportunity.tools.d.ts.map +1 -1
  117. package/dist/tools/opportunity.tools.js +51 -44
  118. package/dist/tools/opportunity.tools.js.map +1 -1
  119. package/dist/tools/profile.tools.js +21 -21
  120. package/dist/tools/profile.tools.js.map +1 -1
  121. package/dist/tools/tool.helpers.d.ts +10 -10
  122. package/dist/tools/tool.helpers.d.ts.map +1 -1
  123. package/dist/tools/tool.helpers.js +16 -16
  124. package/dist/tools/tool.helpers.js.map +1 -1
  125. package/dist/tools/tool.registry.js +3 -3
  126. package/dist/tools/tool.registry.js.map +1 -1
  127. package/dist/tools/utility.tools.js +3 -3
  128. package/package.json +4 -2
@@ -0,0 +1,423 @@
1
+ import { z } from "zod";
2
+ import { requestContext } from "../support/request-context.js";
3
+ import { success, error, UUID_REGEX } from "./tool.helpers.js";
4
+ export function createNetworkTools(defineTool, deps) {
5
+ const { graphs, userDb, systemDb } = deps;
6
+ const readIndexes = defineTool({
7
+ name: "read_networks",
8
+ description: "Lists indexes the user is a member of and indexes they own. Optional userId (omit for current user). When chat is index-scoped, returns only that index.",
9
+ querySchema: z.object({
10
+ userId: z.string().optional().describe("Omit for current user."),
11
+ }),
12
+ handler: async ({ context, query }) => {
13
+ if (query.userId && query.userId.trim() !== context.userId) {
14
+ return error("You can only list your own indexes. Omit userId to see the current user's indexes.");
15
+ }
16
+ const _readIndexGraphStart = Date.now();
17
+ const _readIndexTraceEmitter = requestContext.getStore()?.traceEmitter;
18
+ _readIndexTraceEmitter?.({ type: "graph_start", name: "index" });
19
+ const result = await graphs.index.invoke({
20
+ userId: context.userId,
21
+ networkId: context.networkId || undefined,
22
+ operationMode: 'read',
23
+ showAll: false, // Never allow bypass - strict scope enforcement
24
+ });
25
+ const _readIndexGraphMs = Date.now() - _readIndexGraphStart;
26
+ _readIndexTraceEmitter?.({ type: "graph_end", name: "index", durationMs: _readIndexGraphMs });
27
+ if (result.error) {
28
+ return error(result.error);
29
+ }
30
+ if (result.readResult) {
31
+ // When scoped, add clear metadata so model knows results are limited
32
+ if (context.networkId) {
33
+ return success({
34
+ ...result.readResult,
35
+ _scopeRestriction: {
36
+ isScoped: true,
37
+ scopedToIndex: context.indexName ?? context.networkId,
38
+ message: `Results are limited to "${context.indexName ?? 'this index'}" because this chat is scoped to that community. The user may belong to other communities not shown here.`,
39
+ },
40
+ _graphTimings: [{ name: 'index', durationMs: _readIndexGraphMs, agents: result.agentTimings ?? [] }],
41
+ });
42
+ }
43
+ return success({ ...result.readResult, _graphTimings: [{ name: 'index', durationMs: _readIndexGraphMs, agents: result.agentTimings ?? [] }] });
44
+ }
45
+ return error("Failed to fetch index information.");
46
+ },
47
+ });
48
+ const readIndexMemberships = defineTool({
49
+ name: "read_network_memberships",
50
+ description: "Reads index membership data. Two modes: (1) Pass networkId to list all members of that index (returns userId, name, avatar, permissions, intentCount, joinedAt). (2) Pass userId (or omit for current user) to list all indexes that user belongs to (returns networkId, networkTitle, permissions, joinedAt). Pass both to check whether a specific user is in a specific index. When chat is index-scoped, only that index can be queried.",
51
+ querySchema: z.object({
52
+ networkId: z.string().optional().describe("Index UUID — when provided, lists members of this index."),
53
+ userId: z.string().optional().describe("User ID — when provided, lists that user's index memberships. Omit to default to current user."),
54
+ }),
55
+ handler: async ({ context, query }) => {
56
+ const networkId = query.networkId?.trim() || undefined;
57
+ const userId = query.userId?.trim() || undefined;
58
+ if (networkId && !UUID_REGEX.test(networkId)) {
59
+ return error("Invalid index ID format. Use the exact UUID from read_networks.");
60
+ }
61
+ // Mode 1: list members of an index
62
+ if (networkId && !userId) {
63
+ // Enforce strict scope: when chat is index-scoped, only allow querying that index
64
+ if (context.networkId && networkId !== context.networkId) {
65
+ return error(`This chat is scoped to ${context.indexName ?? 'this index'}. You can only query members of this index.`);
66
+ }
67
+ const _readMembersGraphStart = Date.now();
68
+ const _readMembersTraceEmitter = requestContext.getStore()?.traceEmitter;
69
+ _readMembersTraceEmitter?.({ type: "graph_start", name: "network_membership" });
70
+ const result = await graphs.networkMembership.invoke({
71
+ userId: context.userId,
72
+ networkId,
73
+ operationMode: 'read',
74
+ });
75
+ const _readMembersGraphMs = Date.now() - _readMembersGraphStart;
76
+ _readMembersTraceEmitter?.({ type: "graph_end", name: "network_membership", durationMs: _readMembersGraphMs });
77
+ if (result.error) {
78
+ return error(result.error);
79
+ }
80
+ if (result.readResult) {
81
+ return success({ ...result.readResult, _graphTimings: [{ name: 'network_membership', durationMs: _readMembersGraphMs, agents: result.agentTimings ?? [] }] });
82
+ }
83
+ return error("Failed to fetch index members.");
84
+ }
85
+ // Mode 2: list a user's memberships (indexes they belong to)
86
+ const targetUserId = userId || context.userId;
87
+ // Use userDb for own memberships, but systemDb access is implicit through shared index scope
88
+ let memberships;
89
+ if (targetUserId !== context.userId) {
90
+ // Cross-user access: systemDb will validate shared index membership
91
+ const callerMemberships = await userDb.getNetworkMemberships();
92
+ if (networkId) {
93
+ // Strict scope enforcement: when chat is index-scoped, only allow querying that index
94
+ if (context.networkId && networkId !== context.networkId) {
95
+ return error(`This chat is scoped to ${context.indexName ?? 'this index'}. You can only query membership in this community.`);
96
+ }
97
+ const callerInIndex = callerMemberships.some((m) => m.networkId === networkId);
98
+ if (!callerInIndex) {
99
+ return error("Unauthorized: you can only view another user's membership in an index you belong to. Provide your own userId or omit userId for your memberships.");
100
+ }
101
+ // Check if target user is in the index (systemDb validates scope)
102
+ const isMember = await systemDb.isNetworkMember(networkId, targetUserId);
103
+ if (isMember) {
104
+ return success({ isMember: true, userId: targetUserId, networkId });
105
+ }
106
+ return success({ isMember: false, userId: targetUserId, networkId, message: "User is not a member of this index." });
107
+ }
108
+ else {
109
+ // Strict scope enforcement: when chat is index-scoped, only check the scoped index
110
+ if (context.networkId) {
111
+ const isMember = await systemDb.isNetworkMember(context.networkId, targetUserId);
112
+ if (isMember) {
113
+ return success({
114
+ isMember: true,
115
+ userId: targetUserId,
116
+ networkId: context.networkId,
117
+ _scopeRestriction: {
118
+ isScoped: true,
119
+ scopedToIndex: context.indexName ?? context.networkId,
120
+ message: `This chat is scoped to "${context.indexName ?? 'this index'}". Only membership in this community is shown.`,
121
+ },
122
+ });
123
+ }
124
+ return success({
125
+ isMember: false,
126
+ userId: targetUserId,
127
+ networkId: context.networkId,
128
+ message: "User is not a member of this community.",
129
+ _scopeRestriction: {
130
+ isScoped: true,
131
+ scopedToIndex: context.indexName ?? context.networkId,
132
+ message: `This chat is scoped to "${context.indexName ?? 'this index'}". Only membership in this community was checked.`,
133
+ },
134
+ });
135
+ }
136
+ // Unscoped chat: show overlap with shared indexes (intersection of caller and target memberships)
137
+ const sharedIndexes = [];
138
+ for (const m of callerMemberships) {
139
+ if (await systemDb.isNetworkMember(m.networkId, targetUserId)) {
140
+ sharedIndexes.push(m);
141
+ }
142
+ }
143
+ if (sharedIndexes.length === 0) {
144
+ return error("Unauthorized: you can only view another user's memberships if you share at least one index, or request your own memberships.");
145
+ }
146
+ // Return only the indexes that are shared
147
+ return success({
148
+ userId: targetUserId,
149
+ count: sharedIndexes.length,
150
+ memberships: sharedIndexes.map((m) => ({
151
+ networkId: m.networkId,
152
+ networkTitle: m.networkTitle,
153
+ })),
154
+ note: "Only showing shared indexes.",
155
+ });
156
+ }
157
+ }
158
+ else {
159
+ // Own memberships - use userDb
160
+ memberships = await userDb.getNetworkMemberships();
161
+ // Strict scope enforcement: when chat is index-scoped, only return the scoped index membership
162
+ if (context.networkId && !networkId) {
163
+ memberships = memberships.filter((m) => m.networkId === context.networkId);
164
+ }
165
+ }
166
+ // If both networkId and userId: filter to that specific membership
167
+ if (networkId) {
168
+ // Strict scope enforcement: when chat is index-scoped, only allow querying that index
169
+ if (context.networkId && networkId !== context.networkId) {
170
+ return error(`This chat is scoped to ${context.indexName ?? 'this index'}. You can only query membership in this community.`);
171
+ }
172
+ const callerMemberships = await userDb.getNetworkMemberships();
173
+ const callerInIndex = targetUserId === context.userId ||
174
+ callerMemberships.some((m) => m.networkId === networkId);
175
+ if (!callerInIndex) {
176
+ return error("Unauthorized: you can only view membership in an index you belong to.");
177
+ }
178
+ const match = memberships.find((m) => m.networkId === networkId);
179
+ if (!match) {
180
+ return success({ isMember: false, userId: targetUserId, networkId, message: "User is not a member of this index." });
181
+ }
182
+ return success({
183
+ isMember: true,
184
+ userId: targetUserId,
185
+ networkId,
186
+ networkTitle: match.networkTitle,
187
+ permissions: match.permissions,
188
+ joinedAt: match.joinedAt,
189
+ });
190
+ }
191
+ // When scoped, add clear metadata so model knows results are limited
192
+ if (context.networkId && targetUserId === context.userId) {
193
+ return success({
194
+ userId: targetUserId,
195
+ count: memberships.length,
196
+ memberships: memberships.map((m) => ({
197
+ networkId: m.networkId,
198
+ networkTitle: m.networkTitle,
199
+ permissions: m.permissions,
200
+ joinedAt: m.joinedAt,
201
+ })),
202
+ _scopeRestriction: {
203
+ isScoped: true,
204
+ scopedToIndex: context.indexName ?? context.networkId,
205
+ message: `Results are limited to "${context.indexName ?? 'this index'}" because this chat is scoped to that community. The user may belong to other communities not shown here.`,
206
+ },
207
+ });
208
+ }
209
+ return success({
210
+ userId: targetUserId,
211
+ count: memberships.length,
212
+ memberships: memberships.map((m) => ({
213
+ networkId: m.networkId,
214
+ networkTitle: m.networkTitle,
215
+ permissions: m.permissions,
216
+ joinedAt: m.joinedAt,
217
+ })),
218
+ });
219
+ },
220
+ });
221
+ const updateNetworkSettingsSchema = z.object({
222
+ title: z.string().optional(),
223
+ prompt: z.string().nullable().optional(),
224
+ imageUrl: z.string().url().nullable().optional(),
225
+ joinPolicy: z.enum(['anyone', 'invite_only']).optional(),
226
+ allowGuestVibeCheck: z.boolean().optional(),
227
+ }).strict();
228
+ const updateNetwork = defineTool({
229
+ name: "update_network",
230
+ description: "Updates an index (owner only). Pass networkId or omit when index-scoped.",
231
+ querySchema: z.object({
232
+ networkId: z.string().optional().describe("Index UUID; defaults to current index when scoped."),
233
+ settings: updateNetworkSettingsSchema.describe("Fields to update: title?, prompt?, imageUrl?, joinPolicy?, allowGuestVibeCheck?"),
234
+ }),
235
+ handler: async ({ context, query }) => {
236
+ const effectiveIndexId = (query.networkId?.trim() || context.networkId) ?? null;
237
+ if (!effectiveIndexId || !UUID_REGEX.test(effectiveIndexId)) {
238
+ return error("Valid networkId required.");
239
+ }
240
+ // Strict scope enforcement: when chat is index-scoped, only allow updating that index
241
+ if (context.networkId && effectiveIndexId !== context.networkId) {
242
+ return error(`This chat is scoped to ${context.indexName ?? 'this index'}. You can only update this community's settings.`);
243
+ }
244
+ const _updateNetworkGraphStart = Date.now();
245
+ const _updateNetworkTraceEmitter = requestContext.getStore()?.traceEmitter;
246
+ _updateNetworkTraceEmitter?.({ type: "graph_start", name: "index" });
247
+ const result = await graphs.index.invoke({
248
+ userId: context.userId,
249
+ networkId: effectiveIndexId,
250
+ operationMode: 'update',
251
+ updateInput: query.settings,
252
+ });
253
+ const _updateNetworkGraphMs = Date.now() - _updateNetworkGraphStart;
254
+ _updateNetworkTraceEmitter?.({ type: "graph_end", name: "index", durationMs: _updateNetworkGraphMs });
255
+ if (result.mutationResult && !result.mutationResult.success) {
256
+ return error(result.mutationResult.error || "Failed to update index.");
257
+ }
258
+ return success({ message: "Index updated.", settings: Object.keys(query.settings), _graphTimings: [{ name: 'index', durationMs: _updateNetworkGraphMs, agents: result.agentTimings ?? [] }] });
259
+ },
260
+ });
261
+ const createNetwork = defineTool({
262
+ name: "create_network",
263
+ description: "Creates a new index (community). You become the owner. Pass title; optional prompt, imageUrl, and joinPolicy ('anyone' | 'invite_only').",
264
+ querySchema: z.object({
265
+ title: z.string().describe("Display name of the index"),
266
+ prompt: z.string().optional().describe("What the community is about"),
267
+ imageUrl: z.string().url().optional().describe("URL of the index image (optional)"),
268
+ joinPolicy: z.enum(['anyone', 'invite_only']).optional().describe("Who can join; default invite_only"),
269
+ }),
270
+ handler: async ({ context, query }) => {
271
+ if (!query.title?.trim()) {
272
+ return error("Title is required.");
273
+ }
274
+ const _createNetworkGraphStart = Date.now();
275
+ const _createNetworkTraceEmitter = requestContext.getStore()?.traceEmitter;
276
+ _createNetworkTraceEmitter?.({ type: "graph_start", name: "index" });
277
+ const result = await graphs.index.invoke({
278
+ userId: context.userId,
279
+ operationMode: 'create',
280
+ createInput: {
281
+ title: query.title.trim(),
282
+ prompt: query.prompt?.trim() || undefined,
283
+ imageUrl: query.imageUrl || undefined,
284
+ joinPolicy: query.joinPolicy,
285
+ },
286
+ });
287
+ const _createNetworkGraphMs = Date.now() - _createNetworkGraphStart;
288
+ _createNetworkTraceEmitter?.({ type: "graph_end", name: "index", durationMs: _createNetworkGraphMs });
289
+ if (result.mutationResult) {
290
+ if (result.mutationResult.success) {
291
+ return success({
292
+ created: true,
293
+ networkId: result.mutationResult.networkId,
294
+ title: result.mutationResult.title,
295
+ message: result.mutationResult.message,
296
+ _graphTimings: [{ name: 'index', durationMs: _createNetworkGraphMs, agents: result.agentTimings ?? [] }],
297
+ });
298
+ }
299
+ return error(result.mutationResult.error || "Failed to create index.");
300
+ }
301
+ return error("Failed to create index.");
302
+ },
303
+ });
304
+ const deleteNetwork = defineTool({
305
+ name: "delete_network",
306
+ description: "Deletes an index (owner only, must be sole member). When chat is index-scoped, can only delete that index.",
307
+ querySchema: z.object({
308
+ networkId: z.string().optional().describe("Index UUID from read_networks. Defaults to current index when scoped."),
309
+ }),
310
+ handler: async ({ context, query }) => {
311
+ const networkId = query.networkId?.trim() || context.networkId;
312
+ if (!networkId || !UUID_REGEX.test(networkId)) {
313
+ return error("Valid networkId required.");
314
+ }
315
+ // Strict scope enforcement: when chat is index-scoped, only allow deleting that index
316
+ if (context.networkId && networkId !== context.networkId) {
317
+ return error(`This chat is scoped to ${context.indexName ?? 'this index'}. You can only delete this community.`);
318
+ }
319
+ const _deleteNetworkGraphStart = Date.now();
320
+ const _deleteNetworkTraceEmitter = requestContext.getStore()?.traceEmitter;
321
+ _deleteNetworkTraceEmitter?.({ type: "graph_start", name: "index" });
322
+ const result = await graphs.index.invoke({
323
+ userId: context.userId,
324
+ networkId,
325
+ operationMode: 'delete',
326
+ });
327
+ const _deleteNetworkGraphMs = Date.now() - _deleteNetworkGraphStart;
328
+ _deleteNetworkTraceEmitter?.({ type: "graph_end", name: "index", durationMs: _deleteNetworkGraphMs });
329
+ if (result.mutationResult && !result.mutationResult.success) {
330
+ return error(result.mutationResult.error || "Failed to delete index.");
331
+ }
332
+ return success({ message: "Index deleted.", _graphTimings: [{ name: 'index', durationMs: _deleteNetworkGraphMs, agents: result.agentTimings ?? [] }] });
333
+ },
334
+ });
335
+ const createNetworkMembership = defineTool({
336
+ name: "create_network_membership",
337
+ description: "Adds a user as a member of an index. Omit userId to join the index yourself (self-join works only for public indexes with joinPolicy 'anyone'). For invite_only indexes only the owner can add members.",
338
+ querySchema: z.object({
339
+ userId: z.string().optional().describe("User ID to add as a member. Omit to join the index yourself."),
340
+ networkId: z.string().optional().describe("Index UUID from read_networks. Defaults to current index when scoped."),
341
+ }),
342
+ handler: async ({ context, query }) => {
343
+ const networkId = query.networkId?.trim() || context.networkId;
344
+ const targetUserId = query.userId?.trim() || context.userId;
345
+ if (!networkId || !UUID_REGEX.test(networkId)) {
346
+ return error("Invalid index ID format. Use the exact UUID from read_networks.");
347
+ }
348
+ // Strict scope enforcement: when chat is index-scoped, only allow adding to that index
349
+ if (context.networkId && networkId !== context.networkId) {
350
+ return error(`This chat is scoped to ${context.indexName ?? 'this index'}. You can only add members to this community.`);
351
+ }
352
+ const _createMembershipGraphStart = Date.now();
353
+ const _createMembershipTraceEmitter = requestContext.getStore()?.traceEmitter;
354
+ _createMembershipTraceEmitter?.({ type: "graph_start", name: "network_membership" });
355
+ const result = await graphs.networkMembership.invoke({
356
+ userId: context.userId,
357
+ networkId,
358
+ targetUserId,
359
+ operationMode: 'create',
360
+ });
361
+ const _createMembershipGraphMs = Date.now() - _createMembershipGraphStart;
362
+ _createMembershipTraceEmitter?.({ type: "graph_end", name: "network_membership", durationMs: _createMembershipGraphMs });
363
+ if (result.mutationResult) {
364
+ if (result.mutationResult.success) {
365
+ const alreadyMember = result.mutationResult.message?.includes("already");
366
+ return success({
367
+ created: !alreadyMember,
368
+ message: result.mutationResult.message,
369
+ _graphTimings: [{ name: 'network_membership', durationMs: _createMembershipGraphMs, agents: result.agentTimings ?? [] }],
370
+ });
371
+ }
372
+ return error(result.mutationResult.error || "Failed to add member.");
373
+ }
374
+ return error("Failed to add member.");
375
+ },
376
+ });
377
+ const deleteNetworkMembership = defineTool({
378
+ name: "delete_network_membership",
379
+ description: "Removes a user from an index. Only the index owner can remove members. Cannot remove the owner themselves.",
380
+ querySchema: z.object({
381
+ userId: z.string().describe("User ID to remove from the index"),
382
+ networkId: z.string().optional().describe("Index UUID. Defaults to current index when scoped."),
383
+ }),
384
+ handler: async ({ context, query }) => {
385
+ const networkId = query.networkId?.trim() || context.networkId;
386
+ const targetUserId = query.userId?.trim();
387
+ if (!networkId || !UUID_REGEX.test(networkId)) {
388
+ return error("Valid networkId required. Use the exact UUID from read_networks.");
389
+ }
390
+ if (!targetUserId) {
391
+ return error("userId is required.");
392
+ }
393
+ // Strict scope enforcement: when chat is index-scoped, only allow that index
394
+ if (context.networkId && networkId !== context.networkId) {
395
+ return error(`This chat is scoped to ${context.indexName ?? 'this index'}. You can only manage members of this community.`);
396
+ }
397
+ const _deleteMembershipGraphStart = Date.now();
398
+ const _deleteMembershipTraceEmitter = requestContext.getStore()?.traceEmitter;
399
+ _deleteMembershipTraceEmitter?.({ type: "graph_start", name: "network_membership" });
400
+ const result = await graphs.networkMembership.invoke({
401
+ userId: context.userId,
402
+ networkId,
403
+ targetUserId,
404
+ operationMode: 'delete',
405
+ });
406
+ const _deleteMembershipGraphMs = Date.now() - _deleteMembershipGraphStart;
407
+ _deleteMembershipTraceEmitter?.({ type: "graph_end", name: "network_membership", durationMs: _deleteMembershipGraphMs });
408
+ if (result.mutationResult) {
409
+ if (result.mutationResult.success) {
410
+ return success({
411
+ removed: true,
412
+ message: result.mutationResult.message,
413
+ _graphTimings: [{ name: 'network_membership', durationMs: _deleteMembershipGraphMs, agents: result.agentTimings ?? [] }],
414
+ });
415
+ }
416
+ return error(result.mutationResult.error || "Failed to remove member.");
417
+ }
418
+ return error("Failed to remove member.");
419
+ },
420
+ });
421
+ return [readIndexes, readIndexMemberships, updateNetwork, createNetwork, deleteNetwork, createNetworkMembership, deleteNetworkMembership];
422
+ }
423
+ //# sourceMappingURL=network.tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.tools.js","sourceRoot":"","sources":["../../src/tools/network.tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"opportunity.tools.d.ts","sourceRoot":"","sources":["../../src/tools/opportunity.tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAO9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAkBvE;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EACzB,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,EAC9B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,EAChC,UAAU,CAAC,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,MAAM,EACxB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,EACjC,iBAAiB,CAAC,EAAE,MAAM,EAC1B,kBAAkB,CAAC,EAAE,OAAO,GAC3B;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtF,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzE,CA6DA;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,4BA+2B5E"}
1
+ {"version":3,"file":"opportunity.tools.d.ts","sourceRoot":"","sources":["../../src/tools/opportunity.tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAO9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAkBvE;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EACzB,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,EAC9B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,EAChC,UAAU,CAAC,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,MAAM,EACxB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,EACjC,iBAAiB,CAAC,EAAE,MAAM,EAC1B,kBAAkB,CAAC,EAAE,OAAO,GAC3B;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtF,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzE,CA6DA;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,4BAy3B5E"}