@baseplate-dev/project-builder-server 0.5.3 → 0.6.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.
- package/CHANGELOG.md +55 -0
- package/dist/actions/__tests__/action-test-utils.d.ts +24 -0
- package/dist/actions/__tests__/action-test-utils.d.ts.map +1 -0
- package/dist/actions/__tests__/action-test-utils.js +33 -0
- package/dist/actions/__tests__/action-test-utils.js.map +1 -0
- package/dist/actions/definition/commit-draft.action.d.ts +16 -0
- package/dist/actions/definition/commit-draft.action.d.ts.map +1 -0
- package/dist/actions/definition/commit-draft.action.js +65 -0
- package/dist/actions/definition/commit-draft.action.js.map +1 -0
- package/dist/actions/definition/discard-draft.action.d.ts +7 -0
- package/dist/actions/definition/discard-draft.action.d.ts.map +1 -0
- package/dist/actions/definition/discard-draft.action.js +30 -0
- package/dist/actions/definition/discard-draft.action.js.map +1 -0
- package/dist/actions/definition/draft-session.d.ts +41 -0
- package/dist/actions/definition/draft-session.d.ts.map +1 -0
- package/dist/actions/definition/draft-session.js +117 -0
- package/dist/actions/definition/draft-session.js.map +1 -0
- package/dist/actions/definition/get-entity-schema.action.d.ts +10 -0
- package/dist/actions/definition/get-entity-schema.action.d.ts.map +1 -0
- package/dist/actions/definition/get-entity-schema.action.js +48 -0
- package/dist/actions/definition/get-entity-schema.action.js.map +1 -0
- package/dist/actions/definition/get-entity.action.d.ts +8 -0
- package/dist/actions/definition/get-entity.action.d.ts.map +1 -0
- package/dist/actions/definition/get-entity.action.js +37 -0
- package/dist/actions/definition/get-entity.action.js.map +1 -0
- package/dist/actions/definition/index.d.ts +11 -0
- package/dist/actions/definition/index.d.ts.map +1 -0
- package/dist/actions/definition/index.js +11 -0
- package/dist/actions/definition/index.js.map +1 -0
- package/dist/actions/definition/list-entities.action.d.ts +13 -0
- package/dist/actions/definition/list-entities.action.d.ts.map +1 -0
- package/dist/actions/definition/list-entities.action.js +43 -0
- package/dist/actions/definition/list-entities.action.js.map +1 -0
- package/dist/actions/definition/list-entity-types.action.d.ts +10 -0
- package/dist/actions/definition/list-entity-types.action.d.ts.map +1 -0
- package/dist/actions/definition/list-entity-types.action.js +42 -0
- package/dist/actions/definition/list-entity-types.action.js.map +1 -0
- package/dist/actions/definition/load-entity-service-context.d.ts +14 -0
- package/dist/actions/definition/load-entity-service-context.d.ts.map +1 -0
- package/dist/actions/definition/load-entity-service-context.js +18 -0
- package/dist/actions/definition/load-entity-service-context.js.map +1 -0
- package/dist/actions/definition/show-draft.action.d.ts +18 -0
- package/dist/actions/definition/show-draft.action.d.ts.map +1 -0
- package/dist/actions/definition/show-draft.action.js +117 -0
- package/dist/actions/definition/show-draft.action.js.map +1 -0
- package/dist/actions/definition/stage-create-entity.action.d.ts +19 -0
- package/dist/actions/definition/stage-create-entity.action.d.ts.map +1 -0
- package/dist/actions/definition/stage-create-entity.action.js +60 -0
- package/dist/actions/definition/stage-create-entity.action.js.map +1 -0
- package/dist/actions/definition/stage-delete-entity.action.d.ts +18 -0
- package/dist/actions/definition/stage-delete-entity.action.d.ts.map +1 -0
- package/dist/actions/definition/stage-delete-entity.action.js +55 -0
- package/dist/actions/definition/stage-delete-entity.action.js.map +1 -0
- package/dist/actions/definition/stage-update-entity.action.d.ts +19 -0
- package/dist/actions/definition/stage-update-entity.action.d.ts.map +1 -0
- package/dist/actions/definition/stage-update-entity.action.js +59 -0
- package/dist/actions/definition/stage-update-entity.action.js.map +1 -0
- package/dist/actions/definition/validate-draft.d.ts +17 -0
- package/dist/actions/definition/validate-draft.d.ts.map +1 -0
- package/dist/actions/definition/validate-draft.js +25 -0
- package/dist/actions/definition/validate-draft.js.map +1 -0
- package/dist/actions/index.d.ts +3 -0
- package/dist/actions/index.d.ts.map +1 -1
- package/dist/actions/index.js +3 -0
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/registry.d.ts +169 -92
- package/dist/actions/registry.d.ts.map +1 -1
- package/dist/actions/registry.js +17 -1
- package/dist/actions/registry.js.map +1 -1
- package/dist/actions/snapshot/snapshot-add.action.d.ts +0 -1
- package/dist/actions/snapshot/snapshot-add.action.d.ts.map +1 -1
- package/dist/actions/snapshot/snapshot-add.action.js +3 -7
- package/dist/actions/snapshot/snapshot-add.action.js.map +1 -1
- package/dist/actions/snapshot/snapshot-remove.action.d.ts +0 -1
- package/dist/actions/snapshot/snapshot-remove.action.d.ts.map +1 -1
- package/dist/actions/snapshot/snapshot-remove.action.js +3 -7
- package/dist/actions/snapshot/snapshot-remove.action.js.map +1 -1
- package/dist/actions/snapshot/snapshot-save.action.d.ts +2 -2
- package/dist/actions/snapshot/snapshot-save.action.d.ts.map +1 -1
- package/dist/actions/snapshot/snapshot-save.action.js +23 -11
- package/dist/actions/snapshot/snapshot-save.action.js.map +1 -1
- package/dist/actions/snapshot/snapshot-show.action.d.ts +5 -2
- package/dist/actions/snapshot/snapshot-show.action.d.ts.map +1 -1
- package/dist/actions/snapshot/snapshot-show.action.js +17 -19
- package/dist/actions/snapshot/snapshot-show.action.js.map +1 -1
- package/dist/actions/sync/sync-all-projects.action.d.ts.map +1 -1
- package/dist/actions/sync/sync-all-projects.action.js +3 -2
- package/dist/actions/sync/sync-all-projects.action.js.map +1 -1
- package/dist/actions/sync/sync-file.action.js +1 -1
- package/dist/actions/sync/sync-file.action.js.map +1 -1
- package/dist/actions/sync/sync-project.action.d.ts +1 -1
- package/dist/actions/sync/sync-project.action.d.ts.map +1 -1
- package/dist/actions/sync/sync-project.action.js +20 -6
- package/dist/actions/sync/sync-project.action.js.map +1 -1
- package/dist/actions/test-project/index.d.ts +2 -0
- package/dist/actions/test-project/index.d.ts.map +1 -0
- package/dist/actions/test-project/index.js +2 -0
- package/dist/actions/test-project/index.js.map +1 -0
- package/dist/actions/test-project/test-project-init.action.d.ts +17 -0
- package/dist/actions/test-project/test-project-init.action.d.ts.map +1 -0
- package/dist/actions/test-project/test-project-init.action.js +97 -0
- package/dist/actions/test-project/test-project-init.action.js.map +1 -0
- package/dist/actions/types.d.ts +2 -0
- package/dist/actions/types.d.ts.map +1 -1
- package/dist/actions/types.js.map +1 -1
- package/dist/actions/utils/generation-manifest.d.ts +12 -0
- package/dist/actions/utils/generation-manifest.d.ts.map +1 -0
- package/dist/actions/utils/generation-manifest.js +142 -0
- package/dist/actions/utils/generation-manifest.js.map +1 -0
- package/dist/actions/utils/index.d.ts +1 -1
- package/dist/actions/utils/index.d.ts.map +1 -1
- package/dist/actions/utils/index.js +1 -1
- package/dist/actions/utils/index.js.map +1 -1
- package/dist/actions/utils/project-discovery.d.ts +23 -9
- package/dist/actions/utils/project-discovery.d.ts.map +1 -1
- package/dist/actions/utils/project-discovery.js +57 -31
- package/dist/actions/utils/project-discovery.js.map +1 -1
- package/dist/actions/utils/projects.d.ts.map +1 -1
- package/dist/actions/utils/projects.js +2 -1
- package/dist/actions/utils/projects.js.map +1 -1
- package/dist/compiler/backend/{authorizers.d.ts → authorizer-compiler.d.ts} +22 -2
- package/dist/compiler/backend/authorizer-compiler.d.ts.map +1 -0
- package/dist/compiler/backend/authorizer-compiler.js +165 -0
- package/dist/compiler/backend/authorizer-compiler.js.map +1 -0
- package/dist/compiler/backend/feature.d.ts.map +1 -1
- package/dist/compiler/backend/feature.js +3 -1
- package/dist/compiler/backend/feature.js.map +1 -1
- package/dist/compiler/backend/graphql.d.ts.map +1 -1
- package/dist/compiler/backend/graphql.js +108 -49
- package/dist/compiler/backend/graphql.js.map +1 -1
- package/dist/compiler/backend/models.d.ts.map +1 -1
- package/dist/compiler/backend/models.js +13 -13
- package/dist/compiler/backend/models.js.map +1 -1
- package/dist/compiler/backend/query-filter-compiler.d.ts +40 -0
- package/dist/compiler/backend/query-filter-compiler.d.ts.map +1 -0
- package/dist/compiler/backend/query-filter-compiler.js +168 -0
- package/dist/compiler/backend/query-filter-compiler.js.map +1 -0
- package/dist/compiler/backend/services.d.ts.map +1 -1
- package/dist/compiler/backend/services.js +24 -1
- package/dist/compiler/backend/services.js.map +1 -1
- package/dist/compiler/index.d.ts +1 -0
- package/dist/compiler/index.d.ts.map +1 -1
- package/dist/compiler/index.js.map +1 -1
- package/dist/compiler/root/root-package-compiler.js +6 -6
- package/dist/compiler/root/root-package-compiler.js.map +1 -1
- package/dist/compiler/web/admin/crud/index.js +1 -1
- package/dist/compiler/web/admin/crud/index.js.map +1 -1
- package/dist/compiler/web/admin/index.js +1 -1
- package/dist/compiler/web/admin/index.js.map +1 -1
- package/dist/compiler/web/admin/sections.d.ts.map +1 -1
- package/dist/compiler/web/admin/sections.js +2 -2
- package/dist/compiler/web/admin/sections.js.map +1 -1
- package/dist/compiler/web/web-compiler.d.ts.map +1 -1
- package/dist/compiler/web/web-compiler.js +4 -4
- package/dist/compiler/web/web-compiler.js.map +1 -1
- package/dist/core-modules/admin-crud-column-compiler.js +1 -1
- package/dist/core-modules/admin-crud-column-compiler.js.map +1 -1
- package/dist/core-modules/admin-crud-input-compiler.d.ts.map +1 -1
- package/dist/core-modules/admin-crud-input-compiler.js +13 -3
- package/dist/core-modules/admin-crud-input-compiler.js.map +1 -1
- package/dist/dev-server/api/router.d.ts +8 -7
- package/dist/dev-server/api/router.d.ts.map +1 -1
- package/dist/dev-server/mcp/stdio.d.ts +2 -2
- package/dist/dev-server/mcp/stdio.d.ts.map +1 -1
- package/dist/dev-server/mcp/stdio.js +2 -2
- package/dist/dev-server/mcp/stdio.js.map +1 -1
- package/dist/diff/diff-project.d.ts.map +1 -1
- package/dist/diff/diff-project.js +4 -4
- package/dist/diff/diff-project.js.map +1 -1
- package/dist/diff/snapshot/apply-diff-to-generator-output.d.ts.map +1 -1
- package/dist/diff/snapshot/apply-diff-to-generator-output.js +17 -2
- package/dist/diff/snapshot/apply-diff-to-generator-output.js.map +1 -1
- package/dist/diff/snapshot/create-snapshot-for-project.d.ts +12 -6
- package/dist/diff/snapshot/create-snapshot-for-project.d.ts.map +1 -1
- package/dist/diff/snapshot/create-snapshot-for-project.js +58 -26
- package/dist/diff/snapshot/create-snapshot-for-project.js.map +1 -1
- package/dist/diff/snapshot/index.d.ts +4 -1
- package/dist/diff/snapshot/index.d.ts.map +1 -1
- package/dist/diff/snapshot/index.js +4 -0
- package/dist/diff/snapshot/index.js.map +1 -1
- package/dist/diff/snapshot/save-snapshot.d.ts +11 -3
- package/dist/diff/snapshot/save-snapshot.d.ts.map +1 -1
- package/dist/diff/snapshot/save-snapshot.js +29 -10
- package/dist/diff/snapshot/save-snapshot.js.map +1 -1
- package/dist/diff/snapshot/snapshot-management.d.ts +7 -6
- package/dist/diff/snapshot/snapshot-management.d.ts.map +1 -1
- package/dist/diff/snapshot/snapshot-management.js +18 -22
- package/dist/diff/snapshot/snapshot-management.js.map +1 -1
- package/dist/diff/snapshot/snapshot-manifest.d.ts +1 -1
- package/dist/diff/snapshot/snapshot-manifest.d.ts.map +1 -1
- package/dist/diff/snapshot/snapshot-manifest.js +7 -7
- package/dist/diff/snapshot/snapshot-manifest.js.map +1 -1
- package/dist/diff/snapshot/snapshot-types.d.ts +22 -8
- package/dist/diff/snapshot/snapshot-types.d.ts.map +1 -1
- package/dist/diff/snapshot/snapshot-types.js +6 -2
- package/dist/diff/snapshot/snapshot-types.js.map +1 -1
- package/dist/diff/snapshot/snapshot-utils.d.ts +14 -5
- package/dist/diff/snapshot/snapshot-utils.d.ts.map +1 -1
- package/dist/diff/snapshot/snapshot-utils.js +25 -8
- package/dist/diff/snapshot/snapshot-utils.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/plugins/node-plugin-store.d.ts +1 -1
- package/dist/plugins/node-plugin-store.d.ts.map +1 -1
- package/dist/plugins/node-plugin-store.js +2 -2
- package/dist/plugins/node-plugin-store.js.map +1 -1
- package/dist/project-definition/load-project-definition.d.ts +2 -2
- package/dist/project-definition/load-project-definition.d.ts.map +1 -1
- package/dist/project-definition/load-project-definition.js +3 -3
- package/dist/project-definition/load-project-definition.js.map +1 -1
- package/dist/sync/generate-for-directory.d.ts +3 -2
- package/dist/sync/generate-for-directory.d.ts.map +1 -1
- package/dist/sync/generate-for-directory.js +24 -11
- package/dist/sync/generate-for-directory.js.map +1 -1
- package/dist/sync/sync-project.d.ts +3 -3
- package/dist/sync/sync-project.d.ts.map +1 -1
- package/dist/sync/sync-project.js +9 -3
- package/dist/sync/sync-project.js.map +1 -1
- package/dist/templates/create/create-generator.d.ts.map +1 -1
- package/dist/templates/create/create-generator.js +3 -3
- package/dist/templates/create/create-generator.js.map +1 -1
- package/dist/user-config/user-config-schema.d.ts +12 -0
- package/dist/user-config/user-config-schema.d.ts.map +1 -1
- package/dist/user-config/user-config-schema.js +29 -0
- package/dist/user-config/user-config-schema.js.map +1 -1
- package/package.json +17 -14
- package/dist/actions/utils/is-example-project.d.ts +0 -7
- package/dist/actions/utils/is-example-project.d.ts.map +0 -1
- package/dist/actions/utils/is-example-project.js +0 -22
- package/dist/actions/utils/is-example-project.js.map +0 -1
- package/dist/compiler/backend/authorizers.d.ts.map +0 -1
- package/dist/compiler/backend/authorizers.js +0 -75
- package/dist/compiler/backend/authorizers.js.map +0 -1
- package/dist/project-definition/get-single-app-directory-for-project.d.ts +0 -11
- package/dist/project-definition/get-single-app-directory-for-project.d.ts.map +0 -1
- package/dist/project-definition/get-single-app-directory-for-project.js +0 -19
- package/dist/project-definition/get-single-app-directory-for-project.js.map +0 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const listEntitiesAction: import("#src/actions/types.js").ServiceAction<z.ZodObject<{
|
|
3
|
+
project: z.ZodString;
|
|
4
|
+
entityTypeName: z.ZodString;
|
|
5
|
+
parentEntityId: z.ZodOptional<z.ZodString>;
|
|
6
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
7
|
+
entities: z.ZodArray<z.ZodObject<{
|
|
8
|
+
id: z.ZodString;
|
|
9
|
+
name: z.ZodString;
|
|
10
|
+
type: z.ZodString;
|
|
11
|
+
}, z.core.$strip>>;
|
|
12
|
+
}, z.core.$strip>>;
|
|
13
|
+
//# sourceMappingURL=list-entities.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-entities.action.d.ts","sourceRoot":"","sources":["../../../src/actions/definition/list-entities.action.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA+BxB,eAAO,MAAM,kBAAkB;;;;;;;;;;kBA4B7B,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { listEntities } from '@baseplate-dev/project-builder-lib';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { createServiceAction } from '#src/actions/types.js';
|
|
4
|
+
import { loadEntityServiceContext } from './load-entity-service-context.js';
|
|
5
|
+
const listEntitiesInputSchema = z.object({
|
|
6
|
+
project: z.string().describe('The name or ID of the project.'),
|
|
7
|
+
entityTypeName: z
|
|
8
|
+
.string()
|
|
9
|
+
.describe('The entity type to list (e.g., "feature", "model", "model-scalar-field").'),
|
|
10
|
+
parentEntityId: z
|
|
11
|
+
.string()
|
|
12
|
+
.optional()
|
|
13
|
+
.describe('Required for nested entity types. The ID of the parent entity to scope the listing.'),
|
|
14
|
+
});
|
|
15
|
+
const entityStubSchema = z.object({
|
|
16
|
+
id: z.string().describe('The entity ID.'),
|
|
17
|
+
name: z.string().describe('The entity name.'),
|
|
18
|
+
type: z.string().describe('The entity type name.'),
|
|
19
|
+
});
|
|
20
|
+
const listEntitiesOutputSchema = z.object({
|
|
21
|
+
entities: z.array(entityStubSchema).describe('The list of entities.'),
|
|
22
|
+
});
|
|
23
|
+
export const listEntitiesAction = createServiceAction({
|
|
24
|
+
name: 'list-entities',
|
|
25
|
+
title: 'List Entities',
|
|
26
|
+
description: 'List entities of a given type in the project definition. Use list-entity-types to discover available entity type names.',
|
|
27
|
+
inputSchema: listEntitiesInputSchema,
|
|
28
|
+
outputSchema: listEntitiesOutputSchema,
|
|
29
|
+
writeCliOutput: (output) => {
|
|
30
|
+
for (const entity of output.entities) {
|
|
31
|
+
console.info(` ${entity.name} (${entity.id})`);
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
handler: async (input, context) => {
|
|
35
|
+
const { entityContext } = await loadEntityServiceContext(input.project, context);
|
|
36
|
+
const entities = listEntities({
|
|
37
|
+
entityTypeName: input.entityTypeName,
|
|
38
|
+
parentEntityId: input.parentEntityId,
|
|
39
|
+
}, entityContext);
|
|
40
|
+
return { entities };
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=list-entities.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-entities.action.js","sourceRoot":"","sources":["../../../src/actions/definition/list-entities.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC9D,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,CACP,2EAA2E,CAC5E;IACH,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,qFAAqF,CACtF;CACJ,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;CACnD,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;CACtE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;IACpD,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,eAAe;IACtB,WAAW,EACT,yHAAyH;IAC3H,WAAW,EAAE,uBAAuB;IACpC,YAAY,EAAE,wBAAwB;IACtC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE;QACzB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,wBAAwB,CACtD,KAAK,CAAC,OAAO,EACb,OAAO,CACR,CAAC;QAEF,MAAM,QAAQ,GAAG,YAAY,CAC3B;YACE,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC,EACD,aAAa,CACd,CAAC;QAEF,OAAO,EAAE,QAAQ,EAAE,CAAC;IACtB,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const listEntityTypesAction: import("#src/actions/types.js").ServiceAction<z.ZodObject<{
|
|
3
|
+
project: z.ZodString;
|
|
4
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
5
|
+
entityTypes: z.ZodArray<z.ZodObject<{
|
|
6
|
+
name: z.ZodString;
|
|
7
|
+
parentEntityTypeName: z.ZodNullable<z.ZodString>;
|
|
8
|
+
}, z.core.$strip>>;
|
|
9
|
+
}, z.core.$strip>>;
|
|
10
|
+
//# sourceMappingURL=list-entity-types.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-entity-types.action.d.ts","sourceRoot":"","sources":["../../../src/actions/definition/list-entity-types.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAwBxB,eAAO,MAAM,qBAAqB;;;;;;;kBA8BhC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createServiceAction } from '#src/actions/types.js';
|
|
3
|
+
import { loadEntityServiceContext } from './load-entity-service-context.js';
|
|
4
|
+
const listEntityTypesInputSchema = z.object({
|
|
5
|
+
project: z.string().describe('The name or ID of the project.'),
|
|
6
|
+
});
|
|
7
|
+
const entityTypeInfoSchema = z.object({
|
|
8
|
+
name: z.string().describe('The entity type name.'),
|
|
9
|
+
parentEntityTypeName: z
|
|
10
|
+
.string()
|
|
11
|
+
.nullable()
|
|
12
|
+
.describe('The parent entity type name, or null for top-level entities.'),
|
|
13
|
+
});
|
|
14
|
+
const listEntityTypesOutputSchema = z.object({
|
|
15
|
+
entityTypes: z
|
|
16
|
+
.array(entityTypeInfoSchema)
|
|
17
|
+
.describe('The list of available entity types.'),
|
|
18
|
+
});
|
|
19
|
+
export const listEntityTypesAction = createServiceAction({
|
|
20
|
+
name: 'list-entity-types',
|
|
21
|
+
title: 'List Entity Types',
|
|
22
|
+
description: 'List all available entity types in the project definition schema. Returns type names and parent relationships.',
|
|
23
|
+
inputSchema: listEntityTypesInputSchema,
|
|
24
|
+
outputSchema: listEntityTypesOutputSchema,
|
|
25
|
+
writeCliOutput: (output) => {
|
|
26
|
+
for (const entityType of output.entityTypes) {
|
|
27
|
+
const parent = entityType.parentEntityTypeName
|
|
28
|
+
? ` (parent: ${entityType.parentEntityTypeName})`
|
|
29
|
+
: '';
|
|
30
|
+
console.info(` ${entityType.name}${parent}`);
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
handler: async (input, context) => {
|
|
34
|
+
const { entityContext } = await loadEntityServiceContext(input.project, context);
|
|
35
|
+
const entityTypes = [...entityContext.entityTypeMap.entries()].map(([name, metadata]) => ({
|
|
36
|
+
name,
|
|
37
|
+
parentEntityTypeName: metadata.parentEntityTypeName ?? null,
|
|
38
|
+
}));
|
|
39
|
+
return { entityTypes };
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=list-entity-types.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-entity-types.action.js","sourceRoot":"","sources":["../../../src/actions/definition/list-entity-types.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;CAC/D,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAClD,oBAAoB,EAAE,CAAC;SACpB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,8DAA8D,CAAC;CAC5E,CAAC,CAAC;AAEH,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,WAAW,EAAE,CAAC;SACX,KAAK,CAAC,oBAAoB,CAAC;SAC3B,QAAQ,CAAC,qCAAqC,CAAC;CACnD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;IACvD,IAAI,EAAE,mBAAmB;IACzB,KAAK,EAAE,mBAAmB;IAC1B,WAAW,EACT,gHAAgH;IAClH,WAAW,EAAE,0BAA0B;IACvC,YAAY,EAAE,2BAA2B;IACzC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE;QACzB,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,oBAAoB;gBAC5C,CAAC,CAAC,aAAa,UAAU,CAAC,oBAAoB,GAAG;gBACjD,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,wBAAwB,CACtD,KAAK,CAAC,OAAO,EACb,OAAO,CACR,CAAC;QAEF,MAAM,WAAW,GAAG,CAAC,GAAG,aAAa,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAChE,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;YACrB,IAAI;YACJ,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB,IAAI,IAAI;SAC5D,CAAC,CACH,CAAC;QAEF,OAAO,EAAE,WAAW,EAAE,CAAC;IACzB,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { EntityServiceContext } from '@baseplate-dev/project-builder-lib';
|
|
2
|
+
import { ProjectDefinitionContainer } from '@baseplate-dev/project-builder-lib';
|
|
3
|
+
import type { ServiceActionContext } from '#src/actions/types.js';
|
|
4
|
+
export interface EntityServiceContextResult {
|
|
5
|
+
entityContext: EntityServiceContext;
|
|
6
|
+
container: ProjectDefinitionContainer;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Loads a project definition and builds an EntityServiceContext for entity operations.
|
|
10
|
+
*
|
|
11
|
+
* Shared helper used by all definition read actions.
|
|
12
|
+
*/
|
|
13
|
+
export declare function loadEntityServiceContext(projectNameOrId: string, context: ServiceActionContext): Promise<EntityServiceContextResult>;
|
|
14
|
+
//# sourceMappingURL=load-entity-service-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-entity-service-context.d.ts","sourceRoot":"","sources":["../../../src/actions/definition/load-entity-service-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAEhF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAOlE,MAAM,WAAW,0BAA0B;IACzC,aAAa,EAAE,oBAAoB,CAAC;IACpC,SAAS,EAAE,0BAA0B,CAAC;CACvC;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,0BAA0B,CAAC,CAuBrC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ProjectDefinitionContainer } from '@baseplate-dev/project-builder-lib';
|
|
2
|
+
import { createNodeSchemaParserContext } from '#src/plugins/node-plugin-store.js';
|
|
3
|
+
import { loadProjectDefinition } from '#src/project-definition/load-project-definition.js';
|
|
4
|
+
import { getProjectByNameOrId } from '../utils/projects.js';
|
|
5
|
+
/**
|
|
6
|
+
* Loads a project definition and builds an EntityServiceContext for entity operations.
|
|
7
|
+
*
|
|
8
|
+
* Shared helper used by all definition read actions.
|
|
9
|
+
*/
|
|
10
|
+
export async function loadEntityServiceContext(projectNameOrId, context) {
|
|
11
|
+
const project = getProjectByNameOrId(context.projects, projectNameOrId);
|
|
12
|
+
const parserContext = await createNodeSchemaParserContext(project, context.logger, context.plugins, context.cliVersion);
|
|
13
|
+
const { definition } = await loadProjectDefinition(project.baseplateDirectory, parserContext);
|
|
14
|
+
const container = ProjectDefinitionContainer.fromSerializedConfig(definition, parserContext);
|
|
15
|
+
const entityContext = container.toEntityServiceContext();
|
|
16
|
+
return { entityContext, container };
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=load-entity-service-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-entity-service-context.js","sourceRoot":"","sources":["../../../src/actions/definition/load-entity-service-context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAIhF,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAE3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAO5D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,eAAuB,EACvB,OAA6B;IAE7B,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAExE,MAAM,aAAa,GAAG,MAAM,6BAA6B,CACvD,OAAO,EACP,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,UAAU,CACnB,CAAC;IAEF,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,qBAAqB,CAChD,OAAO,CAAC,kBAAkB,EAC1B,aAAa,CACd,CAAC;IAEF,MAAM,SAAS,GAAG,0BAA0B,CAAC,oBAAoB,CAC/D,UAAU,EACV,aAAa,CACd,CAAC;IAEF,MAAM,aAAa,GAAG,SAAS,CAAC,sBAAsB,EAAE,CAAC;IAEzD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const showDraftAction: import("#src/actions/types.js").ServiceAction<z.ZodObject<{
|
|
3
|
+
project: z.ZodString;
|
|
4
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
5
|
+
hasDraft: z.ZodBoolean;
|
|
6
|
+
sessionId: z.ZodNullable<z.ZodString>;
|
|
7
|
+
definitionHash: z.ZodNullable<z.ZodString>;
|
|
8
|
+
changes: z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
9
|
+
label: z.ZodString;
|
|
10
|
+
type: z.ZodEnum<{
|
|
11
|
+
added: "added";
|
|
12
|
+
updated: "updated";
|
|
13
|
+
removed: "removed";
|
|
14
|
+
}>;
|
|
15
|
+
details: z.ZodNullable<z.ZodString>;
|
|
16
|
+
}, z.core.$strip>>>;
|
|
17
|
+
}, z.core.$strip>>;
|
|
18
|
+
//# sourceMappingURL=show-draft.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show-draft.action.d.ts","sourceRoot":"","sources":["../../../src/actions/definition/show-draft.action.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAwExB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;kBAuE1B,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { diffSerializedDefinitions } from '@baseplate-dev/project-builder-lib';
|
|
2
|
+
import { stringifyPrettyStable } from '@baseplate-dev/utils';
|
|
3
|
+
import jsonPatch from 'fast-json-patch';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { createServiceAction } from '#src/actions/types.js';
|
|
6
|
+
import { getProjectByNameOrId } from '../utils/projects.js';
|
|
7
|
+
import { loadDraftSession } from './draft-session.js';
|
|
8
|
+
import { loadEntityServiceContext } from './load-entity-service-context.js';
|
|
9
|
+
const showDraftInputSchema = z.object({
|
|
10
|
+
project: z.string().describe('The name or ID of the project.'),
|
|
11
|
+
});
|
|
12
|
+
const MAX_DETAILS_LENGTH = 2000;
|
|
13
|
+
const draftChangeSchema = z.object({
|
|
14
|
+
label: z
|
|
15
|
+
.string()
|
|
16
|
+
.describe('Human-readable label (e.g., "Feature: payments").'),
|
|
17
|
+
type: z.enum(['added', 'updated', 'removed']).describe('The type of change.'),
|
|
18
|
+
details: z
|
|
19
|
+
.string()
|
|
20
|
+
.nullable()
|
|
21
|
+
.describe('For added: the entity JSON. For updated: a JSON Patch (RFC 6902) array. Null for removed.'),
|
|
22
|
+
});
|
|
23
|
+
const showDraftOutputSchema = z.object({
|
|
24
|
+
hasDraft: z.boolean().describe('Whether a draft session exists.'),
|
|
25
|
+
sessionId: z
|
|
26
|
+
.string()
|
|
27
|
+
.nullable()
|
|
28
|
+
.describe('The session ID of the draft, or null if no draft.'),
|
|
29
|
+
definitionHash: z
|
|
30
|
+
.string()
|
|
31
|
+
.nullable()
|
|
32
|
+
.describe('The hash of the project definition when the draft was created, or null if no draft.'),
|
|
33
|
+
changes: z
|
|
34
|
+
.array(draftChangeSchema)
|
|
35
|
+
.nullable()
|
|
36
|
+
.describe('Entity-level changes in the draft, or null if no draft.'),
|
|
37
|
+
});
|
|
38
|
+
function truncateDetails(text) {
|
|
39
|
+
if (text.length <= MAX_DETAILS_LENGTH) {
|
|
40
|
+
return text;
|
|
41
|
+
}
|
|
42
|
+
return `${text.slice(0, MAX_DETAILS_LENGTH)}\n... (truncated)`;
|
|
43
|
+
}
|
|
44
|
+
function formatChangeDetails(entry) {
|
|
45
|
+
switch (entry.type) {
|
|
46
|
+
case 'added': {
|
|
47
|
+
const json = stringifyPrettyStable(entry.merged);
|
|
48
|
+
return truncateDetails(json);
|
|
49
|
+
}
|
|
50
|
+
case 'updated': {
|
|
51
|
+
const operations = jsonPatch.compare(entry.current, entry.merged);
|
|
52
|
+
const json = stringifyPrettyStable(operations);
|
|
53
|
+
return truncateDetails(json);
|
|
54
|
+
}
|
|
55
|
+
case 'removed': {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export const showDraftAction = createServiceAction({
|
|
61
|
+
name: 'show-draft',
|
|
62
|
+
title: 'Show Draft',
|
|
63
|
+
description: 'Show the current draft session status and staged changes for a project.',
|
|
64
|
+
inputSchema: showDraftInputSchema,
|
|
65
|
+
outputSchema: showDraftOutputSchema,
|
|
66
|
+
handler: async (input, context) => {
|
|
67
|
+
const project = getProjectByNameOrId(context.projects, input.project);
|
|
68
|
+
const session = await loadDraftSession(project.directory);
|
|
69
|
+
if (!session) {
|
|
70
|
+
return {
|
|
71
|
+
hasDraft: false,
|
|
72
|
+
sessionId: null,
|
|
73
|
+
definitionHash: null,
|
|
74
|
+
changes: null,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
// Load the current definition to diff against
|
|
78
|
+
const { container } = await loadEntityServiceContext(input.project, context);
|
|
79
|
+
const currentEntityContext = container.toEntityServiceContext();
|
|
80
|
+
const diff = diffSerializedDefinitions(container.schema, currentEntityContext.serializedDefinition, session.draftDefinition);
|
|
81
|
+
return {
|
|
82
|
+
hasDraft: true,
|
|
83
|
+
sessionId: session.sessionId,
|
|
84
|
+
definitionHash: session.definitionHash,
|
|
85
|
+
changes: diff.entries.map((entry) => ({
|
|
86
|
+
label: entry.label,
|
|
87
|
+
type: entry.type,
|
|
88
|
+
details: formatChangeDetails(entry),
|
|
89
|
+
})),
|
|
90
|
+
};
|
|
91
|
+
},
|
|
92
|
+
writeCliOutput: (output) => {
|
|
93
|
+
if (!output.hasDraft) {
|
|
94
|
+
console.info('No draft session.');
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
console.info(`Draft session: ${output.sessionId}`);
|
|
98
|
+
console.info(`Definition hash: ${output.definitionHash}`);
|
|
99
|
+
if (!output.changes || output.changes.length === 0) {
|
|
100
|
+
console.info('No changes.');
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
console.info('Changes:');
|
|
104
|
+
for (const change of output.changes) {
|
|
105
|
+
const prefix = change.type === 'added' ? '+' : change.type === 'removed' ? '-' : '~';
|
|
106
|
+
console.info(` ${prefix} ${change.label} (${change.type})`);
|
|
107
|
+
if (change.details) {
|
|
108
|
+
const indented = change.details
|
|
109
|
+
.split('\n')
|
|
110
|
+
.map((line) => ` ${line}`)
|
|
111
|
+
.join('\n');
|
|
112
|
+
console.info(indented);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
//# sourceMappingURL=show-draft.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show-draft.action.js","sourceRoot":"","sources":["../../../src/actions/definition/show-draft.action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const stageCreateEntityAction: import("#src/actions/types.js").ServiceAction<z.ZodObject<{
|
|
3
|
+
project: z.ZodString;
|
|
4
|
+
entityTypeName: z.ZodString;
|
|
5
|
+
entityData: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
6
|
+
parentEntityId: z.ZodOptional<z.ZodString>;
|
|
7
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
8
|
+
message: z.ZodString;
|
|
9
|
+
issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
10
|
+
message: z.ZodString;
|
|
11
|
+
entityId: z.ZodOptional<z.ZodString>;
|
|
12
|
+
path: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
13
|
+
severity: z.ZodEnum<{
|
|
14
|
+
error: "error";
|
|
15
|
+
warning: "warning";
|
|
16
|
+
}>;
|
|
17
|
+
}, z.core.$strip>>>;
|
|
18
|
+
}, z.core.$strip>>;
|
|
19
|
+
//# sourceMappingURL=stage-create-entity.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stage-create-entity.action.d.ts","sourceRoot":"","sources":["../../../src/actions/definition/stage-create-entity.action.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkCxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;kBA+ClC,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { createEntity } from '@baseplate-dev/project-builder-lib';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { createServiceAction } from '#src/actions/types.js';
|
|
4
|
+
import { getOrCreateDraftSession, saveDraftSession } from './draft-session.js';
|
|
5
|
+
import { definitionIssueSchema, validateDraftDefinition, } from './validate-draft.js';
|
|
6
|
+
const stageCreateEntityInputSchema = z.object({
|
|
7
|
+
project: z.string().describe('The name or ID of the project.'),
|
|
8
|
+
entityTypeName: z
|
|
9
|
+
.string()
|
|
10
|
+
.describe('The entity type to create (e.g., "feature", "model").'),
|
|
11
|
+
entityData: z
|
|
12
|
+
.record(z.string(), z.unknown())
|
|
13
|
+
.describe('The entity data to create.'),
|
|
14
|
+
parentEntityId: z
|
|
15
|
+
.string()
|
|
16
|
+
.optional()
|
|
17
|
+
.describe('Required for nested entity types. The ID of the parent entity to add to.'),
|
|
18
|
+
});
|
|
19
|
+
const stageCreateEntityOutputSchema = z.object({
|
|
20
|
+
message: z.string().describe('A summary of the staged change.'),
|
|
21
|
+
issues: z
|
|
22
|
+
.array(definitionIssueSchema)
|
|
23
|
+
.optional()
|
|
24
|
+
.describe('Definition issues found after staging.'),
|
|
25
|
+
});
|
|
26
|
+
export const stageCreateEntityAction = createServiceAction({
|
|
27
|
+
name: 'stage-create-entity',
|
|
28
|
+
title: 'Stage Create Entity',
|
|
29
|
+
description: 'Stage a new entity creation in the draft session. Changes are not persisted until commit-draft is called.',
|
|
30
|
+
inputSchema: stageCreateEntityInputSchema,
|
|
31
|
+
outputSchema: stageCreateEntityOutputSchema,
|
|
32
|
+
handler: async (input, context) => {
|
|
33
|
+
const { session, entityContext, parserContext, projectDirectory } = await getOrCreateDraftSession(input.project, context);
|
|
34
|
+
const newDefinition = createEntity({
|
|
35
|
+
entityTypeName: input.entityTypeName,
|
|
36
|
+
entityData: input.entityData,
|
|
37
|
+
parentEntityId: input.parentEntityId,
|
|
38
|
+
}, entityContext);
|
|
39
|
+
session.draftDefinition = newDefinition;
|
|
40
|
+
const { errors, warnings } = validateDraftDefinition(newDefinition, parserContext);
|
|
41
|
+
if (errors.length > 0) {
|
|
42
|
+
const messages = errors.map((e) => e.message).join('; ');
|
|
43
|
+
throw new Error(`Staging blocked by definition errors: ${messages}`);
|
|
44
|
+
}
|
|
45
|
+
await saveDraftSession(projectDirectory, session);
|
|
46
|
+
return {
|
|
47
|
+
message: `Staged creation of ${input.entityTypeName} entity. Use commit-draft to persist.`,
|
|
48
|
+
issues: warnings.length > 0 ? warnings : undefined,
|
|
49
|
+
};
|
|
50
|
+
},
|
|
51
|
+
writeCliOutput: (output) => {
|
|
52
|
+
console.info(`✓ ${output.message}`);
|
|
53
|
+
if (output.issues) {
|
|
54
|
+
for (const issue of output.issues) {
|
|
55
|
+
console.warn(` ⚠ ${issue.message}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
//# sourceMappingURL=stage-create-entity.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stage-create-entity.action.js","sourceRoot":"","sources":["../../../src/actions/definition/stage-create-entity.action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const stageDeleteEntityAction: import("#src/actions/types.js").ServiceAction<z.ZodObject<{
|
|
3
|
+
project: z.ZodString;
|
|
4
|
+
entityTypeName: z.ZodString;
|
|
5
|
+
entityId: z.ZodString;
|
|
6
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
7
|
+
message: z.ZodString;
|
|
8
|
+
issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
9
|
+
message: z.ZodString;
|
|
10
|
+
entityId: z.ZodOptional<z.ZodString>;
|
|
11
|
+
path: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
12
|
+
severity: z.ZodEnum<{
|
|
13
|
+
error: "error";
|
|
14
|
+
warning: "warning";
|
|
15
|
+
}>;
|
|
16
|
+
}, z.core.$strip>>>;
|
|
17
|
+
}, z.core.$strip>>;
|
|
18
|
+
//# sourceMappingURL=stage-delete-entity.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stage-delete-entity.action.d.ts","sourceRoot":"","sources":["../../../src/actions/definition/stage-delete-entity.action.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA4BxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;kBA8ClC,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { deleteEntity } from '@baseplate-dev/project-builder-lib';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { createServiceAction } from '#src/actions/types.js';
|
|
4
|
+
import { getOrCreateDraftSession, saveDraftSession } from './draft-session.js';
|
|
5
|
+
import { definitionIssueSchema, validateDraftDefinition, } from './validate-draft.js';
|
|
6
|
+
const stageDeleteEntityInputSchema = z.object({
|
|
7
|
+
project: z.string().describe('The name or ID of the project.'),
|
|
8
|
+
entityTypeName: z
|
|
9
|
+
.string()
|
|
10
|
+
.describe('The entity type being deleted (e.g., "feature", "model").'),
|
|
11
|
+
entityId: z
|
|
12
|
+
.string()
|
|
13
|
+
.describe('The ID of the entity to delete (e.g., "model:abc123").'),
|
|
14
|
+
});
|
|
15
|
+
const stageDeleteEntityOutputSchema = z.object({
|
|
16
|
+
message: z.string().describe('A summary of the staged change.'),
|
|
17
|
+
issues: z
|
|
18
|
+
.array(definitionIssueSchema)
|
|
19
|
+
.optional()
|
|
20
|
+
.describe('Definition issues found after staging.'),
|
|
21
|
+
});
|
|
22
|
+
export const stageDeleteEntityAction = createServiceAction({
|
|
23
|
+
name: 'stage-delete-entity',
|
|
24
|
+
title: 'Stage Delete Entity',
|
|
25
|
+
description: 'Stage an entity deletion in the draft session. Changes are not persisted until commit-draft is called.',
|
|
26
|
+
inputSchema: stageDeleteEntityInputSchema,
|
|
27
|
+
outputSchema: stageDeleteEntityOutputSchema,
|
|
28
|
+
handler: async (input, context) => {
|
|
29
|
+
const { session, entityContext, parserContext, projectDirectory } = await getOrCreateDraftSession(input.project, context);
|
|
30
|
+
const newDefinition = deleteEntity({
|
|
31
|
+
entityTypeName: input.entityTypeName,
|
|
32
|
+
entityId: input.entityId,
|
|
33
|
+
}, entityContext);
|
|
34
|
+
session.draftDefinition = newDefinition;
|
|
35
|
+
const { errors, warnings } = validateDraftDefinition(newDefinition, parserContext);
|
|
36
|
+
if (errors.length > 0) {
|
|
37
|
+
const messages = errors.map((e) => e.message).join('; ');
|
|
38
|
+
throw new Error(`Staging blocked by definition errors: ${messages}`);
|
|
39
|
+
}
|
|
40
|
+
await saveDraftSession(projectDirectory, session);
|
|
41
|
+
return {
|
|
42
|
+
message: `Staged deletion of ${input.entityTypeName} entity "${input.entityId}". Use commit-draft to persist.`,
|
|
43
|
+
issues: warnings.length > 0 ? warnings : undefined,
|
|
44
|
+
};
|
|
45
|
+
},
|
|
46
|
+
writeCliOutput: (output) => {
|
|
47
|
+
console.info(`✓ ${output.message}`);
|
|
48
|
+
if (output.issues) {
|
|
49
|
+
for (const issue of output.issues) {
|
|
50
|
+
console.warn(` ⚠ ${issue.message}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=stage-delete-entity.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stage-delete-entity.action.js","sourceRoot":"","sources":["../../../src/actions/definition/stage-delete-entity.action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const stageUpdateEntityAction: import("#src/actions/types.js").ServiceAction<z.ZodObject<{
|
|
3
|
+
project: z.ZodString;
|
|
4
|
+
entityTypeName: z.ZodString;
|
|
5
|
+
entityId: z.ZodString;
|
|
6
|
+
entityData: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
7
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
8
|
+
message: z.ZodString;
|
|
9
|
+
issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
10
|
+
message: z.ZodString;
|
|
11
|
+
entityId: z.ZodOptional<z.ZodString>;
|
|
12
|
+
path: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
13
|
+
severity: z.ZodEnum<{
|
|
14
|
+
error: "error";
|
|
15
|
+
warning: "warning";
|
|
16
|
+
}>;
|
|
17
|
+
}, z.core.$strip>>>;
|
|
18
|
+
}, z.core.$strip>>;
|
|
19
|
+
//# sourceMappingURL=stage-update-entity.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stage-update-entity.action.d.ts","sourceRoot":"","sources":["../../../src/actions/definition/stage-update-entity.action.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA+BxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;kBA+ClC,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { updateEntity } from '@baseplate-dev/project-builder-lib';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { createServiceAction } from '#src/actions/types.js';
|
|
4
|
+
import { getOrCreateDraftSession, saveDraftSession } from './draft-session.js';
|
|
5
|
+
import { definitionIssueSchema, validateDraftDefinition, } from './validate-draft.js';
|
|
6
|
+
const stageUpdateEntityInputSchema = z.object({
|
|
7
|
+
project: z.string().describe('The name or ID of the project.'),
|
|
8
|
+
entityTypeName: z
|
|
9
|
+
.string()
|
|
10
|
+
.describe('The entity type being updated (e.g., "feature", "model").'),
|
|
11
|
+
entityId: z
|
|
12
|
+
.string()
|
|
13
|
+
.describe('The ID of the entity to update (e.g., "model:abc123").'),
|
|
14
|
+
entityData: z
|
|
15
|
+
.record(z.string(), z.unknown())
|
|
16
|
+
.describe('The full updated entity data.'),
|
|
17
|
+
});
|
|
18
|
+
const stageUpdateEntityOutputSchema = z.object({
|
|
19
|
+
message: z.string().describe('A summary of the staged change.'),
|
|
20
|
+
issues: z
|
|
21
|
+
.array(definitionIssueSchema)
|
|
22
|
+
.optional()
|
|
23
|
+
.describe('Definition issues found after staging.'),
|
|
24
|
+
});
|
|
25
|
+
export const stageUpdateEntityAction = createServiceAction({
|
|
26
|
+
name: 'stage-update-entity',
|
|
27
|
+
title: 'Stage Update Entity',
|
|
28
|
+
description: 'Stage an entity update in the draft session. Changes are not persisted until commit-draft is called.',
|
|
29
|
+
inputSchema: stageUpdateEntityInputSchema,
|
|
30
|
+
outputSchema: stageUpdateEntityOutputSchema,
|
|
31
|
+
handler: async (input, context) => {
|
|
32
|
+
const { session, entityContext, parserContext, projectDirectory } = await getOrCreateDraftSession(input.project, context);
|
|
33
|
+
const newDefinition = updateEntity({
|
|
34
|
+
entityTypeName: input.entityTypeName,
|
|
35
|
+
entityId: input.entityId,
|
|
36
|
+
entityData: input.entityData,
|
|
37
|
+
}, entityContext);
|
|
38
|
+
session.draftDefinition = newDefinition;
|
|
39
|
+
const { errors, warnings } = validateDraftDefinition(newDefinition, parserContext);
|
|
40
|
+
if (errors.length > 0) {
|
|
41
|
+
const messages = errors.map((e) => e.message).join('; ');
|
|
42
|
+
throw new Error(`Staging blocked by definition errors: ${messages}`);
|
|
43
|
+
}
|
|
44
|
+
await saveDraftSession(projectDirectory, session);
|
|
45
|
+
return {
|
|
46
|
+
message: `Staged update of ${input.entityTypeName} entity "${input.entityId}". Use commit-draft to persist.`,
|
|
47
|
+
issues: warnings.length > 0 ? warnings : undefined,
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
writeCliOutput: (output) => {
|
|
51
|
+
console.info(`✓ ${output.message}`);
|
|
52
|
+
if (output.issues) {
|
|
53
|
+
for (const issue of output.issues) {
|
|
54
|
+
console.warn(` ⚠ ${issue.message}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=stage-update-entity.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stage-update-entity.action.js","sourceRoot":"","sources":["../../../src/actions/definition/stage-update-entity.action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { PartitionedIssues, SchemaParserContext } from '@baseplate-dev/project-builder-lib';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
export declare const definitionIssueSchema: z.ZodObject<{
|
|
4
|
+
message: z.ZodString;
|
|
5
|
+
entityId: z.ZodOptional<z.ZodString>;
|
|
6
|
+
path: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
7
|
+
severity: z.ZodEnum<{
|
|
8
|
+
error: "error";
|
|
9
|
+
warning: "warning";
|
|
10
|
+
}>;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
/**
|
|
13
|
+
* Validates a draft definition by collecting all definition issues
|
|
14
|
+
* (both field-level and definition-level) and partitioning them by severity.
|
|
15
|
+
*/
|
|
16
|
+
export declare function validateDraftDefinition(draftDefinition: Record<string, unknown>, parserContext: SchemaParserContext): PartitionedIssues;
|
|
17
|
+
//# sourceMappingURL=validate-draft.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-draft.d.ts","sourceRoot":"","sources":["../../../src/actions/definition/validate-draft.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,oCAAoC,CAAC;AAO5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB;;;;;;;;iBAgBhC,CAAC;AAEH;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxC,aAAa,EAAE,mBAAmB,GACjC,iBAAiB,CASnB"}
|