@fideliosai/server 2026.331.0-canary.0
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/LICENSE +22 -0
- package/dist/adapters/codex-models.d.ts +4 -0
- package/dist/adapters/codex-models.d.ts.map +1 -0
- package/dist/adapters/codex-models.js +98 -0
- package/dist/adapters/codex-models.js.map +1 -0
- package/dist/adapters/cursor-models.d.ts +13 -0
- package/dist/adapters/cursor-models.d.ts.map +1 -0
- package/dist/adapters/cursor-models.js +148 -0
- package/dist/adapters/cursor-models.js.map +1 -0
- package/dist/adapters/http/execute.d.ts +3 -0
- package/dist/adapters/http/execute.d.ts.map +1 -0
- package/dist/adapters/http/execute.js +39 -0
- package/dist/adapters/http/execute.js.map +1 -0
- package/dist/adapters/http/index.d.ts +3 -0
- package/dist/adapters/http/index.d.ts.map +1 -0
- package/dist/adapters/http/index.js +20 -0
- package/dist/adapters/http/index.js.map +1 -0
- package/dist/adapters/http/test.d.ts +3 -0
- package/dist/adapters/http/test.d.ts.map +1 -0
- package/dist/adapters/http/test.js +106 -0
- package/dist/adapters/http/test.js.map +1 -0
- package/dist/adapters/index.d.ts +4 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +3 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/process/execute.d.ts +3 -0
- package/dist/adapters/process/execute.d.ts.map +1 -0
- package/dist/adapters/process/execute.js +63 -0
- package/dist/adapters/process/execute.js.map +1 -0
- package/dist/adapters/process/index.d.ts +3 -0
- package/dist/adapters/process/index.d.ts.map +1 -0
- package/dist/adapters/process/index.js +23 -0
- package/dist/adapters/process/index.js.map +1 -0
- package/dist/adapters/process/test.d.ts +3 -0
- package/dist/adapters/process/test.d.ts.map +1 -0
- package/dist/adapters/process/test.js +77 -0
- package/dist/adapters/process/test.js.map +1 -0
- package/dist/adapters/registry.d.ts +14 -0
- package/dist/adapters/registry.d.ts.map +1 -0
- package/dist/adapters/registry.js +164 -0
- package/dist/adapters/registry.js.map +1 -0
- package/dist/adapters/types.d.ts +2 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +2 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/adapters/utils.d.ts +10 -0
- package/dist/adapters/utils.d.ts.map +1 -0
- package/dist/adapters/utils.js +14 -0
- package/dist/adapters/utils.js.map +1 -0
- package/dist/agent-auth-jwt.d.ts +14 -0
- package/dist/agent-auth-jwt.d.ts.map +1 -0
- package/dist/agent-auth-jwt.js +117 -0
- package/dist/agent-auth-jwt.js.map +1 -0
- package/dist/app.d.ts +25 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +265 -0
- package/dist/app.js.map +1 -0
- package/dist/attachment-types.d.ts +33 -0
- package/dist/attachment-types.d.ts.map +1 -0
- package/dist/attachment-types.js +67 -0
- package/dist/attachment-types.js.map +1 -0
- package/dist/auth/better-auth.d.ts +24 -0
- package/dist/auth/better-auth.d.ts.map +1 -0
- package/dist/auth/better-auth.js +108 -0
- package/dist/auth/better-auth.js.map +1 -0
- package/dist/board-claim.d.ts +23 -0
- package/dist/board-claim.d.ts.map +1 -0
- package/dist/board-claim.js +115 -0
- package/dist/board-claim.js.map +1 -0
- package/dist/config-file.d.ts +3 -0
- package/dist/config-file.d.ts.map +1 -0
- package/dist/config-file.js +16 -0
- package/dist/config-file.js.map +1 -0
- package/dist/config.d.ts +45 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +171 -0
- package/dist/config.js.map +1 -0
- package/dist/dev-server-status.d.ts +27 -0
- package/dist/dev-server-status.d.ts.map +1 -0
- package/dist/dev-server-status.js +70 -0
- package/dist/dev-server-status.js.map +1 -0
- package/dist/dev-watch-ignore.d.ts +2 -0
- package/dist/dev-watch-ignore.d.ts.map +1 -0
- package/dist/dev-watch-ignore.js +33 -0
- package/dist/dev-watch-ignore.js.map +1 -0
- package/dist/errors.d.ts +12 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +28 -0
- package/dist/errors.js.map +1 -0
- package/dist/home-paths.d.ts +17 -0
- package/dist/home-paths.d.ts.map +1 -0
- package/dist/home-paths.js +75 -0
- package/dist/home-paths.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +642 -0
- package/dist/index.js.map +1 -0
- package/dist/log-redaction.d.ts +11 -0
- package/dist/log-redaction.d.ts.map +1 -0
- package/dist/log-redaction.js +118 -0
- package/dist/log-redaction.js.map +1 -0
- package/dist/middleware/auth.d.ts +12 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +144 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/board-mutation-guard.d.ts +3 -0
- package/dist/middleware/board-mutation-guard.d.ts.map +1 -0
- package/dist/middleware/board-mutation-guard.js +59 -0
- package/dist/middleware/board-mutation-guard.js.map +1 -0
- package/dist/middleware/error-handler.d.ts +17 -0
- package/dist/middleware/error-handler.d.ts.map +1 -0
- package/dist/middleware/error-handler.js +37 -0
- package/dist/middleware/error-handler.js.map +1 -0
- package/dist/middleware/index.d.ts +4 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +4 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/logger.d.ts +4 -0
- package/dist/middleware/logger.d.ts.map +1 -0
- package/dist/middleware/logger.js +87 -0
- package/dist/middleware/logger.js.map +1 -0
- package/dist/middleware/private-hostname-guard.d.ts +11 -0
- package/dist/middleware/private-hostname-guard.d.ts.map +1 -0
- package/dist/middleware/private-hostname-guard.js +78 -0
- package/dist/middleware/private-hostname-guard.js.map +1 -0
- package/dist/middleware/validate.d.ts +4 -0
- package/dist/middleware/validate.d.ts.map +1 -0
- package/dist/middleware/validate.js +7 -0
- package/dist/middleware/validate.js.map +1 -0
- package/dist/onboarding-assets/ceo/AGENTS.md +54 -0
- package/dist/onboarding-assets/ceo/HEARTBEAT.md +72 -0
- package/dist/onboarding-assets/ceo/SOUL.md +33 -0
- package/dist/onboarding-assets/ceo/TOOLS.md +3 -0
- package/dist/onboarding-assets/default/AGENTS.md +3 -0
- package/dist/paths.d.ts +3 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +31 -0
- package/dist/paths.js.map +1 -0
- package/dist/realtime/live-events-ws.d.ts +28 -0
- package/dist/realtime/live-events-ws.d.ts.map +1 -0
- package/dist/realtime/live-events-ws.js +187 -0
- package/dist/realtime/live-events-ws.js.map +1 -0
- package/dist/redaction.d.ts +4 -0
- package/dist/redaction.d.ts.map +1 -0
- package/dist/redaction.js +63 -0
- package/dist/redaction.js.map +1 -0
- package/dist/routes/access.d.ts +61 -0
- package/dist/routes/access.d.ts.map +1 -0
- package/dist/routes/access.js +2265 -0
- package/dist/routes/access.js.map +1 -0
- package/dist/routes/activity.d.ts +3 -0
- package/dist/routes/activity.d.ts.map +1 -0
- package/dist/routes/activity.js +78 -0
- package/dist/routes/activity.js.map +1 -0
- package/dist/routes/agents.d.ts +3 -0
- package/dist/routes/agents.d.ts.map +1 -0
- package/dist/routes/agents.js +1828 -0
- package/dist/routes/agents.js.map +1 -0
- package/dist/routes/approvals.d.ts +3 -0
- package/dist/routes/approvals.d.ts.map +1 -0
- package/dist/routes/approvals.js +275 -0
- package/dist/routes/approvals.js.map +1 -0
- package/dist/routes/assets.d.ts +4 -0
- package/dist/routes/assets.d.ts.map +1 -0
- package/dist/routes/assets.js +309 -0
- package/dist/routes/assets.js.map +1 -0
- package/dist/routes/authz.d.ts +16 -0
- package/dist/routes/authz.d.ts.map +1 -0
- package/dist/routes/authz.js +47 -0
- package/dist/routes/authz.js.map +1 -0
- package/dist/routes/companies.d.ts +4 -0
- package/dist/routes/companies.d.ts.map +1 -0
- package/dist/routes/companies.js +303 -0
- package/dist/routes/companies.js.map +1 -0
- package/dist/routes/company-skills.d.ts +3 -0
- package/dist/routes/company-skills.d.ts.map +1 -0
- package/dist/routes/company-skills.js +228 -0
- package/dist/routes/company-skills.js.map +1 -0
- package/dist/routes/costs.d.ts +3 -0
- package/dist/routes/costs.d.ts.map +1 -0
- package/dist/routes/costs.js +268 -0
- package/dist/routes/costs.js.map +1 -0
- package/dist/routes/dashboard.d.ts +3 -0
- package/dist/routes/dashboard.d.ts.map +1 -0
- package/dist/routes/dashboard.js +15 -0
- package/dist/routes/dashboard.js.map +1 -0
- package/dist/routes/execution-workspaces.d.ts +3 -0
- package/dist/routes/execution-workspaces.d.ts.map +1 -0
- package/dist/routes/execution-workspaces.js +165 -0
- package/dist/routes/execution-workspaces.js.map +1 -0
- package/dist/routes/goals.d.ts +3 -0
- package/dist/routes/goals.d.ts.map +1 -0
- package/dist/routes/goals.js +95 -0
- package/dist/routes/goals.js.map +1 -0
- package/dist/routes/health.d.ts +9 -0
- package/dist/routes/health.d.ts.map +1 -0
- package/dist/routes/health.js +69 -0
- package/dist/routes/health.js.map +1 -0
- package/dist/routes/index.d.ts +18 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +18 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/instance-settings.d.ts +3 -0
- package/dist/routes/instance-settings.d.ts.map +1 -0
- package/dist/routes/instance-settings.js +71 -0
- package/dist/routes/instance-settings.js.map +1 -0
- package/dist/routes/issues-checkout-wakeup.d.ts +9 -0
- package/dist/routes/issues-checkout-wakeup.d.ts.map +1 -0
- package/dist/routes/issues-checkout-wakeup.js +12 -0
- package/dist/routes/issues-checkout-wakeup.js.map +1 -0
- package/dist/routes/issues.d.ts +4 -0
- package/dist/routes/issues.d.ts.map +1 -0
- package/dist/routes/issues.js +1520 -0
- package/dist/routes/issues.js.map +1 -0
- package/dist/routes/llms.d.ts +3 -0
- package/dist/routes/llms.d.ts.map +1 -0
- package/dist/routes/llms.js +78 -0
- package/dist/routes/llms.js.map +1 -0
- package/dist/routes/org-chart-svg.d.ts +25 -0
- package/dist/routes/org-chart-svg.d.ts.map +1 -0
- package/dist/routes/org-chart-svg.js +657 -0
- package/dist/routes/org-chart-svg.js.map +1 -0
- package/dist/routes/plugin-ui-static.d.ts +69 -0
- package/dist/routes/plugin-ui-static.d.ts.map +1 -0
- package/dist/routes/plugin-ui-static.js +411 -0
- package/dist/routes/plugin-ui-static.js.map +1 -0
- package/dist/routes/plugins.d.ts +120 -0
- package/dist/routes/plugins.d.ts.map +1 -0
- package/dist/routes/plugins.js +1784 -0
- package/dist/routes/plugins.js.map +1 -0
- package/dist/routes/projects.d.ts +3 -0
- package/dist/routes/projects.d.ts.map +1 -0
- package/dist/routes/projects.js +257 -0
- package/dist/routes/projects.js.map +1 -0
- package/dist/routes/routines.d.ts +3 -0
- package/dist/routes/routines.d.ts.map +1 -0
- package/dist/routes/routines.js +277 -0
- package/dist/routes/routines.js.map +1 -0
- package/dist/routes/secrets.d.ts +3 -0
- package/dist/routes/secrets.d.ts.map +1 -0
- package/dist/routes/secrets.js +128 -0
- package/dist/routes/secrets.js.map +1 -0
- package/dist/routes/sidebar-badges.d.ts +3 -0
- package/dist/routes/sidebar-badges.d.ts.map +1 -0
- package/dist/routes/sidebar-badges.js +45 -0
- package/dist/routes/sidebar-badges.js.map +1 -0
- package/dist/secrets/external-stub-providers.d.ts +5 -0
- package/dist/secrets/external-stub-providers.d.ts.map +1 -0
- package/dist/secrets/external-stub-providers.js +21 -0
- package/dist/secrets/external-stub-providers.js.map +1 -0
- package/dist/secrets/local-encrypted-provider.d.ts +3 -0
- package/dist/secrets/local-encrypted-provider.d.ts.map +1 -0
- package/dist/secrets/local-encrypted-provider.js +116 -0
- package/dist/secrets/local-encrypted-provider.js.map +1 -0
- package/dist/secrets/provider-registry.d.ts +5 -0
- package/dist/secrets/provider-registry.d.ts.map +1 -0
- package/dist/secrets/provider-registry.js +20 -0
- package/dist/secrets/provider-registry.js.map +1 -0
- package/dist/secrets/types.d.ts +21 -0
- package/dist/secrets/types.d.ts.map +1 -0
- package/dist/secrets/types.js +2 -0
- package/dist/secrets/types.js.map +1 -0
- package/dist/services/access.d.ts +113 -0
- package/dist/services/access.d.ts.map +1 -0
- package/dist/services/access.js +247 -0
- package/dist/services/access.js.map +1 -0
- package/dist/services/activity-log.d.ts +17 -0
- package/dist/services/activity-log.d.ts.map +1 -0
- package/dist/services/activity-log.js +74 -0
- package/dist/services/activity-log.js.map +1 -0
- package/dist/services/activity.d.ts +764 -0
- package/dist/services/activity.d.ts.map +1 -0
- package/dist/services/activity.js +105 -0
- package/dist/services/activity.js.map +1 -0
- package/dist/services/agent-instructions.d.ts +91 -0
- package/dist/services/agent-instructions.d.ts.map +1 -0
- package/dist/services/agent-instructions.js +580 -0
- package/dist/services/agent-instructions.js.map +1 -0
- package/dist/services/agent-permissions.d.ts +6 -0
- package/dist/services/agent-permissions.d.ts.map +1 -0
- package/dist/services/agent-permissions.js +18 -0
- package/dist/services/agent-permissions.js.map +1 -0
- package/dist/services/agents.d.ts +1670 -0
- package/dist/services/agents.d.ts.map +1 -0
- package/dist/services/agents.js +566 -0
- package/dist/services/agents.js.map +1 -0
- package/dist/services/approvals.d.ts +546 -0
- package/dist/services/approvals.d.ts.map +1 -0
- package/dist/services/approvals.js +212 -0
- package/dist/services/approvals.js.map +1 -0
- package/dist/services/assets.d.ts +33 -0
- package/dist/services/assets.d.ts.map +1 -0
- package/dist/services/assets.js +17 -0
- package/dist/services/assets.js.map +1 -0
- package/dist/services/board-auth.d.ts +234 -0
- package/dist/services/board-auth.d.ts.map +1 -0
- package/dist/services/board-auth.js +295 -0
- package/dist/services/board-auth.js.map +1 -0
- package/dist/services/budgets.d.ts +38 -0
- package/dist/services/budgets.d.ts.map +1 -0
- package/dist/services/budgets.js +784 -0
- package/dist/services/budgets.js.map +1 -0
- package/dist/services/companies.d.ts +124 -0
- package/dist/services/companies.d.ts.map +1 -0
- package/dist/services/companies.js +256 -0
- package/dist/services/companies.js.map +1 -0
- package/dist/services/company-export-readme.d.ts +17 -0
- package/dist/services/company-export-readme.d.ts.map +1 -0
- package/dist/services/company-export-readme.js +148 -0
- package/dist/services/company-export-readme.js.map +1 -0
- package/dist/services/company-portability.d.ts +23 -0
- package/dist/services/company-portability.d.ts.map +1 -0
- package/dist/services/company-portability.js +3739 -0
- package/dist/services/company-portability.js.map +1 -0
- package/dist/services/company-skills.d.ts +77 -0
- package/dist/services/company-skills.d.ts.map +1 -0
- package/dist/services/company-skills.js +2042 -0
- package/dist/services/company-skills.js.map +1 -0
- package/dist/services/costs.d.ts +114 -0
- package/dist/services/costs.d.ts.map +1 -0
- package/dist/services/costs.js +294 -0
- package/dist/services/costs.js.map +1 -0
- package/dist/services/cron.d.ts +80 -0
- package/dist/services/cron.d.ts.map +1 -0
- package/dist/services/cron.js +300 -0
- package/dist/services/cron.js.map +1 -0
- package/dist/services/dashboard.d.ts +26 -0
- package/dist/services/dashboard.d.ts.map +1 -0
- package/dist/services/dashboard.js +98 -0
- package/dist/services/dashboard.js.map +1 -0
- package/dist/services/default-agent-instructions.d.ts +9 -0
- package/dist/services/default-agent-instructions.d.ts.map +1 -0
- package/dist/services/default-agent-instructions.js +20 -0
- package/dist/services/default-agent-instructions.js.map +1 -0
- package/dist/services/documents.d.ts +164 -0
- package/dist/services/documents.d.ts.map +1 -0
- package/dist/services/documents.js +382 -0
- package/dist/services/documents.js.map +1 -0
- package/dist/services/execution-workspace-policy.d.ts +21 -0
- package/dist/services/execution-workspace-policy.d.ts.map +1 -0
- package/dist/services/execution-workspace-policy.js +177 -0
- package/dist/services/execution-workspace-policy.js.map +1 -0
- package/dist/services/execution-workspaces.d.ts +19 -0
- package/dist/services/execution-workspaces.d.ts.map +1 -0
- package/dist/services/execution-workspaces.js +87 -0
- package/dist/services/execution-workspaces.js.map +1 -0
- package/dist/services/finance.d.ts +93 -0
- package/dist/services/finance.d.ts.map +1 -0
- package/dist/services/finance.js +120 -0
- package/dist/services/finance.js.map +1 -0
- package/dist/services/goals.d.ts +433 -0
- package/dist/services/goals.d.ts.map +1 -0
- package/dist/services/goals.js +54 -0
- package/dist/services/goals.js.map +1 -0
- package/dist/services/heartbeat-run-summary.d.ts +2 -0
- package/dist/services/heartbeat-run-summary.d.ts.map +1 -0
- package/dist/services/heartbeat-run-summary.js +30 -0
- package/dist/services/heartbeat-run-summary.js.map +1 -0
- package/dist/services/heartbeat.d.ts +812 -0
- package/dist/services/heartbeat.d.ts.map +1 -0
- package/dist/services/heartbeat.js +3156 -0
- package/dist/services/heartbeat.js.map +1 -0
- package/dist/services/hire-hook.d.ts +14 -0
- package/dist/services/hire-hook.d.ts.map +1 -0
- package/dist/services/hire-hook.js +85 -0
- package/dist/services/hire-hook.js.map +1 -0
- package/dist/services/index.d.ts +33 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +33 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/instance-settings.d.ts +11 -0
- package/dist/services/instance-settings.d.ts.map +1 -0
- package/dist/services/instance-settings.js +116 -0
- package/dist/services/instance-settings.js.map +1 -0
- package/dist/services/issue-approvals.d.ts +56 -0
- package/dist/services/issue-approvals.d.ts.map +1 -0
- package/dist/services/issue-approvals.js +153 -0
- package/dist/services/issue-approvals.js.map +1 -0
- package/dist/services/issue-assignment-wakeup.d.ts +29 -0
- package/dist/services/issue-assignment-wakeup.d.ts.map +1 -0
- package/dist/services/issue-assignment-wakeup.js +22 -0
- package/dist/services/issue-assignment-wakeup.js.map +1 -0
- package/dist/services/issue-goal-fallback.d.ts +18 -0
- package/dist/services/issue-goal-fallback.d.ts.map +1 -0
- package/dist/services/issue-goal-fallback.js +33 -0
- package/dist/services/issue-goal-fallback.js.map +1 -0
- package/dist/services/issues.d.ts +560 -0
- package/dist/services/issues.d.ts.map +1 -0
- package/dist/services/issues.js +1478 -0
- package/dist/services/issues.js.map +1 -0
- package/dist/services/live-events.d.ts +17 -0
- package/dist/services/live-events.d.ts.map +1 -0
- package/dist/services/live-events.js +33 -0
- package/dist/services/live-events.js.map +1 -0
- package/dist/services/plugin-capability-validator.d.ts +108 -0
- package/dist/services/plugin-capability-validator.d.ts.map +1 -0
- package/dist/services/plugin-capability-validator.js +268 -0
- package/dist/services/plugin-capability-validator.js.map +1 -0
- package/dist/services/plugin-config-validator.d.ts +26 -0
- package/dist/services/plugin-config-validator.d.ts.map +1 -0
- package/dist/services/plugin-config-validator.js +41 -0
- package/dist/services/plugin-config-validator.js.map +1 -0
- package/dist/services/plugin-dev-watcher.d.ts +30 -0
- package/dist/services/plugin-dev-watcher.d.ts.map +1 -0
- package/dist/services/plugin-dev-watcher.js +241 -0
- package/dist/services/plugin-dev-watcher.js.map +1 -0
- package/dist/services/plugin-event-bus.d.ts +149 -0
- package/dist/services/plugin-event-bus.d.ts.map +1 -0
- package/dist/services/plugin-event-bus.js +258 -0
- package/dist/services/plugin-event-bus.js.map +1 -0
- package/dist/services/plugin-host-service-cleanup.d.ts +14 -0
- package/dist/services/plugin-host-service-cleanup.d.ts.map +1 -0
- package/dist/services/plugin-host-service-cleanup.js +37 -0
- package/dist/services/plugin-host-service-cleanup.js.map +1 -0
- package/dist/services/plugin-host-services.d.ts +13 -0
- package/dist/services/plugin-host-services.d.ts.map +1 -0
- package/dist/services/plugin-host-services.js +969 -0
- package/dist/services/plugin-host-services.js.map +1 -0
- package/dist/services/plugin-job-coordinator.d.ts +81 -0
- package/dist/services/plugin-job-coordinator.d.ts.map +1 -0
- package/dist/services/plugin-job-coordinator.js +172 -0
- package/dist/services/plugin-job-coordinator.js.map +1 -0
- package/dist/services/plugin-job-scheduler.d.ts +163 -0
- package/dist/services/plugin-job-scheduler.d.ts.map +1 -0
- package/dist/services/plugin-job-scheduler.js +454 -0
- package/dist/services/plugin-job-scheduler.js.map +1 -0
- package/dist/services/plugin-job-store.d.ts +208 -0
- package/dist/services/plugin-job-store.d.ts.map +1 -0
- package/dist/services/plugin-job-store.js +350 -0
- package/dist/services/plugin-job-store.js.map +1 -0
- package/dist/services/plugin-lifecycle.d.ts +203 -0
- package/dist/services/plugin-lifecycle.d.ts.map +1 -0
- package/dist/services/plugin-lifecycle.js +476 -0
- package/dist/services/plugin-lifecycle.js.map +1 -0
- package/dist/services/plugin-loader.d.ts +441 -0
- package/dist/services/plugin-loader.d.ts.map +1 -0
- package/dist/services/plugin-loader.js +1192 -0
- package/dist/services/plugin-loader.js.map +1 -0
- package/dist/services/plugin-log-retention.d.ts +20 -0
- package/dist/services/plugin-log-retention.d.ts.map +1 -0
- package/dist/services/plugin-log-retention.js +63 -0
- package/dist/services/plugin-log-retention.js.map +1 -0
- package/dist/services/plugin-manifest-validator.d.ts +79 -0
- package/dist/services/plugin-manifest-validator.d.ts.map +1 -0
- package/dist/services/plugin-manifest-validator.js +84 -0
- package/dist/services/plugin-manifest-validator.js.map +1 -0
- package/dist/services/plugin-registry.d.ts +2542 -0
- package/dist/services/plugin-registry.d.ts.map +1 -0
- package/dist/services/plugin-registry.js +539 -0
- package/dist/services/plugin-registry.js.map +1 -0
- package/dist/services/plugin-runtime-sandbox.d.ts +40 -0
- package/dist/services/plugin-runtime-sandbox.d.ts.map +1 -0
- package/dist/services/plugin-runtime-sandbox.js +154 -0
- package/dist/services/plugin-runtime-sandbox.js.map +1 -0
- package/dist/services/plugin-secrets-handler.d.ts +81 -0
- package/dist/services/plugin-secrets-handler.d.ts.map +1 -0
- package/dist/services/plugin-secrets-handler.js +275 -0
- package/dist/services/plugin-secrets-handler.js.map +1 -0
- package/dist/services/plugin-state-store.d.ts +92 -0
- package/dist/services/plugin-state-store.d.ts.map +1 -0
- package/dist/services/plugin-state-store.js +190 -0
- package/dist/services/plugin-state-store.js.map +1 -0
- package/dist/services/plugin-stream-bus.d.ts +29 -0
- package/dist/services/plugin-stream-bus.d.ts.map +1 -0
- package/dist/services/plugin-stream-bus.js +48 -0
- package/dist/services/plugin-stream-bus.js.map +1 -0
- package/dist/services/plugin-tool-dispatcher.d.ts +180 -0
- package/dist/services/plugin-tool-dispatcher.d.ts.map +1 -0
- package/dist/services/plugin-tool-dispatcher.js +224 -0
- package/dist/services/plugin-tool-dispatcher.js.map +1 -0
- package/dist/services/plugin-tool-registry.d.ts +192 -0
- package/dist/services/plugin-tool-registry.d.ts.map +1 -0
- package/dist/services/plugin-tool-registry.js +224 -0
- package/dist/services/plugin-tool-registry.js.map +1 -0
- package/dist/services/plugin-worker-manager.d.ts +260 -0
- package/dist/services/plugin-worker-manager.d.ts.map +1 -0
- package/dist/services/plugin-worker-manager.js +835 -0
- package/dist/services/plugin-worker-manager.js.map +1 -0
- package/dist/services/projects.d.ts +87 -0
- package/dist/services/projects.d.ts.map +1 -0
- package/dist/services/projects.js +656 -0
- package/dist/services/projects.js.map +1 -0
- package/dist/services/quota-windows.d.ts +9 -0
- package/dist/services/quota-windows.d.ts.map +1 -0
- package/dist/services/quota-windows.js +56 -0
- package/dist/services/quota-windows.js.map +1 -0
- package/dist/services/routines.d.ts +135 -0
- package/dist/services/routines.d.ts.map +1 -0
- package/dist/services/routines.js +1105 -0
- package/dist/services/routines.js.map +1 -0
- package/dist/services/run-log-store.d.ts +34 -0
- package/dist/services/run-log-store.d.ts.map +1 -0
- package/dist/services/run-log-store.js +109 -0
- package/dist/services/run-log-store.js.map +1 -0
- package/dist/services/secrets.d.ts +511 -0
- package/dist/services/secrets.d.ts.map +1 -0
- package/dist/services/secrets.js +289 -0
- package/dist/services/secrets.js.map +1 -0
- package/dist/services/sidebar-badges.d.ts +9 -0
- package/dist/services/sidebar-badges.d.ts.map +1 -0
- package/dist/services/sidebar-badges.js +33 -0
- package/dist/services/sidebar-badges.js.map +1 -0
- package/dist/services/work-products.d.ts +14 -0
- package/dist/services/work-products.d.ts.map +1 -0
- package/dist/services/work-products.js +100 -0
- package/dist/services/work-products.js.map +1 -0
- package/dist/services/workspace-operation-log-store.d.ts +33 -0
- package/dist/services/workspace-operation-log-store.d.ts.map +1 -0
- package/dist/services/workspace-operation-log-store.js +110 -0
- package/dist/services/workspace-operation-log-store.js.map +1 -0
- package/dist/services/workspace-operations.d.ts +44 -0
- package/dist/services/workspace-operations.d.ts.map +1 -0
- package/dist/services/workspace-operations.js +211 -0
- package/dist/services/workspace-operations.js.map +1 -0
- package/dist/services/workspace-runtime.d.ts +164 -0
- package/dist/services/workspace-runtime.d.ts.map +1 -0
- package/dist/services/workspace-runtime.js +1235 -0
- package/dist/services/workspace-runtime.js.map +1 -0
- package/dist/startup-banner.d.ts +31 -0
- package/dist/startup-banner.d.ts.map +1 -0
- package/dist/startup-banner.js +117 -0
- package/dist/startup-banner.js.map +1 -0
- package/dist/storage/index.d.ts +6 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +29 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/local-disk-provider.d.ts +3 -0
- package/dist/storage/local-disk-provider.d.ts.map +1 -0
- package/dist/storage/local-disk-provider.js +79 -0
- package/dist/storage/local-disk-provider.js.map +1 -0
- package/dist/storage/provider-registry.d.ts +4 -0
- package/dist/storage/provider-registry.d.ts.map +1 -0
- package/dist/storage/provider-registry.js +15 -0
- package/dist/storage/provider-registry.js.map +1 -0
- package/dist/storage/s3-provider.d.ts +11 -0
- package/dist/storage/s3-provider.d.ts.map +1 -0
- package/dist/storage/s3-provider.js +123 -0
- package/dist/storage/s3-provider.js.map +1 -0
- package/dist/storage/service.d.ts +3 -0
- package/dist/storage/service.d.ts.map +1 -0
- package/dist/storage/service.js +120 -0
- package/dist/storage/service.js.map +1 -0
- package/dist/storage/types.d.ts +55 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +2 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/ui-branding.d.ts +13 -0
- package/dist/ui-branding.d.ts.map +1 -0
- package/dist/ui-branding.js +188 -0
- package/dist/ui-branding.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +5 -0
- package/dist/version.js.map +1 -0
- package/dist/worktree-config.d.ts +19 -0
- package/dist/worktree-config.d.ts.map +1 -0
- package/dist/worktree-config.js +365 -0
- package/dist/worktree-config.js.map +1 -0
- package/package.json +90 -0
- package/skills/fidelios/SKILL.md +365 -0
- package/skills/fidelios/references/api-reference.md +647 -0
- package/skills/fidelios/references/company-skills.md +193 -0
- package/skills/fidelios-create-agent/SKILL.md +142 -0
- package/skills/fidelios-create-agent/references/api-reference.md +105 -0
- package/skills/fidelios-create-plugin/SKILL.md +101 -0
- package/skills/para-memory-files/SKILL.md +104 -0
- package/skills/para-memory-files/references/schemas.md +35 -0
- package/ui-dist/android-chrome-192x192.png +0 -0
- package/ui-dist/android-chrome-512x512.png +0 -0
- package/ui-dist/apple-touch-icon.png +0 -0
- package/ui-dist/assets/_basePickBy-DDS8rFE9.js +1 -0
- package/ui-dist/assets/_baseUniq-BTIdqnfJ.js +1 -0
- package/ui-dist/assets/apl-B4CMkyY2.js +1 -0
- package/ui-dist/assets/arc-CER6ytAf.js +1 -0
- package/ui-dist/assets/architectureDiagram-VXUJARFQ-CrJvVSPh.js +36 -0
- package/ui-dist/assets/asciiarmor-Df11BRmG.js +1 -0
- package/ui-dist/assets/asn1-EdZsLKOL.js +1 -0
- package/ui-dist/assets/asterisk-B-8jnY81.js +1 -0
- package/ui-dist/assets/blockDiagram-VD42YOAC-p-DB7nkA.js +122 -0
- package/ui-dist/assets/brainfuck-C4LP7Hcl.js +1 -0
- package/ui-dist/assets/c4Diagram-YG6GDRKO-D1K75fYz.js +10 -0
- package/ui-dist/assets/channel-B1viE-VZ.js +1 -0
- package/ui-dist/assets/chunk-4BX2VUAB-C1J-fCaK.js +1 -0
- package/ui-dist/assets/chunk-55IACEB6-CjEOgVYA.js +1 -0
- package/ui-dist/assets/chunk-B4BG7PRW-CGZwFaze.js +165 -0
- package/ui-dist/assets/chunk-DI55MBZ5-Dp2ZahPN.js +220 -0
- package/ui-dist/assets/chunk-FMBD7UC4-nXC1OkzD.js +15 -0
- package/ui-dist/assets/chunk-QN33PNHL-D_uFCkMK.js +1 -0
- package/ui-dist/assets/chunk-QZHKN3VN-CG3WK_AN.js +1 -0
- package/ui-dist/assets/chunk-TZMSLE5B-COlBSWdP.js +1 -0
- package/ui-dist/assets/classDiagram-2ON5EDUG-Cs4NEMXI.js +1 -0
- package/ui-dist/assets/classDiagram-v2-WZHVMYZB-Cs4NEMXI.js +1 -0
- package/ui-dist/assets/clike-B9uivgTg.js +1 -0
- package/ui-dist/assets/clojure-BMjYHr_A.js +1 -0
- package/ui-dist/assets/clone-CGwZV8ud.js +1 -0
- package/ui-dist/assets/cmake-BQqOBYOt.js +1 -0
- package/ui-dist/assets/cobol-CWcv1MsR.js +1 -0
- package/ui-dist/assets/coffeescript-S37ZYGWr.js +1 -0
- package/ui-dist/assets/commonlisp-DBKNyK5s.js +1 -0
- package/ui-dist/assets/cose-bilkent-S5V4N54A-B9XYqCMb.js +1 -0
- package/ui-dist/assets/crystal-SjHAIU92.js +1 -0
- package/ui-dist/assets/css-BnMrqG3P.js +1 -0
- package/ui-dist/assets/cypher-C_CwsFkJ.js +1 -0
- package/ui-dist/assets/cytoscape.esm-BQaXIfA_.js +331 -0
- package/ui-dist/assets/d-pRatUO7H.js +1 -0
- package/ui-dist/assets/dagre-6UL2VRFP-DcCdBLC7.js +4 -0
- package/ui-dist/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/ui-dist/assets/diagram-PSM6KHXK-np1kLquy.js +24 -0
- package/ui-dist/assets/diagram-QEK2KX5R-C-b4qIN1.js +43 -0
- package/ui-dist/assets/diagram-S2PKOQOG-Ba-173Ug.js +24 -0
- package/ui-dist/assets/diff-DbItnlRl.js +1 -0
- package/ui-dist/assets/dockerfile-BKs6k2Af.js +1 -0
- package/ui-dist/assets/dtd-DF_7sFjM.js +1 -0
- package/ui-dist/assets/dylan-DwRh75JA.js +1 -0
- package/ui-dist/assets/ebnf-CDyGwa7X.js +1 -0
- package/ui-dist/assets/ecl-Cabwm37j.js +1 -0
- package/ui-dist/assets/eiffel-CnydiIhH.js +1 -0
- package/ui-dist/assets/elm-vLlmbW-K.js +1 -0
- package/ui-dist/assets/erDiagram-Q2GNP2WA-BBmkHiJP.js +60 -0
- package/ui-dist/assets/erlang-BNw1qcRV.js +1 -0
- package/ui-dist/assets/factor-kuTfRLto.js +1 -0
- package/ui-dist/assets/fcl-Kvtd6kyn.js +1 -0
- package/ui-dist/assets/flowDiagram-NV44I4VS-Dj_iTDkp.js +162 -0
- package/ui-dist/assets/forth-Ffai-XNe.js +1 -0
- package/ui-dist/assets/fortran-DYz_wnZ1.js +1 -0
- package/ui-dist/assets/ganttDiagram-JELNMOA3-Bn1hanTg.js +267 -0
- package/ui-dist/assets/gas-Bneqetm1.js +1 -0
- package/ui-dist/assets/gherkin-heZmZLOM.js +1 -0
- package/ui-dist/assets/gitGraphDiagram-V2S2FVAM-BjmRpty0.js +65 -0
- package/ui-dist/assets/graph-CWBOAGTW.js +1 -0
- package/ui-dist/assets/groovy-D9Dt4D0W.js +1 -0
- package/ui-dist/assets/haskell-Cw1EW3IL.js +1 -0
- package/ui-dist/assets/haxe-H-WmDvRZ.js +1 -0
- package/ui-dist/assets/http-DBlCnlav.js +1 -0
- package/ui-dist/assets/idl-BEugSyMb.js +1 -0
- package/ui-dist/assets/index-B52MtqBm.js +1 -0
- package/ui-dist/assets/index-BEBYIFOJ.js +1 -0
- package/ui-dist/assets/index-BIvl9YFB.js +1 -0
- package/ui-dist/assets/index-BNyP1gwD.js +1 -0
- package/ui-dist/assets/index-BRW6bV_B.js +6 -0
- package/ui-dist/assets/index-BcQTWaKH.js +1 -0
- package/ui-dist/assets/index-BfKYbH5T.js +13 -0
- package/ui-dist/assets/index-BhX49pA0.js +1 -0
- package/ui-dist/assets/index-BoFaTgOC.js +2 -0
- package/ui-dist/assets/index-C-Es83iE.js +7 -0
- package/ui-dist/assets/index-C3LG8kvr.js +1 -0
- package/ui-dist/assets/index-C5Z9j0rD.js +1 -0
- package/ui-dist/assets/index-CFlEF-gp.js +1 -0
- package/ui-dist/assets/index-Cjm12V39.js +1 -0
- package/ui-dist/assets/index-Cp84QmJD.css +1 -0
- package/ui-dist/assets/index-D2t01AH0.js +1 -0
- package/ui-dist/assets/index-DEt1jkxJ.js +1 -0
- package/ui-dist/assets/index-DeAKBJuz.js +3 -0
- package/ui-dist/assets/index-Du65R_Zq.js +1 -0
- package/ui-dist/assets/index-WUHteAuP.js +1 -0
- package/ui-dist/assets/index-Y_jO6IK_.js +1180 -0
- package/ui-dist/assets/index-ZQU9QA5y.js +1 -0
- package/ui-dist/assets/index-f6wRGThx.js +1 -0
- package/ui-dist/assets/index-hMuLlvYa.js +1 -0
- package/ui-dist/assets/infoDiagram-HS3SLOUP-CVMKJlmV.js +2 -0
- package/ui-dist/assets/init-Gi6I4Gst.js +1 -0
- package/ui-dist/assets/javascript-iXu5QeM3.js +1 -0
- package/ui-dist/assets/journeyDiagram-XKPGCS4Q-FrNTHHMi.js +139 -0
- package/ui-dist/assets/julia-DuME0IfC.js +1 -0
- package/ui-dist/assets/kanban-definition-3W4ZIXB7-BQYKwdVh.js +89 -0
- package/ui-dist/assets/katex-O9d3_IXG.js +261 -0
- package/ui-dist/assets/layout-BxccZ6zb.js +1 -0
- package/ui-dist/assets/linear-Db-Yv5jO.js +1 -0
- package/ui-dist/assets/livescript-BwQOo05w.js +1 -0
- package/ui-dist/assets/lua-BgMRiT3U.js +1 -0
- package/ui-dist/assets/mathematica-DTrFuWx2.js +1 -0
- package/ui-dist/assets/mbox-CNhZ1qSd.js +1 -0
- package/ui-dist/assets/mermaid.core-BCE9tDOe.js +256 -0
- package/ui-dist/assets/mindmap-definition-VGOIOE7T-ZWLuqirD.js +68 -0
- package/ui-dist/assets/mirc-CjQqDB4T.js +1 -0
- package/ui-dist/assets/mllike-CXdrOF99.js +1 -0
- package/ui-dist/assets/modelica-Dc1JOy9r.js +1 -0
- package/ui-dist/assets/mscgen-BA5vi2Kp.js +1 -0
- package/ui-dist/assets/mumps-BT43cFF4.js +1 -0
- package/ui-dist/assets/nginx-DdIZxoE0.js +1 -0
- package/ui-dist/assets/nsis-LdVXkNf5.js +1 -0
- package/ui-dist/assets/ntriples-BfvgReVJ.js +1 -0
- package/ui-dist/assets/octave-Ck1zUtKM.js +1 -0
- package/ui-dist/assets/ordinal-Cboi1Yqb.js +1 -0
- package/ui-dist/assets/oz-BzwKVEFT.js +1 -0
- package/ui-dist/assets/pascal--L3eBynH.js +1 -0
- package/ui-dist/assets/perl-CdXCOZ3F.js +1 -0
- package/ui-dist/assets/pieDiagram-ADFJNKIX-D01HRHJF.js +30 -0
- package/ui-dist/assets/pig-CevX1Tat.js +1 -0
- package/ui-dist/assets/powershell-CFHJl5sT.js +1 -0
- package/ui-dist/assets/properties-C78fOPTZ.js +1 -0
- package/ui-dist/assets/protobuf-ChK-085T.js +1 -0
- package/ui-dist/assets/pug-DeIclll2.js +1 -0
- package/ui-dist/assets/puppet-DMA9R1ak.js +1 -0
- package/ui-dist/assets/python-BuPzkPfP.js +1 -0
- package/ui-dist/assets/q-pXgVlZs6.js +1 -0
- package/ui-dist/assets/quadrantDiagram-AYHSOK5B-lAmOPnB4.js +7 -0
- package/ui-dist/assets/r-B6wPVr8A.js +1 -0
- package/ui-dist/assets/requirementDiagram-UZGBJVZJ-ByNWbh-O.js +64 -0
- package/ui-dist/assets/rpm-CTu-6PCP.js +1 -0
- package/ui-dist/assets/ruby-B2Rjki9n.js +1 -0
- package/ui-dist/assets/sankeyDiagram-TZEHDZUN-Cf_Gq84u.js +10 -0
- package/ui-dist/assets/sas-B4kiWyti.js +1 -0
- package/ui-dist/assets/scheme-C41bIUwD.js +1 -0
- package/ui-dist/assets/sequenceDiagram-WL72ISMW-Bx2VZbdr.js +145 -0
- package/ui-dist/assets/shell-CjFT_Tl9.js +1 -0
- package/ui-dist/assets/sieve-C3Gn_uJK.js +1 -0
- package/ui-dist/assets/simple-mode-GW_nhZxv.js +1 -0
- package/ui-dist/assets/smalltalk-CnHTOXQT.js +1 -0
- package/ui-dist/assets/solr-DehyRSwq.js +1 -0
- package/ui-dist/assets/sparql-DkYu6x3z.js +1 -0
- package/ui-dist/assets/spreadsheet-BCZA_wO0.js +1 -0
- package/ui-dist/assets/sql-D0XecflT.js +1 -0
- package/ui-dist/assets/stateDiagram-FKZM4ZOC-vP7G7A65.js +1 -0
- package/ui-dist/assets/stateDiagram-v2-4FDKWEC3-C2xpsAAO.js +1 -0
- package/ui-dist/assets/stex-C3f8Ysf7.js +1 -0
- package/ui-dist/assets/stylus-B533Al4x.js +1 -0
- package/ui-dist/assets/swift-BzpIVaGY.js +1 -0
- package/ui-dist/assets/tcl-DVfN8rqt.js +1 -0
- package/ui-dist/assets/textile-CnDTJFAw.js +1 -0
- package/ui-dist/assets/tiddlywiki-DO-Gjzrf.js +1 -0
- package/ui-dist/assets/tiki-DGYXhP31.js +1 -0
- package/ui-dist/assets/timeline-definition-IT6M3QCI-BJww-sEp.js +61 -0
- package/ui-dist/assets/toml-Bm5Em-hy.js +1 -0
- package/ui-dist/assets/treemap-GDKQZRPO-DUux14NY.js +162 -0
- package/ui-dist/assets/troff-wAsdV37c.js +1 -0
- package/ui-dist/assets/ttcn-CfJYG6tj.js +1 -0
- package/ui-dist/assets/ttcn-cfg-B9xdYoR4.js +1 -0
- package/ui-dist/assets/turtle-B1tBg_DP.js +1 -0
- package/ui-dist/assets/vb-CmGdzxic.js +1 -0
- package/ui-dist/assets/vbscript-BuJXcnF6.js +1 -0
- package/ui-dist/assets/velocity-D8B20fx6.js +1 -0
- package/ui-dist/assets/verilog-C6RDOZhf.js +1 -0
- package/ui-dist/assets/vhdl-lSbBsy5d.js +1 -0
- package/ui-dist/assets/webidl-ZXfAyPTL.js +1 -0
- package/ui-dist/assets/xquery-DzFWVndE.js +1 -0
- package/ui-dist/assets/xychartDiagram-PRI3JC2R-AU5ZOwAw.js +7 -0
- package/ui-dist/assets/yacas-BJ4BC0dw.js +1 -0
- package/ui-dist/assets/z80-Hz9HOZM7.js +1 -0
- package/ui-dist/brands/opencode-logo-dark-square.svg +18 -0
- package/ui-dist/brands/opencode-logo-light-square.svg +18 -0
- package/ui-dist/favicon-16x16.png +0 -0
- package/ui-dist/favicon-32x32.png +0 -0
- package/ui-dist/favicon-96x96.png +0 -0
- package/ui-dist/favicon.ico +0 -0
- package/ui-dist/favicon.svg +3 -0
- package/ui-dist/index.html +48 -0
- package/ui-dist/site.webmanifest +21 -0
- package/ui-dist/sw.js +42 -0
- package/ui-dist/worktree-favicon-16x16.png +0 -0
- package/ui-dist/worktree-favicon-32x32.png +0 -0
- package/ui-dist/worktree-favicon.ico +0 -0
- package/ui-dist/worktree-favicon.svg +3 -0
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { and, eq, isNull } from "drizzle-orm";
|
|
2
|
+
import { plugins, pluginState } from "@fideliosai/db";
|
|
3
|
+
import { notFound } from "../errors.js";
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
// Helpers
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
/** Default namespace used when the plugin does not specify one. */
|
|
8
|
+
const DEFAULT_NAMESPACE = "default";
|
|
9
|
+
/**
|
|
10
|
+
* Build the WHERE clause conditions for a scoped state lookup.
|
|
11
|
+
*
|
|
12
|
+
* The five-part composite key is:
|
|
13
|
+
* `(pluginId, scopeKind, scopeId, namespace, stateKey)`
|
|
14
|
+
*
|
|
15
|
+
* `scopeId` may be null (for `instance` scope) or a non-empty string.
|
|
16
|
+
*/
|
|
17
|
+
function scopeConditions(pluginId, scopeKind, scopeId, namespace, stateKey) {
|
|
18
|
+
const conditions = [
|
|
19
|
+
eq(pluginState.pluginId, pluginId),
|
|
20
|
+
eq(pluginState.scopeKind, scopeKind),
|
|
21
|
+
eq(pluginState.namespace, namespace),
|
|
22
|
+
eq(pluginState.stateKey, stateKey),
|
|
23
|
+
];
|
|
24
|
+
if (scopeId != null && scopeId !== "") {
|
|
25
|
+
conditions.push(eq(pluginState.scopeId, scopeId));
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
conditions.push(isNull(pluginState.scopeId));
|
|
29
|
+
}
|
|
30
|
+
return and(...conditions);
|
|
31
|
+
}
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
// Service
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
/**
|
|
36
|
+
* Plugin State Store — scoped key-value persistence for plugin workers.
|
|
37
|
+
*
|
|
38
|
+
* Provides `get`, `set`, `delete`, and `list` operations over the
|
|
39
|
+
* `plugin_state` table. Each plugin's data is strictly namespaced by
|
|
40
|
+
* `pluginId` so plugins cannot read or write each other's state.
|
|
41
|
+
*
|
|
42
|
+
* This service implements the server-side backing for the `ctx.state` SDK
|
|
43
|
+
* client exposed to plugin workers. The host is responsible for:
|
|
44
|
+
* - enforcing `plugin.state.read` capability before calling `get` / `list`
|
|
45
|
+
* - enforcing `plugin.state.write` capability before calling `set` / `delete`
|
|
46
|
+
*
|
|
47
|
+
* @see PLUGIN_SPEC.md §14 — SDK Surface (`ctx.state`)
|
|
48
|
+
* @see PLUGIN_SPEC.md §15.1 — Capabilities: Plugin State
|
|
49
|
+
* @see PLUGIN_SPEC.md §21.3 — `plugin_state` table
|
|
50
|
+
*/
|
|
51
|
+
export function pluginStateStore(db) {
|
|
52
|
+
// -----------------------------------------------------------------------
|
|
53
|
+
// Internal helpers
|
|
54
|
+
// -----------------------------------------------------------------------
|
|
55
|
+
async function assertPluginExists(pluginId) {
|
|
56
|
+
const rows = await db
|
|
57
|
+
.select({ id: plugins.id })
|
|
58
|
+
.from(plugins)
|
|
59
|
+
.where(eq(plugins.id, pluginId));
|
|
60
|
+
if (rows.length === 0) {
|
|
61
|
+
throw notFound(`Plugin not found: ${pluginId}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// -----------------------------------------------------------------------
|
|
65
|
+
// Public API
|
|
66
|
+
// -----------------------------------------------------------------------
|
|
67
|
+
return {
|
|
68
|
+
/**
|
|
69
|
+
* Read a state value.
|
|
70
|
+
*
|
|
71
|
+
* Returns the stored JSON value, or `null` if no entry exists for the
|
|
72
|
+
* given scope and key.
|
|
73
|
+
*
|
|
74
|
+
* Requires `plugin.state.read` capability (enforced by the caller).
|
|
75
|
+
*
|
|
76
|
+
* @param pluginId - UUID of the owning plugin
|
|
77
|
+
* @param scopeKind - Granularity of the scope
|
|
78
|
+
* @param scopeId - Identifier for the scoped entity (null for `instance` scope)
|
|
79
|
+
* @param stateKey - The key to read
|
|
80
|
+
* @param namespace - Sub-namespace (defaults to `"default"`)
|
|
81
|
+
*/
|
|
82
|
+
get: async (pluginId, scopeKind, stateKey, { scopeId, namespace = DEFAULT_NAMESPACE, } = {}) => {
|
|
83
|
+
const rows = await db
|
|
84
|
+
.select()
|
|
85
|
+
.from(pluginState)
|
|
86
|
+
.where(scopeConditions(pluginId, scopeKind, scopeId, namespace, stateKey));
|
|
87
|
+
return rows[0]?.valueJson ?? null;
|
|
88
|
+
},
|
|
89
|
+
/**
|
|
90
|
+
* Write (create or replace) a state value.
|
|
91
|
+
*
|
|
92
|
+
* Uses an upsert so the caller does not need to check for prior existence.
|
|
93
|
+
* On conflict (same composite key) the existing row's `value_json` and
|
|
94
|
+
* `updated_at` are overwritten.
|
|
95
|
+
*
|
|
96
|
+
* Requires `plugin.state.write` capability (enforced by the caller).
|
|
97
|
+
*
|
|
98
|
+
* @param pluginId - UUID of the owning plugin
|
|
99
|
+
* @param input - Scope key and value to store
|
|
100
|
+
*/
|
|
101
|
+
set: async (pluginId, input) => {
|
|
102
|
+
await assertPluginExists(pluginId);
|
|
103
|
+
const namespace = input.namespace ?? DEFAULT_NAMESPACE;
|
|
104
|
+
const scopeId = input.scopeId ?? null;
|
|
105
|
+
await db
|
|
106
|
+
.insert(pluginState)
|
|
107
|
+
.values({
|
|
108
|
+
pluginId,
|
|
109
|
+
scopeKind: input.scopeKind,
|
|
110
|
+
scopeId,
|
|
111
|
+
namespace,
|
|
112
|
+
stateKey: input.stateKey,
|
|
113
|
+
valueJson: input.value,
|
|
114
|
+
updatedAt: new Date(),
|
|
115
|
+
})
|
|
116
|
+
.onConflictDoUpdate({
|
|
117
|
+
target: [
|
|
118
|
+
pluginState.pluginId,
|
|
119
|
+
pluginState.scopeKind,
|
|
120
|
+
pluginState.scopeId,
|
|
121
|
+
pluginState.namespace,
|
|
122
|
+
pluginState.stateKey,
|
|
123
|
+
],
|
|
124
|
+
set: {
|
|
125
|
+
valueJson: input.value,
|
|
126
|
+
updatedAt: new Date(),
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
},
|
|
130
|
+
/**
|
|
131
|
+
* Delete a state value.
|
|
132
|
+
*
|
|
133
|
+
* No-ops silently if the entry does not exist (idempotent by design).
|
|
134
|
+
*
|
|
135
|
+
* Requires `plugin.state.write` capability (enforced by the caller).
|
|
136
|
+
*
|
|
137
|
+
* @param pluginId - UUID of the owning plugin
|
|
138
|
+
* @param scopeKind - Granularity of the scope
|
|
139
|
+
* @param stateKey - The key to delete
|
|
140
|
+
* @param scopeId - Identifier for the scoped entity (null for `instance` scope)
|
|
141
|
+
* @param namespace - Sub-namespace (defaults to `"default"`)
|
|
142
|
+
*/
|
|
143
|
+
delete: async (pluginId, scopeKind, stateKey, { scopeId, namespace = DEFAULT_NAMESPACE, } = {}) => {
|
|
144
|
+
await db
|
|
145
|
+
.delete(pluginState)
|
|
146
|
+
.where(scopeConditions(pluginId, scopeKind, scopeId, namespace, stateKey));
|
|
147
|
+
},
|
|
148
|
+
/**
|
|
149
|
+
* List all state entries for a plugin, optionally filtered by scope.
|
|
150
|
+
*
|
|
151
|
+
* Returns all matching rows as `PluginStateRecord`-shaped objects.
|
|
152
|
+
* The `valueJson` field contains the stored value.
|
|
153
|
+
*
|
|
154
|
+
* Requires `plugin.state.read` capability (enforced by the caller).
|
|
155
|
+
*
|
|
156
|
+
* @param pluginId - UUID of the owning plugin
|
|
157
|
+
* @param filter - Optional scope filters (scopeKind, scopeId, namespace)
|
|
158
|
+
*/
|
|
159
|
+
list: async (pluginId, filter = {}) => {
|
|
160
|
+
const conditions = [eq(pluginState.pluginId, pluginId)];
|
|
161
|
+
if (filter.scopeKind !== undefined) {
|
|
162
|
+
conditions.push(eq(pluginState.scopeKind, filter.scopeKind));
|
|
163
|
+
}
|
|
164
|
+
if (filter.scopeId !== undefined) {
|
|
165
|
+
conditions.push(eq(pluginState.scopeId, filter.scopeId));
|
|
166
|
+
}
|
|
167
|
+
if (filter.namespace !== undefined) {
|
|
168
|
+
conditions.push(eq(pluginState.namespace, filter.namespace));
|
|
169
|
+
}
|
|
170
|
+
return db
|
|
171
|
+
.select()
|
|
172
|
+
.from(pluginState)
|
|
173
|
+
.where(and(...conditions));
|
|
174
|
+
},
|
|
175
|
+
/**
|
|
176
|
+
* Delete all state entries owned by a plugin.
|
|
177
|
+
*
|
|
178
|
+
* Called during plugin uninstall when `removeData = true`. Also useful
|
|
179
|
+
* for resetting a plugin's state during testing.
|
|
180
|
+
*
|
|
181
|
+
* @param pluginId - UUID of the owning plugin
|
|
182
|
+
*/
|
|
183
|
+
deleteAll: async (pluginId) => {
|
|
184
|
+
await db
|
|
185
|
+
.delete(pluginState)
|
|
186
|
+
.where(eq(pluginState.pluginId, pluginId));
|
|
187
|
+
},
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=plugin-state-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-state-store.js","sourceRoot":"","sources":["../../src/services/plugin-state-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory pub/sub bus for plugin SSE streams.
|
|
3
|
+
*
|
|
4
|
+
* Workers emit stream events via JSON-RPC notifications. The bus fans out
|
|
5
|
+
* each event to all connected SSE clients that match the (pluginId, channel,
|
|
6
|
+
* companyId) tuple.
|
|
7
|
+
*
|
|
8
|
+
* @see PLUGIN_SPEC.md §19.8 — Real-Time Streaming
|
|
9
|
+
*/
|
|
10
|
+
/** Valid SSE event types for plugin streams. */
|
|
11
|
+
export type StreamEventType = "message" | "open" | "close" | "error";
|
|
12
|
+
export type StreamSubscriber = (event: unknown, eventType: StreamEventType) => void;
|
|
13
|
+
export interface PluginStreamBus {
|
|
14
|
+
/**
|
|
15
|
+
* Subscribe to stream events for a specific (pluginId, channel, companyId).
|
|
16
|
+
* Returns an unsubscribe function.
|
|
17
|
+
*/
|
|
18
|
+
subscribe(pluginId: string, channel: string, companyId: string, listener: StreamSubscriber): () => void;
|
|
19
|
+
/**
|
|
20
|
+
* Publish an event to all subscribers of (pluginId, channel, companyId).
|
|
21
|
+
* Called by the worker manager when it receives a stream notification.
|
|
22
|
+
*/
|
|
23
|
+
publish(pluginId: string, channel: string, companyId: string, event: unknown, eventType?: StreamEventType): void;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create a new PluginStreamBus instance.
|
|
27
|
+
*/
|
|
28
|
+
export declare function createPluginStreamBus(): PluginStreamBus;
|
|
29
|
+
//# sourceMappingURL=plugin-stream-bus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-stream-bus.d.ts","sourceRoot":"","sources":["../../src/services/plugin-stream-bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,gDAAgD;AAChD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAErE,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;AASpF,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,gBAAgB,GACzB,MAAM,IAAI,CAAC;IAEd;;;OAGG;IACH,OAAO,CACL,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,EACd,SAAS,CAAC,EAAE,eAAe,GAC1B,IAAI,CAAC;CACT;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CA8BvD"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory pub/sub bus for plugin SSE streams.
|
|
3
|
+
*
|
|
4
|
+
* Workers emit stream events via JSON-RPC notifications. The bus fans out
|
|
5
|
+
* each event to all connected SSE clients that match the (pluginId, channel,
|
|
6
|
+
* companyId) tuple.
|
|
7
|
+
*
|
|
8
|
+
* @see PLUGIN_SPEC.md §19.8 — Real-Time Streaming
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Composite key for stream subscriptions: pluginId:channel:companyId
|
|
12
|
+
*/
|
|
13
|
+
function streamKey(pluginId, channel, companyId) {
|
|
14
|
+
return `${pluginId}:${channel}:${companyId}`;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Create a new PluginStreamBus instance.
|
|
18
|
+
*/
|
|
19
|
+
export function createPluginStreamBus() {
|
|
20
|
+
const subscribers = new Map();
|
|
21
|
+
return {
|
|
22
|
+
subscribe(pluginId, channel, companyId, listener) {
|
|
23
|
+
const key = streamKey(pluginId, channel, companyId);
|
|
24
|
+
let set = subscribers.get(key);
|
|
25
|
+
if (!set) {
|
|
26
|
+
set = new Set();
|
|
27
|
+
subscribers.set(key, set);
|
|
28
|
+
}
|
|
29
|
+
set.add(listener);
|
|
30
|
+
return () => {
|
|
31
|
+
set.delete(listener);
|
|
32
|
+
if (set.size === 0) {
|
|
33
|
+
subscribers.delete(key);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
},
|
|
37
|
+
publish(pluginId, channel, companyId, event, eventType = "message") {
|
|
38
|
+
const key = streamKey(pluginId, channel, companyId);
|
|
39
|
+
const set = subscribers.get(key);
|
|
40
|
+
if (!set)
|
|
41
|
+
return;
|
|
42
|
+
for (const listener of set) {
|
|
43
|
+
listener(event, eventType);
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=plugin-stream-bus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-stream-bus.js","sourceRoot":"","sources":["../../src/services/plugin-stream-bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH;;GAEG;AACH,SAAS,SAAS,CAAC,QAAgB,EAAE,OAAe,EAAE,SAAiB;IACrE,OAAO,GAAG,QAAQ,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;AAC/C,CAAC;AA2BD;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAiC,CAAC;IAE7D,OAAO;QACL,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ;YAC9C,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YACpD,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;gBAChB,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC5B,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAElB,OAAO,GAAG,EAAE;gBACV,GAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACtB,IAAI,GAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBACpB,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,YAA6B,SAAS;YACjF,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC,GAAG;gBAAE,OAAO;YACjB,KAAK,MAAM,QAAQ,IAAI,GAAG,EAAE,CAAC;gBAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PluginToolDispatcher — orchestrates plugin tool discovery, lifecycle
|
|
3
|
+
* integration, and execution routing for the agent service.
|
|
4
|
+
*
|
|
5
|
+
* This service sits between the agent service and the lower-level
|
|
6
|
+
* `PluginToolRegistry` + `PluginWorkerManager`, providing a clean API that:
|
|
7
|
+
*
|
|
8
|
+
* - Discovers tools from loaded plugin manifests and registers them
|
|
9
|
+
* in the tool registry.
|
|
10
|
+
* - Hooks into `PluginLifecycleManager` events to automatically register
|
|
11
|
+
* and unregister tools when plugins are enabled or disabled.
|
|
12
|
+
* - Exposes the tool list in an agent-friendly format (with namespaced
|
|
13
|
+
* names, descriptions, parameter schemas).
|
|
14
|
+
* - Routes `executeTool` calls to the correct plugin worker and returns
|
|
15
|
+
* structured results.
|
|
16
|
+
* - Validates tool parameters against declared schemas before dispatch.
|
|
17
|
+
*
|
|
18
|
+
* The dispatcher is created once at server startup and shared across
|
|
19
|
+
* the application.
|
|
20
|
+
*
|
|
21
|
+
* @see PLUGIN_SPEC.md §11 — Agent Tools
|
|
22
|
+
* @see PLUGIN_SPEC.md §13.10 — `executeTool`
|
|
23
|
+
*/
|
|
24
|
+
import type { Db } from "@fideliosai/db";
|
|
25
|
+
import type { FideliOSPluginManifestV1 } from "@fideliosai/shared";
|
|
26
|
+
import type { ToolRunContext } from "@fideliosai/plugin-sdk";
|
|
27
|
+
import type { PluginWorkerManager } from "./plugin-worker-manager.js";
|
|
28
|
+
import type { PluginLifecycleManager } from "./plugin-lifecycle.js";
|
|
29
|
+
import { type PluginToolRegistry, type RegisteredTool, type ToolListFilter, type ToolExecutionResult } from "./plugin-tool-registry.js";
|
|
30
|
+
/**
|
|
31
|
+
* An agent-facing tool descriptor — the shape returned when agents
|
|
32
|
+
* query for available tools.
|
|
33
|
+
*
|
|
34
|
+
* This is intentionally simpler than `RegisteredTool`, exposing only
|
|
35
|
+
* what agents need to decide whether and how to call a tool.
|
|
36
|
+
*/
|
|
37
|
+
export interface AgentToolDescriptor {
|
|
38
|
+
/** Fully namespaced tool name (e.g. `"acme.linear:search-issues"`). */
|
|
39
|
+
name: string;
|
|
40
|
+
/** Human-readable display name. */
|
|
41
|
+
displayName: string;
|
|
42
|
+
/** Description for the agent — explains when and how to use this tool. */
|
|
43
|
+
description: string;
|
|
44
|
+
/** JSON Schema describing the tool's input parameters. */
|
|
45
|
+
parametersSchema: Record<string, unknown>;
|
|
46
|
+
/** The plugin that provides this tool. */
|
|
47
|
+
pluginId: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Options for creating the plugin tool dispatcher.
|
|
51
|
+
*/
|
|
52
|
+
export interface PluginToolDispatcherOptions {
|
|
53
|
+
/** The worker manager used to dispatch RPC calls to plugin workers. */
|
|
54
|
+
workerManager?: PluginWorkerManager;
|
|
55
|
+
/** The lifecycle manager to listen for plugin state changes. */
|
|
56
|
+
lifecycleManager?: PluginLifecycleManager;
|
|
57
|
+
/** Database connection for looking up plugin records. */
|
|
58
|
+
db?: Db;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The plugin tool dispatcher — the primary integration point between the
|
|
62
|
+
* agent service and the plugin tool system.
|
|
63
|
+
*
|
|
64
|
+
* Agents use this service to:
|
|
65
|
+
* 1. List all available tools (for prompt construction / tool choice)
|
|
66
|
+
* 2. Execute a specific tool by its namespaced name
|
|
67
|
+
*
|
|
68
|
+
* The dispatcher handles lifecycle management internally — when a plugin
|
|
69
|
+
* is loaded or unloaded, its tools are automatically registered or removed.
|
|
70
|
+
*/
|
|
71
|
+
export interface PluginToolDispatcher {
|
|
72
|
+
/**
|
|
73
|
+
* Initialize the dispatcher — load tools from all currently-ready plugins
|
|
74
|
+
* and start listening for lifecycle events.
|
|
75
|
+
*
|
|
76
|
+
* Must be called once at server startup after the lifecycle manager
|
|
77
|
+
* and worker manager are ready.
|
|
78
|
+
*/
|
|
79
|
+
initialize(): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Tear down the dispatcher — unregister lifecycle event listeners
|
|
82
|
+
* and clear all tool registrations.
|
|
83
|
+
*
|
|
84
|
+
* Called during server shutdown.
|
|
85
|
+
*/
|
|
86
|
+
teardown(): void;
|
|
87
|
+
/**
|
|
88
|
+
* List all available tools for agents, optionally filtered.
|
|
89
|
+
*
|
|
90
|
+
* Returns tool descriptors in an agent-friendly format.
|
|
91
|
+
*
|
|
92
|
+
* @param filter - Optional filter criteria
|
|
93
|
+
* @returns Array of agent tool descriptors
|
|
94
|
+
*/
|
|
95
|
+
listToolsForAgent(filter?: ToolListFilter): AgentToolDescriptor[];
|
|
96
|
+
/**
|
|
97
|
+
* Look up a tool by its namespaced name.
|
|
98
|
+
*
|
|
99
|
+
* @param namespacedName - e.g. `"acme.linear:search-issues"`
|
|
100
|
+
* @returns The registered tool, or `null` if not found
|
|
101
|
+
*/
|
|
102
|
+
getTool(namespacedName: string): RegisteredTool | null;
|
|
103
|
+
/**
|
|
104
|
+
* Execute a tool by its namespaced name, routing to the correct
|
|
105
|
+
* plugin worker.
|
|
106
|
+
*
|
|
107
|
+
* @param namespacedName - Fully qualified tool name
|
|
108
|
+
* @param parameters - Input parameters matching the tool's schema
|
|
109
|
+
* @param runContext - Agent run context
|
|
110
|
+
* @returns The execution result with routing metadata
|
|
111
|
+
* @throws {Error} if the tool is not found, the worker is not running,
|
|
112
|
+
* or the tool execution fails
|
|
113
|
+
*/
|
|
114
|
+
executeTool(namespacedName: string, parameters: unknown, runContext: ToolRunContext): Promise<ToolExecutionResult>;
|
|
115
|
+
/**
|
|
116
|
+
* Register all tools from a plugin manifest.
|
|
117
|
+
*
|
|
118
|
+
* This is called automatically when a plugin transitions to `ready`.
|
|
119
|
+
* Can also be called manually for testing or recovery scenarios.
|
|
120
|
+
*
|
|
121
|
+
* @param pluginId - The plugin's unique identifier
|
|
122
|
+
* @param manifest - The plugin manifest containing tool declarations
|
|
123
|
+
*/
|
|
124
|
+
registerPluginTools(pluginId: string, manifest: FideliOSPluginManifestV1): void;
|
|
125
|
+
/**
|
|
126
|
+
* Unregister all tools for a plugin.
|
|
127
|
+
*
|
|
128
|
+
* Called automatically when a plugin is disabled or unloaded.
|
|
129
|
+
*
|
|
130
|
+
* @param pluginId - The plugin to unregister
|
|
131
|
+
*/
|
|
132
|
+
unregisterPluginTools(pluginId: string): void;
|
|
133
|
+
/**
|
|
134
|
+
* Get the total number of registered tools, optionally scoped to a plugin.
|
|
135
|
+
*
|
|
136
|
+
* @param pluginId - If provided, count only this plugin's tools
|
|
137
|
+
*/
|
|
138
|
+
toolCount(pluginId?: string): number;
|
|
139
|
+
/**
|
|
140
|
+
* Access the underlying tool registry for advanced operations.
|
|
141
|
+
*
|
|
142
|
+
* This escape hatch exists for internal use (e.g. diagnostics).
|
|
143
|
+
* Prefer the dispatcher's own methods for normal operations.
|
|
144
|
+
*/
|
|
145
|
+
getRegistry(): PluginToolRegistry;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Create a new `PluginToolDispatcher`.
|
|
149
|
+
*
|
|
150
|
+
* The dispatcher:
|
|
151
|
+
* 1. Creates and owns a `PluginToolRegistry` backed by the given worker manager.
|
|
152
|
+
* 2. Listens for lifecycle events (plugin.enabled, plugin.disabled, plugin.unloaded)
|
|
153
|
+
* to automatically register and unregister tools.
|
|
154
|
+
* 3. On `initialize()`, loads tools from all currently-ready plugins via the DB.
|
|
155
|
+
*
|
|
156
|
+
* @param options - Configuration options
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```ts
|
|
160
|
+
* // At server startup
|
|
161
|
+
* const dispatcher = createPluginToolDispatcher({
|
|
162
|
+
* workerManager,
|
|
163
|
+
* lifecycleManager,
|
|
164
|
+
* db,
|
|
165
|
+
* });
|
|
166
|
+
* await dispatcher.initialize();
|
|
167
|
+
*
|
|
168
|
+
* // In agent service — list tools for prompt construction
|
|
169
|
+
* const tools = dispatcher.listToolsForAgent();
|
|
170
|
+
*
|
|
171
|
+
* // In agent service — execute a tool
|
|
172
|
+
* const result = await dispatcher.executeTool(
|
|
173
|
+
* "acme.linear:search-issues",
|
|
174
|
+
* { query: "auth bug" },
|
|
175
|
+
* { agentId: "a-1", runId: "r-1", companyId: "c-1", projectId: "p-1" },
|
|
176
|
+
* );
|
|
177
|
+
* ```
|
|
178
|
+
*/
|
|
179
|
+
export declare function createPluginToolDispatcher(options?: PluginToolDispatcherOptions): PluginToolDispatcher;
|
|
180
|
+
//# sourceMappingURL=plugin-tool-dispatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-tool-dispatcher.d.ts","sourceRoot":"","sources":["../../src/services/plugin-tool-dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EACV,wBAAwB,EAEzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACzB,MAAM,2BAA2B,CAAC;AAQnC;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,uEAAuE;IACvE,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,yDAAyD;IACzD,EAAE,CAAC,EAAE,EAAE,CAAC;CACT;AAMD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;;OAMG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;;;;OAKG;IACH,QAAQ,IAAI,IAAI,CAAC;IAEjB;;;;;;;OAOG;IACH,iBAAiB,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,mBAAmB,EAAE,CAAC;IAElE;;;;;OAKG;IACH,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAAC;IAEvD;;;;;;;;;;OAUG;IACH,WAAW,CACT,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,OAAO,EACnB,UAAU,EAAE,cAAc,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEhC;;;;;;;;OAQG;IACH,mBAAmB,CACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,wBAAwB,GACjC,IAAI,CAAC;IAER;;;;;;OAMG;IACH,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9C;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAErC;;;;;OAKG;IACH,WAAW,IAAI,kBAAkB,CAAC;CACnC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,2BAAgC,GACxC,oBAAoB,CAgOtB"}
|