devchain-cli 0.21.0 → 0.22.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/drizzle/0073_integration_storage.sql +27 -0
- package/dist/drizzle/0074_black_drax.sql +7 -0
- package/dist/drizzle/0075_misty_franklin_richards.sql +37 -0
- package/dist/drizzle/0076_epic_time_accounting.sql +48 -0
- package/dist/drizzle/meta/0073_snapshot.json +6247 -0
- package/dist/drizzle/meta/0074_snapshot.json +6299 -0
- package/dist/drizzle/meta/0075_snapshot.json +6563 -0
- package/dist/drizzle/meta/0076_snapshot.json +6913 -0
- package/dist/drizzle/meta/_journal.json +28 -0
- package/dist/node_modules/@devchain/shared/mobile-rpc-contract/index.d.ts +27 -1
- package/dist/node_modules/@devchain/shared/mobile-rpc-contract/index.d.ts.map +1 -1
- package/dist/node_modules/@devchain/shared/mobile-rpc-contract/index.js +15 -0
- package/dist/node_modules/@devchain/shared/mobile-rpc-contract/index.js.map +1 -1
- package/dist/node_modules/@devchain/shared/schemas/export-schema.d.ts +52 -52
- package/dist/node_modules/@devchain/shared/tsconfig.tsbuildinfo +1 -1
- package/dist/server/app.main.module.js +4 -0
- package/dist/server/app.main.module.js.map +1 -1
- package/dist/server/app.normal.module.js +2 -0
- package/dist/server/app.normal.module.js.map +1 -1
- package/dist/server/common/config/container-scope.d.ts +11 -0
- package/dist/server/common/config/container-scope.js +37 -0
- package/dist/server/common/config/container-scope.js.map +1 -1
- package/dist/server/common/constants/terminal.d.ts +1 -0
- package/dist/server/common/constants/terminal.js +2 -1
- package/dist/server/common/constants/terminal.js.map +1 -1
- package/dist/server/common/filters/http-exception.filter.js +3 -4
- package/dist/server/common/filters/http-exception.filter.js.map +1 -1
- package/dist/server/common/guards/integration-admission.guard.d.ts +4 -0
- package/dist/server/common/guards/integration-admission.guard.js +22 -0
- package/dist/server/common/guards/integration-admission.guard.js.map +1 -0
- package/dist/server/common/test/app-bootstrap.helper.js +1 -1
- package/dist/server/common/test/app-bootstrap.helper.js.map +1 -1
- package/dist/server/modules/agent-message-delivery/agent-message-delivery.service.js +4 -0
- package/dist/server/modules/agent-message-delivery/agent-message-delivery.service.js.map +1 -1
- package/dist/server/modules/cloud/cloud.module.js +5 -1
- package/dist/server/modules/cloud/cloud.module.js.map +1 -1
- package/dist/server/modules/cloud/services/cloud-egress-bridge.service.d.ts +3 -1
- package/dist/server/modules/cloud/services/cloud-egress-bridge.service.js +19 -3
- package/dist/server/modules/cloud/services/cloud-egress-bridge.service.js.map +1 -1
- package/dist/server/modules/cloud/services/egress-queue.service.d.ts +2 -0
- package/dist/server/modules/cloud/services/egress-queue.service.js +35 -17
- package/dist/server/modules/cloud/services/egress-queue.service.js.map +1 -1
- package/dist/server/modules/cloud/services/event-mapper.service.d.ts +1 -0
- package/dist/server/modules/cloud/services/event-mapper.service.js.map +1 -1
- package/dist/server/modules/cloud/services/notification-recipient-resolver.service.d.ts +10 -0
- package/dist/server/modules/cloud/services/notification-recipient-resolver.service.js +55 -0
- package/dist/server/modules/cloud/services/notification-recipient-resolver.service.js.map +1 -0
- package/dist/server/modules/cloud-tunnel/services/mobile-rpc-contract.generated.d.ts +31 -5
- package/dist/server/modules/cloud-tunnel/services/mobile-rpc-contract.generated.js +15 -0
- package/dist/server/modules/cloud-tunnel/services/mobile-rpc-contract.generated.js.map +1 -1
- package/dist/server/modules/cloud-tunnel/services/mobile-rpc-workspace-access.service.js +5 -2
- package/dist/server/modules/cloud-tunnel/services/mobile-rpc-workspace-access.service.js.map +1 -1
- package/dist/server/modules/cloud-tunnel/services/tunnel-handler.service.d.ts +1 -0
- package/dist/server/modules/cloud-tunnel/services/tunnel-handler.service.js +8 -0
- package/dist/server/modules/cloud-tunnel/services/tunnel-handler.service.js.map +1 -1
- package/dist/server/modules/core/controllers/runtime.controller.d.ts +1 -0
- package/dist/server/modules/core/controllers/runtime.controller.js +2 -0
- package/dist/server/modules/core/controllers/runtime.controller.js.map +1 -1
- package/dist/server/modules/e2ee/services/e2ee-device-store.service.d.ts +2 -0
- package/dist/server/modules/e2ee/services/e2ee-device-store.service.js +26 -0
- package/dist/server/modules/e2ee/services/e2ee-device-store.service.js.map +1 -1
- package/dist/server/modules/e2ee/services/e2ee-trust.service.d.ts +5 -0
- package/dist/server/modules/e2ee/services/e2ee-trust.service.js +11 -0
- package/dist/server/modules/e2ee/services/e2ee-trust.service.js.map +1 -1
- package/dist/server/modules/e2ee/services/paired-device-workspace-access.service.d.ts +1 -0
- package/dist/server/modules/e2ee/services/paired-device-workspace-access.service.js +4 -0
- package/dist/server/modules/e2ee/services/paired-device-workspace-access.service.js.map +1 -1
- package/dist/server/modules/epic-time/controllers/epic-time.controller.d.ts +8 -0
- package/dist/server/modules/epic-time/controllers/epic-time.controller.js +70 -0
- package/dist/server/modules/epic-time/controllers/epic-time.controller.js.map +1 -0
- package/dist/server/modules/epic-time/epic-time.module.d.ts +2 -0
- package/dist/server/modules/epic-time/epic-time.module.js +28 -0
- package/dist/server/modules/epic-time/epic-time.module.js.map +1 -0
- package/dist/server/modules/epic-time/models/epic-time.models.d.ts +26 -0
- package/dist/server/modules/epic-time/models/epic-time.models.js +3 -0
- package/dist/server/modules/epic-time/models/epic-time.models.js.map +1 -0
- package/dist/server/modules/epic-time/services/agent-time-accounting.service.d.ts +32 -0
- package/dist/server/modules/epic-time/services/agent-time-accounting.service.js +159 -0
- package/dist/server/modules/epic-time/services/agent-time-accounting.service.js.map +1 -0
- package/dist/server/modules/epic-time/services/epic-time.service.d.ts +15 -0
- package/dist/server/modules/epic-time/services/epic-time.service.js +224 -0
- package/dist/server/modules/epic-time/services/epic-time.service.js.map +1 -0
- package/dist/server/modules/epic-time/services/epic-time.store.d.ts +75 -0
- package/dist/server/modules/epic-time/services/epic-time.store.js +453 -0
- package/dist/server/modules/epic-time/services/epic-time.store.js.map +1 -0
- package/dist/server/modules/epics/controllers/epics.controller.d.ts +10 -0
- package/dist/server/modules/epics/controllers/epics.controller.js +92 -0
- package/dist/server/modules/epics/controllers/epics.controller.js.map +1 -1
- package/dist/server/modules/epics/services/epics.service.d.ts +32 -2
- package/dist/server/modules/epics/services/epics.service.js +243 -96
- package/dist/server/modules/epics/services/epics.service.js.map +1 -1
- package/dist/server/modules/events/catalog/agent.created.d.ts +4 -4
- package/dist/server/modules/events/catalog/agent.deleted.d.ts +2 -2
- package/dist/server/modules/events/catalog/agent.message.sent.d.ts +40 -40
- package/dist/server/modules/events/catalog/broadcast-registry.js +1 -0
- package/dist/server/modules/events/catalog/broadcast-registry.js.map +1 -1
- package/dist/server/modules/events/catalog/claude.hooks.ask_user_question.pending.d.ts +4 -4
- package/dist/server/modules/events/catalog/claude.hooks.session.started.d.ts +10 -10
- package/dist/server/modules/events/catalog/epic.comment.created.d.ts +6 -6
- package/dist/server/modules/events/catalog/epic.created.d.ts +8 -8
- package/dist/server/modules/events/catalog/epic.deleted.d.ts +4 -4
- package/dist/server/modules/events/catalog/epic.updated.d.ts +68 -42
- package/dist/server/modules/events/catalog/epic.updated.js +5 -0
- package/dist/server/modules/events/catalog/epic.updated.js.map +1 -1
- package/dist/server/modules/events/catalog/guest.registered.d.ts +2 -2
- package/dist/server/modules/events/catalog/guest.unregistered.d.ts +4 -4
- package/dist/server/modules/events/catalog/index.d.ts +370 -228
- package/dist/server/modules/events/catalog/index.js +11 -1
- package/dist/server/modules/events/catalog/index.js.map +1 -1
- package/dist/server/modules/events/catalog/integration.connection.created.d.ts +30 -0
- package/dist/server/modules/events/catalog/integration.connection.created.js +17 -0
- package/dist/server/modules/events/catalog/integration.connection.created.js.map +1 -0
- package/dist/server/modules/events/catalog/integration.connection.deleted.d.ts +27 -0
- package/dist/server/modules/events/catalog/integration.connection.deleted.js +16 -0
- package/dist/server/modules/events/catalog/integration.connection.deleted.js.map +1 -0
- package/dist/server/modules/events/catalog/integration.connection.updated.d.ts +39 -0
- package/dist/server/modules/events/catalog/integration.connection.updated.js +20 -0
- package/dist/server/modules/events/catalog/integration.connection.updated.js.map +1 -0
- package/dist/server/modules/events/catalog/review.comment.created.d.ts +16 -16
- package/dist/server/modules/events/catalog/review.comment.deleted.d.ts +2 -2
- package/dist/server/modules/events/catalog/review.comment.resolved.d.ts +2 -2
- package/dist/server/modules/events/catalog/review.comment.updated.d.ts +4 -4
- package/dist/server/modules/events/catalog/review.created.d.ts +12 -12
- package/dist/server/modules/events/catalog/review.updated.d.ts +22 -22
- package/dist/server/modules/events/catalog/scheduled-epic.executed.d.ts +12 -12
- package/dist/server/modules/events/catalog/session.human-prompt-state-changed.d.ts +77 -0
- package/dist/server/modules/events/catalog/session.human-prompt-state-changed.js +25 -0
- package/dist/server/modules/events/catalog/session.human-prompt-state-changed.js.map +1 -0
- package/dist/server/modules/events/catalog/session.provider-session-id.discovered.d.ts +2 -2
- package/dist/server/modules/events/catalog/session.recommendation.d.ts +4 -4
- package/dist/server/modules/events/catalog/session.restored.d.ts +2 -2
- package/dist/server/modules/events/catalog/session.started.d.ts +2 -2
- package/dist/server/modules/events/catalog/session.starting.d.ts +2 -2
- package/dist/server/modules/events/catalog/session.stopped.d.ts +2 -2
- package/dist/server/modules/events/catalog/session.transcript.discovered.d.ts +4 -4
- package/dist/server/modules/events/catalog/team.config.updated.d.ts +6 -6
- package/dist/server/modules/events/catalog/team.member.added.d.ts +2 -2
- package/dist/server/modules/events/catalog/team.member.removed.d.ts +2 -2
- package/dist/server/modules/events/catalog/terminal.watcher.triggered.d.ts +4 -4
- package/dist/server/modules/events/events-core.module.js +8 -1
- package/dist/server/modules/events/events-core.module.js.map +1 -1
- package/dist/server/modules/events/events-infra.module.js +6 -1
- package/dist/server/modules/events/events-infra.module.js.map +1 -1
- package/dist/server/modules/events/services/committed-event.store.d.ts +23 -0
- package/dist/server/modules/events/services/committed-event.store.js +169 -0
- package/dist/server/modules/events/services/committed-event.store.js.map +1 -0
- package/dist/server/modules/events/services/durable-event-dispatcher.service.d.ts +16 -0
- package/dist/server/modules/events/services/durable-event-dispatcher.service.js +97 -0
- package/dist/server/modules/events/services/durable-event-dispatcher.service.js.map +1 -0
- package/dist/server/modules/events/services/durable-event-registry.service.d.ts +25 -0
- package/dist/server/modules/events/services/durable-event-registry.service.js +59 -0
- package/dist/server/modules/events/services/durable-event-registry.service.js.map +1 -0
- package/dist/server/modules/events/services/event-log.service.d.ts +6 -1
- package/dist/server/modules/events/services/event-log.service.js +32 -18
- package/dist/server/modules/events/services/event-log.service.js.map +1 -1
- package/dist/server/modules/events/services/events.service.d.ts +11 -1
- package/dist/server/modules/events/services/events.service.js +50 -7
- package/dist/server/modules/events/services/events.service.js.map +1 -1
- package/dist/server/modules/external-integrations/adapters/clickup-external-task.provider.d.ts +97 -0
- package/dist/server/modules/external-integrations/adapters/clickup-external-task.provider.js +1404 -0
- package/dist/server/modules/external-integrations/adapters/clickup-external-task.provider.js.map +1 -0
- package/dist/server/modules/external-integrations/adapters/jira-external-task.provider.d.ts +113 -0
- package/dist/server/modules/external-integrations/adapters/jira-external-task.provider.js +1790 -0
- package/dist/server/modules/external-integrations/adapters/jira-external-task.provider.js.map +1 -0
- package/dist/server/modules/external-integrations/adapters/rich/clickup-comment-converter.d.ts +10 -0
- package/dist/server/modules/external-integrations/adapters/rich/clickup-comment-converter.js +97 -0
- package/dist/server/modules/external-integrations/adapters/rich/clickup-comment-converter.js.map +1 -0
- package/dist/server/modules/external-integrations/adapters/rich/clickup-markdown-converter.d.ts +16 -0
- package/dist/server/modules/external-integrations/adapters/rich/clickup-markdown-converter.js +386 -0
- package/dist/server/modules/external-integrations/adapters/rich/clickup-markdown-converter.js.map +1 -0
- package/dist/server/modules/external-integrations/adapters/rich/jira-adf-converter.d.ts +5 -0
- package/dist/server/modules/external-integrations/adapters/rich/jira-adf-converter.js +229 -0
- package/dist/server/modules/external-integrations/adapters/rich/jira-adf-converter.js.map +1 -0
- package/dist/server/modules/external-integrations/adapters/vendor-shared.d.ts +42 -0
- package/dist/server/modules/external-integrations/adapters/vendor-shared.js +182 -0
- package/dist/server/modules/external-integrations/adapters/vendor-shared.js.map +1 -0
- package/dist/server/modules/external-integrations/connections/integration-connections.controller.d.ts +11 -0
- package/dist/server/modules/external-integrations/connections/integration-connections.controller.js +121 -0
- package/dist/server/modules/external-integrations/connections/integration-connections.controller.js.map +1 -0
- package/dist/server/modules/external-integrations/connections/integration-connections.service.d.ts +46 -0
- package/dist/server/modules/external-integrations/connections/integration-connections.service.js +193 -0
- package/dist/server/modules/external-integrations/connections/integration-connections.service.js.map +1 -0
- package/dist/server/modules/external-integrations/connections/managed-subtask-sync.controller.d.ts +8 -0
- package/dist/server/modules/external-integrations/connections/managed-subtask-sync.controller.js +73 -0
- package/dist/server/modules/external-integrations/connections/managed-subtask-sync.controller.js.map +1 -0
- package/dist/server/modules/external-integrations/errors/external-provider.errors.d.ts +23 -0
- package/dist/server/modules/external-integrations/errors/external-provider.errors.js +105 -0
- package/dist/server/modules/external-integrations/errors/external-provider.errors.js.map +1 -0
- package/dist/server/modules/external-integrations/external-integrations.module.d.ts +2 -0
- package/dist/server/modules/external-integrations/external-integrations.module.js +72 -0
- package/dist/server/modules/external-integrations/external-integrations.module.js.map +1 -0
- package/dist/server/modules/external-integrations/external-task-provider.registry.d.ts +12 -0
- package/dist/server/modules/external-integrations/external-task-provider.registry.js +65 -0
- package/dist/server/modules/external-integrations/external-task-provider.registry.js.map +1 -0
- package/dist/server/modules/external-integrations/models/external-comment-lookup-token.d.ts +12 -0
- package/dist/server/modules/external-integrations/models/external-comment-lookup-token.js +49 -0
- package/dist/server/modules/external-integrations/models/external-comment-lookup-token.js.map +1 -0
- package/dist/server/modules/external-integrations/models/external-edit-session.models.d.ts +94 -0
- package/dist/server/modules/external-integrations/models/external-edit-session.models.js +10 -0
- package/dist/server/modules/external-integrations/models/external-edit-session.models.js.map +1 -0
- package/dist/server/modules/external-integrations/models/external-provider.models.d.ts +341 -0
- package/dist/server/modules/external-integrations/models/external-provider.models.js +21 -0
- package/dist/server/modules/external-integrations/models/external-provider.models.js.map +1 -0
- package/dist/server/modules/external-integrations/models/external-rich-capabilities.d.ts +6 -0
- package/dist/server/modules/external-integrations/models/external-rich-capabilities.js +9 -0
- package/dist/server/modules/external-integrations/models/external-rich-capabilities.js.map +1 -0
- package/dist/server/modules/external-integrations/models/external-rich-document.d.ts +59 -0
- package/dist/server/modules/external-integrations/models/external-rich-document.js +233 -0
- package/dist/server/modules/external-integrations/models/external-rich-document.js.map +1 -0
- package/dist/server/modules/external-integrations/models/external-task-source.d.ts +4 -0
- package/dist/server/modules/external-integrations/models/external-task-source.js +71 -0
- package/dist/server/modules/external-integrations/models/external-task-source.js.map +1 -0
- package/dist/server/modules/external-integrations/models/external-time-mutation.models.d.ts +74 -0
- package/dist/server/modules/external-integrations/models/external-time-mutation.models.js +19 -0
- package/dist/server/modules/external-integrations/models/external-time-mutation.models.js.map +1 -0
- package/dist/server/modules/external-integrations/my-work/external-edit-session.service.d.ts +57 -0
- package/dist/server/modules/external-integrations/my-work/external-edit-session.service.js +776 -0
- package/dist/server/modules/external-integrations/my-work/external-edit-session.service.js.map +1 -0
- package/dist/server/modules/external-integrations/my-work/external-my-work.controller.d.ts +37 -0
- package/dist/server/modules/external-integrations/my-work/external-my-work.controller.js +626 -0
- package/dist/server/modules/external-integrations/my-work/external-my-work.controller.js.map +1 -0
- package/dist/server/modules/external-integrations/my-work/external-my-work.openapi.d.ts +29 -0
- package/dist/server/modules/external-integrations/my-work/external-my-work.openapi.js +847 -0
- package/dist/server/modules/external-integrations/my-work/external-my-work.openapi.js.map +1 -0
- package/dist/server/modules/external-integrations/my-work/external-my-work.service.d.ts +34 -0
- package/dist/server/modules/external-integrations/my-work/external-my-work.service.js +330 -0
- package/dist/server/modules/external-integrations/my-work/external-my-work.service.js.map +1 -0
- package/dist/server/modules/external-integrations/my-work/external-time-mutation.service.d.ts +27 -0
- package/dist/server/modules/external-integrations/my-work/external-time-mutation.service.js +412 -0
- package/dist/server/modules/external-integrations/my-work/external-time-mutation.service.js.map +1 -0
- package/dist/server/modules/external-integrations/ports/external-task-provider.d.ts +13 -0
- package/dist/server/modules/external-integrations/ports/external-task-provider.js +5 -0
- package/dist/server/modules/external-integrations/ports/external-task-provider.js.map +1 -0
- package/dist/server/modules/external-integrations/request-validation.d.ts +2 -0
- package/dist/server/modules/external-integrations/request-validation.js +14 -0
- package/dist/server/modules/external-integrations/request-validation.js.map +1 -0
- package/dist/server/modules/external-integrations/sessions/external-edit-session.store.d.ts +59 -0
- package/dist/server/modules/external-integrations/sessions/external-edit-session.store.js +329 -0
- package/dist/server/modules/external-integrations/sessions/external-edit-session.store.js.map +1 -0
- package/dist/server/modules/external-integrations/sessions/external-time-mutation.store.d.ts +44 -0
- package/dist/server/modules/external-integrations/sessions/external-time-mutation.store.js +171 -0
- package/dist/server/modules/external-integrations/sessions/external-time-mutation.store.js.map +1 -0
- package/dist/server/modules/external-integrations/sessions/provider-operation-gate.d.ts +7 -0
- package/dist/server/modules/external-integrations/sessions/provider-operation-gate.js +33 -0
- package/dist/server/modules/external-integrations/sessions/provider-operation-gate.js.map +1 -0
- package/dist/server/modules/external-integrations/subscribers/external-subtask-sync.subscriber.d.ts +69 -0
- package/dist/server/modules/external-integrations/subscribers/external-subtask-sync.subscriber.js +1092 -0
- package/dist/server/modules/external-integrations/subscribers/external-subtask-sync.subscriber.js.map +1 -0
- package/dist/server/modules/external-integrations/subscribers/managed-subtask-content.d.ts +8 -0
- package/dist/server/modules/external-integrations/subscribers/managed-subtask-content.js +23 -0
- package/dist/server/modules/external-integrations/subscribers/managed-subtask-content.js.map +1 -0
- package/dist/server/modules/external-integrations/subscribers/managed-subtask-recovery-policy.d.ts +7 -0
- package/dist/server/modules/external-integrations/subscribers/managed-subtask-recovery-policy.js +30 -0
- package/dist/server/modules/external-integrations/subscribers/managed-subtask-recovery-policy.js.map +1 -0
- package/dist/server/modules/external-integrations/subscribers/managed-subtask-sync-health.service.d.ts +44 -0
- package/dist/server/modules/external-integrations/subscribers/managed-subtask-sync-health.service.js +135 -0
- package/dist/server/modules/external-integrations/subscribers/managed-subtask-sync-health.service.js.map +1 -0
- package/dist/server/modules/external-integrations/transport/safe-vendor-http-client.d.ts +47 -0
- package/dist/server/modules/external-integrations/transport/safe-vendor-http-client.js +294 -0
- package/dist/server/modules/external-integrations/transport/safe-vendor-http-client.js.map +1 -0
- package/dist/server/modules/hooks/dtos/hook-event.dto.d.ts +64 -64
- package/dist/server/modules/mcp/dtos/mcp.dto.d.ts +36 -36
- package/dist/server/modules/orchestrator/docker/services/seed-preparation.service.d.ts +5 -0
- package/dist/server/modules/orchestrator/docker/services/seed-preparation.service.js +51 -1
- package/dist/server/modules/orchestrator/docker/services/seed-preparation.service.js.map +1 -1
- package/dist/server/modules/orchestrator/sync/services/task-merge.service.d.ts +0 -2
- package/dist/server/modules/orchestrator/sync/services/task-merge.service.js +9 -48
- package/dist/server/modules/orchestrator/sync/services/task-merge.service.js.map +1 -1
- package/dist/server/modules/profiles/dto.d.ts +11 -11
- package/dist/server/modules/projects/controllers/projects.controller.d.ts +2 -2
- package/dist/server/modules/projects/dtos/export.dto.d.ts +6 -6
- package/dist/server/modules/projects/helpers/project-export.d.ts +1 -1
- package/dist/server/modules/projects/services/projects.service.d.ts +1 -1
- package/dist/server/modules/projects/template-codec/codecs/watchers.codec.d.ts +1 -1
- package/dist/server/modules/registry/controllers/templates.controller.d.ts +7 -7
- package/dist/server/modules/reviews/dtos/review.dto.d.ts +10 -10
- package/dist/server/modules/scheduled-epics/dtos/scheduled-epic.dto.d.ts +1 -1
- package/dist/server/modules/session-reader/adapters/antigravity-session-reader.adapter.d.ts +1 -1
- package/dist/server/modules/session-reader/adapters/opencode-session-reader.adapter.d.ts +1 -1
- package/dist/server/modules/session-reader/data/pricing.json +128 -39
- package/dist/server/modules/session-terminal-runtime/session-terminal-runtime.service.d.ts +2 -0
- package/dist/server/modules/session-terminal-runtime/session-terminal-runtime.service.js +18 -12
- package/dist/server/modules/session-terminal-runtime/session-terminal-runtime.service.js.map +1 -1
- package/dist/server/modules/sessions/controllers/sessions.controller.d.ts +3 -0
- package/dist/server/modules/sessions/controllers/sessions.controller.js +30 -0
- package/dist/server/modules/sessions/controllers/sessions.controller.js.map +1 -1
- package/dist/server/modules/sessions/dtos/sessions.dto.d.ts +2 -2
- package/dist/server/modules/sessions/services/message-enqueue.service.d.ts +2 -0
- package/dist/server/modules/sessions/services/message-enqueue.service.js +2 -0
- package/dist/server/modules/sessions/services/message-enqueue.service.js.map +1 -1
- package/dist/server/modules/sessions/services/message-pool.types.d.ts +8 -1
- package/dist/server/modules/sessions/services/sessions-message-pool.service.d.ts +50 -6
- package/dist/server/modules/sessions/services/sessions-message-pool.service.js +828 -190
- package/dist/server/modules/sessions/services/sessions-message-pool.service.js.map +1 -1
- package/dist/server/modules/settings/dtos/settings.dto.d.ts +8 -0
- package/dist/server/modules/settings/dtos/settings.dto.js +1 -0
- package/dist/server/modules/settings/dtos/settings.dto.js.map +1 -1
- package/dist/server/modules/settings/local/delegates/core-settings.delegate.js +12 -0
- package/dist/server/modules/settings/local/delegates/core-settings.delegate.js.map +1 -1
- package/dist/server/modules/settings/services/settings.constants.d.ts +1 -1
- package/dist/server/modules/settings/services/settings.constants.js +2 -1
- package/dist/server/modules/settings/services/settings.constants.js.map +1 -1
- package/dist/server/modules/settings/services/settings.service.d.ts +1 -1
- package/dist/server/modules/settings/services/settings.service.js +2 -1
- package/dist/server/modules/settings/services/settings.service.js.map +1 -1
- package/dist/server/modules/skills/dtos/skill.dto.d.ts +2 -2
- package/dist/server/modules/storage/db/schema.d.ts +2420 -958
- package/dist/server/modules/storage/db/schema.js +144 -2
- package/dist/server/modules/storage/db/schema.js.map +1 -1
- package/dist/server/modules/storage/interfaces/storage.interface.d.ts +34 -6
- package/dist/server/modules/storage/interfaces/storage.interface.js.map +1 -1
- package/dist/server/modules/storage/local/delegates/epic.delegate.d.ts +9 -5
- package/dist/server/modules/storage/local/delegates/epic.delegate.js +67 -30
- package/dist/server/modules/storage/local/delegates/epic.delegate.js.map +1 -1
- package/dist/server/modules/storage/local/delegates/external-managed-subtask.delegate.d.ts +18 -0
- package/dist/server/modules/storage/local/delegates/external-managed-subtask.delegate.js +320 -0
- package/dist/server/modules/storage/local/delegates/external-managed-subtask.delegate.js.map +1 -0
- package/dist/server/modules/storage/local/delegates/integration.delegate.d.ts +37 -0
- package/dist/server/modules/storage/local/delegates/integration.delegate.js +308 -0
- package/dist/server/modules/storage/local/delegates/integration.delegate.js.map +1 -0
- package/dist/server/modules/storage/local/integration-credential-cipher.d.ts +18 -0
- package/dist/server/modules/storage/local/integration-credential-cipher.js +138 -0
- package/dist/server/modules/storage/local/integration-credential-cipher.js.map +1 -0
- package/dist/server/modules/storage/local/local-storage.service.d.ts +36 -7
- package/dist/server/modules/storage/local/local-storage.service.js +93 -10
- package/dist/server/modules/storage/local/local-storage.service.js.map +1 -1
- package/dist/server/modules/storage/models/domain.models.d.ts +127 -0
- package/dist/server/modules/storage/models/domain.models.js +15 -0
- package/dist/server/modules/storage/models/domain.models.js.map +1 -1
- package/dist/server/modules/storage/storage.module.js +2 -1
- package/dist/server/modules/storage/storage.module.js.map +1 -1
- package/dist/server/modules/subscribers/dtos/subscriber.dto.d.ts +1 -1
- package/dist/server/modules/terminal/dtos/ws-envelope.dto.d.ts +2 -2
- package/dist/server/modules/terminal/gateways/terminal.gateway.d.ts +9 -1
- package/dist/server/modules/terminal/gateways/terminal.gateway.js +79 -3
- package/dist/server/modules/terminal/gateways/terminal.gateway.js.map +1 -1
- package/dist/server/modules/terminal/services/human-prompt-state.service.d.ts +58 -0
- package/dist/server/modules/terminal/services/human-prompt-state.service.js +206 -0
- package/dist/server/modules/terminal/services/human-prompt-state.service.js.map +1 -0
- package/dist/server/modules/terminal/services/terminal-activity.service.js +7 -18
- package/dist/server/modules/terminal/services/terminal-activity.service.js.map +1 -1
- package/dist/server/modules/terminal/services/terminal-io/delivery.d.ts +2 -1
- package/dist/server/modules/terminal/services/terminal-io/delivery.js +77 -33
- package/dist/server/modules/terminal/services/terminal-io/delivery.js.map +1 -1
- package/dist/server/modules/terminal/services/terminal-io/terminal-io.service.d.ts +14 -5
- package/dist/server/modules/terminal/services/terminal-io/terminal-io.service.js +64 -8
- package/dist/server/modules/terminal/services/terminal-io/terminal-io.service.js.map +1 -1
- package/dist/server/modules/terminal/services/terminal-io/types.d.ts +8 -0
- package/dist/server/modules/terminal/services/terminal-key-input/terminal-key-input.facade.d.ts +5 -1
- package/dist/server/modules/terminal/services/terminal-key-input/terminal-key-input.facade.js +39 -2
- package/dist/server/modules/terminal/services/terminal-key-input/terminal-key-input.facade.js.map +1 -1
- package/dist/server/modules/terminal/services/terminal-session/terminal-session-registry.d.ts +3 -1
- package/dist/server/modules/terminal/services/terminal-session/terminal-session-registry.js +7 -2
- package/dist/server/modules/terminal/services/terminal-session/terminal-session-registry.js.map +1 -1
- package/dist/server/modules/terminal/services/terminal-session/terminal-session.d.ts +4 -0
- package/dist/server/modules/terminal/services/terminal-session/terminal-session.js +8 -0
- package/dist/server/modules/terminal/services/terminal-session/terminal-session.js.map +1 -1
- package/dist/server/modules/terminal/terminal-delivery.module.js +13 -2
- package/dist/server/modules/terminal/terminal-delivery.module.js.map +1 -1
- package/dist/server/modules/terminal/terminal.module.js +4 -3
- package/dist/server/modules/terminal/terminal.module.js.map +1 -1
- package/dist/server/modules/terminal/utils/terminal-activity.d.ts +4 -0
- package/dist/server/modules/terminal/utils/terminal-activity.js +86 -0
- package/dist/server/modules/terminal/utils/terminal-activity.js.map +1 -0
- package/dist/server/modules/watchers/dtos/watcher.dto.d.ts +8 -8
- package/dist/server/templates/teams-dev.json +9 -9
- package/dist/server/tsconfig.tsbuildinfo +1 -1
- package/dist/server/ui/assets/ExternalRichEditor-DMtnZIMZ.js +113 -0
- package/dist/server/ui/assets/{ReviewDetailPage-CNffXKv8.js → ReviewDetailPage-BmyiM5IR.js} +1 -1
- package/dist/server/ui/assets/{ReviewsPage-DAcufZ3r.js → ReviewsPage-CQ87BMwT.js} +1 -1
- package/dist/server/ui/assets/index-BX6Yze-A.js +1177 -0
- package/dist/server/ui/assets/index-qoQEv_u4.css +32 -0
- package/dist/server/ui/assets/{useReviewSubscription-DD29I7uU.js → useReviewSubscription-DjbEUzt4.js} +1 -1
- package/dist/server/ui/index.html +2 -2
- package/dist/templates/teams-dev.json +9 -9
- package/package.json +15 -4
- package/dist/server/ui/assets/index-7iCs8Dxj.js +0 -1153
- package/dist/server/ui/assets/index-CLXZjL_B.css +0 -32
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
import type { IntegrationCredentials, IntegrationProvider } from '../../storage/models/domain.models';
|
|
2
|
+
import type { ExternalRichDocumentV1 } from './external-rich-document';
|
|
3
|
+
export declare const MAX_REMOTE_TASK_ID_LENGTH = 256;
|
|
4
|
+
export declare const MAX_STATUS_LENGTH = 256;
|
|
5
|
+
export declare const MAX_COMMENT_LENGTH = 10000;
|
|
6
|
+
export declare const MAX_TIME_ENTRY_NOTE_LENGTH = 10000;
|
|
7
|
+
export declare const MAX_TIME_ENTRY_DURATION_MS: number;
|
|
8
|
+
export declare const MAX_TASK_DETAIL_TEXT_LENGTH = 65536;
|
|
9
|
+
export declare const MAX_TASK_DETAIL_SUBTASKS = 100;
|
|
10
|
+
export declare const MAX_TASK_COMMENT_BODY_LENGTH = 8000;
|
|
11
|
+
export declare const MAX_TASK_COMMENT_AUTHOR_LENGTH = 256;
|
|
12
|
+
export declare const MAX_TASK_COMMENT_ID_LENGTH = 256;
|
|
13
|
+
export declare const MAX_TASK_COMMENT_CURSOR_LENGTH = 1024;
|
|
14
|
+
export declare const MAX_EXTERNAL_SUBTASK_TITLE_LENGTH = 255;
|
|
15
|
+
export declare const MAX_EXTERNAL_SUBTASK_DESCRIPTION_LENGTH = 65536;
|
|
16
|
+
export declare const MAX_EXTERNAL_SUBTASK_OWNERSHIP_TOKEN_LENGTH = 256;
|
|
17
|
+
export declare const EXTERNAL_SUBTASK_MANAGEMENT_NOTE = "Managed by DevChain. Update or delete this subtask in DevChain; remote changes are not imported.";
|
|
18
|
+
export declare const TIME_ENTRY_HISTORY_WINDOW_DAYS = 30;
|
|
19
|
+
export declare const MAX_TIME_ENTRY_HISTORY_ENTRIES = 100;
|
|
20
|
+
export interface ExternalProviderAccount {
|
|
21
|
+
provider: IntegrationProvider;
|
|
22
|
+
remoteId: string;
|
|
23
|
+
displayName: string;
|
|
24
|
+
}
|
|
25
|
+
export interface ExternalProviderDescriptor {
|
|
26
|
+
provider: IntegrationProvider;
|
|
27
|
+
displayName: string;
|
|
28
|
+
capabilities: {
|
|
29
|
+
myWork: boolean;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export type ExternalTaskStatusCategory = 'active' | 'completed' | 'unknown';
|
|
33
|
+
export interface ExternalTaskStatus {
|
|
34
|
+
remoteId?: string | null;
|
|
35
|
+
name: string;
|
|
36
|
+
category: ExternalTaskStatusCategory;
|
|
37
|
+
}
|
|
38
|
+
export type ExternalWorkAreaKind = 'list' | 'board' | 'project';
|
|
39
|
+
export type ExternalWorkAreaLocationKind = 'workspace' | 'space' | 'folder' | 'project' | 'board';
|
|
40
|
+
export interface ExternalWorkAreaLocation {
|
|
41
|
+
kind: ExternalWorkAreaLocationKind;
|
|
42
|
+
remoteId: string;
|
|
43
|
+
name: string;
|
|
44
|
+
}
|
|
45
|
+
export interface ExternalWorkAreaColumn {
|
|
46
|
+
remoteId: string | null;
|
|
47
|
+
remoteStatusIds?: string[];
|
|
48
|
+
name: string;
|
|
49
|
+
color: string;
|
|
50
|
+
category: ExternalTaskStatusCategory;
|
|
51
|
+
position: number;
|
|
52
|
+
}
|
|
53
|
+
export interface ExternalWorkAreaWorkflow {
|
|
54
|
+
isOverridden: boolean;
|
|
55
|
+
columns: ExternalWorkAreaColumn[];
|
|
56
|
+
}
|
|
57
|
+
export interface ExternalTaskStatusOption extends ExternalWorkAreaColumn {
|
|
58
|
+
actionValue: string;
|
|
59
|
+
actionLabel?: string;
|
|
60
|
+
}
|
|
61
|
+
export type ExternalWorkAreaRefreshState = 'fresh' | 'stale' | 'error';
|
|
62
|
+
export interface ExternalWorkAreaRefresh {
|
|
63
|
+
state: ExternalWorkAreaRefreshState;
|
|
64
|
+
refreshedAt: string | null;
|
|
65
|
+
retryable: boolean;
|
|
66
|
+
retryAt: string | null;
|
|
67
|
+
}
|
|
68
|
+
export interface ExternalWorkArea {
|
|
69
|
+
remoteId: string;
|
|
70
|
+
scopeKey: string;
|
|
71
|
+
name: string;
|
|
72
|
+
kind: ExternalWorkAreaKind;
|
|
73
|
+
description: string | null;
|
|
74
|
+
assignedTaskCount: number;
|
|
75
|
+
hierarchy: ExternalWorkAreaLocation[];
|
|
76
|
+
workflow: ExternalWorkAreaWorkflow;
|
|
77
|
+
refresh: ExternalWorkAreaRefresh;
|
|
78
|
+
}
|
|
79
|
+
export interface ExternalTaskSummary {
|
|
80
|
+
remoteId: string;
|
|
81
|
+
parentRemoteTaskId: string | null;
|
|
82
|
+
title: string;
|
|
83
|
+
status: ExternalTaskStatus;
|
|
84
|
+
updatedAt: string;
|
|
85
|
+
dueAt: string | null;
|
|
86
|
+
completedAt: string | null;
|
|
87
|
+
webUrl: string | null;
|
|
88
|
+
}
|
|
89
|
+
export interface ExternalTaskSubtaskSummary {
|
|
90
|
+
remoteId: string;
|
|
91
|
+
remoteKey: string;
|
|
92
|
+
title: string;
|
|
93
|
+
status: ExternalTaskStatus;
|
|
94
|
+
webUrl: string | null;
|
|
95
|
+
}
|
|
96
|
+
export interface ExternalWorkAreaTask {
|
|
97
|
+
workArea: ExternalWorkArea;
|
|
98
|
+
task: ExternalTaskSummary;
|
|
99
|
+
}
|
|
100
|
+
export type ExternalTaskAction = 'change_status' | 'add_comment' | 'log_time';
|
|
101
|
+
export interface ExternalTaskActionCapability {
|
|
102
|
+
action: ExternalTaskAction;
|
|
103
|
+
supported: boolean;
|
|
104
|
+
}
|
|
105
|
+
export interface ExternalTaskPriority {
|
|
106
|
+
name: string;
|
|
107
|
+
color: string;
|
|
108
|
+
}
|
|
109
|
+
export interface ExternalTaskLocation {
|
|
110
|
+
scopeKey: string;
|
|
111
|
+
workAreaId: string;
|
|
112
|
+
workAreaName: string;
|
|
113
|
+
}
|
|
114
|
+
export interface ExternalTaskLinkState {
|
|
115
|
+
linked: boolean;
|
|
116
|
+
epicId: string | null;
|
|
117
|
+
}
|
|
118
|
+
export interface ExternalProviderTaskDetail {
|
|
119
|
+
remoteId: string;
|
|
120
|
+
remoteKey: string;
|
|
121
|
+
title: string;
|
|
122
|
+
description: string | null;
|
|
123
|
+
descriptionTruncated: boolean;
|
|
124
|
+
status: ExternalWorkAreaColumn;
|
|
125
|
+
dueAt: string | null;
|
|
126
|
+
priority: ExternalTaskPriority | null;
|
|
127
|
+
subtasks: ExternalTaskSubtaskSummary[];
|
|
128
|
+
subtasksTruncated: boolean;
|
|
129
|
+
taskTotalDurationMs: number | null;
|
|
130
|
+
webUrl: string;
|
|
131
|
+
location: ExternalTaskLocation;
|
|
132
|
+
allowedStatuses: ExternalTaskStatusOption[];
|
|
133
|
+
actions: ExternalTaskActionCapability[];
|
|
134
|
+
}
|
|
135
|
+
export interface ExternalTaskDetail extends ExternalProviderTaskDetail {
|
|
136
|
+
linkState: ExternalTaskLinkState;
|
|
137
|
+
}
|
|
138
|
+
export interface ExternalTaskStatusInput {
|
|
139
|
+
status: string;
|
|
140
|
+
}
|
|
141
|
+
export interface ExternalTaskCommentInput {
|
|
142
|
+
text: string;
|
|
143
|
+
notifyAll: boolean;
|
|
144
|
+
}
|
|
145
|
+
export interface ExternalTaskCommentAuthor {
|
|
146
|
+
remoteId: string | null;
|
|
147
|
+
displayName: string;
|
|
148
|
+
}
|
|
149
|
+
export interface ExternalTaskCommentRich {
|
|
150
|
+
document: ExternalRichDocumentV1;
|
|
151
|
+
supported: true;
|
|
152
|
+
}
|
|
153
|
+
export type ExternalTaskCommentRichResult = ExternalTaskCommentRich | {
|
|
154
|
+
supported: false;
|
|
155
|
+
readOnlyReason: string;
|
|
156
|
+
};
|
|
157
|
+
export interface ExternalTaskComment {
|
|
158
|
+
remoteId: string;
|
|
159
|
+
author: ExternalTaskCommentAuthor;
|
|
160
|
+
body: string;
|
|
161
|
+
bodyTruncated: boolean;
|
|
162
|
+
rich: ExternalTaskCommentRichResult | null;
|
|
163
|
+
lookupToken: string | null;
|
|
164
|
+
owned: boolean;
|
|
165
|
+
createdAt: string;
|
|
166
|
+
updatedAt: string | null;
|
|
167
|
+
}
|
|
168
|
+
export interface ExternalTaskCommentPage {
|
|
169
|
+
comments: ExternalTaskComment[];
|
|
170
|
+
nextCursor: string | null;
|
|
171
|
+
}
|
|
172
|
+
export interface ExternalTaskTimeEntryInput {
|
|
173
|
+
startedAt: string;
|
|
174
|
+
durationMs: number;
|
|
175
|
+
note: string | null;
|
|
176
|
+
}
|
|
177
|
+
export interface ExternalTaskTimeEntry {
|
|
178
|
+
remoteId: string;
|
|
179
|
+
durationMs: number;
|
|
180
|
+
startedAt: string;
|
|
181
|
+
note: string | null;
|
|
182
|
+
noteTruncated: boolean;
|
|
183
|
+
canDelete: boolean;
|
|
184
|
+
}
|
|
185
|
+
export interface ExternalTaskTimeEntryHistory {
|
|
186
|
+
windowDays: 30;
|
|
187
|
+
entries: ExternalTaskTimeEntry[];
|
|
188
|
+
truncated: boolean;
|
|
189
|
+
hasRunningTimer: boolean;
|
|
190
|
+
}
|
|
191
|
+
export interface ExternalTaskActionResult {
|
|
192
|
+
remoteTaskId: string;
|
|
193
|
+
action: ExternalTaskAction;
|
|
194
|
+
succeeded: true;
|
|
195
|
+
refresh: Array<'my_work' | 'task_detail'>;
|
|
196
|
+
}
|
|
197
|
+
export interface ExternalTaskLinkLookupInput {
|
|
198
|
+
scopeKey: string;
|
|
199
|
+
taskId: string;
|
|
200
|
+
}
|
|
201
|
+
export interface ExternalTaskLinkStateSummary extends ExternalTaskLinkLookupInput {
|
|
202
|
+
linked: boolean;
|
|
203
|
+
epicId: string | null;
|
|
204
|
+
projectId: string | null;
|
|
205
|
+
projectName: string | null;
|
|
206
|
+
}
|
|
207
|
+
export interface ExternalTaskSourceSummary {
|
|
208
|
+
provider: IntegrationProvider;
|
|
209
|
+
remoteTaskId: string;
|
|
210
|
+
remoteKey: string;
|
|
211
|
+
title: string;
|
|
212
|
+
workAreaName: string;
|
|
213
|
+
statusName: string;
|
|
214
|
+
webUrl: string | null;
|
|
215
|
+
linkedAt: string;
|
|
216
|
+
}
|
|
217
|
+
export interface ExternalTaskImportResponse {
|
|
218
|
+
epic: {
|
|
219
|
+
id: string;
|
|
220
|
+
projectId: string;
|
|
221
|
+
};
|
|
222
|
+
created: boolean;
|
|
223
|
+
}
|
|
224
|
+
export interface ExternalMyWorkRequestOptions {
|
|
225
|
+
includeCompleted: boolean;
|
|
226
|
+
}
|
|
227
|
+
export interface ExternalProviderConnectionContext {
|
|
228
|
+
connectionId: string;
|
|
229
|
+
connectionGeneration: number;
|
|
230
|
+
}
|
|
231
|
+
export interface ExternalMyWorkOptions extends ExternalMyWorkRequestOptions, ExternalProviderConnectionContext {
|
|
232
|
+
}
|
|
233
|
+
export interface ExternalMyWorkCapabilities {
|
|
234
|
+
timeTrackingEnabled: boolean;
|
|
235
|
+
}
|
|
236
|
+
export interface ExternalMyWorkSnapshot {
|
|
237
|
+
capabilities: ExternalMyWorkCapabilities;
|
|
238
|
+
workAreas: ExternalWorkArea[];
|
|
239
|
+
tasks: ExternalWorkAreaTask[];
|
|
240
|
+
refreshedAt: string;
|
|
241
|
+
}
|
|
242
|
+
export interface ExternalMyWorkCapability {
|
|
243
|
+
discover(credentials: IntegrationCredentials, options: ExternalMyWorkOptions): Promise<ExternalMyWorkSnapshot>;
|
|
244
|
+
getTaskDetail(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string): Promise<ExternalProviderTaskDetail>;
|
|
245
|
+
listComments(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, cursor: string | null): Promise<ExternalTaskCommentPage>;
|
|
246
|
+
changeStatus(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, input: ExternalTaskStatusInput): Promise<void>;
|
|
247
|
+
addComment(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, input: ExternalTaskCommentInput): Promise<void>;
|
|
248
|
+
getTimeEntryHistory(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string): Promise<ExternalTaskTimeEntryHistory>;
|
|
249
|
+
}
|
|
250
|
+
export interface ExternalTimeEntryExactRead {
|
|
251
|
+
remoteId: string;
|
|
252
|
+
startedAt: string;
|
|
253
|
+
durationMs: number;
|
|
254
|
+
owned: boolean;
|
|
255
|
+
}
|
|
256
|
+
export interface ExternalTimeEntryRangeIds {
|
|
257
|
+
ids: string[];
|
|
258
|
+
complete: boolean;
|
|
259
|
+
}
|
|
260
|
+
export interface ExternalTimeEntryCreateProof {
|
|
261
|
+
remoteEntryId: string | null;
|
|
262
|
+
}
|
|
263
|
+
export interface ExternalTimeEntryMutationsCapability {
|
|
264
|
+
createTimeEntry(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, input: ExternalTaskTimeEntryInput): Promise<ExternalTimeEntryCreateProof>;
|
|
265
|
+
deleteTimeEntry(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, remoteEntryId: string): Promise<void>;
|
|
266
|
+
readTimeEntryExact(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, remoteEntryId: string): Promise<ExternalTimeEntryExactRead | null>;
|
|
267
|
+
listOwnTimeEntryIdsInRange(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, startedAfterMs: number, startedBeforeMs: number): Promise<ExternalTimeEntryRangeIds>;
|
|
268
|
+
assertTimeEntryDeletable(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, remoteEntryId: string): Promise<void>;
|
|
269
|
+
}
|
|
270
|
+
export interface ExternalSubtaskOwnershipProof {
|
|
271
|
+
remoteTaskId: string;
|
|
272
|
+
expectedParentRemoteTaskId: string;
|
|
273
|
+
ownershipToken: string;
|
|
274
|
+
}
|
|
275
|
+
export interface ExternalSubtaskCreateInput {
|
|
276
|
+
parentRemoteTaskId: string;
|
|
277
|
+
ownershipToken: string;
|
|
278
|
+
title: string;
|
|
279
|
+
description: string | null;
|
|
280
|
+
}
|
|
281
|
+
export interface ExternalSubtaskUpdateInput extends ExternalSubtaskOwnershipProof {
|
|
282
|
+
title?: string;
|
|
283
|
+
description?: string | null;
|
|
284
|
+
}
|
|
285
|
+
export interface ExternalSubtaskSnapshot {
|
|
286
|
+
remoteTaskId: string;
|
|
287
|
+
remoteKey: string;
|
|
288
|
+
parentRemoteTaskId: string | null;
|
|
289
|
+
workAreaRemoteId: string;
|
|
290
|
+
ownershipToken: string | null;
|
|
291
|
+
title: string;
|
|
292
|
+
description: string | null;
|
|
293
|
+
}
|
|
294
|
+
export interface ExternalSubtaskChildrenResult {
|
|
295
|
+
items: ExternalSubtaskSnapshot[];
|
|
296
|
+
complete: boolean;
|
|
297
|
+
}
|
|
298
|
+
export type ExternalSubtaskDeleteResult = {
|
|
299
|
+
outcome: 'deleted';
|
|
300
|
+
} | {
|
|
301
|
+
outcome: 'already_absent';
|
|
302
|
+
};
|
|
303
|
+
export interface ExternalSubtaskSyncCapability {
|
|
304
|
+
create(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, input: ExternalSubtaskCreateInput): Promise<ExternalSubtaskSnapshot>;
|
|
305
|
+
readExact(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string): Promise<ExternalSubtaskSnapshot | null>;
|
|
306
|
+
update(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, input: ExternalSubtaskUpdateInput): Promise<void>;
|
|
307
|
+
delete(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, proof: ExternalSubtaskOwnershipProof): Promise<ExternalSubtaskDeleteResult>;
|
|
308
|
+
listOwnedDirectChildren(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, parentRemoteTaskId: string, ownershipToken: string): Promise<ExternalSubtaskChildrenResult>;
|
|
309
|
+
assertOwned(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, proof: ExternalSubtaskOwnershipProof): Promise<ExternalSubtaskSnapshot>;
|
|
310
|
+
}
|
|
311
|
+
export interface ExternalOwnedCommentSnapshot {
|
|
312
|
+
remoteId: string;
|
|
313
|
+
authorRemoteId: string | null;
|
|
314
|
+
createdAt: string;
|
|
315
|
+
raw: unknown;
|
|
316
|
+
metadata: {
|
|
317
|
+
assignee: number | null;
|
|
318
|
+
resolved: boolean | null;
|
|
319
|
+
groupAssignee: string | null;
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
export interface ExternalOwnedMutationsCapability {
|
|
323
|
+
getCurrentOwnerRemoteId(credentials: IntegrationCredentials): Promise<string>;
|
|
324
|
+
findComment(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, commentId: string, pageProof: string | null): Promise<ExternalOwnedCommentSnapshot | null>;
|
|
325
|
+
deleteComment(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, commentId: string): Promise<void>;
|
|
326
|
+
updateOwnedComment(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, commentId: string, document: ExternalRichDocumentV1, metadata: ExternalOwnedCommentSnapshot['metadata']): Promise<void>;
|
|
327
|
+
}
|
|
328
|
+
export interface ExternalDescriptionEditCapability {
|
|
329
|
+
readDescription(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string): Promise<unknown>;
|
|
330
|
+
writeDescription(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, raw: unknown): Promise<void>;
|
|
331
|
+
}
|
|
332
|
+
export type ExternalMyWorkResult = {
|
|
333
|
+
provider: IntegrationProvider;
|
|
334
|
+
descriptor: ExternalProviderDescriptor;
|
|
335
|
+
supported: false;
|
|
336
|
+
reason: 'unsupported';
|
|
337
|
+
} | ({
|
|
338
|
+
provider: IntegrationProvider;
|
|
339
|
+
descriptor: ExternalProviderDescriptor;
|
|
340
|
+
supported: true;
|
|
341
|
+
} & ExternalMyWorkSnapshot);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MAX_TIME_ENTRY_HISTORY_ENTRIES = exports.TIME_ENTRY_HISTORY_WINDOW_DAYS = exports.EXTERNAL_SUBTASK_MANAGEMENT_NOTE = exports.MAX_EXTERNAL_SUBTASK_OWNERSHIP_TOKEN_LENGTH = exports.MAX_EXTERNAL_SUBTASK_DESCRIPTION_LENGTH = exports.MAX_EXTERNAL_SUBTASK_TITLE_LENGTH = exports.MAX_TASK_COMMENT_CURSOR_LENGTH = exports.MAX_TASK_COMMENT_ID_LENGTH = exports.MAX_TASK_COMMENT_AUTHOR_LENGTH = exports.MAX_TASK_COMMENT_BODY_LENGTH = exports.MAX_TASK_DETAIL_SUBTASKS = exports.MAX_TASK_DETAIL_TEXT_LENGTH = exports.MAX_TIME_ENTRY_DURATION_MS = exports.MAX_TIME_ENTRY_NOTE_LENGTH = exports.MAX_COMMENT_LENGTH = exports.MAX_STATUS_LENGTH = exports.MAX_REMOTE_TASK_ID_LENGTH = void 0;
|
|
4
|
+
exports.MAX_REMOTE_TASK_ID_LENGTH = 256;
|
|
5
|
+
exports.MAX_STATUS_LENGTH = 256;
|
|
6
|
+
exports.MAX_COMMENT_LENGTH = 10_000;
|
|
7
|
+
exports.MAX_TIME_ENTRY_NOTE_LENGTH = 10_000;
|
|
8
|
+
exports.MAX_TIME_ENTRY_DURATION_MS = 7 * 24 * 60 * 60 * 1_000;
|
|
9
|
+
exports.MAX_TASK_DETAIL_TEXT_LENGTH = 65_536;
|
|
10
|
+
exports.MAX_TASK_DETAIL_SUBTASKS = 100;
|
|
11
|
+
exports.MAX_TASK_COMMENT_BODY_LENGTH = 8_000;
|
|
12
|
+
exports.MAX_TASK_COMMENT_AUTHOR_LENGTH = 256;
|
|
13
|
+
exports.MAX_TASK_COMMENT_ID_LENGTH = 256;
|
|
14
|
+
exports.MAX_TASK_COMMENT_CURSOR_LENGTH = 1_024;
|
|
15
|
+
exports.MAX_EXTERNAL_SUBTASK_TITLE_LENGTH = 255;
|
|
16
|
+
exports.MAX_EXTERNAL_SUBTASK_DESCRIPTION_LENGTH = 65_536;
|
|
17
|
+
exports.MAX_EXTERNAL_SUBTASK_OWNERSHIP_TOKEN_LENGTH = 256;
|
|
18
|
+
exports.EXTERNAL_SUBTASK_MANAGEMENT_NOTE = 'Managed by DevChain. Update or delete this subtask in DevChain; remote changes are not imported.';
|
|
19
|
+
exports.TIME_ENTRY_HISTORY_WINDOW_DAYS = 30;
|
|
20
|
+
exports.MAX_TIME_ENTRY_HISTORY_ENTRIES = 100;
|
|
21
|
+
//# sourceMappingURL=external-provider.models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-provider.models.js","sourceRoot":"","sources":["../../../../src/modules/external-integrations/models/external-provider.models.ts"],"names":[],"mappings":";;;AAMa,QAAA,yBAAyB,GAAG,GAAG,CAAC;AAChC,QAAA,iBAAiB,GAAG,GAAG,CAAC;AACxB,QAAA,kBAAkB,GAAG,MAAM,CAAC;AAC5B,QAAA,0BAA0B,GAAG,MAAM,CAAC;AACpC,QAAA,0BAA0B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;AACtD,QAAA,2BAA2B,GAAG,MAAM,CAAC;AACrC,QAAA,wBAAwB,GAAG,GAAG,CAAC;AAC/B,QAAA,4BAA4B,GAAG,KAAK,CAAC;AACrC,QAAA,8BAA8B,GAAG,GAAG,CAAC;AACrC,QAAA,0BAA0B,GAAG,GAAG,CAAC;AACjC,QAAA,8BAA8B,GAAG,KAAK,CAAC;AACvC,QAAA,iCAAiC,GAAG,GAAG,CAAC;AACxC,QAAA,uCAAuC,GAAG,MAAM,CAAC;AACjD,QAAA,2CAA2C,GAAG,GAAG,CAAC;AAClD,QAAA,gCAAgC,GAC3C,kGAAkG,CAAC;AACxF,QAAA,8BAA8B,GAAG,EAAE,CAAC;AACpC,QAAA,8BAA8B,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EXTERNAL_RICH_CAPABILITIES_TOKEN = exports.EXTERNAL_RICH_CAPABILITIES = void 0;
|
|
4
|
+
exports.EXTERNAL_RICH_CAPABILITIES = {
|
|
5
|
+
richEdit: true,
|
|
6
|
+
ownedDelete: true,
|
|
7
|
+
};
|
|
8
|
+
exports.EXTERNAL_RICH_CAPABILITIES_TOKEN = Symbol('EXTERNAL_RICH_CAPABILITIES_TOKEN');
|
|
9
|
+
//# sourceMappingURL=external-rich-capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-rich-capabilities.js","sourceRoot":"","sources":["../../../../src/modules/external-integrations/models/external-rich-capabilities.ts"],"names":[],"mappings":";;;AAOa,QAAA,0BAA0B,GAAG;IAExC,QAAQ,EAAE,IAAI;IAEd,WAAW,EAAE,IAAI;CACT,CAAC;AAIE,QAAA,gCAAgC,GAAG,MAAM,CAAC,kCAAkC,CAAC,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export declare const RICH_DOCUMENT_VERSION = 1;
|
|
2
|
+
export declare const RICH_MAX_DEPTH = 16;
|
|
3
|
+
export declare const RICH_MAX_BLOCK_COUNT = 1000;
|
|
4
|
+
export declare const RICH_MAX_NODE_COUNT = 10000;
|
|
5
|
+
export declare const RICH_MAX_TEXT_RUN_LENGTH = 8000;
|
|
6
|
+
export declare const RICH_MAX_TOTAL_TEXT_LENGTH = 65536;
|
|
7
|
+
export declare const RICH_COMMENT_MAX_SEGMENT_COUNT = 1000;
|
|
8
|
+
export type ExternalRichMark = {
|
|
9
|
+
type: 'bold';
|
|
10
|
+
} | {
|
|
11
|
+
type: 'italic';
|
|
12
|
+
} | {
|
|
13
|
+
type: 'code';
|
|
14
|
+
} | {
|
|
15
|
+
type: 'link';
|
|
16
|
+
href: string;
|
|
17
|
+
};
|
|
18
|
+
export interface ExternalRichTextRun {
|
|
19
|
+
type: 'text';
|
|
20
|
+
text: string;
|
|
21
|
+
marks: ExternalRichMark[];
|
|
22
|
+
}
|
|
23
|
+
export interface ExternalRichHardBreak {
|
|
24
|
+
type: 'hardBreak';
|
|
25
|
+
}
|
|
26
|
+
export type ExternalRichInline = ExternalRichTextRun | ExternalRichHardBreak;
|
|
27
|
+
export interface ExternalRichParagraph {
|
|
28
|
+
type: 'paragraph';
|
|
29
|
+
content: ExternalRichInline[];
|
|
30
|
+
}
|
|
31
|
+
export interface ExternalRichHeading {
|
|
32
|
+
type: 'heading';
|
|
33
|
+
level: 1 | 2 | 3 | 4 | 5 | 6;
|
|
34
|
+
content: ExternalRichInline[];
|
|
35
|
+
}
|
|
36
|
+
export interface ExternalRichBulletList {
|
|
37
|
+
type: 'bulletList';
|
|
38
|
+
items: ExternalRichInline[][];
|
|
39
|
+
}
|
|
40
|
+
export interface ExternalRichBlockquote {
|
|
41
|
+
type: 'blockquote';
|
|
42
|
+
paragraphs: ExternalRichInline[][];
|
|
43
|
+
}
|
|
44
|
+
export type ExternalRichBlock = ExternalRichParagraph | ExternalRichHeading | ExternalRichBulletList | ExternalRichBlockquote;
|
|
45
|
+
export interface ExternalRichDocumentV1 {
|
|
46
|
+
version: typeof RICH_DOCUMENT_VERSION;
|
|
47
|
+
blocks: ExternalRichBlock[];
|
|
48
|
+
}
|
|
49
|
+
export type ExternalRichUnsupportedReason = 'unsupported_node' | 'unsupported_mark' | 'limit_exceeded' | 'invalid_input';
|
|
50
|
+
export type ExternalRichDocumentResult = {
|
|
51
|
+
supported: true;
|
|
52
|
+
document: ExternalRichDocumentV1;
|
|
53
|
+
} | {
|
|
54
|
+
supported: false;
|
|
55
|
+
reason: ExternalRichUnsupportedReason;
|
|
56
|
+
};
|
|
57
|
+
export declare function isSafeRichLinkHref(value: unknown): value is string;
|
|
58
|
+
export declare function canonicalizeRichDocument(value: unknown): ExternalRichDocumentV1 | null;
|
|
59
|
+
export declare function richDocumentFingerprint(document: ExternalRichDocumentV1): string | null;
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RICH_COMMENT_MAX_SEGMENT_COUNT = exports.RICH_MAX_TOTAL_TEXT_LENGTH = exports.RICH_MAX_TEXT_RUN_LENGTH = exports.RICH_MAX_NODE_COUNT = exports.RICH_MAX_BLOCK_COUNT = exports.RICH_MAX_DEPTH = exports.RICH_DOCUMENT_VERSION = void 0;
|
|
4
|
+
exports.isSafeRichLinkHref = isSafeRichLinkHref;
|
|
5
|
+
exports.canonicalizeRichDocument = canonicalizeRichDocument;
|
|
6
|
+
exports.richDocumentFingerprint = richDocumentFingerprint;
|
|
7
|
+
exports.RICH_DOCUMENT_VERSION = 1;
|
|
8
|
+
exports.RICH_MAX_DEPTH = 16;
|
|
9
|
+
exports.RICH_MAX_BLOCK_COUNT = 1_000;
|
|
10
|
+
exports.RICH_MAX_NODE_COUNT = 10_000;
|
|
11
|
+
exports.RICH_MAX_TEXT_RUN_LENGTH = 8_000;
|
|
12
|
+
exports.RICH_MAX_TOTAL_TEXT_LENGTH = 65_536;
|
|
13
|
+
exports.RICH_COMMENT_MAX_SEGMENT_COUNT = 1_000;
|
|
14
|
+
const MARK_TYPE_ORDER = {
|
|
15
|
+
bold: 0,
|
|
16
|
+
italic: 1,
|
|
17
|
+
code: 2,
|
|
18
|
+
link: 3,
|
|
19
|
+
};
|
|
20
|
+
function isRecord(value) {
|
|
21
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
22
|
+
}
|
|
23
|
+
function isSafeRichLinkHref(value) {
|
|
24
|
+
if (typeof value !== 'string' || !value.trim()) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
let url;
|
|
28
|
+
try {
|
|
29
|
+
url = new URL(value);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
return ((url.protocol === 'https:' || url.protocol === 'http:') &&
|
|
35
|
+
url.hostname !== '' &&
|
|
36
|
+
url.username === '' &&
|
|
37
|
+
url.password === '');
|
|
38
|
+
}
|
|
39
|
+
function markCompare(left, right) {
|
|
40
|
+
const leftKey = MARK_TYPE_ORDER[left.type];
|
|
41
|
+
const rightKey = MARK_TYPE_ORDER[right.type];
|
|
42
|
+
if (leftKey !== rightKey) {
|
|
43
|
+
return leftKey - rightKey;
|
|
44
|
+
}
|
|
45
|
+
return left.type === 'link' && right.type === 'link'
|
|
46
|
+
? left.href < right.href
|
|
47
|
+
? -1
|
|
48
|
+
: left.href > right.href
|
|
49
|
+
? 1
|
|
50
|
+
: 0
|
|
51
|
+
: 0;
|
|
52
|
+
}
|
|
53
|
+
function markEqual(left, right) {
|
|
54
|
+
if (left.type !== right.type) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
return left.type === 'link' && right.type === 'link' ? left.href === right.href : true;
|
|
58
|
+
}
|
|
59
|
+
function normalizeMarks(value) {
|
|
60
|
+
if (value === undefined || value === null) {
|
|
61
|
+
return [];
|
|
62
|
+
}
|
|
63
|
+
if (!Array.isArray(value)) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
const marks = [];
|
|
67
|
+
for (const item of value) {
|
|
68
|
+
if (!isRecord(item) || typeof item.type !== 'string') {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
if (item.type === 'bold' || item.type === 'italic' || item.type === 'code') {
|
|
72
|
+
marks.push({ type: item.type });
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (item.type === 'link') {
|
|
76
|
+
const href = item.href;
|
|
77
|
+
if (!isSafeRichLinkHref(href)) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
marks.push({ type: 'link', href });
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
const deduped = [];
|
|
86
|
+
for (const mark of marks) {
|
|
87
|
+
if (!deduped.some((existing) => markEqual(existing, mark))) {
|
|
88
|
+
deduped.push(mark);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return deduped.sort(markCompare);
|
|
92
|
+
}
|
|
93
|
+
function normalizeInline(value, limits) {
|
|
94
|
+
if (!Array.isArray(value)) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
const runs = [];
|
|
98
|
+
const pushText = (text, marks) => {
|
|
99
|
+
const previous = runs[runs.length - 1];
|
|
100
|
+
if (previous !== undefined &&
|
|
101
|
+
previous.type === 'text' &&
|
|
102
|
+
previous.marks.length === marks.length &&
|
|
103
|
+
previous.marks.every((mark, index) => markEqual(mark, marks[index]))) {
|
|
104
|
+
const merged = `${previous.text}${text}`.replace(/\s+/g, ' ');
|
|
105
|
+
runs[runs.length - 1] = { type: 'text', text: merged, marks };
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
runs.push({ type: 'text', text, marks });
|
|
109
|
+
};
|
|
110
|
+
for (const item of value) {
|
|
111
|
+
limits.nodes += 1;
|
|
112
|
+
if (limits.nodes > exports.RICH_MAX_NODE_COUNT) {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
if (isRecord(item) && item.type === 'hardBreak') {
|
|
116
|
+
runs.push({ type: 'hardBreak' });
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
if (!isRecord(item) || item.type !== 'text' || typeof item.text !== 'string') {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
const marks = normalizeMarks(item.marks);
|
|
123
|
+
if (marks === null) {
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
const collapsed = item.text.replace(/\s+/g, ' ');
|
|
127
|
+
limits.totalText += collapsed.length;
|
|
128
|
+
if (collapsed.trim().length > exports.RICH_MAX_TEXT_RUN_LENGTH ||
|
|
129
|
+
limits.totalText > exports.RICH_MAX_TOTAL_TEXT_LENGTH) {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
if (collapsed !== '') {
|
|
133
|
+
pushText(collapsed, marks);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
const first = runs[0];
|
|
137
|
+
if (first !== undefined && first.type === 'text') {
|
|
138
|
+
runs[0] = { ...first, text: first.text.replace(/^ +/, '') };
|
|
139
|
+
}
|
|
140
|
+
const last = runs[runs.length - 1];
|
|
141
|
+
if (last !== undefined && last.type === 'text') {
|
|
142
|
+
runs[runs.length - 1] = { ...last, text: last.text.replace(/ +$/, '') };
|
|
143
|
+
}
|
|
144
|
+
return runs.filter((run) => run.type !== 'text' || run.text !== '');
|
|
145
|
+
}
|
|
146
|
+
function normalizeInlineList(value, limits) {
|
|
147
|
+
if (!Array.isArray(value)) {
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
const items = [];
|
|
151
|
+
for (const item of value) {
|
|
152
|
+
const inline = normalizeInline(item, limits);
|
|
153
|
+
if (inline === null) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
items.push(inline);
|
|
157
|
+
}
|
|
158
|
+
return items;
|
|
159
|
+
}
|
|
160
|
+
function normalizeBlock(value, depth, limits) {
|
|
161
|
+
if (depth > exports.RICH_MAX_DEPTH) {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
if (!isRecord(value) || typeof value.type !== 'string') {
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
limits.nodes += 1;
|
|
168
|
+
if (limits.nodes > exports.RICH_MAX_NODE_COUNT) {
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
switch (value.type) {
|
|
172
|
+
case 'paragraph': {
|
|
173
|
+
const content = normalizeInline(value.content, limits);
|
|
174
|
+
return content === null || content.length === 0 ? null : { type: 'paragraph', content };
|
|
175
|
+
}
|
|
176
|
+
case 'heading': {
|
|
177
|
+
const level = value.level;
|
|
178
|
+
if (typeof level !== 'number' || !Number.isInteger(level) || level < 1 || level > 6) {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
const content = normalizeInline(value.content, limits);
|
|
182
|
+
return content === null || content.length === 0
|
|
183
|
+
? null
|
|
184
|
+
: { type: 'heading', level: level, content };
|
|
185
|
+
}
|
|
186
|
+
case 'bulletList': {
|
|
187
|
+
const items = normalizeInlineList(value.items, limits);
|
|
188
|
+
return items === null || items.length === 0 ? null : { type: 'bulletList', items };
|
|
189
|
+
}
|
|
190
|
+
case 'blockquote': {
|
|
191
|
+
if (!Array.isArray(value.paragraphs)) {
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
const paragraphs = [];
|
|
195
|
+
for (const paragraph of value.paragraphs) {
|
|
196
|
+
const inline = normalizeInline(paragraph, limits);
|
|
197
|
+
if (inline === null || inline.length === 0) {
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
paragraphs.push(inline);
|
|
201
|
+
}
|
|
202
|
+
return paragraphs.length === 0 ? null : { type: 'blockquote', paragraphs };
|
|
203
|
+
}
|
|
204
|
+
default:
|
|
205
|
+
return null;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
function canonicalizeRichDocument(value) {
|
|
209
|
+
if (!isRecord(value) || value.version !== exports.RICH_DOCUMENT_VERSION || !Array.isArray(value.blocks)) {
|
|
210
|
+
return null;
|
|
211
|
+
}
|
|
212
|
+
if (value.blocks.length > exports.RICH_MAX_BLOCK_COUNT) {
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
const limits = { nodes: 0, totalText: 0 };
|
|
216
|
+
const blocks = [];
|
|
217
|
+
for (const block of value.blocks) {
|
|
218
|
+
const normalized = normalizeBlock(block, 1, limits);
|
|
219
|
+
if (normalized === null) {
|
|
220
|
+
return null;
|
|
221
|
+
}
|
|
222
|
+
blocks.push(normalized);
|
|
223
|
+
}
|
|
224
|
+
if (blocks.length === 0) {
|
|
225
|
+
return null;
|
|
226
|
+
}
|
|
227
|
+
return { version: exports.RICH_DOCUMENT_VERSION, blocks };
|
|
228
|
+
}
|
|
229
|
+
function richDocumentFingerprint(document) {
|
|
230
|
+
const canonical = canonicalizeRichDocument(document);
|
|
231
|
+
return canonical === null ? null : JSON.stringify(canonical);
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=external-rich-document.js.map
|