studiograph 1.3.48-next.21 → 1.3.48-next.210
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 +87 -3
- package/dist/agent/agent-pool.js +188 -15
- package/dist/agent/agent-pool.js.map +1 -1
- package/dist/agent/followups.d.ts +34 -0
- package/dist/agent/followups.js +52 -0
- package/dist/agent/followups.js.map +1 -0
- package/dist/agent/orchestrator.d.ts +101 -4
- package/dist/agent/orchestrator.js +464 -66
- package/dist/agent/orchestrator.js.map +1 -1
- package/dist/agent/prompts/entity-types-section.d.ts +34 -0
- package/dist/agent/prompts/entity-types-section.js +76 -0
- package/dist/agent/prompts/entity-types-section.js.map +1 -0
- package/dist/agent/prompts/system.md +112 -54
- 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/artifact-canvas/skill.md +152 -0
- package/dist/agent/skills/entity-schema.md +75 -431
- package/dist/agent/skills/interview/entity-templates.md +38 -37
- package/dist/agent/skills/interview/question-domains.md +54 -49
- package/dist/agent/skills/interview/skill.md +84 -16
- package/dist/agent/skills/schema-rules.md +28 -28
- package/dist/agent/tools/artifact-tools.d.ts +124 -0
- package/dist/agent/tools/artifact-tools.js +207 -0
- package/dist/agent/tools/artifact-tools.js.map +1 -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 +6 -5
- package/dist/agent/tools/fs-tools.js +5 -5
- package/dist/agent/tools/fs-tools.js.map +1 -1
- package/dist/agent/tools/graph-tools.d.ts +48 -72
- package/dist/agent/tools/graph-tools.js +852 -329
- 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 -43
- package/dist/agent/tools/permission-tools.js.map +1 -1
- package/dist/agent/tools/tool-loader.js +5 -4
- package/dist/agent/tools/tool-loader.js.map +1 -1
- package/dist/agent/tools/web-tools.js +58 -9
- package/dist/agent/tools/web-tools.js.map +1 -1
- package/dist/cli/commands/about.d.ts +1 -0
- package/dist/cli/commands/about.js +55 -3
- package/dist/cli/commands/about.js.map +1 -1
- package/dist/cli/commands/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/{collection.js → admin/folder.js} +33 -32
- 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/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 +5 -1
- 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 +54 -6
- package/dist/cli/commands/mcp.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 +132 -34
- package/dist/cli/commands/reset.js.map +1 -1
- package/dist/cli/commands/serve.js +231 -26
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/sync.d.ts +1 -1
- package/dist/cli/commands/sync.js +237 -227
- 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 -26
- 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 +30 -49
- package/dist/cli/setup-wizard.js +39 -40
- 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/artifact-asset-urls.d.ts +51 -0
- package/dist/core/artifact-asset-urls.js +79 -0
- package/dist/core/artifact-asset-urls.js.map +1 -0
- package/dist/core/artifact-bundle.d.ts +69 -0
- package/dist/core/artifact-bundle.js +305 -0
- package/dist/core/artifact-bundle.js.map +1 -0
- package/dist/core/artifact-escape.d.ts +5 -0
- package/dist/core/artifact-escape.js +26 -0
- package/dist/core/artifact-escape.js.map +1 -0
- package/dist/core/artifact-export.d.ts +17 -0
- package/dist/core/artifact-export.js +529 -0
- package/dist/core/artifact-export.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 +96 -0
- package/dist/core/embeds.js +187 -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 +67 -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 +142 -0
- package/dist/core/entity-types-catalog.js.map +1 -0
- package/dist/core/field-library.d.ts +62 -0
- package/dist/core/field-library.js +129 -0
- package/dist/core/field-library.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/format-registry.d.ts +170 -0
- package/dist/core/format-registry.js +412 -0
- package/dist/core/format-registry.js.map +1 -0
- package/dist/core/graph.d.ts +773 -14
- package/dist/core/graph.js +2269 -308
- 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/refs.d.ts +41 -0
- package/dist/core/refs.js +80 -0
- package/dist/core/refs.js.map +1 -0
- package/dist/core/schema-registry.d.ts +66 -0
- package/dist/core/schema-registry.js +198 -37
- 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/tavily.d.ts +18 -0
- package/dist/core/secrets/probes/tavily.js +58 -0
- package/dist/core/secrets/probes/tavily.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 +616 -0
- package/dist/core/secrets/registry.js.map +1 -0
- package/dist/core/types.d.ts +77 -483
- package/dist/core/types.js +25 -3
- package/dist/core/types.js.map +1 -1
- package/dist/core/user-config.d.ts +75 -12
- package/dist/core/user-config.js +155 -14
- package/dist/core/user-config.js.map +1 -1
- package/dist/core/validation.d.ts +786 -1373
- package/dist/core/validation.js +458 -147
- package/dist/core/validation.js.map +1 -1
- package/dist/core/workspace-manager.d.ts +87 -14
- package/dist/core/workspace-manager.js +222 -94
- package/dist/core/workspace-manager.js.map +1 -1
- package/dist/core/workspace.d.ts +19 -5
- package/dist/core/workspace.js +67 -39
- 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 +72 -2
- package/dist/mcp/connector-manager.js +211 -32
- package/dist/mcp/connector-manager.js.map +1 -1
- package/dist/mcp/oauth-provider.d.ts +0 -5
- package/dist/mcp/oauth-provider.js +10 -22
- package/dist/mcp/oauth-provider.js.map +1 -1
- package/dist/mcp/oauth-registry.d.ts +46 -8
- package/dist/mcp/oauth-registry.js +52 -13
- package/dist/mcp/oauth-registry.js.map +1 -1
- package/dist/mcp/server-discovery.d.ts +73 -0
- package/dist/mcp/server-discovery.js +164 -0
- package/dist/mcp/server-discovery.js.map +1 -0
- package/dist/mcp/server.d.ts +24 -3
- package/dist/mcp/server.js +53 -10
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/state-signer.d.ts +62 -0
- package/dist/mcp/state-signer.js +205 -0
- package/dist/mcp/state-signer.js.map +1 -0
- package/dist/mcp/stdio-proxy.d.ts +67 -0
- package/dist/mcp/stdio-proxy.js +149 -0
- package/dist/mcp/stdio-proxy.js.map +1 -0
- package/dist/mcp/tools.d.ts +65 -2
- package/dist/mcp/tools.js +1772 -124
- package/dist/mcp/tools.js.map +1 -1
- package/dist/server/__tests__/helpers/graph-api.d.ts +16 -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/artifact-asset-mint.d.ts +41 -0
- package/dist/server/artifact-asset-mint.js +59 -0
- package/dist/server/artifact-asset-mint.js.map +1 -0
- package/dist/server/asset-index-queue.d.ts +98 -0
- package/dist/server/asset-index-queue.js +193 -0
- package/dist/server/asset-index-queue.js.map +1 -0
- package/dist/server/body-write-coordinator.d.ts +161 -0
- package/dist/server/body-write-coordinator.js +182 -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 +29 -3
- package/dist/server/index.js +657 -269
- package/dist/server/index.js.map +1 -1
- package/dist/server/middleware/sanitize.d.ts +46 -0
- package/dist/server/middleware/sanitize.js +182 -0
- package/dist/server/middleware/sanitize.js.map +1 -0
- package/dist/server/routes/artifact-export-api.d.ts +11 -0
- package/dist/server/routes/artifact-export-api.js +159 -0
- package/dist/server/routes/artifact-export-api.js.map +1 -0
- package/dist/server/routes/asset-api.d.ts +76 -1
- package/dist/server/routes/asset-api.js +761 -61
- package/dist/server/routes/asset-api.js.map +1 -1
- package/dist/server/routes/audit-api.d.ts +24 -0
- package/dist/server/routes/audit-api.js +117 -0
- package/dist/server/routes/audit-api.js.map +1 -0
- package/dist/server/routes/auth-api.js +532 -63
- package/dist/server/routes/auth-api.js.map +1 -1
- package/dist/server/routes/capture-api.d.ts +10 -3
- package/dist/server/routes/capture-api.js +213 -25
- package/dist/server/routes/capture-api.js.map +1 -1
- package/dist/server/routes/chat-sessions-api.d.ts +13 -0
- package/dist/server/routes/chat-sessions-api.js +455 -0
- package/dist/server/routes/chat-sessions-api.js.map +1 -0
- package/dist/server/routes/chat.d.ts +35 -1
- package/dist/server/routes/chat.js +699 -54
- 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 +3 -2
- package/dist/server/routes/config-api.js +179 -49
- package/dist/server/routes/config-api.js.map +1 -1
- package/dist/server/routes/connectors-api.js +177 -42
- package/dist/server/routes/connectors-api.js.map +1 -1
- package/dist/server/routes/event-ingest-api.d.ts +15 -0
- package/dist/server/routes/{meeting-ingest-api.js → event-ingest-api.js} +35 -20
- package/dist/server/routes/event-ingest-api.js.map +1 -0
- package/dist/server/routes/field-library-api.d.ts +28 -0
- package/dist/server/routes/field-library-api.js +126 -0
- package/dist/server/routes/field-library-api.js.map +1 -0
- package/dist/server/routes/git-http.d.ts +2 -2
- package/dist/server/routes/git-http.js +86 -39
- package/dist/server/routes/git-http.js.map +1 -1
- package/dist/server/routes/graph-api-access.d.ts +57 -0
- package/dist/server/routes/graph-api-access.js +112 -0
- package/dist/server/routes/graph-api-access.js.map +1 -0
- package/dist/server/routes/graph-api.d.ts +1 -1
- package/dist/server/routes/graph-api.js +1455 -325
- 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/import-batch.d.ts +24 -0
- package/dist/server/routes/import-batch.js +33 -0
- package/dist/server/routes/import-batch.js.map +1 -0
- package/dist/server/routes/insights-api.d.ts +9 -2
- package/dist/server/routes/insights-api.js +355 -61
- 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 +24 -8
- package/dist/server/routes/mcp.js.map +1 -1
- package/dist/server/routes/oauth-api.d.ts +67 -0
- package/dist/server/routes/oauth-api.js +421 -0
- package/dist/server/routes/oauth-api.js.map +1 -0
- package/dist/server/routes/permissions-api.d.ts +9 -2
- package/dist/server/routes/permissions-api.js +87 -31
- package/dist/server/routes/permissions-api.js.map +1 -1
- package/dist/server/routes/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/share-api.d.ts +32 -0
- package/dist/server/routes/share-api.js +234 -0
- package/dist/server/routes/share-api.js.map +1 -0
- package/dist/server/routes/views-api.js +51 -0
- 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 +142 -23
- package/dist/server/routes/workspace-api.js.map +1 -1
- package/dist/server/routes/ws.d.ts +3 -2
- package/dist/server/routes/ws.js +68 -17
- 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 -14
- package/dist/server/session-manager.js.map +1 -1
- package/dist/server/ws-hub.d.ts +124 -37
- package/dist/server/ws-hub.js +0 -0
- package/dist/server/ws-hub.js.map +1 -1
- package/dist/server/yjs-manager.d.ts +278 -7
- package/dist/server/yjs-manager.js +830 -38
- 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 +165 -0
- package/dist/services/access-control.js.map +1 -0
- package/dist/services/artifact-asset-token.d.ts +69 -0
- package/dist/services/artifact-asset-token.js +94 -0
- package/dist/services/artifact-asset-token.js.map +1 -0
- package/dist/services/artifact-library-sources.d.ts +3 -0
- package/dist/services/artifact-library-sources.js +44 -0
- package/dist/services/artifact-library-sources.js.map +1 -0
- package/dist/services/artifact-render-export.d.ts +97 -0
- package/dist/services/artifact-render-export.js +467 -0
- package/dist/services/artifact-render-export.js.map +1 -0
- package/dist/services/asset-caption-service.d.ts +103 -0
- package/dist/services/asset-caption-service.js +186 -0
- package/dist/services/asset-caption-service.js.map +1 -0
- package/dist/services/asset-delete-authz.d.ts +31 -0
- package/dist/services/asset-delete-authz.js +61 -0
- package/dist/services/asset-delete-authz.js.map +1 -0
- package/dist/services/asset-finalize-service.d.ts +58 -0
- package/dist/services/asset-finalize-service.js +216 -0
- package/dist/services/asset-finalize-service.js.map +1 -0
- package/dist/services/asset-import-service.d.ts +111 -0
- package/dist/services/asset-import-service.js +394 -0
- package/dist/services/asset-import-service.js.map +1 -0
- package/dist/services/asset-index-sweep.d.ts +95 -0
- package/dist/services/asset-index-sweep.js +249 -0
- package/dist/services/asset-index-sweep.js.map +1 -0
- package/dist/services/asset-lifecycle-check.d.ts +22 -0
- package/dist/services/asset-lifecycle-check.js +80 -0
- package/dist/services/asset-lifecycle-check.js.map +1 -0
- package/dist/services/asset-listing.d.ts +72 -0
- package/dist/services/asset-listing.js +321 -0
- package/dist/services/asset-listing.js.map +1 -0
- package/dist/services/asset-presign-service.d.ts +68 -0
- package/dist/services/asset-presign-service.js +124 -0
- package/dist/services/asset-presign-service.js.map +1 -0
- package/dist/services/asset-sidecar-service.d.ts +28 -0
- package/dist/services/asset-sidecar-service.js +79 -0
- package/dist/services/asset-sidecar-service.js.map +1 -0
- package/dist/services/asset-upload-errors.d.ts +41 -0
- package/dist/services/asset-upload-errors.js +45 -0
- package/dist/services/asset-upload-errors.js.map +1 -0
- package/dist/services/asset-upload-service.d.ts +56 -0
- package/dist/services/asset-upload-service.js +200 -0
- package/dist/services/asset-upload-service.js.map +1 -0
- package/dist/services/asset-upload-token.d.ts +58 -0
- package/dist/services/asset-upload-token.js +75 -0
- package/dist/services/asset-upload-token.js.map +1 -0
- package/dist/services/assets/asset-index-service.d.ts +127 -0
- package/dist/services/assets/asset-index-service.js +227 -0
- package/dist/services/assets/asset-index-service.js.map +1 -0
- package/dist/services/assets/base.d.ts +128 -2
- package/dist/services/assets/base.js +98 -1
- package/dist/services/assets/base.js.map +1 -1
- package/dist/services/assets/index.d.ts +114 -1
- package/dist/services/assets/index.js +221 -0
- package/dist/services/assets/index.js.map +1 -1
- package/dist/services/assets/local.d.ts +16 -1
- package/dist/services/assets/local.js +110 -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 +87 -1
- package/dist/services/assets/r2.js +203 -1
- package/dist/services/assets/r2.js.map +1 -1
- package/dist/services/auth-service.d.ts +312 -45
- package/dist/services/auth-service.js +1011 -195
- package/dist/services/auth-service.js.map +1 -1
- package/dist/services/chat-session-service.d.ts +188 -0
- package/dist/services/chat-session-service.js +512 -0
- package/dist/services/chat-session-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/comment-virtual-entity.d.ts +36 -0
- package/dist/services/comment-virtual-entity.js +71 -0
- package/dist/services/comment-virtual-entity.js.map +1 -0
- package/dist/services/convert-service.d.ts +64 -0
- package/dist/services/convert-service.js +68 -0
- package/dist/services/convert-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 +213 -0
- package/dist/services/entity-mutations.js +380 -0
- package/dist/services/entity-mutations.js.map +1 -0
- package/dist/services/{meeting-processor.d.ts → event-processor.d.ts} +15 -8
- package/dist/services/{meeting-processor.js → event-processor.js} +124 -65
- package/dist/services/event-processor.js.map +1 -0
- package/dist/services/extract/docx.d.ts +1 -0
- package/dist/services/extract/docx.js +233 -0
- package/dist/services/extract/docx.js.map +1 -0
- package/dist/services/extract/index.d.ts +9 -0
- package/dist/services/extract/index.js +10 -0
- package/dist/services/extract/index.js.map +1 -0
- package/dist/services/extract/pdf.d.ts +13 -0
- package/dist/services/extract/pdf.js +69 -0
- package/dist/services/extract/pdf.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 +58 -0
- package/dist/services/git.js +194 -55
- package/dist/services/git.js.map +1 -1
- package/dist/services/graph-maintenance.js +4 -4
- package/dist/services/graph-maintenance.js.map +1 -1
- package/dist/services/import-service.d.ts +51 -2
- package/dist/services/import-service.js +254 -107
- package/dist/services/import-service.js.map +1 -1
- package/dist/services/lint-service.js +10 -17
- package/dist/services/lint-service.js.map +1 -1
- package/dist/services/markdown.d.ts +12 -1
- package/dist/services/markdown.js +77 -9
- package/dist/services/markdown.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/model-capabilities.d.ts +41 -0
- package/dist/services/model-capabilities.js +107 -0
- package/dist/services/model-capabilities.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/oauth-server-store.d.ts +147 -0
- package/dist/services/oauth-server-store.js +319 -0
- package/dist/services/oauth-server-store.js.map +1 -0
- package/dist/services/orphan-service.js +2 -2
- package/dist/services/orphan-service.js.map +1 -1
- package/dist/services/personal-folder.d.ts +40 -0
- package/dist/services/personal-folder.js +101 -0
- package/dist/services/personal-folder.js.map +1 -0
- package/dist/services/scratch-asset-promote.d.ts +57 -0
- package/dist/services/scratch-asset-promote.js +95 -0
- package/dist/services/scratch-asset-promote.js.map +1 -0
- package/dist/services/scratch-attachment-service.d.ts +196 -0
- package/dist/services/scratch-attachment-service.js +347 -0
- package/dist/services/scratch-attachment-service.js.map +1 -0
- package/dist/services/share-link-service.d.ts +57 -0
- package/dist/services/share-link-service.js +142 -0
- package/dist/services/share-link-service.js.map +1 -0
- package/dist/services/user-person-bridge.d.ts +136 -0
- package/dist/services/user-person-bridge.js +340 -0
- package/dist/services/user-person-bridge.js.map +1 -0
- package/dist/services/vector-service.d.ts +282 -5
- package/dist/services/vector-service.js +585 -29
- package/dist/services/vector-service.js.map +1 -1
- package/dist/services/workspace-access.d.ts +108 -0
- package/dist/services/workspace-access.js +149 -0
- package/dist/services/workspace-access.js.map +1 -0
- package/dist/services/workspace-assets-folder.d.ts +46 -0
- package/dist/services/workspace-assets-folder.js +75 -0
- package/dist/services/workspace-assets-folder.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.Bs_z3Z86.css +2 -0
- package/dist/web/_app/immutable/assets/12.DlIf1mKh.css +1 -0
- package/dist/web/_app/immutable/assets/14.7d-Q37wc.css +1 -0
- package/dist/web/_app/immutable/assets/15.BwBFdc1D.css +1 -0
- package/dist/web/_app/immutable/assets/16.CmLrbzZp.css +1 -0
- package/dist/web/_app/immutable/assets/17.DcuK5ZVm.css +1 -0
- package/dist/web/_app/immutable/assets/2.DATnR31c.css +1 -0
- package/dist/web/_app/immutable/assets/3.Cz4H8n_O.css +1 -0
- package/dist/web/_app/immutable/assets/4.aDHteTDy.css +1 -0
- package/dist/web/_app/immutable/assets/6.CF1i5Bon.css +1 -0
- package/dist/web/_app/immutable/assets/ArtifactEntityView.C4ooklFD.css +1 -0
- package/dist/web/_app/immutable/assets/AssetLibraryPicker.BOFW0MvF.css +1 -0
- package/dist/web/_app/immutable/assets/BulkActionsBar.cmKvHzRK.css +1 -0
- package/dist/web/_app/immutable/assets/CalendarView.lBCvS3X5.css +1 -0
- package/dist/web/_app/immutable/assets/CodeMirrorEditor.D6hf2pNJ.css +1 -0
- package/dist/web/_app/immutable/assets/CopyField.DVGZtw4U.css +1 -0
- package/dist/web/_app/immutable/assets/FolderMembersPanel.kiYnDFHu.css +1 -0
- package/dist/web/_app/immutable/assets/FolderMutationDialogs.BMRF6Z3z.css +1 -0
- package/dist/web/_app/immutable/assets/FolderPicker.Cp46GHe2.css +1 -0
- package/dist/web/_app/immutable/assets/GalleryView.WBGxxUQc.css +1 -0
- package/dist/web/_app/immutable/assets/GraphView.BJtGL9py.css +1 -0
- package/dist/web/_app/immutable/assets/KanbanView.BOaI5KFL.css +1 -0
- package/dist/web/_app/immutable/assets/Link.vV0ne105.css +1 -0
- package/dist/web/_app/immutable/assets/Markdown.BZnsSOSf.css +1 -0
- package/dist/web/_app/immutable/assets/Rail.ilusFgD4.css +1 -0
- package/dist/web/_app/immutable/assets/SettingsDialog.D7-BO6S_.css +1 -0
- package/dist/web/_app/immutable/assets/Spinner.UBfl0pab.css +1 -0
- package/dist/web/_app/immutable/assets/StopFilledAlt.fNlDN65D.css +1 -0
- package/dist/web/_app/immutable/assets/TimelineView.xAZBJhHw.css +1 -0
- package/dist/web/_app/immutable/assets/WorkspaceView.C8ErUJAY.css +1 -0
- package/dist/web/_app/immutable/assets/button.BlLm4Dg1.css +1 -0
- package/dist/web/_app/immutable/assets/history-summary.LpmHXasl.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.BgnafZ4K.css +1 -0
- package/dist/web/_app/immutable/assets/realtime.DDCWxn3B.css +1 -0
- package/dist/web/_app/immutable/assets/select.B90KUqR4.css +1 -0
- package/dist/web/_app/immutable/assets/sheet.RF9RBmml.css +1 -0
- package/dist/web/_app/immutable/chunks/22qYtvr82.js +1 -0
- package/dist/web/_app/immutable/chunks/3anKjXOb.js +1 -0
- package/dist/web/_app/immutable/chunks/6S9WOky52.js +1 -0
- package/dist/web/_app/immutable/chunks/7xJ91z7d.js +2 -0
- package/dist/web/_app/immutable/chunks/9K8VREGP.js +1 -0
- package/dist/web/_app/immutable/chunks/B-TGZnCt2.js +1 -0
- package/dist/web/_app/immutable/chunks/B-n5q6ku.js +1 -0
- package/dist/web/_app/immutable/chunks/B0p2fSEV2.js +1 -0
- package/dist/web/_app/immutable/chunks/B2oi87jG.js +2 -0
- package/dist/web/_app/immutable/chunks/B4DG5QOL.js +1 -0
- package/dist/web/_app/immutable/chunks/B6Lt-qaJ.js +1 -0
- package/dist/web/_app/immutable/chunks/B6qeIQZz.js +2 -0
- package/dist/web/_app/immutable/chunks/B9KfEsQw2.js +1 -0
- package/dist/web/_app/immutable/chunks/B9VRF5aH2.js +1 -0
- package/dist/web/_app/immutable/chunks/BCQQzpbj.js +1 -0
- package/dist/web/_app/immutable/chunks/BF0vIqH9.js +1 -0
- package/dist/web/_app/immutable/chunks/BFp1K70l.js +8 -0
- package/dist/web/_app/immutable/chunks/BFr7Funh.js +1 -0
- package/dist/web/_app/immutable/chunks/BFx32D20.js +2 -0
- package/dist/web/_app/immutable/chunks/BLs1h0Rh2.js +1 -0
- package/dist/web/_app/immutable/chunks/BPzV_xOS2.js +1 -0
- package/dist/web/_app/immutable/chunks/BRvMjAzW.js +2 -0
- package/dist/web/_app/immutable/chunks/BV-iCKqa.js +1 -0
- package/dist/web/_app/immutable/chunks/BZi3uKF4.js +1 -0
- package/dist/web/_app/immutable/chunks/B_PyL87x.js +2 -0
- package/dist/web/_app/immutable/chunks/BbfHGU9n2.js +1 -0
- package/dist/web/_app/immutable/chunks/Bbqu2-5G2.js +1 -0
- package/dist/web/_app/immutable/chunks/BdWZJpmv.js +2 -0
- package/dist/web/_app/immutable/chunks/BfnFtsiY.js +1 -0
- package/dist/web/_app/immutable/chunks/BlgjVmFM2.js +14 -0
- package/dist/web/_app/immutable/chunks/BmgXvmIG.js +5 -0
- package/dist/web/_app/immutable/chunks/BpCG9m962.js +1 -0
- package/dist/web/_app/immutable/chunks/BrveeylZ.js +1 -0
- package/dist/web/_app/immutable/chunks/BsW72fyR2.js +1 -0
- package/dist/web/_app/immutable/chunks/Bti_XKwx.js +2692 -0
- package/dist/web/_app/immutable/chunks/BuhW5Fr0.js +689 -0
- package/dist/web/_app/immutable/chunks/Bx74EEyn2.js +1 -0
- package/dist/web/_app/immutable/chunks/BxPN0T61.js +1 -0
- package/dist/web/_app/immutable/chunks/Bxk27YWG.js +1 -0
- package/dist/web/_app/immutable/chunks/Bz9lrgGs.js +1 -0
- package/dist/web/_app/immutable/chunks/BzaxZ6j12.js +1 -0
- package/dist/web/_app/immutable/chunks/C1B4xDs0.js +1 -0
- package/dist/web/_app/immutable/chunks/C1trcC8M.js +7 -0
- package/dist/web/_app/immutable/chunks/C3F_NMTk.js +3 -0
- package/dist/web/_app/immutable/chunks/C4PZmGUQ.js +2 -0
- package/dist/web/_app/immutable/chunks/C6wYiSz8.js +1 -0
- package/dist/web/_app/immutable/chunks/C70saxIl.js +1 -0
- package/dist/web/_app/immutable/chunks/C9tvkk7Y2.js +22 -0
- package/dist/web/_app/immutable/chunks/CE1XZ5DE.js +1 -0
- package/dist/web/_app/immutable/chunks/CEahbtnP.js +1 -0
- package/dist/web/_app/immutable/chunks/CGkd0a-c2.js +2 -0
- package/dist/web/_app/immutable/chunks/CIoNEHQ82.js +184 -0
- package/dist/web/_app/immutable/chunks/CK4z74w5.js +1 -0
- package/dist/web/_app/immutable/chunks/COo3HgCZ.js +1 -0
- package/dist/web/_app/immutable/chunks/CP8_U450.js +1 -0
- package/dist/web/_app/immutable/chunks/CQ1eQ93t2.js +6 -0
- package/dist/web/_app/immutable/chunks/CQyBDccA.js +1 -0
- package/dist/web/_app/immutable/chunks/CUFQMEBn2.js +1 -0
- package/dist/web/_app/immutable/chunks/CV5OSCJc.js +1 -0
- package/dist/web/_app/immutable/chunks/CYEYDNwO2.js +1 -0
- package/dist/web/_app/immutable/chunks/CZgFaimi2.js +83 -0
- package/dist/web/_app/immutable/chunks/CZqvCTCv.js +1 -0
- package/dist/web/_app/immutable/chunks/CcWaWbrI2.js +1 -0
- package/dist/web/_app/immutable/chunks/CdtzRVZK.js +1 -0
- package/dist/web/_app/immutable/chunks/CfYG72Hc.js +1 -0
- package/dist/web/_app/immutable/chunks/Cg-ND0cl.js +1 -0
- package/dist/web/_app/immutable/chunks/Ch1kmm3J2.js +1 -0
- package/dist/web/_app/immutable/chunks/CjiMLTwX2.js +1 -0
- package/dist/web/_app/immutable/chunks/CkoeSJ8K.js +6 -0
- package/dist/web/_app/immutable/chunks/Cp87MaaW.js +1 -0
- package/dist/web/_app/immutable/chunks/Cqm5wAin.js +1 -0
- package/dist/web/_app/immutable/chunks/Ct1uesdW.js +2 -0
- package/dist/web/_app/immutable/chunks/CuYPXpWU.js +1 -0
- package/dist/web/_app/immutable/chunks/Cuq8J2Td.js +1 -0
- package/dist/web/_app/immutable/chunks/CvSEodTA.js +1 -0
- package/dist/web/_app/immutable/chunks/CvqqrTrj.js +1 -0
- package/dist/web/_app/immutable/chunks/CzXdOgVl2.js +7 -0
- package/dist/web/_app/immutable/chunks/D0W7c6Sg.js +185 -0
- package/dist/web/_app/immutable/chunks/D0rBhnqB2.js +1 -0
- package/dist/web/_app/immutable/chunks/D1-GZSN1.js +1 -0
- package/dist/web/_app/immutable/chunks/D1BLcNJ7.js +1 -0
- package/dist/web/_app/immutable/chunks/D1yvtriI.js +1 -0
- package/dist/web/_app/immutable/chunks/D25NMRpl.js +1 -0
- package/dist/web/_app/immutable/chunks/D3F675fu2.js +2 -0
- package/dist/web/_app/immutable/chunks/D4UrtGC1.js +1 -0
- package/dist/web/_app/immutable/chunks/D8wZ2xul.js +4 -0
- package/dist/web/_app/immutable/chunks/DA3HEX3X.js +1 -0
- package/dist/web/_app/immutable/chunks/DE2TCESD2.js +1 -0
- package/dist/web/_app/immutable/chunks/DN-gIRdd2.js +1 -0
- package/dist/web/_app/immutable/chunks/DPUVu0T0.js +1 -0
- package/dist/web/_app/immutable/chunks/DPcejqKZ.js +1 -0
- package/dist/web/_app/immutable/chunks/DQMWa2t7.js +1 -0
- package/dist/web/_app/immutable/chunks/DRPMJ-3M.js +2 -0
- package/dist/web/_app/immutable/chunks/DRPnwQAm.js +1 -0
- package/dist/web/_app/immutable/chunks/DXmfl4Hq2.js +1 -0
- package/dist/web/_app/immutable/chunks/DXsFrDer2.js +1 -0
- package/dist/web/_app/immutable/chunks/DYc5KW3F.js +1 -0
- package/dist/web/_app/immutable/chunks/DcPrzUMJ.js +1 -0
- package/dist/web/_app/immutable/chunks/DdQVGKgM.js +1 -0
- package/dist/web/_app/immutable/chunks/DiFfW--R2.js +2 -0
- package/dist/web/_app/immutable/chunks/DjIqa1_y.js +2 -0
- package/dist/web/_app/immutable/chunks/Dl63IUnH2.js +224 -0
- package/dist/web/_app/immutable/chunks/DmFdD6zT.js +1 -0
- package/dist/web/_app/immutable/chunks/Dn3R8S-U.js +1 -0
- package/dist/web/_app/immutable/chunks/DpNr1GQ2.js +1 -0
- package/dist/web/_app/immutable/chunks/DsFEd8vL2.js +1 -0
- package/dist/web/_app/immutable/chunks/DuxziNnw.js +1 -0
- package/dist/web/_app/immutable/chunks/FuiJnZG0.js +1 -0
- package/dist/web/_app/immutable/chunks/Izkulod7.js +1 -0
- package/dist/web/_app/immutable/chunks/LYL8znYR2.js +23 -0
- package/dist/web/_app/immutable/chunks/ON7Gta0d.js +1 -0
- package/dist/web/_app/immutable/chunks/PhN6tXuJ2.js +1 -0
- package/dist/web/_app/immutable/chunks/PyLyCpuL.js +1 -0
- package/dist/web/_app/immutable/chunks/RG7IUVLn2.js +2 -0
- package/dist/web/_app/immutable/chunks/RK4gCWN0.js +2 -0
- package/dist/web/_app/immutable/chunks/SnzlL4ZV.js +1 -0
- package/dist/web/_app/immutable/chunks/XcWejFm_.js +5 -0
- package/dist/web/_app/immutable/chunks/Xkp5hSA1.js +1 -0
- package/dist/web/_app/immutable/chunks/al_nidE9.js +1 -0
- package/dist/web/_app/immutable/chunks/e50-izZO2.js +1 -0
- package/dist/web/_app/immutable/chunks/golz20La2.js +2 -0
- package/dist/web/_app/immutable/chunks/hG-QCarB.js +1 -0
- package/dist/web/_app/immutable/chunks/kNaey6uv.js +1 -0
- package/dist/web/_app/immutable/chunks/nXReuy-5.js +3 -0
- package/dist/web/_app/immutable/chunks/o61aZZFZ2.js +66 -0
- package/dist/web/_app/immutable/chunks/qwr5boV8.js +1 -0
- package/dist/web/_app/immutable/chunks/rjjyuGhb.js +1 -0
- package/dist/web/_app/immutable/chunks/uBgoVlsx.js +3 -0
- package/dist/web/_app/immutable/chunks/xY0c-UfG.js +3 -0
- package/dist/web/_app/immutable/chunks/xeNvx4Bl2.js +1 -0
- package/dist/web/_app/immutable/chunks/xihTtKlq.js +1 -0
- package/dist/web/_app/immutable/entry/app.dqA31fjy.js +2 -0
- package/dist/web/_app/immutable/entry/start.BB1XrAea.js +1 -0
- package/dist/web/_app/immutable/nodes/0.dALEQAnu.js +2 -0
- package/dist/web/_app/immutable/nodes/1.aFU32Ukj.js +1 -0
- package/dist/web/_app/immutable/nodes/10.C2wB-OnW.js +1 -0
- package/dist/web/_app/immutable/nodes/11.CI3a8Rj5.js +1 -0
- package/dist/web/_app/immutable/nodes/12.CsTvsKzB.js +1 -0
- package/dist/web/_app/immutable/nodes/13.CYrHXCA8.js +1 -0
- package/dist/web/_app/immutable/nodes/14.B31HrQ26.js +1 -0
- package/dist/web/_app/immutable/nodes/15.DxgnZ61h.js +1 -0
- package/dist/web/_app/immutable/nodes/16.DAP8cwVb.js +1 -0
- package/dist/web/_app/immutable/nodes/17.CmwXtCDY.js +77 -0
- package/dist/web/_app/immutable/nodes/2.BuGXEIlN.js +122 -0
- package/dist/web/_app/immutable/nodes/3.CmhZJWHE.js +6 -0
- package/dist/web/_app/immutable/nodes/4.BRfoPTm-.js +11 -0
- package/dist/web/_app/immutable/nodes/5.C7gPuZM_.js +1 -0
- package/dist/web/_app/immutable/nodes/6.qKODVbya.js +6 -0
- package/dist/web/_app/immutable/nodes/7.BZO37zAJ.js +1 -0
- package/dist/web/_app/immutable/nodes/8.xF_Dd1BO.js +1 -0
- package/dist/web/_app/immutable/nodes/9.Bow4UyKV.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 -21
- package/dist/web/studiograph-logomark.svg +29 -0
- package/package.json +35 -14
- package/dist/agent/skills/enrich-entities.md +0 -136
- package/dist/agent/skills/sync-configuration.md +0 -119
- package/dist/agent/skills/sync-setup.md +0 -82
- package/dist/agent/tools/message-tools.d.ts +0 -42
- package/dist/agent/tools/message-tools.js +0 -106
- package/dist/agent/tools/message-tools.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/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.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/start.d.ts +0 -7
- package/dist/cli/commands/start.js +0 -584
- package/dist/cli/commands/start.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 -175
- 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/integrations/registry.d.ts +0 -8
- package/dist/integrations/registry.js +0 -7
- package/dist/integrations/registry.js.map +0 -1
- package/dist/integrations/types.d.ts +0 -43
- package/dist/integrations/types.js +0 -5
- package/dist/integrations/types.js.map +0 -1
- package/dist/lib/lib/utils.d.ts +0 -2
- package/dist/lib/lib/utils.js +0 -6
- package/dist/lib/lib/utils.js.map +0 -1
- package/dist/server/chrome/chrome.css +0 -691
- package/dist/server/chrome/chrome.js +0 -374
- 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/meeting-ingest-api.d.ts +0 -14
- package/dist/server/routes/meeting-ingest-api.js.map +0 -1
- package/dist/server/routes/messages-api.d.ts +0 -15
- package/dist/server/routes/messages-api.js +0 -385
- package/dist/server/routes/messages-api.js.map +0 -1
- package/dist/services/batch-processor.d.ts +0 -49
- package/dist/services/batch-processor.js +0 -166
- package/dist/services/batch-processor.js.map +0 -1
- package/dist/services/briefing.d.ts +0 -26
- package/dist/services/briefing.js +0 -230
- package/dist/services/briefing.js.map +0 -1
- package/dist/services/heartbeat.d.ts +0 -28
- package/dist/services/heartbeat.js +0 -183
- package/dist/services/heartbeat.js.map +0 -1
- package/dist/services/image-import-service.d.ts +0 -24
- package/dist/services/image-import-service.js +0 -108
- package/dist/services/image-import-service.js.map +0 -1
- package/dist/services/insights.d.ts +0 -38
- package/dist/services/insights.js +0 -269
- package/dist/services/insights.js.map +0 -1
- package/dist/services/meeting-processor.js.map +0 -1
- package/dist/services/message-service.d.ts +0 -68
- package/dist/services/message-service.js +0 -220
- package/dist/services/message-service.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.uPSqtsC5.css +0 -1
- package/dist/web/_app/immutable/assets/11.2jzI3cZY.css +0 -1
- package/dist/web/_app/immutable/assets/12.CT4xL4K3.css +0 -1
- package/dist/web/_app/immutable/assets/13.BUrHkYry.css +0 -1
- package/dist/web/_app/immutable/assets/2.DpQWr6q6.css +0 -1
- package/dist/web/_app/immutable/assets/3.BxdqT7zi.css +0 -1
- package/dist/web/_app/immutable/assets/4.DdNqjd0T.css +0 -1
- package/dist/web/_app/immutable/assets/5.DFeGxLYf.css +0 -1
- package/dist/web/_app/immutable/assets/6.DXZr_rI_.css +0 -1
- package/dist/web/_app/immutable/assets/GraphView.D9ePpZez.css +0 -1
- package/dist/web/_app/immutable/assets/Toaster.rN8r_Hzv.css +0 -1
- package/dist/web/_app/immutable/assets/ViewToolbar.BWE03S64.css +0 -1
- package/dist/web/_app/immutable/assets/WorkspaceView.CgGDi_Zb.css +0 -1
- package/dist/web/_app/immutable/assets/wikilinks.CzMBkUMB.css +0 -1
- package/dist/web/_app/immutable/chunks/-jG4Obyh.js +0 -4
- package/dist/web/_app/immutable/chunks/2nrc8f_O.js +0 -1
- package/dist/web/_app/immutable/chunks/7S2LGqoP.js +0 -2
- package/dist/web/_app/immutable/chunks/8Q3ZJIYu.js +0 -1
- package/dist/web/_app/immutable/chunks/B8ydT5xX.js +0 -2
- package/dist/web/_app/immutable/chunks/BB_5th5W.js +0 -3383
- package/dist/web/_app/immutable/chunks/BEn6N5c2.js +0 -1
- package/dist/web/_app/immutable/chunks/BFNNbCAM.js +0 -1
- package/dist/web/_app/immutable/chunks/BFZZEUd5.js +0 -1
- package/dist/web/_app/immutable/chunks/BGk8kfOE.js +0 -2
- package/dist/web/_app/immutable/chunks/BIBCr278.js +0 -1
- package/dist/web/_app/immutable/chunks/BPCkkwqe.js +0 -1
- package/dist/web/_app/immutable/chunks/BhlvzGQx.js +0 -1
- package/dist/web/_app/immutable/chunks/BlMknQeF.js +0 -1
- package/dist/web/_app/immutable/chunks/BpjqrlCg.js +0 -1
- package/dist/web/_app/immutable/chunks/BrebtJNG.js +0 -18
- package/dist/web/_app/immutable/chunks/ByBZ7JIT.js +0 -1
- package/dist/web/_app/immutable/chunks/Bz0ZjVQE.js +0 -2
- package/dist/web/_app/immutable/chunks/BzJTZOK2.js +0 -1
- package/dist/web/_app/immutable/chunks/C0LVZhvn.js +0 -1
- package/dist/web/_app/immutable/chunks/C3uBrOS5.js +0 -1
- package/dist/web/_app/immutable/chunks/C8R1sDpW.js +0 -1
- package/dist/web/_app/immutable/chunks/CDRHrs0g.js +0 -1
- package/dist/web/_app/immutable/chunks/CN5_py1I.js +0 -1
- package/dist/web/_app/immutable/chunks/CPne482a.js +0 -1
- package/dist/web/_app/immutable/chunks/CSVbGg_b.js +0 -5
- package/dist/web/_app/immutable/chunks/CWyU-seV.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/ChsiIm-E.js +0 -1
- package/dist/web/_app/immutable/chunks/CojKppbh.js +0 -1
- package/dist/web/_app/immutable/chunks/CqkleIqs.js +0 -1
- package/dist/web/_app/immutable/chunks/CtYLtD7K.js +0 -1
- package/dist/web/_app/immutable/chunks/D-HDy5qS.js +0 -1
- package/dist/web/_app/immutable/chunks/D5aIYSkd.js +0 -1
- package/dist/web/_app/immutable/chunks/DBBXARVf.js +0 -1
- package/dist/web/_app/immutable/chunks/DFYOFE3o.js +0 -1
- package/dist/web/_app/immutable/chunks/DKaafS50.js +0 -1
- package/dist/web/_app/immutable/chunks/DUMOo1Pn.js +0 -1
- package/dist/web/_app/immutable/chunks/DWX9f6AF.js +0 -1
- package/dist/web/_app/immutable/chunks/DY8-EONP.js +0 -1
- package/dist/web/_app/immutable/chunks/DkoHPElM.js +0 -1
- package/dist/web/_app/immutable/chunks/DnL9f0lc.js +0 -7
- package/dist/web/_app/immutable/chunks/DsnmJJEf.js +0 -1
- package/dist/web/_app/immutable/chunks/DujahU3W.js +0 -1
- package/dist/web/_app/immutable/chunks/FBn-ES5k.js +0 -1
- package/dist/web/_app/immutable/chunks/HQpwSOb3.js +0 -1
- package/dist/web/_app/immutable/chunks/KyjzlWRN.js +0 -2
- package/dist/web/_app/immutable/chunks/PPVm8Dsz.js +0 -1
- package/dist/web/_app/immutable/chunks/UwYfmrPx.js +0 -2
- package/dist/web/_app/immutable/chunks/W25ZVI8L.js +0 -2
- package/dist/web/_app/immutable/chunks/WSUKABI_.js +0 -1
- package/dist/web/_app/immutable/chunks/XjsuEnNE.js +0 -5
- package/dist/web/_app/immutable/chunks/ZD6ARAtb.js +0 -1
- package/dist/web/_app/immutable/chunks/pBTf4stg.js +0 -2
- package/dist/web/_app/immutable/chunks/rGIarcnp.js +0 -1
- package/dist/web/_app/immutable/chunks/vxEtkL8z.js +0 -1
- package/dist/web/_app/immutable/chunks/wDIGUaoU.js +0 -3
- package/dist/web/_app/immutable/entry/app.ZHiTM8WS.js +0 -2
- package/dist/web/_app/immutable/entry/start.C9-FfAVc.js +0 -1
- package/dist/web/_app/immutable/nodes/0.D92Orz8k.js +0 -2
- package/dist/web/_app/immutable/nodes/1.BMdyglM_.js +0 -1
- package/dist/web/_app/immutable/nodes/10.BilVDHSL.js +0 -1
- package/dist/web/_app/immutable/nodes/11.CS9E0Hic.js +0 -1
- package/dist/web/_app/immutable/nodes/12.D3BOxYzG.js +0 -1
- package/dist/web/_app/immutable/nodes/13.CClMKYtN.js +0 -1
- package/dist/web/_app/immutable/nodes/2.C8KKElPL.js +0 -267
- package/dist/web/_app/immutable/nodes/3.C5n5uiWU.js +0 -5
- package/dist/web/_app/immutable/nodes/4.DcGVvgiL.js +0 -11
- package/dist/web/_app/immutable/nodes/5.DxIjnFQO.js +0 -4
- package/dist/web/_app/immutable/nodes/6.lkh6kKLj.js +0 -1
- package/dist/web/_app/immutable/nodes/7.Bg7SbfhA.js +0 -1
- package/dist/web/_app/immutable/nodes/8.DcXWCNBE.js +0 -1
- package/dist/web/_app/immutable/nodes/9.Cefi8Jfm.js +0 -1
|
@@ -0,0 +1,512 @@
|
|
|
1
|
+
import Database from 'better-sqlite3';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { existsSync, mkdirSync, chmodSync } from 'node:fs';
|
|
4
|
+
/**
|
|
5
|
+
* Server-side persistence for the agent rail's chat sessions (the conversation
|
|
6
|
+
* history users see in the launcher pills / Chats view). The server is the SOLE
|
|
7
|
+
* store — the web client keeps no localStorage copy.
|
|
8
|
+
*
|
|
9
|
+
* Storage is two tables (mirrors the CommentService layout: a dedicated
|
|
10
|
+
* `chat-sessions.db` SQLite file under `.studiograph/`, WAL mode, a `meta`
|
|
11
|
+
* schema-version scaffold, per-user scoping via a `user_id` column):
|
|
12
|
+
*
|
|
13
|
+
* chat_sessions — one row per chat, metadata only (NO messages column).
|
|
14
|
+
* chat_messages — one row per message, ordered by `seq` within a session.
|
|
15
|
+
*
|
|
16
|
+
* Rows (not a JSON blob) mean a single chat has no size limit, the full history
|
|
17
|
+
* is retained, and title/pin updates (the session row) are decoupled from
|
|
18
|
+
* message appends (message rows) so a late stream completion can't clobber a
|
|
19
|
+
* rename. `meta` carries the web `ChatMessage` extras (segments/suggestions/
|
|
20
|
+
* error) as opaque JSON so the message schema can evolve without a migration.
|
|
21
|
+
*/
|
|
22
|
+
const SCHEMA_VERSION = 2;
|
|
23
|
+
/**
|
|
24
|
+
* Abuse safety bound (DoS insurance, NOT a UX cap). A runaway client can't grow
|
|
25
|
+
* the DB without limit: appends are rejected once a user is at the ceiling.
|
|
26
|
+
* Generous enough to never bite real use — a heavy user with hundreds of long
|
|
27
|
+
* chats sits orders of magnitude below this.
|
|
28
|
+
*/
|
|
29
|
+
const MAX_MESSAGES_PER_USER = 100_000;
|
|
30
|
+
/** Per-append byte budget across the appended rows' content + meta. Fastify's
|
|
31
|
+
* bodyLimit (10MB) is the outer wall; this is the inner, per-turn guard. */
|
|
32
|
+
const MAX_APPEND_BYTES = 1024 * 1024;
|
|
33
|
+
export class ChatSessionTooLargeError extends Error {
|
|
34
|
+
}
|
|
35
|
+
export class ChatSessionForbiddenError extends Error {
|
|
36
|
+
}
|
|
37
|
+
const PREVIEW_LEN = 80;
|
|
38
|
+
export class ChatSessionService {
|
|
39
|
+
db;
|
|
40
|
+
/** Injected external cleanup for a deleted chat (composer-vision E2a): delete
|
|
41
|
+
* the OWNED scratch file BLOBS (by exact key — only `source='upload'` rows;
|
|
42
|
+
* library-sourced rows reference permanent assets and are excluded by the
|
|
43
|
+
* caller, D9) and the agent-pool session JSON (which holds base64 copies of
|
|
44
|
+
* vision images). This SQLite service deletes its own rows; the callback
|
|
45
|
+
* handles the blob store + agent pool it has no handle to.
|
|
46
|
+
* `sessionId` = single delete; undefined = delete-all-for-user. */
|
|
47
|
+
scratchCleanup;
|
|
48
|
+
/** Wire the scratch blob + agent-pool cleanup (see field doc). */
|
|
49
|
+
setScratchCleanup(fn) {
|
|
50
|
+
this.scratchCleanup = fn;
|
|
51
|
+
}
|
|
52
|
+
constructor(workspacePath) {
|
|
53
|
+
const sgDir = join(workspacePath, '.studiograph');
|
|
54
|
+
if (!existsSync(sgDir))
|
|
55
|
+
mkdirSync(sgDir, { recursive: true });
|
|
56
|
+
const dbPath = join(sgDir, 'chat-sessions.db');
|
|
57
|
+
this.db = new Database(dbPath);
|
|
58
|
+
if (process.platform !== 'win32') {
|
|
59
|
+
try {
|
|
60
|
+
chmodSync(dbPath, 0o600);
|
|
61
|
+
}
|
|
62
|
+
catch { /* non-fatal */ }
|
|
63
|
+
}
|
|
64
|
+
this.db.pragma('journal_mode = WAL');
|
|
65
|
+
this.db.exec(`
|
|
66
|
+
CREATE TABLE IF NOT EXISTS chat_sessions (
|
|
67
|
+
id TEXT PRIMARY KEY,
|
|
68
|
+
user_id INTEGER NOT NULL,
|
|
69
|
+
title TEXT NOT NULL,
|
|
70
|
+
title_generated INTEGER NOT NULL DEFAULT 0 CHECK(title_generated IN (0, 1)),
|
|
71
|
+
pinned INTEGER NOT NULL DEFAULT 0 CHECK(pinned IN (0, 1)),
|
|
72
|
+
pinned_at TEXT,
|
|
73
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
74
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
75
|
+
)
|
|
76
|
+
`);
|
|
77
|
+
this.db.exec(`CREATE INDEX IF NOT EXISTS idx_chat_sessions_user ON chat_sessions(user_id, updated_at)`);
|
|
78
|
+
this.db.exec(`
|
|
79
|
+
CREATE TABLE IF NOT EXISTS chat_messages (
|
|
80
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
81
|
+
session_id TEXT NOT NULL,
|
|
82
|
+
user_id INTEGER NOT NULL,
|
|
83
|
+
seq INTEGER NOT NULL,
|
|
84
|
+
role TEXT NOT NULL,
|
|
85
|
+
content TEXT NOT NULL DEFAULT '',
|
|
86
|
+
meta TEXT,
|
|
87
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
88
|
+
)
|
|
89
|
+
`);
|
|
90
|
+
this.db.exec(`CREATE INDEX IF NOT EXISTS idx_chat_messages_session ON chat_messages(session_id, seq)`);
|
|
91
|
+
// Conversation-scratch FILE metadata (composer-vision E2a, generalized in PR3
|
|
92
|
+
// from images-only to any readable file). Holds NO bytes — the blob lives in
|
|
93
|
+
// the asset backend under `blob_key`. Just enough to authorize (user_id +
|
|
94
|
+
// session ownership), locate (blob_key), carry doc text, and clean up.
|
|
95
|
+
//
|
|
96
|
+
// ┌──────────────── scratch file lifecycle ─────────────────┐
|
|
97
|
+
// │ upload/pick → row{kind, extracted_text?, source} │
|
|
98
|
+
// │ image → bytes→vision each (warm) turn / re-attach │
|
|
99
|
+
// │ doc → text injected (capped) EVERY turn (replay) │
|
|
100
|
+
// │ chat delete → delete blob (source='upload' only) + row │
|
|
101
|
+
// └─────────────────────────────────────────────────────────┘
|
|
102
|
+
//
|
|
103
|
+
// Migration (D14, additive — never drops data): a PR2 `chat_scratch_images`
|
|
104
|
+
// table is renamed in place and the new columns added, preserving every row,
|
|
105
|
+
// blob, and message-meta ref. Idempotent across fresh + already-migrated DBs.
|
|
106
|
+
this.migrateScratchTable();
|
|
107
|
+
this.db.exec(`CREATE INDEX IF NOT EXISTS idx_chat_scratch_user ON chat_scratch_files(user_id)`);
|
|
108
|
+
this.db.exec(`
|
|
109
|
+
CREATE TABLE IF NOT EXISTS meta (
|
|
110
|
+
key TEXT PRIMARY KEY,
|
|
111
|
+
value TEXT NOT NULL
|
|
112
|
+
);
|
|
113
|
+
`);
|
|
114
|
+
this.runMigrations();
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Idempotent: guarded by the recorded `schema_version`. The undeployed blob
|
|
118
|
+
* model (`a2ba23b6`, schema 1) never shipped, so there's no data to migrate —
|
|
119
|
+
* a local dev DB that touched it simply keeps its orphaned `messages` column
|
|
120
|
+
* (the new chat_sessions inserts don't reference it; it defaults). Add a new
|
|
121
|
+
* branch when bumping `SCHEMA_VERSION`; never edit existing branches.
|
|
122
|
+
*/
|
|
123
|
+
runMigrations() {
|
|
124
|
+
const row = this.db.prepare("SELECT value FROM meta WHERE key='schema_version'").get();
|
|
125
|
+
const current = row ? parseInt(row.value, 10) || 0 : 0;
|
|
126
|
+
if (current >= SCHEMA_VERSION)
|
|
127
|
+
return;
|
|
128
|
+
// No data migration: schema 1 (blob) never deployed. Future migrations live here.
|
|
129
|
+
this.db.prepare('INSERT OR REPLACE INTO meta (key, value) VALUES (?, ?)').run('schema_version', String(SCHEMA_VERSION));
|
|
130
|
+
}
|
|
131
|
+
/** True if a table with this name exists in the DB. */
|
|
132
|
+
tableExists(name) {
|
|
133
|
+
return !!this.db
|
|
134
|
+
.prepare("SELECT 1 FROM sqlite_master WHERE type='table' AND name=?")
|
|
135
|
+
.get(name);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Bring the conversation-scratch table to the PR3 `chat_scratch_files` shape.
|
|
139
|
+
* Self-contained + idempotent (runs from the constructor, independent of
|
|
140
|
+
* `schema_version` ordering since the constructor's CREATEs run first):
|
|
141
|
+
* - PR2 `chat_scratch_images` present, new table absent → rename in place +
|
|
142
|
+
* `ADD COLUMN` (preserves rows/blobs/refs; images get kind='image',
|
|
143
|
+
* extract_state='none', source='upload'). This is D14 — additive, no drop.
|
|
144
|
+
* - Neither present (fresh DB) → create `chat_scratch_files` directly.
|
|
145
|
+
* - New table already present → nothing to do.
|
|
146
|
+
*/
|
|
147
|
+
migrateScratchTable() {
|
|
148
|
+
// The PR2→PR3 rename (table + image_id column) is the one non-idempotent
|
|
149
|
+
// step — wrap it in a transaction so an interrupted boot can't leave a
|
|
150
|
+
// renamed-but-half-altered table. (better-sqlite3 DDL is transactional.)
|
|
151
|
+
if (!this.tableExists('chat_scratch_files') && this.tableExists('chat_scratch_images')) {
|
|
152
|
+
this.db.transaction(() => {
|
|
153
|
+
this.db.exec('ALTER TABLE chat_scratch_images RENAME TO chat_scratch_files');
|
|
154
|
+
this.db.exec('ALTER TABLE chat_scratch_files RENAME COLUMN image_id TO file_id');
|
|
155
|
+
})();
|
|
156
|
+
}
|
|
157
|
+
if (!this.tableExists('chat_scratch_files')) {
|
|
158
|
+
this.db.exec(`
|
|
159
|
+
CREATE TABLE chat_scratch_files (
|
|
160
|
+
session_id TEXT NOT NULL,
|
|
161
|
+
file_id TEXT NOT NULL,
|
|
162
|
+
user_id INTEGER NOT NULL,
|
|
163
|
+
filename TEXT NOT NULL,
|
|
164
|
+
content_type TEXT NOT NULL,
|
|
165
|
+
size INTEGER,
|
|
166
|
+
blob_key TEXT NOT NULL,
|
|
167
|
+
kind TEXT NOT NULL DEFAULT 'image',
|
|
168
|
+
extracted_text TEXT,
|
|
169
|
+
extract_state TEXT NOT NULL DEFAULT 'none',
|
|
170
|
+
source TEXT NOT NULL DEFAULT 'upload',
|
|
171
|
+
source_repo TEXT,
|
|
172
|
+
source_asset_id TEXT,
|
|
173
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
174
|
+
PRIMARY KEY (session_id, file_id)
|
|
175
|
+
)
|
|
176
|
+
`);
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
// Idempotent column backfill — adds any missing column whether the table
|
|
180
|
+
// came from a PR2 rename, a partially-migrated (interrupted) boot, or an
|
|
181
|
+
// earlier PR3 build without source_repo/source_asset_id. Re-running is a
|
|
182
|
+
// no-op, so a half-migrated table self-heals on the next start.
|
|
183
|
+
this.ensureScratchColumn('kind', "TEXT NOT NULL DEFAULT 'image'");
|
|
184
|
+
this.ensureScratchColumn('extracted_text', 'TEXT');
|
|
185
|
+
this.ensureScratchColumn('extract_state', "TEXT NOT NULL DEFAULT 'none'");
|
|
186
|
+
this.ensureScratchColumn('source', "TEXT NOT NULL DEFAULT 'upload'");
|
|
187
|
+
this.ensureScratchColumn('source_repo', 'TEXT');
|
|
188
|
+
this.ensureScratchColumn('source_asset_id', 'TEXT');
|
|
189
|
+
}
|
|
190
|
+
/** Add a column to chat_scratch_files only if it's not already present. */
|
|
191
|
+
ensureScratchColumn(name, ddl) {
|
|
192
|
+
const cols = this.db.prepare('PRAGMA table_info(chat_scratch_files)').all();
|
|
193
|
+
if (!cols.some((c) => c.name === name)) {
|
|
194
|
+
this.db.exec(`ALTER TABLE chat_scratch_files ADD COLUMN ${name} ${ddl}`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
rowToMeta(row, messageCount, preview) {
|
|
198
|
+
return {
|
|
199
|
+
id: row.id,
|
|
200
|
+
title: row.title,
|
|
201
|
+
titleGenerated: row.title_generated === 1,
|
|
202
|
+
pinned: row.pinned === 1,
|
|
203
|
+
pinnedAt: row.pinned_at,
|
|
204
|
+
createdAt: row.created_at,
|
|
205
|
+
updatedAt: row.updated_at,
|
|
206
|
+
messageCount,
|
|
207
|
+
preview,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* A user's sessions as metadata (no messages), most-recently-updated first.
|
|
212
|
+
* `messageCount` + `preview` (first user message) come from correlated
|
|
213
|
+
* subqueries so the list stays a single query and never ships message bodies.
|
|
214
|
+
*/
|
|
215
|
+
listMeta(userId) {
|
|
216
|
+
const rows = this.db
|
|
217
|
+
.prepare(`
|
|
218
|
+
SELECT s.*,
|
|
219
|
+
(SELECT COUNT(*) FROM chat_messages m WHERE m.session_id = s.id) AS message_count,
|
|
220
|
+
(SELECT m.content FROM chat_messages m
|
|
221
|
+
WHERE m.session_id = s.id AND m.role = 'user'
|
|
222
|
+
ORDER BY m.seq LIMIT 1) AS preview
|
|
223
|
+
FROM chat_sessions s
|
|
224
|
+
WHERE s.user_id = ?
|
|
225
|
+
ORDER BY s.updated_at DESC
|
|
226
|
+
`)
|
|
227
|
+
.all(userId);
|
|
228
|
+
return rows.map(r => this.rowToMeta(r, r.message_count, (r.preview ?? '').slice(0, PREVIEW_LEN)));
|
|
229
|
+
}
|
|
230
|
+
/** A single session WITH its messages (seq order), or null if not owned/found. */
|
|
231
|
+
get(userId, id) {
|
|
232
|
+
const row = this.db
|
|
233
|
+
.prepare('SELECT * FROM chat_sessions WHERE id = ? AND user_id = ?')
|
|
234
|
+
.get(id, userId);
|
|
235
|
+
if (!row)
|
|
236
|
+
return null;
|
|
237
|
+
const msgRows = this.db
|
|
238
|
+
.prepare('SELECT role, content, meta FROM chat_messages WHERE session_id = ? ORDER BY seq')
|
|
239
|
+
.all(id);
|
|
240
|
+
const messages = msgRows.map(m => ({
|
|
241
|
+
role: m.role === 'user' ? 'user' : 'agent',
|
|
242
|
+
content: m.content,
|
|
243
|
+
meta: m.meta ? this.safeParse(m.meta) : null,
|
|
244
|
+
}));
|
|
245
|
+
return {
|
|
246
|
+
id: row.id,
|
|
247
|
+
title: row.title,
|
|
248
|
+
titleGenerated: row.title_generated === 1,
|
|
249
|
+
pinned: row.pinned === 1,
|
|
250
|
+
pinnedAt: row.pinned_at,
|
|
251
|
+
createdAt: row.created_at,
|
|
252
|
+
updatedAt: row.updated_at,
|
|
253
|
+
messages,
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Raw attachment-ref objects persisted on a session's USER messages, for the
|
|
258
|
+
* server-side doc replay (D7). Returns the loosely-typed ref objects (from
|
|
259
|
+
* `meta.attachments` (PR3) or legacy `meta.imageRefs` (PR2)); the caller
|
|
260
|
+
* normalizes + re-authorizes them. Returns [] if the session isn't owned.
|
|
261
|
+
* Kept here (not in the route) so the meta shape lives in one place, and
|
|
262
|
+
* returns `unknown[]` to avoid importing the ref type (would cycle with
|
|
263
|
+
* scratch-attachment-service, which imports this module).
|
|
264
|
+
*/
|
|
265
|
+
getSessionAttachmentRefs(userId, id) {
|
|
266
|
+
const owner = this.ownerOf(id);
|
|
267
|
+
if (owner !== userId)
|
|
268
|
+
return [];
|
|
269
|
+
const rows = this.db
|
|
270
|
+
.prepare("SELECT meta FROM chat_messages WHERE session_id = ? AND role = 'user' ORDER BY seq")
|
|
271
|
+
.all(id);
|
|
272
|
+
const refs = [];
|
|
273
|
+
for (const r of rows) {
|
|
274
|
+
if (!r.meta)
|
|
275
|
+
continue;
|
|
276
|
+
const meta = this.safeParse(r.meta);
|
|
277
|
+
if (!meta)
|
|
278
|
+
continue;
|
|
279
|
+
const arr = Array.isArray(meta.attachments) ? meta.attachments
|
|
280
|
+
: Array.isArray(meta.imageRefs) ? meta.imageRefs
|
|
281
|
+
: null;
|
|
282
|
+
if (arr)
|
|
283
|
+
refs.push(...arr);
|
|
284
|
+
}
|
|
285
|
+
return refs;
|
|
286
|
+
}
|
|
287
|
+
safeParse(s) {
|
|
288
|
+
try {
|
|
289
|
+
const v = JSON.parse(s);
|
|
290
|
+
return v && typeof v === 'object' ? v : null;
|
|
291
|
+
}
|
|
292
|
+
catch {
|
|
293
|
+
return null;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
ownerOf(id) {
|
|
297
|
+
const r = this.db.prepare('SELECT user_id FROM chat_sessions WHERE id = ?').get(id);
|
|
298
|
+
return r?.user_id;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Create a session, or update its metadata in place. A session id is owned by
|
|
302
|
+
* the first user who writes it; a write from a different user is rejected so
|
|
303
|
+
* one account can't overwrite another's history. Only the provided fields are
|
|
304
|
+
* updated (PATCH semantics) — messages are NEVER touched here, so a metadata
|
|
305
|
+
* write (rename/pin) can't clobber an in-flight stream's appended messages.
|
|
306
|
+
* `createdAt`/`updatedAt` are honored on create; on update, `createdAt` is
|
|
307
|
+
* preserved and `updatedAt` only advances when supplied.
|
|
308
|
+
*/
|
|
309
|
+
upsertMeta(userId, input) {
|
|
310
|
+
const owner = this.ownerOf(input.id);
|
|
311
|
+
if (owner !== undefined && owner !== userId) {
|
|
312
|
+
throw new ChatSessionForbiddenError('Session belongs to another user');
|
|
313
|
+
}
|
|
314
|
+
const now = new Date().toISOString();
|
|
315
|
+
if (owner === undefined) {
|
|
316
|
+
// Create.
|
|
317
|
+
this.db
|
|
318
|
+
.prepare(`
|
|
319
|
+
INSERT INTO chat_sessions (id, user_id, title, title_generated, pinned, pinned_at, created_at, updated_at)
|
|
320
|
+
VALUES (@id, @user_id, @title, @title_generated, @pinned, @pinned_at, @created_at, @updated_at)
|
|
321
|
+
`)
|
|
322
|
+
.run({
|
|
323
|
+
id: input.id,
|
|
324
|
+
user_id: userId,
|
|
325
|
+
title: input.title ?? 'New chat',
|
|
326
|
+
title_generated: input.titleGenerated ? 1 : 0,
|
|
327
|
+
pinned: input.pinned ? 1 : 0,
|
|
328
|
+
pinned_at: input.pinnedAt ?? null,
|
|
329
|
+
created_at: input.createdAt ?? now,
|
|
330
|
+
updated_at: input.updatedAt ?? now,
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
// Update only the provided fields (COALESCE keeps the stored value when null).
|
|
335
|
+
this.db
|
|
336
|
+
.prepare(`
|
|
337
|
+
UPDATE chat_sessions SET
|
|
338
|
+
title = COALESCE(@title, title),
|
|
339
|
+
title_generated = COALESCE(@title_generated, title_generated),
|
|
340
|
+
pinned = COALESCE(@pinned, pinned),
|
|
341
|
+
pinned_at = CASE WHEN @pinned_at_set = 1 THEN @pinned_at ELSE pinned_at END,
|
|
342
|
+
updated_at = COALESCE(@updated_at, updated_at)
|
|
343
|
+
WHERE id = @id AND user_id = @user_id
|
|
344
|
+
`)
|
|
345
|
+
.run({
|
|
346
|
+
id: input.id,
|
|
347
|
+
user_id: userId,
|
|
348
|
+
title: input.title ?? null,
|
|
349
|
+
title_generated: input.titleGenerated === undefined ? null : input.titleGenerated ? 1 : 0,
|
|
350
|
+
pinned: input.pinned === undefined ? null : input.pinned ? 1 : 0,
|
|
351
|
+
// pinnedAt is meaningfully nullable (cleared on unpin), so a dedicated
|
|
352
|
+
// "was it provided" flag distinguishes "set to null" from "leave alone".
|
|
353
|
+
pinned_at_set: input.pinned === undefined ? 0 : 1,
|
|
354
|
+
pinned_at: input.pinnedAt ?? null,
|
|
355
|
+
updated_at: input.updatedAt ?? null,
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
const row = this.db.prepare('SELECT * FROM chat_sessions WHERE id = ?').get(input.id);
|
|
359
|
+
const count = this.db.prepare('SELECT COUNT(*) AS n FROM chat_messages WHERE session_id = ?').get(input.id).n;
|
|
360
|
+
const preview = this.db
|
|
361
|
+
.prepare("SELECT content FROM chat_messages WHERE session_id = ? AND role = 'user' ORDER BY seq LIMIT 1")
|
|
362
|
+
.get(input.id)?.content ?? '';
|
|
363
|
+
return this.rowToMeta(row, count, preview.slice(0, PREVIEW_LEN));
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Append messages to a session, in order, after the current max `seq`.
|
|
367
|
+
* Create-on-demand: if the session row doesn't exist it's inserted (owned by
|
|
368
|
+
* the caller) so a turn-completion append can't lose data to a create race.
|
|
369
|
+
* Bumps the session's `updated_at` so active chats float to the top of the
|
|
370
|
+
* list. Rejects another user's session id, an over-budget append, or one that
|
|
371
|
+
* would push the user past the abuse ceiling.
|
|
372
|
+
*/
|
|
373
|
+
appendMessages(userId, sessionId, messages, opts) {
|
|
374
|
+
if (messages.length === 0)
|
|
375
|
+
return { appended: 0 };
|
|
376
|
+
let bytes = 0;
|
|
377
|
+
for (const m of messages) {
|
|
378
|
+
bytes += Buffer.byteLength(m.content ?? '', 'utf8');
|
|
379
|
+
if (m.meta)
|
|
380
|
+
bytes += Buffer.byteLength(JSON.stringify(m.meta), 'utf8');
|
|
381
|
+
}
|
|
382
|
+
if (bytes > MAX_APPEND_BYTES) {
|
|
383
|
+
throw new ChatSessionTooLargeError(`Append exceeds ${MAX_APPEND_BYTES} bytes`);
|
|
384
|
+
}
|
|
385
|
+
const owner = this.ownerOf(sessionId);
|
|
386
|
+
if (owner !== undefined && owner !== userId) {
|
|
387
|
+
throw new ChatSessionForbiddenError('Session belongs to another user');
|
|
388
|
+
}
|
|
389
|
+
const total = this.db.prepare('SELECT COUNT(*) AS n FROM chat_messages WHERE user_id = ?').get(userId).n;
|
|
390
|
+
if (total + messages.length > MAX_MESSAGES_PER_USER) {
|
|
391
|
+
throw new ChatSessionTooLargeError(`User exceeds the ${MAX_MESSAGES_PER_USER}-message ceiling`);
|
|
392
|
+
}
|
|
393
|
+
const now = new Date().toISOString();
|
|
394
|
+
const tx = this.db.transaction(() => {
|
|
395
|
+
if (owner === undefined) {
|
|
396
|
+
this.db
|
|
397
|
+
.prepare(`
|
|
398
|
+
INSERT INTO chat_sessions (id, user_id, title, created_at, updated_at)
|
|
399
|
+
VALUES (?, ?, ?, ?, ?)
|
|
400
|
+
`)
|
|
401
|
+
.run(sessionId, userId, opts?.title ?? 'New chat', now, now);
|
|
402
|
+
}
|
|
403
|
+
const maxSeq = this.db.prepare('SELECT COALESCE(MAX(seq), -1) AS s FROM chat_messages WHERE session_id = ?').get(sessionId).s;
|
|
404
|
+
const insert = this.db.prepare(`
|
|
405
|
+
INSERT INTO chat_messages (session_id, user_id, seq, role, content, meta, created_at)
|
|
406
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
407
|
+
`);
|
|
408
|
+
messages.forEach((m, i) => {
|
|
409
|
+
insert.run(sessionId, userId, maxSeq + 1 + i, m.role === 'user' ? 'user' : 'agent', m.content ?? '', m.meta ? JSON.stringify(m.meta) : null, now);
|
|
410
|
+
});
|
|
411
|
+
this.db.prepare('UPDATE chat_sessions SET updated_at = ? WHERE id = ?').run(now, sessionId);
|
|
412
|
+
});
|
|
413
|
+
tx();
|
|
414
|
+
return { appended: messages.length };
|
|
415
|
+
}
|
|
416
|
+
/** Owner of a session, or undefined if it doesn't exist (public for the
|
|
417
|
+
* composer-vision upload route's reservation check). */
|
|
418
|
+
getSessionOwner(id) {
|
|
419
|
+
return this.ownerOf(id);
|
|
420
|
+
}
|
|
421
|
+
/** Record a conversation-scratch file's metadata (no bytes). */
|
|
422
|
+
insertScratchFile(input) {
|
|
423
|
+
this.db.prepare(`
|
|
424
|
+
INSERT INTO chat_scratch_files
|
|
425
|
+
(session_id, file_id, user_id, filename, content_type, size, blob_key, kind, extracted_text, extract_state, source, source_repo, source_asset_id)
|
|
426
|
+
VALUES
|
|
427
|
+
(@sessionId, @fileId, @userId, @filename, @contentType, @size, @blobKey, @kind, @extractedText, @extractState, @source, @sourceRepo, @sourceAssetId)
|
|
428
|
+
`).run({
|
|
429
|
+
...input,
|
|
430
|
+
extractedText: input.extractedText ?? null,
|
|
431
|
+
extractState: input.extractState ?? 'none',
|
|
432
|
+
source: input.source ?? 'upload',
|
|
433
|
+
sourceRepo: input.sourceRepo ?? null,
|
|
434
|
+
sourceAssetId: input.sourceAssetId ?? null,
|
|
435
|
+
});
|
|
436
|
+
}
|
|
437
|
+
/** Map a raw chat_scratch_files row to a ScratchFileRow. */
|
|
438
|
+
static toScratchRow(r) {
|
|
439
|
+
return {
|
|
440
|
+
sessionId: r.session_id,
|
|
441
|
+
fileId: r.file_id,
|
|
442
|
+
userId: r.user_id,
|
|
443
|
+
filename: r.filename,
|
|
444
|
+
contentType: r.content_type,
|
|
445
|
+
size: r.size ?? null,
|
|
446
|
+
blobKey: r.blob_key,
|
|
447
|
+
kind: (r.kind ?? 'image'),
|
|
448
|
+
extractedText: r.extracted_text ?? null,
|
|
449
|
+
extractState: (r.extract_state ?? 'none'),
|
|
450
|
+
source: (r.source ?? 'upload'),
|
|
451
|
+
sourceRepo: r.source_repo ?? null,
|
|
452
|
+
sourceAssetId: r.source_asset_id ?? null,
|
|
453
|
+
createdAt: r.created_at ?? undefined,
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
/** Look up a scratch file's metadata row, or null. */
|
|
457
|
+
getScratchFile(sessionId, fileId) {
|
|
458
|
+
const r = this.db
|
|
459
|
+
.prepare('SELECT * FROM chat_scratch_files WHERE session_id = ? AND file_id = ?')
|
|
460
|
+
.get(sessionId, fileId);
|
|
461
|
+
return r ? ChatSessionService.toScratchRow(r) : null;
|
|
462
|
+
}
|
|
463
|
+
/** A session's scratch files, most-recently-added first. Used by the agent's
|
|
464
|
+
* `save_file_to_assets` tool to resolve "this file" scoped to the CURRENT
|
|
465
|
+
* conversation, and by the server's per-turn doc replay (D7). */
|
|
466
|
+
getScratchFilesBySession(sessionId) {
|
|
467
|
+
const rows = this.db
|
|
468
|
+
.prepare('SELECT * FROM chat_scratch_files WHERE session_id = ? ORDER BY created_at DESC, rowid DESC')
|
|
469
|
+
.all(sessionId);
|
|
470
|
+
return rows.map((r) => ChatSessionService.toScratchRow(r));
|
|
471
|
+
}
|
|
472
|
+
/** Delete a session and cascade its messages + scratch metadata, scoped to its
|
|
473
|
+
* owner (no-op if not owned). External blob + agent-pool cleanup runs via the
|
|
474
|
+
* injected scratchCleanup with the session's blob keys. */
|
|
475
|
+
delete(userId, id) {
|
|
476
|
+
const owner = this.ownerOf(id);
|
|
477
|
+
if (owner !== userId)
|
|
478
|
+
return;
|
|
479
|
+
// D9: only delete blobs we OWN (source='upload'). Library-sourced rows point
|
|
480
|
+
// at a permanent curated asset — deleting that blob would destroy the asset.
|
|
481
|
+
const blobKeys = this.db
|
|
482
|
+
.prepare("SELECT blob_key FROM chat_scratch_files WHERE session_id = ? AND source = 'upload'")
|
|
483
|
+
.all(id).map(r => r.blob_key);
|
|
484
|
+
const tx = this.db.transaction(() => {
|
|
485
|
+
this.db.prepare('DELETE FROM chat_messages WHERE session_id = ?').run(id);
|
|
486
|
+
this.db.prepare('DELETE FROM chat_scratch_files WHERE session_id = ?').run(id);
|
|
487
|
+
this.db.prepare('DELETE FROM chat_sessions WHERE id = ? AND user_id = ?').run(id, userId);
|
|
488
|
+
});
|
|
489
|
+
tx();
|
|
490
|
+
this.scratchCleanup?.(userId, id, blobKeys);
|
|
491
|
+
}
|
|
492
|
+
/** Delete every session + message + scratch row for a user (reset path). */
|
|
493
|
+
deleteAllForUser(userId) {
|
|
494
|
+
const blobKeys = this.db
|
|
495
|
+
.prepare("SELECT blob_key FROM chat_scratch_files WHERE user_id = ? AND source = 'upload'")
|
|
496
|
+
.all(userId).map(r => r.blob_key);
|
|
497
|
+
const tx = this.db.transaction(() => {
|
|
498
|
+
this.db.prepare('DELETE FROM chat_messages WHERE user_id = ?').run(userId);
|
|
499
|
+
this.db.prepare('DELETE FROM chat_scratch_files WHERE user_id = ?').run(userId);
|
|
500
|
+
this.db.prepare('DELETE FROM chat_sessions WHERE user_id = ?').run(userId);
|
|
501
|
+
});
|
|
502
|
+
tx();
|
|
503
|
+
this.scratchCleanup?.(userId, undefined, blobKeys);
|
|
504
|
+
}
|
|
505
|
+
close() {
|
|
506
|
+
try {
|
|
507
|
+
this.db.close();
|
|
508
|
+
}
|
|
509
|
+
catch { /* already closed */ }
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
//# sourceMappingURL=chat-session-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-session-service.js","sourceRoot":"","sources":["../../src/services/chat-session-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { type Context, type Model, type SimpleStreamOptions, type StreamFunction } from '@mariozechner/pi-ai';
|
|
2
|
+
export interface InferenceUsageSummary {
|
|
3
|
+
inputTokens: number;
|
|
4
|
+
outputTokens: number;
|
|
5
|
+
totalTokens: number;
|
|
6
|
+
totalCostUsd: number;
|
|
7
|
+
}
|
|
8
|
+
export interface CloudInferenceReservation {
|
|
9
|
+
id: string;
|
|
10
|
+
request_id: string;
|
|
11
|
+
status: string;
|
|
12
|
+
reserved_cents: number;
|
|
13
|
+
}
|
|
14
|
+
interface CloudInferenceBillingConfig {
|
|
15
|
+
baseUrl: string;
|
|
16
|
+
orgId: string;
|
|
17
|
+
workspaceId: string;
|
|
18
|
+
token: string;
|
|
19
|
+
required: boolean;
|
|
20
|
+
estimateCents: number;
|
|
21
|
+
}
|
|
22
|
+
interface LoadedCloudConfig {
|
|
23
|
+
config: CloudInferenceBillingConfig | null;
|
|
24
|
+
required: boolean;
|
|
25
|
+
disabledReason: string | null;
|
|
26
|
+
}
|
|
27
|
+
export declare function createInferenceUsageSummary(): InferenceUsageSummary;
|
|
28
|
+
export declare function addInferenceUsage(summary: InferenceUsageSummary, usage: unknown): void;
|
|
29
|
+
export declare function inferenceUsageToBillableCents(summary: InferenceUsageSummary): number | null;
|
|
30
|
+
export declare function createCloudInferenceBillingClient(env?: NodeJS.ProcessEnv, fetchFn?: typeof fetch): CloudInferenceBillingClient;
|
|
31
|
+
export declare function isStudiographCreditsMode(env?: NodeJS.ProcessEnv): boolean;
|
|
32
|
+
export declare function studiographCreditsModel(env?: NodeJS.ProcessEnv): Model<'studiograph-cloud-inference'>;
|
|
33
|
+
export declare function createCloudInferenceStreamFn(env?: NodeJS.ProcessEnv, fetchFn?: typeof fetch): StreamFunction<'studiograph-cloud-inference', SimpleStreamOptions>;
|
|
34
|
+
export declare class CloudInferenceBillingClient {
|
|
35
|
+
private loaded;
|
|
36
|
+
private fetchFn;
|
|
37
|
+
constructor(loaded: LoadedCloudConfig, fetchFn: typeof fetch);
|
|
38
|
+
isConfigured(): boolean;
|
|
39
|
+
isRequired(): boolean;
|
|
40
|
+
disabledReason(): string | null;
|
|
41
|
+
estimateCents(): number;
|
|
42
|
+
nextRequestId(prefix?: string): string;
|
|
43
|
+
getAiSettings(): Promise<unknown | null>;
|
|
44
|
+
reserve(input: {
|
|
45
|
+
estimatedCents?: number;
|
|
46
|
+
provider?: string | null;
|
|
47
|
+
model?: string | null;
|
|
48
|
+
requestId?: string;
|
|
49
|
+
description?: string;
|
|
50
|
+
}): Promise<CloudInferenceReservation | null>;
|
|
51
|
+
settle(reservation: CloudInferenceReservation, input: {
|
|
52
|
+
actualCents: number;
|
|
53
|
+
inputTokens?: number;
|
|
54
|
+
outputTokens?: number;
|
|
55
|
+
description?: string;
|
|
56
|
+
}): Promise<void>;
|
|
57
|
+
release(reservation: CloudInferenceReservation, reason: string): Promise<void>;
|
|
58
|
+
streamChat(context: Context, options?: SimpleStreamOptions): import("@mariozechner/pi-ai").AssistantMessageEventStream;
|
|
59
|
+
private requireConfigOrNull;
|
|
60
|
+
private runtimePath;
|
|
61
|
+
private runStreamChat;
|
|
62
|
+
private requestJson;
|
|
63
|
+
}
|
|
64
|
+
export {};
|