studiograph 1.1.3 → 1.2.0-beta.2

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 (275) hide show
  1. package/README.md +2 -8
  2. package/dist/agent/orchestrator.js +56 -11
  3. package/dist/agent/orchestrator.js.map +1 -1
  4. package/dist/agent/prompts/system.md +28 -10
  5. package/dist/agent/skill-loader.d.ts +48 -0
  6. package/dist/agent/skill-loader.js +166 -0
  7. package/dist/agent/skill-loader.js.map +1 -0
  8. package/dist/agent/skills/{bundled/enrich-entities.md → enrich-entities.md} +12 -0
  9. package/dist/agent/skills/entity-schema.md +502 -0
  10. package/dist/agent/skills/obsidian-source-setup.md +246 -0
  11. package/dist/agent/skills/sync-configuration.md +144 -0
  12. package/dist/agent/skills/sync-setup.md +68 -0
  13. package/dist/agent/tools/connector-tools.d.ts +37 -0
  14. package/dist/agent/tools/connector-tools.js +132 -0
  15. package/dist/agent/tools/connector-tools.js.map +1 -0
  16. package/dist/agent/tools/fs-tools.d.ts +39 -0
  17. package/dist/agent/tools/fs-tools.js +106 -0
  18. package/dist/agent/tools/fs-tools.js.map +1 -0
  19. package/dist/agent/tools/graph-tools.d.ts +11 -1
  20. package/dist/agent/tools/graph-tools.js +90 -29
  21. package/dist/agent/tools/graph-tools.js.map +1 -1
  22. package/dist/agent/tools/load-skill.d.ts +1 -1
  23. package/dist/agent/tools/load-skill.js +1 -1
  24. package/dist/agent/tools/load-skill.js.map +1 -1
  25. package/dist/agent/tools/sync-tools.d.ts +25 -0
  26. package/dist/agent/tools/sync-tools.js +691 -0
  27. package/dist/agent/tools/sync-tools.js.map +1 -0
  28. package/dist/auth/github.d.ts +11 -8
  29. package/dist/auth/github.js +56 -75
  30. package/dist/auth/github.js.map +1 -1
  31. package/dist/cli/colors.d.ts +54 -0
  32. package/dist/cli/colors.js +133 -0
  33. package/dist/cli/colors.js.map +1 -0
  34. package/dist/cli/commands/auth.d.ts +1 -1
  35. package/dist/cli/commands/auth.js +26 -10
  36. package/dist/cli/commands/auth.js.map +1 -1
  37. package/dist/cli/commands/clone.d.ts +9 -0
  38. package/dist/cli/commands/clone.js +167 -0
  39. package/dist/cli/commands/clone.js.map +1 -0
  40. package/dist/cli/commands/commit.d.ts +8 -0
  41. package/dist/cli/commands/commit.js +43 -0
  42. package/dist/cli/commands/commit.js.map +1 -0
  43. package/dist/cli/commands/connector.js +10 -2
  44. package/dist/cli/commands/connector.js.map +1 -1
  45. package/dist/cli/commands/deploy.d.ts +4 -6
  46. package/dist/cli/commands/deploy.js +262 -112
  47. package/dist/cli/commands/deploy.js.map +1 -1
  48. package/dist/cli/commands/enrich.d.ts +11 -0
  49. package/dist/cli/commands/enrich.js +135 -0
  50. package/dist/cli/commands/enrich.js.map +1 -0
  51. package/dist/cli/commands/graphrag.d.ts +12 -0
  52. package/dist/cli/commands/graphrag.js +122 -0
  53. package/dist/cli/commands/graphrag.js.map +1 -0
  54. package/dist/cli/commands/init.js +21 -203
  55. package/dist/cli/commands/init.js.map +1 -1
  56. package/dist/cli/commands/join.js +23 -3
  57. package/dist/cli/commands/join.js.map +1 -1
  58. package/dist/cli/commands/orphans.d.ts +8 -0
  59. package/dist/cli/commands/orphans.js +125 -0
  60. package/dist/cli/commands/orphans.js.map +1 -0
  61. package/dist/cli/commands/provision.js +11 -7
  62. package/dist/cli/commands/provision.js.map +1 -1
  63. package/dist/cli/commands/r2.js +8 -2
  64. package/dist/cli/commands/r2.js.map +1 -1
  65. package/dist/cli/commands/reset.d.ts +12 -0
  66. package/dist/cli/commands/reset.js +137 -0
  67. package/dist/cli/commands/reset.js.map +1 -0
  68. package/dist/cli/commands/review.d.ts +19 -0
  69. package/dist/cli/commands/review.js +128 -0
  70. package/dist/cli/commands/review.js.map +1 -0
  71. package/dist/cli/commands/source.d.ts +16 -0
  72. package/dist/cli/commands/source.js +159 -0
  73. package/dist/cli/commands/source.js.map +1 -0
  74. package/dist/cli/commands/start.js +285 -55
  75. package/dist/cli/commands/start.js.map +1 -1
  76. package/dist/cli/commands/sync-entities.d.ts +13 -0
  77. package/dist/cli/commands/sync-entities.js +242 -0
  78. package/dist/cli/commands/sync-entities.js.map +1 -0
  79. package/dist/cli/commands/sync.js +36 -5
  80. package/dist/cli/commands/sync.js.map +1 -1
  81. package/dist/cli/index.js +31 -0
  82. package/dist/cli/index.js.map +1 -1
  83. package/dist/cli/scaffolding.d.ts +2 -1
  84. package/dist/cli/scaffolding.js +36 -22
  85. package/dist/cli/scaffolding.js.map +1 -1
  86. package/dist/cli/setup-wizard.d.ts +30 -0
  87. package/dist/cli/setup-wizard.js +244 -0
  88. package/dist/cli/setup-wizard.js.map +1 -0
  89. package/dist/cli/sync-review-interactive.d.ts +31 -0
  90. package/dist/cli/sync-review-interactive.js +393 -0
  91. package/dist/cli/sync-review-interactive.js.map +1 -0
  92. package/dist/cli/theme.d.ts +31 -0
  93. package/dist/cli/theme.js +116 -0
  94. package/dist/cli/theme.js.map +1 -0
  95. package/dist/core/graph.d.ts +4 -8
  96. package/dist/core/graph.js +145 -96
  97. package/dist/core/graph.js.map +1 -1
  98. package/dist/core/migration-runner.d.ts +4 -1
  99. package/dist/core/migration-runner.js +14 -3
  100. package/dist/core/migration-runner.js.map +1 -1
  101. package/dist/core/types.d.ts +0 -3
  102. package/dist/core/types.js +0 -2
  103. package/dist/core/types.js.map +1 -1
  104. package/dist/core/user-config.d.ts +6 -0
  105. package/dist/core/user-config.js.map +1 -1
  106. package/dist/core/workspace.d.ts +13 -5
  107. package/dist/core/workspace.js +110 -33
  108. package/dist/core/workspace.js.map +1 -1
  109. package/dist/mcp/connector-manager.d.ts +7 -3
  110. package/dist/mcp/connector-manager.js +61 -16
  111. package/dist/mcp/connector-manager.js.map +1 -1
  112. package/dist/mcp/connectors/asana.d.ts +2 -0
  113. package/dist/mcp/connectors/asana.js +20 -0
  114. package/dist/mcp/connectors/asana.js.map +1 -0
  115. package/dist/mcp/connectors/definitions.d.ts +3 -1
  116. package/dist/mcp/connectors/definitions.js +19 -127
  117. package/dist/mcp/connectors/definitions.js.map +1 -1
  118. package/dist/mcp/connectors/figma.d.ts +5 -0
  119. package/dist/mcp/connectors/figma.js +21 -0
  120. package/dist/mcp/connectors/figma.js.map +1 -0
  121. package/dist/mcp/connectors/gdrive.d.ts +2 -0
  122. package/dist/mcp/connectors/gdrive.js +20 -0
  123. package/dist/mcp/connectors/gdrive.js.map +1 -0
  124. package/dist/mcp/connectors/granola.d.ts +2 -0
  125. package/dist/mcp/connectors/granola.js +12 -0
  126. package/dist/mcp/connectors/granola.js.map +1 -0
  127. package/dist/mcp/connectors/linear.d.ts +2 -0
  128. package/dist/mcp/connectors/linear.js +19 -0
  129. package/dist/mcp/connectors/linear.js.map +1 -0
  130. package/dist/mcp/connectors/obsidian.d.ts +2 -0
  131. package/dist/mcp/connectors/obsidian.js +19 -0
  132. package/dist/mcp/connectors/obsidian.js.map +1 -0
  133. package/dist/mcp/connectors/pipedrive.d.ts +2 -0
  134. package/dist/mcp/connectors/pipedrive.js +20 -0
  135. package/dist/mcp/connectors/pipedrive.js.map +1 -0
  136. package/dist/mcp/connectors/slack.d.ts +2 -0
  137. package/dist/mcp/connectors/slack.js +21 -0
  138. package/dist/mcp/connectors/slack.js.map +1 -0
  139. package/dist/mcp/oauth-provider.d.ts +41 -0
  140. package/dist/mcp/oauth-provider.js +160 -0
  141. package/dist/mcp/oauth-provider.js.map +1 -0
  142. package/dist/server/index.js +14 -9
  143. package/dist/server/index.js.map +1 -1
  144. package/dist/server/plugin-loader.d.ts +7 -0
  145. package/dist/server/plugin-loader.js +54 -2
  146. package/dist/server/plugin-loader.js.map +1 -1
  147. package/dist/services/github-provisioner.d.ts +8 -3
  148. package/dist/services/github-provisioner.js +35 -8
  149. package/dist/services/github-provisioner.js.map +1 -1
  150. package/dist/services/lint-service.js +8 -1
  151. package/dist/services/lint-service.js.map +1 -1
  152. package/dist/services/markdown.js +3 -3
  153. package/dist/services/markdown.js.map +1 -1
  154. package/dist/services/memory-service.d.ts +1 -1
  155. package/dist/services/memory-service.js +2 -3
  156. package/dist/services/memory-service.js.map +1 -1
  157. package/dist/services/orphan-service.d.ts +31 -0
  158. package/dist/services/orphan-service.js +100 -0
  159. package/dist/services/orphan-service.js.map +1 -0
  160. package/dist/services/sync/commit.d.ts +58 -0
  161. package/dist/services/sync/commit.js +354 -0
  162. package/dist/services/sync/commit.js.map +1 -0
  163. package/dist/services/sync/context-index.d.ts +69 -0
  164. package/dist/services/sync/context-index.js +280 -0
  165. package/dist/services/sync/context-index.js.map +1 -0
  166. package/dist/services/sync/derive.d.ts +34 -0
  167. package/dist/services/sync/derive.js +164 -0
  168. package/dist/services/sync/derive.js.map +1 -0
  169. package/dist/services/sync/enrichment-state.d.ts +31 -0
  170. package/dist/services/sync/enrichment-state.js +63 -0
  171. package/dist/services/sync/enrichment-state.js.map +1 -0
  172. package/dist/services/sync/enrichment.d.ts +25 -0
  173. package/dist/services/sync/enrichment.js +121 -0
  174. package/dist/services/sync/enrichment.js.map +1 -0
  175. package/dist/services/sync/frontmatter-extractor.d.ts +40 -0
  176. package/dist/services/sync/frontmatter-extractor.js +273 -0
  177. package/dist/services/sync/frontmatter-extractor.js.map +1 -0
  178. package/dist/services/sync/graph-match-state.d.ts +33 -0
  179. package/dist/services/sync/graph-match-state.js +61 -0
  180. package/dist/services/sync/graph-match-state.js.map +1 -0
  181. package/dist/services/sync/graph-match.d.ts +53 -0
  182. package/dist/services/sync/graph-match.js +316 -0
  183. package/dist/services/sync/graph-match.js.map +1 -0
  184. package/dist/services/sync/graphrag-client.d.ts +43 -0
  185. package/dist/services/sync/graphrag-client.js +94 -0
  186. package/dist/services/sync/graphrag-client.js.map +1 -0
  187. package/dist/services/sync/graphrag-config.d.ts +16 -0
  188. package/dist/services/sync/graphrag-config.js +39 -0
  189. package/dist/services/sync/graphrag-config.js.map +1 -0
  190. package/dist/services/sync/graphrag-context.d.ts +14 -0
  191. package/dist/services/sync/graphrag-context.js +109 -0
  192. package/dist/services/sync/graphrag-context.js.map +1 -0
  193. package/dist/services/sync/graphrag-indexer.d.ts +30 -0
  194. package/dist/services/sync/graphrag-indexer.js +358 -0
  195. package/dist/services/sync/graphrag-indexer.js.map +1 -0
  196. package/dist/services/sync/llm.d.ts +32 -0
  197. package/dist/services/sync/llm.js +115 -0
  198. package/dist/services/sync/llm.js.map +1 -0
  199. package/dist/services/sync/mcp-client.d.ts +59 -0
  200. package/dist/services/sync/mcp-client.js +285 -0
  201. package/dist/services/sync/mcp-client.js.map +1 -0
  202. package/dist/services/sync/model-factory.d.ts +10 -0
  203. package/dist/services/sync/model-factory.js +24 -0
  204. package/dist/services/sync/model-factory.js.map +1 -0
  205. package/dist/services/sync/name-quality.d.ts +31 -0
  206. package/dist/services/sync/name-quality.js +60 -0
  207. package/dist/services/sync/name-quality.js.map +1 -0
  208. package/dist/services/sync/output-schemas.d.ts +92 -0
  209. package/dist/services/sync/output-schemas.js +43 -0
  210. package/dist/services/sync/output-schemas.js.map +1 -0
  211. package/dist/services/sync/prompts.d.ts +19 -0
  212. package/dist/services/sync/prompts.js +128 -0
  213. package/dist/services/sync/prompts.js.map +1 -0
  214. package/dist/services/sync/reconciler.d.ts +48 -0
  215. package/dist/services/sync/reconciler.js +295 -0
  216. package/dist/services/sync/reconciler.js.map +1 -0
  217. package/dist/services/sync/source-config.d.ts +45 -0
  218. package/dist/services/sync/source-config.js +208 -0
  219. package/dist/services/sync/source-config.js.map +1 -0
  220. package/dist/services/sync/source-definitions/asana.d.ts +15 -0
  221. package/dist/services/sync/source-definitions/asana.js +48 -0
  222. package/dist/services/sync/source-definitions/asana.js.map +1 -0
  223. package/dist/services/sync/source-definitions/definitions.d.ts +21 -0
  224. package/dist/services/sync/source-definitions/definitions.js +26 -0
  225. package/dist/services/sync/source-definitions/definitions.js.map +1 -0
  226. package/dist/services/sync/source-definitions/gdrive.d.ts +16 -0
  227. package/dist/services/sync/source-definitions/gdrive.js +68 -0
  228. package/dist/services/sync/source-definitions/gdrive.js.map +1 -0
  229. package/dist/services/sync/source-definitions/granola.d.ts +2 -0
  230. package/dist/services/sync/source-definitions/granola.js +28 -0
  231. package/dist/services/sync/source-definitions/granola.js.map +1 -0
  232. package/dist/services/sync/source-definitions/linear.d.ts +2 -0
  233. package/dist/services/sync/source-definitions/linear.js +60 -0
  234. package/dist/services/sync/source-definitions/linear.js.map +1 -0
  235. package/dist/services/sync/source-definitions/obsidian.d.ts +2 -0
  236. package/dist/services/sync/source-definitions/obsidian.js +55 -0
  237. package/dist/services/sync/source-definitions/obsidian.js.map +1 -0
  238. package/dist/services/sync/source-definitions/pipedrive.d.ts +2 -0
  239. package/dist/services/sync/source-definitions/pipedrive.js +52 -0
  240. package/dist/services/sync/source-definitions/pipedrive.js.map +1 -0
  241. package/dist/services/sync/staging.d.ts +53 -0
  242. package/dist/services/sync/staging.js +131 -0
  243. package/dist/services/sync/staging.js.map +1 -0
  244. package/dist/services/sync/structured-extractor.d.ts +49 -0
  245. package/dist/services/sync/structured-extractor.js +344 -0
  246. package/dist/services/sync/structured-extractor.js.map +1 -0
  247. package/dist/services/sync/sync-runner.d.ts +32 -0
  248. package/dist/services/sync/sync-runner.js +195 -0
  249. package/dist/services/sync/sync-runner.js.map +1 -0
  250. package/dist/services/sync/sync-state.d.ts +43 -0
  251. package/dist/services/sync/sync-state.js +154 -0
  252. package/dist/services/sync/sync-state.js.map +1 -0
  253. package/dist/services/sync/types.d.ts +203 -0
  254. package/dist/services/sync/types.js +8 -0
  255. package/dist/services/sync/types.js.map +1 -0
  256. package/dist/services/sync/unstructured-extractor.d.ts +29 -0
  257. package/dist/services/sync/unstructured-extractor.js +197 -0
  258. package/dist/services/sync/unstructured-extractor.js.map +1 -0
  259. package/dist/services/vector-service.d.ts +11 -0
  260. package/dist/services/vector-service.js +42 -0
  261. package/dist/services/vector-service.js.map +1 -1
  262. package/dist/utils/git.d.ts +26 -4
  263. package/dist/utils/git.js +55 -7
  264. package/dist/utils/git.js.map +1 -1
  265. package/dist/utils/merge-resolver.d.ts +34 -0
  266. package/dist/utils/merge-resolver.js +201 -0
  267. package/dist/utils/merge-resolver.js.map +1 -0
  268. package/dist/utils/preflight.d.ts +2 -1
  269. package/dist/utils/preflight.js +8 -1
  270. package/dist/utils/preflight.js.map +1 -1
  271. package/dist/utils/workspace-config.d.ts +8 -0
  272. package/dist/utils/workspace-config.js +22 -0
  273. package/dist/utils/workspace-config.js.map +1 -0
  274. package/package.json +16 -7
  275. /package/dist/agent/skills/{bundled/gather-context.md → gather-context.md} +0 -0
@@ -0,0 +1,242 @@
1
+ /**
2
+ * studiograph sync
3
+ *
4
+ * Run the entity sync pipeline:
5
+ * studiograph sync — extract + reconcile → staging
6
+ * studiograph sync status — show staging summary
7
+ * studiograph sync apply — write staging → entity files (no git)
8
+ * studiograph sync commit — (deprecated) apply + git commit
9
+ * studiograph sync abort — discard staging
10
+ * studiograph sync review — review entity changes (delegates to top-level review)
11
+ */
12
+ import { Command } from 'commander';
13
+ import { existsSync } from 'fs';
14
+ import { join } from 'path';
15
+ import { spawnSync } from 'child_process';
16
+ import { log } from '@clack/prompts';
17
+ import { Workspace } from '../../core/workspace.js';
18
+ import { loadWorkspaceConfig } from '../../utils/workspace-config.js';
19
+ import { runSync } from '../../services/sync/sync-runner.js';
20
+ import { commitStaging, applyStaging } from '../../services/sync/commit.js';
21
+ import { StagingManager } from '../../services/sync/staging.js';
22
+ import { isGitRepo, gitHasUncommittedChanges } from '../../utils/git.js';
23
+ import { header, count as countColor, entityRef, dimText, created, updated, skipped, error as errorColor, formatAction, formatSummary, } from '../colors.js';
24
+ import { runReview } from './review.js';
25
+ export const syncEntitiesCommand = new Command('sync')
26
+ .description('Sync entities from external sources');
27
+ // ── sync (run pipeline) ──────────────────────────────────────────────────────
28
+ syncEntitiesCommand
29
+ .command('run [sources...]', { isDefault: true })
30
+ .description('Run sync pipeline: extract → reconcile → staging')
31
+ .option('--dry-run', 'Preview without writing staging files')
32
+ .option('--incremental', 'Only sync records updated since last run')
33
+ .action(async (sources, opts) => {
34
+ const workspace = new Workspace(process.cwd());
35
+ if (!workspace.isWorkspace()) {
36
+ console.error('Not in a Studiograph workspace.');
37
+ process.exit(1);
38
+ }
39
+ try {
40
+ const startTime = Date.now();
41
+ const config = await workspace.loadConfig();
42
+ const result = await runSync({
43
+ workspacePath: process.cwd(),
44
+ sources: sources.length > 0 ? sources : undefined,
45
+ dryRun: opts.dryRun,
46
+ incremental: opts.incremental,
47
+ schemaExtensions: config.schema_extensions,
48
+ }, (msg) => console.log(msg));
49
+ console.log(`\n${header('--- Summary ---')}`);
50
+ console.log(`Sources processed: ${countColor(String(result.sources_processed))}`);
51
+ console.log(`Records extracted: ${countColor(String(result.records_extracted))}`);
52
+ console.log(`Records derived: ${countColor(String(result.records_derived))}`);
53
+ console.log(`Records reconciled: ${countColor(String(result.records_reconciled))}`);
54
+ console.log(`Graph matched: ${countColor(String(result.records_graph_matched))}`);
55
+ console.log(`Staging written: ${countColor(String(result.staging_written))}`);
56
+ if (Object.keys(result.by_entity_type).length > 0) {
57
+ console.log('\nBy entity type:');
58
+ for (const [type, cnt] of Object.entries(result.by_entity_type)) {
59
+ console.log(` ${entityRef(type)}: ${countColor(String(cnt))}`);
60
+ }
61
+ }
62
+ console.log(`\nCompleted in ${dimText(formatElapsed(Date.now() - startTime))}`);
63
+ if (!opts.dryRun && result.staging_written > 0) {
64
+ console.log(`\nNext: ${header('studiograph sync status')} ${dimText('(inspect staging)')}`);
65
+ console.log(`Then: ${header('studiograph sync apply')} ${dimText('(write to graph)')}`);
66
+ }
67
+ }
68
+ catch (err) {
69
+ console.error(errorColor('Sync failed:'), err instanceof Error ? err.message : String(err));
70
+ process.exit(1);
71
+ }
72
+ });
73
+ // ── sync status ──────────────────────────────────────────────────────────────
74
+ syncEntitiesCommand
75
+ .command('status')
76
+ .description('Show staging summary')
77
+ .action(() => {
78
+ const workspace = new Workspace(process.cwd());
79
+ if (!workspace.isWorkspace()) {
80
+ console.error('Not in a Studiograph workspace.');
81
+ process.exit(1);
82
+ }
83
+ const staging = new StagingManager(process.cwd());
84
+ const summary = staging.getSummary();
85
+ if (summary.total === 0) {
86
+ console.log('No staging files. Run "studiograph sync run" first.');
87
+ return;
88
+ }
89
+ console.log(`${header('Staging summary')}: ${countColor(String(summary.total))} entities\n`);
90
+ console.log(` ${created('Create')}: ${countColor(String(summary.creates))}`);
91
+ console.log(` ${updated('Update')}: ${countColor(String(summary.updates))}`);
92
+ console.log(` ${skipped('Skip')}: ${countColor(String(summary.skips))}`);
93
+ if (Object.keys(summary.byType).length > 0) {
94
+ console.log('\nBy type:');
95
+ for (const [type, cnt] of Object.entries(summary.byType)) {
96
+ console.log(` ${entityRef(type)}: ${countColor(String(cnt))}`);
97
+ }
98
+ }
99
+ console.log(`\nNext: ${header('studiograph sync apply')} ${dimText('(write to graph)')}`);
100
+ console.log(`Or: ${header('studiograph sync abort')} ${dimText('(discard staging)')}`);
101
+ });
102
+ // ── sync apply ───────────────────────────────────────────────────────────────
103
+ syncEntitiesCommand
104
+ .command('apply')
105
+ .description('Write staging files to entity files (no git commit)')
106
+ .option('--force', 'Skip dirty working tree check')
107
+ .action(async (opts) => {
108
+ const workspace = new Workspace(process.cwd());
109
+ if (!workspace.isWorkspace()) {
110
+ console.error('Not in a Studiograph workspace.');
111
+ process.exit(1);
112
+ }
113
+ try {
114
+ const startTime = Date.now();
115
+ const result = await applyStaging(process.cwd(), (msg) => {
116
+ const m = msg.match(/^\s+(Created|Updated|Skipped): (\S+)\/(\S+)$/);
117
+ if (m) {
118
+ const actionMap = {
119
+ Created: 'create', Updated: 'update', Skipped: 'skip',
120
+ };
121
+ console.log(formatAction(actionMap[m[1]] ?? 'skip', m[2], m[3]));
122
+ }
123
+ else {
124
+ console.log(msg);
125
+ }
126
+ }, { force: opts.force });
127
+ console.log(`\nDone: ${formatSummary({ created: result.created, updated: result.updated, skipped: result.skipped })}`);
128
+ console.log(`Completed in ${dimText(formatElapsed(Date.now() - startTime))}`);
129
+ if (result.created > 0 || result.updated > 0) {
130
+ console.log(`\nNext: ${header('studiograph review')} ${dimText('(inspect changes)')}`);
131
+ console.log(`Then: ${header('studiograph commit')} ${dimText('(git commit)')}`);
132
+ console.log(`Or: ${dimText('git checkout -- .')} ${dimText('(discard changes)')}`);
133
+ }
134
+ }
135
+ catch (err) {
136
+ console.error(errorColor('Apply failed:'), err instanceof Error ? err.message : String(err));
137
+ process.exit(1);
138
+ }
139
+ });
140
+ // ── sync commit (deprecated) ────────────────────────────────────────────────
141
+ syncEntitiesCommand
142
+ .command('commit')
143
+ .description('Write staging files to the graph (deprecated: use sync apply + commit)')
144
+ .option('--force', 'Skip dirty working tree check')
145
+ .option('--no-git', 'Skip auto git-commit after writing')
146
+ .action(async (opts) => {
147
+ console.log(dimText('Note: "sync commit" is deprecated. Use "sync apply" then "studiograph commit" instead.\n'));
148
+ const workspace = new Workspace(process.cwd());
149
+ if (!workspace.isWorkspace()) {
150
+ console.error('Not in a Studiograph workspace.');
151
+ process.exit(1);
152
+ }
153
+ try {
154
+ const startTime = Date.now();
155
+ const result = await commitStaging(process.cwd(), (msg) => {
156
+ // Colorize progress lines from commit.ts
157
+ const m = msg.match(/^\s+(Created|Updated|Skipped): (\S+)\/(\S+)$/);
158
+ if (m) {
159
+ const actionMap = {
160
+ Created: 'create', Updated: 'update', Skipped: 'skip',
161
+ };
162
+ console.log(formatAction(actionMap[m[1]] ?? 'skip', m[2], m[3]));
163
+ }
164
+ else if (msg.includes('Git commit:') || msg.includes('Git init:')) {
165
+ console.log(dimText(msg));
166
+ }
167
+ else {
168
+ console.log(msg);
169
+ }
170
+ }, { force: opts.force, noGit: opts.git === false });
171
+ console.log(`\nDone: ${formatSummary({ created: result.created, updated: result.updated, skipped: result.skipped })}`);
172
+ console.log(`Completed in ${dimText(formatElapsed(Date.now() - startTime))}`);
173
+ }
174
+ catch (err) {
175
+ console.error(errorColor('Commit failed:'), err instanceof Error ? err.message : String(err));
176
+ process.exit(1);
177
+ }
178
+ });
179
+ // ── sync abort ───────────────────────────────────────────────────────────────
180
+ syncEntitiesCommand
181
+ .command('abort')
182
+ .description('Discard staging files and revert uncommitted sync changes')
183
+ .action(() => {
184
+ const workspace = new Workspace(process.cwd());
185
+ if (!workspace.isWorkspace()) {
186
+ console.error('Not in a Studiograph workspace.');
187
+ process.exit(1);
188
+ }
189
+ const staging = new StagingManager(process.cwd());
190
+ const hasStaging = staging.hasStaging();
191
+ if (hasStaging) {
192
+ staging.clear();
193
+ log.success('Staging files discarded.');
194
+ return;
195
+ }
196
+ // No staging — check if apply was already run (uncommitted changes in repos)
197
+ const workspacePath = process.cwd();
198
+ const config = loadWorkspaceConfig(workspacePath);
199
+ const repos = config?.repos ?? [];
200
+ let reverted = 0;
201
+ for (const repo of repos) {
202
+ const repoPath = join(workspacePath, repo.path);
203
+ if (!existsSync(repoPath) || !isGitRepo(repoPath))
204
+ continue;
205
+ if (!gitHasUncommittedChanges(repoPath))
206
+ continue;
207
+ const result = spawnSync('git', ['checkout', '--', '.'], { cwd: repoPath, encoding: 'utf-8' });
208
+ if (result.status === 0) {
209
+ // Also clean untracked files created by apply (new entity dirs)
210
+ spawnSync('git', ['clean', '-fd'], { cwd: repoPath, encoding: 'utf-8' });
211
+ console.log(` Reverted: ${repo.name}`);
212
+ reverted++;
213
+ }
214
+ }
215
+ if (reverted > 0) {
216
+ log.success(`Reverted uncommitted changes in ${reverted} repo${reverted === 1 ? '' : 's'}.`);
217
+ }
218
+ else {
219
+ console.log('Nothing to abort — no staging files and no uncommitted changes.');
220
+ }
221
+ });
222
+ // ── sync review (delegates to top-level review command) ─────────────────────
223
+ syncEntitiesCommand
224
+ .command('review')
225
+ .description('Review entity changes (alias for studiograph review)')
226
+ .option('--type <entity_type>', 'Show colored diff for an entity type')
227
+ .option('--file <path>', 'Show colored diff for a specific file')
228
+ .option('--committed', 'Review last commit instead of uncommitted changes')
229
+ .action(async (opts) => {
230
+ await runReview(opts);
231
+ });
232
+ function formatElapsed(ms) {
233
+ if (ms < 1000)
234
+ return `${ms}ms`;
235
+ const secs = ms / 1000;
236
+ if (secs < 60)
237
+ return `${secs.toFixed(1)}s`;
238
+ const mins = Math.floor(secs / 60);
239
+ const remSecs = Math.round(secs % 60);
240
+ return `${mins}m ${remSecs}s`;
241
+ }
242
+ //# sourceMappingURL=sync-entities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-entities.js","sourceRoot":"","sources":["../../../src/cli/commands/sync-entities.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,8 @@ import { log, outro } from '@clack/prompts';
10
10
  import { existsSync } from 'fs';
11
11
  import { join } from 'path';
12
12
  import { Workspace } from '../../core/workspace.js';
13
- import { gitPull, gitPush } from '../../utils/git.js';
13
+ import { gitPull, gitPush, gitStashPop } from '../../utils/git.js';
14
+ import { resolveConflicts } from '../../utils/merge-resolver.js';
14
15
  async function getRepoEntries(workspace, workspaceRoot) {
15
16
  const entries = [];
16
17
  // The .studiograph config directory is itself a git repo (when GitHub-provisioned)
@@ -51,7 +52,7 @@ export const pullCommand = new Command('pull')
51
52
  continue;
52
53
  }
53
54
  try {
54
- const result = gitPull(entry.path);
55
+ const result = gitPull(entry.path, { abortOnConflict: false });
55
56
  if (result === 'updated') {
56
57
  log.success(`${entry.name}: updated`);
57
58
  }
@@ -59,8 +60,16 @@ export const pullCommand = new Command('pull')
59
60
  log.info(`${entry.name}: already up to date`);
60
61
  }
61
62
  else {
62
- log.warn(`${entry.name}: conflictresolve with git in ${entry.path}`);
63
- hasConflict = true;
63
+ // Conflictattempt LLM merge resolution
64
+ const resolution = await resolveConflicts(entry.path, (msg) => log.info(msg));
65
+ gitStashPop(entry.path); // restore any auto-stashed local changes
66
+ if (resolution.success) {
67
+ log.success(`${entry.name}: updated (conflicts resolved by AI)`);
68
+ }
69
+ else {
70
+ log.warn(`${entry.name}: conflict — resolve manually in ${entry.path}`);
71
+ hasConflict = true;
72
+ }
64
73
  }
65
74
  }
66
75
  catch (error) {
@@ -100,7 +109,29 @@ export const pushCommand = new Command('push')
100
109
  continue;
101
110
  }
102
111
  try {
103
- const result = gitPush(entry.path);
112
+ let result = gitPush(entry.path);
113
+ // Auto pull-rebase and retry if remote has newer commits
114
+ if (result === 'rejected') {
115
+ log.info(`${entry.name}: remote has newer commits, pulling...`);
116
+ const pullResult = gitPull(entry.path, { abortOnConflict: false });
117
+ if (pullResult === 'conflict') {
118
+ const resolution = await resolveConflicts(entry.path, (msg) => log.info(msg));
119
+ gitStashPop(entry.path); // restore any auto-stashed local changes
120
+ if (!resolution.success) {
121
+ log.warn(`${entry.name}: conflict — resolve manually in ${entry.path}`);
122
+ hasError = true;
123
+ continue;
124
+ }
125
+ log.info(`${entry.name}: conflicts resolved by AI`);
126
+ }
127
+ // Retry push after successful pull
128
+ result = gitPush(entry.path);
129
+ if (result === 'rejected') {
130
+ log.warn(`${entry.name}: push still rejected after pull`);
131
+ hasError = true;
132
+ continue;
133
+ }
134
+ }
104
135
  if (result === 'pushed') {
105
136
  log.success(`${entry.name}: pushed`);
106
137
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/cli/commands/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/cli/commands/sync.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -8,6 +8,7 @@ import { Command } from 'commander';
8
8
  import { initCommand } from './commands/init.js';
9
9
  import { startCommand } from './commands/start.js';
10
10
  import { joinCommand } from './commands/join.js';
11
+ import { cloneCommand } from './commands/clone.js';
11
12
  import { authCommand } from './commands/auth.js';
12
13
  import { membersCommand } from './commands/members.js';
13
14
  import { pullCommand, pushCommand } from './commands/sync.js';
@@ -17,11 +18,19 @@ import { appCommand } from './commands/app.js';
17
18
  import { deployCommand } from './commands/deploy.js';
18
19
  import { mcpCommand } from './commands/mcp.js';
19
20
  import { connectorCommand } from './commands/connector.js';
21
+ import { sourceCommand } from './commands/source.js';
22
+ import { syncEntitiesCommand } from './commands/sync-entities.js';
23
+ import { enrichCommand } from './commands/enrich.js';
24
+ import { reviewCommand } from './commands/review.js';
25
+ import { commitCommand } from './commands/commit.js';
20
26
  import { indexCommand } from './commands/index.js';
21
27
  import { configCommand } from './commands/config.js';
22
28
  import { lintCommand } from './commands/lint.js';
23
29
  import { updateCommand } from './commands/update.js';
24
30
  import { provisionCommand } from './commands/provision.js';
31
+ import { resetCommand } from './commands/reset.js';
32
+ import { graphragCommand } from './commands/graphrag.js';
33
+ import { orphansCommand } from './commands/orphans.js';
25
34
  const program = new Command();
26
35
  program
27
36
  .name('studiograph')
@@ -52,6 +61,7 @@ program.configureHelp({
52
61
  'Getting Started:',
53
62
  formatItem('init <team-name> [dir]', 'Initialize a new workspace'),
54
63
  formatItem('join <url> [dir]', 'Join an existing workspace'),
64
+ formatItem('clone <url> [dir]', 'Clone workspace with full admin setup'),
55
65
  formatItem('auth', 'Manage GitHub authentication'),
56
66
  '',
57
67
  'Daily Workflow:',
@@ -70,6 +80,15 @@ program.configureHelp({
70
80
  formatItem('serve', 'Start HTTP server'),
71
81
  formatItem('deploy', 'Deploy to hosting platform'),
72
82
  '',
83
+ 'Data Sync:',
84
+ formatItem('source', 'Manage sync sources'),
85
+ formatItem('sync', 'Sync entities from external sources'),
86
+ formatItem('enrich', 'Enrich entities with context'),
87
+ formatItem('graphrag', 'Knowledge graph for cross-document context'),
88
+ formatItem('review', 'Review entity changes'),
89
+ formatItem('commit', 'Git commit entity changes'),
90
+ formatItem('graphrag', 'LightRAG knowledge graph'),
91
+ '',
73
92
  'Integrations & Extensions:',
74
93
  formatItem('mcp', 'Claude Desktop integration'),
75
94
  formatItem('connector', 'Third-party integrations'),
@@ -77,6 +96,7 @@ program.configureHelp({
77
96
  formatItem('r2', 'Cloudflare R2 assets'),
78
97
  '',
79
98
  'Maintenance:',
99
+ formatItem('reset', 'Reset workspace (remove entity data)'),
80
100
  formatItem('update', 'Update Studiograph CLI'),
81
101
  formatItem('help [command]', 'Display help for command'),
82
102
  ];
@@ -87,6 +107,7 @@ program.configureHelp({
87
107
  // Getting Started
88
108
  program.addCommand(initCommand);
89
109
  program.addCommand(joinCommand);
110
+ program.addCommand(cloneCommand);
90
111
  program.addCommand(authCommand);
91
112
  // Daily Workflow
92
113
  program.addCommand(startCommand);
@@ -97,16 +118,26 @@ program.addCommand(provisionCommand);
97
118
  program.addCommand(membersCommand);
98
119
  program.addCommand(indexCommand);
99
120
  program.addCommand(lintCommand);
121
+ program.addCommand(orphansCommand);
100
122
  program.addCommand(configCommand);
101
123
  // Server & Deployment
102
124
  program.addCommand(serveCommand);
103
125
  program.addCommand(deployCommand);
126
+ // Data Sync
127
+ program.addCommand(sourceCommand);
128
+ program.addCommand(syncEntitiesCommand);
129
+ program.addCommand(enrichCommand);
130
+ program.addCommand(graphragCommand);
131
+ program.addCommand(reviewCommand);
132
+ program.addCommand(commitCommand);
133
+ program.addCommand(graphragCommand);
104
134
  // Integrations & Extensions
105
135
  program.addCommand(mcpCommand);
106
136
  program.addCommand(connectorCommand);
107
137
  program.addCommand(appCommand);
108
138
  program.addCommand(r2Command);
109
139
  // Maintenance
140
+ program.addCommand(resetCommand);
110
141
  program.addCommand(updateCommand);
111
142
  // Parse arguments
112
143
  program.parse();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,8 @@
3
3
  *
4
4
  * Creates a connected set of example entities during `studiograph init`
5
5
  * to demonstrate the knowledge graph pattern — a client, project, person,
6
- * meeting, and decision all wikilinked together.
6
+ * meeting, and decision all wikilinked together, distributed across repos
7
+ * matching the fluid folder model.
7
8
  */
8
9
  import { Workspace } from '../core/workspace.js';
9
10
  export declare function scaffoldExampleEntities(workspace: Workspace, teamName: string): Promise<void>;
@@ -3,13 +3,20 @@
3
3
  *
4
4
  * Creates a connected set of example entities during `studiograph init`
5
5
  * to demonstrate the knowledge graph pattern — a client, project, person,
6
- * meeting, and decision all wikilinked together.
6
+ * meeting, and decision all wikilinked together, distributed across repos
7
+ * matching the fluid folder model.
7
8
  */
8
9
  import { join } from 'path';
9
10
  import { writeFileSync } from 'fs';
10
11
  import { RepoType } from '../core/types.js';
11
12
  import { MarkdownService } from '../services/markdown.js';
12
- const REPO_NAME = 'example-project';
13
+ /** Repos scaffolded during init — one per entity type */
14
+ const STARTER_REPOS = [
15
+ { name: 'projects', type: RepoType.PROJECT, description: 'Client projects and engagements' },
16
+ { name: 'clients', type: RepoType.PROJECT, description: 'Client organizations' },
17
+ { name: 'people', type: RepoType.PROJECT, description: 'Contacts and team members' },
18
+ { name: 'meetings', type: RepoType.PROJECT, description: 'Meeting notes' },
19
+ ];
13
20
  function buildEntities(now) {
14
21
  const shared = {
15
22
  created_by: 'studiograph',
@@ -20,6 +27,7 @@ function buildEntities(now) {
20
27
  };
21
28
  return [
22
29
  {
30
+ repo: 'clients',
23
31
  entityType: 'client',
24
32
  entityId: 'meridian-health',
25
33
  frontmatter: {
@@ -49,6 +57,7 @@ Regional healthcare network with 12 hospitals across the Midwest. Engaged us for
49
57
  `,
50
58
  },
51
59
  {
60
+ repo: 'people',
52
61
  entityType: 'person',
53
62
  entityId: 'sarah-chen',
54
63
  frontmatter: {
@@ -73,6 +82,7 @@ VP of Marketing at [[meridian-health]]. Primary stakeholder for the [[meridian-r
73
82
  `,
74
83
  },
75
84
  {
85
+ repo: 'projects',
76
86
  entityType: 'project',
77
87
  entityId: 'meridian-rebrand',
78
88
  frontmatter: {
@@ -108,6 +118,7 @@ Comprehensive brand identity refresh for [[meridian-health]] following their mer
108
118
  `,
109
119
  },
110
120
  {
121
+ repo: 'meetings',
111
122
  entityType: 'meeting',
112
123
  entityId: '2026-02-10-kickoff',
113
124
  frontmatter: {
@@ -148,6 +159,7 @@ Kickoff meeting for the [[meridian-rebrand]] project with [[sarah-chen]] and the
148
159
  `,
149
160
  },
150
161
  {
162
+ repo: 'projects',
151
163
  entityType: 'decision',
152
164
  entityId: 'dec-2026-001',
153
165
  frontmatter: {
@@ -241,40 +253,42 @@ studiograph get <entity-id> # View a specific entity
241
253
 
242
254
  ## Explore the Examples
243
255
 
244
- Check out the \`example-project/\` repo to see how entities connect:
256
+ Example entities are tagged \`example\` and distributed across repos:
245
257
 
246
- - \`example-project/client/meridian-health.md\` — a client organization
247
- - \`example-project/person/sarah-chen.md\` — a contact linked to the client
248
- - \`example-project/project/meridian-rebrand.md\` — a project linking client, person, and decisions
249
- - \`example-project/meeting/2026-02-10-kickoff.md\` — a meeting with notes and action items
250
- - \`example-project/decision/dec-2026-001.md\` — a structured decision record
258
+ - \`clients/meridian-health/main.md\` — a client organization
259
+ - \`people/sarah-chen/main.md\` — a contact linked to the client
260
+ - \`projects/meridian-rebrand/main.md\` — a project linking client, person, and decisions
261
+ - \`projects/dec-2026-001/main.md\` — a structured decision record
262
+ - \`meetings/2026-02-10-kickoff/main.md\` — a meeting with notes and action items
251
263
 
252
- Notice how \`[[wikilinks]]\` connect everything into a navigable graph.
264
+ Notice how \`[[wikilinks]]\` connect everything into a navigable graph across repos.
253
265
 
254
266
  ## Cleaning Up Examples
255
267
 
256
- When you're ready to remove the example entities:
268
+ When you're ready to remove the example entities, delete the folders tagged \`example\`:
257
269
 
258
270
  \`\`\`bash
259
- studiograph config repo remove example-project
260
- rm -rf example-project/
271
+ rm -rf clients/meridian-health projects/meridian-rebrand projects/dec-2026-001
272
+ rm -rf people/sarah-chen meetings/2026-02-10-kickoff
261
273
  \`\`\`
262
274
  `;
263
275
  }
264
276
  export async function scaffoldExampleEntities(workspace, teamName) {
265
- const repoPath = join(workspace.getWorkspacePath(), REPO_NAME);
266
- // Register the example-project repo
267
- await workspace.registerRepo({
268
- name: REPO_NAME,
269
- type: RepoType.PROJECT,
270
- description: 'Example entities demonstrating the knowledge graph pattern (safe to delete)',
271
- });
272
- // Write example entities
277
+ const workspacePath = workspace.getWorkspacePath();
278
+ // Register starter repos
279
+ for (const repo of STARTER_REPOS) {
280
+ await workspace.registerRepo({
281
+ name: repo.name,
282
+ type: repo.type,
283
+ description: repo.description,
284
+ });
285
+ }
286
+ // Write example entities into their respective repos
273
287
  const md = new MarkdownService();
274
288
  const now = new Date().toISOString();
275
289
  const entities = buildEntities(now);
276
290
  for (const entity of entities) {
277
- const filePath = join(repoPath, entity.entityType, `${entity.entityId}.md`);
291
+ const filePath = join(workspacePath, entity.repo, entity.entityId, 'main.md');
278
292
  md.writeFile(filePath, {
279
293
  frontmatter: entity.frontmatter,
280
294
  content: entity.content,
@@ -282,7 +296,7 @@ export async function scaffoldExampleEntities(workspace, teamName) {
282
296
  });
283
297
  }
284
298
  // Write STUDIOGRAPH.md to workspace root
285
- const guidePath = join(workspace.getWorkspacePath(), 'STUDIOGRAPH.md');
299
+ const guidePath = join(workspacePath, 'STUDIOGRAPH.md');
286
300
  writeFileSync(guidePath, buildOnboardingGuide(teamName), 'utf-8');
287
301
  }
288
302
  //# sourceMappingURL=scaffolding.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scaffolding.js","sourceRoot":"","sources":["../../src/cli/scaffolding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scaffolding.js","sourceRoot":"","sources":["../../src/cli/scaffolding.ts"],"names":[],"mappings":"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"}