@indexnetwork/protocol 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +155 -138
  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 +20 -20
  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 +93 -93
  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 +17 -17
  120. package/dist/tools/profile.tools.js.map +1 -1
  121. package/dist/tools/tool.helpers.d.ts +7 -7
  122. package/dist/tools/tool.helpers.d.ts.map +1 -1
  123. package/dist/tools/tool.helpers.js +11 -11
  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 +1 -1
@@ -0,0 +1,226 @@
1
+ import { StateGraph, START, END } from "@langchain/langgraph";
2
+ import { protocolLogger } from "../support/protocol.logger.js";
3
+ import { timed } from "../support/performance.js";
4
+ import { NetworkGraphState } from "../states/network.state.js";
5
+ const logger = protocolLogger("NetworkGraphFactory");
6
+ /**
7
+ * Factory class to build and compile the Index (CRUD) Graph.
8
+ *
9
+ * Handles create, read, update, and delete operations for indexes.
10
+ * Membership and intent-index assignment operations are handled by
11
+ * separate graphs (NetworkMembershipGraph and IntentNetworkGraph).
12
+ *
13
+ * Flow:
14
+ * START → routerNode → {createNode | readNode | updateNode | deleteNode} → END
15
+ */
16
+ export class NetworkGraphFactory {
17
+ constructor(database) {
18
+ this.database = database;
19
+ }
20
+ createGraph() {
21
+ // --- NODE DEFINITIONS ---
22
+ /**
23
+ * Read Node: List indexes the user belongs to and owns.
24
+ */
25
+ const readNode = async (state) => {
26
+ return timed("NetworkGraph.read", async () => {
27
+ logger.verbose("Read indexes", { userId: state.userId, networkId: state.networkId, showAll: state.showAll });
28
+ try {
29
+ const [allMemberships, ownedIndexes, publicIndexesResult] = await Promise.all([
30
+ this.database.getNetworkMemberships(state.userId),
31
+ this.database.getOwnedIndexes(state.userId),
32
+ this.database.getPublicIndexesNotJoined(state.userId),
33
+ ]);
34
+ // If index-scoped and not showAll, return just that index (no public indexes in scoped view)
35
+ const scopeToCurrentIndex = state.networkId && !state.showAll;
36
+ if (scopeToCurrentIndex) {
37
+ const networkId = state.networkId;
38
+ const isMember = await this.database.isNetworkMember(networkId, state.userId);
39
+ if (!isMember) {
40
+ return {
41
+ readResult: {
42
+ memberOf: [],
43
+ owns: [],
44
+ stats: { memberOfCount: 0, ownsCount: 0, scopeNote: "Network not found or you are not a member." },
45
+ },
46
+ };
47
+ }
48
+ const membership = allMemberships.find((m) => m.networkId === networkId);
49
+ const owned = ownedIndexes.find((o) => o.id === networkId);
50
+ return {
51
+ readResult: {
52
+ memberOf: membership
53
+ ? [{ networkId: membership.networkId, title: membership.networkTitle, description: membership.indexPrompt, autoAssign: membership.autoAssign, joinedAt: membership.joinedAt }]
54
+ : [],
55
+ owns: owned
56
+ ? [{ networkId: owned.id, title: owned.title, description: owned.prompt, memberCount: owned.memberCount, intentCount: owned.intentCount, joinPolicy: owned.permissions.joinPolicy }]
57
+ : [],
58
+ stats: { memberOfCount: membership ? 1 : 0, ownsCount: owned ? 1 : 0, scopeNote: "Showing current index. Use showAll: true for all indexes." },
59
+ },
60
+ };
61
+ }
62
+ // Include public indexes available to join
63
+ const publicIndexes = publicIndexesResult.networks.map((idx) => ({
64
+ networkId: idx.id,
65
+ title: idx.title,
66
+ description: idx.prompt,
67
+ memberCount: idx.memberCount,
68
+ owner: idx.owner,
69
+ }));
70
+ return {
71
+ readResult: {
72
+ memberOf: allMemberships.map((m) => ({ networkId: m.networkId, title: m.networkTitle, description: m.indexPrompt, autoAssign: m.autoAssign, joinedAt: m.joinedAt })),
73
+ owns: ownedIndexes.map((o) => ({ networkId: o.id, title: o.title, description: o.prompt, memberCount: o.memberCount, intentCount: o.intentCount, joinPolicy: o.permissions.joinPolicy })),
74
+ publicIndexes,
75
+ stats: { memberOfCount: allMemberships.length, ownsCount: ownedIndexes.length, publicIndexesCount: publicIndexes.length },
76
+ },
77
+ };
78
+ }
79
+ catch (err) {
80
+ logger.error("Read indexes failed", { error: err });
81
+ return { error: "Failed to fetch network information." };
82
+ }
83
+ });
84
+ };
85
+ /**
86
+ * Create Node: Create a new index and add user as owner.
87
+ */
88
+ const createNode = async (state) => {
89
+ return timed("NetworkGraph.create", async () => {
90
+ logger.verbose("Create index", { userId: state.userId, createInput: state.createInput });
91
+ if (!state.createInput?.title?.trim()) {
92
+ return { mutationResult: { success: false, error: "Title is required." } };
93
+ }
94
+ let createdIndexId;
95
+ try {
96
+ const index = await this.database.createNetwork({
97
+ title: state.createInput.title.trim(),
98
+ prompt: state.createInput.prompt?.trim() || undefined,
99
+ imageUrl: state.createInput.imageUrl ?? undefined,
100
+ joinPolicy: state.createInput.joinPolicy,
101
+ });
102
+ createdIndexId = index.id;
103
+ const added = await this.database.addMemberToIndex(index.id, state.userId, 'owner');
104
+ if (!added.success) {
105
+ logger.error("addMemberToIndex failed; cleaning up orphaned index", { networkId: index.id });
106
+ try {
107
+ await this.database.softDeleteIndex(index.id);
108
+ }
109
+ catch { }
110
+ return { mutationResult: { success: false, error: "Failed to set you as owner. Network was not created." } };
111
+ }
112
+ return {
113
+ mutationResult: {
114
+ success: true,
115
+ networkId: index.id,
116
+ title: index.title,
117
+ message: `Network "${index.title}" created. You are the owner.`,
118
+ },
119
+ };
120
+ }
121
+ catch (err) {
122
+ logger.error("Create index failed", { error: err });
123
+ if (createdIndexId) {
124
+ try {
125
+ await this.database.softDeleteIndex(createdIndexId);
126
+ }
127
+ catch { }
128
+ }
129
+ return { mutationResult: { success: false, error: "Failed to create network." } };
130
+ }
131
+ });
132
+ };
133
+ /**
134
+ * Update Node: Update index settings (owner only).
135
+ */
136
+ const updateNode = async (state) => {
137
+ return timed("NetworkGraph.update", async () => {
138
+ const networkId = state.networkId;
139
+ logger.verbose("Update index", { userId: state.userId, networkId, updateInput: state.updateInput });
140
+ if (!networkId) {
141
+ return { mutationResult: { success: false, error: "networkId is required for update." } };
142
+ }
143
+ try {
144
+ const isOwner = await this.database.isIndexOwner(networkId, state.userId);
145
+ if (!isOwner) {
146
+ return { mutationResult: { success: false, error: "You can only modify networks you own." } };
147
+ }
148
+ await this.database.updateIndexSettings(networkId, state.userId, state.updateInput ?? {});
149
+ return {
150
+ mutationResult: {
151
+ success: true,
152
+ networkId,
153
+ message: "Network settings updated.",
154
+ },
155
+ };
156
+ }
157
+ catch (err) {
158
+ logger.error("Update index failed", { error: err });
159
+ return { mutationResult: { success: false, error: "Failed to update network." } };
160
+ }
161
+ });
162
+ };
163
+ /**
164
+ * Delete Node: Soft-delete an index (owner only, sole member).
165
+ */
166
+ const deleteNode = async (state) => {
167
+ return timed("NetworkGraph.delete", async () => {
168
+ const networkId = state.networkId;
169
+ logger.verbose("Delete index", { userId: state.userId, networkId });
170
+ if (!networkId) {
171
+ return { mutationResult: { success: false, error: "networkId is required for delete." } };
172
+ }
173
+ try {
174
+ const isOwner = await this.database.isIndexOwner(networkId, state.userId);
175
+ if (!isOwner) {
176
+ return { mutationResult: { success: false, error: "You can only delete networks you own." } };
177
+ }
178
+ const count = await this.database.getIndexMemberCount(networkId);
179
+ if (count > 1) {
180
+ return { mutationResult: { success: false, error: "Cannot delete network with other members. Remove members first." } };
181
+ }
182
+ await this.database.softDeleteIndex(networkId);
183
+ return {
184
+ mutationResult: {
185
+ success: true,
186
+ networkId,
187
+ message: "Network deleted.",
188
+ },
189
+ };
190
+ }
191
+ catch (err) {
192
+ logger.error("Delete index failed", { error: err });
193
+ return { mutationResult: { success: false, error: "Failed to delete network." } };
194
+ }
195
+ });
196
+ };
197
+ // --- CONDITIONAL ROUTING ---
198
+ const routeByMode = (state) => {
199
+ switch (state.operationMode) {
200
+ case 'create': return 'create';
201
+ case 'read': return 'read';
202
+ case 'update': return 'update';
203
+ case 'delete': return 'delete_idx';
204
+ default: return 'read';
205
+ }
206
+ };
207
+ // --- GRAPH ASSEMBLY ---
208
+ const workflow = new StateGraph(NetworkGraphState)
209
+ .addNode("read", readNode)
210
+ .addNode("create", createNode)
211
+ .addNode("update", updateNode)
212
+ .addNode("delete_idx", deleteNode)
213
+ .addConditionalEdges(START, routeByMode, {
214
+ read: "read",
215
+ create: "create",
216
+ update: "update",
217
+ delete_idx: "delete_idx",
218
+ })
219
+ .addEdge("read", END)
220
+ .addEdge("create", END)
221
+ .addEdge("update", END)
222
+ .addEdge("delete_idx", END);
223
+ return workflow.compile();
224
+ }
225
+ }
226
+ //# sourceMappingURL=network.graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.graph.js","sourceRoot":"","sources":["../../src/graphs/network.graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,250 @@
1
+ import type { NetworkMembershipGraphDatabase } from "../interfaces/database.interface.js";
2
+ /**
3
+ * Factory class to build and compile the Index Membership Graph.
4
+ *
5
+ * Handles CRUD operations for the index_members table:
6
+ * - create: Add a member to an index (validates join policy and ownership)
7
+ * - read: List members of an index (validates caller is member)
8
+ * - delete: Remove a member from an index (future, validates ownership)
9
+ */
10
+ export declare class NetworkMembershipGraphFactory {
11
+ private database;
12
+ constructor(database: NetworkMembershipGraphDatabase);
13
+ createGraph(): import("@langchain/langgraph").CompiledStateGraph<{
14
+ userId: string;
15
+ networkId: string;
16
+ operationMode: "create" | "delete" | "read";
17
+ targetUserId: string | undefined;
18
+ readResult: {
19
+ networkId: string;
20
+ count: number;
21
+ members: Array<{
22
+ userId: string;
23
+ name: string;
24
+ avatar: string | null;
25
+ permissions: string[];
26
+ intentCount: number;
27
+ joinedAt: Date;
28
+ }>;
29
+ } | undefined;
30
+ mutationResult: {
31
+ success: boolean;
32
+ message?: string;
33
+ error?: string;
34
+ } | undefined;
35
+ error: string | null;
36
+ }, {
37
+ userId?: string | undefined;
38
+ networkId?: string | undefined;
39
+ operationMode?: "create" | "delete" | "read" | import("@langchain/langgraph").OverwriteValue<"create" | "delete" | "read"> | undefined;
40
+ targetUserId?: string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined;
41
+ readResult?: {
42
+ networkId: string;
43
+ count: number;
44
+ members: Array<{
45
+ userId: string;
46
+ name: string;
47
+ avatar: string | null;
48
+ permissions: string[];
49
+ intentCount: number;
50
+ joinedAt: Date;
51
+ }>;
52
+ } | import("@langchain/langgraph").OverwriteValue<{
53
+ networkId: string;
54
+ count: number;
55
+ members: Array<{
56
+ userId: string;
57
+ name: string;
58
+ avatar: string | null;
59
+ permissions: string[];
60
+ intentCount: number;
61
+ joinedAt: Date;
62
+ }>;
63
+ } | undefined> | undefined;
64
+ mutationResult?: {
65
+ success: boolean;
66
+ message?: string;
67
+ error?: string;
68
+ } | import("@langchain/langgraph").OverwriteValue<{
69
+ success: boolean;
70
+ message?: string;
71
+ error?: string;
72
+ } | undefined> | undefined;
73
+ error?: string | import("@langchain/langgraph").OverwriteValue<string | null> | null | undefined;
74
+ }, "__start__" | "add_member" | "list_members" | "remove_member", {
75
+ userId: {
76
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BaseChannel<string, string | import("@langchain/langgraph").OverwriteValue<string>, unknown>;
77
+ (): import("@langchain/langgraph").LastValue<string>;
78
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
79
+ };
80
+ networkId: {
81
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BaseChannel<string, string | import("@langchain/langgraph").OverwriteValue<string>, unknown>;
82
+ (): import("@langchain/langgraph").LastValue<string>;
83
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
84
+ };
85
+ operationMode: import("@langchain/langgraph").BaseChannel<"create" | "delete" | "read", "create" | "delete" | "read" | import("@langchain/langgraph").OverwriteValue<"create" | "delete" | "read">, unknown>;
86
+ targetUserId: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
87
+ readResult: import("@langchain/langgraph").BaseChannel<{
88
+ networkId: string;
89
+ count: number;
90
+ members: Array<{
91
+ userId: string;
92
+ name: string;
93
+ avatar: string | null;
94
+ permissions: string[];
95
+ intentCount: number;
96
+ joinedAt: Date;
97
+ }>;
98
+ } | undefined, {
99
+ networkId: string;
100
+ count: number;
101
+ members: Array<{
102
+ userId: string;
103
+ name: string;
104
+ avatar: string | null;
105
+ permissions: string[];
106
+ intentCount: number;
107
+ joinedAt: Date;
108
+ }>;
109
+ } | import("@langchain/langgraph").OverwriteValue<{
110
+ networkId: string;
111
+ count: number;
112
+ members: Array<{
113
+ userId: string;
114
+ name: string;
115
+ avatar: string | null;
116
+ permissions: string[];
117
+ intentCount: number;
118
+ joinedAt: Date;
119
+ }>;
120
+ } | undefined> | undefined, unknown>;
121
+ mutationResult: import("@langchain/langgraph").BaseChannel<{
122
+ success: boolean;
123
+ message?: string;
124
+ error?: string;
125
+ } | undefined, {
126
+ success: boolean;
127
+ message?: string;
128
+ error?: string;
129
+ } | import("@langchain/langgraph").OverwriteValue<{
130
+ success: boolean;
131
+ message?: string;
132
+ error?: string;
133
+ } | undefined> | undefined, unknown>;
134
+ error: import("@langchain/langgraph").BaseChannel<string | null, string | import("@langchain/langgraph").OverwriteValue<string | null> | null, unknown>;
135
+ }, {
136
+ userId: {
137
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BaseChannel<string, string | import("@langchain/langgraph").OverwriteValue<string>, unknown>;
138
+ (): import("@langchain/langgraph").LastValue<string>;
139
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
140
+ };
141
+ networkId: {
142
+ (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BaseChannel<string, string | import("@langchain/langgraph").OverwriteValue<string>, unknown>;
143
+ (): import("@langchain/langgraph").LastValue<string>;
144
+ Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
145
+ };
146
+ operationMode: import("@langchain/langgraph").BaseChannel<"create" | "delete" | "read", "create" | "delete" | "read" | import("@langchain/langgraph").OverwriteValue<"create" | "delete" | "read">, unknown>;
147
+ targetUserId: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
148
+ readResult: import("@langchain/langgraph").BaseChannel<{
149
+ networkId: string;
150
+ count: number;
151
+ members: Array<{
152
+ userId: string;
153
+ name: string;
154
+ avatar: string | null;
155
+ permissions: string[];
156
+ intentCount: number;
157
+ joinedAt: Date;
158
+ }>;
159
+ } | undefined, {
160
+ networkId: string;
161
+ count: number;
162
+ members: Array<{
163
+ userId: string;
164
+ name: string;
165
+ avatar: string | null;
166
+ permissions: string[];
167
+ intentCount: number;
168
+ joinedAt: Date;
169
+ }>;
170
+ } | import("@langchain/langgraph").OverwriteValue<{
171
+ networkId: string;
172
+ count: number;
173
+ members: Array<{
174
+ userId: string;
175
+ name: string;
176
+ avatar: string | null;
177
+ permissions: string[];
178
+ intentCount: number;
179
+ joinedAt: Date;
180
+ }>;
181
+ } | undefined> | undefined, unknown>;
182
+ mutationResult: import("@langchain/langgraph").BaseChannel<{
183
+ success: boolean;
184
+ message?: string;
185
+ error?: string;
186
+ } | undefined, {
187
+ success: boolean;
188
+ message?: string;
189
+ error?: string;
190
+ } | import("@langchain/langgraph").OverwriteValue<{
191
+ success: boolean;
192
+ message?: string;
193
+ error?: string;
194
+ } | undefined> | undefined, unknown>;
195
+ error: import("@langchain/langgraph").BaseChannel<string | null, string | import("@langchain/langgraph").OverwriteValue<string | null> | null, unknown>;
196
+ }, import("@langchain/langgraph").StateDefinition, {
197
+ add_member: {
198
+ mutationResult: {
199
+ success: boolean;
200
+ error: string;
201
+ message?: undefined;
202
+ };
203
+ } | {
204
+ mutationResult: {
205
+ success: boolean;
206
+ message: string;
207
+ error?: undefined;
208
+ };
209
+ };
210
+ list_members: {
211
+ readResult: {
212
+ networkId: string;
213
+ count: number;
214
+ members: never[];
215
+ };
216
+ error: string;
217
+ } | {
218
+ readResult: {
219
+ networkId: string;
220
+ count: number;
221
+ members: {
222
+ userId: string;
223
+ name: string;
224
+ avatar: string | null;
225
+ permissions: string[];
226
+ intentCount: number;
227
+ joinedAt: Date;
228
+ }[];
229
+ };
230
+ error?: undefined;
231
+ } | {
232
+ error: string;
233
+ readResult?: undefined;
234
+ };
235
+ remove_member: {
236
+ mutationResult: {
237
+ success: boolean;
238
+ error: string;
239
+ message?: undefined;
240
+ };
241
+ } | {
242
+ mutationResult: {
243
+ success: boolean;
244
+ message: string;
245
+ error?: undefined;
246
+ };
247
+ };
248
+ }, unknown, unknown>;
249
+ }
250
+ //# sourceMappingURL=network_membership.graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network_membership.graph.d.ts","sourceRoot":"","sources":["../../src/graphs/network_membership.graph.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAO1F;;;;;;;GAOG;AACH,qBAAa,6BAA6B;IAC5B,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,8BAA8B;IAErD,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgNnB"}