@postxl/generators 1.12.2 → 1.13.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/dist/backend-ai/ai.generator.d.ts +18 -0
- package/dist/backend-ai/ai.generator.js +174 -0
- package/dist/backend-ai/ai.generator.js.map +1 -0
- package/dist/backend-ai/generators/ai-agent-service.generator.d.ts +4 -0
- package/dist/backend-ai/generators/ai-agent-service.generator.js +264 -0
- package/dist/backend-ai/generators/ai-agent-service.generator.js.map +1 -0
- package/dist/backend-ai/generators/ai-cache-service.generator.d.ts +1 -0
- package/dist/backend-ai/generators/ai-cache-service.generator.js +110 -0
- package/dist/backend-ai/generators/ai-cache-service.generator.js.map +1 -0
- package/dist/backend-ai/generators/ai-config.generator.d.ts +1 -0
- package/dist/backend-ai/generators/ai-config.generator.js +27 -0
- package/dist/backend-ai/generators/ai-config.generator.js.map +1 -0
- package/dist/backend-ai/generators/ai-module.generator.d.ts +2 -0
- package/dist/backend-ai/generators/ai-module.generator.js +89 -0
- package/dist/backend-ai/generators/ai-module.generator.js.map +1 -0
- package/dist/backend-ai/generators/ai-route.generator.d.ts +1 -0
- package/dist/backend-ai/generators/ai-route.generator.js +29 -0
- package/dist/backend-ai/generators/ai-route.generator.js.map +1 -0
- package/dist/backend-ai/generators/ai-tools-service.generator.d.ts +4 -0
- package/dist/backend-ai/generators/ai-tools-service.generator.js +222 -0
- package/dist/backend-ai/generators/ai-tools-service.generator.js.map +1 -0
- package/dist/backend-ai/generators/model-provider-interface.generator.d.ts +1 -0
- package/dist/backend-ai/generators/model-provider-interface.generator.js +48 -0
- package/dist/backend-ai/generators/model-provider-interface.generator.js.map +1 -0
- package/dist/backend-ai/generators/openai-model-provider-service.generator.d.ts +1 -0
- package/dist/backend-ai/generators/openai-model-provider-service.generator.js +128 -0
- package/dist/backend-ai/generators/openai-model-provider-service.generator.js.map +1 -0
- package/dist/backend-ai/index.d.ts +4 -0
- package/dist/backend-ai/index.js +40 -0
- package/dist/backend-ai/index.js.map +1 -0
- package/dist/backend-core/generators/main.generator.js +4 -3
- package/dist/backend-core/generators/main.generator.js.map +1 -1
- package/dist/backend-e2e/backend-e2e.generator.js +4 -4
- package/dist/backend-e2e/backend-e2e.generator.js.map +1 -1
- package/dist/backend-import/generators/detect-delta/detect-delta-functions.generator.js +1 -1
- package/dist/backend-router-trpc/generators/app-routes.generator.js +3 -1
- package/dist/backend-router-trpc/generators/app-routes.generator.js.map +1 -1
- package/dist/backend-router-trpc/generators/trpc-plugin.generator.js +3 -0
- package/dist/backend-router-trpc/generators/trpc-plugin.generator.js.map +1 -1
- package/dist/backend-router-trpc/generators/trpc-router-module.generator.js +2 -1
- package/dist/backend-router-trpc/generators/trpc-router-module.generator.js.map +1 -1
- package/dist/backend-router-trpc/generators/trpc-shared.generator.js +7 -1
- package/dist/backend-router-trpc/generators/trpc-shared.generator.js.map +1 -1
- package/dist/backend-router-trpc/router-trpc.generator.d.ts +2 -1
- package/dist/backend-router-trpc/router-trpc.generator.js +2 -0
- package/dist/backend-router-trpc/router-trpc.generator.js.map +1 -1
- package/dist/backend-seed/seed.generator.js +10 -1
- package/dist/backend-seed/seed.generator.js.map +1 -1
- package/dist/base/template/scripts/setup.sh +9 -4
- package/dist/base/template/sonar-project.properties +9 -1
- package/dist/devops/generators/bitbucket-pipelines-yml.generator.js +1 -0
- package/dist/devops/generators/bitbucket-pipelines-yml.generator.js.map +1 -1
- package/dist/devops/generators/e2e-yml.generator.js +35 -10
- package/dist/devops/generators/e2e-yml.generator.js.map +1 -1
- package/dist/devops/generators/jenkinsfile.generator.js +25 -1
- package/dist/devops/generators/jenkinsfile.generator.js.map +1 -1
- package/dist/e2e/template/e2e/specs/example.spec.ts-snapshots/Navigate-to-homepage-and-take-snapshot-1-chromium-linux.png +0 -0
- package/dist/frontend-actions/actions.generator.d.ts +9 -0
- package/dist/frontend-actions/actions.generator.js +111 -0
- package/dist/frontend-actions/actions.generator.js.map +1 -0
- package/dist/frontend-actions/generators/ai-action-text.utils.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/ai-action-text.utils.generator.js +52 -0
- package/dist/frontend-actions/generators/ai-action-text.utils.generator.js.map +1 -0
- package/dist/frontend-actions/generators/ai-assistant-store.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/ai-assistant-store.generator.js +230 -0
- package/dist/frontend-actions/generators/ai-assistant-store.generator.js.map +1 -0
- package/dist/frontend-actions/generators/ai-sidebar-content.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/ai-sidebar-content.generator.js +139 -0
- package/dist/frontend-actions/generators/ai-sidebar-content.generator.js.map +1 -0
- package/dist/frontend-actions/generators/ai-sidepane.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/ai-sidepane.generator.js +98 -0
- package/dist/frontend-actions/generators/ai-sidepane.generator.js.map +1 -0
- package/dist/frontend-actions/generators/base-global-actions.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/base-global-actions.generator.js +405 -0
- package/dist/frontend-actions/generators/base-global-actions.generator.js.map +1 -0
- package/dist/frontend-actions/generators/command-palette-action.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/command-palette-action.generator.js +87 -0
- package/dist/frontend-actions/generators/command-palette-action.generator.js.map +1 -0
- package/dist/frontend-actions/generators/command-palette-store.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/command-palette-store.generator.js +288 -0
- package/dist/frontend-actions/generators/command-palette-store.generator.js.map +1 -0
- package/dist/frontend-actions/generators/command-palette.generator.d.ts +5 -0
- package/dist/frontend-actions/generators/command-palette.generator.js +332 -0
- package/dist/frontend-actions/generators/command-palette.generator.js.map +1 -0
- package/dist/frontend-actions/generators/filter-utils.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/filter-utils.generator.js +50 -0
- package/dist/frontend-actions/generators/filter-utils.generator.js.map +1 -0
- package/dist/frontend-actions/generators/sidepanel-toggle.generator.d.ts +1 -0
- package/dist/frontend-actions/generators/sidepanel-toggle.generator.js +37 -0
- package/dist/frontend-actions/generators/sidepanel-toggle.generator.js.map +1 -0
- package/dist/frontend-actions/index.d.ts +4 -0
- package/dist/frontend-actions/index.js +40 -0
- package/dist/frontend-actions/index.js.map +1 -0
- package/dist/frontend-admin/admin.generator.d.ts +3 -1
- package/dist/frontend-admin/admin.generator.js +8 -1
- package/dist/frontend-admin/admin.generator.js.map +1 -1
- package/dist/frontend-admin/generators/admin-global-actions.generator.d.ts +4 -0
- package/dist/frontend-admin/generators/admin-global-actions.generator.js +152 -0
- package/dist/frontend-admin/generators/admin-global-actions.generator.js.map +1 -0
- package/dist/frontend-admin/generators/comment-sidebar.generator.js +5 -3
- package/dist/frontend-admin/generators/comment-sidebar.generator.js.map +1 -1
- package/dist/frontend-admin/generators/detail-sidebar.generator.js +40 -24
- package/dist/frontend-admin/generators/detail-sidebar.generator.js.map +1 -1
- package/dist/frontend-admin/generators/model-admin-page.generator.js +172 -11
- package/dist/frontend-admin/generators/model-admin-page.generator.js.map +1 -1
- package/dist/frontend-admin/utils.d.ts +1 -0
- package/dist/frontend-admin/utils.js +1 -0
- package/dist/frontend-admin/utils.js.map +1 -1
- package/dist/frontend-core/generators/tsconfig.generator.js +1 -0
- package/dist/frontend-core/generators/tsconfig.generator.js.map +1 -1
- package/dist/frontend-core/template/.env.example +3 -0
- package/dist/frontend-core/template/src/components/admin/table-view-panel.tsx +22 -4
- package/dist/frontend-core/template/src/components/ui/color-mode-toggle/color-mode-toggle.tsx +1 -1
- package/dist/frontend-core/template/src/lib/color.ts +6 -3
- package/dist/frontend-core/template/src/lib/config.ts +3 -1
- package/dist/frontend-tables/generators/model-table.generator.js +13 -0
- package/dist/frontend-tables/generators/model-table.generator.js.map +1 -1
- package/dist/generators.js +4 -0
- package/dist/generators.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/types/template/ai.types.ts +34 -0
- package/dist/types/types.generator.js +1 -0
- package/dist/types/types.generator.js.map +1 -1
- package/package.json +4 -4
|
@@ -600,7 +600,7 @@ export async function ${detectDelta._utils.validation.uniqueField.name}<
|
|
|
600
600
|
return undefined
|
|
601
601
|
}
|
|
602
602
|
const existingItem = await getExistingItem(value)
|
|
603
|
-
if (existingItem) {
|
|
603
|
+
if (existingItem && existingItem.id !== item.id) {
|
|
604
604
|
return { error: '${errors.nonUnique.discriminant}', fieldName, value }
|
|
605
605
|
}
|
|
606
606
|
return undefined
|
|
@@ -40,9 +40,11 @@ function generateAppRoutes({ context }) {
|
|
|
40
40
|
//
|
|
41
41
|
.from(context.trpcRouter.appRoutes._filePath)
|
|
42
42
|
.add({ name: context.trpcRouter._shared.router.name, location: context.trpcRouter._shared._filePath })
|
|
43
|
-
.add({ name: context.trpcRouter.auditLogRoute.name, location: context.trpcRouter.auditLogRoute._filePath })
|
|
43
|
+
.add({ name: context.trpcRouter.auditLogRoute.name, location: context.trpcRouter.auditLogRoute._filePath })
|
|
44
|
+
.add({ name: context.ai.route.name, location: context.ai.route.location });
|
|
44
45
|
const entries = [
|
|
45
46
|
`viewer: viewer`,
|
|
47
|
+
` ${context.ai.route.name}: ${context.ai.route.name}`,
|
|
46
48
|
` ${context.trpcRouter.auditLogRoute.name}: ${context.trpcRouter.auditLogRoute.name}`,
|
|
47
49
|
];
|
|
48
50
|
for (const model of context.models.values()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-routes.generator.js","sourceRoot":"","sources":["../../../src/backend-router-trpc/generators/app-routes.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,
|
|
1
|
+
{"version":3,"file":"app-routes.generator.js","sourceRoot":"","sources":["../../../src/backend-router-trpc/generators/app-routes.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,8CAsCC;AA1CD,6DAA8C;AAI9C,SAAgB,iBAAiB,CAAC,EAAE,OAAO,EAA8B;IACvE,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe;QACvC,EAAE;SACD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC;SAC5C,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;SACrG,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;SAC1G,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;IAE5E,MAAM,OAAO,GAAa;QACxB,gBAAgB;QAChB,KAAK,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE;QACtD,KAAK,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,KAAK,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE;KACvF,CAAA;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAA;QAChF,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;IACpE,CAAC;IACD,OAAO,QAAQ,CAAC;;;EAGhB,OAAO,CAAC,QAAQ,EAAE;;;IAGhB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;;;eAOR,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI;;;;;cAK9E,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,aAAa,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI;;GAE/F,CAAA;AACH,CAAC"}
|
|
@@ -40,6 +40,7 @@ function generateTrpc(context) {
|
|
|
40
40
|
//
|
|
41
41
|
.from(context.trpcRouter.plugin._filePath)
|
|
42
42
|
.add(context.actions.dispatcher)
|
|
43
|
+
.add(context.ai.agentService)
|
|
43
44
|
.add(context.authentication.service)
|
|
44
45
|
.add(context.authentication.types.userInfo)
|
|
45
46
|
.add(context.authentication.types.userRoles)
|
|
@@ -66,6 +67,7 @@ export class ${context.trpcRouter.plugin.name} {
|
|
|
66
67
|
private readonly viewService: ${context.view.service.name},
|
|
67
68
|
private readonly authService: ${context.authentication.service.name},
|
|
68
69
|
private readonly dispatcherService: ${context.actions.dispatcher.name},
|
|
70
|
+
private readonly aiAgentService: ${context.ai.agentService.name},
|
|
69
71
|
) {}
|
|
70
72
|
|
|
71
73
|
public async register(app: NestFastifyApplication, config: { urlPrefix: string}) {
|
|
@@ -127,6 +129,7 @@ export class ${context.trpcRouter.plugin.name} {
|
|
|
127
129
|
auth: this.authService,
|
|
128
130
|
view: this.viewService,
|
|
129
131
|
dispatcher: this.dispatcherService,
|
|
132
|
+
aiAgent: this.aiAgentService,
|
|
130
133
|
}
|
|
131
134
|
},
|
|
132
135
|
onError: (err: { error: Error }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trpc-plugin.generator.js","sourceRoot":"","sources":["../../../src/backend-router-trpc/generators/trpc-plugin.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,
|
|
1
|
+
{"version":3,"file":"trpc-plugin.generator.js","sourceRoot":"","sources":["../../../src/backend-router-trpc/generators/trpc-plugin.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,oCA0GC;AA9GD,6DAA8C;AAI9C,SAAgB,YAAY,CAAC,OAAsB;IACjD,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe;QACvC,EAAE;SACD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;SACzC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;SAC/B,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC;SAC5B,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC;SACnC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC;SAC1C,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC;SAC3C,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;SACvB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;SACzB,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;SAClG,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IAEzG,OAAO,QAAQ,CAAC;;;;;EAKhB,OAAO,CAAC,QAAQ,EAAE;;;WAGT,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI;;;;;eAK1B,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI;yCACJ,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI;;oCAEnC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;oCACzB,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI;0CAC7B,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;uCAClC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI;;;;;;;kBAOjD,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI;oFACiC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;;;+FAG5B,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6DrI,CAAA;AACF,CAAC"}
|
|
@@ -40,6 +40,7 @@ function generateTrpcRouterModule(context) {
|
|
|
40
40
|
imports
|
|
41
41
|
//
|
|
42
42
|
.add(context.actions.module)
|
|
43
|
+
.add(context.ai.module)
|
|
43
44
|
.add(context.authentication.module)
|
|
44
45
|
.add(context.view.module)
|
|
45
46
|
.add(context.trpcRouter.plugin);
|
|
@@ -50,7 +51,7 @@ ${imports.generate()}
|
|
|
50
51
|
|
|
51
52
|
|
|
52
53
|
@Module({
|
|
53
|
-
imports: [${context.actions.module.name}, ${context.authentication.module.name}, ${context.view.module.name}],
|
|
54
|
+
imports: [${context.actions.module.name}, ${context.ai.module.name}, ${context.authentication.module.name}, ${context.view.module.name}],
|
|
54
55
|
providers: [${context.trpcRouter.plugin.name}],
|
|
55
56
|
exports: [${context.trpcRouter.plugin.name}],
|
|
56
57
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trpc-router-module.generator.js","sourceRoot":"","sources":["../../../src/backend-router-trpc/generators/trpc-router-module.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,
|
|
1
|
+
{"version":3,"file":"trpc-router-module.generator.js","sourceRoot":"","sources":["../../../src/backend-router-trpc/generators/trpc-router-module.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,4DAwBC;AA5BD,6DAA8C;AAI9C,SAAgB,wBAAwB,CAAC,OAAsB;IAC7D,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAElF,OAAO;QACL,EAAE;SACD,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;SAC3B,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC;SACtB,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC;SAClC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;SACxB,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAEjC,OAAO,QAAQ,CAAC;;;EAGhB,OAAO,CAAC,QAAQ,EAAE;;;;cAIN,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;gBACxH,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI;cAChC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI;;eAE7B,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI;CAC5C,CAAA;AACD,CAAC"}
|
|
@@ -38,6 +38,7 @@ const Generator = __importStar(require("@postxl/generator"));
|
|
|
38
38
|
function generateTrpcShared(context) {
|
|
39
39
|
const imports = Generator.ImportGenerator.from(context.trpcRouter._shared._filePath)
|
|
40
40
|
.add(context.actions.dispatcher)
|
|
41
|
+
.add(context.ai.agentService)
|
|
41
42
|
.add(context.authentication.types.userInfo)
|
|
42
43
|
.add(context.authentication.types.userRoles)
|
|
43
44
|
.add(context.authentication.service)
|
|
@@ -102,7 +103,12 @@ export type ${context.trpcRouter._shared.context.name} = {
|
|
|
102
103
|
/**
|
|
103
104
|
* Dispatcher service to dispatch actions
|
|
104
105
|
*/
|
|
105
|
-
|
|
106
|
+
dispatcher: ${context.actions.dispatcher.name}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* AI agent service that executes assistant sessions.
|
|
110
|
+
*/
|
|
111
|
+
aiAgent: ${context.ai.agentService.name}
|
|
106
112
|
}
|
|
107
113
|
|
|
108
114
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trpc-shared.generator.js","sourceRoot":"","sources":["../../../src/backend-router-trpc/generators/trpc-shared.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,
|
|
1
|
+
{"version":3,"file":"trpc-shared.generator.js","sourceRoot":"","sources":["../../../src/backend-router-trpc/generators/trpc-shared.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,gDAsGC;AA1GD,6DAA8C;AAI9C,SAAgB,kBAAkB,CAAC,OAAsB;IACvD,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC;SACjF,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;SAC/B,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC;SAC5B,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC;SAC1C,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC;SAC3C,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC;SACnC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;SACvB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAE5B,OAAO,QAAQ,CAAC;;;;;;;;;;EAUhB,OAAO,CAAC,QAAQ,EAAE;;;;;cAKN,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;;;;;;;;;;;;;eAatC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI;;;;;gBAKzC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI;;;;;WAKhD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI;;;;;;;;;;;SAWzB,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI;;;;;SAKnC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;;;;;cAKpB,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;;;;;YAKjC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI;;;;wFAIgD,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI;OACvH,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,YAAY,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;;6BAEzE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;;;;;WAKzD,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI;;;eAGlC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI;;;WAG1C,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI;;eAErC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI;;;mCAGrB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;;eAE9D,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;;CAExD,CAAA;AACD,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as Generator from '@postxl/generator';
|
|
2
2
|
import { WithActions } from '../backend-actions';
|
|
3
|
+
import { WithBackendAi } from '../backend-ai';
|
|
3
4
|
import { WithBackendAuthentication } from '../backend-authentication';
|
|
4
5
|
import { WithBackend } from '../backend-core';
|
|
5
6
|
import { WithRepositories } from '../backend-repositories';
|
|
@@ -8,7 +9,7 @@ import { WithView } from '../backend-view';
|
|
|
8
9
|
import { WithBase } from '../base';
|
|
9
10
|
import { WithDecoders } from '../decoders';
|
|
10
11
|
import { WithTypes } from '../types';
|
|
11
|
-
type ContextRequirements = WithBackendAuthentication<WithUpdates<WithView<WithRepositories<WithActions<WithDecoders<WithTypes<WithBackend<WithBase<Generator.Context
|
|
12
|
+
type ContextRequirements = WithBackendAuthentication<WithBackendAi<WithUpdates<WithView<WithRepositories<WithActions<WithDecoders<WithTypes<WithBackend<WithBase<Generator.Context>>>>>>>>>>;
|
|
12
13
|
export type ContextResult = WithTrpcRouter<ContextRequirements>;
|
|
13
14
|
export type ModelContextResult = Generator.InferModelContext<ContextResult>;
|
|
14
15
|
export type WithTrpcRouter<Context> = Generator.ExtendContextAndModel<Context, {
|
|
@@ -37,6 +37,7 @@ exports.generator = exports.generatorId = void 0;
|
|
|
37
37
|
const node_path_1 = require("node:path");
|
|
38
38
|
const Generator = __importStar(require("@postxl/generator"));
|
|
39
39
|
const backend_actions_1 = require("../backend-actions");
|
|
40
|
+
const backend_ai_1 = require("../backend-ai");
|
|
40
41
|
const backend_authentication_1 = require("../backend-authentication");
|
|
41
42
|
const backend_core_1 = require("../backend-core");
|
|
42
43
|
const backend_repositories_1 = require("../backend-repositories");
|
|
@@ -67,6 +68,7 @@ exports.generator = {
|
|
|
67
68
|
backend_view_1.backendViewGeneratorId,
|
|
68
69
|
backend_update_1.backendUpdateGeneratorId,
|
|
69
70
|
backend_authentication_1.backendAuthenticationGeneratorId,
|
|
71
|
+
backend_ai_1.backendAiGeneratorId,
|
|
70
72
|
],
|
|
71
73
|
register: (context) => {
|
|
72
74
|
const moduleName = Generator.toBackendModuleName('router-trpc');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-trpc.generator.js","sourceRoot":"","sources":["../../src/backend-router-trpc/router-trpc.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAmC;AAEnC,6DAA8C;AAE9C,wDAA2E;AAC3E,sEAAuG;AACvG,kDAA+E;AAC/E,kEAA0F;AAC1F,sDAAyE;AACzE,kDAAkE;AAClE,kCAAmD;AAEnD,oCAAsD;AAEtD,4EAAqE;AACrE,sFAA8E;AAC9E,4EAAsE;AACtE,gFAAyE;AACzE,8EAAuF;AACvF,4FAAoF;AACpF,8EAAuE;
|
|
1
|
+
{"version":3,"file":"router-trpc.generator.js","sourceRoot":"","sources":["../../src/backend-router-trpc/router-trpc.generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -68,7 +68,16 @@ exports.generator = {
|
|
|
68
68
|
code: Generator.ts(`
|
|
69
69
|
// Executing seeding and initialize data
|
|
70
70
|
const seedService = app.get(SeedService)
|
|
71
|
-
|
|
71
|
+
try {
|
|
72
|
+
await seedService.seed()
|
|
73
|
+
} catch (error) {
|
|
74
|
+
if (config.data.test.isTest) {
|
|
75
|
+
logger.warn('Seeding failed in test mode, continuing without seed data')
|
|
76
|
+
logger.warn(error instanceof Error ? error.message : String(error))
|
|
77
|
+
} else {
|
|
78
|
+
throw error
|
|
79
|
+
}
|
|
80
|
+
}
|
|
72
81
|
`),
|
|
73
82
|
},
|
|
74
83
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.generator.js","sourceRoot":"","sources":["../../src/backend-seed/seed.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAmC;AAEnC,6DAA8C;AAE9C,wDAA2E;AAC3E,kDAA+G;AAC/G,sDAA+E;AAC/E,kEAA0F;AAC1F,kCAAmD;AAGnD,8EAAuE;AACvE,gFAAyE;AAY5D,QAAA,WAAW,GAAG,SAAS,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAA;AAE9D,QAAA,SAAS,GAAiC;IACrD,EAAE,EAAE,mBAAW;IACf,QAAQ,EAAE;QACR,iCAAkB;QAClB,sBAAe;QACf,2CAAyB;QACzB,6CAA8B;QAC9B,qDAA8B;QAC9B,yCAAwB;KACzB;IAED,QAAQ,EAAE,CAAsC,OAAgB,EAAiB,EAAE;QACjF,MAAM,MAAM,GAA8B;YACxC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC;YACzC,QAAQ,EAAE,SAAS,CAAC,uBAAuB,CAAC,mBAAmB,CAAC;SACjE,CAAA;QAED,MAAM,UAAU,GAAiB;YAC/B,IAAI,EAAE,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC;YAC3C,WAAW,EAAE,MAAM;YACnB,SAAS,EAAE;gBACT,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;2DAC8B,CAAC;gBACpD,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC
|
|
1
|
+
{"version":3,"file":"seed.generator.js","sourceRoot":"","sources":["../../src/backend-seed/seed.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAmC;AAEnC,6DAA8C;AAE9C,wDAA2E;AAC3E,kDAA+G;AAC/G,sDAA+E;AAC/E,kEAA0F;AAC1F,kCAAmD;AAGnD,8EAAuE;AACvE,gFAAyE;AAY5D,QAAA,WAAW,GAAG,SAAS,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAA;AAE9D,QAAA,SAAS,GAAiC;IACrD,EAAE,EAAE,mBAAW;IACf,QAAQ,EAAE;QACR,iCAAkB;QAClB,sBAAe;QACf,2CAAyB;QACzB,6CAA8B;QAC9B,qDAA8B;QAC9B,yCAAwB;KACzB;IAED,QAAQ,EAAE,CAAsC,OAAgB,EAAiB,EAAE;QACjF,MAAM,MAAM,GAA8B;YACxC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC;YACzC,QAAQ,EAAE,SAAS,CAAC,uBAAuB,CAAC,mBAAmB,CAAC;SACjE,CAAA;QAED,MAAM,UAAU,GAAiB;YAC/B,IAAI,EAAE,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC;YAC3C,WAAW,EAAE,MAAM;YACnB,SAAS,EAAE;gBACT,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;2DAC8B,CAAC;gBACpD,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;;;;;;;;;;;;;WAahB,CAAC;aACL;SACF,CAAA;QACD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACxC,MAAM,OAAO,GAA8B;YACzC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC;YAC1C,QAAQ,EAAE,SAAS,CAAC,uBAAuB,CAAC,oBAAoB,CAAC;SAClE,CAAA;QAED,MAAM,IAAI,GAAuB,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;QACpD,OAAO,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAA;IAC7B,CAAC;IAED,QAAQ,EAAE,KAAK,EAAiC,OAAgB,EAAoB,EAAE;QACpF,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,iBAAiB,EAAE,CAAA;QAChD,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAA,4CAAmB,EAAC,OAAO,CAAC,CAAC,CAAA;QACvF,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAA,0CAAkB,EAAC,OAAO,CAAC,CAAC,CAAA;QAErF,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,iBAAiB,EAAE,CAAA;QAC7C,GAAG,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAA;QAErD,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAA,mBAAO,EAAC,SAAS,EAAE,YAAY,CAAC,EAAE,CAAC,CAAA;QAEpE,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAA;QACnE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAA;QAEnE,OAAO,OAAO,CAAA;IAChB,CAAC;CACF,CAAA"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
|
+
set -euo pipefail
|
|
2
3
|
|
|
3
|
-
# Install all packages
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
# Install all packages unless explicitly skipped (e.g. CI already installed workspace deps).
|
|
5
|
+
if [[ "${SKIP_INSTALL:-false}" != "true" ]]; then
|
|
6
|
+
echo "📦 Installing packages..."
|
|
7
|
+
pnpm i
|
|
8
|
+
else
|
|
9
|
+
echo "⏭️ Skipping package install (SKIP_INSTALL=true)."
|
|
10
|
+
fi
|
|
6
11
|
|
|
7
12
|
# Copy the .env.example file to .env if it doesn't exist and replace the TURBO_TOKEN with the user's token
|
|
8
13
|
if [[ ! -f .env ]]; then
|
|
@@ -22,4 +27,4 @@ if [[ ! -f frontend/.env ]]; then
|
|
|
22
27
|
cp frontend/.env.example frontend/.env
|
|
23
28
|
fi
|
|
24
29
|
|
|
25
|
-
echo "🚀 Done!"
|
|
30
|
+
echo "🚀 Done!"
|
|
@@ -90,7 +90,7 @@ sonar.cpd.exclusions=\
|
|
|
90
90
|
**/*.spec.ts, **/*.spec.js, **/*.spec.tsx, \
|
|
91
91
|
**/*.test.js, **/*.test.ts, **/*.test.tsx
|
|
92
92
|
|
|
93
|
-
sonar.issue.ignore.multicriteria=e1,e3,e4,e5,e6a,e6b,e7
|
|
93
|
+
sonar.issue.ignore.multicriteria=e1,e3,e4,e5,e6a,e6b,e7,e9a,e9b
|
|
94
94
|
|
|
95
95
|
# Ignore rule typescript:S2301 (https://sonarcloud.io/organizations/postxl/rules?open=typescript%3AS2301&rule_key=typescript%3AS2301)
|
|
96
96
|
# The rule states that "Methods should not contain selector parameters", e.g.
|
|
@@ -130,3 +130,11 @@ sonar.issue.ignore.multicriteria.e6b.resourceKey=frontend/**/*.ts
|
|
|
130
130
|
# // NOSONAR comments cannot be used there due to Prettier formatting.
|
|
131
131
|
sonar.issue.ignore.multicriteria.e7.ruleKey=typescript:S7738
|
|
132
132
|
sonar.issue.ignore.multicriteria.e7.resourceKey=backend/**/*.ts
|
|
133
|
+
|
|
134
|
+
# Rule typescript:S3358 is "Ternary operators should not be nested" -> https://sonarcloud.io/project/issues?pullRequest=569&open=AZxoto2COu8TskptxElG&id=PostXL_PXL
|
|
135
|
+
# In a lot of situation, an expression is cleaner (or in the case of TSX, required) than an if/else statement. Using nested ternary operators, formatted
|
|
136
|
+
# properly with Prettier is hence a more practical solution (and has similar readability).
|
|
137
|
+
sonar.issue.ignore.multicriteria.e9a.ruleKey=typescript:S3358
|
|
138
|
+
sonar.issue.ignore.multicriteria.e9a.resourceKey=**/*.ts
|
|
139
|
+
sonar.issue.ignore.multicriteria.e9b.ruleKey=typescript:S3358
|
|
140
|
+
sonar.issue.ignore.multicriteria.e9b.resourceKey=**/*.tsx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitbucket-pipelines-yml.generator.js","sourceRoot":"","sources":["../../../src/devops/generators/bitbucket-pipelines-yml.generator.ts"],"names":[],"mappings":";;AAEA,
|
|
1
|
+
{"version":3,"file":"bitbucket-pipelines-yml.generator.js","sourceRoot":"","sources":["../../../src/devops/generators/bitbucket-pipelines-yml.generator.ts"],"names":[],"mappings":";;AAEA,sEAkGC;AAlGD,SAAgB,6BAA6B,CAAC,EAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,EAChB,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,GACV;IACpB,OAAO,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA4BL,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAkC7B,QAAQ,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;YAWvD,QAAQ,CAAC,CAAC,CAAC,qBAAqB,IAAI,oDAAoD,CAAC,CAAC,CAAC,EAAE;8BAC3E,IAAI;8BACJ,IAAI;;;;;;;;;;;;;;;;;;CAkBjC,CAAA;AACD,CAAC;AAED,MAAM,aAAa,GAAG;;;;;CAKrB,CAAA"}
|
|
@@ -49,9 +49,20 @@ function generateE2EYaml(context) {
|
|
|
49
49
|
${database ? databaseSetup(connectionString) : ''}
|
|
50
50
|
|
|
51
51
|
- name: Start backend
|
|
52
|
-
run:
|
|
52
|
+
run: |
|
|
53
|
+
pnpm e2e:coverage:stateless > backend.log 2>&1 &
|
|
54
|
+
echo $! > backend.pid
|
|
55
|
+
sleep 5
|
|
56
|
+
if ! ps -p $(cat backend.pid) > /dev/null 2>&1; then
|
|
57
|
+
echo "Backend process exited early."
|
|
58
|
+
echo "Backend Logs:"
|
|
59
|
+
cat backend.log || true
|
|
60
|
+
exit 1
|
|
61
|
+
fi
|
|
53
62
|
working-directory: backend
|
|
54
|
-
|
|
63
|
+
env:
|
|
64
|
+
AI_ENABLED: 'false'
|
|
65
|
+
${database ? `DATABASE_CONNECTION: '${connectionString}'` : ''}
|
|
55
66
|
|
|
56
67
|
- name: Start frontend
|
|
57
68
|
run: pnpm e2e:ci > frontend.log 2>&1 &
|
|
@@ -66,10 +77,17 @@ function generateE2EYaml(context) {
|
|
|
66
77
|
sleep 30
|
|
67
78
|
|
|
68
79
|
echo "Backend Logs:"
|
|
69
|
-
cat backend/backend.log
|
|
80
|
+
cat backend/backend.log || true
|
|
81
|
+
|
|
82
|
+
echo "Backend Process:"
|
|
83
|
+
if [ -f backend/backend.pid ]; then
|
|
84
|
+
ps -p $(cat backend/backend.pid) -f || true
|
|
85
|
+
else
|
|
86
|
+
echo "backend.pid not found"
|
|
87
|
+
fi
|
|
70
88
|
|
|
71
89
|
echo "Frontend Logs:"
|
|
72
|
-
cat frontend/frontend.log
|
|
90
|
+
cat frontend/frontend.log || true
|
|
73
91
|
|
|
74
92
|
- name: Wait for Backend to be ready
|
|
75
93
|
run: |
|
|
@@ -95,6 +113,16 @@ function generateE2EYaml(context) {
|
|
|
95
113
|
|
|
96
114
|
echo "$url is ready!"
|
|
97
115
|
|
|
116
|
+
- name: Dump backend logs on failure
|
|
117
|
+
if: \${{ failure() }}
|
|
118
|
+
run: |
|
|
119
|
+
echo "Backend failed to start. Dumping backend log tail:"
|
|
120
|
+
tail -n 400 backend/backend.log || true
|
|
121
|
+
echo "Backend process info:"
|
|
122
|
+
if [ -f backend/backend.pid ]; then
|
|
123
|
+
ps -p $(cat backend/backend.pid) -f || true
|
|
124
|
+
fi
|
|
125
|
+
|
|
98
126
|
- name: Wait for Frontend to be ready
|
|
99
127
|
run: |
|
|
100
128
|
retry=0
|
|
@@ -184,14 +212,11 @@ const postgresContainerSetup = ({ username, password, database }) => `
|
|
|
184
212
|
--health-timeout 5s
|
|
185
213
|
--health-retries 5
|
|
186
214
|
`;
|
|
187
|
-
const databaseConnectionEnv = (connectionString) => `
|
|
188
|
-
env:
|
|
189
|
-
# We need to use postgres service name as the host when running in a container!
|
|
190
|
-
DATABASE_CONNECTION: '${connectionString}'
|
|
191
|
-
`;
|
|
192
215
|
const databaseSetup = (connectionString) => `
|
|
193
216
|
- name: Setup Test Database
|
|
194
217
|
run: pnpm prisma migrate dev
|
|
195
|
-
|
|
218
|
+
env:
|
|
219
|
+
# We need to use postgres service name as the host when running in a container!
|
|
220
|
+
DATABASE_CONNECTION: '${connectionString}'
|
|
196
221
|
`;
|
|
197
222
|
//# sourceMappingURL=e2e-yml.generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"e2e-yml.generator.js","sourceRoot":"","sources":["../../../src/devops/generators/e2e-yml.generator.ts"],"names":[],"mappings":";;AAEA,
|
|
1
|
+
{"version":3,"file":"e2e-yml.generator.js","sourceRoot":"","sources":["../../../src/devops/generators/e2e-yml.generator.ts"],"names":[],"mappings":";;AAEA,0CAoMC;AApMD,SAAgB,eAAe,CAAC,OAA4B;IAC1D,MAAM,EACJ,MAAM,EAAE,EAAE,QAAQ,EAAE,GACrB,GAAG,OAAO,CAAA;IACX,0FAA0F;IAC1F,MAAM,gBAAgB,GAAG,gDAAgD,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IAE9F,OAAO,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;QAqBT,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;UAoB9C,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;cAgB3C,QAAQ,CAAC,CAAC,CAAC,yBAAyB,gBAAgB,GAAG,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmIzE,CAAA;AACD,CAAC;AAED,MAAM,sBAAsB,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAkB,EAAE,EAAE,CAAC;;;;;6BAKxD,QAAQ;iCACJ,QAAQ;2BACd,QAAQ;;;;;;;;;CASlC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,gBAAwB,EAAE,EAAE,CAAC;;;;;oCAKhB,gBAAgB;CACnD,CAAA"}
|
|
@@ -56,6 +56,29 @@ function generateJenkinsfile({ devOps: { database, keycloak, useS3 }, schema: {
|
|
|
56
56
|
-e AWS_FILE_PREFIX=\${AWS_FILE_PREFIX} \\
|
|
57
57
|
-e AWS_REGION=\${AWS_REGION} \\`
|
|
58
58
|
: '';
|
|
59
|
+
const aiEnv = `
|
|
60
|
+
AI_ENABLED = "false"
|
|
61
|
+
AI_OPENAI_KEY = ""
|
|
62
|
+
AI_OPENAI_KEYS = ""
|
|
63
|
+
AI_OPENAI_MODEL = "gpt-4.1-mini"
|
|
64
|
+
AI_OPENAI_TIMEOUT_MS = "20000"
|
|
65
|
+
AI_RATE_LIMIT_WINDOW_MS = "60000"
|
|
66
|
+
AI_RATE_LIMIT_MAX_REQUESTS = "120"
|
|
67
|
+
AI_CONVERSATION_TTL_MS = "900000"
|
|
68
|
+
AI_CONVERSATION_CACHE_MAX_SIZE = "500"
|
|
69
|
+
AI_MAX_INTERNAL_TOOL_STEPS = "12"
|
|
70
|
+
`;
|
|
71
|
+
const aiRunEnv = `
|
|
72
|
+
-e AI_ENABLED=\${AI_ENABLED} \\
|
|
73
|
+
-e AI_OPENAI_KEY=\${AI_OPENAI_KEY} \\
|
|
74
|
+
-e AI_OPENAI_KEYS=\${AI_OPENAI_KEYS} \\
|
|
75
|
+
-e AI_OPENAI_MODEL=\${AI_OPENAI_MODEL} \\
|
|
76
|
+
-e AI_OPENAI_TIMEOUT_MS=\${AI_OPENAI_TIMEOUT_MS} \\
|
|
77
|
+
-e AI_RATE_LIMIT_WINDOW_MS=\${AI_RATE_LIMIT_WINDOW_MS} \\
|
|
78
|
+
-e AI_RATE_LIMIT_MAX_REQUESTS=\${AI_RATE_LIMIT_MAX_REQUESTS} \\
|
|
79
|
+
-e AI_CONVERSATION_TTL_MS=\${AI_CONVERSATION_TTL_MS} \\
|
|
80
|
+
-e AI_CONVERSATION_CACHE_MAX_SIZE=\${AI_CONVERSATION_CACHE_MAX_SIZE} \\
|
|
81
|
+
-e AI_MAX_INTERNAL_TOOL_STEPS=\${AI_MAX_INTERNAL_TOOL_STEPS} \\`;
|
|
59
82
|
return /*Jenkinsfile*/ `
|
|
60
83
|
def secrets = [${dbSecrets}${keycloakSecrets}
|
|
61
84
|
[envVar: 'TURBO_TOKEN', secretRef: 'op://PostXL service/Turborepo Cache Token/password'],
|
|
@@ -82,7 +105,7 @@ pipeline {
|
|
|
82
105
|
PORT_MAPPING_BACKEND = "4011:\${API_PORT}"
|
|
83
106
|
FRONTEND_URL = "https://${slug}.postxl.com"
|
|
84
107
|
PORT_MAPPING_FRONTEND = "4010:8080"
|
|
85
|
-
${keycloakEnv}${s3Env}
|
|
108
|
+
${keycloakEnv}${s3Env}${aiEnv}
|
|
86
109
|
XLPORT_APIKEY = "pass123"
|
|
87
110
|
}
|
|
88
111
|
stages{
|
|
@@ -125,6 +148,7 @@ pipeline {
|
|
|
125
148
|
-e API_URL=\${API_URL} \\
|
|
126
149
|
-e API_PORT=\${API_PORT} \\
|
|
127
150
|
-e APP_SECRET=\${APP_SECRET} \\${dbEnv}${keycloakRunEnv}${s3RunEnv}
|
|
151
|
+
${aiRunEnv}
|
|
128
152
|
-e XLPORT_APIKEY=\${XLPORT_APIKEY} \\
|
|
129
153
|
-p 0.0.0.0:\${PORT_MAPPING_BACKEND} \\
|
|
130
154
|
\${REGISTRY}/\${PROJECT_NAME}_backend:latest"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jenkinsfile.generator.js","sourceRoot":"","sources":["../../../src/devops/generators/jenkinsfile.generator.ts"],"names":[],"mappings":";;AAEA,
|
|
1
|
+
{"version":3,"file":"jenkinsfile.generator.js","sourceRoot":"","sources":["../../../src/devops/generators/jenkinsfile.generator.ts"],"names":[],"mappings":";;AAEA,kDAmLC;AAnLD,SAAgB,mBAAmB,CAAC,EAClC,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EACrC,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GACT;IACpB,iFAAiF;IACjF,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACtC,MAAM,SAAS,GAAG,QAAQ;QACxB,CAAC,CAAC;mFAC6E,IAAI;mFACJ,IAAI;KAClF;QACD,CAAC,CAAC,EAAE,CAAA;IAEN,MAAM,eAAe,GAAG,QAAQ;QAC9B,CAAC,CAAC;oGAC8F,IAAI;KACnG;QACD,CAAC,CAAC,EAAE,CAAA;IAEN,MAAM,WAAW,GAAG,QAAQ;QAC1B,CAAC,CAAC;;gCAE0B,IAAI;4BACR,IAAI;;;SAGvB;QACL,CAAC,CAAC,EAAE,CAAA;IAEN,MAAM,KAAK,GAAG,QAAQ;QACpB,CAAC,CAAC;wIACkI;QACpI,CAAC,CAAC,EAAE,CAAA;IAEN,MAAM,cAAc,GAAG,QAAQ;QAC7B,CAAC,CAAC;;;;;;0GAMoG;QACtG,CAAC,CAAC,EAAE,CAAA;IAEN,MAAM,sBAAsB,GAAG,QAAQ;QACrC,CAAC,CAAC;;;sFAGgF;QAClF,CAAC,CAAC,EAAE,CAAA;IAEN,MAAM,KAAK,GAAG,KAAK;QACjB,CAAC,CAAC;;;;SAIG;QACL,CAAC,CAAC,EAAE,CAAA;IAEN,MAAM,QAAQ,GAAG,KAAK;QACpB,CAAC,CAAC;;;sEAGgE;QAClE,CAAC,CAAC,EAAE,CAAA;IAEN,MAAM,KAAK,GAAG;;;;;;;;;;;SAWP,CAAA;IAEP,MAAM,QAAQ,GAAG;;;;;;;;;;sGAUmF,CAAA;IAEpG,OAAO,eAAe,CAAC;iBACR,SAAS,GAAG,eAAe;;;;;;;;;;;;;;0BAclB,IAAI;;;;;;6BAMD,IAAI;;;kCAGC,IAAI;;UAE5B,WAAW,GAAG,KAAK,GAAG,KAAK;;;;;;;sBAOf,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,GAAG;;;;;;;;sBAQvD,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;uEA2BN,KAAK,GAAG,cAAc,GAAG,QAAQ;wCAChE,QAAQ;;;;;;;;4EAQ4B,sBAAsB;;;;;;;;;;CAUjG,CAAA;AACD,CAAC"}
|
|
Binary file
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as Generator from '@postxl/generator';
|
|
2
|
+
export type WithFrontendActions<Context extends Generator.Context> = Generator.ExtendContext<Context, {
|
|
3
|
+
frontendActions: {
|
|
4
|
+
commandPalette: Generator.ImportableFunction;
|
|
5
|
+
globalActionHooks: Generator.ImportableFunction[];
|
|
6
|
+
};
|
|
7
|
+
}>;
|
|
8
|
+
export declare const generatorId: string & import("zod").$brand<"PXL.GeneratorInterfaceId">;
|
|
9
|
+
export declare const generator: Generator.GeneratorInterface;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.generator = exports.generatorId = void 0;
|
|
37
|
+
const Generator = __importStar(require("@postxl/generator"));
|
|
38
|
+
const backend_router_trpc_1 = require("../backend-router-trpc");
|
|
39
|
+
const base_1 = require("../base");
|
|
40
|
+
const frontend_core_1 = require("../frontend-core");
|
|
41
|
+
const frontend_trpc_client_1 = require("../frontend-trpc-client");
|
|
42
|
+
const ai_action_text_utils_generator_1 = require("./generators/ai-action-text.utils.generator");
|
|
43
|
+
const ai_assistant_store_generator_1 = require("./generators/ai-assistant-store.generator");
|
|
44
|
+
const ai_sidebar_content_generator_1 = require("./generators/ai-sidebar-content.generator");
|
|
45
|
+
const ai_sidepane_generator_1 = require("./generators/ai-sidepane.generator");
|
|
46
|
+
const base_global_actions_generator_1 = require("./generators/base-global-actions.generator");
|
|
47
|
+
const command_palette_generator_1 = require("./generators/command-palette.generator");
|
|
48
|
+
const command_palette_action_generator_1 = require("./generators/command-palette-action.generator");
|
|
49
|
+
const command_palette_store_generator_1 = require("./generators/command-palette-store.generator");
|
|
50
|
+
const filter_utils_generator_1 = require("./generators/filter-utils.generator");
|
|
51
|
+
const sidepanel_toggle_generator_1 = require("./generators/sidepanel-toggle.generator");
|
|
52
|
+
exports.generatorId = Generator.toGeneratorInterfaceId('frontend-actions');
|
|
53
|
+
exports.generator = {
|
|
54
|
+
id: exports.generatorId,
|
|
55
|
+
requires: [base_1.baseGeneratorId, frontend_core_1.frontendGeneratorId, backend_router_trpc_1.backendTrpcRouterGeneratorId, frontend_trpc_client_1.frontendTrpcClientGeneratorId],
|
|
56
|
+
register: (context) => {
|
|
57
|
+
const commandPalette = {
|
|
58
|
+
name: Generator.toFunctionName('CommandPalette'),
|
|
59
|
+
location: Generator.toBackendModuleLocation('@app-actions/command-palette'),
|
|
60
|
+
};
|
|
61
|
+
const baseGlobalActions = {
|
|
62
|
+
name: Generator.toFunctionName('useBaseGlobalActions'),
|
|
63
|
+
location: Generator.toBackendModuleLocation('@app-actions/base-global.actions'),
|
|
64
|
+
};
|
|
65
|
+
return {
|
|
66
|
+
...context,
|
|
67
|
+
frontendActions: {
|
|
68
|
+
commandPalette,
|
|
69
|
+
globalActionHooks: [baseGlobalActions],
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
},
|
|
73
|
+
generate: (context) => {
|
|
74
|
+
context.vfs.write('frontend/src/actions/command-palette-action.ts', (0, command_palette_action_generator_1.generateCommandPaletteAction)());
|
|
75
|
+
context.vfs.write('frontend/src/actions/command-palette-store.ts', (0, command_palette_store_generator_1.generateCommandPaletteStore)());
|
|
76
|
+
context.vfs.write('frontend/src/actions/ai-assistant-store.ts', (0, ai_assistant_store_generator_1.generateAiAssistantStore)());
|
|
77
|
+
context.vfs.write('frontend/src/actions/ai-action-text.utils.ts', (0, ai_action_text_utils_generator_1.generateAiActionTextUtils)());
|
|
78
|
+
context.vfs.write('frontend/src/actions/ai-sidebar-content.tsx', (0, ai_sidebar_content_generator_1.generateAiSidebarContent)());
|
|
79
|
+
context.vfs.write('frontend/src/actions/ai-sidepane.tsx', (0, ai_sidepane_generator_1.generateAiSidepane)());
|
|
80
|
+
context.vfs.write('frontend/src/actions/sidepanel-toggle.tsx', (0, sidepanel_toggle_generator_1.generateSidepanelToggle)());
|
|
81
|
+
context.vfs.write('frontend/src/actions/base-global.actions.tsx', (0, base_global_actions_generator_1.generateBaseGlobalActions)());
|
|
82
|
+
context.vfs.write('frontend/src/actions/command-palette.tsx', (0, command_palette_generator_1.generateCommandPalette)({ context }));
|
|
83
|
+
context.vfs.write('frontend/src/lib/command-palette-filter.utils.ts', (0, filter_utils_generator_1.generateFilterUtils)());
|
|
84
|
+
const rootDocumentPath = 'frontend/src/pages/root-document.tsx';
|
|
85
|
+
const rootDocument = context.vfs.get(rootDocumentPath);
|
|
86
|
+
if (typeof rootDocument === 'string') {
|
|
87
|
+
let content = rootDocument;
|
|
88
|
+
if (!content.includes("import { CommandPalette } from '@app-actions/command-palette'")) {
|
|
89
|
+
content = content.replace("import { APP_CONFIG } from '@lib/config'", "import { CommandPalette } from '@app-actions/command-palette'\nimport { APP_CONFIG } from '@lib/config'");
|
|
90
|
+
}
|
|
91
|
+
if (!content.includes("import { AiSidepane } from '@app-actions/ai-sidepane'")) {
|
|
92
|
+
content = content.replace("import { CommandPalette } from '@app-actions/command-palette'", "import { AiSidepane } from '@app-actions/ai-sidepane'\nimport { CommandPalette } from '@app-actions/command-palette'");
|
|
93
|
+
}
|
|
94
|
+
if (!content.includes("import { SidepanelToggle } from '@app-actions/sidepanel-toggle'")) {
|
|
95
|
+
content = content.replace("import { AiSidepane } from '@app-actions/ai-sidepane'", "import { AiSidepane } from '@app-actions/ai-sidepane'\nimport { SidepanelToggle } from '@app-actions/sidepanel-toggle'");
|
|
96
|
+
}
|
|
97
|
+
if (!content.includes('<CommandPalette />')) {
|
|
98
|
+
content = content.replace('<Outlet />', '<Outlet />\n <CommandPalette />');
|
|
99
|
+
}
|
|
100
|
+
if (!content.includes('<AiSidepane />')) {
|
|
101
|
+
content = content.replace('<CommandPalette />', '<CommandPalette />\n <AiSidepane />');
|
|
102
|
+
}
|
|
103
|
+
if (!content.includes('<SidepanelToggle />')) {
|
|
104
|
+
content = content.replace('<AiSidepane />', '<AiSidepane />\n <SidepanelToggle />');
|
|
105
|
+
}
|
|
106
|
+
context.vfs.write(rootDocumentPath, content);
|
|
107
|
+
}
|
|
108
|
+
return context;
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=actions.generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.generator.js","sourceRoot":"","sources":["../../src/frontend-actions/actions.generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function generateAiActionTextUtils(): string;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateAiActionTextUtils = generateAiActionTextUtils;
|
|
4
|
+
function generateAiActionTextUtils() {
|
|
5
|
+
return `export const toTitle = (value: string): string =>
|
|
6
|
+
value.length > 0 ? value.charAt(0).toUpperCase() + value.slice(1) : value
|
|
7
|
+
|
|
8
|
+
export const humanizeToken = (value: string): string =>
|
|
9
|
+
value
|
|
10
|
+
.replaceAll(/([A-Z])([A-Z][a-z])/g, '$1 $2')
|
|
11
|
+
.replaceAll(/([a-z])([A-Z])/g, '$1 $2')
|
|
12
|
+
.replaceAll(/[_-]+/g, ' ')
|
|
13
|
+
.replaceAll(/\\s+/g, ' ')
|
|
14
|
+
.trim()
|
|
15
|
+
|
|
16
|
+
export const formatInputValue = (value: unknown): string => {
|
|
17
|
+
if (value === undefined || value === null) {
|
|
18
|
+
return ''
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (typeof value === 'string') {
|
|
22
|
+
const trimmed = value.trim()
|
|
23
|
+
return trimmed.length > 0 ? '"' + trimmed + '"' : ''
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (typeof value === 'number' || typeof value === 'boolean') {
|
|
27
|
+
return String(value)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (Array.isArray(value)) {
|
|
31
|
+
const entries = value.map((entry) => formatInputValue(entry)).filter((entry) => entry.length > 0)
|
|
32
|
+
return entries.join(', ')
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (typeof value === 'object') {
|
|
36
|
+
const entries = Object.entries(value as Record<string, unknown>)
|
|
37
|
+
.map(([key, entry]) => {
|
|
38
|
+
const formatted = formatInputValue(entry)
|
|
39
|
+
if (!formatted) {
|
|
40
|
+
return ''
|
|
41
|
+
}
|
|
42
|
+
return humanizeToken(key) + ': ' + formatted
|
|
43
|
+
})
|
|
44
|
+
.filter((entry) => entry.length > 0)
|
|
45
|
+
return entries.join(', ')
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return ''
|
|
49
|
+
}
|
|
50
|
+
`;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=ai-action-text.utils.generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-action-text.utils.generator.js","sourceRoot":"","sources":["../../../src/frontend-actions/generators/ai-action-text.utils.generator.ts"],"names":[],"mappings":";;AAAA,8DA+CC;AA/CD,SAAgB,yBAAyB;IACvC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CR,CAAA;AACD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function generateAiAssistantStore(): string;
|