@powerhousedao/network-admin 0.0.44 → 0.0.45

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 (146) hide show
  1. package/dist/document-models/builders/actions.d.ts +14 -0
  2. package/dist/document-models/builders/actions.d.ts.map +1 -0
  3. package/dist/document-models/builders/actions.js +4 -0
  4. package/dist/document-models/builders/gen/actions.d.ts +4 -0
  5. package/dist/document-models/builders/gen/actions.d.ts.map +1 -0
  6. package/dist/document-models/builders/gen/actions.js +1 -0
  7. package/dist/document-models/builders/gen/builders/actions.d.ts +12 -0
  8. package/dist/document-models/builders/gen/builders/actions.d.ts.map +1 -0
  9. package/dist/document-models/builders/gen/builders/actions.js +1 -0
  10. package/dist/document-models/builders/gen/builders/creators.d.ts +5 -0
  11. package/dist/document-models/builders/gen/builders/creators.d.ts.map +1 -0
  12. package/dist/document-models/builders/gen/builders/creators.js +4 -0
  13. package/dist/document-models/builders/gen/builders/error.d.ts +2 -0
  14. package/dist/document-models/builders/gen/builders/error.d.ts.map +1 -0
  15. package/dist/document-models/builders/gen/builders/error.js +1 -0
  16. package/dist/document-models/builders/gen/builders/operations.d.ts +8 -0
  17. package/dist/document-models/builders/gen/builders/operations.d.ts.map +1 -0
  18. package/dist/document-models/builders/gen/builders/operations.js +3 -0
  19. package/dist/document-models/builders/gen/creators.d.ts +3 -0
  20. package/dist/document-models/builders/gen/creators.d.ts.map +1 -0
  21. package/dist/document-models/builders/gen/creators.js +2 -0
  22. package/dist/document-models/builders/gen/document-model.d.ts +3 -0
  23. package/dist/document-models/builders/gen/document-model.d.ts.map +1 -0
  24. package/dist/document-models/builders/gen/document-model.js +59 -0
  25. package/dist/document-models/builders/gen/document-schema.d.ts +142 -0
  26. package/dist/document-models/builders/gen/document-schema.d.ts.map +1 -0
  27. package/dist/document-models/builders/gen/document-schema.js +33 -0
  28. package/dist/document-models/builders/gen/document-type.d.ts +2 -0
  29. package/dist/document-models/builders/gen/document-type.d.ts.map +1 -0
  30. package/dist/document-models/builders/gen/document-type.js +1 -0
  31. package/dist/document-models/builders/gen/index.d.ts +12 -0
  32. package/dist/document-models/builders/gen/index.d.ts.map +1 -0
  33. package/dist/document-models/builders/gen/index.js +11 -0
  34. package/dist/document-models/builders/gen/ph-factories.d.ts +23 -0
  35. package/dist/document-models/builders/gen/ph-factories.d.ts.map +1 -0
  36. package/dist/document-models/builders/gen/ph-factories.js +47 -0
  37. package/dist/document-models/builders/gen/reducer.d.ts +3 -0
  38. package/dist/document-models/builders/gen/reducer.d.ts.map +1 -0
  39. package/dist/document-models/builders/gen/reducer.js +21 -0
  40. package/dist/document-models/builders/gen/schema/index.d.ts +3 -0
  41. package/dist/document-models/builders/gen/schema/index.d.ts.map +1 -0
  42. package/dist/document-models/builders/gen/schema/index.js +2 -0
  43. package/dist/document-models/builders/gen/schema/types.d.ts +146 -0
  44. package/dist/document-models/builders/gen/schema/types.d.ts.map +1 -0
  45. package/dist/document-models/builders/gen/schema/types.js +1 -0
  46. package/dist/document-models/builders/gen/schema/zod.d.ts +13 -0
  47. package/dist/document-models/builders/gen/schema/zod.d.ts.map +1 -0
  48. package/dist/document-models/builders/gen/schema/zod.js +21 -0
  49. package/dist/document-models/builders/gen/types.d.ts +12 -0
  50. package/dist/document-models/builders/gen/types.d.ts.map +1 -0
  51. package/dist/document-models/builders/gen/types.js +1 -0
  52. package/dist/document-models/builders/gen/utils.d.ts +15 -0
  53. package/dist/document-models/builders/gen/utils.d.ts.map +1 -0
  54. package/dist/document-models/builders/gen/utils.js +51 -0
  55. package/dist/document-models/builders/hooks.d.ts +11 -0
  56. package/dist/document-models/builders/hooks.d.ts.map +1 -0
  57. package/dist/document-models/builders/hooks.js +26 -0
  58. package/dist/document-models/builders/index.d.ts +10 -0
  59. package/dist/document-models/builders/index.d.ts.map +1 -0
  60. package/dist/document-models/builders/index.js +9 -0
  61. package/dist/document-models/builders/module.d.ts +5 -0
  62. package/dist/document-models/builders/module.d.ts.map +1 -0
  63. package/dist/document-models/builders/module.js +10 -0
  64. package/dist/document-models/builders/src/index.d.ts +2 -0
  65. package/dist/document-models/builders/src/index.d.ts.map +1 -0
  66. package/dist/document-models/builders/src/index.js +1 -0
  67. package/dist/document-models/builders/src/reducers/builders.d.ts +3 -0
  68. package/dist/document-models/builders/src/reducers/builders.d.ts.map +1 -0
  69. package/dist/document-models/builders/src/reducers/builders.js +8 -0
  70. package/dist/document-models/builders/src/tests/builders.test.d.ts +6 -0
  71. package/dist/document-models/builders/src/tests/builders.test.d.ts.map +1 -0
  72. package/dist/document-models/builders/src/tests/builders.test.js +29 -0
  73. package/dist/document-models/builders/src/tests/document-model.test.d.ts +10 -0
  74. package/dist/document-models/builders/src/tests/document-model.test.d.ts.map +1 -0
  75. package/dist/document-models/builders/src/tests/document-model.test.js +104 -0
  76. package/dist/document-models/builders/src/utils.d.ts +2 -0
  77. package/dist/document-models/builders/src/utils.d.ts.map +1 -0
  78. package/dist/document-models/builders/src/utils.js +1 -0
  79. package/dist/document-models/builders/utils.d.ts +14 -0
  80. package/dist/document-models/builders/utils.d.ts.map +1 -0
  81. package/dist/document-models/builders/utils.js +7 -0
  82. package/dist/document-models/document-models.d.ts.map +1 -1
  83. package/dist/document-models/document-models.js +2 -0
  84. package/dist/document-models/index.d.ts +1 -0
  85. package/dist/document-models/index.d.ts.map +1 -1
  86. package/dist/document-models/index.js +1 -0
  87. package/dist/editors/builders/editor.d.ts +3 -0
  88. package/dist/editors/builders/editor.d.ts.map +1 -0
  89. package/dist/editors/builders/editor.js +204 -0
  90. package/dist/editors/builders/module.d.ts +4 -0
  91. package/dist/editors/builders/module.d.ts.map +1 -0
  92. package/dist/editors/builders/module.js +10 -0
  93. package/dist/editors/editors.d.ts.map +1 -1
  94. package/dist/editors/editors.js +2 -0
  95. package/dist/editors/index.d.ts +1 -0
  96. package/dist/editors/index.d.ts.map +1 -1
  97. package/dist/editors/index.js +1 -0
  98. package/dist/editors/network-admin/components/DriveExplorer.d.ts.map +1 -1
  99. package/dist/editors/network-admin/components/DriveExplorer.js +36 -3
  100. package/dist/editors/network-admin/components/builders.d.ts +2 -0
  101. package/dist/editors/network-admin/components/builders.d.ts.map +1 -0
  102. package/dist/editors/network-admin/components/builders.js +4 -0
  103. package/dist/style.css +6 -0
  104. package/dist/subgraphs/builders/index.d.ts +11 -0
  105. package/dist/subgraphs/builders/index.d.ts.map +1 -0
  106. package/dist/subgraphs/builders/index.js +11 -0
  107. package/dist/subgraphs/builders/resolvers.d.ts +3 -0
  108. package/dist/subgraphs/builders/resolvers.d.ts.map +1 -0
  109. package/dist/subgraphs/builders/resolvers.js +96 -0
  110. package/dist/subgraphs/builders/schema.d.ts +3 -0
  111. package/dist/subgraphs/builders/schema.d.ts.map +1 -0
  112. package/dist/subgraphs/builders/schema.js +42 -0
  113. package/dist/subgraphs/index.d.ts +1 -0
  114. package/dist/subgraphs/index.d.ts.map +1 -1
  115. package/dist/subgraphs/index.js +1 -0
  116. package/dist/subgraphs/networks/resolvers.d.ts.map +1 -1
  117. package/dist/subgraphs/networks/resolvers.js +70 -8
  118. package/dist/subgraphs/networks/schema.d.ts.map +1 -1
  119. package/dist/subgraphs/networks/schema.js +8 -0
  120. package/dist/vite.config.d.ts.map +1 -1
  121. package/dist/vite.config.js +3 -0
  122. package/package.json +1 -1
  123. package/dist/editors/network-admin/components/CreateDocument.d.ts +0 -6
  124. package/dist/editors/network-admin/components/CreateDocument.d.ts.map +0 -1
  125. package/dist/editors/network-admin/components/CreateDocument.js +0 -18
  126. package/dist/editors/network-admin/components/DriveContents.d.ts +0 -3
  127. package/dist/editors/network-admin/components/DriveContents.d.ts.map +0 -1
  128. package/dist/editors/network-admin/components/DriveContents.js +0 -10
  129. package/dist/editors/network-admin/components/EmptyState.d.ts +0 -3
  130. package/dist/editors/network-admin/components/EmptyState.d.ts.map +0 -1
  131. package/dist/editors/network-admin/components/EmptyState.js +0 -10
  132. package/dist/editors/network-admin/components/Files.d.ts +0 -3
  133. package/dist/editors/network-admin/components/Files.d.ts.map +0 -1
  134. package/dist/editors/network-admin/components/Files.js +0 -12
  135. package/dist/editors/network-admin/components/FolderTree.d.ts +0 -6
  136. package/dist/editors/network-admin/components/FolderTree.d.ts.map +0 -1
  137. package/dist/editors/network-admin/components/FolderTree.js +0 -65
  138. package/dist/editors/network-admin/components/Folders.d.ts +0 -3
  139. package/dist/editors/network-admin/components/Folders.d.ts.map +0 -1
  140. package/dist/editors/network-admin/components/Folders.js +0 -12
  141. package/dist/editors/network-admin/components/NavigationBreadcrumbs.d.ts +0 -3
  142. package/dist/editors/network-admin/components/NavigationBreadcrumbs.d.ts.map +0 -1
  143. package/dist/editors/network-admin/components/NavigationBreadcrumbs.js +0 -6
  144. package/dist/editors/workstream/components/EditName.d.ts +0 -3
  145. package/dist/editors/workstream/components/EditName.d.ts.map +0 -1
  146. package/dist/editors/workstream/components/EditName.js +0 -31
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../document-models/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../document-models/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC"}
@@ -6,3 +6,4 @@ export { NetworkProfile } from "./network-profile/module.js";
6
6
  export { PaymentTerms } from "./payment-terms/module.js";
7
7
  export { RequestForProposals } from "./request-for-proposals/module.js";
8
8
  export { Workstream } from "./workstream/module.js";
9
+ export { Builders } from "./builders/module.js";
@@ -0,0 +1,3 @@
1
+ /** Implement your editor behavior here */
2
+ export default function Editor(): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../editors/builders/editor.tsx"],"names":[],"mappings":"AA4BA,0CAA0C;AAC1C,MAAM,CAAC,OAAO,UAAU,MAAM,4CAsR7B"}
@@ -0,0 +1,204 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { DocumentToolbar } from "@powerhousedao/design-system/connect";
3
+ import { useSelectedBuildersDocument } from "../../document-models/builders/hooks.js";
4
+ import { actions as buildersActions } from "../../document-models/builders/actions.js";
5
+ import { setSelectedNode, useParentFolderForSelectedNode, useDocumentsInSelectedDrive, useDrives, useGetDocuments, } from "@powerhousedao/reactor-browser";
6
+ import { useMemo, useCallback } from "react";
7
+ import { ObjectSetTable, PHIDInput, } from "@powerhousedao/document-engineering";
8
+ /** Implement your editor behavior here */
9
+ export default function Editor() {
10
+ const [doc, dispatch] = useSelectedBuildersDocument();
11
+ // Get the parent folder node for the currently selected node
12
+ const parentFolder = useParentFolderForSelectedNode();
13
+ // Set the selected node to the parent folder node (close the editor)
14
+ function handleClose() {
15
+ setSelectedNode(parentFolder?.id);
16
+ }
17
+ const drives = useDrives();
18
+ // Map all builder profile FileNodes from all drives with their driveId
19
+ const builderProfileNodesWithDriveId = useMemo(() => {
20
+ if (!drives)
21
+ return [];
22
+ return drives.flatMap((drive) => {
23
+ const builderProfileNodes = drive.state.global.nodes.filter((node) => node.kind === "file" &&
24
+ "documentType" in node &&
25
+ node.documentType === "powerhouse/builder-profile");
26
+ return builderProfileNodes.map((node) => ({
27
+ node,
28
+ driveId: drive.header.id,
29
+ }));
30
+ });
31
+ }, [drives]);
32
+ // Get all unique builder PHIDs from the nodes
33
+ const builderPhids = useMemo(() => {
34
+ return builderProfileNodesWithDriveId.map(({ node }) => node.id);
35
+ }, [builderProfileNodesWithDriveId]);
36
+ // Fetch all builder profile documents from all drives
37
+ const builderProfileDocuments = useGetDocuments(builderPhids);
38
+ // Create a map of PHID to document for quick lookup
39
+ const builderProfileMap = useMemo(() => {
40
+ if (!builderProfileDocuments)
41
+ return new Map();
42
+ const map = new Map();
43
+ builderProfileDocuments.forEach((doc) => {
44
+ if (doc.header.documentType === "powerhouse/builder-profile") {
45
+ map.set(doc.header.id, doc);
46
+ }
47
+ });
48
+ return map;
49
+ }, [builderProfileDocuments]);
50
+ // Helper function to get builder profile documents from all drives
51
+ const getBuilderProfiles = useCallback(() => {
52
+ return builderProfileNodesWithDriveId.map(({ node }) => {
53
+ const doc = builderProfileMap.get(node.id);
54
+ const name = doc?.state?.global?.name || node.name || node.id;
55
+ return {
56
+ id: node.id,
57
+ label: name,
58
+ value: node.id,
59
+ title: name,
60
+ };
61
+ });
62
+ }, [builderProfileNodesWithDriveId, builderProfileMap]);
63
+ // Helper function to get builder profile data by PHID from all drives
64
+ const getBuilderProfileByPhid = (phid) => {
65
+ const doc = builderProfileMap.get(phid);
66
+ if (!doc)
67
+ return null;
68
+ return {
69
+ name: doc.state.global?.name || doc.header.id,
70
+ slug: doc.state.global?.slug || doc.header.id,
71
+ icon: doc.state.global?.icon || null,
72
+ };
73
+ };
74
+ const builders = useMemo(() => {
75
+ return doc?.state.global.builders.map((phid) => ({
76
+ phid: phid,
77
+ name: getBuilderProfileByPhid(phid)?.name || "",
78
+ slug: getBuilderProfileByPhid(phid)?.slug || "",
79
+ icon: getBuilderProfileByPhid(phid)?.icon || null,
80
+ }));
81
+ }, [doc, builderProfileMap]);
82
+ const columns = useMemo(() => [
83
+ {
84
+ field: "phid",
85
+ title: "PHID",
86
+ editable: true,
87
+ align: "center",
88
+ width: 200,
89
+ onSave: (newValue, context) => {
90
+ const currentId = context.row.phid || "";
91
+ if (newValue !== currentId && newValue && currentId) {
92
+ // First remove the old agent
93
+ dispatch(buildersActions.removeBuilder({ builderPhid: currentId }));
94
+ // Then add the new agent with the new PHID
95
+ dispatch(buildersActions.addBuilder({
96
+ builderPhid: newValue,
97
+ }));
98
+ return true;
99
+ }
100
+ return false;
101
+ },
102
+ renderCellEditor: (value, onChange, context) => (_jsx(PHIDInput, { value: value || "", onChange: (newValue) => {
103
+ onChange(newValue);
104
+ }, onBlur: (e) => {
105
+ const newValue = e.target.value;
106
+ const currentValue = value || "";
107
+ // If a PHID is entered and it's different from current value
108
+ if (newValue && newValue !== currentValue) {
109
+ const builderProfile = getBuilderProfileByPhid(newValue);
110
+ const existingBuilder = builders?.find((builder) => builder?.phid === newValue);
111
+ if (!existingBuilder) {
112
+ // If we're editing an existing row (has an ID), remove the old one first
113
+ if (context.row.phid && context.row.phid !== newValue) {
114
+ dispatch(buildersActions.removeBuilder({
115
+ builderPhid: context.row.phid,
116
+ }));
117
+ }
118
+ if (builderProfile) {
119
+ // Create new agent with data from builder profile
120
+ dispatch(buildersActions.addBuilder({
121
+ builderPhid: newValue,
122
+ }));
123
+ }
124
+ else {
125
+ // Manual PHID entry - create agent with empty data that user can fill
126
+ dispatch(buildersActions.addBuilder({
127
+ builderPhid: newValue,
128
+ }));
129
+ }
130
+ }
131
+ }
132
+ }, placeholder: "Enter PHID", className: "w-full", variant: "withValueAndTitle", initialOptions: getBuilderProfiles(), fetchOptionsCallback: async (userInput) => {
133
+ const builderProfiles = getBuilderProfiles();
134
+ // Filter profiles based on user input
135
+ if (!userInput.trim()) {
136
+ return builderProfiles;
137
+ }
138
+ const filteredProfiles = builderProfiles.filter((profile) => profile.label
139
+ .toLowerCase()
140
+ .includes(userInput.toLowerCase()) ||
141
+ profile.id.toLowerCase().includes(userInput.toLowerCase()));
142
+ return filteredProfiles;
143
+ } })),
144
+ renderCell: (value) => {
145
+ if (value === "" || !value) {
146
+ return (_jsx("div", { className: "font-light italic text-gray-500 text-center", children: "+ Double-click to add new builder (enter or click outside to save)" }));
147
+ }
148
+ return _jsx("div", { className: "text-center font-mono text-sm", children: value });
149
+ },
150
+ },
151
+ {
152
+ field: "name",
153
+ title: "Builder Name",
154
+ editable: false,
155
+ align: "center",
156
+ width: 200,
157
+ renderCell: (value) => {
158
+ return _jsx("div", { className: "text-center", children: value });
159
+ },
160
+ },
161
+ {
162
+ field: "slug",
163
+ title: "Builder Slug",
164
+ editable: false,
165
+ align: "center",
166
+ width: 200,
167
+ renderCell: (value) => {
168
+ return _jsx("div", { className: "text-center", children: value });
169
+ },
170
+ },
171
+ {
172
+ field: "icon",
173
+ title: "Icon",
174
+ editable: false,
175
+ align: "center",
176
+ width: 150,
177
+ renderCell: (value, context) => {
178
+ if (!context.row.icon) {
179
+ return null;
180
+ }
181
+ return (_jsx("div", { className: "text-center", children: _jsx("img", { src: context.row.icon, alt: "Agent icon", className: "w-10 h-10 rounded-sm mx-auto object-cover", onError: (e) => {
182
+ e.currentTarget.style.display = "none";
183
+ e.currentTarget.nextElementSibling?.classList.remove("hidden");
184
+ } }) }));
185
+ },
186
+ },
187
+ ], [builders, builderProfileMap, getBuilderProfiles]);
188
+ return (_jsxs("div", { className: "w-full bg-gray-50", children: [_jsx(DocumentToolbar, { document: doc, onClose: handleClose }), _jsxs("div", { className: "p-2 max-w-4xl mx-auto min-h-screen", children: [_jsx("div", { className: "bg-white rounded-lg p-6 mb-6 shadow-sm text-center", children: _jsx("h1", { className: "text-3xl font-bold text-gray-900 mb-2", children: "Builders" }) }), _jsx("div", { className: "mt-4 bg-white", children: _jsx(ObjectSetTable, { columns: columns, data: builders || [], allowRowSelection: true, onDelete: (data) => {
189
+ if (data.length > 0) {
190
+ data.forEach((d) => {
191
+ dispatch(buildersActions.removeBuilder({ builderPhid: d.phid }));
192
+ });
193
+ }
194
+ }, onAdd: (data) => {
195
+ // Only add if we have a title (name) - PHID will be handled by the PHIDInput onChange
196
+ if (data.title) {
197
+ // Generate a temporary ID if no PHID is provided
198
+ const tempId = data.id || `temp-${Date.now()}`;
199
+ dispatch(buildersActions.addBuilder({
200
+ builderPhid: tempId,
201
+ }));
202
+ }
203
+ } }) })] })] }));
204
+ }
@@ -0,0 +1,4 @@
1
+ import type { EditorModule } from "document-model";
2
+ /** Document editor module for the Todo List document type */
3
+ export declare const Builders: EditorModule;
4
+ //# sourceMappingURL=module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../editors/builders/module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,6DAA6D;AAC7D,eAAO,MAAM,QAAQ,EAAE,YAOtB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { lazy } from "react";
2
+ /** Document editor module for the Todo List document type */
3
+ export const Builders = {
4
+ Component: lazy(() => import("./editor.js")),
5
+ documentTypes: ["powerhouse/builders"],
6
+ config: {
7
+ id: "builders-editor",
8
+ name: "builders",
9
+ },
10
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"editors.d.ts","sourceRoot":"","sources":["../../editors/editors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAOnD,eAAO,MAAM,OAAO,EAAE,YAAY,EAMjC,CAAC"}
1
+ {"version":3,"file":"editors.d.ts","sourceRoot":"","sources":["../../editors/editors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAQnD,eAAO,MAAM,OAAO,EAAE,YAAY,EAOjC,CAAC"}
@@ -3,10 +3,12 @@ import { NetworkProfileEditor } from "./network-profile/module.js";
3
3
  import { PaymentTermsEditor } from "./payment-terms/module.js";
4
4
  import { RequestForProposalsEditor } from "./request-for-proposals/module.js";
5
5
  import { WorkstreamEditor } from "./workstream/module.js";
6
+ import { Builders } from "./builders/module.js";
6
7
  export const editors = [
7
8
  NetworkAdmin,
8
9
  NetworkProfileEditor,
9
10
  PaymentTermsEditor,
10
11
  RequestForProposalsEditor,
11
12
  WorkstreamEditor,
13
+ Builders,
12
14
  ];
@@ -7,4 +7,5 @@ export { NetworkProfileEditor } from "./network-profile/module.js";
7
7
  export { PaymentTermsEditor } from "./payment-terms/module.js";
8
8
  export { RequestForProposalsEditor } from "./request-for-proposals/module.js";
9
9
  export { WorkstreamEditor } from "./workstream/module.js";
10
+ export { Builders } from "./builders/module.js";
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../editors/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../editors/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC"}
@@ -7,3 +7,4 @@ export { NetworkProfileEditor } from "./network-profile/module.js";
7
7
  export { PaymentTermsEditor } from "./payment-terms/module.js";
8
8
  export { RequestForProposalsEditor } from "./request-for-proposals/module.js";
9
9
  export { WorkstreamEditor } from "./workstream/module.js";
10
+ export { Builders } from "./builders/module.js";
@@ -1 +1 @@
1
- {"version":3,"file":"DriveExplorer.d.ts","sourceRoot":"","sources":["../../../../editors/network-admin/components/DriveExplorer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAmDlD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,2CAsmBtD"}
1
+ {"version":3,"file":"DriveExplorer.d.ts","sourceRoot":"","sources":["../../../../editors/network-admin/components/DriveExplorer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAqDlD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,2CAkpBtD"}
@@ -11,6 +11,7 @@ import { SowIcon } from "./icons/SowIcon.js";
11
11
  import { WorkstreamIcon } from "./icons/WorkstreamIcon.js";
12
12
  import { Earth } from "lucide-react";
13
13
  import { editClientInfo, editWorkstream, } from "../../../document-models/workstream/gen/creators.js";
14
+ import Builders from "./builders.js";
14
15
  const WorkstreamStatusEnums = [
15
16
  "RFP_DRAFT",
16
17
  "PREWORK_RFC",
@@ -47,7 +48,8 @@ export function DriveExplorer({ children }) {
47
48
  doc.header.documentType === "powerhouse/workstream" ||
48
49
  doc.header.documentType === "powerhouse/scopeofwork" ||
49
50
  doc.header.documentType === "powerhouse/rfp" ||
50
- doc.header.documentType === "payment-terms");
51
+ doc.header.documentType === "payment-terms" ||
52
+ doc.header.documentType === "powerhouse/builders");
51
53
  //check if network profile doc is created, set isNetworkProfileCreated to true
52
54
  const isNetworkProfileCreated = networkAdminDocuments?.some((doc) => doc.header.documentType === "powerhouse/network-profile") || false;
53
55
  // Sync global selected document with local activeDocumentId
@@ -64,6 +66,7 @@ export function DriveExplorer({ children }) {
64
66
  // Group documents by type
65
67
  const workstreamDocs = (networkAdminDocuments?.filter((doc) => doc.header.documentType === "powerhouse/workstream") ?? []);
66
68
  const networkProfileDocs = (networkAdminDocuments?.filter((doc) => doc.header.documentType === "powerhouse/network-profile") ?? []);
69
+ const [buildersDoc] = (networkAdminDocuments?.filter((doc) => doc.header.documentType === "powerhouse/builders") ?? []);
67
70
  const workstreamsNode = {
68
71
  id: "workstreams",
69
72
  title: "Workstreams",
@@ -194,7 +197,12 @@ export function DriveExplorer({ children }) {
194
197
  })),
195
198
  ],
196
199
  };
197
- return [workstreamsNode, networkInfoNode];
200
+ const buildersNode = {
201
+ id: `editor-${buildersDoc?.header.id}`,
202
+ title: "Builders",
203
+ children: [],
204
+ };
205
+ return [workstreamsNode, networkInfoNode, buildersNode];
198
206
  }, [networkAdminDocuments]);
199
207
  // Handle sidebar node selection
200
208
  const handleActiveNodeChange = useCallback((nodeId) => {
@@ -228,6 +236,7 @@ export function DriveExplorer({ children }) {
228
236
  // Handle network information display
229
237
  }
230
238
  else if (newNode.id.startsWith("editor-")) {
239
+ createBuildersDocument();
231
240
  // Extract file ID from editor-{file.id} format
232
241
  const fileId = newNode.id.replace("editor-", "");
233
242
  setSelectedNode(fileId);
@@ -252,7 +261,8 @@ export function DriveExplorer({ children }) {
252
261
  const networkProfileDoc = networkAdminDocuments?.find((doc) => doc.header.documentType === "powerhouse/network-profile");
253
262
  switch (nodeType) {
254
263
  case "workstreams":
255
- return (_jsx("div", { className: "w-full h-full p-6 overflow-auto", children: _jsxs("div", { className: "max-w-7xl mx-auto", children: [_jsxs("div", { className: "space-y-6 flex flex-col items-center justify-center mb-10", children: [_jsx("h1", { className: "text-2xl font-bold", children: "Welcome to the Network Admin" }), isNetworkProfileCreated && networkProfileDoc?.state.global.logo && (_jsxs("div", { className: "bg-white rounded-lg shadow-md border border-gray-300 p-4 max-w-lg mx-auto text-sm", children: [_jsxs("div", { className: "flex items-start justify-between gap-4", children: [networkProfileDoc?.state.global.logo ? (_jsx("img", { src: networkProfileDoc?.state.global.logo, alt: "Network Profile Logo", className: "mb-4 max-w-64 max-h-12 w-auto h-auto object-contain flex-shrink-0" })) : (_jsx("div", {})), _jsx("div", { className: "flex flex-wrap gap-2 justify-end flex-shrink-0", children: networkProfileDoc?.state.global.category.map((category) => (_jsx("span", { className: `inline-flex items-center justify-center rounded-md w-fit whitespace-nowrap shrink-0 border-2 px-2 py-0 text-sm font-extrabold ${category.toLowerCase() === "oss"
264
+ return (_jsx("div", { className: "w-full h-full p-6 overflow-auto", children: _jsxs("div", { className: "max-w-7xl mx-auto", children: [_jsxs("div", { className: "space-y-6 flex flex-col items-center justify-center mb-10", children: [_jsx("h1", { className: "text-2xl font-bold", children: "Welcome to the Network Admin" }), isNetworkProfileCreated &&
265
+ networkProfileDoc?.state.global.logo && (_jsxs("div", { className: "bg-white rounded-lg shadow-md border border-gray-300 p-4 max-w-lg mx-auto text-sm", children: [_jsxs("div", { className: "flex items-start justify-between gap-4", children: [networkProfileDoc?.state.global.logo ? (_jsx("img", { src: networkProfileDoc?.state.global.logo, alt: "Network Profile Logo", className: "mb-4 max-w-64 max-h-12 w-auto h-auto object-contain flex-shrink-0" })) : (_jsx("div", {})), _jsx("div", { className: "flex flex-wrap gap-2 justify-end flex-shrink-0", children: networkProfileDoc?.state.global.category.map((category) => (_jsx("span", { className: `inline-flex items-center justify-center rounded-md w-fit whitespace-nowrap shrink-0 border-2 px-2 py-0 text-sm font-extrabold ${category.toLowerCase() === "oss"
256
266
  ? "bg-purple-600/30 text-purple-600 border-purple-600/70"
257
267
  : category.toLowerCase() === "defi"
258
268
  ? "bg-blue-600/30 text-blue-600 border-blue-600/70"
@@ -344,6 +354,29 @@ export function DriveExplorer({ children }) {
344
354
  console.error("Failed to create document:", error);
345
355
  }
346
356
  }, [selectedDrive?.header.id, modalDocumentType]);
357
+ // Create builders document
358
+ const createBuildersDocument = useCallback(async () => {
359
+ try {
360
+ const isCreated = allDocuments?.some((doc) => doc.header.documentType === "powerhouse/builders");
361
+ if (isCreated) {
362
+ return;
363
+ }
364
+ else {
365
+ console.log("Creating builders document");
366
+ const node = await addDocument(selectedDrive?.header.id || "", "Builders", "powerhouse/builders", undefined, // creating in root folder
367
+ undefined, undefined, "builders-editor");
368
+ if (!node?.id) {
369
+ console.error("Error creating builders document");
370
+ return;
371
+ }
372
+ return node;
373
+ }
374
+ }
375
+ catch (error) {
376
+ console.error("Failed to create builders document:", error);
377
+ return null;
378
+ }
379
+ }, [selectedDrive?.header.id, allDocuments]);
347
380
  // === RENDER ===
348
381
  return (_jsx(SidebarProvider, { nodes: sidebarNodes, children: isScopeOfWorkFullView && children ? (_jsx("div", { className: "h-full w-full", children: children })) : (
349
382
  /* === NORMAL VIEW WITH SIDEBAR === */
@@ -0,0 +1,2 @@
1
+ export default function Builders(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=builders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../../../editors/network-admin/components/builders.tsx"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,QAAQ,4CAS/B"}
@@ -0,0 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export default function Builders() {
3
+ return (_jsx("div", { className: "w-full h-full p-6 overflow-auto", children: _jsx("div", { className: "max-w-7xl mx-auto", children: _jsx("h1", { className: "text-2xl font-bold", children: "Builders" }) }) }));
4
+ }
package/dist/style.css CHANGED
@@ -326,6 +326,9 @@
326
326
  .grid {
327
327
  display: grid;
328
328
  }
329
+ .hidden {
330
+ display: none;
331
+ }
329
332
  .inline-flex {
330
333
  display: inline-flex;
331
334
  }
@@ -595,6 +598,9 @@
595
598
  .rounded-md {
596
599
  border-radius: var(--radius-md);
597
600
  }
601
+ .rounded-sm {
602
+ border-radius: var(--radius-sm);
603
+ }
598
604
  .rounded-t-lg {
599
605
  border-top-left-radius: var(--radius-lg);
600
606
  border-top-right-radius: var(--radius-lg);
@@ -0,0 +1,11 @@
1
+ import { BaseSubgraph } from "@powerhousedao/reactor-api";
2
+ import type { DocumentNode } from "graphql";
3
+ export declare class BuildersSubgraph extends BaseSubgraph {
4
+ name: string;
5
+ typeDefs: DocumentNode;
6
+ resolvers: Record<string, unknown>;
7
+ additionalContextFields: {};
8
+ onSetup(): Promise<void>;
9
+ onDisconnect(): Promise<void>;
10
+ }
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../subgraphs/builders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI5C,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,IAAI,SAAc;IAClB,QAAQ,EAAE,YAAY,CAAU;IAChC,SAAS,0BAAsB;IAC/B,uBAAuB,KAAM;IACvB,OAAO;IACP,YAAY;CACnB"}
@@ -0,0 +1,11 @@
1
+ import { BaseSubgraph } from "@powerhousedao/reactor-api";
2
+ import { schema } from "./schema.js";
3
+ import { getResolvers } from "./resolvers.js";
4
+ export class BuildersSubgraph extends BaseSubgraph {
5
+ name = "builders";
6
+ typeDefs = schema;
7
+ resolvers = getResolvers(this);
8
+ additionalContextFields = {};
9
+ async onSetup() { }
10
+ async onDisconnect() { }
11
+ }
@@ -0,0 +1,3 @@
1
+ import type { BaseSubgraph } from "@powerhousedao/reactor-api";
2
+ export declare const getResolvers: (subgraph: BaseSubgraph) => Record<string, unknown>;
3
+ //# sourceMappingURL=resolvers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../../../subgraphs/builders/resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAc/D,eAAO,MAAM,YAAY,GACvB,UAAU,YAAY,KACrB,MAAM,CAAC,MAAM,EAAE,OAAO,CAoIxB,CAAC"}
@@ -0,0 +1,96 @@
1
+ import { addFile } from "document-drive";
2
+ import { setName } from "document-model";
3
+ import { actions, buildersDocumentType, } from "@powerhousedao/network-admin/document-models/builders";
4
+ export const getResolvers = (subgraph) => {
5
+ const reactor = subgraph.reactor;
6
+ return {
7
+ Query: {
8
+ Builders: async () => {
9
+ return {
10
+ getDocument: async (args) => {
11
+ const { docId, driveId } = args;
12
+ if (!docId) {
13
+ throw new Error("Document id is required");
14
+ }
15
+ if (driveId) {
16
+ const docIds = await reactor.getDocuments(driveId);
17
+ if (!docIds.includes(docId)) {
18
+ throw new Error(`Document with id ${docId} is not part of ${driveId}`);
19
+ }
20
+ }
21
+ const doc = await reactor.getDocument(docId);
22
+ return {
23
+ driveId: driveId,
24
+ ...doc,
25
+ ...doc.header,
26
+ created: doc.header.createdAtUtcIso,
27
+ lastModified: doc.header.lastModifiedAtUtcIso,
28
+ state: doc.state.global,
29
+ stateJSON: doc.state.global,
30
+ revision: doc.header?.revision?.global ?? 0,
31
+ };
32
+ },
33
+ getDocuments: async (args) => {
34
+ const { driveId } = args;
35
+ const docsIds = await reactor.getDocuments(driveId);
36
+ const docs = await Promise.all(docsIds.map(async (docId) => {
37
+ const doc = await reactor.getDocument(docId);
38
+ return {
39
+ driveId: driveId,
40
+ ...doc,
41
+ ...doc.header,
42
+ created: doc.header.createdAtUtcIso,
43
+ lastModified: doc.header.lastModifiedAtUtcIso,
44
+ state: doc.state.global,
45
+ stateJSON: doc.state.global,
46
+ revision: doc.header?.revision?.global ?? 0,
47
+ };
48
+ }));
49
+ return docs.filter((doc) => doc.header.documentType === buildersDocumentType);
50
+ },
51
+ };
52
+ },
53
+ },
54
+ Mutation: {
55
+ Builders_createDocument: async (_, args) => {
56
+ const { driveId, name } = args;
57
+ const document = await reactor.addDocument(buildersDocumentType);
58
+ if (driveId) {
59
+ await reactor.addAction(driveId, addFile({
60
+ name,
61
+ id: document.header.id,
62
+ documentType: buildersDocumentType,
63
+ }));
64
+ }
65
+ if (name) {
66
+ await reactor.addAction(document.header.id, setName(name));
67
+ }
68
+ return document.header.id;
69
+ },
70
+ Builders_addBuilder: async (_, args) => {
71
+ const { docId, input } = args;
72
+ const doc = await reactor.getDocument(docId);
73
+ if (!doc) {
74
+ throw new Error("Document not found");
75
+ }
76
+ const result = await reactor.addAction(docId, actions.addBuilder(input));
77
+ if (result.status !== "SUCCESS") {
78
+ throw new Error(result.error?.message ?? "Failed to addBuilder");
79
+ }
80
+ return true;
81
+ },
82
+ Builders_removeBuilder: async (_, args) => {
83
+ const { docId, input } = args;
84
+ const doc = await reactor.getDocument(docId);
85
+ if (!doc) {
86
+ throw new Error("Document not found");
87
+ }
88
+ const result = await reactor.addAction(docId, actions.removeBuilder(input));
89
+ if (result.status !== "SUCCESS") {
90
+ throw new Error(result.error?.message ?? "Failed to removeBuilder");
91
+ }
92
+ return true;
93
+ },
94
+ },
95
+ };
96
+ };
@@ -0,0 +1,3 @@
1
+ import type { DocumentNode } from "graphql";
2
+ export declare const schema: DocumentNode;
3
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../subgraphs/builders/schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,eAAO,MAAM,MAAM,EAAE,YAwCpB,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { gql } from "graphql-tag";
2
+ export const schema = gql `
3
+ """
4
+ Queries: Builders Document
5
+ """
6
+ type BuildersQueries {
7
+ getDocument(docId: PHID!, driveId: PHID): Builders
8
+ getDocuments(driveId: String!): [Builders!]
9
+ }
10
+
11
+ type Query {
12
+ Builders: BuildersQueries
13
+ }
14
+
15
+ """
16
+ Mutations: Builders
17
+ """
18
+ type Mutation {
19
+ Builders_createDocument(name: String!, driveId: String): String
20
+
21
+ Builders_addBuilder(
22
+ driveId: String
23
+ docId: PHID
24
+ input: Builders_AddBuilderInput
25
+ ): Int
26
+ Builders_removeBuilder(
27
+ driveId: String
28
+ docId: PHID
29
+ input: Builders_RemoveBuilderInput
30
+ ): Int
31
+ }
32
+
33
+ """
34
+ Module: Builders
35
+ """
36
+ input Builders_AddBuilderInput {
37
+ builderPhid: PHID!
38
+ }
39
+ input Builders_RemoveBuilderInput {
40
+ builderPhid: PHID!
41
+ }
42
+ `;
@@ -4,4 +4,5 @@ export * as RequestForProposalsSubgraph from "./request-for-proposals/index.js";
4
4
  export * as WorkstreamSubgraph from "./workstream/index.js";
5
5
  export * as WorkstreamsSubgraph from "./workstreams/index.js";
6
6
  export * as NetworksSubgraph from "./networks/index.js";
7
+ export * as BuildersSubgraph from "./builders/index.js";
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../subgraphs/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,sBAAsB,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,oBAAoB,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,2BAA2B,MAAM,kCAAkC,CAAC;AAChF,OAAO,KAAK,kBAAkB,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,mBAAmB,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,gBAAgB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../subgraphs/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,sBAAsB,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,oBAAoB,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,2BAA2B,MAAM,kCAAkC,CAAC;AAChF,OAAO,KAAK,kBAAkB,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,mBAAmB,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,gBAAgB,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,gBAAgB,MAAM,qBAAqB,CAAC"}
@@ -4,3 +4,4 @@ export * as RequestForProposalsSubgraph from "./request-for-proposals/index.js";
4
4
  export * as WorkstreamSubgraph from "./workstream/index.js";
5
5
  export * as WorkstreamsSubgraph from "./workstreams/index.js";
6
6
  export * as NetworksSubgraph from "./networks/index.js";
7
+ export * as BuildersSubgraph from "./builders/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../../../subgraphs/networks/resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG/D,eAAO,MAAM,YAAY,GAAI,UAAU,YAAY,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAoD3E,CAAC"}
1
+ {"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../../../subgraphs/networks/resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAK/D,eAAO,MAAM,YAAY,GAAI,UAAU,YAAY,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CA4H3E,CAAC"}