studiograph 1.3.3 → 1.3.5

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 (290) hide show
  1. package/dist/agent/orchestrator.d.ts +10 -0
  2. package/dist/agent/orchestrator.js +26 -7
  3. package/dist/agent/orchestrator.js.map +1 -1
  4. package/dist/agent/skills/sync-configuration.md +4 -29
  5. package/dist/agent/skills/sync-setup.md +2 -4
  6. package/dist/agent/tools/graph-tools.d.ts +5 -1
  7. package/dist/agent/tools/graph-tools.js +161 -9
  8. package/dist/agent/tools/graph-tools.js.map +1 -1
  9. package/dist/agent/tools/ops-tools.js +15 -126
  10. package/dist/agent/tools/ops-tools.js.map +1 -1
  11. package/dist/agent/tools/permission-tools.d.ts +15 -14
  12. package/dist/agent/tools/permission-tools.js +65 -128
  13. package/dist/agent/tools/permission-tools.js.map +1 -1
  14. package/dist/agent/tools/sync-tools.d.ts +7 -6
  15. package/dist/agent/tools/sync-tools.js +205 -178
  16. package/dist/agent/tools/sync-tools.js.map +1 -1
  17. package/dist/cli/commands/about.d.ts +13 -0
  18. package/dist/cli/commands/about.js +97 -0
  19. package/dist/cli/commands/about.js.map +1 -0
  20. package/dist/cli/commands/clone.d.ts +5 -2
  21. package/dist/cli/commands/clone.js +131 -62
  22. package/dist/cli/commands/clone.js.map +1 -1
  23. package/dist/cli/commands/connector.d.ts +2 -16
  24. package/dist/cli/commands/connector.js +32 -109
  25. package/dist/cli/commands/connector.js.map +1 -1
  26. package/dist/cli/commands/deploy.d.ts +0 -1
  27. package/dist/cli/commands/deploy.js +13 -103
  28. package/dist/cli/commands/deploy.js.map +1 -1
  29. package/dist/cli/commands/init.js +6 -93
  30. package/dist/cli/commands/init.js.map +1 -1
  31. package/dist/cli/commands/join.d.ts +3 -2
  32. package/dist/cli/commands/join.js +142 -97
  33. package/dist/cli/commands/join.js.map +1 -1
  34. package/dist/cli/commands/redeploy.js +1 -2
  35. package/dist/cli/commands/redeploy.js.map +1 -1
  36. package/dist/cli/commands/serve.d.ts +1 -3
  37. package/dist/cli/commands/serve.js +29 -109
  38. package/dist/cli/commands/serve.js.map +1 -1
  39. package/dist/cli/commands/start.js +1 -1
  40. package/dist/cli/commands/start.js.map +1 -1
  41. package/dist/cli/commands/sync-collection.d.ts +14 -0
  42. package/dist/cli/commands/sync-collection.js +366 -0
  43. package/dist/cli/commands/sync-collection.js.map +1 -0
  44. package/dist/cli/commands/sync.d.ts +4 -2
  45. package/dist/cli/commands/sync.js +529 -94
  46. package/dist/cli/commands/sync.js.map +1 -1
  47. package/dist/cli/index.js +15 -30
  48. package/dist/cli/index.js.map +1 -1
  49. package/dist/cli/setup-wizard.d.ts +0 -13
  50. package/dist/cli/setup-wizard.js +6 -81
  51. package/dist/cli/setup-wizard.js.map +1 -1
  52. package/dist/core/graph.d.ts +8 -2
  53. package/dist/core/graph.js +11 -7
  54. package/dist/core/graph.js.map +1 -1
  55. package/dist/core/types.d.ts +149 -21
  56. package/dist/core/types.js +16 -4
  57. package/dist/core/types.js.map +1 -1
  58. package/dist/core/workspace-manager.js +1 -5
  59. package/dist/core/workspace-manager.js.map +1 -1
  60. package/dist/core/workspace.d.ts +11 -4
  61. package/dist/core/workspace.js +61 -26
  62. package/dist/core/workspace.js.map +1 -1
  63. package/dist/integrations/asana.d.ts +26 -0
  64. package/dist/integrations/asana.js +77 -0
  65. package/dist/integrations/asana.js.map +1 -0
  66. package/dist/integrations/figma-local.d.ts +16 -0
  67. package/dist/integrations/figma-local.js +10 -0
  68. package/dist/integrations/figma-local.js.map +1 -0
  69. package/dist/integrations/figma.d.ts +17 -0
  70. package/dist/integrations/figma.js +16 -0
  71. package/dist/integrations/figma.js.map +1 -0
  72. package/dist/integrations/granola.d.ts +24 -0
  73. package/dist/integrations/granola.js +59 -0
  74. package/dist/integrations/granola.js.map +1 -0
  75. package/dist/integrations/linear.d.ts +14 -0
  76. package/dist/integrations/linear.js +70 -0
  77. package/dist/integrations/linear.js.map +1 -0
  78. package/dist/integrations/paper-local.d.ts +14 -0
  79. package/dist/integrations/paper-local.js +10 -0
  80. package/dist/integrations/paper-local.js.map +1 -0
  81. package/dist/integrations/paper.d.ts +2 -0
  82. package/dist/integrations/paper.js +10 -0
  83. package/dist/integrations/paper.js.map +1 -0
  84. package/dist/integrations/pipedrive.d.ts +26 -0
  85. package/dist/integrations/pipedrive.js +97 -0
  86. package/dist/integrations/pipedrive.js.map +1 -0
  87. package/dist/integrations/registry.d.ts +15 -0
  88. package/dist/integrations/registry.js +27 -0
  89. package/dist/integrations/registry.js.map +1 -0
  90. package/dist/integrations/types.d.ts +34 -0
  91. package/dist/integrations/types.js +9 -0
  92. package/dist/integrations/types.js.map +1 -0
  93. package/dist/mcp/connector-manager.d.ts +45 -31
  94. package/dist/mcp/connector-manager.js +164 -116
  95. package/dist/mcp/connector-manager.js.map +1 -1
  96. package/dist/mcp/server-oauth-provider.d.ts +56 -0
  97. package/dist/mcp/server-oauth-provider.js +138 -0
  98. package/dist/mcp/server-oauth-provider.js.map +1 -0
  99. package/dist/server/chrome/chrome.css +142 -28
  100. package/dist/server/chrome/chrome.js +46 -220
  101. package/dist/server/collab-authority.d.ts +70 -0
  102. package/dist/server/collab-authority.js +218 -0
  103. package/dist/server/collab-authority.js.map +1 -0
  104. package/dist/server/collab.d.ts +29 -0
  105. package/dist/server/collab.js +195 -0
  106. package/dist/server/collab.js.map +1 -0
  107. package/dist/server/commit-scheduler.d.ts +39 -0
  108. package/dist/server/commit-scheduler.js +113 -0
  109. package/dist/server/commit-scheduler.js.map +1 -0
  110. package/dist/server/index.d.ts +0 -2
  111. package/dist/server/index.js +166 -55
  112. package/dist/server/index.js.map +1 -1
  113. package/dist/server/routes/auth-api.d.ts +6 -0
  114. package/dist/server/routes/auth-api.js +78 -0
  115. package/dist/server/routes/auth-api.js.map +1 -1
  116. package/dist/server/routes/chat.js +4 -0
  117. package/dist/server/routes/chat.js.map +1 -1
  118. package/dist/server/routes/collab.d.ts +6 -0
  119. package/dist/server/routes/collab.js +10 -0
  120. package/dist/server/routes/collab.js.map +1 -0
  121. package/dist/server/routes/git-http.d.ts +23 -0
  122. package/dist/server/routes/git-http.js +251 -0
  123. package/dist/server/routes/git-http.js.map +1 -0
  124. package/dist/server/routes/graph-api.d.ts +6 -2
  125. package/dist/server/routes/graph-api.js +266 -82
  126. package/dist/server/routes/graph-api.js.map +1 -1
  127. package/dist/server/routes/mcp.d.ts +12 -0
  128. package/dist/server/routes/mcp.js +35 -0
  129. package/dist/server/routes/mcp.js.map +1 -0
  130. package/dist/server/routes/permissions-api.d.ts +6 -4
  131. package/dist/server/routes/permissions-api.js +53 -167
  132. package/dist/server/routes/permissions-api.js.map +1 -1
  133. package/dist/server/routes/sync-api.d.ts +26 -0
  134. package/dist/server/routes/sync-api.js +757 -0
  135. package/dist/server/routes/sync-api.js.map +1 -0
  136. package/dist/server/routes/ws.d.ts +9 -0
  137. package/dist/server/routes/ws.js +131 -0
  138. package/dist/server/routes/ws.js.map +1 -0
  139. package/dist/server/session-manager.d.ts +40 -0
  140. package/dist/server/session-manager.js +132 -0
  141. package/dist/server/session-manager.js.map +1 -0
  142. package/dist/server/ws-hub.d.ts +130 -0
  143. package/dist/server/ws-hub.js +250 -0
  144. package/dist/server/ws-hub.js.map +1 -0
  145. package/dist/server/yjs-manager.d.ts +59 -0
  146. package/dist/server/yjs-manager.js +194 -0
  147. package/dist/server/yjs-manager.js.map +1 -0
  148. package/dist/services/auth-service.d.ts +74 -0
  149. package/dist/services/auth-service.js +286 -6
  150. package/dist/services/auth-service.js.map +1 -1
  151. package/dist/services/git.d.ts +6 -0
  152. package/dist/services/git.js +32 -2
  153. package/dist/services/git.js.map +1 -1
  154. package/dist/services/sync/collection-sync.d.ts +73 -0
  155. package/dist/services/sync/collection-sync.js +726 -0
  156. package/dist/services/sync/collection-sync.js.map +1 -0
  157. package/dist/services/sync/commit.js +5 -20
  158. package/dist/services/sync/commit.js.map +1 -1
  159. package/dist/services/sync/data-fetcher.d.ts +31 -0
  160. package/dist/services/sync/data-fetcher.js +12 -0
  161. package/dist/services/sync/data-fetcher.js.map +1 -0
  162. package/dist/services/sync/entity-refresh.d.ts +30 -0
  163. package/dist/services/sync/entity-refresh.js +275 -0
  164. package/dist/services/sync/entity-refresh.js.map +1 -0
  165. package/dist/services/sync/frontmatter-extractor.d.ts +2 -2
  166. package/dist/services/sync/frontmatter-extractor.js +1 -2
  167. package/dist/services/sync/frontmatter-extractor.js.map +1 -1
  168. package/dist/services/sync/graph-match.js +1 -1
  169. package/dist/services/sync/graph-match.js.map +1 -1
  170. package/dist/services/sync/mcp-client.d.ts +16 -4
  171. package/dist/services/sync/mcp-client.js +34 -20
  172. package/dist/services/sync/mcp-client.js.map +1 -1
  173. package/dist/services/sync/prompts.js +1 -1
  174. package/dist/services/sync/reconciler.js +1 -2
  175. package/dist/services/sync/reconciler.js.map +1 -1
  176. package/dist/services/sync/rest-client.d.ts +40 -0
  177. package/dist/services/sync/rest-client.js +100 -0
  178. package/dist/services/sync/rest-client.js.map +1 -0
  179. package/dist/services/sync/source-config.d.ts +23 -1
  180. package/dist/services/sync/source-config.js +112 -16
  181. package/dist/services/sync/source-config.js.map +1 -1
  182. package/dist/services/sync/source-definitions/asana.d.ts +3 -4
  183. package/dist/services/sync/source-definitions/asana.js +7 -13
  184. package/dist/services/sync/source-definitions/asana.js.map +1 -1
  185. package/dist/services/sync/source-definitions/definitions.d.ts +5 -18
  186. package/dist/services/sync/source-definitions/definitions.js +4 -22
  187. package/dist/services/sync/source-definitions/definitions.js.map +1 -1
  188. package/dist/services/sync/source-definitions/granola.d.ts +1 -1
  189. package/dist/services/sync/source-definitions/granola.js +11 -18
  190. package/dist/services/sync/source-definitions/granola.js.map +1 -1
  191. package/dist/services/sync/source-definitions/linear.d.ts +1 -1
  192. package/dist/services/sync/source-definitions/linear.js +17 -15
  193. package/dist/services/sync/source-definitions/linear.js.map +1 -1
  194. package/dist/services/sync/source-definitions/pipedrive.d.ts +1 -1
  195. package/dist/services/sync/source-definitions/pipedrive.js +6 -15
  196. package/dist/services/sync/source-definitions/pipedrive.js.map +1 -1
  197. package/dist/services/sync/staging.js +1 -2
  198. package/dist/services/sync/staging.js.map +1 -1
  199. package/dist/services/sync/structured-extractor.d.ts +8 -2
  200. package/dist/services/sync/structured-extractor.js +243 -35
  201. package/dist/services/sync/structured-extractor.js.map +1 -1
  202. package/dist/services/sync/types.d.ts +192 -23
  203. package/dist/services/sync/unstructured-extractor.d.ts +1 -3
  204. package/dist/services/sync/unstructured-extractor.js +2 -14
  205. package/dist/services/sync/unstructured-extractor.js.map +1 -1
  206. package/dist/utils/git.d.ts +33 -20
  207. package/dist/utils/git.js +119 -62
  208. package/dist/utils/git.js.map +1 -1
  209. package/dist/utils/preflight.d.ts +1 -15
  210. package/dist/utils/preflight.js +1 -35
  211. package/dist/utils/preflight.js.map +1 -1
  212. package/dist/web/_app/immutable/assets/0.CupILLQs.css +1 -0
  213. package/dist/web/_app/immutable/assets/3.CtJi4Cy9.css +1 -0
  214. package/dist/web/_app/immutable/assets/5.CydFyZSu.css +1 -0
  215. package/dist/web/_app/immutable/assets/6.kqeOo0OW.css +1 -0
  216. package/dist/web/_app/immutable/assets/7.CseIx7qQ.css +1 -0
  217. package/dist/web/_app/immutable/assets/8.BYpFDZHK.css +1 -0
  218. package/dist/web/_app/immutable/assets/AppShell.Ch_ef9hJ.css +1 -0
  219. package/dist/web/_app/immutable/assets/ChatPanel.CP-_8txt.css +1 -0
  220. package/dist/web/_app/immutable/chunks/0oxpWEgM.js +1 -0
  221. package/dist/web/_app/immutable/chunks/B1y7Wy5O.js +18 -0
  222. package/dist/web/_app/immutable/chunks/BBLgaWN8.js +1 -0
  223. package/dist/web/_app/immutable/chunks/BCB5cYCz.js +2 -0
  224. package/dist/web/_app/immutable/chunks/BNwaTAEi.js +1 -0
  225. package/dist/web/_app/immutable/chunks/{aosHekRC.js → BPUy9_sS.js} +1 -1
  226. package/dist/web/_app/immutable/chunks/BVBRzmeQ.js +7 -0
  227. package/dist/web/_app/immutable/chunks/{CUzqHQY_.js → BXuvR8Ks.js} +2 -1
  228. package/dist/web/_app/immutable/chunks/BeBar3OL.js +1 -0
  229. package/dist/web/_app/immutable/chunks/BuOTIbJu.js +1 -0
  230. package/dist/web/_app/immutable/chunks/CLFba8FK.js +5 -0
  231. package/dist/web/_app/immutable/chunks/CQCkXCml.js +1 -0
  232. package/dist/web/_app/immutable/chunks/CR70O-Zc.js +64 -0
  233. package/dist/web/_app/immutable/chunks/ChURX7q7.js +1 -0
  234. package/dist/web/_app/immutable/chunks/Cs5oz2oJ.js +5 -0
  235. package/dist/web/_app/immutable/chunks/Cs_ROD7H.js +2 -0
  236. package/dist/web/_app/immutable/chunks/D2aTbzFm.js +3 -0
  237. package/dist/web/_app/immutable/chunks/DCGSm8Hl.js +1 -0
  238. package/dist/web/_app/immutable/chunks/DMQKkbyp.js +1 -0
  239. package/dist/web/_app/immutable/chunks/DP09rP34.js +2 -0
  240. package/dist/web/_app/immutable/chunks/DiP47fAp.js +1 -0
  241. package/dist/web/_app/immutable/chunks/DvPliCZE.js +27 -0
  242. package/dist/web/_app/immutable/chunks/O0fx2ss6.js +1 -0
  243. package/dist/web/_app/immutable/chunks/mLOCL_1Z.js +1 -0
  244. package/dist/web/_app/immutable/chunks/xBRYfpah.js +1 -0
  245. package/dist/web/_app/immutable/entry/app.BcjicA1n.js +2 -0
  246. package/dist/web/_app/immutable/entry/start.Bwjb_6uL.js +1 -0
  247. package/dist/web/_app/immutable/nodes/0.p2-jprGE.js +10 -0
  248. package/dist/web/_app/immutable/nodes/1.DU93aLWG.js +1 -0
  249. package/dist/web/_app/immutable/nodes/2.cvPHG4LO.js +1 -0
  250. package/dist/web/_app/immutable/nodes/3.CTUfmgsr.js +11 -0
  251. package/dist/web/_app/immutable/nodes/{5.BBpmYkAu.js → 4.yO3SDYpr.js} +2 -2
  252. package/dist/web/_app/immutable/nodes/5.BQ_D1Eea.js +2 -0
  253. package/dist/web/_app/immutable/nodes/6.ljQTLrU2.js +1 -0
  254. package/dist/web/_app/immutable/nodes/7.C_LqUu_m.js +2 -0
  255. package/dist/web/_app/immutable/nodes/8.BA0tZS13.js +1 -0
  256. package/dist/web/_app/version.json +1 -1
  257. package/dist/web/index.html +10 -12
  258. package/package.json +12 -2
  259. package/dist/web/_app/immutable/assets/0.CDbX4Cwz.css +0 -1
  260. package/dist/web/_app/immutable/assets/3.BJy7pVXi.css +0 -1
  261. package/dist/web/_app/immutable/assets/4.Ad16uh9o.css +0 -1
  262. package/dist/web/_app/immutable/assets/6.Bm2i7O0j.css +0 -1
  263. package/dist/web/_app/immutable/assets/AppShell.D0rmbdqF.css +0 -1
  264. package/dist/web/_app/immutable/assets/ChatPanel.RFD5GGYI.css +0 -1
  265. package/dist/web/_app/immutable/assets/editor.CPAf2SRV.css +0 -1
  266. package/dist/web/_app/immutable/chunks/479TgXB4.js +0 -1
  267. package/dist/web/_app/immutable/chunks/4QY4j-jX.js +0 -1
  268. package/dist/web/_app/immutable/chunks/BFb0g4TQ.js +0 -64
  269. package/dist/web/_app/immutable/chunks/Bopa-Ask.js +0 -1
  270. package/dist/web/_app/immutable/chunks/COwytaCP.js +0 -1
  271. package/dist/web/_app/immutable/chunks/DEJSHbC3.js +0 -1
  272. package/dist/web/_app/immutable/chunks/DNywhIex.js +0 -23
  273. package/dist/web/_app/immutable/chunks/DTUXhwEY.js +0 -1
  274. package/dist/web/_app/immutable/chunks/DThXpa0U.js +0 -6
  275. package/dist/web/_app/immutable/chunks/Dh_H7Owr.js +0 -18
  276. package/dist/web/_app/immutable/chunks/Dml-u95b.js +0 -2
  277. package/dist/web/_app/immutable/chunks/DnlgZ_Tk.js +0 -5
  278. package/dist/web/_app/immutable/chunks/DtVH--hH.js +0 -6
  279. package/dist/web/_app/immutable/chunks/DvKVaE7M.js +0 -1
  280. package/dist/web/_app/immutable/chunks/MbiSz-iW.js +0 -2
  281. package/dist/web/_app/immutable/chunks/bSAC733J.js +0 -1
  282. package/dist/web/_app/immutable/entry/app.BvodXQQ0.js +0 -2
  283. package/dist/web/_app/immutable/entry/start.Bkui3Kyw.js +0 -1
  284. package/dist/web/_app/immutable/nodes/0.DfbCOBhn.js +0 -2
  285. package/dist/web/_app/immutable/nodes/1.vtxUGpe6.js +0 -1
  286. package/dist/web/_app/immutable/nodes/2.Cq29oW4h.js +0 -1
  287. package/dist/web/_app/immutable/nodes/3.SquslPZy.js +0 -1
  288. package/dist/web/_app/immutable/nodes/4.COV8FR8b.js +0 -16
  289. package/dist/web/_app/immutable/nodes/6.BBbh6z9I.js +0 -2
  290. /package/dist/web/_app/immutable/assets/{5.BhKgiXd2.css → 4.BhKgiXd2.css} +0 -0
@@ -7,6 +7,7 @@
7
7
  import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, unlinkSync } from 'fs';
8
8
  import { join } from 'path';
9
9
  import { ENTITY_SCHEMAS } from '../../core/validation.js';
10
+ import { SOURCE_DEFINITIONS } from './source-definitions/definitions.js';
10
11
  export class SourceConfigManager {
11
12
  sourcesDir;
12
13
  constructor(workspacePath) {
@@ -171,14 +172,123 @@ export class SourceConfigManager {
171
172
  }
172
173
  return fieldMap;
173
174
  }
175
+ // ── New-format source definitions (collection-scoped sync) ────────────────
176
+ /**
177
+ * Get a new-format source definition by name.
178
+ * Discriminates by presence of `entities` key (new) vs `entity_mappings` (old).
179
+ * Returns null if not found or if it's an old-format config.
180
+ */
181
+ getDefinition(name) {
182
+ // On-disk source definitions take priority
183
+ const path = join(this.sourcesDir, `${name}.json`);
184
+ if (existsSync(path)) {
185
+ try {
186
+ const raw = JSON.parse(readFileSync(path, 'utf-8'));
187
+ if (raw.entities && typeof raw.entities === 'object' && !Array.isArray(raw.entities)) {
188
+ return raw;
189
+ }
190
+ }
191
+ catch {
192
+ // Fall through to built-in templates
193
+ }
194
+ }
195
+ // Fall back to built-in templates from the integration registry
196
+ return SOURCE_DEFINITIONS[name] ?? null;
197
+ }
198
+ /**
199
+ * Save a new-format source definition.
200
+ */
201
+ saveDefinition(name, def) {
202
+ mkdirSync(this.sourcesDir, { recursive: true });
203
+ const path = join(this.sourcesDir, `${name}.json`);
204
+ writeFileSync(path, JSON.stringify(def, null, 2) + '\n', 'utf-8');
205
+ }
206
+ /**
207
+ * Validate a new-format source definition.
208
+ */
209
+ validateDefinition(def) {
210
+ const errors = [];
211
+ if (!def.connector || typeof def.connector !== 'string') {
212
+ errors.push('connector is required and must be a string');
213
+ }
214
+ if (!def.entities || typeof def.entities !== 'object' || Array.isArray(def.entities)) {
215
+ errors.push('entities is required and must be an object');
216
+ return { valid: false, errors };
217
+ }
218
+ const entityTypes = Object.keys(def.entities);
219
+ if (entityTypes.length === 0) {
220
+ errors.push('entities must have at least one entry');
221
+ }
222
+ let primaryCount = 0;
223
+ for (const [typeName, config] of Object.entries(def.entities)) {
224
+ const prefix = `entities.${typeName}`;
225
+ if (config.primary)
226
+ primaryCount++;
227
+ if (!config.field_map || typeof config.field_map !== 'object') {
228
+ errors.push(`${prefix}.field_map is required`);
229
+ }
230
+ if (config.derive_from && config.primary) {
231
+ errors.push(`${prefix} cannot be both primary and derived`);
232
+ }
233
+ if (config.dedupe_field && typeof config.dedupe_field !== 'string') {
234
+ errors.push(`${prefix}.dedupe_field must be a string`);
235
+ }
236
+ }
237
+ if (primaryCount === 0 && entityTypes.length > 0) {
238
+ // If only one entity type and no primary set, that's ok (implicit primary)
239
+ if (entityTypes.length > 1) {
240
+ errors.push('At least one entity type must be marked as primary');
241
+ }
242
+ }
243
+ return { valid: errors.length === 0, errors };
244
+ }
245
+ // ── Template conversion ──────────────────────────────────────────────────────
246
+ /**
247
+ * Convert old-format EntityMapping[] (from built-in source-definitions/*.ts)
248
+ * to new-format SourceDefinition (with `entities` record).
249
+ */
250
+ static convertLegacyTemplate(connector, mappings) {
251
+ const entities = {};
252
+ let isFirstPrimary = true;
253
+ for (const m of mappings) {
254
+ const config = {
255
+ field_map: m.field_map ?? {},
256
+ };
257
+ if (isFirstPrimary) {
258
+ config.primary = true;
259
+ isFirstPrimary = false;
260
+ }
261
+ if (m.status_map)
262
+ config.status_map = m.status_map;
263
+ if (m.id_from)
264
+ config.id_from = m.id_from;
265
+ if (m.content_from)
266
+ config.content_from = m.content_from;
267
+ if (m.fetch_details)
268
+ config.fetch_details = m.fetch_details;
269
+ if (m.list_limit)
270
+ config.list_limit = m.list_limit;
271
+ if (m.list_params)
272
+ config.list_params = m.list_params;
273
+ if (m.extraction_mode && m.extraction_mode !== 'structured') {
274
+ config.extraction_mode = m.extraction_mode;
275
+ }
276
+ if (m.directory_patterns)
277
+ config.directory_patterns = m.directory_patterns;
278
+ if (m.list_tool)
279
+ config.list_tool = m.list_tool;
280
+ if (m.read_tool)
281
+ config.read_tool = m.read_tool;
282
+ entities[m.entity_type] = config;
283
+ }
284
+ return { connector, entities };
285
+ }
174
286
  validateMapping(m, prefix) {
175
287
  const errors = [];
176
288
  if (!m.source_type)
177
289
  errors.push(`${prefix}.source_type is required`);
178
290
  if (!m.entity_type)
179
291
  errors.push(`${prefix}.entity_type is required`);
180
- if (!m.target_repo)
181
- errors.push(`${prefix}.target_repo is required`);
182
292
  if (m.extraction_mode !== 'structured' && m.extraction_mode !== 'unstructured' && m.extraction_mode !== 'frontmatter') {
183
293
  errors.push(`${prefix}.extraction_mode must be 'structured', 'unstructured', or 'frontmatter'`);
184
294
  }
@@ -188,20 +298,6 @@ export class SourceConfigManager {
188
298
  if ((m.extraction_mode === 'unstructured' || m.extraction_mode === 'frontmatter') && (!m.directory_patterns || m.directory_patterns.length === 0)) {
189
299
  errors.push(`${prefix}.directory_patterns is required for ${m.extraction_mode} extraction`);
190
300
  }
191
- if (m.co_locate) {
192
- if (!m.co_locate.parent_field || typeof m.co_locate.parent_field !== 'string') {
193
- errors.push(`${prefix}.co_locate.parent_field must be a string`);
194
- }
195
- if (!m.co_locate.subfolder || typeof m.co_locate.subfolder !== 'string') {
196
- errors.push(`${prefix}.co_locate.subfolder must be a string`);
197
- }
198
- if (m.co_locate.parent_field && m.field_map) {
199
- const fieldMapTargets = Object.values(m.field_map).map(v => typeof v === 'string' ? v : v.field);
200
- if (!fieldMapTargets.includes(m.co_locate.parent_field)) {
201
- errors.push(`${prefix}.co_locate.parent_field "${m.co_locate.parent_field}" is not a target in field_map — the parent field may not be available`);
202
- }
203
- }
204
- }
205
301
  return errors;
206
302
  }
207
303
  }
@@ -1 +1 @@
1
- {"version":3,"file":"source-config.js","sourceRoot":"","sources":["../../../src/services/sync/source-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"source-config.js","sourceRoot":"","sources":["../../../src/services/sync/source-config.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,10 @@
1
- import type { SourceDefinition } from './definitions.js';
1
+ import type { SourceDefinition } from '../types.js';
2
2
  /**
3
3
  * Asana source definition.
4
4
  *
5
5
  * IMPORTANT: Asana's search tools require a `workspace` parameter.
6
- * After running `studiograph source setup asana`, edit the source config
7
- * at .studiograph/sources/asana.json to add list_params with your
8
- * workspace GID to each mapping:
6
+ * After setup, edit the source config to add list_params with your
7
+ * workspace GID to each entity config:
9
8
  *
10
9
  * "list_params": { "workspace": "YOUR_WORKSPACE_GID" }
11
10
  *
@@ -2,9 +2,8 @@
2
2
  * Asana source definition.
3
3
  *
4
4
  * IMPORTANT: Asana's search tools require a `workspace` parameter.
5
- * After running `studiograph source setup asana`, edit the source config
6
- * at .studiograph/sources/asana.json to add list_params with your
7
- * workspace GID to each mapping:
5
+ * After setup, edit the source config to add list_params with your
6
+ * workspace GID to each entity config:
8
7
  *
9
8
  * "list_params": { "workspace": "YOUR_WORKSPACE_GID" }
10
9
  *
@@ -13,12 +12,10 @@
13
12
  */
14
13
  export const asana = {
15
14
  connector: 'asana',
16
- defaultMappings: [
17
- {
15
+ entities: {
16
+ task: {
18
17
  source_type: 'task',
19
- entity_type: 'task',
20
- target_repo: 'tasks',
21
- extraction_mode: 'structured',
18
+ primary: true,
22
19
  id_from: 'name',
23
20
  content_from: 'notes',
24
21
  fetch_details: true,
@@ -29,11 +26,8 @@ export const asana = {
29
26
  'memberships[0].project.name': { field: 'project', transform: 'wikilink' },
30
27
  },
31
28
  },
32
- {
29
+ project: {
33
30
  source_type: 'project',
34
- entity_type: 'project',
35
- target_repo: 'projects',
36
- extraction_mode: 'structured',
37
31
  id_from: 'name',
38
32
  content_from: 'notes',
39
33
  field_map: {
@@ -43,6 +37,6 @@ export const asana = {
43
37
  'members': { field: 'team', transform: 'wikilink-array', subfield: 'name' },
44
38
  },
45
39
  },
46
- ],
40
+ },
47
41
  };
48
42
  //# sourceMappingURL=asana.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"asana.js","sourceRoot":"","sources":["../../../../src/services/sync/source-definitions/asana.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,KAAK,GAAqB;IACrC,SAAS,EAAE,OAAO;IAClB,eAAe,EAAE;QACf;YACE,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,OAAO;YACpB,eAAe,EAAE,YAAY;YAE7B,OAAO,EAAE,MAAM;YACf,YAAY,EAAE,OAAO;YACrB,aAAa,EAAE,IAAI;YACnB,SAAS,EAAE;gBACT,MAAM,EAAE,MAAM;gBACd,eAAe,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE;gBAC7D,QAAQ,EAAE,UAAU;gBACpB,6BAA6B,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE;aAC3E;SACF;QACD;YACE,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,UAAU;YACvB,eAAe,EAAE,YAAY;YAE7B,OAAO,EAAE,MAAM;YACf,YAAY,EAAE,OAAO;YACrB,SAAS,EAAE;gBACT,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,YAAY;gBACxB,QAAQ,EAAE,mBAAmB;gBAC7B,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE;aAC5E;SACF;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"asana.js","sourceRoot":"","sources":["../../../../src/services/sync/source-definitions/asana.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,KAAK,GAAqB;IACrC,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,WAAW,EAAE,MAAM;YACnB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,MAAM;YACf,YAAY,EAAE,OAAO;YACrB,aAAa,EAAE,IAAI;YACnB,SAAS,EAAE;gBACT,MAAM,EAAE,MAAM;gBACd,eAAe,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE;gBAC7D,QAAQ,EAAE,UAAU;gBACpB,6BAA6B,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE;aAC3E;SACF;QACD,OAAO,EAAE;YACP,WAAW,EAAE,SAAS;YACtB,OAAO,EAAE,MAAM;YACf,YAAY,EAAE,OAAO;YACrB,SAAS,EAAE;gBACT,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,YAAY;gBACxB,QAAQ,EAAE,mBAAmB;gBAC7B,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE;aAC5E;SACF;KACF;CACF,CAAC"}
@@ -1,21 +1,8 @@
1
1
  /**
2
- * Sync source definitions — default and example entity mappings.
2
+ * Sync source definitions — derived from integration registry.
3
3
  *
4
- * These define how external data maps to Studiograph entities during
5
- * `studiograph source setup`. Separated from MCP connector definitions
6
- * because connectors and sync sources serve different purposes:
7
- * - Connectors: agent queries external tools (Figma, Slack, Linear)
8
- * - Sources: extract and map external data into the knowledge graph
9
- *
10
- * Individual source definitions live in separate files for modularity.
4
+ * This file re-exports SOURCE_DEFINITIONS for backward compatibility.
5
+ * The actual definitions live in src/integrations/<name>.ts.
11
6
  */
12
- import type { EntityMapping } from '../types.js';
13
- export interface SourceDefinition {
14
- /** Must match a connector name in ~/.studiograph/connectors/ */
15
- connector: string;
16
- /** Default entity mappings applied during `source setup` */
17
- defaultMappings?: EntityMapping[];
18
- /** Example mappings written to a .template file */
19
- exampleMappings?: EntityMapping[];
20
- }
21
- export declare const SOURCE_DEFINITIONS: Record<string, SourceDefinition>;
7
+ export { SOURCE_DEFINITIONS } from '../../../integrations/registry.js';
8
+ export type { SourceDefinition } from '../types.js';
@@ -1,26 +1,8 @@
1
1
  /**
2
- * Sync source definitions — default and example entity mappings.
2
+ * Sync source definitions — derived from integration registry.
3
3
  *
4
- * These define how external data maps to Studiograph entities during
5
- * `studiograph source setup`. Separated from MCP connector definitions
6
- * because connectors and sync sources serve different purposes:
7
- * - Connectors: agent queries external tools (Figma, Slack, Linear)
8
- * - Sources: extract and map external data into the knowledge graph
9
- *
10
- * Individual source definitions live in separate files for modularity.
4
+ * This file re-exports SOURCE_DEFINITIONS for backward compatibility.
5
+ * The actual definitions live in src/integrations/<name>.ts.
11
6
  */
12
- import { pipedrive } from './pipedrive.js';
13
- import { granola } from './granola.js';
14
- import { obsidian } from './obsidian.js';
15
- import { linear } from './linear.js';
16
- import { asana } from './asana.js';
17
- import { gdrive } from './gdrive.js';
18
- export const SOURCE_DEFINITIONS = {
19
- pipedrive,
20
- granola,
21
- obsidian,
22
- linear,
23
- asana,
24
- gdrive,
25
- };
7
+ export { SOURCE_DEFINITIONS } from '../../../integrations/registry.js';
26
8
  //# sourceMappingURL=definitions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../../src/services/sync/source-definitions/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAWrC,MAAM,CAAC,MAAM,kBAAkB,GAAqC;IAClE,SAAS;IACT,OAAO;IACP,QAAQ;IACR,MAAM;IACN,KAAK;IACL,MAAM;CACP,CAAC"}
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../../src/services/sync/source-definitions/definitions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC"}
@@ -1,2 +1,2 @@
1
- import type { SourceDefinition } from './definitions.js';
1
+ import type { SourceDefinition } from '../types.js';
2
2
  export declare const granola: SourceDefinition;
@@ -1,28 +1,21 @@
1
1
  export const granola = {
2
2
  connector: 'granola',
3
- defaultMappings: [
4
- {
3
+ filter_fields: [],
4
+ entities: {
5
+ meeting: {
5
6
  source_type: 'document',
6
- entity_type: 'meeting',
7
- target_repo: 'meetings',
8
- extraction_mode: 'structured',
9
- id_from: 'title',
7
+ primary: true,
8
+ list_tool: 'list_meetings',
9
+ read_tool: 'get_meetings',
10
+ id_from: 'id',
10
11
  content_from: 'markdown',
11
- fetch_details: true,
12
- list_limit: 1000,
12
+ fetch_details: false,
13
13
  field_map: {
14
14
  'title': 'name',
15
- 'metadata.google_calendar_event.start.dateTime': {
16
- field: 'date',
17
- transform: 'date-iso',
18
- },
19
- 'metadata.people.attendees': {
20
- field: 'attendees',
21
- transform: 'wikilink-array',
22
- subfield: 'details.person.name.fullName',
23
- },
15
+ 'date': { field: 'date', transform: 'date-iso' },
16
+ 'attendees': { field: 'attendees', transform: 'wikilink-array', subfield: 'name' },
24
17
  },
25
18
  },
26
- ],
19
+ },
27
20
  };
28
21
  //# sourceMappingURL=granola.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"granola.js","sourceRoot":"","sources":["../../../../src/services/sync/source-definitions/granola.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,OAAO,GAAqB;IACvC,SAAS,EAAE,SAAS;IACpB,eAAe,EAAE;QACf;YACE,WAAW,EAAE,UAAU;YACvB,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,UAAU;YACvB,eAAe,EAAE,YAAY;YAE7B,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,UAAU;YACxB,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE;gBACT,OAAO,EAAE,MAAM;gBACf,+CAA+C,EAAE;oBAC/C,KAAK,EAAE,MAAM;oBACb,SAAS,EAAE,UAAU;iBACtB;gBACD,2BAA2B,EAAE;oBAC3B,KAAK,EAAE,WAAW;oBAClB,SAAS,EAAE,gBAAgB;oBAC3B,QAAQ,EAAE,8BAA8B;iBACzC;aACF;SACF;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"granola.js","sourceRoot":"","sources":["../../../../src/services/sync/source-definitions/granola.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,OAAO,GAAqB;IACvC,SAAS,EAAE,SAAS;IACpB,aAAa,EAAE,EAAE;IACjB,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,WAAW,EAAE,UAAU;YACvB,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,eAAe;YAC1B,SAAS,EAAE,cAAc;YACzB,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,UAAU;YACxB,aAAa,EAAE,KAAK;YACpB,SAAS,EAAE;gBACT,OAAO,EAAE,MAAM;gBACf,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE;gBAChD,WAAW,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE;aACnF;SACF;KACF;CACF,CAAC"}
@@ -1,2 +1,2 @@
1
- import type { SourceDefinition } from './definitions.js';
1
+ import type { SourceDefinition } from '../types.js';
2
2
  export declare const linear: SourceDefinition;
@@ -1,24 +1,29 @@
1
1
  export const linear = {
2
2
  connector: 'linear',
3
- defaultMappings: [
3
+ filter_fields: [
4
4
  {
5
+ key: 'project',
6
+ label: 'Project',
7
+ placeholder: 'e.g. Studiograph Core',
8
+ type: 'text',
9
+ mode: 'client',
10
+ fields: ['project', 'name'],
11
+ op: 'contains',
12
+ },
13
+ ],
14
+ entities: {
15
+ task: {
5
16
  source_type: 'issue',
6
- entity_type: 'task',
7
- target_repo: 'projects',
8
- extraction_mode: 'structured',
17
+ primary: true,
9
18
  id_from: 'title',
10
19
  content_from: 'description',
11
20
  fetch_details: true,
12
- co_locate: {
13
- parent_field: 'project',
14
- subfolder: 'tasks',
15
- },
16
21
  field_map: {
17
22
  'title': 'name',
18
23
  'assignee': { field: 'assignee', transform: 'wikilink' },
19
24
  'dueDate': 'due_date',
20
25
  'project': { field: 'project', transform: 'wikilink' },
21
- 'labels': 'tags',
26
+ 'labels': { field: 'tags', transform: 'direct', subfield: 'name' },
22
27
  'url': 'url',
23
28
  'identifier': 'external_id',
24
29
  },
@@ -32,18 +37,15 @@ export const linear = {
32
37
  'Duplicate': 'cancelled',
33
38
  },
34
39
  },
35
- {
40
+ project: {
36
41
  source_type: 'project',
37
- entity_type: 'project',
38
- target_repo: 'projects',
39
- extraction_mode: 'structured',
40
42
  id_from: 'name',
41
43
  content_from: 'description',
42
44
  field_map: {
43
45
  'name': 'name',
44
46
  'startDate': 'start_date',
45
47
  'targetDate': 'target_completion',
46
- 'lead.name': { field: 'team', transform: 'wikilink-array' },
48
+ 'lead': { field: 'lead', transform: 'wikilink' },
47
49
  'url': 'url',
48
50
  },
49
51
  status_map: {
@@ -55,6 +57,6 @@ export const linear = {
55
57
  'Canceled': 'archived',
56
58
  },
57
59
  },
58
- ],
60
+ },
59
61
  };
60
62
  //# sourceMappingURL=linear.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"linear.js","sourceRoot":"","sources":["../../../../src/services/sync/source-definitions/linear.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAqB;IACtC,SAAS,EAAE,QAAQ;IACnB,eAAe,EAAE;QACf;YACE,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,UAAU;YACvB,eAAe,EAAE,YAAY;YAE7B,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,aAAa;YAC3B,aAAa,EAAE,IAAI;YACnB,SAAS,EAAE;gBACT,YAAY,EAAE,SAAS;gBACvB,SAAS,EAAE,OAAO;aACnB;YACD,SAAS,EAAE;gBACT,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE;gBACxD,SAAS,EAAE,UAAU;gBACrB,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE;gBACtD,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,KAAK;gBACZ,YAAY,EAAE,aAAa;aAC5B;YACD,UAAU,EAAE;gBACV,SAAS,EAAE,MAAM;gBACjB,MAAM,EAAE,MAAM;gBACd,aAAa,EAAE,aAAa;gBAC5B,WAAW,EAAE,aAAa;gBAC1B,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,WAAW;gBACvB,WAAW,EAAE,WAAW;aACzB;SACF;QACD;YACE,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,UAAU;YACvB,eAAe,EAAE,YAAY;YAE7B,OAAO,EAAE,MAAM;YACf,YAAY,EAAE,aAAa;YAC3B,SAAS,EAAE;gBACT,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,YAAY;gBACzB,YAAY,EAAE,mBAAmB;gBACjC,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAC3D,KAAK,EAAE,KAAK;aACb;YACD,UAAU,EAAE;gBACV,SAAS,EAAE,UAAU;gBACrB,SAAS,EAAE,UAAU;gBACrB,SAAS,EAAE,QAAQ;gBACnB,QAAQ,EAAE,SAAS;gBACnB,WAAW,EAAE,WAAW;gBACxB,UAAU,EAAE,UAAU;aACvB;SACF;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"linear.js","sourceRoot":"","sources":["../../../../src/services/sync/source-definitions/linear.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAqB;IACtC,SAAS,EAAE,QAAQ;IACnB,aAAa,EAAE;QACb;YACE,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,uBAAuB;YACpC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;YAC3B,EAAE,EAAE,UAAU;SACf;KACF;IACD,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,WAAW,EAAE,OAAO;YACpB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,aAAa;YAC3B,aAAa,EAAE,IAAI;YACnB,SAAS,EAAE;gBACT,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE;gBACxD,SAAS,EAAE,UAAU;gBACrB,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE;gBACtD,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE;gBAClE,KAAK,EAAE,KAAK;gBACZ,YAAY,EAAE,aAAa;aAC5B;YACD,UAAU,EAAE;gBACV,SAAS,EAAE,MAAM;gBACjB,MAAM,EAAE,MAAM;gBACd,aAAa,EAAE,aAAa;gBAC5B,WAAW,EAAE,aAAa;gBAC1B,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,WAAW;gBACvB,WAAW,EAAE,WAAW;aACzB;SACF;QACD,OAAO,EAAE;YACP,WAAW,EAAE,SAAS;YACtB,OAAO,EAAE,MAAM;YACf,YAAY,EAAE,aAAa;YAC3B,SAAS,EAAE;gBACT,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,YAAY;gBACzB,YAAY,EAAE,mBAAmB;gBACjC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE;gBAChD,KAAK,EAAE,KAAK;aACb;YACD,UAAU,EAAE;gBACV,SAAS,EAAE,UAAU;gBACrB,SAAS,EAAE,UAAU;gBACrB,SAAS,EAAE,QAAQ;gBACnB,QAAQ,EAAE,SAAS;gBACnB,WAAW,EAAE,WAAW;gBACxB,UAAU,EAAE,UAAU;aACvB;SACF;KACF;CACF,CAAC"}
@@ -1,2 +1,2 @@
1
- import type { SourceDefinition } from './definitions.js';
1
+ import type { SourceDefinition } from '../types.js';
2
2
  export declare const pipedrive: SourceDefinition;
@@ -1,18 +1,15 @@
1
1
  export const pipedrive = {
2
2
  connector: 'pipedrive',
3
- defaultMappings: [
4
- {
3
+ entities: {
4
+ project: {
5
5
  source_type: 'deal',
6
- entity_type: 'project',
7
- target_repo: 'projects',
8
- extraction_mode: 'structured',
6
+ primary: true,
9
7
  id_from: 'title',
10
8
  field_map: {
11
9
  'title': 'name',
12
10
  'org_name': { field: 'client', transform: 'wikilink' },
13
11
  'add_time': { field: 'start_date', transform: 'date-iso' },
14
12
  'expected_close_date': { field: 'target_completion', transform: 'date-iso' },
15
- 'person_name': { field: 'team', transform: 'wikilink-array' },
16
13
  },
17
14
  status_map: {
18
15
  'won': 'completed',
@@ -20,11 +17,8 @@ export const pipedrive = {
20
17
  'open': 'active',
21
18
  },
22
19
  },
23
- {
20
+ person: {
24
21
  source_type: 'person',
25
- entity_type: 'person',
26
- target_repo: 'people',
27
- extraction_mode: 'structured',
28
22
  id_from: 'name',
29
23
  field_map: {
30
24
  'name': 'name',
@@ -33,11 +27,8 @@ export const pipedrive = {
33
27
  'postal_address_locality': 'location',
34
28
  },
35
29
  },
36
- {
30
+ client: {
37
31
  source_type: 'organization',
38
- entity_type: 'client',
39
- target_repo: 'clients',
40
- extraction_mode: 'structured',
41
32
  id_from: 'name',
42
33
  field_map: {
43
34
  'name': 'name',
@@ -47,6 +38,6 @@ export const pipedrive = {
47
38
  'add_time': { field: 'relationship_start', transform: 'date-iso' },
48
39
  },
49
40
  },
50
- ],
41
+ },
51
42
  };
52
43
  //# sourceMappingURL=pipedrive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipedrive.js","sourceRoot":"","sources":["../../../../src/services/sync/source-definitions/pipedrive.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAqB;IACzC,SAAS,EAAE,WAAW;IACtB,eAAe,EAAE;QACf;YACE,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,UAAU;YACvB,eAAe,EAAE,YAAY;YAE7B,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE;gBACT,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE;gBACtD,UAAU,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE;gBAC1D,qBAAqB,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,UAAU,EAAE;gBAC5E,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE;aAC9D;YACD,UAAU,EAAE;gBACV,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,QAAQ;aACjB;SACF;QACD;YACE,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,QAAQ;YACrB,eAAe,EAAE,YAAY;YAE7B,OAAO,EAAE,MAAM;YACf,SAAS,EAAE;gBACT,MAAM,EAAE,MAAM;gBACd,gBAAgB,EAAE,OAAO;gBACzB,aAAa,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE;gBAC/D,yBAAyB,EAAE,UAAU;aACtC;SACF;QACD;YACE,WAAW,EAAE,cAAc;YAC3B,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,SAAS;YACtB,eAAe,EAAE,YAAY;YAE7B,OAAO,EAAE,MAAM;YACf,SAAS,EAAE;gBACT,MAAM,EAAE,MAAM;gBACd,2BAA2B,EAAE,UAAU;gBACvC,UAAU,EAAE,UAAU;gBACtB,SAAS,EAAE,SAAS;gBACpB,UAAU,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,UAAU,EAAE;aACnE;SACF;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"pipedrive.js","sourceRoot":"","sources":["../../../../src/services/sync/source-definitions/pipedrive.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAqB;IACzC,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,WAAW,EAAE,MAAM;YACnB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE;gBACT,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE;gBACtD,UAAU,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE;gBAC1D,qBAAqB,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,UAAU,EAAE;aAC7E;YACD,UAAU,EAAE;gBACV,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,QAAQ;aACjB;SACF;QACD,MAAM,EAAE;YACN,WAAW,EAAE,QAAQ;YACrB,OAAO,EAAE,MAAM;YACf,SAAS,EAAE;gBACT,MAAM,EAAE,MAAM;gBACd,gBAAgB,EAAE,OAAO;gBACzB,aAAa,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE;gBAC/D,yBAAyB,EAAE,UAAU;aACtC;SACF;QACD,MAAM,EAAE;YACN,WAAW,EAAE,cAAc;YAC3B,OAAO,EAAE,MAAM;YACf,SAAS,EAAE;gBACT,MAAM,EAAE,MAAM;gBACd,2BAA2B,EAAE,UAAU;gBACvC,UAAU,EAAE,UAAU;gBACtB,SAAS,EAAE,SAAS;gBACpB,UAAU,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,UAAU,EAAE;aACnE;SACF;KACF;CACF,CAAC"}
@@ -24,7 +24,7 @@ export class StagingManager {
24
24
  let written = 0;
25
25
  let skipped = 0;
26
26
  for (const match of matches) {
27
- const dir = join(this.stagingDir, match.target_repo);
27
+ const dir = join(this.stagingDir, match.target_repo ?? match.entity_type);
28
28
  mkdirSync(dir, { recursive: true });
29
29
  const filePath = join(dir, `${match.entity_id}.md`);
30
30
  // Build frontmatter with staging metadata
@@ -34,7 +34,6 @@ export class StagingManager {
34
34
  _sources: match.records.map(r => r.source_ref),
35
35
  _notes: match.notes,
36
36
  ...(match.field_sources ? { _field_sources: match.field_sources } : {}),
37
- ...(match.co_locate ? { _co_locate: match.co_locate } : {}),
38
37
  ...(match.write_mode ? { _write_mode: match.write_mode } : {}),
39
38
  ...match.merged_frontmatter,
40
39
  };
@@ -1 +1 @@
1
- {"version":3,"file":"staging.js","sourceRoot":"","sources":["../../../src/services/sync/staging.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"staging.js","sourceRoot":"","sources":["../../../src/services/sync/staging.ts"],"names":[],"mappings":"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"}
@@ -4,14 +4,14 @@
4
4
  * Generic field-map-driven extractor for structured API sources.
5
5
  * No source-specific code — the field map in the source config drives everything.
6
6
  */
7
- import { SyncMCPClient } from './mcp-client.js';
7
+ import type { DataFetcher } from './data-fetcher.js';
8
8
  import { SyncStateManager } from './sync-state.js';
9
9
  import type { SourceConfig, EntityMapping, ExtractedRecord, FieldTransform } from './types.js';
10
10
  export declare class StructuredExtractor {
11
11
  private client;
12
12
  private sourceConfig;
13
13
  private syncState;
14
- constructor(client: SyncMCPClient, sourceConfig: SourceConfig, syncState: SyncStateManager);
14
+ constructor(client: DataFetcher, sourceConfig: SourceConfig, syncState: SyncStateManager);
15
15
  /**
16
16
  * Extract entities for one mapping.
17
17
  *
@@ -43,6 +43,12 @@ export declare function resolveFieldPath(record: Record<string, any>, path: stri
43
43
  * Apply a field transform to a value.
44
44
  */
45
45
  export declare function applyTransform(value: any, transform: FieldTransform['transform']): any;
46
+ /**
47
+ * Parse XML detail response into records with attributes AND child element text content.
48
+ * e.g. `<meeting id="abc" title="Standup"><notes>Hello</notes></meeting>`
49
+ * → `{ id: "abc", title: "Standup", notes: "Hello" }`
50
+ */
51
+ export declare function parseXmlDetail(xml: string): Record<string, any>[];
46
52
  /**
47
53
  * Convert a string to kebab-case entity ID.
48
54
  */