studiograph 1.1.3 → 1.2.0-beta.10
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.
- package/README.md +2 -8
- package/dist/agent/orchestrator.d.ts +53 -0
- package/dist/agent/orchestrator.js +197 -12
- package/dist/agent/orchestrator.js.map +1 -1
- package/dist/agent/prompts/system.md +43 -11
- package/dist/agent/skill-loader.d.ts +48 -0
- package/dist/agent/skill-loader.js +166 -0
- package/dist/agent/skill-loader.js.map +1 -0
- package/dist/agent/skills/{bundled/enrich-entities.md → enrich-entities.md} +12 -0
- package/dist/agent/skills/entity-schema.md +502 -0
- package/dist/agent/skills/obsidian-source-setup.md +246 -0
- package/dist/agent/skills/sync-configuration.md +144 -0
- package/dist/agent/skills/sync-setup.md +84 -0
- package/dist/agent/tools/connector-tools.d.ts +37 -0
- package/dist/agent/tools/connector-tools.js +132 -0
- package/dist/agent/tools/connector-tools.js.map +1 -0
- package/dist/agent/tools/fs-tools.d.ts +39 -0
- package/dist/agent/tools/fs-tools.js +106 -0
- package/dist/agent/tools/fs-tools.js.map +1 -0
- package/dist/agent/tools/graph-tools.d.ts +33 -1
- package/dist/agent/tools/graph-tools.js +192 -44
- package/dist/agent/tools/graph-tools.js.map +1 -1
- package/dist/agent/tools/load-skill.d.ts +1 -1
- package/dist/agent/tools/load-skill.js +1 -1
- package/dist/agent/tools/load-skill.js.map +1 -1
- package/dist/agent/tools/ops-tools.d.ts +24 -0
- package/dist/agent/tools/ops-tools.js +542 -0
- package/dist/agent/tools/ops-tools.js.map +1 -0
- package/dist/agent/tools/sync-tools.d.ts +33 -0
- package/dist/agent/tools/sync-tools.js +947 -0
- package/dist/agent/tools/sync-tools.js.map +1 -0
- package/dist/auth/github.d.ts +11 -8
- package/dist/auth/github.js +56 -75
- package/dist/auth/github.js.map +1 -1
- package/dist/cli/colors.d.ts +54 -0
- package/dist/cli/colors.js +133 -0
- package/dist/cli/colors.js.map +1 -0
- package/dist/cli/commands/app.js +121 -18
- package/dist/cli/commands/app.js.map +1 -1
- package/dist/cli/commands/auth.d.ts +1 -1
- package/dist/cli/commands/auth.js +26 -10
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/clone.d.ts +9 -0
- package/dist/cli/commands/clone.js +167 -0
- package/dist/cli/commands/clone.js.map +1 -0
- package/dist/cli/commands/commit.d.ts +8 -0
- package/dist/cli/commands/commit.js +44 -0
- package/dist/cli/commands/commit.js.map +1 -0
- package/dist/cli/commands/connector.js +10 -2
- package/dist/cli/commands/connector.js.map +1 -1
- package/dist/cli/commands/deploy.d.ts +4 -6
- package/dist/cli/commands/deploy.js +292 -115
- package/dist/cli/commands/deploy.js.map +1 -1
- package/dist/cli/commands/enrich.d.ts +11 -0
- package/dist/cli/commands/enrich.js +135 -0
- package/dist/cli/commands/enrich.js.map +1 -0
- package/dist/cli/commands/graphrag.d.ts +12 -0
- package/dist/cli/commands/graphrag.js +122 -0
- package/dist/cli/commands/graphrag.js.map +1 -0
- package/dist/cli/commands/init.js +29 -196
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/join.js +23 -3
- package/dist/cli/commands/join.js.map +1 -1
- package/dist/cli/commands/orphans.d.ts +8 -0
- package/dist/cli/commands/orphans.js +125 -0
- package/dist/cli/commands/orphans.js.map +1 -0
- package/dist/cli/commands/provision.js +11 -7
- package/dist/cli/commands/provision.js.map +1 -1
- package/dist/cli/commands/r2.js +8 -2
- package/dist/cli/commands/r2.js.map +1 -1
- package/dist/cli/commands/redeploy.d.ts +9 -0
- package/dist/cli/commands/redeploy.js +203 -0
- package/dist/cli/commands/redeploy.js.map +1 -0
- package/dist/cli/commands/reset.d.ts +12 -0
- package/dist/cli/commands/reset.js +137 -0
- package/dist/cli/commands/reset.js.map +1 -0
- package/dist/cli/commands/resolve.d.ts +8 -0
- package/dist/cli/commands/resolve.js +85 -0
- package/dist/cli/commands/resolve.js.map +1 -0
- package/dist/cli/commands/review.d.ts +19 -0
- package/dist/cli/commands/review.js +128 -0
- package/dist/cli/commands/review.js.map +1 -0
- package/dist/cli/commands/serve.js +55 -8
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/source.d.ts +16 -0
- package/dist/cli/commands/source.js +159 -0
- package/dist/cli/commands/source.js.map +1 -0
- package/dist/cli/commands/start.js +307 -55
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/sync-entities.d.ts +13 -0
- package/dist/cli/commands/sync-entities.js +242 -0
- package/dist/cli/commands/sync-entities.js.map +1 -0
- package/dist/cli/commands/sync.js +81 -5
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/index.js +45 -9
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/scaffolding.d.ts +2 -1
- package/dist/cli/scaffolding.js +38 -23
- package/dist/cli/scaffolding.js.map +1 -1
- package/dist/cli/setup-wizard.d.ts +30 -0
- package/dist/cli/setup-wizard.js +244 -0
- package/dist/cli/setup-wizard.js.map +1 -0
- package/dist/cli/sync-review-interactive.d.ts +31 -0
- package/dist/cli/sync-review-interactive.js +393 -0
- package/dist/cli/sync-review-interactive.js.map +1 -0
- package/dist/cli/theme.d.ts +31 -0
- package/dist/cli/theme.js +116 -0
- package/dist/cli/theme.js.map +1 -0
- package/dist/core/graph.d.ts +40 -12
- package/dist/core/graph.js +344 -104
- package/dist/core/graph.js.map +1 -1
- package/dist/core/migration-runner.d.ts +4 -1
- package/dist/core/migration-runner.js +14 -3
- package/dist/core/migration-runner.js.map +1 -1
- package/dist/core/types.d.ts +2 -4
- package/dist/core/types.js +1 -2
- package/dist/core/types.js.map +1 -1
- package/dist/core/user-config.d.ts +12 -0
- package/dist/core/user-config.js.map +1 -1
- package/dist/core/workspace-manager.d.ts +6 -1
- package/dist/core/workspace-manager.js +29 -4
- package/dist/core/workspace-manager.js.map +1 -1
- package/dist/core/workspace.d.ts +13 -5
- package/dist/core/workspace.js +115 -33
- package/dist/core/workspace.js.map +1 -1
- package/dist/lib/lib/utils.d.ts +2 -0
- package/dist/lib/lib/utils.js +6 -0
- package/dist/lib/lib/utils.js.map +1 -0
- package/dist/mcp/connector-manager.d.ts +7 -3
- package/dist/mcp/connector-manager.js +61 -16
- package/dist/mcp/connector-manager.js.map +1 -1
- package/dist/mcp/connectors/asana.d.ts +2 -0
- package/dist/mcp/connectors/asana.js +20 -0
- package/dist/mcp/connectors/asana.js.map +1 -0
- package/dist/mcp/connectors/definitions.d.ts +3 -1
- package/dist/mcp/connectors/definitions.js +19 -127
- package/dist/mcp/connectors/definitions.js.map +1 -1
- package/dist/mcp/connectors/figma.d.ts +5 -0
- package/dist/mcp/connectors/figma.js +21 -0
- package/dist/mcp/connectors/figma.js.map +1 -0
- package/dist/mcp/connectors/gdrive.d.ts +2 -0
- package/dist/mcp/connectors/gdrive.js +20 -0
- package/dist/mcp/connectors/gdrive.js.map +1 -0
- package/dist/mcp/connectors/granola.d.ts +2 -0
- package/dist/mcp/connectors/granola.js +12 -0
- package/dist/mcp/connectors/granola.js.map +1 -0
- package/dist/mcp/connectors/linear.d.ts +2 -0
- package/dist/mcp/connectors/linear.js +19 -0
- package/dist/mcp/connectors/linear.js.map +1 -0
- package/dist/mcp/connectors/obsidian.d.ts +2 -0
- package/dist/mcp/connectors/obsidian.js +19 -0
- package/dist/mcp/connectors/obsidian.js.map +1 -0
- package/dist/mcp/connectors/pipedrive.d.ts +2 -0
- package/dist/mcp/connectors/pipedrive.js +20 -0
- package/dist/mcp/connectors/pipedrive.js.map +1 -0
- package/dist/mcp/connectors/slack.d.ts +2 -0
- package/dist/mcp/connectors/slack.js +21 -0
- package/dist/mcp/connectors/slack.js.map +1 -0
- package/dist/mcp/oauth-provider.d.ts +41 -0
- package/dist/mcp/oauth-provider.js +160 -0
- package/dist/mcp/oauth-provider.js.map +1 -0
- package/dist/server/index.js +97 -11
- package/dist/server/index.js.map +1 -1
- package/dist/server/plugin-loader.d.ts +8 -0
- package/dist/server/plugin-loader.js +54 -2
- package/dist/server/plugin-loader.js.map +1 -1
- package/dist/server/routes/chat.d.ts +3 -2
- package/dist/server/routes/chat.js +67 -16
- package/dist/server/routes/chat.js.map +1 -1
- package/dist/server/routes/git-api.d.ts +9 -0
- package/dist/server/routes/git-api.js +82 -0
- package/dist/server/routes/git-api.js.map +1 -0
- package/dist/server/routes/graph-api.d.ts +2 -2
- package/dist/server/routes/graph-api.js +164 -3
- package/dist/server/routes/graph-api.js.map +1 -1
- package/dist/server/routes/workspace-api.d.ts +9 -0
- package/dist/server/routes/workspace-api.js +170 -0
- package/dist/server/routes/workspace-api.js.map +1 -0
- package/dist/services/assets/base.d.ts +2 -2
- package/dist/services/assets/base.js +4 -4
- package/dist/services/assets/base.js.map +1 -1
- package/dist/services/assets/index.d.ts +6 -6
- package/dist/services/assets/index.js +12 -12
- package/dist/services/assets/index.js.map +1 -1
- package/dist/services/git.d.ts +31 -0
- package/dist/services/git.js +92 -3
- package/dist/services/git.js.map +1 -1
- package/dist/services/github-provisioner.d.ts +8 -3
- package/dist/services/github-provisioner.js +35 -8
- package/dist/services/github-provisioner.js.map +1 -1
- package/dist/services/lint-service.js +8 -1
- package/dist/services/lint-service.js.map +1 -1
- package/dist/services/markdown.js +3 -3
- package/dist/services/markdown.js.map +1 -1
- package/dist/services/memory-service.d.ts +1 -1
- package/dist/services/memory-service.js +2 -3
- package/dist/services/memory-service.js.map +1 -1
- package/dist/services/orphan-service.d.ts +31 -0
- package/dist/services/orphan-service.js +100 -0
- package/dist/services/orphan-service.js.map +1 -0
- package/dist/services/sync/commit.d.ts +60 -0
- package/dist/services/sync/commit.js +370 -0
- package/dist/services/sync/commit.js.map +1 -0
- package/dist/services/sync/context-index.d.ts +69 -0
- package/dist/services/sync/context-index.js +280 -0
- package/dist/services/sync/context-index.js.map +1 -0
- package/dist/services/sync/derive.d.ts +34 -0
- package/dist/services/sync/derive.js +164 -0
- package/dist/services/sync/derive.js.map +1 -0
- package/dist/services/sync/enrichment-state.d.ts +31 -0
- package/dist/services/sync/enrichment-state.js +63 -0
- package/dist/services/sync/enrichment-state.js.map +1 -0
- package/dist/services/sync/enrichment.d.ts +25 -0
- package/dist/services/sync/enrichment.js +121 -0
- package/dist/services/sync/enrichment.js.map +1 -0
- package/dist/services/sync/frontmatter-extractor.d.ts +40 -0
- package/dist/services/sync/frontmatter-extractor.js +273 -0
- package/dist/services/sync/frontmatter-extractor.js.map +1 -0
- package/dist/services/sync/graph-match-state.d.ts +33 -0
- package/dist/services/sync/graph-match-state.js +61 -0
- package/dist/services/sync/graph-match-state.js.map +1 -0
- package/dist/services/sync/graph-match.d.ts +53 -0
- package/dist/services/sync/graph-match.js +316 -0
- package/dist/services/sync/graph-match.js.map +1 -0
- package/dist/services/sync/graphrag-client.d.ts +43 -0
- package/dist/services/sync/graphrag-client.js +94 -0
- package/dist/services/sync/graphrag-client.js.map +1 -0
- package/dist/services/sync/graphrag-config.d.ts +16 -0
- package/dist/services/sync/graphrag-config.js +39 -0
- package/dist/services/sync/graphrag-config.js.map +1 -0
- package/dist/services/sync/graphrag-context.d.ts +14 -0
- package/dist/services/sync/graphrag-context.js +109 -0
- package/dist/services/sync/graphrag-context.js.map +1 -0
- package/dist/services/sync/graphrag-indexer.d.ts +30 -0
- package/dist/services/sync/graphrag-indexer.js +358 -0
- package/dist/services/sync/graphrag-indexer.js.map +1 -0
- package/dist/services/sync/llm.d.ts +32 -0
- package/dist/services/sync/llm.js +115 -0
- package/dist/services/sync/llm.js.map +1 -0
- package/dist/services/sync/mcp-client.d.ts +59 -0
- package/dist/services/sync/mcp-client.js +285 -0
- package/dist/services/sync/mcp-client.js.map +1 -0
- package/dist/services/sync/model-factory.d.ts +10 -0
- package/dist/services/sync/model-factory.js +24 -0
- package/dist/services/sync/model-factory.js.map +1 -0
- package/dist/services/sync/name-quality.d.ts +31 -0
- package/dist/services/sync/name-quality.js +60 -0
- package/dist/services/sync/name-quality.js.map +1 -0
- package/dist/services/sync/output-schemas.d.ts +92 -0
- package/dist/services/sync/output-schemas.js +43 -0
- package/dist/services/sync/output-schemas.js.map +1 -0
- package/dist/services/sync/prompts.d.ts +19 -0
- package/dist/services/sync/prompts.js +128 -0
- package/dist/services/sync/prompts.js.map +1 -0
- package/dist/services/sync/reconciler.d.ts +48 -0
- package/dist/services/sync/reconciler.js +295 -0
- package/dist/services/sync/reconciler.js.map +1 -0
- package/dist/services/sync/source-config.d.ts +45 -0
- package/dist/services/sync/source-config.js +208 -0
- package/dist/services/sync/source-config.js.map +1 -0
- package/dist/services/sync/source-definitions/asana.d.ts +15 -0
- package/dist/services/sync/source-definitions/asana.js +48 -0
- package/dist/services/sync/source-definitions/asana.js.map +1 -0
- package/dist/services/sync/source-definitions/definitions.d.ts +21 -0
- package/dist/services/sync/source-definitions/definitions.js +26 -0
- package/dist/services/sync/source-definitions/definitions.js.map +1 -0
- package/dist/services/sync/source-definitions/gdrive.d.ts +16 -0
- package/dist/services/sync/source-definitions/gdrive.js +68 -0
- package/dist/services/sync/source-definitions/gdrive.js.map +1 -0
- package/dist/services/sync/source-definitions/granola.d.ts +2 -0
- package/dist/services/sync/source-definitions/granola.js +28 -0
- package/dist/services/sync/source-definitions/granola.js.map +1 -0
- package/dist/services/sync/source-definitions/linear.d.ts +2 -0
- package/dist/services/sync/source-definitions/linear.js +60 -0
- package/dist/services/sync/source-definitions/linear.js.map +1 -0
- package/dist/services/sync/source-definitions/obsidian.d.ts +2 -0
- package/dist/services/sync/source-definitions/obsidian.js +55 -0
- package/dist/services/sync/source-definitions/obsidian.js.map +1 -0
- package/dist/services/sync/source-definitions/pipedrive.d.ts +2 -0
- package/dist/services/sync/source-definitions/pipedrive.js +52 -0
- package/dist/services/sync/source-definitions/pipedrive.js.map +1 -0
- package/dist/services/sync/staging.d.ts +53 -0
- package/dist/services/sync/staging.js +131 -0
- package/dist/services/sync/staging.js.map +1 -0
- package/dist/services/sync/structured-extractor.d.ts +49 -0
- package/dist/services/sync/structured-extractor.js +344 -0
- package/dist/services/sync/structured-extractor.js.map +1 -0
- package/dist/services/sync/sync-runner.d.ts +32 -0
- package/dist/services/sync/sync-runner.js +195 -0
- package/dist/services/sync/sync-runner.js.map +1 -0
- package/dist/services/sync/sync-state.d.ts +43 -0
- package/dist/services/sync/sync-state.js +154 -0
- package/dist/services/sync/sync-state.js.map +1 -0
- package/dist/services/sync/types.d.ts +203 -0
- package/dist/services/sync/types.js +8 -0
- package/dist/services/sync/types.js.map +1 -0
- package/dist/services/sync/unstructured-extractor.d.ts +29 -0
- package/dist/services/sync/unstructured-extractor.js +197 -0
- package/dist/services/sync/unstructured-extractor.js.map +1 -0
- package/dist/services/vector-service.d.ts +11 -0
- package/dist/services/vector-service.js +42 -0
- package/dist/services/vector-service.js.map +1 -1
- package/dist/utils/git.d.ts +31 -4
- package/dist/utils/git.js +65 -7
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/merge-resolver.d.ts +60 -0
- package/dist/utils/merge-resolver.js +304 -0
- package/dist/utils/merge-resolver.js.map +1 -0
- package/dist/utils/preflight.d.ts +2 -1
- package/dist/utils/preflight.js +8 -1
- package/dist/utils/preflight.js.map +1 -1
- package/dist/utils/workspace-config.d.ts +8 -0
- package/dist/utils/workspace-config.js +22 -0
- package/dist/utils/workspace-config.js.map +1 -0
- package/dist/web/_app/env.js +1 -0
- package/dist/web/_app/immutable/assets/0.BwJV4fvl.css +1 -0
- package/dist/web/_app/immutable/assets/2.DRHi7ABa.css +1 -0
- package/dist/web/_app/immutable/assets/3.CnAQdPKU.css +1 -0
- package/dist/web/_app/immutable/assets/4.BG92MufE.css +1 -0
- package/dist/web/_app/immutable/assets/5.CfrQIPYs.css +1 -0
- package/dist/web/_app/immutable/assets/ChatPanel.BNzaCFTL.css +1 -0
- package/dist/web/_app/immutable/assets/editor.D6Rjo7RE.css +1 -0
- package/dist/web/_app/immutable/chunks/4QY4j-jX.js +1 -0
- package/dist/web/_app/immutable/chunks/B4G4uWkV.js +1 -0
- package/dist/web/_app/immutable/chunks/BB_5th5W.js +3383 -0
- package/dist/web/_app/immutable/chunks/CUzqHQY_.js +1 -0
- package/dist/web/_app/immutable/chunks/CYrVHOHA.js +1 -0
- package/dist/web/_app/immutable/chunks/CksE5s8n.js +1 -0
- package/dist/web/_app/immutable/chunks/CqkleIqs.js +1 -0
- package/dist/web/_app/immutable/chunks/D0JBkEPE.js +86 -0
- package/dist/web/_app/immutable/chunks/D2K5GzLj.js +1 -0
- package/dist/web/_app/immutable/chunks/DEkoussQ.js +2 -0
- package/dist/web/_app/immutable/chunks/DW-KmHRi.js +1 -0
- package/dist/web/_app/immutable/chunks/DcCr4z9k.js +1 -0
- package/dist/web/_app/immutable/chunks/Dg2wWwJu.js +2 -0
- package/dist/web/_app/immutable/chunks/Dh_H7Owr.js +18 -0
- package/dist/web/_app/immutable/chunks/DnlgZ_Tk.js +5 -0
- package/dist/web/_app/immutable/chunks/DtVH--hH.js +6 -0
- package/dist/web/_app/immutable/chunks/PPVm8Dsz.js +1 -0
- package/dist/web/_app/immutable/chunks/SBEriEQR.js +1 -0
- package/dist/web/_app/immutable/chunks/WSUKABI_.js +1 -0
- package/dist/web/_app/immutable/chunks/YTERt3Ul.js +6 -0
- package/dist/web/_app/immutable/chunks/m_R7HatS.js +1 -0
- package/dist/web/_app/immutable/chunks/vlmEnjfO.js +1 -0
- package/dist/web/_app/immutable/entry/app.B9pwpU_x.js +2 -0
- package/dist/web/_app/immutable/entry/start.CDuNCEco.js +1 -0
- package/dist/web/_app/immutable/nodes/0.YEQhw1us.js +1 -0
- package/dist/web/_app/immutable/nodes/1.CvmHhpRy.js +1 -0
- package/dist/web/_app/immutable/nodes/2.c5k1r7dq.js +1 -0
- package/dist/web/_app/immutable/nodes/3.B24tcdLK.js +1 -0
- package/dist/web/_app/immutable/nodes/4.kX2m5Pp9.js +16 -0
- package/dist/web/_app/immutable/nodes/5.DELt6wTD.js +2 -0
- package/dist/web/_app/version.json +1 -0
- package/dist/web/index.html +41 -0
- package/package.json +21 -7
- /package/dist/agent/skills/{bundled/gather-context.md → gather-context.md} +0 -0
package/dist/cli/scaffolding.js
CHANGED
|
@@ -3,13 +3,18 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Creates a connected set of example entities during `studiograph init`
|
|
5
5
|
* to demonstrate the knowledge graph pattern — a client, project, person,
|
|
6
|
-
* meeting, and decision all wikilinked together
|
|
6
|
+
* meeting, and decision all wikilinked together, distributed across repos
|
|
7
|
+
* matching the fluid folder model.
|
|
7
8
|
*/
|
|
8
9
|
import { join } from 'path';
|
|
9
10
|
import { writeFileSync } from 'fs';
|
|
10
|
-
import { RepoType } from '../core/types.js';
|
|
11
11
|
import { MarkdownService } from '../services/markdown.js';
|
|
12
|
-
const
|
|
12
|
+
const ENTITY_REPO_MAP = {
|
|
13
|
+
client: 'clients',
|
|
14
|
+
person: 'people',
|
|
15
|
+
project: 'projects',
|
|
16
|
+
meeting: 'meetings',
|
|
17
|
+
};
|
|
13
18
|
function buildEntities(now) {
|
|
14
19
|
const shared = {
|
|
15
20
|
created_by: 'studiograph',
|
|
@@ -20,6 +25,7 @@ function buildEntities(now) {
|
|
|
20
25
|
};
|
|
21
26
|
return [
|
|
22
27
|
{
|
|
28
|
+
repo: 'clients',
|
|
23
29
|
entityType: 'client',
|
|
24
30
|
entityId: 'meridian-health',
|
|
25
31
|
frontmatter: {
|
|
@@ -49,6 +55,7 @@ Regional healthcare network with 12 hospitals across the Midwest. Engaged us for
|
|
|
49
55
|
`,
|
|
50
56
|
},
|
|
51
57
|
{
|
|
58
|
+
repo: 'people',
|
|
52
59
|
entityType: 'person',
|
|
53
60
|
entityId: 'sarah-chen',
|
|
54
61
|
frontmatter: {
|
|
@@ -73,6 +80,7 @@ VP of Marketing at [[meridian-health]]. Primary stakeholder for the [[meridian-r
|
|
|
73
80
|
`,
|
|
74
81
|
},
|
|
75
82
|
{
|
|
83
|
+
repo: 'projects',
|
|
76
84
|
entityType: 'project',
|
|
77
85
|
entityId: 'meridian-rebrand',
|
|
78
86
|
frontmatter: {
|
|
@@ -108,6 +116,7 @@ Comprehensive brand identity refresh for [[meridian-health]] following their mer
|
|
|
108
116
|
`,
|
|
109
117
|
},
|
|
110
118
|
{
|
|
119
|
+
repo: 'meetings',
|
|
111
120
|
entityType: 'meeting',
|
|
112
121
|
entityId: '2026-02-10-kickoff',
|
|
113
122
|
frontmatter: {
|
|
@@ -148,6 +157,7 @@ Kickoff meeting for the [[meridian-rebrand]] project with [[sarah-chen]] and the
|
|
|
148
157
|
`,
|
|
149
158
|
},
|
|
150
159
|
{
|
|
160
|
+
repo: 'projects',
|
|
151
161
|
entityType: 'decision',
|
|
152
162
|
entityId: 'dec-2026-001',
|
|
153
163
|
frontmatter: {
|
|
@@ -241,40 +251,45 @@ studiograph get <entity-id> # View a specific entity
|
|
|
241
251
|
|
|
242
252
|
## Explore the Examples
|
|
243
253
|
|
|
244
|
-
Check out the
|
|
254
|
+
Check out the example entities across your repos:
|
|
245
255
|
|
|
246
|
-
- \`
|
|
247
|
-
- \`
|
|
248
|
-
- \`
|
|
249
|
-
- \`
|
|
250
|
-
- \`
|
|
256
|
+
- \`clients/meridian-health/main.md\` — a client organization
|
|
257
|
+
- \`people/sarah-chen/main.md\` — a contact linked to the client
|
|
258
|
+
- \`projects/meridian-rebrand/main.md\` — a project linking client, person, and decisions
|
|
259
|
+
- \`projects/meridian-rebrand/decisions/dec-2026-001.md\` — a decision as sub-content of the project
|
|
260
|
+
- \`meetings/2026-02-10-kickoff/main.md\` — a meeting with notes and action items
|
|
251
261
|
|
|
252
|
-
Notice how \`[[wikilinks]]\` connect everything into a navigable graph.
|
|
262
|
+
Notice how \`[[wikilinks]]\` connect everything into a navigable graph across repos.
|
|
253
263
|
|
|
254
264
|
## Cleaning Up Examples
|
|
255
265
|
|
|
256
|
-
When you're ready to remove the example entities:
|
|
266
|
+
When you're ready to remove the example entities, search for the \`example\` tag and delete the folders:
|
|
257
267
|
|
|
258
268
|
\`\`\`bash
|
|
259
|
-
studiograph
|
|
260
|
-
rm -rf
|
|
269
|
+
studiograph search --tag example # Find all example entities
|
|
270
|
+
rm -rf clients/meridian-health/
|
|
271
|
+
rm -rf people/sarah-chen/
|
|
272
|
+
rm -rf projects/meridian-rebrand/ # Also removes the decision sub-content
|
|
273
|
+
rm -rf meetings/2026-02-10-kickoff/
|
|
261
274
|
\`\`\`
|
|
262
275
|
`;
|
|
263
276
|
}
|
|
264
277
|
export async function scaffoldExampleEntities(workspace, teamName) {
|
|
265
|
-
const
|
|
266
|
-
// Register the example-project repo
|
|
267
|
-
await workspace.registerRepo({
|
|
268
|
-
name: REPO_NAME,
|
|
269
|
-
type: RepoType.PROJECT,
|
|
270
|
-
description: 'Example entities demonstrating the knowledge graph pattern (safe to delete)',
|
|
271
|
-
});
|
|
272
|
-
// Write example entities
|
|
278
|
+
const workspacePath = workspace.getWorkspacePath();
|
|
273
279
|
const md = new MarkdownService();
|
|
274
280
|
const now = new Date().toISOString();
|
|
275
281
|
const entities = buildEntities(now);
|
|
276
282
|
for (const entity of entities) {
|
|
277
|
-
const
|
|
283
|
+
const repo = ENTITY_REPO_MAP[entity.entityType];
|
|
284
|
+
let filePath;
|
|
285
|
+
if (repo) {
|
|
286
|
+
// Standard entity — entity folder with main.md inside the repo
|
|
287
|
+
filePath = join(workspacePath, repo, entity.entityId, 'main.md');
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
// Decision — sub-content inside the project entity folder
|
|
291
|
+
filePath = join(workspacePath, 'projects', 'meridian-rebrand', 'decisions', `${entity.entityId}.md`);
|
|
292
|
+
}
|
|
278
293
|
md.writeFile(filePath, {
|
|
279
294
|
frontmatter: entity.frontmatter,
|
|
280
295
|
content: entity.content,
|
|
@@ -282,7 +297,7 @@ export async function scaffoldExampleEntities(workspace, teamName) {
|
|
|
282
297
|
});
|
|
283
298
|
}
|
|
284
299
|
// Write STUDIOGRAPH.md to workspace root
|
|
285
|
-
const guidePath = join(
|
|
300
|
+
const guidePath = join(workspacePath, 'STUDIOGRAPH.md');
|
|
286
301
|
writeFileSync(guidePath, buildOnboardingGuide(teamName), 'utf-8');
|
|
287
302
|
}
|
|
288
303
|
//# sourceMappingURL=scaffolding.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffolding.js","sourceRoot":"","sources":["../../src/cli/scaffolding.ts"],"names":[],"mappings":"AAAA
|
|
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>;
|
|
@@ -0,0 +1,244 @@
|
|
|
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
|
+
import { confirm, select, password, note, log, isCancel } from '@clack/prompts';
|
|
10
|
+
import { loadToken, promptForPAT, storeToken, getGitHubUser } from '../auth/github.js';
|
|
11
|
+
import { loadUserConfig, saveUserConfig } from '../core/user-config.js';
|
|
12
|
+
import { ConnectorManager } from '../mcp/connector-manager.js';
|
|
13
|
+
import { CONNECTOR_DEFINITIONS } from '../mcp/connectors/definitions.js';
|
|
14
|
+
import { SourceConfigManager } from '../services/sync/source-config.js';
|
|
15
|
+
import { text } from '@clack/prompts';
|
|
16
|
+
const MODEL_PROVIDERS = {
|
|
17
|
+
anthropic: {
|
|
18
|
+
name: 'Anthropic (Claude)',
|
|
19
|
+
models: [
|
|
20
|
+
{ id: 'claude-sonnet-4-5-20250929', name: 'Claude Sonnet 4.5', hint: 'Recommended' },
|
|
21
|
+
{ id: 'claude-opus-4-6', name: 'Claude Opus 4.6', hint: 'Most capable' },
|
|
22
|
+
{ id: 'claude-3-5-haiku-20241022', name: 'Claude 3.5 Haiku', hint: 'Fastest' },
|
|
23
|
+
],
|
|
24
|
+
envVar: 'ANTHROPIC_API_KEY',
|
|
25
|
+
},
|
|
26
|
+
openai: {
|
|
27
|
+
name: 'OpenAI (GPT)',
|
|
28
|
+
models: [
|
|
29
|
+
{ id: 'gpt-4o', name: 'GPT-4o', hint: 'Recommended' },
|
|
30
|
+
{ id: 'gpt-4o-mini', name: 'GPT-4o Mini', hint: 'Faster and cheaper' },
|
|
31
|
+
],
|
|
32
|
+
envVar: 'OPENAI_API_KEY',
|
|
33
|
+
},
|
|
34
|
+
google: {
|
|
35
|
+
name: 'Google (Gemini)',
|
|
36
|
+
models: [
|
|
37
|
+
{ id: 'gemini-2.0-flash-exp', name: 'Gemini 2.0 Flash', hint: 'Latest' },
|
|
38
|
+
{ id: 'gemini-1.5-pro', name: 'Gemini 1.5 Pro', hint: 'Most capable' },
|
|
39
|
+
],
|
|
40
|
+
envVar: 'GOOGLE_API_KEY',
|
|
41
|
+
},
|
|
42
|
+
xai: {
|
|
43
|
+
name: 'xAI (Grok)',
|
|
44
|
+
models: [
|
|
45
|
+
{ id: 'grok-2-1212', name: 'Grok 2', hint: 'Latest' },
|
|
46
|
+
],
|
|
47
|
+
envVar: 'XAI_API_KEY',
|
|
48
|
+
},
|
|
49
|
+
groq: {
|
|
50
|
+
name: 'Groq (Fast Inference)',
|
|
51
|
+
models: [
|
|
52
|
+
{ id: 'llama-3.3-70b-versatile', name: 'Llama 3.3 70B', hint: 'Very fast' },
|
|
53
|
+
],
|
|
54
|
+
envVar: 'GROQ_API_KEY',
|
|
55
|
+
},
|
|
56
|
+
openrouter: {
|
|
57
|
+
name: 'OpenRouter',
|
|
58
|
+
models: [
|
|
59
|
+
{ id: 'anthropic/claude-opus-4-6', name: 'Claude Opus 4.6', hint: 'Via OpenRouter' },
|
|
60
|
+
{ id: 'openai/gpt-4o', name: 'GPT-4o', hint: 'Via OpenRouter' },
|
|
61
|
+
],
|
|
62
|
+
envVar: 'OPENROUTER_API_KEY',
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Prompt for GitHub PAT if not authenticated.
|
|
67
|
+
* Returns the stored auth (existing or newly created).
|
|
68
|
+
*/
|
|
69
|
+
export async function promptGitHubAuthIfNeeded() {
|
|
70
|
+
const stored = loadToken();
|
|
71
|
+
if (stored) {
|
|
72
|
+
if (stored.user.login === '_env') {
|
|
73
|
+
log.success('GitHub auth configured (via environment variable)');
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
log.success(`GitHub auth configured (${stored.user.login})`);
|
|
77
|
+
}
|
|
78
|
+
return stored;
|
|
79
|
+
}
|
|
80
|
+
log.info('No GitHub token found. Let\'s set one up.');
|
|
81
|
+
const token = await promptForPAT();
|
|
82
|
+
const user = await getGitHubUser(token);
|
|
83
|
+
storeToken(token, user);
|
|
84
|
+
log.success(`Authenticated as ${user.login}`);
|
|
85
|
+
return { token, user };
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Prompt for LLM provider setup if not configured.
|
|
89
|
+
* Checks user config and env vars. Skips if already set.
|
|
90
|
+
*/
|
|
91
|
+
export async function promptLLMSetupIfNeeded() {
|
|
92
|
+
const userConfig = loadUserConfig();
|
|
93
|
+
// Check if already configured via user config
|
|
94
|
+
if (userConfig.api_key) {
|
|
95
|
+
const providerName = userConfig.model_provider
|
|
96
|
+
? MODEL_PROVIDERS[userConfig.model_provider]?.name ?? userConfig.model_provider
|
|
97
|
+
: 'configured';
|
|
98
|
+
log.success(`AI model configured (${providerName})`);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
// Check common env vars
|
|
102
|
+
const envProviders = [
|
|
103
|
+
{ key: 'ANTHROPIC_API_KEY', name: 'Anthropic' },
|
|
104
|
+
{ key: 'OPENAI_API_KEY', name: 'OpenAI' },
|
|
105
|
+
{ key: 'GOOGLE_API_KEY', name: 'Google' },
|
|
106
|
+
{ key: 'XAI_API_KEY', name: 'xAI' },
|
|
107
|
+
{ key: 'GROQ_API_KEY', name: 'Groq' },
|
|
108
|
+
{ key: 'OPENROUTER_API_KEY', name: 'OpenRouter' },
|
|
109
|
+
];
|
|
110
|
+
for (const { key, name } of envProviders) {
|
|
111
|
+
if (process.env[key]) {
|
|
112
|
+
log.success(`AI model configured (${name} via ${key})`);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// Prompt for setup
|
|
117
|
+
const wantSetup = await confirm({
|
|
118
|
+
message: 'Set up an AI model? (required for `studiograph start`)',
|
|
119
|
+
initialValue: true,
|
|
120
|
+
});
|
|
121
|
+
if (!wantSetup || typeof wantSetup === 'symbol') {
|
|
122
|
+
log.info('Skipped. Run `studiograph config` later to set up.');
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
const providerChoice = await select({
|
|
126
|
+
message: 'Select AI provider:',
|
|
127
|
+
options: Object.entries(MODEL_PROVIDERS).map(([key, provider]) => ({
|
|
128
|
+
value: key,
|
|
129
|
+
label: provider.name,
|
|
130
|
+
})),
|
|
131
|
+
});
|
|
132
|
+
if (typeof providerChoice === 'symbol') {
|
|
133
|
+
log.info('Skipped. Run `studiograph config` later to set up.');
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
const provider = MODEL_PROVIDERS[providerChoice];
|
|
137
|
+
const modelChoice = await select({
|
|
138
|
+
message: `Select ${provider.name} model:`,
|
|
139
|
+
options: provider.models.map(m => ({
|
|
140
|
+
value: m.id,
|
|
141
|
+
label: m.name,
|
|
142
|
+
hint: m.hint,
|
|
143
|
+
})),
|
|
144
|
+
});
|
|
145
|
+
if (typeof modelChoice === 'symbol') {
|
|
146
|
+
log.info('Skipped. Run `studiograph config` later to set up.');
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
const apiKeyInput = await password({
|
|
150
|
+
message: `Enter your ${provider.name} API key:`,
|
|
151
|
+
validate: (value) => {
|
|
152
|
+
if (!value || value.trim().length < 10)
|
|
153
|
+
return 'API key seems too short';
|
|
154
|
+
},
|
|
155
|
+
});
|
|
156
|
+
if (isCancel(apiKeyInput)) {
|
|
157
|
+
log.info('Skipped. Run `studiograph config` later to set up.');
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
userConfig.model_provider = providerChoice;
|
|
161
|
+
userConfig.model_id = modelChoice;
|
|
162
|
+
userConfig.api_key = apiKeyInput.trim();
|
|
163
|
+
saveUserConfig(userConfig);
|
|
164
|
+
log.success(`AI model configured: ${provider.name} — ${modelChoice}`);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Detect sync sources in the workspace and prompt for missing connectors.
|
|
168
|
+
* Only prompts for connectors that have a known definition.
|
|
169
|
+
*/
|
|
170
|
+
export async function promptConnectorSetup(workspacePath) {
|
|
171
|
+
const sourceManager = new SourceConfigManager(workspacePath);
|
|
172
|
+
const sources = sourceManager.getAll();
|
|
173
|
+
if (sources.length === 0) {
|
|
174
|
+
return 0;
|
|
175
|
+
}
|
|
176
|
+
// Find unique connector names referenced by enabled sources
|
|
177
|
+
const referencedConnectors = [...new Set(sources.filter(s => s.enabled).map(s => s.connector))];
|
|
178
|
+
const existingConnectors = ConnectorManager.loadConfigs();
|
|
179
|
+
const existingNames = new Set(existingConnectors.map(c => c.name));
|
|
180
|
+
const missingConnectors = referencedConnectors.filter(name => !existingNames.has(name));
|
|
181
|
+
if (missingConnectors.length === 0) {
|
|
182
|
+
log.success(`All ${referencedConnectors.length} sync connector(s) already configured`);
|
|
183
|
+
return 0;
|
|
184
|
+
}
|
|
185
|
+
log.info(`This workspace syncs from ${sources.length} source(s). ${missingConnectors.length} connector(s) need setup.`);
|
|
186
|
+
let configured = 0;
|
|
187
|
+
for (const connectorName of missingConnectors) {
|
|
188
|
+
const def = CONNECTOR_DEFINITIONS[connectorName];
|
|
189
|
+
if (!def) {
|
|
190
|
+
log.warn(`Connector "${connectorName}" has no built-in definition. Set up manually: studiograph connector add ${connectorName}`);
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
const wantSetup = await confirm({
|
|
194
|
+
message: `Set up ${def.label} connector?`,
|
|
195
|
+
initialValue: true,
|
|
196
|
+
});
|
|
197
|
+
if (!wantSetup || typeof wantSetup === 'symbol') {
|
|
198
|
+
log.info(`Skipped. Run \`studiograph connector add ${connectorName}\` later.`);
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
if (def.docsUrl) {
|
|
202
|
+
note(def.docsUrl, `${def.label} docs`);
|
|
203
|
+
}
|
|
204
|
+
const config = {
|
|
205
|
+
name: def.name,
|
|
206
|
+
description: def.description,
|
|
207
|
+
type: def.type,
|
|
208
|
+
...(def.type === 'stdio'
|
|
209
|
+
? { command: def.command, args: def.args }
|
|
210
|
+
: { url: def.url }),
|
|
211
|
+
};
|
|
212
|
+
let cancelled = false;
|
|
213
|
+
for (const field of def.credentialFields) {
|
|
214
|
+
const promptOpts = {
|
|
215
|
+
message: field.label,
|
|
216
|
+
placeholder: field.placeholder,
|
|
217
|
+
validate: field.required
|
|
218
|
+
? (v) => (!v?.trim() ? `${field.label} is required` : undefined)
|
|
219
|
+
: undefined,
|
|
220
|
+
};
|
|
221
|
+
const value = field.secret ? await password(promptOpts) : await text(promptOpts);
|
|
222
|
+
if (isCancel(value)) {
|
|
223
|
+
log.info(`Skipped. Run \`studiograph connector add ${connectorName}\` later.`);
|
|
224
|
+
cancelled = true;
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
const key = field.key;
|
|
228
|
+
if (key.startsWith('env.')) {
|
|
229
|
+
const envKey = key.slice(4);
|
|
230
|
+
config.env = { ...(config.env ?? {}), [envKey]: value };
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
config[key] = value;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
if (!cancelled) {
|
|
237
|
+
ConnectorManager.saveConfig(config);
|
|
238
|
+
log.success(`${def.label} connector saved`);
|
|
239
|
+
configured++;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return configured;
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=setup-wizard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../../src/cli/setup-wizard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interactive review UI for `studiograph sync review`.
|
|
3
|
+
*
|
|
4
|
+
* Uses @clack/prompts for file selection and action menus,
|
|
5
|
+
* and sync-colors for colored diff output.
|
|
6
|
+
*/
|
|
7
|
+
export interface ChangedFile {
|
|
8
|
+
path: string;
|
|
9
|
+
relativePath: string;
|
|
10
|
+
repoName: string;
|
|
11
|
+
repoPath: string;
|
|
12
|
+
entityType: string;
|
|
13
|
+
entityId: string;
|
|
14
|
+
status: 'A' | 'M' | 'D';
|
|
15
|
+
}
|
|
16
|
+
export interface ReviewContext {
|
|
17
|
+
workspacePath: string;
|
|
18
|
+
repos: Array<{
|
|
19
|
+
name: string;
|
|
20
|
+
path: string;
|
|
21
|
+
}>;
|
|
22
|
+
committed: boolean;
|
|
23
|
+
}
|
|
24
|
+
export type DiffMode = 'uncommitted' | 'committed' | 'none';
|
|
25
|
+
export declare function detectDiffMode(workspacePath: string, repos: Array<{
|
|
26
|
+
name: string;
|
|
27
|
+
path: string;
|
|
28
|
+
}>): DiffMode;
|
|
29
|
+
export declare function collectChangedFiles(ctx: ReviewContext): ChangedFile[];
|
|
30
|
+
export declare function getFileDiff(file: ChangedFile, committed: boolean): string;
|
|
31
|
+
export declare function runInteractiveReview(ctx: ReviewContext): Promise<void>;
|