studiograph 1.1.3 → 1.2.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/README.md +2 -8
  2. package/dist/agent/orchestrator.js +56 -11
  3. package/dist/agent/orchestrator.js.map +1 -1
  4. package/dist/agent/prompts/system.md +28 -10
  5. package/dist/agent/skill-loader.d.ts +48 -0
  6. package/dist/agent/skill-loader.js +166 -0
  7. package/dist/agent/skill-loader.js.map +1 -0
  8. package/dist/agent/skills/{bundled/enrich-entities.md → enrich-entities.md} +12 -0
  9. package/dist/agent/skills/entity-schema.md +502 -0
  10. package/dist/agent/skills/obsidian-source-setup.md +246 -0
  11. package/dist/agent/skills/sync-configuration.md +144 -0
  12. package/dist/agent/skills/sync-setup.md +68 -0
  13. package/dist/agent/tools/connector-tools.d.ts +37 -0
  14. package/dist/agent/tools/connector-tools.js +132 -0
  15. package/dist/agent/tools/connector-tools.js.map +1 -0
  16. package/dist/agent/tools/fs-tools.d.ts +39 -0
  17. package/dist/agent/tools/fs-tools.js +106 -0
  18. package/dist/agent/tools/fs-tools.js.map +1 -0
  19. package/dist/agent/tools/graph-tools.d.ts +11 -1
  20. package/dist/agent/tools/graph-tools.js +90 -29
  21. package/dist/agent/tools/graph-tools.js.map +1 -1
  22. package/dist/agent/tools/load-skill.d.ts +1 -1
  23. package/dist/agent/tools/load-skill.js +1 -1
  24. package/dist/agent/tools/load-skill.js.map +1 -1
  25. package/dist/agent/tools/sync-tools.d.ts +25 -0
  26. package/dist/agent/tools/sync-tools.js +691 -0
  27. package/dist/agent/tools/sync-tools.js.map +1 -0
  28. package/dist/auth/github.d.ts +11 -8
  29. package/dist/auth/github.js +56 -75
  30. package/dist/auth/github.js.map +1 -1
  31. package/dist/cli/colors.d.ts +54 -0
  32. package/dist/cli/colors.js +133 -0
  33. package/dist/cli/colors.js.map +1 -0
  34. package/dist/cli/commands/auth.d.ts +1 -1
  35. package/dist/cli/commands/auth.js +26 -10
  36. package/dist/cli/commands/auth.js.map +1 -1
  37. package/dist/cli/commands/clone.d.ts +9 -0
  38. package/dist/cli/commands/clone.js +167 -0
  39. package/dist/cli/commands/clone.js.map +1 -0
  40. package/dist/cli/commands/commit.d.ts +8 -0
  41. package/dist/cli/commands/commit.js +43 -0
  42. package/dist/cli/commands/commit.js.map +1 -0
  43. package/dist/cli/commands/connector.js +10 -2
  44. package/dist/cli/commands/connector.js.map +1 -1
  45. package/dist/cli/commands/deploy.d.ts +4 -6
  46. package/dist/cli/commands/deploy.js +262 -112
  47. package/dist/cli/commands/deploy.js.map +1 -1
  48. package/dist/cli/commands/enrich.d.ts +11 -0
  49. package/dist/cli/commands/enrich.js +135 -0
  50. package/dist/cli/commands/enrich.js.map +1 -0
  51. package/dist/cli/commands/graphrag.d.ts +12 -0
  52. package/dist/cli/commands/graphrag.js +122 -0
  53. package/dist/cli/commands/graphrag.js.map +1 -0
  54. package/dist/cli/commands/init.js +21 -203
  55. package/dist/cli/commands/init.js.map +1 -1
  56. package/dist/cli/commands/join.js +23 -3
  57. package/dist/cli/commands/join.js.map +1 -1
  58. package/dist/cli/commands/orphans.d.ts +8 -0
  59. package/dist/cli/commands/orphans.js +125 -0
  60. package/dist/cli/commands/orphans.js.map +1 -0
  61. package/dist/cli/commands/provision.js +11 -7
  62. package/dist/cli/commands/provision.js.map +1 -1
  63. package/dist/cli/commands/r2.js +8 -2
  64. package/dist/cli/commands/r2.js.map +1 -1
  65. package/dist/cli/commands/reset.d.ts +12 -0
  66. package/dist/cli/commands/reset.js +137 -0
  67. package/dist/cli/commands/reset.js.map +1 -0
  68. package/dist/cli/commands/review.d.ts +19 -0
  69. package/dist/cli/commands/review.js +128 -0
  70. package/dist/cli/commands/review.js.map +1 -0
  71. package/dist/cli/commands/source.d.ts +16 -0
  72. package/dist/cli/commands/source.js +159 -0
  73. package/dist/cli/commands/source.js.map +1 -0
  74. package/dist/cli/commands/start.js +285 -55
  75. package/dist/cli/commands/start.js.map +1 -1
  76. package/dist/cli/commands/sync-entities.d.ts +13 -0
  77. package/dist/cli/commands/sync-entities.js +242 -0
  78. package/dist/cli/commands/sync-entities.js.map +1 -0
  79. package/dist/cli/commands/sync.js +36 -5
  80. package/dist/cli/commands/sync.js.map +1 -1
  81. package/dist/cli/index.js +31 -0
  82. package/dist/cli/index.js.map +1 -1
  83. package/dist/cli/scaffolding.d.ts +2 -1
  84. package/dist/cli/scaffolding.js +36 -22
  85. package/dist/cli/scaffolding.js.map +1 -1
  86. package/dist/cli/setup-wizard.d.ts +30 -0
  87. package/dist/cli/setup-wizard.js +244 -0
  88. package/dist/cli/setup-wizard.js.map +1 -0
  89. package/dist/cli/sync-review-interactive.d.ts +31 -0
  90. package/dist/cli/sync-review-interactive.js +393 -0
  91. package/dist/cli/sync-review-interactive.js.map +1 -0
  92. package/dist/cli/theme.d.ts +31 -0
  93. package/dist/cli/theme.js +116 -0
  94. package/dist/cli/theme.js.map +1 -0
  95. package/dist/core/graph.d.ts +4 -8
  96. package/dist/core/graph.js +145 -96
  97. package/dist/core/graph.js.map +1 -1
  98. package/dist/core/migration-runner.d.ts +4 -1
  99. package/dist/core/migration-runner.js +14 -3
  100. package/dist/core/migration-runner.js.map +1 -1
  101. package/dist/core/types.d.ts +0 -3
  102. package/dist/core/types.js +0 -2
  103. package/dist/core/types.js.map +1 -1
  104. package/dist/core/user-config.d.ts +6 -0
  105. package/dist/core/user-config.js.map +1 -1
  106. package/dist/core/workspace.d.ts +13 -5
  107. package/dist/core/workspace.js +110 -33
  108. package/dist/core/workspace.js.map +1 -1
  109. package/dist/mcp/connector-manager.d.ts +7 -3
  110. package/dist/mcp/connector-manager.js +61 -16
  111. package/dist/mcp/connector-manager.js.map +1 -1
  112. package/dist/mcp/connectors/asana.d.ts +2 -0
  113. package/dist/mcp/connectors/asana.js +20 -0
  114. package/dist/mcp/connectors/asana.js.map +1 -0
  115. package/dist/mcp/connectors/definitions.d.ts +3 -1
  116. package/dist/mcp/connectors/definitions.js +19 -127
  117. package/dist/mcp/connectors/definitions.js.map +1 -1
  118. package/dist/mcp/connectors/figma.d.ts +5 -0
  119. package/dist/mcp/connectors/figma.js +21 -0
  120. package/dist/mcp/connectors/figma.js.map +1 -0
  121. package/dist/mcp/connectors/gdrive.d.ts +2 -0
  122. package/dist/mcp/connectors/gdrive.js +20 -0
  123. package/dist/mcp/connectors/gdrive.js.map +1 -0
  124. package/dist/mcp/connectors/granola.d.ts +2 -0
  125. package/dist/mcp/connectors/granola.js +12 -0
  126. package/dist/mcp/connectors/granola.js.map +1 -0
  127. package/dist/mcp/connectors/linear.d.ts +2 -0
  128. package/dist/mcp/connectors/linear.js +19 -0
  129. package/dist/mcp/connectors/linear.js.map +1 -0
  130. package/dist/mcp/connectors/obsidian.d.ts +2 -0
  131. package/dist/mcp/connectors/obsidian.js +19 -0
  132. package/dist/mcp/connectors/obsidian.js.map +1 -0
  133. package/dist/mcp/connectors/pipedrive.d.ts +2 -0
  134. package/dist/mcp/connectors/pipedrive.js +20 -0
  135. package/dist/mcp/connectors/pipedrive.js.map +1 -0
  136. package/dist/mcp/connectors/slack.d.ts +2 -0
  137. package/dist/mcp/connectors/slack.js +21 -0
  138. package/dist/mcp/connectors/slack.js.map +1 -0
  139. package/dist/mcp/oauth-provider.d.ts +41 -0
  140. package/dist/mcp/oauth-provider.js +160 -0
  141. package/dist/mcp/oauth-provider.js.map +1 -0
  142. package/dist/server/index.js +14 -9
  143. package/dist/server/index.js.map +1 -1
  144. package/dist/server/plugin-loader.d.ts +7 -0
  145. package/dist/server/plugin-loader.js +54 -2
  146. package/dist/server/plugin-loader.js.map +1 -1
  147. package/dist/services/github-provisioner.d.ts +8 -3
  148. package/dist/services/github-provisioner.js +35 -8
  149. package/dist/services/github-provisioner.js.map +1 -1
  150. package/dist/services/lint-service.js +8 -1
  151. package/dist/services/lint-service.js.map +1 -1
  152. package/dist/services/markdown.js +3 -3
  153. package/dist/services/markdown.js.map +1 -1
  154. package/dist/services/memory-service.d.ts +1 -1
  155. package/dist/services/memory-service.js +2 -3
  156. package/dist/services/memory-service.js.map +1 -1
  157. package/dist/services/orphan-service.d.ts +31 -0
  158. package/dist/services/orphan-service.js +100 -0
  159. package/dist/services/orphan-service.js.map +1 -0
  160. package/dist/services/sync/commit.d.ts +58 -0
  161. package/dist/services/sync/commit.js +354 -0
  162. package/dist/services/sync/commit.js.map +1 -0
  163. package/dist/services/sync/context-index.d.ts +69 -0
  164. package/dist/services/sync/context-index.js +280 -0
  165. package/dist/services/sync/context-index.js.map +1 -0
  166. package/dist/services/sync/derive.d.ts +34 -0
  167. package/dist/services/sync/derive.js +164 -0
  168. package/dist/services/sync/derive.js.map +1 -0
  169. package/dist/services/sync/enrichment-state.d.ts +31 -0
  170. package/dist/services/sync/enrichment-state.js +63 -0
  171. package/dist/services/sync/enrichment-state.js.map +1 -0
  172. package/dist/services/sync/enrichment.d.ts +25 -0
  173. package/dist/services/sync/enrichment.js +121 -0
  174. package/dist/services/sync/enrichment.js.map +1 -0
  175. package/dist/services/sync/frontmatter-extractor.d.ts +40 -0
  176. package/dist/services/sync/frontmatter-extractor.js +273 -0
  177. package/dist/services/sync/frontmatter-extractor.js.map +1 -0
  178. package/dist/services/sync/graph-match-state.d.ts +33 -0
  179. package/dist/services/sync/graph-match-state.js +61 -0
  180. package/dist/services/sync/graph-match-state.js.map +1 -0
  181. package/dist/services/sync/graph-match.d.ts +53 -0
  182. package/dist/services/sync/graph-match.js +316 -0
  183. package/dist/services/sync/graph-match.js.map +1 -0
  184. package/dist/services/sync/graphrag-client.d.ts +43 -0
  185. package/dist/services/sync/graphrag-client.js +94 -0
  186. package/dist/services/sync/graphrag-client.js.map +1 -0
  187. package/dist/services/sync/graphrag-config.d.ts +16 -0
  188. package/dist/services/sync/graphrag-config.js +39 -0
  189. package/dist/services/sync/graphrag-config.js.map +1 -0
  190. package/dist/services/sync/graphrag-context.d.ts +14 -0
  191. package/dist/services/sync/graphrag-context.js +109 -0
  192. package/dist/services/sync/graphrag-context.js.map +1 -0
  193. package/dist/services/sync/graphrag-indexer.d.ts +30 -0
  194. package/dist/services/sync/graphrag-indexer.js +358 -0
  195. package/dist/services/sync/graphrag-indexer.js.map +1 -0
  196. package/dist/services/sync/llm.d.ts +32 -0
  197. package/dist/services/sync/llm.js +115 -0
  198. package/dist/services/sync/llm.js.map +1 -0
  199. package/dist/services/sync/mcp-client.d.ts +59 -0
  200. package/dist/services/sync/mcp-client.js +285 -0
  201. package/dist/services/sync/mcp-client.js.map +1 -0
  202. package/dist/services/sync/model-factory.d.ts +10 -0
  203. package/dist/services/sync/model-factory.js +24 -0
  204. package/dist/services/sync/model-factory.js.map +1 -0
  205. package/dist/services/sync/name-quality.d.ts +31 -0
  206. package/dist/services/sync/name-quality.js +60 -0
  207. package/dist/services/sync/name-quality.js.map +1 -0
  208. package/dist/services/sync/output-schemas.d.ts +92 -0
  209. package/dist/services/sync/output-schemas.js +43 -0
  210. package/dist/services/sync/output-schemas.js.map +1 -0
  211. package/dist/services/sync/prompts.d.ts +19 -0
  212. package/dist/services/sync/prompts.js +128 -0
  213. package/dist/services/sync/prompts.js.map +1 -0
  214. package/dist/services/sync/reconciler.d.ts +48 -0
  215. package/dist/services/sync/reconciler.js +295 -0
  216. package/dist/services/sync/reconciler.js.map +1 -0
  217. package/dist/services/sync/source-config.d.ts +45 -0
  218. package/dist/services/sync/source-config.js +208 -0
  219. package/dist/services/sync/source-config.js.map +1 -0
  220. package/dist/services/sync/source-definitions/asana.d.ts +15 -0
  221. package/dist/services/sync/source-definitions/asana.js +48 -0
  222. package/dist/services/sync/source-definitions/asana.js.map +1 -0
  223. package/dist/services/sync/source-definitions/definitions.d.ts +21 -0
  224. package/dist/services/sync/source-definitions/definitions.js +26 -0
  225. package/dist/services/sync/source-definitions/definitions.js.map +1 -0
  226. package/dist/services/sync/source-definitions/gdrive.d.ts +16 -0
  227. package/dist/services/sync/source-definitions/gdrive.js +68 -0
  228. package/dist/services/sync/source-definitions/gdrive.js.map +1 -0
  229. package/dist/services/sync/source-definitions/granola.d.ts +2 -0
  230. package/dist/services/sync/source-definitions/granola.js +28 -0
  231. package/dist/services/sync/source-definitions/granola.js.map +1 -0
  232. package/dist/services/sync/source-definitions/linear.d.ts +2 -0
  233. package/dist/services/sync/source-definitions/linear.js +60 -0
  234. package/dist/services/sync/source-definitions/linear.js.map +1 -0
  235. package/dist/services/sync/source-definitions/obsidian.d.ts +2 -0
  236. package/dist/services/sync/source-definitions/obsidian.js +55 -0
  237. package/dist/services/sync/source-definitions/obsidian.js.map +1 -0
  238. package/dist/services/sync/source-definitions/pipedrive.d.ts +2 -0
  239. package/dist/services/sync/source-definitions/pipedrive.js +52 -0
  240. package/dist/services/sync/source-definitions/pipedrive.js.map +1 -0
  241. package/dist/services/sync/staging.d.ts +53 -0
  242. package/dist/services/sync/staging.js +131 -0
  243. package/dist/services/sync/staging.js.map +1 -0
  244. package/dist/services/sync/structured-extractor.d.ts +49 -0
  245. package/dist/services/sync/structured-extractor.js +344 -0
  246. package/dist/services/sync/structured-extractor.js.map +1 -0
  247. package/dist/services/sync/sync-runner.d.ts +32 -0
  248. package/dist/services/sync/sync-runner.js +195 -0
  249. package/dist/services/sync/sync-runner.js.map +1 -0
  250. package/dist/services/sync/sync-state.d.ts +43 -0
  251. package/dist/services/sync/sync-state.js +154 -0
  252. package/dist/services/sync/sync-state.js.map +1 -0
  253. package/dist/services/sync/types.d.ts +203 -0
  254. package/dist/services/sync/types.js +8 -0
  255. package/dist/services/sync/types.js.map +1 -0
  256. package/dist/services/sync/unstructured-extractor.d.ts +29 -0
  257. package/dist/services/sync/unstructured-extractor.js +197 -0
  258. package/dist/services/sync/unstructured-extractor.js.map +1 -0
  259. package/dist/services/vector-service.d.ts +11 -0
  260. package/dist/services/vector-service.js +42 -0
  261. package/dist/services/vector-service.js.map +1 -1
  262. package/dist/utils/git.d.ts +26 -4
  263. package/dist/utils/git.js +55 -7
  264. package/dist/utils/git.js.map +1 -1
  265. package/dist/utils/merge-resolver.d.ts +34 -0
  266. package/dist/utils/merge-resolver.js +201 -0
  267. package/dist/utils/merge-resolver.js.map +1 -0
  268. package/dist/utils/preflight.d.ts +2 -1
  269. package/dist/utils/preflight.js +8 -1
  270. package/dist/utils/preflight.js.map +1 -1
  271. package/dist/utils/workspace-config.d.ts +8 -0
  272. package/dist/utils/workspace-config.js +22 -0
  273. package/dist/utils/workspace-config.js.map +1 -0
  274. package/package.json +16 -7
  275. /package/dist/agent/skills/{bundled/gather-context.md → gather-context.md} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-tools.js","sourceRoot":"","sources":["../../../src/agent/tools/sync-tools.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  /**
2
2
  * GitHub authentication for Studiograph
3
3
  *
4
- * Uses GitHub Device Flowdesigned for CLI tools.
5
- * No redirect URI or local HTTP server required.
4
+ * Uses Personal Access Tokens (classic) universally compatible with
5
+ * any org, no OAuth app approval required.
6
6
  * Token stored globally at ~/.studiograph/auth.json
7
7
  */
8
8
  import { Octokit } from '@octokit/rest';
9
- export declare const GITHUB_CLIENT_ID: string;
9
+ /** URL to create a classic PAT with pre-filled scopes */
10
+ export declare const PAT_CREATE_URL = "https://github.com/settings/tokens/new?scopes=repo,read:org,user:email&description=Studiograph+CLI";
10
11
  export interface GitHubUser {
11
12
  login: string;
12
13
  name: string;
@@ -17,17 +18,19 @@ interface StoredAuth {
17
18
  user: GitHubUser;
18
19
  }
19
20
  /**
20
- * Run GitHub Device Flow to get an access token.
21
- * Displays a user_code and verification URL, polls until user completes auth.
21
+ * Prompt the user for a GitHub Personal Access Token (classic).
22
+ * Opens the browser to the PAT creation page, displays required scopes,
23
+ * and accepts masked input.
22
24
  */
23
- export declare function runDeviceFlow(): Promise<string>;
25
+ export declare function promptForPAT(): Promise<string>;
24
26
  /**
25
27
  * Store token and user info at ~/.studiograph/auth.json
26
28
  */
27
29
  export declare function storeToken(token: string, user: GitHubUser): void;
28
30
  /**
29
- * Load stored token and user from ~/.studiograph/auth.json
30
- * Returns null if not found or invalid.
31
+ * Load stored token and user.
32
+ * Checks environment variables first (STUDIOGRAPH_GITHUB_TOKEN, then GITHUB_TOKEN),
33
+ * then falls back to ~/.studiograph/auth.json.
31
34
  */
32
35
  export declare function loadToken(): StoredAuth | null;
33
36
  /**
@@ -1,87 +1,62 @@
1
1
  /**
2
2
  * GitHub authentication for Studiograph
3
3
  *
4
- * Uses GitHub Device Flowdesigned for CLI tools.
5
- * No redirect URI or local HTTP server required.
4
+ * Uses Personal Access Tokens (classic) universally compatible with
5
+ * any org, no OAuth app approval required.
6
6
  * Token stored globally at ~/.studiograph/auth.json
7
7
  */
8
8
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
9
9
  import { join } from 'path';
10
10
  import { homedir } from 'os';
11
+ import { exec } from 'child_process';
11
12
  import { Octokit } from '@octokit/rest';
12
- // OAuth App client_id for Device Flow. Safe to commit — Device Flow has no client_secret
13
- // and client_ids are public by design (see: github.com/cli/cli source).
14
- // Registered under the studiographai org as "Studiograph CLI".
15
- export const GITHUB_CLIENT_ID = process.env.STUDIOGRAPH_GITHUB_CLIENT_ID ?? 'Ov23lipHzDbTRqhz4Zqe';
16
- const SCOPES = 'repo read:org user:email';
17
- const DEVICE_CODE_URL = 'https://github.com/login/device/code';
18
- const ACCESS_TOKEN_URL = 'https://github.com/login/oauth/access_token';
13
+ import { note, password, isCancel } from '@clack/prompts';
14
+ /** URL to create a classic PAT with pre-filled scopes */
15
+ export const PAT_CREATE_URL = 'https://github.com/settings/tokens/new?scopes=repo,read:org,user:email&description=Studiograph+CLI';
19
16
  /**
20
- * Run GitHub Device Flow to get an access token.
21
- * Displays a user_code and verification URL, polls until user completes auth.
17
+ * Prompt the user for a GitHub Personal Access Token (classic).
18
+ * Opens the browser to the PAT creation page, displays required scopes,
19
+ * and accepts masked input.
22
20
  */
23
- export async function runDeviceFlow() {
24
- // Step 1: Request device and user codes
25
- const codeResponse = await fetch(DEVICE_CODE_URL, {
26
- method: 'POST',
27
- headers: {
28
- 'Content-Type': 'application/json',
29
- Accept: 'application/json',
21
+ export async function promptForPAT() {
22
+ // Best-effort browser open
23
+ const url = PAT_CREATE_URL;
24
+ if (process.platform === 'darwin') {
25
+ exec(`open "${url}"`);
26
+ }
27
+ else if (process.platform === 'linux') {
28
+ exec(`xdg-open "${url}"`);
29
+ }
30
+ else if (process.platform === 'win32') {
31
+ exec(`start "" "${url}"`);
32
+ }
33
+ note([
34
+ 'Studiograph needs a GitHub Personal Access Token',
35
+ '(classic) with these scopes:',
36
+ '',
37
+ ' repo — read/write repositories',
38
+ ' read:org — verify org membership',
39
+ ' user:email — read your email address',
40
+ '',
41
+ `Create one here: ${url}`,
42
+ ].join('\n'), 'GitHub Authentication');
43
+ const token = await password({
44
+ message: 'Paste your GitHub Personal Access Token:',
45
+ validate: (value) => {
46
+ const trimmed = value.trim();
47
+ if (!trimmed)
48
+ return 'Token is required';
49
+ if (!trimmed.startsWith('ghp_') &&
50
+ !trimmed.startsWith('github_pat_') &&
51
+ !trimmed.startsWith('gho_')) {
52
+ return 'Invalid token format. GitHub tokens start with ghp_, github_pat_, or gho_';
53
+ }
30
54
  },
31
- body: JSON.stringify({
32
- client_id: GITHUB_CLIENT_ID,
33
- scope: SCOPES,
34
- }),
35
55
  });
36
- if (!codeResponse.ok) {
37
- throw new Error(`Failed to start device flow: ${codeResponse.statusText}`);
56
+ if (isCancel(token)) {
57
+ throw new Error('Authentication cancelled');
38
58
  }
39
- const codeData = await codeResponse.json();
40
- const { device_code, user_code, verification_uri, expires_in, interval } = codeData;
41
- // Step 2: Display instructions to user
42
- console.log(`\nGo to ${verification_uri} and enter: ${user_code}\n`);
43
- // Step 3: Poll for token
44
- const pollIntervalMs = (interval ?? 5) * 1000;
45
- const expiresAt = Date.now() + (expires_in ?? 900) * 1000;
46
- while (Date.now() < expiresAt) {
47
- await sleep(pollIntervalMs);
48
- const tokenResponse = await fetch(ACCESS_TOKEN_URL, {
49
- method: 'POST',
50
- headers: {
51
- 'Content-Type': 'application/json',
52
- Accept: 'application/json',
53
- },
54
- body: JSON.stringify({
55
- client_id: GITHUB_CLIENT_ID,
56
- device_code,
57
- grant_type: 'urn:ietf:params:oauth:grant-type:device_code',
58
- }),
59
- });
60
- if (!tokenResponse.ok) {
61
- throw new Error(`Token poll failed: ${tokenResponse.statusText}`);
62
- }
63
- const tokenData = await tokenResponse.json();
64
- if (tokenData.access_token) {
65
- return tokenData.access_token;
66
- }
67
- if (tokenData.error === 'authorization_pending') {
68
- // Still waiting — continue polling
69
- continue;
70
- }
71
- if (tokenData.error === 'slow_down') {
72
- // Back off by an extra 5 seconds
73
- await sleep(5000);
74
- continue;
75
- }
76
- if (tokenData.error === 'expired_token') {
77
- throw new Error('Device code expired. Please try again.');
78
- }
79
- if (tokenData.error === 'access_denied') {
80
- throw new Error('Authorization was denied.');
81
- }
82
- throw new Error(`Unexpected error: ${tokenData.error ?? 'unknown'}`);
83
- }
84
- throw new Error('Device code expired before authorization completed.');
59
+ return token.trim();
85
60
  }
86
61
  /**
87
62
  * Get the path to the global auth file (~/.studiograph/auth.json)
@@ -99,10 +74,19 @@ export function storeToken(token, user) {
99
74
  writeFileSync(getAuthFilePath(), JSON.stringify(data, null, 2), { encoding: 'utf-8', mode: 0o600 });
100
75
  }
101
76
  /**
102
- * Load stored token and user from ~/.studiograph/auth.json
103
- * Returns null if not found or invalid.
77
+ * Load stored token and user.
78
+ * Checks environment variables first (STUDIOGRAPH_GITHUB_TOKEN, then GITHUB_TOKEN),
79
+ * then falls back to ~/.studiograph/auth.json.
104
80
  */
105
81
  export function loadToken() {
82
+ // Environment variable tokens take priority
83
+ const envToken = process.env.STUDIOGRAPH_GITHUB_TOKEN || process.env.GITHUB_TOKEN;
84
+ if (envToken) {
85
+ return {
86
+ token: envToken,
87
+ user: { login: '_env', name: 'Environment Token', email: '' },
88
+ };
89
+ }
106
90
  const authPath = getAuthFilePath();
107
91
  if (!existsSync(authPath))
108
92
  return null;
@@ -174,7 +158,4 @@ export async function getUserOrgTeams(octokit, org) {
174
158
  return [];
175
159
  }
176
160
  }
177
- function sleep(ms) {
178
- return new Promise(resolve => setTimeout(resolve, ms));
179
- }
180
161
  //# sourceMappingURL=github.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/auth/github.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/auth/github.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Semantic color helpers for CLI output.
3
+ * Wraps picocolors for consistent styling across all commands.
4
+ */
5
+ export { default as pc } from 'picocolors';
6
+ export declare const created: (s: string) => string;
7
+ export declare const updated: (s: string) => string;
8
+ export declare const skipped: (s: string) => string;
9
+ export declare const error: (s: string) => string;
10
+ export declare const success: (s: string) => string;
11
+ export declare const warn: (s: string) => string;
12
+ export declare const info: (s: string) => string;
13
+ export declare const entityRef: (s: string) => string;
14
+ export declare const header: (s: string) => string;
15
+ export declare const count: (s: string) => string;
16
+ export declare const dimText: (s: string) => string;
17
+ export declare const accent: (s: string) => string;
18
+ export declare const toolRef: (s: string) => string;
19
+ /**
20
+ * Colorize a raw unified diff string line-by-line.
21
+ *
22
+ * - `+` lines → green
23
+ * - `-` lines → red
24
+ * - `@@` hunk headers → magenta
25
+ * - `---`/`+++` file headers → cyan bold
26
+ * - everything else → dim
27
+ */
28
+ export declare function colorizeDiff(rawDiff: string): string;
29
+ /**
30
+ * Colorize a single line of agent text output for the CLI chat interface.
31
+ * Detects patterns the agent uses (ALL CAPS headers, bullet lists, numbered
32
+ * items) and applies minimal coloring to improve scanability.
33
+ */
34
+ export declare function colorizeAgentLine(line: string): string;
35
+ /**
36
+ * Render a user prompt line with a dark gray background (256-color mode).
37
+ * The \x1b[K clears to end of line with the current background, giving
38
+ * a full-width bar effect.
39
+ */
40
+ export declare function renderUserPrompt(message: string): string;
41
+ /**
42
+ * Format an action line like " Created: person/john-doe"
43
+ */
44
+ export declare function formatAction(action: 'create' | 'update' | 'skip', type: string, id: string): string;
45
+ /**
46
+ * Format a summary line like "3 created, 5 updated, 1 skipped"
47
+ */
48
+ export declare function formatSummary(counts: {
49
+ created?: number;
50
+ updated?: number;
51
+ skipped?: number;
52
+ }): string;
53
+ export declare function statusIcon(status: 'A' | 'M' | 'D'): string;
54
+ export declare function statusLabel(status: 'A' | 'M' | 'D'): string;
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Semantic color helpers for CLI output.
3
+ * Wraps picocolors for consistent styling across all commands.
4
+ */
5
+ import pc from 'picocolors';
6
+ // ── Base colors (re-export for direct use when semantic helpers don't fit) ───
7
+ export { default as pc } from 'picocolors';
8
+ // ── Action colors ────────────────────────────────────────────────────────────
9
+ export const created = (s) => pc.green(s);
10
+ export const updated = (s) => pc.yellow(s);
11
+ export const skipped = (s) => pc.dim(s);
12
+ export const error = (s) => pc.red(s);
13
+ export const success = (s) => pc.green(pc.bold(s));
14
+ export const warn = (s) => pc.yellow(s);
15
+ export const info = (s) => pc.cyan(s);
16
+ // ── Structural colors ────────────────────────────────────────────────────────
17
+ export const entityRef = (s) => pc.cyan(s);
18
+ export const header = (s) => pc.bold(s);
19
+ export const count = (s) => pc.bold(s);
20
+ export const dimText = (s) => pc.dim(s);
21
+ export const accent = (s) => pc.blue(s);
22
+ export const toolRef = (s) => pc.cyan(pc.bold(s));
23
+ // ── Diff colorizer ───────────────────────────────────────────────────────────
24
+ /**
25
+ * Colorize a raw unified diff string line-by-line.
26
+ *
27
+ * - `+` lines → green
28
+ * - `-` lines → red
29
+ * - `@@` hunk headers → magenta
30
+ * - `---`/`+++` file headers → cyan bold
31
+ * - everything else → dim
32
+ */
33
+ export function colorizeDiff(rawDiff) {
34
+ if (!rawDiff)
35
+ return '';
36
+ return rawDiff
37
+ .split('\n')
38
+ .map((line) => {
39
+ if (line.startsWith('+++') || line.startsWith('---')) {
40
+ return pc.cyan(pc.bold(line));
41
+ }
42
+ if (line.startsWith('@@')) {
43
+ return pc.magenta(line);
44
+ }
45
+ if (line.startsWith('+')) {
46
+ return pc.green(line);
47
+ }
48
+ if (line.startsWith('-')) {
49
+ return pc.red(line);
50
+ }
51
+ if (line.startsWith('diff ')) {
52
+ return pc.bold(line);
53
+ }
54
+ return pc.dim(line);
55
+ })
56
+ .join('\n');
57
+ }
58
+ // ── Agent output colorizer ──────────────────────────────────────────────────
59
+ /**
60
+ * Colorize a single line of agent text output for the CLI chat interface.
61
+ * Detects patterns the agent uses (ALL CAPS headers, bullet lists, numbered
62
+ * items) and applies minimal coloring to improve scanability.
63
+ */
64
+ export function colorizeAgentLine(line) {
65
+ const trimmed = line.trim();
66
+ // ALL CAPS header lines (2+ chars, only uppercase + digits + spaces + punctuation)
67
+ if (trimmed.length > 2 && /^[A-Z][A-Z\s\d\-—:,.()&/]+$/.test(trimmed)) {
68
+ return pc.bold(line);
69
+ }
70
+ // Numbered items: "1. text" or " 2. text" — color the number
71
+ const numMatch = line.match(/^(\s*)(\d+\.)(\s)(.*)/);
72
+ if (numMatch) {
73
+ return numMatch[1] + pc.cyan(numMatch[2]) + numMatch[3] + numMatch[4];
74
+ }
75
+ // Bullet points: "- text" or " - text" — dim the dash
76
+ const bulletMatch = line.match(/^(\s*)(- )(.*)/);
77
+ if (bulletMatch) {
78
+ return bulletMatch[1] + pc.dim(bulletMatch[2]) + bulletMatch[3];
79
+ }
80
+ return line;
81
+ }
82
+ /**
83
+ * Render a user prompt line with a dark gray background (256-color mode).
84
+ * The \x1b[K clears to end of line with the current background, giving
85
+ * a full-width bar effect.
86
+ */
87
+ export function renderUserPrompt(message) {
88
+ return `\x1b[48;5;237m > ${message} \x1b[K\x1b[0m`;
89
+ }
90
+ // ── Compound formatters ──────────────────────────────────────────────────────
91
+ /**
92
+ * Format an action line like " Created: person/john-doe"
93
+ */
94
+ export function formatAction(action, type, id) {
95
+ const ref = entityRef(`${type}/${id}`);
96
+ switch (action) {
97
+ case 'create':
98
+ return ` ${created('Created')}: ${ref}`;
99
+ case 'update':
100
+ return ` ${updated('Updated')}: ${ref}`;
101
+ case 'skip':
102
+ return ` ${skipped('Skipped')}: ${skipped(`${type}/${id}`)}`;
103
+ }
104
+ }
105
+ /**
106
+ * Format a summary line like "3 created, 5 updated, 1 skipped"
107
+ */
108
+ export function formatSummary(counts) {
109
+ const parts = [];
110
+ if (counts.created && counts.created > 0)
111
+ parts.push(created(`${counts.created} created`));
112
+ if (counts.updated && counts.updated > 0)
113
+ parts.push(updated(`${counts.updated} updated`));
114
+ if (counts.skipped && counts.skipped > 0)
115
+ parts.push(skipped(`${counts.skipped} skipped`));
116
+ return parts.join(', ') || dimText('no changes');
117
+ }
118
+ // ── File status helpers (for review) ─────────────────────────────────────────
119
+ export function statusIcon(status) {
120
+ switch (status) {
121
+ case 'A': return created('+');
122
+ case 'M': return updated('~');
123
+ case 'D': return error('−');
124
+ }
125
+ }
126
+ export function statusLabel(status) {
127
+ switch (status) {
128
+ case 'A': return created('new');
129
+ case 'M': return updated('modified');
130
+ case 'D': return error('deleted');
131
+ }
132
+ }
133
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/cli/colors.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * studiograph auth command
3
3
  *
4
4
  * Subcommands:
5
- * studiograph auth github — authenticate via GitHub Device Flow
5
+ * studiograph auth github — authenticate with a GitHub Personal Access Token
6
6
  * studiograph auth status — show current auth status
7
7
  * studiograph auth logout — clear stored token
8
8
  */
@@ -2,37 +2,46 @@
2
2
  * studiograph auth command
3
3
  *
4
4
  * Subcommands:
5
- * studiograph auth github — authenticate via GitHub Device Flow
5
+ * studiograph auth github — authenticate with a GitHub Personal Access Token
6
6
  * studiograph auth status — show current auth status
7
7
  * studiograph auth logout — clear stored token
8
8
  */
9
9
  import { Command } from 'commander';
10
10
  import { intro, outro, spinner, log } from '@clack/prompts';
11
- import { runDeviceFlow, storeToken, loadToken, clearToken, getGitHubUser, } from '../../auth/github.js';
11
+ import { promptForPAT, storeToken, loadToken, clearToken, getGitHubUser, } from '../../auth/github.js';
12
12
  const authGithubCommand = new Command('github')
13
- .description('Authenticate with GitHub using Device Flow')
13
+ .description('Authenticate with GitHub using a Personal Access Token')
14
14
  .action(async () => {
15
15
  intro('GitHub Authentication');
16
16
  try {
17
- log.info('Starting Device Flow...');
18
- // runDeviceFlow prints the user_code + URL itself
19
- const token = await runDeviceFlow();
17
+ const token = await promptForPAT();
20
18
  const s = spinner();
21
- s.start('Fetching your GitHub identity...');
19
+ s.start('Verifying token...');
22
20
  const user = await getGitHubUser(token);
23
- s.stop('Authenticated');
21
+ s.stop('Token verified');
24
22
  storeToken(token, user);
25
- outro(`✨ Authenticated as ${user.login} (${user.name})`);
23
+ outro(`Authenticated as ${user.login} (${user.name})`);
26
24
  }
27
25
  catch (error) {
28
26
  log.error(`Authentication failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
29
- outro('Could not authenticate with GitHub.');
27
+ outro('Could not authenticate with GitHub.');
30
28
  process.exit(1);
31
29
  }
32
30
  });
33
31
  const authStatusCommand = new Command('status')
34
32
  .description('Show current GitHub authentication status')
35
33
  .action(() => {
34
+ // Check env vars directly for source detection
35
+ const envSgToken = process.env.STUDIOGRAPH_GITHUB_TOKEN;
36
+ const envGhToken = process.env.GITHUB_TOKEN;
37
+ if (envSgToken) {
38
+ console.log('GitHub auth configured via STUDIOGRAPH_GITHUB_TOKEN environment variable');
39
+ return;
40
+ }
41
+ if (envGhToken) {
42
+ console.log('GitHub auth configured via GITHUB_TOKEN environment variable');
43
+ return;
44
+ }
36
45
  const stored = loadToken();
37
46
  if (stored) {
38
47
  console.log(`Authenticated as ${stored.user.login} (${stored.user.name})`);
@@ -47,6 +56,13 @@ const authStatusCommand = new Command('status')
47
56
  const authLogoutCommand = new Command('logout')
48
57
  .description('Clear stored GitHub token')
49
58
  .action(() => {
59
+ const envSgToken = process.env.STUDIOGRAPH_GITHUB_TOKEN;
60
+ const envGhToken = process.env.GITHUB_TOKEN;
61
+ if (envSgToken || envGhToken) {
62
+ const varName = envSgToken ? 'STUDIOGRAPH_GITHUB_TOKEN' : 'GITHUB_TOKEN';
63
+ console.log(`Token is set via ${varName} environment variable. Unset it to log out.`);
64
+ return;
65
+ }
50
66
  const stored = loadToken();
51
67
  if (!stored) {
52
68
  console.log('Not currently authenticated.');
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/cli/commands/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/cli/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * studiograph clone command
3
+ *
4
+ * Clones an entire Studiograph workspace for admin setup on a new machine.
5
+ * Unlike `join` (which resolves identity and filters repos by role), `clone`
6
+ * pulls everything and walks through full setup: LLM provider + connectors.
7
+ */
8
+ import { Command } from 'commander';
9
+ export declare const cloneCommand: Command;