@vellumai/assistant 0.12.0-staging.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/Dockerfile +5 -0
  2. package/docs/architecture/turn-actor.md +9 -0
  3. package/knip.json +1 -0
  4. package/node_modules/@vellumai/app-icons/package.json +18 -0
  5. package/node_modules/@vellumai/app-icons/src/index.test.ts +85 -0
  6. package/node_modules/@vellumai/app-icons/src/index.ts +387 -0
  7. package/node_modules/@vellumai/app-icons/tsconfig.json +20 -0
  8. package/node_modules/@vellumai/ces-client/node_modules/@vellumai/service-contracts/src/__tests__/channels.test.ts +31 -0
  9. package/node_modules/@vellumai/ces-client/node_modules/@vellumai/service-contracts/src/channels.ts +28 -3
  10. package/node_modules/@vellumai/gateway-client/node_modules/@vellumai/service-contracts/src/__tests__/channels.test.ts +31 -0
  11. package/node_modules/@vellumai/gateway-client/node_modules/@vellumai/service-contracts/src/channels.ts +28 -3
  12. package/node_modules/@vellumai/gateway-client/src/__tests__/plugin-admission-denied-contract.test.ts +10 -0
  13. package/node_modules/@vellumai/gateway-client/src/index.ts +1 -0
  14. package/node_modules/@vellumai/gateway-client/src/plugin-admission-denied-contract.ts +15 -2
  15. package/node_modules/@vellumai/service-contracts/src/__tests__/channels.test.ts +31 -0
  16. package/node_modules/@vellumai/service-contracts/src/channels.ts +28 -3
  17. package/openapi.yaml +628 -0
  18. package/package.json +3 -1
  19. package/scripts/smoke-container-workspace-dependencies.ts +19 -0
  20. package/src/__tests__/app-builder-icon-names.test.ts +29 -0
  21. package/src/__tests__/assistant-attachment-directive.test.ts +4 -0
  22. package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +1 -0
  23. package/src/__tests__/conversation-agent-loop-overflow.test.ts +1 -0
  24. package/src/__tests__/conversation-agent-loop.test.ts +2 -0
  25. package/src/__tests__/conversation-attachments.test.ts +142 -0
  26. package/src/__tests__/conversation-delete-activation-progress.test.ts +145 -0
  27. package/src/__tests__/conversation-event-sink.test.ts +50 -0
  28. package/src/__tests__/conversation-process-app-control-preactivation.test.ts +10 -2
  29. package/src/__tests__/conversation-queue.test.ts +297 -0
  30. package/src/__tests__/credential-routes.test.ts +185 -6
  31. package/src/__tests__/drain-kick-guard.test.ts +2 -0
  32. package/src/__tests__/drain-requeue-on-contention.test.ts +6 -0
  33. package/src/__tests__/messaging-send-tool.test.ts +42 -0
  34. package/src/__tests__/oauth-commands-routes.test.ts +47 -0
  35. package/src/__tests__/subagent-manager-notify.test.ts +25 -4
  36. package/src/activation/progress-store.test.ts +1564 -0
  37. package/src/activation/progress-store.ts +1296 -0
  38. package/src/activation/turn-hooks.test.ts +246 -0
  39. package/src/activation/turn-hooks.ts +126 -0
  40. package/src/api/events/subagent-status-changed.ts +7 -5
  41. package/src/api/responses/activation.ts +136 -0
  42. package/src/apps/app-store.ts +8 -0
  43. package/src/cli/__tests__/catalog-search-help.test.ts +7 -5
  44. package/src/cli/commands/__tests__/cli-test-harness.ts +12 -3
  45. package/src/cli/commands/channels/__tests__/channels.test.ts +2 -0
  46. package/src/cli/commands/channels/__tests__/request.test.ts +191 -0
  47. package/src/cli/commands/channels/index.help.ts +70 -18
  48. package/src/cli/commands/channels/index.ts +17 -6
  49. package/src/cli/commands/channels/request.ts +66 -0
  50. package/src/cli/commands/oauth/request.test.ts +2 -0
  51. package/src/cli/commands/oauth/request.ts +227 -186
  52. package/src/config/bundled-skills/app-builder/SKILL.md +3 -1
  53. package/src/config/bundled-skills/app-builder/TOOLS.json +2 -2
  54. package/src/config/bundled-skills/messaging/tools/messaging-send.ts +8 -4
  55. package/src/config/feature-flag-registry.json +35 -5
  56. package/src/daemon/assistant-attachments.ts +11 -0
  57. package/src/daemon/conversation-agent-loop-handlers.ts +5 -0
  58. package/src/daemon/conversation-agent-loop.ts +71 -3
  59. package/src/daemon/conversation-attachments.ts +42 -1
  60. package/src/daemon/conversation-event-sink.ts +25 -0
  61. package/src/daemon/conversation-process.ts +69 -21
  62. package/src/daemon/conversation-store.ts +4 -3
  63. package/src/daemon/conversation-surfaces.ts +19 -4
  64. package/src/daemon/message-types/sync.ts +2 -0
  65. package/src/ipc/assistant-server.ts +2 -0
  66. package/src/ipc/routes/__tests__/activation-sync-ipc-routes.test.ts +51 -0
  67. package/src/ipc/routes/activation-sync-ipc-routes.ts +42 -0
  68. package/src/notifications/AGENTS.md +1 -1
  69. package/src/notifications/__tests__/proactive-home-thread.test.ts +111 -0
  70. package/src/notifications/conversation-pairing.ts +47 -5
  71. package/src/notifications/delivered-post-record.ts +3 -0
  72. package/src/persistence/__tests__/slack-thread-root-evidence.test.ts +102 -0
  73. package/src/persistence/conversation-crud.ts +39 -0
  74. package/src/persistence/delivery-crud.ts +13 -0
  75. package/src/plugins/AGENTS.md +1 -0
  76. package/src/runtime/auth/__tests__/route-policy.test.ts +37 -0
  77. package/src/runtime/routes/__tests__/user-routes-notices.test.ts +248 -0
  78. package/src/runtime/routes/activation-routes.test.ts +415 -0
  79. package/src/runtime/routes/activation-routes.ts +172 -0
  80. package/src/runtime/routes/credential-routes.ts +46 -3
  81. package/src/runtime/routes/index.ts +2 -0
  82. package/src/runtime/routes/oauth-commands-routes.ts +21 -8
  83. package/src/runtime/routes/platform-managed-credentials.ts +48 -0
  84. package/src/runtime/routes/secret-routes.ts +3 -12
  85. package/src/runtime/routes/user-route-resolution.ts +21 -0
  86. package/src/runtime/routes/user-routes.ts +112 -9
  87. package/src/runtime/sync/activation-sidecar-publish.test.ts +78 -0
  88. package/src/runtime/sync/documents-sidecar-publish.test.ts +3 -0
  89. package/src/runtime/sync/resource-sync-events.ts +23 -0
  90. package/src/runtime/sync/worker-daemon-notify.test.ts +36 -0
  91. package/src/runtime/sync/worker-daemon-notify.ts +39 -1
  92. package/src/tools/apps/executors.ts +8 -8
package/openapi.yaml CHANGED
@@ -571,6 +571,359 @@ paths:
571
571
  - protocolSessionId
572
572
  - agent
573
573
  additionalProperties: false
574
+ /v1/activation/dismiss:
575
+ post:
576
+ operationId: activation_dismiss_post
577
+ summary: Dismiss an activation surface
578
+ description: Record that the welcome modal or the celebration modal was dismissed.
579
+ tags:
580
+ - activation
581
+ requestBody:
582
+ required: true
583
+ content:
584
+ application/json:
585
+ schema:
586
+ type: object
587
+ properties:
588
+ kind:
589
+ type: string
590
+ enum:
591
+ - modal
592
+ - all-done
593
+ description: Which surface was dismissed
594
+ listId:
595
+ description: List the surface showed, stored only while no list is frozen
596
+ type: string
597
+ pattern: ^[a-z0-9-]{1,64}$
598
+ required:
599
+ - kind
600
+ responses:
601
+ "200":
602
+ description: Successful response
603
+ content:
604
+ application/json:
605
+ schema:
606
+ type: object
607
+ properties:
608
+ version:
609
+ type: number
610
+ const: 1
611
+ description: Schema version
612
+ listId:
613
+ anyOf:
614
+ - type: string
615
+ - type: "null"
616
+ description: Task list frozen on the first write, null before then
617
+ modalDismissedAt:
618
+ anyOf:
619
+ - type: string
620
+ - type: "null"
621
+ description: ISO timestamp the welcome modal was dismissed
622
+ allDoneShownAt:
623
+ anyOf:
624
+ - type: string
625
+ - type: "null"
626
+ description: ISO timestamp the celebration modal was dismissed
627
+ tasks:
628
+ type: object
629
+ propertyNames:
630
+ type: string
631
+ additionalProperties:
632
+ type: object
633
+ properties:
634
+ status:
635
+ type: string
636
+ enum:
637
+ - started
638
+ - done
639
+ description: "`started` while the linked conversation is working the task"
640
+ conversationId:
641
+ type: string
642
+ maxLength: 128
643
+ description: Conversation the task was launched into
644
+ startedAt:
645
+ type: string
646
+ description: ISO timestamp of the launch
647
+ completedAt:
648
+ anyOf:
649
+ - type: string
650
+ - type: "null"
651
+ description: ISO timestamp of the completing turn, null while started
652
+ stepCount:
653
+ anyOf:
654
+ - type: integer
655
+ minimum: -9007199254740991
656
+ maximum: 9007199254740991
657
+ - type: "null"
658
+ description: Tool calls observed in the linked conversation so far
659
+ artifacts:
660
+ type: array
661
+ items:
662
+ type: object
663
+ properties:
664
+ workspacePath:
665
+ type: string
666
+ description: Path of the produced file, as the assistant attached it
667
+ displayName:
668
+ type: string
669
+ description: Human-readable file name for the card
670
+ required:
671
+ - workspacePath
672
+ - displayName
673
+ additionalProperties: false
674
+ description: Files the completing turn attached
675
+ required:
676
+ - status
677
+ - conversationId
678
+ - startedAt
679
+ - completedAt
680
+ - stepCount
681
+ - artifacts
682
+ additionalProperties: false
683
+ description: Progress keyed by task id
684
+ required:
685
+ - version
686
+ - listId
687
+ - modalDismissedAt
688
+ - allDoneShownAt
689
+ - tasks
690
+ additionalProperties: false
691
+ "400":
692
+ description: Malformed dismiss kind or list id
693
+ "409":
694
+ description: Stored progress was written by a newer build; the dismissal was not recorded
695
+ "503":
696
+ description: Stored progress is locked by another process; the dismissal was not recorded
697
+ /v1/activation/progress:
698
+ get:
699
+ operationId: activation_progress_get
700
+ summary: Get activation progress
701
+ description: "Return the activation checklist progress: the frozen list, dismissed surfaces, and per-task state."
702
+ tags:
703
+ - activation
704
+ responses:
705
+ "200":
706
+ description: Successful response
707
+ content:
708
+ application/json:
709
+ schema:
710
+ type: object
711
+ properties:
712
+ version:
713
+ type: number
714
+ const: 1
715
+ description: Schema version
716
+ listId:
717
+ anyOf:
718
+ - type: string
719
+ - type: "null"
720
+ description: Task list frozen on the first write, null before then
721
+ modalDismissedAt:
722
+ anyOf:
723
+ - type: string
724
+ - type: "null"
725
+ description: ISO timestamp the welcome modal was dismissed
726
+ allDoneShownAt:
727
+ anyOf:
728
+ - type: string
729
+ - type: "null"
730
+ description: ISO timestamp the celebration modal was dismissed
731
+ tasks:
732
+ type: object
733
+ propertyNames:
734
+ type: string
735
+ additionalProperties:
736
+ type: object
737
+ properties:
738
+ status:
739
+ type: string
740
+ enum:
741
+ - started
742
+ - done
743
+ description: "`started` while the linked conversation is working the task"
744
+ conversationId:
745
+ type: string
746
+ maxLength: 128
747
+ description: Conversation the task was launched into
748
+ startedAt:
749
+ type: string
750
+ description: ISO timestamp of the launch
751
+ completedAt:
752
+ anyOf:
753
+ - type: string
754
+ - type: "null"
755
+ description: ISO timestamp of the completing turn, null while started
756
+ stepCount:
757
+ anyOf:
758
+ - type: integer
759
+ minimum: -9007199254740991
760
+ maximum: 9007199254740991
761
+ - type: "null"
762
+ description: Tool calls observed in the linked conversation so far
763
+ artifacts:
764
+ type: array
765
+ items:
766
+ type: object
767
+ properties:
768
+ workspacePath:
769
+ type: string
770
+ description: Path of the produced file, as the assistant attached it
771
+ displayName:
772
+ type: string
773
+ description: Human-readable file name for the card
774
+ required:
775
+ - workspacePath
776
+ - displayName
777
+ additionalProperties: false
778
+ description: Files the completing turn attached
779
+ required:
780
+ - status
781
+ - conversationId
782
+ - startedAt
783
+ - completedAt
784
+ - stepCount
785
+ - artifacts
786
+ additionalProperties: false
787
+ description: Progress keyed by task id
788
+ required:
789
+ - version
790
+ - listId
791
+ - modalDismissedAt
792
+ - allDoneShownAt
793
+ - tasks
794
+ additionalProperties: false
795
+ /v1/activation/tasks/{taskId}/start:
796
+ post:
797
+ operationId: activation_tasks_by_taskId_start_post
798
+ summary: Start an activation task
799
+ description:
800
+ Link an activation task to the conversation its prompt was sent to. Idempotent per task; a different
801
+ conversation replaces the link only while the task is not done.
802
+ tags:
803
+ - activation
804
+ parameters:
805
+ - name: taskId
806
+ in: path
807
+ required: true
808
+ schema:
809
+ type: string
810
+ requestBody:
811
+ required: true
812
+ content:
813
+ application/json:
814
+ schema:
815
+ type: object
816
+ properties:
817
+ conversationId:
818
+ type: string
819
+ minLength: 1
820
+ maxLength: 128
821
+ description: Conversation the task prompt was sent to
822
+ listId:
823
+ description: List the task came from, stored only while no list is frozen
824
+ type: string
825
+ pattern: ^[a-z0-9-]{1,64}$
826
+ required:
827
+ - conversationId
828
+ responses:
829
+ "200":
830
+ description: Successful response
831
+ content:
832
+ application/json:
833
+ schema:
834
+ type: object
835
+ properties:
836
+ version:
837
+ type: number
838
+ const: 1
839
+ description: Schema version
840
+ listId:
841
+ anyOf:
842
+ - type: string
843
+ - type: "null"
844
+ description: Task list frozen on the first write, null before then
845
+ modalDismissedAt:
846
+ anyOf:
847
+ - type: string
848
+ - type: "null"
849
+ description: ISO timestamp the welcome modal was dismissed
850
+ allDoneShownAt:
851
+ anyOf:
852
+ - type: string
853
+ - type: "null"
854
+ description: ISO timestamp the celebration modal was dismissed
855
+ tasks:
856
+ type: object
857
+ propertyNames:
858
+ type: string
859
+ additionalProperties:
860
+ type: object
861
+ properties:
862
+ status:
863
+ type: string
864
+ enum:
865
+ - started
866
+ - done
867
+ description: "`started` while the linked conversation is working the task"
868
+ conversationId:
869
+ type: string
870
+ maxLength: 128
871
+ description: Conversation the task was launched into
872
+ startedAt:
873
+ type: string
874
+ description: ISO timestamp of the launch
875
+ completedAt:
876
+ anyOf:
877
+ - type: string
878
+ - type: "null"
879
+ description: ISO timestamp of the completing turn, null while started
880
+ stepCount:
881
+ anyOf:
882
+ - type: integer
883
+ minimum: -9007199254740991
884
+ maximum: 9007199254740991
885
+ - type: "null"
886
+ description: Tool calls observed in the linked conversation so far
887
+ artifacts:
888
+ type: array
889
+ items:
890
+ type: object
891
+ properties:
892
+ workspacePath:
893
+ type: string
894
+ description: Path of the produced file, as the assistant attached it
895
+ displayName:
896
+ type: string
897
+ description: Human-readable file name for the card
898
+ required:
899
+ - workspacePath
900
+ - displayName
901
+ additionalProperties: false
902
+ description: Files the completing turn attached
903
+ required:
904
+ - status
905
+ - conversationId
906
+ - startedAt
907
+ - completedAt
908
+ - stepCount
909
+ - artifacts
910
+ additionalProperties: false
911
+ description: Progress keyed by task id
912
+ required:
913
+ - version
914
+ - listId
915
+ - modalDismissedAt
916
+ - allDoneShownAt
917
+ - tasks
918
+ additionalProperties: false
919
+ "400":
920
+ description: Malformed task id, list id, or conversation id
921
+ "404":
922
+ description: No such conversation; the link was not recorded
923
+ "409":
924
+ description: Stored progress was written by a newer build; the link was not recorded
925
+ "503":
926
+ description: Stored progress is locked by another process; the link was not recorded
574
927
  /v1/admin/rollback-migrations:
575
928
  post:
576
929
  operationId: admin_rollbackmigrations_post
@@ -36648,6 +37001,281 @@ paths:
36648
37001
  responses:
36649
37002
  "200":
36650
37003
  description: Successful response
37004
+ /v1/x/plugins/{plugin}/notices:
37005
+ delete:
37006
+ operationId: x_plugins_by_plugin_notices_delete
37007
+ summary: Gateway DELETE notice to a plugin (namespace root)
37008
+ description:
37009
+ "Dispatches DELETE requests to the root handler of a plugin's reserved notices/ namespace. Served to the
37010
+ gateway's service principal only: a notice is the gateway's own decision, never a client's."
37011
+ tags:
37012
+ - user-routes
37013
+ parameters:
37014
+ - name: plugin
37015
+ in: path
37016
+ required: true
37017
+ schema:
37018
+ type: string
37019
+ responses:
37020
+ "200":
37021
+ description: Successful response
37022
+ get:
37023
+ operationId: x_plugins_by_plugin_notices_get
37024
+ summary: Gateway GET notice to a plugin (namespace root)
37025
+ description:
37026
+ "Dispatches GET requests to the root handler of a plugin's reserved notices/ namespace. Served to the
37027
+ gateway's service principal only: a notice is the gateway's own decision, never a client's."
37028
+ tags:
37029
+ - user-routes
37030
+ parameters:
37031
+ - name: plugin
37032
+ in: path
37033
+ required: true
37034
+ schema:
37035
+ type: string
37036
+ responses:
37037
+ "200":
37038
+ description: Successful response
37039
+ head:
37040
+ operationId: x_plugins_by_plugin_notices_head
37041
+ summary: Gateway HEAD notice to a plugin (namespace root)
37042
+ description:
37043
+ "Dispatches HEAD requests to the root handler of a plugin's reserved notices/ namespace. Served to the
37044
+ gateway's service principal only: a notice is the gateway's own decision, never a client's."
37045
+ tags:
37046
+ - user-routes
37047
+ parameters:
37048
+ - name: plugin
37049
+ in: path
37050
+ required: true
37051
+ schema:
37052
+ type: string
37053
+ responses:
37054
+ "200":
37055
+ description: Successful response
37056
+ options:
37057
+ operationId: x_plugins_by_plugin_notices_options
37058
+ summary: Gateway OPTIONS notice to a plugin (namespace root)
37059
+ description:
37060
+ "Dispatches OPTIONS requests to the root handler of a plugin's reserved notices/ namespace. Served to the
37061
+ gateway's service principal only: a notice is the gateway's own decision, never a client's."
37062
+ tags:
37063
+ - user-routes
37064
+ parameters:
37065
+ - name: plugin
37066
+ in: path
37067
+ required: true
37068
+ schema:
37069
+ type: string
37070
+ responses:
37071
+ "200":
37072
+ description: Successful response
37073
+ patch:
37074
+ operationId: x_plugins_by_plugin_notices_patch
37075
+ summary: Gateway PATCH notice to a plugin (namespace root)
37076
+ description:
37077
+ "Dispatches PATCH requests to the root handler of a plugin's reserved notices/ namespace. Served to the
37078
+ gateway's service principal only: a notice is the gateway's own decision, never a client's."
37079
+ tags:
37080
+ - user-routes
37081
+ parameters:
37082
+ - name: plugin
37083
+ in: path
37084
+ required: true
37085
+ schema:
37086
+ type: string
37087
+ responses:
37088
+ "200":
37089
+ description: Successful response
37090
+ post:
37091
+ operationId: x_plugins_by_plugin_notices_post
37092
+ summary: Gateway POST notice to a plugin (namespace root)
37093
+ description:
37094
+ "Dispatches POST requests to the root handler of a plugin's reserved notices/ namespace. Served to the
37095
+ gateway's service principal only: a notice is the gateway's own decision, never a client's."
37096
+ tags:
37097
+ - user-routes
37098
+ parameters:
37099
+ - name: plugin
37100
+ in: path
37101
+ required: true
37102
+ schema:
37103
+ type: string
37104
+ responses:
37105
+ "200":
37106
+ description: Successful response
37107
+ put:
37108
+ operationId: x_plugins_by_plugin_notices_put
37109
+ summary: Gateway PUT notice to a plugin (namespace root)
37110
+ description:
37111
+ "Dispatches PUT requests to the root handler of a plugin's reserved notices/ namespace. Served to the
37112
+ gateway's service principal only: a notice is the gateway's own decision, never a client's."
37113
+ tags:
37114
+ - user-routes
37115
+ parameters:
37116
+ - name: plugin
37117
+ in: path
37118
+ required: true
37119
+ schema:
37120
+ type: string
37121
+ responses:
37122
+ "200":
37123
+ description: Successful response
37124
+ /v1/x/plugins/{plugin}/notices/{path}:
37125
+ delete:
37126
+ operationId: x_plugins_by_plugin_notices_by_path_delete
37127
+ summary: Gateway DELETE notice to a plugin
37128
+ description:
37129
+ "Dispatches DELETE requests under a plugin's reserved notices/ namespace to that plugin's handler files.
37130
+ Served to the gateway's service principal only: a notice is the gateway's own decision, never a client's."
37131
+ tags:
37132
+ - user-routes
37133
+ parameters:
37134
+ - name: plugin
37135
+ in: path
37136
+ required: true
37137
+ schema:
37138
+ type: string
37139
+ - name: path
37140
+ in: path
37141
+ required: true
37142
+ schema:
37143
+ type: string
37144
+ responses:
37145
+ "200":
37146
+ description: Successful response
37147
+ get:
37148
+ operationId: x_plugins_by_plugin_notices_by_path_get
37149
+ summary: Gateway GET notice to a plugin
37150
+ description:
37151
+ "Dispatches GET requests under a plugin's reserved notices/ namespace to that plugin's handler files.
37152
+ Served to the gateway's service principal only: a notice is the gateway's own decision, never a client's."
37153
+ tags:
37154
+ - user-routes
37155
+ parameters:
37156
+ - name: plugin
37157
+ in: path
37158
+ required: true
37159
+ schema:
37160
+ type: string
37161
+ - name: path
37162
+ in: path
37163
+ required: true
37164
+ schema:
37165
+ type: string
37166
+ responses:
37167
+ "200":
37168
+ description: Successful response
37169
+ head:
37170
+ operationId: x_plugins_by_plugin_notices_by_path_head
37171
+ summary: Gateway HEAD notice to a plugin
37172
+ description:
37173
+ "Dispatches HEAD requests under a plugin's reserved notices/ namespace to that plugin's handler files.
37174
+ Served to the gateway's service principal only: a notice is the gateway's own decision, never a client's."
37175
+ tags:
37176
+ - user-routes
37177
+ parameters:
37178
+ - name: plugin
37179
+ in: path
37180
+ required: true
37181
+ schema:
37182
+ type: string
37183
+ - name: path
37184
+ in: path
37185
+ required: true
37186
+ schema:
37187
+ type: string
37188
+ responses:
37189
+ "200":
37190
+ description: Successful response
37191
+ options:
37192
+ operationId: x_plugins_by_plugin_notices_by_path_options
37193
+ summary: Gateway OPTIONS notice to a plugin
37194
+ description:
37195
+ "Dispatches OPTIONS requests under a plugin's reserved notices/ namespace to that plugin's handler files.
37196
+ Served to the gateway's service principal only: a notice is the gateway's own decision, never a client's."
37197
+ tags:
37198
+ - user-routes
37199
+ parameters:
37200
+ - name: plugin
37201
+ in: path
37202
+ required: true
37203
+ schema:
37204
+ type: string
37205
+ - name: path
37206
+ in: path
37207
+ required: true
37208
+ schema:
37209
+ type: string
37210
+ responses:
37211
+ "200":
37212
+ description: Successful response
37213
+ patch:
37214
+ operationId: x_plugins_by_plugin_notices_by_path_patch
37215
+ summary: Gateway PATCH notice to a plugin
37216
+ description:
37217
+ "Dispatches PATCH requests under a plugin's reserved notices/ namespace to that plugin's handler files.
37218
+ Served to the gateway's service principal only: a notice is the gateway's own decision, never a client's."
37219
+ tags:
37220
+ - user-routes
37221
+ parameters:
37222
+ - name: plugin
37223
+ in: path
37224
+ required: true
37225
+ schema:
37226
+ type: string
37227
+ - name: path
37228
+ in: path
37229
+ required: true
37230
+ schema:
37231
+ type: string
37232
+ responses:
37233
+ "200":
37234
+ description: Successful response
37235
+ post:
37236
+ operationId: x_plugins_by_plugin_notices_by_path_post
37237
+ summary: Gateway POST notice to a plugin
37238
+ description:
37239
+ "Dispatches POST requests under a plugin's reserved notices/ namespace to that plugin's handler files.
37240
+ Served to the gateway's service principal only: a notice is the gateway's own decision, never a client's."
37241
+ tags:
37242
+ - user-routes
37243
+ parameters:
37244
+ - name: plugin
37245
+ in: path
37246
+ required: true
37247
+ schema:
37248
+ type: string
37249
+ - name: path
37250
+ in: path
37251
+ required: true
37252
+ schema:
37253
+ type: string
37254
+ responses:
37255
+ "200":
37256
+ description: Successful response
37257
+ put:
37258
+ operationId: x_plugins_by_plugin_notices_by_path_put
37259
+ summary: Gateway PUT notice to a plugin
37260
+ description:
37261
+ "Dispatches PUT requests under a plugin's reserved notices/ namespace to that plugin's handler files.
37262
+ Served to the gateway's service principal only: a notice is the gateway's own decision, never a client's."
37263
+ tags:
37264
+ - user-routes
37265
+ parameters:
37266
+ - name: plugin
37267
+ in: path
37268
+ required: true
37269
+ schema:
37270
+ type: string
37271
+ - name: path
37272
+ in: path
37273
+ required: true
37274
+ schema:
37275
+ type: string
37276
+ responses:
37277
+ "200":
37278
+ description: Successful response
36651
37279
  components:
36652
37280
  schemas:
36653
37281
  ConfigPatchRequest:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vellumai/assistant",
3
- "version": "0.12.0-staging.1",
3
+ "version": "0.12.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "exports": {
@@ -44,6 +44,7 @@
44
44
  "@qdrant/js-client-rest": "1.17.0",
45
45
  "@resvg/resvg-js": "2.6.2",
46
46
  "@slack/types": "2.22.0",
47
+ "@vellumai/app-icons": "file:../packages/app-icons",
47
48
  "@vellumai/avatar-catalog": "file:../packages/avatar-catalog",
48
49
  "@vellumai/avatar-manifest": "file:../packages/avatar-manifest",
49
50
  "@vellumai/ces-client": "file:../packages/ces-client",
@@ -89,6 +90,7 @@
89
90
  "node": ">=20.12.0"
90
91
  },
91
92
  "bundledDependencies": [
93
+ "@vellumai/app-icons",
92
94
  "@vellumai/avatar-catalog",
93
95
  "@vellumai/avatar-manifest",
94
96
  "@vellumai/ces-client",
@@ -0,0 +1,19 @@
1
+ type PackageManifest = {
2
+ dependencies?: Record<string, string>;
3
+ };
4
+
5
+ const manifest = (await Bun.file(
6
+ new URL("../package.json", import.meta.url),
7
+ ).json()) as PackageManifest;
8
+
9
+ const workspaceDependencies = Object.entries(manifest.dependencies ?? {})
10
+ .filter(([, version]) => version.startsWith("workspace:"))
11
+ .map(([name]) => name)
12
+ .sort();
13
+
14
+ for (const dependency of workspaceDependencies) {
15
+ const resolvedPath = Bun.resolveSync(dependency, import.meta.dir);
16
+ console.log(`${dependency}: ${resolvedPath}`);
17
+ }
18
+
19
+ console.log(`Resolved ${workspaceDependencies.length} workspace dependencies.`);