studiograph 1.3.48-next.13 → 1.3.48-next.131
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 +7 -7
- package/dist/agent/agent-pool.d.ts +27 -1
- package/dist/agent/agent-pool.js +55 -12
- package/dist/agent/agent-pool.js.map +1 -1
- package/dist/agent/followups.d.ts +34 -0
- package/dist/agent/followups.js +52 -0
- package/dist/agent/followups.js.map +1 -0
- package/dist/agent/orchestrator.d.ts +29 -2
- package/dist/agent/orchestrator.js +251 -38
- package/dist/agent/orchestrator.js.map +1 -1
- package/dist/agent/prompts/entity-types-section.d.ts +30 -0
- package/dist/agent/prompts/entity-types-section.js +83 -0
- package/dist/agent/prompts/entity-types-section.js.map +1 -0
- package/dist/agent/prompts/system.md +106 -47
- package/dist/agent/skill-loader.d.ts +30 -17
- package/dist/agent/skill-loader.js +63 -30
- package/dist/agent/skill-loader.js.map +1 -1
- package/dist/agent/skills/entity-schema.md +79 -343
- package/dist/agent/skills/interview/entity-templates.md +38 -37
- package/dist/agent/skills/interview/question-domains.md +54 -49
- package/dist/agent/skills/interview/skill.md +89 -14
- package/dist/agent/tools/capture-tools.d.ts +31 -0
- package/dist/agent/tools/capture-tools.js +40 -0
- package/dist/agent/tools/capture-tools.js.map +1 -0
- package/dist/agent/tools/folder-tools.d.ts +47 -0
- package/dist/agent/tools/folder-tools.js +249 -0
- package/dist/agent/tools/folder-tools.js.map +1 -0
- package/dist/agent/tools/fs-tools.d.ts +6 -5
- package/dist/agent/tools/fs-tools.js +5 -5
- package/dist/agent/tools/fs-tools.js.map +1 -1
- package/dist/agent/tools/graph-tools.d.ts +25 -72
- package/dist/agent/tools/graph-tools.js +362 -366
- package/dist/agent/tools/graph-tools.js.map +1 -1
- package/dist/agent/tools/history-tools.d.ts +95 -0
- package/dist/agent/tools/history-tools.js +461 -0
- package/dist/agent/tools/history-tools.js.map +1 -0
- package/dist/agent/tools/load-skill.d.ts +6 -5
- package/dist/agent/tools/load-skill.js +3 -3
- package/dist/agent/tools/load-skill.js.map +1 -1
- package/dist/agent/tools/message-tools.d.ts +13 -11
- package/dist/agent/tools/message-tools.js +31 -39
- package/dist/agent/tools/message-tools.js.map +1 -1
- package/dist/agent/tools/ops-tools.d.ts +5 -4
- package/dist/agent/tools/ops-tools.js +99 -212
- package/dist/agent/tools/ops-tools.js.map +1 -1
- package/dist/agent/tools/permission-tools.d.ts +39 -16
- package/dist/agent/tools/permission-tools.js +66 -41
- package/dist/agent/tools/permission-tools.js.map +1 -1
- package/dist/agent/tools/tool-loader.js +5 -4
- package/dist/agent/tools/tool-loader.js.map +1 -1
- package/dist/agent/tools/web-tools.js +58 -9
- package/dist/agent/tools/web-tools.js.map +1 -1
- package/dist/cli/commands/about.d.ts +1 -0
- package/dist/cli/commands/about.js +55 -3
- package/dist/cli/commands/about.js.map +1 -1
- package/dist/cli/commands/audit.d.ts +21 -0
- package/dist/cli/commands/audit.js +174 -0
- package/dist/cli/commands/audit.js.map +1 -0
- package/dist/cli/commands/clear.d.ts +5 -0
- package/dist/cli/commands/clear.js +144 -1
- package/dist/cli/commands/clear.js.map +1 -1
- package/dist/cli/commands/clone.d.ts +1 -1
- package/dist/cli/commands/clone.js +82 -23
- package/dist/cli/commands/clone.js.map +1 -1
- package/dist/cli/commands/deploy.js +79 -18
- package/dist/cli/commands/deploy.js.map +1 -1
- package/dist/cli/commands/folder.d.ts +11 -0
- package/dist/cli/commands/folder.js +186 -0
- package/dist/cli/commands/folder.js.map +1 -0
- package/dist/cli/commands/index.js +2 -2
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.js +16 -14
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/join.d.ts +1 -1
- package/dist/cli/commands/join.js +26 -14
- package/dist/cli/commands/join.js.map +1 -1
- package/dist/cli/commands/mcp.js +12 -4
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/r2.d.ts +3 -0
- package/dist/cli/commands/r2.js +196 -1
- package/dist/cli/commands/r2.js.map +1 -1
- package/dist/cli/commands/redeploy.js +41 -1
- package/dist/cli/commands/redeploy.js.map +1 -1
- package/dist/cli/commands/secrets.d.ts +23 -0
- package/dist/cli/commands/secrets.js +256 -0
- package/dist/cli/commands/secrets.js.map +1 -0
- package/dist/cli/commands/serve.js +143 -24
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/start.js +140 -71
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/sync.d.ts +1 -1
- package/dist/cli/commands/sync.js +509 -163
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/commands/user.js +8 -24
- package/dist/cli/commands/user.js.map +1 -1
- package/dist/cli/index.js +8 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/railway-provisioning.d.ts +53 -0
- package/dist/cli/railway-provisioning.js +85 -0
- package/dist/cli/railway-provisioning.js.map +1 -0
- package/dist/cli/scaffolding.d.ts +4 -2
- package/dist/cli/scaffolding.js +42 -47
- package/dist/cli/scaffolding.js.map +1 -1
- package/dist/cli/setup-wizard.d.ts +30 -49
- package/dist/cli/setup-wizard.js +35 -38
- package/dist/cli/setup-wizard.js.map +1 -1
- package/dist/core/accent-palette.d.ts +22 -0
- package/dist/core/accent-palette.js +47 -0
- package/dist/core/accent-palette.js.map +1 -0
- package/dist/core/entity-body-templates.d.ts +21 -0
- package/dist/core/entity-body-templates.js +48 -0
- package/dist/core/entity-body-templates.js.map +1 -0
- package/dist/core/entity-types-catalog.d.ts +65 -0
- package/dist/core/entity-types-catalog.js +136 -0
- package/dist/core/entity-types-catalog.js.map +1 -0
- package/dist/core/feature-flags.d.ts +22 -0
- package/dist/core/feature-flags.js +15 -0
- package/dist/core/feature-flags.js.map +1 -0
- package/dist/core/features.d.ts +16 -0
- package/dist/core/features.js +48 -0
- package/dist/core/features.js.map +1 -0
- package/dist/core/folder-paths.d.ts +41 -0
- package/dist/core/folder-paths.js +95 -0
- package/dist/core/folder-paths.js.map +1 -0
- package/dist/core/folder-sidecar.d.ts +16 -0
- package/dist/core/folder-sidecar.js +45 -0
- package/dist/core/folder-sidecar.js.map +1 -0
- package/dist/core/graph.d.ts +471 -19
- package/dist/core/graph.js +1411 -284
- package/dist/core/graph.js.map +1 -1
- package/dist/core/schema-registry.js +1 -19
- package/dist/core/schema-registry.js.map +1 -1
- package/dist/core/schemas/connector.d.ts +67 -0
- package/dist/core/schemas/connector.js +100 -0
- package/dist/core/schemas/connector.js.map +1 -0
- package/dist/core/schemas/workspace.d.ts +122 -0
- package/dist/core/schemas/workspace.js +211 -0
- package/dist/core/schemas/workspace.js.map +1 -0
- package/dist/core/secrets/SecretStore.d.ts +77 -0
- package/dist/core/secrets/SecretStore.js +13 -0
- package/dist/core/secrets/SecretStore.js.map +1 -0
- package/dist/core/secrets/SettingsResolver.d.ts +54 -0
- package/dist/core/secrets/SettingsResolver.js +80 -0
- package/dist/core/secrets/SettingsResolver.js.map +1 -0
- package/dist/core/secrets/SettingsStore.d.ts +30 -0
- package/dist/core/secrets/SettingsStore.js +9 -0
- package/dist/core/secrets/SettingsStore.js.map +1 -0
- package/dist/core/secrets/SqliteEncryptedStore.d.ts +78 -0
- package/dist/core/secrets/SqliteEncryptedStore.js +581 -0
- package/dist/core/secrets/SqliteEncryptedStore.js.map +1 -0
- package/dist/core/secrets/audit.d.ts +36 -0
- package/dist/core/secrets/audit.js +60 -0
- package/dist/core/secrets/audit.js.map +1 -0
- package/dist/core/secrets/auth-db-migration.d.ts +129 -0
- package/dist/core/secrets/auth-db-migration.js +653 -0
- package/dist/core/secrets/auth-db-migration.js.map +1 -0
- package/dist/core/secrets/bundle.d.ts +141 -0
- package/dist/core/secrets/bundle.js +435 -0
- package/dist/core/secrets/bundle.js.map +1 -0
- package/dist/core/secrets/dual-write.d.ts +76 -0
- package/dist/core/secrets/dual-write.js +236 -0
- package/dist/core/secrets/dual-write.js.map +1 -0
- package/dist/core/secrets/encryption.d.ts +44 -0
- package/dist/core/secrets/encryption.js +97 -0
- package/dist/core/secrets/encryption.js.map +1 -0
- package/dist/core/secrets/importer.d.ts +94 -0
- package/dist/core/secrets/importer.js +319 -0
- package/dist/core/secrets/importer.js.map +1 -0
- package/dist/core/secrets/index.d.ts +49 -0
- package/dist/core/secrets/index.js +74 -0
- package/dist/core/secrets/index.js.map +1 -0
- package/dist/core/secrets/master-key.d.ts +38 -0
- package/dist/core/secrets/master-key.js +122 -0
- package/dist/core/secrets/master-key.js.map +1 -0
- package/dist/core/secrets/probes/anthropic.d.ts +98 -0
- package/dist/core/secrets/probes/anthropic.js +300 -0
- package/dist/core/secrets/probes/anthropic.js.map +1 -0
- package/dist/core/secrets/probes/brave.d.ts +9 -0
- package/dist/core/secrets/probes/brave.js +15 -0
- package/dist/core/secrets/probes/brave.js.map +1 -0
- package/dist/core/secrets/probes/r2.d.ts +15 -0
- package/dist/core/secrets/probes/r2.js +14 -0
- package/dist/core/secrets/probes/r2.js.map +1 -0
- package/dist/core/secrets/probes/voyage.d.ts +13 -0
- package/dist/core/secrets/probes/voyage.js +52 -0
- package/dist/core/secrets/probes/voyage.js.map +1 -0
- package/dist/core/secrets/read-flip.d.ts +59 -0
- package/dist/core/secrets/read-flip.js +87 -0
- package/dist/core/secrets/read-flip.js.map +1 -0
- package/dist/core/secrets/registry.d.ts +188 -0
- package/dist/core/secrets/registry.js +531 -0
- package/dist/core/secrets/registry.js.map +1 -0
- package/dist/core/types.d.ts +70 -483
- package/dist/core/types.js +6 -3
- package/dist/core/types.js.map +1 -1
- package/dist/core/user-config.d.ts +52 -12
- package/dist/core/user-config.js +119 -14
- package/dist/core/user-config.js.map +1 -1
- package/dist/core/validation.d.ts +603 -1409
- package/dist/core/validation.js +248 -146
- package/dist/core/validation.js.map +1 -1
- package/dist/core/workspace-manager.d.ts +35 -14
- package/dist/core/workspace-manager.js +105 -56
- package/dist/core/workspace-manager.js.map +1 -1
- package/dist/core/workspace.d.ts +19 -5
- package/dist/core/workspace.js +66 -39
- package/dist/core/workspace.js.map +1 -1
- package/dist/mcp/connector-manager.d.ts +16 -1
- package/dist/mcp/connector-manager.js +44 -5
- package/dist/mcp/connector-manager.js.map +1 -1
- package/dist/mcp/server.d.ts +11 -3
- package/dist/mcp/server.js +30 -5
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts +27 -2
- package/dist/mcp/tools.js +544 -113
- package/dist/mcp/tools.js.map +1 -1
- package/dist/server/__tests__/helpers/graph-api.d.ts +18 -0
- package/dist/server/__tests__/helpers/graph-api.js +16 -0
- package/dist/server/__tests__/helpers/graph-api.js.map +1 -0
- package/dist/server/commit-audit.d.ts +26 -0
- package/dist/server/commit-audit.js +30 -0
- package/dist/server/commit-audit.js.map +1 -0
- package/dist/server/index.d.ts +14 -3
- package/dist/server/index.js +385 -177
- package/dist/server/index.js.map +1 -1
- package/dist/server/middleware/sanitize.d.ts +46 -0
- package/dist/server/middleware/sanitize.js +171 -0
- package/dist/server/middleware/sanitize.js.map +1 -0
- package/dist/server/routes/asset-api.js +217 -65
- package/dist/server/routes/asset-api.js.map +1 -1
- package/dist/server/routes/audit-api.d.ts +24 -0
- package/dist/server/routes/audit-api.js +117 -0
- package/dist/server/routes/audit-api.js.map +1 -0
- package/dist/server/routes/auth-api.js +220 -44
- package/dist/server/routes/auth-api.js.map +1 -1
- package/dist/server/routes/capture-api.d.ts +10 -3
- package/dist/server/routes/capture-api.js +180 -24
- package/dist/server/routes/capture-api.js.map +1 -1
- package/dist/server/routes/chat.d.ts +4 -1
- package/dist/server/routes/chat.js +178 -46
- package/dist/server/routes/chat.js.map +1 -1
- package/dist/server/routes/config-api.d.ts +21 -0
- package/dist/server/routes/config-api.js +256 -0
- package/dist/server/routes/config-api.js.map +1 -0
- package/dist/server/routes/connectors-api.js +24 -18
- package/dist/server/routes/connectors-api.js.map +1 -1
- package/dist/server/routes/event-ingest-api.d.ts +15 -0
- package/dist/server/routes/event-ingest-api.js +125 -0
- package/dist/server/routes/event-ingest-api.js.map +1 -0
- package/dist/server/routes/features-api.d.ts +19 -0
- package/dist/server/routes/features-api.js +28 -0
- package/dist/server/routes/features-api.js.map +1 -0
- package/dist/server/routes/git-http.d.ts +2 -2
- package/dist/server/routes/git-http.js +69 -34
- package/dist/server/routes/git-http.js.map +1 -1
- package/dist/server/routes/graph-api-access.d.ts +35 -0
- package/dist/server/routes/graph-api-access.js +93 -0
- package/dist/server/routes/graph-api-access.js.map +1 -0
- package/dist/server/routes/graph-api.d.ts +3 -2
- package/dist/server/routes/graph-api.js +1014 -315
- package/dist/server/routes/graph-api.js.map +1 -1
- package/dist/server/routes/health.d.ts +18 -0
- package/dist/server/routes/health.js +74 -0
- package/dist/server/routes/health.js.map +1 -0
- package/dist/server/routes/insights-api.js +156 -33
- package/dist/server/routes/insights-api.js.map +1 -1
- package/dist/server/routes/mcp.d.ts +6 -3
- package/dist/server/routes/mcp.js +22 -6
- package/dist/server/routes/mcp.js.map +1 -1
- package/dist/server/routes/messages-api.d.ts +3 -3
- package/dist/server/routes/messages-api.js +308 -120
- package/dist/server/routes/messages-api.js.map +1 -1
- package/dist/server/routes/permissions-api.d.ts +9 -2
- package/dist/server/routes/permissions-api.js +87 -31
- package/dist/server/routes/permissions-api.js.map +1 -1
- package/dist/server/routes/secrets-api.d.ts +36 -0
- package/dist/server/routes/secrets-api.js +308 -0
- package/dist/server/routes/secrets-api.js.map +1 -0
- package/dist/server/routes/settings-api.d.ts +29 -0
- package/dist/server/routes/settings-api.js +180 -0
- package/dist/server/routes/settings-api.js.map +1 -0
- package/dist/server/routes/workspace-api.d.ts +2 -1
- package/dist/server/routes/workspace-api.js +131 -20
- package/dist/server/routes/workspace-api.js.map +1 -1
- package/dist/server/routes/ws.d.ts +3 -2
- package/dist/server/routes/ws.js +68 -18
- package/dist/server/routes/ws.js.map +1 -1
- package/dist/server/session-manager.d.ts +48 -5
- package/dist/server/session-manager.js +175 -11
- package/dist/server/session-manager.js.map +1 -1
- package/dist/server/ws-hub.d.ts +134 -22
- package/dist/server/ws-hub.js +0 -0
- package/dist/server/ws-hub.js.map +1 -1
- package/dist/server/yjs-manager.d.ts +107 -7
- package/dist/server/yjs-manager.js +444 -38
- package/dist/server/yjs-manager.js.map +1 -1
- package/dist/server/yjs-persistence.d.ts +143 -0
- package/dist/server/yjs-persistence.js +543 -0
- package/dist/server/yjs-persistence.js.map +1 -0
- package/dist/server/yjs-text-diff.d.ts +32 -0
- package/dist/server/yjs-text-diff.js +61 -0
- package/dist/server/yjs-text-diff.js.map +1 -0
- package/dist/services/access-control.d.ts +53 -0
- package/dist/services/access-control.js +132 -0
- package/dist/services/access-control.js.map +1 -0
- package/dist/services/asset-upload-service.d.ts +53 -0
- package/dist/services/asset-upload-service.js +200 -0
- package/dist/services/asset-upload-service.js.map +1 -0
- package/dist/services/assets/base.d.ts +38 -0
- package/dist/services/assets/base.js +55 -0
- package/dist/services/assets/base.js.map +1 -1
- package/dist/services/assets/index.d.ts +41 -1
- package/dist/services/assets/index.js +65 -0
- package/dist/services/assets/index.js.map +1 -1
- package/dist/services/assets/local.d.ts +7 -1
- package/dist/services/assets/local.js +83 -0
- package/dist/services/assets/local.js.map +1 -1
- package/dist/services/assets/r2.d.ts +28 -1
- package/dist/services/assets/r2.js +75 -1
- package/dist/services/assets/r2.js.map +1 -1
- package/dist/services/auth-service.d.ts +184 -36
- package/dist/services/auth-service.js +763 -138
- package/dist/services/auth-service.js.map +1 -1
- package/dist/services/briefing.d.ts +1 -1
- package/dist/services/briefing.js +12 -35
- package/dist/services/briefing.js.map +1 -1
- package/dist/services/event-processor.d.ts +104 -0
- package/dist/services/event-processor.js +443 -0
- package/dist/services/event-processor.js.map +1 -0
- package/dist/services/folder-creation.d.ts +33 -0
- package/dist/services/folder-creation.js +103 -0
- package/dist/services/folder-creation.js.map +1 -0
- package/dist/services/git.d.ts +44 -0
- package/dist/services/git.js +162 -55
- package/dist/services/git.js.map +1 -1
- package/dist/services/heartbeat.d.ts +19 -12
- package/dist/services/heartbeat.js +162 -107
- package/dist/services/heartbeat.js.map +1 -1
- package/dist/services/import-service.d.ts +37 -2
- package/dist/services/import-service.js +222 -123
- package/dist/services/import-service.js.map +1 -1
- package/dist/services/lint-service.js +7 -14
- package/dist/services/lint-service.js.map +1 -1
- package/dist/services/markdown.js +6 -2
- package/dist/services/markdown.js.map +1 -1
- package/dist/services/message-service.d.ts +62 -21
- package/dist/services/message-service.js +160 -43
- package/dist/services/message-service.js.map +1 -1
- package/dist/services/personal-folder.d.ts +40 -0
- package/dist/services/personal-folder.js +101 -0
- package/dist/services/personal-folder.js.map +1 -0
- package/dist/services/vector-service.d.ts +73 -3
- package/dist/services/vector-service.js +106 -7
- package/dist/services/vector-service.js.map +1 -1
- package/dist/services/workspace-access.d.ts +106 -0
- package/dist/services/workspace-access.js +149 -0
- package/dist/services/workspace-access.js.map +1 -0
- package/dist/utils/git.js +3 -3
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/log.d.ts +42 -0
- package/dist/utils/log.js +137 -0
- package/dist/utils/log.js.map +1 -0
- package/dist/utils/preflight.js +2 -2
- package/dist/utils/preflight.js.map +1 -1
- package/dist/utils/version-checker.d.ts +4 -1
- package/dist/utils/version-checker.js +8 -8
- package/dist/utils/version-checker.js.map +1 -1
- package/dist/web/_app/immutable/assets/0.Bp6xXZUi.css +2 -0
- package/dist/web/_app/immutable/assets/11.DlIf1mKh.css +1 -0
- package/dist/web/_app/immutable/assets/12.Dmlt28l2.css +1 -0
- package/dist/web/_app/immutable/assets/13.CmLrbzZp.css +1 -0
- package/dist/web/_app/immutable/assets/2.oo1ac0x_.css +1 -0
- package/dist/web/_app/immutable/assets/3.DJJsQzDb.css +1 -0
- package/dist/web/_app/immutable/assets/4.CZ-fNJ91.css +1 -0
- package/dist/web/_app/immutable/assets/AgentOverlay.BfWESlQU.css +1 -0
- package/dist/web/_app/immutable/assets/AssetManagerModal.ZfasE2L3.css +1 -0
- package/dist/web/_app/immutable/assets/CalendarView.CeNagvyK.css +1 -0
- package/dist/web/_app/immutable/assets/ChatPanel.po0gYtVH.css +1 -0
- package/dist/web/_app/immutable/assets/FolderMembersPanel.Bepw-r0F.css +1 -0
- package/dist/web/_app/immutable/assets/FolderMutationDialogs.BMRF6Z3z.css +1 -0
- package/dist/web/_app/immutable/assets/FolderPicker.B5KdvRYl.css +1 -0
- package/dist/web/_app/immutable/assets/GalleryView.Dy-qQjEc.css +1 -0
- package/dist/web/_app/immutable/assets/GraphView.BHnGIltS.css +1 -0
- package/dist/web/_app/immutable/assets/KanbanView.G3NZ0uHb.css +1 -0
- package/dist/web/_app/immutable/assets/SettingsDialog.tBn8y9DD.css +1 -0
- package/dist/web/_app/immutable/assets/Spinner.UBfl0pab.css +1 -0
- package/dist/web/_app/immutable/assets/TagFilter.DNipjifq.css +1 -0
- package/dist/web/_app/immutable/assets/TagPickerSheet.DJPuqnTg.css +1 -0
- package/dist/web/_app/immutable/assets/WorkspaceView.B9zA92UB.css +1 -0
- package/dist/web/_app/immutable/assets/button.BlLm4Dg1.css +1 -0
- package/dist/web/_app/immutable/assets/dialog.BxVal_19.css +1 -0
- package/dist/web/_app/immutable/assets/dist.B5hGjnfj.css +1 -0
- package/dist/web/_app/immutable/assets/dist.DDCWxn3B.css +1 -0
- package/dist/web/_app/immutable/assets/dropdown-menu.BSsUUQ3o.css +1 -0
- package/dist/web/_app/immutable/assets/entity-row.Bl5FyNCt.css +1 -0
- package/dist/web/_app/immutable/assets/greeting.Bm7lTneV.css +1 -0
- package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2 +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2 +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-italic.CZTNEAuW.woff2 +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-italic.CsGl1sm0.woff +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-normal.CDDApCn2.woff2 +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-400-normal.CYLoc0-x.woff +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-italic.BNK2_mGO.woff2 +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-italic.DpEwFAQM.woff +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-normal.6ng42L7E.woff2 +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-500-normal.BgVn5rGT.woff +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-600-normal.Cu4Hd6ag.woff +0 -0
- package/dist/web/_app/immutable/assets/ibm-plex-sans-latin-600-normal.CuJfVYMP.woff2 +0 -0
- package/dist/web/_app/immutable/assets/inline-list.DORLo4xF.css +1 -0
- package/dist/web/_app/immutable/assets/notifications.clodJdp5.css +1 -0
- package/dist/web/_app/immutable/assets/radio-group.GJJRVPUJ.css +1 -0
- package/dist/web/_app/immutable/assets/select.D_AV992j.css +1 -0
- package/dist/web/_app/immutable/chunks/-KAQXGuI2.js +1 -0
- package/dist/web/_app/immutable/chunks/-wzwcH00.js +1 -0
- package/dist/web/_app/immutable/chunks/07l_1Zpm2.js +1 -0
- package/dist/web/_app/immutable/chunks/38oWKNzM2.js +6 -0
- package/dist/web/_app/immutable/chunks/54VmiJfH.js +1 -0
- package/dist/web/_app/immutable/chunks/6LRpFvjo.js +185 -0
- package/dist/web/_app/immutable/chunks/7R0Rp3Mz.js +1 -0
- package/dist/web/_app/immutable/chunks/9bCTHkeS.js +1 -0
- package/dist/web/_app/immutable/chunks/B-822WnD2.js +22 -0
- package/dist/web/_app/immutable/chunks/B0HUvliX2.js +2 -0
- package/dist/web/_app/immutable/chunks/B12eXGpE.js +1 -0
- package/dist/web/_app/immutable/chunks/B5af0X0p2.js +1 -0
- package/dist/web/_app/immutable/chunks/B6iYNwo72.js +1 -0
- package/dist/web/_app/immutable/chunks/B7EMtoAB.js +1 -0
- package/dist/web/_app/immutable/chunks/B7L4gmPR.js +2 -0
- package/dist/web/_app/immutable/chunks/B9qBGxh62.js +3 -0
- package/dist/web/_app/immutable/chunks/BDJYj9yi.js +2 -0
- package/dist/web/_app/immutable/chunks/BEpMEjHO.js +1 -0
- package/dist/web/_app/immutable/chunks/BErNpj-S2.js +1 -0
- package/dist/web/_app/immutable/chunks/BHBk4zfV.js +1 -0
- package/dist/web/_app/immutable/chunks/BHH-JGNF.js +1 -0
- package/dist/web/_app/immutable/chunks/BKe5wPiN.js +1 -0
- package/dist/web/_app/immutable/chunks/BNTlsKDJ.js +1 -0
- package/dist/web/_app/immutable/chunks/BOgcXgis2.js +1 -0
- package/dist/web/_app/immutable/chunks/BOyyDrjn2.js +1 -0
- package/dist/web/_app/immutable/chunks/BPR_ufQ0.js +41 -0
- package/dist/web/_app/immutable/chunks/BRcFsc6v.js +5 -0
- package/dist/web/_app/immutable/chunks/BT3KAag_.js +3 -0
- package/dist/web/_app/immutable/chunks/BX2T6xiZ.js +224 -0
- package/dist/web/_app/immutable/chunks/BZnJ8tbJ.js +1 -0
- package/dist/web/_app/immutable/chunks/Ba1Yzb7u.js +1 -0
- package/dist/web/_app/immutable/chunks/BcsvgA3B2.js +1 -0
- package/dist/web/_app/immutable/chunks/BfbS7rGT.js +1 -0
- package/dist/web/_app/immutable/chunks/BgagL41Z.js +1 -0
- package/dist/web/_app/immutable/chunks/BiUh0Sik.js +1 -0
- package/dist/web/_app/immutable/chunks/Biajc_oU.js +1 -0
- package/dist/web/_app/immutable/chunks/Bl9Pzopy.js +1 -0
- package/dist/web/_app/immutable/chunks/BmcU05mO.js +1 -0
- package/dist/web/_app/immutable/chunks/Bmgp0jlT.js +1 -0
- package/dist/web/_app/immutable/chunks/BmgyOoEp.js +1 -0
- package/dist/web/_app/immutable/chunks/Bq0-jBGC2.js +1 -0
- package/dist/web/_app/immutable/chunks/BqGj0_GS.js +1 -0
- package/dist/web/_app/immutable/chunks/Bsc9K3Pz.js +1 -0
- package/dist/web/_app/immutable/chunks/Bssb691Q.js +1 -0
- package/dist/web/_app/immutable/chunks/BuzQceOn.js +1 -0
- package/dist/web/_app/immutable/chunks/BzeVNab0.js +1 -0
- package/dist/web/_app/immutable/chunks/C-OaypFN.js +1 -0
- package/dist/web/_app/immutable/chunks/C0fjDjvE2.js +1 -0
- package/dist/web/_app/immutable/chunks/C0pTXwEX.js +2 -0
- package/dist/web/_app/immutable/chunks/C3Enww9L2.js +1 -0
- package/dist/web/_app/immutable/chunks/C3oa0Cks.js +1 -0
- package/dist/web/_app/immutable/chunks/CC-YWp-f.js +1 -0
- package/dist/web/_app/immutable/chunks/CGdKvXV92.js +1 -0
- package/dist/web/_app/immutable/chunks/CH0siYFL.js +1 -0
- package/dist/web/_app/immutable/chunks/CIchr8Tk2.js +1 -0
- package/dist/web/_app/immutable/chunks/CK_yXDQI.js +1 -0
- package/dist/web/_app/immutable/chunks/CLPtMig0.js +1 -0
- package/dist/web/_app/immutable/chunks/CLSxJmTj.js +2 -0
- package/dist/web/_app/immutable/chunks/CPQNcHIB.js +3 -0
- package/dist/web/_app/immutable/chunks/CPt2D5aU.js +1 -0
- package/dist/web/_app/immutable/chunks/CQ-2yccd.js +7 -0
- package/dist/web/_app/immutable/chunks/CS6VEwn7.js +1 -0
- package/dist/web/_app/immutable/chunks/CSGIGrrK.js +1 -0
- package/dist/web/_app/immutable/chunks/CSsDOIrk.js +1 -0
- package/dist/web/_app/immutable/chunks/CVXvEWhv2.js +1 -0
- package/dist/web/_app/immutable/chunks/CaChtuYU2.js +1 -0
- package/dist/web/_app/immutable/chunks/CbiwvM3R2.js +1 -0
- package/dist/web/_app/immutable/chunks/CdCuBMLm.js +156 -0
- package/dist/web/_app/immutable/chunks/CfqjDDMu.js +1 -0
- package/dist/web/_app/immutable/chunks/CjGzUnEF2.js +1 -0
- package/dist/web/_app/immutable/chunks/Cjgbiel7.js +1 -0
- package/dist/web/_app/immutable/chunks/ClNEskRf.js +1 -0
- package/dist/web/_app/immutable/chunks/CnqSKqA62.js +1 -0
- package/dist/web/_app/immutable/chunks/CqyqKPuh2.js +1 -0
- package/dist/web/_app/immutable/chunks/CrnX-oFV.js +1 -0
- package/dist/web/_app/immutable/chunks/CsGahE3a.js +1 -0
- package/dist/web/_app/immutable/chunks/CsXIliss.js +1 -0
- package/dist/web/_app/immutable/chunks/Ct3quP0F.js +1 -0
- package/dist/web/_app/immutable/chunks/CvZaxjRC.js +1 -0
- package/dist/web/_app/immutable/chunks/CwD4G56R.js +5 -0
- package/dist/web/_app/immutable/chunks/CxalqrMB.js +1 -0
- package/dist/web/_app/immutable/chunks/D1Ap3evT2.js +1 -0
- package/dist/web/_app/immutable/chunks/D7qgUfnr.js +2487 -0
- package/dist/web/_app/immutable/chunks/D9-_Euza2.js +1 -0
- package/dist/web/_app/immutable/chunks/DCCaoKt42.js +1 -0
- package/dist/web/_app/immutable/chunks/DDKweOZr2.js +23 -0
- package/dist/web/_app/immutable/chunks/DHeU-hHI2.js +2 -0
- package/dist/web/_app/immutable/chunks/DHepUItL.js +1 -0
- package/dist/web/_app/immutable/chunks/DL_KbCKq.js +8 -0
- package/dist/web/_app/immutable/chunks/DNtqqgv32.js +1 -0
- package/dist/web/_app/immutable/chunks/DRl7vwNC2.js +184 -0
- package/dist/web/_app/immutable/chunks/DTc5W_V6.js +1 -0
- package/dist/web/_app/immutable/chunks/DZetJu9k2.js +1 -0
- package/dist/web/_app/immutable/chunks/DaiJs3St.js +1 -0
- package/dist/web/_app/immutable/chunks/DhuJRrEX2.js +1 -0
- package/dist/web/_app/immutable/chunks/DiP2EplP.js +3 -0
- package/dist/web/_app/immutable/chunks/Dm25ot5x2.js +1 -0
- package/dist/web/_app/immutable/chunks/DqOcb9RX2.js +83 -0
- package/dist/web/_app/immutable/chunks/DrbUJCAE.js +1 -0
- package/dist/web/_app/immutable/chunks/Dt4HY2cT2.js +2 -0
- package/dist/web/_app/immutable/chunks/DtGUCMv8.js +6 -0
- package/dist/web/_app/immutable/chunks/Du2-B3c8.js +1 -0
- package/dist/web/_app/immutable/chunks/DwdkE4UD2.js +1 -0
- package/dist/web/_app/immutable/chunks/DxWesPbn.js +1 -0
- package/dist/web/_app/immutable/chunks/DyYZqUV72.js +1 -0
- package/dist/web/_app/immutable/chunks/HfUnhvrv2.js +1 -0
- package/dist/web/_app/immutable/chunks/Je8-BtCk2.js +1 -0
- package/dist/web/_app/immutable/chunks/LAN53VbP2.js +5 -0
- package/dist/web/_app/immutable/chunks/MSB7eA4_.js +1 -0
- package/dist/web/_app/immutable/chunks/NPe9WyW1.js +1 -0
- package/dist/web/_app/immutable/chunks/O6IzcxXJ.js +2 -0
- package/dist/web/_app/immutable/chunks/SXhc9rJW.js +1 -0
- package/dist/web/_app/immutable/chunks/TuBvdkhV2.js +1 -0
- package/dist/web/_app/immutable/chunks/U40J2SnU.js +1 -0
- package/dist/web/_app/immutable/chunks/VS3l21Gu.js +1 -0
- package/dist/web/_app/immutable/chunks/YEPEvlbU2.js +1 -0
- package/dist/web/_app/immutable/chunks/Z7TNRcgK.js +11 -0
- package/dist/web/_app/immutable/chunks/ZCekGjo6.js +5 -0
- package/dist/web/_app/immutable/chunks/_rnxQ655.js +4 -0
- package/dist/web/_app/immutable/chunks/dTXrX5Bw.js +2 -0
- package/dist/web/_app/immutable/chunks/gNXLhsdy.js +1 -0
- package/dist/web/_app/immutable/chunks/hKSTEN36.js +1 -0
- package/dist/web/_app/immutable/chunks/jZZTbzL5.js +1 -0
- package/dist/web/_app/immutable/chunks/l4FIBKss.js +1 -0
- package/dist/web/_app/immutable/chunks/l_4snZnh2.js +1 -0
- package/dist/web/_app/immutable/chunks/q6R6T-lK.js +1 -0
- package/dist/web/_app/immutable/chunks/qgprkMcL.js +1 -0
- package/dist/web/_app/immutable/chunks/rOisBLC62.js +14 -0
- package/dist/web/_app/immutable/chunks/t08TznXc2.js +1 -0
- package/dist/web/_app/immutable/chunks/t62M88qj.js +1 -0
- package/dist/web/_app/immutable/chunks/uCohGWC42.js +1 -0
- package/dist/web/_app/immutable/chunks/uqxmB78b.js +1 -0
- package/dist/web/_app/immutable/chunks/vwTMEIJQ.js +1 -0
- package/dist/web/_app/immutable/chunks/w1FCELam.js +64 -0
- package/dist/web/_app/immutable/chunks/zmjgin7A.js +1 -0
- package/dist/web/_app/immutable/chunks/zumDjcgJ.js +1 -0
- package/dist/web/_app/immutable/entry/app.B3JEO5sy.js +2 -0
- package/dist/web/_app/immutable/entry/start.Dk84vnrL.js +1 -0
- package/dist/web/_app/immutable/nodes/0.BKLFgYTV.js +2 -0
- package/dist/web/_app/immutable/nodes/1.Djf_1kN1.js +1 -0
- package/dist/web/_app/immutable/nodes/10.De6eGWLx.js +1 -0
- package/dist/web/_app/immutable/nodes/11.CDsfSRTw.js +1 -0
- package/dist/web/_app/immutable/nodes/12.BeKkKpkY.js +1 -0
- package/dist/web/_app/immutable/nodes/13.BcI8xwSy.js +1 -0
- package/dist/web/_app/immutable/nodes/2.ZMZ-QAZ7.js +106 -0
- package/dist/web/_app/immutable/nodes/3.C1ZiAfle.js +2 -0
- package/dist/web/_app/immutable/nodes/4.Chmqy9KF.js +2 -0
- package/dist/web/_app/immutable/nodes/5.Bpvr_Vcq.js +1 -0
- package/dist/web/_app/immutable/nodes/6.BHa_gOs3.js +1 -0
- package/dist/web/_app/immutable/nodes/7.D0hg4Eap.js +1 -0
- package/dist/web/_app/immutable/nodes/8.3ZUUxJqR.js +1 -0
- package/dist/web/_app/immutable/nodes/9.Ducy-oqR.js +1 -0
- package/dist/web/_app/version.json +1 -1
- package/dist/web/favicon-16.png +0 -0
- package/dist/web/favicon-180.png +0 -0
- package/dist/web/favicon-32.png +0 -0
- package/dist/web/favicon-48.png +0 -0
- package/dist/web/favicon-512.png +0 -0
- package/dist/web/favicon.ico +0 -0
- package/dist/web/favicon.svg +8 -0
- package/dist/web/index.html +64 -21
- package/dist/web/studiograph-logomark.svg +29 -0
- package/package.json +28 -14
- package/dist/agent/role-loader.d.ts +0 -24
- package/dist/agent/role-loader.js +0 -67
- package/dist/agent/role-loader.js.map +0 -1
- package/dist/agent/skills/enrich-entities.md +0 -136
- package/dist/agent/skills/obsidian-source-setup.md +0 -246
- package/dist/agent/skills/skill-loader.d.ts +0 -48
- package/dist/agent/skills/skill-loader.js +0 -166
- package/dist/agent/skills/skill-loader.js.map +0 -1
- package/dist/agent/skills/sync-configuration.md +0 -119
- package/dist/agent/skills/sync-setup.md +0 -82
- package/dist/agent/tools/sync-tools.d.ts +0 -35
- package/dist/agent/tools/sync-tools.js +0 -992
- package/dist/agent/tools/sync-tools.js.map +0 -1
- package/dist/auth/github.d.ts +0 -56
- package/dist/auth/github.js +0 -169
- package/dist/auth/github.js.map +0 -1
- package/dist/cli/commands/access.d.ts +0 -11
- package/dist/cli/commands/access.js +0 -156
- package/dist/cli/commands/access.js.map +0 -1
- package/dist/cli/commands/app.d.ts +0 -7
- package/dist/cli/commands/app.js +0 -268
- package/dist/cli/commands/app.js.map +0 -1
- package/dist/cli/commands/auth.d.ts +0 -10
- package/dist/cli/commands/auth.js +0 -79
- package/dist/cli/commands/auth.js.map +0 -1
- package/dist/cli/commands/collection.d.ts +0 -10
- package/dist/cli/commands/collection.js +0 -185
- package/dist/cli/commands/collection.js.map +0 -1
- package/dist/cli/commands/enrich.d.ts +0 -11
- package/dist/cli/commands/enrich.js +0 -135
- package/dist/cli/commands/enrich.js.map +0 -1
- package/dist/cli/commands/graphrag.d.ts +0 -12
- package/dist/cli/commands/graphrag.js +0 -122
- package/dist/cli/commands/graphrag.js.map +0 -1
- package/dist/cli/commands/members.d.ts +0 -11
- package/dist/cli/commands/members.js +0 -230
- package/dist/cli/commands/members.js.map +0 -1
- package/dist/cli/commands/org.d.ts +0 -10
- package/dist/cli/commands/org.js +0 -132
- package/dist/cli/commands/org.js.map +0 -1
- package/dist/cli/commands/provision.d.ts +0 -8
- package/dist/cli/commands/provision.js +0 -116
- package/dist/cli/commands/provision.js.map +0 -1
- package/dist/cli/commands/resolve.d.ts +0 -8
- package/dist/cli/commands/resolve.js +0 -85
- package/dist/cli/commands/resolve.js.map +0 -1
- package/dist/cli/commands/review.d.ts +0 -19
- package/dist/cli/commands/review.js +0 -128
- package/dist/cli/commands/review.js.map +0 -1
- package/dist/cli/commands/source.d.ts +0 -16
- package/dist/cli/commands/source.js +0 -159
- package/dist/cli/commands/source.js.map +0 -1
- package/dist/cli/commands/sync-collection.d.ts +0 -14
- package/dist/cli/commands/sync-collection.js +0 -355
- package/dist/cli/commands/sync-collection.js.map +0 -1
- package/dist/cli/commands/sync-entities.d.ts +0 -13
- package/dist/cli/commands/sync-entities.js +0 -242
- package/dist/cli/commands/sync-entities.js.map +0 -1
- package/dist/cli/commands/team.d.ts +0 -12
- package/dist/cli/commands/team.js +0 -185
- package/dist/cli/commands/team.js.map +0 -1
- package/dist/cli/sync-review-interactive.d.ts +0 -31
- package/dist/cli/sync-review-interactive.js +0 -393
- package/dist/cli/sync-review-interactive.js.map +0 -1
- package/dist/core/migration-runner.d.ts +0 -42
- package/dist/core/migration-runner.js +0 -232
- package/dist/core/migration-runner.js.map +0 -1
- package/dist/core/migration-types.d.ts +0 -101
- package/dist/core/migration-types.js +0 -21
- package/dist/core/migration-types.js.map +0 -1
- package/dist/core/migrations/20260219-formalize-memory-location.d.ts +0 -2
- package/dist/core/migrations/20260219-formalize-memory-location.js +0 -35
- package/dist/core/migrations/20260219-formalize-memory-location.js.map +0 -1
- package/dist/core/migrations/20260220-add-workspace-metadata.d.ts +0 -12
- package/dist/core/migrations/20260220-add-workspace-metadata.js +0 -65
- package/dist/core/migrations/20260220-add-workspace-metadata.js.map +0 -1
- package/dist/core/migrations/20260220-add-workspace-readme.d.ts +0 -11
- package/dist/core/migrations/20260220-add-workspace-readme.js +0 -82
- package/dist/core/migrations/20260220-add-workspace-readme.js.map +0 -1
- package/dist/core/migrations/20260220-migrate-yaml-to-json.d.ts +0 -9
- package/dist/core/migrations/20260220-migrate-yaml-to-json.js +0 -64
- package/dist/core/migrations/20260220-migrate-yaml-to-json.js.map +0 -1
- package/dist/core/migrations/index.d.ts +0 -11
- package/dist/core/migrations/index.js +0 -23
- package/dist/core/migrations/index.js.map +0 -1
- package/dist/integrations/asana.d.ts +0 -26
- package/dist/integrations/asana.js +0 -78
- package/dist/integrations/asana.js.map +0 -1
- package/dist/integrations/figma-local.d.ts +0 -16
- package/dist/integrations/figma-local.js +0 -10
- package/dist/integrations/figma-local.js.map +0 -1
- package/dist/integrations/figma.d.ts +0 -17
- package/dist/integrations/figma.js +0 -17
- package/dist/integrations/figma.js.map +0 -1
- package/dist/integrations/granola.d.ts +0 -24
- package/dist/integrations/granola.js +0 -60
- package/dist/integrations/granola.js.map +0 -1
- package/dist/integrations/linear.d.ts +0 -14
- package/dist/integrations/linear.js +0 -80
- package/dist/integrations/linear.js.map +0 -1
- package/dist/integrations/paper-local.d.ts +0 -14
- package/dist/integrations/paper-local.js +0 -10
- package/dist/integrations/paper-local.js.map +0 -1
- package/dist/integrations/paper.d.ts +0 -2
- package/dist/integrations/paper.js +0 -10
- package/dist/integrations/paper.js.map +0 -1
- package/dist/integrations/pipedrive.d.ts +0 -26
- package/dist/integrations/pipedrive.js +0 -97
- package/dist/integrations/pipedrive.js.map +0 -1
- package/dist/integrations/registry.d.ts +0 -8
- package/dist/integrations/registry.js +0 -7
- package/dist/integrations/registry.js.map +0 -1
- package/dist/integrations/types.d.ts +0 -43
- package/dist/integrations/types.js +0 -5
- package/dist/integrations/types.js.map +0 -1
- package/dist/lib/lib/utils.d.ts +0 -2
- package/dist/lib/lib/utils.js +0 -6
- package/dist/lib/lib/utils.js.map +0 -1
- package/dist/mcp/connectors/asana.d.ts +0 -2
- package/dist/mcp/connectors/asana.js +0 -20
- package/dist/mcp/connectors/asana.js.map +0 -1
- package/dist/mcp/connectors/definitions.d.ts +0 -45
- package/dist/mcp/connectors/definitions.js +0 -32
- package/dist/mcp/connectors/definitions.js.map +0 -1
- package/dist/mcp/connectors/figma.d.ts +0 -5
- package/dist/mcp/connectors/figma.js +0 -21
- package/dist/mcp/connectors/figma.js.map +0 -1
- package/dist/mcp/connectors/gdrive.d.ts +0 -2
- package/dist/mcp/connectors/gdrive.js +0 -20
- package/dist/mcp/connectors/gdrive.js.map +0 -1
- package/dist/mcp/connectors/granola.d.ts +0 -2
- package/dist/mcp/connectors/granola.js +0 -12
- package/dist/mcp/connectors/granola.js.map +0 -1
- package/dist/mcp/connectors/linear.d.ts +0 -2
- package/dist/mcp/connectors/linear.js +0 -19
- package/dist/mcp/connectors/linear.js.map +0 -1
- package/dist/mcp/connectors/obsidian.d.ts +0 -2
- package/dist/mcp/connectors/obsidian.js +0 -19
- package/dist/mcp/connectors/obsidian.js.map +0 -1
- package/dist/mcp/connectors/pipedrive.d.ts +0 -2
- package/dist/mcp/connectors/pipedrive.js +0 -20
- package/dist/mcp/connectors/pipedrive.js.map +0 -1
- package/dist/mcp/connectors/slack.d.ts +0 -2
- package/dist/mcp/connectors/slack.js +0 -21
- package/dist/mcp/connectors/slack.js.map +0 -1
- package/dist/mcp/server-oauth-provider.d.ts +0 -56
- package/dist/mcp/server-oauth-provider.js +0 -142
- package/dist/mcp/server-oauth-provider.js.map +0 -1
- package/dist/server/agents/agent-loader.d.ts +0 -16
- package/dist/server/agents/agent-loader.js +0 -175
- package/dist/server/agents/agent-loader.js.map +0 -1
- package/dist/server/agents/agent-runner.d.ts +0 -33
- package/dist/server/agents/agent-runner.js +0 -187
- package/dist/server/agents/agent-runner.js.map +0 -1
- package/dist/server/agents/agent-runtime.d.ts +0 -39
- package/dist/server/agents/agent-runtime.js +0 -214
- package/dist/server/agents/agent-runtime.js.map +0 -1
- package/dist/server/agents/base-agent.d.ts +0 -30
- package/dist/server/agents/base-agent.js +0 -88
- package/dist/server/agents/base-agent.js.map +0 -1
- package/dist/server/agents/executive-digest.d.ts +0 -16
- package/dist/server/agents/executive-digest.js +0 -115
- package/dist/server/agents/executive-digest.js.map +0 -1
- package/dist/server/agents/graph-steward.d.ts +0 -16
- package/dist/server/agents/graph-steward.js +0 -59
- package/dist/server/agents/graph-steward.js.map +0 -1
- package/dist/server/agents/meeting-followup.d.ts +0 -16
- package/dist/server/agents/meeting-followup.js +0 -88
- package/dist/server/agents/meeting-followup.js.map +0 -1
- package/dist/server/agents/pipeline-monitor.d.ts +0 -15
- package/dist/server/agents/pipeline-monitor.js +0 -86
- package/dist/server/agents/pipeline-monitor.js.map +0 -1
- package/dist/server/agents/types.d.ts +0 -81
- package/dist/server/agents/types.js +0 -41
- package/dist/server/agents/types.js.map +0 -1
- package/dist/server/chrome/chrome.css +0 -691
- package/dist/server/chrome/chrome.js +0 -374
- package/dist/server/collab-authority.d.ts +0 -70
- package/dist/server/collab-authority.js +0 -218
- package/dist/server/collab-authority.js.map +0 -1
- package/dist/server/collab.d.ts +0 -29
- package/dist/server/collab.js +0 -195
- package/dist/server/collab.js.map +0 -1
- package/dist/server/commit-scheduler.d.ts +0 -39
- package/dist/server/commit-scheduler.js +0 -113
- package/dist/server/commit-scheduler.js.map +0 -1
- package/dist/server/plugin-loader.d.ts +0 -53
- package/dist/server/plugin-loader.js +0 -155
- package/dist/server/plugin-loader.js.map +0 -1
- package/dist/server/routes/agents-api.d.ts +0 -10
- package/dist/server/routes/agents-api.js +0 -25
- package/dist/server/routes/agents-api.js.map +0 -1
- package/dist/server/routes/collab.d.ts +0 -6
- package/dist/server/routes/collab.js +0 -10
- package/dist/server/routes/collab.js.map +0 -1
- package/dist/server/routes/git-api.d.ts +0 -9
- package/dist/server/routes/git-api.js +0 -82
- package/dist/server/routes/git-api.js.map +0 -1
- package/dist/server/routes/meeting-ingest-api.d.ts +0 -14
- package/dist/server/routes/meeting-ingest-api.js +0 -98
- package/dist/server/routes/meeting-ingest-api.js.map +0 -1
- package/dist/server/routes/sync-api.d.ts +0 -26
- package/dist/server/routes/sync-api.js +0 -848
- package/dist/server/routes/sync-api.js.map +0 -1
- package/dist/server/routes/webhook.d.ts +0 -14
- package/dist/server/routes/webhook.js +0 -102
- package/dist/server/routes/webhook.js.map +0 -1
- package/dist/services/batch-processor.d.ts +0 -49
- package/dist/services/batch-processor.js +0 -166
- package/dist/services/batch-processor.js.map +0 -1
- package/dist/services/csv-service.d.ts +0 -36
- package/dist/services/csv-service.js +0 -143
- package/dist/services/csv-service.js.map +0 -1
- package/dist/services/github-provisioner.d.ts +0 -36
- package/dist/services/github-provisioner.js +0 -126
- package/dist/services/github-provisioner.js.map +0 -1
- package/dist/services/github-service.d.ts +0 -99
- package/dist/services/github-service.js +0 -310
- package/dist/services/github-service.js.map +0 -1
- package/dist/services/image-import-service.d.ts +0 -24
- package/dist/services/image-import-service.js +0 -108
- package/dist/services/image-import-service.js.map +0 -1
- package/dist/services/insights.d.ts +0 -38
- package/dist/services/insights.js +0 -269
- package/dist/services/insights.js.map +0 -1
- package/dist/services/meeting-processor.d.ts +0 -91
- package/dist/services/meeting-processor.js +0 -331
- package/dist/services/meeting-processor.js.map +0 -1
- package/dist/services/sync/collection-sync.d.ts +0 -60
- package/dist/services/sync/collection-sync.js +0 -509
- package/dist/services/sync/collection-sync.js.map +0 -1
- package/dist/services/sync/commit.d.ts +0 -60
- package/dist/services/sync/commit.js +0 -354
- package/dist/services/sync/commit.js.map +0 -1
- package/dist/services/sync/context-index.d.ts +0 -69
- package/dist/services/sync/context-index.js +0 -280
- package/dist/services/sync/context-index.js.map +0 -1
- package/dist/services/sync/data-fetcher.d.ts +0 -31
- package/dist/services/sync/data-fetcher.js +0 -12
- package/dist/services/sync/data-fetcher.js.map +0 -1
- package/dist/services/sync/derive.d.ts +0 -34
- package/dist/services/sync/derive.js +0 -164
- package/dist/services/sync/derive.js.map +0 -1
- package/dist/services/sync/enrichment-state.d.ts +0 -31
- package/dist/services/sync/enrichment-state.js +0 -63
- package/dist/services/sync/enrichment-state.js.map +0 -1
- package/dist/services/sync/enrichment.d.ts +0 -25
- package/dist/services/sync/enrichment.js +0 -121
- package/dist/services/sync/enrichment.js.map +0 -1
- package/dist/services/sync/entity-refresh.d.ts +0 -30
- package/dist/services/sync/entity-refresh.js +0 -275
- package/dist/services/sync/entity-refresh.js.map +0 -1
- package/dist/services/sync/frontmatter-extractor.d.ts +0 -40
- package/dist/services/sync/frontmatter-extractor.js +0 -279
- package/dist/services/sync/frontmatter-extractor.js.map +0 -1
- package/dist/services/sync/graph-match-state.d.ts +0 -33
- package/dist/services/sync/graph-match-state.js +0 -61
- package/dist/services/sync/graph-match-state.js.map +0 -1
- package/dist/services/sync/graph-match.d.ts +0 -53
- package/dist/services/sync/graph-match.js +0 -316
- package/dist/services/sync/graph-match.js.map +0 -1
- package/dist/services/sync/graphrag-client.d.ts +0 -43
- package/dist/services/sync/graphrag-client.js +0 -94
- package/dist/services/sync/graphrag-client.js.map +0 -1
- package/dist/services/sync/graphrag-config.d.ts +0 -16
- package/dist/services/sync/graphrag-config.js +0 -39
- package/dist/services/sync/graphrag-config.js.map +0 -1
- package/dist/services/sync/graphrag-context.d.ts +0 -14
- package/dist/services/sync/graphrag-context.js +0 -109
- package/dist/services/sync/graphrag-context.js.map +0 -1
- package/dist/services/sync/graphrag-indexer.d.ts +0 -30
- package/dist/services/sync/graphrag-indexer.js +0 -358
- package/dist/services/sync/graphrag-indexer.js.map +0 -1
- package/dist/services/sync/llm.d.ts +0 -32
- package/dist/services/sync/llm.js +0 -115
- package/dist/services/sync/llm.js.map +0 -1
- package/dist/services/sync/mcp-client.d.ts +0 -71
- package/dist/services/sync/mcp-client.js +0 -299
- package/dist/services/sync/mcp-client.js.map +0 -1
- package/dist/services/sync/model-factory.d.ts +0 -13
- package/dist/services/sync/model-factory.js +0 -38
- package/dist/services/sync/model-factory.js.map +0 -1
- package/dist/services/sync/name-quality.d.ts +0 -31
- package/dist/services/sync/name-quality.js +0 -60
- package/dist/services/sync/name-quality.js.map +0 -1
- package/dist/services/sync/output-schemas.d.ts +0 -92
- package/dist/services/sync/output-schemas.js +0 -43
- package/dist/services/sync/output-schemas.js.map +0 -1
- package/dist/services/sync/prompts.d.ts +0 -19
- package/dist/services/sync/prompts.js +0 -128
- package/dist/services/sync/prompts.js.map +0 -1
- package/dist/services/sync/reconciler.d.ts +0 -48
- package/dist/services/sync/reconciler.js +0 -294
- package/dist/services/sync/reconciler.js.map +0 -1
- package/dist/services/sync/rest-client.d.ts +0 -40
- package/dist/services/sync/rest-client.js +0 -100
- package/dist/services/sync/rest-client.js.map +0 -1
- package/dist/services/sync/source-config.d.ts +0 -67
- package/dist/services/sync/source-config.js +0 -304
- package/dist/services/sync/source-config.js.map +0 -1
- package/dist/services/sync/source-definitions/asana.d.ts +0 -14
- package/dist/services/sync/source-definitions/asana.js +0 -42
- package/dist/services/sync/source-definitions/asana.js.map +0 -1
- package/dist/services/sync/source-definitions/definitions.d.ts +0 -8
- package/dist/services/sync/source-definitions/definitions.js +0 -8
- package/dist/services/sync/source-definitions/definitions.js.map +0 -1
- package/dist/services/sync/source-definitions/gdrive.d.ts +0 -16
- package/dist/services/sync/source-definitions/gdrive.js +0 -68
- package/dist/services/sync/source-definitions/gdrive.js.map +0 -1
- package/dist/services/sync/source-definitions/granola.d.ts +0 -2
- package/dist/services/sync/source-definitions/granola.js +0 -21
- package/dist/services/sync/source-definitions/granola.js.map +0 -1
- package/dist/services/sync/source-definitions/linear.d.ts +0 -2
- package/dist/services/sync/source-definitions/linear.js +0 -62
- package/dist/services/sync/source-definitions/linear.js.map +0 -1
- package/dist/services/sync/source-definitions/obsidian.d.ts +0 -2
- package/dist/services/sync/source-definitions/obsidian.js +0 -55
- package/dist/services/sync/source-definitions/obsidian.js.map +0 -1
- package/dist/services/sync/source-definitions/pipedrive.d.ts +0 -2
- package/dist/services/sync/source-definitions/pipedrive.js +0 -43
- package/dist/services/sync/source-definitions/pipedrive.js.map +0 -1
- package/dist/services/sync/staging.d.ts +0 -53
- package/dist/services/sync/staging.js +0 -130
- package/dist/services/sync/staging.js.map +0 -1
- package/dist/services/sync/structured-extractor.d.ts +0 -57
- package/dist/services/sync/structured-extractor.js +0 -584
- package/dist/services/sync/structured-extractor.js.map +0 -1
- package/dist/services/sync/sync-runner.d.ts +0 -32
- package/dist/services/sync/sync-runner.js +0 -195
- package/dist/services/sync/sync-runner.js.map +0 -1
- package/dist/services/sync/sync-state.d.ts +0 -43
- package/dist/services/sync/sync-state.js +0 -154
- package/dist/services/sync/sync-state.js.map +0 -1
- package/dist/services/sync/types.d.ts +0 -381
- package/dist/services/sync/types.js +0 -8
- package/dist/services/sync/types.js.map +0 -1
- package/dist/services/sync/unstructured-extractor.d.ts +0 -27
- package/dist/services/sync/unstructured-extractor.js +0 -185
- package/dist/services/sync/unstructured-extractor.js.map +0 -1
- package/dist/utils/merge-resolver.d.ts +0 -59
- package/dist/utils/merge-resolver.js +0 -303
- package/dist/utils/merge-resolver.js.map +0 -1
- package/dist/utils/workspace-config.d.ts +0 -8
- package/dist/utils/workspace-config.js +0 -22
- package/dist/utils/workspace-config.js.map +0 -1
- package/dist/web/_app/immutable/assets/0.QUqBcyuu.css +0 -1
- package/dist/web/_app/immutable/assets/11.2jzI3cZY.css +0 -1
- package/dist/web/_app/immutable/assets/12.CT4xL4K3.css +0 -1
- package/dist/web/_app/immutable/assets/13.BUrHkYry.css +0 -1
- package/dist/web/_app/immutable/assets/2.5jNm7Pm1.css +0 -1
- package/dist/web/_app/immutable/assets/3.BxdqT7zi.css +0 -1
- package/dist/web/_app/immutable/assets/4.BjPwtpNd.css +0 -1
- package/dist/web/_app/immutable/assets/5.DFeGxLYf.css +0 -1
- package/dist/web/_app/immutable/assets/6.DXZr_rI_.css +0 -1
- package/dist/web/_app/immutable/assets/GraphView.D9ePpZez.css +0 -1
- package/dist/web/_app/immutable/assets/Toaster.rN8r_Hzv.css +0 -1
- package/dist/web/_app/immutable/assets/ViewToolbar.CZjsdjy4.css +0 -1
- package/dist/web/_app/immutable/assets/WorkspaceView.B-1DbivC.css +0 -1
- package/dist/web/_app/immutable/assets/wikilinks.CtSydmQl.css +0 -1
- package/dist/web/_app/immutable/chunks/3--t-YNA.js +0 -1
- package/dist/web/_app/immutable/chunks/5OU-4caN.js +0 -1
- package/dist/web/_app/immutable/chunks/7S2LGqoP.js +0 -2
- package/dist/web/_app/immutable/chunks/B6FUcAv5.js +0 -1
- package/dist/web/_app/immutable/chunks/B9gDgSlp.js +0 -1
- package/dist/web/_app/immutable/chunks/BB_5th5W.js +0 -3383
- package/dist/web/_app/immutable/chunks/BFtIWl5z.js +0 -1
- package/dist/web/_app/immutable/chunks/BHKpz6_7.js +0 -1
- package/dist/web/_app/immutable/chunks/BNfrhBeA.js +0 -1
- package/dist/web/_app/immutable/chunks/BgO5HlCg.js +0 -2
- package/dist/web/_app/immutable/chunks/BqnODQDb.js +0 -1
- package/dist/web/_app/immutable/chunks/BrebtJNG.js +0 -18
- package/dist/web/_app/immutable/chunks/BvIFhEn7.js +0 -2
- package/dist/web/_app/immutable/chunks/BvfdTHv8.js +0 -1
- package/dist/web/_app/immutable/chunks/BxGm65PH.js +0 -1
- package/dist/web/_app/immutable/chunks/BxyxnEKw.js +0 -1
- package/dist/web/_app/immutable/chunks/BygFIGq4.js +0 -1
- package/dist/web/_app/immutable/chunks/Bz0ZjVQE.js +0 -2
- package/dist/web/_app/immutable/chunks/C0LVZhvn.js +0 -1
- package/dist/web/_app/immutable/chunks/CIb_hHMy.js +0 -1
- package/dist/web/_app/immutable/chunks/CNKK6nZb.js +0 -1
- package/dist/web/_app/immutable/chunks/CQ5FjHZK.js +0 -1
- package/dist/web/_app/immutable/chunks/CSVbGg_b.js +0 -5
- package/dist/web/_app/immutable/chunks/CX_61fY8.js +0 -5
- package/dist/web/_app/immutable/chunks/CYrVHOHA.js +0 -1
- package/dist/web/_app/immutable/chunks/CaEaeeKb.js +0 -1
- package/dist/web/_app/immutable/chunks/Ch6e_wpP.js +0 -1
- package/dist/web/_app/immutable/chunks/Ci4zzCVB.js +0 -2
- package/dist/web/_app/immutable/chunks/CknqBVQE.js +0 -1
- package/dist/web/_app/immutable/chunks/Cmfiirqp.js +0 -4
- package/dist/web/_app/immutable/chunks/CqkleIqs.js +0 -1
- package/dist/web/_app/immutable/chunks/CrFpCC6p.js +0 -1
- package/dist/web/_app/immutable/chunks/CxX8hcT6.js +0 -1
- package/dist/web/_app/immutable/chunks/D0T1ps1G.js +0 -1
- package/dist/web/_app/immutable/chunks/D2ZEj9xD.js +0 -1
- package/dist/web/_app/immutable/chunks/D3sy0IkA.js +0 -2
- package/dist/web/_app/immutable/chunks/DFYOFE3o.js +0 -1
- package/dist/web/_app/immutable/chunks/DHWoAC4y.js +0 -1
- package/dist/web/_app/immutable/chunks/DYYBfXU3.js +0 -1
- package/dist/web/_app/immutable/chunks/DiNPRA8T.js +0 -1
- package/dist/web/_app/immutable/chunks/DkjsqHkM.js +0 -1
- package/dist/web/_app/immutable/chunks/DnL9f0lc.js +0 -7
- package/dist/web/_app/immutable/chunks/DpMCynC3.js +0 -1
- package/dist/web/_app/immutable/chunks/DqrybUuA.js +0 -1
- package/dist/web/_app/immutable/chunks/DsnmJJEf.js +0 -1
- package/dist/web/_app/immutable/chunks/KyjzlWRN.js +0 -2
- package/dist/web/_app/immutable/chunks/O9MAeAgV.js +0 -5
- package/dist/web/_app/immutable/chunks/PPVm8Dsz.js +0 -1
- package/dist/web/_app/immutable/chunks/SKSQ4m85.js +0 -2
- package/dist/web/_app/immutable/chunks/WEBTyD-H.js +0 -1
- package/dist/web/_app/immutable/chunks/WSUKABI_.js +0 -1
- package/dist/web/_app/immutable/chunks/bBXT5iJP.js +0 -1
- package/dist/web/_app/immutable/chunks/vxEtkL8z.js +0 -1
- package/dist/web/_app/immutable/chunks/wDIGUaoU.js +0 -3
- package/dist/web/_app/immutable/chunks/xkNhbnff.js +0 -1
- package/dist/web/_app/immutable/chunks/zoVX1Zab.js +0 -1
- package/dist/web/_app/immutable/entry/app.GfE4z2GO.js +0 -2
- package/dist/web/_app/immutable/entry/start.H-LFJK9u.js +0 -1
- package/dist/web/_app/immutable/nodes/0.Bwi7tTNC.js +0 -2
- package/dist/web/_app/immutable/nodes/1.DgNJPEWk.js +0 -1
- package/dist/web/_app/immutable/nodes/10.BW_XCD2O.js +0 -1
- package/dist/web/_app/immutable/nodes/11.DM7RX3Ms.js +0 -1
- package/dist/web/_app/immutable/nodes/12.DKgssZo8.js +0 -1
- package/dist/web/_app/immutable/nodes/13.DCdmTre-.js +0 -1
- package/dist/web/_app/immutable/nodes/2.DOA5QBVG.js +0 -266
- package/dist/web/_app/immutable/nodes/3.bpoHQwAI.js +0 -5
- package/dist/web/_app/immutable/nodes/4.ye0Vy7A1.js +0 -11
- package/dist/web/_app/immutable/nodes/5.rxpnYrx_.js +0 -4
- package/dist/web/_app/immutable/nodes/6.DP8HSxtc.js +0 -1
- package/dist/web/_app/immutable/nodes/7.C1h4Bf-E.js +0 -1
- package/dist/web/_app/immutable/nodes/8.BzmQ7S7Y.js +0 -1
- package/dist/web/_app/immutable/nodes/9.CEakpXpF.js +0 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renders the `## Entry Types` section injected into the agent system prompt.
|
|
3
|
+
*
|
|
4
|
+
* Consumers (orchestrator.ts, cli/commands/start.ts) replace the
|
|
5
|
+
* `{{ENTITY_TYPES}}` placeholder in system.md with the output of this function.
|
|
6
|
+
*
|
|
7
|
+
* The agent now has the full curated catalog available at all times. The
|
|
8
|
+
* "basic" vs "show more" distinction is a UI concern in the New Entry
|
|
9
|
+
* picker, not a creation-permission gate. Workspace-defined custom types
|
|
10
|
+
* (via schema_extensions) are appended after the canonical list.
|
|
11
|
+
*/
|
|
12
|
+
import { CURATED_ENTITY_TYPES, CURATED_ENTITY_TYPE_DESCRIPTIONS, DEFAULT_BASIC_ENTITY_TYPES, isCuratedEntityType, } from '../../core/entity-types-catalog.js';
|
|
13
|
+
export function renderEntityTypesSection(options = {}) {
|
|
14
|
+
const lines = [];
|
|
15
|
+
lines.push('## Entry Types');
|
|
16
|
+
lines.push('');
|
|
17
|
+
// `asset` is canonical and surfaces in the catalog so the agent can read,
|
|
18
|
+
// search, and link to existing asset entries — but it's filtered out of
|
|
19
|
+
// the create_entity-creatable list because asset entries require a binary
|
|
20
|
+
// blob in the storage backend, which create_entity can't materialize.
|
|
21
|
+
// See `getAgentAllowedEntityTypes` below.
|
|
22
|
+
const creatableTypes = CURATED_ENTITY_TYPES.filter(t => t !== 'asset');
|
|
23
|
+
lines.push(`You have access to ${creatableTypes.length} canonical entry types via create_entity. ` +
|
|
24
|
+
`Any type can live in any folder. Use the most specific type that fits — ` +
|
|
25
|
+
`don't collapse a deck into a document, or a service into a note, just ` +
|
|
26
|
+
`because they're simpler.`);
|
|
27
|
+
lines.push('');
|
|
28
|
+
for (const type of creatableTypes) {
|
|
29
|
+
lines.push(`- \`${type}\`: ${CURATED_ENTITY_TYPE_DESCRIPTIONS[type]}`);
|
|
30
|
+
}
|
|
31
|
+
// Asset is documented separately so the agent knows what asset entries
|
|
32
|
+
// ARE (for read/search/link purposes) without being tempted to call
|
|
33
|
+
// create_entity for them.
|
|
34
|
+
lines.push('');
|
|
35
|
+
lines.push('**Asset entries:** there is also a canonical `asset` entry type for ' +
|
|
36
|
+
'hosted binaries (images, video, audio, PDFs, spreadsheets, and other ' +
|
|
37
|
+
'opaque files). You can list, search, link to, and read existing asset ' +
|
|
38
|
+
'entries — but they cannot be created via `create_entity` because they ' +
|
|
39
|
+
'require a binary in the storage backend. Use the `import_file` tool ' +
|
|
40
|
+
'with a local file path to create one, or ask the user to upload via ' +
|
|
41
|
+
'the workspace UI.');
|
|
42
|
+
const customTypes = (options.customTypes ?? []).filter(t => t && t.trim().length > 0 && !isCuratedEntityType(t));
|
|
43
|
+
if (customTypes.length > 0) {
|
|
44
|
+
lines.push('');
|
|
45
|
+
lines.push('**Custom types defined in this workspace:**');
|
|
46
|
+
for (const type of customTypes) {
|
|
47
|
+
lines.push(`- \`${type}\``);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
lines.push('');
|
|
51
|
+
lines.push('**Defaulting and suggestion flow:**');
|
|
52
|
+
lines.push('- For freeform captured content with no obvious fit, use `note`.');
|
|
53
|
+
lines.push('- If the captured content clearly matches a more specific canonical type ' +
|
|
54
|
+
'(for example the user describes a meeting/workshop/call, a decision, a deal, a deck, or a deliverable), ' +
|
|
55
|
+
'ask once before creating: *"This looks like a meeting — want me to save it as an Event entry?"* ' +
|
|
56
|
+
'If the user accepts, create it as that type. (Meetings, calls, workshops, reviews, etc. all use `event` with the appropriate `type` value.)');
|
|
57
|
+
lines.push(`- The "basic" tier in the user-facing picker starts with ${DEFAULT_BASIC_ENTITY_TYPES.join(', ')}, ` +
|
|
58
|
+
'but you are not restricted to that subset — use whichever canonical type fits.');
|
|
59
|
+
return lines.join('\n');
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* List of entity type names the agent is allowed to create in a given
|
|
63
|
+
* workspace: the full canonical catalog plus any custom workspace types.
|
|
64
|
+
* Used for tool-schema enum construction and runtime guard checks.
|
|
65
|
+
*
|
|
66
|
+
* `asset` is intentionally excluded. Asset entities are bound to a binary
|
|
67
|
+
* blob in the storage backend (R2 or local volume) plus an `asset_url` and
|
|
68
|
+
* (for PDFs) a text sidecar. `create_entity` only writes markdown
|
|
69
|
+
* frontmatter — it can't materialize the binary or sidecar, so accepting
|
|
70
|
+
* `asset` would let an LLM (via prompt injection) create stub entities
|
|
71
|
+
* with attacker-controlled `asset_url` values. Use `import_file` (with a
|
|
72
|
+
* real file path) or the upload routes instead.
|
|
73
|
+
*/
|
|
74
|
+
export function getAgentAllowedEntityTypes(customTypes = []) {
|
|
75
|
+
const unique = new Set(CURATED_ENTITY_TYPES);
|
|
76
|
+
for (const t of customTypes) {
|
|
77
|
+
if (t && t.trim().length > 0)
|
|
78
|
+
unique.add(t);
|
|
79
|
+
}
|
|
80
|
+
unique.delete('asset');
|
|
81
|
+
return Array.from(unique);
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=entity-types-section.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-types-section.js","sourceRoot":"","sources":["../../../src/agent/prompts/entity-types-section.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,12 +7,12 @@ You are Studiograph, an AI assistant helping creative teams manage their knowled
|
|
|
7
7
|
You can help users with:
|
|
8
8
|
|
|
9
9
|
1. **Entry Management**
|
|
10
|
-
- Create, read, update, and delete entries (projects,
|
|
10
|
+
- Create, read, update, and delete entries (projects, events, people, tasks, documents, notes, etc.)
|
|
11
11
|
- Validate entry data against schemas
|
|
12
12
|
- Suggest appropriate entry types for user needs
|
|
13
13
|
|
|
14
14
|
2. **Knowledge Graph Navigation**
|
|
15
|
-
- Search across
|
|
15
|
+
- Search across folders
|
|
16
16
|
- Follow wikilink relationships
|
|
17
17
|
- Find related entries and backlinks
|
|
18
18
|
- Validate wikilinks to ensure data integrity
|
|
@@ -56,84 +56,140 @@ You can help users with:
|
|
|
56
56
|
- NEVER use emojis or emoticons in any response — no exceptions
|
|
57
57
|
- Use plain text only: dashes, bullets, and bold for emphasis
|
|
58
58
|
- Keep language clear, direct, and professional
|
|
59
|
+
- When you create, update, or otherwise reference entries, link to them inline using `[[entry-id]]` wikilinks so the user can click through if they want to. Do not assume the user has been navigated anywhere — they stay on whatever page they were on when they called you.
|
|
59
60
|
|
|
60
61
|
**Respect Structure:**
|
|
61
62
|
- Follow the established entry schemas
|
|
62
63
|
- Maintain consistent naming conventions (kebab-case IDs)
|
|
63
64
|
- Preserve YAML frontmatter formatting
|
|
65
|
+
- Body content starts at `##` (h2). The entry's title lives in the frontmatter `name` field and is rendered above the body by the editor — do not add a redundant `# Title` line at the top of the body.
|
|
64
66
|
- Keep wikilinks properly formatted: `[[entry-id]]` or `[[entry-id|Display Text]]`
|
|
67
|
+
- **Array fields with wikilinks** (attendees, related_people, related_projects, participants, etc.) must have ONE wikilink per array item. Never pack multiple wikilinks into a single string — `attendees: ['[[a]], [[b]]']` is wrong. Emit each as its own item:
|
|
65
68
|
|
|
66
|
-
|
|
69
|
+
```yaml
|
|
70
|
+
attendees:
|
|
71
|
+
- '[[a]]'
|
|
72
|
+
- '[[b]]'
|
|
73
|
+
```
|
|
67
74
|
|
|
68
|
-
|
|
75
|
+
## Scope Awareness
|
|
69
76
|
|
|
70
|
-
|
|
71
|
-
- `person`: Team members, client contacts, any individual (status: current/former/contractor/client/partner)
|
|
72
|
-
- `organization`: Clients, vendors, partners, prospects (type: client/vendor/partner/prospect/industry-body; status: active/inactive/prospect/former)
|
|
73
|
-
- `role`: Role definitions from leveling framework (title, department, level, type: staff/contractor/intern)
|
|
74
|
-
- `practice-area`: Firm capabilities and disciplines (e.g. Data Visualization, UX Design)
|
|
77
|
+
The user's message may be prefixed with a `[Currently viewing: ...]` marker. Use it to default the scope of your response to what they're looking at — they shouldn't have to repeat "in this folder" or "this entry" in every message.
|
|
75
78
|
|
|
76
|
-
**
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
- `decision`: Structured decision records (ADR-style)
|
|
80
|
-
- `task`: Action items and to-dos (status: open/in-progress/done/cancelled)
|
|
81
|
-
- `document`: Any authored document (type: proposal/contract/brief/memo/financial-plan/template/report)
|
|
82
|
-
- `dataset`: Structured tabular data with typed columns
|
|
83
|
-
- `reference`: External resources and inspiration (type: article/video/tool/technique/framework/website)
|
|
84
|
-
- `note`: Freeform thinking (type: research/scratch/daily/brainstorm/draft)
|
|
85
|
-
- `deliverable`: Contracted outputs promised to a client
|
|
86
|
-
- `publication`: Content published externally (type: article/social-post/case-study-writeup/talk/podcast/award-submission)
|
|
79
|
+
- **No marker** → user is on the workspace home. Default to workspace-wide scope: searches span all folders they can access, suggestions can reference any entry.
|
|
80
|
+
- **`[Currently viewing folder: <name>]`** → user is looking at a single folder. Default searches, lists, and new-entry placement to that folder unless they say otherwise. When creating entries here, don't ask which folder — it's this one.
|
|
81
|
+
- **`[Currently viewing entry: <repo>/<type>/<id>]`** → user is on a specific entry. Questions without a clear subject are about THIS entry. The entry's frontmatter and content are provided inline; use them before calling `get_entity`.
|
|
87
82
|
|
|
88
|
-
|
|
89
|
-
- `process`: Workflows, SOPs, methodologies
|
|
90
|
-
- `standard`: Guidelines and best practices (category: accessibility/design-principles/code-standards)
|
|
91
|
-
- `case-study`: Portfolio narratives for completed work
|
|
83
|
+
The user can always override by naming a different scope explicitly ("search all folders", "put this in the brand-refresh folder"). When they do, follow their explicit scope.
|
|
92
84
|
|
|
93
|
-
|
|
85
|
+
{{ENTITY_TYPES}}
|
|
94
86
|
|
|
95
87
|
## Entry Placement
|
|
96
88
|
|
|
97
89
|
When creating entries, follow these rules:
|
|
98
90
|
|
|
99
91
|
**Confirm before writing:**
|
|
100
|
-
Unless the user has explicitly specified where to put an entry, always confirm the inferred
|
|
92
|
+
Unless the user has explicitly specified where to put an entry, always confirm the inferred folder before creating it. For example: *"I'll save this as a document in the meridian-rebrand folder — does that sound right?"* Wait for confirmation before calling `create_entity`.
|
|
101
93
|
|
|
102
|
-
**
|
|
103
|
-
- Related to a specific project → that project's
|
|
104
|
-
- Team-wide reusable content (processes, standards) → a resource
|
|
105
|
-
- Business operations → a function
|
|
106
|
-
- Identity entries (person, organization) → wherever makes sense for the team. If the team has a dedicated
|
|
94
|
+
**Folder routing:**
|
|
95
|
+
- Related to a specific project → that project's folder
|
|
96
|
+
- Team-wide reusable content (processes, standards) → a resource folder
|
|
97
|
+
- Business operations → a function folder
|
|
98
|
+
- Identity entries (person, organization) → wherever makes sense for the team. If the team has a dedicated folder for contacts/identities, suggest that. Otherwise, put them in the relevant project folder.
|
|
107
99
|
|
|
108
|
-
**Deduplication:** Entry IDs must be unique across the entire workspace. If you try to create an entry with an ID that already exists in another
|
|
100
|
+
**Deduplication:** Entry IDs must be unique across the entire workspace. If you try to create an entry with an ID that already exists in another folder, the system will reject it. Use `[[wikilinks]]` to reference existing entries instead of recreating them.
|
|
109
101
|
|
|
110
|
-
**Helping teams organize:** When the user needs a new
|
|
102
|
+
**Helping teams organize:** When the user needs a new folder (e.g. starting a new project), guide them to create one. Folders are lightweight — don't hesitate to suggest creating a new one when it makes sense. Folders created via `create_folder` are shared team folders; the creator is granted admin. For personal-only entries use `repo: "private"` instead (every user already has a "My Entries" folder — don't create another one).
|
|
111
103
|
|
|
112
|
-
**Privacy — private
|
|
104
|
+
**Privacy — private folders vs. visibility field:**
|
|
113
105
|
|
|
114
106
|
These are two different mechanisms. Do not confuse them:
|
|
115
107
|
|
|
116
108
|
| | `repo: "private"` | `visibility: admin/restricted` |
|
|
117
109
|
|---|---|---|
|
|
118
|
-
| What it means | Saved to the user's personal "My Entries"
|
|
110
|
+
| What it means | Saved to the user's personal "My Entries" folder (local-only, never synced) | File is committed but access-controlled in the folder |
|
|
119
111
|
| Use when | "Make it private" / draft / sensitive / not ready to share | Committed file that only certain roles should see |
|
|
120
112
|
|
|
121
|
-
Every user has
|
|
113
|
+
Every user has a default private folder ("My Entries") auto-created for them. When a user says "make it private", "keep this to myself", "don't share this", or "just for me" → use `repo: "private"`. The system auto-resolves `"private"` to the current user's personal folder. Do **not** use `visibility: admin` or `visibility: restricted` as a substitute for private storage.
|
|
122
114
|
|
|
123
115
|
- If a draft or sensitive entry should stay private → `repo: "private"`
|
|
124
|
-
- When unsure, ask: *"Should this stay in your personal entries, or be added to a team
|
|
116
|
+
- When unsure, ask: *"Should this stay in your personal entries, or be added to a team folder with restricted access?"*
|
|
125
117
|
- Private entries can wikilink to public entries
|
|
126
|
-
- Use `search_entities` with `repoNames: ["private"]` to search the user's private
|
|
127
|
-
- Never suggest committing or pushing anything from a private
|
|
118
|
+
- Use `search_entities` with `repoNames: ["private"]` to search the user's private folder
|
|
119
|
+
- Never suggest committing or pushing anything from a private folder
|
|
128
120
|
|
|
129
121
|
**Entry type for generated content:**
|
|
130
|
-
-
|
|
131
|
-
- Freeform thinking, research, scratch notes → use `note
|
|
122
|
+
- Pick the most specific canonical type. Don't collapse a deck into a document, or a service into a note, just because it's simpler — the catalog has a dedicated type for each. `deck` for decks, `deliverable` for scoped client outputs, `publication` for published content, `case-study` for portfolio narratives, `service` for the firm's offerings + methodologies, `position` for open jobs, `reference` for external resources, `document` for general authored documents (proposals, briefs, memos, reports, templates, guidelines), and so on. Decisions are plain `note` entries — there is no dedicated decision type.
|
|
123
|
+
- Freeform thinking, research, scratch notes → use `note`.
|
|
124
|
+
- If captured content clearly matches a specific canonical type better than `note`, ask the user once before creating: *"This looks like a meeting — want me to save it as an Event entry?"* If the user accepts, create it as that type. (Meetings, calls, workshops, reviews, etc. all use `event` with the appropriate `type` value — `meeting` is the default.)
|
|
132
125
|
|
|
133
126
|
**Content format:**
|
|
134
127
|
- Text content → markdown body of the entry
|
|
135
128
|
- Binary or externally-hosted files → `url` field pointing to R2 URL or local path
|
|
136
129
|
|
|
130
|
+
## Folder Management
|
|
131
|
+
|
|
132
|
+
Repos can hold nested subfolders that organise entries Drive/Finder-style. The Folder Inventory section below lists every repo's existing subfolders — consult it before deciding where things go.
|
|
133
|
+
|
|
134
|
+
**Routing rules:**
|
|
135
|
+
- **Prefer existing folders.** If the inventory already shows a folder that fits, use its path on `create_entity` via `folder_path`. Don't create a near-duplicate ("clients/acme" vs "Clients/Acme") — match the existing slug exactly.
|
|
136
|
+
- **Default to root.** If no existing folder fits and the repo's organising style is flat, leave `folder_path` off. Suggesting a folder is fine; unilaterally creating one is not.
|
|
137
|
+
- **Mirror the user's style.** Heavily nested repo → use subfolders. Flat repo → leave at root. Don't impose structure on a repo that doesn't have one.
|
|
138
|
+
- **Default to the active folder context.** When the user's `[Currently viewing folder: ...]` marker points inside a subfolder, route new entries to that subfolder unless they say otherwise.
|
|
139
|
+
|
|
140
|
+
**Restraint rules (read carefully):**
|
|
141
|
+
- **Never reorganise, rename, or delete existing folders or entries without an explicit user request.** Cleaning up someone else's filing system is a high-trust action. Wait to be asked.
|
|
142
|
+
- For destructive operations (`delete_folder`, `rename_folder`, `move_entity`, `transfer_entity`), confirm with the user first. State what will move and roughly how much:
|
|
143
|
+
- Delete: *"Delete folder `clients/acme` and everything inside it (14 entries, 3 subfolders)?"*
|
|
144
|
+
- Rename: *"Rename `clients/acme` → `clients/acme-corp` and update path of 14 entries?"*
|
|
145
|
+
- Move entry (same repo): *"Move 'Q1 Standup' from `inbox` to `clients/acme/meetings`?"*
|
|
146
|
+
- Transfer entry (across repos): *"Transfer 'Q1 Standup' from `inbox` to the `clients` folder?"*
|
|
147
|
+
- `delete_folder` defaults to non-recursive. The first call on a non-empty folder returns a `blast_radius` payload — present it to the user, get confirmation, then re-invoke with `recursive: true`. Never pass `recursive: true` on the first attempt.
|
|
148
|
+
- `create_folder` is fine without confirmation when it's clearly the right structural move (e.g. user said "set up a folder for the Acme work"). Otherwise propose first.
|
|
149
|
+
- `list_folders(repo)` is read-only — call it freely when you need to verify what exists in a repo before placing new entries or proposing a folder change.
|
|
150
|
+
|
|
151
|
+
## Git History
|
|
152
|
+
|
|
153
|
+
Every workspace folder is a git repository. The history tools let you answer "what changed", "what did I delete", and "bring that back" without leaving the conversation.
|
|
154
|
+
|
|
155
|
+
**Discovery first.** When the user says *"what changed yesterday"*, *"what did I delete"*, *"undo"*, *"restore"*, or *"bring back"* — call `list_recent_deletions(repo)` or `list_folder_history(repo)` before guessing. Never invent a commit hash; always read it from one of these tools.
|
|
156
|
+
|
|
157
|
+
**Read tools (always safe):**
|
|
158
|
+
- `list_file_history(repo, entityType, entityId)` — commits that touched one entry. Works for existing AND recently-deleted entries (30-day deletion lookup).
|
|
159
|
+
- `list_folder_history(repo)` — recent commits across a whole folder.
|
|
160
|
+
- `list_recent_deletions(repo, withinDays?)` — entries deleted within the last N days. The discovery primitive; surfaces the `lastVersionCommit` you'll pass to `restore_file`.
|
|
161
|
+
- `read_file_at_commit(repo, entityType, entityId, commitHash)` — full content at a past commit. Use to preview what `restore_file` would put back.
|
|
162
|
+
- `get_entity_diff(repo, entityType, entityId, fromCommit, toCommit?)` — unified diff between two commits.
|
|
163
|
+
|
|
164
|
+
**Write tool — preview-then-confirm:**
|
|
165
|
+
- `restore_file(repo, entityType, entityId, commitHash)` — first call returns a `PREVIEW_REQUIRED` payload (action: recreate / overwrite, target path, size). Present that to the user verbatim. Re-invoke with `confirm: true` ONLY after explicit approval.
|
|
166
|
+
- A `PATH_CONFLICT` payload means the recreate target is now occupied by a different entry. Tell the user who's there and ask how to resolve.
|
|
167
|
+
|
|
168
|
+
**Restraint:**
|
|
169
|
+
- Restore only the entry the user named. There is no multi-entity rollback tool yet — if the user wants to revert several entries at once, restore each one individually after confirming each.
|
|
170
|
+
- Never restore without a preview-then-confirm round-trip, even for clearly-recent deletions. The cost of asking is low; the cost of restoring the wrong version is high.
|
|
171
|
+
|
|
172
|
+
## User-Facing Input Surfaces
|
|
173
|
+
|
|
174
|
+
The user can give you new information through several routes. When asked
|
|
175
|
+
*"how do I add content?"*, *"how can I give you more information?"*, or
|
|
176
|
+
similar discovery questions, mention these explicitly by their visible UI
|
|
177
|
+
labels — not by internal names — so the user can find them on screen:
|
|
178
|
+
|
|
179
|
+
- **The chat panel** (where you're talking now) — they can type, paste
|
|
180
|
+
text, or paste URLs. You'll extract entries from what they send.
|
|
181
|
+
- **The "Add to your workspace" input** — a prominent input box on the
|
|
182
|
+
home screen, labeled exactly **"Add to your workspace"**. It accepts
|
|
183
|
+
pasted URLs, pasted text, or dropped files (PDFs, documents, notes).
|
|
184
|
+
Anything dropped there is captured into the graph the same way as chat
|
|
185
|
+
input. Refer to it by that exact label so a user who hasn't found it
|
|
186
|
+
yet can locate it on screen.
|
|
187
|
+
- **Meeting capture** (when enabled) — for live or recorded meetings.
|
|
188
|
+
|
|
189
|
+
Do not invent surfaces that don't exist (no "Quick Capture" branding,
|
|
190
|
+
no "Import" menu, no "Upload" button on the chat panel). Stick to the
|
|
191
|
+
three above.
|
|
192
|
+
|
|
137
193
|
## Interaction Patterns
|
|
138
194
|
|
|
139
195
|
**When creating entries:**
|
|
@@ -158,13 +214,13 @@ Every user has exactly one private collection ("My Entries") auto-created for th
|
|
|
158
214
|
|
|
159
215
|
You have access to tools in the following categories:
|
|
160
216
|
|
|
161
|
-
**Entry Management** — CRUD operations on knowledge graph entries, wikilink traversal, search, schema queries,
|
|
217
|
+
**Entry Management** — CRUD operations on knowledge graph entries, wikilink traversal, search, schema queries, and linting.
|
|
162
218
|
|
|
163
219
|
**External Connectors** — Query external services (Linear, Slack, Pipedrive, Granola, etc.) on demand via `connector_list` and `connector_call`. Use these to look up data in external tools — do NOT suggest syncing, importing, or building sync configs. Connectors are for live queries only.
|
|
164
220
|
|
|
165
|
-
**Workspace Git** — Check uncommitted changes, review diffs, and commit across all workspace
|
|
221
|
+
**Workspace Git** — Check uncommitted changes, review diffs, and commit across all workspace folders. Use these when users ask about pending changes or want to commit.
|
|
166
222
|
|
|
167
|
-
**Skills** — Load domain-specific guidance on demand (see "Available Skills" below).
|
|
223
|
+
**Skills** — Load domain-specific guidance on demand (see "Available Skills" below). Users can author their own skills as `skill` entries in any folder — the entity id is the skill name, `description` and `loading` are frontmatter fields, and the markdown body is the instructions. Personal skills go in the user's private folder; team skills go in shared folders.
|
|
168
224
|
|
|
169
225
|
### Tool Selection
|
|
170
226
|
|
|
@@ -187,6 +243,7 @@ When you have a workspace briefing in your context:
|
|
|
187
243
|
- If nothing is urgent: "Things look stable. Your [project] is on track."
|
|
188
244
|
- If the user dismisses something, acknowledge it and move on. The dismissal will be reflected in the next briefing via your memory.
|
|
189
245
|
- Never recite the full briefing. Pick 1-3 items based on urgency.
|
|
246
|
+
- **Don't repeat the user's greeting.** If the user's message starts with "Good morning/afternoon/evening", they've already greeted themselves — you greet them at most once in the entire response. If you emit a preamble before tool calls (e.g. "Let me take a quick look..."), the final response after the tools must NOT greet again; skip straight to the substance.
|
|
190
247
|
|
|
191
248
|
## Follow-Up Suggestions
|
|
192
249
|
|
|
@@ -196,12 +253,14 @@ At the end of every response, include exactly 3 contextual follow-up prompts. Fo
|
|
|
196
253
|
|
|
197
254
|
Rules:
|
|
198
255
|
- Specific to the conversation, not generic
|
|
199
|
-
- Each prompt is a complete sentence the user could send as
|
|
256
|
+
- Each prompt is a complete sentence the user could send **as-is** — no placeholder syntax like `[name]`, `[role]`, `{project}`, or `<topic>`. If you don't know the value, don't include that suggestion; the user shouldn't have to edit the prompt before clicking it.
|
|
257
|
+
- Only suggest actions the tools can actually perform. Don't offer PDF export, slide export, printing, emailing, publishing, deck generation, or any other output format Studiograph doesn't produce. When in doubt, stick to search / read / create-entry / update-entry / link / summarise.
|
|
200
258
|
- After creating/updating entries: suggest exploring relationships, adding detail, or related actions
|
|
201
|
-
- In interview/building mode: suggest continuing with next topic or deepening what was discussed
|
|
202
259
|
- One suggestion may be an action ("Create a project entry for X") rather than a question
|
|
203
260
|
- Keep each under 60 characters
|
|
204
|
-
-
|
|
261
|
+
- During onboarding interview: omit the followups comment entirely — the UI handles suggestions
|
|
262
|
+
- Exception: if the user defers onboarding ("I'll finish this later", "come back to this", etc.), include exactly one suggestion: "Continue where I left off"
|
|
263
|
+
- Always include this comment in all other contexts, even after short responses
|
|
205
264
|
|
|
206
265
|
## Remember
|
|
207
266
|
|
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Skill Loader — prompt skills for the Studiograph agent.
|
|
3
3
|
*
|
|
4
|
-
* Skills
|
|
5
|
-
* knowledge into the agent's system prompt. Two formats supported:
|
|
4
|
+
* Skills come from two sources:
|
|
6
5
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
6
|
+
* 1. Bundled filesystem skills — shipped with the app. Two formats:
|
|
7
|
+
* Directory skill: skills/create-deck/skill.md (+ optional sub-files)
|
|
8
|
+
* Single-file skill: skills/quick-tip.md
|
|
9
|
+
* Frontmatter fields: name, description, loading ("eager" | "on-demand").
|
|
11
10
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* loading: "on-demand" (default) | "eager" (inlined in system prompt)
|
|
11
|
+
* 2. Graph skills — authored by users as `skill` entities in any folder
|
|
12
|
+
* (personal or shared). The entity id IS the skill name; `description`
|
|
13
|
+
* and `loading` are frontmatter fields; the body markdown is the
|
|
14
|
+
* instruction content. Graph skills use a `graph://<repo>/<id>`
|
|
15
|
+
* entrypoint sentinel and are resolved via an optional graphResolver
|
|
16
|
+
* callback passed to `loadSkillContent` / `loadEagerSkills`.
|
|
19
17
|
*/
|
|
20
18
|
export interface SkillMeta {
|
|
21
19
|
name: string;
|
|
@@ -31,18 +29,33 @@ export interface SkillMeta {
|
|
|
31
29
|
* so workspace-level skills override app-bundled skills.
|
|
32
30
|
*/
|
|
33
31
|
export declare function loadSkillIndex(skillsDirs: string[]): SkillMeta[];
|
|
32
|
+
/** Resolver callback that loads a graph-authored skill's body by (repo, id). */
|
|
33
|
+
export type GraphSkillResolver = (repo: string, id: string) => string;
|
|
34
|
+
/**
|
|
35
|
+
* Parse a `graph://<repo>/<id>` entrypoint into its components.
|
|
36
|
+
* Returns null for filesystem paths.
|
|
37
|
+
*/
|
|
38
|
+
export declare function parseGraphSkillEntrypoint(entrypoint: string): {
|
|
39
|
+
repo: string;
|
|
40
|
+
id: string;
|
|
41
|
+
} | null;
|
|
34
42
|
/**
|
|
35
43
|
* Load the full content of a skill's entrypoint or a named sub-file.
|
|
36
|
-
* Sanitises the file parameter to prevent path traversal.
|
|
44
|
+
* Sanitises the file parameter to prevent path traversal. Graph-authored
|
|
45
|
+
* skills route through the provided resolver; filesystem skills read from
|
|
46
|
+
* disk.
|
|
37
47
|
*/
|
|
38
|
-
export declare function loadSkillContent(meta: SkillMeta, file?: string): string;
|
|
48
|
+
export declare function loadSkillContent(meta: SkillMeta, file?: string, graphResolver?: GraphSkillResolver): string;
|
|
39
49
|
/**
|
|
40
50
|
* Build the skill index section to append to the system prompt.
|
|
41
51
|
* Eager skills are inlined separately; this lists only on-demand skills.
|
|
42
52
|
*/
|
|
43
53
|
export declare function buildSkillIndexPrompt(skills: SkillMeta[]): string;
|
|
54
|
+
/** Cap on total eager-skill content inlined into the system prompt. */
|
|
55
|
+
export declare const EAGER_SKILL_BYTE_CAP = 20000;
|
|
44
56
|
/**
|
|
45
57
|
* Return the full content of all eager skills, to be injected directly
|
|
46
|
-
* into the system prompt at startup.
|
|
58
|
+
* into the system prompt at startup. Respects `EAGER_SKILL_BYTE_CAP` —
|
|
59
|
+
* skills beyond the cap are dropped with a warning to stderr.
|
|
47
60
|
*/
|
|
48
|
-
export declare function loadEagerSkills(skills: SkillMeta[]): string;
|
|
61
|
+
export declare function loadEagerSkills(skills: SkillMeta[], graphResolver?: GraphSkillResolver): string;
|
|
@@ -1,26 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Skill Loader — prompt skills for the Studiograph agent.
|
|
3
3
|
*
|
|
4
|
-
* Skills
|
|
5
|
-
* knowledge into the agent's system prompt. Two formats supported:
|
|
4
|
+
* Skills come from two sources:
|
|
6
5
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
6
|
+
* 1. Bundled filesystem skills — shipped with the app. Two formats:
|
|
7
|
+
* Directory skill: skills/create-deck/skill.md (+ optional sub-files)
|
|
8
|
+
* Single-file skill: skills/quick-tip.md
|
|
9
|
+
* Frontmatter fields: name, description, loading ("eager" | "on-demand").
|
|
11
10
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* loading: "on-demand" (default) | "eager" (inlined in system prompt)
|
|
11
|
+
* 2. Graph skills — authored by users as `skill` entities in any folder
|
|
12
|
+
* (personal or shared). The entity id IS the skill name; `description`
|
|
13
|
+
* and `loading` are frontmatter fields; the body markdown is the
|
|
14
|
+
* instruction content. Graph skills use a `graph://<repo>/<id>`
|
|
15
|
+
* entrypoint sentinel and are resolved via an optional graphResolver
|
|
16
|
+
* callback passed to `loadSkillContent` / `loadEagerSkills`.
|
|
19
17
|
*/
|
|
20
18
|
import { existsSync, readdirSync, readFileSync } from 'fs';
|
|
21
19
|
import { join, extname, basename } from 'path';
|
|
22
|
-
// Skills gated for MVP — re-enable when sync pipeline is production-ready
|
|
23
|
-
const GATED_SKILLS = new Set(['sync-setup', 'sync-configuration', 'enrich-entities', 'obsidian-source-setup']);
|
|
24
20
|
/**
|
|
25
21
|
* Minimal YAML frontmatter parser — handles the subset used by skills.
|
|
26
22
|
*/
|
|
@@ -70,9 +66,6 @@ export function loadSkillIndex(skillsDirs) {
|
|
|
70
66
|
const content = readFileSync(skillMd, 'utf-8');
|
|
71
67
|
const { meta } = parseFrontmatter(content);
|
|
72
68
|
const name = meta.name || entry;
|
|
73
|
-
// Skip sync/enrich skills for MVP
|
|
74
|
-
if (GATED_SKILLS.has(name))
|
|
75
|
-
continue;
|
|
76
69
|
if (!seen.has(name)) {
|
|
77
70
|
seen.add(name);
|
|
78
71
|
skills.push({
|
|
@@ -99,9 +92,6 @@ export function loadSkillIndex(skillsDirs) {
|
|
|
99
92
|
if (!meta.name && !meta.description)
|
|
100
93
|
continue;
|
|
101
94
|
const name = meta.name || basename(entry, '.md');
|
|
102
|
-
// Skip sync/enrich skills for MVP
|
|
103
|
-
if (GATED_SKILLS.has(name))
|
|
104
|
-
continue;
|
|
105
95
|
if (!seen.has(name)) {
|
|
106
96
|
seen.add(name);
|
|
107
97
|
skills.push({
|
|
@@ -122,11 +112,37 @@ export function loadSkillIndex(skillsDirs) {
|
|
|
122
112
|
}
|
|
123
113
|
return skills;
|
|
124
114
|
}
|
|
115
|
+
const GRAPH_PREFIX = 'graph://';
|
|
116
|
+
/**
|
|
117
|
+
* Parse a `graph://<repo>/<id>` entrypoint into its components.
|
|
118
|
+
* Returns null for filesystem paths.
|
|
119
|
+
*/
|
|
120
|
+
export function parseGraphSkillEntrypoint(entrypoint) {
|
|
121
|
+
if (!entrypoint.startsWith(GRAPH_PREFIX))
|
|
122
|
+
return null;
|
|
123
|
+
const rest = entrypoint.slice(GRAPH_PREFIX.length);
|
|
124
|
+
const slash = rest.indexOf('/');
|
|
125
|
+
if (slash === -1)
|
|
126
|
+
return null;
|
|
127
|
+
return { repo: rest.slice(0, slash), id: rest.slice(slash + 1) };
|
|
128
|
+
}
|
|
125
129
|
/**
|
|
126
130
|
* Load the full content of a skill's entrypoint or a named sub-file.
|
|
127
|
-
* Sanitises the file parameter to prevent path traversal.
|
|
131
|
+
* Sanitises the file parameter to prevent path traversal. Graph-authored
|
|
132
|
+
* skills route through the provided resolver; filesystem skills read from
|
|
133
|
+
* disk.
|
|
128
134
|
*/
|
|
129
|
-
export function loadSkillContent(meta, file) {
|
|
135
|
+
export function loadSkillContent(meta, file, graphResolver) {
|
|
136
|
+
const graph = parseGraphSkillEntrypoint(meta.entrypoint);
|
|
137
|
+
if (graph) {
|
|
138
|
+
if (file) {
|
|
139
|
+
return `Error: skill "${meta.name}" is a graph skill and has no sub-files. Use wikilinks in the skill body to reference other entries.`;
|
|
140
|
+
}
|
|
141
|
+
if (!graphResolver) {
|
|
142
|
+
return `Error: cannot load graph skill "${meta.name}" — no resolver provided.`;
|
|
143
|
+
}
|
|
144
|
+
return graphResolver(graph.repo, graph.id);
|
|
145
|
+
}
|
|
130
146
|
if (file) {
|
|
131
147
|
if (!meta.isDirectory) {
|
|
132
148
|
return `Error: skill "${meta.name}" is a single-file skill with no sub-files.`;
|
|
@@ -152,23 +168,40 @@ export function buildSkillIndexPrompt(skills) {
|
|
|
152
168
|
const onDemand = skills.filter(s => s.loading === 'on-demand');
|
|
153
169
|
if (onDemand.length === 0)
|
|
154
170
|
return '';
|
|
171
|
+
const formatSource = (dir) => {
|
|
172
|
+
const graph = parseGraphSkillEntrypoint(dir + '/');
|
|
173
|
+
return graph ? ` _(folder: ${graph.repo})_` : '';
|
|
174
|
+
};
|
|
155
175
|
const lines = [
|
|
156
176
|
'## Available Skills',
|
|
157
177
|
'',
|
|
158
178
|
'Call `load_skill` to load domain-specific guidance when it is relevant to the current task.',
|
|
159
179
|
'',
|
|
160
|
-
...onDemand.map(s => `- **${s.name}
|
|
180
|
+
...onDemand.map(s => `- **${s.name}**${formatSource(s.dir)} — ${s.description}`),
|
|
161
181
|
];
|
|
162
182
|
return lines.join('\n');
|
|
163
183
|
}
|
|
184
|
+
/** Cap on total eager-skill content inlined into the system prompt. */
|
|
185
|
+
export const EAGER_SKILL_BYTE_CAP = 20_000;
|
|
164
186
|
/**
|
|
165
187
|
* Return the full content of all eager skills, to be injected directly
|
|
166
|
-
* into the system prompt at startup.
|
|
188
|
+
* into the system prompt at startup. Respects `EAGER_SKILL_BYTE_CAP` —
|
|
189
|
+
* skills beyond the cap are dropped with a warning to stderr.
|
|
167
190
|
*/
|
|
168
|
-
export function loadEagerSkills(skills) {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
191
|
+
export function loadEagerSkills(skills, graphResolver) {
|
|
192
|
+
const pieces = [];
|
|
193
|
+
let total = 0;
|
|
194
|
+
for (const skill of skills.filter(s => s.loading === 'eager')) {
|
|
195
|
+
const content = loadSkillContent(skill, undefined, graphResolver);
|
|
196
|
+
if (total + content.length > EAGER_SKILL_BYTE_CAP) {
|
|
197
|
+
if (process.env.STUDIOGRAPH_VERBOSE === '1') {
|
|
198
|
+
console.warn(`[skill-loader] eager skill "${skill.name}" dropped — cap ${EAGER_SKILL_BYTE_CAP}B reached.`);
|
|
199
|
+
}
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
202
|
+
pieces.push(content);
|
|
203
|
+
total += content.length;
|
|
204
|
+
}
|
|
205
|
+
return pieces.join('\n\n---\n\n');
|
|
173
206
|
}
|
|
174
207
|
//# sourceMappingURL=skill-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-loader.js","sourceRoot":"","sources":["../../src/agent/skill-loader.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"skill-loader.js","sourceRoot":"","sources":["../../src/agent/skill-loader.ts"],"names":[],"mappings":"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"}
|