studiograph 1.3.48-next.4 → 1.3.48-next.40
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/dist/agent/agent-pool.d.ts +68 -0
- package/dist/agent/agent-pool.js +206 -0
- package/dist/agent/agent-pool.js.map +1 -0
- package/dist/agent/orchestrator.d.ts +66 -21
- package/dist/agent/orchestrator.js +338 -159
- package/dist/agent/orchestrator.js.map +1 -1
- package/dist/agent/prompts/entity-types-section.d.ts +25 -0
- package/dist/agent/prompts/entity-types-section.js +52 -0
- package/dist/agent/prompts/entity-types-section.js.map +1 -0
- package/dist/agent/prompts/system.md +86 -67
- package/dist/agent/role-loader.d.ts +24 -0
- package/dist/agent/role-loader.js +67 -0
- package/dist/agent/role-loader.js.map +1 -0
- package/dist/agent/skill-loader.d.ts +30 -17
- package/dist/agent/skill-loader.js +61 -22
- package/dist/agent/skill-loader.js.map +1 -1
- package/dist/agent/skills/create-deck/content-guide.md +238 -0
- package/dist/agent/skills/create-deck/deck-cadence.md +105 -0
- package/dist/agent/skills/create-deck/diagrams.md +431 -0
- package/dist/agent/skills/create-deck/skill.md +89 -0
- package/dist/agent/skills/create-deck/slide-selection.md +115 -0
- package/dist/agent/skills/create-deck/slide-types.md +638 -0
- package/dist/agent/skills/create-document/skill.md +229 -0
- package/dist/agent/skills/entity-schema.md +78 -349
- 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 +189 -0
- package/dist/agent/skills/schema-rules.md +54 -0
- package/dist/agent/tools/fs-tools.d.ts +1 -1
- package/dist/agent/tools/fs-tools.js +4 -3
- package/dist/agent/tools/fs-tools.js.map +1 -1
- package/dist/agent/tools/graph-tools.d.ts +24 -4
- package/dist/agent/tools/graph-tools.js +263 -158
- package/dist/agent/tools/graph-tools.js.map +1 -1
- package/dist/agent/tools/load-skill.d.ts +2 -2
- package/dist/agent/tools/load-skill.js +2 -2
- package/dist/agent/tools/load-skill.js.map +1 -1
- package/dist/agent/tools/message-tools.d.ts +42 -0
- package/dist/agent/tools/message-tools.js +96 -0
- package/dist/agent/tools/message-tools.js.map +1 -0
- package/dist/agent/tools/ops-tools.d.ts +3 -3
- package/dist/agent/tools/ops-tools.js +5 -211
- package/dist/agent/tools/ops-tools.js.map +1 -1
- package/dist/agent/tools/permission-tools.d.ts +23 -1
- package/dist/agent/tools/permission-tools.js +62 -32
- package/dist/agent/tools/permission-tools.js.map +1 -1
- package/dist/cli/commands/collection.js +23 -25
- package/dist/cli/commands/collection.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/mcp.js +3 -1
- 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/reset.js +11 -30
- package/dist/cli/commands/reset.js.map +1 -1
- package/dist/cli/commands/serve.js +27 -12
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/start.js +11 -24
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/sync.js +267 -111
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/commands/user.js +21 -5
- package/dist/cli/commands/user.js.map +1 -1
- package/dist/cli/index.js +0 -12
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/scaffolding.js +4 -4
- package/dist/cli/scaffolding.js.map +1 -1
- package/dist/cli/setup-wizard.d.ts +3 -3
- package/dist/cli/setup-wizard.js +4 -28
- 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/feature-flags.d.ts +17 -0
- package/dist/core/feature-flags.js +15 -0
- package/dist/core/feature-flags.js.map +1 -0
- package/dist/core/features.d.ts +16 -0
- package/dist/core/features.js +48 -0
- package/dist/core/features.js.map +1 -0
- package/dist/core/graph.d.ts +34 -2
- package/dist/core/graph.js +177 -26
- package/dist/core/graph.js.map +1 -1
- package/dist/core/launch-entity-types.d.ts +23 -0
- package/dist/core/launch-entity-types.js +48 -0
- package/dist/core/launch-entity-types.js.map +1 -0
- package/dist/core/schema-registry.js +12 -12
- package/dist/core/schema-registry.js.map +1 -1
- package/dist/core/types.d.ts +64 -64
- package/dist/core/types.js +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/user-config.d.ts +26 -0
- package/dist/core/user-config.js +62 -0
- package/dist/core/user-config.js.map +1 -1
- package/dist/core/validation.d.ts +193 -501
- package/dist/core/validation.js +48 -99
- package/dist/core/validation.js.map +1 -1
- package/dist/core/workspace-manager.d.ts +5 -7
- package/dist/core/workspace-manager.js +56 -55
- package/dist/core/workspace-manager.js.map +1 -1
- package/dist/core/workspace.js +7 -0
- package/dist/core/workspace.js.map +1 -1
- package/dist/integrations/registry.d.ts +2 -9
- package/dist/integrations/registry.js +3 -23
- package/dist/integrations/registry.js.map +1 -1
- package/dist/integrations/types.d.ts +32 -27
- package/dist/integrations/types.js +1 -5
- package/dist/integrations/types.js.map +1 -1
- package/dist/mcp/connector-manager.d.ts +22 -11
- package/dist/mcp/connector-manager.js +82 -40
- package/dist/mcp/connector-manager.js.map +1 -1
- package/dist/mcp/oauth-provider.d.ts +32 -33
- package/dist/mcp/oauth-provider.js +75 -132
- package/dist/mcp/oauth-provider.js.map +1 -1
- package/dist/mcp/oauth-registry.d.ts +24 -0
- package/dist/mcp/oauth-registry.js +46 -0
- package/dist/mcp/oauth-registry.js.map +1 -0
- package/dist/mcp/server.d.ts +8 -2
- package/dist/mcp/server.js +26 -4
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts +11 -2
- package/dist/mcp/tools.js +285 -91
- package/dist/mcp/tools.js.map +1 -1
- package/dist/renderers/documents/branding.d.ts +2 -0
- package/dist/renderers/documents/branding.js +42 -0
- package/dist/renderers/documents/branding.js.map +1 -0
- package/dist/renderers/documents/entity-types.json +14 -0
- package/dist/renderers/documents/parser/frontmatter.d.ts +5 -0
- package/dist/renderers/documents/parser/frontmatter.js +90 -0
- package/dist/renderers/documents/parser/frontmatter.js.map +1 -0
- package/dist/renderers/documents/parser/index.d.ts +5 -0
- package/dist/renderers/documents/parser/index.js +142 -0
- package/dist/renderers/documents/parser/index.js.map +1 -0
- package/dist/renderers/documents/parser/sections.d.ts +18 -0
- package/dist/renderers/documents/parser/sections.js +131 -0
- package/dist/renderers/documents/parser/sections.js.map +1 -0
- package/dist/renderers/documents/pdf/generator.d.ts +13 -0
- package/dist/renderers/documents/pdf/generator.js +79 -0
- package/dist/renderers/documents/pdf/generator.js.map +1 -0
- package/dist/renderers/documents/plugin.d.ts +2 -0
- package/dist/renderers/documents/plugin.js +63 -0
- package/dist/renderers/documents/plugin.js.map +1 -0
- package/dist/renderers/documents/public/branding/logo.svg +3 -0
- package/dist/renderers/documents/public/editor/chrome.css +461 -0
- package/dist/renderers/documents/public/editor/chrome.js +524 -0
- package/dist/renderers/documents/public/editor/editor.css +751 -0
- package/dist/renderers/documents/public/editor/editor.html +140 -0
- package/dist/renderers/documents/public/editor/editor.js +953 -0
- package/dist/renderers/documents/public/fonts/fonts.css +145 -0
- package/dist/renderers/documents/public/viewer/viewer.css +1 -0
- package/dist/renderers/documents/public/viewer/viewer.js +4 -0
- package/dist/renderers/documents/renderer/back.d.ts +8 -0
- package/dist/renderers/documents/renderer/back.js +28 -0
- package/dist/renderers/documents/renderer/back.js.map +1 -0
- package/dist/renderers/documents/renderer/content.d.ts +7 -0
- package/dist/renderers/documents/renderer/content.js +25 -0
- package/dist/renderers/documents/renderer/content.js.map +1 -0
- package/dist/renderers/documents/renderer/cover.d.ts +15 -0
- package/dist/renderers/documents/renderer/cover.js +43 -0
- package/dist/renderers/documents/renderer/cover.js.map +1 -0
- package/dist/renderers/documents/renderer/helpers.d.ts +1 -0
- package/dist/renderers/documents/renderer/helpers.js +11 -0
- package/dist/renderers/documents/renderer/helpers.js.map +1 -0
- package/dist/renderers/documents/renderer/index.d.ts +32 -0
- package/dist/renderers/documents/renderer/index.js +80 -0
- package/dist/renderers/documents/renderer/index.js.map +1 -0
- package/dist/renderers/documents/renderer/styles.d.ts +16 -0
- package/dist/renderers/documents/renderer/styles.js +546 -0
- package/dist/renderers/documents/renderer/styles.js.map +1 -0
- package/dist/renderers/documents/routes/api.d.ts +2 -0
- package/dist/renderers/documents/routes/api.js +587 -0
- package/dist/renderers/documents/routes/api.js.map +1 -0
- package/dist/renderers/documents/routes/editor.d.ts +2 -0
- package/dist/renderers/documents/routes/editor.js +31 -0
- package/dist/renderers/documents/routes/editor.js.map +1 -0
- package/dist/renderers/documents/routes/viewer.d.ts +2 -0
- package/dist/renderers/documents/routes/viewer.js +67 -0
- package/dist/renderers/documents/routes/viewer.js.map +1 -0
- package/dist/renderers/documents/types.d.ts +61 -0
- package/dist/renderers/documents/types.js +2 -0
- package/dist/renderers/documents/types.js.map +1 -0
- package/dist/renderers/index.d.ts +24 -0
- package/dist/renderers/index.js +66 -0
- package/dist/renderers/index.js.map +1 -0
- package/dist/renderers/slides/design-system/tokens.d.ts +108 -0
- package/dist/renderers/slides/design-system/tokens.js +44 -0
- package/dist/renderers/slides/design-system/tokens.js.map +1 -0
- package/dist/renderers/slides/entity-types.json +14 -0
- package/dist/renderers/slides/parser/comment-parser.d.ts +10 -0
- package/dist/renderers/slides/parser/comment-parser.js +89 -0
- package/dist/renderers/slides/parser/comment-parser.js.map +1 -0
- package/dist/renderers/slides/parser/frontmatter.d.ts +10 -0
- package/dist/renderers/slides/parser/frontmatter.js +93 -0
- package/dist/renderers/slides/parser/frontmatter.js.map +1 -0
- package/dist/renderers/slides/parser/index.d.ts +7 -0
- package/dist/renderers/slides/parser/index.js +569 -0
- package/dist/renderers/slides/parser/index.js.map +1 -0
- package/dist/renderers/slides/parser/slide-splitter.d.ts +6 -0
- package/dist/renderers/slides/parser/slide-splitter.js +54 -0
- package/dist/renderers/slides/parser/slide-splitter.js.map +1 -0
- package/dist/renderers/slides/parser/type-detector.d.ts +6 -0
- package/dist/renderers/slides/parser/type-detector.js +70 -0
- package/dist/renderers/slides/parser/type-detector.js.map +1 -0
- package/dist/renderers/slides/pdf/generator.d.ts +11 -0
- package/dist/renderers/slides/pdf/generator.js +105 -0
- package/dist/renderers/slides/pdf/generator.js.map +1 -0
- package/dist/renderers/slides/plugin.d.ts +2 -0
- package/dist/renderers/slides/plugin.js +70 -0
- package/dist/renderers/slides/plugin.js.map +1 -0
- package/dist/renderers/slides/public/editor/.gitkeep +0 -0
- package/dist/renderers/slides/public/editor/chrome.css +461 -0
- package/dist/renderers/slides/public/editor/chrome.js +519 -0
- package/dist/renderers/slides/public/editor/editor.css +896 -0
- package/dist/renderers/slides/public/editor/editor.html +131 -0
- package/dist/renderers/slides/public/editor/editor.js +1038 -0
- package/dist/renderers/slides/public/fonts/fonts.css +145 -0
- package/dist/renderers/slides/public/viewer/.gitkeep +0 -0
- package/dist/renderers/slides/public/viewer/chrome.css +62 -0
- package/dist/renderers/slides/public/viewer/transitions.css +1 -0
- package/dist/renderers/slides/public/viewer/viewer.css +2145 -0
- package/dist/renderers/slides/public/viewer/viewer.js +303 -0
- package/dist/renderers/slides/renderer/chrome/browser-frame.d.ts +5 -0
- package/dist/renderers/slides/renderer/chrome/browser-frame.js +22 -0
- package/dist/renderers/slides/renderer/chrome/browser-frame.js.map +1 -0
- package/dist/renderers/slides/renderer/chrome/mobile-frame.d.ts +6 -0
- package/dist/renderers/slides/renderer/chrome/mobile-frame.js +18 -0
- package/dist/renderers/slides/renderer/chrome/mobile-frame.js.map +1 -0
- package/dist/renderers/slides/renderer/helpers.d.ts +13 -0
- package/dist/renderers/slides/renderer/helpers.js +33 -0
- package/dist/renderers/slides/renderer/helpers.js.map +1 -0
- package/dist/renderers/slides/renderer/index.d.ts +16 -0
- package/dist/renderers/slides/renderer/index.js +160 -0
- package/dist/renderers/slides/renderer/index.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/agenda.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/agenda.js +18 -0
- package/dist/renderers/slides/renderer/layouts/agenda.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/blank.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/blank.js +4 -0
- package/dist/renderers/slides/renderer/layouts/blank.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/columns.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/columns.js +32 -0
- package/dist/renderers/slides/renderer/layouts/columns.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/cover.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/cover.js +18 -0
- package/dist/renderers/slides/renderer/layouts/cover.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/diagram-concentric.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/diagram-concentric.js +120 -0
- package/dist/renderers/slides/renderer/layouts/diagram-concentric.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/diagram-matrix.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/diagram-matrix.js +158 -0
- package/dist/renderers/slides/renderer/layouts/diagram-matrix.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/diagram-pyramid.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/diagram-pyramid.js +86 -0
- package/dist/renderers/slides/renderer/layouts/diagram-pyramid.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/diagram-sitemap.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/diagram-sitemap.js +146 -0
- package/dist/renderers/slides/renderer/layouts/diagram-sitemap.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/diagram-venn.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/diagram-venn.js +100 -0
- package/dist/renderers/slides/renderer/layouts/diagram-venn.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/diagram.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/diagram.js +21 -0
- package/dist/renderers/slides/renderer/layouts/diagram.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/divider.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/divider.js +4 -0
- package/dist/renderers/slides/renderer/layouts/divider.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/end.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/end.js +8 -0
- package/dist/renderers/slides/renderer/layouts/end.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/framework.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/framework.js +47 -0
- package/dist/renderers/slides/renderer/layouts/framework.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/image-browser-2up.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/image-browser-2up.js +38 -0
- package/dist/renderers/slides/renderer/layouts/image-browser-2up.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/image-browser-6up.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/image-browser-6up.js +30 -0
- package/dist/renderers/slides/renderer/layouts/image-browser-6up.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/image-browser.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/image-browser.js +18 -0
- package/dist/renderers/slides/renderer/layouts/image-browser.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/image-bullets.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/image-bullets.js +26 -0
- package/dist/renderers/slides/renderer/layouts/image-bullets.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/image-device-pair.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/image-device-pair.js +34 -0
- package/dist/renderers/slides/renderer/layouts/image-device-pair.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/image-full.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/image-full.js +36 -0
- package/dist/renderers/slides/renderer/layouts/image-full.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/image-grid-2x2.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/image-grid-2x2.js +23 -0
- package/dist/renderers/slides/renderer/layouts/image-grid-2x2.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/image-keywords.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/image-keywords.js +31 -0
- package/dist/renderers/slides/renderer/layouts/image-keywords.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/image-mobile-3up.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/image-mobile-3up.js +22 -0
- package/dist/renderers/slides/renderer/layouts/image-mobile-3up.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/image-mobile.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/image-mobile.js +17 -0
- package/dist/renderers/slides/renderer/layouts/image-mobile.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/image-split-right.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/image-split-right.js +19 -0
- package/dist/renderers/slides/renderer/layouts/image-split-right.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/image-split.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/image-split.js +19 -0
- package/dist/renderers/slides/renderer/layouts/image-split.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/introductions.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/introductions.js +41 -0
- package/dist/renderers/slides/renderer/layouts/introductions.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/moodboard.d.ts +15 -0
- package/dist/renderers/slides/renderer/layouts/moodboard.js +63 -0
- package/dist/renderers/slides/renderer/layouts/moodboard.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/next-steps.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/next-steps.js +13 -0
- package/dist/renderers/slides/renderer/layouts/next-steps.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/pullquote.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/pullquote.js +17 -0
- package/dist/renderers/slides/renderer/layouts/pullquote.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/schedule.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/schedule.js +58 -0
- package/dist/renderers/slides/renderer/layouts/schedule.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/section.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/section.js +18 -0
- package/dist/renderers/slides/renderer/layouts/section.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/statement.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/statement.js +13 -0
- package/dist/renderers/slides/renderer/layouts/statement.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/stats.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/stats.js +26 -0
- package/dist/renderers/slides/renderer/layouts/stats.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/table.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/table.js +23 -0
- package/dist/renderers/slides/renderer/layouts/table.js.map +1 -0
- package/dist/renderers/slides/renderer/layouts/text-body.d.ts +2 -0
- package/dist/renderers/slides/renderer/layouts/text-body.js +14 -0
- package/dist/renderers/slides/renderer/layouts/text-body.js.map +1 -0
- package/dist/renderers/slides/renderer/placeholder.d.ts +5 -0
- package/dist/renderers/slides/renderer/placeholder.js +12 -0
- package/dist/renderers/slides/renderer/placeholder.js.map +1 -0
- package/dist/renderers/slides/routes/api.d.ts +2 -0
- package/dist/renderers/slides/routes/api.js +568 -0
- package/dist/renderers/slides/routes/api.js.map +1 -0
- package/dist/renderers/slides/routes/editor.d.ts +2 -0
- package/dist/renderers/slides/routes/editor.js +32 -0
- package/dist/renderers/slides/routes/editor.js.map +1 -0
- package/dist/renderers/slides/routes/viewer.d.ts +2 -0
- package/dist/renderers/slides/routes/viewer.js +67 -0
- package/dist/renderers/slides/routes/viewer.js.map +1 -0
- package/dist/renderers/slides/types.d.ts +111 -0
- package/dist/renderers/slides/types.js +2 -0
- package/dist/renderers/slides/types.js.map +1 -0
- package/dist/server/agents/agent-loader.d.ts +16 -0
- package/dist/server/agents/agent-loader.js +175 -0
- package/dist/server/agents/agent-loader.js.map +1 -0
- package/dist/server/agents/agent-runner.d.ts +33 -0
- package/dist/server/agents/agent-runner.js +187 -0
- package/dist/server/agents/agent-runner.js.map +1 -0
- package/dist/server/agents/agent-runtime.d.ts +39 -0
- package/dist/server/agents/agent-runtime.js +214 -0
- package/dist/server/agents/agent-runtime.js.map +1 -0
- package/dist/server/agents/base-agent.d.ts +30 -0
- package/dist/server/agents/base-agent.js +88 -0
- package/dist/server/agents/base-agent.js.map +1 -0
- package/dist/server/agents/executive-digest.d.ts +16 -0
- package/dist/server/agents/executive-digest.js +115 -0
- package/dist/server/agents/executive-digest.js.map +1 -0
- package/dist/server/agents/graph-steward.d.ts +16 -0
- package/dist/server/agents/graph-steward.js +59 -0
- package/dist/server/agents/graph-steward.js.map +1 -0
- package/dist/server/agents/meeting-followup.d.ts +16 -0
- package/dist/server/agents/meeting-followup.js +88 -0
- package/dist/server/agents/meeting-followup.js.map +1 -0
- package/dist/server/agents/pipeline-monitor.d.ts +15 -0
- package/dist/server/agents/pipeline-monitor.js +86 -0
- package/dist/server/agents/pipeline-monitor.js.map +1 -0
- package/dist/server/agents/types.d.ts +81 -0
- package/dist/server/agents/types.js +41 -0
- package/dist/server/agents/types.js.map +1 -0
- package/dist/server/chrome/chrome.css +32 -22
- package/dist/server/index.d.ts +1 -3
- package/dist/server/index.js +197 -115
- package/dist/server/index.js.map +1 -1
- package/dist/server/routes/agents-api.d.ts +10 -0
- package/dist/server/routes/agents-api.js +25 -0
- package/dist/server/routes/agents-api.js.map +1 -0
- package/dist/server/routes/asset-api.d.ts +10 -0
- package/dist/server/routes/asset-api.js +195 -0
- package/dist/server/routes/asset-api.js.map +1 -0
- package/dist/server/routes/auth-api.d.ts +3 -2
- package/dist/server/routes/auth-api.js +167 -23
- 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 +183 -35
- package/dist/server/routes/capture-api.js.map +1 -1
- package/dist/server/routes/chat.js +151 -86
- package/dist/server/routes/chat.js.map +1 -1
- package/dist/server/routes/config-api.d.ts +20 -0
- package/dist/server/routes/config-api.js +126 -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 +275 -0
- package/dist/server/routes/connectors-api.js.map +1 -0
- package/dist/server/routes/features-api.d.ts +10 -0
- package/dist/server/routes/features-api.js +15 -0
- package/dist/server/routes/features-api.js.map +1 -0
- package/dist/server/routes/git-http.d.ts +1 -1
- package/dist/server/routes/git-http.js +30 -19
- package/dist/server/routes/git-http.js.map +1 -1
- package/dist/server/routes/graph-api.d.ts +2 -1
- package/dist/server/routes/graph-api.js +357 -109
- package/dist/server/routes/graph-api.js.map +1 -1
- package/dist/server/routes/insights-api.d.ts +2 -2
- package/dist/server/routes/insights-api.js +101 -20
- package/dist/server/routes/insights-api.js.map +1 -1
- package/dist/server/routes/mcp.d.ts +5 -3
- package/dist/server/routes/mcp.js +11 -3
- package/dist/server/routes/mcp.js.map +1 -1
- package/dist/server/routes/meeting-ingest-api.d.ts +4 -5
- package/dist/server/routes/meeting-ingest-api.js +60 -266
- package/dist/server/routes/meeting-ingest-api.js.map +1 -1
- package/dist/server/routes/messages-api.d.ts +15 -0
- package/dist/server/routes/messages-api.js +569 -0
- package/dist/server/routes/messages-api.js.map +1 -0
- package/dist/server/routes/permissions-api.d.ts +6 -2
- package/dist/server/routes/permissions-api.js +75 -30
- package/dist/server/routes/permissions-api.js.map +1 -1
- package/dist/server/routes/share-api.d.ts +10 -0
- package/dist/server/routes/share-api.js +51 -0
- package/dist/server/routes/share-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/view-public.d.ts +10 -0
- package/dist/server/routes/view-public.js +107 -0
- package/dist/server/routes/view-public.js.map +1 -0
- package/dist/server/routes/views-api.js +10 -6
- package/dist/server/routes/views-api.js.map +1 -1
- package/dist/server/routes/workspace-api.js +0 -22
- package/dist/server/routes/workspace-api.js.map +1 -1
- package/dist/server/routes/ws.js +8 -6
- package/dist/server/routes/ws.js.map +1 -1
- package/dist/server/session-manager.js +1 -2
- package/dist/server/session-manager.js.map +1 -1
- package/dist/server/ws-hub.d.ts +60 -2
- package/dist/server/ws-hub.js +32 -3
- package/dist/server/ws-hub.js.map +1 -1
- package/dist/server/yjs-manager.d.ts +14 -0
- package/dist/server/yjs-manager.js +102 -4
- package/dist/server/yjs-manager.js.map +1 -1
- package/dist/services/access-control.d.ts +49 -0
- package/dist/services/access-control.js +105 -0
- package/dist/services/access-control.js.map +1 -0
- package/dist/services/assets/base.d.ts +16 -0
- package/dist/services/assets/base.js.map +1 -1
- package/dist/services/assets/index.d.ts +6 -1
- package/dist/services/assets/index.js +7 -0
- package/dist/services/assets/index.js.map +1 -1
- package/dist/services/assets/local.d.ts +7 -1
- package/dist/services/assets/local.js +83 -0
- package/dist/services/assets/local.js.map +1 -1
- package/dist/services/assets/r2.d.ts +7 -1
- package/dist/services/assets/r2.js +47 -0
- package/dist/services/assets/r2.js.map +1 -1
- package/dist/services/auth-service.d.ts +116 -19
- package/dist/services/auth-service.js +386 -83
- package/dist/services/auth-service.js.map +1 -1
- package/dist/services/batch-processor.js +1 -1
- package/dist/services/batch-processor.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/briefing.d.ts +26 -0
- package/dist/services/briefing.js +206 -0
- package/dist/services/briefing.js.map +1 -0
- 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/heartbeat.d.ts +35 -0
- package/dist/services/heartbeat.js +236 -0
- package/dist/services/heartbeat.js.map +1 -0
- package/dist/services/image-import-service.d.ts +24 -0
- package/dist/services/image-import-service.js +108 -0
- package/dist/services/image-import-service.js.map +1 -0
- package/dist/services/import-service.d.ts +7 -1
- package/dist/services/import-service.js +73 -4
- package/dist/services/import-service.js.map +1 -1
- package/dist/services/insights.js +28 -5
- package/dist/services/insights.js.map +1 -1
- package/dist/services/meeting-processor.d.ts +97 -0
- package/dist/services/meeting-processor.js +382 -0
- package/dist/services/meeting-processor.js.map +1 -0
- 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/message-service.d.ts +117 -0
- package/dist/services/message-service.js +414 -0
- package/dist/services/message-service.js.map +1 -0
- package/dist/web/_app/immutable/assets/0.tt36wGs6.css +1 -0
- package/dist/web/_app/immutable/assets/10.2jzI3cZY.css +1 -0
- package/dist/web/_app/immutable/assets/11.Cb9eS4rw.css +1 -0
- package/dist/web/_app/immutable/assets/12.DSXdDCt2.css +1 -0
- package/dist/web/_app/immutable/assets/2.cj3pVppF.css +1 -0
- package/dist/web/_app/immutable/assets/3.DSua86Zq.css +1 -0
- package/dist/web/_app/immutable/assets/4.DVc_mPcN.css +1 -0
- package/dist/web/_app/immutable/assets/ChevronLeft.DiKBNVgX.css +1 -0
- package/dist/web/_app/immutable/assets/GraphView.CRV5cekT.css +1 -0
- package/dist/web/_app/immutable/assets/ViewToolbar.CsWTe0yn.css +1 -0
- package/dist/web/_app/immutable/assets/WorkspaceView.BMPu-4Wa.css +1 -0
- package/dist/web/_app/immutable/chunks/-wxjF91G.js +1 -0
- package/dist/web/_app/immutable/chunks/9gtwoV4P.js +2 -0
- package/dist/web/_app/immutable/chunks/{Eqahi7_S.js → B45od9dM.js} +2 -2
- package/dist/web/_app/immutable/chunks/BCLL87Av.js +1 -0
- package/dist/web/_app/immutable/chunks/BCm_7Inl.js +1 -0
- package/dist/web/_app/immutable/chunks/BHbfAzRO.js +1 -0
- package/dist/web/_app/immutable/chunks/BKZqH2tV.js +1 -0
- package/dist/web/_app/immutable/chunks/BLPw0UPc.js +2 -0
- package/dist/web/_app/immutable/chunks/BQ3iDzHp.js +1 -0
- package/dist/web/_app/immutable/chunks/{CM2Uy2S4.js → BSpviSWs.js} +1 -1
- package/dist/web/_app/immutable/chunks/{D1Fuxz62.js → BUV6mcOy.js} +1 -1
- package/dist/web/_app/immutable/chunks/BUhjenaJ.js +1 -0
- package/dist/web/_app/immutable/chunks/BWrcBDa3.js +5 -0
- package/dist/web/_app/immutable/chunks/BYjwobCP.js +1 -0
- package/dist/web/_app/immutable/chunks/BbSP3Sm9.js +1 -0
- package/dist/web/_app/immutable/chunks/BbbskiWe.js +1 -0
- package/dist/web/_app/immutable/chunks/BnuL1eJn.js +1 -0
- package/dist/web/_app/immutable/chunks/BocnTYM0.js +1 -0
- package/dist/web/_app/immutable/chunks/Bpy-hqIj.js +1 -0
- package/dist/web/_app/immutable/chunks/BrebtJNG.js +18 -0
- package/dist/web/_app/immutable/chunks/BtjbqM0h.js +1 -0
- package/dist/web/_app/immutable/chunks/BulV8KzX.js +1 -0
- package/dist/web/_app/immutable/chunks/BwrgIV17.js +1 -0
- package/dist/web/_app/immutable/chunks/Bx3N1DIh.js +1 -0
- package/dist/web/_app/immutable/chunks/{C7VoTosa.js → Bz0ZjVQE.js} +1 -1
- package/dist/web/_app/immutable/chunks/{CWQRQXxy.js → C0LVZhvn.js} +1 -1
- package/dist/web/_app/immutable/chunks/CAoBH5oR.js +1 -0
- package/dist/web/_app/immutable/chunks/ClUQT4C1.js +1 -0
- package/dist/web/_app/immutable/chunks/CnvQx_FH.js +1 -0
- package/dist/web/_app/immutable/chunks/CoIXzWkc.js +5 -0
- package/dist/web/_app/immutable/chunks/CqACN7PV.js +1 -0
- package/dist/web/_app/immutable/chunks/Ct8o3lkT.js +4 -0
- package/dist/web/_app/immutable/chunks/D1BlNihW.js +1 -0
- package/dist/web/_app/immutable/chunks/DAWhepJ2.js +2 -0
- package/dist/web/_app/immutable/chunks/DD_IjhIj.js +1 -0
- package/dist/web/_app/immutable/chunks/DFYOFE3o.js +1 -0
- package/dist/web/_app/immutable/chunks/DerefRkG.js +1 -0
- package/dist/web/_app/immutable/chunks/DpgUPK2a.js +1 -0
- package/dist/web/_app/immutable/chunks/DsnmJJEf.js +1 -0
- package/dist/web/_app/immutable/chunks/DsoI6Vso.js +1 -0
- package/dist/web/_app/immutable/chunks/HFZXHvE3.js +1 -0
- package/dist/web/_app/immutable/chunks/QFQ05a0D.js +1 -0
- package/dist/web/_app/immutable/chunks/RsJJ4HLq.js +1 -0
- package/dist/web/_app/immutable/chunks/gYOvQJjM.js +1 -0
- package/dist/web/_app/immutable/chunks/hUJ5IAUm.js +2 -0
- package/dist/web/_app/immutable/chunks/kA7K83A6.js +1 -0
- package/dist/web/_app/immutable/chunks/txOdadJq.js +1 -0
- package/dist/web/_app/immutable/chunks/vxEtkL8z.js +1 -0
- package/dist/web/_app/immutable/chunks/{D7ZqAKi9.js → wDIGUaoU.js} +1 -1
- package/dist/web/_app/immutable/chunks/ypcxmEdT.js +2 -0
- package/dist/web/_app/immutable/entry/app.NXOEob17.js +2 -0
- package/dist/web/_app/immutable/entry/start.CfmBqwCz.js +1 -0
- package/dist/web/_app/immutable/nodes/0.BVgKNTrB.js +2 -0
- package/dist/web/_app/immutable/nodes/1.CRf0E_7L.js +1 -0
- package/dist/web/_app/immutable/nodes/10.CihhxpE1.js +1 -0
- package/dist/web/_app/immutable/nodes/11.FnZkZKxR.js +1 -0
- package/dist/web/_app/immutable/nodes/12.DMHpM_q0.js +1 -0
- package/dist/web/_app/immutable/nodes/2.BGOOcSyM.js +271 -0
- package/dist/web/_app/immutable/nodes/3.CuzG6oIP.js +5 -0
- package/dist/web/_app/immutable/nodes/4.C7V72ICK.js +11 -0
- package/dist/web/_app/immutable/nodes/5.BNtaLkbW.js +1 -0
- package/dist/web/_app/immutable/nodes/6.BViNLvc6.js +1 -0
- package/dist/web/_app/immutable/nodes/7.9KnGMlt0.js +1 -0
- package/dist/web/_app/immutable/nodes/8.Cn7NGGVZ.js +1 -0
- package/dist/web/_app/immutable/nodes/9.zX-fDTGl.js +1 -0
- package/dist/web/_app/version.json +1 -1
- package/dist/web/index.html +13 -12
- package/package.json +6 -2
- 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.DV29Ju9o.css +0 -1
- package/dist/web/_app/immutable/assets/3.wKyYjDCb.css +0 -1
- package/dist/web/_app/immutable/assets/4.CeR-6sbU.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/ViewToolbar.DpnwjPN2.css +0 -1
- package/dist/web/_app/immutable/assets/index.D6tMDJWk.css +0 -1
- package/dist/web/_app/immutable/chunks/1dIfOCaR.js +0 -1
- package/dist/web/_app/immutable/chunks/37NdyH6G.js +0 -32
- package/dist/web/_app/immutable/chunks/ASgiXMPH.js +0 -1
- package/dist/web/_app/immutable/chunks/B340SUKR.js +0 -1
- package/dist/web/_app/immutable/chunks/B5JBPMiB.js +0 -1
- package/dist/web/_app/immutable/chunks/B5NOZc1U.js +0 -5
- package/dist/web/_app/immutable/chunks/B6entZoP.js +0 -1
- package/dist/web/_app/immutable/chunks/BCfeHHT5.js +0 -1
- package/dist/web/_app/immutable/chunks/BUD-_USk.js +0 -1
- package/dist/web/_app/immutable/chunks/BZ5SLeDY.js +0 -2
- package/dist/web/_app/immutable/chunks/Ba7sEQ0H.js +0 -1
- package/dist/web/_app/immutable/chunks/BdBjJn6l.js +0 -1
- package/dist/web/_app/immutable/chunks/Bk1ZUzFk.js +0 -1
- package/dist/web/_app/immutable/chunks/Brq5Acxs.js +0 -1
- package/dist/web/_app/immutable/chunks/CCprH5gv.js +0 -1
- package/dist/web/_app/immutable/chunks/CEFTnQJH.js +0 -1
- package/dist/web/_app/immutable/chunks/CKUPoI6r.js +0 -1
- package/dist/web/_app/immutable/chunks/CSewARqf.js +0 -1
- package/dist/web/_app/immutable/chunks/CTRxNfZk.js +0 -1
- package/dist/web/_app/immutable/chunks/C_xsb6dD.js +0 -1
- package/dist/web/_app/immutable/chunks/CiYYGzQL.js +0 -1
- package/dist/web/_app/immutable/chunks/CqS-xeMr.js +0 -2
- 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/CuRoivsu.js +0 -1
- package/dist/web/_app/immutable/chunks/CuqxohpZ.js +0 -4
- package/dist/web/_app/immutable/chunks/CvfqF_wR.js +0 -1
- package/dist/web/_app/immutable/chunks/D4k6cawR.js +0 -1
- package/dist/web/_app/immutable/chunks/D7-uQ_Yy.js +0 -1
- package/dist/web/_app/immutable/chunks/DB-pJ2D8.js +0 -1
- package/dist/web/_app/immutable/chunks/DPidrYdY.js +0 -1
- package/dist/web/_app/immutable/chunks/DaNH7C9J.js +0 -1
- package/dist/web/_app/immutable/chunks/DawXNQ-K.js +0 -1
- package/dist/web/_app/immutable/chunks/DcCESWgB.js +0 -1
- package/dist/web/_app/immutable/chunks/DjubnCG6.js +0 -1
- package/dist/web/_app/immutable/chunks/DmjXtxoy.js +0 -1
- package/dist/web/_app/immutable/chunks/DvDiTFt0.js +0 -1
- package/dist/web/_app/immutable/chunks/FsY1M36Q.js +0 -2
- package/dist/web/_app/immutable/chunks/G0zfSlkt.js +0 -1
- package/dist/web/_app/immutable/chunks/WJPrj8NV.js +0 -1
- package/dist/web/_app/immutable/chunks/WjRZHqTR.js +0 -1
- package/dist/web/_app/immutable/chunks/h5drYtf6.js +0 -1
- package/dist/web/_app/immutable/chunks/vTPwOA1A.js +0 -1
- package/dist/web/_app/immutable/entry/app.ChyFhdaY.js +0 -2
- package/dist/web/_app/immutable/entry/start.C_1PMC8W.js +0 -1
- package/dist/web/_app/immutable/nodes/0.B-1BPDKP.js +0 -2
- package/dist/web/_app/immutable/nodes/1.BT9NLhV_.js +0 -1
- package/dist/web/_app/immutable/nodes/10.C3m59sUV.js +0 -1
- package/dist/web/_app/immutable/nodes/2.DFoxANHc.js +0 -301
- package/dist/web/_app/immutable/nodes/3.CFZMLWFW.js +0 -2
- package/dist/web/_app/immutable/nodes/4.DhwveuEM.js +0 -12
- package/dist/web/_app/immutable/nodes/5.DM7GsIwk.js +0 -4
- package/dist/web/_app/immutable/nodes/6.BDM2A4Y_.js +0 -2
- package/dist/web/_app/immutable/nodes/7.DuM6WsTN.js +0 -2
- package/dist/web/_app/immutable/nodes/8.DB47Ahwy.js +0 -1
- package/dist/web/_app/immutable/nodes/9.CkYF7nzi.js +0 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Pool — manages per-session Agent instances for concurrent access.
|
|
3
|
+
*
|
|
4
|
+
* Each session (collection chat, private chat, capture) gets its own Agent
|
|
5
|
+
* with independent conversation history. Shared resources (tools, system
|
|
6
|
+
* prompt, model) are created once and passed to each new agent.
|
|
7
|
+
*
|
|
8
|
+
* Per-session locking ensures only one call runs per session at a time,
|
|
9
|
+
* while different sessions can run in parallel.
|
|
10
|
+
*/
|
|
11
|
+
import { Agent } from '@mariozechner/pi-agent-core';
|
|
12
|
+
import type { AuthUser } from '../services/auth-service.js';
|
|
13
|
+
import type { MutationEvent } from './tools/graph-tools.js';
|
|
14
|
+
export interface AgentContext {
|
|
15
|
+
user: AuthUser | null;
|
|
16
|
+
onHighlight?: ((ids: string[]) => void) | null;
|
|
17
|
+
onMutation?: ((m: MutationEvent) => void) | null;
|
|
18
|
+
}
|
|
19
|
+
export interface SharedAgentConfig {
|
|
20
|
+
/** Factory to create a fresh Agent instance with tools, prompt, and model. */
|
|
21
|
+
createAgent: (userId?: number) => Agent;
|
|
22
|
+
/** Callback to load custom tools async (called once per new agent). */
|
|
23
|
+
loadCustomTools?: (agent: Agent) => void;
|
|
24
|
+
/** Base sessions directory. */
|
|
25
|
+
sessionsDir: string;
|
|
26
|
+
}
|
|
27
|
+
export declare class AgentPool {
|
|
28
|
+
private pool;
|
|
29
|
+
private reapTimer;
|
|
30
|
+
private config;
|
|
31
|
+
/** Per-session context — set before each call, read by tool closures. */
|
|
32
|
+
private contextMap;
|
|
33
|
+
constructor(config: SharedAgentConfig);
|
|
34
|
+
/**
|
|
35
|
+
* Get the current context for a session (used by tool closures).
|
|
36
|
+
* Returns null user if no context is set.
|
|
37
|
+
*/
|
|
38
|
+
getContext(sessionId: string): AgentContext;
|
|
39
|
+
/**
|
|
40
|
+
* Acquire an agent for a session, run a callback, then release.
|
|
41
|
+
* Per-session locking ensures serialized access within the same session.
|
|
42
|
+
* Different sessions run in parallel.
|
|
43
|
+
*/
|
|
44
|
+
withAgent<T>(sessionId: string, ctx: AgentContext, fn: (agent: Agent) => Promise<T>, opts?: {
|
|
45
|
+
userId?: number;
|
|
46
|
+
fallbackHistory?: Array<{
|
|
47
|
+
role: string;
|
|
48
|
+
content: string;
|
|
49
|
+
}>;
|
|
50
|
+
}): Promise<T>;
|
|
51
|
+
/** Get the raw Agent for a session (for subscribe/streaming). Must be used with withAgent. */
|
|
52
|
+
getAgent(sessionId: string): Agent | null;
|
|
53
|
+
/** Abort the agent for a session. */
|
|
54
|
+
abort(sessionId: string): void;
|
|
55
|
+
/** Save all sessions and stop the reaper. */
|
|
56
|
+
shutdown(): Promise<void>;
|
|
57
|
+
/** Clear all saved session files for a user. */
|
|
58
|
+
clearSessions(userId?: number): number;
|
|
59
|
+
get size(): number;
|
|
60
|
+
/** Find the session ID for a given agent instance. */
|
|
61
|
+
findSessionForAgent(agent: Agent): string | null;
|
|
62
|
+
private getOrCreate;
|
|
63
|
+
private loadSession;
|
|
64
|
+
private saveSession;
|
|
65
|
+
private getUserDir;
|
|
66
|
+
private pruneSessions;
|
|
67
|
+
private reap;
|
|
68
|
+
}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Pool — manages per-session Agent instances for concurrent access.
|
|
3
|
+
*
|
|
4
|
+
* Each session (collection chat, private chat, capture) gets its own Agent
|
|
5
|
+
* with independent conversation history. Shared resources (tools, system
|
|
6
|
+
* prompt, model) are created once and passed to each new agent.
|
|
7
|
+
*
|
|
8
|
+
* Per-session locking ensures only one call runs per session at a time,
|
|
9
|
+
* while different sessions can run in parallel.
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync, readdirSync, unlinkSync, statSync } from 'fs';
|
|
12
|
+
import { join, resolve } from 'path';
|
|
13
|
+
const IDLE_TIMEOUT_MS = 10 * 60_000; // 10 minutes
|
|
14
|
+
const REAP_INTERVAL_MS = 60_000; // check every 60s
|
|
15
|
+
const MAX_SESSIONS_PER_USER = 20;
|
|
16
|
+
export class AgentPool {
|
|
17
|
+
pool = new Map();
|
|
18
|
+
reapTimer = null;
|
|
19
|
+
config;
|
|
20
|
+
/** Per-session context — set before each call, read by tool closures. */
|
|
21
|
+
contextMap = new Map();
|
|
22
|
+
constructor(config) {
|
|
23
|
+
this.config = config;
|
|
24
|
+
this.reapTimer = setInterval(() => this.reap(), REAP_INTERVAL_MS);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get the current context for a session (used by tool closures).
|
|
28
|
+
* Returns null user if no context is set.
|
|
29
|
+
*/
|
|
30
|
+
getContext(sessionId) {
|
|
31
|
+
return this.contextMap.get(sessionId) ?? { user: null };
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Acquire an agent for a session, run a callback, then release.
|
|
35
|
+
* Per-session locking ensures serialized access within the same session.
|
|
36
|
+
* Different sessions run in parallel.
|
|
37
|
+
*/
|
|
38
|
+
async withAgent(sessionId, ctx, fn, opts) {
|
|
39
|
+
const entry = this.getOrCreate(sessionId, opts?.userId, opts?.fallbackHistory);
|
|
40
|
+
// Chain on the session's lock to serialize calls
|
|
41
|
+
const result = entry.lock.then(async () => {
|
|
42
|
+
entry.lastUsedAt = Date.now();
|
|
43
|
+
this.contextMap.set(sessionId, ctx);
|
|
44
|
+
try {
|
|
45
|
+
return await fn(entry.agent);
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
this.contextMap.delete(sessionId);
|
|
49
|
+
// Save session after each call
|
|
50
|
+
this.saveSession(entry);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
// Update the lock — next caller for this session waits for this one
|
|
54
|
+
entry.lock = result.then(() => { }, () => { });
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
/** Get the raw Agent for a session (for subscribe/streaming). Must be used with withAgent. */
|
|
58
|
+
getAgent(sessionId) {
|
|
59
|
+
return this.pool.get(sessionId)?.agent ?? null;
|
|
60
|
+
}
|
|
61
|
+
/** Abort the agent for a session. */
|
|
62
|
+
abort(sessionId) {
|
|
63
|
+
this.pool.get(sessionId)?.agent.abort();
|
|
64
|
+
}
|
|
65
|
+
/** Save all sessions and stop the reaper. */
|
|
66
|
+
async shutdown() {
|
|
67
|
+
if (this.reapTimer) {
|
|
68
|
+
clearInterval(this.reapTimer);
|
|
69
|
+
this.reapTimer = null;
|
|
70
|
+
}
|
|
71
|
+
for (const entry of this.pool.values()) {
|
|
72
|
+
this.saveSession(entry);
|
|
73
|
+
}
|
|
74
|
+
this.pool.clear();
|
|
75
|
+
}
|
|
76
|
+
/** Clear all saved session files for a user. */
|
|
77
|
+
clearSessions(userId) {
|
|
78
|
+
const dir = this.getUserDir(userId);
|
|
79
|
+
if (!existsSync(dir))
|
|
80
|
+
return 0;
|
|
81
|
+
const files = readdirSync(dir).filter(f => f.endsWith('.json'));
|
|
82
|
+
for (const f of files) {
|
|
83
|
+
try {
|
|
84
|
+
unlinkSync(join(dir, f));
|
|
85
|
+
}
|
|
86
|
+
catch { /* ignore */ }
|
|
87
|
+
}
|
|
88
|
+
return files.length;
|
|
89
|
+
}
|
|
90
|
+
get size() {
|
|
91
|
+
return this.pool.size;
|
|
92
|
+
}
|
|
93
|
+
/** Find the session ID for a given agent instance. */
|
|
94
|
+
findSessionForAgent(agent) {
|
|
95
|
+
for (const [sid, entry] of this.pool) {
|
|
96
|
+
if (entry.agent === agent)
|
|
97
|
+
return sid;
|
|
98
|
+
}
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
// ── Private ──
|
|
102
|
+
getOrCreate(sessionId, userId, fallbackHistory) {
|
|
103
|
+
const existing = this.pool.get(sessionId);
|
|
104
|
+
if (existing)
|
|
105
|
+
return existing;
|
|
106
|
+
// Create a fresh agent instance (pass userId for per-user context like briefing)
|
|
107
|
+
const agent = this.config.createAgent(userId);
|
|
108
|
+
this.config.loadCustomTools?.(agent);
|
|
109
|
+
// Try loading session from disk
|
|
110
|
+
const loaded = this.loadSession(agent, sessionId, userId);
|
|
111
|
+
// Fallback: inject history as context if no saved session
|
|
112
|
+
if (!loaded && fallbackHistory && fallbackHistory.length > 0) {
|
|
113
|
+
const transcript = fallbackHistory
|
|
114
|
+
.map(m => `${m.role === 'assistant' ? 'Assistant' : 'User'}: ${m.content}`)
|
|
115
|
+
.join('\n\n');
|
|
116
|
+
const contextMsg = {
|
|
117
|
+
role: 'user',
|
|
118
|
+
content: [{ type: 'text', text: `[Prior conversation context]\n\n${transcript}` }],
|
|
119
|
+
timestamp: Date.now(),
|
|
120
|
+
};
|
|
121
|
+
agent.replaceMessages([contextMsg]);
|
|
122
|
+
}
|
|
123
|
+
const entry = {
|
|
124
|
+
agent,
|
|
125
|
+
sessionId,
|
|
126
|
+
userId,
|
|
127
|
+
lastUsedAt: Date.now(),
|
|
128
|
+
lock: Promise.resolve(),
|
|
129
|
+
};
|
|
130
|
+
this.pool.set(sessionId, entry);
|
|
131
|
+
return entry;
|
|
132
|
+
}
|
|
133
|
+
loadSession(agent, sessionId, userId) {
|
|
134
|
+
const userDir = this.getUserDir(userId);
|
|
135
|
+
const sessionPath = join(userDir, `${sessionId}.json`);
|
|
136
|
+
// Path traversal guard
|
|
137
|
+
if (!resolve(sessionPath).startsWith(resolve(userDir)))
|
|
138
|
+
return false;
|
|
139
|
+
if (existsSync(sessionPath)) {
|
|
140
|
+
try {
|
|
141
|
+
const data = JSON.parse(readFileSync(sessionPath, 'utf-8'));
|
|
142
|
+
if (Array.isArray(data.messages) && data.messages.length > 0) {
|
|
143
|
+
agent.replaceMessages(data.messages);
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch { /* corrupted — fall through */ }
|
|
148
|
+
}
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
saveSession(entry) {
|
|
152
|
+
const messages = entry.agent.state.messages;
|
|
153
|
+
if (messages.length === 0)
|
|
154
|
+
return;
|
|
155
|
+
const userDir = this.getUserDir(entry.userId);
|
|
156
|
+
if (!existsSync(userDir)) {
|
|
157
|
+
mkdirSync(userDir, { recursive: true });
|
|
158
|
+
}
|
|
159
|
+
const sessionPath = join(userDir, `${entry.sessionId}.json`);
|
|
160
|
+
writeFileSync(sessionPath, JSON.stringify({
|
|
161
|
+
sessionId: entry.sessionId,
|
|
162
|
+
updatedAt: new Date().toISOString(),
|
|
163
|
+
messages,
|
|
164
|
+
}), 'utf-8');
|
|
165
|
+
this.pruneSessions(userDir, MAX_SESSIONS_PER_USER);
|
|
166
|
+
}
|
|
167
|
+
getUserDir(userId) {
|
|
168
|
+
if (userId)
|
|
169
|
+
return join(this.config.sessionsDir, String(userId));
|
|
170
|
+
return this.config.sessionsDir;
|
|
171
|
+
}
|
|
172
|
+
pruneSessions(dir, keep) {
|
|
173
|
+
if (!existsSync(dir))
|
|
174
|
+
return;
|
|
175
|
+
const files = readdirSync(dir)
|
|
176
|
+
.filter(f => f.endsWith('.json'))
|
|
177
|
+
.map(f => {
|
|
178
|
+
try {
|
|
179
|
+
return { name: f, mtime: statSync(join(dir, f)).mtimeMs };
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
})
|
|
185
|
+
.filter(Boolean);
|
|
186
|
+
if (files.length <= keep)
|
|
187
|
+
return;
|
|
188
|
+
files.sort((a, b) => b.mtime - a.mtime);
|
|
189
|
+
for (const f of files.slice(keep)) {
|
|
190
|
+
try {
|
|
191
|
+
unlinkSync(join(dir, f.name));
|
|
192
|
+
}
|
|
193
|
+
catch { /* ignore */ }
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
reap() {
|
|
197
|
+
const now = Date.now();
|
|
198
|
+
for (const [key, entry] of this.pool) {
|
|
199
|
+
if (now - entry.lastUsedAt > IDLE_TIMEOUT_MS) {
|
|
200
|
+
this.saveSession(entry);
|
|
201
|
+
this.pool.delete(key);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=agent-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-pool.js","sourceRoot":"","sources":["../../src/agent/agent-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ import { WorkspaceConfig } from '../core/types.js';
|
|
|
10
10
|
import { GitUser } from '../services/git.js';
|
|
11
11
|
import { type MutationEvent } from './tools/graph-tools.js';
|
|
12
12
|
import type { AuthUser } from '../services/auth-service.js';
|
|
13
|
+
import { AgentPool } from './agent-pool.js';
|
|
13
14
|
export interface AgentConfig {
|
|
14
15
|
workspacePath: string;
|
|
15
16
|
workspaceConfig: WorkspaceConfig;
|
|
@@ -22,6 +23,15 @@ export interface AgentConfig {
|
|
|
22
23
|
recentMemory?: string;
|
|
23
24
|
/** Shared WorkspaceManager instance (used by server to share state with agent). */
|
|
24
25
|
workspaceManager?: WorkspaceManager;
|
|
26
|
+
/** Shared MessageService instance (for searching collection messages). */
|
|
27
|
+
messageService?: import('../services/message-service.js').MessageService;
|
|
28
|
+
/**
|
|
29
|
+
* Called after the agent mutates an entity on disk, so the server can
|
|
30
|
+
* push the new content into any active Y.Doc and keep live editors in
|
|
31
|
+
* sync. Without this, agent edits bypass the Y.Doc and cause content
|
|
32
|
+
* duplication on the next resync.
|
|
33
|
+
*/
|
|
34
|
+
onEntityContentMutation?: (repo: string, entityType: string, entityId: string) => void;
|
|
25
35
|
}
|
|
26
36
|
export interface AgentResponse {
|
|
27
37
|
content: string;
|
|
@@ -34,25 +44,28 @@ export interface AgentResponse {
|
|
|
34
44
|
export declare class AgentOrchestrator {
|
|
35
45
|
private workspacePath;
|
|
36
46
|
private workspaceManager;
|
|
37
|
-
private
|
|
47
|
+
private pool;
|
|
38
48
|
private config;
|
|
39
49
|
private gitUser;
|
|
40
50
|
private skillsDirs;
|
|
41
51
|
private toolsDirs;
|
|
42
52
|
private registryRef;
|
|
43
|
-
private _highlightCallback;
|
|
44
|
-
private _mutationCallback;
|
|
45
|
-
private _currentUser;
|
|
46
53
|
private authService;
|
|
54
|
+
private messageService;
|
|
47
55
|
private recentMemory?;
|
|
48
|
-
private currentSessionId;
|
|
49
56
|
private sessionsDir;
|
|
57
|
+
private onEntityContentMutation?;
|
|
58
|
+
private _currentUser;
|
|
59
|
+
private _highlightCallback;
|
|
60
|
+
private _mutationCallback;
|
|
61
|
+
private currentSessionId;
|
|
62
|
+
private _sessionUserId;
|
|
50
63
|
constructor(config: AgentConfig);
|
|
51
64
|
/**
|
|
52
65
|
* Create Pi-Mono agent with tools and system prompt.
|
|
53
66
|
* Custom tools and skills are loaded asynchronously via initAsync().
|
|
54
67
|
*/
|
|
55
|
-
private
|
|
68
|
+
private createAgentInstance;
|
|
56
69
|
/**
|
|
57
70
|
* Load custom JS tools from app/workspace tool dirs and append to the agent.
|
|
58
71
|
* Runs async after construction — custom tools may not be available for the
|
|
@@ -64,6 +77,24 @@ export declare class AgentOrchestrator {
|
|
|
64
77
|
* Build the full system prompt: base prompt + eager skill content + skill index.
|
|
65
78
|
*/
|
|
66
79
|
private buildSystemPrompt;
|
|
80
|
+
/**
|
|
81
|
+
* Enumerate skill entities across all folders the user can access. Each
|
|
82
|
+
* skill becomes a SkillMeta with a `graph://<repo>/<id>` sentinel
|
|
83
|
+
* entrypoint. Priority order: user's private folder first, then shared
|
|
84
|
+
* folders alphabetically. First occurrence of a given name wins.
|
|
85
|
+
*/
|
|
86
|
+
private enumerateGraphSkills;
|
|
87
|
+
/**
|
|
88
|
+
* Load the markdown body of a skill entity by (repo, id).
|
|
89
|
+
*/
|
|
90
|
+
private readGraphSkillBody;
|
|
91
|
+
/**
|
|
92
|
+
* Build a workspace identity section from graph entities.
|
|
93
|
+
* Reads organization, person, practice-area, and guideline entries
|
|
94
|
+
* to compose a concise identity summary for the system prompt.
|
|
95
|
+
* Returns null if no organization entries exist.
|
|
96
|
+
*/
|
|
97
|
+
private buildWorkspaceIdentity;
|
|
67
98
|
/**
|
|
68
99
|
* Fallback system prompt when prompts/system.md is not found.
|
|
69
100
|
*/
|
|
@@ -71,7 +102,23 @@ export declare class AgentOrchestrator {
|
|
|
71
102
|
/**
|
|
72
103
|
* Send a message to the agent
|
|
73
104
|
*/
|
|
105
|
+
/**
|
|
106
|
+
* Send a message and await the full agent response.
|
|
107
|
+
* Uses the current session (set via switchSession) or a default session.
|
|
108
|
+
*/
|
|
74
109
|
chat(userMessage: string): Promise<AgentResponse>;
|
|
110
|
+
/**
|
|
111
|
+
* Send a message with an explicit session ID and context.
|
|
112
|
+
* Preferred over the legacy setCurrentUser + switchSession + chat pattern.
|
|
113
|
+
*/
|
|
114
|
+
chatInSession(sessionId: string, userMessage: string, opts?: {
|
|
115
|
+
user?: AuthUser | null;
|
|
116
|
+
userId?: number;
|
|
117
|
+
fallbackHistory?: Array<{
|
|
118
|
+
role: string;
|
|
119
|
+
content: string;
|
|
120
|
+
}>;
|
|
121
|
+
}): Promise<AgentResponse>;
|
|
75
122
|
/**
|
|
76
123
|
* Get workspace manager (for tools)
|
|
77
124
|
*/
|
|
@@ -111,36 +158,34 @@ export declare class AgentOrchestrator {
|
|
|
111
158
|
*/
|
|
112
159
|
emitMutation(m: MutationEvent): void;
|
|
113
160
|
/**
|
|
114
|
-
* Expose the raw pi-agent-core Agent instance.
|
|
161
|
+
* Expose the raw pi-agent-core Agent instance for a session (for SSE streaming).
|
|
162
|
+
* Returns the default session agent if no sessionId specified.
|
|
115
163
|
*/
|
|
116
|
-
getAgent(): Agent;
|
|
117
|
-
/**
|
|
118
|
-
|
|
164
|
+
getAgent(sessionId?: string): Agent | null;
|
|
165
|
+
/** Get the agent pool (for advanced callers that need direct pool access). */
|
|
166
|
+
getPool(): AgentPool;
|
|
167
|
+
/** Abort the agent for a session. */
|
|
168
|
+
abort(sessionId?: string): void;
|
|
119
169
|
/**
|
|
120
170
|
* Get the current session ID (null if none active).
|
|
121
171
|
*/
|
|
122
172
|
getCurrentSessionId(): string | null;
|
|
123
173
|
/**
|
|
124
|
-
* Switch
|
|
125
|
-
*
|
|
126
|
-
* - Existing session file → restore messages from disk
|
|
127
|
-
* - No file but fallback history → inject as context message
|
|
128
|
-
* - Nothing → clear messages for a fresh start
|
|
174
|
+
* Switch session (backward compat — sets state for next chat() call).
|
|
175
|
+
* With the pool, actual session loading happens lazily in withAgent().
|
|
129
176
|
*/
|
|
130
177
|
switchSession(sessionId: string, fallbackHistory?: Array<{
|
|
131
178
|
role: string;
|
|
132
179
|
content: string;
|
|
133
|
-
}
|
|
180
|
+
}>, userId?: number): Promise<void>;
|
|
134
181
|
/**
|
|
135
|
-
* Save
|
|
182
|
+
* Save session (backward compat — pool auto-saves after each withAgent call).
|
|
136
183
|
*/
|
|
137
184
|
saveSession(): void;
|
|
138
185
|
/**
|
|
139
186
|
* Clear all saved sessions from disk.
|
|
140
187
|
*/
|
|
141
188
|
clearSessions(): number;
|
|
142
|
-
/**
|
|
143
|
-
|
|
144
|
-
*/
|
|
145
|
-
private pruneSessions;
|
|
189
|
+
/** Shut down the agent pool (save all sessions, stop idle reaper). */
|
|
190
|
+
shutdown(): Promise<void>;
|
|
146
191
|
}
|