@hubspot/cli 7.7.32-experimental.0 → 7.7.33-experimental.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/commands/getStarted.js +5 -4
  2. package/commands/project/__tests__/add.test.js +3 -5
  3. package/commands/project/__tests__/deploy.test.js +3 -2
  4. package/commands/project/add.js +2 -4
  5. package/commands/project/deploy.js +9 -61
  6. package/commands/project/dev/index.js +1 -1
  7. package/commands/project/dev/unifiedFlow.js +3 -0
  8. package/commands/project/upload.js +2 -2
  9. package/commands/project/validate.js +1 -1
  10. package/commands/project/watch.js +2 -2
  11. package/lang/en.d.ts +7 -3
  12. package/lang/en.js +8 -4
  13. package/lib/__tests__/hasFeature.test.js +145 -7
  14. package/lib/__tests__/importData.test.js +1 -1
  15. package/lib/app/migrate.js +9 -2
  16. package/lib/constants.d.ts +2 -0
  17. package/lib/constants.js +2 -0
  18. package/lib/errorHandlers/index.d.ts +4 -0
  19. package/lib/errorHandlers/index.js +1 -1
  20. package/lib/hasFeature.js +6 -0
  21. package/lib/importData.js +1 -1
  22. package/lib/projects/__tests__/AppDevModeInterface.test.js +61 -44
  23. package/lib/projects/__tests__/LocalDevProcess.test.js +1 -0
  24. package/lib/projects/__tests__/deploy.test.js +164 -0
  25. package/lib/projects/__tests__/platformVersion.test.d.ts +1 -0
  26. package/lib/projects/__tests__/{buildAndDeploy.test.js → platformVersion.test.js} +2 -2
  27. package/lib/projects/add/__tests__/legacyAddComponent.test.js +49 -6
  28. package/lib/projects/add/__tests__/v3AddComponent.test.js +71 -1
  29. package/lib/projects/add/legacyAddComponent.d.ts +1 -1
  30. package/lib/projects/add/legacyAddComponent.js +5 -1
  31. package/lib/projects/add/v3AddComponent.d.ts +1 -0
  32. package/lib/projects/add/v3AddComponent.js +2 -2
  33. package/lib/projects/create/__tests__/v3.test.js +97 -9
  34. package/lib/projects/create/index.js +2 -2
  35. package/lib/projects/create/legacy.js +1 -1
  36. package/lib/projects/create/v3.d.ts +2 -2
  37. package/lib/projects/create/v3.js +35 -12
  38. package/lib/projects/deploy.d.ts +13 -0
  39. package/lib/projects/deploy.js +63 -0
  40. package/lib/projects/localDev/AppDevModeInterface.d.ts +0 -2
  41. package/lib/projects/localDev/AppDevModeInterface.js +65 -36
  42. package/lib/projects/localDev/DevServerManagerV2.js +1 -0
  43. package/lib/projects/localDev/LocalDevProcess.js +3 -1
  44. package/lib/projects/localDev/LocalDevState.d.ts +5 -2
  45. package/lib/projects/localDev/LocalDevState.js +9 -1
  46. package/lib/projects/localDev/helpers/project.js +1 -1
  47. package/lib/projects/platformVersion.d.ts +1 -0
  48. package/lib/projects/platformVersion.js +10 -0
  49. package/lib/projects/{buildAndDeploy.d.ts → pollProjectBuildAndDeploy.d.ts} +0 -1
  50. package/lib/projects/{buildAndDeploy.js → pollProjectBuildAndDeploy.js} +0 -10
  51. package/lib/projects/upload.js +1 -1
  52. package/lib/projects/urls.d.ts +1 -0
  53. package/lib/projects/urls.js +3 -0
  54. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +1 -0
  55. package/lib/prompts/__tests__/projectAddPrompt.test.js +143 -0
  56. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +1 -0
  57. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +160 -0
  58. package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +1 -0
  59. package/lib/prompts/importDataFilePathPrompt.js +4 -2
  60. package/lib/prompts/installAppPrompt.d.ts +6 -1
  61. package/lib/prompts/installAppPrompt.js +6 -1
  62. package/lib/prompts/projectAddPrompt.js +1 -1
  63. package/lib/prompts/selectProjectTemplatePrompt.js +1 -1
  64. package/mcp-server/tools/cms/HsFunctionLogsTool.d.ts +32 -0
  65. package/mcp-server/tools/cms/HsFunctionLogsTool.js +76 -0
  66. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +1 -0
  67. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +183 -0
  68. package/mcp-server/tools/index.js +2 -0
  69. package/mcp-server/tools/project/AddFeatureToProjectTool.d.ts +3 -3
  70. package/mcp-server/tools/project/CreateProjectTool.d.ts +3 -3
  71. package/mcp-server/tools/project/GetConfigValuesTool.js +3 -3
  72. package/mcp-server/tools/project/constants.d.ts +1 -1
  73. package/mcp-server/tools/project/constants.js +6 -4
  74. package/package.json +3 -3
  75. package/types/LocalDev.d.ts +2 -1
  76. package/types/Projects.d.ts +1 -0
  77. /package/lib/projects/__tests__/{buildAndDeploy.test.d.ts → deploy.test.d.ts} +0 -0
@@ -0,0 +1,183 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+ import { HsFunctionLogsTool } from '../HsFunctionLogsTool.js';
3
+ import { runCommandInDir } from '../../../utils/project.js';
4
+ import { addFlag } from '../../../utils/command.js';
5
+ vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
6
+ vi.mock('../../../utils/project');
7
+ vi.mock('../../../utils/command');
8
+ vi.mock('../../../utils/toolUsageTracking', () => ({
9
+ trackToolUsage: vi.fn(),
10
+ }));
11
+ const mockRunCommandInDir = runCommandInDir;
12
+ const mockAddFlag = addFlag;
13
+ describe('HsFunctionLogsTool', () => {
14
+ let mockMcpServer;
15
+ let tool;
16
+ let mockRegisteredTool;
17
+ beforeEach(() => {
18
+ vi.clearAllMocks();
19
+ // @ts-expect-error Not mocking the whole server
20
+ mockMcpServer = {
21
+ registerTool: vi.fn(),
22
+ };
23
+ mockRegisteredTool = {};
24
+ mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
25
+ tool = new HsFunctionLogsTool(mockMcpServer);
26
+ });
27
+ describe('register', () => {
28
+ it('should register the tool with the MCP server', () => {
29
+ const result = tool.register();
30
+ expect(mockMcpServer.registerTool).toHaveBeenCalledWith('get-hubspot-cms-serverless-function-logs', expect.objectContaining({
31
+ title: 'Get HubSpot CMS serverless function logs for an endpoint',
32
+ description: 'Retrieve logs for HubSpot CMS serverless functions. Use this tool to help debug issues with serverless functions by reading the production logs. Supports various options like latest, compact, and limiting results. Use after listing functions with list-hubspot-cms-serverless-functions to get the endpoint path.',
33
+ inputSchema: expect.any(Object),
34
+ }), expect.any(Function));
35
+ expect(result).toBe(mockRegisteredTool);
36
+ });
37
+ });
38
+ describe('handler', () => {
39
+ it('should execute basic hs logs command with endpoint', async () => {
40
+ mockRunCommandInDir.mockResolvedValue({
41
+ stdout: '2023-01-01 10:00:00 INFO Function executed successfully',
42
+ stderr: '',
43
+ });
44
+ const result = await tool.handler({
45
+ absoluteCurrentWorkingDirectory: '/test/dir',
46
+ endpoint: 'my-function',
47
+ });
48
+ expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/dir', 'hs logs my-function');
49
+ expect(result.content).toHaveLength(2);
50
+ expect(result.content[0].text).toContain('Function executed successfully');
51
+ expect(result.content[1].text).toBe('');
52
+ });
53
+ it('should strip leading slash from endpoint', async () => {
54
+ mockRunCommandInDir.mockResolvedValue({
55
+ stdout: '2023-01-01 10:00:00 INFO Function executed successfully',
56
+ stderr: '',
57
+ });
58
+ const result = await tool.handler({
59
+ absoluteCurrentWorkingDirectory: '/test/dir',
60
+ endpoint: '/api/my-endpoint',
61
+ });
62
+ expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/dir', 'hs logs api/my-endpoint');
63
+ expect(result.content).toHaveLength(2);
64
+ expect(result.content[0].text).toContain('Function executed successfully');
65
+ expect(result.content[1].text).toBe('');
66
+ });
67
+ it('should execute hs logs command with latest flag', async () => {
68
+ mockAddFlag.mockReturnValue('hs logs my-endpoint --latest');
69
+ mockRunCommandInDir.mockResolvedValue({
70
+ stdout: '2023-01-01 10:00:00 INFO Latest log entry',
71
+ stderr: '',
72
+ });
73
+ const result = await tool.handler({
74
+ absoluteCurrentWorkingDirectory: '/test/dir',
75
+ endpoint: 'my-endpoint',
76
+ latest: true,
77
+ });
78
+ expect(mockAddFlag).toHaveBeenCalledWith('hs logs my-endpoint', 'latest', true);
79
+ expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/dir', 'hs logs my-endpoint --latest');
80
+ expect(result.content).toHaveLength(2);
81
+ expect(result.content[0].text).toContain('Latest log entry');
82
+ expect(result.content[1].text).toBe('');
83
+ });
84
+ it('should execute hs logs command with compact flag', async () => {
85
+ mockAddFlag.mockReturnValue('hs logs my-endpoint --compact');
86
+ mockRunCommandInDir.mockResolvedValue({
87
+ stdout: 'compact log output',
88
+ stderr: '',
89
+ });
90
+ const result = await tool.handler({
91
+ absoluteCurrentWorkingDirectory: '/test/dir',
92
+ endpoint: 'my-endpoint',
93
+ compact: true,
94
+ });
95
+ expect(mockAddFlag).toHaveBeenCalledWith('hs logs my-endpoint', 'compact', true);
96
+ expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/dir', 'hs logs my-endpoint --compact');
97
+ expect(result.content).toHaveLength(2);
98
+ expect(result.content[0].text).toContain('compact log output');
99
+ expect(result.content[1].text).toBe('');
100
+ });
101
+ it('should execute hs logs command with limit parameter', async () => {
102
+ mockAddFlag.mockReturnValue('hs logs my-endpoint --limit 10');
103
+ mockRunCommandInDir.mockResolvedValue({
104
+ stdout: 'limited log entries',
105
+ stderr: '',
106
+ });
107
+ const result = await tool.handler({
108
+ absoluteCurrentWorkingDirectory: '/test/dir',
109
+ endpoint: 'my-endpoint',
110
+ limit: 10,
111
+ });
112
+ expect(mockAddFlag).toHaveBeenCalledWith('hs logs my-endpoint', 'limit', 10);
113
+ expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/dir', 'hs logs my-endpoint --limit 10');
114
+ expect(result.content).toHaveLength(2);
115
+ expect(result.content[0].text).toContain('limited log entries');
116
+ expect(result.content[1].text).toBe('');
117
+ });
118
+ it('should execute hs logs command with account parameter', async () => {
119
+ mockAddFlag.mockReturnValue('hs logs my-endpoint --account test-account');
120
+ mockRunCommandInDir.mockResolvedValue({
121
+ stdout: 'account-specific logs',
122
+ stderr: '',
123
+ });
124
+ const result = await tool.handler({
125
+ absoluteCurrentWorkingDirectory: '/test/dir',
126
+ endpoint: 'my-endpoint',
127
+ account: 'test-account',
128
+ });
129
+ expect(mockAddFlag).toHaveBeenCalledWith('hs logs my-endpoint', 'account', 'test-account');
130
+ expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/dir', 'hs logs my-endpoint --account test-account');
131
+ expect(result.content).toHaveLength(2);
132
+ expect(result.content[0].text).toContain('account-specific logs');
133
+ expect(result.content[1].text).toBe('');
134
+ });
135
+ it('should execute hs logs command with multiple parameters', async () => {
136
+ mockAddFlag
137
+ .mockReturnValueOnce('hs logs my-endpoint --latest')
138
+ .mockReturnValueOnce('hs logs my-endpoint --latest --compact')
139
+ .mockReturnValueOnce('hs logs my-endpoint --latest --compact --account test-account');
140
+ mockRunCommandInDir.mockResolvedValue({
141
+ stdout: 'latest compact logs',
142
+ stderr: '',
143
+ });
144
+ const result = await tool.handler({
145
+ absoluteCurrentWorkingDirectory: '/test/dir',
146
+ endpoint: 'my-endpoint',
147
+ latest: true,
148
+ compact: true,
149
+ account: 'test-account',
150
+ });
151
+ expect(mockAddFlag).toHaveBeenCalledTimes(3);
152
+ expect(mockAddFlag).toHaveBeenNthCalledWith(1, 'hs logs my-endpoint', 'latest', true);
153
+ expect(mockAddFlag).toHaveBeenNthCalledWith(2, 'hs logs my-endpoint --latest', 'compact', true);
154
+ expect(mockAddFlag).toHaveBeenNthCalledWith(3, 'hs logs my-endpoint --latest --compact', 'account', 'test-account');
155
+ expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/dir', 'hs logs my-endpoint --latest --compact --account test-account');
156
+ expect(result.content).toHaveLength(2);
157
+ expect(result.content[0].text).toContain('latest compact logs');
158
+ expect(result.content[1].text).toBe('');
159
+ });
160
+ it('should handle command execution errors', async () => {
161
+ mockRunCommandInDir.mockRejectedValue(new Error('Function not found'));
162
+ const result = await tool.handler({
163
+ absoluteCurrentWorkingDirectory: '/test/dir',
164
+ endpoint: 'non-existent-function',
165
+ });
166
+ expect(result.content).toHaveLength(1);
167
+ expect(result.content[0].text).toContain('Error executing hs logs command: Function not found');
168
+ });
169
+ it('should handle stderr output', async () => {
170
+ mockRunCommandInDir.mockResolvedValue({
171
+ stdout: 'function logs',
172
+ stderr: 'Warning: Function may be slow to respond',
173
+ });
174
+ const result = await tool.handler({
175
+ absoluteCurrentWorkingDirectory: '/test/dir',
176
+ endpoint: 'slow-function',
177
+ });
178
+ expect(result.content).toHaveLength(2);
179
+ expect(result.content[0].text).toContain('function logs');
180
+ expect(result.content[1].text).toContain('Warning: Function may be slow to respond');
181
+ });
182
+ });
183
+ });
@@ -12,6 +12,7 @@ import { HsCreateModuleTool } from './cms/HsCreateModuleTool.js';
12
12
  import { HsCreateTemplateTool } from './cms/HsCreateTemplateTool.js';
13
13
  import { HsCreateFunctionTool } from './cms/HsCreateFunctionTool.js';
14
14
  import { HsListFunctionsTool } from './cms/HsListFunctionsTool.js';
15
+ import { HsFunctionLogsTool } from './cms/HsFunctionLogsTool.js';
15
16
  export function registerProjectTools(mcpServer) {
16
17
  return [
17
18
  new UploadProjectTools(mcpServer).register(),
@@ -32,5 +33,6 @@ export function registerCmsTools(mcpServer) {
32
33
  new HsCreateTemplateTool(mcpServer).register(),
33
34
  new HsCreateFunctionTool(mcpServer).register(),
34
35
  new HsListFunctionsTool(mcpServer).register(),
36
+ new HsFunctionLogsTool(mcpServer).register(),
35
37
  ];
36
38
  }
@@ -6,19 +6,19 @@ declare const inputSchemaZodObject: z.ZodObject<{
6
6
  addApp: z.ZodBoolean;
7
7
  distribution: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"marketplace">, z.ZodLiteral<"private">]>>;
8
8
  auth: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"static">, z.ZodLiteral<"oauth">]>>;
9
- features: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodLiteral<"card">, z.ZodLiteral<"settings">, z.ZodLiteral<"app-function">, z.ZodLiteral<"webhooks">, z.ZodLiteral<"workflow-action">]>, "many">>;
9
+ features: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodLiteral<"card">, z.ZodLiteral<"settings">, z.ZodLiteral<"app-function">, z.ZodLiteral<"webhooks">, z.ZodLiteral<"workflow-action">, z.ZodLiteral<"workflow-action-tool">, z.ZodLiteral<"app-object">, z.ZodLiteral<"scim">]>, "many">>;
10
10
  }, "strip", z.ZodTypeAny, {
11
11
  absoluteProjectPath: string;
12
12
  addApp: boolean;
13
13
  auth?: "oauth" | "static" | undefined;
14
14
  distribution?: "marketplace" | "private" | undefined;
15
- features?: ("card" | "settings" | "app-function" | "webhooks" | "workflow-action")[] | undefined;
15
+ features?: ("card" | "settings" | "workflow-action-tool" | "workflow-action" | "app-function" | "webhooks" | "app-object" | "scim")[] | undefined;
16
16
  }, {
17
17
  absoluteProjectPath: string;
18
18
  addApp: boolean;
19
19
  auth?: "oauth" | "static" | undefined;
20
20
  distribution?: "marketplace" | "private" | undefined;
21
- features?: ("card" | "settings" | "app-function" | "webhooks" | "workflow-action")[] | undefined;
21
+ features?: ("card" | "settings" | "workflow-action-tool" | "workflow-action" | "app-function" | "webhooks" | "app-object" | "scim")[] | undefined;
22
22
  }>;
23
23
  export type AddFeatureInputSchema = z.infer<typeof inputSchemaZodObject>;
24
24
  export declare class AddFeatureToProjectTool extends Tool<AddFeatureInputSchema> {
@@ -8,7 +8,7 @@ declare const inputSchemaZodObject: z.ZodObject<{
8
8
  projectBase: z.ZodUnion<[z.ZodLiteral<"empty">, z.ZodLiteral<"app">]>;
9
9
  distribution: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"marketplace">, z.ZodLiteral<"private">]>>;
10
10
  auth: z.ZodOptional<z.ZodOptional<z.ZodUnion<[z.ZodLiteral<"static">, z.ZodLiteral<"oauth">]>>>;
11
- features: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodLiteral<"card">, z.ZodLiteral<"settings">, z.ZodLiteral<"app-function">, z.ZodLiteral<"webhooks">, z.ZodLiteral<"workflow-action">]>, "many">>;
11
+ features: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodLiteral<"card">, z.ZodLiteral<"settings">, z.ZodLiteral<"app-function">, z.ZodLiteral<"webhooks">, z.ZodLiteral<"workflow-action">, z.ZodLiteral<"workflow-action-tool">, z.ZodLiteral<"app-object">, z.ZodLiteral<"scim">]>, "many">>;
12
12
  }, "strip", z.ZodTypeAny, {
13
13
  projectBase: "app" | "empty";
14
14
  absoluteCurrentWorkingDirectory: string;
@@ -16,7 +16,7 @@ declare const inputSchemaZodObject: z.ZodObject<{
16
16
  name?: string | undefined;
17
17
  auth?: "oauth" | "static" | undefined;
18
18
  distribution?: "marketplace" | "private" | undefined;
19
- features?: ("card" | "settings" | "app-function" | "webhooks" | "workflow-action")[] | undefined;
19
+ features?: ("card" | "settings" | "workflow-action-tool" | "workflow-action" | "app-function" | "webhooks" | "app-object" | "scim")[] | undefined;
20
20
  }, {
21
21
  projectBase: "app" | "empty";
22
22
  absoluteCurrentWorkingDirectory: string;
@@ -24,7 +24,7 @@ declare const inputSchemaZodObject: z.ZodObject<{
24
24
  name?: string | undefined;
25
25
  auth?: "oauth" | "static" | undefined;
26
26
  distribution?: "marketplace" | "private" | undefined;
27
- features?: ("card" | "settings" | "app-function" | "webhooks" | "workflow-action")[] | undefined;
27
+ features?: ("card" | "settings" | "workflow-action-tool" | "workflow-action" | "app-function" | "webhooks" | "app-object" | "scim")[] | undefined;
28
28
  }>;
29
29
  export type CreateProjectInputSchema = z.infer<typeof inputSchemaZodObject>;
30
30
  export declare class CreateProjectTool extends Tool<CreateProjectInputSchema> {
@@ -3,7 +3,7 @@ import { z } from 'zod';
3
3
  import { formatTextContents } from '../../utils/content.js';
4
4
  import { getIntermediateRepresentationSchema, mapToInternalType, } from '@hubspot/project-parsing-lib';
5
5
  import { getAccountId, getConfigPath, loadConfig, } from '@hubspot/local-dev-lib/config';
6
- import { useV3Api } from '../../../lib/projects/buildAndDeploy.js';
6
+ import { useV3Api } from '../../../lib/projects/platformVersion.js';
7
7
  const inputSchema = {
8
8
  platformVersion: z
9
9
  .string()
@@ -43,8 +43,8 @@ export class GetConfigValuesTool extends Tool {
43
43
  register() {
44
44
  return this.mcpServer.registerTool(toolName, {
45
45
  title: 'Fetch the JSON Schema for component',
46
- description: `Fetches and returns the JSON schema for the provided feature 'type' found in -hsmeta.json file.
47
- This should be called before editing a '-hsmeta.json' file to get the list of possible values and restrictions on those values.
46
+ description: `Fetches and returns the JSON schema for the provided feature 'type' found in -hsmeta.json file.
47
+ This should be called before editing a '-hsmeta.json' file to get the list of possible values and restrictions on those values.
48
48
  This will only work for projects with platformVersion 2025.2 and beyond`,
49
49
  inputSchema,
50
50
  }, this.handler);
@@ -1,6 +1,6 @@
1
1
  import z from 'zod';
2
2
  export declare const absoluteProjectPath: z.ZodString;
3
3
  export declare const absoluteCurrentWorkingDirectory: z.ZodString;
4
- export declare const features: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodLiteral<"card">, z.ZodLiteral<"settings">, z.ZodLiteral<"app-function">, z.ZodLiteral<"webhooks">, z.ZodLiteral<"workflow-action">]>, "many">>;
4
+ export declare const features: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodLiteral<"card">, z.ZodLiteral<"settings">, z.ZodLiteral<"app-function">, z.ZodLiteral<"webhooks">, z.ZodLiteral<"workflow-action">, z.ZodLiteral<"workflow-action-tool">, z.ZodLiteral<"app-object">, z.ZodLiteral<"scim">]>, "many">>;
5
5
  export declare const docsSearchQuery: z.ZodString;
6
6
  export declare const docUrl: z.ZodString;
@@ -6,15 +6,17 @@ export const absoluteCurrentWorkingDirectory = z
6
6
  .string()
7
7
  .describe('The absolute path to the current working directory.');
8
8
  export const features = z
9
- .array(z
10
- .union([
9
+ .array(z.union([
11
10
  z.literal('card'),
12
11
  z.literal('settings'),
13
12
  z.literal('app-function'),
14
13
  z.literal('webhooks'),
15
14
  z.literal('workflow-action'),
16
- ])
17
- .describe('The features to include in the project, multiple options can be selected'))
15
+ z.literal('workflow-action-tool'),
16
+ z.literal('app-object'),
17
+ z.literal('scim'),
18
+ ]))
19
+ .describe('The features to include in the project, multiple options can be selected')
18
20
  .optional();
19
21
  export const docsSearchQuery = z
20
22
  .string()
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@hubspot/cli",
3
- "version": "7.7.32-experimental.0",
3
+ "version": "7.7.33-experimental.0",
4
4
  "description": "The official CLI for developing on HubSpot",
5
5
  "license": "Apache-2.0",
6
6
  "repository": "https://github.com/HubSpot/hubspot-cli",
7
7
  "type": "module",
8
8
  "dependencies": {
9
- "@hubspot/local-dev-lib": "3.17.0",
10
- "@hubspot/project-parsing-lib": "0.8.2",
9
+ "@hubspot/local-dev-lib": "3.18.0",
10
+ "@hubspot/project-parsing-lib": "0.8.3",
11
11
  "@hubspot/serverless-dev-runtime": "7.0.6",
12
12
  "@hubspot/theme-preview-dev-server": "0.0.10",
13
13
  "@hubspot/ui-extensions-dev-server": "0.9.8",
@@ -1,4 +1,4 @@
1
- import { IntermediateRepresentationNodeLocalDev } from '@hubspot/project-parsing-lib/src/lib/types.js';
1
+ import { HSProfileVariables, IntermediateRepresentationNodeLocalDev } from '@hubspot/project-parsing-lib/src/lib/types.js';
2
2
  import { Environment } from '@hubspot/local-dev-lib/types/Config';
3
3
  import { ValueOf } from '@hubspot/local-dev-lib/types/Utils';
4
4
  import { ProjectConfig } from './Projects.js';
@@ -16,6 +16,7 @@ export type LocalDevStateConstructorOptions = {
16
16
  initialProjectNodes: {
17
17
  [key: string]: IntermediateRepresentationNodeLocalDev;
18
18
  };
19
+ initialProjectProfileData: HSProfileVariables;
19
20
  env: Environment;
20
21
  };
21
22
  export type LocalDevWebsocketMessage = {
@@ -10,6 +10,7 @@ export type ComponentTemplate = {
10
10
  path: string;
11
11
  label: string;
12
12
  type: string;
13
+ cliSelector?: string;
13
14
  parentComponent?: string;
14
15
  supportedAuthTypes?: string[];
15
16
  supportedDistributions?: string[];