@dxos/plugin-pipeline 0.9.0 → 0.9.1-main.c7dcc2e112

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 (78) hide show
  1. package/dist/lib/neutral/{PipelineArticle-6JIVXMYF.mjs → PipelineArticle-DG4TCEML.mjs} +2 -2
  2. package/dist/lib/neutral/{PipelineArticle-6JIVXMYF.mjs.map → PipelineArticle-DG4TCEML.mjs.map} +2 -2
  3. package/dist/lib/neutral/PipelinePlugin.mjs +5 -3
  4. package/dist/lib/neutral/PipelinePlugin.mjs.map +4 -4
  5. package/dist/lib/neutral/{PipelineProperties-JZQYG2CN.mjs → PipelineProperties-JW7AWWU4.mjs} +28 -55
  6. package/dist/lib/neutral/PipelineProperties-JW7AWWU4.mjs.map +7 -0
  7. package/dist/lib/neutral/app-graph-builder-DULKWFOE.mjs +81 -0
  8. package/dist/lib/neutral/app-graph-builder-DULKWFOE.mjs.map +7 -0
  9. package/dist/lib/neutral/capabilities/index.mjs +5 -3
  10. package/dist/lib/neutral/capabilities/index.mjs.map +3 -3
  11. package/dist/lib/neutral/chunk-OF66INHQ.mjs +9 -0
  12. package/dist/lib/neutral/chunk-OF66INHQ.mjs.map +7 -0
  13. package/dist/lib/neutral/chunk-RHSONY5F.mjs +44 -0
  14. package/dist/lib/neutral/chunk-RHSONY5F.mjs.map +7 -0
  15. package/dist/lib/neutral/components/index.mjs +11 -9
  16. package/dist/lib/neutral/components/index.mjs.map +3 -3
  17. package/dist/lib/neutral/containers/index.mjs +2 -2
  18. package/dist/lib/neutral/{create-object-6Z4MMGX4.mjs → create-object-VIRI2DY5.mjs} +6 -2
  19. package/dist/lib/neutral/create-object-VIRI2DY5.mjs.map +7 -0
  20. package/dist/lib/neutral/index.mjs +1 -1
  21. package/dist/lib/neutral/meta.json +1 -1
  22. package/dist/lib/neutral/meta.mjs +1 -1
  23. package/dist/lib/neutral/navigation-resolver-PB6XKEAG.mjs +12 -0
  24. package/dist/lib/neutral/navigation-resolver-PB6XKEAG.mjs.map +7 -0
  25. package/dist/lib/neutral/plugin.mjs +1 -1
  26. package/dist/lib/neutral/{react-surface-QG7QSZSS.mjs → react-surface-U7OOZHUQ.mjs} +2 -2
  27. package/dist/lib/neutral/{react-surface-QG7QSZSS.mjs.map → react-surface-U7OOZHUQ.mjs.map} +3 -3
  28. package/dist/lib/neutral/translations.mjs +4 -5
  29. package/dist/lib/neutral/translations.mjs.map +3 -3
  30. package/dist/types/dx.config.d.ts +28 -0
  31. package/dist/types/dx.config.d.ts.map +1 -0
  32. package/dist/types/src/PipelinePlugin.d.ts.map +1 -1
  33. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  34. package/dist/types/src/capabilities/index.d.ts +4 -8
  35. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  36. package/dist/types/src/capabilities/navigation-resolver.d.ts +6 -0
  37. package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -0
  38. package/dist/types/src/capabilities/react-surface.d.ts +2 -2
  39. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  40. package/dist/types/src/components/PipelineComponent/PipelineComponent.stories.d.ts +6 -8
  41. package/dist/types/src/components/PipelineComponent/PipelineComponent.stories.d.ts.map +1 -1
  42. package/dist/types/src/containers/PipelineArticle/PipelineArticle.stories.d.ts +6 -8
  43. package/dist/types/src/containers/PipelineArticle/PipelineArticle.stories.d.ts.map +1 -1
  44. package/dist/types/src/containers/PipelineProperties/PipelineProperties.d.ts +3 -5
  45. package/dist/types/src/containers/PipelineProperties/PipelineProperties.d.ts.map +1 -1
  46. package/dist/types/src/containers/PipelineProperties/PipelineProperties.stories.d.ts +147 -0
  47. package/dist/types/src/containers/PipelineProperties/PipelineProperties.stories.d.ts.map +1 -0
  48. package/dist/types/src/meta.d.ts +28 -2
  49. package/dist/types/src/meta.d.ts.map +1 -1
  50. package/dist/types/src/paths.d.ts +3 -0
  51. package/dist/types/src/paths.d.ts.map +1 -0
  52. package/dist/types/src/translations.d.ts +6 -8
  53. package/dist/types/src/translations.d.ts.map +1 -1
  54. package/dist/types/tsconfig.tsbuildinfo +1 -1
  55. package/dx.config.ts +32 -0
  56. package/package.json +39 -37
  57. package/src/PipelinePlugin.test.ts +1 -1
  58. package/src/PipelinePlugin.tsx +3 -2
  59. package/src/capabilities/app-graph-builder.ts +38 -4
  60. package/src/capabilities/create-object.ts +3 -1
  61. package/src/capabilities/index.ts +1 -0
  62. package/src/capabilities/navigation-resolver.ts +18 -0
  63. package/src/capabilities/react-surface.tsx +1 -1
  64. package/src/components/PipelineComponent/PipelineColumn.tsx +10 -13
  65. package/src/components/PipelineComponent/PipelineComponent.tsx +1 -1
  66. package/src/containers/PipelineArticle/PipelineArticle.stories.tsx +4 -4
  67. package/src/containers/PipelineArticle/PipelineArticle.tsx +1 -1
  68. package/src/containers/PipelineProperties/PipelineProperties.stories.tsx +150 -0
  69. package/src/containers/PipelineProperties/PipelineProperties.tsx +65 -89
  70. package/src/meta.ts +2 -25
  71. package/src/paths.ts +12 -0
  72. package/src/translations.ts +8 -8
  73. package/dist/lib/neutral/PipelineProperties-JZQYG2CN.mjs.map +0 -7
  74. package/dist/lib/neutral/app-graph-builder-ZLGRWRJU.mjs +0 -44
  75. package/dist/lib/neutral/app-graph-builder-ZLGRWRJU.mjs.map +0 -7
  76. package/dist/lib/neutral/chunk-CYXDAAKN.mjs +0 -35
  77. package/dist/lib/neutral/chunk-CYXDAAKN.mjs.map +0 -7
  78. package/dist/lib/neutral/create-object-6Z4MMGX4.mjs.map +0 -7
@@ -6,35 +6,29 @@ import * as Schema from 'effect/Schema';
6
6
  import React, { useCallback, useMemo, useRef, useState } from 'react';
7
7
 
8
8
  import { resolveSchemaWithRegistry } from '@dxos/app-toolkit/query';
9
- import { useTypeOptions } from '@dxos/app-toolkit/ui';
9
+ import { AppSurface, useTypeOptions } from '@dxos/app-toolkit/ui';
10
10
  import { EID, Filter, JsonSchema, Obj, Query, type QueryAST, Ref, Scope, Tag, type Type } from '@dxos/echo';
11
11
  import { type Mutable } from '@dxos/echo/Obj';
12
12
  import { SchemaEx } from '@dxos/effect';
13
13
  import { useObject, useQuery } from '@dxos/react-client/echo';
14
- import { IconButton, type ThemedClassName, useAsyncEffect, useTranslation } from '@dxos/react-ui';
15
- import { Form, ViewEditor } from '@dxos/react-ui-form';
16
- import { List } from '@dxos/react-ui-list';
14
+ import { useAsyncEffect, useTranslation } from '@dxos/react-ui';
15
+ import { FieldHeader, Form, ViewEditor } from '@dxos/react-ui-form';
16
+ import { OrderedList } from '@dxos/react-ui-list';
17
17
  import { type ProjectionModel, ViewModel } from '@dxos/schema';
18
18
  import { Pipeline } from '@dxos/types';
19
- import { mx, osTranslations } from '@dxos/ui-theme';
20
19
  import { arrayMove } from '@dxos/util';
21
20
 
22
21
  import { meta } from '#meta';
23
22
 
24
- const listGrid = 'grid grid-cols-[min-content_1fr_min-content_min-content_min-content]';
25
- const listItemGrid = 'grid grid-cols-subgrid col-span-5';
26
-
27
23
  const ColumnFormSchema = Pipeline.Column.pipe(Schema.mutable, Schema.pick('name'));
28
24
 
29
- export type PipelinePropertiesProps = ThemedClassName<{
30
- pipeline: Pipeline.Pipeline;
31
- }>;
25
+ export type PipelinePropertiesProps = AppSurface.ObjectPropertiesProps<Pipeline.Pipeline>;
32
26
 
33
27
  /**
34
28
  * Supports editing the pipeline view.
35
29
  */
36
- export const PipelineProperties = ({ classNames, pipeline }: PipelinePropertiesProps) => {
37
- const { t } = useTranslation(meta.id);
30
+ export const PipelineProperties = ({ subject: pipeline }: PipelinePropertiesProps) => {
31
+ const { t } = useTranslation(meta.profile.key);
38
32
  const db = Obj.getDatabase(pipeline);
39
33
  const [expandedId, setExpandedId] = useState<string>();
40
34
  const [columns, updateColumns] = useObject(pipeline, 'columns');
@@ -115,10 +109,6 @@ export const PipelineProperties = ({ classNames, pipeline }: PipelinePropertiesP
115
109
  [columns, updateColumns],
116
110
  );
117
111
 
118
- const handleToggleField = useCallback((column: Pipeline.Column) => {
119
- setExpandedId((prevExpandedId) => (prevExpandedId === column.view.uri ? undefined : column.view.uri));
120
- }, []);
121
-
122
112
  const handleDelete = useCallback(
123
113
  async (column: Pipeline.Column) => {
124
114
  if (column.view.uri === expandedId) {
@@ -139,11 +129,14 @@ export const PipelineProperties = ({ classNames, pipeline }: PipelinePropertiesP
139
129
  if (!db) {
140
130
  return;
141
131
  }
142
- const newView = ViewModel.make({
143
- query: Query.select(Filter.nothing()),
144
- jsonSchema: JsonSchema.toJsonSchema(Schema.Struct({})),
145
- });
146
- db.add(newView);
132
+
133
+ const newView = db.add(
134
+ ViewModel.make({
135
+ query: Query.select(Filter.nothing()),
136
+ jsonSchema: JsonSchema.toJsonSchema(Schema.Struct({})),
137
+ }),
138
+ );
139
+
147
140
  updateColumns((columns) => {
148
141
  columns.push({
149
142
  name: '',
@@ -156,79 +149,62 @@ export const PipelineProperties = ({ classNames, pipeline }: PipelinePropertiesP
156
149
  }, [db, updateColumns]);
157
150
 
158
151
  return (
159
- <div className={mx('py-form-padding overflow-y-auto', classNames)}>
160
- <h2 className='text-sm text-description py-1'>{t('views.label')}</h2>
161
-
162
- <List.Root<Pipeline.Column>
152
+ <Form.Section>
153
+ <FieldHeader label={t('columns.label')} add={{ label: t('add-column.label'), onClick: handleAdd }} />
154
+ <OrderedList.Root<Pipeline.Column>
163
155
  items={columns}
164
156
  isItem={Schema.is(Pipeline.Column)}
165
157
  getId={(column) => column.view.uri}
166
158
  onMove={handleMove}
159
+ expandedId={expandedId}
160
+ onExpandedChange={setExpandedId}
167
161
  >
168
- {({ items: columns }) => (
169
- <>
170
- <div role='list' className={mx(listGrid)}>
171
- {columns.map((column) => (
172
- <List.Item<Pipeline.Column>
173
- key={column.view.uri}
174
- item={column}
175
- classNames={listItemGrid}
176
- aria-expanded={expandedId === column.view.uri}
177
- >
178
- <div className={mx(listItemGrid, 'dx-hover rounded-xs cursor-pointer min-h-10')}>
179
- <List.ItemDragHandle />
180
- <List.ItemTitle onClick={() => handleToggleField(column)}>
181
- {column.name || t('untitled-view.title')}
182
- </List.ItemTitle>
183
- <List.ItemDeleteButton
184
- label={t('delete-view.label')}
185
- autoHide={false}
186
- onClick={() => handleDelete(column)}
187
- data-testid='view.delete'
162
+ {({ items }) => (
163
+ <OrderedList.Content>
164
+ {items.map((column) => (
165
+ <OrderedList.DetailItem<Pipeline.Column>
166
+ key={column.view.uri}
167
+ id={column.view.uri}
168
+ item={column}
169
+ title={column.name || t('untitled-column.title')}
170
+ trailing={
171
+ <OrderedList.DeleteButton
172
+ label={t('delete-column.label')}
173
+ onClick={() => handleDelete(column)}
174
+ data-testid='column.delete'
175
+ />
176
+ }
177
+ >
178
+ {column.view.target && (
179
+ <>
180
+ <Form.Root
181
+ schema={ColumnFormSchema}
182
+ values={column}
183
+ onValuesChanged={handleColumnValuesChanged(column)}
184
+ >
185
+ <Form.Content>
186
+ <Form.FieldSet />
187
+ </Form.Content>
188
+ </Form.Root>
189
+ <ViewEditor
190
+ ref={projectionRef}
191
+ mode='tag'
192
+ readonly
193
+ type={type}
194
+ view={column.view.target}
195
+ registry={db?.graph.registry}
196
+ db={db}
197
+ tags={tags}
198
+ types={types}
199
+ onQueryChanged={handleQueryChanged}
188
200
  />
189
- <IconButton
190
- iconOnly
191
- variant='ghost'
192
- label={t('toggle-expand.label', { ns: osTranslations })}
193
- icon={expandedId === column.view.uri ? 'ph--caret-down--regular' : 'ph--caret-right--regular'}
194
- onClick={() => handleToggleField(column)}
195
- />
196
- </div>
197
- {expandedId === column.view.uri && column?.view.target && (
198
- <div className='col-span-5 my-2 border border-separator rounded-md'>
199
- <Form.Root
200
- schema={ColumnFormSchema}
201
- values={column}
202
- onValuesChanged={handleColumnValuesChanged(column)}
203
- >
204
- <Form.Content>
205
- <Form.FieldSet />
206
- </Form.Content>
207
- </Form.Root>
208
- <ViewEditor
209
- ref={projectionRef}
210
- mode='tag'
211
- readonly
212
- type={type}
213
- view={column.view.target}
214
- registry={db?.graph.registry}
215
- db={db}
216
- tags={tags}
217
- types={types}
218
- onQueryChanged={handleQueryChanged}
219
- />
220
- </div>
221
- )}
222
- </List.Item>
223
- ))}
224
- </div>
225
- </>
201
+ </>
202
+ )}
203
+ </OrderedList.DetailItem>
204
+ ))}
205
+ </OrderedList.Content>
226
206
  )}
227
- </List.Root>
228
-
229
- <div className='my-form-padding'>
230
- <IconButton icon='ph--plus--regular' label={t('add-view.label')} onClick={handleAdd} classNames='w-full' />
231
- </div>
232
- </div>
207
+ </OrderedList.Root>
208
+ </Form.Section>
233
209
  );
234
210
  };
package/src/meta.ts CHANGED
@@ -3,30 +3,7 @@
3
3
  //
4
4
 
5
5
  import { Plugin } from '@dxos/app-framework';
6
- import { DXN } from '@dxos/keys';
7
- import { trim } from '@dxos/util';
8
6
 
9
- export const meta = Plugin.makeMeta({
10
- key: DXN.make('org.dxos.plugin.pipeline'),
11
- name: 'Pipelines',
12
- author: 'DXOS',
13
- description: trim`
14
- A multi-column Kanban-style pipeline plugin for DXOS Composer.
15
- Each Pipeline holds an ordered set of Columns; each Column is backed by a ViewModel whose query
16
- can select any ECHO object type — messages, contacts, documents, or custom types — from the active space.
7
+ import config from '../dx.config';
17
8
 
18
- Columns are fully configurable through the Settings companion panel, where users can add, rename,
19
- reorder, and delete columns and edit the underlying query and projection for each column.
20
- Objects can be dragged between columns and the full pipeline state, including column order and
21
- per-column item order, persists collaboratively via ECHO.
22
-
23
- A built-in Research template scaffolds a four-column pipeline wired to the Mailbox, Contacts,
24
- Organizations, and Notes objects in the space, providing an out-of-the-box CRM-style workflow.
25
- Pipeline articles also expose Invocations and Automation companion tabs for AI-driven automation.
26
- `,
27
- icon: 'ph--path--regular',
28
- iconHue: 'purple',
29
- source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-pipeline',
30
- spec: 'PLUGIN.mdl',
31
- tags: ['labs'],
32
- });
9
+ export const meta = Plugin.getMetaFromConfig(config);
package/src/paths.ts ADDED
@@ -0,0 +1,12 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Paths } from '@dxos/app-toolkit';
6
+ import { Pipeline } from '@dxos/types';
7
+
8
+ const { getSectionPath: getPipelinesPath, getObjectPath: getPipelinePath } = Paths.createTypeSectionPaths(
9
+ Pipeline.Pipeline,
10
+ );
11
+
12
+ export { getPipelinesPath, getPipelinePath };
@@ -1,10 +1,11 @@
1
- import { Type } from '@dxos/echo';
2
- import { type Resource } from '@dxos/react-ui';
3
- import { Pipeline } from '@dxos/types';
4
1
  //
5
2
  // Copyright 2023 DXOS.org
6
3
  //
7
4
 
5
+ import { Type } from '@dxos/echo';
6
+ import { type Resource } from '@dxos/react-ui';
7
+ import { Pipeline } from '@dxos/types';
8
+
8
9
  import { meta } from '#meta';
9
10
 
10
11
  export const translations = [
@@ -21,19 +22,18 @@ export const translations = [
21
22
  'delete-object.label': 'Delete pipeline',
22
23
  'object-deleted.label': 'Pipeline deleted',
23
24
  },
24
- [meta.id]: {
25
+ [meta.profile.key]: {
25
26
  'plugin.name': 'Pipelines',
26
27
  'add-column.label': 'Add column',
27
28
  'add-card.label': 'Add object',
28
- 'untitled-view.title': 'New view',
29
+ 'untitled-column.title': 'New column',
29
30
  'enumerating-tab.label': 'List',
30
31
  'editing-tab.label': 'Edit',
31
- 'views.label': 'Views',
32
+ 'columns.label': 'Columns',
32
33
  'pipeline-invocations.label': 'Invocations',
33
34
  'pipeline-automation.label': 'Automations',
34
35
  'toggle-expand.label': 'Toggle expand',
35
- 'delete-view.label': 'Delete view',
36
- 'add-view.label': 'Add view',
36
+ 'delete-column.label': 'Delete column',
37
37
  },
38
38
  },
39
39
  },
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/containers/PipelineProperties/PipelineProperties.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { resolveSchemaWithRegistry } from '@dxos/app-toolkit/query';\nimport { useTypeOptions } from '@dxos/app-toolkit/ui';\nimport { EID, Filter, JsonSchema, Obj, Query, type QueryAST, Ref, Scope, Tag, type Type } from '@dxos/echo';\nimport { type Mutable } from '@dxos/echo/Obj';\nimport { SchemaEx } from '@dxos/effect';\nimport { useObject, useQuery } from '@dxos/react-client/echo';\nimport { IconButton, type ThemedClassName, useAsyncEffect, useTranslation } from '@dxos/react-ui';\nimport { Form, ViewEditor } from '@dxos/react-ui-form';\nimport { List } from '@dxos/react-ui-list';\nimport { type ProjectionModel, ViewModel } from '@dxos/schema';\nimport { Pipeline } from '@dxos/types';\nimport { mx, osTranslations } from '@dxos/ui-theme';\nimport { arrayMove } from '@dxos/util';\n\nimport { meta } from '#meta';\n\nconst listGrid = 'grid grid-cols-[min-content_1fr_min-content_min-content_min-content]';\nconst listItemGrid = 'grid grid-cols-subgrid col-span-5';\n\nconst ColumnFormSchema = Pipeline.Column.pipe(Schema.mutable, Schema.pick('name'));\n\nexport type PipelinePropertiesProps = ThemedClassName<{\n pipeline: Pipeline.Pipeline;\n}>;\n\n/**\n * Supports editing the pipeline view.\n */\nexport const PipelineProperties = ({ classNames, pipeline }: PipelinePropertiesProps) => {\n const { t } = useTranslation(meta.id);\n const db = Obj.getDatabase(pipeline);\n const [expandedId, setExpandedId] = useState<string>();\n const [columns, updateColumns] = useObject(pipeline, 'columns');\n const column = useMemo(() => columns.find((column) => column.view.uri === expandedId), [columns, expandedId]);\n const [view, updateView] = useObject(column?.view);\n const [type, setType] = useState<Type.AnyEntity>();\n const projectionRef = useRef<ProjectionModel>(null);\n const tags = useQuery(db, Filter.type(Tag.Tag));\n const types = useTypeOptions({\n db,\n annotation: {\n location: ['database', 'runtime'],\n kind: ['user'],\n },\n });\n\n useAsyncEffect(async () => {\n if (!view?.query || !db) {\n return;\n }\n\n const foundType = await resolveSchemaWithRegistry(db, view.query.ast);\n if (foundType && foundType !== type) {\n setType(() => foundType);\n }\n }, [db, view, type]);\n\n const handleMove = useCallback(\n (fromIndex: number, toIndex: number) =>\n updateColumns((columns) => {\n arrayMove(columns, fromIndex, toIndex);\n }),\n [updateColumns],\n );\n\n const handleQueryChanged = useCallback(\n async (newQuery: QueryAST.Query, target?: EID.EID) => {\n if (!view || !db) {\n return;\n }\n\n const queue = target;\n const query = queue ? Query.fromAst(newQuery).from([Scope.feed(String(queue))]) : Query.fromAst(newQuery);\n updateView((view) => {\n view.query.ast = query.ast as Mutable<typeof query.ast>;\n });\n const newType = await resolveSchemaWithRegistry(db, query.ast);\n if (!newType) {\n return;\n }\n\n const newView = ViewModel.make({\n query,\n jsonSchema: newType.jsonSchema,\n });\n updateView((view) => {\n view.projection = Obj.getSnapshot(newView).projection as Mutable<typeof view.projection>;\n });\n\n setType(() => newType);\n },\n [db, view, updateView, type],\n );\n\n const handleColumnValuesChanged = useCallback(\n (column: Pipeline.Column) =>\n (newValues: { name?: string }, { changed }: { changed: Record<SchemaEx.JsonPath, boolean> }) => {\n if (changed['name' as SchemaEx.JsonPath]) {\n const columnIndex = columns.findIndex((c) => c === column);\n if (columnIndex === -1) {\n return;\n }\n updateColumns((cols) => {\n cols[columnIndex].name = newValues.name ?? '';\n });\n }\n },\n [columns, updateColumns],\n );\n\n const handleToggleField = useCallback((column: Pipeline.Column) => {\n setExpandedId((prevExpandedId) => (prevExpandedId === column.view.uri ? undefined : column.view.uri));\n }, []);\n\n const handleDelete = useCallback(\n async (column: Pipeline.Column) => {\n if (column.view.uri === expandedId) {\n setExpandedId(undefined);\n }\n\n const index = columns.findIndex((l) => l === column);\n const viewToRemove = await column.view.load();\n updateColumns((columns) => {\n columns.splice(index, 1);\n });\n db?.remove(viewToRemove);\n },\n [expandedId, columns, updateColumns, db],\n );\n\n const handleAdd = useCallback(() => {\n if (!db) {\n return;\n }\n const newView = ViewModel.make({\n query: Query.select(Filter.nothing()),\n jsonSchema: JsonSchema.toJsonSchema(Schema.Struct({})),\n });\n db.add(newView);\n updateColumns((columns) => {\n columns.push({\n name: '',\n // Type assertion needed due to QueryAST type variance.\n view: Ref.make(newView) as (typeof columns)[number]['view'],\n order: [],\n });\n });\n setExpandedId(newView.id);\n }, [db, updateColumns]);\n\n return (\n <div className={mx('py-form-padding overflow-y-auto', classNames)}>\n <h2 className='text-sm text-description py-1'>{t('views.label')}</h2>\n\n <List.Root<Pipeline.Column>\n items={columns}\n isItem={Schema.is(Pipeline.Column)}\n getId={(column) => column.view.uri}\n onMove={handleMove}\n >\n {({ items: columns }) => (\n <>\n <div role='list' className={mx(listGrid)}>\n {columns.map((column) => (\n <List.Item<Pipeline.Column>\n key={column.view.uri}\n item={column}\n classNames={listItemGrid}\n aria-expanded={expandedId === column.view.uri}\n >\n <div className={mx(listItemGrid, 'dx-hover rounded-xs cursor-pointer min-h-10')}>\n <List.ItemDragHandle />\n <List.ItemTitle onClick={() => handleToggleField(column)}>\n {column.name || t('untitled-view.title')}\n </List.ItemTitle>\n <List.ItemDeleteButton\n label={t('delete-view.label')}\n autoHide={false}\n onClick={() => handleDelete(column)}\n data-testid='view.delete'\n />\n <IconButton\n iconOnly\n variant='ghost'\n label={t('toggle-expand.label', { ns: osTranslations })}\n icon={expandedId === column.view.uri ? 'ph--caret-down--regular' : 'ph--caret-right--regular'}\n onClick={() => handleToggleField(column)}\n />\n </div>\n {expandedId === column.view.uri && column?.view.target && (\n <div className='col-span-5 my-2 border border-separator rounded-md'>\n <Form.Root\n schema={ColumnFormSchema}\n values={column}\n onValuesChanged={handleColumnValuesChanged(column)}\n >\n <Form.Content>\n <Form.FieldSet />\n </Form.Content>\n </Form.Root>\n <ViewEditor\n ref={projectionRef}\n mode='tag'\n readonly\n type={type}\n view={column.view.target}\n registry={db?.graph.registry}\n db={db}\n tags={tags}\n types={types}\n onQueryChanged={handleQueryChanged}\n />\n </div>\n )}\n </List.Item>\n ))}\n </div>\n </>\n )}\n </List.Root>\n\n <div className='my-form-padding'>\n <IconButton icon='ph--plus--regular' label={t('add-view.label')} onClick={handleAdd} classNames='w-full' />\n </div>\n </div>\n );\n};\n"],
5
- "mappings": "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",
6
- "names": ["Schema", "React", "useCallback", "useMemo", "useRef", "useState", "resolveSchemaWithRegistry", "useTypeOptions", "Filter", "JsonSchema", "Obj", "Query", "Ref", "Scope", "Tag", "useObject", "useQuery", "IconButton", "useAsyncEffect", "useTranslation", "Form", "ViewEditor", "List", "ViewModel", "Pipeline", "mx", "osTranslations", "arrayMove", "meta", "listGrid", "listItemGrid", "ColumnFormSchema", "Column", "pipe", "mutable", "pick", "PipelineProperties", "classNames", "pipeline", "t", "id", "db", "getDatabase", "expandedId", "setExpandedId", "columns", "updateColumns", "column", "find", "view", "uri", "updateView", "type", "setType", "projectionRef", "tags", "types", "annotation", "location", "kind", "query", "foundType", "ast", "handleMove", "fromIndex", "toIndex", "handleQueryChanged", "newQuery", "target", "queue", "fromAst", "from", "feed", "String", "newType", "newView", "make", "jsonSchema", "projection", "getSnapshot", "handleColumnValuesChanged", "newValues", "changed", "columnIndex", "findIndex", "c", "cols", "name", "handleToggleField", "prevExpandedId", "undefined", "handleDelete", "index", "l", "viewToRemove", "load", "splice", "remove", "handleAdd", "select", "nothing", "toJsonSchema", "Struct", "add", "push", "order", "div", "className", "h2", "Root", "items", "isItem", "is", "getId", "onMove", "role", "map", "Item", "key", "item", "aria-expanded", "ItemDragHandle", "ItemTitle", "onClick", "ItemDeleteButton", "label", "autoHide", "data-testid", "iconOnly", "variant", "ns", "icon", "schema", "values", "onValuesChanged", "Content", "FieldSet", "ref", "mode", "readonly", "registry", "graph", "onQueryChanged"]
7
- }
@@ -1,44 +0,0 @@
1
- // src/capabilities/app-graph-builder.ts
2
- import * as Effect from "effect/Effect";
3
- import { Capability } from "@dxos/app-framework";
4
- import { AppCapabilities, AppNode } from "@dxos/app-toolkit";
5
- import { GraphBuilder } from "@dxos/plugin-graph";
6
- import { Pipeline } from "@dxos/types";
7
- import { meta } from "#meta";
8
- var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function* () {
9
- const extensions = yield* Effect.all([
10
- GraphBuilder.createTypeExtension({
11
- id: "triggers",
12
- type: Pipeline.Pipeline,
13
- connector: () => Effect.succeed([
14
- AppNode.makeCompanion({
15
- id: "invocations",
16
- label: [
17
- "pipeline-invocations.label",
18
- {
19
- ns: meta.id
20
- }
21
- ],
22
- icon: "ph--clock-countdown--regular",
23
- data: "invocations"
24
- }),
25
- AppNode.makeCompanion({
26
- id: "automation",
27
- label: [
28
- "pipeline-automation.label",
29
- {
30
- ns: meta.id
31
- }
32
- ],
33
- icon: "ph--lightning--regular",
34
- data: "automation"
35
- })
36
- ])
37
- })
38
- ]);
39
- return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);
40
- }));
41
- export {
42
- app_graph_builder_default as default
43
- };
44
- //# sourceMappingURL=app-graph-builder-ZLGRWRJU.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities, AppNode } from '@dxos/app-toolkit';\nimport { GraphBuilder } from '@dxos/plugin-graph';\nimport { Pipeline } from '@dxos/types';\n\nimport { meta } from '#meta';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const extensions = yield* Effect.all([\n GraphBuilder.createTypeExtension({\n id: 'triggers',\n type: Pipeline.Pipeline,\n connector: () =>\n Effect.succeed([\n AppNode.makeCompanion({\n id: 'invocations',\n label: ['pipeline-invocations.label', { ns: meta.id }],\n icon: 'ph--clock-countdown--regular',\n data: 'invocations',\n }),\n AppNode.makeCompanion({\n id: 'automation',\n label: ['pipeline-automation.label', { ns: meta.id }],\n icon: 'ph--lightning--regular',\n data: 'automation',\n }),\n ]),\n }),\n ]);\n\n return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);\n }),\n);\n"],
5
- "mappings": ";AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,iBAAiBC,eAAe;AACzC,SAASC,oBAAoB;AAC7B,SAASC,gBAAgB;AAEzB,SAASC,YAAY;AAErB,IAAA,4BAAeL,WAAWM,WACjBC,kBAAW,aAAA;AAChB,QAAMC,aAAa,OAAcC,WAAI;IACnCN,aAAaO,oBAAoB;MAC/BC,IAAI;MACJC,MAAMR,SAASA;MACfS,WAAW,MACFC,eAAQ;QACbZ,QAAQa,cAAc;UACpBJ,IAAI;UACJK,OAAO;YAAC;YAA8B;cAAEC,IAAIZ,KAAKM;YAAG;;UACpDO,MAAM;UACNC,MAAM;QACR,CAAA;QACAjB,QAAQa,cAAc;UACpBJ,IAAI;UACJK,OAAO;YAAC;YAA6B;cAAEC,IAAIZ,KAAKM;YAAG;;UACnDO,MAAM;UACNC,MAAM;QACR,CAAA;OACD;IACL,CAAA;GACD;AAED,SAAOnB,WAAWoB,YAAYnB,gBAAgBoB,iBAAiBb,UAAAA;AACjE,CAAA,CAAA;",
6
- "names": ["Effect", "Capability", "AppCapabilities", "AppNode", "GraphBuilder", "Pipeline", "meta", "makeModule", "fnUntraced", "extensions", "all", "createTypeExtension", "id", "type", "connector", "succeed", "makeCompanion", "label", "ns", "icon", "data", "contributes", "AppGraphBuilder"]
7
- }
@@ -1,35 +0,0 @@
1
- // src/meta.ts
2
- import { Plugin } from "@dxos/app-framework";
3
- import { DXN } from "@dxos/keys";
4
- import { trim } from "@dxos/util";
5
- var meta = Plugin.makeMeta({
6
- key: DXN.make("org.dxos.plugin.pipeline"),
7
- name: "Pipelines",
8
- author: "DXOS",
9
- description: trim`
10
- A multi-column Kanban-style pipeline plugin for DXOS Composer.
11
- Each Pipeline holds an ordered set of Columns; each Column is backed by a ViewModel whose query
12
- can select any ECHO object type — messages, contacts, documents, or custom types — from the active space.
13
-
14
- Columns are fully configurable through the Settings companion panel, where users can add, rename,
15
- reorder, and delete columns and edit the underlying query and projection for each column.
16
- Objects can be dragged between columns and the full pipeline state, including column order and
17
- per-column item order, persists collaboratively via ECHO.
18
-
19
- A built-in Research template scaffolds a four-column pipeline wired to the Mailbox, Contacts,
20
- Organizations, and Notes objects in the space, providing an out-of-the-box CRM-style workflow.
21
- Pipeline articles also expose Invocations and Automation companion tabs for AI-driven automation.
22
- `,
23
- icon: "ph--path--regular",
24
- iconHue: "purple",
25
- source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-pipeline",
26
- spec: "PLUGIN.mdl",
27
- tags: [
28
- "labs"
29
- ]
30
- });
31
-
32
- export {
33
- meta
34
- };
35
- //# sourceMappingURL=chunk-CYXDAAKN.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { DXN } from '@dxos/keys';\nimport { trim } from '@dxos/util';\n\nexport const meta = Plugin.makeMeta({\n key: DXN.make('org.dxos.plugin.pipeline'),\n name: 'Pipelines',\n author: 'DXOS',\n description: trim`\n A multi-column Kanban-style pipeline plugin for DXOS Composer.\n Each Pipeline holds an ordered set of Columns; each Column is backed by a ViewModel whose query\n can select any ECHO object type — messages, contacts, documents, or custom types — from the active space.\n\n Columns are fully configurable through the Settings companion panel, where users can add, rename,\n reorder, and delete columns and edit the underlying query and projection for each column.\n Objects can be dragged between columns and the full pipeline state, including column order and\n per-column item order, persists collaboratively via ECHO.\n\n A built-in Research template scaffolds a four-column pipeline wired to the Mailbox, Contacts,\n Organizations, and Notes objects in the space, providing an out-of-the-box CRM-style workflow.\n Pipeline articles also expose Invocations and Automation companion tabs for AI-driven automation.\n `,\n icon: 'ph--path--regular',\n iconHue: 'purple',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-pipeline',\n spec: 'PLUGIN.mdl',\n tags: ['labs'],\n});\n"],
5
- "mappings": ";AAIA,SAASA,cAAc;AACvB,SAASC,WAAW;AACpB,SAASC,YAAY;AAEd,IAAMC,OAAOH,OAAOI,SAAS;EAClCC,KAAKJ,IAAIK,KAAK,0BAAA;EACdC,MAAM;EACNC,QAAQ;EACRC,aAAaP;;;;;;;;;;;;;;EAcbQ,MAAM;EACNC,SAAS;EACTC,QAAQ;EACRC,MAAM;EACNC,MAAM;IAAC;;AACT,CAAA;",
6
- "names": ["Plugin", "DXN", "trim", "meta", "makeMeta", "key", "make", "name", "author", "description", "icon", "iconHue", "source", "spec", "tags"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/create-object.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Operation } from '@dxos/compute';\nimport { Type } from '@dxos/echo';\nimport { SpaceOperation } from '@dxos/plugin-space';\nimport { SpaceCapabilities } from '@dxos/plugin-space';\nimport { Pipeline } from '@dxos/types';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n return Capability.contributes(SpaceCapabilities.CreateObjectEntry, {\n id: Type.getTypename(Pipeline.Pipeline),\n createObject: (props, options) =>\n Effect.gen(function* () {\n const object = Pipeline.make(props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n hidden: true,\n targetNodeId: options.targetNodeId,\n });\n }),\n });\n }),\n);\n"],
5
- "mappings": ";AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,iBAAiB;AAC1B,SAASC,YAAY;AACrB,SAASC,sBAAsB;AAC/B,SAASC,yBAAyB;AAClC,SAASC,gBAAgB;AAEzB,IAAA,wBAAeL,WAAWM,WACjBC,kBAAW,aAAA;AAChB,SAAOP,WAAWQ,YAAYJ,kBAAkBK,mBAAmB;IACjEC,IAAIR,KAAKS,YAAYN,SAASA,QAAQ;IACtCO,cAAc,CAACC,OAAOC,YACbC,WAAI,aAAA;AACT,YAAMC,SAASX,SAASY,KAAKJ,KAAAA;AAC7B,aAAO,OAAOZ,UAAUiB,OAAOf,eAAegB,WAAW;QACvDH;QACAI,QAAQN,QAAQM;QAChBC,QAAQ;QACRC,cAAcR,QAAQQ;MACxB,CAAA;IACF,CAAA;EACJ,CAAA;AACF,CAAA,CAAA;",
6
- "names": ["Effect", "Capability", "Operation", "Type", "SpaceOperation", "SpaceCapabilities", "Pipeline", "makeModule", "fnUntraced", "contributes", "CreateObjectEntry", "id", "getTypename", "createObject", "props", "options", "gen", "object", "make", "invoke", "AddObject", "target", "hidden", "targetNodeId"]
7
- }