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
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared payload preparation for `create_entity` / `update_entity` across
|
|
3
|
+
* the MCP surface ([src/mcp/tools.ts](../mcp/tools.ts)) and the agent surface
|
|
4
|
+
* ([src/agent/tools/graph-tools.ts](../agent/tools/graph-tools.ts)).
|
|
5
|
+
*
|
|
6
|
+
* Owns:
|
|
7
|
+
* - Actor identity build (`buildActor`).
|
|
8
|
+
* - Base-field auto-stamping for create (`stampCreateBaseFields`).
|
|
9
|
+
* - Person.status synonym normalization (`normalizePersonStatus`).
|
|
10
|
+
* - Two composers (`prepareCreatePayload`, `prepareUpdatePayload`) that
|
|
11
|
+
* return ready-to-pass options for `graph.create` / `graph.update`.
|
|
12
|
+
*
|
|
13
|
+
* Does NOT own surface-specific concerns: MCP keeps its allowlist check,
|
|
14
|
+
* `withAgentActivity` chip wiring, `emitEntityChange` broadcast, and rich
|
|
15
|
+
* diagnostics; the agent keeps its content sanitiser, workspace dedup
|
|
16
|
+
* warning, eager-skill permission gate, user_handle bridge checks, and
|
|
17
|
+
* `onMutation` / `onAgentActivity` callbacks.
|
|
18
|
+
*
|
|
19
|
+
* Errors from `graph.update` — including `LiveEditorPendingError` from the
|
|
20
|
+
* Phase 2 server-write live-typing guard — propagate through the composers
|
|
21
|
+
* unchanged; callers map them to their surface's error format.
|
|
22
|
+
*/
|
|
23
|
+
import type { AuthUser } from './auth-service.js';
|
|
24
|
+
import type { GitUser } from './git.js';
|
|
25
|
+
import type { CreateEntityOptions, UpdateEntityOptions, EntityFile } from '../core/graph.js';
|
|
26
|
+
import type { EntityType } from '../core/validation.js';
|
|
27
|
+
import type { BodyWriteResult } from '../server/body-write-coordinator.js';
|
|
28
|
+
/**
|
|
29
|
+
* Person.status accepts only `current` | `former` per PersonSchema, but
|
|
30
|
+
* real-world payloads from external agents carry many synonyms. Map them
|
|
31
|
+
* to canonical before validation rejects the call. Unknown values fall
|
|
32
|
+
* through unchanged so validation surfaces them loudly.
|
|
33
|
+
*
|
|
34
|
+
* On create: defaults missing status to `current`.
|
|
35
|
+
* On update: only normalises when status is supplied — don't fabricate a
|
|
36
|
+
* field the caller didn't ask to change.
|
|
37
|
+
*/
|
|
38
|
+
export declare const PERSON_STATUS_ALIASES: Record<string, 'current' | 'former'>;
|
|
39
|
+
/**
|
|
40
|
+
* Build the git-author / audit-trail identity for an authenticated session.
|
|
41
|
+
* `handle` is the canonical id stamped into `created_by` / `updated_by` and
|
|
42
|
+
* used as the git author; falls back to `user-<id>` if a token from before
|
|
43
|
+
* the handle backfill is still in use.
|
|
44
|
+
*
|
|
45
|
+
* Surfaces that may run without an authenticated user (CLI, server-only
|
|
46
|
+
* automations, tests) should keep their existing orchestrator `GitUser` and
|
|
47
|
+
* pass it directly to the composers — `buildActor` requires an `AuthUser`.
|
|
48
|
+
*/
|
|
49
|
+
export declare function buildActor(user: AuthUser): GitUser;
|
|
50
|
+
/**
|
|
51
|
+
* EntityBaseSchema requires entity_id, created_at, updated_at, created_by,
|
|
52
|
+
* and updated_by. External callers (Claude Desktop, Cursor, the agent)
|
|
53
|
+
* typically pass only type-specific data plus the top-level entity_id, so
|
|
54
|
+
* the helper seeds the rest rather than forcing every caller to know the
|
|
55
|
+
* convention. Caller-supplied values for created_at / created_by / etc.
|
|
56
|
+
* win; entity_id is always overwritten to match the top-level arg (it is
|
|
57
|
+
* the lookup key and cannot diverge from the filename).
|
|
58
|
+
*/
|
|
59
|
+
export declare function stampCreateBaseFields(data: Record<string, unknown>, entityId: string, actorHandle: string): Record<string, unknown>;
|
|
60
|
+
export declare function normalizePersonStatus(data: Record<string, unknown>, isCreate: boolean): Record<string, unknown>;
|
|
61
|
+
export interface PrepareCreateInput {
|
|
62
|
+
entityType: EntityType;
|
|
63
|
+
entityId: string;
|
|
64
|
+
data: Record<string, unknown>;
|
|
65
|
+
content?: string;
|
|
66
|
+
folderPath?: string;
|
|
67
|
+
commitMessage?: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Compose the options for `graph.create`. Stamps base fields, mirrors
|
|
71
|
+
* `entity_id` from the top-level arg into frontmatter, normalises
|
|
72
|
+
* `person.status` synonyms, and threads the actor through as the git
|
|
73
|
+
* commit author. The caller still owns access checks, allowlist
|
|
74
|
+
* enforcement, content sanitisation, and broadcast/chip wiring.
|
|
75
|
+
*/
|
|
76
|
+
export declare function prepareCreatePayload(input: PrepareCreateInput, actor: GitUser): CreateEntityOptions;
|
|
77
|
+
export interface PrepareUpdateInput {
|
|
78
|
+
entityType: EntityType;
|
|
79
|
+
entityId: string;
|
|
80
|
+
data?: Record<string, unknown>;
|
|
81
|
+
content?: string;
|
|
82
|
+
commitMessage?: string;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Compose the options for `graph.update`. Mirrors `entity_id` from the
|
|
86
|
+
* top-level arg into frontmatter (defensive against callers that pass a
|
|
87
|
+
* disagreeing value), normalises `person.status` synonyms when status is
|
|
88
|
+
* supplied, and declares `source: 'server-write'` whenever content is
|
|
89
|
+
* present so the body-write path engages the per-doc lock + live-editor
|
|
90
|
+
* guard. `graph.update` re-stamps `updated_at` / `updated_by` itself.
|
|
91
|
+
*/
|
|
92
|
+
export declare function prepareUpdatePayload(input: PrepareUpdateInput, actor: GitUser): UpdateEntityOptions;
|
|
93
|
+
/**
|
|
94
|
+
* Thrown when an update wrote but produced no on-disk diff despite the
|
|
95
|
+
* caller intending a change — i.e. the validator dropped unknown fields or
|
|
96
|
+
* the supplied content matched the existing body. Carries the entity coords
|
|
97
|
+
* and which inputs were ignored so callers can map it to their surface's
|
|
98
|
+
* failure envelope (MCP `fail`, agent `{ success: false }`).
|
|
99
|
+
*/
|
|
100
|
+
export declare class SilentDropError extends Error {
|
|
101
|
+
readonly entityType: string;
|
|
102
|
+
readonly entityId: string;
|
|
103
|
+
readonly dropped: string[];
|
|
104
|
+
constructor(entityType: string, entityId: string, dropped: string[]);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Thrown when a whole-body `update_entity` would remove embedded asset
|
|
108
|
+
* references (image/attachment embeds: `![[Foo.png]]` transclusions or
|
|
109
|
+
* `` markdown images) that are present in the entity's
|
|
110
|
+
* CURRENT body but absent from the submitted content.
|
|
111
|
+
*
|
|
112
|
+
* This is the guard for the silent-image-loss incident: `get_entity` reads
|
|
113
|
+
* the last-persisted disk body, which can lag the live editor (a user's
|
|
114
|
+
* freshly-placed image lives in the Y.Doc before autosave commits it). An
|
|
115
|
+
* agent that fetched stale content, edited text, and resent the whole body
|
|
116
|
+
* would drop those embeds — and because asset binaries live outside git,
|
|
117
|
+
* the lost references aren't recoverable from history. We refuse the write
|
|
118
|
+
* (no disk mutation happens) unless the caller explicitly opts in.
|
|
119
|
+
*
|
|
120
|
+
* Carries the dropped references so callers can map it to their surface's
|
|
121
|
+
* conflict envelope and tell the agent exactly what to preserve.
|
|
122
|
+
*/
|
|
123
|
+
export declare class DroppedAssetError extends Error {
|
|
124
|
+
readonly entityType: string;
|
|
125
|
+
readonly entityId: string;
|
|
126
|
+
readonly dropped: string[];
|
|
127
|
+
constructor(entityType: string, entityId: string, dropped: string[]);
|
|
128
|
+
}
|
|
129
|
+
/** Minimal graph surface diagnosedUpdate needs. */
|
|
130
|
+
export interface DiagnosedUpdateGraph {
|
|
131
|
+
get(entityType: EntityType, entityId: string): EntityFile;
|
|
132
|
+
update(options: UpdateEntityOptions): Promise<EntityFile>;
|
|
133
|
+
/** Live editor body when a seeded Y.Doc is open, else null. Optional so
|
|
134
|
+
* coordinator-less test/CLI graphs satisfy the interface; the asset-drop
|
|
135
|
+
* guard falls back to the on-disk body when it's absent. */
|
|
136
|
+
getLiveBody?(entityType: EntityType, entityId: string): string | null;
|
|
137
|
+
}
|
|
138
|
+
export interface DiagnosedUpdateResult {
|
|
139
|
+
entity: EntityFile;
|
|
140
|
+
frontmatter_changed: boolean;
|
|
141
|
+
content_changed: boolean;
|
|
142
|
+
noop: boolean;
|
|
143
|
+
/** Post-commit broadcast disposition (null on the non-coordinator path). */
|
|
144
|
+
broadcast: BodyWriteResult['broadcast'] | null;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Run graph.update with the c6ef9297 diagnostic contract: snapshot before,
|
|
148
|
+
* update, then report whether frontmatter / content actually changed.
|
|
149
|
+
* Throws {@link SilentDropError} when the caller intended a change that
|
|
150
|
+
* produced no diff. Captures the body-write broadcast disposition.
|
|
151
|
+
*
|
|
152
|
+
* `inputs` are the caller's RAW intent (pre-payload-prep) — used only to
|
|
153
|
+
* decide whether a no-op was actually a silent drop. graph.get may throw
|
|
154
|
+
* (entity not found); callers' existing try/catch surfaces it.
|
|
155
|
+
*/
|
|
156
|
+
export declare function diagnosedUpdate(graph: DiagnosedUpdateGraph, options: UpdateEntityOptions, inputs: {
|
|
157
|
+
data?: Record<string, unknown>;
|
|
158
|
+
content?: string;
|
|
159
|
+
}, guard?: {
|
|
160
|
+
allowAssetRemoval?: boolean;
|
|
161
|
+
}): Promise<DiagnosedUpdateResult>;
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared payload preparation for `create_entity` / `update_entity` across
|
|
3
|
+
* the MCP surface ([src/mcp/tools.ts](../mcp/tools.ts)) and the agent surface
|
|
4
|
+
* ([src/agent/tools/graph-tools.ts](../agent/tools/graph-tools.ts)).
|
|
5
|
+
*
|
|
6
|
+
* Owns:
|
|
7
|
+
* - Actor identity build (`buildActor`).
|
|
8
|
+
* - Base-field auto-stamping for create (`stampCreateBaseFields`).
|
|
9
|
+
* - Person.status synonym normalization (`normalizePersonStatus`).
|
|
10
|
+
* - Two composers (`prepareCreatePayload`, `prepareUpdatePayload`) that
|
|
11
|
+
* return ready-to-pass options for `graph.create` / `graph.update`.
|
|
12
|
+
*
|
|
13
|
+
* Does NOT own surface-specific concerns: MCP keeps its allowlist check,
|
|
14
|
+
* `withAgentActivity` chip wiring, `emitEntityChange` broadcast, and rich
|
|
15
|
+
* diagnostics; the agent keeps its content sanitiser, workspace dedup
|
|
16
|
+
* warning, eager-skill permission gate, user_handle bridge checks, and
|
|
17
|
+
* `onMutation` / `onAgentActivity` callbacks.
|
|
18
|
+
*
|
|
19
|
+
* Errors from `graph.update` — including `LiveEditorPendingError` from the
|
|
20
|
+
* Phase 2 server-write live-typing guard — propagate through the composers
|
|
21
|
+
* unchanged; callers map them to their surface's error format.
|
|
22
|
+
*/
|
|
23
|
+
import { droppedAssetEmbeds } from '../core/embeds.js';
|
|
24
|
+
/**
|
|
25
|
+
* Person.status accepts only `current` | `former` per PersonSchema, but
|
|
26
|
+
* real-world payloads from external agents carry many synonyms. Map them
|
|
27
|
+
* to canonical before validation rejects the call. Unknown values fall
|
|
28
|
+
* through unchanged so validation surfaces them loudly.
|
|
29
|
+
*
|
|
30
|
+
* On create: defaults missing status to `current`.
|
|
31
|
+
* On update: only normalises when status is supplied — don't fabricate a
|
|
32
|
+
* field the caller didn't ask to change.
|
|
33
|
+
*/
|
|
34
|
+
export const PERSON_STATUS_ALIASES = {
|
|
35
|
+
current: 'current',
|
|
36
|
+
active: 'current',
|
|
37
|
+
prospective: 'current',
|
|
38
|
+
'prospective-contact': 'current',
|
|
39
|
+
'current-contact': 'current',
|
|
40
|
+
former: 'former',
|
|
41
|
+
'former-contact': 'former',
|
|
42
|
+
inactive: 'former',
|
|
43
|
+
past: 'former',
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Build the git-author / audit-trail identity for an authenticated session.
|
|
47
|
+
* `handle` is the canonical id stamped into `created_by` / `updated_by` and
|
|
48
|
+
* used as the git author; falls back to `user-<id>` if a token from before
|
|
49
|
+
* the handle backfill is still in use.
|
|
50
|
+
*
|
|
51
|
+
* Surfaces that may run without an authenticated user (CLI, server-only
|
|
52
|
+
* automations, tests) should keep their existing orchestrator `GitUser` and
|
|
53
|
+
* pass it directly to the composers — `buildActor` requires an `AuthUser`.
|
|
54
|
+
*/
|
|
55
|
+
export function buildActor(user) {
|
|
56
|
+
const handle = user.handle || `user-${user.id}`;
|
|
57
|
+
return {
|
|
58
|
+
id: handle,
|
|
59
|
+
name: user.displayName || handle,
|
|
60
|
+
email: `${handle}@studiograph.local`,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* EntityBaseSchema requires entity_id, created_at, updated_at, created_by,
|
|
65
|
+
* and updated_by. External callers (Claude Desktop, Cursor, the agent)
|
|
66
|
+
* typically pass only type-specific data plus the top-level entity_id, so
|
|
67
|
+
* the helper seeds the rest rather than forcing every caller to know the
|
|
68
|
+
* convention. Caller-supplied values for created_at / created_by / etc.
|
|
69
|
+
* win; entity_id is always overwritten to match the top-level arg (it is
|
|
70
|
+
* the lookup key and cannot diverge from the filename).
|
|
71
|
+
*/
|
|
72
|
+
export function stampCreateBaseFields(data, entityId, actorHandle) {
|
|
73
|
+
const now = new Date().toISOString();
|
|
74
|
+
return {
|
|
75
|
+
created_at: now,
|
|
76
|
+
updated_at: now,
|
|
77
|
+
created_by: actorHandle,
|
|
78
|
+
updated_by: actorHandle,
|
|
79
|
+
...data,
|
|
80
|
+
entity_id: entityId,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export function normalizePersonStatus(data, isCreate) {
|
|
84
|
+
const raw = data.status;
|
|
85
|
+
if (raw === undefined || raw === null || raw === '') {
|
|
86
|
+
return isCreate ? { ...data, status: 'current' } : data;
|
|
87
|
+
}
|
|
88
|
+
if (typeof raw !== 'string')
|
|
89
|
+
return data;
|
|
90
|
+
const mapped = PERSON_STATUS_ALIASES[raw.toLowerCase()];
|
|
91
|
+
if (!mapped || mapped === raw)
|
|
92
|
+
return data;
|
|
93
|
+
return { ...data, status: mapped };
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Compose the options for `graph.create`. Stamps base fields, mirrors
|
|
97
|
+
* `entity_id` from the top-level arg into frontmatter, normalises
|
|
98
|
+
* `person.status` synonyms, and threads the actor through as the git
|
|
99
|
+
* commit author. The caller still owns access checks, allowlist
|
|
100
|
+
* enforcement, content sanitisation, and broadcast/chip wiring.
|
|
101
|
+
*/
|
|
102
|
+
export function prepareCreatePayload(input, actor) {
|
|
103
|
+
let data = stampCreateBaseFields(input.data, input.entityId, actor.id);
|
|
104
|
+
if (input.entityType === 'person') {
|
|
105
|
+
data = normalizePersonStatus(data, true);
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
entityType: input.entityType,
|
|
109
|
+
entityId: input.entityId,
|
|
110
|
+
data: data,
|
|
111
|
+
content: input.content,
|
|
112
|
+
folderPath: input.folderPath,
|
|
113
|
+
commitMessage: input.commitMessage,
|
|
114
|
+
user: actor,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Compose the options for `graph.update`. Mirrors `entity_id` from the
|
|
119
|
+
* top-level arg into frontmatter (defensive against callers that pass a
|
|
120
|
+
* disagreeing value), normalises `person.status` synonyms when status is
|
|
121
|
+
* supplied, and declares `source: 'server-write'` whenever content is
|
|
122
|
+
* present so the body-write path engages the per-doc lock + live-editor
|
|
123
|
+
* guard. `graph.update` re-stamps `updated_at` / `updated_by` itself.
|
|
124
|
+
*/
|
|
125
|
+
export function prepareUpdatePayload(input, actor) {
|
|
126
|
+
let mergedData;
|
|
127
|
+
if (input.data !== undefined) {
|
|
128
|
+
mergedData = { ...input.data, entity_id: input.entityId };
|
|
129
|
+
if (input.entityType === 'person') {
|
|
130
|
+
mergedData = normalizePersonStatus(mergedData, false);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
entityType: input.entityType,
|
|
135
|
+
entityId: input.entityId,
|
|
136
|
+
data: mergedData,
|
|
137
|
+
content: input.content,
|
|
138
|
+
source: input.content !== undefined ? 'server-write' : undefined,
|
|
139
|
+
commitMessage: input.commitMessage,
|
|
140
|
+
user: actor,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
// ── Diagnosed update ─────────────────────────────────────────────────────
|
|
144
|
+
//
|
|
145
|
+
// commit c6ef9297 hardened MCP update_entity so an agent isn't misled by a
|
|
146
|
+
// success envelope when the validator silently drops fields or the supplied
|
|
147
|
+
// content matches the existing body. That guard lived only in the MCP
|
|
148
|
+
// surface; the internal agent tool returned a generic success message.
|
|
149
|
+
// Both surfaces now route through diagnosedUpdate so the contract is
|
|
150
|
+
// surface-independent.
|
|
151
|
+
/** Fields graph.update stamps on every call — they mutate even on a
|
|
152
|
+
* content-only update, so they're excluded from the semantic diff that
|
|
153
|
+
* decides "did the caller's intent actually land?" */
|
|
154
|
+
const AUTO_STAMPED_FIELDS = new Set(['updated_at', 'updated_by']);
|
|
155
|
+
function semanticFrontmatter(data) {
|
|
156
|
+
return Object.fromEntries(Object.entries(data).filter(([k]) => !AUTO_STAMPED_FIELDS.has(k)));
|
|
157
|
+
}
|
|
158
|
+
function deepEqual(a, b) {
|
|
159
|
+
if (a === b)
|
|
160
|
+
return true;
|
|
161
|
+
if (a === null || b === null)
|
|
162
|
+
return false;
|
|
163
|
+
if (typeof a !== typeof b)
|
|
164
|
+
return false;
|
|
165
|
+
if (typeof a !== 'object')
|
|
166
|
+
return false;
|
|
167
|
+
if (Array.isArray(a) !== Array.isArray(b))
|
|
168
|
+
return false;
|
|
169
|
+
if (Array.isArray(a)) {
|
|
170
|
+
const bArr = b;
|
|
171
|
+
if (a.length !== bArr.length)
|
|
172
|
+
return false;
|
|
173
|
+
return a.every((v, i) => deepEqual(v, bArr[i]));
|
|
174
|
+
}
|
|
175
|
+
const aObj = a;
|
|
176
|
+
const bObj = b;
|
|
177
|
+
const aKeys = Object.keys(aObj);
|
|
178
|
+
const bKeys = Object.keys(bObj);
|
|
179
|
+
if (aKeys.length !== bKeys.length)
|
|
180
|
+
return false;
|
|
181
|
+
return aKeys.every(k => deepEqual(aObj[k], bObj[k]));
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Thrown when an update wrote but produced no on-disk diff despite the
|
|
185
|
+
* caller intending a change — i.e. the validator dropped unknown fields or
|
|
186
|
+
* the supplied content matched the existing body. Carries the entity coords
|
|
187
|
+
* and which inputs were ignored so callers can map it to their surface's
|
|
188
|
+
* failure envelope (MCP `fail`, agent `{ success: false }`).
|
|
189
|
+
*/
|
|
190
|
+
export class SilentDropError extends Error {
|
|
191
|
+
entityType;
|
|
192
|
+
entityId;
|
|
193
|
+
dropped;
|
|
194
|
+
constructor(entityType, entityId, dropped) {
|
|
195
|
+
super(`update_entity wrote to ${entityType}/${entityId} but the file is byte-identical to its prior state. ` +
|
|
196
|
+
`Inputs that did not produce a diff: ${dropped.join(', ')}. ` +
|
|
197
|
+
`This usually means the schema validator silently dropped unknown fields or the supplied content matched the existing body.`);
|
|
198
|
+
this.entityType = entityType;
|
|
199
|
+
this.entityId = entityId;
|
|
200
|
+
this.dropped = dropped;
|
|
201
|
+
this.name = 'SilentDropError';
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Thrown when a whole-body `update_entity` would remove embedded asset
|
|
206
|
+
* references (image/attachment embeds: `![[Foo.png]]` transclusions or
|
|
207
|
+
* `` markdown images) that are present in the entity's
|
|
208
|
+
* CURRENT body but absent from the submitted content.
|
|
209
|
+
*
|
|
210
|
+
* This is the guard for the silent-image-loss incident: `get_entity` reads
|
|
211
|
+
* the last-persisted disk body, which can lag the live editor (a user's
|
|
212
|
+
* freshly-placed image lives in the Y.Doc before autosave commits it). An
|
|
213
|
+
* agent that fetched stale content, edited text, and resent the whole body
|
|
214
|
+
* would drop those embeds — and because asset binaries live outside git,
|
|
215
|
+
* the lost references aren't recoverable from history. We refuse the write
|
|
216
|
+
* (no disk mutation happens) unless the caller explicitly opts in.
|
|
217
|
+
*
|
|
218
|
+
* Carries the dropped references so callers can map it to their surface's
|
|
219
|
+
* conflict envelope and tell the agent exactly what to preserve.
|
|
220
|
+
*/
|
|
221
|
+
export class DroppedAssetError extends Error {
|
|
222
|
+
entityType;
|
|
223
|
+
entityId;
|
|
224
|
+
dropped;
|
|
225
|
+
constructor(entityType, entityId, dropped) {
|
|
226
|
+
super(`update_entity would remove ${dropped.length} embedded asset reference(s) from ${entityType}/${entityId} ` +
|
|
227
|
+
`that are present in the current document but missing from the submitted body: ${dropped.join(', ')}. ` +
|
|
228
|
+
`Whole-body writes replace the entire body, so these images/attachments would be unlinked — and asset binaries ` +
|
|
229
|
+
`are not versioned in git, so the references cannot be recovered from history. ` +
|
|
230
|
+
`Re-fetch the entry with get_entity (which now returns live editor content), keep the embed lines you didn't ` +
|
|
231
|
+
`mean to touch, and resubmit. To delete them deliberately, set allow_image_removal: true (MCP) / ` +
|
|
232
|
+
`allowImageRemoval: true (agent). For small text edits like renaming a heading, prefer patch_entity, which ` +
|
|
233
|
+
`never rewrites the whole body.`);
|
|
234
|
+
this.entityType = entityType;
|
|
235
|
+
this.entityId = entityId;
|
|
236
|
+
this.dropped = dropped;
|
|
237
|
+
this.name = 'DroppedAssetError';
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Run graph.update with the c6ef9297 diagnostic contract: snapshot before,
|
|
242
|
+
* update, then report whether frontmatter / content actually changed.
|
|
243
|
+
* Throws {@link SilentDropError} when the caller intended a change that
|
|
244
|
+
* produced no diff. Captures the body-write broadcast disposition.
|
|
245
|
+
*
|
|
246
|
+
* `inputs` are the caller's RAW intent (pre-payload-prep) — used only to
|
|
247
|
+
* decide whether a no-op was actually a silent drop. graph.get may throw
|
|
248
|
+
* (entity not found); callers' existing try/catch surfaces it.
|
|
249
|
+
*/
|
|
250
|
+
export async function diagnosedUpdate(graph, options, inputs, guard) {
|
|
251
|
+
const before = graph.get(options.entityType, options.entityId);
|
|
252
|
+
const beforeFrontmatter = semanticFrontmatter(before.data);
|
|
253
|
+
const beforeContent = before.document.content;
|
|
254
|
+
// Asset-drop guard (pre-write — nothing is mutated if this throws). A
|
|
255
|
+
// whole-body content rewrite must not silently drop image/attachment
|
|
256
|
+
// embeds that the CURRENT document carries. "Current" prefers the live
|
|
257
|
+
// editor body over disk: the user's freshly-placed image may be in the
|
|
258
|
+
// Y.Doc but not yet committed, and `before` (disk) wouldn't show it. The
|
|
259
|
+
// live-editor write guard (LiveEditorPendingError) only fires when a
|
|
260
|
+
// client is connected; this catches the closed-tab / evicted-doc case and
|
|
261
|
+
// the agent-edited-stale-content case that produced the incident.
|
|
262
|
+
if (options.content !== undefined && !guard?.allowAssetRemoval) {
|
|
263
|
+
const currentBody = graph.getLiveBody?.(options.entityType, options.entityId) ?? beforeContent;
|
|
264
|
+
const dropped = droppedAssetEmbeds(currentBody, options.content);
|
|
265
|
+
if (dropped.length > 0) {
|
|
266
|
+
throw new DroppedAssetError(options.entityType, options.entityId, dropped);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
let broadcast = null;
|
|
270
|
+
options.onBroadcast = (b) => { broadcast = b; };
|
|
271
|
+
const entity = await graph.update(options);
|
|
272
|
+
const afterFrontmatter = semanticFrontmatter(entity.data);
|
|
273
|
+
const afterContent = entity.document.content;
|
|
274
|
+
const frontmatter_changed = !deepEqual(beforeFrontmatter, afterFrontmatter);
|
|
275
|
+
const content_changed = beforeContent !== afterContent;
|
|
276
|
+
const noop = !frontmatter_changed && !content_changed;
|
|
277
|
+
if (noop) {
|
|
278
|
+
const intendedDataChange = inputs.data !== undefined &&
|
|
279
|
+
Object.keys(inputs.data).some(k => {
|
|
280
|
+
if (AUTO_STAMPED_FIELDS.has(k))
|
|
281
|
+
return false;
|
|
282
|
+
return !deepEqual(inputs.data[k], before.data[k]);
|
|
283
|
+
});
|
|
284
|
+
const intendedContentChange = inputs.content !== undefined && inputs.content !== beforeContent;
|
|
285
|
+
if (intendedDataChange || intendedContentChange) {
|
|
286
|
+
const dropped = [];
|
|
287
|
+
if (intendedDataChange)
|
|
288
|
+
dropped.push('data');
|
|
289
|
+
if (intendedContentChange)
|
|
290
|
+
dropped.push('content');
|
|
291
|
+
throw new SilentDropError(entity.entityType, entity.id, dropped);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
return { entity, frontmatter_changed, content_changed, noop, broadcast };
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=entity-mutations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-mutations.js","sourceRoot":"","sources":["../../src/services/entity-mutations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event Processor — source-agnostic event capture processing
|
|
3
|
+
*
|
|
4
|
+
* Accepts a common MeetingPayload from any capture source (desktop client,
|
|
5
|
+
* external integrations, calendar, manual) and writes an `event` entity
|
|
6
|
+
* with `type: meeting` (the default). Handles:
|
|
7
|
+
* 1. Entity creation with proper frontmatter
|
|
8
|
+
* 2. Participant resolution to existing person entities
|
|
9
|
+
* 3. LLM-powered summary generation from transcript
|
|
10
|
+
* 4. Structured extraction (action items, decisions)
|
|
11
|
+
* 5. Task entity creation from action items
|
|
12
|
+
* 6. Body template population
|
|
13
|
+
*
|
|
14
|
+
* Today the only event capture surface is meeting recording, so the
|
|
15
|
+
* payload type is still MeetingPayload — generalizing the payload shape
|
|
16
|
+
* is a follow-up when/if other event sources land.
|
|
17
|
+
*/
|
|
18
|
+
import type { WorkspaceManager } from '../core/workspace-manager.js';
|
|
19
|
+
import type { WsHub } from '../server/ws-hub.js';
|
|
20
|
+
import type { YjsManager } from '../server/yjs-manager.js';
|
|
21
|
+
import type { GitUser } from './git.js';
|
|
22
|
+
export interface MeetingPayload {
|
|
23
|
+
/** Unique ID from the source (e.g., desktop session ID, calendar event ID) */
|
|
24
|
+
sourceId: string;
|
|
25
|
+
/** Source identifier: 'desktop-client', 'calendar', 'manual', or an integration ID */
|
|
26
|
+
source: string;
|
|
27
|
+
/** Meeting title */
|
|
28
|
+
title: string;
|
|
29
|
+
/** ISO datetime when the meeting started */
|
|
30
|
+
startedAt: string;
|
|
31
|
+
/** ISO datetime when the meeting ended */
|
|
32
|
+
endedAt?: string;
|
|
33
|
+
/** Duration in minutes */
|
|
34
|
+
durationMinutes?: number;
|
|
35
|
+
/** Participants */
|
|
36
|
+
participants: MeetingParticipant[];
|
|
37
|
+
/** Transcript segments (if available) */
|
|
38
|
+
transcript?: TranscriptSegment[];
|
|
39
|
+
/** Raw transcript as text (alternative to segments) */
|
|
40
|
+
transcriptText?: string;
|
|
41
|
+
/** User-written memo/notes */
|
|
42
|
+
memo?: string;
|
|
43
|
+
/** Meeting platform (e.g., 'google-meet', 'zoom', 'teams') */
|
|
44
|
+
platform?: string;
|
|
45
|
+
/** Meeting URL */
|
|
46
|
+
meetingUrl?: string;
|
|
47
|
+
/** Pre-generated summary (some sources provide their own) */
|
|
48
|
+
existingSummary?: string;
|
|
49
|
+
/** Additional metadata from the source */
|
|
50
|
+
metadata?: Record<string, any>;
|
|
51
|
+
}
|
|
52
|
+
export interface MeetingParticipant {
|
|
53
|
+
name: string;
|
|
54
|
+
email?: string;
|
|
55
|
+
isSelf?: boolean;
|
|
56
|
+
}
|
|
57
|
+
export interface TranscriptSegment {
|
|
58
|
+
speaker: string;
|
|
59
|
+
text: string;
|
|
60
|
+
timestamp: number;
|
|
61
|
+
isFinal?: boolean;
|
|
62
|
+
channel?: 'mic' | 'tab';
|
|
63
|
+
}
|
|
64
|
+
export interface ProcessingResult {
|
|
65
|
+
entityId: string;
|
|
66
|
+
repo: string;
|
|
67
|
+
url: string;
|
|
68
|
+
attendeeLinks: string[];
|
|
69
|
+
extractionPending: boolean;
|
|
70
|
+
tasksCreated: string[];
|
|
71
|
+
}
|
|
72
|
+
export declare class EventProcessor {
|
|
73
|
+
private workspaceManager;
|
|
74
|
+
private wsHub?;
|
|
75
|
+
private yjsManager?;
|
|
76
|
+
constructor(workspaceManager: WorkspaceManager, wsHub?: WsHub | undefined, yjsManager?: YjsManager | undefined);
|
|
77
|
+
/**
|
|
78
|
+
* Process a meeting payload: create entity, resolve participants,
|
|
79
|
+
* generate summary asynchronously.
|
|
80
|
+
*/
|
|
81
|
+
process(payload: MeetingPayload, repo: string, user?: GitUser): Promise<ProcessingResult>;
|
|
82
|
+
/**
|
|
83
|
+
* Process a meeting for an entity that already exists (created by the web app).
|
|
84
|
+
* Meeting capture UI flow: entity was created when recording started,
|
|
85
|
+
* user typed notes in it, now we add the transcript and generate the summary.
|
|
86
|
+
*/
|
|
87
|
+
processExisting(payload: MeetingPayload, repo: string, existingEntityId: string, user?: GitUser): Promise<ProcessingResult>;
|
|
88
|
+
/**
|
|
89
|
+
* Async processing: LLM summary, extraction, task creation
|
|
90
|
+
*/
|
|
91
|
+
private processAsync;
|
|
92
|
+
/**
|
|
93
|
+
* Create a task entity from an action item string, linked to the event.
|
|
94
|
+
*/
|
|
95
|
+
private createTask;
|
|
96
|
+
private generateEntityId;
|
|
97
|
+
resolveParticipants(participants: MeetingParticipant[], repo: string): Promise<string[]>;
|
|
98
|
+
private formatTranscript;
|
|
99
|
+
private generateSummary;
|
|
100
|
+
private extractStructuredData;
|
|
101
|
+
private getModelConfig;
|
|
102
|
+
private broadcast;
|
|
103
|
+
private slugify;
|
|
104
|
+
}
|