studiograph 1.1.2 → 1.2.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (349) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +301 -10
  3. package/dist/agent/orchestrator.d.ts +17 -9
  4. package/dist/agent/orchestrator.js +142 -97
  5. package/dist/agent/orchestrator.js.map +1 -1
  6. package/dist/agent/prompts/system.md +186 -0
  7. package/dist/agent/skill-loader.d.ts +48 -0
  8. package/dist/agent/skill-loader.js +166 -0
  9. package/dist/agent/skill-loader.js.map +1 -0
  10. package/dist/agent/skills/enrich-entities.md +136 -0
  11. package/dist/agent/skills/entity-schema.md +502 -0
  12. package/dist/agent/skills/gather-context.md +46 -0
  13. package/dist/agent/skills/obsidian-source-setup.md +246 -0
  14. package/dist/agent/skills/skill-loader.d.ts +48 -0
  15. package/dist/agent/skills/skill-loader.js +166 -0
  16. package/dist/agent/skills/skill-loader.js.map +1 -0
  17. package/dist/agent/skills/sync-configuration.md +144 -0
  18. package/dist/agent/skills/sync-setup.md +68 -0
  19. package/dist/agent/tools/connector-tools.d.ts +37 -0
  20. package/dist/agent/tools/connector-tools.js +132 -0
  21. package/dist/agent/tools/connector-tools.js.map +1 -0
  22. package/dist/agent/tools/fs-tools.d.ts +39 -0
  23. package/dist/agent/tools/fs-tools.js +106 -0
  24. package/dist/agent/tools/fs-tools.js.map +1 -0
  25. package/dist/agent/tools/graph-tools.d.ts +30 -2
  26. package/dist/agent/tools/graph-tools.js +154 -37
  27. package/dist/agent/tools/graph-tools.js.map +1 -1
  28. package/dist/agent/tools/load-skill.d.ts +42 -0
  29. package/dist/agent/tools/load-skill.js +45 -0
  30. package/dist/agent/tools/load-skill.js.map +1 -0
  31. package/dist/agent/tools/sync-tools.d.ts +25 -0
  32. package/dist/agent/tools/sync-tools.js +691 -0
  33. package/dist/agent/tools/sync-tools.js.map +1 -0
  34. package/dist/agent/tools/tool-loader.d.ts +25 -0
  35. package/dist/agent/tools/tool-loader.js +73 -0
  36. package/dist/agent/tools/tool-loader.js.map +1 -0
  37. package/dist/auth/github.d.ts +11 -8
  38. package/dist/auth/github.js +56 -75
  39. package/dist/auth/github.js.map +1 -1
  40. package/dist/cli/colors.d.ts +54 -0
  41. package/dist/cli/colors.js +133 -0
  42. package/dist/cli/colors.js.map +1 -0
  43. package/dist/cli/commands/app.d.ts +7 -0
  44. package/dist/cli/commands/app.js +167 -0
  45. package/dist/cli/commands/app.js.map +1 -0
  46. package/dist/cli/commands/auth.d.ts +1 -1
  47. package/dist/cli/commands/auth.js +26 -10
  48. package/dist/cli/commands/auth.js.map +1 -1
  49. package/dist/cli/commands/clone.d.ts +9 -0
  50. package/dist/cli/commands/clone.js +167 -0
  51. package/dist/cli/commands/clone.js.map +1 -0
  52. package/dist/cli/commands/commit.d.ts +8 -0
  53. package/dist/cli/commands/commit.js +43 -0
  54. package/dist/cli/commands/commit.js.map +1 -0
  55. package/dist/cli/commands/config.d.ts +13 -0
  56. package/dist/cli/commands/config.js +276 -0
  57. package/dist/cli/commands/config.js.map +1 -0
  58. package/dist/cli/commands/connector.d.ts +33 -0
  59. package/dist/cli/commands/connector.js +178 -0
  60. package/dist/cli/commands/connector.js.map +1 -0
  61. package/dist/cli/commands/deploy.d.ts +11 -0
  62. package/dist/cli/commands/deploy.js +153 -0
  63. package/dist/cli/commands/deploy.js.map +1 -0
  64. package/dist/cli/commands/enrich.d.ts +11 -0
  65. package/dist/cli/commands/enrich.js +135 -0
  66. package/dist/cli/commands/enrich.js.map +1 -0
  67. package/dist/cli/commands/graphrag.d.ts +12 -0
  68. package/dist/cli/commands/graphrag.js +122 -0
  69. package/dist/cli/commands/graphrag.js.map +1 -0
  70. package/dist/cli/commands/index.d.ts +15 -0
  71. package/dist/cli/commands/index.js +117 -0
  72. package/dist/cli/commands/index.js.map +1 -0
  73. package/dist/cli/commands/init.js +110 -210
  74. package/dist/cli/commands/init.js.map +1 -1
  75. package/dist/cli/commands/join.js +89 -24
  76. package/dist/cli/commands/join.js.map +1 -1
  77. package/dist/cli/commands/lint.d.ts +8 -0
  78. package/dist/cli/commands/lint.js +70 -0
  79. package/dist/cli/commands/lint.js.map +1 -0
  80. package/dist/cli/commands/mcp.d.ts +27 -0
  81. package/dist/cli/commands/mcp.js +56 -0
  82. package/dist/cli/commands/mcp.js.map +1 -0
  83. package/dist/cli/commands/orphans.d.ts +8 -0
  84. package/dist/cli/commands/orphans.js +125 -0
  85. package/dist/cli/commands/orphans.js.map +1 -0
  86. package/dist/cli/commands/provision.d.ts +8 -0
  87. package/dist/cli/commands/provision.js +116 -0
  88. package/dist/cli/commands/provision.js.map +1 -0
  89. package/dist/cli/commands/r2.d.ts +2 -0
  90. package/dist/cli/commands/r2.js +87 -6
  91. package/dist/cli/commands/r2.js.map +1 -1
  92. package/dist/cli/commands/reset.d.ts +12 -0
  93. package/dist/cli/commands/reset.js +137 -0
  94. package/dist/cli/commands/reset.js.map +1 -0
  95. package/dist/cli/commands/review.d.ts +19 -0
  96. package/dist/cli/commands/review.js +128 -0
  97. package/dist/cli/commands/review.js.map +1 -0
  98. package/dist/cli/commands/serve.js +47 -2
  99. package/dist/cli/commands/serve.js.map +1 -1
  100. package/dist/cli/commands/source.d.ts +16 -0
  101. package/dist/cli/commands/source.js +159 -0
  102. package/dist/cli/commands/source.js.map +1 -0
  103. package/dist/cli/commands/start.js +472 -103
  104. package/dist/cli/commands/start.js.map +1 -1
  105. package/dist/cli/commands/sync-entities.d.ts +13 -0
  106. package/dist/cli/commands/sync-entities.js +242 -0
  107. package/dist/cli/commands/sync-entities.js.map +1 -0
  108. package/dist/cli/commands/sync.js +40 -9
  109. package/dist/cli/commands/sync.js.map +1 -1
  110. package/dist/cli/commands/update.d.ts +8 -0
  111. package/dist/cli/commands/update.js +155 -0
  112. package/dist/cli/commands/update.js.map +1 -0
  113. package/dist/cli/index.js +114 -3
  114. package/dist/cli/index.js.map +1 -1
  115. package/dist/cli/scaffolding.d.ts +10 -0
  116. package/dist/cli/scaffolding.js +302 -0
  117. package/dist/cli/scaffolding.js.map +1 -0
  118. package/dist/cli/setup-wizard.d.ts +30 -0
  119. package/dist/cli/setup-wizard.js +244 -0
  120. package/dist/cli/setup-wizard.js.map +1 -0
  121. package/dist/cli/sync-review-interactive.d.ts +31 -0
  122. package/dist/cli/sync-review-interactive.js +393 -0
  123. package/dist/cli/sync-review-interactive.js.map +1 -0
  124. package/dist/cli/theme.d.ts +31 -0
  125. package/dist/cli/theme.js +116 -0
  126. package/dist/cli/theme.js.map +1 -0
  127. package/dist/core/graph.d.ts +16 -9
  128. package/dist/core/graph.js +263 -145
  129. package/dist/core/graph.js.map +1 -1
  130. package/dist/core/migration-runner.d.ts +42 -0
  131. package/dist/core/migration-runner.js +232 -0
  132. package/dist/core/migration-runner.js.map +1 -0
  133. package/dist/core/migration-types.d.ts +101 -0
  134. package/dist/core/migration-types.js +21 -0
  135. package/dist/core/migration-types.js.map +1 -0
  136. package/dist/core/migrations/20260219-formalize-memory-location.d.ts +2 -0
  137. package/dist/core/migrations/20260219-formalize-memory-location.js +35 -0
  138. package/dist/core/migrations/20260219-formalize-memory-location.js.map +1 -0
  139. package/dist/core/migrations/20260220-add-workspace-metadata.d.ts +12 -0
  140. package/dist/core/migrations/20260220-add-workspace-metadata.js +65 -0
  141. package/dist/core/migrations/20260220-add-workspace-metadata.js.map +1 -0
  142. package/dist/core/migrations/20260220-add-workspace-readme.d.ts +11 -0
  143. package/dist/core/migrations/20260220-add-workspace-readme.js +82 -0
  144. package/dist/core/migrations/20260220-add-workspace-readme.js.map +1 -0
  145. package/dist/core/migrations/20260220-migrate-yaml-to-json.d.ts +9 -0
  146. package/dist/core/migrations/20260220-migrate-yaml-to-json.js +64 -0
  147. package/dist/core/migrations/20260220-migrate-yaml-to-json.js.map +1 -0
  148. package/dist/core/migrations/index.d.ts +11 -0
  149. package/dist/core/migrations/index.js +23 -0
  150. package/dist/core/migrations/index.js.map +1 -0
  151. package/dist/core/schema-registry.d.ts +36 -0
  152. package/dist/core/schema-registry.js +161 -0
  153. package/dist/core/schema-registry.js.map +1 -0
  154. package/dist/core/types.d.ts +242 -3
  155. package/dist/core/types.js +21 -2
  156. package/dist/core/types.js.map +1 -1
  157. package/dist/core/user-config.d.ts +16 -0
  158. package/dist/core/user-config.js +8 -0
  159. package/dist/core/user-config.js.map +1 -1
  160. package/dist/core/validation.d.ts +973 -32
  161. package/dist/core/validation.js +163 -4
  162. package/dist/core/validation.js.map +1 -1
  163. package/dist/core/workspace-manager.d.ts +26 -2
  164. package/dist/core/workspace-manager.js +113 -15
  165. package/dist/core/workspace-manager.js.map +1 -1
  166. package/dist/core/workspace.d.ts +20 -11
  167. package/dist/core/workspace.js +123 -34
  168. package/dist/core/workspace.js.map +1 -1
  169. package/dist/mcp/connector-manager.d.ts +65 -0
  170. package/dist/mcp/connector-manager.js +223 -0
  171. package/dist/mcp/connector-manager.js.map +1 -0
  172. package/dist/mcp/connectors/asana.d.ts +2 -0
  173. package/dist/mcp/connectors/asana.js +20 -0
  174. package/dist/mcp/connectors/asana.js.map +1 -0
  175. package/dist/mcp/connectors/definitions.d.ts +45 -0
  176. package/dist/mcp/connectors/definitions.js +32 -0
  177. package/dist/mcp/connectors/definitions.js.map +1 -0
  178. package/dist/mcp/connectors/figma.d.ts +5 -0
  179. package/dist/mcp/connectors/figma.js +21 -0
  180. package/dist/mcp/connectors/figma.js.map +1 -0
  181. package/dist/mcp/connectors/gdrive.d.ts +2 -0
  182. package/dist/mcp/connectors/gdrive.js +20 -0
  183. package/dist/mcp/connectors/gdrive.js.map +1 -0
  184. package/dist/mcp/connectors/granola.d.ts +2 -0
  185. package/dist/mcp/connectors/granola.js +12 -0
  186. package/dist/mcp/connectors/granola.js.map +1 -0
  187. package/dist/mcp/connectors/linear.d.ts +2 -0
  188. package/dist/mcp/connectors/linear.js +19 -0
  189. package/dist/mcp/connectors/linear.js.map +1 -0
  190. package/dist/mcp/connectors/obsidian.d.ts +2 -0
  191. package/dist/mcp/connectors/obsidian.js +19 -0
  192. package/dist/mcp/connectors/obsidian.js.map +1 -0
  193. package/dist/mcp/connectors/pipedrive.d.ts +2 -0
  194. package/dist/mcp/connectors/pipedrive.js +20 -0
  195. package/dist/mcp/connectors/pipedrive.js.map +1 -0
  196. package/dist/mcp/connectors/slack.d.ts +2 -0
  197. package/dist/mcp/connectors/slack.js +21 -0
  198. package/dist/mcp/connectors/slack.js.map +1 -0
  199. package/dist/mcp/oauth-provider.d.ts +41 -0
  200. package/dist/mcp/oauth-provider.js +160 -0
  201. package/dist/mcp/oauth-provider.js.map +1 -0
  202. package/dist/mcp/server.d.ts +11 -0
  203. package/dist/mcp/server.js +28 -0
  204. package/dist/mcp/server.js.map +1 -0
  205. package/dist/mcp/tools.d.ts +14 -0
  206. package/dist/mcp/tools.js +172 -0
  207. package/dist/mcp/tools.js.map +1 -0
  208. package/dist/server/index.js +17 -4
  209. package/dist/server/index.js.map +1 -1
  210. package/dist/server/plugin-loader.d.ts +15 -0
  211. package/dist/server/plugin-loader.js +68 -2
  212. package/dist/server/plugin-loader.js.map +1 -1
  213. package/dist/server/routes/graph-api.js +1 -1
  214. package/dist/server/routes/graph-api.js.map +1 -1
  215. package/dist/server/routes/webhook.js +33 -0
  216. package/dist/server/routes/webhook.js.map +1 -1
  217. package/dist/services/github-provisioner.d.ts +9 -3
  218. package/dist/services/github-provisioner.js +46 -8
  219. package/dist/services/github-provisioner.js.map +1 -1
  220. package/dist/services/lint-service.d.ts +27 -0
  221. package/dist/services/lint-service.js +83 -0
  222. package/dist/services/lint-service.js.map +1 -0
  223. package/dist/services/markdown.d.ts +9 -0
  224. package/dist/services/markdown.js +26 -5
  225. package/dist/services/markdown.js.map +1 -1
  226. package/dist/services/memory-service.d.ts +1 -2
  227. package/dist/services/memory-service.js +5 -4
  228. package/dist/services/memory-service.js.map +1 -1
  229. package/dist/services/orphan-service.d.ts +31 -0
  230. package/dist/services/orphan-service.js +100 -0
  231. package/dist/services/orphan-service.js.map +1 -0
  232. package/dist/services/sync/commit.d.ts +58 -0
  233. package/dist/services/sync/commit.js +350 -0
  234. package/dist/services/sync/commit.js.map +1 -0
  235. package/dist/services/sync/context-index.d.ts +69 -0
  236. package/dist/services/sync/context-index.js +280 -0
  237. package/dist/services/sync/context-index.js.map +1 -0
  238. package/dist/services/sync/derive.d.ts +34 -0
  239. package/dist/services/sync/derive.js +164 -0
  240. package/dist/services/sync/derive.js.map +1 -0
  241. package/dist/services/sync/enrichment-state.d.ts +31 -0
  242. package/dist/services/sync/enrichment-state.js +63 -0
  243. package/dist/services/sync/enrichment-state.js.map +1 -0
  244. package/dist/services/sync/enrichment.d.ts +25 -0
  245. package/dist/services/sync/enrichment.js +121 -0
  246. package/dist/services/sync/enrichment.js.map +1 -0
  247. package/dist/services/sync/frontmatter-extractor.d.ts +40 -0
  248. package/dist/services/sync/frontmatter-extractor.js +273 -0
  249. package/dist/services/sync/frontmatter-extractor.js.map +1 -0
  250. package/dist/services/sync/graph-match-state.d.ts +33 -0
  251. package/dist/services/sync/graph-match-state.js +61 -0
  252. package/dist/services/sync/graph-match-state.js.map +1 -0
  253. package/dist/services/sync/graph-match.d.ts +53 -0
  254. package/dist/services/sync/graph-match.js +316 -0
  255. package/dist/services/sync/graph-match.js.map +1 -0
  256. package/dist/services/sync/graphrag-client.d.ts +43 -0
  257. package/dist/services/sync/graphrag-client.js +94 -0
  258. package/dist/services/sync/graphrag-client.js.map +1 -0
  259. package/dist/services/sync/graphrag-config.d.ts +16 -0
  260. package/dist/services/sync/graphrag-config.js +39 -0
  261. package/dist/services/sync/graphrag-config.js.map +1 -0
  262. package/dist/services/sync/graphrag-context.d.ts +14 -0
  263. package/dist/services/sync/graphrag-context.js +109 -0
  264. package/dist/services/sync/graphrag-context.js.map +1 -0
  265. package/dist/services/sync/graphrag-indexer.d.ts +30 -0
  266. package/dist/services/sync/graphrag-indexer.js +358 -0
  267. package/dist/services/sync/graphrag-indexer.js.map +1 -0
  268. package/dist/services/sync/llm.d.ts +32 -0
  269. package/dist/services/sync/llm.js +115 -0
  270. package/dist/services/sync/llm.js.map +1 -0
  271. package/dist/services/sync/mcp-client.d.ts +59 -0
  272. package/dist/services/sync/mcp-client.js +285 -0
  273. package/dist/services/sync/mcp-client.js.map +1 -0
  274. package/dist/services/sync/model-factory.d.ts +10 -0
  275. package/dist/services/sync/model-factory.js +24 -0
  276. package/dist/services/sync/model-factory.js.map +1 -0
  277. package/dist/services/sync/name-quality.d.ts +31 -0
  278. package/dist/services/sync/name-quality.js +60 -0
  279. package/dist/services/sync/name-quality.js.map +1 -0
  280. package/dist/services/sync/output-schemas.d.ts +92 -0
  281. package/dist/services/sync/output-schemas.js +43 -0
  282. package/dist/services/sync/output-schemas.js.map +1 -0
  283. package/dist/services/sync/prompts.d.ts +19 -0
  284. package/dist/services/sync/prompts.js +128 -0
  285. package/dist/services/sync/prompts.js.map +1 -0
  286. package/dist/services/sync/reconciler.d.ts +48 -0
  287. package/dist/services/sync/reconciler.js +295 -0
  288. package/dist/services/sync/reconciler.js.map +1 -0
  289. package/dist/services/sync/source-config.d.ts +45 -0
  290. package/dist/services/sync/source-config.js +208 -0
  291. package/dist/services/sync/source-config.js.map +1 -0
  292. package/dist/services/sync/source-definitions/asana.d.ts +15 -0
  293. package/dist/services/sync/source-definitions/asana.js +48 -0
  294. package/dist/services/sync/source-definitions/asana.js.map +1 -0
  295. package/dist/services/sync/source-definitions/definitions.d.ts +21 -0
  296. package/dist/services/sync/source-definitions/definitions.js +26 -0
  297. package/dist/services/sync/source-definitions/definitions.js.map +1 -0
  298. package/dist/services/sync/source-definitions/gdrive.d.ts +16 -0
  299. package/dist/services/sync/source-definitions/gdrive.js +68 -0
  300. package/dist/services/sync/source-definitions/gdrive.js.map +1 -0
  301. package/dist/services/sync/source-definitions/granola.d.ts +2 -0
  302. package/dist/services/sync/source-definitions/granola.js +28 -0
  303. package/dist/services/sync/source-definitions/granola.js.map +1 -0
  304. package/dist/services/sync/source-definitions/linear.d.ts +2 -0
  305. package/dist/services/sync/source-definitions/linear.js +60 -0
  306. package/dist/services/sync/source-definitions/linear.js.map +1 -0
  307. package/dist/services/sync/source-definitions/obsidian.d.ts +2 -0
  308. package/dist/services/sync/source-definitions/obsidian.js +55 -0
  309. package/dist/services/sync/source-definitions/obsidian.js.map +1 -0
  310. package/dist/services/sync/source-definitions/pipedrive.d.ts +2 -0
  311. package/dist/services/sync/source-definitions/pipedrive.js +52 -0
  312. package/dist/services/sync/source-definitions/pipedrive.js.map +1 -0
  313. package/dist/services/sync/staging.d.ts +53 -0
  314. package/dist/services/sync/staging.js +131 -0
  315. package/dist/services/sync/staging.js.map +1 -0
  316. package/dist/services/sync/structured-extractor.d.ts +49 -0
  317. package/dist/services/sync/structured-extractor.js +344 -0
  318. package/dist/services/sync/structured-extractor.js.map +1 -0
  319. package/dist/services/sync/sync-runner.d.ts +32 -0
  320. package/dist/services/sync/sync-runner.js +195 -0
  321. package/dist/services/sync/sync-runner.js.map +1 -0
  322. package/dist/services/sync/sync-state.d.ts +43 -0
  323. package/dist/services/sync/sync-state.js +154 -0
  324. package/dist/services/sync/sync-state.js.map +1 -0
  325. package/dist/services/sync/types.d.ts +203 -0
  326. package/dist/services/sync/types.js +8 -0
  327. package/dist/services/sync/types.js.map +1 -0
  328. package/dist/services/sync/unstructured-extractor.d.ts +29 -0
  329. package/dist/services/sync/unstructured-extractor.js +197 -0
  330. package/dist/services/sync/unstructured-extractor.js.map +1 -0
  331. package/dist/services/vector-service.d.ts +88 -0
  332. package/dist/services/vector-service.js +322 -0
  333. package/dist/services/vector-service.js.map +1 -0
  334. package/dist/utils/git.d.ts +26 -4
  335. package/dist/utils/git.js +55 -7
  336. package/dist/utils/git.js.map +1 -1
  337. package/dist/utils/merge-resolver.d.ts +34 -0
  338. package/dist/utils/merge-resolver.js +201 -0
  339. package/dist/utils/merge-resolver.js.map +1 -0
  340. package/dist/utils/preflight.d.ts +2 -1
  341. package/dist/utils/preflight.js +8 -1
  342. package/dist/utils/preflight.js.map +1 -1
  343. package/dist/utils/version-checker.d.ts +23 -0
  344. package/dist/utils/version-checker.js +116 -0
  345. package/dist/utils/version-checker.js.map +1 -0
  346. package/dist/utils/workspace-config.d.ts +8 -0
  347. package/dist/utils/workspace-config.js +22 -0
  348. package/dist/utils/workspace-config.js.map +1 -0
  349. package/package.json +24 -11
@@ -0,0 +1,155 @@
1
+ /**
2
+ * studiograph update
3
+ *
4
+ * Self-update command that checks for and installs the latest version
5
+ * from GitHub releases or npm registry.
6
+ */
7
+ import { Command } from 'commander';
8
+ import { intro, outro, spinner, confirm, log } from '@clack/prompts';
9
+ import { execSync, spawnSync } from 'child_process';
10
+ import { readFileSync } from 'fs';
11
+ import { join } from 'path';
12
+ import { fileURLToPath } from 'url';
13
+ import { dirname } from 'path';
14
+ // Get current CLI version
15
+ function getCurrentVersion() {
16
+ const __filename = fileURLToPath(import.meta.url);
17
+ const __dirname = dirname(__filename);
18
+ const pkgPath = join(__dirname, '../../../package.json');
19
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
20
+ return pkg.version;
21
+ }
22
+ // Check npm for latest version
23
+ async function getLatestNpmVersion() {
24
+ try {
25
+ const result = execSync('npm view studiograph version', {
26
+ encoding: 'utf-8',
27
+ stdio: 'pipe',
28
+ });
29
+ return result.trim();
30
+ }
31
+ catch {
32
+ return null;
33
+ }
34
+ }
35
+ // Compare semantic versions
36
+ function compareVersions(v1, v2) {
37
+ const parts1 = v1.split('.').map(Number);
38
+ const parts2 = v2.split('.').map(Number);
39
+ for (let i = 0; i < 3; i++) {
40
+ if (parts1[i] > parts2[i])
41
+ return 1;
42
+ if (parts1[i] < parts2[i])
43
+ return -1;
44
+ }
45
+ return 0;
46
+ }
47
+ // Detect package manager
48
+ function detectPackageManager() {
49
+ // Check if we're installed globally
50
+ try {
51
+ const globalPath = execSync('which studiograph', { encoding: 'utf-8' }).trim();
52
+ if (globalPath.includes('/.yarn/'))
53
+ return 'yarn';
54
+ if (globalPath.includes('/.pnpm/'))
55
+ return 'pnpm';
56
+ return 'npm';
57
+ }
58
+ catch {
59
+ return 'npm';
60
+ }
61
+ }
62
+ // Update via package manager
63
+ function updateViaPM(pm) {
64
+ const commands = {
65
+ npm: ['npm', 'install', '-g', 'studiograph@latest'],
66
+ yarn: ['yarn', 'global', 'add', 'studiograph@latest'],
67
+ pnpm: ['pnpm', 'add', '-g', 'studiograph@latest'],
68
+ };
69
+ try {
70
+ const result = spawnSync(commands[pm][0], commands[pm].slice(1), {
71
+ stdio: 'inherit',
72
+ shell: true,
73
+ });
74
+ return result.status === 0;
75
+ }
76
+ catch {
77
+ return false;
78
+ }
79
+ }
80
+ export const updateCommand = new Command('update')
81
+ .description('Check for and install the latest version of Studiograph')
82
+ .option('--check', 'Check for updates without installing')
83
+ .option('--force', 'Force reinstall current version')
84
+ .action(async (options) => {
85
+ intro('Studiograph Update');
86
+ const s = spinner();
87
+ s.start('Checking for updates...');
88
+ const currentVersion = getCurrentVersion();
89
+ const latestVersion = await getLatestNpmVersion();
90
+ if (!latestVersion) {
91
+ s.stop('Could not check for updates');
92
+ log.error('Failed to fetch latest version from npm registry');
93
+ outro('Update check failed. Try again later or update manually with:');
94
+ console.log(' npm install -g studiograph@latest');
95
+ process.exit(1);
96
+ }
97
+ s.stop();
98
+ const comparison = compareVersions(latestVersion, currentVersion);
99
+ if (comparison === 0 && !options.force) {
100
+ log.success(`You're already on the latest version (v${currentVersion})`);
101
+ outro('No update needed');
102
+ return;
103
+ }
104
+ if (comparison < 0) {
105
+ log.warn(`You're on v${currentVersion}, which is newer than npm (v${latestVersion})`);
106
+ log.info('You may be using a development version');
107
+ outro('No update needed');
108
+ return;
109
+ }
110
+ // Update available
111
+ log.info(`Current version: v${currentVersion}`);
112
+ log.success(`Latest version: v${latestVersion}`);
113
+ if (options.check) {
114
+ outro('Update available. Run `studiograph update` to install');
115
+ return;
116
+ }
117
+ // Confirm update
118
+ const shouldUpdate = await confirm({
119
+ message: `Update to v${latestVersion}?`,
120
+ initialValue: true,
121
+ });
122
+ if (typeof shouldUpdate === 'symbol' || !shouldUpdate) {
123
+ outro('Update cancelled');
124
+ return;
125
+ }
126
+ // Detect package manager
127
+ const pm = detectPackageManager();
128
+ log.info(`Detected package manager: ${pm}`);
129
+ // Perform update
130
+ const updateSpinner = spinner();
131
+ updateSpinner.start(`Installing v${latestVersion} via ${pm}...`);
132
+ const success = updateViaPM(pm);
133
+ if (success) {
134
+ updateSpinner.stop(`✓ Updated to v${latestVersion}`);
135
+ // Verify new version
136
+ const newVersion = getCurrentVersion();
137
+ if (newVersion === latestVersion) {
138
+ log.success('Update completed successfully!');
139
+ outro(`Studiograph is now at v${newVersion}`);
140
+ }
141
+ else {
142
+ log.warn('Update may have succeeded, but version check shows unexpected result');
143
+ log.info('Try running `studiograph --version` to verify');
144
+ outro('Update completed');
145
+ }
146
+ }
147
+ else {
148
+ updateSpinner.stop('Update failed');
149
+ log.error('Failed to install update via package manager');
150
+ outro('You can try updating manually with:');
151
+ console.log(` ${pm} ${pm === 'npm' ? 'install -g' : 'global add'} studiograph@latest`);
152
+ process.exit(1);
153
+ }
154
+ });
155
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -8,26 +8,137 @@ 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';
14
15
  import { serveCommand } from './commands/serve.js';
15
16
  import { r2Command } from './commands/r2.js';
17
+ import { appCommand } from './commands/app.js';
18
+ import { deployCommand } from './commands/deploy.js';
19
+ import { mcpCommand } from './commands/mcp.js';
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';
26
+ import { indexCommand } from './commands/index.js';
27
+ import { configCommand } from './commands/config.js';
28
+ import { lintCommand } from './commands/lint.js';
29
+ import { updateCommand } from './commands/update.js';
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';
16
34
  const program = new Command();
17
35
  program
18
36
  .name('studiograph')
19
37
  .description('Team-based AI agent platform with Git-backed knowledge graphs')
20
38
  .version('1.0.0');
21
- // Register commands
39
+ // Configure custom help to show grouped commands
40
+ program.configureHelp({
41
+ sortSubcommands: false,
42
+ // Override the command list formatter to show grouped commands
43
+ formatHelp: (cmd, helper) => {
44
+ const termWidth = helper.padWidth(cmd, helper);
45
+ const helpWidth = helper.helpWidth || 80;
46
+ const itemIndentWidth = 2;
47
+ const itemSeparatorWidth = 2;
48
+ const formatItem = (term, description) => {
49
+ const pad = ' '.repeat(Math.max(0, termWidth - term.length + itemSeparatorWidth));
50
+ return `${' '.repeat(itemIndentWidth)}${term}${pad}${description}`;
51
+ };
52
+ const sections = [
53
+ `Usage: ${helper.commandUsage(cmd)}`,
54
+ '',
55
+ helper.commandDescription(cmd),
56
+ '',
57
+ 'Options:',
58
+ ...cmd.options.map(opt => formatItem(helper.optionTerm(opt), helper.optionDescription(opt))),
59
+ formatItem('-h, --help', 'display help for command'),
60
+ '',
61
+ 'Getting Started:',
62
+ formatItem('init <team-name> [dir]', 'Initialize a new workspace'),
63
+ formatItem('join <url> [dir]', 'Join an existing workspace'),
64
+ formatItem('clone <url> [dir]', 'Clone workspace with full admin setup'),
65
+ formatItem('auth', 'Manage GitHub authentication'),
66
+ '',
67
+ 'Daily Workflow:',
68
+ formatItem('start', 'Start the AI agent'),
69
+ formatItem('pull', 'Pull latest changes'),
70
+ formatItem('push', 'Push local commits'),
71
+ '',
72
+ 'Workspace Management:',
73
+ formatItem('provision', 'Push workspace to GitHub'),
74
+ formatItem('members', 'Manage team members'),
75
+ formatItem('index', 'Index for search'),
76
+ formatItem('lint', 'Check entity completeness'),
77
+ formatItem('config', 'Manage configuration'),
78
+ '',
79
+ 'Server & Deployment:',
80
+ formatItem('serve', 'Start HTTP server'),
81
+ formatItem('deploy', 'Deploy to hosting platform'),
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
+ '',
92
+ 'Integrations & Extensions:',
93
+ formatItem('mcp', 'Claude Desktop integration'),
94
+ formatItem('connector', 'Third-party integrations'),
95
+ formatItem('app', 'Manage app plugins'),
96
+ formatItem('r2', 'Cloudflare R2 assets'),
97
+ '',
98
+ 'Maintenance:',
99
+ formatItem('reset', 'Reset workspace (remove entity data)'),
100
+ formatItem('update', 'Update Studiograph CLI'),
101
+ formatItem('help [command]', 'Display help for command'),
102
+ ];
103
+ return sections.join('\n');
104
+ },
105
+ });
106
+ // Register commands in grouped order
107
+ // Getting Started
22
108
  program.addCommand(initCommand);
23
- program.addCommand(startCommand);
24
109
  program.addCommand(joinCommand);
110
+ program.addCommand(cloneCommand);
25
111
  program.addCommand(authCommand);
26
- program.addCommand(membersCommand);
112
+ // Daily Workflow
113
+ program.addCommand(startCommand);
27
114
  program.addCommand(pullCommand);
28
115
  program.addCommand(pushCommand);
116
+ // Workspace Management
117
+ program.addCommand(provisionCommand);
118
+ program.addCommand(membersCommand);
119
+ program.addCommand(indexCommand);
120
+ program.addCommand(lintCommand);
121
+ program.addCommand(orphansCommand);
122
+ program.addCommand(configCommand);
123
+ // Server & Deployment
29
124
  program.addCommand(serveCommand);
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);
134
+ // Integrations & Extensions
135
+ program.addCommand(mcpCommand);
136
+ program.addCommand(connectorCommand);
137
+ program.addCommand(appCommand);
30
138
  program.addCommand(r2Command);
139
+ // Maintenance
140
+ program.addCommand(resetCommand);
141
+ program.addCommand(updateCommand);
31
142
  // Parse arguments
32
143
  program.parse();
33
144
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,oBAAoB;AACpB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAE9B,kBAAkB;AAClB,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,iDAAiD;AACjD,OAAO,CAAC,aAAa,CAAC;IACpB,eAAe,EAAE,KAAK;IACtB,+DAA+D;IAC/D,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QAC1B,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;QACzC,MAAM,eAAe,GAAG,CAAC,CAAC;QAC1B,MAAM,kBAAkB,GAAG,CAAC,CAAC;QAE7B,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,WAAmB,EAAE,EAAE;YACvD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC;YAClF,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,WAAW,EAAE,CAAC;QACrE,CAAC,CAAC;QAEF,MAAM,QAAQ,GAAG;YACf,UAAU,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;YACpC,EAAE;YACF,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC;YAC9B,EAAE;YACF,UAAU;YACV,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5F,UAAU,CAAC,YAAY,EAAE,0BAA0B,CAAC;YACpD,EAAE;YACF,kBAAkB;YAClB,UAAU,CAAC,wBAAwB,EAAE,4BAA4B,CAAC;YAClE,UAAU,CAAC,kBAAkB,EAAE,4BAA4B,CAAC;YAC5D,UAAU,CAAC,mBAAmB,EAAE,uCAAuC,CAAC;YACxE,UAAU,CAAC,MAAM,EAAE,8BAA8B,CAAC;YAClD,EAAE;YACF,iBAAiB;YACjB,UAAU,CAAC,OAAO,EAAE,oBAAoB,CAAC;YACzC,UAAU,CAAC,MAAM,EAAE,qBAAqB,CAAC;YACzC,UAAU,CAAC,MAAM,EAAE,oBAAoB,CAAC;YACxC,EAAE;YACF,uBAAuB;YACvB,UAAU,CAAC,WAAW,EAAE,0BAA0B,CAAC;YACnD,UAAU,CAAC,SAAS,EAAE,qBAAqB,CAAC;YAC5C,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC;YACvC,UAAU,CAAC,MAAM,EAAE,2BAA2B,CAAC;YAC/C,UAAU,CAAC,QAAQ,EAAE,sBAAsB,CAAC;YAC5C,EAAE;YACF,sBAAsB;YACtB,UAAU,CAAC,OAAO,EAAE,mBAAmB,CAAC;YACxC,UAAU,CAAC,QAAQ,EAAE,4BAA4B,CAAC;YAClD,EAAE;YACF,YAAY;YACZ,UAAU,CAAC,QAAQ,EAAE,qBAAqB,CAAC;YAC3C,UAAU,CAAC,MAAM,EAAE,qCAAqC,CAAC;YACzD,UAAU,CAAC,QAAQ,EAAE,8BAA8B,CAAC;YACpD,UAAU,CAAC,UAAU,EAAE,4CAA4C,CAAC;YACpE,UAAU,CAAC,QAAQ,EAAE,uBAAuB,CAAC;YAC7C,UAAU,CAAC,QAAQ,EAAE,2BAA2B,CAAC;YACjD,UAAU,CAAC,UAAU,EAAE,0BAA0B,CAAC;YAClD,EAAE;YACF,4BAA4B;YAC5B,UAAU,CAAC,KAAK,EAAE,4BAA4B,CAAC;YAC/C,UAAU,CAAC,WAAW,EAAE,0BAA0B,CAAC;YACnD,UAAU,CAAC,KAAK,EAAE,oBAAoB,CAAC;YACvC,UAAU,CAAC,IAAI,EAAE,sBAAsB,CAAC;YACxC,EAAE;YACF,cAAc;YACd,UAAU,CAAC,OAAO,EAAE,sCAAsC,CAAC;YAC3D,UAAU,CAAC,QAAQ,EAAE,wBAAwB,CAAC;YAC9C,UAAU,CAAC,gBAAgB,EAAE,0BAA0B,CAAC;SACzD,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF,CAAC,CAAC;AAEH,qCAAqC;AACrC,kBAAkB;AAClB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAEhC,iBAAiB;AACjB,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAEhC,uBAAuB;AACvB,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,sBAAsB;AACtB,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,YAAY;AACZ,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAEpC,4BAA4B;AAC5B,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACrC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAE9B,cAAc;AACd,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,kBAAkB;AAClB,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Example entity scaffolding for new workspaces
3
+ *
4
+ * Creates a connected set of example entities during `studiograph init`
5
+ * to demonstrate the knowledge graph pattern — a client, project, person,
6
+ * meeting, and decision all wikilinked together, distributed across repos
7
+ * matching the fluid folder model.
8
+ */
9
+ import { Workspace } from '../core/workspace.js';
10
+ export declare function scaffoldExampleEntities(workspace: Workspace, teamName: string): Promise<void>;
@@ -0,0 +1,302 @@
1
+ /**
2
+ * Example entity scaffolding for new workspaces
3
+ *
4
+ * Creates a connected set of example entities during `studiograph init`
5
+ * to demonstrate the knowledge graph pattern — a client, project, person,
6
+ * meeting, and decision all wikilinked together, distributed across repos
7
+ * matching the fluid folder model.
8
+ */
9
+ import { join } from 'path';
10
+ import { writeFileSync } from 'fs';
11
+ import { RepoType } from '../core/types.js';
12
+ import { MarkdownService } from '../services/markdown.js';
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
+ ];
20
+ function buildEntities(now) {
21
+ const shared = {
22
+ created_by: 'studiograph',
23
+ updated_by: 'studiograph',
24
+ created_at: now,
25
+ updated_at: now,
26
+ tags: ['example'],
27
+ };
28
+ return [
29
+ {
30
+ repo: 'clients',
31
+ entityType: 'client',
32
+ entityId: 'meridian-health',
33
+ frontmatter: {
34
+ entity_type: 'client',
35
+ entity_id: 'meridian-health',
36
+ ...shared,
37
+ name: 'Meridian Health',
38
+ type: 'corporate',
39
+ status: 'active',
40
+ industry: 'Healthcare',
41
+ contacts: ['[[sarah-chen]]'],
42
+ projects: ['[[meridian-rebrand]]'],
43
+ },
44
+ content: `# Meridian Health
45
+
46
+ Regional healthcare network with 12 hospitals across the Midwest. Engaged us for a comprehensive brand refresh following their merger with Lakeside Medical Group.
47
+
48
+ ## Relationship History
49
+
50
+ - **2025-Q4** — Initial outreach via referral from [[sarah-chen]]
51
+ - **2026-Q1** — Discovery workshops and brand audit
52
+ - **2026-Q1** — Kicked off [[meridian-rebrand]]
53
+
54
+ ## Key Contacts
55
+
56
+ - [[sarah-chen]] — VP of Marketing, primary stakeholder
57
+ `,
58
+ },
59
+ {
60
+ repo: 'people',
61
+ entityType: 'person',
62
+ entityId: 'sarah-chen',
63
+ frontmatter: {
64
+ entity_type: 'person',
65
+ entity_id: 'sarah-chen',
66
+ ...shared,
67
+ name: 'Sarah Chen',
68
+ role: 'VP of Marketing',
69
+ status: 'client',
70
+ organization: '[[meridian-health]]',
71
+ projects: ['[[meridian-rebrand]]'],
72
+ },
73
+ content: `# Sarah Chen
74
+
75
+ VP of Marketing at [[meridian-health]]. Primary stakeholder for the [[meridian-rebrand]] engagement.
76
+
77
+ ## Notes
78
+
79
+ - Prefers async communication (email/Slack over calls)
80
+ - Strong opinions on accessibility — ensure all deliverables meet WCAG 2.1 AA
81
+ - Previously led rebrand at Cedar Health (2023)
82
+ `,
83
+ },
84
+ {
85
+ repo: 'projects',
86
+ entityType: 'project',
87
+ entityId: 'meridian-rebrand',
88
+ frontmatter: {
89
+ entity_type: 'project',
90
+ entity_id: 'meridian-rebrand',
91
+ ...shared,
92
+ name: 'Meridian Health Brand Refresh',
93
+ client: '[[meridian-health]]',
94
+ status: 'active',
95
+ start_date: '2026-02-10',
96
+ team: ['[[sarah-chen]]'],
97
+ },
98
+ content: `# Meridian Health Brand Refresh
99
+
100
+ Comprehensive brand identity refresh for [[meridian-health]] following their merger with Lakeside Medical Group. The goal is to create a unified brand that honors both organizations' heritage while signaling a forward-looking, patient-centered vision.
101
+
102
+ ## Objectives
103
+
104
+ 1. Unified visual identity across all 12 hospital locations
105
+ 2. Updated brand guidelines and asset library
106
+ 3. Digital-first brand system (web, app, social)
107
+
108
+ ## Key Decisions
109
+
110
+ - [[dec-2026-001]] — Adopt evolutionary brand refresh (not revolutionary)
111
+
112
+ ## Timeline
113
+
114
+ - **Feb 2026** — Discovery & audit (see [[2026-02-10-kickoff]])
115
+ - **Mar 2026** — Concept development
116
+ - **Apr 2026** — Refinement & testing
117
+ - **May 2026** — Final delivery & rollout planning
118
+ `,
119
+ },
120
+ {
121
+ repo: 'meetings',
122
+ entityType: 'meeting',
123
+ entityId: '2026-02-10-kickoff',
124
+ frontmatter: {
125
+ entity_type: 'meeting',
126
+ entity_id: '2026-02-10-kickoff',
127
+ ...shared,
128
+ name: 'Meridian Rebrand Kickoff',
129
+ date: '2026-02-10',
130
+ attendees: ['[[sarah-chen]]'],
131
+ related_projects: ['[[meridian-rebrand]]'],
132
+ },
133
+ content: `# Meridian Rebrand Kickoff
134
+
135
+ Kickoff meeting for the [[meridian-rebrand]] project with [[sarah-chen]] and the Meridian marketing team.
136
+
137
+ ## Agenda
138
+
139
+ 1. Introductions and project overview
140
+ 2. Brand audit findings review
141
+ 3. Timeline and milestones
142
+ 4. Decision on brand refresh approach
143
+
144
+ ## Discussion Notes
145
+
146
+ - Meridian team emphasized the importance of retaining trust signals from both legacy brands
147
+ - Patient research shows strong emotional attachment to the Lakeside "caring hands" motif
148
+ - Board has approved budget for full rollout by Q3 2026
149
+
150
+ ## Decisions Made
151
+
152
+ - [[dec-2026-001]] — Agreed to pursue an evolutionary refresh rather than a complete rebrand
153
+
154
+ ## Action Items
155
+
156
+ - [ ] Share brand audit deck with Meridian team
157
+ - [ ] Schedule stakeholder interviews (week of Feb 17)
158
+ - [ ] Draft creative brief by Feb 14
159
+ `,
160
+ },
161
+ {
162
+ repo: 'projects',
163
+ entityType: 'decision',
164
+ entityId: 'dec-2026-001',
165
+ frontmatter: {
166
+ entity_type: 'decision',
167
+ entity_id: 'dec-2026-001',
168
+ ...shared,
169
+ id: 'DEC-2026-001',
170
+ title: 'Adopt evolutionary brand refresh',
171
+ date: '2026-02-10',
172
+ status: 'accepted',
173
+ decision_makers: ['[[sarah-chen]]'],
174
+ stakeholders: ['[[meridian-health]]'],
175
+ },
176
+ content: `# DEC-2026-001: Adopt Evolutionary Brand Refresh
177
+
178
+ ## Context
179
+
180
+ Following the merger of [[meridian-health]] and Lakeside Medical Group, the combined organization needs a unified brand identity. The core question: should we build an entirely new brand from scratch, or evolve the existing Meridian identity?
181
+
182
+ ## Alternatives Considered
183
+
184
+ 1. **Revolutionary rebrand** — entirely new name, logo, and visual system
185
+ 2. **Evolutionary refresh** — retain Meridian name and core equity, modernize visual system, incorporate Lakeside heritage elements
186
+ 3. **Dual-brand** — maintain both brands with a shared parent identity
187
+
188
+ ## Decision
189
+
190
+ Option 2: Evolutionary refresh. Retain the Meridian Health name and update the visual identity to reflect the merged organization's expanded scope and values.
191
+
192
+ ## Rationale
193
+
194
+ - Patient research shows 78% brand recognition for "Meridian" in core markets
195
+ - Revolutionary rebrand estimated at 2x the budget and timeline
196
+ - Lakeside heritage can be honored through visual motifs without a name change
197
+
198
+ ## Consequences
199
+
200
+ - **Positive:** Preserves brand equity, faster rollout, lower risk
201
+ - **Negative:** Some Lakeside staff may feel underrepresented; requires careful internal communications
202
+ `,
203
+ },
204
+ ];
205
+ }
206
+ function buildOnboardingGuide(teamName) {
207
+ return `# Welcome to ${teamName}
208
+
209
+ This workspace is powered by **Studiograph** — a knowledge graph for creative teams. Your team's knowledge is stored as Markdown files with YAML frontmatter, connected by \`[[wikilinks]]\`.
210
+
211
+ ## How It Works
212
+
213
+ Every piece of knowledge is an **entity** — a Markdown file with structured metadata:
214
+
215
+ \`\`\`markdown
216
+ ---
217
+ entity_type: project
218
+ entity_id: my-project
219
+ name: "My Project"
220
+ status: active
221
+ created_at: 2026-02-20T00:00:00.000Z
222
+ updated_at: 2026-02-20T00:00:00.000Z
223
+ created_by: your-name
224
+ updated_by: your-name
225
+ ---
226
+
227
+ # My Project
228
+
229
+ Project details here. Link to other entities with [[wikilinks]].
230
+ \`\`\`
231
+
232
+ ## Entity Types
233
+
234
+ | Type | Purpose | Example |
235
+ |------|---------|---------|
236
+ | \`client\` | Client organizations | Meridian Health |
237
+ | \`project\` | Engagements & initiatives | Brand refresh |
238
+ | \`person\` | Contacts & team members | Sarah Chen |
239
+ | \`meeting\` | Meeting notes & action items | Kickoff meeting |
240
+ | \`decision\` | Structured decision records | DEC-2026-001 |
241
+ | \`proposal\` | Client proposals & SOWs | — |
242
+ | \`deliverable\` | Scoped outputs & artifacts | — |
243
+ | \`brief\` | Project briefs | — |
244
+
245
+ ## Common Commands
246
+
247
+ \`\`\`bash
248
+ studiograph start # Start an interactive AI session
249
+ studiograph search "query" # Search across all repos
250
+ studiograph list # List entities in a repo
251
+ studiograph get <entity-id> # View a specific entity
252
+ \`\`\`
253
+
254
+ ## Explore the Examples
255
+
256
+ Example entities are tagged \`example\` and distributed across repos:
257
+
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
263
+
264
+ Notice how \`[[wikilinks]]\` connect everything into a navigable graph across repos.
265
+
266
+ ## Cleaning Up Examples
267
+
268
+ When you're ready to remove the example entities, delete the folders tagged \`example\`:
269
+
270
+ \`\`\`bash
271
+ rm -rf clients/meridian-health projects/meridian-rebrand projects/dec-2026-001
272
+ rm -rf people/sarah-chen meetings/2026-02-10-kickoff
273
+ \`\`\`
274
+ `;
275
+ }
276
+ export async function scaffoldExampleEntities(workspace, teamName) {
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
287
+ const md = new MarkdownService();
288
+ const now = new Date().toISOString();
289
+ const entities = buildEntities(now);
290
+ for (const entity of entities) {
291
+ const filePath = join(workspacePath, entity.repo, entity.entityId, 'main.md');
292
+ md.writeFile(filePath, {
293
+ frontmatter: entity.frontmatter,
294
+ content: entity.content,
295
+ wikilinks: [],
296
+ });
297
+ }
298
+ // Write STUDIOGRAPH.md to workspace root
299
+ const guidePath = join(workspacePath, 'STUDIOGRAPH.md');
300
+ writeFileSync(guidePath, buildOnboardingGuide(teamName), 'utf-8');
301
+ }
302
+ //# sourceMappingURL=scaffolding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffolding.js","sourceRoot":"","sources":["../../src/cli/scaffolding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Shared setup wizard helpers for join/clone commands.
3
+ *
4
+ * Reusable interactive prompts for:
5
+ * - GitHub PAT authentication
6
+ * - LLM provider configuration
7
+ * - Connector configuration for sync sources
8
+ */
9
+ /**
10
+ * Prompt for GitHub PAT if not authenticated.
11
+ * Returns the stored auth (existing or newly created).
12
+ */
13
+ export declare function promptGitHubAuthIfNeeded(): Promise<{
14
+ token: string;
15
+ user: {
16
+ login: string;
17
+ name: string;
18
+ email: string;
19
+ };
20
+ }>;
21
+ /**
22
+ * Prompt for LLM provider setup if not configured.
23
+ * Checks user config and env vars. Skips if already set.
24
+ */
25
+ export declare function promptLLMSetupIfNeeded(): Promise<void>;
26
+ /**
27
+ * Detect sync sources in the workspace and prompt for missing connectors.
28
+ * Only prompts for connectors that have a known definition.
29
+ */
30
+ export declare function promptConnectorSetup(workspacePath: string): Promise<number>;