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
@@ -1 +1 @@
1
- {"version":3,"file":"join.js","sourceRoot":"","sources":["../../../src/cli/commands/join.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"join.js","sourceRoot":"","sources":["../../../src/cli/commands/join.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * studiograph lint command
3
+ *
4
+ * Schema-aware completeness checker — walks all entities and flags missing
5
+ * recommended fields.
6
+ */
7
+ import { Command } from 'commander';
8
+ export declare const lintCommand: Command;
@@ -0,0 +1,70 @@
1
+ /**
2
+ * studiograph lint command
3
+ *
4
+ * Schema-aware completeness checker — walks all entities and flags missing
5
+ * recommended fields.
6
+ */
7
+ import { Command } from 'commander';
8
+ import { Workspace } from '../../core/workspace.js';
9
+ import { WorkspaceManager } from '../../core/workspace-manager.js';
10
+ import { intro, outro, spinner } from '@clack/prompts';
11
+ import { lintWorkspace } from '../../services/lint-service.js';
12
+ export const lintCommand = new Command('lint')
13
+ .description('Check for missing or incomplete entity fields across the workspace')
14
+ .option('--fix', 'Suggest fixes for incomplete records (future)', false)
15
+ .action(async (options) => {
16
+ intro('Studiograph Lint');
17
+ const s = spinner();
18
+ s.start('Loading workspace');
19
+ try {
20
+ const workspace = new Workspace();
21
+ if (!workspace.isWorkspace()) {
22
+ console.error('❌ Not a Studiograph workspace. Run `studiograph init` first.');
23
+ process.exit(1);
24
+ }
25
+ const config = await workspace.loadConfig();
26
+ const gitUser = { id: 'system', name: 'system', email: 'system@local' };
27
+ const cliUser = { id: 'system', name: 'system', email: 'system@local', role: 'admin' };
28
+ const manager = new WorkspaceManager(process.cwd(), config, gitUser, cliUser);
29
+ s.message('Scanning entities');
30
+ const issues = await lintWorkspace(manager);
31
+ s.stop('Scan complete');
32
+ if (issues.length === 0) {
33
+ outro('✅ No issues found — all entities are complete!');
34
+ return;
35
+ }
36
+ // Group issues by entity type
37
+ const grouped = new Map();
38
+ for (const issue of issues) {
39
+ const key = issue.entityType;
40
+ if (!grouped.has(key))
41
+ grouped.set(key, []);
42
+ grouped.get(key).push(issue);
43
+ }
44
+ console.log('');
45
+ console.log(`Found ${issues.length} incomplete entities:\n`);
46
+ for (const [entityType, typeIssues] of grouped.entries()) {
47
+ console.log(`${entityType.toUpperCase()} (${typeIssues.length} incomplete)`);
48
+ // Show up to 5 examples per type
49
+ const examples = typeIssues.slice(0, 5);
50
+ for (const issue of examples) {
51
+ console.log(` - ${issue.repo}/${issue.entityType}/${issue.entityId}`);
52
+ console.log(` Missing: ${issue.missingFields.join(', ')}`);
53
+ }
54
+ if (typeIssues.length > 5) {
55
+ console.log(` ... and ${typeIssues.length - 5} more`);
56
+ }
57
+ console.log('');
58
+ }
59
+ if (options.fix) {
60
+ console.log('--fix flag is not yet implemented (future feature)');
61
+ }
62
+ outro('Lint complete');
63
+ }
64
+ catch (error) {
65
+ s.stop('Error');
66
+ console.error('Failed to lint workspace:', error instanceof Error ? error.message : error);
67
+ process.exit(1);
68
+ }
69
+ });
70
+ //# sourceMappingURL=lint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lint.js","sourceRoot":"","sources":["../../../src/cli/commands/lint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * studiograph mcp
3
+ *
4
+ * Starts the Studiograph MCP server for integration with Claude Desktop
5
+ * and other MCP-compatible clients.
6
+ *
7
+ * The server communicates over stdio (JSON-RPC). Claude Desktop spawns this
8
+ * process and communicates directly — no HTTP port is opened.
9
+ *
10
+ * Claude Desktop config (~/.config/Claude/claude_desktop_config.json or
11
+ * ~/Library/Application Support/Claude/claude_desktop_config.json):
12
+ *
13
+ * {
14
+ * "mcpServers": {
15
+ * "studiograph": {
16
+ * "command": "studiograph",
17
+ * "args": ["mcp"],
18
+ * "cwd": "/absolute/path/to/your/workspace"
19
+ * }
20
+ * }
21
+ * }
22
+ *
23
+ * NOTE: Do not use console.log() in this process — stdout is owned by the
24
+ * MCP protocol. Use console.error() for any diagnostic output.
25
+ */
26
+ import { Command } from 'commander';
27
+ export declare const mcpCommand: Command;
@@ -0,0 +1,56 @@
1
+ /**
2
+ * studiograph mcp
3
+ *
4
+ * Starts the Studiograph MCP server for integration with Claude Desktop
5
+ * and other MCP-compatible clients.
6
+ *
7
+ * The server communicates over stdio (JSON-RPC). Claude Desktop spawns this
8
+ * process and communicates directly — no HTTP port is opened.
9
+ *
10
+ * Claude Desktop config (~/.config/Claude/claude_desktop_config.json or
11
+ * ~/Library/Application Support/Claude/claude_desktop_config.json):
12
+ *
13
+ * {
14
+ * "mcpServers": {
15
+ * "studiograph": {
16
+ * "command": "studiograph",
17
+ * "args": ["mcp"],
18
+ * "cwd": "/absolute/path/to/your/workspace"
19
+ * }
20
+ * }
21
+ * }
22
+ *
23
+ * NOTE: Do not use console.log() in this process — stdout is owned by the
24
+ * MCP protocol. Use console.error() for any diagnostic output.
25
+ */
26
+ import { Command } from 'commander';
27
+ import { Workspace } from '../../core/workspace.js';
28
+ import { WorkspaceManager } from '../../core/workspace-manager.js';
29
+ import { loadUserConfig } from '../../core/user-config.js';
30
+ import { startMcpServer } from '../../mcp/server.js';
31
+ export const mcpCommand = new Command('mcp')
32
+ .description('Start the Studiograph MCP server for Claude Desktop integration')
33
+ .action(async () => {
34
+ const workspace = new Workspace();
35
+ if (!workspace.isWorkspace()) {
36
+ process.stderr.write('Not a Studiograph workspace.\n' +
37
+ 'Run `studiograph init` first, or set the cwd in your Claude Desktop config ' +
38
+ 'to the root of your workspace.\n');
39
+ process.exit(1);
40
+ }
41
+ const config = await workspace.loadConfig();
42
+ // Propagate Anthropic API key from user config if not already set
43
+ const userConfig = loadUserConfig();
44
+ if (userConfig.api_key && !process.env.ANTHROPIC_API_KEY) {
45
+ process.env.ANTHROPIC_API_KEY = userConfig.api_key;
46
+ }
47
+ // MCP uses a service identity for git commits made via create/update tools
48
+ const gitUser = {
49
+ id: 'mcp',
50
+ name: 'Studiograph MCP',
51
+ email: 'noreply@studiograph.local',
52
+ };
53
+ const workspaceManager = new WorkspaceManager(process.cwd(), config, gitUser, { ...gitUser, role: 'admin' });
54
+ await startMcpServer(workspaceManager);
55
+ });
56
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KACzC,WAAW,CAAC,iEAAiE,CAAC;KAC9E,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;IAElC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gCAAgC;YAChC,6EAA6E;YAC7E,kCAAkC,CACnC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;IAE5C,kEAAkE;IAClE,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IACpC,IAAI,UAAU,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC;IACrD,CAAC;IAED,2EAA2E;IAC3E,MAAM,OAAO,GAAG;QACd,EAAE,EAAK,KAAK;QACZ,IAAI,EAAG,iBAAiB;QACxB,KAAK,EAAE,2BAA2B;KACnC,CAAC;IAEF,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAC3C,OAAO,CAAC,GAAG,EAAE,EACb,MAAM,EACN,OAAO,EACP,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,OAAgB,EAAE,CACvC,CAAC;IAEF,MAAM,cAAc,CAAC,gBAAgB,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * studiograph orphans
3
+ *
4
+ * Finds entities with zero inbound wikilink references ("orphans")
5
+ * and optionally tombstones or deletes them.
6
+ */
7
+ import { Command } from 'commander';
8
+ export declare const orphansCommand: Command;
@@ -0,0 +1,125 @@
1
+ /**
2
+ * studiograph orphans
3
+ *
4
+ * Finds entities with zero inbound wikilink references ("orphans")
5
+ * and optionally tombstones or deletes them.
6
+ */
7
+ import { Command } from 'commander';
8
+ import { Workspace } from '../../core/workspace.js';
9
+ import { WorkspaceManager } from '../../core/workspace-manager.js';
10
+ import { intro, outro, spinner, confirm } from '@clack/prompts';
11
+ import { findOrphans } from '../../services/orphan-service.js';
12
+ import { SyncStateManager } from '../../services/sync/sync-state.js';
13
+ export const orphansCommand = new Command('orphans')
14
+ .description('Find entities with zero inbound references')
15
+ .option('--entity-types <types>', 'Comma-separated entity types to check (e.g. person,client)')
16
+ .option('--min-age <days>', 'Only flag entities older than N days', parseInt)
17
+ .option('--repos <repos>', 'Comma-separated repo names to scan')
18
+ .option('--tombstone', 'Add orphans to sync-state tombstones so future syncs skip them')
19
+ .option('--delete', 'Delete orphan entity files and tombstone them')
20
+ .option('--dry-run', 'Preview changes without modifying anything')
21
+ .action(async (options) => {
22
+ intro('Studiograph Orphans');
23
+ const s = spinner();
24
+ s.start('Loading workspace');
25
+ try {
26
+ const workspace = new Workspace();
27
+ if (!workspace.isWorkspace()) {
28
+ console.error('❌ Not a Studiograph workspace. Run `studiograph init` first.');
29
+ process.exit(1);
30
+ }
31
+ const config = await workspace.loadConfig();
32
+ const gitUser = { id: 'system', name: 'system', email: 'system@local' };
33
+ const cliUser = { id: 'system', name: 'system', email: 'system@local', role: 'admin' };
34
+ const manager = new WorkspaceManager(process.cwd(), config, gitUser, cliUser);
35
+ s.message('Scanning for orphans');
36
+ const filters = {
37
+ entityTypes: options.entityTypes?.split(',').map((t) => t.trim()),
38
+ minAgeDays: options.minAge,
39
+ repos: options.repos?.split(',').map((r) => r.trim()),
40
+ };
41
+ const result = findOrphans(manager, filters);
42
+ s.stop('Scan complete');
43
+ if (result.totalOrphans === 0) {
44
+ outro(`✅ No orphans found (scanned ${result.totalScanned} entities)`);
45
+ return;
46
+ }
47
+ // Group by entity type
48
+ const grouped = new Map();
49
+ for (const orphan of result.orphans) {
50
+ const key = orphan.entityType;
51
+ if (!grouped.has(key))
52
+ grouped.set(key, []);
53
+ grouped.get(key).push(orphan);
54
+ }
55
+ console.log('');
56
+ console.log(`Found ${result.totalOrphans} orphans (of ${result.totalScanned} scanned):\n`);
57
+ for (const [entityType, typeOrphans] of grouped.entries()) {
58
+ console.log(`${entityType.toUpperCase()} (${typeOrphans.length})`);
59
+ const examples = typeOrphans.slice(0, 10);
60
+ for (const orphan of examples) {
61
+ const name = orphan.name || orphan.entityId;
62
+ const age = orphan.createdAt
63
+ ? `created ${orphan.createdAt}`
64
+ : '';
65
+ console.log(` - ${orphan.repo}/${orphan.entityType}/${orphan.entityId}${age ? ` (${age})` : ''}`);
66
+ }
67
+ if (typeOrphans.length > 10) {
68
+ console.log(` ... and ${typeOrphans.length - 10} more`);
69
+ }
70
+ console.log('');
71
+ }
72
+ // Tombstone action
73
+ if (options.tombstone || options.delete) {
74
+ const action = options.delete ? 'delete and tombstone' : 'tombstone';
75
+ if (options.dryRun) {
76
+ console.log(`[dry-run] Would ${action} ${result.totalOrphans} orphan(s)`);
77
+ outro('Dry run complete');
78
+ return;
79
+ }
80
+ const shouldProceed = await confirm({
81
+ message: `${action === 'delete and tombstone' ? 'Delete' : 'Tombstone'} ${result.totalOrphans} orphan(s)?`,
82
+ initialValue: false,
83
+ });
84
+ if (!shouldProceed || typeof shouldProceed === 'symbol') {
85
+ outro('Cancelled');
86
+ return;
87
+ }
88
+ const actionSpinner = spinner();
89
+ actionSpinner.start(`Processing ${result.totalOrphans} orphans...`);
90
+ const syncState = new SyncStateManager(process.cwd());
91
+ let deleted = 0;
92
+ let tombstoned = 0;
93
+ for (const orphan of result.orphans) {
94
+ // Delete entity files if --delete
95
+ if (options.delete) {
96
+ try {
97
+ const graph = manager.getGraph(orphan.repo);
98
+ await graph.delete(orphan.entityType, orphan.entityId);
99
+ deleted++;
100
+ }
101
+ catch {
102
+ // Entity might already be gone
103
+ }
104
+ }
105
+ // Add to tombstones
106
+ syncState.addTombstone(orphan.entityId);
107
+ tombstoned++;
108
+ }
109
+ actionSpinner.stop('Done');
110
+ if (options.delete) {
111
+ console.log(`\nDeleted ${deleted} entities, tombstoned ${tombstoned}`);
112
+ }
113
+ else {
114
+ console.log(`\nTombstoned ${tombstoned} entities`);
115
+ }
116
+ }
117
+ outro('Orphan scan complete');
118
+ }
119
+ catch (error) {
120
+ s.stop('Error');
121
+ console.error('Failed to scan for orphans:', error instanceof Error ? error.message : error);
122
+ process.exit(1);
123
+ }
124
+ });
125
+ //# sourceMappingURL=orphans.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orphans.js","sourceRoot":"","sources":["../../../src/cli/commands/orphans.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * studiograph provision
3
+ *
4
+ * Provisions an existing local workspace to GitHub, creating repos for all
5
+ * content directories and the .studiograph config directory.
6
+ */
7
+ import { Command } from 'commander';
8
+ export declare const provisionCommand: Command;
@@ -0,0 +1,116 @@
1
+ /**
2
+ * studiograph provision
3
+ *
4
+ * Provisions an existing local workspace to GitHub, creating repos for all
5
+ * content directories and the .studiograph config directory.
6
+ */
7
+ import { Command } from 'commander';
8
+ import { intro, outro, spinner, log, confirm } from '@clack/prompts';
9
+ import { execSync } from 'child_process';
10
+ import { Workspace } from '../../core/workspace.js';
11
+ import { loadToken, promptForPAT, storeToken, getGitHubUser, getAuthenticatedOctokit } from '../../auth/github.js';
12
+ import { provisionWorkspace } from '../../services/github-provisioner.js';
13
+ import { runPreflight } from '../../utils/preflight.js';
14
+ export const provisionCommand = new Command('provision')
15
+ .description('Push an existing workspace to GitHub')
16
+ .option('--org <github-org>', 'GitHub organization to create repos in')
17
+ .option('--force', 'Re-provision even if already provisioned')
18
+ .action(async (options) => {
19
+ intro('Provision Workspace to GitHub');
20
+ const ready = runPreflight();
21
+ if (!ready) {
22
+ process.exit(1);
23
+ return;
24
+ }
25
+ try {
26
+ // Check if we're in a workspace
27
+ const workspace = new Workspace();
28
+ if (!workspace.isWorkspace()) {
29
+ outro('❌ Not a Studiograph workspace. Run `studiograph init` first.');
30
+ process.exit(1);
31
+ return;
32
+ }
33
+ const config = await workspace.loadConfig();
34
+ // Check if already provisioned (any repo has github_url)
35
+ const alreadyProvisioned = config.repos.some(r => r.github_url);
36
+ if (alreadyProvisioned && !options.force) {
37
+ const hasGithubOrg = config.github?.org;
38
+ const orgInfo = hasGithubOrg ? ` (org: ${hasGithubOrg})` : '';
39
+ log.warn(`Workspace already provisioned to GitHub${orgInfo}`);
40
+ log.info('Use --force to re-provision');
41
+ const shouldContinue = await confirm({
42
+ message: 'Continue anyway?',
43
+ initialValue: false,
44
+ });
45
+ if (!shouldContinue || typeof shouldContinue === 'symbol') {
46
+ outro('Cancelled');
47
+ process.exit(0);
48
+ return;
49
+ }
50
+ }
51
+ // Get GitHub org
52
+ let githubOrg = options.org;
53
+ if (!githubOrg && config.github?.org) {
54
+ // Use existing org from config
55
+ githubOrg = config.github.org;
56
+ log.info(`Using GitHub org from config: ${githubOrg}`);
57
+ }
58
+ if (!githubOrg) {
59
+ outro('❌ GitHub org required. Use: studiograph provision --org <github-org>');
60
+ process.exit(1);
61
+ return;
62
+ }
63
+ // Ensure we have a token
64
+ let stored = loadToken();
65
+ if (!stored) {
66
+ log.info('No GitHub token found. Starting authentication...');
67
+ const token = await promptForPAT();
68
+ const user = await getGitHubUser(token);
69
+ storeToken(token, user);
70
+ stored = { token, user };
71
+ log.success(`Authenticated as ${user.login}`);
72
+ }
73
+ const octokit = getAuthenticatedOctokit(stored.token);
74
+ // Provision!
75
+ const provisionSpinner = spinner();
76
+ provisionSpinner.start('Creating GitHub repos...');
77
+ const result = await provisionWorkspace({
78
+ octokit,
79
+ org: githubOrg,
80
+ workspacePath: workspace.getWorkspacePath(),
81
+ config,
82
+ onProgress: (msg) => provisionSpinner.message(msg),
83
+ });
84
+ // Write back updated config with github_urls + org
85
+ result.config.github = { org: githubOrg };
86
+ workspace.writeConfig(result.config);
87
+ // Push updated workspace.json back to config repo
88
+ provisionSpinner.message('Updating config repo with GitHub URLs...');
89
+ const configPath = workspace.getWorkspacePath() + '/.studiograph';
90
+ try {
91
+ execSync('git add workspace.json', { cwd: configPath, stdio: 'pipe' });
92
+ execSync('git commit -m "Add GitHub URLs to workspace config"', { cwd: configPath, stdio: 'pipe' });
93
+ execSync('git push origin main', { cwd: configPath, stdio: 'pipe' });
94
+ }
95
+ catch (err) {
96
+ // If nothing to commit or push fails, continue anyway
97
+ }
98
+ provisionSpinner.stop('GitHub repos created');
99
+ // Show join URL
100
+ const configRepoName = `${config.team_name.toLowerCase().replace(/[^a-z0-9]+/g, '-')}-config`;
101
+ const configRepoUrl = `https://github.com/${githubOrg}/${configRepoName}.git`;
102
+ if (result.skipped.length > 0) {
103
+ log.warn(`Skipped ${result.skipped.length} repo(s) with no commits: ${result.skipped.join(', ')}`);
104
+ log.info('Commit content to these repos and re-run provision to push them.');
105
+ }
106
+ log.success('All repos pushed to GitHub!');
107
+ log.info('\nTo join this workspace from another machine:');
108
+ log.info(` studiograph join ${configRepoUrl}`);
109
+ outro('✨ Workspace provisioned to GitHub!');
110
+ }
111
+ catch (error) {
112
+ outro(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`);
113
+ process.exit(1);
114
+ }
115
+ });
116
+ //# sourceMappingURL=provision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provision.js","sourceRoot":"","sources":["../../../src/cli/commands/provision.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACnH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC;KACrD,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,oBAAoB,EAAE,wCAAwC,CAAC;KACtE,MAAM,CAAC,SAAS,EAAE,0CAA0C,CAAC;KAC7D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAEvC,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAExC,IAAI,CAAC;QACH,gCAAgC;QAChC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;YAC7B,KAAK,CAAC,8DAA8D,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;QAE5C,yDAAyD;QACzD,MAAM,kBAAkB,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,kBAAkB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACzC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;YACxC,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,UAAU,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAE9D,GAAG,CAAC,IAAI,CAAC,0CAA0C,OAAO,EAAE,CAAC,CAAC;YAC9D,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAExC,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC;gBACnC,OAAO,EAAE,kBAAkB;gBAC3B,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;YAEH,IAAI,CAAC,cAAc,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;gBAC1D,KAAK,CAAC,WAAW,CAAC,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,IAAI,SAAS,GAAG,OAAO,CAAC,GAAyB,CAAC;QAClD,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;YACrC,+BAA+B;YAC/B,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;YAC9B,GAAG,CAAC,IAAI,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,KAAK,CAAC,sEAAsE,CAAC,CAAC;YAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,yBAAyB;QACzB,IAAI,MAAM,GAAG,SAAS,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,GAAG,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YAC9D,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;YACxC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACxB,MAAM,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACzB,GAAG,CAAC,OAAO,CAAC,oBAAoB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,OAAO,GAAG,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEtD,aAAa;QACb,MAAM,gBAAgB,GAAG,OAAO,EAAE,CAAC;QACnC,gBAAgB,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAEnD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;YACtC,OAAO;YACP,GAAG,EAAE,SAAS;YACd,aAAa,EAAE,SAAS,CAAC,gBAAgB,EAAE;YAC3C,MAAM;YACN,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC;SACnD,CAAC,CAAC;QAEH,mDAAmD;QACnD,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;QAC1C,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAErC,kDAAkD;QAClD,gBAAgB,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,SAAS,CAAC,gBAAgB,EAAE,GAAG,eAAe,CAAC;QAClE,IAAI,CAAC;YACH,QAAQ,CAAC,wBAAwB,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACvE,QAAQ,CAAC,qDAAqD,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACpG,QAAQ,CAAC,sBAAsB,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,sDAAsD;QACxD,CAAC;QAED,gBAAgB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAE9C,gBAAgB;QAChB,MAAM,cAAc,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,SAAS,CAAC;QAC9F,MAAM,aAAa,GAAG,sBAAsB,SAAS,IAAI,cAAc,MAAM,CAAC;QAE9E,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,OAAO,CAAC,MAAM,6BAA6B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnG,GAAG,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAC/E,CAAC;QAED,GAAG,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;QAC3C,GAAG,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAC3D,GAAG,CAAC,IAAI,CAAC,sBAAsB,aAAa,EAAE,CAAC,CAAC;QAEhD,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -4,6 +4,8 @@
4
4
  * studiograph r2 setup Set up R2 bucket and credentials
5
5
  * studiograph r2 upload <dir> Upload a local directory to R2
6
6
  * --prefix <path> Key prefix in bucket (e.g. fonts/)
7
+ * studiograph r2 sync Upload local assets from tokens.json and
8
+ * markdown files to R2, rewriting URLs in place
7
9
  */
8
10
  import { Command } from 'commander';
9
11
  export declare const r2Command: Command;