@aws/nx-plugin 1.0.0-rc.54 → 1.0.0-rc.56
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/migrations.json +50 -0
- package/package.json +1 -1
- package/src/agentcore-gateway/gateway-connection/generator.js +3 -1
- package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -1
- package/src/agentcore-gateway/generator.d.ts +49 -1
- package/src/agentcore-gateway/generator.js +55 -22
- package/src/agentcore-gateway/generator.js.map +1 -1
- package/src/agentcore-gateway/mcp-connection/generator.js +3 -1
- package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -1
- package/src/infra/app/__snapshots__/generator.spec.ts.snap +2 -0
- package/src/infra/app/generator.d.ts +43 -0
- package/src/infra/app/generator.js +47 -18
- package/src/infra/app/generator.js.map +1 -1
- package/src/init/generator.d.ts +13 -0
- package/src/init/generator.js +14 -3
- package/src/init/generator.js.map +1 -1
- package/src/migrations/latest/backfill-generator-metadata/migration.d.ts +96 -0
- package/src/migrations/latest/backfill-generator-metadata/migration.js +670 -0
- package/src/migrations/latest/backfill-generator-metadata/migration.js.map +1 -0
- package/src/migrations/latest/dynamodb-local-remove-optimize-flag/migration.d.ts +6 -0
- package/src/migrations/latest/dynamodb-local-remove-optimize-flag/migration.js +89 -0
- package/src/migrations/latest/dynamodb-local-remove-optimize-flag/migration.js.map +1 -0
- package/src/migrations/latest/modernize-function-props-cast/migration.js +0 -1
- package/src/migrations/latest/modernize-function-props-cast/migration.js.map +1 -1
- package/src/migrations/latest/order-access-log-delivery-after-bucket-policy/migration.js +0 -1
- package/src/migrations/latest/order-access-log-delivery-after-bucket-policy/migration.js.map +1 -1
- package/src/migrations/latest/restrict-cors-to-custom-domains/migration.js +0 -2
- package/src/migrations/latest/restrict-cors-to-custom-domains/migration.js.map +1 -1
- package/src/migrations/latest/terraform-bootstrap-adopt-existing-bucket/migration.js +0 -1
- package/src/migrations/latest/terraform-bootstrap-adopt-existing-bucket/migration.js.map +1 -1
- package/src/migrations/latest/user-identity-waf-allow-localhost-callback/migration.js +0 -2
- package/src/migrations/latest/user-identity-waf-allow-localhost-callback/migration.js.map +1 -1
- package/src/preset/generator.d.ts +13 -0
- package/src/preset/generator.js +12 -3
- package/src/preset/generator.js.map +1 -1
- package/src/py/agent/a2a-connection/generator.d.ts +24 -0
- package/src/py/agent/a2a-connection/generator.js +49 -20
- package/src/py/agent/a2a-connection/generator.js.map +1 -1
- package/src/py/agent/gateway-connection/generator.d.ts +23 -0
- package/src/py/agent/gateway-connection/generator.js +45 -11
- package/src/py/agent/gateway-connection/generator.js.map +1 -1
- package/src/py/agent/generator.d.ts +146 -1
- package/src/py/agent/generator.js +173 -76
- package/src/py/agent/generator.js.map +1 -1
- package/src/py/agent/mcp-connection/generator.d.ts +23 -0
- package/src/py/agent/mcp-connection/generator.js +45 -11
- package/src/py/agent/mcp-connection/generator.js.map +1 -1
- package/src/py/agent/react-connection/generator.d.ts +146 -0
- package/src/py/agent/react-connection/generator.js +27 -4
- package/src/py/agent/react-connection/generator.js.map +1 -1
- package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +0 -2
- package/src/py/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +18 -0
- package/src/py/dynamodb/agent-connection/generator.js +7 -1
- package/src/py/dynamodb/agent-connection/generator.js.map +1 -1
- package/src/py/dynamodb/fast-api-connection/__snapshots__/generator.spec.ts.snap +9 -0
- package/src/py/dynamodb/fast-api-connection/generator.js +3 -1
- package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -1
- package/src/py/dynamodb/generator.d.ts +29 -0
- package/src/py/dynamodb/generator.js +32 -12
- package/src/py/dynamodb/generator.js.map +1 -1
- package/src/py/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +18 -0
- package/src/py/dynamodb/mcp-server-connection/generator.js +7 -1
- package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -1
- package/src/py/fast-api/generator.d.ts +63 -0
- package/src/py/fast-api/generator.js +58 -23
- package/src/py/fast-api/generator.js.map +1 -1
- package/src/py/fast-api/react/generator.d.ts +16 -1
- package/src/py/fast-api/react/generator.js +15 -3
- package/src/py/fast-api/react/generator.js.map +1 -1
- package/src/py/lambda-function/generator.d.ts +21 -0
- package/src/py/lambda-function/generator.js +29 -10
- package/src/py/lambda-function/generator.js.map +1 -1
- package/src/py/mcp-server/generator.d.ts +60 -0
- package/src/py/mcp-server/generator.js +62 -25
- package/src/py/mcp-server/generator.js.map +1 -1
- package/src/py/project/generator.d.ts +13 -0
- package/src/py/project/generator.js +29 -10
- package/src/py/project/generator.js.map +1 -1
- package/src/py/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +19 -0
- package/src/py/rdb/agent-connection/generator.js +7 -1
- package/src/py/rdb/agent-connection/generator.js.map +1 -1
- package/src/py/rdb/fast-api-connection/__snapshots__/generator.spec.ts.snap +7 -0
- package/src/py/rdb/fast-api-connection/generator.js +3 -1
- package/src/py/rdb/fast-api-connection/generator.js.map +1 -1
- package/src/py/rdb/generator.d.ts +89 -0
- package/src/py/rdb/generator.js +88 -40
- package/src/py/rdb/generator.js.map +1 -1
- package/src/py/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +18 -0
- package/src/py/rdb/mcp-server-connection/generator.js +7 -1
- package/src/py/rdb/mcp-server-connection/generator.js.map +1 -1
- package/src/smithy/project/generator.d.ts +7 -0
- package/src/smithy/project/generator.js +8 -2
- package/src/smithy/project/generator.js.map +1 -1
- package/src/smithy/react-connection/generator.d.ts +15 -0
- package/src/smithy/react-connection/generator.js +17 -3
- package/src/smithy/react-connection/generator.js.map +1 -1
- package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +1 -0
- package/src/smithy/ts/api/generator.d.ts +79 -0
- package/src/smithy/ts/api/generator.js +77 -33
- package/src/smithy/ts/api/generator.js.map +1 -1
- package/src/terraform/project/generator.d.ts +50 -0
- package/src/terraform/project/generator.js +63 -17
- package/src/terraform/project/generator.js.map +1 -1
- package/src/trpc/backend/generator.d.ts +84 -0
- package/src/trpc/backend/generator.js +98 -38
- package/src/trpc/backend/generator.js.map +1 -1
- package/src/trpc/react/generator.d.ts +37 -0
- package/src/trpc/react/generator.js +63 -26
- package/src/trpc/react/generator.js.map +1 -1
- package/src/ts/agent/a2a-connection/generator.d.ts +46 -0
- package/src/ts/agent/a2a-connection/generator.js +53 -16
- package/src/ts/agent/a2a-connection/generator.js.map +1 -1
- package/src/ts/agent/gateway-connection/generator.d.ts +37 -0
- package/src/ts/agent/gateway-connection/generator.js +41 -14
- package/src/ts/agent/gateway-connection/generator.js.map +1 -1
- package/src/ts/agent/generator.d.ts +162 -0
- package/src/ts/agent/generator.js +166 -75
- package/src/ts/agent/generator.js.map +1 -1
- package/src/ts/agent/mcp-connection/generator.d.ts +37 -0
- package/src/ts/agent/mcp-connection/generator.js +41 -14
- package/src/ts/agent/mcp-connection/generator.js.map +1 -1
- package/src/ts/agent/react-connection/generator.d.ts +186 -0
- package/src/ts/agent/react-connection/generator.js +70 -21
- package/src/ts/agent/react-connection/generator.js.map +1 -1
- package/src/ts/astro-docs/generator.d.ts +38 -0
- package/src/ts/astro-docs/generator.js +58 -19
- package/src/ts/astro-docs/generator.js.map +1 -1
- package/src/ts/dcr-proxy/generator.d.ts +24 -0
- package/src/ts/dcr-proxy/generator.js +31 -14
- package/src/ts/dcr-proxy/generator.js.map +1 -1
- package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +0 -2
- package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +18 -0
- package/src/ts/dynamodb/agent-connection/generator.js +7 -1
- package/src/ts/dynamodb/agent-connection/generator.js.map +1 -1
- package/src/ts/dynamodb/generator.d.ts +41 -0
- package/src/ts/dynamodb/generator.js +47 -20
- package/src/ts/dynamodb/generator.js.map +1 -1
- package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +18 -0
- package/src/ts/dynamodb/mcp-server-connection/generator.js +7 -1
- package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -1
- package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +9 -0
- package/src/ts/dynamodb/smithy-connection/generator.js +3 -1
- package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -1
- package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +9 -0
- package/src/ts/dynamodb/trpc-connection/generator.js +3 -1
- package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -1
- package/src/ts/lambda-function/generator.d.ts +38 -0
- package/src/ts/lambda-function/generator.js +49 -20
- package/src/ts/lambda-function/generator.js.map +1 -1
- package/src/ts/lib/generator.d.ts +7 -0
- package/src/ts/lib/generator.js +8 -1
- package/src/ts/lib/generator.js.map +1 -1
- package/src/ts/lib/ts-project-utils.d.ts +3 -1
- package/src/ts/lib/ts-project-utils.js +3 -2
- package/src/ts/lib/ts-project-utils.js.map +1 -1
- package/src/ts/lib/vitest.d.ts +10 -1
- package/src/ts/lib/vitest.js +14 -2
- package/src/ts/lib/vitest.js.map +1 -1
- package/src/ts/mcp-server/generator.d.ts +71 -0
- package/src/ts/mcp-server/generator.js +73 -36
- package/src/ts/mcp-server/generator.js.map +1 -1
- package/src/ts/nx-generator/generator.d.ts +3 -0
- package/src/ts/nx-generator/generator.js +8 -2
- package/src/ts/nx-generator/generator.js.map +1 -1
- package/src/ts/nx-migration/files/migration.ts.template +4 -0
- package/src/ts/nx-migration/generator.d.ts +3 -0
- package/src/ts/nx-migration/generator.js +8 -2
- package/src/ts/nx-migration/generator.js.map +1 -1
- package/src/ts/nx-plugin/generator.d.ts +3 -0
- package/src/ts/nx-plugin/generator.js +8 -2
- package/src/ts/nx-plugin/generator.js.map +1 -1
- package/src/ts/nx-plugin/utils.d.ts +7 -2
- package/src/ts/nx-plugin/utils.js +10 -4
- package/src/ts/nx-plugin/utils.js.map +1 -1
- package/src/ts/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +10 -0
- package/src/ts/rdb/agent-connection/generator.js +8 -1
- package/src/ts/rdb/agent-connection/generator.js.map +1 -1
- package/src/ts/rdb/generator.d.ts +101 -0
- package/src/ts/rdb/generator.js +93 -41
- package/src/ts/rdb/generator.js.map +1 -1
- package/src/ts/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +10 -0
- package/src/ts/rdb/mcp-server-connection/generator.js +8 -1
- package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
- package/src/ts/rdb/smithy-connection/__snapshots__/generator.spec.ts.snap +9 -0
- package/src/ts/rdb/smithy-connection/generator.js +4 -1
- package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
- package/src/ts/rdb/trpc-connection/__snapshots__/generator.spec.ts.snap +9 -0
- package/src/ts/rdb/trpc-connection/generator.js +3 -1
- package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
- package/src/ts/react-website/agui/generator.d.ts +86 -0
- package/src/ts/react-website/agui/generator.js +63 -28
- package/src/ts/react-website/agui/generator.js.map +1 -1
- package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +8 -2
- package/src/ts/react-website/app/generator.d.ts +136 -1
- package/src/ts/react-website/app/generator.js +109 -40
- package/src/ts/react-website/app/generator.js.map +1 -1
- package/src/ts/react-website/cognito-auth/generator.d.ts +19 -0
- package/src/ts/react-website/cognito-auth/generator.js +21 -9
- package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
- package/src/utils/add-dependencies.d.ts +38 -0
- package/src/utils/add-dependencies.js +83 -0
- package/src/utils/add-dependencies.js.map +1 -0
- package/src/utils/agent-connection/agent-connection.d.ts +27 -6
- package/src/utils/agent-connection/agent-connection.js +47 -18
- package/src/utils/agent-connection/agent-connection.js.map +1 -1
- package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +19 -1
- package/src/utils/agent-core-constructs/agent-core-constructs.js +26 -6
- package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
- package/src/utils/api-constructs/api-constructs.d.ts +21 -2
- package/src/utils/api-constructs/api-constructs.js +26 -5
- package/src/utils/api-constructs/api-constructs.js.map +1 -1
- package/src/utils/bundle/bundle.d.ts +6 -1
- package/src/utils/bundle/bundle.js +8 -2
- package/src/utils/bundle/bundle.js.map +1 -1
- package/src/utils/commands.d.ts +5 -4
- package/src/utils/commands.js +2 -6
- package/src/utils/commands.js.map +1 -1
- package/src/utils/connection/open-api/react.d.ts +18 -1
- package/src/utils/connection/open-api/react.js +27 -3
- package/src/utils/connection/open-api/react.js.map +1 -1
- package/src/utils/declared-dependencies.d.ts +140 -0
- package/src/utils/declared-dependencies.js +64 -0
- package/src/utils/declared-dependencies.js.map +1 -0
- package/src/utils/docker.d.ts +10 -1
- package/src/utils/docker.js +7 -3
- package/src/utils/docker.js.map +1 -1
- package/src/utils/files/common/scripts/src/dynamodb/start-container.ts.template +0 -1
- package/src/utils/fs.d.ts +15 -4
- package/src/utils/fs.js +26 -13
- package/src/utils/fs.js.map +1 -1
- package/src/utils/init.d.ts +14 -1
- package/src/utils/init.js +25 -7
- package/src/utils/init.js.map +1 -1
- package/src/utils/migration-versions.d.ts +25 -6
- package/src/utils/migration-versions.js +72 -14
- package/src/utils/migration-versions.js.map +1 -1
- package/src/utils/nx.d.ts +18 -0
- package/src/utils/nx.js +4 -0
- package/src/utils/nx.js.map +1 -1
- package/src/utils/py.d.ts +3 -2
- package/src/utils/py.js +10 -10
- package/src/utils/py.js.map +1 -1
- package/src/utils/shared-constructs-constants.d.ts +39 -4
- package/src/utils/shared-constructs-constants.js +29 -0
- package/src/utils/shared-constructs-constants.js.map +1 -1
- package/src/utils/shared-constructs.d.ts +4 -1
- package/src/utils/shared-constructs.js +5 -4
- package/src/utils/shared-constructs.js.map +1 -1
- package/src/utils/shared-dynamodb-scripts.d.ts +8 -1
- package/src/utils/shared-dynamodb-scripts.js +11 -3
- package/src/utils/shared-dynamodb-scripts.js.map +1 -1
- package/src/utils/shared-infra-scripts.d.ts +16 -1
- package/src/utils/shared-infra-scripts.js +18 -3
- package/src/utils/shared-infra-scripts.js.map +1 -1
- package/src/utils/shared-rdb-scripts.d.ts +12 -1
- package/src/utils/shared-rdb-scripts.js +17 -3
- package/src/utils/shared-rdb-scripts.js.map +1 -1
- package/src/utils/shared-shadcn.d.ts +26 -1
- package/src/utils/shared-shadcn.js +31 -14
- package/src/utils/shared-shadcn.js.map +1 -1
- package/src/utils/version-upgrade-migration/migration.d.ts +14 -0
- package/src/utils/version-upgrade-migration/migration.js +16 -0
- package/src/utils/version-upgrade-migration/migration.js.map +1 -0
- package/src/utils/version-upgrade-migration/nx-package-updates.d.ts +45 -0
- package/src/utils/version-upgrade-migration/nx-package-updates.js +50 -0
- package/src/utils/version-upgrade-migration/nx-package-updates.js.map +1 -0
- package/src/utils/version-upgrade-migration/owned-dependencies.d.ts +50 -0
- package/src/utils/version-upgrade-migration/owned-dependencies.js +98 -0
- package/src/utils/version-upgrade-migration/owned-dependencies.js.map +1 -0
- package/src/utils/version-upgrade-migration/register.d.ts +23 -0
- package/src/utils/version-upgrade-migration/register.js +38 -0
- package/src/utils/version-upgrade-migration/register.js.map +1 -0
- package/src/utils/version-upgrade-migration/sync-metrics-version.d.ts +13 -0
- package/src/utils/version-upgrade-migration/sync-metrics-version.js +33 -0
- package/src/utils/version-upgrade-migration/sync-metrics-version.js.map +1 -0
- package/src/utils/version-upgrade-migration/sync-vended-versions.d.ts +10 -0
- package/src/utils/version-upgrade-migration/sync-vended-versions.js +504 -0
- package/src/utils/version-upgrade-migration/sync-vended-versions.js.map +1 -0
- package/src/utils/version-upgrade-migration/vended-upgrade.d.ts +14 -0
- package/src/utils/version-upgrade-migration/vended-upgrade.js +40 -0
- package/src/utils/version-upgrade-migration/vended-upgrade.js.map +1 -0
- package/src/utils/versions.d.ts +25 -5
- package/src/utils/versions.js +46 -4
- package/src/utils/versions.js.map +1 -1
|
@@ -5,6 +5,192 @@
|
|
|
5
5
|
import { type Tree } from '@nx/devkit';
|
|
6
6
|
import type { ResolvedConnectionOptions } from '../../../connection/generator';
|
|
7
7
|
import { type NxGeneratorInfo } from '../../../utils/nx';
|
|
8
|
+
/** The metadata this generator records, which its predicates read. */
|
|
9
|
+
export interface TsAgentReactConnectionMetadata {
|
|
10
|
+
readonly auth: string;
|
|
11
|
+
readonly protocol: string;
|
|
12
|
+
/** The AG-UI theme module, which the website's `ux` selects. */
|
|
13
|
+
readonly theme: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const DEPENDENCIES: import("../../../utils/declared-dependencies").DependencyDeclaration<readonly [{
|
|
16
|
+
readonly name: "@trpc/client";
|
|
17
|
+
readonly when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
18
|
+
}, {
|
|
19
|
+
readonly name: "@tanstack/react-query";
|
|
20
|
+
readonly when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
21
|
+
}, {
|
|
22
|
+
readonly name: "@tanstack/react-query-devtools";
|
|
23
|
+
readonly when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
24
|
+
}, {
|
|
25
|
+
readonly name: "@trpc/tanstack-react-query";
|
|
26
|
+
readonly when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
27
|
+
}, {
|
|
28
|
+
readonly name: "oidc-client-ts";
|
|
29
|
+
readonly when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
30
|
+
}, {
|
|
31
|
+
readonly name: "aws4fetch";
|
|
32
|
+
readonly when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
33
|
+
}, {
|
|
34
|
+
readonly name: "@aws-sdk/credential-provider-cognito-identity";
|
|
35
|
+
readonly when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
36
|
+
}, {
|
|
37
|
+
readonly name: "react-oidc-context";
|
|
38
|
+
readonly when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
39
|
+
}, {
|
|
40
|
+
readonly name: "@smithy/types";
|
|
41
|
+
readonly when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
42
|
+
readonly dev: true;
|
|
43
|
+
}, Omit<{
|
|
44
|
+
readonly name: "@copilotkit/react-core";
|
|
45
|
+
}, "when"> & {
|
|
46
|
+
when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
47
|
+
} & {
|
|
48
|
+
versionOnly: true;
|
|
49
|
+
}, Omit<{
|
|
50
|
+
readonly name: "@ag-ui/client";
|
|
51
|
+
}, "when"> & {
|
|
52
|
+
when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
53
|
+
} & {
|
|
54
|
+
versionOnly: true;
|
|
55
|
+
}, Omit<{
|
|
56
|
+
readonly name: "@cloudscape-design/chat-components";
|
|
57
|
+
readonly when: (m: import("../../react-website/agui/generator").AgUiMetadata) => boolean;
|
|
58
|
+
}, "when"> & {
|
|
59
|
+
when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
60
|
+
} & {
|
|
61
|
+
versionOnly: true;
|
|
62
|
+
}, Omit<{
|
|
63
|
+
readonly name: "lucide-react";
|
|
64
|
+
readonly when: (m: import("../../react-website/agui/generator").AgUiMetadata) => boolean;
|
|
65
|
+
}, "when"> & {
|
|
66
|
+
when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
67
|
+
} & {
|
|
68
|
+
versionOnly: true;
|
|
69
|
+
}, Omit<{
|
|
70
|
+
readonly name: "oidc-client-ts";
|
|
71
|
+
readonly when: (m: import("../../react-website/agui/generator").AgUiMetadata) => boolean;
|
|
72
|
+
}, "when"> & {
|
|
73
|
+
when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
74
|
+
} & {
|
|
75
|
+
versionOnly: true;
|
|
76
|
+
}, Omit<{
|
|
77
|
+
readonly name: "aws4fetch";
|
|
78
|
+
readonly when: (m: import("../../react-website/agui/generator").AgUiMetadata) => boolean;
|
|
79
|
+
}, "when"> & {
|
|
80
|
+
when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
81
|
+
} & {
|
|
82
|
+
versionOnly: true;
|
|
83
|
+
}, Omit<{
|
|
84
|
+
readonly name: "@aws-sdk/credential-provider-cognito-identity";
|
|
85
|
+
readonly when: (m: import("../../react-website/agui/generator").AgUiMetadata) => boolean;
|
|
86
|
+
}, "when"> & {
|
|
87
|
+
when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
88
|
+
} & {
|
|
89
|
+
versionOnly: true;
|
|
90
|
+
}, Omit<{
|
|
91
|
+
readonly name: "react-oidc-context";
|
|
92
|
+
readonly when: (m: import("../../react-website/agui/generator").AgUiMetadata) => boolean;
|
|
93
|
+
}, "when"> & {
|
|
94
|
+
when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
95
|
+
} & {
|
|
96
|
+
versionOnly: true;
|
|
97
|
+
}, Omit<{
|
|
98
|
+
readonly name: "@smithy/types";
|
|
99
|
+
readonly when: (m: import("../../react-website/agui/generator").AgUiMetadata) => boolean;
|
|
100
|
+
readonly dev: true;
|
|
101
|
+
}, "when"> & {
|
|
102
|
+
when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
103
|
+
} & {
|
|
104
|
+
versionOnly: true;
|
|
105
|
+
}, Omit<{
|
|
106
|
+
readonly name: "react";
|
|
107
|
+
} & {
|
|
108
|
+
versionOnly: true;
|
|
109
|
+
}, "when"> & {
|
|
110
|
+
when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
111
|
+
} & {
|
|
112
|
+
versionOnly: true;
|
|
113
|
+
}, Omit<{
|
|
114
|
+
readonly name: "react-dom";
|
|
115
|
+
} & {
|
|
116
|
+
versionOnly: true;
|
|
117
|
+
}, "when"> & {
|
|
118
|
+
when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
119
|
+
} & {
|
|
120
|
+
versionOnly: true;
|
|
121
|
+
}, Omit<{
|
|
122
|
+
readonly name: "class-variance-authority";
|
|
123
|
+
} & {
|
|
124
|
+
versionOnly: true;
|
|
125
|
+
}, "when"> & {
|
|
126
|
+
when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
127
|
+
} & {
|
|
128
|
+
versionOnly: true;
|
|
129
|
+
}, Omit<{
|
|
130
|
+
readonly name: "clsx";
|
|
131
|
+
} & {
|
|
132
|
+
versionOnly: true;
|
|
133
|
+
}, "when"> & {
|
|
134
|
+
when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
135
|
+
} & {
|
|
136
|
+
versionOnly: true;
|
|
137
|
+
}, Omit<{
|
|
138
|
+
readonly name: "tailwind-merge";
|
|
139
|
+
} & {
|
|
140
|
+
versionOnly: true;
|
|
141
|
+
}, "when"> & {
|
|
142
|
+
when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
143
|
+
} & {
|
|
144
|
+
versionOnly: true;
|
|
145
|
+
}, Omit<{
|
|
146
|
+
readonly name: "lucide-react";
|
|
147
|
+
} & {
|
|
148
|
+
versionOnly: true;
|
|
149
|
+
}, "when"> & {
|
|
150
|
+
when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
151
|
+
} & {
|
|
152
|
+
versionOnly: true;
|
|
153
|
+
}, Omit<{
|
|
154
|
+
readonly name: "tw-animate-css";
|
|
155
|
+
} & {
|
|
156
|
+
versionOnly: true;
|
|
157
|
+
}, "when"> & {
|
|
158
|
+
when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
159
|
+
} & {
|
|
160
|
+
versionOnly: true;
|
|
161
|
+
}, Omit<{
|
|
162
|
+
readonly name: "radix-ui";
|
|
163
|
+
} & {
|
|
164
|
+
versionOnly: true;
|
|
165
|
+
}, "when"> & {
|
|
166
|
+
when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
167
|
+
} & {
|
|
168
|
+
versionOnly: true;
|
|
169
|
+
}, Omit<{
|
|
170
|
+
readonly name: "vite";
|
|
171
|
+
} & {
|
|
172
|
+
versionOnly: true;
|
|
173
|
+
}, "when"> & {
|
|
174
|
+
when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
175
|
+
} & {
|
|
176
|
+
versionOnly: true;
|
|
177
|
+
}, Omit<{
|
|
178
|
+
readonly name: "vitest";
|
|
179
|
+
} & {
|
|
180
|
+
versionOnly: true;
|
|
181
|
+
}, "when"> & {
|
|
182
|
+
when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
183
|
+
} & {
|
|
184
|
+
versionOnly: true;
|
|
185
|
+
}, Omit<{
|
|
186
|
+
readonly name: "@vitest/coverage-v8";
|
|
187
|
+
} & {
|
|
188
|
+
versionOnly: true;
|
|
189
|
+
}, "when"> & {
|
|
190
|
+
when: (m: TsAgentReactConnectionMetadata) => boolean;
|
|
191
|
+
} & {
|
|
192
|
+
versionOnly: true;
|
|
193
|
+
}], readonly import("../../../utils/declared-dependencies").DeclaredPyDependency<"a2a-sdk" | "ag-ui-langgraph" | "ag-ui-protocol" | "ag-ui-strands" | "aws-lambda-powertools" | "aws-lambda-powertools[tracer]" | "aws-lambda-powertools[parser]" | "aws-opentelemetry-distro" | "bedrock-agentcore" | "boto3" | "checkov" | "fastapi" | "fastapi[standard]" | "httpx" | "langchain" | "langchain-aws" | "langchain-mcp-adapters" | "langgraph" | "mcp" | "pip-check-updates" | "pip-licenses" | "ruff" | "strands-agents" | "strands-agents[a2a]" | "strands-agents-tools" | "ty" | "pynamodb" | "uvicorn" | "sqlmodel" | "alembic" | "aiomysql" | "asyncpg" | "greenlet", TsAgentReactConnectionMetadata>[]>;
|
|
8
194
|
export declare const TS_AGENT_REACT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo;
|
|
9
195
|
export declare function tsAgentReactConnectionGenerator(tree: Tree, options: ResolvedConnectionOptions): Promise<() => Promise<void>>;
|
|
10
196
|
export default tsAgentReactConnectionGenerator;
|
|
@@ -3,17 +3,68 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/ import { generateFiles, joinPathFragments, OverwriteStrategy, updateJson } from "@nx/devkit";
|
|
5
5
|
import { addAgentRuntimeToConnectionNamespace } from "../../../connection/agent-runtime-config.js";
|
|
6
|
+
import { addTsDependencies } from "../../../utils/add-dependencies.js";
|
|
6
7
|
import { addSingleImport, applyGritQL } from "../../../utils/ast.js";
|
|
7
|
-
import {
|
|
8
|
+
import { declareDependencies, onlyWhen, ownedElsewhere } from "../../../utils/declared-dependencies.js";
|
|
8
9
|
import { formatFilesInSubtree } from "../../../utils/format.js";
|
|
9
10
|
import { installDependencies } from "../../../utils/install.js";
|
|
10
11
|
import { addGeneratorMetricsIfApplicable } from "../../../utils/metrics.js";
|
|
11
12
|
import { kebabCase, toClassName } from "../../../utils/names.js";
|
|
12
|
-
import { getGeneratorInfo, readProjectConfigurationUnqualified } from "../../../utils/nx.js";
|
|
13
|
-
import {
|
|
14
|
-
import { addAgUiReactConnection } from "../../react-website/agui/generator.js";
|
|
13
|
+
import { addComponentGeneratorMetadata, getGeneratorInfo, readProjectConfigurationUnqualified } from "../../../utils/nx.js";
|
|
14
|
+
import { toProjectRelativePath } from "../../../utils/paths.js";
|
|
15
|
+
import { DEPENDENCIES as AGUI_DEPENDENCIES, addAgUiReactConnection, resolveAgUiTheme } from "../../react-website/agui/generator.js";
|
|
15
16
|
import { runtimeConfigGenerator } from "../../react-website/runtime-config/generator.js";
|
|
16
17
|
import { addTsAgentTargetToLocalDev } from "./local-dev.js";
|
|
18
|
+
/** The tRPC-over-HTTP path, which the AG-UI path takes none of. */ const isHttp = (m)=>m.protocol !== 'ag-ui';
|
|
19
|
+
/** The AG-UI path, whose packages `addAgUiReactConnection` adds. */ const isAgUi = (m)=>!isHttp(m);
|
|
20
|
+
// Each entry names the protocol path it belongs to: the HTTP path's client and
|
|
21
|
+
// auth packages are added here, the AG-UI path's by `addAgUiReactConnection` on
|
|
22
|
+
// this generator's behalf.
|
|
23
|
+
export const DEPENDENCIES = declareDependencies()({
|
|
24
|
+
ts: [
|
|
25
|
+
{
|
|
26
|
+
name: '@trpc/client',
|
|
27
|
+
when: isHttp
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: '@tanstack/react-query',
|
|
31
|
+
when: isHttp
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: '@tanstack/react-query-devtools',
|
|
35
|
+
when: isHttp
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: '@trpc/tanstack-react-query',
|
|
39
|
+
when: isHttp
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'oidc-client-ts',
|
|
43
|
+
when: (m)=>isHttp(m) && m.auth === 'iam'
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'aws4fetch',
|
|
47
|
+
when: (m)=>isHttp(m) && m.auth === 'iam'
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: '@aws-sdk/credential-provider-cognito-identity',
|
|
51
|
+
when: (m)=>isHttp(m) && m.auth === 'iam'
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: 'react-oidc-context',
|
|
55
|
+
when: (m)=>isHttp(m) && (m.auth === 'iam' || m.auth === 'cognito')
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: '@smithy/types',
|
|
59
|
+
when: isHttp,
|
|
60
|
+
dev: true
|
|
61
|
+
},
|
|
62
|
+
// `addAgUiReactConnection` adds these itself, so they are declared for
|
|
63
|
+
// ownership only. Gated on the AG-UI path, and within it on each entry's
|
|
64
|
+
// own theme or auth condition, which the metadata below records.
|
|
65
|
+
...ownedElsewhere(onlyWhen(AGUI_DEPENDENCIES.ts, isAgUi))
|
|
66
|
+
]
|
|
67
|
+
});
|
|
17
68
|
export const TS_AGENT_REACT_CONNECTION_GENERATOR_INFO = getGeneratorInfo(import.meta.filename);
|
|
18
69
|
export async function tsAgentReactConnectionGenerator(tree, options) {
|
|
19
70
|
const frontendProjectConfig = readProjectConfigurationUnqualified(tree, options.sourceProject);
|
|
@@ -27,6 +78,13 @@ export async function tsAgentReactConnectionGenerator(tree, options) {
|
|
|
27
78
|
const auth = (targetComponent?.auth ?? metadata?.auth ?? 'iam').toLowerCase();
|
|
28
79
|
const agentProjectAlias = agentProjectConfig.name;
|
|
29
80
|
const agentPath = targetComponent?.path ?? 'src/agent';
|
|
81
|
+
// Recorded below and read by the declaration's predicates, so the packages
|
|
82
|
+
// added here are exactly the ones the version sync will own.
|
|
83
|
+
const connectionMetadata = {
|
|
84
|
+
auth,
|
|
85
|
+
protocol: targetComponent?.protocol ?? 'http',
|
|
86
|
+
theme: resolveAgUiTheme(frontendProjectConfig)
|
|
87
|
+
};
|
|
30
88
|
if ((targetComponent?.protocol ?? '').toLowerCase() === 'a2a') {
|
|
31
89
|
throw new Error(`Cannot connect a React website to an A2A agent. ` + `Consider generating an agent with the HTTP or AG-UI protocol instead.`);
|
|
32
90
|
}
|
|
@@ -43,6 +101,8 @@ export async function tsAgentReactConnectionGenerator(tree, options) {
|
|
|
43
101
|
port: agentPort,
|
|
44
102
|
targetComponent
|
|
45
103
|
});
|
|
104
|
+
// Recorded so the version sync knows this connection's dependencies are ours.
|
|
105
|
+
addComponentGeneratorMetadata(tree, frontendProjectConfig.name, TS_AGENT_REACT_CONNECTION_GENERATOR_INFO, toProjectRelativePath(frontendProjectConfig, joinPathFragments(frontendProjectConfig.sourceRoot, 'hooks', `useAgui${agentNameClassName}`)), agentNameClassName, connectionMetadata);
|
|
46
106
|
await addGeneratorMetricsIfApplicable(tree, [
|
|
47
107
|
TS_AGENT_REACT_CONNECTION_GENERATOR_INFO
|
|
48
108
|
]);
|
|
@@ -100,23 +160,12 @@ export async function tsAgentReactConnectionGenerator(tree, options) {
|
|
|
100
160
|
agentNameKebabCase: kebabCase(agentNameClassName),
|
|
101
161
|
agentNameClassName
|
|
102
162
|
});
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
'oidc-client-ts',
|
|
110
|
-
'aws4fetch',
|
|
111
|
-
'@aws-sdk/credential-provider-cognito-identity',
|
|
112
|
-
'react-oidc-context'
|
|
113
|
-
] : [],
|
|
114
|
-
...auth === 'cognito' ? [
|
|
115
|
-
'react-oidc-context'
|
|
116
|
-
] : []
|
|
117
|
-
]), withVersions([
|
|
118
|
-
'@smithy/types'
|
|
119
|
-
]), joinPathFragments(frontendProjectConfig.root, 'package.json'));
|
|
163
|
+
addTsDependencies(tree, DEPENDENCIES, {
|
|
164
|
+
metadata: connectionMetadata,
|
|
165
|
+
projectRoot: frontendProjectConfig.root
|
|
166
|
+
});
|
|
167
|
+
// Recorded so the version sync knows this connection's dependencies are ours.
|
|
168
|
+
addComponentGeneratorMetadata(tree, frontendProjectConfig.name, TS_AGENT_REACT_CONNECTION_GENERATOR_INFO, toProjectRelativePath(frontendProjectConfig, joinPathFragments(frontendProjectConfig.sourceRoot, 'components', clientProviderName)), agentNameClassName, connectionMetadata);
|
|
120
169
|
await addGeneratorMetricsIfApplicable(tree, [
|
|
121
170
|
TS_AGENT_REACT_CONNECTION_GENERATOR_INFO
|
|
122
171
|
]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/agent/react-connection/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n updateJson,\n} from '@nx/devkit';\nimport { addAgentRuntimeToConnectionNamespace } from '../../../connection/agent-runtime-config';\nimport type { ResolvedConnectionOptions } from '../../../connection/generator';\nimport { addSingleImport, applyGritQL } from '../../../utils/ast';\nimport { addDependenciesToPackageJson } from '../../../utils/dependencies';\nimport { formatFilesInSubtree } from '../../../utils/format';\nimport { installDependencies } from '../../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics';\nimport { kebabCase, toClassName } from '../../../utils/names';\nimport {\n type ComponentMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx';\nimport { withVersions } from '../../../utils/versions';\nimport {\n type AgUiAuth,\n addAgUiReactConnection,\n} from '../../react-website/agui/generator';\nimport { runtimeConfigGenerator } from '../../react-website/runtime-config/generator';\nimport { addTsAgentTargetToLocalDev } from './local-dev';\n\nexport const TS_AGENT_REACT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo =\n getGeneratorInfo(import.meta.filename);\n\nexport async function tsAgentReactConnectionGenerator(\n tree: Tree,\n options: ResolvedConnectionOptions,\n) {\n const frontendProjectConfig = readProjectConfigurationUnqualified(\n tree,\n options.sourceProject,\n );\n const agentProjectConfig = readProjectConfigurationUnqualified(\n tree,\n options.targetProject,\n );\n\n const targetComponent: ComponentMetadata | undefined =\n options.targetComponent;\n\n // Extract agent metadata from the target component or project metadata\n const metadata = agentProjectConfig.metadata as any;\n const agentName = targetComponent?.name ?? 'agent';\n const agentNameClassName = targetComponent?.rc ?? toClassName(agentName);\n const agentPort = targetComponent?.port ?? metadata?.ports?.[0] ?? 8081;\n const auth = (targetComponent?.auth ?? metadata?.auth ?? 'iam').toLowerCase();\n const agentProjectAlias = agentProjectConfig.name;\n const agentPath = targetComponent?.path ?? 'src/agent';\n\n if ((targetComponent?.protocol ?? '').toLowerCase() === 'a2a') {\n throw new Error(\n `Cannot connect a React website to an A2A agent. ` +\n `Consider generating an agent with the HTTP or AG-UI protocol instead.`,\n );\n }\n\n if (targetComponent?.protocol === 'ag-ui') {\n await addAgUiReactConnection(tree, {\n frontendProjectConfig,\n agentName,\n agentNameClassName,\n auth: auth as AgUiAuth,\n });\n\n await addTsAgentTargetToLocalDev(\n tree,\n frontendProjectConfig.name,\n agentProjectConfig.name,\n {\n agentName,\n agentNameClassName,\n port: agentPort,\n targetComponent,\n },\n );\n\n await addGeneratorMetricsIfApplicable(tree, [\n TS_AGENT_REACT_CONNECTION_GENERATOR_INFO,\n ]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n }\n\n // Ensure the agent project has a wildcard path entry in tsconfig.base.json\n // so that deep imports (e.g., for the router type) resolve correctly\n ensureWildcardPathEntry(\n tree,\n agentProjectConfig.name,\n agentProjectConfig.root,\n );\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files'),\n frontendProjectConfig.root,\n {\n agentName,\n agentNameClassName,\n auth,\n agentProjectAlias,\n agentPath,\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n // Generate the tanstack query provider if it does not exist already\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n '../../../utils/files/website/components/tanstack-query',\n ),\n joinPathFragments(frontendProjectConfig.sourceRoot, 'components'),\n {},\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n if (auth === 'iam') {\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n '../../../utils/files/website/hooks/sigv4',\n ),\n joinPathFragments(frontendProjectConfig.sourceRoot, 'hooks'),\n {},\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n }\n\n await runtimeConfigGenerator(tree, {\n project: frontendProjectConfig.name,\n preferInstallDependencies: false,\n });\n\n // update main.tsx\n const mainTsxPath = joinPathFragments(\n frontendProjectConfig.sourceRoot,\n 'main.tsx',\n );\n await addSingleImport(\n tree,\n mainTsxPath,\n 'QueryClientProvider',\n './components/QueryClientProvider',\n );\n\n const clientProviderName = `${agentNameClassName}AgentClientProvider`;\n await addSingleImport(\n tree,\n mainTsxPath,\n clientProviderName,\n `./components/${clientProviderName}`,\n );\n\n // Wrap <App /> in QueryClientProvider if not already present\n await applyGritQL(\n tree,\n mainTsxPath,\n '`<App />` => `<QueryClientProvider><App /></QueryClientProvider>` where { $program <: not contains `<QueryClientProvider>$_</QueryClientProvider>` }',\n );\n\n // Wrap <App /> in the agent client provider if not already present\n await applyGritQL(\n tree,\n mainTsxPath,\n `\\`<App />\\` => \\`<${clientProviderName}><App /></${clientProviderName}>\\` where { $program <: not contains \\`<${clientProviderName}>$_</${clientProviderName}>\\` }`,\n );\n\n await addTsAgentTargetToLocalDev(\n tree,\n frontendProjectConfig.name,\n agentProjectConfig.name,\n {\n agentName,\n agentNameClassName,\n port: agentPort,\n targetComponent,\n },\n );\n\n // Expose the agent's runtime ARN to the frontend via the 'connection'\n // namespace (which is published to runtime-config.json). The agent construct\n // itself only registers to the 'agentcore' namespace by default.\n await addAgentRuntimeToConnectionNamespace(tree, {\n agentNameKebabCase: kebabCase(agentNameClassName),\n agentNameClassName,\n });\n\n addDependenciesToPackageJson(\n tree,\n withVersions([\n '@trpc/client',\n '@tanstack/react-query',\n '@tanstack/react-query-devtools',\n '@trpc/tanstack-react-query',\n ...((auth === 'iam'\n ? [\n 'oidc-client-ts',\n 'aws4fetch',\n '@aws-sdk/credential-provider-cognito-identity',\n 'react-oidc-context',\n ]\n : []) as any),\n ...((auth === 'cognito' ? ['react-oidc-context'] : []) as any),\n ]),\n withVersions(['@smithy/types']),\n joinPathFragments(frontendProjectConfig.root, 'package.json'),\n );\n\n await addGeneratorMetricsIfApplicable(tree, [\n TS_AGENT_REACT_CONNECTION_GENERATOR_INFO,\n ]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n}\nexport default tsAgentReactConnectionGenerator;\n\n/**\n * Ensures a wildcard path entry exists in tsconfig.base.json for the given project,\n * allowing deep imports (e.g., `@scope/project/src/agent/router.js`).\n */\nfunction ensureWildcardPathEntry(\n tree: Tree,\n projectName: string,\n projectRoot: string,\n) {\n const tsconfigPath = ['tsconfig.base.json', 'tsconfig.json'].find((p) =>\n tree.exists(p),\n );\n if (!tsconfigPath) return;\n\n updateJson(tree, tsconfigPath, (json) => {\n const paths = json.compilerOptions?.paths ?? {};\n const wildcardKey = `${projectName}/*`;\n if (!paths[wildcardKey]) {\n paths[wildcardKey] = [`./${projectRoot}/*`];\n }\n json.compilerOptions = {\n ...json.compilerOptions,\n paths,\n };\n return json;\n });\n}\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateJson","addAgentRuntimeToConnectionNamespace","addSingleImport","applyGritQL","addDependenciesToPackageJson","formatFilesInSubtree","installDependencies","addGeneratorMetricsIfApplicable","kebabCase","toClassName","getGeneratorInfo","readProjectConfigurationUnqualified","withVersions","addAgUiReactConnection","runtimeConfigGenerator","addTsAgentTargetToLocalDev","TS_AGENT_REACT_CONNECTION_GENERATOR_INFO","filename","tsAgentReactConnectionGenerator","tree","options","frontendProjectConfig","sourceProject","agentProjectConfig","targetProject","targetComponent","metadata","agentName","name","agentNameClassName","rc","agentPort","port","ports","auth","toLowerCase","agentProjectAlias","agentPath","path","protocol","Error","preferInstallDependencies","languages","ensureWildcardPathEntry","root","dirname","overwriteStrategy","KeepExisting","sourceRoot","project","mainTsxPath","clientProviderName","agentNameKebabCase","projectName","projectRoot","tsconfigPath","find","p","exists","json","paths","compilerOptions","wildcardKey"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/agent/react-connection/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n updateJson,\n} from '@nx/devkit';\nimport { addAgentRuntimeToConnectionNamespace } from '../../../connection/agent-runtime-config';\nimport type { ResolvedConnectionOptions } from '../../../connection/generator';\nimport { addTsDependencies } from '../../../utils/add-dependencies';\nimport { addSingleImport, applyGritQL } from '../../../utils/ast';\nimport {\n declareDependencies,\n onlyWhen,\n ownedElsewhere,\n} from '../../../utils/declared-dependencies';\nimport { formatFilesInSubtree } from '../../../utils/format';\nimport { installDependencies } from '../../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics';\nimport { kebabCase, toClassName } from '../../../utils/names';\nimport {\n addComponentGeneratorMetadata,\n type ComponentMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx';\nimport { toProjectRelativePath } from '../../../utils/paths';\nimport {\n DEPENDENCIES as AGUI_DEPENDENCIES,\n type AgUiAuth,\n addAgUiReactConnection,\n resolveAgUiTheme,\n} from '../../react-website/agui/generator';\nimport { runtimeConfigGenerator } from '../../react-website/runtime-config/generator';\nimport { addTsAgentTargetToLocalDev } from './local-dev';\n\n/** The metadata this generator records, which its predicates read. */\nexport interface TsAgentReactConnectionMetadata {\n readonly auth: string;\n readonly protocol: string;\n /** The AG-UI theme module, which the website's `ux` selects. */\n readonly theme: string;\n}\n\n/** The tRPC-over-HTTP path, which the AG-UI path takes none of. */\nconst isHttp = (m: TsAgentReactConnectionMetadata) => m.protocol !== 'ag-ui';\n\n/** The AG-UI path, whose packages `addAgUiReactConnection` adds. */\nconst isAgUi = (m: TsAgentReactConnectionMetadata) => !isHttp(m);\n\n// Each entry names the protocol path it belongs to: the HTTP path's client and\n// auth packages are added here, the AG-UI path's by `addAgUiReactConnection` on\n// this generator's behalf.\nexport const DEPENDENCIES =\n declareDependencies<TsAgentReactConnectionMetadata>()({\n ts: [\n { name: '@trpc/client', when: isHttp },\n { name: '@tanstack/react-query', when: isHttp },\n { name: '@tanstack/react-query-devtools', when: isHttp },\n { name: '@trpc/tanstack-react-query', when: isHttp },\n { name: 'oidc-client-ts', when: (m) => isHttp(m) && m.auth === 'iam' },\n { name: 'aws4fetch', when: (m) => isHttp(m) && m.auth === 'iam' },\n {\n name: '@aws-sdk/credential-provider-cognito-identity',\n when: (m) => isHttp(m) && m.auth === 'iam',\n },\n {\n name: 'react-oidc-context',\n when: (m) => isHttp(m) && (m.auth === 'iam' || m.auth === 'cognito'),\n },\n { name: '@smithy/types', when: isHttp, dev: true },\n // `addAgUiReactConnection` adds these itself, so they are declared for\n // ownership only. Gated on the AG-UI path, and within it on each entry's\n // own theme or auth condition, which the metadata below records.\n ...ownedElsewhere(onlyWhen(AGUI_DEPENDENCIES.ts, isAgUi)),\n ],\n });\n\nexport const TS_AGENT_REACT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo =\n getGeneratorInfo(import.meta.filename);\n\nexport async function tsAgentReactConnectionGenerator(\n tree: Tree,\n options: ResolvedConnectionOptions,\n) {\n const frontendProjectConfig = readProjectConfigurationUnqualified(\n tree,\n options.sourceProject,\n );\n const agentProjectConfig = readProjectConfigurationUnqualified(\n tree,\n options.targetProject,\n );\n\n const targetComponent: ComponentMetadata | undefined =\n options.targetComponent;\n\n // Extract agent metadata from the target component or project metadata\n const metadata = agentProjectConfig.metadata as any;\n const agentName = targetComponent?.name ?? 'agent';\n const agentNameClassName = targetComponent?.rc ?? toClassName(agentName);\n const agentPort = targetComponent?.port ?? metadata?.ports?.[0] ?? 8081;\n const auth = (targetComponent?.auth ?? metadata?.auth ?? 'iam').toLowerCase();\n const agentProjectAlias = agentProjectConfig.name;\n const agentPath = targetComponent?.path ?? 'src/agent';\n\n // Recorded below and read by the declaration's predicates, so the packages\n // added here are exactly the ones the version sync will own.\n const connectionMetadata: TsAgentReactConnectionMetadata = {\n auth,\n protocol: targetComponent?.protocol ?? 'http',\n theme: resolveAgUiTheme(frontendProjectConfig),\n };\n\n if ((targetComponent?.protocol ?? '').toLowerCase() === 'a2a') {\n throw new Error(\n `Cannot connect a React website to an A2A agent. ` +\n `Consider generating an agent with the HTTP or AG-UI protocol instead.`,\n );\n }\n\n if (targetComponent?.protocol === 'ag-ui') {\n await addAgUiReactConnection(tree, {\n frontendProjectConfig,\n agentName,\n agentNameClassName,\n auth: auth as AgUiAuth,\n });\n\n await addTsAgentTargetToLocalDev(\n tree,\n frontendProjectConfig.name,\n agentProjectConfig.name,\n {\n agentName,\n agentNameClassName,\n port: agentPort,\n targetComponent,\n },\n );\n\n // Recorded so the version sync knows this connection's dependencies are ours.\n addComponentGeneratorMetadata(\n tree,\n frontendProjectConfig.name,\n TS_AGENT_REACT_CONNECTION_GENERATOR_INFO,\n toProjectRelativePath(\n frontendProjectConfig,\n joinPathFragments(\n frontendProjectConfig.sourceRoot,\n 'hooks',\n `useAgui${agentNameClassName}`,\n ),\n ),\n agentNameClassName,\n connectionMetadata,\n );\n\n await addGeneratorMetricsIfApplicable(tree, [\n TS_AGENT_REACT_CONNECTION_GENERATOR_INFO,\n ]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n }\n\n // Ensure the agent project has a wildcard path entry in tsconfig.base.json\n // so that deep imports (e.g., for the router type) resolve correctly\n ensureWildcardPathEntry(\n tree,\n agentProjectConfig.name,\n agentProjectConfig.root,\n );\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files'),\n frontendProjectConfig.root,\n {\n agentName,\n agentNameClassName,\n auth,\n agentProjectAlias,\n agentPath,\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n // Generate the tanstack query provider if it does not exist already\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n '../../../utils/files/website/components/tanstack-query',\n ),\n joinPathFragments(frontendProjectConfig.sourceRoot, 'components'),\n {},\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n if (auth === 'iam') {\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n '../../../utils/files/website/hooks/sigv4',\n ),\n joinPathFragments(frontendProjectConfig.sourceRoot, 'hooks'),\n {},\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n }\n\n await runtimeConfigGenerator(tree, {\n project: frontendProjectConfig.name,\n preferInstallDependencies: false,\n });\n\n // update main.tsx\n const mainTsxPath = joinPathFragments(\n frontendProjectConfig.sourceRoot,\n 'main.tsx',\n );\n await addSingleImport(\n tree,\n mainTsxPath,\n 'QueryClientProvider',\n './components/QueryClientProvider',\n );\n\n const clientProviderName = `${agentNameClassName}AgentClientProvider`;\n await addSingleImport(\n tree,\n mainTsxPath,\n clientProviderName,\n `./components/${clientProviderName}`,\n );\n\n // Wrap <App /> in QueryClientProvider if not already present\n await applyGritQL(\n tree,\n mainTsxPath,\n '`<App />` => `<QueryClientProvider><App /></QueryClientProvider>` where { $program <: not contains `<QueryClientProvider>$_</QueryClientProvider>` }',\n );\n\n // Wrap <App /> in the agent client provider if not already present\n await applyGritQL(\n tree,\n mainTsxPath,\n `\\`<App />\\` => \\`<${clientProviderName}><App /></${clientProviderName}>\\` where { $program <: not contains \\`<${clientProviderName}>$_</${clientProviderName}>\\` }`,\n );\n\n await addTsAgentTargetToLocalDev(\n tree,\n frontendProjectConfig.name,\n agentProjectConfig.name,\n {\n agentName,\n agentNameClassName,\n port: agentPort,\n targetComponent,\n },\n );\n\n // Expose the agent's runtime ARN to the frontend via the 'connection'\n // namespace (which is published to runtime-config.json). The agent construct\n // itself only registers to the 'agentcore' namespace by default.\n await addAgentRuntimeToConnectionNamespace(tree, {\n agentNameKebabCase: kebabCase(agentNameClassName),\n agentNameClassName,\n });\n\n addTsDependencies(tree, DEPENDENCIES, {\n metadata: connectionMetadata,\n projectRoot: frontendProjectConfig.root,\n });\n\n // Recorded so the version sync knows this connection's dependencies are ours.\n addComponentGeneratorMetadata(\n tree,\n frontendProjectConfig.name,\n TS_AGENT_REACT_CONNECTION_GENERATOR_INFO,\n toProjectRelativePath(\n frontendProjectConfig,\n joinPathFragments(\n frontendProjectConfig.sourceRoot,\n 'components',\n clientProviderName,\n ),\n ),\n agentNameClassName,\n connectionMetadata,\n );\n\n await addGeneratorMetricsIfApplicable(tree, [\n TS_AGENT_REACT_CONNECTION_GENERATOR_INFO,\n ]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n}\nexport default tsAgentReactConnectionGenerator;\n\n/**\n * Ensures a wildcard path entry exists in tsconfig.base.json for the given project,\n * allowing deep imports (e.g., `@scope/project/src/agent/router.js`).\n */\nfunction ensureWildcardPathEntry(\n tree: Tree,\n projectName: string,\n projectRoot: string,\n) {\n const tsconfigPath = ['tsconfig.base.json', 'tsconfig.json'].find((p) =>\n tree.exists(p),\n );\n if (!tsconfigPath) return;\n\n updateJson(tree, tsconfigPath, (json) => {\n const paths = json.compilerOptions?.paths ?? {};\n const wildcardKey = `${projectName}/*`;\n if (!paths[wildcardKey]) {\n paths[wildcardKey] = [`./${projectRoot}/*`];\n }\n json.compilerOptions = {\n ...json.compilerOptions,\n paths,\n };\n return json;\n });\n}\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateJson","addAgentRuntimeToConnectionNamespace","addTsDependencies","addSingleImport","applyGritQL","declareDependencies","onlyWhen","ownedElsewhere","formatFilesInSubtree","installDependencies","addGeneratorMetricsIfApplicable","kebabCase","toClassName","addComponentGeneratorMetadata","getGeneratorInfo","readProjectConfigurationUnqualified","toProjectRelativePath","DEPENDENCIES","AGUI_DEPENDENCIES","addAgUiReactConnection","resolveAgUiTheme","runtimeConfigGenerator","addTsAgentTargetToLocalDev","isHttp","m","protocol","isAgUi","ts","name","when","auth","dev","TS_AGENT_REACT_CONNECTION_GENERATOR_INFO","filename","tsAgentReactConnectionGenerator","tree","options","frontendProjectConfig","sourceProject","agentProjectConfig","targetProject","targetComponent","metadata","agentName","agentNameClassName","rc","agentPort","port","ports","toLowerCase","agentProjectAlias","agentPath","path","connectionMetadata","theme","Error","sourceRoot","preferInstallDependencies","languages","ensureWildcardPathEntry","root","dirname","overwriteStrategy","KeepExisting","project","mainTsxPath","clientProviderName","agentNameKebabCase","projectRoot","projectName","tsconfigPath","find","p","exists","json","paths","compilerOptions","wildcardKey"],"mappings":"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"}
|
|
@@ -5,6 +5,44 @@
|
|
|
5
5
|
import { type GeneratorCallback, type Tree } from '@nx/devkit';
|
|
6
6
|
import { type NxGeneratorInfo } from '../../utils/nx';
|
|
7
7
|
import type { TsAstroDocsGeneratorSchema } from './schema';
|
|
8
|
+
/** The metadata this generator records, which its predicates read. */
|
|
9
|
+
export interface TsAstroDocsMetadata {
|
|
10
|
+
readonly framework: string;
|
|
11
|
+
readonly includeTranslation: boolean;
|
|
12
|
+
readonly includeBlog: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare const DEPENDENCIES: import("../../utils/declared-dependencies").DependencyDeclaration<readonly [{
|
|
15
|
+
readonly name: "astro";
|
|
16
|
+
}, {
|
|
17
|
+
readonly name: "@astrojs/starlight";
|
|
18
|
+
}, {
|
|
19
|
+
readonly name: "starlight-blog";
|
|
20
|
+
readonly when: (m: TsAstroDocsMetadata) => boolean;
|
|
21
|
+
}, {
|
|
22
|
+
readonly name: "@strands-agents/sdk";
|
|
23
|
+
readonly when: (m: TsAstroDocsMetadata) => boolean;
|
|
24
|
+
}, {
|
|
25
|
+
readonly name: "commander";
|
|
26
|
+
readonly when: (m: TsAstroDocsMetadata) => boolean;
|
|
27
|
+
}, {
|
|
28
|
+
readonly name: "fast-glob";
|
|
29
|
+
readonly when: (m: TsAstroDocsMetadata) => boolean;
|
|
30
|
+
}, {
|
|
31
|
+
readonly name: "fs-extra";
|
|
32
|
+
readonly when: (m: TsAstroDocsMetadata) => boolean;
|
|
33
|
+
}, {
|
|
34
|
+
readonly name: "simple-git";
|
|
35
|
+
readonly when: (m: TsAstroDocsMetadata) => boolean;
|
|
36
|
+
}, {
|
|
37
|
+
readonly name: "@types/fs-extra";
|
|
38
|
+
readonly when: (m: TsAstroDocsMetadata) => boolean;
|
|
39
|
+
readonly dev: true;
|
|
40
|
+
}, {
|
|
41
|
+
readonly name: "tsx";
|
|
42
|
+
readonly when: (m: TsAstroDocsMetadata) => boolean;
|
|
43
|
+
readonly dev: true;
|
|
44
|
+
readonly root: true;
|
|
45
|
+
}], readonly import("../../utils/declared-dependencies").DeclaredPyDependency<"a2a-sdk" | "ag-ui-langgraph" | "ag-ui-protocol" | "ag-ui-strands" | "aws-lambda-powertools" | "aws-lambda-powertools[tracer]" | "aws-lambda-powertools[parser]" | "aws-opentelemetry-distro" | "bedrock-agentcore" | "boto3" | "checkov" | "fastapi" | "fastapi[standard]" | "httpx" | "langchain" | "langchain-aws" | "langchain-mcp-adapters" | "langgraph" | "mcp" | "pip-check-updates" | "pip-licenses" | "ruff" | "strands-agents" | "strands-agents[a2a]" | "strands-agents-tools" | "ty" | "pynamodb" | "uvicorn" | "sqlmodel" | "alembic" | "aiomysql" | "asyncpg" | "greenlet", TsAstroDocsMetadata>[]>;
|
|
8
46
|
export declare const TS_ASTRO_DOCS_GENERATOR_INFO: NxGeneratorInfo;
|
|
9
47
|
export declare const tsAstroDocsGenerator: (tree: Tree, schema: TsAstroDocsGeneratorSchema) => Promise<GeneratorCallback>;
|
|
10
48
|
export default tsAstroDocsGenerator;
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/ import { addProjectConfiguration, generateFiles, joinPathFragments, OverwriteStrategy } from "@nx/devkit";
|
|
5
|
-
import {
|
|
5
|
+
import { addTsDependencies } from "../../utils/add-dependencies.js";
|
|
6
|
+
import { declareDependencies } from "../../utils/declared-dependencies.js";
|
|
6
7
|
import { formatFilesInSubtree } from "../../utils/format.js";
|
|
7
8
|
import { installDependencies } from "../../utils/install.js";
|
|
8
9
|
import { addGeneratorMetricsIfApplicable } from "../../utils/metrics.js";
|
|
@@ -12,7 +13,54 @@ import { getNpmScopePrefix } from "../../utils/npm-scope.js";
|
|
|
12
13
|
import { addGeneratorMetadata, getGeneratorInfo, projectExists } from "../../utils/nx.js";
|
|
13
14
|
import { getPackageManagerDisplayCommands } from "../../utils/pkg-manager.js";
|
|
14
15
|
import { ensureProjectPackageJson } from "../../utils/project-package-json.js";
|
|
15
|
-
|
|
16
|
+
// Each entry names the branch it belongs to, so the same declaration drives both
|
|
17
|
+
// adding and the version sync.
|
|
18
|
+
export const DEPENDENCIES = declareDependencies()({
|
|
19
|
+
ts: [
|
|
20
|
+
{
|
|
21
|
+
name: 'astro'
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: '@astrojs/starlight'
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'starlight-blog',
|
|
28
|
+
when: (m)=>m.includeBlog
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: '@strands-agents/sdk',
|
|
32
|
+
when: (m)=>m.includeTranslation
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'commander',
|
|
36
|
+
when: (m)=>m.includeTranslation
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'fast-glob',
|
|
40
|
+
when: (m)=>m.includeTranslation
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'fs-extra',
|
|
44
|
+
when: (m)=>m.includeTranslation
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'simple-git',
|
|
48
|
+
when: (m)=>m.includeTranslation
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: '@types/fs-extra',
|
|
52
|
+
when: (m)=>m.includeTranslation,
|
|
53
|
+
dev: true
|
|
54
|
+
},
|
|
55
|
+
// The translate target runs its script from the workspace root via tsx.
|
|
56
|
+
{
|
|
57
|
+
name: 'tsx',
|
|
58
|
+
when: (m)=>m.includeTranslation,
|
|
59
|
+
dev: true,
|
|
60
|
+
root: true
|
|
61
|
+
}
|
|
62
|
+
]
|
|
63
|
+
});
|
|
16
64
|
export const TS_ASTRO_DOCS_GENERATOR_INFO = getGeneratorInfo(import.meta.filename);
|
|
17
65
|
export const tsAstroDocsGenerator = async (tree, schema)=>{
|
|
18
66
|
const includeTranslation = !(schema.noTranslation ?? false);
|
|
@@ -104,27 +152,18 @@ export const tsAstroDocsGenerator = async (tree, schema)=>{
|
|
|
104
152
|
overwriteStrategy: OverwriteStrategy.KeepExisting
|
|
105
153
|
});
|
|
106
154
|
}
|
|
107
|
-
|
|
155
|
+
// Recorded here and read by the declaration's predicates, so the packages
|
|
156
|
+
// added below are exactly the ones the version sync will own.
|
|
157
|
+
const metadata = {
|
|
108
158
|
framework: 'astro',
|
|
109
159
|
includeTranslation,
|
|
110
160
|
includeBlog
|
|
161
|
+
};
|
|
162
|
+
addGeneratorMetadata(tree, fullyQualifiedName, TS_ASTRO_DOCS_GENERATOR_INFO, metadata);
|
|
163
|
+
addTsDependencies(tree, DEPENDENCIES, {
|
|
164
|
+
metadata,
|
|
165
|
+
projectRoot: dir
|
|
111
166
|
});
|
|
112
|
-
const dependencies = [
|
|
113
|
-
'astro',
|
|
114
|
-
'@astrojs/starlight'
|
|
115
|
-
];
|
|
116
|
-
const devDependencies = [];
|
|
117
|
-
if (includeBlog) {
|
|
118
|
-
dependencies.push('starlight-blog');
|
|
119
|
-
}
|
|
120
|
-
if (includeTranslation) {
|
|
121
|
-
dependencies.push('@strands-agents/sdk', 'commander', 'fast-glob', 'fs-extra', 'simple-git');
|
|
122
|
-
devDependencies.push('@types/fs-extra');
|
|
123
|
-
addDependenciesToPackageJson(tree, {}, withVersions([
|
|
124
|
-
'tsx'
|
|
125
|
-
]));
|
|
126
|
-
}
|
|
127
|
-
addDependenciesToPackageJson(tree, withVersions(dependencies), withVersions(devDependencies), joinPathFragments(dir, 'package.json'));
|
|
128
167
|
await addGeneratorMetricsIfApplicable(tree, [
|
|
129
168
|
TS_ASTRO_DOCS_GENERATOR_INFO
|
|
130
169
|
]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/ts/astro-docs/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n addProjectConfiguration,\n type GeneratorCallback,\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type ProjectConfiguration,\n type Tree,\n} from '@nx/devkit';\nimport { addDependenciesToPackageJson } from '../../utils/dependencies';\nimport { formatFilesInSubtree } from '../../utils/format';\nimport { installDependencies } from '../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics';\nimport { isEsmWorkspace } from '../../utils/module-format';\nimport { toKebabCase } from '../../utils/names';\nimport { getNpmScopePrefix } from '../../utils/npm-scope';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n projectExists,\n} from '../../utils/nx';\nimport { getPackageManagerDisplayCommands } from '../../utils/pkg-manager';\nimport { ensureProjectPackageJson } from '../../utils/project-package-json';\nimport { type ITsDepVersion, withVersions } from '../../utils/versions';\nimport type { TsAstroDocsGeneratorSchema } from './schema';\n\nexport const TS_ASTRO_DOCS_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const tsAstroDocsGenerator = async (\n tree: Tree,\n schema: TsAstroDocsGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const includeTranslation = !(schema.noTranslation ?? false);\n const includeBlog = !(schema.noBlog ?? false);\n const npmScopePrefix = getNpmScopePrefix(tree);\n const docsNameKebabCase = toKebabCase(schema.name);\n const fullyQualifiedName = `${npmScopePrefix}${docsNameKebabCase}`;\n // NB: interactive nx generator cli can pass empty string\n const dir = joinPathFragments(\n schema.directory || '.',\n schema.subDirectory || docsNameKebabCase,\n );\n\n const alreadyExists = projectExists(tree, fullyQualifiedName);\n\n const targets: ProjectConfiguration['targets'] = {\n build: {\n executor: 'nx:run-commands',\n options: {\n command: 'astro build',\n cwd: dir,\n },\n outputs: [`{workspaceRoot}/${dir}/dist`],\n cache: true,\n },\n start: {\n executor: 'nx:run-commands',\n options: {\n command: 'astro dev',\n cwd: dir,\n },\n continuous: true,\n },\n serve: {\n dependsOn: ['start'],\n },\n preview: {\n executor: 'nx:run-commands',\n options: {\n command: 'astro preview',\n cwd: dir,\n },\n dependsOn: ['build'],\n continuous: true,\n },\n };\n\n if (includeTranslation) {\n targets['translate'] = {\n executor: 'nx:run-commands',\n options: {\n command: 'tsx ./scripts/translate.ts',\n cwd: dir,\n forwardAllArgs: true,\n },\n };\n }\n\n if (!alreadyExists) {\n addProjectConfiguration(tree, fullyQualifiedName, {\n name: fullyQualifiedName,\n root: dir,\n sourceRoot: joinPathFragments(dir, 'src'),\n projectType: 'application',\n targets,\n });\n }\n\n ensureProjectPackageJson(tree, { dir, fullyQualifiedName });\n\n const templateOptions = {\n fullyQualifiedName,\n title: schema.name,\n includeTranslation,\n includeBlog,\n esm: isEsmWorkspace(tree),\n pkgMgrCmd: getPackageManagerDisplayCommands().exec,\n today: new Date().toISOString().slice(0, 10),\n };\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'base'),\n dir,\n templateOptions,\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // The sample blog post is always emitted above — drop it if the user opted out.\n if (!includeBlog) {\n tree.delete(\n joinPathFragments(\n dir,\n 'src',\n 'content',\n 'docs',\n 'en',\n 'blog',\n 'welcome.mdx',\n ),\n );\n }\n\n if (includeTranslation) {\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'translation'),\n dir,\n templateOptions,\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n }\n\n addGeneratorMetadata(tree, fullyQualifiedName, TS_ASTRO_DOCS_GENERATOR_INFO, {\n framework: 'astro',\n includeTranslation,\n includeBlog,\n });\n\n const dependencies: ITsDepVersion[] = ['astro', '@astrojs/starlight'];\n const devDependencies: ITsDepVersion[] = [];\n\n if (includeBlog) {\n dependencies.push('starlight-blog');\n }\n\n if (includeTranslation) {\n dependencies.push(\n '@strands-agents/sdk',\n 'commander',\n 'fast-glob',\n 'fs-extra',\n 'simple-git',\n );\n devDependencies.push('@types/fs-extra');\n addDependenciesToPackageJson(tree, {}, withVersions(['tsx']));\n }\n\n addDependenciesToPackageJson(\n tree,\n withVersions(dependencies),\n withVersions(devDependencies),\n joinPathFragments(dir, 'package.json'),\n );\n\n await addGeneratorMetricsIfApplicable(tree, [TS_ASTRO_DOCS_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, schema.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\nexport default tsAstroDocsGenerator;\n"],"names":["addProjectConfiguration","generateFiles","joinPathFragments","OverwriteStrategy","addDependenciesToPackageJson","formatFilesInSubtree","installDependencies","addGeneratorMetricsIfApplicable","isEsmWorkspace","toKebabCase","getNpmScopePrefix","addGeneratorMetadata","getGeneratorInfo","projectExists","getPackageManagerDisplayCommands","ensureProjectPackageJson","withVersions","TS_ASTRO_DOCS_GENERATOR_INFO","filename","tsAstroDocsGenerator","tree","schema","includeTranslation","noTranslation","includeBlog","noBlog","npmScopePrefix","docsNameKebabCase","name","fullyQualifiedName","dir","directory","subDirectory","alreadyExists","targets","build","executor","options","command","cwd","outputs","cache","start","continuous","serve","dependsOn","preview","forwardAllArgs","root","sourceRoot","projectType","templateOptions","title","esm","pkgMgrCmd","exec","today","Date","toISOString","slice","dirname","overwriteStrategy","KeepExisting","delete","framework","dependencies","devDependencies","push","preferInstallDependencies","languages"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/ts/astro-docs/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n addProjectConfiguration,\n type GeneratorCallback,\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type ProjectConfiguration,\n type Tree,\n} from '@nx/devkit';\nimport { addTsDependencies } from '../../utils/add-dependencies';\nimport { declareDependencies } from '../../utils/declared-dependencies';\nimport { formatFilesInSubtree } from '../../utils/format';\nimport { installDependencies } from '../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics';\nimport { isEsmWorkspace } from '../../utils/module-format';\nimport { toKebabCase } from '../../utils/names';\nimport { getNpmScopePrefix } from '../../utils/npm-scope';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n projectExists,\n} from '../../utils/nx';\nimport { getPackageManagerDisplayCommands } from '../../utils/pkg-manager';\nimport { ensureProjectPackageJson } from '../../utils/project-package-json';\nimport type { TsAstroDocsGeneratorSchema } from './schema';\n\n/** The metadata this generator records, which its predicates read. */\nexport interface TsAstroDocsMetadata {\n readonly framework: string;\n readonly includeTranslation: boolean;\n readonly includeBlog: boolean;\n}\n\n// Each entry names the branch it belongs to, so the same declaration drives both\n// adding and the version sync.\nexport const DEPENDENCIES = declareDependencies<TsAstroDocsMetadata>()({\n ts: [\n { name: 'astro' },\n { name: '@astrojs/starlight' },\n { name: 'starlight-blog', when: (m) => m.includeBlog },\n { name: '@strands-agents/sdk', when: (m) => m.includeTranslation },\n { name: 'commander', when: (m) => m.includeTranslation },\n { name: 'fast-glob', when: (m) => m.includeTranslation },\n { name: 'fs-extra', when: (m) => m.includeTranslation },\n { name: 'simple-git', when: (m) => m.includeTranslation },\n { name: '@types/fs-extra', when: (m) => m.includeTranslation, dev: true },\n // The translate target runs its script from the workspace root via tsx.\n { name: 'tsx', when: (m) => m.includeTranslation, dev: true, root: true },\n ],\n});\n\nexport const TS_ASTRO_DOCS_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const tsAstroDocsGenerator = async (\n tree: Tree,\n schema: TsAstroDocsGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const includeTranslation = !(schema.noTranslation ?? false);\n const includeBlog = !(schema.noBlog ?? false);\n const npmScopePrefix = getNpmScopePrefix(tree);\n const docsNameKebabCase = toKebabCase(schema.name);\n const fullyQualifiedName = `${npmScopePrefix}${docsNameKebabCase}`;\n // NB: interactive nx generator cli can pass empty string\n const dir = joinPathFragments(\n schema.directory || '.',\n schema.subDirectory || docsNameKebabCase,\n );\n\n const alreadyExists = projectExists(tree, fullyQualifiedName);\n\n const targets: ProjectConfiguration['targets'] = {\n build: {\n executor: 'nx:run-commands',\n options: {\n command: 'astro build',\n cwd: dir,\n },\n outputs: [`{workspaceRoot}/${dir}/dist`],\n cache: true,\n },\n start: {\n executor: 'nx:run-commands',\n options: {\n command: 'astro dev',\n cwd: dir,\n },\n continuous: true,\n },\n serve: {\n dependsOn: ['start'],\n },\n preview: {\n executor: 'nx:run-commands',\n options: {\n command: 'astro preview',\n cwd: dir,\n },\n dependsOn: ['build'],\n continuous: true,\n },\n };\n\n if (includeTranslation) {\n targets['translate'] = {\n executor: 'nx:run-commands',\n options: {\n command: 'tsx ./scripts/translate.ts',\n cwd: dir,\n forwardAllArgs: true,\n },\n };\n }\n\n if (!alreadyExists) {\n addProjectConfiguration(tree, fullyQualifiedName, {\n name: fullyQualifiedName,\n root: dir,\n sourceRoot: joinPathFragments(dir, 'src'),\n projectType: 'application',\n targets,\n });\n }\n\n ensureProjectPackageJson(tree, { dir, fullyQualifiedName });\n\n const templateOptions = {\n fullyQualifiedName,\n title: schema.name,\n includeTranslation,\n includeBlog,\n esm: isEsmWorkspace(tree),\n pkgMgrCmd: getPackageManagerDisplayCommands().exec,\n today: new Date().toISOString().slice(0, 10),\n };\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'base'),\n dir,\n templateOptions,\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // The sample blog post is always emitted above — drop it if the user opted out.\n if (!includeBlog) {\n tree.delete(\n joinPathFragments(\n dir,\n 'src',\n 'content',\n 'docs',\n 'en',\n 'blog',\n 'welcome.mdx',\n ),\n );\n }\n\n if (includeTranslation) {\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'translation'),\n dir,\n templateOptions,\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n }\n\n // Recorded here and read by the declaration's predicates, so the packages\n // added below are exactly the ones the version sync will own.\n const metadata: TsAstroDocsMetadata = {\n framework: 'astro',\n includeTranslation,\n includeBlog,\n };\n addGeneratorMetadata(\n tree,\n fullyQualifiedName,\n TS_ASTRO_DOCS_GENERATOR_INFO,\n metadata,\n );\n\n addTsDependencies(tree, DEPENDENCIES, { metadata, projectRoot: dir });\n\n await addGeneratorMetricsIfApplicable(tree, [TS_ASTRO_DOCS_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, schema.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\nexport default tsAstroDocsGenerator;\n"],"names":["addProjectConfiguration","generateFiles","joinPathFragments","OverwriteStrategy","addTsDependencies","declareDependencies","formatFilesInSubtree","installDependencies","addGeneratorMetricsIfApplicable","isEsmWorkspace","toKebabCase","getNpmScopePrefix","addGeneratorMetadata","getGeneratorInfo","projectExists","getPackageManagerDisplayCommands","ensureProjectPackageJson","DEPENDENCIES","ts","name","when","m","includeBlog","includeTranslation","dev","root","TS_ASTRO_DOCS_GENERATOR_INFO","filename","tsAstroDocsGenerator","tree","schema","noTranslation","noBlog","npmScopePrefix","docsNameKebabCase","fullyQualifiedName","dir","directory","subDirectory","alreadyExists","targets","build","executor","options","command","cwd","outputs","cache","start","continuous","serve","dependsOn","preview","forwardAllArgs","sourceRoot","projectType","templateOptions","title","esm","pkgMgrCmd","exec","today","Date","toISOString","slice","dirname","overwriteStrategy","KeepExisting","delete","metadata","framework","projectRoot","preferInstallDependencies","languages"],"mappings":"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"}
|
|
@@ -5,6 +5,30 @@
|
|
|
5
5
|
import { type GeneratorCallback, type Tree } from '@nx/devkit';
|
|
6
6
|
import { type NxGeneratorInfo } from '../../utils/nx';
|
|
7
7
|
import type { TsDcrProxyGeneratorSchema } from './schema';
|
|
8
|
+
export declare const DEPENDENCIES: import("../../utils/declared-dependencies").DependencyDeclaration<readonly [{
|
|
9
|
+
readonly name: "@aws-sdk/client-secrets-manager";
|
|
10
|
+
}, {
|
|
11
|
+
readonly name: "@types/aws-lambda";
|
|
12
|
+
readonly dev: true;
|
|
13
|
+
}, {
|
|
14
|
+
readonly name: "rolldown";
|
|
15
|
+
} & {
|
|
16
|
+
versionOnly: true;
|
|
17
|
+
}, {
|
|
18
|
+
readonly name: "constructs";
|
|
19
|
+
readonly when: (m: import("../../utils/shared-constructs-constants").IacMetadata) => boolean;
|
|
20
|
+
} & {
|
|
21
|
+
versionOnly: true;
|
|
22
|
+
}, {
|
|
23
|
+
readonly name: "aws-cdk-lib";
|
|
24
|
+
readonly when: (m: import("../../utils/shared-constructs-constants").IacMetadata) => boolean;
|
|
25
|
+
} & {
|
|
26
|
+
versionOnly: true;
|
|
27
|
+
}, {
|
|
28
|
+
readonly name: "@types/node";
|
|
29
|
+
} & {
|
|
30
|
+
versionOnly: true;
|
|
31
|
+
}], readonly import("../../utils/declared-dependencies").DeclaredPyDependency<"a2a-sdk" | "ag-ui-langgraph" | "ag-ui-protocol" | "ag-ui-strands" | "aws-lambda-powertools" | "aws-lambda-powertools[tracer]" | "aws-lambda-powertools[parser]" | "aws-opentelemetry-distro" | "bedrock-agentcore" | "boto3" | "checkov" | "fastapi" | "fastapi[standard]" | "httpx" | "langchain" | "langchain-aws" | "langchain-mcp-adapters" | "langgraph" | "mcp" | "pip-check-updates" | "pip-licenses" | "ruff" | "strands-agents" | "strands-agents[a2a]" | "strands-agents-tools" | "ty" | "pynamodb" | "uvicorn" | "sqlmodel" | "alembic" | "aiomysql" | "asyncpg" | "greenlet", Record<string, never>>[]>;
|
|
8
32
|
export declare const TS_DCR_PROXY_GENERATOR_INFO: NxGeneratorInfo;
|
|
9
33
|
export declare const tsDcrProxyGenerator: (tree: Tree, options: TsDcrProxyGeneratorSchema) => Promise<GeneratorCallback>;
|
|
10
34
|
export default tsDcrProxyGenerator;
|