studiograph 1.3.47 → 1.3.48-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -16
- package/dist/agent/agent-pool.d.ts +117 -0
- package/dist/agent/agent-pool.js +287 -0
- package/dist/agent/agent-pool.js.map +1 -0
- 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 +113 -22
- package/dist/agent/orchestrator.js +573 -181
- package/dist/agent/orchestrator.js.map +1 -1
- package/dist/agent/prompts/entity-types-section.d.ts +36 -0
- package/dist/agent/prompts/entity-types-section.js +90 -0
- package/dist/agent/prompts/entity-types-section.js.map +1 -0
- package/dist/agent/prompts/system.md +148 -69
- 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 +77 -433
- package/dist/agent/skills/interview/entity-templates.md +193 -0
- package/dist/agent/skills/interview/question-domains.md +391 -0
- package/dist/agent/skills/interview/skill.md +204 -0
- package/dist/agent/skills/schema-rules.md +54 -0
- 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 +7 -6
- package/dist/agent/tools/fs-tools.js +5 -4
- package/dist/agent/tools/fs-tools.js.map +1 -1
- package/dist/agent/tools/graph-tools.d.ts +21 -58
- package/dist/agent/tools/graph-tools.js +635 -332
- 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/ops-tools.d.ts +5 -4
- package/dist/agent/tools/ops-tools.js +130 -236
- package/dist/agent/tools/ops-tools.js.map +1 -1
- package/dist/agent/tools/permission-tools.d.ts +87 -17
- package/dist/agent/tools/permission-tools.js +233 -38
- 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.d.ts +18 -0
- package/dist/agent/tools/web-tools.js +283 -0
- package/dist/agent/tools/web-tools.js.map +1 -0
- 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/admin/audit-workspace.d.ts +23 -0
- package/dist/cli/commands/admin/audit-workspace.js +133 -0
- package/dist/cli/commands/admin/audit-workspace.js.map +1 -0
- package/dist/cli/commands/admin/audit.d.ts +21 -0
- package/dist/cli/commands/admin/audit.js +174 -0
- package/dist/cli/commands/admin/audit.js.map +1 -0
- package/dist/cli/commands/admin/backup.d.ts +54 -0
- package/dist/cli/commands/admin/backup.js +207 -0
- package/dist/cli/commands/admin/backup.js.map +1 -0
- package/dist/cli/commands/admin/folder.d.ts +11 -0
- package/dist/cli/commands/admin/folder.js +186 -0
- package/dist/cli/commands/admin/folder.js.map +1 -0
- package/dist/cli/commands/admin/index.d.ts +16 -0
- package/dist/cli/commands/admin/index.js +46 -0
- package/dist/cli/commands/admin/index.js.map +1 -0
- package/dist/cli/commands/admin/migrate-assets.d.ts +53 -0
- package/dist/cli/commands/admin/migrate-assets.js +184 -0
- package/dist/cli/commands/admin/migrate-assets.js.map +1 -0
- package/dist/cli/commands/admin/migrate.d.ts +56 -0
- package/dist/cli/commands/admin/migrate.js +263 -0
- package/dist/cli/commands/admin/migrate.js.map +1 -0
- package/dist/cli/commands/admin/restore.d.ts +24 -0
- package/dist/cli/commands/admin/restore.js +228 -0
- package/dist/cli/commands/admin/restore.js.map +1 -0
- package/dist/cli/commands/admin/secrets.d.ts +23 -0
- package/dist/cli/commands/admin/secrets.js +256 -0
- package/dist/cli/commands/admin/secrets.js.map +1 -0
- package/dist/cli/commands/admin/settings.d.ts +28 -0
- package/dist/cli/commands/admin/settings.js +284 -0
- package/dist/cli/commands/admin/settings.js.map +1 -0
- package/dist/cli/commands/admin/token.d.ts +42 -0
- package/dist/cli/commands/admin/token.js +126 -0
- package/dist/cli/commands/admin/token.js.map +1 -0
- package/dist/cli/commands/admin/transfer-ownership.d.ts +15 -0
- package/dist/cli/commands/admin/transfer-ownership.js +106 -0
- package/dist/cli/commands/admin/transfer-ownership.js.map +1 -0
- package/dist/cli/commands/admin/user.d.ts +11 -0
- package/dist/cli/commands/admin/user.js +187 -0
- package/dist/cli/commands/admin/user.js.map +1 -0
- package/dist/cli/commands/clone.d.ts +25 -3
- package/dist/cli/commands/clone.js +142 -36
- package/dist/cli/commands/clone.js.map +1 -1
- package/dist/cli/commands/commit.d.ts +1 -1
- package/dist/cli/commands/commit.js +24 -11
- package/dist/cli/commands/commit.js.map +1 -1
- package/dist/cli/commands/config.d.ts +23 -107
- package/dist/cli/commands/config.js +52 -260
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/connector.d.ts +10 -13
- package/dist/cli/commands/connector.js +16 -58
- package/dist/cli/commands/connector.js.map +1 -1
- package/dist/cli/commands/deploy.js +215 -68
- package/dist/cli/commands/deploy.js.map +1 -1
- package/dist/cli/commands/index.js +2 -2
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.js +10 -30
- package/dist/cli/commands/init.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/orphans.js +14 -30
- package/dist/cli/commands/orphans.js.map +1 -1
- package/dist/cli/commands/r2.d.ts +3 -0
- package/dist/cli/commands/r2.js +223 -204
- package/dist/cli/commands/r2.js.map +1 -1
- package/dist/cli/commands/redeploy.js +65 -12
- package/dist/cli/commands/redeploy.js.map +1 -1
- package/dist/cli/commands/reset.d.ts +22 -6
- package/dist/cli/commands/reset.js +142 -63
- package/dist/cli/commands/reset.js.map +1 -1
- package/dist/cli/commands/serve.js +209 -24
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/sync.d.ts +1 -1
- package/dist/cli/commands/sync.js +372 -202
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/crypto-bundle.d.ts +39 -0
- package/dist/cli/crypto-bundle.js +94 -0
- package/dist/cli/crypto-bundle.js.map +1 -0
- package/dist/cli/index.js +24 -35
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/railway-pin.d.ts +68 -0
- package/dist/cli/railway-pin.js +96 -0
- package/dist/cli/railway-pin.js.map +1 -0
- 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/setup-wizard.d.ts +33 -52
- package/dist/cli/setup-wizard.js +43 -68
- 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/cell-anchor.d.ts +29 -0
- package/dist/core/cell-anchor.js +53 -0
- package/dist/core/cell-anchor.js.map +1 -0
- package/dist/core/comment-anchor.d.ts +41 -0
- package/dist/core/comment-anchor.js +147 -0
- package/dist/core/comment-anchor.js.map +1 -0
- package/dist/core/commit-messages.d.ts +57 -0
- package/dist/core/commit-messages.js +85 -0
- package/dist/core/commit-messages.js.map +1 -0
- package/dist/core/embeds.d.ts +56 -0
- package/dist/core/embeds.js +103 -0
- package/dist/core/embeds.js.map +1 -0
- package/dist/core/entity-body-templates.d.ts +21 -0
- package/dist/core/entity-body-templates.js +53 -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 +140 -0
- package/dist/core/entity-types-catalog.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 +36 -0
- package/dist/core/folder-sidecar.js +91 -0
- package/dist/core/folder-sidecar.js.map +1 -0
- package/dist/core/graph.d.ts +675 -14
- package/dist/core/graph.js +2118 -314
- package/dist/core/graph.js.map +1 -1
- package/dist/core/history-diff.d.ts +35 -0
- package/dist/core/history-diff.js +114 -0
- package/dist/core/history-diff.js.map +1 -0
- package/dist/core/schema-registry.d.ts +59 -0
- package/dist/core/schema-registry.js +198 -0
- 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 +90 -0
- package/dist/core/secrets/SqliteEncryptedStore.js +598 -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 +81 -0
- package/dist/core/secrets/dual-write.js +247 -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/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/r2-structural-migration.d.ts +39 -0
- package/dist/core/secrets/r2-structural-migration.js +109 -0
- package/dist/core/secrets/r2-structural-migration.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 +598 -0
- package/dist/core/secrets/registry.js.map +1 -0
- package/dist/core/types.d.ts +77 -455
- package/dist/core/types.js +17 -3
- package/dist/core/types.js.map +1 -1
- package/dist/core/user-config.d.ts +75 -7
- package/dist/core/user-config.js +155 -7
- package/dist/core/user-config.js.map +1 -1
- package/dist/core/validation.d.ts +717 -1791
- package/dist/core/validation.js +357 -228
- package/dist/core/validation.js.map +1 -1
- package/dist/core/workspace-manager.d.ts +79 -12
- package/dist/core/workspace-manager.js +213 -73
- package/dist/core/workspace-manager.js.map +1 -1
- package/dist/core/workspace.d.ts +19 -5
- package/dist/core/workspace.js +69 -35
- package/dist/core/workspace.js.map +1 -1
- package/dist/mcp/comment-virtual-entity.d.ts +36 -0
- package/dist/mcp/comment-virtual-entity.js +71 -0
- package/dist/mcp/comment-virtual-entity.js.map +1 -0
- package/dist/mcp/connector-manager.d.ts +94 -13
- package/dist/mcp/connector-manager.js +283 -62
- package/dist/mcp/connector-manager.js.map +1 -1
- package/dist/mcp/oauth-provider.d.ts +27 -33
- package/dist/mcp/oauth-provider.js +65 -134
- package/dist/mcp/oauth-provider.js.map +1 -1
- package/dist/mcp/oauth-registry.d.ts +62 -0
- package/dist/mcp/oauth-registry.js +85 -0
- package/dist/mcp/oauth-registry.js.map +1 -0
- 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/state-signer.d.ts +41 -0
- package/dist/mcp/state-signer.js +120 -0
- package/dist/mcp/state-signer.js.map +1 -0
- package/dist/mcp/tools.d.ts +35 -2
- package/dist/mcp/tools.js +1051 -117
- 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/body-write-coordinator.d.ts +151 -0
- package/dist/server/body-write-coordinator.js +161 -0
- package/dist/server/body-write-coordinator.js.map +1 -0
- package/dist/server/cloud-billing-flow.d.ts +32 -0
- package/dist/server/cloud-billing-flow.js +75 -0
- package/dist/server/cloud-billing-flow.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 +451 -193
- 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.d.ts +10 -0
- package/dist/server/routes/asset-api.js +294 -0
- package/dist/server/routes/asset-api.js.map +1 -0
- 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.d.ts +3 -2
- package/dist/server/routes/auth-api.js +519 -38
- package/dist/server/routes/auth-api.js.map +1 -1
- package/dist/server/routes/capture-api.d.ts +18 -0
- package/dist/server/routes/capture-api.js +257 -0
- package/dist/server/routes/capture-api.js.map +1 -0
- package/dist/server/routes/chat.d.ts +4 -1
- package/dist/server/routes/chat.js +298 -88
- package/dist/server/routes/chat.js.map +1 -1
- package/dist/server/routes/comments-api.d.ts +15 -0
- package/dist/server/routes/comments-api.js +444 -0
- package/dist/server/routes/comments-api.js.map +1 -0
- 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.d.ts +17 -0
- package/dist/server/routes/connectors-api.js +410 -0
- package/dist/server/routes/connectors-api.js.map +1 -0
- 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/git-http.d.ts +3 -3
- package/dist/server/routes/git-http.js +86 -38
- 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 +105 -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 +1321 -263
- 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.d.ts +1 -2
- package/dist/server/routes/insights-api.js +149 -41
- package/dist/server/routes/insights-api.js.map +1 -1
- package/dist/server/routes/mcp.d.ts +7 -3
- package/dist/server/routes/mcp.js +22 -6
- package/dist/server/routes/mcp.js.map +1 -1
- package/dist/server/routes/permissions-api.d.ts +9 -2
- package/dist/server/routes/permissions-api.js +87 -30
- package/dist/server/routes/permissions-api.js.map +1 -1
- package/dist/server/routes/r2-api.d.ts +25 -0
- package/dist/server/routes/r2-api.js +276 -0
- package/dist/server/routes/r2-api.js.map +1 -0
- 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/url-api.d.ts +7 -0
- package/dist/server/routes/url-api.js +74 -0
- package/dist/server/routes/url-api.js.map +1 -0
- package/dist/server/routes/views-api.js +81 -7
- package/dist/server/routes/views-api.js.map +1 -1
- package/dist/server/routes/workspace-api.d.ts +2 -1
- package/dist/server/routes/workspace-api.js +124 -35
- package/dist/server/routes/workspace-api.js.map +1 -1
- package/dist/server/routes/ws.d.ts +2 -1
- package/dist/server/routes/ws.js +64 -16
- package/dist/server/routes/ws.js.map +1 -1
- package/dist/server/session-manager.d.ts +48 -5
- package/dist/server/session-manager.js +182 -15
- package/dist/server/session-manager.js.map +1 -1
- package/dist/server/ws-hub.d.ts +138 -14
- package/dist/server/ws-hub.js +0 -0
- package/dist/server/ws-hub.js.map +1 -1
- package/dist/server/yjs-manager.d.ts +285 -7
- package/dist/server/yjs-manager.js +907 -36
- package/dist/server/yjs-manager.js.map +1 -1
- package/dist/server/yjs-persistence.d.ts +165 -0
- package/dist/server/yjs-persistence.js +557 -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 +73 -0
- package/dist/services/access-control.js +146 -0
- package/dist/services/access-control.js.map +1 -0
- package/dist/services/asset-listing.d.ts +39 -0
- package/dist/services/asset-listing.js +125 -0
- package/dist/services/asset-listing.js.map +1 -0
- package/dist/services/asset-upload-service.d.ts +53 -0
- package/dist/services/asset-upload-service.js +201 -0
- package/dist/services/asset-upload-service.js.map +1 -0
- package/dist/services/assets/asset-index-service.d.ts +82 -0
- package/dist/services/assets/asset-index-service.js +167 -0
- package/dist/services/assets/asset-index-service.js.map +1 -0
- package/dist/services/assets/base.d.ts +44 -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 +69 -1
- package/dist/services/assets/index.js +125 -0
- package/dist/services/assets/index.js.map +1 -1
- package/dist/services/assets/local.d.ts +12 -1
- package/dist/services/assets/local.js +100 -1
- package/dist/services/assets/local.js.map +1 -1
- package/dist/services/assets/r2-sync.d.ts +88 -0
- package/dist/services/assets/r2-sync.js +412 -0
- package/dist/services/assets/r2-sync.js.map +1 -0
- package/dist/services/assets/r2.d.ts +34 -1
- package/dist/services/assets/r2.js +93 -1
- package/dist/services/assets/r2.js.map +1 -1
- package/dist/services/auth-service.d.ts +314 -36
- package/dist/services/auth-service.js +1126 -139
- package/dist/services/auth-service.js.map +1 -1
- package/dist/services/bookmark-import-service.d.ts +49 -0
- package/dist/services/bookmark-import-service.js +250 -0
- package/dist/services/bookmark-import-service.js.map +1 -0
- package/dist/services/cloud-inference-billing.d.ts +64 -0
- package/dist/services/cloud-inference-billing.js +313 -0
- package/dist/services/cloud-inference-billing.js.map +1 -0
- package/dist/services/comment-service.d.ts +97 -0
- package/dist/services/comment-service.js +341 -0
- package/dist/services/comment-service.js.map +1 -0
- package/dist/services/csv-service.d.ts +22 -17
- package/dist/services/csv-service.js +55 -92
- package/dist/services/csv-service.js.map +1 -1
- package/dist/services/entity-mutations.d.ts +161 -0
- package/dist/services/entity-mutations.js +296 -0
- package/dist/services/entity-mutations.js.map +1 -0
- package/dist/services/event-processor.d.ts +104 -0
- package/dist/services/event-processor.js +441 -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 +54 -0
- package/dist/services/git.js +188 -54
- package/dist/services/git.js.map +1 -1
- package/dist/services/graph-maintenance.d.ts +42 -0
- package/dist/services/graph-maintenance.js +143 -0
- package/dist/services/graph-maintenance.js.map +1 -0
- package/dist/services/import-service.d.ts +45 -2
- package/dist/services/import-service.js +304 -100
- package/dist/services/import-service.js.map +1 -1
- package/dist/services/lint-service.js +9 -16
- package/dist/services/lint-service.js.map +1 -1
- package/dist/services/markdown.d.ts +12 -1
- package/dist/services/markdown.js +71 -6
- package/dist/services/markdown.js.map +1 -1
- package/dist/services/memory-service.d.ts +22 -14
- package/dist/services/memory-service.js +53 -35
- package/dist/services/memory-service.js.map +1 -1
- package/dist/services/mention-detector.d.ts +23 -0
- package/dist/services/mention-detector.js +47 -0
- package/dist/services/mention-detector.js.map +1 -0
- package/dist/services/notification-broadcast.d.ts +32 -0
- package/dist/services/notification-broadcast.js +38 -0
- package/dist/services/notification-broadcast.js.map +1 -0
- package/dist/services/notification-service.d.ts +41 -0
- package/dist/services/notification-service.js +100 -0
- package/dist/services/notification-service.js.map +1 -0
- 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/user-person-bridge.d.ts +118 -0
- package/dist/services/user-person-bridge.js +306 -0
- package/dist/services/user-person-bridge.js.map +1 -0
- package/dist/services/vector-service.d.ts +146 -6
- package/dist/services/vector-service.js +276 -13
- 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.d.ts +17 -2
- package/dist/utils/git.js +23 -7
- 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 +12 -19
- package/dist/utils/version-checker.js +14 -104
- package/dist/utils/version-checker.js.map +1 -1
- package/dist/web/_app/immutable/assets/0.DOumm94J.css +2 -0
- package/dist/web/_app/immutable/assets/13.DlIf1mKh.css +1 -0
- package/dist/web/_app/immutable/assets/14.7d-Q37wc.css +1 -0
- package/dist/web/_app/immutable/assets/15.CmLrbzZp.css +1 -0
- package/dist/web/_app/immutable/assets/2.BftNiAA4.css +1 -0
- package/dist/web/_app/immutable/assets/3.CV0abekd.css +1 -0
- package/dist/web/_app/immutable/assets/4.BgXzUTTk.css +1 -0
- package/dist/web/_app/immutable/assets/9.gsF-Ne6_.css +1 -0
- package/dist/web/_app/immutable/assets/AgentOverlay.CpvH9rhf.css +1 -0
- package/dist/web/_app/immutable/assets/AssetManagerModal.BKJfPAPk.css +1 -0
- package/dist/web/_app/immutable/assets/CalendarView.bNewSxkH.css +1 -0
- package/dist/web/_app/immutable/assets/ChevronDown.Bz0FjM7b.css +1 -0
- package/dist/web/_app/immutable/assets/FolderMembersPanel.DX1oBeF_.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.DgvSjS0I.css +1 -0
- package/dist/web/_app/immutable/assets/GraphView.BJtGL9py.css +1 -0
- package/dist/web/_app/immutable/assets/KanbanView.D0QbZFd6.css +1 -0
- package/dist/web/_app/immutable/assets/SettingsDialog.DYWYMFSO.css +1 -0
- package/dist/web/_app/immutable/assets/Spinner.UBfl0pab.css +1 -0
- package/dist/web/_app/immutable/assets/StopFilledAlt.CkPrHdPD.css +1 -0
- package/dist/web/_app/immutable/assets/TimelineView.DA-H6dvv.css +1 -0
- package/dist/web/_app/immutable/assets/WorkspaceView.BS1ildu7.css +1 -0
- package/dist/web/_app/immutable/assets/button.BlLm4Dg1.css +1 -0
- package/dist/web/_app/immutable/assets/formatting.vV0ne105.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.cqga56xT.css +1 -0
- package/dist/web/_app/immutable/assets/list-columns.BrRrAiZ7.css +1 -0
- package/dist/web/_app/immutable/assets/realtime.DDCWxn3B.css +1 -0
- package/dist/web/_app/immutable/assets/sheet.DJPuqnTg.css +1 -0
- package/dist/web/_app/immutable/assets/speech-dictation.C5CYFhS1.css +1 -0
- package/dist/web/_app/immutable/chunks/0edH8sO82.js +1 -0
- package/dist/web/_app/immutable/chunks/0iDDDyaZ.js +1 -0
- package/dist/web/_app/immutable/chunks/7-y0CE1z.js +1 -0
- package/dist/web/_app/immutable/chunks/7Bu427my2.js +184 -0
- package/dist/web/_app/immutable/chunks/B-V5eMSw2.js +1 -0
- package/dist/web/_app/immutable/chunks/B-i9_YVM.js +1 -0
- package/dist/web/_app/immutable/chunks/B15-kvCe.js +1 -0
- package/dist/web/_app/immutable/chunks/B4cFqqUS.js +3 -0
- package/dist/web/_app/immutable/chunks/B6Lt-qaJ.js +1 -0
- package/dist/web/_app/immutable/chunks/B7hznOQp.js +1 -0
- package/dist/web/_app/immutable/chunks/B7tbGyiU2.js +1 -0
- package/dist/web/_app/immutable/chunks/B8-Lm86o2.js +1 -0
- package/dist/web/_app/immutable/chunks/BBxt8lpa.js +1 -0
- package/dist/web/_app/immutable/chunks/BCaRi2AF.js +1 -0
- package/dist/web/_app/immutable/chunks/BJReLGMs.js +1 -0
- package/dist/web/_app/immutable/chunks/BKzV82vD2.js +83 -0
- package/dist/web/_app/immutable/chunks/BLHrJvbG.js +1 -0
- package/dist/web/_app/immutable/chunks/BQULA6er.js +4 -0
- package/dist/web/_app/immutable/chunks/BQW-EDgP2.js +224 -0
- package/dist/web/_app/immutable/chunks/BR6jMpLB.js +1 -0
- package/dist/web/_app/immutable/chunks/BUBMGU8t2.js +2 -0
- package/dist/web/_app/immutable/chunks/BVnuLlVg.js +1 -0
- package/dist/web/_app/immutable/chunks/BYokDzwE.js +1 -0
- package/dist/web/_app/immutable/chunks/B_Avv9jQ2.js +1 -0
- package/dist/web/_app/immutable/chunks/Bbp76jaT2.js +1 -0
- package/dist/web/_app/immutable/chunks/BddNmQ8j.js +1 -0
- package/dist/web/_app/immutable/chunks/BiJjH5mJ.js +2 -0
- package/dist/web/_app/immutable/chunks/BlyFGPFV.js +22 -0
- package/dist/web/_app/immutable/chunks/Bt88HrRx.js +1 -0
- package/dist/web/_app/immutable/chunks/Bu2iU6hh.js +67 -0
- package/dist/web/_app/immutable/chunks/Buih1pxI.js +1 -0
- package/dist/web/_app/immutable/chunks/BwwLJVvR.js +1 -0
- package/dist/web/_app/immutable/chunks/C0RpyyYZ.js +7 -0
- package/dist/web/_app/immutable/chunks/C2l-EXsT2.js +1 -0
- package/dist/web/_app/immutable/chunks/C35TIzaB.js +1 -0
- package/dist/web/_app/immutable/chunks/C3OdK8z_2.js +1 -0
- package/dist/web/_app/immutable/chunks/C6Nx0jpM.js +1 -0
- package/dist/web/_app/immutable/chunks/CA7O0J_u2.js +1 -0
- package/dist/web/_app/immutable/chunks/CAwjrHdk.js +23 -0
- package/dist/web/_app/immutable/chunks/CCLR-AJL2.js +185 -0
- package/dist/web/_app/immutable/chunks/CD0X7XPW.js +6 -0
- package/dist/web/_app/immutable/chunks/CDTjuBSm2.js +1 -0
- package/dist/web/_app/immutable/chunks/CSUrYOis.js +1 -0
- package/dist/web/_app/immutable/chunks/CUPSJObs.js +1 -0
- package/dist/web/_app/immutable/chunks/CUoGvuxK2.js +2 -0
- package/dist/web/_app/immutable/chunks/CWh8aehb.js +1 -0
- package/dist/web/_app/immutable/chunks/CY4XVBP0.js +1 -0
- package/dist/web/_app/immutable/chunks/CYTTTma0.js +3 -0
- package/dist/web/_app/immutable/chunks/CaoriuNq.js +1 -0
- package/dist/web/_app/immutable/chunks/CcsSt9AW2.js +1 -0
- package/dist/web/_app/immutable/chunks/Cd4VfAZC.js +2 -0
- package/dist/web/_app/immutable/chunks/CePZ1985.js +1 -0
- package/dist/web/_app/immutable/chunks/Cei8CKT4.js +1 -0
- package/dist/web/_app/immutable/chunks/CheXrbDk.js +1 -0
- package/dist/web/_app/immutable/chunks/CkLfUXwy.js +1 -0
- package/dist/web/_app/immutable/chunks/Cl-W0JYt.js +2 -0
- package/dist/web/_app/immutable/chunks/Cna7tYp-.js +1 -0
- package/dist/web/_app/immutable/chunks/Czwe4sGU2.js +3 -0
- package/dist/web/_app/immutable/chunks/D41CbXmM.js +1 -0
- package/dist/web/_app/immutable/chunks/D83_Ss42.js +1 -0
- package/dist/web/_app/immutable/chunks/D9NgbGbO2.js +9 -0
- package/dist/web/_app/immutable/chunks/DA-BuZei.js +2 -0
- package/dist/web/_app/immutable/chunks/DAXW5iLp.js +1 -0
- package/dist/web/_app/immutable/chunks/DCNJWlho2.js +1 -0
- package/dist/web/_app/immutable/chunks/DCtgLRl52.js +1 -0
- package/dist/web/_app/immutable/chunks/DH0epITQ2.js +1 -0
- package/dist/web/_app/immutable/chunks/DIb5rAPU2.js +1 -0
- package/dist/web/_app/immutable/chunks/DOmH4G9o2.js +14 -0
- package/dist/web/_app/immutable/chunks/DQMWa2t7.js +1 -0
- package/dist/web/_app/immutable/chunks/DQ_Xokap2.js +1 -0
- package/dist/web/_app/immutable/chunks/DR1K6PIm.js +1 -0
- package/dist/web/_app/immutable/chunks/DTCHhxD5.js +1 -0
- package/dist/web/_app/immutable/chunks/DU7XA-cL2.js +1 -0
- package/dist/web/_app/immutable/chunks/DVcy5Pp82.js +1 -0
- package/dist/web/_app/immutable/chunks/DWygwzcO2.js +1 -0
- package/dist/web/_app/immutable/chunks/DYXDRmoo2.js +1 -0
- package/dist/web/_app/immutable/chunks/DZEmjBTb.js +5 -0
- package/dist/web/_app/immutable/chunks/DaoOQFPb.js +1 -0
- package/dist/web/_app/immutable/chunks/DdfvtDOY.js +1 -0
- package/dist/web/_app/immutable/chunks/DevZTY1l.js +1 -0
- package/dist/web/_app/immutable/chunks/DiMQob8p.js +1 -0
- package/dist/web/_app/immutable/chunks/DiQJ9DLy.js +1 -0
- package/dist/web/_app/immutable/chunks/Dj5oP_ik.js +2 -0
- package/dist/web/_app/immutable/chunks/DjTJ4D_0.js +3 -0
- package/dist/web/_app/immutable/chunks/Dk4TeNwu.js +1 -0
- package/dist/web/_app/immutable/chunks/Dng3OcRd2.js +1 -0
- package/dist/web/_app/immutable/chunks/Do1OCNEG.js +1 -0
- package/dist/web/_app/immutable/chunks/Do6qOOng.js +1 -0
- package/dist/web/_app/immutable/chunks/DoQwt-f9.js +1 -0
- package/dist/web/_app/immutable/chunks/Dqg3k9HI2.js +1 -0
- package/dist/web/_app/immutable/chunks/DsnqOT222.js +1 -0
- package/dist/web/_app/immutable/chunks/DvJSCDuZ2.js +1 -0
- package/dist/web/_app/immutable/chunks/DvPuaTCl.js +5 -0
- package/dist/web/_app/immutable/chunks/DvYQu1SV.js +1 -0
- package/dist/web/_app/immutable/chunks/HdjeJPly2.js +1 -0
- package/dist/web/_app/immutable/chunks/JDw4tOUY.js +1 -0
- package/dist/web/_app/immutable/chunks/KBbDg4lS2.js +1 -0
- package/dist/web/_app/immutable/chunks/KQXQLJf32.js +1 -0
- package/dist/web/_app/immutable/chunks/LGnNalpn2.js +2 -0
- package/dist/web/_app/immutable/chunks/SH5Fg0Xu.js +1 -0
- package/dist/web/_app/immutable/chunks/Shyla9c12.js +2 -0
- package/dist/web/_app/immutable/chunks/VQbAelHN.js +1 -0
- package/dist/web/_app/immutable/chunks/apNT0aug2.js +1 -0
- package/dist/web/_app/immutable/chunks/e0ySQvQ6.js +1 -0
- package/dist/web/_app/immutable/chunks/eNB_sIHC2.js +1 -0
- package/dist/web/_app/immutable/chunks/g09ZrevW2.js +1 -0
- package/dist/web/_app/immutable/chunks/h4WWBpcD2.js +2692 -0
- package/dist/web/_app/immutable/chunks/kLub81jO.js +1 -0
- package/dist/web/_app/immutable/chunks/kW0z_eo62.js +1 -0
- package/dist/web/_app/immutable/chunks/oBQOivfH.js +1 -0
- package/dist/web/_app/immutable/chunks/ss8hcwTT.js +1 -0
- package/dist/web/_app/immutable/chunks/sub7ikQV.js +2 -0
- package/dist/web/_app/immutable/chunks/uuFM-ygL.js +1 -0
- package/dist/web/_app/immutable/chunks/v7me-ydg.js +2 -0
- package/dist/web/_app/immutable/chunks/xihTtKlq.js +1 -0
- package/dist/web/_app/immutable/chunks/yWi6xIp8.js +1 -0
- package/dist/web/_app/immutable/chunks/zl16E4yc2.js +1 -0
- package/dist/web/_app/immutable/entry/app.Bgniax9U.js +2 -0
- package/dist/web/_app/immutable/entry/start.DeD3x0AC.js +1 -0
- package/dist/web/_app/immutable/nodes/0.D7f7eDDY.js +2 -0
- package/dist/web/_app/immutable/nodes/1.nDAGsQWA.js +1 -0
- package/dist/web/_app/immutable/nodes/10.DFbhcPKT.js +1 -0
- package/dist/web/_app/immutable/nodes/11.CDErrkBt.js +1 -0
- package/dist/web/_app/immutable/nodes/12.QmphOXE2.js +1 -0
- package/dist/web/_app/immutable/nodes/13.Bq5rDhPs.js +1 -0
- package/dist/web/_app/immutable/nodes/14.BlcHqgr6.js +1 -0
- package/dist/web/_app/immutable/nodes/15.COK_-D-x.js +1 -0
- package/dist/web/_app/immutable/nodes/2.DOsCYNHa.js +109 -0
- package/dist/web/_app/immutable/nodes/3.BgE1sIyr.js +2 -0
- package/dist/web/_app/immutable/nodes/4.DvgaHeI4.js +11 -0
- package/dist/web/_app/immutable/nodes/5.CrjeBZES.js +1 -0
- package/dist/web/_app/immutable/nodes/6.DoHxsiEE.js +1 -0
- package/dist/web/_app/immutable/nodes/7.04fnxKIo.js +1 -0
- package/dist/web/_app/immutable/nodes/8.D35_cY6C.js +1 -0
- package/dist/web/_app/immutable/nodes/9.BRionwW6.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 +56 -19
- package/dist/web/studiograph-logomark.svg +29 -0
- package/package.json +34 -14
- 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/clear.d.ts +0 -5
- package/dist/cli/commands/clear.js +0 -36
- package/dist/cli/commands/clear.js.map +0 -1
- package/dist/cli/commands/collection.d.ts +0 -10
- package/dist/cli/commands/collection.js +0 -187
- 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/join.d.ts +0 -9
- package/dist/cli/commands/join.js +0 -255
- package/dist/cli/commands/join.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/start.d.ts +0 -7
- package/dist/cli/commands/start.js +0 -589
- package/dist/cli/commands/start.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/commands/update.d.ts +0 -8
- package/dist/cli/commands/update.js +0 -155
- package/dist/cli/commands/update.js.map +0 -1
- package/dist/cli/commands/user.d.ts +0 -7
- package/dist/cli/commands/user.js +0 -153
- package/dist/cli/commands/user.js.map +0 -1
- package/dist/cli/scaffolding.d.ts +0 -12
- package/dist/cli/scaffolding.js +0 -397
- package/dist/cli/scaffolding.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 -15
- package/dist/integrations/registry.js +0 -27
- package/dist/integrations/registry.js.map +0 -1
- package/dist/integrations/types.d.ts +0 -38
- package/dist/integrations/types.js +0 -9
- 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/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/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 -15
- package/dist/server/routes/meeting-ingest-api.js +0 -323
- 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 -814
- 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/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/insights.d.ts +0 -38
- package/dist/services/insights.js +0 -246
- package/dist/services/insights.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.DdizXOKi.css +0 -1
- package/dist/web/_app/immutable/assets/10.BUrHkYry.css +0 -1
- package/dist/web/_app/immutable/assets/2.n7-yW_Fs.css +0 -1
- package/dist/web/_app/immutable/assets/3.BtaZagnv.css +0 -1
- package/dist/web/_app/immutable/assets/4.DT7X0x5S.css +0 -1
- package/dist/web/_app/immutable/assets/5.DFeGxLYf.css +0 -1
- package/dist/web/_app/immutable/assets/6.CquhUpOu.css +0 -1
- package/dist/web/_app/immutable/assets/7.CjbDRbuG.css +0 -1
- package/dist/web/_app/immutable/assets/8.S1QdUGNM.css +0 -1
- package/dist/web/_app/immutable/assets/9.CT4xL4K3.css +0 -1
- package/dist/web/_app/immutable/assets/Copy.FS8bdfxr.css +0 -1
- package/dist/web/_app/immutable/assets/Toaster.rN8r_Hzv.css +0 -1
- package/dist/web/_app/immutable/assets/ViewToolbar.D-QW2oKe.css +0 -1
- package/dist/web/_app/immutable/assets/index.D6tMDJWk.css +0 -1
- package/dist/web/_app/immutable/chunks/37NdyH6G.js +0 -32
- package/dist/web/_app/immutable/chunks/4Hhzb6pv.js +0 -1
- package/dist/web/_app/immutable/chunks/72bZS3G9.js +0 -1
- package/dist/web/_app/immutable/chunks/7S2LGqoP.js +0 -2
- package/dist/web/_app/immutable/chunks/B-7hHz7B.js +0 -1
- package/dist/web/_app/immutable/chunks/B340SUKR.js +0 -1
- package/dist/web/_app/immutable/chunks/BB_5th5W.js +0 -3383
- package/dist/web/_app/immutable/chunks/BDoWDZaG.js +0 -1
- package/dist/web/_app/immutable/chunks/BFyl1ZHO.js +0 -1
- package/dist/web/_app/immutable/chunks/BS2rFAVq.js +0 -1
- package/dist/web/_app/immutable/chunks/BSsDC_p4.js +0 -1
- package/dist/web/_app/immutable/chunks/BTX2Jr8_.js +0 -1
- package/dist/web/_app/immutable/chunks/BWNY8zw6.js +0 -2
- package/dist/web/_app/immutable/chunks/BdPUVvAi.js +0 -1
- package/dist/web/_app/immutable/chunks/BmsJVLyy.js +0 -1
- package/dist/web/_app/immutable/chunks/BoAosqzE.js +0 -1
- package/dist/web/_app/immutable/chunks/Bs-tL5OR.js +0 -1
- package/dist/web/_app/immutable/chunks/Bsacq2UX.js +0 -1
- package/dist/web/_app/immutable/chunks/BuewkNdS.js +0 -4
- package/dist/web/_app/immutable/chunks/ByunV8un.js +0 -1
- package/dist/web/_app/immutable/chunks/C7VoTosa.js +0 -2
- package/dist/web/_app/immutable/chunks/CDV5Q7RN.js +0 -1
- package/dist/web/_app/immutable/chunks/CJ8__CWt.js +0 -1
- package/dist/web/_app/immutable/chunks/CJUKmosC.js +0 -5
- package/dist/web/_app/immutable/chunks/CSVbGg_b.js +0 -5
- package/dist/web/_app/immutable/chunks/CT6oIU-C.js +0 -1
- package/dist/web/_app/immutable/chunks/CTRxNfZk.js +0 -1
- package/dist/web/_app/immutable/chunks/CWQRQXxy.js +0 -1
- package/dist/web/_app/immutable/chunks/CXH6iFbA.js +0 -1
- 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/CdeYcEuU.js +0 -1
- package/dist/web/_app/immutable/chunks/CmCtpZ1Y.js +0 -1
- package/dist/web/_app/immutable/chunks/CqkleIqs.js +0 -1
- package/dist/web/_app/immutable/chunks/CrdV0ttd.js +0 -1
- package/dist/web/_app/immutable/chunks/CscoF-YL.js +0 -18
- package/dist/web/_app/immutable/chunks/Cx4YdFMk.js +0 -1
- package/dist/web/_app/immutable/chunks/D7ZqAKi9.js +0 -3
- package/dist/web/_app/immutable/chunks/DGbA7IXh.js +0 -2
- package/dist/web/_app/immutable/chunks/DbbB6Up5.js +0 -1
- package/dist/web/_app/immutable/chunks/DnL9f0lc.js +0 -7
- package/dist/web/_app/immutable/chunks/DtM5cEDu.js +0 -1
- package/dist/web/_app/immutable/chunks/Eqahi7_S.js +0 -2
- package/dist/web/_app/immutable/chunks/FFlLQIiS.js +0 -1
- package/dist/web/_app/immutable/chunks/O9Eb9k00.js +0 -1
- package/dist/web/_app/immutable/chunks/PPVm8Dsz.js +0 -1
- package/dist/web/_app/immutable/chunks/QF8MAmnc.js +0 -1
- package/dist/web/_app/immutable/chunks/UjzxCpxn.js +0 -1
- package/dist/web/_app/immutable/chunks/WSUKABI_.js +0 -1
- package/dist/web/_app/immutable/chunks/Y90OgS-9.js +0 -1
- package/dist/web/_app/immutable/chunks/cLyZlkXv.js +0 -1
- package/dist/web/_app/immutable/chunks/iDtAARVW.js +0 -2
- package/dist/web/_app/immutable/chunks/oC_W7W7p.js +0 -1
- package/dist/web/_app/immutable/chunks/rJdWIgh-.js +0 -1
- package/dist/web/_app/immutable/chunks/tvOsokaa.js +0 -1
- package/dist/web/_app/immutable/chunks/uLEXaPwE.js +0 -1
- package/dist/web/_app/immutable/chunks/vSaooFHB.js +0 -1
- package/dist/web/_app/immutable/entry/app.DAR-mtfg.js +0 -2
- package/dist/web/_app/immutable/entry/start.xDnyRaR1.js +0 -1
- package/dist/web/_app/immutable/nodes/0.D0aV-Zro.js +0 -2
- package/dist/web/_app/immutable/nodes/1.C7QoM8qD.js +0 -1
- package/dist/web/_app/immutable/nodes/10.DrDOAjOD.js +0 -1
- package/dist/web/_app/immutable/nodes/2.B0OgNuKW.js +0 -168
- package/dist/web/_app/immutable/nodes/3.BZ4qHGZi.js +0 -1
- package/dist/web/_app/immutable/nodes/4.hm-mxuuj.js +0 -12
- package/dist/web/_app/immutable/nodes/5.Bdbt4fjx.js +0 -4
- package/dist/web/_app/immutable/nodes/6.BXrCI40c.js +0 -2
- package/dist/web/_app/immutable/nodes/7.Chd4i9bm.js +0 -2
- package/dist/web/_app/immutable/nodes/8.B8SF-aNs.js +0 -1
- package/dist/web/_app/immutable/nodes/9.YDeu-RnO.js +0 -1
package/dist/core/validation.js
CHANGED
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Entity validation schemas for Studiograph
|
|
3
3
|
*
|
|
4
|
-
* 17
|
|
5
|
-
* -
|
|
6
|
-
* -
|
|
7
|
-
* -
|
|
4
|
+
* 17 canonical entity types post-redesign:
|
|
5
|
+
* - CRM (4): person, organization, position, deal
|
|
6
|
+
* - PM (4): project, event, task, deliverable
|
|
7
|
+
* - KM authored (6): document, deck, publication, case-study, service, skill
|
|
8
|
+
* - Capture (3): note, reference, dataset
|
|
9
|
+
* - System (1): asset
|
|
8
10
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
+
* "An object earns first-class entity status only if it earns its own view
|
|
12
|
+
* behavior across the six primary views (List, Gallery, Kanban, Calendar,
|
|
13
|
+
* Timeline, Graph). Objects that are mostly useful because they're attached
|
|
14
|
+
* to something else become categories, fields, or inline blocks — not types."
|
|
15
|
+
*
|
|
16
|
+
* Workspaces can define additional custom types via schema_extensions.
|
|
11
17
|
*/
|
|
12
18
|
import { z } from 'zod';
|
|
19
|
+
function dateField(role, label, description) {
|
|
20
|
+
return z
|
|
21
|
+
.string()
|
|
22
|
+
.date()
|
|
23
|
+
.optional()
|
|
24
|
+
.describe(description ?? label)
|
|
25
|
+
.meta({ dateRole: role, label });
|
|
26
|
+
}
|
|
13
27
|
/**
|
|
14
28
|
* Base entity schema - all entities have these fields
|
|
15
29
|
*/
|
|
@@ -22,328 +36,420 @@ export const EntityBaseSchema = z.object({
|
|
|
22
36
|
updated_at: z.string().datetime('Invalid datetime format'),
|
|
23
37
|
created_by: z.string().min(1, 'Created by is required'),
|
|
24
38
|
updated_by: z.string().min(1, 'Updated by is required'),
|
|
25
|
-
date:
|
|
39
|
+
date: dateField('primary', 'Date', "The entity's primary date (YYYY-MM-DD)"),
|
|
26
40
|
tags: z.array(z.string())
|
|
27
41
|
.optional()
|
|
28
42
|
.describe('Tags for categorization'),
|
|
29
43
|
}).passthrough(); // Allow custom fields beyond the base schema
|
|
30
44
|
// ══════════════════════════════════════════════════════════════════════════════
|
|
31
|
-
//
|
|
45
|
+
// CRM — people, organizations, positions, deals
|
|
32
46
|
// ══════════════════════════════════════════════════════════════════════════════
|
|
33
47
|
/**
|
|
34
|
-
* Person — team members, client contacts, any individual
|
|
48
|
+
* Person — team members, client contacts, any individual.
|
|
49
|
+
*
|
|
50
|
+
* `category` and `status` are split: category is the relationship type
|
|
51
|
+
* (employee/contractor/client/partner) and status is whether that
|
|
52
|
+
* relationship is current or historical. Mirrors organization.
|
|
35
53
|
*/
|
|
36
54
|
export const PersonSchema = EntityBaseSchema.extend({
|
|
37
55
|
entity_type: z.literal('person'),
|
|
38
56
|
name: z.string().min(1, 'Person name is required'),
|
|
39
|
-
role: z.string().optional().describe('
|
|
40
|
-
|
|
57
|
+
role: z.string().optional().describe('Free-text title (distinct from `position` entity)'),
|
|
58
|
+
category: z.enum(['employee', 'contractor', 'client', 'partner', 'other'])
|
|
41
59
|
.optional()
|
|
42
|
-
.describe('Relationship
|
|
60
|
+
.describe('Relationship category'),
|
|
61
|
+
status: z.enum(['current', 'former'])
|
|
62
|
+
.optional()
|
|
63
|
+
.describe('Whether the relationship is current or historical'),
|
|
43
64
|
email: z.string().optional().describe('Email address'),
|
|
44
65
|
location: z.string().optional().describe('Location'),
|
|
45
66
|
organization: z.string().optional().describe('Organization wikilink'),
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
67
|
+
// Bridge to the auth.db user account this person represents. Scalar handle
|
|
68
|
+
// string (not a wikilink): users are out-of-graph identities. Workspace-
|
|
69
|
+
// unique — write-path enforcement lives in user-person-bridge.ts. Optional
|
|
70
|
+
// because person entities can exist without a corresponding user
|
|
71
|
+
// (contractors, client contacts, anyone in the org chart who doesn't log
|
|
72
|
+
// in). Empty string is the "cleared" form — graph.create seeds optional
|
|
73
|
+
// string fields to "" on new entities, and unlink writes "" as well, so
|
|
74
|
+
// the regex must accept it explicitly.
|
|
75
|
+
user_handle: z.string()
|
|
76
|
+
// Empty (cleared) OR a kebab-case handle: leading alnum, alnum/hyphen
|
|
77
|
+
// body, alnum tail, no doubled hyphens. Mirrors what auth's
|
|
78
|
+
// slugifyHandle + allocateHandle can actually emit — accepting
|
|
79
|
+
// `foo-` or `foo--bar` here would let a hand-edit drift outside what
|
|
80
|
+
// findUserByHandle can match.
|
|
81
|
+
.regex(/^(|[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9]))*)$/, 'user_handle must match the auth handle format (lowercase, single hyphens between alnums, alnum endpoints)')
|
|
82
|
+
.optional()
|
|
83
|
+
.describe('Auth handle of the user this person represents'),
|
|
50
84
|
});
|
|
51
85
|
/**
|
|
52
|
-
* Organization — clients, vendors, partners, prospects,
|
|
53
|
-
*
|
|
86
|
+
* Organization — clients, vendors, partners, prospects, professional
|
|
87
|
+
* associations.
|
|
54
88
|
*/
|
|
55
89
|
export const OrganizationSchema = EntityBaseSchema.extend({
|
|
56
90
|
entity_type: z.literal('organization'),
|
|
57
91
|
name: z.string().min(1, 'Organization name is required'),
|
|
58
|
-
category: z.enum(['client', 'vendor', 'partner', 'prospect', '
|
|
92
|
+
category: z.enum(['client', 'vendor', 'partner', 'prospect', 'professional-association', 'other'])
|
|
59
93
|
.optional()
|
|
60
94
|
.describe('Relationship category'),
|
|
61
|
-
status: z.enum(['active', '
|
|
95
|
+
status: z.enum(['active', 'dormant', 'former'])
|
|
62
96
|
.default('active')
|
|
63
|
-
.describe('Organization status'),
|
|
97
|
+
.describe('Organization status (`dormant` covers clients you have not worked with in a while but might again)'),
|
|
64
98
|
industry: z.string().optional().describe('Industry sector'),
|
|
65
99
|
website: z.string().url().optional().describe('Website URL'),
|
|
66
|
-
location: z.string().optional().describe('Primary location'),
|
|
67
|
-
size: z.enum(['small', 'medium', 'large', 'enterprise'])
|
|
68
|
-
.optional()
|
|
69
|
-
.describe('Organization size'),
|
|
70
|
-
contacts: z.array(z.string()).optional().describe('Contact person wikilinks'),
|
|
71
|
-
projects: z.array(z.string()).optional().describe('Related project wikilinks'),
|
|
72
|
-
relationship_start: z.string().optional().describe('When the relationship started'),
|
|
73
100
|
});
|
|
74
101
|
/**
|
|
75
|
-
*
|
|
102
|
+
* Position — a position spec or open job. Renamed from `role` to avoid
|
|
103
|
+
* collision with `person.role` (the free-text title field). Reframes from
|
|
104
|
+
* "the person's seat" to "the spec for a position."
|
|
76
105
|
*/
|
|
77
|
-
export const
|
|
78
|
-
entity_type: z.literal('
|
|
79
|
-
name: z.string().min(1, '
|
|
106
|
+
export const PositionSchema = EntityBaseSchema.extend({
|
|
107
|
+
entity_type: z.literal('position'),
|
|
108
|
+
name: z.string().min(1, 'Position name is required'),
|
|
80
109
|
department: z.string().optional().describe('Department'),
|
|
81
|
-
level: z.number().optional().describe('Level 1–5 from leveling framework'),
|
|
82
110
|
category: z.enum(['staff', 'contractor', 'intern'])
|
|
83
111
|
.optional()
|
|
84
112
|
.describe('Employment category'),
|
|
85
|
-
status: z.enum(['
|
|
86
|
-
.default('
|
|
87
|
-
.describe('
|
|
88
|
-
location: z.string().optional().describe('Location'),
|
|
89
|
-
reports_to: z.string().optional().describe('Parent role or person wikilink'),
|
|
113
|
+
status: z.enum(['draft', 'open', 'filled', 'closed'])
|
|
114
|
+
.default('open')
|
|
115
|
+
.describe('Position lifecycle'),
|
|
90
116
|
});
|
|
91
117
|
/**
|
|
92
|
-
*
|
|
118
|
+
* Deal — pre-project opportunity in the sales pipeline.
|
|
93
119
|
*/
|
|
94
|
-
export const
|
|
95
|
-
entity_type: z.literal('
|
|
96
|
-
name: z.string().min(1, '
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
120
|
+
export const DealSchema = EntityBaseSchema.extend({
|
|
121
|
+
entity_type: z.literal('deal'),
|
|
122
|
+
name: z.string().min(1, 'Deal name is required'),
|
|
123
|
+
client: z.string().optional().describe('Client organization wikilink'),
|
|
124
|
+
contact: z.string().optional().describe('Primary contact person wikilink'),
|
|
125
|
+
stage: z.enum(['qualification', 'scoping', 'proposal', 'negotiation', 'pending-signature', 'won', 'lost'])
|
|
126
|
+
.default('qualification')
|
|
127
|
+
.describe('Pipeline stage'),
|
|
128
|
+
deal_value: z.number().optional().describe('Estimated deal value'),
|
|
129
|
+
start_date: dateField('start', 'Start date', 'When work on the deal began (enables Timeline rendering of duration)'),
|
|
130
|
+
date: dateField('primary', 'Close date', 'Expected close date'),
|
|
101
131
|
});
|
|
102
132
|
// ══════════════════════════════════════════════════════════════════════════════
|
|
103
|
-
//
|
|
133
|
+
// PM — project, event, task, deliverable
|
|
104
134
|
// ══════════════════════════════════════════════════════════════════════════════
|
|
105
135
|
/**
|
|
106
|
-
* Project — a client engagement or internal initiative
|
|
136
|
+
* Project — a client engagement or internal initiative.
|
|
137
|
+
*
|
|
138
|
+
* `services` is a wikilink array to `service` entities the project includes
|
|
139
|
+
* (replaces the previous `practice_area` concept).
|
|
107
140
|
*/
|
|
108
141
|
export const ProjectSchema = EntityBaseSchema.extend({
|
|
109
142
|
entity_type: z.literal('project'),
|
|
110
143
|
name: z.string().min(1, 'Project name is required'),
|
|
111
|
-
category: z.
|
|
144
|
+
category: z.enum(['client', 'internal'])
|
|
145
|
+
.optional()
|
|
146
|
+
.describe('Project category'),
|
|
147
|
+
project_type: z.string().optional().describe('Kind of project (e.g., website, research, event, rebrand, prototype)'),
|
|
112
148
|
client: z.string().optional().describe('Client organization wikilink'),
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
status: z.enum(['planning', 'scoping', 'active', 'on-hold', 'completed', 'archived'])
|
|
149
|
+
services: z.array(z.string()).optional()
|
|
150
|
+
.describe('Service entities this project includes (wikilinks)'),
|
|
151
|
+
status: z.enum(['planning', 'in-progress', 'paused', 'complete', 'archived'])
|
|
117
152
|
.optional()
|
|
118
153
|
.describe('Current project status'),
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
team: z.array(z.string()).optional().describe('Team member wikilinks'),
|
|
122
|
-
deliverables: z.array(z.string()).optional().describe('Deliverable wikilinks'),
|
|
123
|
-
deal: z.string().optional().describe('Originating deal wikilink'),
|
|
154
|
+
start_date: dateField('start', 'Start date', 'Project start date'),
|
|
155
|
+
date: dateField('primary', 'End date', 'Project end date'),
|
|
124
156
|
});
|
|
125
157
|
/**
|
|
126
|
-
*
|
|
158
|
+
* Event — any scheduled gathering (meeting, call, workshop, review, etc.).
|
|
159
|
+
* `type` discriminates the kind of gathering for grouping/filtering. The
|
|
160
|
+
* default `meeting` preserves semantics for legacy meeting captures.
|
|
161
|
+
*
|
|
162
|
+
* Note: `deadline` is intentionally NOT a `type` value — deadlines are
|
|
163
|
+
* `task` entries with a `date` (the due date). Events are things you attend.
|
|
127
164
|
*/
|
|
128
|
-
export const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
165
|
+
export const EVENT_TYPES = [
|
|
166
|
+
'meeting', 'call', 'review', 'workshop', 'presentation', 'conference', 'other',
|
|
167
|
+
];
|
|
168
|
+
export const EventSchema = EntityBaseSchema.extend({
|
|
169
|
+
entity_type: z.literal('event'),
|
|
170
|
+
name: z.string().min(1, 'Event name/subject is required'),
|
|
171
|
+
type: z.enum(EVENT_TYPES).default('meeting').describe('Kind of event'),
|
|
132
172
|
attendees: z.array(z.string()).optional().describe('Attendee wikilinks'),
|
|
133
|
-
related_projects: z.array(z.string()).optional().describe('Related project wikilinks'),
|
|
134
|
-
related_organizations: z.array(z.string()).optional().describe('Related organization wikilinks'),
|
|
135
173
|
location: z.string().optional().describe('Location or meeting link'),
|
|
136
|
-
|
|
174
|
+
start_date: dateField('start', 'Start date', 'When a multi-day event begins (omit for single-day events)'),
|
|
175
|
+
date: dateField('primary', 'Date', 'When the event takes place'),
|
|
137
176
|
});
|
|
138
177
|
/**
|
|
139
|
-
*
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
status: z.enum(['proposed', 'accepted', 'rejected', 'deprecated', 'superseded'])
|
|
145
|
-
.default('proposed')
|
|
146
|
-
.describe('Current status'),
|
|
147
|
-
decision_makers: z.array(z.string()).optional().describe('People who made the decision'),
|
|
148
|
-
stakeholders: z.array(z.string()).optional().describe('People affected'),
|
|
149
|
-
context: z.string().optional().describe('Background and why this decision was needed'),
|
|
150
|
-
alternatives: z.string().optional().describe('Alternatives considered (markdown)'),
|
|
151
|
-
decision: z.string().optional().describe('The actual decision made'),
|
|
152
|
-
rationale: z.string().optional().describe('Why this decision was chosen'),
|
|
153
|
-
consequences: z.string().optional().describe('Outcomes and risks'),
|
|
154
|
-
supersedes: z.string().optional().describe('Decision this one replaces (wikilink)'),
|
|
155
|
-
superseded_by: z.string().optional().describe('Decision that replaces this one (wikilink)'),
|
|
156
|
-
});
|
|
157
|
-
/**
|
|
158
|
-
* Task — lightweight action items and to-dos
|
|
178
|
+
* Task — lightweight action items and to-dos.
|
|
179
|
+
*
|
|
180
|
+
* `phase` is intentionally free-text (not a separate entity type or workspace
|
|
181
|
+
* config list). Phases vary widely across project types; the Timeline view
|
|
182
|
+
* auto-discovers distinct values per-project for grouping.
|
|
159
183
|
*/
|
|
160
184
|
export const TaskSchema = EntityBaseSchema.extend({
|
|
161
185
|
entity_type: z.literal('task'),
|
|
162
186
|
name: z.string().min(1, 'Task name is required'),
|
|
163
|
-
status: z.enum(['
|
|
164
|
-
.default('
|
|
187
|
+
status: z.enum(['backlog', 'todo', 'in-progress', 'in-review', 'done', 'cancelled'])
|
|
188
|
+
.default('backlog')
|
|
165
189
|
.describe('Task status'),
|
|
166
190
|
priority: z.enum(['low', 'medium', 'high', 'urgent'])
|
|
167
191
|
.optional()
|
|
168
192
|
.describe('Priority level'),
|
|
169
193
|
assignee: z.string().optional().describe('Person assigned (wikilink)'),
|
|
170
|
-
|
|
171
|
-
|
|
194
|
+
phase: z.string().optional().describe('Project phase (free-text — Discover, Design, Prototype, Build, etc.)'),
|
|
195
|
+
start_date: dateField('start', 'Start date', 'Task start date (enables Timeline / Gantt rendering of duration)'),
|
|
196
|
+
date: dateField('primary', 'Due date', 'When the task is due'),
|
|
172
197
|
});
|
|
173
198
|
/**
|
|
174
|
-
*
|
|
175
|
-
|
|
199
|
+
* Deliverable — a scoped output promised to a client.
|
|
200
|
+
*/
|
|
201
|
+
export const DeliverableSchema = EntityBaseSchema.extend({
|
|
202
|
+
entity_type: z.literal('deliverable'),
|
|
203
|
+
name: z.string().min(1, 'Deliverable name is required'),
|
|
204
|
+
project: z.string().optional().describe('Parent project wikilink'),
|
|
205
|
+
status: z.enum(['planned', 'in-progress', 'delivered', 'accepted', 'rejected'])
|
|
206
|
+
.default('planned')
|
|
207
|
+
.describe('Delivery status'),
|
|
208
|
+
phase: z.string().optional().describe('Project phase (free-text — same semantics as task.phase)'),
|
|
209
|
+
start_date: dateField('start', 'Start date', 'Deliverable start date (enables Timeline rendering of duration)'),
|
|
210
|
+
date: dateField('primary', 'Due date', 'When the deliverable is due'),
|
|
211
|
+
});
|
|
212
|
+
// ══════════════════════════════════════════════════════════════════════════════
|
|
213
|
+
// KM — authored (document, deck, publication, case-study, service, skill)
|
|
214
|
+
// ══════════════════════════════════════════════════════════════════════════════
|
|
215
|
+
/**
|
|
216
|
+
* Document — any authored document. The `guideline` category absorbs the
|
|
217
|
+
* former standalone `guideline` entity type.
|
|
176
218
|
*/
|
|
177
219
|
export const DocumentSchema = EntityBaseSchema.extend({
|
|
178
220
|
entity_type: z.literal('document'),
|
|
179
221
|
name: z.string().min(1, 'Document name is required'),
|
|
180
|
-
category: z.
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
status: z.enum(['draft', 'sent', 'accepted', 'rejected', 'negotiating', 'signed', 'completed', 'terminated'])
|
|
222
|
+
category: z.enum(['proposal', 'contract', 'brief', 'memo', 'report', 'template', 'guideline', 'other'])
|
|
223
|
+
.optional()
|
|
224
|
+
.describe('Document category'),
|
|
225
|
+
status: z.enum(['draft', 'review', 'final', 'archived'])
|
|
185
226
|
.default('draft')
|
|
186
227
|
.describe('Document status'),
|
|
187
|
-
description: z.string().optional().describe('Description or summary'),
|
|
188
|
-
});
|
|
189
|
-
/**
|
|
190
|
-
* Dataset — structured tabular data with typed columns and CSV body
|
|
191
|
-
*/
|
|
192
|
-
export const ColumnDefinitionSchema = z.object({
|
|
193
|
-
name: z.string().min(1),
|
|
194
|
-
type: z.enum(['string', 'number', 'boolean', 'date']),
|
|
195
|
-
required: z.boolean().optional(),
|
|
196
|
-
description: z.string().optional(),
|
|
197
|
-
});
|
|
198
|
-
export const DatasetSchema = EntityBaseSchema.extend({
|
|
199
|
-
entity_type: z.literal('dataset'),
|
|
200
|
-
name: z.string().min(1, 'Dataset name is required'),
|
|
201
|
-
schema: z.array(ColumnDefinitionSchema).min(1, 'At least one column required'),
|
|
202
228
|
});
|
|
203
229
|
/**
|
|
204
|
-
*
|
|
205
|
-
*
|
|
230
|
+
* Deck — a slide deck or presentation. Stays its own type alongside
|
|
231
|
+
* `document` because of the dedicated slides renderer + agent skills that
|
|
232
|
+
* pattern-match on `entity_type === 'deck'`.
|
|
206
233
|
*/
|
|
207
|
-
export const
|
|
208
|
-
entity_type: z.literal('
|
|
209
|
-
name: z.string().min(1, '
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
});
|
|
217
|
-
/**
|
|
218
|
-
* Note — freeform thinking, research, scratch, daily notes
|
|
219
|
-
* Lightweight entity with minimal schema. Participates in the graph like any other entity.
|
|
220
|
-
*/
|
|
221
|
-
export const NoteSchema = EntityBaseSchema.extend({
|
|
222
|
-
entity_type: z.literal('note'),
|
|
223
|
-
name: z.string().min(1, 'Note name is required'),
|
|
224
|
-
category: z.string().optional().describe('Note category (e.g., research, scratch, daily, brainstorm, draft)'),
|
|
225
|
-
});
|
|
226
|
-
/**
|
|
227
|
-
* Deliverable — a scoped contractual output promised to a client
|
|
228
|
-
* Bridges the commercial side (proposal, contract) to execution (artifacts, tasks).
|
|
229
|
-
*/
|
|
230
|
-
export const DeliverableSchema = EntityBaseSchema.extend({
|
|
231
|
-
entity_type: z.literal('deliverable'),
|
|
232
|
-
name: z.string().min(1, 'Deliverable name is required'),
|
|
233
|
-
project: z.string().optional().describe('Related project wikilink'),
|
|
234
|
-
status: z.enum(['planned', 'in-progress', 'delivered', 'accepted', 'rejected'])
|
|
235
|
-
.default('planned')
|
|
236
|
-
.describe('Delivery status'),
|
|
237
|
-
due_date: z.string().optional().describe('Due date'),
|
|
238
|
-
delivered_date: z.string().optional().describe('Actual delivery date'),
|
|
239
|
-
description: z.string().optional().describe('What this deliverable comprises'),
|
|
234
|
+
export const DeckSchema = EntityBaseSchema.extend({
|
|
235
|
+
entity_type: z.literal('deck'),
|
|
236
|
+
name: z.string().min(1, 'Deck name is required'),
|
|
237
|
+
audience: z.enum(['client', 'team', 'board', 'external', 'other'])
|
|
238
|
+
.optional()
|
|
239
|
+
.describe('Intended audience'),
|
|
240
|
+
status: z.enum(['draft', 'review', 'final', 'archived'])
|
|
241
|
+
.default('draft')
|
|
242
|
+
.describe('Deck status'),
|
|
240
243
|
});
|
|
241
244
|
/**
|
|
242
|
-
* Publication — authored content published externally
|
|
245
|
+
* Publication — authored content published externally.
|
|
243
246
|
*/
|
|
244
247
|
export const PublicationSchema = EntityBaseSchema.extend({
|
|
245
248
|
entity_type: z.literal('publication'),
|
|
246
249
|
name: z.string().min(1, 'Publication name is required'),
|
|
247
|
-
|
|
248
|
-
platform: z.string().optional().describe('Platform (e.g., linkedin, medium, behance, conference)'),
|
|
250
|
+
platform: z.string().optional().describe('Where published (e.g., linkedin, medium, behance, conference)'),
|
|
249
251
|
status: z.enum(['draft', 'review', 'scheduled', 'published'])
|
|
250
252
|
.default('draft')
|
|
251
253
|
.describe('Publication status'),
|
|
252
|
-
published_date: z.string().optional().describe('Date published'),
|
|
253
254
|
url: z.string().optional().describe('URL of published content'),
|
|
254
|
-
related_projects: z.array(z.string()).optional().describe('Related project wikilinks'),
|
|
255
|
-
related_areas: z.array(z.string()).optional().describe('Related practice area wikilinks'),
|
|
256
255
|
});
|
|
257
256
|
/**
|
|
258
|
-
*
|
|
257
|
+
* Case Study — portfolio narratives for completed projects.
|
|
259
258
|
*/
|
|
260
|
-
export const
|
|
261
|
-
entity_type: z.literal('
|
|
262
|
-
name: z.string().min(1, '
|
|
259
|
+
export const CaseStudySchema = EntityBaseSchema.extend({
|
|
260
|
+
entity_type: z.literal('case-study'),
|
|
261
|
+
name: z.string().min(1, 'Case study name is required'),
|
|
263
262
|
client: z.string().optional().describe('Client organization wikilink'),
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
263
|
+
services: z.array(z.string()).optional()
|
|
264
|
+
.describe('Service entities this case study highlights (wikilinks)'),
|
|
265
|
+
date_range: z.string().optional().describe('Project timeframe (e.g., 2025-09 / 2026-01)'),
|
|
266
|
+
status: z.enum(['draft', 'review', 'final', 'published'])
|
|
267
|
+
.default('draft')
|
|
268
|
+
.describe('Case study status'),
|
|
269
|
+
});
|
|
270
|
+
/**
|
|
271
|
+
* Service — the firm's offerings + methodologies. Replaces the old
|
|
272
|
+
* `process` type and absorbs `practice-area` (top-level services replace
|
|
273
|
+
* what practice-area was trying to be).
|
|
274
|
+
*
|
|
275
|
+
* `sprint` links a granular service to its parent service (top-level
|
|
276
|
+
* services have none). `depends_on` / `enables` form a directed graph
|
|
277
|
+
* across the service set — the Graph view's most valuable use case.
|
|
278
|
+
*/
|
|
279
|
+
export const ServiceSchema = EntityBaseSchema.extend({
|
|
280
|
+
entity_type: z.literal('service'),
|
|
281
|
+
name: z.string().min(1, 'Service name is required'),
|
|
282
|
+
service_id: z.string().optional()
|
|
283
|
+
.describe('Optional human-readable id (e.g. "1.4") for studios that number their services'),
|
|
284
|
+
sprint: z.string().optional()
|
|
285
|
+
.describe('Parent service wikilink for hierarchy (top-level services / sprints have none)'),
|
|
286
|
+
depends_on: z.array(z.string()).optional()
|
|
287
|
+
.describe('Services that must precede this one (wikilinks)'),
|
|
288
|
+
enables: z.array(z.string()).optional()
|
|
289
|
+
.describe('Services that this one unlocks (wikilinks)'),
|
|
290
|
+
deliverables: z.array(z.string()).optional()
|
|
291
|
+
.describe('Named outputs this service produces'),
|
|
292
|
+
status: z.enum(['offered', 'in-development', 'retired'])
|
|
293
|
+
.default('offered')
|
|
294
|
+
.describe('Service lifecycle'),
|
|
295
|
+
});
|
|
296
|
+
/**
|
|
297
|
+
* Skill — prompt-level instructions the agent can load to teach it how to
|
|
298
|
+
* do a specific job. The entity id is the skill name used by `load_skill`.
|
|
299
|
+
* The body markdown is the instruction content.
|
|
300
|
+
*
|
|
301
|
+
* `applies_to` lets the agent load deck-skills when working on a deck,
|
|
302
|
+
* proposal-skills when on a `document.category=proposal`, etc. Empty /
|
|
303
|
+
* unset = generally applicable.
|
|
304
|
+
*
|
|
305
|
+
* The previous `loading: eager | on-demand` field is gone for graph-authored
|
|
306
|
+
* skills. Filesystem skills (shipped with the product in `src/agent/skills/`)
|
|
307
|
+
* keep their own loading mechanism via skill-loader.ts and orchestrator.ts.
|
|
308
|
+
*
|
|
309
|
+
* `name` and `description` are optional at creation so the sidebar new-entry
|
|
310
|
+
* flow works — the user fills them in afterward via the property panel.
|
|
311
|
+
*/
|
|
312
|
+
export const SkillSchema = EntityBaseSchema.extend({
|
|
313
|
+
entity_type: z.literal('skill'),
|
|
314
|
+
name: z.string().optional().describe('Human-readable title (falls back to entity id)'),
|
|
315
|
+
description: z.string().optional().describe('Shown in the skill index so the agent knows when to load it'),
|
|
316
|
+
applies_to: z.array(z.string()).optional()
|
|
317
|
+
.describe('Entity types this skill applies to (e.g. ["deck"]). Empty = generally applicable.'),
|
|
277
318
|
});
|
|
278
319
|
// ══════════════════════════════════════════════════════════════════════════════
|
|
279
|
-
//
|
|
320
|
+
// CAPTURE — note, reference
|
|
280
321
|
// ══════════════════════════════════════════════════════════════════════════════
|
|
281
322
|
/**
|
|
282
|
-
*
|
|
323
|
+
* Note — freeform thinking, research, daily notes.
|
|
324
|
+
*
|
|
325
|
+
* Decisions migrated from the cut `decision` type land here as plain
|
|
326
|
+
* notes; operators may manually convert specific entries to `task` if they
|
|
327
|
+
* read better as work items.
|
|
283
328
|
*/
|
|
284
|
-
export const
|
|
285
|
-
entity_type: z.literal('
|
|
286
|
-
name: z.string().min(1, '
|
|
287
|
-
description: z.string().optional().describe('Process description'),
|
|
288
|
-
steps: z.string().optional().describe('Process steps (markdown)'),
|
|
289
|
-
related_areas: z.array(z.string()).optional().describe('Related practice areas'),
|
|
290
|
-
owner: z.string().optional().describe('Person or team responsible (wikilink)'),
|
|
291
|
-
review_cycle: z.enum(['monthly', 'quarterly', 'annual', 'as-needed']).optional().describe('Review frequency'),
|
|
329
|
+
export const NoteSchema = EntityBaseSchema.extend({
|
|
330
|
+
entity_type: z.literal('note'),
|
|
331
|
+
name: z.string().min(1, 'Note name is required'),
|
|
292
332
|
});
|
|
293
333
|
/**
|
|
294
|
-
*
|
|
334
|
+
* Reference — external resources and inspiration.
|
|
295
335
|
*/
|
|
296
|
-
export const
|
|
297
|
-
entity_type: z.literal('
|
|
298
|
-
name: z.string().min(1, '
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
guidelines: z.string().optional().describe('Guidelines (markdown)'),
|
|
302
|
-
examples: z.array(z.string()).optional().describe('Example wikilinks'),
|
|
336
|
+
export const ReferenceSchema = EntityBaseSchema.extend({
|
|
337
|
+
entity_type: z.literal('reference'),
|
|
338
|
+
name: z.string().min(1, 'Reference name is required'),
|
|
339
|
+
source: z.string().optional().describe('Source or author'),
|
|
340
|
+
link: z.string().optional().describe('URL'),
|
|
303
341
|
});
|
|
304
342
|
/**
|
|
305
|
-
*
|
|
343
|
+
* Dataset — a CSV the workspace owns, edited in a grid.
|
|
344
|
+
*
|
|
345
|
+
* Conventional CSV: the markdown body IS the data, and the header row IS the
|
|
346
|
+
* column list — there's no separate typed column schema. The grid editor
|
|
347
|
+
* (web CsvEditor) and the agent's `query_dataset` / `append_rows` tools read
|
|
348
|
+
* the body through CSVService (src/services/csv-service.ts), deriving columns
|
|
349
|
+
* from the header. Distinct from an uploaded `asset` with
|
|
350
|
+
* `asset_kind: 'spreadsheet'`, which is an opaque binary — a dataset is
|
|
351
|
+
* in-graph, queryable, and row-appendable.
|
|
306
352
|
*/
|
|
307
|
-
export const
|
|
308
|
-
entity_type: z.literal('
|
|
309
|
-
name: z.string().min(1, '
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
353
|
+
export const DatasetSchema = EntityBaseSchema.extend({
|
|
354
|
+
entity_type: z.literal('dataset'),
|
|
355
|
+
name: z.string().min(1, 'Dataset name is required'),
|
|
356
|
+
});
|
|
357
|
+
// ══════════════════════════════════════════════════════════════════════════════
|
|
358
|
+
// SYSTEM — asset
|
|
359
|
+
// ══════════════════════════════════════════════════════════════════════════════
|
|
360
|
+
/**
|
|
361
|
+
* Asset — a hosted binary the workspace owns. The frontmatter is the
|
|
362
|
+
* entity; the body is optional user notes. The binary itself lives in
|
|
363
|
+
* the asset backend (R2 or local volume) at `asset/{entity_id}/{file}`.
|
|
364
|
+
*
|
|
365
|
+
* Distinct from `reference`, which points at an external URL the
|
|
366
|
+
* workspace doesn't own. Per-kind UI (icon, viewer, thumbnail) is
|
|
367
|
+
* driven by `asset_kind`; see `detectAssetKind` in
|
|
368
|
+
* src/services/assets/base.ts.
|
|
369
|
+
*
|
|
370
|
+
* Asset is graph-visible (search, history, wikilinks) but hidden from the
|
|
371
|
+
* New Entry picker — it's created via the upload/drag-drop flow.
|
|
372
|
+
*/
|
|
373
|
+
export const ASSET_KINDS = [
|
|
374
|
+
'image', 'video', 'audio', 'pdf', 'spreadsheet', 'other',
|
|
375
|
+
];
|
|
376
|
+
export const AssetSchema = EntityBaseSchema.extend({
|
|
377
|
+
entity_type: z.literal('asset'),
|
|
378
|
+
name: z.string().min(1, 'Asset name is required'),
|
|
379
|
+
asset_url: z.string().min(1, 'asset_url is required').describe('Public URL or /api/assets/... path'),
|
|
380
|
+
asset_kind: z.enum(ASSET_KINDS).describe('High-level kind that drives icon and viewer'),
|
|
381
|
+
asset_extension: z.string().min(1).describe('Original file extension including the dot, e.g. ".csv"'),
|
|
382
|
+
asset_size: z.number().int().nonnegative().describe('Size in bytes'),
|
|
383
|
+
asset_mime: z.string().optional().describe('Detected MIME type'),
|
|
384
|
+
pages: z.number().int().positive().optional().describe('Page count (PDF only)'),
|
|
385
|
+
width: z.number().int().positive().optional().describe('Pixel width (image/video)'),
|
|
386
|
+
height: z.number().int().positive().optional().describe('Pixel height (image/video)'),
|
|
387
|
+
duration: z.number().nonnegative().optional().describe('Length in seconds (audio/video)'),
|
|
388
|
+
checksum: z.string().optional().describe('Content hash, e.g. sha256:...'),
|
|
316
389
|
});
|
|
317
390
|
// ══════════════════════════════════════════════════════════════════════════════
|
|
391
|
+
// SYSTEM — comment (virtual entity, SQLite-backed)
|
|
392
|
+
// ══════════════════════════════════════════════════════════════════════════════
|
|
393
|
+
/**
|
|
394
|
+
* Comment — a threaded comment anchored to another entry. Unlike every other
|
|
395
|
+
* entity type, comments are NOT stored as markdown files; they live in
|
|
396
|
+
* `comments.db` (see `src/services/comment-service.ts`) for throughput.
|
|
397
|
+
* Agents see them as first-class typed entities through the virtual-entity
|
|
398
|
+
* adapter (`src/mcp/comment-virtual-entity.ts`), which is why the schema
|
|
399
|
+
* lives here alongside the file-backed types.
|
|
400
|
+
*
|
|
401
|
+
* The shape documents what fields the MCP envelope exposes; runtime
|
|
402
|
+
* validation happens inside CommentService itself.
|
|
403
|
+
*/
|
|
404
|
+
export const CommentSchema = EntityBaseSchema.extend({
|
|
405
|
+
entity_type: z.literal('comment'),
|
|
406
|
+
repo: z.string().describe('Folder the anchored entry lives in'),
|
|
407
|
+
entry_type: z.string().describe('Entity type of the anchored entry'),
|
|
408
|
+
entry_id: z.string().describe('Entity id of the anchored entry'),
|
|
409
|
+
thread_id: z.string().describe('Head comment id; replies share the same thread_id'),
|
|
410
|
+
parent_id: z.string().nullable().optional().describe('Parent comment id for replies, null on the head'),
|
|
411
|
+
author_user_id: z.number().int().describe('users.id of the author'),
|
|
412
|
+
author_role: z.enum(['user', 'agent']).describe('Whether the author was a human or the agent'),
|
|
413
|
+
anchor_quote: z.string().nullable().optional()
|
|
414
|
+
.describe('Original highlighted text at creation time, ≤256 chars (used for orphan rendering)'),
|
|
415
|
+
resolved_at: z.string().nullable().optional(),
|
|
416
|
+
resolved_by_user_id: z.number().int().nullable().optional(),
|
|
417
|
+
edited: z.boolean().optional(),
|
|
418
|
+
mentions: z.array(z.string()).optional().describe('Handles of mentioned users'),
|
|
419
|
+
});
|
|
318
420
|
// ══════════════════════════════════════════════════════════════════════════════
|
|
319
421
|
// SCHEMA REGISTRY
|
|
320
422
|
// ══════════════════════════════════════════════════════════════════════════════
|
|
321
423
|
/**
|
|
322
|
-
* Maps entity types to their Zod schemas.
|
|
323
|
-
*
|
|
424
|
+
* Maps entity types to their Zod schemas. 17 canonical built-in types
|
|
425
|
+
* (16 user-facing + 1 system). Workspaces can register additional custom
|
|
426
|
+
* types via SchemaRegistry (schema_extensions).
|
|
324
427
|
*/
|
|
325
428
|
export const ENTITY_SCHEMAS = {
|
|
326
|
-
//
|
|
429
|
+
// CRM (4)
|
|
327
430
|
person: PersonSchema,
|
|
328
431
|
organization: OrganizationSchema,
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
//
|
|
432
|
+
position: PositionSchema,
|
|
433
|
+
deal: DealSchema,
|
|
434
|
+
// PM (4)
|
|
332
435
|
project: ProjectSchema,
|
|
333
|
-
|
|
334
|
-
decision: DecisionSchema,
|
|
436
|
+
event: EventSchema,
|
|
335
437
|
task: TaskSchema,
|
|
336
|
-
document: DocumentSchema,
|
|
337
|
-
dataset: DatasetSchema,
|
|
338
|
-
reference: ReferenceSchema,
|
|
339
|
-
note: NoteSchema,
|
|
340
438
|
deliverable: DeliverableSchema,
|
|
439
|
+
// KM — authored (6)
|
|
440
|
+
document: DocumentSchema,
|
|
441
|
+
deck: DeckSchema,
|
|
341
442
|
publication: PublicationSchema,
|
|
342
|
-
deal: DealSchema,
|
|
343
|
-
// Knowledge (3)
|
|
344
|
-
process: ProcessSchema,
|
|
345
|
-
standard: StandardSchema,
|
|
346
443
|
'case-study': CaseStudySchema,
|
|
444
|
+
service: ServiceSchema,
|
|
445
|
+
skill: SkillSchema,
|
|
446
|
+
// Capture (3)
|
|
447
|
+
note: NoteSchema,
|
|
448
|
+
reference: ReferenceSchema,
|
|
449
|
+
dataset: DatasetSchema,
|
|
450
|
+
// System (2)
|
|
451
|
+
asset: AssetSchema,
|
|
452
|
+
comment: CommentSchema,
|
|
347
453
|
};
|
|
348
454
|
/**
|
|
349
455
|
* Plural subfolder name → singular entity_type mapping
|
|
@@ -351,27 +457,47 @@ export const ENTITY_SCHEMAS = {
|
|
|
351
457
|
export const PLURAL_TO_SINGULAR = {
|
|
352
458
|
'people': 'person',
|
|
353
459
|
'organizations': 'organization',
|
|
354
|
-
'
|
|
355
|
-
'
|
|
460
|
+
'positions': 'position',
|
|
461
|
+
'deals': 'deal',
|
|
356
462
|
'projects': 'project',
|
|
357
|
-
'
|
|
358
|
-
'decisions': 'decision',
|
|
463
|
+
'events': 'event',
|
|
359
464
|
'tasks': 'task',
|
|
360
|
-
'documents': 'document',
|
|
361
|
-
'datasets': 'dataset',
|
|
362
|
-
'references': 'reference',
|
|
363
|
-
'notes': 'note',
|
|
364
465
|
'deliverables': 'deliverable',
|
|
466
|
+
'documents': 'document',
|
|
467
|
+
'decks': 'deck',
|
|
365
468
|
'publications': 'publication',
|
|
366
|
-
'deals': 'deal',
|
|
367
|
-
'processes': 'process',
|
|
368
|
-
'standards': 'standard',
|
|
369
469
|
'case-studies': 'case-study',
|
|
470
|
+
'services': 'service',
|
|
471
|
+
'skills': 'skill',
|
|
472
|
+
'notes': 'note',
|
|
473
|
+
'references': 'reference',
|
|
474
|
+
'datasets': 'dataset',
|
|
475
|
+
'assets': 'asset',
|
|
476
|
+
'comments': 'comment',
|
|
370
477
|
};
|
|
371
478
|
/**
|
|
372
479
|
* Singular entity_type → plural subfolder name mapping
|
|
373
480
|
*/
|
|
374
481
|
export const SINGULAR_TO_PLURAL = Object.fromEntries(Object.entries(PLURAL_TO_SINGULAR).map(([plural, singular]) => [singular, plural]));
|
|
482
|
+
/**
|
|
483
|
+
* Cross-field task rule: a task's start date must not fall after its due date.
|
|
484
|
+
*
|
|
485
|
+
* This lives OUTSIDE the Zod schema on purpose. Expressing it as a
|
|
486
|
+
* `TaskSchema.refine(...)` would turn the ZodObject into a ZodEffects, which
|
|
487
|
+
* breaks shape introspection in schema-registry (`describeZodObject` and the
|
|
488
|
+
* schema_extensions `.extend()` path both rely on `instanceof z.ZodObject`) —
|
|
489
|
+
* and that powers the metadata field panel. So both validation entry points
|
|
490
|
+
* (this module's `validateEntity` and `graph.ts`'s private one) call this
|
|
491
|
+
* helper after a successful parse instead.
|
|
492
|
+
*
|
|
493
|
+
* `dateField` stores ISO 'YYYY-MM-DD' strings, so a lexicographic comparison
|
|
494
|
+
* is a correct date comparison.
|
|
495
|
+
*/
|
|
496
|
+
export function assertValidTaskDates(data) {
|
|
497
|
+
if (data.start_date && data.date && data.start_date > data.date) {
|
|
498
|
+
throw new Error(`Validation failed for task:\n - start_date: Start date (${data.start_date}) must be on or before the due date (${data.date})`);
|
|
499
|
+
}
|
|
500
|
+
}
|
|
375
501
|
/**
|
|
376
502
|
* Validation helper with helpful error messages
|
|
377
503
|
*/
|
|
@@ -381,11 +507,14 @@ export function validateEntity(entityType, data) {
|
|
|
381
507
|
throw new Error(`Unknown entity type: ${entityType}`);
|
|
382
508
|
}
|
|
383
509
|
try {
|
|
384
|
-
|
|
510
|
+
const parsed = schema.parse(data);
|
|
511
|
+
if (entityType === 'task')
|
|
512
|
+
assertValidTaskDates(parsed);
|
|
513
|
+
return parsed;
|
|
385
514
|
}
|
|
386
515
|
catch (error) {
|
|
387
516
|
if (error instanceof z.ZodError) {
|
|
388
|
-
const messages = error.
|
|
517
|
+
const messages = error.issues.map(e => {
|
|
389
518
|
const path = e.path.join('.');
|
|
390
519
|
return ` - ${path}: ${e.message}`;
|
|
391
520
|
});
|
|
@@ -403,7 +532,7 @@ export function validateCustomEntity(data) {
|
|
|
403
532
|
}
|
|
404
533
|
catch (error) {
|
|
405
534
|
if (error instanceof z.ZodError) {
|
|
406
|
-
const messages = error.
|
|
535
|
+
const messages = error.issues.map(e => {
|
|
407
536
|
const path = e.path.join('.');
|
|
408
537
|
return ` - ${path}: ${e.message}`;
|
|
409
538
|
});
|