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
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merge conflict resolution for markdown entity files.
|
|
3
|
+
*
|
|
4
|
+
* When git rebase hits a conflict, this module:
|
|
5
|
+
* 1. Classifies conflicted files by type (content, delete/modify, both-added, both-deleted)
|
|
6
|
+
* 2. Resolves delete conflicts automatically (no LLM needed)
|
|
7
|
+
* 3. For content conflicts, extracts ours/theirs versions from conflict markers
|
|
8
|
+
* 4. Asks an LLM to produce a merged version
|
|
9
|
+
* 5. Writes the merged content and stages the file
|
|
10
|
+
* 6. Continues the rebase
|
|
11
|
+
*
|
|
12
|
+
* Falls back gracefully if no API key is available (delete conflicts still resolve).
|
|
13
|
+
*/
|
|
14
|
+
import { spawnSync } from 'child_process';
|
|
15
|
+
import { readFileSync, writeFileSync, readdirSync, rmSync, existsSync } from 'fs';
|
|
16
|
+
import { join, dirname } from 'path';
|
|
17
|
+
import { generateText } from 'ai';
|
|
18
|
+
import { createModel } from '../services/sync/model-factory.js';
|
|
19
|
+
import { loadUserConfig, getAnthropicCredential } from '../core/user-config.js';
|
|
20
|
+
// ─── Conflict Classification ─────────────────────────────────────────────────
|
|
21
|
+
/**
|
|
22
|
+
* Classify unmerged files by parsing `git status --porcelain`.
|
|
23
|
+
* Returns typed conflict entries instead of bare file paths.
|
|
24
|
+
*
|
|
25
|
+
* Porcelain status codes for unmerged:
|
|
26
|
+
* UU = both modified (content conflict)
|
|
27
|
+
* DU = deleted by us, modified by them (during rebase: remote deleted, local modified)
|
|
28
|
+
* UD = modified by us, deleted by them (during rebase: local deleted, remote modified)
|
|
29
|
+
* AA = both added
|
|
30
|
+
* DD = both deleted
|
|
31
|
+
*/
|
|
32
|
+
export function classifyConflicts(repoPath) {
|
|
33
|
+
const result = spawnSync('git', ['status', '--porcelain'], { cwd: repoPath, encoding: 'utf-8' });
|
|
34
|
+
if (result.status !== 0)
|
|
35
|
+
return [];
|
|
36
|
+
const conflicts = [];
|
|
37
|
+
for (const line of result.stdout.split('\n')) {
|
|
38
|
+
if (line.length < 4)
|
|
39
|
+
continue;
|
|
40
|
+
const xy = line.substring(0, 2);
|
|
41
|
+
const file = line.substring(3);
|
|
42
|
+
let type = null;
|
|
43
|
+
switch (xy) {
|
|
44
|
+
case 'UU':
|
|
45
|
+
type = 'content';
|
|
46
|
+
break;
|
|
47
|
+
case 'DU':
|
|
48
|
+
type = 'delete-modify';
|
|
49
|
+
break;
|
|
50
|
+
case 'UD':
|
|
51
|
+
type = 'modify-delete';
|
|
52
|
+
break;
|
|
53
|
+
case 'AA':
|
|
54
|
+
type = 'both-added';
|
|
55
|
+
break;
|
|
56
|
+
case 'DD':
|
|
57
|
+
type = 'both-deleted';
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
if (type) {
|
|
61
|
+
conflicts.push({ file, type });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return conflicts;
|
|
65
|
+
}
|
|
66
|
+
// ─── Delete Conflict Resolution ──────────────────────────────────────────────
|
|
67
|
+
/**
|
|
68
|
+
* Resolve a delete/modify or both-deleted conflict by accepting deletion.
|
|
69
|
+
* For entity folders (containing main.md), cleans up the parent if empty.
|
|
70
|
+
*/
|
|
71
|
+
export function resolveDeleteConflict(repoPath, conflict) {
|
|
72
|
+
const { file, type } = conflict;
|
|
73
|
+
// Accept deletion via git rm
|
|
74
|
+
spawnSync('git', ['rm', '--force', file], { cwd: repoPath, encoding: 'utf-8' });
|
|
75
|
+
// If this is a main.md inside an entity folder, clean up the empty parent
|
|
76
|
+
if (file.endsWith('/main.md') || file.endsWith('\\main.md')) {
|
|
77
|
+
const parentDir = join(repoPath, dirname(file));
|
|
78
|
+
if (existsSync(parentDir)) {
|
|
79
|
+
try {
|
|
80
|
+
const remaining = readdirSync(parentDir);
|
|
81
|
+
if (remaining.length === 0) {
|
|
82
|
+
rmSync(parentDir, { recursive: true, force: true });
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
// Non-fatal — folder cleanup is best-effort
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const reason = type === 'delete-modify'
|
|
91
|
+
? 'deleted (remote deleted, local edits discarded)'
|
|
92
|
+
: type === 'modify-delete'
|
|
93
|
+
? 'deleted (local delete confirmed)'
|
|
94
|
+
: 'deleted (both sides deleted)';
|
|
95
|
+
return { file, resolved: true, summary: reason };
|
|
96
|
+
}
|
|
97
|
+
// ─── Content Conflict Resolution (LLM) ──────────────────────────────────────
|
|
98
|
+
/**
|
|
99
|
+
* Resolve a content conflict (UU or AA) using LLM merge.
|
|
100
|
+
*/
|
|
101
|
+
async function resolveContentConflict(repoPath, file, model, onProgress) {
|
|
102
|
+
const fullPath = join(repoPath, file);
|
|
103
|
+
const content = readFileSync(fullPath, 'utf-8');
|
|
104
|
+
const { ours, theirs } = extractConflictVersions(content);
|
|
105
|
+
if (!ours || !theirs) {
|
|
106
|
+
return { file, resolved: false, summary: 'could not parse conflict markers' };
|
|
107
|
+
}
|
|
108
|
+
onProgress(` Merging: ${file}`);
|
|
109
|
+
const merged = await llmMerge(model, ours, theirs, file);
|
|
110
|
+
if (!merged) {
|
|
111
|
+
return { file, resolved: false, summary: 'AI merge returned empty result' };
|
|
112
|
+
}
|
|
113
|
+
writeFileSync(fullPath, merged, 'utf-8');
|
|
114
|
+
spawnSync('git', ['add', file], { cwd: repoPath, encoding: 'utf-8' });
|
|
115
|
+
return { file, resolved: true, summary: 'merged by AI' };
|
|
116
|
+
}
|
|
117
|
+
// ─── Main Entry Point ────────────────────────────────────────────────────────
|
|
118
|
+
/**
|
|
119
|
+
* Attempt to resolve all conflicts in a repo mid-rebase.
|
|
120
|
+
* The repo should be in a conflicted rebase state (not yet aborted).
|
|
121
|
+
* Returns success=true if all conflicts were resolved and rebase continued.
|
|
122
|
+
*
|
|
123
|
+
* Delete conflicts are resolved without an API key.
|
|
124
|
+
* Content conflicts require an LLM (API key).
|
|
125
|
+
*/
|
|
126
|
+
export async function resolveConflicts(repoPath, onProgress) {
|
|
127
|
+
const log = onProgress ?? (() => { });
|
|
128
|
+
// Classify all conflicts
|
|
129
|
+
const conflicts = classifyConflicts(repoPath);
|
|
130
|
+
if (conflicts.length === 0) {
|
|
131
|
+
return { success: false, resolutions: [] };
|
|
132
|
+
}
|
|
133
|
+
const deleteConflicts = conflicts.filter(c => c.type === 'delete-modify' || c.type === 'modify-delete' || c.type === 'both-deleted');
|
|
134
|
+
const contentConflicts = conflicts.filter(c => c.type === 'content' || c.type === 'both-added');
|
|
135
|
+
const resolutions = [];
|
|
136
|
+
// Phase 1: Resolve delete conflicts (no API key needed)
|
|
137
|
+
for (const conflict of deleteConflicts) {
|
|
138
|
+
try {
|
|
139
|
+
log(` Resolving: ${conflict.file} (${conflict.type})`);
|
|
140
|
+
const resolution = resolveDeleteConflict(repoPath, conflict);
|
|
141
|
+
resolutions.push(resolution);
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
log(` Failed to resolve ${conflict.file}: ${err instanceof Error ? err.message : 'unknown error'}`);
|
|
145
|
+
resolutions.push({ file: conflict.file, resolved: false });
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Phase 2: Resolve content conflicts (needs LLM)
|
|
149
|
+
if (contentConflicts.length > 0) {
|
|
150
|
+
const config = loadUserConfig();
|
|
151
|
+
const apiKey = getAnthropicCredential(config) || process.env.ANTHROPIC_API_KEY;
|
|
152
|
+
if (!apiKey) {
|
|
153
|
+
// Can't resolve content conflicts without API key — mark as failed
|
|
154
|
+
for (const conflict of contentConflicts) {
|
|
155
|
+
resolutions.push({
|
|
156
|
+
file: conflict.file,
|
|
157
|
+
resolved: false,
|
|
158
|
+
summary: 'content conflict (no API key for AI merge)',
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
log(` Resolving ${contentConflicts.length} content conflict${contentConflicts.length === 1 ? '' : 's'} via AI merge...`);
|
|
164
|
+
const provider = config.enrichment_model_provider ?? config.model_provider ?? 'anthropic';
|
|
165
|
+
const modelId = config.enrichment_model_id ?? config.model_id ?? 'claude-sonnet-4-5-20250929';
|
|
166
|
+
const model = createModel(provider, modelId, apiKey);
|
|
167
|
+
for (const conflict of contentConflicts) {
|
|
168
|
+
try {
|
|
169
|
+
const resolution = await resolveContentConflict(repoPath, conflict.file, model, log);
|
|
170
|
+
resolutions.push(resolution);
|
|
171
|
+
}
|
|
172
|
+
catch (err) {
|
|
173
|
+
log(` Failed to resolve ${conflict.file}: ${err instanceof Error ? err.message : 'unknown error'}`);
|
|
174
|
+
resolutions.push({ file: conflict.file, resolved: false });
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// Check if all resolved
|
|
180
|
+
const allResolved = resolutions.every(r => r.resolved);
|
|
181
|
+
if (!allResolved) {
|
|
182
|
+
spawnSync('git', ['rebase', '--abort'], { cwd: repoPath, encoding: 'utf-8' });
|
|
183
|
+
return { success: false, resolutions };
|
|
184
|
+
}
|
|
185
|
+
// All resolved — continue the rebase
|
|
186
|
+
const cont = spawnSync('git', ['rebase', '--continue'], {
|
|
187
|
+
cwd: repoPath,
|
|
188
|
+
encoding: 'utf-8',
|
|
189
|
+
env: { ...process.env, GIT_EDITOR: 'true' }, // skip commit message editor
|
|
190
|
+
});
|
|
191
|
+
if (cont.status !== 0) {
|
|
192
|
+
// Rebase continue failed — might have more conflicts in later commits
|
|
193
|
+
// Try to resolve recursively
|
|
194
|
+
const combined = cont.stdout + cont.stderr;
|
|
195
|
+
if (combined.includes('CONFLICT') || combined.includes('could not apply')) {
|
|
196
|
+
const nestedResult = await resolveConflicts(repoPath, onProgress);
|
|
197
|
+
return {
|
|
198
|
+
success: nestedResult.success,
|
|
199
|
+
resolutions: [...resolutions, ...nestedResult.resolutions],
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
spawnSync('git', ['rebase', '--abort'], { cwd: repoPath, encoding: 'utf-8' });
|
|
203
|
+
return { success: false, resolutions };
|
|
204
|
+
}
|
|
205
|
+
return { success: true, resolutions };
|
|
206
|
+
}
|
|
207
|
+
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
208
|
+
/**
|
|
209
|
+
* Extract ours and theirs versions from git conflict markers.
|
|
210
|
+
*/
|
|
211
|
+
export function extractConflictVersions(content) {
|
|
212
|
+
const lines = content.split('\n');
|
|
213
|
+
let ours = '';
|
|
214
|
+
let theirs = '';
|
|
215
|
+
let section = 'none';
|
|
216
|
+
let hasConflict = false;
|
|
217
|
+
let oursContext = '';
|
|
218
|
+
let theirsContext = '';
|
|
219
|
+
let commonBefore = '';
|
|
220
|
+
let commonAfter = '';
|
|
221
|
+
let afterConflict = false;
|
|
222
|
+
for (const line of lines) {
|
|
223
|
+
if (line.startsWith('<<<<<<<')) {
|
|
224
|
+
hasConflict = true;
|
|
225
|
+
section = 'ours';
|
|
226
|
+
oursContext += commonBefore;
|
|
227
|
+
theirsContext += commonBefore;
|
|
228
|
+
commonBefore = '';
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
if (line.startsWith('=======') && section === 'ours') {
|
|
232
|
+
section = 'theirs';
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
if (line.startsWith('>>>>>>>')) {
|
|
236
|
+
section = 'none';
|
|
237
|
+
afterConflict = true;
|
|
238
|
+
continue;
|
|
239
|
+
}
|
|
240
|
+
if (section === 'ours') {
|
|
241
|
+
oursContext += line + '\n';
|
|
242
|
+
}
|
|
243
|
+
else if (section === 'theirs') {
|
|
244
|
+
theirsContext += line + '\n';
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
if (afterConflict) {
|
|
248
|
+
commonAfter += line + '\n';
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
commonBefore += line + '\n';
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
if (!hasConflict)
|
|
256
|
+
return { ours: null, theirs: null };
|
|
257
|
+
ours = (oursContext + commonAfter).trim();
|
|
258
|
+
theirs = (theirsContext + commonAfter).trim();
|
|
259
|
+
// Return full file versions (common prefix + conflict section + common suffix)
|
|
260
|
+
const prefix = commonBefore.trimEnd();
|
|
261
|
+
return {
|
|
262
|
+
ours: prefix ? `${prefix}\n${ours}` : ours,
|
|
263
|
+
theirs: prefix ? `${prefix}\n${theirs}` : theirs,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Ask the LLM to merge two versions of a file.
|
|
268
|
+
*/
|
|
269
|
+
async function llmMerge(model, ours, theirs, filename) {
|
|
270
|
+
const prompt = `You are merging two versions of a Studiograph entity file (${filename}).
|
|
271
|
+
This is a markdown file with YAML frontmatter. Your job is to produce a single merged version that preserves the intent of both changes.
|
|
272
|
+
|
|
273
|
+
Rules:
|
|
274
|
+
- For timestamps (created_at, updated_at): keep the most recent value
|
|
275
|
+
- For additive changes (new fields, new content): include both
|
|
276
|
+
- For conflicting scalar values: prefer the version with more information; if unclear, prefer "theirs" (the remote version)
|
|
277
|
+
- For content (markdown body): combine both additions if they are distinct; deduplicate if they overlap
|
|
278
|
+
- Output ONLY the merged file content, no explanation or code fences
|
|
279
|
+
|
|
280
|
+
## Version A (local)
|
|
281
|
+
|
|
282
|
+
${ours}
|
|
283
|
+
|
|
284
|
+
## Version B (remote)
|
|
285
|
+
|
|
286
|
+
${theirs}
|
|
287
|
+
|
|
288
|
+
## Merged output`;
|
|
289
|
+
try {
|
|
290
|
+
const result = await generateText({
|
|
291
|
+
model,
|
|
292
|
+
prompt,
|
|
293
|
+
maxOutputTokens: 4096,
|
|
294
|
+
});
|
|
295
|
+
const text = result.text.trim();
|
|
296
|
+
if (!text)
|
|
297
|
+
return null;
|
|
298
|
+
return text;
|
|
299
|
+
}
|
|
300
|
+
catch {
|
|
301
|
+
return null;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
//# sourceMappingURL=merge-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-resolver.js","sourceRoot":"","sources":["../../src/utils/merge-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,8 @@ export declare function checkGit(): CheckResult;
|
|
|
25
25
|
*/
|
|
26
26
|
export declare function checkNode(): CheckResult;
|
|
27
27
|
/**
|
|
28
|
-
* Check whether a GitHub auth token is
|
|
28
|
+
* Check whether a GitHub auth token is available.
|
|
29
|
+
* Checks env vars first, then stored file.
|
|
29
30
|
* This is contextual — absence is a warning, not a failure.
|
|
30
31
|
*/
|
|
31
32
|
export declare function checkGithubAuth(): AuthCheckResult;
|
package/dist/utils/preflight.js
CHANGED
|
@@ -43,10 +43,17 @@ export function checkNode() {
|
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
|
-
* Check whether a GitHub auth token is
|
|
46
|
+
* Check whether a GitHub auth token is available.
|
|
47
|
+
* Checks env vars first, then stored file.
|
|
47
48
|
* This is contextual — absence is a warning, not a failure.
|
|
48
49
|
*/
|
|
49
50
|
export function checkGithubAuth() {
|
|
51
|
+
if (process.env.STUDIOGRAPH_GITHUB_TOKEN) {
|
|
52
|
+
return { present: true, message: 'GitHub auth configured (via STUDIOGRAPH_GITHUB_TOKEN)' };
|
|
53
|
+
}
|
|
54
|
+
if (process.env.GITHUB_TOKEN) {
|
|
55
|
+
return { present: true, message: 'GitHub auth configured (via GITHUB_TOKEN)' };
|
|
56
|
+
}
|
|
50
57
|
const stored = loadToken();
|
|
51
58
|
if (stored) {
|
|
52
59
|
return { present: true, message: `GitHub auth configured (${stored.user.login})` };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/utils/preflight.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,8CAA8C;AAC9C,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAcjC;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAC9E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,OAAO,QAAQ,EAAE,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,eAAe;YACxB,IAAI,EAAE,sCAAsC;SAC7C,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClD,IAAI,KAAK,IAAI,cAAc,EAAE,CAAC;QAC5B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,OAAO,QAAQ,EAAE,CAAC;IAChE,CAAC;IACD,OAAO;QACL,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,YAAY,OAAO,0BAA0B,cAAc,IAAI;QACxE,IAAI,EAAE,oBAAoB,cAAc,2BAA2B;KACpE,CAAC;AACJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/utils/preflight.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,8CAA8C;AAC9C,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAcjC;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAC9E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,OAAO,QAAQ,EAAE,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,eAAe;YACxB,IAAI,EAAE,sCAAsC;SAC7C,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClD,IAAI,KAAK,IAAI,cAAc,EAAE,CAAC;QAC5B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,OAAO,QAAQ,EAAE,CAAC;IAChE,CAAC;IACD,OAAO;QACL,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,YAAY,OAAO,0BAA0B,cAAc,IAAI;QACxE,IAAI,EAAE,oBAAoB,cAAc,2BAA2B;KACpE,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;QACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,uDAAuD,EAAE,CAAC;IAC7F,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC7B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC;IACjF,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,2BAA2B,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IACrF,CAAC;IACD,OAAO;QACL,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,4BAA4B;QACrC,IAAI,EAAE,yCAAyC;KAChD,CAAC;AACJ,CAAC;AAOD;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,UAA4B,EAAE;IACzD,MAAM,EAAE,eAAe,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAEtD,MAAM,SAAS,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,SAAS,EAAE,CAAC;IAE/B,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACrB,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACtB,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC;QACrC,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight workspace config reader.
|
|
3
|
+
*
|
|
4
|
+
* Reads .studiograph/workspace.json synchronously without
|
|
5
|
+
* instantiating the full Workspace class. Used by sync pipeline
|
|
6
|
+
* modules that only need repo paths.
|
|
7
|
+
*/
|
|
8
|
+
export declare function loadWorkspaceConfig(workspacePath: string): any;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight workspace config reader.
|
|
3
|
+
*
|
|
4
|
+
* Reads .studiograph/workspace.json synchronously without
|
|
5
|
+
* instantiating the full Workspace class. Used by sync pipeline
|
|
6
|
+
* modules that only need repo paths.
|
|
7
|
+
*/
|
|
8
|
+
import { existsSync, readFileSync } from 'fs';
|
|
9
|
+
import { join } from 'path';
|
|
10
|
+
export function loadWorkspaceConfig(workspacePath) {
|
|
11
|
+
try {
|
|
12
|
+
const configPath = join(workspacePath, '.studiograph', 'workspace.json');
|
|
13
|
+
if (existsSync(configPath)) {
|
|
14
|
+
return JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
// non-fatal — callers handle null
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=workspace-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-config.js","sourceRoot":"","sources":["../../src/utils/workspace-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,UAAU,mBAAmB,CAAC,aAAqB;IACvD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;QACzE,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const env={}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:"Inter", ui-sans-serif, system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--spacing:.25rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-accent:#6e6ee8;--color-accent-hover:#5c5cd6;--color-success:#3ecf8e;--color-destructive:#e54d4d;--color-link:#8b8bf0}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.block{display:block}.contents{display:contents}.flex{display:flex}.list-item{display:list-item}.table{display:table}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.flex-shrink{flex-shrink:1}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.rounded-\[6px\]{border-radius:6px}.border{border-style:var(--tw-border-style);border-width:1px}.italic{font-style:italic}.underline{text-decoration-line:underline}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}}:root,[data-theme=dark]{--color-bg:#09090b;--color-bg-elevated:#0f0f12;--color-bg-surface:#141418;--color-bg-hover:#1a1a1f;--color-bg-selected:#1a1a1f;--color-border:#1e1e24;--color-border-strong:#2a2a32;--color-text-primary:#ededef;--color-text-secondary:#a0a0a6;--color-text-tertiary:#5c5c66;--color-accent-muted:#8b8bf014;--color-badge-bg:#1a1a22;--color-badge-text:#8b8b94}[data-theme=light]{--color-bg:#f8f8fa;--color-bg-elevated:#f0f0f3;--color-bg-surface:#e8e8ec;--color-bg-hover:#e2e2e8;--color-bg-selected:#e2e2e8;--color-border:#dadadf;--color-border-strong:#c9c9d0;--color-text-primary:#1a1a1f;--color-text-secondary:#63636b;--color-text-tertiary:#9898a0;--color-accent-muted:#6e6ee814;--color-badge-bg:#e0e0e5;--color-badge-text:#63636b}*{box-sizing:border-box;margin:0;padding:0}:focus{outline:none}body{font-family:var(--font-sans);color:var(--color-text-primary);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:13px;line-height:20px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-tertiary)}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.content-row.svelte-1uha8ag{display:flex;flex:1;min-height:0;overflow:hidden}.entity-area.svelte-1uha8ag{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.welcome.svelte-1uha8ag{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--color-text-tertiary)}.welcome.svelte-1uha8ag h2:where(.svelte-1uha8ag){font-size:16px;font-weight:500;color:var(--color-text-secondary)}.welcome.svelte-1uha8ag p:where(.svelte-1uha8ag){font-size:13px}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.content-row.svelte-1dc9loe{display:flex;flex:1;min-height:0;overflow:hidden}.entity-area.svelte-1dc9loe{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.document-scroll.svelte-1dc9loe{flex:1;overflow-y:auto;min-height:0}.editor-bar.svelte-1dc9loe{height:40px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 16px 0 40px;border-bottom:1px solid var(--color-border)}.breadcrumb-path.svelte-1dc9loe{font-size:13px;color:var(--color-text-secondary);line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.bc-sep.svelte-1dc9loe{color:var(--color-text-tertiary);margin:0 6px}.bc-segment.svelte-1dc9loe{color:var(--color-text-secondary)}.bc-current.svelte-1dc9loe{color:var(--color-text-primary)}.editor-actions.svelte-1dc9loe{display:flex;align-items:center;gap:8px;flex-shrink:0;white-space:nowrap}.status-text.svelte-1dc9loe{font-size:12px}.status-text.saving.svelte-1dc9loe{color:var(--color-text-tertiary)}.status-text.error.svelte-1dc9loe{color:var(--color-destructive)}.status-text.dirty.svelte-1dc9loe{color:var(--color-text-tertiary)}.status-text.saved.svelte-1dc9loe{color:var(--color-success)}.action-btn.svelte-1dc9loe{height:26px;padding:0 12px;border-radius:4px;font-size:12px;font-family:inherit;font-weight:500;cursor:pointer;border:1px solid var(--color-border-strong);transition:background .15s,color .15s}.action-btn.discard.svelte-1dc9loe{background:transparent;color:var(--color-text-secondary)}.action-btn.discard.svelte-1dc9loe:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.action-btn.save.svelte-1dc9loe{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.action-btn.save.svelte-1dc9loe:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.action-btn.open-app.svelte-1dc9loe{background:transparent;color:var(--color-text-secondary);text-decoration:none;display:inline-flex;align-items:center;text-transform:capitalize}.action-btn.open-app.svelte-1dc9loe:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}@media(max-width:960px){.breadcrumb-path.svelte-1dc9loe{display:none}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.csv-editor.svelte-63hltt{padding:32px 40px 0}.table-scroll.svelte-63hltt{overflow-x:auto}table.svelte-63hltt{border-collapse:collapse;width:100%;font-size:13px;font-family:var(--font-sans)}th.svelte-63hltt,td.svelte-63hltt{border:1px solid var(--color-border);padding:0;height:32px}th.svelte-63hltt{background:transparent;font-weight:500;color:var(--color-text-secondary);position:sticky;top:0;z-index:1}th.svelte-63hltt:not(.row-num):not(.col-add){position:sticky;top:0;z-index:1}.row-num.svelte-63hltt{width:40px;text-align:center;color:var(--color-text-tertiary);font-size:11px;background:transparent}.cell-input.svelte-63hltt{width:100%;height:100%;border:none;background:transparent;color:var(--color-text-primary);font-family:var(--font-sans);font-size:13px;padding:4px 8px;outline:none}.cell-input.svelte-63hltt:focus{outline:2px solid var(--color-accent);outline-offset:-2px}.header-input.svelte-63hltt{font-weight:500;color:var(--color-text-secondary)}th.svelte-63hltt:not(.row-num):not(.col-add){position:relative}.col-delete-btn.svelte-63hltt{position:absolute;top:2px;right:2px;width:18px;height:18px;display:none;align-items:center;justify-content:center;border:none;background:var(--color-bg-hover);border-radius:3px;cursor:pointer;color:var(--color-text-tertiary);padding:0}th.svelte-63hltt:hover .col-delete-btn:where(.svelte-63hltt){display:flex}.col-delete-btn.svelte-63hltt:hover{color:var(--color-destructive);background:var(--color-bg-selected)}.col-add.svelte-63hltt{width:32px;border:none;background:transparent}.col-add-btn.svelte-63hltt{display:flex;align-items:center;justify-content:center;width:100%;height:100%;border:none;background:transparent;cursor:pointer;color:var(--color-text-tertiary);padding:0}.col-add-btn.svelte-63hltt:hover{color:var(--color-accent);background:var(--color-bg-hover)}.actions.svelte-63hltt{width:32px;text-align:center;border:none}.delete-btn.svelte-63hltt{display:none;align-items:center;justify-content:center;border:none;background:transparent;color:var(--color-text-tertiary);cursor:pointer;padding:0;width:20px;height:20px;border-radius:3px;margin:0 auto}tr.svelte-63hltt:hover .delete-btn:where(.svelte-63hltt){display:flex}.delete-btn.svelte-63hltt:hover{color:var(--color-destructive);background:var(--color-bg-hover)}.csv-footer.svelte-63hltt{display:flex;align-items:center;gap:16px;padding:8px 0}.add-row-btn.svelte-63hltt{display:flex;align-items:center;gap:6px;border:none;background:transparent;color:var(--color-text-tertiary);cursor:pointer;font-family:var(--font-sans);font-size:13px;padding:4px 8px;border-radius:4px;transition:color .15s,background .15s}.add-row-btn.svelte-63hltt:hover{color:var(--color-text-secondary);background:var(--color-bg-hover)}.content-row.svelte-xtfs5g{display:flex;flex:1;min-height:0;overflow:hidden}.entity-area.svelte-xtfs5g{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.document-scroll.svelte-xtfs5g{flex:1;overflow-y:auto;min-height:0}.editor-bar.svelte-xtfs5g{height:40px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 40px;border-bottom:1px solid var(--color-border)}.breadcrumb-path.svelte-xtfs5g{font-size:13px;color:var(--color-text-secondary);line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.bc-sep.svelte-xtfs5g{color:var(--color-text-tertiary);margin:0 6px}.bc-segment.svelte-xtfs5g{color:var(--color-text-secondary)}.bc-current.svelte-xtfs5g{color:var(--color-text-primary)}.editor-actions.svelte-xtfs5g{display:flex;align-items:center;gap:8px;flex-shrink:0}.status-text.svelte-xtfs5g{font-size:12px}.status-text.saving.svelte-xtfs5g{color:var(--color-text-tertiary)}.status-text.error.svelte-xtfs5g{color:var(--color-destructive)}.status-text.dirty.svelte-xtfs5g{color:var(--color-text-tertiary)}.status-text.saved.svelte-xtfs5g{color:var(--color-success)}.action-btn.svelte-xtfs5g{height:26px;padding:0 12px;border-radius:4px;font-size:12px;font-family:inherit;font-weight:500;cursor:pointer;border:1px solid var(--color-border-strong);transition:background .15s,color .15s}.action-btn.discard.svelte-xtfs5g{background:transparent;color:var(--color-text-secondary)}.action-btn.discard.svelte-xtfs5g:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.action-btn.save.svelte-xtfs5g{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.action-btn.save.svelte-xtfs5g:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover)}@media(max-width:960px){.breadcrumb-path.svelte-xtfs5g{display:none}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.graph-view.svelte-1i33fky{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.canvas-wrap.svelte-1i33fky{flex:1;min-height:0;position:relative;overflow:hidden;touch-action:none}.focus-btn.svelte-1i33fky{position:absolute;top:16px;right:16px;display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:6px;background:transparent;color:var(--color-text-tertiary);cursor:pointer;z-index:2;transition:background .15s,color .15s}.focus-btn.svelte-1i33fky:hover{background:var(--color-bg-hover);color:var(--color-text-secondary)}.focus-btn.active.svelte-1i33fky{background:var(--color-accent);color:#fff}.focus-btn.active.svelte-1i33fky:hover{background:var(--color-accent-hover)}.legend-panel.svelte-1i33fky{position:absolute;bottom:16px;right:16px;display:flex;flex-direction:column;background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;overflow:hidden;z-index:2}.legend-item.svelte-1i33fky{display:flex;align-items:center;gap:8px;white-space:nowrap;padding:5px 12px;cursor:pointer}.legend-item.svelte-1i33fky:hover{background:var(--color-bg-hover)}.legend-dot.svelte-1i33fky{width:8px;height:8px;border-radius:4px;flex-shrink:0}.legend-label.svelte-1i33fky{font-size:12px;color:var(--color-text-secondary);flex:1}.legend-count.svelte-1i33fky{font-size:11px;color:var(--color-text-tertiary);font-variant-numeric:tabular-nums}.content-row.svelte-315y67{display:flex;flex:1;min-height:0;overflow:hidden}.graph-area.svelte-315y67{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.sidebar.svelte-6dohdz{width:340px;min-width:340px;display:flex;flex-direction:column;overflow:hidden;background:var(--color-bg);border-right:1px solid var(--color-border)}.sidebar-header.svelte-6dohdz{height:40px;display:flex;align-items:center;gap:8px;padding:0 16px;border-bottom:1px solid var(--color-border);flex-shrink:0}.workspace-icon.svelte-6dohdz{width:28px;height:28px;border-radius:6px;background:var(--color-accent, #6e6ee8);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:12px;flex-shrink:0}.workspace-name.svelte-6dohdz{flex:1;font-size:13px;font-weight:600;color:var(--color-text-primary)}.filter-bar.svelte-6dohdz{position:relative;display:flex;align-items:center;height:40px;padding:0 12px 0 52px;border-bottom:1px solid var(--color-border);flex-shrink:0}.filter-icon.svelte-6dohdz{position:absolute;left:22px;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:16px;color:var(--color-text-tertiary)}.filter-input.svelte-6dohdz{flex:1;background:transparent;border:none;outline:none;padding:0;margin:0;font-size:13px;line-height:1.4;font-family:inherit;color:var(--color-text-primary)}.filter-input.svelte-6dohdz::placeholder{color:var(--color-text-tertiary)}.filter-clear.svelte-6dohdz{display:flex;align-items:center;justify-content:center;width:18px;height:18px;border:none;background:var(--color-bg-hover);border-radius:4px;cursor:pointer;color:var(--color-text-tertiary);flex-shrink:0}.filter-clear.svelte-6dohdz:hover{background:var(--color-bg-selected);color:var(--color-text-secondary)}.repo-type-icon.svelte-6dohdz{display:inline-flex;align-items:center;color:var(--color-text-tertiary);margin-right:6px;flex-shrink:0;align-self:center}.tree.svelte-6dohdz{flex:1;overflow-y:auto;padding-top:0}.tree-group.svelte-6dohdz{display:flex;flex-direction:column}.tree-group.svelte-6dohdz+.tree-group:where(.svelte-6dohdz){margin-top:0}.repo-row.svelte-6dohdz{display:flex;align-items:baseline;height:32px;line-height:32px;width:100%;padding:0 12px 0 20px;border:none;background:transparent;cursor:pointer;font-family:inherit;text-align:left;border-left:2px solid transparent}.repo-row.svelte-6dohdz:hover,.repo-row.focused.svelte-6dohdz{background:var(--color-bg-hover)}.repo-row.repo-active.svelte-6dohdz{border-left-color:var(--active-color)}.repo-name.svelte-6dohdz{font-size:13px;color:var(--color-text-secondary)}.repo-row.repo-active.svelte-6dohdz .repo-name:where(.svelte-6dohdz),.repo-row.repo-active.svelte-6dohdz .repo-type-icon:where(.svelte-6dohdz){font-weight:600;color:var(--color-text-primary)}.tree-row.svelte-6dohdz{display:flex;align-items:baseline;height:32px;line-height:32px;padding-right:12px;color:var(--color-text-secondary);font-size:13px;cursor:pointer;border:none;background:transparent;font-family:inherit;text-align:left;width:100%;border-left:2px solid transparent}.tree-row.svelte-6dohdz:hover,.tree-row.focused.svelte-6dohdz{background:var(--color-bg-hover)}.tree-row.selected.svelte-6dohdz{background:var(--color-bg-selected);border-left-color:var(--active-color);color:var(--color-text-primary);font-weight:600}.row-chevron.svelte-6dohdz{display:inline-flex;align-items:center;justify-content:center;width:16px;height:32px;flex-shrink:0;margin-right:14px;color:var(--color-text-tertiary);align-self:center}.row-label.svelte-6dohdz{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-count.svelte-6dohdz{font-size:11px;color:var(--color-text-tertiary);margin-left:8px;flex-shrink:0}.dirty-dot.svelte-6dohdz{width:6px;height:6px;border-radius:3px;flex-shrink:0;margin-left:8px;display:none;align-self:center}.tree-row.dirty.svelte-6dohdz .dirty-dot:where(.svelte-6dohdz){display:block}.repo-dirty-dot.svelte-6dohdz{width:6px;height:6px;border-radius:3px;flex-shrink:0;margin-left:auto;background:var(--color-text-tertiary);align-self:center}.indent-group.svelte-6dohdz{position:relative}.indent-group.svelte-6dohdz:before{content:"";position:absolute;left:var(--guide-left);top:0;bottom:0;width:1px;background:var(--color-border);pointer-events:none}.loading-row.svelte-6dohdz{height:32px;display:flex;align-items:center;font-size:12px;color:var(--color-text-tertiary)}.new-entity-row.svelte-6dohdz{color:var(--color-text-tertiary)}.new-entity-row.svelte-6dohdz:hover{color:var(--color-text-secondary)}.new-entity-icon.svelte-6dohdz{display:flex;align-items:center;justify-content:center;width:16px;flex-shrink:0;margin-right:14px}.filter-match.svelte-6dohdz{background:color-mix(in srgb,var(--color-accent, #6e6ee8) 25%,transparent);color:inherit;border-radius:2px;padding:0}.no-results.svelte-6dohdz{padding:24px 16px;font-size:13px;color:var(--color-text-tertiary);text-align:center}.status-bar.svelte-g9asya{height:36px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 16px;position:relative;background:var(--color-bg);border-top:1px solid var(--color-border);font-size:12px}.status-left.svelte-g9asya{display:flex;align-items:center;gap:8px}.theme-toggle.svelte-g9asya{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:1px solid var(--color-border);background:transparent;color:var(--color-text-tertiary);cursor:pointer;border-radius:4px;transition:color .15s,border-color .15s}.theme-toggle.svelte-g9asya:hover{color:var(--color-text-primary);border-color:var(--color-border-strong)}.stat.svelte-g9asya{color:var(--color-text-tertiary);font-size:12px}.stat-sep.svelte-g9asya{color:var(--color-text-tertiary);opacity:.5}.status-center.svelte-g9asya{position:absolute;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px}.revert-btn.svelte-g9asya{display:inline-flex;align-items:center;height:24px;padding:0 10px;border:none;background:transparent;color:var(--color-text-tertiary);font-family:inherit;font-size:12px;cursor:pointer;border-radius:4px;transition:color .15s,background .15s}.revert-btn.svelte-g9asya:hover:not(:disabled){color:var(--color-text-secondary);background:var(--color-bg-hover)}.revert-btn.svelte-g9asya:disabled{opacity:.5;cursor:default}.commit-btn.svelte-g9asya{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 8px;border:none;background:var(--color-accent);color:#fff;font-family:inherit;font-size:12px;font-weight:500;cursor:pointer;border-radius:4px;transition:background .15s}.commit-btn.svelte-g9asya:hover:not(:disabled){background:var(--color-accent-hover)}.commit-btn.svelte-g9asya:disabled{opacity:.7;cursor:default}.status-right.svelte-g9asya{display:flex;align-items:center;gap:8px}.sync-btn.svelte-g9asya{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 8px;border:none;background:transparent;color:var(--color-text-tertiary);font-family:inherit;font-size:12px;cursor:pointer;border-radius:4px;transition:color .15s,background .15s}.sync-btn.svelte-g9asya:hover:not(:disabled){color:var(--color-text-secondary);background:var(--color-bg-hover)}.sync-btn.svelte-g9asya:disabled{opacity:.5;cursor:default}.sync-btn-accent.svelte-g9asya{background:var(--color-accent);color:#fff}.sync-btn-accent.svelte-g9asya:hover:not(:disabled){background:var(--color-accent-hover);color:#fff}.sync-count.svelte-g9asya{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;border-radius:8px;font-size:10px;font-weight:600;background:#fff3}.sync-btn.svelte-g9asya:not(.sync-btn-accent) .sync-count:where(.svelte-g9asya){background:var(--color-bg-surface);color:var(--color-text-secondary)}.tooltip-anchor.svelte-g9asya{position:relative}.tooltip-popup.svelte-g9asya{display:none;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:6px;padding:8px 12px;min-width:200px;max-width:320px;max-height:240px;overflow-y:auto;box-shadow:0 4px 12px #00000026;z-index:100;font-size:11px;line-height:1.5}.tooltip-anchor.svelte-g9asya:hover .tooltip-popup:where(.svelte-g9asya){display:block}.tooltip-popup-right.svelte-g9asya{left:auto;right:0;transform:none;min-width:auto;width:max-content}.tooltip-file.svelte-g9asya{color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:8px}.tooltip-dot.svelte-g9asya{width:6px;height:6px;border-radius:3px;flex-shrink:0}.tooltip-dot.status-modified.svelte-g9asya{background:var(--color-accent)}.tooltip-dot.status-added.svelte-g9asya{background:var(--color-success, #34a853)}.tooltip-dot.status-deleted.svelte-g9asya{background:var(--color-destructive, #ea4335)}.search-backdrop.svelte-1xems06{position:fixed;inset:0;z-index:1000;display:flex;align-items:flex-start;justify-content:center;padding-top:80px}[data-theme=dark] .search-backdrop.svelte-1xems06{background:#0009}[data-theme=light] .search-backdrop.svelte-1xems06{background:#00000040}.search-modal.svelte-1xems06{width:680px;max-height:560px;display:flex;flex-direction:column;background:var(--color-bg-elevated);border:1px solid var(--color-border-strong);border-radius:12px;overflow:hidden;box-shadow:0 24px 48px #0006}.search-header.svelte-1xems06{display:flex;align-items:center;height:52px;padding:0 16px;gap:10px;border-bottom:1px solid var(--color-border)}.search-header.svelte-1xems06 svg{color:var(--color-text-tertiary);flex-shrink:0}.search-input.svelte-1xems06{flex:1;font-size:15px;color:var(--color-text-primary);line-height:20px;background:transparent;border:none;outline:none;font-family:inherit}.search-input.svelte-1xems06::placeholder{color:var(--color-text-tertiary)}.esc-badge.svelte-1xems06{font-family:var(--font-sans);font-size:11px;line-height:1;padding:3px 6px;border-radius:4px;background:var(--color-bg-surface);border:1px solid var(--color-border);color:var(--color-text-tertiary)}.results-list.svelte-1xems06{flex:1;overflow-y:auto;min-height:0}.empty-results.svelte-1xems06{padding:24px 16px;text-align:center;font-size:13px;color:var(--color-text-tertiary)}.result-row.svelte-1xems06{display:flex;align-items:flex-start;padding:10px 16px;cursor:pointer;border:none;background:transparent;width:100%;text-align:left;font-family:inherit}.result-row.svelte-1xems06:hover,.result-row.selected.svelte-1xems06{background:var(--color-bg-hover)}.result-body.svelte-1xems06{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.result-title-row.svelte-1xems06{display:flex;align-items:center;gap:8px}.result-title.svelte-1xems06{font-size:13px;font-weight:500;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.entity-tag.svelte-1xems06{flex-shrink:0;font-size:10px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;padding:1px 6px;border-radius:3px;background:var(--color-badge-bg);color:var(--color-badge-text)}.result-meta.svelte-1xems06{font-size:12px;color:var(--color-text-tertiary)}.search-footer.svelte-1xems06{display:flex;align-items:center;height:39px;padding:0 16px;gap:16px;border-top:1px solid var(--color-border)}.shortcut-group.svelte-1xems06{display:flex;align-items:center;gap:4px}.shortcut-key.svelte-1xems06{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 4px;border-radius:4px;background:var(--color-bg-surface);border:1px solid var(--color-border);color:var(--color-text-tertiary)}.shortcut-label.svelte-1xems06{font-size:11px;color:var(--color-text-tertiary);margin-left:2px}.commit-backdrop.svelte-1y1hhbg{position:fixed;inset:0;z-index:1000;display:flex;align-items:flex-start;justify-content:center;padding-top:140px}[data-theme=dark] .commit-backdrop.svelte-1y1hhbg{background:#0009}[data-theme=light] .commit-backdrop.svelte-1y1hhbg{background:#00000040}.commit-modal.svelte-1y1hhbg{width:560px;display:flex;flex-direction:column;background:var(--color-bg-elevated);border:1px solid var(--color-border-strong);border-radius:12px;overflow:hidden;box-shadow:0 24px 80px #00000080}.commit-header.svelte-1y1hhbg{padding:20px 24px 16px;border-bottom:1px solid var(--color-border);display:flex;flex-direction:column;gap:4px}.commit-title.svelte-1y1hhbg{font-size:16px;font-weight:500;color:var(--color-text-primary)}.commit-subtitle.svelte-1y1hhbg{font-size:12px;color:var(--color-text-tertiary)}.commit-body.svelte-1y1hhbg{padding:16px 24px 20px;display:flex;flex-direction:column}.section-label.svelte-1y1hhbg{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.44px;color:var(--color-text-tertiary);margin-bottom:8px}.staged-list.svelte-1y1hhbg{display:flex;flex-direction:column;gap:2px;margin-bottom:20px;max-height:200px;overflow-y:auto}.staged-row.svelte-1y1hhbg{display:flex;align-items:center;gap:10px;height:34px;padding:0 10px;border-radius:6px;background:#6e6ee81f}.checkbox.svelte-1y1hhbg{width:16px;height:16px;border-radius:4px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--color-accent);font-size:10px;color:#fff}.file-path.svelte-1y1hhbg{flex:1;font-size:12px;color:var(--color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.repo-badge.svelte-1y1hhbg{font-size:10px;color:var(--color-badge-text);background:var(--color-badge-bg);padding:1px 6px;border-radius:3px;flex-shrink:0}.message-input.svelte-1y1hhbg{width:100%;padding:11px 13px;background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:6px;font-size:13px;color:var(--color-text-primary);font-family:inherit;outline:none}.message-input.svelte-1y1hhbg::placeholder{color:var(--color-text-tertiary)}.message-input.svelte-1y1hhbg:focus{border-color:var(--color-accent)}.commit-footer.svelte-1y1hhbg{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-top:1px solid var(--color-border)}.footer-actions.svelte-1y1hhbg{display:flex;gap:8px}.footer-btn.svelte-1y1hhbg{font-family:inherit;font-size:13px;font-weight:500;padding:6px 12px;border-radius:6px;border:none;cursor:pointer}.footer-btn.svelte-1y1hhbg:disabled{opacity:.5;cursor:not-allowed}.footer-btn.ghost.svelte-1y1hhbg{color:var(--color-text-secondary);background:none}.footer-btn.ghost.svelte-1y1hhbg:hover{color:var(--color-text-primary);background:var(--color-bg-hover)}.footer-btn.subtle.svelte-1y1hhbg{color:var(--color-text-primary);background:none}.footer-btn.subtle.svelte-1y1hhbg:hover:not(:disabled){background:var(--color-bg-hover)}.footer-btn.accent.svelte-1y1hhbg{color:#fff;background:var(--color-accent)}.footer-btn.accent.svelte-1y1hhbg:hover:not(:disabled){background:var(--color-accent-hover)}.pull-toast.svelte-t5zlc0{position:fixed;bottom:56px;left:50%;transform:translate(-50%);z-index:900;display:flex;align-items:center;gap:16px;width:427px;padding:16px 20px;background:var(--color-bg-elevated);border:1px solid var(--color-border-strong);border-radius:8px;box-shadow:0 8px 32px #0006}.toast-content.svelte-t5zlc0{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.toast-title.svelte-t5zlc0{font-size:13px;color:var(--color-text-primary);line-height:18px}.toast-detail.svelte-t5zlc0{font-size:11px;color:var(--color-text-tertiary);line-height:16px}.progress-track.svelte-t5zlc0{width:80px;height:3px;border-radius:2px;background:var(--color-border);flex-shrink:0;overflow:hidden}.progress-fill.svelte-t5zlc0{height:100%;background:var(--color-accent);transition:width .3s ease}.app-frame.svelte-vr1z90{width:100vw;height:100vh;display:flex;flex-direction:column;overflow:hidden;background:var(--color-bg)}.app-body.svelte-vr1z90{flex:1;display:flex;min-height:0;overflow:hidden}.main-content.svelte-vr1z90{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.view-toolbar.svelte-r6dy5f{height:40px;flex-shrink:0;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 16px;border-bottom:1px solid var(--color-border)}.view-toggles.svelte-r6dy5f{grid-column:2;display:inline-flex;align-items:center;border-radius:6px;background:var(--color-bg-surface);padding:2px}.toggle-btn.svelte-r6dy5f{display:inline-flex;align-items:center;justify-content:center;gap:5px;height:22.5px;padding:0 12px;border-radius:4px;border:none;background:transparent;color:var(--color-text-tertiary);font-family:inherit;font-size:12px;cursor:pointer;text-decoration:none;transition:background .15s,color .15s}.toggle-btn.svelte-r6dy5f:hover{color:var(--color-text-secondary)}.toggle-btn.active.svelte-r6dy5f{background:var(--color-bg-hover);color:var(--color-text-primary);cursor:default}.toolbar-right.svelte-r6dy5f{display:flex;justify-content:flex-end;gap:8px}.chat-toggle.svelte-r6dy5f{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:var(--color-accent);color:#fff;cursor:pointer;border-radius:6px;transition:background .15s}.chat-toggle.svelte-r6dy5f:hover{background:var(--color-accent-hover)}.btn{display:inline-flex;align-items:center;justify-content:center;border-radius:4px;border:none;font-family:inherit;font-weight:400;cursor:pointer;flex-shrink:0;transition:color .15s,background .15s}.btn-default{background:var(--color-bg-surface);color:var(--color-text-primary);border:1px solid var(--color-border)}.btn-default:hover{background:var(--color-bg-hover)}.btn-ghost{background:transparent;color:var(--color-text-tertiary)}.btn-ghost:hover{color:var(--color-text-secondary);background:var(--color-bg-hover)}.btn-outline{background:transparent;color:var(--color-text-secondary);border:1px solid var(--color-border)}.btn-outline:hover{background:var(--color-bg-hover)}.btn-accent{background:var(--color-accent);color:#fff}.btn-accent:hover{background:var(--color-accent-hover)}.btn-default:not(.btn-sm):not(.btn-icon){height:28px;padding:0 12px;font-size:12px}.btn-sm{height:24px;padding:0 8px;font-size:11px}.btn-icon{width:28px;height:28px;padding:0}.chat-panel.svelte-1xwj6s7{width:340px;min-width:340px;flex-shrink:0;display:flex;flex-direction:column;background:var(--color-bg);border-left:1px solid var(--color-border)}.chat-header.svelte-1xwj6s7{height:40px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--color-border)}.chat-header-left.svelte-1xwj6s7{display:flex;align-items:center;gap:2px}.session-list.svelte-1xwj6s7{max-height:200px;overflow-y:auto;border-bottom:1px solid var(--color-border)}.session-item.svelte-1xwj6s7{display:flex;align-items:center;justify-content:space-between;width:100%;padding:6px 16px;font-size:12px;font-family:inherit;background:transparent;border:none;cursor:pointer;color:var(--color-text-secondary);text-align:left}.session-item.svelte-1xwj6s7:hover{background:var(--color-bg-hover)}.session-item.active.svelte-1xwj6s7{background:var(--color-bg-surface);color:var(--color-text-primary)}.session-title.svelte-1xwj6s7{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.session-date.svelte-1xwj6s7{flex-shrink:0;margin-left:8px;color:var(--color-text-tertiary);font-size:11px}.session-empty.svelte-1xwj6s7{padding:12px 16px;font-size:12px;color:var(--color-text-tertiary)}.chat-messages.svelte-1xwj6s7{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px}.empty-state.svelte-1xwj6s7{flex:1;display:flex;align-items:flex-end;justify-content:center;color:var(--color-text-tertiary);font-size:13px}.seed-prompts.svelte-1xwj6s7{display:flex;flex-direction:column;gap:8px;padding:0 8px;width:100%}.seed-prompt.svelte-1xwj6s7{font-size:12px;padding:8px 12px;border:1px solid var(--color-border);border-radius:8px;background:transparent;color:var(--color-text-secondary);cursor:pointer;font-family:inherit;text-align:left}.seed-prompt.svelte-1xwj6s7:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.message-group.svelte-1xwj6s7{display:flex;flex-direction:column;gap:8px}.user-bubble.svelte-1xwj6s7{background:var(--color-bg-surface);border-radius:6px;padding:10px 12px;font-size:13px;line-height:20px;color:var(--color-text-primary)}.agent-content.svelte-1xwj6s7{display:flex;flex-direction:column;gap:4px}.tool-calls.svelte-1xwj6s7{display:flex;flex-wrap:wrap;gap:2px 6px}.tool-call.svelte-1xwj6s7{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--color-text-tertiary)}.agent-text.svelte-1xwj6s7{font-size:13px;line-height:20px;color:var(--color-text-primary)}.prose.svelte-1xwj6s7 h1{font-size:17px;font-weight:600;color:var(--color-text-primary);margin:16px 0 8px}.prose.svelte-1xwj6s7 h2{font-size:15px;font-weight:600;color:var(--color-text-primary);margin:14px 0 6px}.prose.svelte-1xwj6s7 h3{font-size:14px;font-weight:600;color:var(--color-text-primary);margin:12px 0 4px}.prose.svelte-1xwj6s7 p{margin:0 0 8px}.prose.svelte-1xwj6s7 p:last-child{margin-bottom:0}.prose.svelte-1xwj6s7 strong{font-weight:600}.prose.svelte-1xwj6s7 ul,.prose.svelte-1xwj6s7 ol{padding-left:20px;margin:0 0 8px;color:var(--color-text-primary)}.prose.svelte-1xwj6s7 ul{list-style-type:disc}.prose.svelte-1xwj6s7 ol{list-style-type:decimal}.prose.svelte-1xwj6s7 li{margin-bottom:2px}.prose.svelte-1xwj6s7 table{width:100%;border-collapse:collapse;font-size:12px;margin:8px 0}.prose.svelte-1xwj6s7 th,.prose.svelte-1xwj6s7 td{border:1px solid var(--color-border);padding:4px 8px;text-align:left;vertical-align:top}.prose.svelte-1xwj6s7 th{font-weight:600}.prose.svelte-1xwj6s7 pre{background:var(--color-bg-surface);border-radius:4px;padding:8px 10px;overflow-x:auto;margin:8px 0;font-family:var(--font-mono);font-size:12px;line-height:18px}.prose.svelte-1xwj6s7 code{font-family:var(--font-mono);font-size:12px;background:var(--color-bg-surface);padding:1px 4px;border-radius:3px}.prose.svelte-1xwj6s7 pre code{background:none;padding:0}.prose.svelte-1xwj6s7 a{color:var(--color-link)}.prose.svelte-1xwj6s7 blockquote{border-left:3px solid var(--color-accent);padding-left:10px;margin:8px 0;color:var(--color-text-secondary)}.prose.svelte-1xwj6s7 hr{border:none;border-top:1px solid var(--color-border);margin:12px 0}.streaming-dot.svelte-1xwj6s7{display:inline-block;width:6px;height:6px;background:var(--color-accent);border-radius:3px;animation:svelte-1xwj6s7-pulse 1s ease-in-out infinite}@keyframes svelte-1xwj6s7-pulse{0%,to{opacity:.3}50%{opacity:1}}.context-chip.svelte-1xwj6s7{font-size:11px;color:var(--color-text-tertiary);padding:0 2px 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-input-area.svelte-1xwj6s7{padding:12px 16px 16px}.text-input.svelte-1xwj6s7{display:flex;align-items:flex-end;min-height:40px;max-height:140px;padding:0 6px 0 13px;background:transparent;border:1px solid var(--color-border);border-radius:6px}.send-btn{margin-bottom:6px}.stop-btn{color:var(--color-text-tertiary)}.input-field.svelte-1xwj6s7{flex:1;background:transparent;border:none;outline:none;font-family:inherit;font-size:13px;line-height:20px;color:var(--color-text-primary);resize:none;overflow-y:auto;padding:9px 0;max-height:120px;field-sizing:content}.input-field.svelte-1xwj6s7::placeholder{color:var(--color-text-tertiary)}.input-field.svelte-1xwj6s7:disabled{opacity:.5}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.autocomplete.svelte-84vb17{position:relative;width:100%}.input-row.svelte-84vb17{display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-height:26px;padding:2px 4px;background:transparent;border:none;border-radius:4px}.chip.svelte-84vb17{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 8px;border-radius:9999px;font-size:12px;background:var(--color-accent-muted);color:var(--color-link, #8b8bf0);flex-shrink:0}.chip-remove.svelte-84vb17{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border:none;background:none;color:var(--color-text-tertiary);cursor:pointer;padding:0;font-size:12px;line-height:1}.chip-remove.svelte-84vb17:hover{color:var(--color-text-primary)}.ac-input.svelte-84vb17{flex:1;min-width:80px;height:20px;padding:0 2px;font-size:13px;font-family:inherit;color:var(--color-text-primary);background:transparent;border:none;outline:none}.dropdown.svelte-84vb17{position:absolute;top:100%;left:0;right:0;margin-top:4px;max-height:240px;overflow-y:auto;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:6px;box-shadow:0 4px 16px #00000040;z-index:50}.dropdown-item.svelte-84vb17{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;cursor:pointer;gap:8px}.dropdown-item.highlighted.svelte-84vb17{background:var(--color-bg-hover)}.entity-title.svelte-84vb17{font-size:13px;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.entity-meta.svelte-84vb17{display:flex;align-items:center;gap:6px;flex-shrink:0}.entity-type-badge.svelte-84vb17{font-size:11px;padding:1px 6px;border-radius:9999px;background:var(--color-badge-bg);color:var(--color-badge-text)}.entity-repo.svelte-84vb17{font-size:11px;color:var(--color-text-tertiary)}.inline-properties.svelte-x7sio8{padding:16px 40px 8px;border-bottom:1px solid var(--color-border)}.ip-row.svelte-x7sio8{display:grid;grid-template-columns:20px 120px 1fr;align-items:start;gap:8px;padding:5px 8px;margin:0 -8px;border-radius:4px;min-height:30px;outline:2px solid transparent;transition:outline-color .1s}.ip-row.svelte-x7sio8:hover{outline-color:var(--color-border)}.ip-row.ip-focused.svelte-x7sio8{outline-color:var(--color-accent)}.ip-icon.svelte-x7sio8{display:flex;align-items:center;justify-content:center;color:var(--color-text-tertiary);position:relative;height:22px}.ip-key.svelte-x7sio8{font-size:13px;color:var(--color-text-tertiary);line-height:22px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ip-value.svelte-x7sio8{display:flex;align-items:center;min-height:22px;line-height:22px;position:relative;cursor:text}.ip-edit-input.svelte-x7sio8{font-size:13px;font-family:inherit;color:var(--color-text-primary);background:transparent;border:none;padding:0 4px;height:22px;line-height:22px;width:100%;outline:none}.ip-status-wrap.svelte-x7sio8{position:relative;width:100%}.ip-status-dropdown.svelte-x7sio8{position:absolute;top:100%;left:-4px;margin-top:4px;min-width:180px;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:6px;box-shadow:0 4px 16px #00000040;z-index:50;padding:4px;max-height:240px;overflow-y:auto}.ip-status-option.svelte-x7sio8{display:flex;align-items:center;gap:6px;width:100%;padding:5px 8px;border:none;background:none;font-size:13px;font-family:inherit;color:var(--color-text-primary);cursor:pointer;border-radius:4px;text-align:left}.ip-status-option.svelte-x7sio8:hover{background:var(--color-bg-hover)}.ip-status-option.selected.svelte-x7sio8{color:var(--color-accent)}.ip-cal-wrap.svelte-x7sio8{position:relative;width:100%}.ip-cal-dropdown.svelte-x7sio8{position:absolute;top:100%;left:-4px;margin-top:4px;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:6px;box-shadow:0 4px 16px #00000040;z-index:50;padding:12px;width:264px}.ip-cal-header.svelte-x7sio8{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.ip-cal-title.svelte-x7sio8{font-size:13px;font-weight:500;color:var(--color-text-primary)}.ip-cal-nav.svelte-x7sio8{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:none;border-radius:4px;cursor:pointer;color:var(--color-text-secondary)}.ip-cal-nav.svelte-x7sio8:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.ip-cal-weekdays.svelte-x7sio8{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:4px}.ip-cal-wd.svelte-x7sio8{font-size:11px;color:var(--color-text-tertiary);text-align:center;padding:4px 0}.ip-cal-week.svelte-x7sio8{display:grid;grid-template-columns:repeat(7,1fr)}.ip-cal-day.svelte-x7sio8{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:1;border:none;background:none;border-radius:4px;font-size:13px;font-family:inherit;cursor:pointer;color:var(--color-text-primary)}.ip-cal-day.svelte-x7sio8:hover{background:var(--color-bg-hover)}.ip-cal-day.outside.svelte-x7sio8{color:var(--color-text-tertiary);opacity:.5}.ip-cal-day.today.svelte-x7sio8{font-weight:600;color:var(--color-accent)}.ip-cal-day.selected.svelte-x7sio8{background:var(--color-accent);color:#fff;font-weight:500}.ip-cal-day.selected.svelte-x7sio8:hover{background:var(--color-accent-hover)}.ip-badge.svelte-x7sio8{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:9999px;font-size:12px;text-transform:lowercase;background:var(--color-badge-bg);color:var(--color-badge-text)}.ip-wikilink-group.svelte-x7sio8{display:flex;flex-wrap:wrap;gap:6px}.ip-wikilink-chip.svelte-x7sio8{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:9999px;font-size:12px;border:none;font-family:inherit;background:var(--color-accent-muted);color:var(--color-link, #8b8bf0);cursor:pointer;transition:background .15s}.ip-wikilink-chip.svelte-x7sio8:hover{background:#8b8bf029}.ip-status-value.svelte-x7sio8{display:flex;align-items:center;gap:5px;height:22px}.ip-status-dot.svelte-x7sio8{width:6px;height:6px;border-radius:3px;flex-shrink:0}.ip-status-text.svelte-x7sio8,.ip-date-text.svelte-x7sio8,.ip-text-value.svelte-x7sio8{font-size:13px;line-height:22px;color:var(--color-text-primary)}.ip-url-link.svelte-x7sio8{font-size:13px;line-height:22px;color:var(--color-link, #8b8bf0);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ip-url-link.svelte-x7sio8:hover{text-decoration:underline}.ip-add-btn.svelte-x7sio8{display:flex;align-items:center;gap:6px;padding:4px 8px;margin:8px -8px;border:none;background:none;color:var(--color-text-tertiary);font-size:13px;font-family:inherit;cursor:pointer;border-radius:4px;transition:color .15s,background .15s}.ip-add-btn.svelte-x7sio8:hover{color:var(--color-text-secondary);background:var(--color-bg-hover)}.ip-add-key-input.svelte-x7sio8{font-size:13px;font-family:inherit;color:var(--color-text-primary);background:transparent;border:none;border-bottom:1px solid var(--color-accent);padding:2px 0;width:100%;outline:none}.ip-add-row.svelte-x7sio8{background:var(--color-bg-hover)}.ip-icon-trigger{all:unset;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:4px;color:var(--color-text-tertiary)}.ip-icon-trigger:hover{color:var(--color-text-secondary)}.ip-menu-content{min-width:160px;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:6px;box-shadow:0 4px 16px #00000040;z-index:50;padding:4px}.ip-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:5px 8px;font-size:13px;cursor:pointer;border-radius:4px;color:var(--color-text-primary)}.ip-menu-item:hover,.ip-menu-item[data-highlighted]{background:var(--color-bg-hover)}.ip-menu-destructive{color:var(--color-destructive)!important}.ip-menu-destructive:hover,.ip-menu-destructive[data-highlighted]{background:#e54d4d1a!important}.ip-menu-item-icon.svelte-x7sio8{display:flex;align-items:center;flex-shrink:0}.ip-menu-check.svelte-x7sio8{margin-left:auto;display:flex;align-items:center}.ip-menu-sep{height:1px;background:var(--color-border);margin:4px 0}.editor-wrap.svelte-ok7wy5{display:flex;min-height:0}.cm-container.svelte-ok7wy5{flex:1}.cm-container.svelte-ok7wy5 .cm-editor{min-height:400px;outline:none}.cm-container.svelte-ok7wy5 .cm-scroller{overflow:visible!important}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{N as w,t as X,T as p,I as H,h as Y,a as T,P as Z,b as M,c as h,s as _}from"./CUzqHQY_.js";import{EditorState as D,Prec as ee,Facet as y,RangeSetBuilder as te,StateEffect as re,StateField as ie}from"./DnlgZ_Tk.js";import{E as x,S as j,V as J,D as P,l as se,a as R}from"./DtVH--hH.js";var I;const g=new w;function ne(i){return y.define({combine:i?e=>e.concat(i):void 0})}const oe=new w;class d{constructor(e,t,r=[],s=""){this.data=e,this.name=s,D.prototype.hasOwnProperty("tree")||Object.defineProperty(D.prototype,"tree",{get(){return b(this)}}),this.parser=t,this.extension=[k.of(this),D.languageData.of((n,a,l)=>{let o=V(n,a,l),c=o.type.prop(g);if(!c)return[];let u=n.facet(c),f=o.type.prop(oe);if(f){let A=o.resolve(a-o.from,l);for(let C of f)if(C.test(A,n)){let W=n.facet(C.facet);return C.type=="replace"?W:W.concat(u)}}return u})].concat(r)}isActiveAt(e,t,r=-1){return V(e,t,r).type.prop(g)==this.data}findRegions(e){let t=e.facet(k);if(t?.data==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let r=[],s=(n,a)=>{if(n.prop(g)==this.data){r.push({from:a,to:a+n.length});return}let l=n.prop(w.mounted);if(l){if(l.tree.prop(g)==this.data){if(l.overlay)for(let o of l.overlay)r.push({from:o.from+a,to:o.to+a});else r.push({from:a,to:a+n.length});return}else if(l.overlay){let o=r.length;if(s(l.tree,l.overlay[0].from+a),r.length>o)return}}for(let o=0;o<n.children.length;o++){let c=n.children[o];c instanceof p&&s(c,n.positions[o]+a)}};return s(b(e),0),r}get allowsNesting(){return!0}}d.setState=re.define();function V(i,e,t){let r=i.facet(k),s=b(i).topNode;if(!r||r.allowsNesting)for(let n=s;n;n=n.enter(e,t,H.ExcludeBuffers|H.EnterBracketed))n.type.isTop&&(s=n);return s}class B extends d{constructor(e,t,r){super(e,t,[],r),this.parser=t}static define(e){let t=ne(e.languageData);return new B(t,e.parser.configure({props:[g.add(r=>r.isTop?t:void 0)]}),e.name)}configure(e,t){return new B(this.data,this.parser.configure(e),t||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function b(i){let e=i.field(d.state,!1);return e?e.tree:p.empty}class ae{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,t){let r=this.cursorPos-this.string.length;return e<r||t>=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-r,t-r)}}let v=null;class S{constructor(e,t,r=[],s,n,a,l,o){this.parser=e,this.state=t,this.fragments=r,this.tree=s,this.treeLen=n,this.viewport=a,this.skipped=l,this.scheduleOn=o,this.parse=null,this.tempSkipped=[]}static create(e,t,r){return new S(e,t,[],p.empty,0,r,[],null)}startParse(){return this.parser.startParse(new ae(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=p.empty&&this.isDone(t??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var r;if(typeof e=="number"){let s=Date.now()+e;e=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t<this.state.doc.length&&this.parse.stopAt(t);;){let s=this.parse.advance();if(s)if(this.fragments=this.withoutTempSkipped(T.addTree(s,this.fragments,this.parse.stoppedAt!=null)),this.treeLen=(r=this.parse.stoppedAt)!==null&&r!==void 0?r:this.state.doc.length,this.tree=s,this.parse=null,this.treeLen<(t??this.state.doc.length))this.parse=this.startParse();else return!0;if(e())return!1}})}takeTree(){let e,t;this.parse&&(e=this.parse.parsedPos)>=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(T.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=v;v=this;try{return e()}finally{v=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=$(e,t.from,t.to);return e}changes(e,t){let{fragments:r,tree:s,treeLen:n,viewport:a,skipped:l}=this;if(this.takeTree(),!e.empty){let o=[];if(e.iterChangedRanges((c,u,f,A)=>o.push({fromA:c,toA:u,fromB:f,toB:A})),r=T.applyChanges(r,o),s=p.empty,n=0,a={from:e.mapPos(a.from,-1),to:e.mapPos(a.to,1)},this.skipped.length){l=[];for(let c of this.skipped){let u=e.mapPos(c.from,1),f=e.mapPos(c.to,-1);u<f&&l.push({from:u,to:f})}}}return new S(this.parser,t,r,s,n,a,l,this.scheduleOn)}updateViewport(e){if(this.viewport.from==e.from&&this.viewport.to==e.to)return!1;this.viewport=e;let t=this.skipped.length;for(let r=0;r<this.skipped.length;r++){let{from:s,to:n}=this.skipped[r];s<e.to&&n>e.from&&(this.fragments=$(this.fragments,s,n),this.skipped.splice(r--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends Z{createParse(t,r,s){let n=s[0].from,a=s[s.length-1].to;return{parsedPos:n,advance(){let o=v;if(o){for(let c of s)o.tempSkipped.push(c);e&&(o.scheduleOn=o.scheduleOn?Promise.all([o.scheduleOn,e]):e)}return this.parsedPos=a,new p(M.none,[],[],a-n)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return v}}function $(i,e,t){return T.applyChanges(i,[{fromA:e,toA:t,fromB:e,toB:t}])}class m{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let t=this.context.changes(e.changes,e.state),r=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to);return t.work(20,r)||t.takeTree(),new m(t)}static init(e){let t=Math.min(3e3,e.doc.length),r=S.create(e.facet(k).parser,e,{from:0,to:t});return r.work(20,t)||r.takeTree(),new m(r)}}d.state=ie.define({create:m.init,update(i,e){for(let t of e.effects)if(t.is(d.setState))return t.value;return e.startState.facet(k)!=e.state.facet(k)?m.init(e.state):i.apply(e)}});let G=i=>{let e=setTimeout(()=>i(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(G=i=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(i,{timeout:400})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)});const O=typeof navigator<"u"&&(!((I=navigator.scheduling)===null||I===void 0)&&I.isInputPending)?()=>navigator.scheduling.isInputPending():null,le=J.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field(d.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field(d.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=G(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEnd<t&&(this.chunkEnd<0||this.view.hasFocus)&&(this.chunkEnd=t+3e4,this.chunkBudget=3e3),this.chunkBudget<=0)return;let{state:r,viewport:{to:s}}=this.view,n=r.field(d.state);if(n.tree==n.context.tree&&n.context.isDone(s+1e5))return;let a=Date.now()+Math.min(this.chunkBudget,100,e&&!O?Math.max(25,e.timeRemaining()-5):1e9),l=n.context.treeLen<s&&r.doc.length>s+1e3,o=n.context.work(()=>O&&O()||Date.now()>a,s+(l?0:1e5));this.chunkBudget-=Date.now()-t,(o||this.chunkBudget<=0)&&(n.context.takeTree(),this.view.dispatch({effects:d.setState.of(new m(n.context))})),this.chunkBudget>0&&!(o&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(n.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(t=>se(this.view.state,t)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),k=y.define({combine(i){return i.length?i[0]:null},enables:i=>[d.state,le,x.contentAttributes.compute([i],e=>{let t=e.facet(i);return t&&t.name?{"data-language":t.name}:{}})]});class ve{constructor(e,t=[]){this.language=e,this.support=t,this.extension=[e,t]}}class K{constructor(e,t,r,s,n,a=void 0){this.name=e,this.alias=t,this.extensions=r,this.filename=s,this.loadFunc=n,this.support=a,this.loading=null}load(){return this.loading||(this.loading=this.loadFunc().then(e=>this.support=e,e=>{throw this.loading=null,e}))}static of(e){let{load:t,support:r}=e;if(!t){if(!r)throw new RangeError("Must pass either 'load' or 'support' to LanguageDescription.of");t=()=>Promise.resolve(r)}return new K(e.name,(e.alias||[]).concat(e.name).map(s=>s.toLowerCase()),e.extensions||[],e.filename,t,r)}static matchFilename(e,t){for(let s of e)if(s.filename&&s.filename.test(t))return s;let r=/\.([^.]+)$/.exec(t);if(r){for(let s of e)if(s.extensions.indexOf(r[1])>-1)return s}return null}static matchLanguageName(e,t,r=!0){t=t.toLowerCase();for(let s of e)if(s.alias.some(n=>n==t))return s;if(r)for(let s of e)for(let n of s.alias){let a=t.indexOf(n);if(a>-1&&(n.length>2||!/\w/.test(t[a-1])&&!/\w/.test(t[a+n.length])))return s}return null}}const be=y.define({combine:i=>{if(!i.length)return" ";let e=i[0];if(!e||/\S/.test(e)||Array.from(e).some(t=>t!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(i[0]));return e}}),Te=new w;function he(i){let e=i.node,t=e.childAfter(e.from),r=e.lastChild;if(!t)return null;let s=i.options.simulateBreak,n=i.state.doc.lineAt(t.from),a=s==null||s<=n.from?n.to:Math.min(n.to,s);for(let l=t.to;;){let o=e.childAfter(l);if(!o||o==r)return null;if(!o.type.isSkipped){if(o.from>=a)return null;let c=/^ */.exec(n.text.slice(t.to-n.from))[0].length;return{from:t.from,to:t.to+c}}l=o.to}}function xe({closing:i,align:e=!0,units:t=1}){return r=>ce(r,e,t,i)}function ce(i,e,t,r,s){let n=i.textAfter,a=n.match(/^\s*/)[0].length,l=r&&n.slice(a,a+r.length)==r||s==i.pos+a,o=e?he(i):null;return o?l?i.column(o.from):i.column(o.to):i.baseIndent+(l?0:i.unit*t)}const Pe=i=>i.baseIndent;function Se({except:i,units:e=1}={}){return t=>{let r=i&&i.test(t.textAfter);return t.baseIndent+(r?0:e*t.unit)}}const Ne=y.define(),Ae=new w;function Ce(i){let e=i.firstChild,t=i.lastChild;return e&&e.to<t.from?{from:e.to,to:t.type.isError?i.to:t.from}:null}class N{constructor(e,t){this.specs=e;let r;function s(l){let o=j.newName();return(r||(r=Object.create(null)))["."+o]=l,o}const n=typeof t.all=="string"?t.all:t.all?s(t.all):void 0,a=t.scope;this.scope=a instanceof d?l=>l.prop(g)==a.data:a?l=>l==a:void 0,this.style=X(e.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:n}).style,this.module=r?new j(r):null,this.themeType=t.themeType}static define(e,t){return new N(e,t||{})}}const F=y.define(),Q=y.define({combine(i){return i.length?[i[0]]:null}});function L(i){let e=i.facet(F);return e.length?e:i.facet(Q)}function De(i,e){let t=[de],r;return i instanceof N&&(i.module&&t.push(x.styleModule.of(i.module)),r=i.themeType),e?.fallback?t.push(Q.of(i)):r?t.push(F.computeN([x.darkTheme],s=>s.facet(x.darkTheme)==(r=="dark")?[i]:[])):t.push(F.of(i)),t}class ue{constructor(e){this.markCache=Object.create(null),this.tree=b(e.state),this.decorations=this.buildDeco(e,L(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=b(e.state),r=L(e.state),s=r!=L(e.startState),{viewport:n}=e.view,a=e.changes.mapPos(this.decoratedTo,1);t.length<n.to&&!s&&t.type==this.tree.type&&a>=n.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=a):(t!=this.tree||e.viewportChanged||s)&&(this.tree=t,this.decorations=this.buildDeco(e.view,r),this.decoratedTo=n.to)}buildDeco(e,t){if(!t||!this.tree.length)return P.none;let r=new te;for(let{from:s,to:n}of e.visibleRanges)Y(this.tree,t,(a,l,o)=>{r.add(a,l,this.markCache[o]||(this.markCache[o]=P.mark({class:o})))},s,n);return r.finish()}}const de=ee.high(J.fromClass(ue,{decorations:i=>i.decorations}));h.meta,h.link,h.heading,h.emphasis,h.strong,h.strikethrough,h.keyword,h.atom,h.bool,h.url,h.contentSeparator,h.labelName,h.literal,h.inserted,h.string,h.deleted,h.regexp,h.escape,h.string,h.variableName,h.variableName,h.typeName,h.namespace,h.className,h.variableName,h.macroName,h.propertyName,h.comment,h.invalid;const Ie=new w,fe=Object.create(null),q=[M.none],U=[],z=Object.create(null),pe=Object.create(null);for(let[i,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])pe[i]=ge(fe,e);function E(i,e){U.indexOf(i)>-1||(U.push(i),console.warn(e))}function ge(i,e){let t=[];for(let l of e.split(" ")){let o=[];for(let c of l.split(".")){let u=i[c]||h[c];u?typeof u=="function"?o.length?o=o.map(u):E(c,`Modifier ${c} used at start of tag`):o.length?E(c,`Tag ${c} used as modifier`):o=Array.isArray(u)?u:[u]:E(c,`Unknown highlighting tag ${c}`)}for(let c of o)t.push(c)}if(!t.length)return 0;let r=e.replace(/ /g,"_"),s=r+" "+t.map(l=>l.id),n=z[s];if(n)return n.id;let a=z[s]=M.define({id:q.length,name:r,props:[_({[r]:t})]});return q.push(a),a.id}R.RTL,R.LTR;export{ae as DocInput,N as HighlightStyle,B as LRLanguage,d as Language,K as LanguageDescription,ve as LanguageSupport,S as ParseContext,Ie as bracketMatchingHandle,Se as continuedIndent,ne as defineLanguageFacet,xe as delimitedIndent,Pe as flatIndent,Ce as foldInside,Ae as foldNodeProp,Ne as foldService,Te as indentNodeProp,be as indentUnit,k as language,g as languageDataProp,oe as sublanguageProp,De as syntaxHighlighting,b as syntaxTree};
|