@baseplate-dev/project-builder-server 0.6.2 → 0.6.3

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 (94) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/LICENSE +114 -123
  3. package/dist/actions/__tests__/action-test-utils.d.ts +7 -1
  4. package/dist/actions/__tests__/action-test-utils.d.ts.map +1 -1
  5. package/dist/actions/__tests__/action-test-utils.js +9 -0
  6. package/dist/actions/__tests__/action-test-utils.js.map +1 -1
  7. package/dist/actions/definition/apply-fix.action.d.ts +19 -0
  8. package/dist/actions/definition/apply-fix.action.d.ts.map +1 -0
  9. package/dist/actions/definition/apply-fix.action.js +53 -0
  10. package/dist/actions/definition/apply-fix.action.js.map +1 -0
  11. package/dist/actions/definition/commit-draft.action.d.ts +2 -0
  12. package/dist/actions/definition/commit-draft.action.d.ts.map +1 -1
  13. package/dist/actions/definition/commit-draft.action.js +12 -11
  14. package/dist/actions/definition/commit-draft.action.js.map +1 -1
  15. package/dist/actions/definition/configure-plugin.action.d.ts +20 -0
  16. package/dist/actions/definition/configure-plugin.action.d.ts.map +1 -0
  17. package/dist/actions/definition/configure-plugin.action.js +57 -0
  18. package/dist/actions/definition/configure-plugin.action.js.map +1 -0
  19. package/dist/actions/definition/disable-plugin.action.d.ts +19 -0
  20. package/dist/actions/definition/disable-plugin.action.d.ts.map +1 -0
  21. package/dist/actions/definition/disable-plugin.action.js +46 -0
  22. package/dist/actions/definition/disable-plugin.action.js.map +1 -0
  23. package/dist/actions/definition/entity-type-blacklist.d.ts +14 -0
  24. package/dist/actions/definition/entity-type-blacklist.d.ts.map +1 -0
  25. package/dist/actions/definition/entity-type-blacklist.js +19 -0
  26. package/dist/actions/definition/entity-type-blacklist.js.map +1 -0
  27. package/dist/actions/definition/index.d.ts +5 -0
  28. package/dist/actions/definition/index.d.ts.map +1 -1
  29. package/dist/actions/definition/index.js +5 -0
  30. package/dist/actions/definition/index.js.map +1 -1
  31. package/dist/actions/definition/list-entity-types.action.d.ts.map +1 -1
  32. package/dist/actions/definition/list-entity-types.action.js +4 -1
  33. package/dist/actions/definition/list-entity-types.action.js.map +1 -1
  34. package/dist/actions/definition/list-plugins.action.d.ts +16 -0
  35. package/dist/actions/definition/list-plugins.action.d.ts.map +1 -0
  36. package/dist/actions/definition/list-plugins.action.js +56 -0
  37. package/dist/actions/definition/list-plugins.action.js.map +1 -0
  38. package/dist/actions/definition/search-entities.action.d.ts +13 -0
  39. package/dist/actions/definition/search-entities.action.d.ts.map +1 -0
  40. package/dist/actions/definition/search-entities.action.js +55 -0
  41. package/dist/actions/definition/search-entities.action.js.map +1 -0
  42. package/dist/actions/definition/stage-create-entity.action.d.ts +2 -0
  43. package/dist/actions/definition/stage-create-entity.action.d.ts.map +1 -1
  44. package/dist/actions/definition/stage-create-entity.action.js +7 -18
  45. package/dist/actions/definition/stage-create-entity.action.js.map +1 -1
  46. package/dist/actions/definition/stage-delete-entity.action.d.ts +2 -0
  47. package/dist/actions/definition/stage-delete-entity.action.d.ts.map +1 -1
  48. package/dist/actions/definition/stage-delete-entity.action.js +7 -18
  49. package/dist/actions/definition/stage-delete-entity.action.js.map +1 -1
  50. package/dist/actions/definition/stage-update-entity.action.d.ts +2 -0
  51. package/dist/actions/definition/stage-update-entity.action.d.ts.map +1 -1
  52. package/dist/actions/definition/stage-update-entity.action.js +7 -18
  53. package/dist/actions/definition/stage-update-entity.action.js.map +1 -1
  54. package/dist/actions/definition/validate-draft.d.ts +56 -4
  55. package/dist/actions/definition/validate-draft.d.ts.map +1 -1
  56. package/dist/actions/definition/validate-draft.js +107 -6
  57. package/dist/actions/definition/validate-draft.js.map +1 -1
  58. package/dist/actions/registry.d.ts +46 -0
  59. package/dist/actions/registry.d.ts.map +1 -1
  60. package/dist/actions/registry.js +6 -1
  61. package/dist/actions/registry.js.map +1 -1
  62. package/dist/compiler/backend/authorizer-compiler.d.ts.map +1 -1
  63. package/dist/compiler/backend/authorizer-compiler.js +12 -4
  64. package/dist/compiler/backend/authorizer-compiler.js.map +1 -1
  65. package/dist/compiler/backend/backend-compiler.d.ts.map +1 -1
  66. package/dist/compiler/backend/backend-compiler.js +1 -0
  67. package/dist/compiler/backend/backend-compiler.js.map +1 -1
  68. package/dist/compiler/backend/fastify.d.ts.map +1 -1
  69. package/dist/compiler/backend/fastify.js +1 -4
  70. package/dist/compiler/backend/fastify.js.map +1 -1
  71. package/dist/compiler/backend/models.d.ts.map +1 -1
  72. package/dist/compiler/backend/models.js +6 -1
  73. package/dist/compiler/backend/models.js.map +1 -1
  74. package/dist/compiler/backend/query-filter-compiler.d.ts.map +1 -1
  75. package/dist/compiler/backend/query-filter-compiler.js +67 -11
  76. package/dist/compiler/backend/query-filter-compiler.js.map +1 -1
  77. package/dist/compiler/library/node-library-package-compiler.d.ts.map +1 -1
  78. package/dist/compiler/library/node-library-package-compiler.js +1 -0
  79. package/dist/compiler/library/node-library-package-compiler.js.map +1 -1
  80. package/dist/compiler/root/root-package-compiler.d.ts.map +1 -1
  81. package/dist/compiler/root/root-package-compiler.js +7 -2
  82. package/dist/compiler/root/root-package-compiler.js.map +1 -1
  83. package/dist/compiler/web/web-compiler.d.ts.map +1 -1
  84. package/dist/compiler/web/web-compiler.js +5 -6
  85. package/dist/compiler/web/web-compiler.js.map +1 -1
  86. package/dist/dev-server/mcp/fastify.js +1 -1
  87. package/dist/dev-server/mcp/fastify.js.map +1 -1
  88. package/dist/sync/sync-metadata-service.d.ts.map +1 -1
  89. package/dist/sync/sync-metadata-service.js +6 -3
  90. package/dist/sync/sync-metadata-service.js.map +1 -1
  91. package/dist/templates/utils/resolve-generator.d.ts.map +1 -1
  92. package/dist/templates/utils/resolve-generator.js +2 -5
  93. package/dist/templates/utils/resolve-generator.js.map +1 -1
  94. package/package.json +12 -11
@@ -0,0 +1,20 @@
1
+ import { z } from 'zod';
2
+ export declare const configurePluginAction: import("#src/actions/types.js").ServiceAction<z.ZodObject<{
3
+ project: z.ZodString;
4
+ pluginKey: z.ZodString;
5
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
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
+ fixLabel: z.ZodOptional<z.ZodString>;
17
+ fixId: z.ZodOptional<z.ZodString>;
18
+ }, z.core.$strip>>>;
19
+ }, z.core.$strip>>;
20
+ //# sourceMappingURL=configure-plugin.action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure-plugin.action.d.ts","sourceRoot":"","sources":["../../../src/actions/definition/configure-plugin.action.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA2CxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;kBAqDhC,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { PluginUtils, ProjectDefinitionContainer, serializeSchema, } from '@baseplate-dev/project-builder-lib';
2
+ import { produce } from 'immer';
3
+ import { z } from 'zod';
4
+ import { createServiceAction } from '#src/actions/types.js';
5
+ import { getOrCreateDraftSession } from './draft-session.js';
6
+ import { definitionIssueSchema, mapIssueToOutput, validateAndSaveDraft, writeIssuesCliOutput, } from './validate-draft.js';
7
+ const configurePluginInputSchema = z.object({
8
+ project: z.string().describe('The name or ID of the project.'),
9
+ pluginKey: z.string().describe('The plugin key to enable or configure.'),
10
+ config: z
11
+ .record(z.string(), z.unknown())
12
+ .optional()
13
+ .describe('Optional plugin configuration. Defaults to empty config.'),
14
+ });
15
+ const configurePluginOutputSchema = 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
+ function findPluginByKey(plugins, pluginKey) {
23
+ const plugin = plugins.find((p) => p.key === pluginKey);
24
+ if (!plugin) {
25
+ const available = plugins.map((p) => p.key).join(', ');
26
+ throw new Error(`Plugin "${pluginKey}" not found. Available plugins: ${available}`);
27
+ }
28
+ return plugin;
29
+ }
30
+ export const configurePluginAction = createServiceAction({
31
+ name: 'configure-plugin',
32
+ title: 'Configure Plugin',
33
+ description: 'Enable a plugin or update its configuration in the draft session. Changes are not persisted until commit-draft is called.',
34
+ inputSchema: configurePluginInputSchema,
35
+ outputSchema: configurePluginOutputSchema,
36
+ handler: async (input, context) => {
37
+ const { session, parserContext, projectDirectory } = await getOrCreateDraftSession(input.project, context);
38
+ const pluginMetadata = findPluginByKey(context.plugins, input.pluginKey);
39
+ const container = ProjectDefinitionContainer.fromSerializedConfig(session.draftDefinition, parserContext);
40
+ const pluginConfig = input.config ?? {};
41
+ // Apply setPluginConfig via produce
42
+ const newDefinition = produce((draft) => {
43
+ PluginUtils.setPluginConfig(draft, pluginMetadata, pluginConfig, container);
44
+ })(container.definition);
45
+ // Serialize back to name-based format
46
+ const serializedDef = serializeSchema(container.schema, newDefinition);
47
+ const { warnings } = await validateAndSaveDraft(serializedDef, parserContext, session, projectDirectory);
48
+ const isNew = PluginUtils.byKey(container.definition, input.pluginKey) == null;
49
+ const action = isNew ? 'Enabled' : 'Updated configuration for';
50
+ return {
51
+ message: `${action} plugin "${pluginMetadata.displayName}". Use commit-draft to persist.`,
52
+ issues: warnings.length > 0 ? warnings.map(mapIssueToOutput) : undefined,
53
+ };
54
+ },
55
+ writeCliOutput: writeIssuesCliOutput,
56
+ });
57
+ //# sourceMappingURL=configure-plugin.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure-plugin.action.js","sourceRoot":"","sources":["../../../src/actions/definition/configure-plugin.action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { z } from 'zod';
2
+ export declare const disablePluginAction: import("#src/actions/types.js").ServiceAction<z.ZodObject<{
3
+ project: z.ZodString;
4
+ pluginKey: z.ZodString;
5
+ }, z.core.$strip>, z.ZodObject<{
6
+ message: z.ZodString;
7
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
8
+ message: z.ZodString;
9
+ entityId: z.ZodOptional<z.ZodString>;
10
+ path: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
11
+ severity: z.ZodEnum<{
12
+ error: "error";
13
+ warning: "warning";
14
+ }>;
15
+ fixLabel: z.ZodOptional<z.ZodString>;
16
+ fixId: z.ZodOptional<z.ZodString>;
17
+ }, z.core.$strip>>>;
18
+ }, z.core.$strip>>;
19
+ //# sourceMappingURL=disable-plugin.action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disable-plugin.action.d.ts","sourceRoot":"","sources":["../../../src/actions/definition/disable-plugin.action.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyBxB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;kBAiD9B,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { PluginUtils, ProjectDefinitionContainer, serializeSchema, } from '@baseplate-dev/project-builder-lib';
2
+ import { produce } from 'immer';
3
+ import { z } from 'zod';
4
+ import { createServiceAction } from '#src/actions/types.js';
5
+ import { getOrCreateDraftSession } from './draft-session.js';
6
+ import { definitionIssueSchema, mapIssueToOutput, validateAndSaveDraft, writeIssuesCliOutput, } from './validate-draft.js';
7
+ const disablePluginInputSchema = z.object({
8
+ project: z.string().describe('The name or ID of the project.'),
9
+ pluginKey: z.string().describe('The plugin key to disable.'),
10
+ });
11
+ const disablePluginOutputSchema = z.object({
12
+ message: z.string().describe('A summary of the staged change.'),
13
+ issues: z
14
+ .array(definitionIssueSchema)
15
+ .optional()
16
+ .describe('Definition issues found after staging.'),
17
+ });
18
+ export const disablePluginAction = createServiceAction({
19
+ name: 'disable-plugin',
20
+ title: 'Disable Plugin',
21
+ description: 'Disable a plugin in the draft session. Also disables any plugins managed by this plugin. Changes are not persisted until commit-draft is called.',
22
+ inputSchema: disablePluginInputSchema,
23
+ outputSchema: disablePluginOutputSchema,
24
+ handler: async (input, context) => {
25
+ const { session, parserContext, projectDirectory } = await getOrCreateDraftSession(input.project, context);
26
+ const container = ProjectDefinitionContainer.fromSerializedConfig(session.draftDefinition, parserContext);
27
+ // Verify the plugin is currently enabled
28
+ const existingPlugin = PluginUtils.byKey(container.definition, input.pluginKey);
29
+ if (!existingPlugin) {
30
+ throw new Error(`Plugin "${input.pluginKey}" is not currently enabled.`);
31
+ }
32
+ // Apply disablePlugin via produce
33
+ const newDefinition = produce((draft) => {
34
+ PluginUtils.disablePlugin(draft, input.pluginKey, parserContext);
35
+ })(container.definition);
36
+ // Serialize back to name-based format
37
+ const serializedDef = serializeSchema(container.schema, newDefinition);
38
+ const { warnings } = await validateAndSaveDraft(serializedDef, parserContext, session, projectDirectory);
39
+ return {
40
+ message: `Disabled plugin "${input.pluginKey}". Use commit-draft to persist.`,
41
+ issues: warnings.length > 0 ? warnings.map(mapIssueToOutput) : undefined,
42
+ };
43
+ },
44
+ writeCliOutput: writeIssuesCliOutput,
45
+ });
46
+ //# sourceMappingURL=disable-plugin.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disable-plugin.action.js","sourceRoot":"","sources":["../../../src/actions/definition/disable-plugin.action.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,EACX,0BAA0B,EAC1B,eAAe,GAChB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC9D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;CAC7D,CAAC,CAAC;AAEH,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAC/D,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,qBAAqB,CAAC;SAC5B,QAAQ,EAAE;SACV,QAAQ,CAAC,wCAAwC,CAAC;CACtD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;IACrD,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,gBAAgB;IACvB,WAAW,EACT,kJAAkJ;IACpJ,WAAW,EAAE,wBAAwB;IACrC,YAAY,EAAE,yBAAyB;IACvC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAChD,MAAM,uBAAuB,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAExD,MAAM,SAAS,GAAG,0BAA0B,CAAC,oBAAoB,CAC/D,OAAO,CAAC,eAAe,EACvB,aAAa,CACd,CAAC;QAEF,yCAAyC;QACzC,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,CACtC,SAAS,CAAC,UAAU,EACpB,KAAK,CAAC,SAAS,CAChB,CAAC;QACF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,CAAC,SAAS,6BAA6B,CAAC,CAAC;QAC3E,CAAC;QAED,kCAAkC;QAClC,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,KAAwB,EAAE,EAAE;YACzD,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEzB,sCAAsC;QACtC,MAAM,aAAa,GAAG,eAAe,CACnC,SAAS,CAAC,MAAM,EAChB,aAAa,CACa,CAAC;QAE7B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,oBAAoB,CAC7C,aAAa,EACb,aAAa,EACb,OAAO,EACP,gBAAgB,CACjB,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,oBAAoB,KAAK,CAAC,SAAS,iCAAiC;YAC7E,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC;IACJ,CAAC;IACD,cAAc,EAAE,oBAAoB;CACrC,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Entity types that are blocked from generic entity operations
3
+ * (list-entity-types, stage-create, stage-update, stage-delete).
4
+ *
5
+ * Plugins require special lifecycle handling (migrations, implementation
6
+ * store setup) and must be managed via the dedicated plugin actions
7
+ * (configure-plugin, disable-plugin).
8
+ */
9
+ export declare const BLACKLISTED_ENTITY_TYPES: Set<string>;
10
+ /**
11
+ * Throws an error if the given entity type is blacklisted.
12
+ */
13
+ export declare function assertEntityTypeNotBlacklisted(entityTypeName: string): void;
14
+ //# sourceMappingURL=entity-type-blacklist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-type-blacklist.d.ts","sourceRoot":"","sources":["../../../src/actions/definition/entity-type-blacklist.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,aAAsB,CAAC;AAE5D;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAO3E"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Entity types that are blocked from generic entity operations
3
+ * (list-entity-types, stage-create, stage-update, stage-delete).
4
+ *
5
+ * Plugins require special lifecycle handling (migrations, implementation
6
+ * store setup) and must be managed via the dedicated plugin actions
7
+ * (configure-plugin, disable-plugin).
8
+ */
9
+ export const BLACKLISTED_ENTITY_TYPES = new Set(['plugin']);
10
+ /**
11
+ * Throws an error if the given entity type is blacklisted.
12
+ */
13
+ export function assertEntityTypeNotBlacklisted(entityTypeName) {
14
+ if (BLACKLISTED_ENTITY_TYPES.has(entityTypeName)) {
15
+ throw new Error(`Entity type "${entityTypeName}" cannot be managed via generic entity operations. ` +
16
+ 'Use configure-plugin or disable-plugin instead.');
17
+ }
18
+ }
19
+ //# sourceMappingURL=entity-type-blacklist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-type-blacklist.js","sourceRoot":"","sources":["../../../src/actions/definition/entity-type-blacklist.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE5D;;GAEG;AACH,MAAM,UAAU,8BAA8B,CAAC,cAAsB;IACnE,IAAI,wBAAwB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CACb,gBAAgB,cAAc,qDAAqD;YACjF,iDAAiD,CACpD,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,9 +1,14 @@
1
+ export { applyFixAction } from './apply-fix.action.js';
1
2
  export { commitDraftAction } from './commit-draft.action.js';
3
+ export { configurePluginAction } from './configure-plugin.action.js';
4
+ export { disablePluginAction } from './disable-plugin.action.js';
2
5
  export { discardDraftAction } from './discard-draft.action.js';
3
6
  export { getEntitySchemaAction } from './get-entity-schema.action.js';
4
7
  export { getEntityAction } from './get-entity.action.js';
5
8
  export { listEntitiesAction } from './list-entities.action.js';
6
9
  export { listEntityTypesAction } from './list-entity-types.action.js';
10
+ export { listPluginsAction } from './list-plugins.action.js';
11
+ export { searchEntitiesAction } from './search-entities.action.js';
7
12
  export { showDraftAction } from './show-draft.action.js';
8
13
  export { stageCreateEntityAction } from './stage-create-entity.action.js';
9
14
  export { stageDeleteEntityAction } from './stage-delete-entity.action.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/actions/definition/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/actions/definition/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -1,9 +1,14 @@
1
+ export { applyFixAction } from './apply-fix.action.js';
1
2
  export { commitDraftAction } from './commit-draft.action.js';
3
+ export { configurePluginAction } from './configure-plugin.action.js';
4
+ export { disablePluginAction } from './disable-plugin.action.js';
2
5
  export { discardDraftAction } from './discard-draft.action.js';
3
6
  export { getEntitySchemaAction } from './get-entity-schema.action.js';
4
7
  export { getEntityAction } from './get-entity.action.js';
5
8
  export { listEntitiesAction } from './list-entities.action.js';
6
9
  export { listEntityTypesAction } from './list-entity-types.action.js';
10
+ export { listPluginsAction } from './list-plugins.action.js';
11
+ export { searchEntitiesAction } from './search-entities.action.js';
7
12
  export { showDraftAction } from './show-draft.action.js';
8
13
  export { stageCreateEntityAction } from './stage-create-entity.action.js';
9
14
  export { stageDeleteEntityAction } from './stage-delete-entity.action.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/actions/definition/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/actions/definition/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -1 +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"}
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;AAyBxB,eAAO,MAAM,qBAAqB;;;;;;;kBA8BhC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { createServiceAction } from '#src/actions/types.js';
3
+ import { BLACKLISTED_ENTITY_TYPES } from './entity-type-blacklist.js';
3
4
  import { loadEntityServiceContext } from './load-entity-service-context.js';
4
5
  const listEntityTypesInputSchema = z.object({
5
6
  project: z.string().describe('The name or ID of the project.'),
@@ -32,7 +33,9 @@ export const listEntityTypesAction = createServiceAction({
32
33
  },
33
34
  handler: async (input, context) => {
34
35
  const { entityContext } = await loadEntityServiceContext(input.project, context);
35
- const entityTypes = [...entityContext.entityTypeMap.entries()].map(([name, metadata]) => ({
36
+ const entityTypes = [...entityContext.entityTypeMap.entries()]
37
+ .filter(([name]) => !BLACKLISTED_ENTITY_TYPES.has(name))
38
+ .map(([name, metadata]) => ({
36
39
  name,
37
40
  parentEntityTypeName: metadata.parentEntityTypeName ?? null,
38
41
  }));
@@ -1 +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"}
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,4BAA4B,CAAC;AACtE,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;aAC3D,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACvD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,IAAI;YACJ,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB,IAAI,IAAI;SAC5D,CAAC,CAAC,CAAC;QAEN,OAAO,EAAE,WAAW,EAAE,CAAC;IACzB,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ export declare const listPluginsAction: import("#src/actions/types.js").ServiceAction<z.ZodObject<{
3
+ project: z.ZodString;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ plugins: z.ZodArray<z.ZodObject<{
6
+ key: z.ZodString;
7
+ name: z.ZodString;
8
+ displayName: z.ZodString;
9
+ description: z.ZodString;
10
+ packageName: z.ZodString;
11
+ version: z.ZodString;
12
+ enabled: z.ZodBoolean;
13
+ managedBy: z.ZodOptional<z.ZodString>;
14
+ }, z.core.$strip>>;
15
+ }, z.core.$strip>>;
16
+ //# sourceMappingURL=list-plugins.action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-plugins.action.d.ts","sourceRoot":"","sources":["../../../src/actions/definition/list-plugins.action.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA8BxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;kBAuC5B,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { PluginUtils } 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 listPluginsInputSchema = z.object({
6
+ project: z.string().describe('The name or ID of the project.'),
7
+ });
8
+ const pluginInfoSchema = z.object({
9
+ key: z.string().describe('The unique plugin key.'),
10
+ name: z.string().describe('The plugin name.'),
11
+ displayName: z.string().describe('Human-readable display name.'),
12
+ description: z.string().describe('Plugin description.'),
13
+ packageName: z.string().describe('The npm package name.'),
14
+ version: z.string().describe('The plugin version.'),
15
+ enabled: z.boolean().describe('Whether the plugin is currently enabled.'),
16
+ managedBy: z
17
+ .string()
18
+ .optional()
19
+ .describe('Fully qualified name of the plugin that manages this one, if any.'),
20
+ });
21
+ const listPluginsOutputSchema = z.object({
22
+ plugins: z.array(pluginInfoSchema).describe('Available plugins.'),
23
+ });
24
+ export const listPluginsAction = createServiceAction({
25
+ name: 'list-plugins',
26
+ title: 'List Plugins',
27
+ description: 'List available plugins and their enabled/disabled status in the project.',
28
+ inputSchema: listPluginsInputSchema,
29
+ outputSchema: listPluginsOutputSchema,
30
+ writeCliOutput: (output) => {
31
+ for (const plugin of output.plugins) {
32
+ const status = plugin.enabled ? '✓' : '○';
33
+ const managed = plugin.managedBy
34
+ ? ` (managed by ${plugin.managedBy})`
35
+ : '';
36
+ console.info(` ${status} ${plugin.displayName} [${plugin.key}]${managed}`);
37
+ }
38
+ },
39
+ handler: async (input, context) => {
40
+ const { container } = await loadEntityServiceContext(input.project, context);
41
+ const plugins = context.plugins
42
+ .filter((p) => !p.hidden)
43
+ .map((plugin) => ({
44
+ key: plugin.key,
45
+ name: plugin.name,
46
+ displayName: plugin.displayName,
47
+ description: plugin.description,
48
+ packageName: plugin.packageName,
49
+ version: plugin.version,
50
+ enabled: PluginUtils.byKey(container.definition, plugin.key) != null,
51
+ managedBy: plugin.managedBy,
52
+ }));
53
+ return { plugins };
54
+ },
55
+ });
56
+ //# sourceMappingURL=list-plugins.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-plugins.action.js","sourceRoot":"","sources":["../../../src/actions/definition/list-plugins.action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { z } from 'zod';
2
+ export declare const searchEntitiesAction: import("#src/actions/types.js").ServiceAction<z.ZodObject<{
3
+ project: z.ZodString;
4
+ query: z.ZodString;
5
+ entityTypeName: z.ZodOptional<z.ZodString>;
6
+ }, z.core.$strip>, z.ZodObject<{
7
+ results: 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=search-entities.action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-entities.action.d.ts","sourceRoot":"","sources":["../../../src/actions/definition/search-entities.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA2BxB,eAAO,MAAM,oBAAoB;;;;;;;;;;kBAuC/B,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { z } from 'zod';
2
+ import { createServiceAction } from '#src/actions/types.js';
3
+ import { loadEntityServiceContext } from './load-entity-service-context.js';
4
+ const searchEntitiesInputSchema = z.object({
5
+ project: z.string().describe('The name or ID of the project.'),
6
+ query: z
7
+ .string()
8
+ .describe('Case-insensitive substring to match against entity names.'),
9
+ entityTypeName: z
10
+ .string()
11
+ .optional()
12
+ .describe('Restrict search to a specific entity type.'),
13
+ });
14
+ const entityStubSchema = z.object({
15
+ id: z.string().describe('The entity ID.'),
16
+ name: z.string().describe('The entity name.'),
17
+ type: z.string().describe('The entity type name.'),
18
+ });
19
+ const searchEntitiesOutputSchema = z.object({
20
+ results: z.array(entityStubSchema).describe('Matching entities.'),
21
+ });
22
+ export const searchEntitiesAction = createServiceAction({
23
+ name: 'search-entities',
24
+ title: 'Search Entities',
25
+ description: 'Search entities by name across the project definition. Returns matching entity stubs.',
26
+ inputSchema: searchEntitiesInputSchema,
27
+ outputSchema: searchEntitiesOutputSchema,
28
+ writeCliOutput: (output) => {
29
+ if (output.results.length === 0) {
30
+ console.info(' No matching entities found.');
31
+ return;
32
+ }
33
+ for (const entity of output.results) {
34
+ console.info(` ${entity.name} (${entity.type}) [${entity.id}]`);
35
+ }
36
+ },
37
+ handler: async (input, context) => {
38
+ const { container } = await loadEntityServiceContext(input.project, context);
39
+ const queryLower = input.query.toLowerCase();
40
+ const results = container.entities
41
+ .filter((entity) => {
42
+ if (input.entityTypeName && entity.type.name !== input.entityTypeName) {
43
+ return false;
44
+ }
45
+ return entity.name.toLowerCase().includes(queryLower);
46
+ })
47
+ .map((entity) => ({
48
+ id: entity.id,
49
+ name: entity.name,
50
+ type: entity.type.name,
51
+ }));
52
+ return { results };
53
+ },
54
+ });
55
+ //# sourceMappingURL=search-entities.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-entities.action.js","sourceRoot":"","sources":["../../../src/actions/definition/search-entities.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,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC9D,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,CAAC,2DAA2D,CAAC;IACxE,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,4CAA4C,CAAC;CAC1D,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,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;CAClE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;IACtD,IAAI,EAAE,iBAAiB;IACvB,KAAK,EAAE,iBAAiB;IACxB,WAAW,EACT,uFAAuF;IACzF,WAAW,EAAE,yBAAyB;IACtC,YAAY,EAAE,0BAA0B;IACxC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE;QACzB,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,wBAAwB,CAClD,KAAK,CAAC,OAAO,EACb,OAAO,CACR,CAAC;QAEF,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAE7C,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ;aAC/B,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,KAAK,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,cAAc,EAAE,CAAC;gBACtE,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACxD,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAChB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;SACvB,CAAC,CAAC,CAAC;QAEN,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;CACF,CAAC,CAAC"}
@@ -14,6 +14,8 @@ export declare const stageCreateEntityAction: import("#src/actions/types.js").Se
14
14
  error: "error";
15
15
  warning: "warning";
16
16
  }>;
17
+ fixLabel: z.ZodOptional<z.ZodString>;
18
+ fixId: z.ZodOptional<z.ZodString>;
17
19
  }, z.core.$strip>>>;
18
20
  }, z.core.$strip>>;
19
21
  //# sourceMappingURL=stage-create-entity.action.d.ts.map
@@ -1 +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"}
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;AAqCxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;kBAmClC,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import { createEntity } from '@baseplate-dev/project-builder-lib';
2
2
  import { z } from 'zod';
3
3
  import { createServiceAction } from '#src/actions/types.js';
4
- import { getOrCreateDraftSession, saveDraftSession } from './draft-session.js';
5
- import { definitionIssueSchema, validateDraftDefinition, } from './validate-draft.js';
4
+ import { getOrCreateDraftSession } from './draft-session.js';
5
+ import { assertEntityTypeNotBlacklisted } from './entity-type-blacklist.js';
6
+ import { definitionIssueSchema, mapIssueToOutput, validateAndSaveDraft, writeIssuesCliOutput, } from './validate-draft.js';
6
7
  const stageCreateEntityInputSchema = z.object({
7
8
  project: z.string().describe('The name or ID of the project.'),
8
9
  entityTypeName: z
@@ -30,31 +31,19 @@ export const stageCreateEntityAction = createServiceAction({
30
31
  inputSchema: stageCreateEntityInputSchema,
31
32
  outputSchema: stageCreateEntityOutputSchema,
32
33
  handler: async (input, context) => {
34
+ assertEntityTypeNotBlacklisted(input.entityTypeName);
33
35
  const { session, entityContext, parserContext, projectDirectory } = await getOrCreateDraftSession(input.project, context);
34
36
  const newDefinition = createEntity({
35
37
  entityTypeName: input.entityTypeName,
36
38
  entityData: input.entityData,
37
39
  parentEntityId: input.parentEntityId,
38
40
  }, 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);
41
+ const { warnings } = await validateAndSaveDraft(newDefinition, parserContext, session, projectDirectory);
46
42
  return {
47
43
  message: `Staged creation of ${input.entityTypeName} entity. Use commit-draft to persist.`,
48
- issues: warnings.length > 0 ? warnings : undefined,
44
+ issues: warnings.length > 0 ? warnings.map(mapIssueToOutput) : undefined,
49
45
  };
50
46
  },
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
- },
47
+ writeCliOutput: writeIssuesCliOutput,
59
48
  });
60
49
  //# sourceMappingURL=stage-create-entity.action.js.map
@@ -1 +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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"}
1
+ {"version":3,"file":"stage-create-entity.action.js","sourceRoot":"","sources":["../../../src/actions/definition/stage-create-entity.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,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC9D,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,CAAC,uDAAuD,CAAC;IACpE,UAAU,EAAE,CAAC;SACV,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,CAAC,4BAA4B,CAAC;IACzC,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,0EAA0E,CAC3E;CACJ,CAAC,CAAC;AAEH,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAC/D,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,qBAAqB,CAAC;SAC5B,QAAQ,EAAE;SACV,QAAQ,CAAC,wCAAwC,CAAC;CACtD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,mBAAmB,CAAC;IACzD,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EACT,2GAA2G;IAC7G,WAAW,EAAE,4BAA4B;IACzC,YAAY,EAAE,6BAA6B;IAC3C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChC,8BAA8B,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAErD,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAC/D,MAAM,uBAAuB,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAExD,MAAM,aAAa,GAAG,YAAY,CAChC;YACE,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC,EACD,aAAa,CACd,CAAC;QAEF,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,oBAAoB,CAC7C,aAAa,EACb,aAAa,EACb,OAAO,EACP,gBAAgB,CACjB,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,sBAAsB,KAAK,CAAC,cAAc,uCAAuC;YAC1F,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC;IACJ,CAAC;IACD,cAAc,EAAE,oBAAoB;CACrC,CAAC,CAAC"}
@@ -13,6 +13,8 @@ export declare const stageDeleteEntityAction: import("#src/actions/types.js").Se
13
13
  error: "error";
14
14
  warning: "warning";
15
15
  }>;
16
+ fixLabel: z.ZodOptional<z.ZodString>;
17
+ fixId: z.ZodOptional<z.ZodString>;
16
18
  }, z.core.$strip>>>;
17
19
  }, z.core.$strip>>;
18
20
  //# sourceMappingURL=stage-delete-entity.action.d.ts.map
@@ -1 +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"}
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;AA+BxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;kBAkClC,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import { deleteEntity } from '@baseplate-dev/project-builder-lib';
2
2
  import { z } from 'zod';
3
3
  import { createServiceAction } from '#src/actions/types.js';
4
- import { getOrCreateDraftSession, saveDraftSession } from './draft-session.js';
5
- import { definitionIssueSchema, validateDraftDefinition, } from './validate-draft.js';
4
+ import { getOrCreateDraftSession } from './draft-session.js';
5
+ import { assertEntityTypeNotBlacklisted } from './entity-type-blacklist.js';
6
+ import { definitionIssueSchema, mapIssueToOutput, validateAndSaveDraft, writeIssuesCliOutput, } from './validate-draft.js';
6
7
  const stageDeleteEntityInputSchema = z.object({
7
8
  project: z.string().describe('The name or ID of the project.'),
8
9
  entityTypeName: z
@@ -26,30 +27,18 @@ export const stageDeleteEntityAction = createServiceAction({
26
27
  inputSchema: stageDeleteEntityInputSchema,
27
28
  outputSchema: stageDeleteEntityOutputSchema,
28
29
  handler: async (input, context) => {
30
+ assertEntityTypeNotBlacklisted(input.entityTypeName);
29
31
  const { session, entityContext, parserContext, projectDirectory } = await getOrCreateDraftSession(input.project, context);
30
32
  const newDefinition = deleteEntity({
31
33
  entityTypeName: input.entityTypeName,
32
34
  entityId: input.entityId,
33
35
  }, 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);
36
+ const { warnings } = await validateAndSaveDraft(newDefinition, parserContext, session, projectDirectory);
41
37
  return {
42
38
  message: `Staged deletion of ${input.entityTypeName} entity "${input.entityId}". Use commit-draft to persist.`,
43
- issues: warnings.length > 0 ? warnings : undefined,
39
+ issues: warnings.length > 0 ? warnings.map(mapIssueToOutput) : undefined,
44
40
  };
45
41
  },
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
- },
42
+ writeCliOutput: writeIssuesCliOutput,
54
43
  });
55
44
  //# sourceMappingURL=stage-delete-entity.action.js.map
@@ -1 +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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"}
1
+ {"version":3,"file":"stage-delete-entity.action.js","sourceRoot":"","sources":["../../../src/actions/definition/stage-delete-entity.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,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC9D,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,CAAC,2DAA2D,CAAC;IACxE,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,CAAC,wDAAwD,CAAC;CACtE,CAAC,CAAC;AAEH,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAC/D,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,qBAAqB,CAAC;SAC5B,QAAQ,EAAE;SACV,QAAQ,CAAC,wCAAwC,CAAC;CACtD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,mBAAmB,CAAC;IACzD,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EACT,wGAAwG;IAC1G,WAAW,EAAE,4BAA4B;IACzC,YAAY,EAAE,6BAA6B;IAC3C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChC,8BAA8B,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAErD,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAC/D,MAAM,uBAAuB,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAExD,MAAM,aAAa,GAAG,YAAY,CAChC;YACE,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,EACD,aAAa,CACd,CAAC;QAEF,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,oBAAoB,CAC7C,aAAa,EACb,aAAa,EACb,OAAO,EACP,gBAAgB,CACjB,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,sBAAsB,KAAK,CAAC,cAAc,YAAY,KAAK,CAAC,QAAQ,iCAAiC;YAC9G,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC;IACJ,CAAC;IACD,cAAc,EAAE,oBAAoB;CACrC,CAAC,CAAC"}