@nocobase/app-plugin-projects 0.0.0-stage → 0.1.0-beta.10
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 +376 -0
- package/README.md +281 -2
- package/dist/client/api/changed-issues.d.ts +12 -0
- package/dist/client/api/changed-issues.d.ts.map +1 -0
- package/dist/client/api/changed-issues.js +30 -0
- package/dist/client/api/changed-issues.js.map +1 -0
- package/dist/client/api/client.d.ts +99 -0
- package/dist/client/api/client.d.ts.map +1 -0
- package/dist/client/api/client.js +246 -0
- package/dist/client/api/client.js.map +1 -0
- package/dist/client/api/keys.d.ts +32 -0
- package/dist/client/api/keys.d.ts.map +1 -0
- package/dist/client/api/keys.js +53 -0
- package/dist/client/api/keys.js.map +1 -0
- package/dist/client/components/attachment-list.d.ts +77 -0
- package/dist/client/components/attachment-list.d.ts.map +1 -0
- package/dist/client/components/attachment-list.js +147 -0
- package/dist/client/components/attachment-list.js.map +1 -0
- package/dist/client/components/data-table-column-header.d.ts +14 -0
- package/dist/client/components/data-table-column-header.d.ts.map +1 -0
- package/dist/client/components/data-table-column-header.js +39 -0
- package/dist/client/components/data-table-column-header.js.map +1 -0
- package/dist/client/components/data-table-pagination.d.ts +15 -0
- package/dist/client/components/data-table-pagination.d.ts.map +1 -0
- package/dist/client/components/data-table-pagination.js +41 -0
- package/dist/client/components/data-table-pagination.js.map +1 -0
- package/dist/client/components/data-table-view-options.d.ts +14 -0
- package/dist/client/components/data-table-view-options.d.ts.map +1 -0
- package/dist/client/components/data-table-view-options.js +18 -0
- package/dist/client/components/data-table-view-options.js.map +1 -0
- package/dist/client/components/data-table-virtual.d.ts +12 -0
- package/dist/client/components/data-table-virtual.d.ts.map +1 -0
- package/dist/client/components/data-table-virtual.js +38 -0
- package/dist/client/components/data-table-virtual.js.map +1 -0
- package/dist/client/components/data-table.d.ts +49 -0
- package/dist/client/components/data-table.d.ts.map +1 -0
- package/dist/client/components/data-table.js +56 -0
- package/dist/client/components/data-table.js.map +1 -0
- package/dist/client/components/date-picker.d.ts +44 -0
- package/dist/client/components/date-picker.d.ts.map +1 -0
- package/dist/client/components/date-picker.js +54 -0
- package/dist/client/components/date-picker.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 +16 -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/pm-api-key-tag.d.ts +6 -0
- package/dist/client/components/pm-api-key-tag.d.ts.map +1 -0
- package/dist/client/components/pm-api-key-tag.js +10 -0
- package/dist/client/components/pm-api-key-tag.js.map +1 -0
- package/dist/client/components/pm-badges.d.ts +34 -0
- package/dist/client/components/pm-badges.d.ts.map +1 -0
- package/dist/client/components/pm-badges.js +46 -0
- package/dist/client/components/pm-badges.js.map +1 -0
- package/dist/client/components/pm-description-image.d.ts +4 -0
- package/dist/client/components/pm-description-image.d.ts.map +1 -0
- package/dist/client/components/pm-description-image.js +61 -0
- package/dist/client/components/pm-description-image.js.map +1 -0
- package/dist/client/components/pm-executor-select.d.ts +34 -0
- package/dist/client/components/pm-executor-select.d.ts.map +1 -0
- package/dist/client/components/pm-executor-select.js +66 -0
- package/dist/client/components/pm-executor-select.js.map +1 -0
- package/dist/client/components/pm-expandable-textarea.d.ts +7 -0
- package/dist/client/components/pm-expandable-textarea.d.ts.map +1 -0
- package/dist/client/components/pm-expandable-textarea.js +18 -0
- package/dist/client/components/pm-expandable-textarea.js.map +1 -0
- package/dist/client/components/pm-kind-icon.d.ts +7 -0
- package/dist/client/components/pm-kind-icon.d.ts.map +1 -0
- package/dist/client/components/pm-kind-icon.js +12 -0
- package/dist/client/components/pm-kind-icon.js.map +1 -0
- package/dist/client/components/pm-labels.d.ts +28 -0
- package/dist/client/components/pm-labels.d.ts.map +1 -0
- package/dist/client/components/pm-labels.js +32 -0
- package/dist/client/components/pm-labels.js.map +1 -0
- package/dist/client/components/pm-live.d.ts +14 -0
- package/dist/client/components/pm-live.d.ts.map +1 -0
- package/dist/client/components/pm-live.js +19 -0
- package/dist/client/components/pm-live.js.map +1 -0
- package/dist/client/components/pm-markdown-toc.d.ts +12 -0
- package/dist/client/components/pm-markdown-toc.d.ts.map +1 -0
- package/dist/client/components/pm-markdown-toc.js +47 -0
- package/dist/client/components/pm-markdown-toc.js.map +1 -0
- package/dist/client/components/pm-markdown.d.ts +15 -0
- package/dist/client/components/pm-markdown.d.ts.map +1 -0
- package/dist/client/components/pm-markdown.js +62 -0
- package/dist/client/components/pm-markdown.js.map +1 -0
- package/dist/client/components/pm-multi-select.d.ts +26 -0
- package/dist/client/components/pm-multi-select.d.ts.map +1 -0
- package/dist/client/components/pm-multi-select.js +48 -0
- package/dist/client/components/pm-multi-select.js.map +1 -0
- package/dist/client/components/pm-property-fields.d.ts +47 -0
- package/dist/client/components/pm-property-fields.d.ts.map +1 -0
- package/dist/client/components/pm-property-fields.js +74 -0
- package/dist/client/components/pm-property-fields.js.map +1 -0
- package/dist/client/components/pm-rich-text-editor.d.ts +53 -0
- package/dist/client/components/pm-rich-text-editor.d.ts.map +1 -0
- package/dist/client/components/pm-rich-text-editor.js +309 -0
- package/dist/client/components/pm-rich-text-editor.js.map +1 -0
- package/dist/client/components/pm-rich-text-extensions.d.ts +40 -0
- package/dist/client/components/pm-rich-text-extensions.d.ts.map +1 -0
- package/dist/client/components/pm-rich-text-extensions.js +178 -0
- package/dist/client/components/pm-rich-text-extensions.js.map +1 -0
- package/dist/client/components/pm-scroll-parent.d.ts +10 -0
- package/dist/client/components/pm-scroll-parent.d.ts.map +1 -0
- package/dist/client/components/pm-scroll-parent.js +19 -0
- package/dist/client/components/pm-scroll-parent.js.map +1 -0
- package/dist/client/components/pm-shortcut-keys.d.ts +16 -0
- package/dist/client/components/pm-shortcut-keys.d.ts.map +1 -0
- package/dist/client/components/pm-shortcut-keys.js +46 -0
- package/dist/client/components/pm-shortcut-keys.js.map +1 -0
- package/dist/client/components/pm-shortcuts.d.ts +21 -0
- package/dist/client/components/pm-shortcuts.d.ts.map +1 -0
- package/dist/client/components/pm-shortcuts.js +71 -0
- package/dist/client/components/pm-shortcuts.js.map +1 -0
- package/dist/client/components/pm-states.d.ts +31 -0
- package/dist/client/components/pm-states.d.ts.map +1 -0
- package/dist/client/components/pm-states.js +46 -0
- package/dist/client/components/pm-states.js.map +1 -0
- package/dist/client/components/pm-tag.d.ts +18 -0
- package/dist/client/components/pm-tag.d.ts.map +1 -0
- package/dist/client/components/pm-tag.js +14 -0
- package/dist/client/components/pm-tag.js.map +1 -0
- package/dist/client/components/pm-tones.d.ts +16 -0
- package/dist/client/components/pm-tones.d.ts.map +1 -0
- package/dist/client/components/pm-tones.js +26 -0
- package/dist/client/components/pm-tones.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-drawer.d.ts +6 -0
- package/dist/client/components/route-drawer.d.ts.map +1 -0
- package/dist/client/components/route-drawer.js +7 -0
- package/dist/client/components/route-drawer.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/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-group.d.ts +8 -0
- package/dist/client/components/ui/button-group.d.ts.map +1 -0
- package/dist/client/components/ui/button-group.js +23 -0
- package/dist/client/components/ui/button-group.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/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/command.d.ts +20 -0
- package/dist/client/components/ui/command.d.ts.map +1 -0
- package/dist/client/components/ui/command.js +35 -0
- package/dist/client/components/ui/command.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/kbd.d.ts +5 -0
- package/dist/client/components/ui/kbd.d.ts.map +1 -0
- package/dist/client/components/ui/kbd.js +10 -0
- package/dist/client/components/ui/kbd.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/progress.d.ts +9 -0
- package/dist/client/components/ui/progress.d.ts.map +1 -0
- package/dist/client/components/ui/progress.js +20 -0
- package/dist/client/components/ui/progress.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/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/toggle-group.d.ts +12 -0
- package/dist/client/components/ui/toggle-group.d.ts.map +1 -0
- package/dist/client/components/ui/toggle-group.js +24 -0
- package/dist/client/components/ui/toggle-group.js.map +1 -0
- package/dist/client/components/ui/toggle.d.ts +12 -0
- package/dist/client/components/ui/toggle.d.ts.map +1 -0
- package/dist/client/components/ui/toggle.js +29 -0
- package/dist/client/components/ui/toggle.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-default-tab.d.ts +7 -0
- package/dist/client/components/use-default-tab.d.ts.map +1 -0
- package/dist/client/components/use-default-tab.js +13 -0
- package/dist/client/components/use-default-tab.js.map +1 -0
- package/dist/client/components/use-new-issue-shortcut.d.ts +12 -0
- package/dist/client/components/use-new-issue-shortcut.d.ts.map +1 -0
- package/dist/client/components/use-new-issue-shortcut.js +43 -0
- package/dist/client/components/use-new-issue-shortcut.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/config.d.ts +4 -0
- package/dist/client/config.d.ts.map +1 -0
- package/dist/client/config.js +12 -0
- package/dist/client/config.js.map +1 -0
- package/dist/client/hooks/use-api-key-actors.d.ts +7 -0
- package/dist/client/hooks/use-api-key-actors.d.ts.map +1 -0
- package/dist/client/hooks/use-api-key-actors.js +18 -0
- package/dist/client/hooks/use-api-key-actors.js.map +1 -0
- package/dist/client/hooks/use-attachment-uploads.d.ts +33 -0
- package/dist/client/hooks/use-attachment-uploads.d.ts.map +1 -0
- package/dist/client/hooks/use-attachment-uploads.js +118 -0
- package/dist/client/hooks/use-attachment-uploads.js.map +1 -0
- package/dist/client/hooks/use-notify.d.ts +17 -0
- package/dist/client/hooks/use-notify.d.ts.map +1 -0
- package/dist/client/hooks/use-notify.js +44 -0
- package/dist/client/hooks/use-notify.js.map +1 -0
- package/dist/client/hooks/use-pm-api.d.ts +4 -0
- package/dist/client/hooks/use-pm-api.d.ts.map +1 -0
- package/dist/client/hooks/use-pm-api.js +9 -0
- package/dist/client/hooks/use-pm-api.js.map +1 -0
- package/dist/client/hooks/use-viewer.d.ts +7 -0
- package/dist/client/hooks/use-viewer.d.ts.map +1 -0
- package/dist/client/hooks/use-viewer.js +18 -0
- package/dist/client/hooks/use-viewer.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/issues.d.ts +35 -0
- package/dist/client/issues.d.ts.map +1 -0
- package/dist/client/issues.js +48 -0
- package/dist/client/issues.js.map +1 -0
- package/dist/client/kit/intake-draft.d.ts +21 -0
- package/dist/client/kit/intake-draft.d.ts.map +1 -0
- package/dist/client/kit/intake-draft.js +20 -0
- package/dist/client/kit/intake-draft.js.map +1 -0
- package/dist/client/kit/page-context.d.ts +75 -0
- package/dist/client/kit/page-context.d.ts.map +1 -0
- package/dist/client/kit/page-context.js +92 -0
- package/dist/client/kit/page-context.js.map +1 -0
- package/dist/client/kit/page-slots.d.ts +13 -0
- package/dist/client/kit/page-slots.d.ts.map +1 -0
- package/dist/client/kit/page-slots.js +19 -0
- package/dist/client/kit/page-slots.js.map +1 -0
- package/dist/client/kit/plans/api.d.ts +46 -0
- package/dist/client/kit/plans/api.d.ts.map +1 -0
- package/dist/client/kit/plans/api.js +137 -0
- package/dist/client/kit/plans/api.js.map +1 -0
- package/dist/client/kit/plans/lookup.d.ts +27 -0
- package/dist/client/kit/plans/lookup.d.ts.map +1 -0
- package/dist/client/kit/plans/lookup.js +136 -0
- package/dist/client/kit/plans/lookup.js.map +1 -0
- package/dist/client/kit/plans/model.d.ts +94 -0
- package/dist/client/kit/plans/model.d.ts.map +1 -0
- package/dist/client/kit/plans/model.js +307 -0
- package/dist/client/kit/plans/model.js.map +1 -0
- package/dist/client/kit/plans/plan-card.d.ts +29 -0
- package/dist/client/kit/plans/plan-card.d.ts.map +1 -0
- package/dist/client/kit/plans/plan-card.js +105 -0
- package/dist/client/kit/plans/plan-card.js.map +1 -0
- package/dist/client/kit/plans/plan-confirm.d.ts +15 -0
- package/dist/client/kit/plans/plan-confirm.d.ts.map +1 -0
- package/dist/client/kit/plans/plan-confirm.js +39 -0
- package/dist/client/kit/plans/plan-confirm.js.map +1 -0
- package/dist/client/kit/plans/plan-editor.d.ts +42 -0
- package/dist/client/kit/plans/plan-editor.d.ts.map +1 -0
- package/dist/client/kit/plans/plan-editor.js +270 -0
- package/dist/client/kit/plans/plan-editor.js.map +1 -0
- package/dist/client/kit/plans/plan-list-item.d.ts +18 -0
- package/dist/client/kit/plans/plan-list-item.d.ts.map +1 -0
- package/dist/client/kit/plans/plan-list-item.js +23 -0
- package/dist/client/kit/plans/plan-list-item.js.map +1 -0
- package/dist/client/kit/plans/plan-row.d.ts +21 -0
- package/dist/client/kit/plans/plan-row.d.ts.map +1 -0
- package/dist/client/kit/plans/plan-row.js +109 -0
- package/dist/client/kit/plans/plan-row.js.map +1 -0
- package/dist/client/kit/plans/plan-text.d.ts +52 -0
- package/dist/client/kit/plans/plan-text.d.ts.map +1 -0
- package/dist/client/kit/plans/plan-text.js +96 -0
- package/dist/client/kit/plans/plan-text.js.map +1 -0
- package/dist/client/kit/plans/plan-undo.d.ts +9 -0
- package/dist/client/kit/plans/plan-undo.d.ts.map +1 -0
- package/dist/client/kit/plans/plan-undo.js +67 -0
- package/dist/client/kit/plans/plan-undo.js.map +1 -0
- package/dist/client/kit/plans/tones.d.ts +8 -0
- package/dist/client/kit/plans/tones.d.ts.map +1 -0
- package/dist/client/kit/plans/tones.js +18 -0
- package/dist/client/kit/plans/tones.js.map +1 -0
- package/dist/client/kit/plans/use-plan.d.ts +24 -0
- package/dist/client/kit/plans/use-plan.d.ts.map +1 -0
- package/dist/client/kit/plans/use-plan.js +102 -0
- package/dist/client/kit/plans/use-plan.js.map +1 -0
- package/dist/client/kit.d.ts +68 -0
- package/dist/client/kit.d.ts.map +1 -0
- package/dist/client/kit.js +74 -0
- package/dist/client/kit.js.map +1 -0
- package/dist/client/lib/format.d.ts +22 -0
- package/dist/client/lib/format.d.ts.map +1 -0
- package/dist/client/lib/format.js +103 -0
- package/dist/client/lib/format.js.map +1 -0
- package/dist/client/lib/intake-wait.d.ts +16 -0
- package/dist/client/lib/intake-wait.d.ts.map +1 -0
- package/dist/client/lib/intake-wait.js +12 -0
- package/dist/client/lib/intake-wait.js.map +1 -0
- package/dist/client/lib/kind-order.d.ts +4 -0
- package/dist/client/lib/kind-order.d.ts.map +1 -0
- package/dist/client/lib/kind-order.js +11 -0
- package/dist/client/lib/kind-order.js.map +1 -0
- package/dist/client/lib/kinds.d.ts +13 -0
- package/dist/client/lib/kinds.d.ts.map +1 -0
- package/dist/client/lib/kinds.js +69 -0
- package/dist/client/lib/kinds.js.map +1 -0
- package/dist/client/lib/mentions.d.ts +25 -0
- package/dist/client/lib/mentions.d.ts.map +1 -0
- package/dist/client/lib/mentions.js +33 -0
- package/dist/client/lib/mentions.js.map +1 -0
- package/dist/client/lib/permissions.d.ts +39 -0
- package/dist/client/lib/permissions.d.ts.map +1 -0
- package/dist/client/lib/permissions.js +73 -0
- package/dist/client/lib/permissions.js.map +1 -0
- package/dist/client/lib/principal-name.d.ts +7 -0
- package/dist/client/lib/principal-name.d.ts.map +1 -0
- package/dist/client/lib/principal-name.js +10 -0
- package/dist/client/lib/principal-name.js.map +1 -0
- package/dist/client/lib/remark-cjk-autolink.d.ts +24 -0
- package/dist/client/lib/remark-cjk-autolink.d.ts.map +1 -0
- package/dist/client/lib/remark-cjk-autolink.js +118 -0
- package/dist/client/lib/remark-cjk-autolink.js.map +1 -0
- package/dist/client/lib/status-events.d.ts +21 -0
- package/dist/client/lib/status-events.d.ts.map +1 -0
- package/dist/client/lib/status-events.js +31 -0
- package/dist/client/lib/status-events.js.map +1 -0
- package/dist/client/lib/status.d.ts +22 -0
- package/dist/client/lib/status.d.ts.map +1 -0
- package/dist/client/lib/status.js +53 -0
- package/dist/client/lib/status.js.map +1 -0
- package/dist/client/locales/en-US.d.ts +898 -0
- package/dist/client/locales/en-US.d.ts.map +1 -0
- package/dist/client/locales/en-US.js +893 -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/plans.en-US.d.ts +270 -0
- package/dist/client/locales/plans.en-US.d.ts.map +1 -0
- package/dist/client/locales/plans.en-US.js +267 -0
- package/dist/client/locales/plans.en-US.js.map +1 -0
- package/dist/client/locales/plans.zh-CN.d.ts +5 -0
- package/dist/client/locales/plans.zh-CN.d.ts.map +1 -0
- package/dist/client/locales/plans.zh-CN.js +267 -0
- package/dist/client/locales/plans.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 +860 -0
- package/dist/client/locales/zh-CN.js.map +1 -0
- package/dist/client/pages/config/general.d.ts +8 -0
- package/dist/client/pages/config/general.d.ts.map +1 -0
- package/dist/client/pages/config/general.js +65 -0
- package/dist/client/pages/config/general.js.map +1 -0
- package/dist/client/pages/config/labels/create-label-form.d.ts +11 -0
- package/dist/client/pages/config/labels/create-label-form.d.ts.map +1 -0
- package/dist/client/pages/config/labels/create-label-form.js +25 -0
- package/dist/client/pages/config/labels/create-label-form.js.map +1 -0
- package/dist/client/pages/config/labels/label-row.d.ts +13 -0
- package/dist/client/pages/config/labels/label-row.d.ts.map +1 -0
- package/dist/client/pages/config/labels/label-row.js +42 -0
- package/dist/client/pages/config/labels/label-row.js.map +1 -0
- package/dist/client/pages/config/labels.d.ts +7 -0
- package/dist/client/pages/config/labels.d.ts.map +1 -0
- package/dist/client/pages/config/labels.js +70 -0
- package/dist/client/pages/config/labels.js.map +1 -0
- package/dist/client/pages/config/members/emails.d.ts +4 -0
- package/dist/client/pages/config/members/emails.d.ts.map +1 -0
- package/dist/client/pages/config/members/emails.js +15 -0
- package/dist/client/pages/config/members/emails.js.map +1 -0
- package/dist/client/pages/config/members/invitations-section.d.ts +7 -0
- package/dist/client/pages/config/members/invitations-section.d.ts.map +1 -0
- package/dist/client/pages/config/members/invitations-section.js +140 -0
- package/dist/client/pages/config/members/invitations-section.js.map +1 -0
- package/dist/client/pages/config/members/invite-dialog.d.ts +24 -0
- package/dist/client/pages/config/members/invite-dialog.d.ts.map +1 -0
- package/dist/client/pages/config/members/invite-dialog.js +126 -0
- package/dist/client/pages/config/members/invite-dialog.js.map +1 -0
- package/dist/client/pages/config/section-heading.d.ts +9 -0
- package/dist/client/pages/config/section-heading.d.ts.map +1 -0
- package/dist/client/pages/config/section-heading.js +6 -0
- package/dist/client/pages/config/section-heading.js.map +1 -0
- package/dist/client/pages/config/settings-page-header.d.ts +13 -0
- package/dist/client/pages/config/settings-page-header.d.ts.map +1 -0
- package/dist/client/pages/config/settings-page-header.js +14 -0
- package/dist/client/pages/config/settings-page-header.js.map +1 -0
- package/dist/client/pages/intake/intake-ai-progress.d.ts +12 -0
- package/dist/client/pages/intake/intake-ai-progress.d.ts.map +1 -0
- package/dist/client/pages/intake/intake-ai-progress.js +47 -0
- package/dist/client/pages/intake/intake-ai-progress.js.map +1 -0
- package/dist/client/pages/intake/intake-files.d.ts +9 -0
- package/dist/client/pages/intake/intake-files.d.ts.map +1 -0
- package/dist/client/pages/intake/intake-files.js +68 -0
- package/dist/client/pages/intake/intake-files.js.map +1 -0
- package/dist/client/pages/intake/intake-panel.d.ts +27 -0
- package/dist/client/pages/intake/intake-panel.d.ts.map +1 -0
- package/dist/client/pages/intake/intake-panel.js +338 -0
- package/dist/client/pages/intake/intake-panel.js.map +1 -0
- package/dist/client/pages/intake/intake-revise.d.ts +25 -0
- package/dist/client/pages/intake/intake-revise.d.ts.map +1 -0
- package/dist/client/pages/intake/intake-revise.js +44 -0
- package/dist/client/pages/intake/intake-revise.js.map +1 -0
- package/dist/client/pages/intake/invalid-draft.d.ts +10 -0
- package/dist/client/pages/intake/invalid-draft.d.ts.map +1 -0
- package/dist/client/pages/intake/invalid-draft.js +28 -0
- package/dist/client/pages/intake/invalid-draft.js.map +1 -0
- package/dist/client/pages/intake/use-intake-ai.d.ts +13 -0
- package/dist/client/pages/intake/use-intake-ai.d.ts.map +1 -0
- package/dist/client/pages/intake/use-intake-ai.js +37 -0
- package/dist/client/pages/intake/use-intake-ai.js.map +1 -0
- package/dist/client/pages/intake/use-intake-breakdown.d.ts +15 -0
- package/dist/client/pages/intake/use-intake-breakdown.d.ts.map +1 -0
- package/dist/client/pages/intake/use-intake-breakdown.js +48 -0
- package/dist/client/pages/intake/use-intake-breakdown.js.map +1 -0
- package/dist/client/pages/intake/use-intake-uploads.d.ts +25 -0
- package/dist/client/pages/intake/use-intake-uploads.d.ts.map +1 -0
- package/dist/client/pages/intake/use-intake-uploads.js +71 -0
- package/dist/client/pages/intake/use-intake-uploads.js.map +1 -0
- package/dist/client/pages/issues/board/board-model.d.ts +39 -0
- package/dist/client/pages/issues/board/board-model.d.ts.map +1 -0
- package/dist/client/pages/issues/board/board-model.js +59 -0
- package/dist/client/pages/issues/board/board-model.js.map +1 -0
- package/dist/client/pages/issues/board/use-board-move.d.ts +14 -0
- package/dist/client/pages/issues/board/use-board-move.d.ts.map +1 -0
- package/dist/client/pages/issues/board/use-board-move.js +71 -0
- package/dist/client/pages/issues/board/use-board-move.js.map +1 -0
- package/dist/client/pages/issues/detail/comment-cache.d.ts +10 -0
- package/dist/client/pages/issues/detail/comment-cache.d.ts.map +1 -0
- package/dist/client/pages/issues/detail/comment-cache.js +67 -0
- package/dist/client/pages/issues/detail/comment-cache.js.map +1 -0
- package/dist/client/pages/issues/detail/new-subtask.d.ts +13 -0
- package/dist/client/pages/issues/detail/new-subtask.d.ts.map +1 -0
- package/dist/client/pages/issues/detail/new-subtask.js +183 -0
- package/dist/client/pages/issues/detail/new-subtask.js.map +1 -0
- package/dist/client/pages/issues/detail/reaction-model.d.ts +11 -0
- package/dist/client/pages/issues/detail/reaction-model.d.ts.map +1 -0
- package/dist/client/pages/issues/detail/reaction-model.js +41 -0
- package/dist/client/pages/issues/detail/reaction-model.js.map +1 -0
- package/dist/client/pages/issues/detail/subtask-model.d.ts +14 -0
- package/dist/client/pages/issues/detail/subtask-model.d.ts.map +1 -0
- package/dist/client/pages/issues/detail/subtask-model.js +25 -0
- package/dist/client/pages/issues/detail/subtask-model.js.map +1 -0
- package/dist/client/pages/issues/detail/timeline.d.ts +45 -0
- package/dist/client/pages/issues/detail/timeline.d.ts.map +1 -0
- package/dist/client/pages/issues/detail/timeline.js +71 -0
- package/dist/client/pages/issues/detail/timeline.js.map +1 -0
- package/dist/client/pages/issues/detail/use-author-label.d.ts +4 -0
- package/dist/client/pages/issues/detail/use-author-label.d.ts.map +1 -0
- package/dist/client/pages/issues/detail/use-author-label.js +14 -0
- package/dist/client/pages/issues/detail/use-author-label.js.map +1 -0
- package/dist/client/pages/issues/detail/use-confirmed-update.d.ts +21 -0
- package/dist/client/pages/issues/detail/use-confirmed-update.d.ts.map +1 -0
- package/dist/client/pages/issues/detail/use-confirmed-update.js +16 -0
- package/dist/client/pages/issues/detail/use-confirmed-update.js.map +1 -0
- package/dist/client/pages/issues/detail/use-issue-activity.d.ts +50 -0
- package/dist/client/pages/issues/detail/use-issue-activity.d.ts.map +1 -0
- package/dist/client/pages/issues/detail/use-issue-activity.js +156 -0
- package/dist/client/pages/issues/detail/use-issue-activity.js.map +1 -0
- package/dist/client/pages/issues/detail/use-issue-page.d.ts +29 -0
- package/dist/client/pages/issues/detail/use-issue-page.d.ts.map +1 -0
- package/dist/client/pages/issues/detail/use-issue-page.js +118 -0
- package/dist/client/pages/issues/detail/use-issue-page.js.map +1 -0
- package/dist/client/pages/issues/detail/use-issue-update.d.ts +12 -0
- package/dist/client/pages/issues/detail/use-issue-update.d.ts.map +1 -0
- package/dist/client/pages/issues/detail/use-issue-update.js +53 -0
- package/dist/client/pages/issues/detail/use-issue-update.js.map +1 -0
- package/dist/client/pages/issues/detail/use-older-activities.d.ts +14 -0
- package/dist/client/pages/issues/detail/use-older-activities.d.ts.map +1 -0
- package/dist/client/pages/issues/detail/use-older-activities.js +35 -0
- package/dist/client/pages/issues/detail/use-older-activities.js.map +1 -0
- package/dist/client/pages/issues/detail/use-older-threads.d.ts +13 -0
- package/dist/client/pages/issues/detail/use-older-threads.d.ts.map +1 -0
- package/dist/client/pages/issues/detail/use-older-threads.js +33 -0
- package/dist/client/pages/issues/detail/use-older-threads.js.map +1 -0
- package/dist/client/pages/issues/filters.d.ts +39 -0
- package/dist/client/pages/issues/filters.d.ts.map +1 -0
- package/dist/client/pages/issues/filters.js +121 -0
- package/dist/client/pages/issues/filters.js.map +1 -0
- package/dist/client/pages/issues/new-issue-button.d.ts +14 -0
- package/dist/client/pages/issues/new-issue-button.d.ts.map +1 -0
- package/dist/client/pages/issues/new-issue-button.js +23 -0
- package/dist/client/pages/issues/new-issue-button.js.map +1 -0
- package/dist/client/pages/issues/new-issue-form.d.ts +25 -0
- package/dist/client/pages/issues/new-issue-form.d.ts.map +1 -0
- package/dist/client/pages/issues/new-issue-form.js +193 -0
- package/dist/client/pages/issues/new-issue-form.js.map +1 -0
- package/dist/client/pages/issues/new.d.ts +13 -0
- package/dist/client/pages/issues/new.d.ts.map +1 -0
- package/dist/client/pages/issues/new.js +96 -0
- package/dist/client/pages/issues/new.js.map +1 -0
- package/dist/client/pages/issues/use-executor-options.d.ts +10 -0
- package/dist/client/pages/issues/use-executor-options.d.ts.map +1 -0
- package/dist/client/pages/issues/use-executor-options.js +23 -0
- package/dist/client/pages/issues/use-executor-options.js.map +1 -0
- package/dist/client/pages/issues/use-issue-pages.d.ts +32 -0
- package/dist/client/pages/issues/use-issue-pages.d.ts.map +1 -0
- package/dist/client/pages/issues/use-issue-pages.js +107 -0
- package/dist/client/pages/issues/use-issue-pages.js.map +1 -0
- package/dist/client/pages/issues/use-mention-candidates.d.ts +9 -0
- package/dist/client/pages/issues/use-mention-candidates.d.ts.map +1 -0
- package/dist/client/pages/issues/use-mention-candidates.js +48 -0
- package/dist/client/pages/issues/use-mention-candidates.js.map +1 -0
- package/dist/client/pages/issues/use-preset-project.d.ts +6 -0
- package/dist/client/pages/issues/use-preset-project.d.ts.map +1 -0
- package/dist/client/pages/issues/use-preset-project.js +11 -0
- package/dist/client/pages/issues/use-preset-project.js.map +1 -0
- package/dist/client/pages/issues/use-url-search.d.ts +22 -0
- package/dist/client/pages/issues/use-url-search.d.ts.map +1 -0
- package/dist/client/pages/issues/use-url-search.js +70 -0
- package/dist/client/pages/issues/use-url-search.js.map +1 -0
- package/dist/client/pages/my-issues/my-issues-model.d.ts +7 -0
- package/dist/client/pages/my-issues/my-issues-model.d.ts.map +1 -0
- package/dist/client/pages/my-issues/my-issues-model.js +8 -0
- package/dist/client/pages/my-issues/my-issues-model.js.map +1 -0
- package/dist/client/pages/plans/detail.d.ts +7 -0
- package/dist/client/pages/plans/detail.d.ts.map +1 -0
- package/dist/client/pages/plans/detail.js +43 -0
- package/dist/client/pages/plans/detail.js.map +1 -0
- package/dist/client/pages/projects/columns.d.ts +8 -0
- package/dist/client/pages/projects/columns.d.ts.map +1 -0
- package/dist/client/pages/projects/columns.js +75 -0
- package/dist/client/pages/projects/columns.js.map +1 -0
- package/dist/client/pages/projects/detail/resource-rules.d.ts +13 -0
- package/dist/client/pages/projects/detail/resource-rules.d.ts.map +1 -0
- package/dist/client/pages/projects/detail/resource-rules.js +24 -0
- package/dist/client/pages/projects/detail/resource-rules.js.map +1 -0
- package/dist/client/pages/projects/detail/use-project-page.d.ts +64 -0
- package/dist/client/pages/projects/detail/use-project-page.d.ts.map +1 -0
- package/dist/client/pages/projects/detail/use-project-page.js +197 -0
- package/dist/client/pages/projects/detail/use-project-page.js.map +1 -0
- package/dist/client/pages/projects/index.d.ts +8 -0
- package/dist/client/pages/projects/index.d.ts.map +1 -0
- package/dist/client/pages/projects/index.js +50 -0
- package/dist/client/pages/projects/index.js.map +1 -0
- package/dist/client/pages/projects/new.d.ts +4 -0
- package/dist/client/pages/projects/new.d.ts.map +1 -0
- package/dist/client/pages/projects/new.js +118 -0
- package/dist/client/pages/projects/new.js.map +1 -0
- package/dist/client/pages/projects/progress.d.ts +25 -0
- package/dist/client/pages/projects/progress.d.ts.map +1 -0
- package/dist/client/pages/projects/progress.js +50 -0
- package/dist/client/pages/projects/progress.js.map +1 -0
- package/dist/client/pages/projects/project-badges.d.ts +14 -0
- package/dist/client/pages/projects/project-badges.d.ts.map +1 -0
- package/dist/client/pages/projects/project-badges.js +15 -0
- package/dist/client/pages/projects/project-badges.js.map +1 -0
- package/dist/client/pages.d.ts +24 -0
- package/dist/client/pages.d.ts.map +1 -0
- package/dist/client/pages.js +34 -0
- package/dist/client/pages.js.map +1 -0
- package/dist/client/plan-model.d.ts +9 -0
- package/dist/client/plan-model.d.ts.map +1 -0
- package/dist/client/plan-model.js +9 -0
- package/dist/client/plan-model.js.map +1 -0
- package/dist/client/plugin.d.ts +14 -0
- package/dist/client/plugin.d.ts.map +1 -0
- package/dist/client/plugin.js +19 -0
- package/dist/client/plugin.js.map +1 -0
- package/dist/client/projects.d.ts +12 -0
- package/dist/client/projects.d.ts.map +1 -0
- package/dist/client/projects.js +12 -0
- package/dist/client/projects.js.map +1 -0
- package/dist/client/providers/query-provider.d.ts +4 -0
- package/dist/client/providers/query-provider.d.ts.map +1 -0
- package/dist/client/providers/query-provider.js +74 -0
- package/dist/client/providers/query-provider.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 +61 -0
- package/dist/client/routes.js.map +1 -0
- package/dist/database/migrations/.manifest.json +73 -0
- package/dist/database/migrations/202609300001_pm_create_members_settings.d.ts +4 -0
- package/dist/database/migrations/202609300001_pm_create_members_settings.d.ts.map +1 -0
- package/dist/database/migrations/202609300001_pm_create_members_settings.js +40 -0
- package/dist/database/migrations/202609300001_pm_create_members_settings.js.map +1 -0
- package/dist/database/migrations/202609300002_pm_create_projects.d.ts +4 -0
- package/dist/database/migrations/202609300002_pm_create_projects.d.ts.map +1 -0
- package/dist/database/migrations/202609300002_pm_create_projects.js +125 -0
- package/dist/database/migrations/202609300002_pm_create_projects.js.map +1 -0
- package/dist/database/migrations/202609300003_pm_create_labels.d.ts +4 -0
- package/dist/database/migrations/202609300003_pm_create_labels.d.ts.map +1 -0
- package/dist/database/migrations/202609300003_pm_create_labels.js +33 -0
- package/dist/database/migrations/202609300003_pm_create_labels.js.map +1 -0
- package/dist/database/migrations/202609300004_pm_create_issues.d.ts +4 -0
- package/dist/database/migrations/202609300004_pm_create_issues.d.ts.map +1 -0
- package/dist/database/migrations/202609300004_pm_create_issues.js +123 -0
- package/dist/database/migrations/202609300004_pm_create_issues.js.map +1 -0
- package/dist/database/migrations/202609300007_pm_create_workflows.d.ts +4 -0
- package/dist/database/migrations/202609300007_pm_create_workflows.d.ts.map +1 -0
- package/dist/database/migrations/202609300007_pm_create_workflows.js +39 -0
- package/dist/database/migrations/202609300007_pm_create_workflows.js.map +1 -0
- package/dist/database/migrations/202610010011_pm_create_checklist_items.d.ts +4 -0
- package/dist/database/migrations/202610010011_pm_create_checklist_items.d.ts.map +1 -0
- package/dist/database/migrations/202610010011_pm_create_checklist_items.js +40 -0
- package/dist/database/migrations/202610010011_pm_create_checklist_items.js.map +1 -0
- package/dist/database/migrations/202610010012_pm_create_approval_requests.d.ts +4 -0
- package/dist/database/migrations/202610010012_pm_create_approval_requests.d.ts.map +1 -0
- package/dist/database/migrations/202610010012_pm_create_approval_requests.js +48 -0
- package/dist/database/migrations/202610010012_pm_create_approval_requests.js.map +1 -0
- package/dist/database/migrations/202610010013_pm_create_issue_dependencies.d.ts +4 -0
- package/dist/database/migrations/202610010013_pm_create_issue_dependencies.d.ts.map +1 -0
- package/dist/database/migrations/202610010013_pm_create_issue_dependencies.js +45 -0
- package/dist/database/migrations/202610010013_pm_create_issue_dependencies.js.map +1 -0
- package/dist/database/migrations/202610010015_pm_create_comments.d.ts +4 -0
- package/dist/database/migrations/202610010015_pm_create_comments.d.ts.map +1 -0
- package/dist/database/migrations/202610010015_pm_create_comments.js +81 -0
- package/dist/database/migrations/202610010015_pm_create_comments.js.map +1 -0
- package/dist/database/migrations/202610010016_pm_create_issue_subscriptions.d.ts +4 -0
- package/dist/database/migrations/202610010016_pm_create_issue_subscriptions.d.ts.map +1 -0
- package/dist/database/migrations/202610010016_pm_create_issue_subscriptions.js +41 -0
- package/dist/database/migrations/202610010016_pm_create_issue_subscriptions.js.map +1 -0
- package/dist/database/migrations/202610010021_pm_create_plans.d.ts +4 -0
- package/dist/database/migrations/202610010021_pm_create_plans.d.ts.map +1 -0
- package/dist/database/migrations/202610010021_pm_create_plans.js +126 -0
- package/dist/database/migrations/202610010021_pm_create_plans.js.map +1 -0
- package/dist/database/migrations/202610010022_pm_create_attachments.d.ts +4 -0
- package/dist/database/migrations/202610010022_pm_create_attachments.d.ts.map +1 -0
- package/dist/database/migrations/202610010022_pm_create_attachments.js +45 -0
- package/dist/database/migrations/202610010022_pm_create_attachments.js.map +1 -0
- package/dist/database/migrations/202610060001_pm_create_plan_issues.d.ts +4 -0
- package/dist/database/migrations/202610060001_pm_create_plan_issues.d.ts.map +1 -0
- package/dist/database/migrations/202610060001_pm_create_plan_issues.js +41 -0
- package/dist/database/migrations/202610060001_pm_create_plan_issues.js.map +1 -0
- package/dist/database/migrations/202610110001_pm_issue_graph_revision.d.ts +4 -0
- package/dist/database/migrations/202610110001_pm_issue_graph_revision.d.ts.map +1 -0
- package/dist/database/migrations/202610110001_pm_issue_graph_revision.js +20 -0
- package/dist/database/migrations/202610110001_pm_issue_graph_revision.js.map +1 -0
- package/dist/database/migrations/202610240010_pm_fixed_statuses.d.ts +4 -0
- package/dist/database/migrations/202610240010_pm_fixed_statuses.d.ts.map +1 -0
- package/dist/database/migrations/202610240010_pm_fixed_statuses.js +189 -0
- package/dist/database/migrations/202610240010_pm_fixed_statuses.js.map +1 -0
- package/dist/database/migrations/202610240011_pm_issue_progress.d.ts +4 -0
- package/dist/database/migrations/202610240011_pm_issue_progress.d.ts.map +1 -0
- package/dist/database/migrations/202610240011_pm_issue_progress.js +19 -0
- package/dist/database/migrations/202610240011_pm_issue_progress.js.map +1 -0
- package/dist/database/migrations/202610240012_pm_issue_acceptance.d.ts +4 -0
- package/dist/database/migrations/202610240012_pm_issue_acceptance.d.ts.map +1 -0
- package/dist/database/migrations/202610240012_pm_issue_acceptance.js +17 -0
- package/dist/database/migrations/202610240012_pm_issue_acceptance.js.map +1 -0
- package/dist/database/seeds/.manifest.json +9 -0
- package/dist/database/seeds/202609300005_pm_default_settings.d.ts +4 -0
- package/dist/database/seeds/202609300005_pm_default_settings.d.ts.map +1 -0
- package/dist/database/seeds/202609300005_pm_default_settings.js +29 -0
- package/dist/database/seeds/202609300005_pm_default_settings.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/server/access/request.d.ts +37 -0
- package/dist/server/access/request.d.ts.map +1 -0
- package/dist/server/access/request.js +62 -0
- package/dist/server/access/request.js.map +1 -0
- package/dist/server/access/viewer.d.ts +30 -0
- package/dist/server/access/viewer.d.ts.map +1 -0
- package/dist/server/access/viewer.js +30 -0
- package/dist/server/access/viewer.js.map +1 -0
- package/dist/server/composition.d.ts +98 -0
- package/dist/server/composition.d.ts.map +1 -0
- package/dist/server/composition.js +223 -0
- package/dist/server/composition.js.map +1 -0
- package/dist/server/domains/attachments/attachment.routes.d.ts +13 -0
- package/dist/server/domains/attachments/attachment.routes.d.ts.map +1 -0
- package/dist/server/domains/attachments/attachment.routes.js +209 -0
- package/dist/server/domains/attachments/attachment.routes.js.map +1 -0
- package/dist/server/domains/attachments/attachment.service.d.ts +85 -0
- package/dist/server/domains/attachments/attachment.service.d.ts.map +1 -0
- package/dist/server/domains/attachments/attachment.service.js +253 -0
- package/dist/server/domains/attachments/attachment.service.js.map +1 -0
- package/dist/server/domains/attachments/attachment.storage.d.ts +69 -0
- package/dist/server/domains/attachments/attachment.storage.d.ts.map +1 -0
- package/dist/server/domains/attachments/attachment.storage.js +64 -0
- package/dist/server/domains/attachments/attachment.storage.js.map +1 -0
- package/dist/server/domains/attachments/attachment.store.d.ts +49 -0
- package/dist/server/domains/attachments/attachment.store.d.ts.map +1 -0
- package/dist/server/domains/attachments/attachment.store.js +95 -0
- package/dist/server/domains/attachments/attachment.store.js.map +1 -0
- package/dist/server/domains/attachments/index.d.ts +5 -0
- package/dist/server/domains/attachments/index.d.ts.map +1 -0
- package/dist/server/domains/attachments/index.js +5 -0
- package/dist/server/domains/attachments/index.js.map +1 -0
- package/dist/server/domains/comments/comment.access.d.ts +10 -0
- package/dist/server/domains/comments/comment.access.d.ts.map +1 -0
- package/dist/server/domains/comments/comment.access.js +35 -0
- package/dist/server/domains/comments/comment.access.js.map +1 -0
- package/dist/server/domains/comments/comment.events.d.ts +42 -0
- package/dist/server/domains/comments/comment.events.d.ts.map +1 -0
- package/dist/server/domains/comments/comment.events.js +2 -0
- package/dist/server/domains/comments/comment.events.js.map +1 -0
- package/dist/server/domains/comments/comment.queries.d.ts +71 -0
- package/dist/server/domains/comments/comment.queries.d.ts.map +1 -0
- package/dist/server/domains/comments/comment.queries.js +164 -0
- package/dist/server/domains/comments/comment.queries.js.map +1 -0
- package/dist/server/domains/comments/comment.routes.d.ts +23 -0
- package/dist/server/domains/comments/comment.routes.d.ts.map +1 -0
- package/dist/server/domains/comments/comment.routes.js +218 -0
- package/dist/server/domains/comments/comment.routes.js.map +1 -0
- package/dist/server/domains/comments/comment.service.d.ts +37 -0
- package/dist/server/domains/comments/comment.service.d.ts.map +1 -0
- package/dist/server/domains/comments/comment.service.js +296 -0
- package/dist/server/domains/comments/comment.service.js.map +1 -0
- package/dist/server/domains/comments/comment.store.d.ts +77 -0
- package/dist/server/domains/comments/comment.store.d.ts.map +1 -0
- package/dist/server/domains/comments/comment.store.js +152 -0
- package/dist/server/domains/comments/comment.store.js.map +1 -0
- package/dist/server/domains/comments/index.d.ts +6 -0
- package/dist/server/domains/comments/index.d.ts.map +1 -0
- package/dist/server/domains/comments/index.js +5 -0
- package/dist/server/domains/comments/index.js.map +1 -0
- package/dist/server/domains/comments/ports.d.ts +62 -0
- package/dist/server/domains/comments/ports.d.ts.map +1 -0
- package/dist/server/domains/comments/ports.js +2 -0
- package/dist/server/domains/comments/ports.js.map +1 -0
- package/dist/server/domains/invitations/index.d.ts +3 -0
- package/dist/server/domains/invitations/index.d.ts.map +1 -0
- package/dist/server/domains/invitations/index.js +3 -0
- package/dist/server/domains/invitations/index.js.map +1 -0
- package/dist/server/domains/invitations/invitation.routes.d.ts +7 -0
- package/dist/server/domains/invitations/invitation.routes.d.ts.map +1 -0
- package/dist/server/domains/invitations/invitation.routes.js +103 -0
- package/dist/server/domains/invitations/invitation.routes.js.map +1 -0
- package/dist/server/domains/invitations/invitation.service.d.ts +38 -0
- package/dist/server/domains/invitations/invitation.service.d.ts.map +1 -0
- package/dist/server/domains/invitations/invitation.service.js +178 -0
- package/dist/server/domains/invitations/invitation.service.js.map +1 -0
- package/dist/server/domains/issues/index.d.ts +10 -0
- package/dist/server/domains/issues/index.d.ts.map +1 -0
- package/dist/server/domains/issues/index.js +9 -0
- package/dist/server/domains/issues/index.js.map +1 -0
- package/dist/server/domains/issues/issue.access.d.ts +42 -0
- package/dist/server/domains/issues/issue.access.d.ts.map +1 -0
- package/dist/server/domains/issues/issue.access.js +109 -0
- package/dist/server/domains/issues/issue.access.js.map +1 -0
- package/dist/server/domains/issues/issue.context.d.ts +120 -0
- package/dist/server/domains/issues/issue.context.d.ts.map +1 -0
- package/dist/server/domains/issues/issue.context.js +116 -0
- package/dist/server/domains/issues/issue.context.js.map +1 -0
- package/dist/server/domains/issues/issue.events.d.ts +58 -0
- package/dist/server/domains/issues/issue.events.d.ts.map +1 -0
- package/dist/server/domains/issues/issue.events.js +2 -0
- package/dist/server/domains/issues/issue.events.js.map +1 -0
- package/dist/server/domains/issues/issue.fields.d.ts +65 -0
- package/dist/server/domains/issues/issue.fields.d.ts.map +1 -0
- package/dist/server/domains/issues/issue.fields.js +296 -0
- package/dist/server/domains/issues/issue.fields.js.map +1 -0
- package/dist/server/domains/issues/issue.projects.d.ts +8 -0
- package/dist/server/domains/issues/issue.projects.d.ts.map +1 -0
- package/dist/server/domains/issues/issue.projects.js +41 -0
- package/dist/server/domains/issues/issue.projects.js.map +1 -0
- package/dist/server/domains/issues/issue.queries.d.ts +70 -0
- package/dist/server/domains/issues/issue.queries.d.ts.map +1 -0
- package/dist/server/domains/issues/issue.queries.js +360 -0
- package/dist/server/domains/issues/issue.queries.js.map +1 -0
- package/dist/server/domains/issues/issue.routes.d.ts +15 -0
- package/dist/server/domains/issues/issue.routes.d.ts.map +1 -0
- package/dist/server/domains/issues/issue.routes.js +311 -0
- package/dist/server/domains/issues/issue.routes.js.map +1 -0
- package/dist/server/domains/issues/issue.service.d.ts +108 -0
- package/dist/server/domains/issues/issue.service.d.ts.map +1 -0
- package/dist/server/domains/issues/issue.service.js +360 -0
- package/dist/server/domains/issues/issue.service.js.map +1 -0
- package/dist/server/domains/issues/issue.status.d.ts +29 -0
- package/dist/server/domains/issues/issue.status.d.ts.map +1 -0
- package/dist/server/domains/issues/issue.status.js +61 -0
- package/dist/server/domains/issues/issue.status.js.map +1 -0
- package/dist/server/domains/issues/issue.store.d.ts +112 -0
- package/dist/server/domains/issues/issue.store.d.ts.map +1 -0
- package/dist/server/domains/issues/issue.store.js +289 -0
- package/dist/server/domains/issues/issue.store.js.map +1 -0
- package/dist/server/domains/issues/ports.d.ts +140 -0
- package/dist/server/domains/issues/ports.d.ts.map +1 -0
- package/dist/server/domains/issues/ports.js +15 -0
- package/dist/server/domains/issues/ports.js.map +1 -0
- package/dist/server/domains/labels/index.d.ts +3 -0
- package/dist/server/domains/labels/index.d.ts.map +1 -0
- package/dist/server/domains/labels/index.js +3 -0
- package/dist/server/domains/labels/index.js.map +1 -0
- package/dist/server/domains/labels/label.events.d.ts +10 -0
- package/dist/server/domains/labels/label.events.d.ts.map +1 -0
- package/dist/server/domains/labels/label.events.js +2 -0
- package/dist/server/domains/labels/label.events.js.map +1 -0
- package/dist/server/domains/labels/label.routes.d.ts +6 -0
- package/dist/server/domains/labels/label.routes.d.ts.map +1 -0
- package/dist/server/domains/labels/label.routes.js +79 -0
- package/dist/server/domains/labels/label.routes.js.map +1 -0
- package/dist/server/domains/labels/label.service.d.ts +23 -0
- package/dist/server/domains/labels/label.service.d.ts.map +1 -0
- package/dist/server/domains/labels/label.service.js +70 -0
- package/dist/server/domains/labels/label.service.js.map +1 -0
- package/dist/server/domains/labels/label.store.d.ts +16 -0
- package/dist/server/domains/labels/label.store.d.ts.map +1 -0
- package/dist/server/domains/labels/label.store.js +44 -0
- package/dist/server/domains/labels/label.store.js.map +1 -0
- package/dist/server/domains/members/index.d.ts +3 -0
- package/dist/server/domains/members/index.d.ts.map +1 -0
- package/dist/server/domains/members/index.js +3 -0
- package/dist/server/domains/members/index.js.map +1 -0
- package/dist/server/domains/members/member.routes.d.ts +11 -0
- package/dist/server/domains/members/member.routes.d.ts.map +1 -0
- package/dist/server/domains/members/member.routes.js +73 -0
- package/dist/server/domains/members/member.routes.js.map +1 -0
- package/dist/server/domains/members/member.service.d.ts +43 -0
- package/dist/server/domains/members/member.service.d.ts.map +1 -0
- package/dist/server/domains/members/member.service.js +64 -0
- package/dist/server/domains/members/member.service.js.map +1 -0
- package/dist/server/domains/members/member.store.d.ts +5 -0
- package/dist/server/domains/members/member.store.d.ts.map +1 -0
- package/dist/server/domains/members/member.store.js +19 -0
- package/dist/server/domains/members/member.store.js.map +1 -0
- package/dist/server/domains/notices/index.d.ts +4 -0
- package/dist/server/domains/notices/index.d.ts.map +1 -0
- package/dist/server/domains/notices/index.js +3 -0
- package/dist/server/domains/notices/index.js.map +1 -0
- package/dist/server/domains/notices/notice.events.d.ts +11 -0
- package/dist/server/domains/notices/notice.events.d.ts.map +1 -0
- package/dist/server/domains/notices/notice.events.js +2 -0
- package/dist/server/domains/notices/notice.events.js.map +1 -0
- package/dist/server/domains/notices/notice.planner.d.ts +28 -0
- package/dist/server/domains/notices/notice.planner.d.ts.map +1 -0
- package/dist/server/domains/notices/notice.planner.js +115 -0
- package/dist/server/domains/notices/notice.planner.js.map +1 -0
- package/dist/server/domains/notices/notice.rules.d.ts +5 -0
- package/dist/server/domains/notices/notice.rules.d.ts.map +1 -0
- package/dist/server/domains/notices/notice.rules.js +222 -0
- package/dist/server/domains/notices/notice.rules.js.map +1 -0
- package/dist/server/domains/notices/ports.d.ts +52 -0
- package/dist/server/domains/notices/ports.d.ts.map +1 -0
- package/dist/server/domains/notices/ports.js +2 -0
- package/dist/server/domains/notices/ports.js.map +1 -0
- package/dist/server/domains/plans/index.d.ts +7 -0
- package/dist/server/domains/plans/index.d.ts.map +1 -0
- package/dist/server/domains/plans/index.js +5 -0
- package/dist/server/domains/plans/index.js.map +1 -0
- package/dist/server/domains/plans/intake/index.d.ts +7 -0
- package/dist/server/domains/plans/intake/index.d.ts.map +1 -0
- package/dist/server/domains/plans/intake/index.js +6 -0
- package/dist/server/domains/plans/intake/index.js.map +1 -0
- package/dist/server/domains/plans/intake/intake.ai.drafts.d.ts +69 -0
- package/dist/server/domains/plans/intake/intake.ai.drafts.d.ts.map +1 -0
- package/dist/server/domains/plans/intake/intake.ai.drafts.js +273 -0
- package/dist/server/domains/plans/intake/intake.ai.drafts.js.map +1 -0
- package/dist/server/domains/plans/intake/intake.ai.events.d.ts +10 -0
- package/dist/server/domains/plans/intake/intake.ai.events.d.ts.map +1 -0
- package/dist/server/domains/plans/intake/intake.ai.events.js +2 -0
- package/dist/server/domains/plans/intake/intake.ai.events.js.map +1 -0
- package/dist/server/domains/plans/intake/intake.ai.organizer.d.ts +45 -0
- package/dist/server/domains/plans/intake/intake.ai.organizer.d.ts.map +1 -0
- package/dist/server/domains/plans/intake/intake.ai.organizer.js +2 -0
- package/dist/server/domains/plans/intake/intake.ai.organizer.js.map +1 -0
- package/dist/server/domains/plans/intake/intake.ai.service.d.ts +68 -0
- package/dist/server/domains/plans/intake/intake.ai.service.d.ts.map +1 -0
- package/dist/server/domains/plans/intake/intake.ai.service.js +432 -0
- package/dist/server/domains/plans/intake/intake.ai.service.js.map +1 -0
- package/dist/server/domains/plans/intake/intake.ai.store.d.ts +37 -0
- package/dist/server/domains/plans/intake/intake.ai.store.d.ts.map +1 -0
- package/dist/server/domains/plans/intake/intake.ai.store.js +32 -0
- package/dist/server/domains/plans/intake/intake.ai.store.js.map +1 -0
- package/dist/server/domains/plans/intake/intake.attach.d.ts +18 -0
- package/dist/server/domains/plans/intake/intake.attach.d.ts.map +1 -0
- package/dist/server/domains/plans/intake/intake.attach.js +72 -0
- package/dist/server/domains/plans/intake/intake.attach.js.map +1 -0
- package/dist/server/domains/plans/intake/intake.files.d.ts +29 -0
- package/dist/server/domains/plans/intake/intake.files.d.ts.map +1 -0
- package/dist/server/domains/plans/intake/intake.files.js +78 -0
- package/dist/server/domains/plans/intake/intake.files.js.map +1 -0
- package/dist/server/domains/plans/intake/intake.parser.d.ts +35 -0
- package/dist/server/domains/plans/intake/intake.parser.d.ts.map +1 -0
- package/dist/server/domains/plans/intake/intake.parser.js +260 -0
- package/dist/server/domains/plans/intake/intake.parser.js.map +1 -0
- package/dist/server/domains/plans/intake/intake.routes.d.ts +6 -0
- package/dist/server/domains/plans/intake/intake.routes.d.ts.map +1 -0
- package/dist/server/domains/plans/intake/intake.routes.js +194 -0
- package/dist/server/domains/plans/intake/intake.routes.js.map +1 -0
- package/dist/server/domains/plans/intake/intake.service.d.ts +49 -0
- package/dist/server/domains/plans/intake/intake.service.d.ts.map +1 -0
- package/dist/server/domains/plans/intake/intake.service.js +198 -0
- package/dist/server/domains/plans/intake/intake.service.js.map +1 -0
- package/dist/server/domains/plans/intake/intake.text.d.ts +64 -0
- package/dist/server/domains/plans/intake/intake.text.d.ts.map +1 -0
- package/dist/server/domains/plans/intake/intake.text.js +205 -0
- package/dist/server/domains/plans/intake/intake.text.js.map +1 -0
- package/dist/server/domains/plans/plan.access.d.ts +9 -0
- package/dist/server/domains/plans/plan.access.d.ts.map +1 -0
- package/dist/server/domains/plans/plan.access.js +14 -0
- package/dist/server/domains/plans/plan.access.js.map +1 -0
- package/dist/server/domains/plans/plan.engine.d.ts +50 -0
- package/dist/server/domains/plans/plan.engine.d.ts.map +1 -0
- package/dist/server/domains/plans/plan.engine.js +224 -0
- package/dist/server/domains/plans/plan.engine.js.map +1 -0
- package/dist/server/domains/plans/plan.events.d.ts +10 -0
- package/dist/server/domains/plans/plan.events.d.ts.map +1 -0
- package/dist/server/domains/plans/plan.events.js +2 -0
- package/dist/server/domains/plans/plan.events.js.map +1 -0
- package/dist/server/domains/plans/plan.ops.d.ts +72 -0
- package/dist/server/domains/plans/plan.ops.d.ts.map +1 -0
- package/dist/server/domains/plans/plan.ops.js +509 -0
- package/dist/server/domains/plans/plan.ops.js.map +1 -0
- package/dist/server/domains/plans/plan.routes.d.ts +14 -0
- package/dist/server/domains/plans/plan.routes.d.ts.map +1 -0
- package/dist/server/domains/plans/plan.routes.js +248 -0
- package/dist/server/domains/plans/plan.routes.js.map +1 -0
- package/dist/server/domains/plans/plan.schemas.d.ts +17 -0
- package/dist/server/domains/plans/plan.schemas.d.ts.map +1 -0
- package/dist/server/domains/plans/plan.schemas.js +81 -0
- package/dist/server/domains/plans/plan.schemas.js.map +1 -0
- package/dist/server/domains/plans/plan.service.d.ts +28 -0
- package/dist/server/domains/plans/plan.service.d.ts.map +1 -0
- package/dist/server/domains/plans/plan.service.js +837 -0
- package/dist/server/domains/plans/plan.service.js.map +1 -0
- package/dist/server/domains/plans/plan.store.d.ts +76 -0
- package/dist/server/domains/plans/plan.store.d.ts.map +1 -0
- package/dist/server/domains/plans/plan.store.js +145 -0
- package/dist/server/domains/plans/plan.store.js.map +1 -0
- package/dist/server/domains/plans/plan.touched.d.ts +15 -0
- package/dist/server/domains/plans/plan.touched.d.ts.map +1 -0
- package/dist/server/domains/plans/plan.touched.js +43 -0
- package/dist/server/domains/plans/plan.touched.js.map +1 -0
- package/dist/server/domains/plans/plan.undo.d.ts +29 -0
- package/dist/server/domains/plans/plan.undo.d.ts.map +1 -0
- package/dist/server/domains/plans/plan.undo.js +119 -0
- package/dist/server/domains/plans/plan.undo.js.map +1 -0
- package/dist/server/domains/plans/ports.d.ts +91 -0
- package/dist/server/domains/plans/ports.d.ts.map +1 -0
- package/dist/server/domains/plans/ports.js +2 -0
- package/dist/server/domains/plans/ports.js.map +1 -0
- package/dist/server/domains/projects/index.d.ts +6 -0
- package/dist/server/domains/projects/index.d.ts.map +1 -0
- package/dist/server/domains/projects/index.js +5 -0
- package/dist/server/domains/projects/index.js.map +1 -0
- package/dist/server/domains/projects/project-members.d.ts +17 -0
- package/dist/server/domains/projects/project-members.d.ts.map +1 -0
- package/dist/server/domains/projects/project-members.js +21 -0
- package/dist/server/domains/projects/project-members.js.map +1 -0
- package/dist/server/domains/projects/project-resources.d.ts +38 -0
- package/dist/server/domains/projects/project-resources.d.ts.map +1 -0
- package/dist/server/domains/projects/project-resources.js +195 -0
- package/dist/server/domains/projects/project-resources.js.map +1 -0
- package/dist/server/domains/projects/project.access.d.ts +39 -0
- package/dist/server/domains/projects/project.access.d.ts.map +1 -0
- package/dist/server/domains/projects/project.access.js +83 -0
- package/dist/server/domains/projects/project.access.js.map +1 -0
- package/dist/server/domains/projects/project.events.d.ts +10 -0
- package/dist/server/domains/projects/project.events.d.ts.map +1 -0
- package/dist/server/domains/projects/project.events.js +2 -0
- package/dist/server/domains/projects/project.events.js.map +1 -0
- package/dist/server/domains/projects/project.routes.d.ts +9 -0
- package/dist/server/domains/projects/project.routes.d.ts.map +1 -0
- package/dist/server/domains/projects/project.routes.js +244 -0
- package/dist/server/domains/projects/project.routes.js.map +1 -0
- package/dist/server/domains/projects/project.service.d.ts +41 -0
- package/dist/server/domains/projects/project.service.d.ts.map +1 -0
- package/dist/server/domains/projects/project.service.js +135 -0
- package/dist/server/domains/projects/project.service.js.map +1 -0
- package/dist/server/domains/projects/project.store.d.ts +52 -0
- package/dist/server/domains/projects/project.store.d.ts.map +1 -0
- package/dist/server/domains/projects/project.store.js +219 -0
- package/dist/server/domains/projects/project.store.js.map +1 -0
- package/dist/server/domains/reports/index.d.ts +2 -0
- package/dist/server/domains/reports/index.d.ts.map +1 -0
- package/dist/server/domains/reports/index.js +2 -0
- package/dist/server/domains/reports/index.js.map +1 -0
- package/dist/server/domains/reports/report.service.d.ts +146 -0
- package/dist/server/domains/reports/report.service.d.ts.map +1 -0
- package/dist/server/domains/reports/report.service.js +458 -0
- package/dist/server/domains/reports/report.service.js.map +1 -0
- package/dist/server/domains/settings/index.d.ts +3 -0
- package/dist/server/domains/settings/index.d.ts.map +1 -0
- package/dist/server/domains/settings/index.js +3 -0
- package/dist/server/domains/settings/index.js.map +1 -0
- package/dist/server/domains/settings/settings.routes.d.ts +6 -0
- package/dist/server/domains/settings/settings.routes.d.ts.map +1 -0
- package/dist/server/domains/settings/settings.routes.js +39 -0
- package/dist/server/domains/settings/settings.routes.js.map +1 -0
- package/dist/server/domains/settings/settings.service.d.ts +23 -0
- package/dist/server/domains/settings/settings.service.d.ts.map +1 -0
- package/dist/server/domains/settings/settings.service.js +38 -0
- package/dist/server/domains/settings/settings.service.js.map +1 -0
- package/dist/server/domains/settings/settings.store.d.ts +26 -0
- package/dist/server/domains/settings/settings.store.d.ts.map +1 -0
- package/dist/server/domains/settings/settings.store.js +43 -0
- package/dist/server/domains/settings/settings.store.js.map +1 -0
- package/dist/server/domains/statuses/event-types.d.ts +16 -0
- package/dist/server/domains/statuses/event-types.d.ts.map +1 -0
- package/dist/server/domains/statuses/event-types.js +31 -0
- package/dist/server/domains/statuses/event-types.js.map +1 -0
- package/dist/server/domains/statuses/index.d.ts +4 -0
- package/dist/server/domains/statuses/index.d.ts.map +1 -0
- package/dist/server/domains/statuses/index.js +4 -0
- package/dist/server/domains/statuses/index.js.map +1 -0
- package/dist/server/domains/statuses/status.catalog.d.ts +15 -0
- package/dist/server/domains/statuses/status.catalog.d.ts.map +1 -0
- package/dist/server/domains/statuses/status.catalog.js +119 -0
- package/dist/server/domains/statuses/status.catalog.js.map +1 -0
- package/dist/server/domains/statuses/status.events.d.ts +15 -0
- package/dist/server/domains/statuses/status.events.d.ts.map +1 -0
- package/dist/server/domains/statuses/status.events.js +2 -0
- package/dist/server/domains/statuses/status.events.js.map +1 -0
- package/dist/server/domains/statuses/status.fire.d.ts +48 -0
- package/dist/server/domains/statuses/status.fire.d.ts.map +1 -0
- package/dist/server/domains/statuses/status.fire.js +38 -0
- package/dist/server/domains/statuses/status.fire.js.map +1 -0
- package/dist/server/domains/subscriptions/index.d.ts +3 -0
- package/dist/server/domains/subscriptions/index.d.ts.map +1 -0
- package/dist/server/domains/subscriptions/index.js +3 -0
- package/dist/server/domains/subscriptions/index.js.map +1 -0
- package/dist/server/domains/subscriptions/subscription.events.d.ts +12 -0
- package/dist/server/domains/subscriptions/subscription.events.d.ts.map +1 -0
- package/dist/server/domains/subscriptions/subscription.events.js +2 -0
- package/dist/server/domains/subscriptions/subscription.events.js.map +1 -0
- package/dist/server/domains/subscriptions/subscription.routes.d.ts +6 -0
- package/dist/server/domains/subscriptions/subscription.routes.d.ts.map +1 -0
- package/dist/server/domains/subscriptions/subscription.routes.js +36 -0
- package/dist/server/domains/subscriptions/subscription.routes.js.map +1 -0
- package/dist/server/domains/subscriptions/subscription.service.d.ts +28 -0
- package/dist/server/domains/subscriptions/subscription.service.d.ts.map +1 -0
- package/dist/server/domains/subscriptions/subscription.service.js +50 -0
- package/dist/server/domains/subscriptions/subscription.service.js.map +1 -0
- package/dist/server/domains/subscriptions/subscription.store.d.ts +23 -0
- package/dist/server/domains/subscriptions/subscription.store.d.ts.map +1 -0
- package/dist/server/domains/subscriptions/subscription.store.js +84 -0
- package/dist/server/domains/subscriptions/subscription.store.js.map +1 -0
- package/dist/server/domains/subtasks/index.d.ts +6 -0
- package/dist/server/domains/subtasks/index.d.ts.map +1 -0
- package/dist/server/domains/subtasks/index.js +6 -0
- package/dist/server/domains/subtasks/index.js.map +1 -0
- package/dist/server/domains/subtasks/subtask.blocking.d.ts +27 -0
- package/dist/server/domains/subtasks/subtask.blocking.d.ts.map +1 -0
- package/dist/server/domains/subtasks/subtask.blocking.js +133 -0
- package/dist/server/domains/subtasks/subtask.blocking.js.map +1 -0
- package/dist/server/domains/subtasks/subtask.events.d.ts +40 -0
- package/dist/server/domains/subtasks/subtask.events.d.ts.map +1 -0
- package/dist/server/domains/subtasks/subtask.events.js +2 -0
- package/dist/server/domains/subtasks/subtask.events.js.map +1 -0
- package/dist/server/domains/subtasks/subtask.graph.d.ts +13 -0
- package/dist/server/domains/subtasks/subtask.graph.d.ts.map +1 -0
- package/dist/server/domains/subtasks/subtask.graph.js +65 -0
- package/dist/server/domains/subtasks/subtask.graph.js.map +1 -0
- package/dist/server/domains/subtasks/subtask.guard.d.ts +12 -0
- package/dist/server/domains/subtasks/subtask.guard.d.ts.map +1 -0
- package/dist/server/domains/subtasks/subtask.guard.js +23 -0
- package/dist/server/domains/subtasks/subtask.guard.js.map +1 -0
- package/dist/server/domains/subtasks/subtask.notices.d.ts +8 -0
- package/dist/server/domains/subtasks/subtask.notices.d.ts.map +1 -0
- package/dist/server/domains/subtasks/subtask.notices.js +70 -0
- package/dist/server/domains/subtasks/subtask.notices.js.map +1 -0
- package/dist/server/domains/subtasks/subtask.release.d.ts +25 -0
- package/dist/server/domains/subtasks/subtask.release.d.ts.map +1 -0
- package/dist/server/domains/subtasks/subtask.release.js +110 -0
- package/dist/server/domains/subtasks/subtask.release.js.map +1 -0
- package/dist/server/domains/subtasks/subtask.routes.d.ts +11 -0
- package/dist/server/domains/subtasks/subtask.routes.d.ts.map +1 -0
- package/dist/server/domains/subtasks/subtask.routes.js +159 -0
- package/dist/server/domains/subtasks/subtask.routes.js.map +1 -0
- package/dist/server/domains/subtasks/subtask.service.d.ts +44 -0
- package/dist/server/domains/subtasks/subtask.service.d.ts.map +1 -0
- package/dist/server/domains/subtasks/subtask.service.js +376 -0
- package/dist/server/domains/subtasks/subtask.service.js.map +1 -0
- package/dist/server/domains/subtasks/subtask.store.d.ts +34 -0
- package/dist/server/domains/subtasks/subtask.store.d.ts.map +1 -0
- package/dist/server/domains/subtasks/subtask.store.js +77 -0
- package/dist/server/domains/subtasks/subtask.store.js.map +1 -0
- package/dist/server/index.d.ts +6 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +6 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/kernel/activity.d.ts +58 -0
- package/dist/server/kernel/activity.d.ts.map +1 -0
- package/dist/server/kernel/activity.js +99 -0
- package/dist/server/kernel/activity.js.map +1 -0
- package/dist/server/kernel/actor.d.ts +30 -0
- package/dist/server/kernel/actor.d.ts.map +1 -0
- package/dist/server/kernel/actor.js +8 -0
- package/dist/server/kernel/actor.js.map +1 -0
- package/dist/server/kernel/db.d.ts +21 -0
- package/dist/server/kernel/db.d.ts.map +1 -0
- package/dist/server/kernel/db.js +41 -0
- package/dist/server/kernel/db.js.map +1 -0
- package/dist/server/kernel/errors.d.ts +26 -0
- package/dist/server/kernel/errors.d.ts.map +1 -0
- package/dist/server/kernel/errors.js +34 -0
- package/dist/server/kernel/errors.js.map +1 -0
- package/dist/server/kernel/events.d.ts +43 -0
- package/dist/server/kernel/events.d.ts.map +1 -0
- package/dist/server/kernel/events.js +64 -0
- package/dist/server/kernel/events.js.map +1 -0
- package/dist/server/kernel/http.d.ts +47 -0
- package/dist/server/kernel/http.d.ts.map +1 -0
- package/dist/server/kernel/http.js +119 -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/kinds.d.ts +128 -0
- package/dist/server/kernel/kinds.d.ts.map +1 -0
- package/dist/server/kernel/kinds.js +165 -0
- package/dist/server/kernel/kinds.js.map +1 -0
- package/dist/server/kernel/mentions.d.ts +17 -0
- package/dist/server/kernel/mentions.d.ts.map +1 -0
- package/dist/server/kernel/mentions.js +42 -0
- package/dist/server/kernel/mentions.js.map +1 -0
- package/dist/server/kernel/pagination.d.ts +14 -0
- package/dist/server/kernel/pagination.d.ts.map +1 -0
- package/dist/server/kernel/pagination.js +42 -0
- package/dist/server/kernel/pagination.js.map +1 -0
- package/dist/server/kernel/transaction-read.d.ts +4 -0
- package/dist/server/kernel/transaction-read.d.ts.map +1 -0
- package/dist/server/kernel/transaction-read.js +30 -0
- package/dist/server/kernel/transaction-read.js.map +1 -0
- package/dist/server/kernel/tx.d.ts +37 -0
- package/dist/server/kernel/tx.d.ts.map +1 -0
- package/dist/server/kernel/tx.js +109 -0
- package/dist/server/kernel/tx.js.map +1 -0
- package/dist/server/kernel/users.d.ts +40 -0
- package/dist/server/kernel/users.d.ts.map +1 -0
- package/dist/server/kernel/users.js +84 -0
- package/dist/server/kernel/users.js.map +1 -0
- package/dist/server/kernel/validate.d.ts +14 -0
- package/dist/server/kernel/validate.d.ts.map +1 -0
- package/dist/server/kernel/validate.js +68 -0
- package/dist/server/kernel/validate.js.map +1 -0
- package/dist/server/kernel/work.d.ts +107 -0
- package/dist/server/kernel/work.d.ts.map +1 -0
- package/dist/server/kernel/work.js +173 -0
- package/dist/server/kernel/work.js.map +1 -0
- package/dist/server/key-scope-objects.d.ts +21 -0
- package/dist/server/key-scope-objects.d.ts.map +1 -0
- package/dist/server/key-scope-objects.js +24 -0
- package/dist/server/key-scope-objects.js.map +1 -0
- package/dist/server/lifecycle/definition.d.ts +71 -0
- package/dist/server/lifecycle/definition.d.ts.map +1 -0
- package/dist/server/lifecycle/definition.js +18 -0
- package/dist/server/lifecycle/definition.js.map +1 -0
- package/dist/server/lifecycle/index.d.ts +10 -0
- package/dist/server/lifecycle/index.d.ts.map +1 -0
- package/dist/server/lifecycle/index.js +10 -0
- package/dist/server/lifecycle/index.js.map +1 -0
- package/dist/server/lifecycle/machine.d.ts +23 -0
- package/dist/server/lifecycle/machine.d.ts.map +1 -0
- package/dist/server/lifecycle/machine.js +27 -0
- package/dist/server/lifecycle/machine.js.map +1 -0
- package/dist/server/lifecycle/move.d.ts +94 -0
- package/dist/server/lifecycle/move.d.ts.map +1 -0
- package/dist/server/lifecycle/move.js +183 -0
- package/dist/server/lifecycle/move.js.map +1 -0
- package/dist/server/lifecycle/registry.d.ts +78 -0
- package/dist/server/lifecycle/registry.d.ts.map +1 -0
- package/dist/server/lifecycle/registry.js +29 -0
- package/dist/server/lifecycle/registry.js.map +1 -0
- package/dist/server/lifecycle/validate.d.ts +34 -0
- package/dist/server/lifecycle/validate.d.ts.map +1 -0
- package/dist/server/lifecycle/validate.js +341 -0
- package/dist/server/lifecycle/validate.js.map +1 -0
- package/dist/server/locales/en-US.d.ts +32 -0
- package/dist/server/locales/en-US.d.ts.map +1 -0
- package/dist/server/locales/en-US.js +30 -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 +29 -0
- package/dist/server/locales/zh-CN.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 +17 -0
- package/dist/server/plugin.js.map +1 -0
- package/dist/server/providers/authorization.d.ts +20 -0
- package/dist/server/providers/authorization.d.ts.map +1 -0
- package/dist/server/providers/authorization.js +65 -0
- package/dist/server/providers/authorization.js.map +1 -0
- package/dist/server/providers/change-announcer.d.ts +28 -0
- package/dist/server/providers/change-announcer.d.ts.map +1 -0
- package/dist/server/providers/change-announcer.js +75 -0
- package/dist/server/providers/change-announcer.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 +8 -0
- package/dist/server/providers/index.js.map +1 -0
- package/dist/server/providers/notifications.d.ts +17 -0
- package/dist/server/providers/notifications.d.ts.map +1 -0
- package/dist/server/providers/notifications.js +217 -0
- package/dist/server/providers/notifications.js.map +1 -0
- package/dist/server/providers/projects.d.ts +20 -0
- package/dist/server/providers/projects.d.ts.map +1 -0
- package/dist/server/providers/projects.js +118 -0
- package/dist/server/providers/projects.js.map +1 -0
- package/dist/server/routes/api.d.ts +4 -0
- package/dist/server/routes/api.d.ts.map +1 -0
- package/dist/server/routes/api.js +94 -0
- package/dist/server/routes/api.js.map +1 -0
- package/dist/server/routes/index.d.ts +5 -0
- package/dist/server/routes/index.d.ts.map +1 -0
- package/dist/server/routes/index.js +6 -0
- package/dist/server/routes/index.js.map +1 -0
- package/dist/server/routes/schemas.d.ts +188 -0
- package/dist/server/routes/schemas.d.ts.map +1 -0
- package/dist/server/routes/schemas.js +1271 -0
- package/dist/server/routes/schemas.js.map +1 -0
- package/dist/server/tokens.d.ts +172 -0
- package/dist/server/tokens.d.ts.map +1 -0
- package/dist/server/tokens.js +46 -0
- package/dist/server/tokens.js.map +1 -0
- package/dist/shared/access.d.ts +188 -0
- package/dist/shared/access.d.ts.map +1 -0
- package/dist/shared/access.js +214 -0
- package/dist/shared/access.js.map +1 -0
- package/dist/shared/attachments.d.ts +84 -0
- package/dist/shared/attachments.d.ts.map +1 -0
- package/dist/shared/attachments.js +65 -0
- package/dist/shared/attachments.js.map +1 -0
- package/dist/shared/comments.d.ts +114 -0
- package/dist/shared/comments.d.ts.map +1 -0
- package/dist/shared/comments.js +20 -0
- package/dist/shared/comments.js.map +1 -0
- package/dist/shared/common.d.ts +28 -0
- package/dist/shared/common.d.ts.map +1 -0
- package/dist/shared/common.js +15 -0
- package/dist/shared/common.js.map +1 -0
- package/dist/shared/intake-ai.d.ts +207 -0
- package/dist/shared/intake-ai.d.ts.map +1 -0
- package/dist/shared/intake-ai.js +111 -0
- package/dist/shared/intake-ai.js.map +1 -0
- package/dist/shared/intake.d.ts +126 -0
- package/dist/shared/intake.d.ts.map +1 -0
- package/dist/shared/intake.js +10 -0
- package/dist/shared/intake.js.map +1 -0
- package/dist/shared/invitations.d.ts +48 -0
- package/dist/shared/invitations.d.ts.map +1 -0
- package/dist/shared/invitations.js +6 -0
- package/dist/shared/invitations.js.map +1 -0
- package/dist/shared/issues.d.ts +242 -0
- package/dist/shared/issues.d.ts.map +1 -0
- package/dist/shared/issues.js +16 -0
- package/dist/shared/issues.js.map +1 -0
- package/dist/shared/kinds.d.ts +43 -0
- package/dist/shared/kinds.d.ts.map +1 -0
- package/dist/shared/kinds.js +9 -0
- package/dist/shared/kinds.js.map +1 -0
- package/dist/shared/labels.d.ts +13 -0
- package/dist/shared/labels.d.ts.map +1 -0
- package/dist/shared/labels.js +2 -0
- package/dist/shared/labels.js.map +1 -0
- package/dist/shared/locales/access.en-US.d.ts +188 -0
- package/dist/shared/locales/access.en-US.d.ts.map +1 -0
- package/dist/shared/locales/access.en-US.js +177 -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 +172 -0
- package/dist/shared/locales/access.zh-CN.js.map +1 -0
- package/dist/shared/members.d.ts +27 -0
- package/dist/shared/members.d.ts.map +1 -0
- package/dist/shared/members.js +2 -0
- package/dist/shared/members.js.map +1 -0
- package/dist/shared/plans.d.ts +521 -0
- package/dist/shared/plans.d.ts.map +1 -0
- package/dist/shared/plans.js +69 -0
- package/dist/shared/plans.js.map +1 -0
- package/dist/shared/projects.d.ts +134 -0
- package/dist/shared/projects.d.ts.map +1 -0
- package/dist/shared/projects.js +23 -0
- package/dist/shared/projects.js.map +1 -0
- package/dist/shared/realtime.d.ts +18 -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/settings.d.ts +9 -0
- package/dist/shared/settings.d.ts.map +1 -0
- package/dist/shared/settings.js +3 -0
- package/dist/shared/settings.js.map +1 -0
- package/dist/shared/statuses.d.ts +42 -0
- package/dist/shared/statuses.d.ts.map +1 -0
- package/dist/shared/statuses.js +73 -0
- package/dist/shared/statuses.js.map +1 -0
- package/dist/shared/subscriptions.d.ts +13 -0
- package/dist/shared/subscriptions.d.ts.map +1 -0
- package/dist/shared/subscriptions.js +10 -0
- package/dist/shared/subscriptions.js.map +1 -0
- package/dist/shared/subtasks.d.ts +61 -0
- package/dist/shared/subtasks.d.ts.map +1 -0
- package/dist/shared/subtasks.js +11 -0
- package/dist/shared/subtasks.js.map +1 -0
- package/package.json +196 -3
- package/skills/nocobase-app-plugin-projects/SKILL.md +105 -0
package/README.md
CHANGED
|
@@ -1,3 +1,282 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @nocobase/app-plugin-projects
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Projects, issues, fixed statuses, labels and members for a NocoBase application.
|
|
4
|
+
|
|
5
|
+
## What it provides
|
|
6
|
+
|
|
7
|
+
- **Members**: every signed-in user who opens the API becomes a member, and the application gives them its default
|
|
8
|
+
role for new members (`ProjectsAccess.admit`).
|
|
9
|
+
- **Access, declared**: the pages, settings items and business actions with the levels each offers
|
|
10
|
+
(`shared/access.ts`). The plugin registers its settings items and its businesses (the `pm` resource type, one action
|
|
11
|
+
per level: `edit.related`, `edit.all`); the application that assembles it keeps the roles and
|
|
12
|
+
binds `projectsAccessToken` (`server/tokens.ts`), which tells the plugin each request's `Permissions`, admits new
|
|
13
|
+
members and names the administrators. The assembling application does this in `server/access`.
|
|
14
|
+
- **Invitations**: sent by the user management plugin; an invitation from the member settings carries projects, and
|
|
15
|
+
the invitee joins them on acceptance.
|
|
16
|
+
- **Settings**: the issue identifier prefix (`PM` by default). Issue numbers come from one workspace-wide counter.
|
|
17
|
+
- **Labels**: a shared label list.
|
|
18
|
+
- **Kinds**: who acts on issues or is named in them. `user` (people) and `system` (the plugin's own rules) are built
|
|
19
|
+
in; another plugin registers more through `projectsKindsToken` (`server/kernel/kinds.ts`): a key, a title, how its
|
|
20
|
+
ids are named, whether it may execute issues (and who may give it work), whether it may be mentioned, the status
|
|
21
|
+
moves its principals may make (`moves`, with an optional `mayMove` check per principal and issue), and the executor
|
|
22
|
+
a new issue gets when it names none (`defaultExecutor`). Executors, activity, mentions and status moves name a kind
|
|
23
|
+
by its key; the browser reads the list from `GET /api/projects/me` (`kinds`). A kind may
|
|
24
|
+
also do work (`work`, an `IssueWorkHandler`, `server/kernel/work.ts`): unless a plugin binds `projectsTriggersToken`,
|
|
25
|
+
every change, comment and release is handed, in its transaction, to the work handler of each kind it concerns (the
|
|
26
|
+
executor before and after, the kinds a comment mentions or answers), which answers what it started (`RunAttempt[]`;
|
|
27
|
+
`collectRunAttempts` gathers them around a call). A handler asks `projects.subtasks.blockersOf` whether the issue
|
|
28
|
+
waits for unfinished issues and then starts nothing (`skipped: 'blocked'`); it starts nothing either for an issue in
|
|
29
|
+
backlog (`BACKLOG_STATUS`, `skipped: 'dormant'`), or for a principal's comment past a limit the kind keeps
|
|
30
|
+
(`skipped: 'limited'`). A comment of anyone but the system reaches the handlers, with the person it
|
|
31
|
+
was written for (`CommentChange.userId`). When a new `blockedBy` holds the issue, every kind's
|
|
32
|
+
`onBlocked` withdraws the work it had not taken up yet. These skips and withdrawals are recorded on the issue's
|
|
33
|
+
activity as the principal's (`work_skipped`, `work_withdrawn`, with the issues it waits for). It may name the business actions a principal of the kind may be
|
|
34
|
+
given at most (`actions`) and describe executors for a picker (`executor.describe`). `projects.issueContext`
|
|
35
|
+
(`IssueContextProvider`) reads an issue as such an executor needs it, on the caller's connection. When a principal
|
|
36
|
+
can no longer take work (an agent archived or deleted), its plugin's assembler calls
|
|
37
|
+
`projects.issues.releaseExecutor(executor, { actor, name })`: every live, unfinished issue it executes is left with
|
|
38
|
+
no executor, recorded as `executor_changed` with `reason: 'executorRemoved'` and the executor's name ("Executor X was
|
|
39
|
+
removed" on the timeline), and handed to the triggers like any change of executor.
|
|
40
|
+
- **Statuses**: six, fixed for every project (`shared/statuses.ts`): `backlog` (nothing starts), `in_progress`,
|
|
41
|
+
`blocked` (waiting for a person), `in_review` (waiting to be accepted), `done` and `cancelled`. People move an issue
|
|
42
|
+
between any two of them; a principal of another kind only along its kind's `moves`, and only when its `mayMove`
|
|
43
|
+
agrees; the system only along a status event. Entering `blocked` or `in_review` tells the issue's owner, unless the
|
|
44
|
+
owner moved it (`owner_notified`). The moves go through `server/lifecycle` (below), compiled from the statuses, the
|
|
45
|
+
registered kinds' moves and the registered status events (`domains/statuses/`).
|
|
46
|
+
- **Status events**: other plugins register status events through `projectsStatusEventsToken` (a dotted key such as
|
|
47
|
+
`acme.merged`, the statuses it moves an issue out of, `from`, and the status it moves it to, `to`) and fire one for a
|
|
48
|
+
batch of issues with `projects.statusEvents.fire({ event, issueIds, actor?, note?, details? }, tx?)`: each issue in
|
|
49
|
+
one of `from` moves to `to`, as the system, and the activity names `actor`. `projects.statusEvents.target(event,
|
|
50
|
+
issueId)` says where firing it would take one issue without moving it (for a confirmation that says what an action
|
|
51
|
+
will do). The plugin never knows what an event means. In the browser, `StatusEventsContext` (`client/kit`) titles the
|
|
52
|
+
events for the timeline. The issues pages show the list and the board, the board by default.
|
|
53
|
+
- **Starting an issue**: a new issue starts in `backlog` or `in_progress` (`START_STATUSES`; `backlog` when the request
|
|
54
|
+
names none, `DEFAULT_START_STATUS`), and the New issue form asks "Start now" or "Later". Created in `in_progress`, or
|
|
55
|
+
moved there, an issue's work starts.
|
|
56
|
+
- **Projects**: a lead, members, visibility (`workspace` or `members`), status, dates and linked resources.
|
|
57
|
+
- **Issues**: an owner, an executor (nobody, a member, or a principal of another registered kind), a status,
|
|
58
|
+
priority, dates, a parent, labels and an activity history. Admins can soft-delete and restore.
|
|
59
|
+
- **Sub-issues and dependencies**: a sub-issue may have a stage (0–1000); a later stage waits until every earlier
|
|
60
|
+
stage of its siblings is finished (done or closed). An issue may be blocked by others; a link that would make issues
|
|
61
|
+
wait for each other in a cycle is refused. When an issue finishes, the issues waiting only on it are released (their
|
|
62
|
+
executor, or with nobody working on them their owner, is told), and the parent's owner is told when a stage or all
|
|
63
|
+
sub-issues are finished; the parent's own status does not move on its own. A project may have a setup issue (`Project.setupIssueId`, an issue created with
|
|
64
|
+
`projectSetup: true` by someone who manages the project, one unfinished at a time): every issue created in the
|
|
65
|
+
project after it, except its own sub-issues, is created blocked by it until it is finished. `IssueTriggers` (`onUnblocked`, `onBlocked`, `onSubtasksFinished`) let other plugins react, and
|
|
66
|
+
`subtasks.visibleBlockers(viewer, issueIds)` tells another plugin's board what holds each issue now, in a fixed number
|
|
67
|
+
of reads, leaving out what the viewer may not see.
|
|
68
|
+
- **Comments**: threads (a root and its flat replies) in Markdown with mentions (`[@Name](mention://<kind>/<id>)`),
|
|
69
|
+
reactions from a fixed emoji set, resolvable threads, edits and soft deletion by their author, and deletion by a
|
|
70
|
+
moderator. A comment starting with `/note` starts no work. Another plugin writes its own comment kinds through
|
|
71
|
+
`projects.comments.post` (`CommentWriter`) and reacts to new comments through `projectsTriggersToken`
|
|
72
|
+
(`IssueTriggers.onCommentCreated`, answering whom it woke). Writing a comment touches the issue's last activity
|
|
73
|
+
without changing its `revision`, so an open edit of the issue does not conflict.
|
|
74
|
+
- **Attachments** (`shared/attachments.ts`, `server/domains/attachments/`): files on an issue (its own) or sent with a
|
|
75
|
+
comment, any type, up to 20 MiB each, stored through the file plugin (`@nocobase/app-plugin-file`) on the App's
|
|
76
|
+
default Drive disk. A file starts as an upload of its uploader's attached to nothing (a person, or an agent working
|
|
77
|
+
on an issue as its own principal) and is attached in the transaction of the change that takes it: an upload onto
|
|
78
|
+
the issue, a comment's `attachmentIds`, or an executed intake plan, whose files go to the issues it created. Whoever
|
|
79
|
+
sees the issue reads its files; the plugin serves them itself, after that check, with safe images inline and
|
|
80
|
+
everything else as a download (`nosniff`, a sandbox CSP, `private, no-store`). Uploading needs `pm.attachments`
|
|
81
|
+
`upload`; the uploader or someone who moderates the issue's comments removes an issue's file, and a comment's files
|
|
82
|
+
go with the comment. Uploads attached to nothing for 24 hours and deleted comments' files are purged every hour.
|
|
83
|
+
Another plugin reads and stores files through `projects.attachments` (`AttachmentService`); in the browser, the App
|
|
84
|
+
shows and previews them on its own issue page.
|
|
85
|
+
- **Followers**: an issue's creator, owner, people executing it, commenters and those mentioned follow it; anyone who
|
|
86
|
+
sees it may follow or unfollow.
|
|
87
|
+
- **Notices**: the plugin plans who to tell inside the change's transaction (`server/domains/notices/`: comments,
|
|
88
|
+
mentions, status changes, owner and executor assignments, with rules other plugins add through
|
|
89
|
+
`projectsNoticeRulesToken`), drops the actor and lower-priority duplicates, and sends after commit only to those who
|
|
90
|
+
may still see the issue (`ProjectsAccess.permissionsOfUser`). Information about the same thing carries a `group`
|
|
91
|
+
so an inbox can merge it.
|
|
92
|
+
- **Batch reads for boards**: `issueQueries.matching(viewer, query, { executorType?, issueIds?, limit? })` answers, in
|
|
93
|
+
a fixed number of reads, the viewer's issues within the list's filters that an executor of a kind works on (unless
|
|
94
|
+
finished) or that are among the ids given (whatever their status), with `truncated` past the limit, and
|
|
95
|
+
`subscriptions.followedBy(conn, userId, issueIds)` those of them a person follows. An application's board of work joins its own records to issues with
|
|
96
|
+
them, without a query per issue.
|
|
97
|
+
- **Hierarchy reads**: `issueQueries.hierarchy(viewer, query)` returns the complete independently authorized live issue scope, filtered matching IDs and internal dependency-wait facts before paging. It is an uncapped input for application-owned grouping, never a substitute for authorization. `hierarchyItems(viewer, ids)` hydrates at most 100 independently reauthorized rows with visible child/dependency counts; callers must replace raw parent IDs at unreadable boundaries. Applications own attention policy, grouping and continuation consistency. No new task statuses or persistence are required.
|
|
98
|
+
- **Operation plans** (`shared/plans.ts`, `server/domains/plans/`): a short list of changes (create or update an
|
|
99
|
+
issue, comment, add or remove a dependency, create a project; 1–50 rows, later rows may refer to what earlier ones
|
|
100
|
+
create) that one person, the decider, reviews and executes as a whole. Creating, editing and retrying a plan
|
|
101
|
+
rehearse it: every row runs as the decider in one transaction that always rolls back (a savepoint per row), the
|
|
102
|
+
triggers only report whom they would wake (`Tx.rehearsal`, `kernel/work.ts`) and nothing is announced; each row
|
|
103
|
+
gets its errors, wakes, risk flags and the baseline of its target. Execution is one transaction as the person who
|
|
104
|
+
clicks; a target changed since the rehearsal makes the plan `stale` and nothing is applied. An executed plan can be
|
|
105
|
+
undone for 24 hours in one step: a preview (`previewUndo`) lists the reverse rows and what they leave alone because
|
|
106
|
+
someone changed it since, and undoing applies them at once in one transaction; no other plan is created. The plan
|
|
107
|
+
card shows and decides a plan wherever the application places it (for example, in the conversation that proposed it); the
|
|
108
|
+
plugin lists plans nowhere of its own. Changes
|
|
109
|
+
made through a plan, or by an agent for a person (`Actor.via = 'agent'` with its trace), show on the timeline as
|
|
110
|
+
"via ‹Agent›" or "via ‹Agent›'s plan" (`Activity.via`). Other plugins use `projects.plans` (`PlanService`) and hear
|
|
111
|
+
decisions through `projectsPlanHooksToken` (`PlanHooks.onPlanDecided`). A plan is visible to its decider and, for a
|
|
112
|
+
status rule's plan about an issue (from earlier versions), to the issue's owner and editors.
|
|
113
|
+
- **Intake with AI** (`shared/intake-ai.ts`, `server/domains/plans/intake/intake.ai.*`): as the old NocoProject, AI
|
|
114
|
+
splits requirements into drafts ("AI split"), revises the drafts by one instruction ("Ask AI to revise", with the
|
|
115
|
+
rows it added or changed highlighted and an undo), and breaks an issue down into sub-issue drafts ("AI breakdown" on
|
|
116
|
+
the issue page). The plugin runs no model: the application binds an organiser (`projectsIntakeOrganizerToken`,
|
|
117
|
+
`IntakeOrganizer`), which is handed each request's task (`IntakeAiTask`, worded for any runtime by
|
|
118
|
+
`intakeAiInstructions` and `intakeAiMaterial`) and answers later with `projects.intakeAi.deliver` (the drafts) or
|
|
119
|
+
`ended`. A request is a job (`pmIntakeJobs`) the page follows (`progress`: queued and why, or the organiser's newest
|
|
120
|
+
activity) and the person may cancel. Delivered drafts become a pending intake plan the person decides, rehearsed with
|
|
121
|
+
their own permissions, in place of the draft the request was made on; AI never creates an issue. Asking needs
|
|
122
|
+
`pm.issues` `create`; without an organiser the AI draft tab offers the rule split only. an application's organiser is an agent
|
|
123
|
+
run on a runner (`server/agents/intake/`).
|
|
124
|
+
|
|
125
|
+
## Server API
|
|
126
|
+
|
|
127
|
+
Everything is under `/api/projects` and needs a session (401 otherwise). Responses are `{ data }`, lists `{ data, meta }`; inputs are validated (400 `INVALID_INPUT`, domain `app`, with `fieldViolations`; JSON bodies are strict). Fixed segments come before `/{projectId}`.
|
|
128
|
+
|
|
129
|
+
Invitation create/resend results include a shareable `inviteUrl` for an authorized original inviter using an unscoped person credential, regardless of email delivery. An invitation closed or rotated before its queued send returns `emailSent=false` without a link; other recipients, including existing accounts joining projects, still complete. Global user creation or role assignment permissions are not needed to copy a project invitation. `POST /api/projects/invitations/{invitationId}/resend?sendEmail=false` generates a new link without email, invalidating the old invitation. Member settings confirm this before generating a link, then offer a separate Copy action. Current project access is checked again; other managers can resend email but do not receive links, and scoped credentials remain email-only. Lists never expose tokens.
|
|
130
|
+
|
|
131
|
+
New accounts register directly from the invitation link with a name and password; acceptance leaves `emailVerified=false`. Email delivery is optional: authorized original inviters can privately forward the link when the email channel is absent or fails. Links use `app.publicOrigin` when configured, otherwise the invitation request origin. Existing accounts must sign in with the invited email. Acceptance consumes only the supplied invitation and applies only its grants; handlers run in its transaction and roll back account creation on failure.
|
|
132
|
+
|
|
133
|
+
| Method and path | What it does |
|
|
134
|
+
| ---------------------------------------------------------------------------------- | ----------------------------------------------------------- |
|
|
135
|
+
| `GET /me` | The caller with their permissions |
|
|
136
|
+
| `GET /members`, `GET /apiKeyActors`, `GET /executors` | Active members; API key identities; other executors |
|
|
137
|
+
| `GET /mentionCandidates?q&issueId&pageSize` | The `@` list: every mentionable kind's candidates |
|
|
138
|
+
| `GET/POST /invitations`, `POST …/{invitationId}/resend`, `DELETE …/{invitationId}` | Member invitations |
|
|
139
|
+
| `GET /settings`, `PATCH /settings` | Workspace settings |
|
|
140
|
+
| `GET/POST /labels`, `PATCH/DELETE /labels/{labelId}` | Labels |
|
|
141
|
+
| `GET/POST /` , `GET/PATCH/DELETE /{projectId}` | Projects |
|
|
142
|
+
| `POST /{projectId}/members`, `DELETE …/members/{userId}` | Project members (201 the member added; 204) |
|
|
143
|
+
| `POST /{projectId}/resources`, `PATCH/DELETE …/resources/{resourceId}` | Project resources |
|
|
144
|
+
| `GET /issues?…&orderBy&pageSize&pageToken` | A page of issues, cursor-paginated |
|
|
145
|
+
| `GET /issues/board` | The board: a column per status, each a first page |
|
|
146
|
+
| `GET /issues/statuses` | The fixed statuses |
|
|
147
|
+
| `POST /issues`, `GET/PATCH/DELETE /issues/{issueId}` | Issues, by id or identifier (`PM-12`) |
|
|
148
|
+
| `POST /issues/{issueId}/restore` | Restores a deleted issue |
|
|
149
|
+
| `GET /issues/{issueId}/activities?pageSize&pageToken` | Older activities |
|
|
150
|
+
| `GET/POST /issues/{issueId}/comments` | Older comment threads; posts a comment or reply |
|
|
151
|
+
| `PATCH/DELETE /comments/{commentId}` | Edits or deletes a comment |
|
|
152
|
+
| `POST /comments/{commentId}/react`, `…/unreact` | Adds or removes the caller's reaction (`{ emoji }`) |
|
|
153
|
+
| `POST /comments/{commentId}/resolve`, `…/unresolve` | Resolves or reopens a thread (on its root) |
|
|
154
|
+
| `POST /issues/{issueId}/subscribe`, `…/unsubscribe` | Follows or unfollows the issue |
|
|
155
|
+
| `GET/POST /issues/{issueId}/attachments` | The issue's own files; uploads one onto it |
|
|
156
|
+
| `POST /attachments` | Uploads one file, attached to nothing yet |
|
|
157
|
+
| `GET /attachments/{attachmentId}`, `…/content`, `DELETE` | A file, its bytes (`?download=true`), removing it |
|
|
158
|
+
| `POST /issues/{issueId}/dependencies` | Adds a link (`{ dependsOnIssueId, type }`) |
|
|
159
|
+
| `PATCH /issues/{issueId}/dependencies/{dependencyId}` | Changes a link type (`{ type, expectedType }`) atomically |
|
|
160
|
+
| `DELETE /issues/{issueId}/dependencies/{dependencyId}` | Removes a link |
|
|
161
|
+
| `POST /issues/{issueId}/removeDependency` | Removes the link to an issue (`{ dependsOnIssueId, type }`) |
|
|
162
|
+
| `POST /plans/rehearse` | Rehearses a plan and stores nothing |
|
|
163
|
+
| `GET/POST /plans`, `GET/PATCH /plans/{planId}` | Operation plans: list, create, read, edit rows |
|
|
164
|
+
| `POST /plans/{planId}/execute`, `…/retry`, `…/void` | Decides a plan (`{ revision }`) |
|
|
165
|
+
| `POST /plans/{planId}/undo` | `{ dryRun: true }` previews undoing; else undoes |
|
|
166
|
+
| `POST /intake/files`, `DELETE /intake/files/{fileId}` | The caller's intake uploads |
|
|
167
|
+
| `POST /intake/split`, `POST /intake/extractTexts` | The rule split; the uploads' text |
|
|
168
|
+
| `GET /intake/aiAvailability` | Whether AI can be asked |
|
|
169
|
+
| `POST /intake/aiJobs`, `GET …/{jobId}`, `POST …/{jobId}/cancel` | A request to AI; cancelling it |
|
|
170
|
+
|
|
171
|
+
Relationship conversion preserves the link ID and checks the type the caller read (`expectedType`). A stale change returns 409 `DEPENDENCY_CHANGED`; if the target relationship already exists, it returns 409 `DEPENDENCY_EXISTS` and keeps both links. A related link may be converted from either end: the current issue becomes the waiting issue when changed to `blockedBy`.
|
|
172
|
+
|
|
173
|
+
Operations that add explicit or implicit waits (dependencies, conversions, issue creation, parent/stage changes and restores) share a dedicated database graph revision row. Its conditional increment protects cycle detection and writes until the outer transaction commits, across processes and projects. An outdated transaction snapshot returns 409 `DEPENDENCY_GRAPH_CHANGED`; reload and retry the whole operation. Every issue creation takes this protection before allocating its number, so plans that create issues and add dependencies use the same lock order. Standalone creates without dependencies lock the row without advancing the graph revision, so independent parallel creates still succeed without retrying each other. The revision is separate from settings/counters so MySQL reads of those rows after writing them cannot disguise an old graph snapshot. Restoring an issue is rejected if its waits would now create a cycle. Every relationship write, including both removal endpoints, acquires this protection before reading its type and endpoints, keeping duplicate checks, activity and release notifications consistent with conversions. Issue status and project changes, status events and deletion take the same guard before writing an issue, so concurrent changes cannot each see an old blocker and miss the last release. Automatic parent/stage completion keeps the originating guard; ordinary edits that cannot change waits do not acquire it. Plans acquire the guard without advancing its revision before their first row, including rehearsal and undo, so earlier issue edits cannot reverse the lock order of a later graph write.
|
|
174
|
+
|
|
175
|
+
Cursor lists (issues, activities, comment threads, plans) take `pageSize` (20 by default, at most 100; plans 50) and `pageToken`, and answer `meta.nextPageToken` until the last page. `orderBy` on issues is `updatedAt`, `createdAt`, `number` or `priority`, optionally followed by `asc` or `desc` (`updatedAt desc` by default). The other lists are answered whole with `meta.total`. A scoped API key may not use `/intake` or `/plans` (403 `SCOPED_KEY_FORBIDDEN`).
|
|
176
|
+
|
|
177
|
+
Errors are the standard error body with domain `projects`; clients branch on `reason`, and `metadata` carries the details. A missing resource the URL names is 404 `<RESOURCE>_NOT_FOUND` (such as `ISSUE_NOT_FOUND`); a project or issue named in the query that does not exist is 400 with a field violation. `PATCH /issues/{issueId}` needs the `revision` the caller read; a stale one is 409 `ABORTED` `REVISION_CONFLICT`. It answers 200 `{ data: { issue } }`. A status that does not exist, or a new issue in any status but `backlog` and `in_progress`, is 400 `INVALID_STATUS`; a move the caller's kind may not make is 400 `TRANSITION_NOT_ALLOWED`. A dependency that would close a cycle is 400 `DEPENDENCY_CYCLE` (`metadata.via`), one too deep to check 400 `DEPENDENCY_TOO_DEEP`, a duplicate 409 `ALREADY_EXISTS` `DEPENDENCY_EXISTS`. A plan with a failing row is 400 `PLAN_INVALID` with every row's check in `metadata.rows`; deciding a plan that is not open is 400 `PLAN_NOT_OPEN`, an expired one 400 `PLAN_EXPIRED`; undoing after the window is 400 `UNDO_EXPIRED`, with nothing left to revert 400 `NOTHING_TO_UNDO`, and when something changed since the preview 409 `ABORTED` `UNDO_STALE`. Other refusals by state are 400 `FAILED_PRECONDITION` too.
|
|
178
|
+
|
|
179
|
+
## Statuses and the lifecycle module
|
|
180
|
+
|
|
181
|
+
`server/lifecycle/` is a self-contained state machine for records, with no import from the domains, so it can become
|
|
182
|
+
a platform package: a definition as data (states with a category, transitions `from → to` naming who may take them,
|
|
183
|
+
`*` for any state, and event transitions `on` an event, which only `fire` takes), `validateDefinition`, `compile` (the
|
|
184
|
+
questions the application asks) and `move`, the one path through which a state changes. It runs in the caller's unit
|
|
185
|
+
of work, in order: who may (the actor on the transition, and a registered "who may" rule over the record), the guards
|
|
186
|
+
of the state left and the state entered, the caller's write, and the entry actions, each in its own savepoint. Rules
|
|
187
|
+
are registered by name (`createLifecycleRegistry`).
|
|
188
|
+
|
|
189
|
+
`server/domains/statuses/` compiles the fixed statuses into such a definition: people `* → *`, each registered kind's
|
|
190
|
+
`moves` (behind a "who may" rule asking the kind's `mayMove`), and each status event's transitions for the system; the
|
|
191
|
+
definition is compiled again whenever the kinds or events change. The entry action `notifyOwner` on `blocked` and
|
|
192
|
+
`in_review` records `owner_notified` and announces it. Notices (`server/providers/notifications.ts`) go to
|
|
193
|
+
`projectsNoticesToken` when the App binds it (`ProjectsNotices`: `send` each notice with its kind, type and issue) —
|
|
194
|
+
the assembling application keeps its inbox that way. Without it they go straight to the notification plugin's in-app
|
|
195
|
+
channel `projects.inboxChannel` names (`inbox` by default) when that channel is configured.
|
|
196
|
+
|
|
197
|
+
## Permissions
|
|
198
|
+
|
|
199
|
+
What can be granted (`shared/access.ts`); the application stores and assigns the roles that hold it:
|
|
200
|
+
|
|
201
|
+
| Kind | Id | Actions or levels |
|
|
202
|
+
| ---------------- | ------------------------------------------ | --------------------------------------------------------- |
|
|
203
|
+
| Business actions | `pm.projects` | `view`, `create`, `manage`, `delete` |
|
|
204
|
+
| Business actions | `pm.issues` | `view`, `create`, `edit`, `comment`, `moderate-comments`, |
|
|
205
|
+
| | | `close`, `change-owner`, `delete` |
|
|
206
|
+
| Business actions | `pm.attachments` | `upload` |
|
|
207
|
+
| Settings items | `pm.general`, `pm.labels` | `read`, `update` |
|
|
208
|
+
| Settings items | `pm.members` | `read`, `invite`, `assign`, `define-roles` |
|
|
209
|
+
| Pages | `pm-my-issues`, `pm-issues`, `pm-projects` | `access` |
|
|
210
|
+
|
|
211
|
+
Each business action reaches none, related or all records, granted as the action of its level on the `pm` resource
|
|
212
|
+
type (`levelActionsOf`: `edit.related`, `edit.all`; an action without related records as itself; `RELATIONS`: projects the user can see or leads,
|
|
213
|
+
issues in those projects or owned by them); the services read the level from the request's `Permissions` and apply
|
|
214
|
+
the related rules themselves. Creating an issue needs `create`, which `edit` does not imply; creating a label while
|
|
215
|
+
editing an issue still needs `pm.labels` `update`. Commenting, replying and resolving threads need `comment` (related:
|
|
216
|
+
the issues one sees); authors edit and delete their own comments; deleting someone else's needs `moderate-comments`
|
|
217
|
+
(related: issues one owns or whose project one leads). Reacting, following and reading files need only seeing the issue; uploading a file needs `pm.attachments` `upload` (related: the issues one sees) besides `edit` (onto the issue) or `comment` (with a comment). Pages are granted on their own: a role may act through the API on
|
|
218
|
+
what it has no page for.
|
|
219
|
+
|
|
220
|
+
The plugin seeds no roles: the application that assembles it seeds its own (the assembling application:
|
|
221
|
+
`database/main/seeds/202610010022_acme_roles.ts`).
|
|
222
|
+
|
|
223
|
+
## Pages
|
|
224
|
+
|
|
225
|
+
| Path | What it shows |
|
|
226
|
+
| ------------------------------------- | ----------------------------------------------------------- |
|
|
227
|
+
| `/my-issues` | The viewer's owned or executed issues, each once |
|
|
228
|
+
| `/issues` (`?view=board` or `list`) | Every visible issue; filters, search and order in the URL |
|
|
229
|
+
| `/issues/new` (`?tab=ai` or `manual`) | The New issue dialog: AI draft (intake) or one issue |
|
|
230
|
+
| `/issues/new?tab=ai&job=:id` | The AI draft tab following a request to AI |
|
|
231
|
+
| `/issues/:id`, `/issues/plans/:id` | One issue, by id or identifier; one plan, by its id |
|
|
232
|
+
| `/projects`, `/projects/new` | Projects; a new one (a project's page is the application's) |
|
|
233
|
+
|
|
234
|
+
My tasks combines owned and executed issues, and the New issue dialog opens on its "AI draft" tab (the last tab used is remembered in the browser): requirements typed or uploaded are split into a draft of issues, edited row by row and created together, after which the dialog closes. Its manual tab asks when the issue starts: "Start now" (`in_progress`) or "Later" (`backlog`), and preselects the default executor. Nothing asks "Start now?" any more: moving an issue to `in_progress` starts its work.
|
|
235
|
+
|
|
236
|
+
The settings pages are exported for the application to route under its own `/config` (`client/config.ts`: the issue
|
|
237
|
+
prefix and labels), and components it reuses on its member pages are exported from
|
|
238
|
+
`client/kit.ts`. The application routes an issue's page itself and presents it (for example, with the UI Library's
|
|
239
|
+
`issue-detail`, `comment-thread` and `attachment-list`) over the headless parts in `client/issues.ts`: the issue
|
|
240
|
+
(`useIssueDetail`), its property changes (`useIssueUpdate`; `useConfirmedUpdate` applies a change at once), every other
|
|
241
|
+
change of the page (`useIssuePageActions`), the activity line (`useIssueTimeline`, `useIssueCommentActions`,
|
|
242
|
+
`useMentionSearch`, `useAttachmentUploads`), "Break into sub-issues" (`useIntakeBreakdown`), and the permission and
|
|
243
|
+
wording helpers. It routes a project's page the same way, as a child of the plugin's `/projects` (`projectsRoute` from
|
|
244
|
+
`client/pages`), over the headless parts in `client/projects.ts`: the project with the statuses
|
|
245
|
+
(`useProjectDetail`, `useProjectStatuses`), its property changes (`useProjectUpdate`), members and
|
|
246
|
+
visibility (`useProjectMembership`), working directories (`useProjectResources`, `useResourceValidation`), deleting it
|
|
247
|
+
(`useDeleteProject`), and the progress, numbers and permission helpers. The pages are behind the `pm-my-issues`, `pm-issues` and `pm-projects` page grants. They hide
|
|
248
|
+
what the server would refuse (`client/lib/permissions.ts` mirrors its rules); the server still checks every request.
|
|
249
|
+
Open pages refresh when the server announces a change on the `pm:changes` realtime topic: once for the events of a moment, naming the issues that changed when no change moved an issue between lists (`issueIds`), so a page refreshes only what it shows of them (`announcedIssueIds`, `changedIssueSegments` and `isIssueRead` in `client/kit`).
|
|
250
|
+
|
|
251
|
+
## Layout
|
|
252
|
+
|
|
253
|
+
- `shared/`: types and constants the server and the client share.
|
|
254
|
+
- `server/kernel/`: infrastructure with no business rules (errors, events, transactions, pagination, validation).
|
|
255
|
+
- `server/access/`: how a request becomes a `Viewer` with resolved permissions.
|
|
256
|
+
- `server/lifecycle/`: the record state machine behind the statuses (see above).
|
|
257
|
+
- `server/domains/<name>/`: one folder per domain: `*.store.ts` (tables), `*.access.ts` (who sees what),
|
|
258
|
+
`*.service.ts` (writes), `*.routes.ts` (HTTP), `index.ts` (the domain's public surface).
|
|
259
|
+
- `server/composition.ts`: wires the domains; `server/providers/` registers them with the app.
|
|
260
|
+
- `client/api/`: the typed `/api/projects` client and the query keys; `client/hooks/`, `client/lib/`: the viewer, notices,
|
|
261
|
+
permissions, statuses and formatting the pages share.
|
|
262
|
+
- `client/components/`: `ui/` holds shadcn primitives (registry output, not edited by hand); `pm-*` are this plugin's
|
|
263
|
+
own components.
|
|
264
|
+
- `client/pages/<area>/`: one folder per page area.
|
|
265
|
+
|
|
266
|
+
## Verification
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
pnpm --filter @nocobase/app-plugin-projects check
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
When renewing an invitation, deleted projects are ignored if at least one selected project remains. The inviter must still be authorized to invite into every remaining project. If all originally selected projects were deleted, renewal is rejected.
|
|
273
|
+
|
|
274
|
+
Invitation emails use `notificationService.sendTransient()` so credentials never enter notification message snapshots or job storage. This performs one bounded attempt without durable retries or deduplication. Failures retain safe status/category diagnostics without raw provider messages. The inviter can generate and privately deliver a new link if delivery fails. Historical notification snapshots are not rewritten.
|
|
275
|
+
|
|
276
|
+
## Structured issue progress
|
|
277
|
+
|
|
278
|
+
`Issue` exposes nullable text `needsYou` and `next`. `PATCH /api/projects/issues/{issueId}` and `issue.update` plan rows accept them in the same transaction as `statusKey`. Both fields are optional for people, agents, plans and system events. Omitted needsYou is retained in Blocked or In review; null, empty or whitespace clears it. Applications may constrain authenticated callers at their request boundary. Leaving these states clears it. Omitted `next` is retained; nonblank text replaces it; null, an empty string or whitespace clears it. Done and Cancelled always clear it. Both fields allow at most 2,000 characters. Progress-only writes advance revision and emit the existing refresh event. System status events share the optional-field validation and clearing rules. The new reversible migration adds the two columns without backfilling comments.
|
|
279
|
+
|
|
280
|
+
`Issue` also exposes nullable Markdown `acceptance`: the issue's delivery report — how it was, the agreed approach, what changed, how it was checked, open issues and details — ending with the acceptance criteria the owner checks and where. `PATCH /api/projects/issues/{issueId}` accepts it in any status, normally with the move to In review (`nb-studio issue update <issue> --status in_review --acceptance-file report.md`). It is kept across status changes, including Done, Cancelled and a move back to In progress, and the next delivery replaces it; omitted it is retained, and null, an empty string or whitespace clears it. It allows at most 20,000 characters (`ISSUE_ACCEPTANCE_MAX`). Its reversible migration adds the column without backfilling.
|
|
281
|
+
|
|
282
|
+
Manual issue descriptions accept pasted images through the existing protected attachment upload. Creation accepts optional `attachmentIds` of the caller's own unattached uploads and requires `pm.attachments` `upload` in addition to issue creation permission. Files are bound in the creation transaction before work starts, so the first agent context includes them. Descriptions remain Markdown; image nodes survive detail edits. Uploading blocks submission; cancelling leaves unattached files to the existing purge.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which cached issue reads an announcement (`PmChangeEvent.issueIds`) concerns: an issue's reads are keyed by
|
|
3
|
+
* `pmKeys.issue(idOrKey)` and what sits under it, with the id or, on a page opened by its key, the identifier.
|
|
4
|
+
*/
|
|
5
|
+
import type { QueryClient, QueryKey } from '@tanstack/react-query';
|
|
6
|
+
/** The issue ids an announcement names, or null when any issue may have changed. */
|
|
7
|
+
export declare function announcedIssueIds(payload: unknown): ReadonlySet<string> | null;
|
|
8
|
+
/** The key segments (`pmKeys.issue(segment)`) whose reads are of one of `issueIds`: the ids, and the keys loaded for them. */
|
|
9
|
+
export declare function changedIssueSegments(client: Pick<QueryClient, 'getQueryCache'>, issueIds: ReadonlySet<string>): Set<string>;
|
|
10
|
+
/** Whether a query key is one issue's read (`['pm', 'issue', segment, ...]`) of a segment among `segments`. */
|
|
11
|
+
export declare function isIssueRead(key: QueryKey, segments: ReadonlySet<string>): boolean;
|
|
12
|
+
//# sourceMappingURL=changed-issues.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changed-issues.d.ts","sourceRoot":"","sources":["../../../client/api/changed-issues.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAInE,oFAAoF;AACpF,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,GACf,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAK5B;AAED,8HAA8H;AAC9H,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,EAC1C,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAC5B,GAAG,CAAC,MAAM,CAAC,CAeb;AAED,+GAA+G;AAC/G,wBAAgB,WAAW,CACzB,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAC5B,OAAO,CAOT"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** The issue ids an announcement names, or null when any issue may have changed. */
|
|
2
|
+
export function announcedIssueIds(payload) {
|
|
3
|
+
const ids = payload?.issueIds;
|
|
4
|
+
return Array.isArray(ids) && ids.every((id) => typeof id === 'string')
|
|
5
|
+
? new Set(ids)
|
|
6
|
+
: null;
|
|
7
|
+
}
|
|
8
|
+
/** The key segments (`pmKeys.issue(segment)`) whose reads are of one of `issueIds`: the ids, and the keys loaded for them. */
|
|
9
|
+
export function changedIssueSegments(client, issueIds) {
|
|
10
|
+
const segments = new Set(issueIds);
|
|
11
|
+
for (const query of client
|
|
12
|
+
.getQueryCache()
|
|
13
|
+
.findAll({ queryKey: ['pm', 'issue'] })) {
|
|
14
|
+
const segment = query.queryKey[2];
|
|
15
|
+
const id = query.state.data?.id;
|
|
16
|
+
if (typeof segment === 'string' &&
|
|
17
|
+
typeof id === 'string' &&
|
|
18
|
+
issueIds.has(id))
|
|
19
|
+
segments.add(segment);
|
|
20
|
+
}
|
|
21
|
+
return segments;
|
|
22
|
+
}
|
|
23
|
+
/** Whether a query key is one issue's read (`['pm', 'issue', segment, ...]`) of a segment among `segments`. */
|
|
24
|
+
export function isIssueRead(key, segments) {
|
|
25
|
+
return (key[0] === 'pm' &&
|
|
26
|
+
key[1] === 'issue' &&
|
|
27
|
+
typeof key[2] === 'string' &&
|
|
28
|
+
segments.has(key[2]));
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=changed-issues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changed-issues.js","sourceRoot":"","sources":["../../../client/api/changed-issues.ts"],"names":[],"mappings":"AAQA,oFAAoF;AACpF,MAAM,UAAU,iBAAiB,CAC/B,OAAgB;IAEhB,MAAM,GAAG,GAAI,OAAyC,EAAE,QAAQ,CAAC;IACjE,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC;QACpE,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC;QACd,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,8HAA8H;AAC9H,MAAM,UAAU,oBAAoB,CAClC,MAA0C,EAC1C,QAA6B;IAE7B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,MAAM;SACvB,aAAa,EAAE;SACf,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,EAAE,GAAI,KAAK,CAAC,KAAK,CAAC,IAAqC,EAAE,EAAE,CAAC;QAClE,IACE,OAAO,OAAO,KAAK,QAAQ;YAC3B,OAAO,EAAE,KAAK,QAAQ;YACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAEhB,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,+GAA+G;AAC/G,MAAM,UAAU,WAAW,CACzB,GAAa,EACb,QAA6B;IAE7B,OAAO,CACL,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI;QACf,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO;QAClB,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ;QAC1B,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACrB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The browser API of `/api/projects`, typed with the server's `shared/` contracts. One method per endpoint; responses
|
|
3
|
+
* are unwrapped from `{ data }`, and cursor lists become a `Page` whose `nextCursor` is the next `pageToken`. Failures
|
|
4
|
+
* throw `ApiClientError` (status, reason, message).
|
|
5
|
+
*/
|
|
6
|
+
import type { ApiClient } from '@nocobase/app-client';
|
|
7
|
+
import type { Page } from '../../shared/common.js';
|
|
8
|
+
import type { Attachment } from '../../shared/attachments.js';
|
|
9
|
+
import { type CommentReaction, type CreateCommentRequest, type CreateCommentResult, type IssueComment, type MentionCandidate, type ThreadPage, type ThreadResolution } from '../../shared/comments.js';
|
|
10
|
+
import type { CreateInvitationsRequest, Invitation, InvitationResult } from '../../shared/invitations.js';
|
|
11
|
+
import { type ActivityPage, type CreateIssueRequest, type Issue, type IssueBoard, type IssueDetail, type IssueListItem, type IssueListQuery, type StatusDefinition, type UpdateIssueRequest, type UpdateIssueResult } from '../../shared/issues.js';
|
|
12
|
+
import type { CreateLabelRequest, Label, UpdateLabelRequest } from '../../shared/labels.js';
|
|
13
|
+
import type { ExecutorCandidate } from '../../shared/kinds.js';
|
|
14
|
+
import type { ApiKeyActor, Me, Member } from '../../shared/members.js';
|
|
15
|
+
import type { CreateProjectRequest, CreateProjectResourceRequest, ProjectDetail, ProjectListItem, ProjectResource, UpdateProjectRequest, UpdateProjectResourceRequest } from '../../shared/projects.js';
|
|
16
|
+
import type { UpdateSettingsRequest, WorkspaceSettings } from '../../shared/settings.js';
|
|
17
|
+
import type { AddDependencyRequest, IssueDependency, UpdateDependencyRequest } from '../../shared/subtasks.js';
|
|
18
|
+
import type { UserRef } from '../../shared/common.js';
|
|
19
|
+
import type { SubscriptionState } from '../../shared/subscriptions.js';
|
|
20
|
+
export declare class PmApi {
|
|
21
|
+
private readonly api;
|
|
22
|
+
constructor(api: ApiClient);
|
|
23
|
+
me(): Promise<Me>;
|
|
24
|
+
members(): Promise<Member[]>;
|
|
25
|
+
/** Organizations' API keys, by their identities: not members, but named where they acted. */
|
|
26
|
+
apiKeyActors(): Promise<ApiKeyActor[]>;
|
|
27
|
+
/** Executors of other kinds (agents, say) the signed-in user may give work to. */
|
|
28
|
+
executors(): Promise<ExecutorCandidate[]>;
|
|
29
|
+
invitations(): Promise<Invitation[]>;
|
|
30
|
+
invite(input: CreateInvitationsRequest): Promise<readonly InvitationResult[]>;
|
|
31
|
+
resendInvitation(invitationId: string, sendEmail?: boolean): Promise<InvitationResult>;
|
|
32
|
+
revokeInvitation(invitationId: string): Promise<void>;
|
|
33
|
+
settings(): Promise<WorkspaceSettings>;
|
|
34
|
+
updateSettings(input: UpdateSettingsRequest): Promise<WorkspaceSettings>;
|
|
35
|
+
labels(): Promise<Label[]>;
|
|
36
|
+
createLabel(input: CreateLabelRequest): Promise<Label>;
|
|
37
|
+
updateLabel(labelId: string, input: UpdateLabelRequest): Promise<Label>;
|
|
38
|
+
deleteLabel(labelId: string): Promise<void>;
|
|
39
|
+
projects(): Promise<ProjectListItem[]>;
|
|
40
|
+
project(projectId: string): Promise<ProjectDetail>;
|
|
41
|
+
createProject(input: CreateProjectRequest): Promise<ProjectDetail>;
|
|
42
|
+
updateProject(projectId: string, input: UpdateProjectRequest): Promise<ProjectDetail>;
|
|
43
|
+
deleteProject(projectId: string): Promise<void>;
|
|
44
|
+
/** Answers the member added. */
|
|
45
|
+
addProjectMember(projectId: string, userId: string): Promise<UserRef>;
|
|
46
|
+
removeProjectMember(projectId: string, userId: string): Promise<void>;
|
|
47
|
+
addProjectResource(projectId: string, input: CreateProjectResourceRequest): Promise<ProjectResource>;
|
|
48
|
+
updateProjectResource(projectId: string, resourceId: string, input: UpdateProjectResourceRequest): Promise<ProjectResource>;
|
|
49
|
+
deleteProjectResource(projectId: string, resourceId: string): Promise<void>;
|
|
50
|
+
/** The fixed statuses, in order. */
|
|
51
|
+
statuses(): Promise<StatusDefinition[]>;
|
|
52
|
+
issuePage(query: IssueListQuery): Promise<Page<IssueListItem>>;
|
|
53
|
+
/** A column per status, each with its first `ISSUE_PAGE_LIMIT.default` issues. */
|
|
54
|
+
board(query: IssueListQuery): Promise<IssueBoard>;
|
|
55
|
+
/** One issue, by id or identifier (`PM-12`). */
|
|
56
|
+
issue(idOrKey: string): Promise<IssueDetail>;
|
|
57
|
+
activities(issueId: string, cursor?: string): Promise<ActivityPage>;
|
|
58
|
+
createIssue(input: CreateIssueRequest): Promise<Issue>;
|
|
59
|
+
/** The issue after the change. */
|
|
60
|
+
updateIssue(issueId: string, input: UpdateIssueRequest): Promise<UpdateIssueResult>;
|
|
61
|
+
deleteIssue(issueId: string): Promise<void>;
|
|
62
|
+
restoreIssue(issueId: string): Promise<Issue>;
|
|
63
|
+
/** Makes the issue wait for (`blockedBy`, the default) or link to (`relatedTo`) another; answers the link. */
|
|
64
|
+
addDependency(issueId: string, input: AddDependencyRequest): Promise<IssueDependency>;
|
|
65
|
+
/** Converts a relationship atomically, keeping its id and checking the type the caller read. */
|
|
66
|
+
updateDependency(issueId: string, dependencyId: string, input: UpdateDependencyRequest): Promise<IssueDependency>;
|
|
67
|
+
/** Removes the link to `dependsOnIssueId` of `type` (`blockedBy` when left out). */
|
|
68
|
+
removeDependencyTo(issueId: string, input: AddDependencyRequest): Promise<void>;
|
|
69
|
+
removeDependency(issueId: string, dependencyId: string): Promise<void>;
|
|
70
|
+
/** Threads older than `cursor` (the detail brings the newest page and its cursor). */
|
|
71
|
+
threads(issueId: string, cursor?: string): Promise<ThreadPage>;
|
|
72
|
+
createComment(issueId: string, input: CreateCommentRequest): Promise<CreateCommentResult>;
|
|
73
|
+
updateComment(commentId: string, content: string): Promise<IssueComment>;
|
|
74
|
+
deleteComment(commentId: string): Promise<void>;
|
|
75
|
+
/** The comment's reactions after adding the caller's `emoji`. */
|
|
76
|
+
react(commentId: string, emoji: string): Promise<readonly CommentReaction[]>;
|
|
77
|
+
/** The comment's reactions after removing the caller's `emoji`. */
|
|
78
|
+
unreact(commentId: string, emoji: string): Promise<readonly CommentReaction[]>;
|
|
79
|
+
private reaction;
|
|
80
|
+
setThreadResolved(commentId: string, resolved: boolean): Promise<ThreadResolution>;
|
|
81
|
+
setSubscription(issueId: string, subscribed: boolean): Promise<SubscriptionState>;
|
|
82
|
+
/** The `@` list for a comment on `issueId`: every mentionable kind's candidates matching `q`. */
|
|
83
|
+
mentionCandidates(query: {
|
|
84
|
+
readonly issueId?: string;
|
|
85
|
+
readonly q?: string;
|
|
86
|
+
readonly limit?: number;
|
|
87
|
+
}): Promise<MentionCandidate[]>;
|
|
88
|
+
/** Uploads one file of the caller's, attached to nothing yet (to be sent with a comment). */
|
|
89
|
+
uploadAttachment(file: File, signal?: AbortSignal): Promise<Attachment>;
|
|
90
|
+
/** Uploads one file straight onto the issue. */
|
|
91
|
+
uploadIssueAttachment(issueId: string, file: File, signal?: AbortSignal): Promise<Attachment>;
|
|
92
|
+
issueAttachments(issueId: string): Promise<Attachment[]>;
|
|
93
|
+
removeAttachment(attachmentId: string): Promise<void>;
|
|
94
|
+
private upload;
|
|
95
|
+
private page;
|
|
96
|
+
private get;
|
|
97
|
+
private send;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../client/api/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAEL,KAAK,eAAe,EAEpB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,wBAAwB,EACxB,UAAU,EACV,gBAAgB,EACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,KAAK,EACV,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,cAAc,EAEnB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,kBAAkB,EAClB,KAAK,EACL,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EACV,oBAAoB,EACpB,4BAA4B,EAC5B,aAAa,EACb,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,4BAA4B,EAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAyCvE,qBAAa,KAAK;IACG,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,SAAS;IAI3C,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC;IAIjB,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAInC,6FAA6F;IACtF,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAI7C,kFAAkF;IAC3E,SAAS,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIzC,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAI9B,MAAM,CACjB,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC;IAOhC,gBAAgB,CACrB,YAAY,EAAE,MAAM,EACpB,SAAS,GAAE,OAAc,GACxB,OAAO,CAAC,gBAAgB,CAAC;IAOrB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrD,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAItC,cAAc,CACnB,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,iBAAiB,CAAC;IAItB,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAI1B,WAAW,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAItD,WAAW,CAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,KAAK,CAAC;IAIV,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3C,QAAQ,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAItC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAIlD,aAAa,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC;IAIlE,aAAa,CAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,aAAa,CAAC;IAIlB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,gCAAgC;IACzB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMrE,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrE,kBAAkB,CACvB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,eAAe,CAAC;IAIpB,qBAAqB,CAC1B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,eAAe,CAAC;IAQpB,qBAAqB,CAC1B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;IAShB,oCAAoC;IAC7B,QAAQ,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAIvC,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAIrE,kFAAkF;IAC3E,KAAK,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC;IAOxD,gDAAgD;IACzC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI5C,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAOnE,WAAW,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAI7D,kCAAkC;IAC3B,WAAW,CAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,iBAAiB,CAAC;IAItB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAIpD,8GAA8G;IACvG,aAAa,CAClB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,eAAe,CAAC;IAQ3B,gGAAgG;IACzF,gBAAgB,CACrB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,eAAe,CAAC;IAQ3B,oFAAoF;IAC7E,kBAAkB,CACvB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,IAAI,CAAC;IAQT,gBAAgB,CACrB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAShB,sFAAsF;IAC/E,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAO9D,aAAa,CAClB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,mBAAmB,CAAC;IAIxB,aAAa,CAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,YAAY,CAAC;IAMjB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,iEAAiE;IAC1D,KAAK,CACV,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;IAItC,mEAAmE;IAC5D,OAAO,CACZ,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;YAIxB,QAAQ;IAaf,iBAAiB,CACtB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,gBAAgB,CAAC;IAOrB,eAAe,CACpB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,iBAAiB,CAAC;IAO7B,iGAAiG;IAC1F,iBAAiB,CAAC,KAAK,EAAE;QAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAU/B,6FAA6F;IACtF,gBAAgB,CACrB,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC;IAItB,gDAAgD;IACzC,qBAAqB,CAC1B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC;IAQf,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIxD,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAI9C,MAAM;YAgBN,IAAI;YAQJ,GAAG;YAQH,IAAI;CAYnB"}
|