@nocobase/app-plugin-agents 0.0.0-stage → 0.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +109 -0
- package/README.md +194 -2
- package/dist/cli/index.d.ts +4 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +9 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/runner-token.d.ts +21 -0
- package/dist/cli/runner-token.d.ts.map +1 -0
- package/dist/cli/runner-token.js +52 -0
- package/dist/cli/runner-token.js.map +1 -0
- package/dist/client/api/client.d.ts +131 -0
- package/dist/client/api/client.d.ts.map +1 -0
- package/dist/client/api/client.js +276 -0
- package/dist/client/api/client.js.map +1 -0
- package/dist/client/api/keys.d.ts +31 -0
- package/dist/client/api/keys.d.ts.map +1 -0
- package/dist/client/api/keys.js +40 -0
- package/dist/client/api/keys.js.map +1 -0
- package/dist/client/api/runners.d.ts +24 -0
- package/dist/client/api/runners.d.ts.map +1 -0
- package/dist/client/api/runners.js +58 -0
- package/dist/client/api/runners.js.map +1 -0
- package/dist/client/chat/api.d.ts +42 -0
- package/dist/client/chat/api.d.ts.map +1 -0
- package/dist/client/chat/api.js +125 -0
- package/dist/client/chat/api.js.map +1 -0
- package/dist/client/chat/context-model.d.ts +67 -0
- package/dist/client/chat/context-model.d.ts.map +1 -0
- package/dist/client/chat/context-model.js +113 -0
- package/dist/client/chat/context-model.js.map +1 -0
- package/dist/client/chat/extensions.d.ts +41 -0
- package/dist/client/chat/extensions.d.ts.map +1 -0
- package/dist/client/chat/extensions.js +14 -0
- package/dist/client/chat/extensions.js.map +1 -0
- package/dist/client/chat/keys.d.ts +13 -0
- package/dist/client/chat/keys.d.ts.map +1 -0
- package/dist/client/chat/keys.js +12 -0
- package/dist/client/chat/keys.js.map +1 -0
- package/dist/client/chat/message-model.d.ts +111 -0
- package/dist/client/chat/message-model.d.ts.map +1 -0
- package/dist/client/chat/message-model.js +203 -0
- package/dist/client/chat/message-model.js.map +1 -0
- package/dist/client/chat/panel-state.d.ts +43 -0
- package/dist/client/chat/panel-state.d.ts.map +1 -0
- package/dist/client/chat/panel-state.js +113 -0
- package/dist/client/chat/panel-state.js.map +1 -0
- package/dist/client/chat/provider.d.ts +101 -0
- package/dist/client/chat/provider.d.ts.map +1 -0
- package/dist/client/chat/provider.js +399 -0
- package/dist/client/chat/provider.js.map +1 -0
- package/dist/client/chat/redirect.d.ts +8 -0
- package/dist/client/chat/redirect.d.ts.map +1 -0
- package/dist/client/chat/redirect.js +34 -0
- package/dist/client/chat/redirect.js.map +1 -0
- package/dist/client/chat/settings-section.d.ts +5 -0
- package/dist/client/chat/settings-section.d.ts.map +1 -0
- package/dist/client/chat/settings-section.js +76 -0
- package/dist/client/chat/settings-section.js.map +1 -0
- package/dist/client/chat/ui-hooks.d.ts +16 -0
- package/dist/client/chat/ui-hooks.d.ts.map +1 -0
- package/dist/client/chat/ui-hooks.js +35 -0
- package/dist/client/chat/ui-hooks.js.map +1 -0
- package/dist/client/chat/use-chat.d.ts +88 -0
- package/dist/client/chat/use-chat.d.ts.map +1 -0
- package/dist/client/chat/use-chat.js +399 -0
- package/dist/client/chat/use-chat.js.map +1 -0
- package/dist/client/chat.d.ts +41 -0
- package/dist/client/chat.d.ts.map +1 -0
- package/dist/client/chat.js +43 -0
- package/dist/client/chat.js.map +1 -0
- package/dist/client/components/ag-markdown.d.ts +7 -0
- package/dist/client/components/ag-markdown.d.ts.map +1 -0
- package/dist/client/components/ag-markdown.js +29 -0
- package/dist/client/components/ag-markdown.js.map +1 -0
- package/dist/client/components/ag-multi-select.d.ts +26 -0
- package/dist/client/components/ag-multi-select.d.ts.map +1 -0
- package/dist/client/components/ag-multi-select.js +48 -0
- package/dist/client/components/ag-multi-select.js.map +1 -0
- package/dist/client/components/ag-pulse.d.ts +4 -0
- package/dist/client/components/ag-pulse.d.ts.map +1 -0
- package/dist/client/components/ag-pulse.js +6 -0
- package/dist/client/components/ag-pulse.js.map +1 -0
- package/dist/client/components/ag-section.d.ts +11 -0
- package/dist/client/components/ag-section.d.ts.map +1 -0
- package/dist/client/components/ag-section.js +7 -0
- package/dist/client/components/ag-section.js.map +1 -0
- package/dist/client/components/ag-states.d.ts +27 -0
- package/dist/client/components/ag-states.d.ts.map +1 -0
- package/dist/client/components/ag-states.js +33 -0
- package/dist/client/components/ag-states.js.map +1 -0
- package/dist/client/components/ag-tag.d.ts +9 -0
- package/dist/client/components/ag-tag.d.ts.map +1 -0
- package/dist/client/components/ag-tag.js +20 -0
- package/dist/client/components/ag-tag.js.map +1 -0
- package/dist/client/components/agent-avatar.d.ts +16 -0
- package/dist/client/components/agent-avatar.d.ts.map +1 -0
- package/dist/client/components/agent-avatar.js +48 -0
- package/dist/client/components/agent-avatar.js.map +1 -0
- package/dist/client/components/agent-fields.d.ts +45 -0
- package/dist/client/components/agent-fields.d.ts.map +1 -0
- package/dist/client/components/agent-fields.js +83 -0
- package/dist/client/components/agent-fields.js.map +1 -0
- package/dist/client/components/agent-picker.d.ts +128 -0
- package/dist/client/components/agent-picker.d.ts.map +1 -0
- package/dist/client/components/agent-picker.js +150 -0
- package/dist/client/components/agent-picker.js.map +1 -0
- package/dist/client/components/agent-type.d.ts +32 -0
- package/dist/client/components/agent-type.d.ts.map +1 -0
- package/dist/client/components/agent-type.js +80 -0
- package/dist/client/components/agent-type.js.map +1 -0
- package/dist/client/components/availability-dot.d.ts +8 -0
- package/dist/client/components/availability-dot.d.ts.map +1 -0
- package/dist/client/components/availability-dot.js +15 -0
- package/dist/client/components/availability-dot.js.map +1 -0
- package/dist/client/components/brief-view.d.ts +6 -0
- package/dist/client/components/brief-view.d.ts.map +1 -0
- package/dist/client/components/brief-view.js +34 -0
- package/dist/client/components/brief-view.js.map +1 -0
- package/dist/client/components/command-line.d.ts +6 -0
- package/dist/client/components/command-line.d.ts.map +1 -0
- package/dist/client/components/command-line.js +24 -0
- package/dist/client/components/command-line.js.map +1 -0
- package/dist/client/components/default-skills.d.ts +10 -0
- package/dist/client/components/default-skills.d.ts.map +1 -0
- package/dist/client/components/default-skills.js +47 -0
- package/dist/client/components/default-skills.js.map +1 -0
- package/dist/client/components/diff-block.d.ts +8 -0
- package/dist/client/components/diff-block.d.ts.map +1 -0
- package/dist/client/components/diff-block.js +14 -0
- package/dist/client/components/diff-block.js.map +1 -0
- package/dist/client/components/model-entries.d.ts +35 -0
- package/dist/client/components/model-entries.d.ts.map +1 -0
- package/dist/client/components/model-entries.js +82 -0
- package/dist/client/components/model-entries.js.map +1 -0
- package/dist/client/components/page-container.d.ts +11 -0
- package/dist/client/components/page-container.d.ts.map +1 -0
- package/dist/client/components/page-container.js +13 -0
- package/dist/client/components/page-container.js.map +1 -0
- package/dist/client/components/page-header.d.ts +14 -0
- package/dist/client/components/page-header.d.ts.map +1 -0
- package/dist/client/components/page-header.js +10 -0
- package/dist/client/components/page-header.js.map +1 -0
- package/dist/client/components/refresh-button.d.ts +6 -0
- package/dist/client/components/refresh-button.d.ts.map +1 -0
- package/dist/client/components/refresh-button.js +26 -0
- package/dist/client/components/refresh-button.js.map +1 -0
- package/dist/client/components/route-child-page.d.ts +24 -0
- package/dist/client/components/route-child-page.d.ts.map +1 -0
- package/dist/client/components/route-child-page.js +46 -0
- package/dist/client/components/route-child-page.js.map +1 -0
- package/dist/client/components/route-dialog.d.ts +6 -0
- package/dist/client/components/route-dialog.d.ts.map +1 -0
- package/dist/client/components/route-dialog.js +7 -0
- package/dist/client/components/route-dialog.js.map +1 -0
- package/dist/client/components/route-overlay.d.ts +21 -0
- package/dist/client/components/route-overlay.d.ts.map +1 -0
- package/dist/client/components/route-overlay.js +87 -0
- package/dist/client/components/route-overlay.js.map +1 -0
- package/dist/client/components/runners-refresh.d.ts +3 -0
- package/dist/client/components/runners-refresh.d.ts.map +1 -0
- package/dist/client/components/runners-refresh.js +13 -0
- package/dist/client/components/runners-refresh.js.map +1 -0
- package/dist/client/components/secret-input.d.ts +7 -0
- package/dist/client/components/secret-input.d.ts.map +1 -0
- package/dist/client/components/secret-input.js +12 -0
- package/dist/client/components/secret-input.js.map +1 -0
- package/dist/client/components/skills-select.d.ts +16 -0
- package/dist/client/components/skills-select.d.ts.map +1 -0
- package/dist/client/components/skills-select.js +39 -0
- package/dist/client/components/skills-select.js.map +1 -0
- package/dist/client/components/ui/alert-dialog.d.ts +19 -0
- package/dist/client/components/ui/alert-dialog.d.ts.map +1 -0
- package/dist/client/components/ui/alert-dialog.js +42 -0
- package/dist/client/components/ui/alert-dialog.js.map +1 -0
- package/dist/client/components/ui/alert.d.ts +13 -0
- package/dist/client/components/ui/alert.d.ts.map +1 -0
- package/dist/client/components/ui/alert.js +31 -0
- package/dist/client/components/ui/alert.js.map +1 -0
- package/dist/client/components/ui/avatar.d.ts +12 -0
- package/dist/client/components/ui/avatar.d.ts.map +1 -0
- package/dist/client/components/ui/avatar.js +23 -0
- package/dist/client/components/ui/avatar.js.map +1 -0
- package/dist/client/components/ui/badge.d.ts +11 -0
- package/dist/client/components/ui/badge.d.ts.map +1 -0
- package/dist/client/components/ui/badge.js +37 -0
- package/dist/client/components/ui/badge.js.map +1 -0
- package/dist/client/components/ui/button.d.ts +12 -0
- package/dist/client/components/ui/button.d.ts.map +1 -0
- package/dist/client/components/ui/button.js +38 -0
- package/dist/client/components/ui/button.js.map +1 -0
- package/dist/client/components/ui/calendar.d.ts +11 -0
- package/dist/client/components/ui/calendar.d.ts.map +1 -0
- package/dist/client/components/ui/calendar.js +76 -0
- package/dist/client/components/ui/calendar.js.map +1 -0
- package/dist/client/components/ui/card.d.ts +12 -0
- package/dist/client/components/ui/card.d.ts.map +1 -0
- package/dist/client/components/ui/card.js +25 -0
- package/dist/client/components/ui/card.js.map +1 -0
- package/dist/client/components/ui/chart.d.ts +45 -0
- package/dist/client/components/ui/chart.d.ts.map +1 -0
- package/dist/client/components/ui/chart.js +133 -0
- package/dist/client/components/ui/chart.js.map +1 -0
- package/dist/client/components/ui/checkbox.d.ts +5 -0
- package/dist/client/components/ui/checkbox.d.ts.map +1 -0
- package/dist/client/components/ui/checkbox.js +9 -0
- package/dist/client/components/ui/checkbox.js.map +1 -0
- package/dist/client/components/ui/collapsible.d.ts +7 -0
- package/dist/client/components/ui/collapsible.d.ts.map +1 -0
- package/dist/client/components/ui/collapsible.js +13 -0
- package/dist/client/components/ui/collapsible.js.map +1 -0
- package/dist/client/components/ui/combobox.d.ts +25 -0
- package/dist/client/components/ui/combobox.d.ts.map +1 -0
- package/dist/client/components/ui/combobox.js +58 -0
- package/dist/client/components/ui/combobox.js.map +1 -0
- package/dist/client/components/ui/dialog.d.ts +18 -0
- package/dist/client/components/ui/dialog.d.ts.map +1 -0
- package/dist/client/components/ui/dialog.js +40 -0
- package/dist/client/components/ui/dialog.js.map +1 -0
- package/dist/client/components/ui/dropdown-menu.d.ts +30 -0
- package/dist/client/components/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/client/components/ui/dropdown-menu.js +51 -0
- package/dist/client/components/ui/dropdown-menu.js.map +1 -0
- package/dist/client/components/ui/empty.d.ts +15 -0
- package/dist/client/components/ui/empty.d.ts.map +1 -0
- package/dist/client/components/ui/empty.js +37 -0
- package/dist/client/components/ui/empty.js.map +1 -0
- package/dist/client/components/ui/field.d.ts +28 -0
- package/dist/client/components/ui/field.d.ts.map +1 -0
- package/dist/client/components/ui/field.js +71 -0
- package/dist/client/components/ui/field.js.map +1 -0
- package/dist/client/components/ui/input-group.d.ts +22 -0
- package/dist/client/components/ui/input-group.d.ts.map +1 -0
- package/dist/client/components/ui/input-group.js +63 -0
- package/dist/client/components/ui/input-group.js.map +1 -0
- package/dist/client/components/ui/input.d.ts +4 -0
- package/dist/client/components/ui/input.d.ts.map +1 -0
- package/dist/client/components/ui/input.js +8 -0
- package/dist/client/components/ui/input.js.map +1 -0
- package/dist/client/components/ui/item.d.ts +25 -0
- package/dist/client/components/ui/item.d.ts.map +1 -0
- package/dist/client/components/ui/item.js +82 -0
- package/dist/client/components/ui/item.js.map +1 -0
- package/dist/client/components/ui/label.d.ts +4 -0
- package/dist/client/components/ui/label.d.ts.map +1 -0
- package/dist/client/components/ui/label.js +7 -0
- package/dist/client/components/ui/label.js.map +1 -0
- package/dist/client/components/ui/popover.d.ts +10 -0
- package/dist/client/components/ui/popover.d.ts.map +1 -0
- package/dist/client/components/ui/popover.js +23 -0
- package/dist/client/components/ui/popover.js.map +1 -0
- package/dist/client/components/ui/radio-group.d.ts +7 -0
- package/dist/client/components/ui/radio-group.d.ts.map +1 -0
- package/dist/client/components/ui/radio-group.js +12 -0
- package/dist/client/components/ui/radio-group.js.map +1 -0
- package/dist/client/components/ui/select.d.ts +16 -0
- package/dist/client/components/ui/select.d.ts.map +1 -0
- package/dist/client/components/ui/select.js +34 -0
- package/dist/client/components/ui/select.js.map +1 -0
- package/dist/client/components/ui/separator.d.ts +5 -0
- package/dist/client/components/ui/separator.d.ts.map +1 -0
- package/dist/client/components/ui/separator.js +8 -0
- package/dist/client/components/ui/separator.js.map +1 -0
- package/dist/client/components/ui/sheet.d.ts +15 -0
- package/dist/client/components/ui/sheet.d.ts.map +1 -0
- package/dist/client/components/ui/sheet.js +39 -0
- package/dist/client/components/ui/sheet.js.map +1 -0
- package/dist/client/components/ui/skeleton.d.ts +4 -0
- package/dist/client/components/ui/skeleton.d.ts.map +1 -0
- package/dist/client/components/ui/skeleton.js +7 -0
- package/dist/client/components/ui/skeleton.js.map +1 -0
- package/dist/client/components/ui/spinner.d.ts +4 -0
- package/dist/client/components/ui/spinner.d.ts.map +1 -0
- package/dist/client/components/ui/spinner.js +11 -0
- package/dist/client/components/ui/spinner.js.map +1 -0
- package/dist/client/components/ui/switch.d.ts +7 -0
- package/dist/client/components/ui/switch.d.ts.map +1 -0
- package/dist/client/components/ui/switch.js +8 -0
- package/dist/client/components/ui/switch.js.map +1 -0
- package/dist/client/components/ui/table.d.ts +11 -0
- package/dist/client/components/ui/table.d.ts.map +1 -0
- package/dist/client/components/ui/table.js +28 -0
- package/dist/client/components/ui/table.js.map +1 -0
- package/dist/client/components/ui/tabs.d.ts +14 -0
- package/dist/client/components/ui/tabs.d.ts.map +1 -0
- package/dist/client/components/ui/tabs.js +32 -0
- package/dist/client/components/ui/tabs.js.map +1 -0
- package/dist/client/components/ui/textarea.d.ts +4 -0
- package/dist/client/components/ui/textarea.d.ts.map +1 -0
- package/dist/client/components/ui/textarea.js +7 -0
- package/dist/client/components/ui/textarea.js.map +1 -0
- package/dist/client/components/ui/tooltip.d.ts +8 -0
- package/dist/client/components/ui/tooltip.d.ts.map +1 -0
- package/dist/client/components/ui/tooltip.js +17 -0
- package/dist/client/components/ui/tooltip.js.map +1 -0
- package/dist/client/components/unsaved-changes.d.ts +8 -0
- package/dist/client/components/unsaved-changes.d.ts.map +1 -0
- package/dist/client/components/unsaved-changes.js +19 -0
- package/dist/client/components/unsaved-changes.js.map +1 -0
- package/dist/client/components/use-route-overlay.d.ts +15 -0
- package/dist/client/components/use-route-overlay.d.ts.map +1 -0
- package/dist/client/components/use-route-overlay.js +15 -0
- package/dist/client/components/use-route-overlay.js.map +1 -0
- package/dist/client/components/variables/access-log.d.ts +17 -0
- package/dist/client/components/variables/access-log.d.ts.map +1 -0
- package/dist/client/components/variables/access-log.js +52 -0
- package/dist/client/components/variables/access-log.js.map +1 -0
- package/dist/client/components/variables/variable-dialogs.d.ts +26 -0
- package/dist/client/components/variables/variable-dialogs.d.ts.map +1 -0
- package/dist/client/components/variables/variable-dialogs.js +100 -0
- package/dist/client/components/variables/variable-dialogs.js.map +1 -0
- package/dist/client/components/variables/variables-panel.d.ts +24 -0
- package/dist/client/components/variables/variables-panel.d.ts.map +1 -0
- package/dist/client/components/variables/variables-panel.js +114 -0
- package/dist/client/components/variables/variables-panel.js.map +1 -0
- package/dist/client/config.d.ts +6 -0
- package/dist/client/config.d.ts.map +1 -0
- package/dist/client/config.js +6 -0
- package/dist/client/config.js.map +1 -0
- package/dist/client/hooks/use-access.d.ts +6 -0
- package/dist/client/hooks/use-access.d.ts.map +1 -0
- package/dist/client/hooks/use-access.js +8 -0
- package/dist/client/hooks/use-access.js.map +1 -0
- package/dist/client/hooks/use-agent-picker-labels.d.ts +4 -0
- package/dist/client/hooks/use-agent-picker-labels.d.ts.map +1 -0
- package/dist/client/hooks/use-agent-picker-labels.js +39 -0
- package/dist/client/hooks/use-agent-picker-labels.js.map +1 -0
- package/dist/client/hooks/use-agent-save.d.ts +9 -0
- package/dist/client/hooks/use-agent-save.d.ts.map +1 -0
- package/dist/client/hooks/use-agent-save.js +40 -0
- package/dist/client/hooks/use-agent-save.js.map +1 -0
- package/dist/client/hooks/use-agents-api.d.ts +4 -0
- package/dist/client/hooks/use-agents-api.d.ts.map +1 -0
- package/dist/client/hooks/use-agents-api.js +9 -0
- package/dist/client/hooks/use-agents-api.js.map +1 -0
- package/dist/client/hooks/use-media-query.d.ts +3 -0
- package/dist/client/hooks/use-media-query.d.ts.map +1 -0
- package/dist/client/hooks/use-media-query.js +14 -0
- package/dist/client/hooks/use-media-query.js.map +1 -0
- package/dist/client/hooks/use-model-catalog.d.ts +9 -0
- package/dist/client/hooks/use-model-catalog.d.ts.map +1 -0
- package/dist/client/hooks/use-model-catalog.js +27 -0
- package/dist/client/hooks/use-model-catalog.js.map +1 -0
- package/dist/client/hooks/use-notify.d.ts +9 -0
- package/dist/client/hooks/use-notify.d.ts.map +1 -0
- package/dist/client/hooks/use-notify.js +27 -0
- package/dist/client/hooks/use-notify.js.map +1 -0
- package/dist/client/hooks/use-realtime-topic.d.ts +6 -0
- package/dist/client/hooks/use-realtime-topic.d.ts.map +1 -0
- package/dist/client/hooks/use-realtime-topic.js +24 -0
- package/dist/client/hooks/use-realtime-topic.js.map +1 -0
- package/dist/client/hooks/use-server-url.d.ts +6 -0
- package/dist/client/hooks/use-server-url.d.ts.map +1 -0
- package/dist/client/hooks/use-server-url.js +10 -0
- package/dist/client/hooks/use-server-url.js.map +1 -0
- package/dist/client/hooks/use-vocabulary.d.ts +38 -0
- package/dist/client/hooks/use-vocabulary.d.ts.map +1 -0
- package/dist/client/hooks/use-vocabulary.js +77 -0
- package/dist/client/hooks/use-vocabulary.js.map +1 -0
- package/dist/client/index.d.ts +2 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +4 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/kit.d.ts +65 -0
- package/dist/client/kit.d.ts.map +1 -0
- package/dist/client/kit.js +124 -0
- package/dist/client/kit.js.map +1 -0
- package/dist/client/lib/action-catalog.d.ts +13 -0
- package/dist/client/lib/action-catalog.d.ts.map +1 -0
- package/dist/client/lib/action-catalog.js +45 -0
- package/dist/client/lib/action-catalog.js.map +1 -0
- package/dist/client/lib/agents.d.ts +15 -0
- package/dist/client/lib/agents.d.ts.map +1 -0
- package/dist/client/lib/agents.js +48 -0
- package/dist/client/lib/agents.js.map +1 -0
- package/dist/client/lib/diff.d.ts +8 -0
- package/dist/client/lib/diff.d.ts.map +1 -0
- package/dist/client/lib/diff.js +55 -0
- package/dist/client/lib/diff.js.map +1 -0
- package/dist/client/lib/download.d.ts +5 -0
- package/dist/client/lib/download.d.ts.map +1 -0
- package/dist/client/lib/download.js +17 -0
- package/dist/client/lib/download.js.map +1 -0
- package/dist/client/lib/format.d.ts +15 -0
- package/dist/client/lib/format.d.ts.map +1 -0
- package/dist/client/lib/format.js +76 -0
- package/dist/client/lib/format.js.map +1 -0
- package/dist/client/lib/install.d.ts +23 -0
- package/dist/client/lib/install.d.ts.map +1 -0
- package/dist/client/lib/install.js +54 -0
- package/dist/client/lib/install.js.map +1 -0
- package/dist/client/lib/revision.d.ts +3 -0
- package/dist/client/lib/revision.d.ts.map +1 -0
- package/dist/client/lib/revision.js +10 -0
- package/dist/client/lib/revision.js.map +1 -0
- package/dist/client/lib/runs.d.ts +11 -0
- package/dist/client/lib/runs.d.ts.map +1 -0
- package/dist/client/lib/runs.js +22 -0
- package/dist/client/lib/runs.js.map +1 -0
- package/dist/client/lib/text.d.ts +3 -0
- package/dist/client/lib/text.d.ts.map +1 -0
- package/dist/client/lib/text.js +6 -0
- package/dist/client/lib/text.js.map +1 -0
- package/dist/client/lib/tool-policy.d.ts +5 -0
- package/dist/client/lib/tool-policy.d.ts.map +1 -0
- package/dist/client/lib/tool-policy.js +10 -0
- package/dist/client/lib/tool-policy.js.map +1 -0
- package/dist/client/lib/tool-slots.d.ts +16 -0
- package/dist/client/lib/tool-slots.d.ts.map +1 -0
- package/dist/client/lib/tool-slots.js +37 -0
- package/dist/client/lib/tool-slots.js.map +1 -0
- package/dist/client/lib/tool-summary.d.ts +6 -0
- package/dist/client/lib/tool-summary.d.ts.map +1 -0
- package/dist/client/lib/tool-summary.js +44 -0
- package/dist/client/lib/tool-summary.js.map +1 -0
- package/dist/client/locales/chat.en-US.d.ts +83 -0
- package/dist/client/locales/chat.en-US.d.ts.map +1 -0
- package/dist/client/locales/chat.en-US.js +82 -0
- package/dist/client/locales/chat.en-US.js.map +1 -0
- package/dist/client/locales/chat.zh-CN.d.ts +4 -0
- package/dist/client/locales/chat.zh-CN.d.ts.map +1 -0
- package/dist/client/locales/chat.zh-CN.js +76 -0
- package/dist/client/locales/chat.zh-CN.js.map +1 -0
- package/dist/client/locales/en-US.d.ts +610 -0
- package/dist/client/locales/en-US.d.ts.map +1 -0
- package/dist/client/locales/en-US.js +604 -0
- package/dist/client/locales/en-US.js.map +1 -0
- package/dist/client/locales/index.d.ts +4 -0
- package/dist/client/locales/index.d.ts.map +1 -0
- package/dist/client/locales/index.js +7 -0
- package/dist/client/locales/index.js.map +1 -0
- package/dist/client/locales/prices.en-US.d.ts +49 -0
- package/dist/client/locales/prices.en-US.d.ts.map +1 -0
- package/dist/client/locales/prices.en-US.js +48 -0
- package/dist/client/locales/prices.en-US.js.map +1 -0
- package/dist/client/locales/prices.zh-CN.d.ts +5 -0
- package/dist/client/locales/prices.zh-CN.d.ts.map +1 -0
- package/dist/client/locales/prices.zh-CN.js +48 -0
- package/dist/client/locales/prices.zh-CN.js.map +1 -0
- package/dist/client/locales/runtimes.en-US.d.ts +172 -0
- package/dist/client/locales/runtimes.en-US.d.ts.map +1 -0
- package/dist/client/locales/runtimes.en-US.js +171 -0
- package/dist/client/locales/runtimes.en-US.js.map +1 -0
- package/dist/client/locales/runtimes.zh-CN.d.ts +4 -0
- package/dist/client/locales/runtimes.zh-CN.d.ts.map +1 -0
- package/dist/client/locales/runtimes.zh-CN.js +170 -0
- package/dist/client/locales/runtimes.zh-CN.js.map +1 -0
- package/dist/client/locales/services.en-US.d.ts +112 -0
- package/dist/client/locales/services.en-US.d.ts.map +1 -0
- package/dist/client/locales/services.en-US.js +111 -0
- package/dist/client/locales/services.en-US.js.map +1 -0
- package/dist/client/locales/services.zh-CN.d.ts +4 -0
- package/dist/client/locales/services.zh-CN.d.ts.map +1 -0
- package/dist/client/locales/services.zh-CN.js +110 -0
- package/dist/client/locales/services.zh-CN.js.map +1 -0
- package/dist/client/locales/skills.en-US.d.ts +149 -0
- package/dist/client/locales/skills.en-US.d.ts.map +1 -0
- package/dist/client/locales/skills.en-US.js +149 -0
- package/dist/client/locales/skills.en-US.js.map +1 -0
- package/dist/client/locales/skills.zh-CN.d.ts +4 -0
- package/dist/client/locales/skills.zh-CN.d.ts.map +1 -0
- package/dist/client/locales/skills.zh-CN.js +148 -0
- package/dist/client/locales/skills.zh-CN.js.map +1 -0
- package/dist/client/locales/zh-CN.d.ts +4 -0
- package/dist/client/locales/zh-CN.d.ts.map +1 -0
- package/dist/client/locales/zh-CN.js +599 -0
- package/dist/client/locales/zh-CN.js.map +1 -0
- package/dist/client/online/default-model.d.ts +5 -0
- package/dist/client/online/default-model.d.ts.map +1 -0
- package/dist/client/online/default-model.js +65 -0
- package/dist/client/online/default-model.js.map +1 -0
- package/dist/client/online/model.d.ts +45 -0
- package/dist/client/online/model.d.ts.map +1 -0
- package/dist/client/online/model.js +128 -0
- package/dist/client/online/model.js.map +1 -0
- package/dist/client/online/service-editor.d.ts +11 -0
- package/dist/client/online/service-editor.d.ts.map +1 -0
- package/dist/client/online/service-editor.js +235 -0
- package/dist/client/online/service-editor.js.map +1 -0
- package/dist/client/online/services.d.ts +3 -0
- package/dist/client/online/services.d.ts.map +1 -0
- package/dist/client/online/services.js +109 -0
- package/dist/client/online/services.js.map +1 -0
- package/dist/client/pages/agents/agent-model.d.ts +73 -0
- package/dist/client/pages/agents/agent-model.d.ts.map +1 -0
- package/dist/client/pages/agents/agent-model.js +172 -0
- package/dist/client/pages/agents/agent-model.js.map +1 -0
- package/dist/client/pages/agents/detail/brief-preview.d.ts +7 -0
- package/dist/client/pages/agents/detail/brief-preview.d.ts.map +1 -0
- package/dist/client/pages/agents/detail/brief-preview.js +43 -0
- package/dist/client/pages/agents/detail/brief-preview.js.map +1 -0
- package/dist/client/pages/agents/detail/history.d.ts +11 -0
- package/dist/client/pages/agents/detail/history.d.ts.map +1 -0
- package/dist/client/pages/agents/detail/history.js +149 -0
- package/dist/client/pages/agents/detail/history.js.map +1 -0
- package/dist/client/pages/agents/detail/index.d.ts +3 -0
- package/dist/client/pages/agents/detail/index.d.ts.map +1 -0
- package/dist/client/pages/agents/detail/index.js +241 -0
- package/dist/client/pages/agents/detail/index.js.map +1 -0
- package/dist/client/pages/agents/detail/sections.d.ts +22 -0
- package/dist/client/pages/agents/detail/sections.d.ts.map +1 -0
- package/dist/client/pages/agents/detail/sections.js +311 -0
- package/dist/client/pages/agents/detail/sections.js.map +1 -0
- package/dist/client/pages/agents/detail/tab-draft.d.ts +43 -0
- package/dist/client/pages/agents/detail/tab-draft.d.ts.map +1 -0
- package/dist/client/pages/agents/detail/tab-draft.js +115 -0
- package/dist/client/pages/agents/detail/tab-draft.js.map +1 -0
- package/dist/client/pages/agents/detail/unsaved-bar.d.ts +13 -0
- package/dist/client/pages/agents/detail/unsaved-bar.d.ts.map +1 -0
- package/dist/client/pages/agents/detail/unsaved-bar.js +21 -0
- package/dist/client/pages/agents/detail/unsaved-bar.js.map +1 -0
- package/dist/client/pages/agents/index.d.ts +3 -0
- package/dist/client/pages/agents/index.d.ts.map +1 -0
- package/dist/client/pages/agents/index.js +109 -0
- package/dist/client/pages/agents/index.js.map +1 -0
- package/dist/client/pages/agents/new.d.ts +3 -0
- package/dist/client/pages/agents/new.d.ts.map +1 -0
- package/dist/client/pages/agents/new.js +149 -0
- package/dist/client/pages/agents/new.js.map +1 -0
- package/dist/client/pages/agents/preset-picker.d.ts +8 -0
- package/dist/client/pages/agents/preset-picker.d.ts.map +1 -0
- package/dist/client/pages/agents/preset-picker.js +41 -0
- package/dist/client/pages/agents/preset-picker.js.map +1 -0
- package/dist/client/pages/models/index.d.ts +6 -0
- package/dist/client/pages/models/index.d.ts.map +1 -0
- package/dist/client/pages/models/index.js +6 -0
- package/dist/client/pages/models/index.js.map +1 -0
- package/dist/client/pages/runtimes/connect.d.ts +3 -0
- package/dist/client/pages/runtimes/connect.d.ts.map +1 -0
- package/dist/client/pages/runtimes/connect.js +155 -0
- package/dist/client/pages/runtimes/connect.js.map +1 -0
- package/dist/client/pages/runtimes/index.d.ts +3 -0
- package/dist/client/pages/runtimes/index.d.ts.map +1 -0
- package/dist/client/pages/runtimes/index.js +110 -0
- package/dist/client/pages/runtimes/index.js.map +1 -0
- package/dist/client/pages/runtimes/runner-cells.d.ts +39 -0
- package/dist/client/pages/runtimes/runner-cells.d.ts.map +1 -0
- package/dist/client/pages/runtimes/runner-cells.js +117 -0
- package/dist/client/pages/runtimes/runner-cells.js.map +1 -0
- package/dist/client/pages/runtimes/runner-policy.d.ts +18 -0
- package/dist/client/pages/runtimes/runner-policy.d.ts.map +1 -0
- package/dist/client/pages/runtimes/runner-policy.js +10 -0
- package/dist/client/pages/runtimes/runner-policy.js.map +1 -0
- package/dist/client/pages/runtimes/runner-sheet.d.ts +8 -0
- package/dist/client/pages/runtimes/runner-sheet.d.ts.map +1 -0
- package/dist/client/pages/runtimes/runner-sheet.js +188 -0
- package/dist/client/pages/runtimes/runner-sheet.js.map +1 -0
- package/dist/client/pages/runtimes/tool-slots-fields.d.ts +33 -0
- package/dist/client/pages/runtimes/tool-slots-fields.d.ts.map +1 -0
- package/dist/client/pages/runtimes/tool-slots-fields.js +28 -0
- package/dist/client/pages/runtimes/tool-slots-fields.js.map +1 -0
- package/dist/client/pages/skills/detail/index.d.ts +3 -0
- package/dist/client/pages/skills/detail/index.d.ts.map +1 -0
- package/dist/client/pages/skills/detail/index.js +115 -0
- package/dist/client/pages/skills/detail/index.js.map +1 -0
- package/dist/client/pages/skills/detail/skill-editor.d.ts +13 -0
- package/dist/client/pages/skills/detail/skill-editor.d.ts.map +1 -0
- package/dist/client/pages/skills/detail/skill-editor.js +80 -0
- package/dist/client/pages/skills/detail/skill-editor.js.map +1 -0
- package/dist/client/pages/skills/detail/skill-versions.d.ts +7 -0
- package/dist/client/pages/skills/detail/skill-versions.d.ts.map +1 -0
- package/dist/client/pages/skills/detail/skill-versions.js +115 -0
- package/dist/client/pages/skills/detail/skill-versions.js.map +1 -0
- package/dist/client/pages/skills/import-button.d.ts +9 -0
- package/dist/client/pages/skills/import-button.d.ts.map +1 -0
- package/dist/client/pages/skills/import-button.js +69 -0
- package/dist/client/pages/skills/import-button.js.map +1 -0
- package/dist/client/pages/skills/index.d.ts +3 -0
- package/dist/client/pages/skills/index.d.ts.map +1 -0
- package/dist/client/pages/skills/index.js +49 -0
- package/dist/client/pages/skills/index.js.map +1 -0
- package/dist/client/pages/skills/new.d.ts +3 -0
- package/dist/client/pages/skills/new.d.ts.map +1 -0
- package/dist/client/pages/skills/new.js +81 -0
- package/dist/client/pages/skills/new.js.map +1 -0
- package/dist/client/pages/skills/workbench/discard-dialog.d.ts +8 -0
- package/dist/client/pages/skills/workbench/discard-dialog.d.ts.map +1 -0
- package/dist/client/pages/skills/workbench/discard-dialog.js +9 -0
- package/dist/client/pages/skills/workbench/discard-dialog.js.map +1 -0
- package/dist/client/pages/skills/workbench/entry-dialog.d.ts +23 -0
- package/dist/client/pages/skills/workbench/entry-dialog.d.ts.map +1 -0
- package/dist/client/pages/skills/workbench/entry-dialog.js +63 -0
- package/dist/client/pages/skills/workbench/entry-dialog.js.map +1 -0
- package/dist/client/pages/skills/workbench/file-pane.d.ts +27 -0
- package/dist/client/pages/skills/workbench/file-pane.d.ts.map +1 -0
- package/dist/client/pages/skills/workbench/file-pane.js +101 -0
- package/dist/client/pages/skills/workbench/file-pane.js.map +1 -0
- package/dist/client/pages/skills/workbench/file-tree.d.ts +23 -0
- package/dist/client/pages/skills/workbench/file-tree.d.ts.map +1 -0
- package/dist/client/pages/skills/workbench/file-tree.js +85 -0
- package/dist/client/pages/skills/workbench/file-tree.js.map +1 -0
- package/dist/client/pages/skills/workbench/model.d.ts +72 -0
- package/dist/client/pages/skills/workbench/model.d.ts.map +1 -0
- package/dist/client/pages/skills/workbench/model.js +176 -0
- package/dist/client/pages/skills/workbench/model.js.map +1 -0
- package/dist/client/pages/skills/workbench/skill-workbench.d.ts +13 -0
- package/dist/client/pages/skills/workbench/skill-workbench.d.ts.map +1 -0
- package/dist/client/pages/skills/workbench/skill-workbench.js +223 -0
- package/dist/client/pages/skills/workbench/skill-workbench.js.map +1 -0
- package/dist/client/pages/skills/workbench/state.d.ts +28 -0
- package/dist/client/pages/skills/workbench/state.d.ts.map +1 -0
- package/dist/client/pages/skills/workbench/state.js +62 -0
- package/dist/client/pages/skills/workbench/state.js.map +1 -0
- package/dist/client/pages/skills/workbench/use-element-width.d.ts +6 -0
- package/dist/client/pages/skills/workbench/use-element-width.d.ts.map +1 -0
- package/dist/client/pages/skills/workbench/use-element-width.js +18 -0
- package/dist/client/pages/skills/workbench/use-element-width.js.map +1 -0
- package/dist/client/pages/usage/date-range-picker.d.ts +10 -0
- package/dist/client/pages/usage/date-range-picker.d.ts.map +1 -0
- package/dist/client/pages/usage/date-range-picker.js +45 -0
- package/dist/client/pages/usage/date-range-picker.js.map +1 -0
- package/dist/client/pages/usage/index.d.ts +3 -0
- package/dist/client/pages/usage/index.d.ts.map +1 -0
- package/dist/client/pages/usage/index.js +269 -0
- package/dist/client/pages/usage/index.js.map +1 -0
- package/dist/client/pages/usage/model.d.ts +70 -0
- package/dist/client/pages/usage/model.d.ts.map +1 -0
- package/dist/client/pages/usage/model.js +234 -0
- package/dist/client/pages/usage/model.js.map +1 -0
- package/dist/client/pages/usage/prices/index.d.ts +6 -0
- package/dist/client/pages/usage/prices/index.d.ts.map +1 -0
- package/dist/client/pages/usage/prices/index.js +35 -0
- package/dist/client/pages/usage/prices/index.js.map +1 -0
- package/dist/client/pages/usage/prices/model.d.ts +43 -0
- package/dist/client/pages/usage/prices/model.d.ts.map +1 -0
- package/dist/client/pages/usage/prices/model.js +104 -0
- package/dist/client/pages/usage/prices/model.js.map +1 -0
- package/dist/client/pages/usage/prices/price-cells.d.ts +24 -0
- package/dist/client/pages/usage/prices/price-cells.d.ts.map +1 -0
- package/dist/client/pages/usage/prices/price-cells.js +61 -0
- package/dist/client/pages/usage/prices/price-cells.js.map +1 -0
- package/dist/client/pages/usage/prices/prices-section.d.ts +7 -0
- package/dist/client/pages/usage/prices/prices-section.d.ts.map +1 -0
- package/dist/client/pages/usage/prices/prices-section.js +50 -0
- package/dist/client/pages/usage/prices/prices-section.js.map +1 -0
- package/dist/client/pages/usage/prices/tool-panel.d.ts +9 -0
- package/dist/client/pages/usage/prices/tool-panel.d.ts.map +1 -0
- package/dist/client/pages/usage/prices/tool-panel.js +78 -0
- package/dist/client/pages/usage/prices/tool-panel.js.map +1 -0
- package/dist/client/pages/usage/prices/use-save-prices.d.ts +6 -0
- package/dist/client/pages/usage/prices/use-save-prices.d.ts.map +1 -0
- package/dist/client/pages/usage/prices/use-save-prices.js +14 -0
- package/dist/client/pages/usage/prices/use-save-prices.js.map +1 -0
- package/dist/client/plugin.d.ts +4 -0
- package/dist/client/plugin.d.ts.map +1 -0
- package/dist/client/plugin.js +11 -0
- package/dist/client/plugin.js.map +1 -0
- package/dist/client/profile/default-agent.d.ts +3 -0
- package/dist/client/profile/default-agent.d.ts.map +1 -0
- package/dist/client/profile/default-agent.js +89 -0
- package/dist/client/profile/default-agent.js.map +1 -0
- package/dist/client/profile.d.ts +8 -0
- package/dist/client/profile.d.ts.map +1 -0
- package/dist/client/profile.js +4 -0
- package/dist/client/profile.js.map +1 -0
- package/dist/client/query.d.ts +9 -0
- package/dist/client/query.d.ts.map +1 -0
- package/dist/client/query.js +41 -0
- package/dist/client/query.js.map +1 -0
- package/dist/client/routes.d.ts +25 -0
- package/dist/client/routes.d.ts.map +1 -0
- package/dist/client/routes.js +89 -0
- package/dist/client/routes.js.map +1 -0
- package/dist/client/runs/run-hooks.d.ts +35 -0
- package/dist/client/runs/run-hooks.d.ts.map +1 -0
- package/dist/client/runs/run-hooks.js +92 -0
- package/dist/client/runs/run-hooks.js.map +1 -0
- package/dist/client/runs/subject-runs.d.ts +12 -0
- package/dist/client/runs/subject-runs.d.ts.map +1 -0
- package/dist/client/runs/subject-runs.js +56 -0
- package/dist/client/runs/subject-runs.js.map +1 -0
- package/dist/client/runs/use-run-events.d.ts +24 -0
- package/dist/client/runs/use-run-events.d.ts.map +1 -0
- package/dist/client/runs/use-run-events.js +80 -0
- package/dist/client/runs/use-run-events.js.map +1 -0
- package/dist/client/runs.d.ts +14 -0
- package/dist/client/runs.d.ts.map +1 -0
- package/dist/client/runs.js +13 -0
- package/dist/client/runs.js.map +1 -0
- package/dist/database/migrations/.manifest.json +57 -0
- package/dist/database/migrations/202610020001_ag_create_agents.d.ts +4 -0
- package/dist/database/migrations/202610020001_ag_create_agents.d.ts.map +1 -0
- package/dist/database/migrations/202610020001_ag_create_agents.js +108 -0
- package/dist/database/migrations/202610020001_ag_create_agents.js.map +1 -0
- package/dist/database/migrations/202610020002_ag_create_runners.d.ts +4 -0
- package/dist/database/migrations/202610020002_ag_create_runners.d.ts.map +1 -0
- package/dist/database/migrations/202610020002_ag_create_runners.js +115 -0
- package/dist/database/migrations/202610020002_ag_create_runners.js.map +1 -0
- package/dist/database/migrations/202610020003_ag_create_runs.d.ts +4 -0
- package/dist/database/migrations/202610020003_ag_create_runs.d.ts.map +1 -0
- package/dist/database/migrations/202610020003_ag_create_runs.js +289 -0
- package/dist/database/migrations/202610020003_ag_create_runs.js.map +1 -0
- package/dist/database/migrations/202610020004_ag_create_variables.d.ts +4 -0
- package/dist/database/migrations/202610020004_ag_create_variables.d.ts.map +1 -0
- package/dist/database/migrations/202610020004_ag_create_variables.js +52 -0
- package/dist/database/migrations/202610020004_ag_create_variables.js.map +1 -0
- package/dist/database/migrations/202610020005_ag_create_skills.d.ts +4 -0
- package/dist/database/migrations/202610020005_ag_create_skills.d.ts.map +1 -0
- package/dist/database/migrations/202610020005_ag_create_skills.js +94 -0
- package/dist/database/migrations/202610020005_ag_create_skills.js.map +1 -0
- package/dist/database/migrations/202610020006_ag_create_model_prices.d.ts +4 -0
- package/dist/database/migrations/202610020006_ag_create_model_prices.d.ts.map +1 -0
- package/dist/database/migrations/202610020006_ag_create_model_prices.js +46 -0
- package/dist/database/migrations/202610020006_ag_create_model_prices.js.map +1 -0
- package/dist/database/migrations/202610020008_ag_create_conversations.d.ts +4 -0
- package/dist/database/migrations/202610020008_ag_create_conversations.d.ts.map +1 -0
- package/dist/database/migrations/202610020008_ag_create_conversations.js +113 -0
- package/dist/database/migrations/202610020008_ag_create_conversations.js.map +1 -0
- package/dist/database/migrations/202610020009_ag_create_jobs.d.ts +4 -0
- package/dist/database/migrations/202610020009_ag_create_jobs.d.ts.map +1 -0
- package/dist/database/migrations/202610020009_ag_create_jobs.js +102 -0
- package/dist/database/migrations/202610020009_ag_create_jobs.js.map +1 -0
- package/dist/database/migrations/202610020010_ag_create_model_services.d.ts +4 -0
- package/dist/database/migrations/202610020010_ag_create_model_services.d.ts.map +1 -0
- package/dist/database/migrations/202610020010_ag_create_model_services.js +57 -0
- package/dist/database/migrations/202610020010_ag_create_model_services.js.map +1 -0
- package/dist/database/migrations/202610020011_ag_create_vectors.d.ts +4 -0
- package/dist/database/migrations/202610020011_ag_create_vectors.d.ts.map +1 -0
- package/dist/database/migrations/202610020011_ag_create_vectors.js +68 -0
- package/dist/database/migrations/202610020011_ag_create_vectors.js.map +1 -0
- package/dist/database/migrations/202610060001_ag_add_runner_product.d.ts +8 -0
- package/dist/database/migrations/202610060001_ag_add_runner_product.d.ts.map +1 -0
- package/dist/database/migrations/202610060001_ag_add_runner_product.js +21 -0
- package/dist/database/migrations/202610060001_ag_add_runner_product.js.map +1 -0
- package/dist/database/migrations/202610070001_ag_create_chat_attachments.d.ts +4 -0
- package/dist/database/migrations/202610070001_ag_create_chat_attachments.d.ts.map +1 -0
- package/dist/database/migrations/202610070001_ag_create_chat_attachments.js +35 -0
- package/dist/database/migrations/202610070001_ag_create_chat_attachments.js.map +1 -0
- package/dist/database/migrations/202610080001_ag_add_runner_tool_slots.d.ts +9 -0
- package/dist/database/migrations/202610080001_ag_add_runner_tool_slots.d.ts.map +1 -0
- package/dist/database/migrations/202610080001_ag_add_runner_tool_slots.js +30 -0
- package/dist/database/migrations/202610080001_ag_add_runner_tool_slots.js.map +1 -0
- package/dist/database/seeds/.manifest.json +9 -0
- package/dist/database/seeds/202610020007_ag_default_model_prices.d.ts +4 -0
- package/dist/database/seeds/202610020007_ag_default_model_prices.d.ts.map +1 -0
- package/dist/database/seeds/202610020007_ag_default_model_prices.js +142 -0
- package/dist/database/seeds/202610020007_ag_default_model_prices.js.map +1 -0
- package/dist/package.d.ts +2 -0
- package/dist/package.d.ts.map +1 -0
- package/dist/package.js +2 -0
- package/dist/package.js.map +1 -0
- package/dist/package.json +312 -0
- package/dist/server/cli/run-credential.d.ts +17 -0
- package/dist/server/cli/run-credential.d.ts.map +1 -0
- package/dist/server/cli/run-credential.js +52 -0
- package/dist/server/cli/run-credential.js.map +1 -0
- package/dist/server/cli/surface.d.ts +20 -0
- package/dist/server/cli/surface.d.ts.map +1 -0
- package/dist/server/cli/surface.js +66 -0
- package/dist/server/cli/surface.js.map +1 -0
- package/dist/server/composition.d.ts +194 -0
- package/dist/server/composition.d.ts.map +1 -0
- package/dist/server/composition.js +365 -0
- package/dist/server/composition.js.map +1 -0
- package/dist/server/core/agents/actions.d.ts +16 -0
- package/dist/server/core/agents/actions.d.ts.map +1 -0
- package/dist/server/core/agents/actions.js +26 -0
- package/dist/server/core/agents/actions.js.map +1 -0
- package/dist/server/core/agents/agent.history.d.ts +32 -0
- package/dist/server/core/agents/agent.history.d.ts.map +1 -0
- package/dist/server/core/agents/agent.history.js +71 -0
- package/dist/server/core/agents/agent.history.js.map +1 -0
- package/dist/server/core/agents/agent.service.d.ts +85 -0
- package/dist/server/core/agents/agent.service.d.ts.map +1 -0
- package/dist/server/core/agents/agent.service.js +427 -0
- package/dist/server/core/agents/agent.service.js.map +1 -0
- package/dist/server/core/agents/agent.store.d.ts +51 -0
- package/dist/server/core/agents/agent.store.d.ts.map +1 -0
- package/dist/server/core/agents/agent.store.js +152 -0
- package/dist/server/core/agents/agent.store.js.map +1 -0
- package/dist/server/core/agents/index.d.ts +4 -0
- package/dist/server/core/agents/index.d.ts.map +1 -0
- package/dist/server/core/agents/index.js +4 -0
- package/dist/server/core/agents/index.js.map +1 -0
- package/dist/server/core/brief/brief.d.ts +114 -0
- package/dist/server/core/brief/brief.d.ts.map +1 -0
- package/dist/server/core/brief/brief.js +216 -0
- package/dist/server/core/brief/brief.js.map +1 -0
- package/dist/server/core/brief/index.d.ts +2 -0
- package/dist/server/core/brief/index.d.ts.map +1 -0
- package/dist/server/core/brief/index.js +2 -0
- package/dist/server/core/brief/index.js.map +1 -0
- package/dist/server/core/callers/index.d.ts +63 -0
- package/dist/server/core/callers/index.d.ts.map +1 -0
- package/dist/server/core/callers/index.js +42 -0
- package/dist/server/core/callers/index.js.map +1 -0
- package/dist/server/core/consultations/consultation.service.d.ts +59 -0
- package/dist/server/core/consultations/consultation.service.d.ts.map +1 -0
- package/dist/server/core/consultations/consultation.service.js +195 -0
- package/dist/server/core/consultations/consultation.service.js.map +1 -0
- package/dist/server/core/consultations/index.d.ts +3 -0
- package/dist/server/core/consultations/index.d.ts.map +1 -0
- package/dist/server/core/consultations/index.js +3 -0
- package/dist/server/core/consultations/index.js.map +1 -0
- package/dist/server/core/consultations/prompt.d.ts +41 -0
- package/dist/server/core/consultations/prompt.d.ts.map +1 -0
- package/dist/server/core/consultations/prompt.js +64 -0
- package/dist/server/core/consultations/prompt.js.map +1 -0
- package/dist/server/core/conversations/attachments.d.ts +159 -0
- package/dist/server/core/conversations/attachments.d.ts.map +1 -0
- package/dist/server/core/conversations/attachments.js +281 -0
- package/dist/server/core/conversations/attachments.js.map +1 -0
- package/dist/server/core/conversations/availability.d.ts +14 -0
- package/dist/server/core/conversations/availability.d.ts.map +1 -0
- package/dist/server/core/conversations/availability.js +42 -0
- package/dist/server/core/conversations/availability.js.map +1 -0
- package/dist/server/core/conversations/chat-settings.d.ts +26 -0
- package/dist/server/core/conversations/chat-settings.d.ts.map +1 -0
- package/dist/server/core/conversations/chat-settings.js +98 -0
- package/dist/server/core/conversations/chat-settings.js.map +1 -0
- package/dist/server/core/conversations/conversation.service.d.ts +31 -0
- package/dist/server/core/conversations/conversation.service.d.ts.map +1 -0
- package/dist/server/core/conversations/conversation.service.js +1158 -0
- package/dist/server/core/conversations/conversation.service.js.map +1 -0
- package/dist/server/core/conversations/conversation.store.d.ts +104 -0
- package/dist/server/core/conversations/conversation.store.d.ts.map +1 -0
- package/dist/server/core/conversations/conversation.store.js +159 -0
- package/dist/server/core/conversations/conversation.store.js.map +1 -0
- package/dist/server/core/conversations/index.d.ts +8 -0
- package/dist/server/core/conversations/index.d.ts.map +1 -0
- package/dist/server/core/conversations/index.js +7 -0
- package/dist/server/core/conversations/index.js.map +1 -0
- package/dist/server/core/conversations/page-context.d.ts +35 -0
- package/dist/server/core/conversations/page-context.d.ts.map +1 -0
- package/dist/server/core/conversations/page-context.js +144 -0
- package/dist/server/core/conversations/page-context.js.map +1 -0
- package/dist/server/core/conversations/ports.d.ts +145 -0
- package/dist/server/core/conversations/ports.d.ts.map +1 -0
- package/dist/server/core/conversations/ports.js +2 -0
- package/dist/server/core/conversations/ports.js.map +1 -0
- package/dist/server/core/conversations/prompt.d.ts +46 -0
- package/dist/server/core/conversations/prompt.d.ts.map +1 -0
- package/dist/server/core/conversations/prompt.js +107 -0
- package/dist/server/core/conversations/prompt.js.map +1 -0
- package/dist/server/core/conversations/titles.d.ts +9 -0
- package/dist/server/core/conversations/titles.d.ts.map +1 -0
- package/dist/server/core/conversations/titles.js +20 -0
- package/dist/server/core/conversations/titles.js.map +1 -0
- package/dist/server/core/presets/index.d.ts +19 -0
- package/dist/server/core/presets/index.d.ts.map +1 -0
- package/dist/server/core/presets/index.js +28 -0
- package/dist/server/core/presets/index.js.map +1 -0
- package/dist/server/core/reports/index.d.ts +7 -0
- package/dist/server/core/reports/index.d.ts.map +1 -0
- package/dist/server/core/reports/index.js +7 -0
- package/dist/server/core/reports/index.js.map +1 -0
- package/dist/server/core/reports/metrics.d.ts +23 -0
- package/dist/server/core/reports/metrics.d.ts.map +1 -0
- package/dist/server/core/reports/metrics.js +60 -0
- package/dist/server/core/reports/metrics.js.map +1 -0
- package/dist/server/core/reports/model-usage.d.ts +35 -0
- package/dist/server/core/reports/model-usage.d.ts.map +1 -0
- package/dist/server/core/reports/model-usage.js +84 -0
- package/dist/server/core/reports/model-usage.js.map +1 -0
- package/dist/server/core/reports/prices.d.ts +35 -0
- package/dist/server/core/reports/prices.d.ts.map +1 -0
- package/dist/server/core/reports/prices.js +173 -0
- package/dist/server/core/reports/prices.js.map +1 -0
- package/dist/server/core/reports/report.service.d.ts +57 -0
- package/dist/server/core/reports/report.service.d.ts.map +1 -0
- package/dist/server/core/reports/report.service.js +310 -0
- package/dist/server/core/reports/report.service.js.map +1 -0
- package/dist/server/core/reports/usage.d.ts +50 -0
- package/dist/server/core/reports/usage.d.ts.map +1 -0
- package/dist/server/core/reports/usage.js +159 -0
- package/dist/server/core/reports/usage.js.map +1 -0
- package/dist/server/core/runs/availability.d.ts +20 -0
- package/dist/server/core/runs/availability.d.ts.map +1 -0
- package/dist/server/core/runs/availability.js +31 -0
- package/dist/server/core/runs/availability.js.map +1 -0
- package/dist/server/core/runs/claim.d.ts +172 -0
- package/dist/server/core/runs/claim.d.ts.map +1 -0
- package/dist/server/core/runs/claim.js +750 -0
- package/dist/server/core/runs/claim.js.map +1 -0
- package/dist/server/core/runs/cli-package.d.ts +16 -0
- package/dist/server/core/runs/cli-package.d.ts.map +1 -0
- package/dist/server/core/runs/cli-package.js +18 -0
- package/dist/server/core/runs/cli-package.js.map +1 -0
- package/dist/server/core/runs/extensions.d.ts +129 -0
- package/dist/server/core/runs/extensions.d.ts.map +1 -0
- package/dist/server/core/runs/extensions.js +184 -0
- package/dist/server/core/runs/extensions.js.map +1 -0
- package/dist/server/core/runs/index.d.ts +16 -0
- package/dist/server/core/runs/index.d.ts.map +1 -0
- package/dist/server/core/runs/index.js +15 -0
- package/dist/server/core/runs/index.js.map +1 -0
- package/dist/server/core/runs/lifecycle.d.ts +56 -0
- package/dist/server/core/runs/lifecycle.d.ts.map +1 -0
- package/dist/server/core/runs/lifecycle.js +348 -0
- package/dist/server/core/runs/lifecycle.js.map +1 -0
- package/dist/server/core/runs/policy.d.ts +33 -0
- package/dist/server/core/runs/policy.d.ts.map +1 -0
- package/dist/server/core/runs/policy.js +38 -0
- package/dist/server/core/runs/policy.js.map +1 -0
- package/dist/server/core/runs/ports.d.ts +197 -0
- package/dist/server/core/runs/ports.d.ts.map +1 -0
- package/dist/server/core/runs/ports.js +33 -0
- package/dist/server/core/runs/ports.js.map +1 -0
- package/dist/server/core/runs/preview.d.ts +47 -0
- package/dist/server/core/runs/preview.d.ts.map +1 -0
- package/dist/server/core/runs/preview.js +104 -0
- package/dist/server/core/runs/preview.js.map +1 -0
- package/dist/server/core/runs/run-tokens.d.ts +21 -0
- package/dist/server/core/runs/run-tokens.d.ts.map +1 -0
- package/dist/server/core/runs/run-tokens.js +51 -0
- package/dist/server/core/runs/run-tokens.js.map +1 -0
- package/dist/server/core/runs/run.service.d.ts +167 -0
- package/dist/server/core/runs/run.service.d.ts.map +1 -0
- package/dist/server/core/runs/run.service.js +473 -0
- package/dist/server/core/runs/run.service.js.map +1 -0
- package/dist/server/core/runs/run.store.d.ts +186 -0
- package/dist/server/core/runs/run.store.d.ts.map +1 -0
- package/dist/server/core/runs/run.store.js +246 -0
- package/dist/server/core/runs/run.store.js.map +1 -0
- package/dist/server/core/runs/runner-view.d.ts +46 -0
- package/dist/server/core/runs/runner-view.d.ts.map +1 -0
- package/dist/server/core/runs/runner-view.js +119 -0
- package/dist/server/core/runs/runner-view.js.map +1 -0
- package/dist/server/core/runs/sweeper.d.ts +28 -0
- package/dist/server/core/runs/sweeper.d.ts.map +1 -0
- package/dist/server/core/runs/sweeper.js +199 -0
- package/dist/server/core/runs/sweeper.js.map +1 -0
- package/dist/server/core/runs/transitions.d.ts +41 -0
- package/dist/server/core/runs/transitions.d.ts.map +1 -0
- package/dist/server/core/runs/transitions.js +105 -0
- package/dist/server/core/runs/transitions.js.map +1 -0
- package/dist/server/core/runs/workload.d.ts +49 -0
- package/dist/server/core/runs/workload.d.ts.map +1 -0
- package/dist/server/core/runs/workload.js +281 -0
- package/dist/server/core/runs/workload.js.map +1 -0
- package/dist/server/core/runs/workspace.store.d.ts +23 -0
- package/dist/server/core/runs/workspace.store.d.ts.map +1 -0
- package/dist/server/core/runs/workspace.store.js +77 -0
- package/dist/server/core/runs/workspace.store.js.map +1 -0
- package/dist/server/core/skills/blobs.d.ts +65 -0
- package/dist/server/core/skills/blobs.d.ts.map +1 -0
- package/dist/server/core/skills/blobs.js +212 -0
- package/dist/server/core/skills/blobs.js.map +1 -0
- package/dist/server/core/skills/bundle.d.ts +27 -0
- package/dist/server/core/skills/bundle.d.ts.map +1 -0
- package/dist/server/core/skills/bundle.js +71 -0
- package/dist/server/core/skills/bundle.js.map +1 -0
- package/dist/server/core/skills/index.d.ts +6 -0
- package/dist/server/core/skills/index.d.ts.map +1 -0
- package/dist/server/core/skills/index.js +6 -0
- package/dist/server/core/skills/index.js.map +1 -0
- package/dist/server/core/skills/skill.service.d.ts +105 -0
- package/dist/server/core/skills/skill.service.d.ts.map +1 -0
- package/dist/server/core/skills/skill.service.js +625 -0
- package/dist/server/core/skills/skill.service.js.map +1 -0
- package/dist/server/core/skills/skill.store.d.ts +50 -0
- package/dist/server/core/skills/skill.store.d.ts.map +1 -0
- package/dist/server/core/skills/skill.store.js +58 -0
- package/dist/server/core/skills/skill.store.js.map +1 -0
- package/dist/server/core/skills/zip.d.ts +13 -0
- package/dist/server/core/skills/zip.d.ts.map +1 -0
- package/dist/server/core/skills/zip.js +126 -0
- package/dist/server/core/skills/zip.js.map +1 -0
- package/dist/server/core/variables/index.d.ts +2 -0
- package/dist/server/core/variables/index.d.ts.map +1 -0
- package/dist/server/core/variables/index.js +2 -0
- package/dist/server/core/variables/index.js.map +1 -0
- package/dist/server/core/variables/variable.service.d.ts +83 -0
- package/dist/server/core/variables/variable.service.d.ts.map +1 -0
- package/dist/server/core/variables/variable.service.js +199 -0
- package/dist/server/core/variables/variable.service.js.map +1 -0
- package/dist/server/distribution/dist.service.d.ts +50 -0
- package/dist/server/distribution/dist.service.d.ts.map +1 -0
- package/dist/server/distribution/dist.service.js +201 -0
- package/dist/server/distribution/dist.service.js.map +1 -0
- package/dist/server/distribution/download-tokens.d.ts +30 -0
- package/dist/server/distribution/download-tokens.d.ts.map +1 -0
- package/dist/server/distribution/download-tokens.js +82 -0
- package/dist/server/distribution/download-tokens.js.map +1 -0
- package/dist/server/distribution/index.d.ts +14 -0
- package/dist/server/distribution/index.d.ts.map +1 -0
- package/dist/server/distribution/index.js +28 -0
- package/dist/server/distribution/index.js.map +1 -0
- package/dist/server/index.d.ts +4 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +4 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/jobs/index.d.ts +5 -0
- package/dist/server/jobs/index.d.ts.map +1 -0
- package/dist/server/jobs/index.js +5 -0
- package/dist/server/jobs/index.js.map +1 -0
- package/dist/server/jobs/job.service.d.ts +152 -0
- package/dist/server/jobs/job.service.d.ts.map +1 -0
- package/dist/server/jobs/job.service.js +713 -0
- package/dist/server/jobs/job.service.js.map +1 -0
- package/dist/server/jobs/job.store.d.ts +74 -0
- package/dist/server/jobs/job.store.d.ts.map +1 -0
- package/dist/server/jobs/job.store.js +110 -0
- package/dist/server/jobs/job.store.js.map +1 -0
- package/dist/server/jobs/job.transitions.d.ts +41 -0
- package/dist/server/jobs/job.transitions.d.ts.map +1 -0
- package/dist/server/jobs/job.transitions.js +112 -0
- package/dist/server/jobs/job.transitions.js.map +1 -0
- package/dist/server/jobs/registry.d.ts +53 -0
- package/dist/server/jobs/registry.d.ts.map +1 -0
- package/dist/server/jobs/registry.js +32 -0
- package/dist/server/jobs/registry.js.map +1 -0
- package/dist/server/jobs/spec.d.ts +45 -0
- package/dist/server/jobs/spec.d.ts.map +1 -0
- package/dist/server/jobs/spec.js +106 -0
- package/dist/server/jobs/spec.js.map +1 -0
- package/dist/server/kernel/clock.d.ts +10 -0
- package/dist/server/kernel/clock.d.ts.map +1 -0
- package/dist/server/kernel/clock.js +10 -0
- package/dist/server/kernel/clock.js.map +1 -0
- package/dist/server/kernel/crypto.d.ts +18 -0
- package/dist/server/kernel/crypto.d.ts.map +1 -0
- package/dist/server/kernel/crypto.js +25 -0
- package/dist/server/kernel/crypto.js.map +1 -0
- package/dist/server/kernel/errors.d.ts +16 -0
- package/dist/server/kernel/errors.d.ts.map +1 -0
- package/dist/server/kernel/errors.js +44 -0
- package/dist/server/kernel/errors.js.map +1 -0
- package/dist/server/kernel/events.d.ts +122 -0
- package/dist/server/kernel/events.d.ts.map +1 -0
- package/dist/server/kernel/events.js +32 -0
- package/dist/server/kernel/events.js.map +1 -0
- package/dist/server/kernel/http.d.ts +23 -0
- package/dist/server/kernel/http.d.ts.map +1 -0
- package/dist/server/kernel/http.js +56 -0
- package/dist/server/kernel/http.js.map +1 -0
- package/dist/server/kernel/ids.d.ts +9 -0
- package/dist/server/kernel/ids.d.ts.map +1 -0
- package/dist/server/kernel/ids.js +5 -0
- package/dist/server/kernel/ids.js.map +1 -0
- package/dist/server/kernel/people.d.ts +28 -0
- package/dist/server/kernel/people.d.ts.map +1 -0
- package/dist/server/kernel/people.js +30 -0
- package/dist/server/kernel/people.js.map +1 -0
- package/dist/server/kernel/redaction.d.ts +25 -0
- package/dist/server/kernel/redaction.d.ts.map +1 -0
- package/dist/server/kernel/redaction.js +39 -0
- package/dist/server/kernel/redaction.js.map +1 -0
- package/dist/server/kernel/scopes.d.ts +34 -0
- package/dist/server/kernel/scopes.d.ts.map +1 -0
- package/dist/server/kernel/scopes.js +47 -0
- package/dist/server/kernel/scopes.js.map +1 -0
- package/dist/server/kernel/secrets.d.ts +12 -0
- package/dist/server/kernel/secrets.d.ts.map +1 -0
- package/dist/server/kernel/secrets.js +20 -0
- package/dist/server/kernel/secrets.js.map +1 -0
- package/dist/server/kernel/tx.d.ts +18 -0
- package/dist/server/kernel/tx.d.ts.map +1 -0
- package/dist/server/kernel/tx.js +15 -0
- package/dist/server/kernel/tx.js.map +1 -0
- package/dist/server/kernel/values.d.ts +19 -0
- package/dist/server/kernel/values.d.ts.map +1 -0
- package/dist/server/kernel/values.js +64 -0
- package/dist/server/kernel/values.js.map +1 -0
- package/dist/server/locales/en-US.d.ts +4 -0
- package/dist/server/locales/en-US.d.ts.map +1 -0
- package/dist/server/locales/en-US.js +6 -0
- package/dist/server/locales/en-US.js.map +1 -0
- package/dist/server/locales/index.d.ts +4 -0
- package/dist/server/locales/index.d.ts.map +1 -0
- package/dist/server/locales/index.js +6 -0
- package/dist/server/locales/index.js.map +1 -0
- package/dist/server/locales/zh-CN.d.ts +4 -0
- package/dist/server/locales/zh-CN.d.ts.map +1 -0
- package/dist/server/locales/zh-CN.js +6 -0
- package/dist/server/locales/zh-CN.js.map +1 -0
- package/dist/server/online/cli-command.d.ts +20 -0
- package/dist/server/online/cli-command.d.ts.map +1 -0
- package/dist/server/online/cli-command.js +345 -0
- package/dist/server/online/cli-command.js.map +1 -0
- package/dist/server/online/consult-tool.d.ts +54 -0
- package/dist/server/online/consult-tool.d.ts.map +1 -0
- package/dist/server/online/consult-tool.js +177 -0
- package/dist/server/online/consult-tool.js.map +1 -0
- package/dist/server/online/executor.d.ts +83 -0
- package/dist/server/online/executor.d.ts.map +1 -0
- package/dist/server/online/executor.js +714 -0
- package/dist/server/online/executor.js.map +1 -0
- package/dist/server/online/gateway.d.ts +240 -0
- package/dist/server/online/gateway.d.ts.map +1 -0
- package/dist/server/online/gateway.js +552 -0
- package/dist/server/online/gateway.js.map +1 -0
- package/dist/server/online/index.d.ts +10 -0
- package/dist/server/online/index.d.ts.map +1 -0
- package/dist/server/online/index.js +10 -0
- package/dist/server/online/index.js.map +1 -0
- package/dist/server/online/providers.d.ts +58 -0
- package/dist/server/online/providers.d.ts.map +1 -0
- package/dist/server/online/providers.js +370 -0
- package/dist/server/online/providers.js.map +1 -0
- package/dist/server/online/routes.d.ts +9 -0
- package/dist/server/online/routes.d.ts.map +1 -0
- package/dist/server/online/routes.js +197 -0
- package/dist/server/online/routes.js.map +1 -0
- package/dist/server/online/sandbox.d.ts +32 -0
- package/dist/server/online/sandbox.d.ts.map +1 -0
- package/dist/server/online/sandbox.js +246 -0
- package/dist/server/online/sandbox.js.map +1 -0
- package/dist/server/online/scripted.d.ts +12 -0
- package/dist/server/online/scripted.d.ts.map +1 -0
- package/dist/server/online/scripted.js +176 -0
- package/dist/server/online/scripted.js.map +1 -0
- package/dist/server/online/services.d.ts +49 -0
- package/dist/server/online/services.d.ts.map +1 -0
- package/dist/server/online/services.js +444 -0
- package/dist/server/online/services.js.map +1 -0
- package/dist/server/online/tools.d.ts +17 -0
- package/dist/server/online/tools.d.ts.map +1 -0
- package/dist/server/online/tools.js +31 -0
- package/dist/server/online/tools.js.map +1 -0
- package/dist/server/plugin.d.ts +4 -0
- package/dist/server/plugin.d.ts.map +1 -0
- package/dist/server/plugin.js +20 -0
- package/dist/server/plugin.js.map +1 -0
- package/dist/server/providers/agents.d.ts +84 -0
- package/dist/server/providers/agents.d.ts.map +1 -0
- package/dist/server/providers/agents.js +303 -0
- package/dist/server/providers/agents.js.map +1 -0
- package/dist/server/providers/authorization.d.ts +17 -0
- package/dist/server/providers/authorization.d.ts.map +1 -0
- package/dist/server/providers/authorization.js +60 -0
- package/dist/server/providers/authorization.js.map +1 -0
- package/dist/server/providers/index.d.ts +4 -0
- package/dist/server/providers/index.d.ts.map +1 -0
- package/dist/server/providers/index.js +10 -0
- package/dist/server/providers/index.js.map +1 -0
- package/dist/server/providers/runners.d.ts +19 -0
- package/dist/server/providers/runners.d.ts.map +1 -0
- package/dist/server/providers/runners.js +143 -0
- package/dist/server/providers/runners.js.map +1 -0
- package/dist/server/routes/admin.d.ts +27 -0
- package/dist/server/routes/admin.d.ts.map +1 -0
- package/dist/server/routes/admin.js +1424 -0
- package/dist/server/routes/admin.js.map +1 -0
- package/dist/server/routes/chat.d.ts +9 -0
- package/dist/server/routes/chat.d.ts.map +1 -0
- package/dist/server/routes/chat.js +570 -0
- package/dist/server/routes/chat.js.map +1 -0
- package/dist/server/routes/index.d.ts +6 -0
- package/dist/server/routes/index.d.ts.map +1 -0
- package/dist/server/routes/index.js +100 -0
- package/dist/server/routes/index.js.map +1 -0
- package/dist/server/routes/openapi.d.ts +30 -0
- package/dist/server/routes/openapi.d.ts.map +1 -0
- package/dist/server/routes/openapi.js +101 -0
- package/dist/server/routes/openapi.js.map +1 -0
- package/dist/server/routes/roster.d.ts +6 -0
- package/dist/server/routes/roster.d.ts.map +1 -0
- package/dist/server/routes/roster.js +52 -0
- package/dist/server/routes/roster.js.map +1 -0
- package/dist/server/routes/run.d.ts +10 -0
- package/dist/server/routes/run.d.ts.map +1 -0
- package/dist/server/routes/run.js +91 -0
- package/dist/server/routes/run.js.map +1 -0
- package/dist/server/routes/runners/admin.d.ts +20 -0
- package/dist/server/routes/runners/admin.d.ts.map +1 -0
- package/dist/server/routes/runners/admin.js +280 -0
- package/dist/server/routes/runners/admin.js.map +1 -0
- package/dist/server/routes/runners/dist.d.ts +20 -0
- package/dist/server/routes/runners/dist.d.ts.map +1 -0
- package/dist/server/routes/runners/dist.js +190 -0
- package/dist/server/routes/runners/dist.js.map +1 -0
- package/dist/server/routes/runners/install.d.ts +23 -0
- package/dist/server/routes/runners/install.d.ts.map +1 -0
- package/dist/server/routes/runners/install.js +352 -0
- package/dist/server/routes/runners/install.js.map +1 -0
- package/dist/server/routes/runners/runner.d.ts +9 -0
- package/dist/server/routes/runners/runner.d.ts.map +1 -0
- package/dist/server/routes/runners/runner.js +303 -0
- package/dist/server/routes/runners/runner.js.map +1 -0
- package/dist/server/routes/runners/runs.d.ts +5 -0
- package/dist/server/routes/runners/runs.d.ts.map +1 -0
- package/dist/server/routes/runners/runs.js +74 -0
- package/dist/server/routes/runners/runs.js.map +1 -0
- package/dist/server/routes/schemas.d.ts +220 -0
- package/dist/server/routes/schemas.d.ts.map +1 -0
- package/dist/server/routes/schemas.js +1040 -0
- package/dist/server/routes/schemas.js.map +1 -0
- package/dist/server/runners/index.d.ts +13 -0
- package/dist/server/runners/index.d.ts.map +1 -0
- package/dist/server/runners/index.js +6 -0
- package/dist/server/runners/index.js.map +1 -0
- package/dist/server/runners/runner.service.d.ts +77 -0
- package/dist/server/runners/runner.service.d.ts.map +1 -0
- package/dist/server/runners/runner.service.js +384 -0
- package/dist/server/runners/runner.service.js.map +1 -0
- package/dist/server/runners/runner.store.d.ts +74 -0
- package/dist/server/runners/runner.store.d.ts.map +1 -0
- package/dist/server/runners/runner.store.js +121 -0
- package/dist/server/runners/runner.store.js.map +1 -0
- package/dist/server/runners/signal.d.ts +13 -0
- package/dist/server/runners/signal.d.ts.map +1 -0
- package/dist/server/runners/signal.js +30 -0
- package/dist/server/runners/signal.js.map +1 -0
- package/dist/server/runners/slots.d.ts +26 -0
- package/dist/server/runners/slots.d.ts.map +1 -0
- package/dist/server/runners/slots.js +27 -0
- package/dist/server/runners/slots.js.map +1 -0
- package/dist/server/runners/sweeper.d.ts +21 -0
- package/dist/server/runners/sweeper.d.ts.map +1 -0
- package/dist/server/runners/sweeper.js +19 -0
- package/dist/server/runners/sweeper.js.map +1 -0
- package/dist/server/secrets-stores.d.ts +8 -0
- package/dist/server/secrets-stores.d.ts.map +1 -0
- package/dist/server/secrets-stores.js +43 -0
- package/dist/server/secrets-stores.js.map +1 -0
- package/dist/server/testing.d.ts +16 -0
- package/dist/server/testing.d.ts.map +1 -0
- package/dist/server/testing.js +24 -0
- package/dist/server/testing.js.map +1 -0
- package/dist/server/tokens.d.ts +39 -0
- package/dist/server/tokens.d.ts.map +1 -0
- package/dist/server/tokens.js +8 -0
- package/dist/server/tokens.js.map +1 -0
- package/dist/server/vectors/index.d.ts +7 -0
- package/dist/server/vectors/index.d.ts.map +1 -0
- package/dist/server/vectors/index.js +6 -0
- package/dist/server/vectors/index.js.map +1 -0
- package/dist/server/vectors/naming.d.ts +6 -0
- package/dist/server/vectors/naming.d.ts.map +1 -0
- package/dist/server/vectors/naming.js +15 -0
- package/dist/server/vectors/naming.js.map +1 -0
- package/dist/server/vectors/pgvector.d.ts +26 -0
- package/dist/server/vectors/pgvector.d.ts.map +1 -0
- package/dist/server/vectors/pgvector.js +346 -0
- package/dist/server/vectors/pgvector.js.map +1 -0
- package/dist/server/vectors/sqlite-vec.d.ts +14 -0
- package/dist/server/vectors/sqlite-vec.d.ts.map +1 -0
- package/dist/server/vectors/sqlite-vec.js +286 -0
- package/dist/server/vectors/sqlite-vec.js.map +1 -0
- package/dist/server/vectors/types.d.ts +256 -0
- package/dist/server/vectors/types.d.ts.map +1 -0
- package/dist/server/vectors/types.js +2 -0
- package/dist/server/vectors/types.js.map +1 -0
- package/dist/server/vectors/vectors.d.ts +34 -0
- package/dist/server/vectors/vectors.d.ts.map +1 -0
- package/dist/server/vectors/vectors.js +866 -0
- package/dist/server/vectors/vectors.js.map +1 -0
- package/dist/server/vendor/THIRD_PARTY_LICENSES.txt +782 -0
- package/dist/server/vendor/just-bash.d.ts +83 -0
- package/dist/server/vendor/just-bash.js +2102 -0
- package/dist/shared/access.d.ts +154 -0
- package/dist/shared/access.d.ts.map +1 -0
- package/dist/shared/access.js +166 -0
- package/dist/shared/access.js.map +1 -0
- package/dist/shared/agents.d.ts +284 -0
- package/dist/shared/agents.d.ts.map +1 -0
- package/dist/shared/agents.js +143 -0
- package/dist/shared/agents.js.map +1 -0
- package/dist/shared/briefs.d.ts +46 -0
- package/dist/shared/briefs.d.ts.map +1 -0
- package/dist/shared/briefs.js +10 -0
- package/dist/shared/briefs.js.map +1 -0
- package/dist/shared/conversations.d.ts +623 -0
- package/dist/shared/conversations.d.ts.map +1 -0
- package/dist/shared/conversations.js +182 -0
- package/dist/shared/conversations.js.map +1 -0
- package/dist/shared/i18n.d.ts +10 -0
- package/dist/shared/i18n.d.ts.map +1 -0
- package/dist/shared/i18n.js +2 -0
- package/dist/shared/i18n.js.map +1 -0
- package/dist/shared/jobs.d.ts +73 -0
- package/dist/shared/jobs.d.ts.map +1 -0
- package/dist/shared/jobs.js +3 -0
- package/dist/shared/jobs.js.map +1 -0
- package/dist/shared/locales/access.en-US.d.ts +47 -0
- package/dist/shared/locales/access.en-US.d.ts.map +1 -0
- package/dist/shared/locales/access.en-US.js +51 -0
- package/dist/shared/locales/access.en-US.js.map +1 -0
- package/dist/shared/locales/access.zh-CN.d.ts +4 -0
- package/dist/shared/locales/access.zh-CN.d.ts.map +1 -0
- package/dist/shared/locales/access.zh-CN.js +51 -0
- package/dist/shared/locales/access.zh-CN.js.map +1 -0
- package/dist/shared/models.d.ts +196 -0
- package/dist/shared/models.d.ts.map +1 -0
- package/dist/shared/models.js +142 -0
- package/dist/shared/models.js.map +1 -0
- package/dist/shared/presets.d.ts +30 -0
- package/dist/shared/presets.d.ts.map +1 -0
- package/dist/shared/presets.js +2 -0
- package/dist/shared/presets.js.map +1 -0
- package/dist/shared/realtime.d.ts +27 -0
- package/dist/shared/realtime.d.ts.map +1 -0
- package/dist/shared/realtime.js +7 -0
- package/dist/shared/realtime.js.map +1 -0
- package/dist/shared/reports.d.ts +293 -0
- package/dist/shared/reports.d.ts.map +1 -0
- package/dist/shared/reports.js +135 -0
- package/dist/shared/reports.js.map +1 -0
- package/dist/shared/runners.d.ts +246 -0
- package/dist/shared/runners.d.ts.map +1 -0
- package/dist/shared/runners.js +90 -0
- package/dist/shared/runners.js.map +1 -0
- package/dist/shared/runs.d.ts +205 -0
- package/dist/shared/runs.d.ts.map +1 -0
- package/dist/shared/runs.js +41 -0
- package/dist/shared/runs.js.map +1 -0
- package/dist/shared/skill-markdown.d.ts +45 -0
- package/dist/shared/skill-markdown.d.ts.map +1 -0
- package/dist/shared/skill-markdown.js +131 -0
- package/dist/shared/skill-markdown.js.map +1 -0
- package/dist/shared/skills.d.ts +155 -0
- package/dist/shared/skills.d.ts.map +1 -0
- package/dist/shared/skills.js +61 -0
- package/dist/shared/skills.js.map +1 -0
- package/dist/shared/variables.d.ts +51 -0
- package/dist/shared/variables.d.ts.map +1 -0
- package/dist/shared/variables.js +46 -0
- package/dist/shared/variables.js.map +1 -0
- package/dist/shared/vocabulary.d.ts +44 -0
- package/dist/shared/vocabulary.d.ts.map +1 -0
- package/dist/shared/vocabulary.js +2 -0
- package/dist/shared/vocabulary.js.map +1 -0
- package/package.json +202 -3
- package/skills/nocobase-app-plugin-agents/SKILL.md +34 -0
- package/skills/nocobase-app-plugin-agents/references/distribution.md +62 -0
- package/skills/nocobase-app-plugin-agents/references/extension-points.md +33 -0
- package/skills/nocobase-app-plugin-agents/references/online-agents.md +31 -0
- package/skills/nocobase-app-plugin-agents/references/runners.md +32 -0
- package/skills/nocobase-app-plugin-agents/references/setup-and-config.md +60 -0
- package/skills/nocobase-app-plugin-agents/references/variables-skills-usage.md +21 -0
- package/skills/nocobase-app-plugin-agents/references/verification-and-troubleshooting.md +46 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# @nocobase/app-plugin-agents
|
|
2
|
+
|
|
3
|
+
## 0.1.0-beta.1
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 476f988: A call to an OpenCode base URL (Zen or Go) carries `x-opencode-session` automatically, as OpenCode Go requires: the same session id for every model call of a conversation and a new one for each call outside any, so no service setting is needed. Every request to a provider names the plugin first in its user agent (`nocobase-agents/<version>`). The service form says which provider type serves which of OpenCode's model families.
|
|
8
|
+
- b8df35c: Limit a runner's concurrent runs per coding tool, beside its total slots, so a machine with Claude Code and Codex can run, say, at most two Claude runs and one Codex run at once.
|
|
9
|
+
|
|
10
|
+
- `@nocobase/agent-protocol`: optional `toolSlots` on registration, `load.tools` on the heartbeat and `tools` on the claim (`ToolSlots`, `ToolLoad`). They are additions within protocol 7: a side that does not know them ignores them.
|
|
11
|
+
- `@nocobase/agent-runner`: `register --slots` and `start --slots` take a total, limits per tool, or both (`3,claude=2,codex=1`). The limits hold across every application the machine serves; each claim says how many runs of each limited tool the runner can still take, and the heartbeat reports them.
|
|
12
|
+
- `@nocobase/app-plugin-agents`: runners and registration tokens keep `toolSlots`, set on registration or on the runtime's settings and in the "Add runtime" dialog. A claim takes a run only when both the runner's total and the run's tool have room, using the agent's next tool while its first is full and passing over a run none of whose tools has room. A queued run waiting on a full tool reads `toolSlotsFull` rather than `runnersBusy`, and the runtimes page shows the runs by tool against each limit. The migration `202610080001_ag_add_runner_tool_slots` adds the columns. A runtime's settings list its coding tools in one table (on or off, sign-in, limit, runs now), and a tool's switch is now saved with "Save" together with the rest of the form instead of at once. The "Add runtime" dialog keeps the limits per tool under "Advanced" for the checked tools, and its button reads "Generate install command". A limit above the max concurrent runs is pointed out, since the total bounds it.
|
|
13
|
+
- `@nocobase/app-plugin-projects`: words the `toolSlotsFull` wait reason.
|
|
14
|
+
|
|
15
|
+
Every field this adds to the shared types is optional, so code that builds these objects itself needs no change: `Runner.toolSlots` and `Runner.toolLoad`, `RunnerSummary.activeByTool`, `RegistrationToken.toolSlots`, and `HeldItems.byTool` of `Slots`. The server always fills them in. A missing field reads as no limit per tool and nothing known about its use, and the runtimes page then shows no use per tool. `RUN_WAIT_REASONS` gains `toolSlotsFull`, so a `Record` keyed by every `RunWaitReason` needs an entry for it.
|
|
16
|
+
|
|
17
|
+
Applications using a copied UI Library `agent-queue` block must merge the `toolSlotsFull` reason and wording changes from `ui-library/registry/agents/agent-queue` into their copy. This PR updates the registry source, including an optional label with an English fallback, but a plugin upgrade does not update installed source. Add `queue.reasons.toolSlotsFull` to the application's translations to show the new reason in its locale.
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- 220700e: Size the Y axis of the usage page's daily trend chart to its tick labels, so cost amounts with a currency prefix are no longer clipped at the left edge.
|
|
22
|
+
- Updated dependencies [bb8484b]
|
|
23
|
+
- Updated dependencies [dc91aab]
|
|
24
|
+
- Updated dependencies [b8df35c]
|
|
25
|
+
- @nocobase/app-client@2.0.0-beta.2
|
|
26
|
+
- @nocobase/app-plugin-authentication@2.0.0-beta.2
|
|
27
|
+
- @nocobase/app-plugin-file@1.0.0-beta.20
|
|
28
|
+
- @nocobase/agent-protocol@0.1.0-beta.1
|
|
29
|
+
- @nocobase/app-cli@1.0.0-beta.14
|
|
30
|
+
- @nocobase/app-server@2.0.0-beta.1
|
|
31
|
+
- @nocobase/authorization@1.0.0-beta.12
|
|
32
|
+
- @nocobase/db@1.0.0-beta.18
|
|
33
|
+
- @nocobase/i18n@1.0.0-beta.5
|
|
34
|
+
- @nocobase/markdown-mermaid@0.1.0-beta.0
|
|
35
|
+
- @nocobase/service-provider@0.0.2-beta.1
|
|
36
|
+
- @nocobase/app-plugin-authorization@1.0.0-beta.25
|
|
37
|
+
|
|
38
|
+
## 0.1.0-beta.0
|
|
39
|
+
|
|
40
|
+
### Minor Changes
|
|
41
|
+
|
|
42
|
+
- 68d4feb: Add `@nocobase/app-plugin-agents`: agents for NocoBase applications. Work agents drive a coding tool (Claude Code, Codex, OpenCode or Pi) on the runners people connect, which the plugin registers, hands runs to through a long-poll claim with slots, leases and a sweeper, and serves the runner and the application's CLI to as tarballs with a one-line install script. Online agents call a model of the model services the plugin keeps (OpenAI, Anthropic, Google, DeepSeek and other providers through the AI SDK) and run on the server with a sandboxed shell, their skills and the application's CLI. Both share runs, people's conversations with agents (with attachments and page context), transcripts, skills and variables, business-action permissions bounded by the person who woke the agent, consultations between online agents, usage and cost reports, and an embedding, rerank and text gateway for the application's own model calls. The application assembles it through extension points (subjects, scopes, business actions, presets, the action gate, conversation sources) and its CLI commands come from its own routes through `cliRoute()`. The package ships the `nocobase-app-plugin-agents` Skill.
|
|
43
|
+
|
|
44
|
+
### Patch Changes
|
|
45
|
+
|
|
46
|
+
- Updated dependencies [37c8d20]
|
|
47
|
+
- Updated dependencies [37c8d20]
|
|
48
|
+
- Updated dependencies [37c8d20]
|
|
49
|
+
- Updated dependencies [37c8d20]
|
|
50
|
+
- Updated dependencies [37c8d20]
|
|
51
|
+
- Updated dependencies [37c8d20]
|
|
52
|
+
- Updated dependencies [37c8d20]
|
|
53
|
+
- Updated dependencies [37c8d20]
|
|
54
|
+
- Updated dependencies [37c8d20]
|
|
55
|
+
- Updated dependencies [bc1e83f]
|
|
56
|
+
- Updated dependencies [bc1e83f]
|
|
57
|
+
- Updated dependencies [bc1e83f]
|
|
58
|
+
- Updated dependencies [bc1e83f]
|
|
59
|
+
- Updated dependencies [37c8d20]
|
|
60
|
+
- Updated dependencies [37c8d20]
|
|
61
|
+
- Updated dependencies [bc1e83f]
|
|
62
|
+
- Updated dependencies [bc1e83f]
|
|
63
|
+
- Updated dependencies [37c8d20]
|
|
64
|
+
- Updated dependencies [37c8d20]
|
|
65
|
+
- Updated dependencies [37c8d20]
|
|
66
|
+
- Updated dependencies [37c8d20]
|
|
67
|
+
- Updated dependencies [37c8d20]
|
|
68
|
+
- Updated dependencies [37c8d20]
|
|
69
|
+
- Updated dependencies [bc1e83f]
|
|
70
|
+
- Updated dependencies [be0fbbd]
|
|
71
|
+
- Updated dependencies [bc1e83f]
|
|
72
|
+
- Updated dependencies [3883eec]
|
|
73
|
+
- Updated dependencies [6993158]
|
|
74
|
+
- Updated dependencies [a6796d9]
|
|
75
|
+
- Updated dependencies [37c8d20]
|
|
76
|
+
- Updated dependencies [37c8d20]
|
|
77
|
+
- Updated dependencies [3f1b78f]
|
|
78
|
+
- Updated dependencies [8885ce4]
|
|
79
|
+
- Updated dependencies [0151805]
|
|
80
|
+
- Updated dependencies [bc1e83f]
|
|
81
|
+
- Updated dependencies [37c8d20]
|
|
82
|
+
- Updated dependencies [37c8d20]
|
|
83
|
+
- Updated dependencies [e538d12]
|
|
84
|
+
- Updated dependencies [bc1e83f]
|
|
85
|
+
- Updated dependencies [bc1e83f]
|
|
86
|
+
- Updated dependencies [37c8d20]
|
|
87
|
+
- Updated dependencies [bc1e83f]
|
|
88
|
+
- Updated dependencies [37c8d20]
|
|
89
|
+
- Updated dependencies [37c8d20]
|
|
90
|
+
- Updated dependencies [bc1e83f]
|
|
91
|
+
- Updated dependencies [6162033]
|
|
92
|
+
- Updated dependencies [37c8d20]
|
|
93
|
+
- @nocobase/agent-protocol@0.1.0-beta.0
|
|
94
|
+
- @nocobase/app-cli-client@0.1.0-beta.0
|
|
95
|
+
- @nocobase/markdown-mermaid@0.1.0-beta.0
|
|
96
|
+
- @nocobase/app-cli@1.0.0-beta.14
|
|
97
|
+
- @nocobase/app-client@2.0.0-beta.1
|
|
98
|
+
- @nocobase/app-server@2.0.0-beta.1
|
|
99
|
+
- @nocobase/app-plugin-authentication@2.0.0-beta.1
|
|
100
|
+
- @nocobase/authorization@1.0.0-beta.12
|
|
101
|
+
- @nocobase/app-plugin-authorization@1.0.0-beta.25
|
|
102
|
+
- @nocobase/db@1.0.0-beta.18
|
|
103
|
+
- @nocobase/app-plugin-file@1.0.0-beta.19
|
|
104
|
+
- @nocobase/i18n@1.0.0-beta.5
|
|
105
|
+
- @nocobase/service-provider@0.0.2-beta.1
|
|
106
|
+
|
|
107
|
+
## 0.0.1
|
|
108
|
+
|
|
109
|
+
Initial version.
|
package/README.md
CHANGED
|
@@ -1,3 +1,195 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @nocobase/app-plugin-agents
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Agents for NocoBase applications: the agents people configure, their runs, and people's conversations with agents. Runner agents run on the runners people connect (each a runtime: a runner on a server, a VM or someone's own device), which this plugin registers, hands work to and serves the runner and CLI tarballs for; the wire protocol runners and the application's CLI speak is `@nocobase/agent-protocol`, and the runner is `@nocobase/agent-runner` (`nocobase-runner`).
|
|
4
|
+
|
|
5
|
+
An agent is one of two types, chosen when it is created and never changed. A **work** agent drives a coding tool on a runner, in a working directory. An **online** agent talks to a model of one of the model services this plugin keeps and is run by the application itself, on the server: it needs no runner, answers in seconds, and its tools are the application's commands. Both share everything else: runs, conversations, transcripts, permissions, usage and reports.
|
|
6
|
+
|
|
7
|
+
The plugin knows no domain of its own beyond conversations: what agents work on (subjects), the scopes variables are kept in, the business actions an agent may be given, the presets to start an agent from and the report pages are the application's, which contributes them through the extension points below; the CLI's business commands are the application's own routes, each described with `cliRoute()`. The assembling application does it in `server/agents` and `client/agents`. With nothing contributed, the plugin still runs agents in conversations on runners, with its own commands.
|
|
8
|
+
|
|
9
|
+
## What it does
|
|
10
|
+
|
|
11
|
+
- **Agents** (`agAgents`): who an agent is and how it works: its name, description and avatar, optional instructions (the last layer of its brief, preferences that never override the rules or the task), its type (`runner` or `online`, immutable: a patch naming one is refused), the business actions it may perform, who may wake it and how many attempts a run gets. Which tool or model it works with is an ordered list, `modelEntries`, whose first entry is its default, each entry with its own reasoning effort (`effort`, null for the default). A runner agent's entries pair a coding tool with a model (null for the tool's default) and an effort its tool takes (`TOOL_EFFORTS` of `@nocobase/agent-protocol`), and it has its skills, its tool policy, its own variables, optionally the runners it may run on, and how many runs it may have at once; it has at least one entry. An online agent's entries pair a model service with one of its models (an entry is checked against what the model catalog offers when it is added) and an effort among `ONLINE_EFFORTS`, and it has none of a runner's settings; an online agent with no entry is not configured yet: it is listed as needing a model and left out of `GET /api/agents/available` until it has one; it is offered no business action meant for runner agents only (`AgentActionOption.types`). Its configuration carries a `revision`, raised by every change (editing, archiving, restoring): `PATCH /api/agents/:agentId` names the revision it was made against (`expectedRevision`) and is refused with 409 `REVISION_CONFLICT` (`metadata.revision` the current one) when someone saved the agent since, and a patch that changes nothing raises nothing. Every change is kept in its history (`agAgentChanges`, `GET /api/agents/:agentId/history`, with `afterRevision` for what came after a revision): who, when, and the fields that changed with their values before and after, except its variables, which are named with whether they were added, changed or removed, never valued. Archiving an agent withdraws its queued runs at once; archiving and deleting it announce `agent.removed`.
|
|
12
|
+
- **Runners** (`agRunners`), shown as runtimes: registered with a one-time token (`POST /api/agents/runners/registrationTokens`, or `pnpm nocobase agents runner-token`). Anyone may add a personal runner (`ownerOnly`: it runs only work its owner started) and later share it with the team; adding a team runner needs `agents.runners` manage. A runner reports its system, its features, its coding tools with versions and whether each is signed in, and what its owner's local policy lets it take (`policy`); it authenticates with its key (`agRunnerCredentials`), sends heartbeats and long-polls for work. Which of its coding tools it is offered work for is chosen on the web (`enabledTools`, null for every tool), carried from "Add runtime" on the registration token (`agRegistrationTokens`). A runner speaking a protocol this application does not serve is kept connected as `upgrade_required`: it gets no work, has what it holds released, and its owner is told once per protocol through the `notice` event (`runner_upgrade_required`; `notice.cleared` once it no longer holds). A runner whose owner can no longer act (`people.provide({ inactive })`) is refused with `RUNNER_OWNER_DISABLED`. A runner fits an agent's run only when its owner's local policy lets it take that agent's runs, on that subject, with those repositories; `availability` and the agents list count only such runners.
|
|
13
|
+
- **The claim**: one long-poll (`POST /api/agents/runners/claim?wait=true`) answers `jobs` and `runs` together, at most `free` items, from the runner's slots, which jobs and runs share (`slots`): jobs first. A heartbeat reconciles both, releasing what the server no longer thinks the runner holds and asking it to stop what was cancelled.
|
|
14
|
+
- **Jobs** (`agJobs`, `agJobEvents`): only for the off-by-default runner build method (such as an application's `acme.builds.method: runner`): a `build` (check out a commit, run an administrator's command, upload its outputs), of kinds the application registers (`jobs.register(kind, { validate, prepare, onEvent, onDone })`, then `jobs.enqueue`, `get` and `watch`). A runner takes a job only when it reports `jobs.build`, someone turned on "Takes build jobs" (`acceptJobs`), it is shared or belongs to who started the job, and its policy lets it check out the job's repository. Jobs retry `runnerOffline`, `leaseExpired`, `startTimeout`, `checkoutFailed` and `policyRefused` while attempts remain, and open the stored variables they name through this plugin's variables at claim, audited as delivered.
|
|
15
|
+
- **Distribution**: the application serves two products as standalone tarballs that bundle Node, one per platform (`server/distribution`): its CLI (`agents.cli.name`, such as `acme`) and the runner, `nocobase-runner` (`RUNNER_PRODUCT`). `pnpm nocobase cli build` of `@nocobase/app-cli` packs the CLI the application's `package.json` declares under `nocobase.cli`, and `cli build --runner` the runner, each into a directory of its own, `storage/runners/dist/<channel>/<product>/`, with a `manifest.json` of every file's SHA-256 and size, so CI builds them as separate artifacts mounted into storage. The install script installs the CLI under `~/.local/share/<cli>`: by default the CLI alone, with a download token any signed-in person mints (`POST /api/agents/dist/downloadTokens`, `agDownloadTokens`: the CLI for one platform, three downloads within 30 minutes), as `curl -fsSL <server>/api/agents/dist/installScript | sh -s -- --token <token>`; "Add runtime" shows the same line with `--runner --server <server>` and a registration token, which also installs `nocobase-runner` under `~/.local/share/nocobase-runner`, runs `nocobase-runner register` and `nocobase-runner service install` (an application that serves no CLI still gets its runtime). A token of the other kind fails before anything is installed. A runner reports the product it runs as on registration and every heartbeat (`agRunners.product`), and the heartbeat answer carries an `upgrade` notice when the channel serves a newer version of that product for the runner's platform; a runner that reports none (one from before) is offered no update, and the Runtimes page says to install it again.
|
|
16
|
+
|
|
17
|
+
- **Runs** (`agRuns`): one agent working on one subject, keyed by (agent, subject, thread), with the agent's type kept on the run (`agentType`). A subject kind takes the agent types its binding names (`agentTypes`, runner only by default); a run of another type is refused (`AGENT_TYPE_NOT_ALLOWED`). New work joins the run already on it while that run can still be told, else the queued one, else starts a new run. Queued runs are claimed by `priority` (lower first; 0 by default), then oldest first; a run given a `fireAt` is not claimed before that moment. Work merged into a queued run raises it to the more urgent priority and the earlier moment of the two. Runners take only runner agents' runs. A claim hands a run to a runner that fits in one transaction: one of the agent's tools enabled, installed and signed in there (the run takes the first entry of the agent's list whose tool is, recorded on the run as `tool` and `model` and passed to the tool; a model the tool's account cannot use fails the run `modelUnavailable`), the agent naming no runner or naming this one, the runner shared with the team or owned by the person who woke the agent, its features covering what the run needs (worked out from the payload: checkouts, directories, skills, secrets), and a free slot within the agent's concurrency. A working directory that is a directory on one runner pins the run to that runner, one run at a time per directory. The claim renders the brief (kept per run, `agRunBriefs`), mints a run token, and hands over the working directories, the merged variables, the skills and the CLI to install. Events, usage and branches are recorded as the runner reports them; completing requires every input to be handled.
|
|
18
|
+
- **Workload** (`runs.workload({ subjectKind, limit? })`, `shared/runs.ts`): the open runs on one kind of subject for a board of work, without claiming anything. Held runs come with their runner, the newest input's trigger and their newest text, tool call, status or error (`lastActivity`); queued runs with their place in the claim order (among the runs claimable now, and among the agent's) and why they wait, by the claim's own rules in its order (`RUN_WAIT_REASONS`: the agent archived, delayed until a moment, no runner online, the agent's named runners offline, its tool not signed in anywhere, only other people's personal runners, missing features, the same work already held, the agent's concurrency full, every fitting runner busy, preparation retrying, or next). It also answers each agent's load (held, queued, its limit, whether a runner could take its work) and the runners' (online, holding work, slots and slots used). It reads a bounded number of tables, never one query per subject; the caller decides what of it a person may see.
|
|
19
|
+
- **Online runs** (`server/online`): every application instance runs an executor that takes online agents' runs through the same claim transaction (`claims.claimServer`, the run held by `server:<instance>`, so two instances never take one run), with the entry of the agent's list the subject asks for (a conversation's choice, `ConversationPatch.model`, while the agent still lists it) or else its first, recorded on the run as `modelService` and `model`; a failing model fails the run, nothing falls back to another entry and reports through the same lifecycle a runner's requests reach (start, events, lease, complete, fail, cancel-ack), so conversations, transcripts, retries, failed-run handling and the sweeper are unchanged. No slots and no per-agent concurrency limit apply. A run is a loop of model calls through the plugin's model gateway (`online.gateway`, below): each streams its text, which a conversation shows as a draft message growing in place, and ends with the tool calls to make and what the call used, recorded at once as the run's usage (tool `chat`, the model the provider named). It has two tools (`online/sandbox.ts`): `bash`, a sandboxed shell (`just-bash`, in process: no real processes, no network, a 10-second deadline per command, its output cut to what the model reads; the build bundles the part of `just-bash` it uses into `dist/server/vendor/just-bash.js` with `THIRD_PARTY_LICENSES.txt` beside it, so the plugin does not depend on `just-bash`, and leaves out Python, JavaScript, SQLite, curl, html-to-markdown and xz/zstd archives, which answer that they are not available), and `skill`, which reads one of the run's skills (its SKILL.md and its file tree). The shell mounts the run's skills read-only at `/skills/<slug>/` (text only, at most 5 MB per run; binary files are listed but not readable, and scripts are never run) with `/tmp` as scratch, and carries the application's CLI (`online/cli-command.ts`): `acme`, built from the run's command manifest (the application's `GET /api/cli/manifest`, the actions of the person who woke the agent that the agent is configured with), each command one request sent through the application itself with the run's token, so the route checks the permission again; the line is read by the CLI's own parser (`@nocobase/app-cli-client/parse`), so flags, `--<flag>-file` and the body's `--file` (read from the shell's files), `--from-env` (the shell's exported variables), usage errors and exit codes are the CLI's; help and `acme docs` work from the manifest, `--json` prints the cli-envelope, and commands that send or save files are refused. Skills every online run gets besides its own (the CLI's) are registered with `online.skills`. A refused or failed call is a result the model reads. Input that arrives meanwhile is answered in the same run; a run that calls tools for more than `maxSteps` model calls fails `stepLimit`. The gateway's errors become failure reasons: `config` → `modelUnavailable`, `auth` → `toolAuth`, `quota` → `toolQuota`, `rateLimit` → `toolRateLimit` and `network` → `toolNetwork` (both retried while attempts remain), `contextOverflow` → `contextOverflow`, anything else `unknown`. A cancel request aborts the model call within a second; at shutdown an instance hands its runs back (`runnerOffline`), and one that stops renewing its leases loses them to the sweeper (`leaseExpired`). The brief of an online run has a system layer of its own (`onlineSystemLayer`): the CLI in its shell instead of a terminal, no workspace, its skills by name and description (`onlineSkillsSection`), and links to the pages of what it relied on.
|
|
20
|
+
- **Redaction**: what runners report is stored redacted. The runner redacts first; the server redacts every run event (content, output, input and meta), summary and failure detail, and every job event and failure detail again before storing them, with the protocol's redactor (`createRedactor` of `@nocobase/agent-protocol`): the secrets the claim handed out (a run's variables and token, a job's opened variables, repository token and upload headers, remembered in memory for recent claims) and the common secret patterns, each replaced with `[REDACTED]` (`server/kernel/redaction.ts`). After a restart, or on another instance, the patterns and the runner's own redaction still apply.
|
|
21
|
+
- **The sweep** (`server/runners/sweeper.ts`, the `RunnersSweep` schedule every 30 seconds on the application's jobs service, or an in-process timer without one) marks runners not heard from for 150 s offline, takes jobs back from silent runners and fails jobs far past their timeout, and takes runs back from runners that went away, lost their lease or never started, fails runs idle for twice their idle timeout, records unacknowledged cancellations, cancels queued runs of archived agents, and fails a queued run that waited longer than its subject allows (`queuedExpiryMs` on the subject's binding, counted from the run's last change or from its `fireAt`) as `queuedExpired`.
|
|
22
|
+
- **Variables** (`agSecrets`): environment variables for the agent's process, every one a secret sealed with the application's secrets service (`secrets.keys`) and bound to its scope and name, set on an agent, a working directory (`workdir`) or a scope the application registers, merged for a run in the order the subject names its scopes < its working directories < the agent, delivered only to runners with the `secrets` feature. Values are write-only; reading them back and every delivery are audited (`agSecretAudits`).
|
|
23
|
+
- **Skills** (`agSkills`, `agSkillVersions`, `agSkillAttachments`): a library of skills in the open Agent Skills format (https://agentskills.io/specification): a directory of `SKILL.md` and supporting files, conventionally under `scripts/`, `references/` and `assets/`. Only the front matter of `SKILL.md` names and describes a skill: `name` (1–64 lower-case letters, digits and single hyphens) is its slug and directory, so a save that changes it renames the skill, and `description` (1–1024 characters) is required; `license`, `compatibility` (at most 500 characters), `metadata` (string values) and `allowed-tools` are checked when present, and other keys are kept. Every create, save, restore and import is checked against these rules in the browser as it is typed and on the server (`shared/skill-markdown.ts`), which answers 400 with each problem's `field` and `reason` in `metadata.problems` (`taken` for a name another skill has; `mismatch` for an archive whose folder is named otherwise). Files under `scripts/` or marked executable are scripts (`Skill.scripts`): runners may run them, online agents only read them. Every save is a new version that runs get at once, with older versions to compare and restore. Skills are attached to agents, and as defaults to a working directory or a registered scope. A skill's revision is its current version: a save or a restore names the version it was made against (`expectedRevision`) and is refused with 409 `REVISION_CONFLICT` when another save came first. A runner fetches a run's skills from `GET /api/agents/runners/runs/:runId/skills/:slug` and places them where the run's coding tool finds them.
|
|
24
|
+
- **Conversations** (`agConversations`, `agConversationMessages`): a person chatting with an agent they may wake, from the chat panel. A conversation's mode is the type of the agent it started with (`mode`), for its whole life: it only ever moves to an agent of the same type, and the fallback to the system default is offered only when that agent has its mode. Only the owner reads a conversation, administrators included; its runs are hidden from everyone they do not involve. Each message the owner sends wakes the agent on the `conversation` subject as the owner, or joins the run already working on it; every text the agent writes becomes a message. A run resumes the session its runner kept; on another runner, or after the conversation switched agents, it starts fresh with the last 20 messages and the previous run's summary. When the agent is archived, no longer allowed, has no online signed-in runner, or (an online agent) its model is no longer offered (`modelUnavailable`), messages are still saved and the conversation reports why; the owner may switch it to the system default chat agent and back when that agent is of the same type. An online conversation answers with the entry of its agent's list its owner chose in the composer (`model`, `PATCH` with `model`; null for the agent's default), from the next run on; the composer offers the agent's entries (`models`) and hides the choice when there is only one. An online agent's reply is a draft (`metadata.streaming`) rewritten in place as it streams, at the same `seq`, and made final by the run's text event; a draft whose run ended first keeps what it had written (`metadata.interrupted`). `shared/conversations` is the contract (HTTP API under `/api/agents/conversations` and `/api/agents/chat*`, page context and its limits, the per-user realtime topic `agents:conversations`); `ConversationService` is the interface other code uses, so the storage can move to a shared platform layer later.
|
|
25
|
+
- **Chat defaults and presets**: the system default chat agent (`agSettings`), each person's default chat agent (`agChatPreferences`), "Copy as my agent" on an agent's page (a private copy of it), each agent's "confirm before changing data" (`confirmChanges`: `always` or only `larger` changes), and the agent presets the application registers to start a new agent from (`GET /api/agents/presets`).
|
|
26
|
+
- **No setup scripts.** Preparing a working directory is the agent's job: its brief tells it to follow each directory's own instructions (AGENTS.md, CLAUDE.md, README), to install what is missing inside the directory, and to say so (the way the subject's guidance tells it) when it cannot. A working directory's optional initialization prompt reaches the agent only when the runner prepared that directory fresh. "Clean working directory" (`POST /api/agents/workspaces/:subjectKind/:subjectId/reset`) makes the next run start from a fresh checkout.
|
|
27
|
+
|
|
28
|
+
## Online agents
|
|
29
|
+
|
|
30
|
+
The plugin keeps the model services online agents call (`agModelServices`, `server/online/services.ts`): a provider type, a name agents and model prices store (made from the title, never changed), a title, a base URL (the provider's default when empty), an API key sealed with the secrets service as variables are, bound to the service's name, an on/off switch, and the models it offers. A provider may have any number of services. The key is write-only: the API answers `apiKeySet`, never the key. Every request to a provider names the plugin first in its user agent (`nocobase-agents/<version>`); a call to an OpenCode base URL (Zen or Go) additionally carries `x-opencode-session`, the same session id for every model call of a conversation (a hash of its subject and thread, `sessionOf` in `server/online/executor.ts`) and a new one for each call outside any, such as a connection test, an embedding or a rerank. Deleting a service deletes its model prices. A model's kind (chat, embedding or rerank) is guessed from its id only as a default and can always be changed; checking a model checks it as its kind, and when it fails that way but answers as another kind its provider serves, the check says so (`ModelCheck.looksLike`). The system default chat model (`agSettings` key `models`) is what an online agent that lists no model answers with: availability, the run (which records the model it used) and the conversation's model all fall back to it. It is set on the Models page; with none set, the first chat model an enabled service offers is used, and the first chat model turned on becomes it.
|
|
31
|
+
|
|
32
|
+
The providers (`MODEL_PROVIDERS` in `shared/models.ts`, `server/online/providers.ts`) are Vercel AI SDK provider packages: `@ai-sdk/openai`, `@ai-sdk/anthropic`, `@ai-sdk/google`, `@ai-sdk/deepseek`, `@ai-sdk/alibaba` (Qwen), `@ai-sdk/moonshotai` (Kimi), `@ai-sdk/cohere`, `ollama-ai-provider-v2`, and `@ai-sdk/openai-compatible` for every other endpoint that speaks OpenAI's chat completions. A provider's models are read from its own list-models endpoint (`GET /models`; Anthropic's with its version header, Google's `models` that generate content, Cohere's v1 `models`, Ollama's `/tags`); a model can also be added by id.
|
|
33
|
+
|
|
34
|
+
Each model of a service is of one kind (`ModelKind`), chosen in its row of the service's dialog among the kinds its provider serves (`kinds`): `chat` (what online agents talk to; the only kind agents, their pickers and the catalog's default ever see), `embedding` (texts to vectors, with an optional vector size, `dimensions`, asked through each provider's own option) or `rerank` (documents ordered by a query). OpenAI, Google, Alibaba and Ollama serve chat and embedding models; Cohere and OpenAI-compatible endpoints serve all three, an OpenAI-compatible endpoint's reranking being `POST <base>/rerank` in the shape Cohere, Jina, vLLM and SiliconFlow share (`compatibleReranking`); Anthropic, DeepSeek and Moonshot serve chat models only. A model without a kind is a chat model. Testing a model tries it as its kind says.
|
|
35
|
+
|
|
36
|
+
The model gateway (`online.gateway`, `server/online/gateway.ts`) is what the executor and the admin API call: `catalog()` (the enabled services that offer a model, names only), `check(ref)` (a short `generateText`, 20 seconds, never throws), `languageModel(ref)`, the chat model an online run's loop runs over, and `stream(request)`, one `streamText` call with tools declared without an implementation, which ends at the tool calls the model made. An online run is the SDK's `ToolLoopAgent` over that model: the run's brief is its instructions, its tools are executed by the SDK step by step (a tool answers `{ ok, output }`, and the model reads `output` through `toModelOutput`), each step's usage is recorded as it finishes, and the loop stops when the model answers without a tool call or after `agents.server.maxSteps` steps (`stepLimit`); an entry's reasoning effort is the SDK's `reasoning` option. Usage is mapped to the protocol's non-overlapping counts (input without cached reads and cache writes; output with reasoning). The SDK retries a failed request twice; a failure throws `ModelError` with a code from the provider's status and error body (`config`, `auth`, `quota`, `rateLimit`, `network`, `contextOverflow`, `filtered`, `badResponse`, `aborted`, `unknown`), which become the run's failure reasons as above. A service without a key whose provider needs one fails `auth` before any request. A run's brief, and a system message marked `cache`, carry Anthropic's `cacheControl` (`ephemeral`), so the brief is read from the cache on every model call of a run after the first; OpenAI caches a long prefix by itself.
|
|
37
|
+
|
|
38
|
+
The gateway also serves the application's own model calls outside runs, each naming who asks (`source`, such as `knowledge`): `embed({ model, values, source })` (`embedMany`, two requests at a time, answering the vectors, their size and the tokens read), `rerank({ model, query, documents, topN?, source })` (the SDK's `rerank`, answering each document's index and score, best first) and `generate({ model, system?, prompt, maxOutputTokens?, source })` (one short text from a chat model, `generateText`). Each names a model of the matching kind (`catalog(kind)` lists them) and throws `ModelError` as a run's calls do. What each used is recorded at once in `agModelUsage` (purpose `embedding`, `rerank` or `text`, the source, the model, its tokens and how many texts or documents), priced like online runs' calls from the service's model prices, and reported by `reporting.modelUsage(caller, { from, to })` (`GET /api/agents/usage/models`, behind the usage page's grant, rows only for a reader of every run): the usage page shows it below the runs as "Other model use".
|
|
39
|
+
|
|
40
|
+
### Consultations
|
|
41
|
+
|
|
42
|
+
An online run may consult another online agent synchronously, as the AI SDK's subagent pattern does: the tool `ask_agent` (`{ agent, question, context? }`, `server/online/consult-tool.ts`) is given to a run whose system prompt lists agents it may consult (`Agents you may consult`, name and the first line of the description), and only then. Those are online agents with a model that the person the run acts for may use (their "who may use it"), not already in the run's chain. The answer comes from a run of its own (`server/core/consultations`): a child of the asking run (`parentRunId`), on the subject `{ kind: 'consultation', id: <asking run> }`, one thread per tool call, one attempt, acting for the same person with its own run token. It is never claimed from the queue: the instance holding the asking run takes it at once (`claims.claimChild`) and runs it within the tool call, aborted with the asking run, within `agents.server.consult.timeoutMs` and `tokenBudget`. It only reads: the gate keeps a consultation's run to reading actions (`…/view`, `…/read`) and those the application marks `consultable` (for example, proposing an operation plan, which reaches as far as the agent and person do and is confirmed by the person in the conversation that asked, `conversations.homeOf`). Consultations go `CONSULT_MAX_DEPTH` (2) deep and never back to an agent already asked; a runner agent is refused with "use a task to delegate to a runner agent". The tool streams preliminary results, which the asking conversation shows as a card (a `consultation` notice, rewritten in place); the asking model reads only the final answer and a note of the plans proposed (`toModelOutput`). The child's transcript and usage are its own, and `RunDetail.children` lists a run's consultations.
|
|
43
|
+
|
|
44
|
+
## Vectors
|
|
45
|
+
|
|
46
|
+
`server/vectors` keeps vector collections for the application: items of text it names (`id`, `text`, `metadata`), embedded with the embedding model it chooses and searched by meaning, so a feature such as a knowledge base adds semantic search without knowing where vectors live. It is generic: the plugin knows no domain of what it embeds.
|
|
47
|
+
|
|
48
|
+
- **Stores.** A `VectorStore` (`createIndex` with a name, dimension, metric and the metadata keys filters use; `upsert`, `update` of metadata, `query` with `topK` and a filter applied before the limit, `delete` by ids or filter, `dropIndex`; `target`, where it points with no secret) is one type of a registry (`vectors.stores.register`), like the model providers. The store is configured in `agents.vectors`, apart from the application's database, and two are built in:
|
|
49
|
+
- `sqlite-vec`, the default: a SQLite file of its own (`path`, `storage/vectors.sqlite` by default) opened with `better-sqlite3` and the [sqlite-vec](https://github.com/asg017/sqlite-vec) extension, so vectors work with nothing to run. One table per index (`agv_<index>`: the vector as a float32 blob, `metadata` as JSON text, an index on each filterable key) searched exactly: the filter in the WHERE clause, then sqlite-vec's distance and the limit. It is local to the instance, so an application running several instances uses pgvector. The extension ships as prebuilt platform packages (`sqlite-vec-<os>-<arch>`: macOS, Linux glibc and Windows on x64, macOS and Linux on arm64); where there is none, such as Alpine (musl), the store reports `SQLITE_VEC_UNSUPPORTED`.
|
|
50
|
+
- `pgvector`: a PostgreSQL database of its own with the `vector` extension (created when missing), reached with its own connection settings (`url`, or `host`, `port`, `database`, `user`, `password`; `ssl`), never the application's database connection: one table per index (`agv_<index>`: `vector(<dimension>)`, `halfvec` from 2001 to 4000 dimensions, `metadata` jsonb), an HNSW index with the metric's operator class, a btree index per filterable key, and queries filtered in their WHERE clause with pgvector's iterative index scans on (0.8 and later), so a selective filter still returns `topK`. A large delete vacuums the table so the HNSW graph forgets the rows.
|
|
51
|
+
|
|
52
|
+
A store that cannot be used reports why as a code (`VectorUnavailableCode`: `VECTORS_OFF`, `VECTOR_STORE_UNKNOWN`, `SQLITE_VEC_UNSUPPORTED`, `SQLITE_VEC_OPEN_FAILED`, `PGVECTOR_NOT_CONFIGURED`, `PGVECTOR_CONNECTION_FAILED`, `PGVECTOR_EXTENSION_MISSING`, `VECTOR_STORE_FAILED`) with an English message for the logs; then vectors queue nothing and search answers null, and the caller keeps its keyword search. `vectors.status()` answers availability, the store's type and target, and the reason.
|
|
53
|
+
|
|
54
|
+
- **Collections.** `vectors.collection(spec)` names a collection (`name`, the usage `source` of its embedding calls, `model()` answering its embedding model or null, `items()` listing every item for a rebuild, its `filterable` keys and metric, and optionally `prepare`, which rewrites the texts before they are embedded, such as with a context sentence). An index is the collection embedded with one model at one dimension in one store (`agVectorIndexes`, which records the store's type and target), the model's configured dimension or what a probe embedding answers. The index registry and the queue stay in the application's database, so they change in the same transactions as the writes they follow; only the vectors live in the store. Only the indexes of the store configured now are used: pointing the store elsewhere retires the others and builds the index again there in the background. `sync()` builds the index of the model now when it is not there, queuing every item while the ready index keeps serving; once nothing is pending it becomes ready and the older index is retired and dropped. `upsert` and `replace` (the items of a metadata scope) write to the ready index and the one being built: an item whose text hash is unchanged only has its metadata updated; `remove` takes ids or a filter. `search` embeds the query with the ready index's model and answers the closest items with a similarity score, or null when there is no store, no model or no ready index yet. `status()` answers availability, the store and the reason it is unavailable, the model, the active and building index with their progress (`indexed` of `total` items), and how many items are pending or failed.
|
|
55
|
+
- **The queue.** Entries (`agVectorEntries`) keep each item's text hash and, until it is embedded, its text. Each instance's worker (`vectors.start()`, woken by writes and polling every three seconds) takes due entries with a lease, so two instances never embed the same one, at most 64 of one index per embedding call; a failure backs off from five seconds, doubling up to ten minutes, and after five attempts the entry is `failed` until the item is written again.
|
|
56
|
+
|
|
57
|
+
## Layout
|
|
58
|
+
|
|
59
|
+
| Folder | What is there |
|
|
60
|
+
| ------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
61
|
+
| `server/kernel` | Clock, ids, transactions, events, credentials and secret sealing, scopes, redaction, HTTP helpers |
|
|
62
|
+
| `server/core` | What both agent types share: agents, runs and the queue (claims, lifecycle, sweeper), briefs, conversations, the custom command registry, usage, prices and reports, skills, variables, presets |
|
|
63
|
+
| `server/online` | Online agents: the model services, the providers, the model gateway, the executor and its command tools, and the model endpoints of the admin API |
|
|
64
|
+
| `server/vectors` | Vector collections, their embedding queue, the vector store registry, and the `sqlite-vec` and `pgvector` stores |
|
|
65
|
+
| `server/runners`, `server/jobs`, `server/distribution` | The runners (registration, keys, heartbeats, slots, the sweeper), the build jobs, and the runner and CLI tarballs |
|
|
66
|
+
| `server/routes/runners` | The runner protocol (with a run's `runs/:runId/*` endpoints), the tarballs, the install script and the runners' admin API |
|
|
67
|
+
| `server/routes` | The admin, chat and CLI endpoints, and where every endpoint is mounted (`index.ts`) |
|
|
68
|
+
| `server/providers` | The service providers that assemble and boot the plugin |
|
|
69
|
+
| `shared` | The view models the browser and the API exchange (`models.ts` for online agents' services and catalog) |
|
|
70
|
+
| `client` | The pages and components; `client/online` the model services UI of the Models page; `client/pages/usage/prices` the prices sheet of the Usage page |
|
|
71
|
+
|
|
72
|
+
## HTTP API
|
|
73
|
+
|
|
74
|
+
Every route lives under the plugin's namespace, `/api/agents`, and names its own authentication, because callers of different kinds share it. Every JSON answer is `{ data }` (a list `{ data, meta }`: `meta.total` for the bounded lists, `meta.nextPageToken` for runs, an agent's history, variable audits, conversations, messages and a run's events, read with `pageSize` and `pageToken`), and every failure is the standard error body with domain `agents` (`ERROR_API_STATUS` of `@nocobase/agent-protocol` gives each reason's status).
|
|
75
|
+
|
|
76
|
+
| Routes | Authenticates | Purpose |
|
|
77
|
+
| --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
78
|
+
| `/api/agents/runners/{register,heartbeat,claim}`, `/api/agents/runners/runs/*`, `/api/agents/runners/jobs/*` | Runner key header (`register` takes a registration token) | The runner protocol (`RUNNER_ROUTES`): register, heartbeat, claim, and a run's and a job's lease, start, events, status, ending, skills, mounts |
|
|
79
|
+
| `/api/agents/runners`, `/api/agents/runners/registrationTokens`, `/api/agents/runners/:runnerId[/work,/revoke]` | Session and authorization context (no scoped keys) | Runners and registration tokens |
|
|
80
|
+
| `/api/agents/dist/*` | Runner key, unused registration token, download token, or session | The runner and CLI tarballs (`DIST_ROUTES`); `POST /api/agents/dist/downloadTokens` mints a download token for a person (no scoped keys) |
|
|
81
|
+
| `/api/agents/dist/installScript` | Nothing (it carries no secret) | The script behind the one-line installs of the CLI and, with `--runner`, of a runtime |
|
|
82
|
+
| `/api/agents/runs/current[/context]` | Run token header | The agent's own run and its context (`RUN_ROUTES`) |
|
|
83
|
+
| `/api/agents/cli/*` | Run token header, or the application's authentication | The CLI's custom commands (`CLI_ROUTES.command`); the manifest is the application's `GET /api/cli/manifest` |
|
|
84
|
+
| everything else under `/api/agents` | Session and authorization context | Agents and brief previews, variables, skills, runs, the vocabulary, usage, prices, conversations, the model services and their models |
|
|
85
|
+
|
|
86
|
+
Scoped API keys reach only the routes whose every operation is a settings check (agents, skills, model services, prices and usage); elsewhere they are refused with `SCOPED_KEY_FORBIDDEN`. The API checks four settings items, which the plugin lists under an Agent team subsection of the permission workspace: `agents.agents` (read or manage agents, their variables, skills, and every run; reading also sees every runner), `agents.runners` (read every runner; manage any runner, add team runners; anyone signed in adds personal runners and manages their own), `agents.prices` (the model prices) and `agents.services` (the model services: read lists them, manage adds, edits, tests and deletes them and sets their keys; a scoped key may only read them). It also declares one business action with three levels (`BUSINESS_ACTIONS` and `RELATIONS` in `shared/access.ts`), registered as the `agents` resource type under an Agent team subsection of business, one action per level (`edit.related`, `edit.all`), whose level the application tells it through `agentsAccessToken` (`scopeOf(identity, key)`; unbound, every level is `none`): `agents.agents/edit` changes agents (their settings, skills and variables; archiving, restoring and deleting them) and edits skills (saving, restoring a version), every one at `all` and at `related` the agents the caller owns and the skills they created. Managing agents reaches every one whatever the level; creating agents and skills and deleting skills still need it. Someone editing at a level, without managing agents, does not hand an agent to another owner and adds to it only business actions they hold themselves (the command gate's `allowed`). An agent and a skill answer `canEdit` for the caller. Anyone signed in reads which model services and models online agents may use (`GET /api/agents/models`, names only, chat models unless `?kind=embedding` or `rerank` asks for another kind; `shared/models.ts`), and anyone who reads agents may test one (`POST /api/agents/checkModel`). Anyone signed in reads the system default chat model (`GET /api/agents/defaultModels`), and who manages `agents.services` sets it (`PUT /api/agents/defaultModels/chat`). Anyone signed in sees, cancels and retries the runs they started or own, and reads the vocabulary (labels only). A working directory's or a registered scope's variables and default skills follow the scope's kind: it decides who reads and who changes them.
|
|
87
|
+
|
|
88
|
+
Realtime announcements carry no content: `agents:runs:<runId>` when a run's status, transcript or input changes and `agents:runners` when a runner changes. A page that hears one fetches through the API.
|
|
89
|
+
|
|
90
|
+
## Extension points
|
|
91
|
+
|
|
92
|
+
Everything the application contributes goes through `agentsToken` (`server/tokens.ts`) at boot. Text people read is an `I18nText` (`{ key, ns }`, `shared/i18n`) in the contributor's own namespace.
|
|
93
|
+
|
|
94
|
+
| Extension point | What the application gives |
|
|
95
|
+
| --------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
96
|
+
| `subjects.register(binding)` | A kind of subject runs work on: `kind`, `title`, `triggers` (what `input.payload.trigger` values mean, for the run panel), `preview` (a `SubjectSample`: the assembly of a made-up subject of the kind, its values marked with `sampleValue`, offered as a scenario of "Preview full prompt"), `context.assemble` (the brief's task and context, the turn, the working directories, the scopes, and `guidance`: the subject's own lines of the rules and of the environment check), `sink.onRunFinished`, `queuedExpiryMs` (how long a run may wait for a runner; forever without it), `reports.describe` (a subject's label, whether the person may see it, and its `group`), and `agentTypes` (`['runner']` by default; a kind whose runs need no working directory adds `online`). The claim tells `assemble` how the agent reaches the commands (`claim.dialect`, `cli` or `tools`): name them with `commandRef(dialect, cli, id, flag?)` (`acme issue get` in both: an online agent runs the CLI in its shell, writing files under `/tmp`). |
|
|
97
|
+
| `scopes.register(kind)` | A scope of variables and default skills (`key`, `title`, `description`, `access(scopeId, userId)`). `agent` is reserved; `workdir` is a core key the application registers to decide who may see and change a working directory's. |
|
|
98
|
+
| `actions.provide(source)` | The business actions an agent may be configured with (`key`, `group`, `title`, `groupTitle`, `description`, `defaultOn` for the new-agent dialog), and those never granted to an agent, listed only to show the boundary (`grantable: false` with a `reason`). |
|
|
99
|
+
| `presets.register(preset)` | A role a new agent can start from (`name`, `nameText`, `description`, `descriptionText`, `instructions`, `actions`). |
|
|
100
|
+
| `gate.set(gate)` | Who holds which business actions: an `ActionGate` answering `allowed(identity)` for a person or a run, and optionally `consultable(action)` for what a consultation may keep besides reading. `gate.allowed` and `gate.reach` answer for a caller; the gate also bounds what a run may do over the API. |
|
|
101
|
+
| `conversations.sources.register(source)` | A place conversations start from besides the panel (`POST …/chat/start` takes `source` and the first message as the agent should read it). |
|
|
102
|
+
| `conversations.contextKinds.register(kind, resolver)` | A kind of object a page context may reference, resolved for the message's owner. |
|
|
103
|
+
| `conversations.rules.provide(rules)` | Rules and sections added to the system layer of conversation runs. |
|
|
104
|
+
| `conversations.deliver(tx, id, news)`, `conversations.lock(conn, id)` | A `news` notice (`type`, English `title`, `params`) written to a conversation, with input that wakes its agent. |
|
|
105
|
+
| `people.provide(source)` | The application's directory: names, whom to pick from, and who can no longer act (`inactive`: their runners stop). |
|
|
106
|
+
| `events.on('agent.removed', listener)` | An agent was archived or deleted (`agentId`, `name` then, `reason`, `byUserId`), after the transaction that withdrew its queued runs commits: the application lets go of the work it gave the agent. The assembling application clears it as executor of unfinished issues (`server/agents/removal.ts`). |
|
|
107
|
+
| `events.on('notice', listener)` | People the plugin wants told (`RunnerNotice`: `key`, `type`, `userIds`, `subject`, English `title` and `body`, `params`): today `runner_upgrade_required`, to a runner's owner; `notice.cleared` names one that no longer holds. |
|
|
108
|
+
| `jobs.register(kind, registration)` | A kind of build job, for the off-by-default runner build method (see Jobs above). |
|
|
109
|
+
| `reporting.usage`, `reporting.runFigures`, `reporting.range` | What runs used and cost, grouped by agent, person, `group`, `subject`, day, model, tool or agent `type`, and how the runs of a range went with their usage by type (`usageByType`) and day by day (`daily`: runs by outcome, cost by type), for the application's report pages. The plugin serves usage over HTTP for its usage page (`GET /api/agents/usage`, behind the `usage` page grant; every run for a reader of agents, else the caller's own; `series=true` breaks each day of `daily` down by the grouping). |
|
|
110
|
+
| `briefs.sections.register(provider)` | Sections added to every brief's context layer after the subject's own context (`key`, `order`, `section(conn, claim, assembly)` answering Markdown or null), in claims and in brief previews. The context layer is outside the session fingerprint, so a section that changes does not end a resumable session. Database reads only. |
|
|
111
|
+
| `mounts.register(provider)` | Directories of files placed beside the agent (`name`, `forRun(conn, { claim, assembly, session, sessionKey })` answering `{ hash, target, note?, resumeNote? }` or null, and `bundle(conn, { runId })`). Offered at claim only to runners announcing the `mounts` feature, never required, so an older runner runs without them; served at `GET /api/agents/runners/runs/:runId/mounts/:name` while the runner holds the run. A mount's hash stays out of the session fingerprint: a resumed run gets its `resumeNote` in the turn instead. |
|
|
112
|
+
| `repoAccess.register(provider)` | Per run, in the claim's transaction: who the run's commits name and the short-lived credentials its checkouts push with (`forRun(conn, { claim, repos })` answering `RunGit` or null). It may read from elsewhere in an optional `prepare(run)` before the transaction. |
|
|
113
|
+
|
|
114
|
+
`GET /api/agents/vocabulary` hands the browser what the application contributed: subjects (title, triggers, preview), conversation sources, and scopes (title, description).
|
|
115
|
+
|
|
116
|
+
```ts
|
|
117
|
+
const agents = container.resolve(agentsToken);
|
|
118
|
+
agents.subjects.register({
|
|
119
|
+
kind: 'ticket',
|
|
120
|
+
title: { key: 'subjects.ticket', ns: '@acme/app' },
|
|
121
|
+
context: { assemble: (conn, claim) => /* task, context, working directories; database reads only */ },
|
|
122
|
+
sink: { onRunFinished: (tx, run) => /* tell people how the run ended */ },
|
|
123
|
+
});
|
|
124
|
+
await agents.runs.enqueue({ agentId, subject: { kind: 'ticket', id }, actorUserId, priority: -2, input });
|
|
125
|
+
// Withdraws the work no runner took yet, keeping why as the run's failure detail.
|
|
126
|
+
await agents.runs.withdrawQueued({ subject: { kind: 'ticket', id }, byUserId: null, detail: 'The ticket is on hold.' });
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
`assemble` runs inside the claim's transaction and must not call a network or a model (nor do brief sections and mounts, which read through the claim's connection only: on SQLite the transaction holds the one connection there is; a section or mount provider reads what it needs from elsewhere, such as a person's permissions, in its optional `prepare(run)`, which runs before the transaction and whose answer it gets back); throwing leaves the run queued, and three failures fail it `setupFailed`. `enqueue` takes an optional outer transaction; inside another plugin's transaction, publish the collected events after that transaction commits.
|
|
130
|
+
|
|
131
|
+
## The CLI's commands
|
|
132
|
+
|
|
133
|
+
The CLI's commands are the application's API routes: `GET /api/cli/manifest` (`@nocobase/app-server/router`) answers every command the API document describes for the caller, named and shaped by each route's `x-cli` extension, and this plugin tells it who calls (a run by its run token, a person by the application's authentication) and which business actions each holds (`gate.allowed`). A run token is also a credential of the application's authentication (`server/cli/run-credential.ts`): a request carrying it acts for the person who woke the agent, as a scoped session the routes accept only where their security lists `runToken`; the application bounds it by its scope (for example, `server/agents/run-principal.ts`). A route lists `runToken` and gives its `x-cli` an `action` for the commands a run may use.
|
|
134
|
+
|
|
135
|
+
The plugin's own commands are its routes. A run uses `run self`, `run context` and `conversation title set` (`GET /api/agents/runs/current`, `/current/context`, `PATCH /current/conversation`, action `agents.runs/self`), and a run or a person `agent list` (`GET /api/agents/available`, action `agents.agents/view`: the agents the caller may give work to, with what each is good at and whether it can take work now). The rest are a person's: `agent list-all|get|create|update|archive|restore|delete|copy|history|brief`, `agent action list`, `agent preset list`, `skill …` (with `skill version …` and `skill attachment get|set`), `variable list|set|delete|reveal` and `variable audit list` (positional scope kind and scope), `runtime list|get|update|revoke|delete|work` and `runtime token create`, `model list|check|usage` and `model price get|set`, `service list|create|update|delete|discover|check`, `conversation list|get|create|update|stop|fallback|restore`, `conversation message list|send`, `conversation preferences|settings get|update`, and `run list|get|events|brief|cancel|retry|usage` and `run workspace reset`. The runner protocol, the downloads and the browser's helpers (the vocabulary, the people picker, the chat agent picker, starting a conversation from a page, marking one read) stay off the command line. The application's routes and custom commands are the rest.
|
|
136
|
+
|
|
137
|
+
## Workspace
|
|
138
|
+
|
|
139
|
+
A run's working directories (`SubjectDir`) are a generic capability: a git repository the runner checks out on a branch the subject's domain names (`kind: 'repo'`: `url`, `branch`, `defaultBranch`), or a directory already on one runner, used in place (`kind: 'directory'`). The runner reports what it did to each checkout (`agRunRepos`: branch, head commit, whether it pushed), and "Clean working directory" starts the next run from a fresh checkout. Nothing here knows of pull requests, merges, previews or deployments: those belong to whatever the application builds on top.
|
|
140
|
+
|
|
141
|
+
## The CLI runs get
|
|
142
|
+
|
|
143
|
+
The CLI a run gets is the application's `agents.cli` (`resolveAgentCli` in `server/core/runs/policy.ts`): its `name`, the application's id (`agents.app.id`) when left out, and the file the run's token goes in, `.<name>/run.json` unless `credentialFile` says otherwise; The assembling application configures `acme` (`server/config/agents.ts`). Its `cli.package` is, by default, the tarball of that name this application serves for the runner's platform (`archive`, with its version and SHA-256; `server/core/runs/cli-package.ts`), which the runner downloads with its key and unpacks once per version. A runner without the `archives` feature, or a platform with no build, gets `served`'s `fallback` instead, `preinstalled` (the CLI the install script put on its host beside the runner) unless configured. `agents.cli.package` can name an npm package, a tarball or `preinstalled` instead of `{ kind: 'served' }`. `agents.app` names the application to runners; left out, it is the CLI's name, else the application's name.
|
|
144
|
+
|
|
145
|
+
## Configuration
|
|
146
|
+
|
|
147
|
+
Variables and model service keys are sealed with the application's secrets service, so the application needs `secrets.keys` (and `SecretsProvider` in `server/app.ts`) before any can be stored; without it, storing or reading one answers `SECRETS_KEY_MISSING` (503). The plugin registers both tables as secrets stores, `@nocobase/app-plugin-agents/variables` and `@nocobase/app-plugin-agents/model-services`, so `pnpm nocobase secrets rotate` reseals them under a new key.
|
|
148
|
+
|
|
149
|
+
```yaml
|
|
150
|
+
agents:
|
|
151
|
+
cli: # the CLI runs get; named after app.id when left out
|
|
152
|
+
name: acme
|
|
153
|
+
credentialFile: .acme/run.json # .<name>/run.json by default
|
|
154
|
+
package: { kind: served } # or { kind: npm, package: '<package>', version: 0.1.0 }, or { kind: preinstalled }
|
|
155
|
+
app: { id: acme, name: Acme } # how runners name this application; the CLI's name, else the application's, by default
|
|
156
|
+
dist: # optional; the runner and CLI tarballs
|
|
157
|
+
dir: /srv/runners-dist # relative to the application root; storage/runners/dist by default
|
|
158
|
+
channel: stable
|
|
159
|
+
versions: { acme: 0.1.0 } # pin a product instead of the channel's highest
|
|
160
|
+
server: # optional; online agents' runs, which every instance runs itself
|
|
161
|
+
enabled: true # false leaves them to the other instances
|
|
162
|
+
maxSteps: 16 # model calls an online run may make
|
|
163
|
+
consult: { timeoutMs: 120000, tokenBudget: 200000 } # one agent consulting another (ask_agent)
|
|
164
|
+
vectors: # optional; vector collections, apart from the application's database
|
|
165
|
+
store: sqlite-vec # the default; pgvector, or false to turn vectors off
|
|
166
|
+
path: storage/vectors.sqlite # sqlite-vec's file, relative to the application root
|
|
167
|
+
# pgvector takes its own PostgreSQL, never the application's connection:
|
|
168
|
+
# store: pgvector
|
|
169
|
+
# url: postgres://vectors:secret@db.internal:5432/vectors # or host, port, database, user, password
|
|
170
|
+
# ssl: true
|
|
171
|
+
skills: # optional; the skill library
|
|
172
|
+
disk: s3 # the Drive disk skills' file contents go to; drive.default by default
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Skills' file contents are stored once per content at `skills/blobs/<sha256>` on the Drive disk `agents.skills.disk` names, Drive's default disk when it names none; an application without Drive keeps them under `storage/agents`. Moving to another disk does not copy what is stored: copy `skills/blobs/` across first.
|
|
176
|
+
|
|
177
|
+
Model services are not configured here: they are added on the application's page or through `POST services`.
|
|
178
|
+
|
|
179
|
+
## Web UI
|
|
180
|
+
|
|
181
|
+
The plugin registers no routes of its own: an application mounts its pages and joins them to the pages of the runner agents do. The assembling application puts them under "Agent team" in its sidebar.
|
|
182
|
+
|
|
183
|
+
- `@nocobase/app-plugin-agents/client/routes` exports `agentsRoute` (`/agents`, with the `new` dialog and the `:agentId` page), `runtimesRoute` (`/runtimes`, with the `connect` dialog), `skillsRoute` (`/skills`, with `new` and `:skillId`) and `usageRoute` (`/usage`: what runs used and cost over a date range, filtered by group, agent and person and summed by one of the groupings (`?groupBy=`, agent by default), with a daily chart of tokens or cost above the table, stacked by the top five agents or models when grouped by those (the usage route's `series`), its group and subject named and linked by the vocabulary's `groupTitle`, `path` and `groupPath`; for who reads `agents.prices` a "Set prices" header button opens the prices sheet, `?prices=1`: online models by service and model, coding tools by the models their runs report, each tool with its subscription switch and price rules, changed by who manages it; the note on missing prices links to it). Each page renders its own heading, and stands behind a page grant of the same id as its route name (`agents`, `runtimes`, `skills`, `usage`, exported as `PAGES` from `shared/access`); a page grant only opens the page, and what it shows is decided by the admin API on the settings items. It also exports `modelsRoute` (`/models`), which stands behind `agents.services` read instead: the model services (a page header with "Add service", the system default chat model's select, then a table with one row per service: its name and host, provider type, status and a menu to edit it, turn it on or off or delete it; "Add service" and clicking a row open one dialog with a single form saved at once: provider type when adding, name, base URL, the write-only key as a `SecretInput` (`client/components/secret-input.tsx`: a password field whose empty value keeps the saved key), an OpenCode base URL's note on which provider type serves which of its model families (its session header is sent automatically), connection test, models fetched from the provider or added by id and checked, each with its kind, changeable before and after it is checked, and a Test that checks it as that kind, and an on/off switch), changeable by who manages `agents.services`.
|
|
184
|
+
- Runtimes (on `/api/agents/runners`): one overview row per runtime — its name with its system, its state with the slots in use ("Busy 1/1", "Offline · 3 hours ago"), its coding tools by sign-in, personal or team, its runner version (marked "Upgradable" when a newer version of the product it runs as is served, with `nocobase-runner update`, or `<cli> runner update` for a CLI that carries the runner; the runner also updates itself) and when it was last seen — with a "…" menu (Edit, then revoke or delete). A row opens the runtime's sheet: General (name, concurrent runs, personal or team after a warning, and "Allow build jobs" only when the application gives runners jobs, as an application's off-by-default runner build method does), Tools (a switch per reported tool with its version, sign-in and, when the API sent it, its path as small text), Local policy (read only: what its owner's policy on the machine lets it take) and Recent runs (`GET /agents/runners/:runnerId/runs`). Only its owner and the managers of runners change it; they and anyone who may use an agent get its host name and its tools' paths from the API, everyone else neither. "Add runtime" asks who it works for (team only for managers of runners), which coding tools it may run (all by default) and its max concurrent runs (1 by default, carried by the token; a runner registered with its own `--slots` keeps that), then shows the one-line install and the `nocobase-runner register` command with a one-time token (copy buttons, expiry), and waits until the runtime connects, then shows the coding tools it reported.
|
|
185
|
+
- Agents: the list (type, tools, the default model and how many more, where it runs with the runners online for it, or "on the server" and whether its model is offered, active runs, visibility; a type filter; archived ones on request) and an agent's page, whose header sums it up in one line (type, tool or model, where it runs, free or busy, owner), with four tabs kept in `?tab=`; the new-agent dialog asks for the type first, then the fields of that type (its tools and models, model services and models for an online agent from `GET /api/agents/models`; with none, the agent uses the system default chat model, which the dialog names with a link to change it, or says none is offered). General: basics, avatar and instructions with "Preview full prompt" (a scenario switch among the subject kinds that offer a sample, the application's first and a conversation, `?scenario=` on the API; it shows the system prompt in one, with the agent's own prompt marked at its end, and the first message, all rendered on a made-up subject whose values are marked `[sample]`), and who may use it. Capabilities: the tools and models, a compact ordered list (one header row, then one row per entry) whose first row is the default, with rows added, removed and moved up or down (a runner agent's rows a coding tool, a model typed freely with the tool's common models suggested, and an effort among the tool's; an online agent's rows a model service, a model and an effort, each with a Test button; the new-agent dialog uses the same list), skills, the business capabilities grouped by the application's groups with a description each, and the ones never granted to an agent greyed out with the reason (`AgentActionOption.grantable: false`), and whether it confirms before changing data. Runtime (runner agents only): where it runs (any runner, or named ones, and concurrency), the command allowlist and denied patterns, and its environment variables (write-only, revealing them is audited, saved row by row). Editable when the agent says `canEdit`; a bar appears while a tab has unsaved changes and saves them in one request against the revision the page shows, and switching tabs or following a link away asks first. When someone else saved the agent meanwhile, the page reloads and a dialog shows what they changed. History: who changed what and when, long text as a line diff, lists as what was added and removed, variables named without values.
|
|
186
|
+
- Skills: the library (each skill's name, description, compatibility and whether it holds scripts), and a skill as a directory: its files in a tree beside the selected one (`client/pages/skills/workbench/`), SKILL.md rendered, other text shown, images and PDFs previewed. Editing uses the same workbench: files and folders are created (in a folder chosen from the skill's and the conventional `scripts/`, `references/`, `assets/`), uploaded (also by dropping files onto a folder), renamed and deleted from the tree, never by typing a path; SKILL.md and other Markdown are written beside their preview (in tabs on a narrow pane), with the front matter's problems listed above the source as it is typed. A new skill (`/skills/new`, a covering page) starts from a template of front matter and suggested sections. Versions can be compared with the current one and restored, and the page shows where the skill is attached. When someone saved a version while the editor was open, the draft stays and a banner offers to load the latest version. A scope's default skills list the scripts of the chosen skills, which online agents do not run (`SkillScriptsNotice`).
|
|
187
|
+
- The new agent, new skill and variable dialogs ask "Discard unsaved changes?" before closing with input in them (NP-200), through `@nocobase/app-client`'s unsaved-changes guard.
|
|
188
|
+
- `@nocobase/app-plugin-agents/client/kit` exports `VariablesSection` and `DefaultSkillsSection` for a scope's settings on the application's pages (`scope` `workdir` or a registered key, with an optional `description`), `useRunnerOptions` for picking the runner a directory is on (with how many runners are `online`), and `useAgentOptions` for picking an agent.
|
|
189
|
+
- `@nocobase/app-plugin-agents/client/runs` exports the headless parts of a subject's runs, for the application to present (the assembling application uses the UI Library's `agent-run-history`): `useSubjectRuns` and `useAgentNames`, `useRunWithTranscript` (a run and its transcript, fetched after the last `seq` seen when the run's realtime topic announces events, and polled every five seconds while the run is open), `useStopRun`, `useRetryRun`, `useRunBrief` and `useWorkspaceReset`. Each reads and writes the plugin's shared query cache.
|
|
190
|
+
- `@nocobase/app-plugin-agents/client/chat` is the agents' chat without its UI. The UI — the panel beside the content area, one conversation as a page, the history and the header, floating and "Ask agent" launchers — is the UI Library's `agent-chat` block (`@nocobase/agent-chat`, installed with `shadcn add @nocobase/agent-chat` into `client/extensions/nocobase-agent-chat/`; its README is `ui-library/registry/agents/agent-chat/README.md` in the NocoBase repository), which the application owns and builds on this entry. What stays here is what has to stay consistent across upgrades: `ChatProvider` around the application's routes (panel state, ⌘J / Ctrl+J, `?chat=<id|new|history>` links, page context, the one subscription to the per-user conversations topic while the chat is available, and optionally `conversationPath`, the application's full-page route of a conversation), `useChatPanel()` (`available` is false without the provider), `chatLinkRoutes(base)` (links under a path the application chooses that open the panel), `useChatContextSource` / `useChatFilterSource` for pages to say what they show, and `ChatExtensionsContext`, with which the application adds items among a conversation's messages (`useTimelineItems`), renders under a message (`renderMessageExtra`), words the news it delivers (`newsText`) and shows a news notice as a card of its own (`renderNews`).
|
|
191
|
+
- The data hooks `useChatAgents`, `useConversation`, `useConversationMessages` (the newest page first, `loadOlder`, newer messages with `messages?after=<lastSeq>` on each announcement and polled while a run is open, optimistic messages through `dispatch`), `useConversationList(query)` (an infinite query over the viewer's conversations), `useSendMessage`, `useConversationActions` and `useChatApi`, keyed by `chatKeys`; `useLiveRunEvents(runId)` (a run's transcript kept current while it runs) and `useConversationSources()` (where a conversation can start from, translated); the pure models `timelineOrder`, `newConversationAgent`, `noticeText`, `liveStepsView` and `stepLineText`, and `contextChips`, `buildPageContext`, `itemKey`, `selectionPreview`, `filterText` and `SOURCE_ATTRIBUTE` for the context chips; the panel's state helpers (`CHAT_PANEL_STORAGE_KEY`, `CHAT_PARAM`, `CHAT_DOCK_QUERY`, `CHAT_MOBILE_QUERY`, `readPanelState`, `isChatShortcut`, `modifierKeyLabel`); `ChatPanelScope`, `useChatPageTracking`, `CHAT_PANEL_ID` and `CHAT_PANEL_ATTRIBUTE` for a full-page view; and the kit's `AgentAvatar`, `useAgentText` and `useFormatters`. The data hooks read and write this plugin's cache (`agentsQueryClient()`) and word their toasts in its namespace whatever is above them, so a chat UI needs only `ChatProvider` and no `withAgents` wrapper. `client/runs` also exports `useRunEvents`, `useRealtimeTopic` and `useAgentsApi`, and `client/kit` exports `useFormatters`.
|
|
192
|
+
- `@nocobase/app-plugin-agents/client/profile` exports `DefaultAgentPreference`: the person's default chat agent, for the application's preferences page. The agents page shows the system default chat agent at its top, above the list, changed there with a select by who manages `agents.agents` and shown as text to everyone else, and the new-agent dialog starts from a preset (`GET /api/agents/presets`).
|
|
193
|
+
- `@nocobase/app-plugin-agents/client/config` exports `AgentActionCatalogContext`: the agent editor's business actions come from the server (`GET /api/agents/actions`: what the application offers, none without it) unless an application gives another catalog.
|
|
194
|
+
|
|
195
|
+
Each exported component brings the plugin's translations and its own query cache, so it works inside another plugin's tree.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIvE,QAAA,MAAM,SAAS,EAAE,YAKf,CAAC;AAEH,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { defineCliPlugin } from '@nocobase/app-cli';
|
|
2
|
+
import RunnerToken from './runner-token.js';
|
|
3
|
+
const cliPlugin = defineCliPlugin({
|
|
4
|
+
packageName: '@nocobase/app-plugin-agents',
|
|
5
|
+
description: "Manage the agents and the runners that run this application's work.",
|
|
6
|
+
commands: { 'runner-token': RunnerToken },
|
|
7
|
+
});
|
|
8
|
+
export default cliPlugin;
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAqB,MAAM,mBAAmB,CAAC;AAEvE,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAE5C,MAAM,SAAS,GAAiB,eAAe,CAAC;IAC9C,WAAW,EAAE,6BAA6B;IAC1C,WAAW,EACT,qEAAqE;IACvE,QAAQ,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE;CAC1C,CAAC,CAAC;AAEH,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type AgentTool } from '@nocobase/agent-protocol';
|
|
2
|
+
import { AppCommand } from '@nocobase/app-cli';
|
|
3
|
+
import type { Interfaces } from '@oclif/core';
|
|
4
|
+
/** What `agents runner-token` returns, and the `result` of its `--json` document. */
|
|
5
|
+
export interface RunnerTokenResult {
|
|
6
|
+
readonly token: string;
|
|
7
|
+
readonly trust: 'team' | 'ownerOnly';
|
|
8
|
+
/** The coding tools the runner may run; null for every tool. */
|
|
9
|
+
readonly enabledTools: readonly AgentTool[] | null;
|
|
10
|
+
readonly expiresAt: string;
|
|
11
|
+
}
|
|
12
|
+
export default class RunnerToken extends AppCommand {
|
|
13
|
+
static summary: string;
|
|
14
|
+
static flags: {
|
|
15
|
+
trust: Interfaces.OptionFlag<string>;
|
|
16
|
+
owner: Interfaces.OptionFlag<string | undefined>;
|
|
17
|
+
tools: Interfaces.OptionFlag<string | undefined>;
|
|
18
|
+
};
|
|
19
|
+
run(): Promise<RunnerTokenResult>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=runner-token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner-token.d.ts","sourceRoot":"","sources":["../../cli/runner-token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,qFAAqF;AACrF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC;IACrC,gEAAgE;IAChE,QAAQ,CAAC,YAAY,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAAC;IACnD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,UAAU;IACjD,OAAgB,OAAO,SACqD;IAC5E,OAAgB,KAAK,EAAE;QACrB,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QACjD,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;KAClD,CAaC;IAEW,GAAG,IAAI,OAAO,CAAC,iBAAiB,CAAC;CAoC/C"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { AGENT_TOOLS } from '@nocobase/agent-protocol';
|
|
2
|
+
import { AppCommand } from '@nocobase/app-cli';
|
|
3
|
+
import { Flags } from '@oclif/core';
|
|
4
|
+
export default class RunnerToken extends AppCommand {
|
|
5
|
+
static summary = 'Create a one-time token a runner registers with (valid for 10 minutes).';
|
|
6
|
+
static flags = {
|
|
7
|
+
trust: Flags.string({
|
|
8
|
+
default: 'ownerOnly',
|
|
9
|
+
options: ['team', 'ownerOnly'],
|
|
10
|
+
description: 'team runs anyone’s work; ownerOnly runs only work the owner started.',
|
|
11
|
+
}),
|
|
12
|
+
owner: Flags.string({
|
|
13
|
+
description: 'The user id that owns the runner (required for ownerOnly).',
|
|
14
|
+
}),
|
|
15
|
+
tools: Flags.string({
|
|
16
|
+
description: `The coding tools the runner may run, comma-separated (${AGENT_TOOLS.join(', ')}); every tool when omitted. They can be changed on the Runtimes page later.`,
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
async run() {
|
|
20
|
+
const { flags } = await this.parse(RunnerToken);
|
|
21
|
+
if (flags.trust === 'ownerOnly' && !flags.owner)
|
|
22
|
+
this.error('An ownerOnly runner needs --owner <user id>.');
|
|
23
|
+
const tools = flags.tools
|
|
24
|
+
?.split(',')
|
|
25
|
+
.map((tool) => tool.trim())
|
|
26
|
+
.filter(Boolean);
|
|
27
|
+
const unknown = tools?.filter((tool) => !AGENT_TOOLS.includes(tool));
|
|
28
|
+
if (unknown?.length)
|
|
29
|
+
this.error(`Unknown coding tool: ${unknown.join(', ')}. Choose from ${AGENT_TOOLS.join(', ')}.`);
|
|
30
|
+
if (tools && tools.length === 0)
|
|
31
|
+
this.error('--tools needs at least one coding tool.');
|
|
32
|
+
// Loaded here rather than at the top of the file: the command tree imports this module for `--help` too.
|
|
33
|
+
const { agentsToken } = await import('../server/tokens.js');
|
|
34
|
+
const created = await this.withApp(async ({ app }) => {
|
|
35
|
+
await app.registerProviders();
|
|
36
|
+
return app.container
|
|
37
|
+
.resolve(agentsToken)
|
|
38
|
+
.runners.createRegistrationToken(flags.owner ?? null, {
|
|
39
|
+
trust: flags.trust,
|
|
40
|
+
...(tools ? { enabledTools: tools } : {}),
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
this.log(created.token);
|
|
44
|
+
return {
|
|
45
|
+
token: created.token,
|
|
46
|
+
trust: created.trust,
|
|
47
|
+
enabledTools: created.enabledTools,
|
|
48
|
+
expiresAt: created.expiresAt,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=runner-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner-token.js","sourceRoot":"","sources":["../../cli/runner-token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAYpC,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,UAAU;IACjD,MAAM,CAAU,OAAO,GACrB,yEAAyE,CAAC;IAC5E,MAAM,CAAU,KAAK,GAIjB;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;YAC9B,WAAW,EACT,sEAAsE;SACzE,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,4DAA4D;SAC1E,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,yDAAyD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,6EAA6E;SAC1K,CAAC;KACH,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,KAAK,CAAC,KAAK,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,KAAK;YAC7C,IAAI,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;YACvB,EAAE,KAAK,CAAC,GAAG,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B,MAAM,CAAC,OAAO,CAAC,CAAC;QACnB,MAAM,OAAO,GAAG,KAAK,EAAE,MAAM,CAC3B,CAAC,IAAI,EAAE,EAAE,CAAC,CAAE,WAAiC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC7D,CAAC;QACF,IAAI,OAAO,EAAE,MAAM;YACjB,IAAI,CAAC,KAAK,CACR,wBAAwB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACrF,CAAC;QACJ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACxD,yGAAyG;QACzG,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;YACnD,MAAM,GAAG,CAAC,iBAAiB,EAAE,CAAC;YAC9B,OAAO,GAAG,CAAC,SAAS;iBACjB,OAAO,CAAC,WAAW,CAAC;iBACpB,OAAO,CAAC,uBAAuB,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;gBACpD,KAAK,EAAE,KAAK,CAAC,KAA6B;gBAC1C,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACzD,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO;YACL,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC;IACJ,CAAC"}
|