@aws/nx-plugin 1.0.0-rc.53 → 1.0.0-rc.55
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/order-access-log-delivery-after-bucket-policy/migration.d.ts +6 -0
- package/src/migrations/latest/order-access-log-delivery-after-bucket-policy/migration.js +94 -0
- package/src/migrations/latest/order-access-log-delivery-after-bucket-policy/migration.js.map +1 -0
- 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/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/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/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 +20 -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/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 +15 -1
- package/src/utils/migration-versions.js +53 -7
- 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 +35 -0
- package/src/utils/version-upgrade-migration/nx-package-updates.js +42 -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 +18 -0
- package/src/utils/version-upgrade-migration/register.js +33 -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
- package/src/utils/website-constructs/files/cdk/core/static-website.ts.template +4 -0
|
@@ -3,7 +3,87 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
import { type ProjectConfiguration, type Tree } from '@nx/devkit';
|
|
6
|
+
/**
|
|
7
|
+
* The values this helper's predicates read. Its callers record them, so the
|
|
8
|
+
* theme and auth branches taken here can be confirmed at upgrade time.
|
|
9
|
+
*/
|
|
10
|
+
export interface AgUiMetadata {
|
|
11
|
+
readonly theme: string;
|
|
12
|
+
readonly auth: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const DEPENDENCIES: import("../../../utils/declared-dependencies").DependencyDeclaration<readonly [{
|
|
15
|
+
readonly name: "@copilotkit/react-core";
|
|
16
|
+
}, {
|
|
17
|
+
readonly name: "@ag-ui/client";
|
|
18
|
+
}, {
|
|
19
|
+
readonly name: "@cloudscape-design/chat-components";
|
|
20
|
+
readonly when: (m: AgUiMetadata) => boolean;
|
|
21
|
+
}, {
|
|
22
|
+
readonly name: "lucide-react";
|
|
23
|
+
readonly when: (m: AgUiMetadata) => boolean;
|
|
24
|
+
}, {
|
|
25
|
+
readonly name: "oidc-client-ts";
|
|
26
|
+
readonly when: (m: AgUiMetadata) => boolean;
|
|
27
|
+
}, {
|
|
28
|
+
readonly name: "aws4fetch";
|
|
29
|
+
readonly when: (m: AgUiMetadata) => boolean;
|
|
30
|
+
}, {
|
|
31
|
+
readonly name: "@aws-sdk/credential-provider-cognito-identity";
|
|
32
|
+
readonly when: (m: AgUiMetadata) => boolean;
|
|
33
|
+
}, {
|
|
34
|
+
readonly name: "react-oidc-context";
|
|
35
|
+
readonly when: (m: AgUiMetadata) => boolean;
|
|
36
|
+
}, {
|
|
37
|
+
readonly name: "@smithy/types";
|
|
38
|
+
readonly when: (m: AgUiMetadata) => boolean;
|
|
39
|
+
readonly dev: true;
|
|
40
|
+
}, {
|
|
41
|
+
readonly name: "react";
|
|
42
|
+
} & {
|
|
43
|
+
versionOnly: true;
|
|
44
|
+
}, {
|
|
45
|
+
readonly name: "react-dom";
|
|
46
|
+
} & {
|
|
47
|
+
versionOnly: true;
|
|
48
|
+
}, {
|
|
49
|
+
readonly name: "class-variance-authority";
|
|
50
|
+
} & {
|
|
51
|
+
versionOnly: true;
|
|
52
|
+
}, {
|
|
53
|
+
readonly name: "clsx";
|
|
54
|
+
} & {
|
|
55
|
+
versionOnly: true;
|
|
56
|
+
}, {
|
|
57
|
+
readonly name: "tailwind-merge";
|
|
58
|
+
} & {
|
|
59
|
+
versionOnly: true;
|
|
60
|
+
}, {
|
|
61
|
+
readonly name: "lucide-react";
|
|
62
|
+
} & {
|
|
63
|
+
versionOnly: true;
|
|
64
|
+
}, {
|
|
65
|
+
readonly name: "tw-animate-css";
|
|
66
|
+
} & {
|
|
67
|
+
versionOnly: true;
|
|
68
|
+
}, {
|
|
69
|
+
readonly name: "radix-ui";
|
|
70
|
+
} & {
|
|
71
|
+
versionOnly: true;
|
|
72
|
+
}, {
|
|
73
|
+
readonly name: "vite";
|
|
74
|
+
} & {
|
|
75
|
+
versionOnly: true;
|
|
76
|
+
}, {
|
|
77
|
+
readonly name: "vitest";
|
|
78
|
+
} & {
|
|
79
|
+
versionOnly: true;
|
|
80
|
+
}, {
|
|
81
|
+
readonly name: "@vitest/coverage-v8";
|
|
82
|
+
} & {
|
|
83
|
+
versionOnly: true;
|
|
84
|
+
}], 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", AgUiMetadata>[]>;
|
|
6
85
|
export type AgUiAuth = 'iam' | 'cognito' | 'none';
|
|
86
|
+
export type AgUiTheme = 'cloudscape' | 'shadcn' | 'default';
|
|
7
87
|
export interface AgUiReactConnectionOptions {
|
|
8
88
|
/** The React website project to connect FROM */
|
|
9
89
|
frontendProjectConfig: ProjectConfiguration;
|
|
@@ -27,3 +107,9 @@ export interface AgUiReactConnectionOptions {
|
|
|
27
107
|
* website's `metadata.ux` (cloudscape / shadcn / default).
|
|
28
108
|
*/
|
|
29
109
|
export declare const addAgUiReactConnection: (tree: Tree, options: AgUiReactConnectionOptions) => Promise<void>;
|
|
110
|
+
/**
|
|
111
|
+
* The theme module this helper vends, from the website's `metadata.ux`. Callers
|
|
112
|
+
* record the resolved value, so the theme predicates read what the code branches
|
|
113
|
+
* on.
|
|
114
|
+
*/
|
|
115
|
+
export declare const resolveAgUiTheme: (frontendProjectConfig: ProjectConfiguration) => AgUiTheme;
|
|
@@ -3,14 +3,58 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/ import { generateFiles, joinPathFragments, OverwriteStrategy } from "@nx/devkit";
|
|
5
5
|
import { addAgentRuntimeToConnectionNamespace } from "../../../connection/agent-runtime-config.js";
|
|
6
|
+
import { addTsDependencies } from "../../../utils/add-dependencies.js";
|
|
6
7
|
import { addDestructuredImport, addSingleImport, applyGritQL } from "../../../utils/ast.js";
|
|
7
|
-
import {
|
|
8
|
+
import { declareDependencies, ownedElsewhere } from "../../../utils/declared-dependencies.js";
|
|
8
9
|
import { kebabCase } from "../../../utils/names.js";
|
|
9
10
|
import { getNpmScopePrefix } from "../../../utils/npm-scope.js";
|
|
10
11
|
import { registerPnpmBuiltDependencies } from "../../../utils/pnpm-workspace.js";
|
|
11
|
-
import { sharedShadcnGenerator } from "../../../utils/shared-shadcn.js";
|
|
12
|
-
import { withVersions } from "../../../utils/versions.js";
|
|
12
|
+
import { SHADCN_DEPENDENCIES, sharedShadcnGenerator } from "../../../utils/shared-shadcn.js";
|
|
13
13
|
import { runtimeConfigGenerator } from "../runtime-config/generator.js";
|
|
14
|
+
// Each entry names the theme or auth branch it belongs to, so the same
|
|
15
|
+
// declaration drives both adding and the version sync.
|
|
16
|
+
export const DEPENDENCIES = declareDependencies()({
|
|
17
|
+
ts: [
|
|
18
|
+
{
|
|
19
|
+
name: '@copilotkit/react-core'
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: '@ag-ui/client'
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: '@cloudscape-design/chat-components',
|
|
26
|
+
when: (m)=>m.theme === 'cloudscape'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'lucide-react',
|
|
30
|
+
when: (m)=>m.theme === 'shadcn'
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'oidc-client-ts',
|
|
34
|
+
when: (m)=>m.auth === 'iam'
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'aws4fetch',
|
|
38
|
+
when: (m)=>m.auth === 'iam'
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: '@aws-sdk/credential-provider-cognito-identity',
|
|
42
|
+
when: (m)=>m.auth === 'iam'
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'react-oidc-context',
|
|
46
|
+
when: (m)=>m.auth === 'iam' || m.auth === 'cognito'
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: '@smithy/types',
|
|
50
|
+
when: (m)=>m.auth === 'iam',
|
|
51
|
+
dev: true
|
|
52
|
+
},
|
|
53
|
+
// `sharedShadcnGenerator` adds these to the shared shadcn project it
|
|
54
|
+
// creates, not to the website.
|
|
55
|
+
...ownedElsewhere(SHADCN_DEPENDENCIES)
|
|
56
|
+
]
|
|
57
|
+
});
|
|
14
58
|
/**
|
|
15
59
|
* Wires a React website up to an AG-UI agent using CopilotKit and
|
|
16
60
|
* @ag-ui/client's HttpAgent. Agent-server-language agnostic.
|
|
@@ -25,6 +69,12 @@ import { runtimeConfigGenerator } from "../runtime-config/generator.js";
|
|
|
25
69
|
*/ export const addAgUiReactConnection = async (tree, options)=>{
|
|
26
70
|
const { frontendProjectConfig, agentName, agentNameClassName, auth } = options;
|
|
27
71
|
const theme = resolveAgUiTheme(frontendProjectConfig);
|
|
72
|
+
// The values the declaration's predicates read. Callers record the same pair,
|
|
73
|
+
// so what is added here is exactly what the version sync owns.
|
|
74
|
+
const metadata = {
|
|
75
|
+
theme,
|
|
76
|
+
auth
|
|
77
|
+
};
|
|
28
78
|
const scopeAlias = getNpmScopePrefix(tree);
|
|
29
79
|
// Generates `src/components/AguiProvider.tsx` (if absent) and
|
|
30
80
|
// `src/hooks/useAgui<AgentName>.tsx`. Existing files are kept so re-running
|
|
@@ -38,7 +88,7 @@ import { runtimeConfigGenerator } from "../runtime-config/generator.js";
|
|
|
38
88
|
});
|
|
39
89
|
// Shadcn theme imports from the shared shadcn library, so it must exist.
|
|
40
90
|
if (theme === 'shadcn') {
|
|
41
|
-
await sharedShadcnGenerator(tree);
|
|
91
|
+
await sharedShadcnGenerator(tree, DEPENDENCIES);
|
|
42
92
|
}
|
|
43
93
|
generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', theme), frontendProjectConfig.root, {
|
|
44
94
|
scopeAlias
|
|
@@ -67,29 +117,10 @@ import { runtimeConfigGenerator } from "../runtime-config/generator.js";
|
|
|
67
117
|
registerPnpmBuiltDependencies(tree, {
|
|
68
118
|
'@scarf/scarf': false
|
|
69
119
|
});
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
'@cloudscape-design/chat-components'
|
|
75
|
-
] : [],
|
|
76
|
-
...theme === 'shadcn' ? [
|
|
77
|
-
'lucide-react'
|
|
78
|
-
] : [],
|
|
79
|
-
...auth === 'iam' ? [
|
|
80
|
-
'oidc-client-ts',
|
|
81
|
-
'aws4fetch',
|
|
82
|
-
'@aws-sdk/credential-provider-cognito-identity',
|
|
83
|
-
'react-oidc-context'
|
|
84
|
-
] : [],
|
|
85
|
-
...auth === 'cognito' ? [
|
|
86
|
-
'react-oidc-context'
|
|
87
|
-
] : []
|
|
88
|
-
]), withVersions([
|
|
89
|
-
...auth === 'iam' ? [
|
|
90
|
-
'@smithy/types'
|
|
91
|
-
] : []
|
|
92
|
-
]), joinPathFragments(frontendProjectConfig.root, 'package.json'));
|
|
120
|
+
addTsDependencies(tree, DEPENDENCIES, {
|
|
121
|
+
metadata,
|
|
122
|
+
projectRoot: frontendProjectConfig.root
|
|
123
|
+
});
|
|
93
124
|
// Agents only publish their runtime ARN to the 'agentcore' namespace by
|
|
94
125
|
// default, which isn't exposed to the website. Patch the agent's CDK/TF
|
|
95
126
|
// construct to also publish under 'connection' so the browser can read it
|
|
@@ -99,7 +130,11 @@ import { runtimeConfigGenerator } from "../runtime-config/generator.js";
|
|
|
99
130
|
agentNameClassName
|
|
100
131
|
});
|
|
101
132
|
};
|
|
102
|
-
|
|
133
|
+
/**
|
|
134
|
+
* The theme module this helper vends, from the website's `metadata.ux`. Callers
|
|
135
|
+
* record the resolved value, so the theme predicates read what the code branches
|
|
136
|
+
* on.
|
|
137
|
+
*/ export const resolveAgUiTheme = (frontendProjectConfig)=>{
|
|
103
138
|
const ux = frontendProjectConfig.metadata?.ux?.toLowerCase();
|
|
104
139
|
switch(ux){
|
|
105
140
|
case 'cloudscape':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/agui/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 ProjectConfiguration,\n type Tree,\n} from '@nx/devkit';\nimport { addAgentRuntimeToConnectionNamespace } from '../../../connection/agent-runtime-config';\nimport {\n addDestructuredImport,\n addSingleImport,\n applyGritQL,\n} from '../../../utils/ast';\nimport { addDependenciesToPackageJson } from '../../../utils/dependencies';\nimport { kebabCase } from '../../../utils/names';\nimport { getNpmScopePrefix } from '../../../utils/npm-scope';\nimport { registerPnpmBuiltDependencies } from '../../../utils/pnpm-workspace';\nimport { sharedShadcnGenerator } from '../../../utils/shared-shadcn';\nimport { withVersions } from '../../../utils/versions';\nimport { runtimeConfigGenerator } from '../runtime-config/generator';\n\nexport type AgUiAuth = 'iam' | 'cognito' | 'none';\n\ntype AgUiTheme = 'cloudscape' | 'shadcn' | 'default';\n\nexport interface AgUiReactConnectionOptions {\n /** The React website project to connect FROM */\n frontendProjectConfig: ProjectConfiguration;\n /** The AG-UI agent's exposed name (used as CopilotKit's agent key) */\n agentName: string;\n /** PascalCase class name used for component names and runtime config keys */\n agentNameClassName: string;\n /** Auth scheme used by the agent */\n auth: AgUiAuth;\n}\n\n/**\n * Wires a React website up to an AG-UI agent using CopilotKit and\n * @ag-ui/client's HttpAgent. Agent-server-language agnostic.\n *\n * On first invocation creates a shared `AguiProvider` component (with an empty\n * `selfManagedAgents` registry) and wraps `<App />` in it. Each invocation\n * AST-patches `AguiProvider` to register one more agent hook — running the\n * generator multiple times is idempotent and additive.\n *\n * Also vends a `src/components/copilot` theme module picked from the\n * website's `metadata.ux` (cloudscape / shadcn / default).\n */\nexport const addAgUiReactConnection = async (\n tree: Tree,\n options: AgUiReactConnectionOptions,\n) => {\n const { frontendProjectConfig, agentName, agentNameClassName, auth } =\n options;\n\n const theme = resolveAgUiTheme(frontendProjectConfig);\n const scopeAlias = getNpmScopePrefix(tree);\n\n // Generates `src/components/AguiProvider.tsx` (if absent) and\n // `src/hooks/useAgui<AgentName>.tsx`. Existing files are kept so re-running\n // the generator is idempotent.\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'common'),\n frontendProjectConfig.root,\n { agentName, agentNameClassName, auth },\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // Shadcn theme imports from the shared shadcn library, so it must exist.\n if (theme === 'shadcn') {\n await sharedShadcnGenerator(tree);\n }\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', theme),\n frontendProjectConfig.root,\n { scopeAlias },\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\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 { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n }\n\n await runtimeConfigGenerator(tree, {\n project: frontendProjectConfig.name,\n });\n\n // AST-patch AguiProvider to register this agent's hook\n await registerAgentHookInProvider(\n tree,\n frontendProjectConfig,\n agentNameClassName,\n );\n\n // Wrap <App /> in <AguiProvider> in main.tsx (idempotent)\n const mainTsxPath = joinPathFragments(\n frontendProjectConfig.sourceRoot,\n 'main.tsx',\n );\n await addSingleImport(\n tree,\n mainTsxPath,\n 'AguiProvider',\n './components/AguiProvider',\n );\n await applyGritQL(\n tree,\n mainTsxPath,\n `\\`<App />\\` => \\`<AguiProvider><App /></AguiProvider>\\` where { $program <: not contains \\`<AguiProvider>$_</AguiProvider>\\` }`,\n );\n\n // @copilotkit/react-core transitively pulls in @scarf/scarf (telemetry),\n // which has a postinstall script. Under pnpm 11's default\n // `strictDepBuilds=true` that script is treated as an unreviewed build and\n // fails the install. Register it as an explicitly-rejected build so pnpm\n // knows we've seen it and will skip it instead of erroring.\n registerPnpmBuiltDependencies(tree, { '@scarf/scarf': false });\n\n addDependenciesToPackageJson(\n tree,\n withVersions([\n '@copilotkit/react-core',\n '@ag-ui/client',\n ...((theme === 'cloudscape'\n ? ['@cloudscape-design/chat-components']\n : []) as any),\n ...((theme === 'shadcn' ? ['lucide-react'] : []) as any),\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([...((auth === 'iam' ? ['@smithy/types'] : []) as any)]),\n joinPathFragments(frontendProjectConfig.root, 'package.json'),\n );\n\n // Agents only publish their runtime ARN to the 'agentcore' namespace by\n // default, which isn't exposed to the website. Patch the agent's CDK/TF\n // construct to also publish under 'connection' so the browser can read it\n // from runtime-config.json.\n await addAgentRuntimeToConnectionNamespace(tree, {\n agentNameKebabCase: kebabCase(agentNameClassName),\n agentNameClassName,\n });\n};\n\nconst resolveAgUiTheme = (\n frontendProjectConfig: ProjectConfiguration,\n): AgUiTheme => {\n const ux = (\n (frontendProjectConfig.metadata as any)?.ux as string | undefined\n )?.toLowerCase();\n switch (ux) {\n case 'cloudscape':\n return 'cloudscape';\n case 'shadcn':\n return 'shadcn';\n default:\n return 'default';\n }\n};\n\n/**\n * Register this agent's hook in the shared `AguiProvider` using GritQL AST\n * patches. The provider starts out with an empty `selfManagedAgents` registry\n * (from the template); each call appends:\n * - `import { useAgui<Name> } from '../hooks/useAgui<Name>';`\n * - `const <varName> = useAgui<Name>();` before the `useMemo` call\n * - `...<varName>` into the memoised object literal\n * - `<varName>` into the `useMemo` deps array\n *\n * All steps are guarded so re-running produces byte-identical output.\n */\nconst registerAgentHookInProvider = async (\n tree: Tree,\n frontendProjectConfig: ProjectConfiguration,\n agentNameClassName: string,\n) => {\n const providerPath = joinPathFragments(\n frontendProjectConfig.sourceRoot,\n 'components',\n 'AguiProvider.tsx',\n );\n const hookName = `useAgui${agentNameClassName}`;\n // useAguiStoryAgent -> storyAgentAgents\n const varName = `${agentNameClassName.charAt(0).toLowerCase()}${agentNameClassName.slice(1)}Agents`;\n\n // 1. Add the hook import\n await addDestructuredImport(\n tree,\n providerPath,\n [hookName],\n `../hooks/${hookName}`,\n );\n\n // 2. Insert `const <varName> = <hookName>();` before the useMemo declaration\n await applyGritQL(\n tree,\n providerPath,\n `\\`const selfManagedAgents = useMemo<Record<string, AbstractAgent>>($body, $deps);\\` => ` +\n `\\`const ${varName} = ${hookName}();\\nconst selfManagedAgents = useMemo<Record<string, AbstractAgent>>($body, $deps);\\` ` +\n `where { $program <: not contains \\`const ${varName} = ${hookName}()\\` }`,\n );\n\n // 3. Spread `...<varName>` into the memoised object and add `<varName>` to\n // the deps array. Branches on `{}`/`[]` vs populated so both the\n // first-agent and nth-agent cases produce clean output.\n await applyGritQL(\n tree,\n providerPath,\n `\\`useMemo<Record<string, AbstractAgent>>(() => ($obj), $deps)\\` where {` +\n ` $obj <: not contains \\`...${varName}\\`,` +\n ` if ($obj <: \\`{}\\`) { $obj => \\`{ ...${varName} }\\` }` +\n ` else { $obj <: \\`{$items}\\` where { $items += \\`, ...${varName}\\` } },` +\n ` if ($deps <: \\`[]\\`) { $deps => \\`[${varName}]\\` }` +\n ` else { $deps <: \\`[$dd]\\` where { $dd += \\`, ${varName}\\` } }` +\n ` }`,\n );\n};\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","addAgentRuntimeToConnectionNamespace","addDestructuredImport","addSingleImport","applyGritQL","addDependenciesToPackageJson","kebabCase","getNpmScopePrefix","registerPnpmBuiltDependencies","sharedShadcnGenerator","withVersions","runtimeConfigGenerator","addAgUiReactConnection","tree","options","frontendProjectConfig","agentName","agentNameClassName","auth","theme","resolveAgUiTheme","scopeAlias","dirname","root","overwriteStrategy","KeepExisting","sourceRoot","project","name","registerAgentHookInProvider","mainTsxPath","agentNameKebabCase","ux","metadata","toLowerCase","providerPath","hookName","varName","charAt","slice"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/ts/react-website/agui/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 ProjectConfiguration,\n type Tree,\n} from '@nx/devkit';\nimport { addAgentRuntimeToConnectionNamespace } from '../../../connection/agent-runtime-config';\nimport { addTsDependencies } from '../../../utils/add-dependencies';\nimport {\n addDestructuredImport,\n addSingleImport,\n applyGritQL,\n} from '../../../utils/ast';\nimport {\n declareDependencies,\n ownedElsewhere,\n} from '../../../utils/declared-dependencies';\nimport { kebabCase } from '../../../utils/names';\nimport { getNpmScopePrefix } from '../../../utils/npm-scope';\nimport { registerPnpmBuiltDependencies } from '../../../utils/pnpm-workspace';\nimport {\n SHADCN_DEPENDENCIES,\n sharedShadcnGenerator,\n} from '../../../utils/shared-shadcn';\nimport { runtimeConfigGenerator } from '../runtime-config/generator';\n\n/**\n * The values this helper's predicates read. Its callers record them, so the\n * theme and auth branches taken here can be confirmed at upgrade time.\n */\nexport interface AgUiMetadata {\n readonly theme: string;\n readonly auth: string;\n}\n\n// Each entry names the theme or auth branch it belongs to, so the same\n// declaration drives both adding and the version sync.\nexport const DEPENDENCIES = declareDependencies<AgUiMetadata>()({\n ts: [\n { name: '@copilotkit/react-core' },\n { name: '@ag-ui/client' },\n {\n name: '@cloudscape-design/chat-components',\n when: (m) => m.theme === 'cloudscape',\n },\n { name: 'lucide-react', when: (m) => m.theme === 'shadcn' },\n { name: 'oidc-client-ts', when: (m) => m.auth === 'iam' },\n { name: 'aws4fetch', when: (m) => m.auth === 'iam' },\n {\n name: '@aws-sdk/credential-provider-cognito-identity',\n when: (m) => m.auth === 'iam',\n },\n {\n name: 'react-oidc-context',\n when: (m) => m.auth === 'iam' || m.auth === 'cognito',\n },\n { name: '@smithy/types', when: (m) => m.auth === 'iam', dev: true },\n // `sharedShadcnGenerator` adds these to the shared shadcn project it\n // creates, not to the website.\n ...ownedElsewhere(SHADCN_DEPENDENCIES),\n ],\n});\n\nexport type AgUiAuth = 'iam' | 'cognito' | 'none';\n\nexport type AgUiTheme = 'cloudscape' | 'shadcn' | 'default';\n\nexport interface AgUiReactConnectionOptions {\n /** The React website project to connect FROM */\n frontendProjectConfig: ProjectConfiguration;\n /** The AG-UI agent's exposed name (used as CopilotKit's agent key) */\n agentName: string;\n /** PascalCase class name used for component names and runtime config keys */\n agentNameClassName: string;\n /** Auth scheme used by the agent */\n auth: AgUiAuth;\n}\n\n/**\n * Wires a React website up to an AG-UI agent using CopilotKit and\n * @ag-ui/client's HttpAgent. Agent-server-language agnostic.\n *\n * On first invocation creates a shared `AguiProvider` component (with an empty\n * `selfManagedAgents` registry) and wraps `<App />` in it. Each invocation\n * AST-patches `AguiProvider` to register one more agent hook — running the\n * generator multiple times is idempotent and additive.\n *\n * Also vends a `src/components/copilot` theme module picked from the\n * website's `metadata.ux` (cloudscape / shadcn / default).\n */\nexport const addAgUiReactConnection = async (\n tree: Tree,\n options: AgUiReactConnectionOptions,\n) => {\n const { frontendProjectConfig, agentName, agentNameClassName, auth } =\n options;\n\n const theme = resolveAgUiTheme(frontendProjectConfig);\n // The values the declaration's predicates read. Callers record the same pair,\n // so what is added here is exactly what the version sync owns.\n const metadata: AgUiMetadata = { theme, auth };\n const scopeAlias = getNpmScopePrefix(tree);\n\n // Generates `src/components/AguiProvider.tsx` (if absent) and\n // `src/hooks/useAgui<AgentName>.tsx`. Existing files are kept so re-running\n // the generator is idempotent.\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'common'),\n frontendProjectConfig.root,\n { agentName, agentNameClassName, auth },\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // Shadcn theme imports from the shared shadcn library, so it must exist.\n if (theme === 'shadcn') {\n await sharedShadcnGenerator(tree, DEPENDENCIES);\n }\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', theme),\n frontendProjectConfig.root,\n { scopeAlias },\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\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 { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n }\n\n await runtimeConfigGenerator(tree, {\n project: frontendProjectConfig.name,\n });\n\n // AST-patch AguiProvider to register this agent's hook\n await registerAgentHookInProvider(\n tree,\n frontendProjectConfig,\n agentNameClassName,\n );\n\n // Wrap <App /> in <AguiProvider> in main.tsx (idempotent)\n const mainTsxPath = joinPathFragments(\n frontendProjectConfig.sourceRoot,\n 'main.tsx',\n );\n await addSingleImport(\n tree,\n mainTsxPath,\n 'AguiProvider',\n './components/AguiProvider',\n );\n await applyGritQL(\n tree,\n mainTsxPath,\n `\\`<App />\\` => \\`<AguiProvider><App /></AguiProvider>\\` where { $program <: not contains \\`<AguiProvider>$_</AguiProvider>\\` }`,\n );\n\n // @copilotkit/react-core transitively pulls in @scarf/scarf (telemetry),\n // which has a postinstall script. Under pnpm 11's default\n // `strictDepBuilds=true` that script is treated as an unreviewed build and\n // fails the install. Register it as an explicitly-rejected build so pnpm\n // knows we've seen it and will skip it instead of erroring.\n registerPnpmBuiltDependencies(tree, { '@scarf/scarf': false });\n\n addTsDependencies(tree, DEPENDENCIES, {\n metadata,\n projectRoot: frontendProjectConfig.root,\n });\n\n // Agents only publish their runtime ARN to the 'agentcore' namespace by\n // default, which isn't exposed to the website. Patch the agent's CDK/TF\n // construct to also publish under 'connection' so the browser can read it\n // from runtime-config.json.\n await addAgentRuntimeToConnectionNamespace(tree, {\n agentNameKebabCase: kebabCase(agentNameClassName),\n agentNameClassName,\n });\n};\n\n/**\n * The theme module this helper vends, from the website's `metadata.ux`. Callers\n * record the resolved value, so the theme predicates read what the code branches\n * on.\n */\nexport const resolveAgUiTheme = (\n frontendProjectConfig: ProjectConfiguration,\n): AgUiTheme => {\n const ux = (\n (frontendProjectConfig.metadata as any)?.ux as string | undefined\n )?.toLowerCase();\n switch (ux) {\n case 'cloudscape':\n return 'cloudscape';\n case 'shadcn':\n return 'shadcn';\n default:\n return 'default';\n }\n};\n\n/**\n * Register this agent's hook in the shared `AguiProvider` using GritQL AST\n * patches. The provider starts out with an empty `selfManagedAgents` registry\n * (from the template); each call appends:\n * - `import { useAgui<Name> } from '../hooks/useAgui<Name>';`\n * - `const <varName> = useAgui<Name>();` before the `useMemo` call\n * - `...<varName>` into the memoised object literal\n * - `<varName>` into the `useMemo` deps array\n *\n * All steps are guarded so re-running produces byte-identical output.\n */\nconst registerAgentHookInProvider = async (\n tree: Tree,\n frontendProjectConfig: ProjectConfiguration,\n agentNameClassName: string,\n) => {\n const providerPath = joinPathFragments(\n frontendProjectConfig.sourceRoot,\n 'components',\n 'AguiProvider.tsx',\n );\n const hookName = `useAgui${agentNameClassName}`;\n // useAguiStoryAgent -> storyAgentAgents\n const varName = `${agentNameClassName.charAt(0).toLowerCase()}${agentNameClassName.slice(1)}Agents`;\n\n // 1. Add the hook import\n await addDestructuredImport(\n tree,\n providerPath,\n [hookName],\n `../hooks/${hookName}`,\n );\n\n // 2. Insert `const <varName> = <hookName>();` before the useMemo declaration\n await applyGritQL(\n tree,\n providerPath,\n `\\`const selfManagedAgents = useMemo<Record<string, AbstractAgent>>($body, $deps);\\` => ` +\n `\\`const ${varName} = ${hookName}();\\nconst selfManagedAgents = useMemo<Record<string, AbstractAgent>>($body, $deps);\\` ` +\n `where { $program <: not contains \\`const ${varName} = ${hookName}()\\` }`,\n );\n\n // 3. Spread `...<varName>` into the memoised object and add `<varName>` to\n // the deps array. Branches on `{}`/`[]` vs populated so both the\n // first-agent and nth-agent cases produce clean output.\n await applyGritQL(\n tree,\n providerPath,\n `\\`useMemo<Record<string, AbstractAgent>>(() => ($obj), $deps)\\` where {` +\n ` $obj <: not contains \\`...${varName}\\`,` +\n ` if ($obj <: \\`{}\\`) { $obj => \\`{ ...${varName} }\\` }` +\n ` else { $obj <: \\`{$items}\\` where { $items += \\`, ...${varName}\\` } },` +\n ` if ($deps <: \\`[]\\`) { $deps => \\`[${varName}]\\` }` +\n ` else { $deps <: \\`[$dd]\\` where { $dd += \\`, ${varName}\\` } }` +\n ` }`,\n );\n};\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","addAgentRuntimeToConnectionNamespace","addTsDependencies","addDestructuredImport","addSingleImport","applyGritQL","declareDependencies","ownedElsewhere","kebabCase","getNpmScopePrefix","registerPnpmBuiltDependencies","SHADCN_DEPENDENCIES","sharedShadcnGenerator","runtimeConfigGenerator","DEPENDENCIES","ts","name","when","m","theme","auth","dev","addAgUiReactConnection","tree","options","frontendProjectConfig","agentName","agentNameClassName","resolveAgUiTheme","metadata","scopeAlias","dirname","root","overwriteStrategy","KeepExisting","sourceRoot","project","registerAgentHookInProvider","mainTsxPath","projectRoot","agentNameKebabCase","ux","toLowerCase","providerPath","hookName","varName","charAt","slice"],"mappings":"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"}
|
|
@@ -1940,6 +1940,10 @@ export class StaticWebsite extends Construct {
|
|
|
1940
1940
|
resourceArn: bucket.bucketArn,
|
|
1941
1941
|
},
|
|
1942
1942
|
);
|
|
1943
|
+
const bucketPolicy = (bucket as Bucket).policy;
|
|
1944
|
+
if (bucketPolicy) {
|
|
1945
|
+
source.node.addDependency(bucketPolicy);
|
|
1946
|
+
}
|
|
1943
1947
|
const destination: CfnDeliveryDestination = new CfnDeliveryDestination(
|
|
1944
1948
|
this,
|
|
1945
1949
|
\`\${id}AccessLogsDestination\`,
|
|
@@ -2291,7 +2295,10 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
2291
2295
|
"generator": "ts#react-website",
|
|
2292
2296
|
"ux": "cloudscape",
|
|
2293
2297
|
"framework": "react",
|
|
2294
|
-
"infra": "cloudfront-s3"
|
|
2298
|
+
"infra": "cloudfront-s3",
|
|
2299
|
+
"tailwind": true,
|
|
2300
|
+
"tanstackRouter": false,
|
|
2301
|
+
"iac": "cdk"
|
|
2295
2302
|
},
|
|
2296
2303
|
"targets": {
|
|
2297
2304
|
"build": {
|
|
@@ -3750,6 +3757,10 @@ export class StaticWebsite extends Construct {
|
|
|
3750
3757
|
resourceArn: bucket.bucketArn,
|
|
3751
3758
|
},
|
|
3752
3759
|
);
|
|
3760
|
+
const bucketPolicy = (bucket as Bucket).policy;
|
|
3761
|
+
if (bucketPolicy) {
|
|
3762
|
+
source.node.addDependency(bucketPolicy);
|
|
3763
|
+
}
|
|
3753
3764
|
const destination: CfnDeliveryDestination = new CfnDeliveryDestination(
|
|
3754
3765
|
this,
|
|
3755
3766
|
\`\${id}AccessLogsDestination\`,
|
|
@@ -4107,7 +4118,10 @@ exports[`react-website generator > Tanstack router integration > should generate
|
|
|
4107
4118
|
"generator": "ts#react-website",
|
|
4108
4119
|
"ux": "cloudscape",
|
|
4109
4120
|
"framework": "react",
|
|
4110
|
-
"infra": "cloudfront-s3"
|
|
4121
|
+
"infra": "cloudfront-s3",
|
|
4122
|
+
"tailwind": true,
|
|
4123
|
+
"tanstackRouter": true,
|
|
4124
|
+
"iac": "cdk"
|
|
4111
4125
|
},
|
|
4112
4126
|
"targets": {
|
|
4113
4127
|
"build": {
|
|
@@ -5420,6 +5434,10 @@ export class StaticWebsite extends Construct {
|
|
|
5420
5434
|
resourceArn: bucket.bucketArn,
|
|
5421
5435
|
},
|
|
5422
5436
|
);
|
|
5437
|
+
const bucketPolicy = (bucket as Bucket).policy;
|
|
5438
|
+
if (bucketPolicy) {
|
|
5439
|
+
source.node.addDependency(bucketPolicy);
|
|
5440
|
+
}
|
|
5423
5441
|
const destination: CfnDeliveryDestination = new CfnDeliveryDestination(
|
|
5424
5442
|
this,
|
|
5425
5443
|
\`\${id}AccessLogsDestination\`,
|
|
@@ -4,7 +4,142 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { type Tree } from '@nx/devkit';
|
|
6
6
|
import { type NxGeneratorInfo } from '../../../utils/nx';
|
|
7
|
-
import type
|
|
7
|
+
import { type IacMetadata } from '../../../utils/shared-constructs-constants';
|
|
8
|
+
import type { TsReactWebsiteGeneratorSchema, WebsiteInfraOption } from './schema';
|
|
9
|
+
/** The metadata this generator records, which its predicates read. */
|
|
10
|
+
export interface TsReactWebsiteMetadata extends IacMetadata {
|
|
11
|
+
readonly ux: UxOption;
|
|
12
|
+
readonly framework: string;
|
|
13
|
+
readonly infra: WebsiteInfraOption;
|
|
14
|
+
readonly tailwind: boolean;
|
|
15
|
+
readonly tanstackRouter: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare const DEPENDENCIES: import("../../../utils/declared-dependencies").DependencyDeclaration<readonly [{
|
|
18
|
+
readonly name: "react";
|
|
19
|
+
}, {
|
|
20
|
+
readonly name: "react-dom";
|
|
21
|
+
}, {
|
|
22
|
+
readonly name: "@nx/react";
|
|
23
|
+
readonly dev: true;
|
|
24
|
+
readonly root: true;
|
|
25
|
+
}, {
|
|
26
|
+
readonly name: "@vitest/ui";
|
|
27
|
+
readonly dev: true;
|
|
28
|
+
readonly root: true;
|
|
29
|
+
}, {
|
|
30
|
+
readonly name: "@cloudscape-design/components";
|
|
31
|
+
readonly when: (m: TsReactWebsiteMetadata) => boolean;
|
|
32
|
+
}, {
|
|
33
|
+
readonly name: "@cloudscape-design/board-components";
|
|
34
|
+
readonly when: (m: TsReactWebsiteMetadata) => boolean;
|
|
35
|
+
}, {
|
|
36
|
+
readonly name: "@cloudscape-design/global-styles";
|
|
37
|
+
readonly when: (m: TsReactWebsiteMetadata) => boolean;
|
|
38
|
+
}, {
|
|
39
|
+
readonly name: "lucide-react";
|
|
40
|
+
readonly when: (m: TsReactWebsiteMetadata) => boolean;
|
|
41
|
+
}, {
|
|
42
|
+
readonly name: "tailwindcss";
|
|
43
|
+
readonly when: (m: TsReactWebsiteMetadata) => boolean;
|
|
44
|
+
}, {
|
|
45
|
+
readonly name: "@tailwindcss/vite";
|
|
46
|
+
readonly when: (m: TsReactWebsiteMetadata) => boolean;
|
|
47
|
+
readonly dev: true;
|
|
48
|
+
readonly root: true;
|
|
49
|
+
}, {
|
|
50
|
+
readonly name: "@tanstack/react-router";
|
|
51
|
+
readonly when: (m: TsReactWebsiteMetadata) => boolean;
|
|
52
|
+
}, {
|
|
53
|
+
readonly name: "@tanstack/router-plugin";
|
|
54
|
+
readonly when: (m: TsReactWebsiteMetadata) => boolean;
|
|
55
|
+
readonly dev: true;
|
|
56
|
+
readonly root: true;
|
|
57
|
+
}, {
|
|
58
|
+
readonly name: "@tanstack/router-generator";
|
|
59
|
+
readonly when: (m: TsReactWebsiteMetadata) => boolean;
|
|
60
|
+
readonly dev: true;
|
|
61
|
+
readonly root: true;
|
|
62
|
+
}, {
|
|
63
|
+
readonly name: "@tanstack/virtual-file-routes";
|
|
64
|
+
readonly when: (m: TsReactWebsiteMetadata) => boolean;
|
|
65
|
+
readonly dev: true;
|
|
66
|
+
readonly root: true;
|
|
67
|
+
}, {
|
|
68
|
+
readonly name: "@tanstack/router-utils";
|
|
69
|
+
readonly when: (m: TsReactWebsiteMetadata) => boolean;
|
|
70
|
+
readonly dev: true;
|
|
71
|
+
readonly root: true;
|
|
72
|
+
}, {
|
|
73
|
+
readonly name: "react";
|
|
74
|
+
} & {
|
|
75
|
+
versionOnly: true;
|
|
76
|
+
}, {
|
|
77
|
+
readonly name: "react-dom";
|
|
78
|
+
} & {
|
|
79
|
+
versionOnly: true;
|
|
80
|
+
}, {
|
|
81
|
+
readonly name: "class-variance-authority";
|
|
82
|
+
} & {
|
|
83
|
+
versionOnly: true;
|
|
84
|
+
}, {
|
|
85
|
+
readonly name: "clsx";
|
|
86
|
+
} & {
|
|
87
|
+
versionOnly: true;
|
|
88
|
+
}, {
|
|
89
|
+
readonly name: "tailwind-merge";
|
|
90
|
+
} & {
|
|
91
|
+
versionOnly: true;
|
|
92
|
+
}, {
|
|
93
|
+
readonly name: "lucide-react";
|
|
94
|
+
} & {
|
|
95
|
+
versionOnly: true;
|
|
96
|
+
}, {
|
|
97
|
+
readonly name: "tw-animate-css";
|
|
98
|
+
} & {
|
|
99
|
+
versionOnly: true;
|
|
100
|
+
}, {
|
|
101
|
+
readonly name: "radix-ui";
|
|
102
|
+
} & {
|
|
103
|
+
versionOnly: true;
|
|
104
|
+
}, {
|
|
105
|
+
readonly name: "vite";
|
|
106
|
+
} & {
|
|
107
|
+
versionOnly: true;
|
|
108
|
+
}, {
|
|
109
|
+
readonly name: "vitest";
|
|
110
|
+
} & {
|
|
111
|
+
versionOnly: true;
|
|
112
|
+
}, {
|
|
113
|
+
readonly name: "@vitest/coverage-v8";
|
|
114
|
+
} & {
|
|
115
|
+
versionOnly: true;
|
|
116
|
+
}, {
|
|
117
|
+
readonly name: "vite";
|
|
118
|
+
} & {
|
|
119
|
+
versionOnly: true;
|
|
120
|
+
}, {
|
|
121
|
+
readonly name: "vitest";
|
|
122
|
+
} & {
|
|
123
|
+
versionOnly: true;
|
|
124
|
+
}, {
|
|
125
|
+
readonly name: "@vitest/coverage-v8";
|
|
126
|
+
} & {
|
|
127
|
+
versionOnly: true;
|
|
128
|
+
}, {
|
|
129
|
+
readonly name: "constructs";
|
|
130
|
+
readonly when: (m: IacMetadata) => boolean;
|
|
131
|
+
} & {
|
|
132
|
+
versionOnly: true;
|
|
133
|
+
}, {
|
|
134
|
+
readonly name: "aws-cdk-lib";
|
|
135
|
+
readonly when: (m: IacMetadata) => boolean;
|
|
136
|
+
} & {
|
|
137
|
+
versionOnly: true;
|
|
138
|
+
}, {
|
|
139
|
+
readonly name: "@types/node";
|
|
140
|
+
} & {
|
|
141
|
+
versionOnly: true;
|
|
142
|
+
}], 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", TsReactWebsiteMetadata>[]>;
|
|
8
143
|
export declare const SUPPORTED_UX_PROVIDERS: readonly ["none", "cloudscape", "shadcn"];
|
|
9
144
|
export type UxOption = (typeof SUPPORTED_UX_PROVIDERS)[number];
|
|
10
145
|
export type Ux = UxOption;
|