@abgov/nx-adsp 12.8.0-beta.6 → 12.8.0-beta.7
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/package.json +1 -1
- package/src/generators/angular-app/angular-app.js +2 -2
- package/src/generators/angular-app/angular-app.js.map +1 -1
- package/src/generators/mean/mean.js +22 -38
- package/src/generators/mean/mean.js.map +1 -1
- package/src/generators/mern/mern.js +22 -38
- package/src/generators/mern/mern.js.map +1 -1
- package/src/generators/react-app/react-app.js +2 -2
- package/src/generators/react-app/react-app.js.map +1 -1
- package/src/utils/agent.d.ts +19 -6
- package/src/utils/agent.js +131 -32
- package/src/utils/agent.js.map +1 -1
package/package.json
CHANGED
|
@@ -107,7 +107,7 @@ function default_1(host, options) {
|
|
|
107
107
|
const appConfigTs = (_j = (_h = host.read(`${normalizedOptions.projectRoot}/src/app/app.config.ts`)) === null || _h === void 0 ? void 0 : _h.toString()) !== null && _j !== void 0 ? _j : '';
|
|
108
108
|
const appRoutesTs = (_l = (_k = host.read(`${normalizedOptions.projectRoot}/src/app/app.routes.ts`)) === null || _k === void 0 ? void 0 : _k.toString()) !== null && _l !== void 0 ? _l : '';
|
|
109
109
|
const environmentTs = (_o = (_m = host.read(`${normalizedOptions.projectRoot}/src/environments/environment.ts`)) === null || _m === void 0 ? void 0 : _m.toString()) !== null && _o !== void 0 ? _o : '';
|
|
110
|
-
yield (0, agent_1.consultAgent)(normalizedOptions.adsp.directoryServiceUrl, accessToken, {
|
|
110
|
+
yield (0, agent_1.confirmAfterAgentInterrupt)(yield (0, agent_1.consultAgent)(normalizedOptions.adsp.directoryServiceUrl, accessToken, {
|
|
111
111
|
projectName: normalizedOptions.projectName,
|
|
112
112
|
projectType: 'angular-app',
|
|
113
113
|
tenant: normalizedOptions.adsp.tenant,
|
|
@@ -119,7 +119,7 @@ function default_1(host, options) {
|
|
|
119
119
|
'src/app/app.routes.ts': appRoutesTs,
|
|
120
120
|
'src/environments/environment.ts': environmentTs,
|
|
121
121
|
},
|
|
122
|
-
}, host, normalizedOptions.projectRoot);
|
|
122
|
+
}, host, normalizedOptions.projectRoot));
|
|
123
123
|
}
|
|
124
124
|
yield (0, nx_oc_1.deploymentGenerator)(host, Object.assign(Object.assign({}, normalizedOptions), { appType: 'frontend', project: normalizedOptions.projectName }));
|
|
125
125
|
return () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-app.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/angular-app/angular-app.ts"],"names":[],"mappings":";;AAgGA,4BA4GC;;AA5MD,wCAAyE;AACzE,
|
|
1
|
+
{"version":3,"file":"angular-app.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/angular-app/angular-app.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,8 @@ const devkit_1 = require("@nx/devkit");
|
|
|
6
6
|
const nx_oc_1 = require("@abgov/nx-oc");
|
|
7
7
|
const angular_app_1 = require("../angular-app/angular-app");
|
|
8
8
|
const express_service_1 = require("../express-service/express-service");
|
|
9
|
-
const plugin_version_1 = require("../../utils/plugin-version");
|
|
10
9
|
const agent_1 = require("../../utils/agent");
|
|
10
|
+
const plugin_version_1 = require("../../utils/plugin-version");
|
|
11
11
|
function normalizeOptions(host, options) {
|
|
12
12
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
13
13
|
const adsp = yield (0, nx_oc_1.getAdspConfiguration)(host, options);
|
|
@@ -21,50 +21,34 @@ function default_1(host, options) {
|
|
|
21
21
|
const projectName = (0, devkit_1.names)(options.name).fileName;
|
|
22
22
|
const serviceName = `${projectName}-service`;
|
|
23
23
|
const appName = `${projectName}-app`;
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
//
|
|
28
|
-
|
|
29
|
-
const sharedThreadId = options.tenant ? crypto.randomUUID() : undefined;
|
|
30
|
-
yield (0, express_service_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: serviceName, skipAgent: !!sharedThreadId }));
|
|
31
|
-
if (sharedThreadId && normalizedOptions.adsp) {
|
|
32
|
-
const mainTs = (_b = (_a = host.read(`${serviceRoot}/src/main.ts`)) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : '';
|
|
33
|
-
const environmentTs = (_d = (_c = host.read(`${serviceRoot}/src/environment.ts`)) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : '';
|
|
34
|
-
yield (0, agent_1.consultAgent)(normalizedOptions.adsp.directoryServiceUrl, normalizedOptions.adsp.accessToken, {
|
|
35
|
-
projectName: serviceName,
|
|
36
|
-
projectType: 'express-service',
|
|
37
|
-
tenant: normalizedOptions.adsp.tenant,
|
|
38
|
-
pluginVersion: plugin_version_1.PLUGIN_VERSION,
|
|
39
|
-
existingFiles: {
|
|
40
|
-
'src/main.ts': mainTs,
|
|
41
|
-
'src/environment.ts': environmentTs,
|
|
42
|
-
},
|
|
43
|
-
}, host, serviceRoot, { threadId: sharedThreadId });
|
|
44
|
-
}
|
|
24
|
+
const appsDir = (0, devkit_1.getWorkspaceLayout)(host).appsDir;
|
|
25
|
+
const serviceRoot = `${appsDir}/${serviceName}`;
|
|
26
|
+
const appRoot = `${appsDir}/${appName}`;
|
|
27
|
+
// Scaffold both projects before the agent interaction so files exist to upload.
|
|
28
|
+
yield (0, express_service_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: serviceName, skipAgent: true }));
|
|
45
29
|
yield (0, angular_app_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: appName, proxy: {
|
|
46
30
|
location: '/api/',
|
|
47
31
|
proxyPass: `http://${serviceName}:3333/${serviceName}/`,
|
|
48
|
-
}, skipAgent:
|
|
49
|
-
if (
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
projectName: appName,
|
|
57
|
-
projectType: 'angular-app',
|
|
32
|
+
}, skipAgent: true }));
|
|
33
|
+
if (normalizedOptions.adsp && options.tenant) {
|
|
34
|
+
// Single conversation covering the full stack. Files from both projects are
|
|
35
|
+
// uploaded with service/ and app/ prefixes so the agent can write to both,
|
|
36
|
+
// and are routed to the correct project root when applied.
|
|
37
|
+
yield (0, agent_1.confirmAfterAgentInterrupt)(yield (0, agent_1.consultAgent)(normalizedOptions.adsp.directoryServiceUrl, normalizedOptions.adsp.accessToken, {
|
|
38
|
+
projectName,
|
|
39
|
+
projectType: 'mean',
|
|
58
40
|
tenant: normalizedOptions.adsp.tenant,
|
|
59
41
|
pluginVersion: plugin_version_1.PLUGIN_VERSION,
|
|
60
42
|
existingFiles: {
|
|
61
|
-
'src/
|
|
62
|
-
'src/
|
|
63
|
-
'src/app/app.
|
|
64
|
-
'src/app/app.
|
|
65
|
-
'src/
|
|
43
|
+
'service/src/main.ts': (_b = (_a = host.read(`${serviceRoot}/src/main.ts`)) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : '',
|
|
44
|
+
'service/src/environment.ts': (_d = (_c = host.read(`${serviceRoot}/src/environment.ts`)) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : '',
|
|
45
|
+
'app/src/app/app.component.ts': (_f = (_e = host.read(`${appRoot}/src/app/app.component.ts`)) === null || _e === void 0 ? void 0 : _e.toString()) !== null && _f !== void 0 ? _f : '',
|
|
46
|
+
'app/src/app/app.component.html': (_h = (_g = host.read(`${appRoot}/src/app/app.component.html`)) === null || _g === void 0 ? void 0 : _g.toString()) !== null && _h !== void 0 ? _h : '',
|
|
47
|
+
'app/src/app/app.config.ts': (_k = (_j = host.read(`${appRoot}/src/app/app.config.ts`)) === null || _j === void 0 ? void 0 : _j.toString()) !== null && _k !== void 0 ? _k : '',
|
|
48
|
+
'app/src/app/app.routes.ts': (_m = (_l = host.read(`${appRoot}/src/app/app.routes.ts`)) === null || _l === void 0 ? void 0 : _l.toString()) !== null && _m !== void 0 ? _m : '',
|
|
49
|
+
'app/src/environments/environment.ts': (_p = (_o = host.read(`${appRoot}/src/environments/environment.ts`)) === null || _o === void 0 ? void 0 : _o.toString()) !== null && _p !== void 0 ? _p : '',
|
|
66
50
|
},
|
|
67
|
-
}, host,
|
|
51
|
+
}, host, serviceRoot, { additionalRoots: { 'app': appRoot } }));
|
|
68
52
|
}
|
|
69
53
|
yield (0, devkit_1.formatFiles)(host);
|
|
70
54
|
return () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mean.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/mean/mean.ts"],"names":[],"mappings":";;AAgBA,
|
|
1
|
+
{"version":3,"file":"mean.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/mean/mean.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,9 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const devkit_1 = require("@nx/devkit");
|
|
6
6
|
const nx_oc_1 = require("@abgov/nx-oc");
|
|
7
7
|
const express_service_1 = require("../express-service/express-service");
|
|
8
|
-
const plugin_version_1 = require("../../utils/plugin-version");
|
|
9
8
|
const react_app_1 = require("../react-app/react-app");
|
|
10
9
|
const agent_1 = require("../../utils/agent");
|
|
10
|
+
const plugin_version_1 = require("../../utils/plugin-version");
|
|
11
11
|
function normalizeOptions(host, options) {
|
|
12
12
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
13
13
|
const adsp = yield (0, nx_oc_1.getAdspConfiguration)(host, options);
|
|
@@ -21,50 +21,34 @@ function default_1(host, options) {
|
|
|
21
21
|
const projectName = (0, devkit_1.names)(options.name).fileName;
|
|
22
22
|
const serviceName = `${projectName}-service`;
|
|
23
23
|
const appName = `${projectName}-app`;
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
//
|
|
28
|
-
|
|
29
|
-
const sharedThreadId = options.tenant ? crypto.randomUUID() : undefined;
|
|
30
|
-
yield (0, express_service_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: serviceName, skipAgent: !!sharedThreadId }));
|
|
31
|
-
if (sharedThreadId && normalizedOptions.adsp) {
|
|
32
|
-
const mainTs = (_b = (_a = host.read(`${serviceRoot}/src/main.ts`)) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : '';
|
|
33
|
-
const environmentTs = (_d = (_c = host.read(`${serviceRoot}/src/environment.ts`)) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : '';
|
|
34
|
-
yield (0, agent_1.consultAgent)(normalizedOptions.adsp.directoryServiceUrl, normalizedOptions.adsp.accessToken, {
|
|
35
|
-
projectName: serviceName,
|
|
36
|
-
projectType: 'express-service',
|
|
37
|
-
tenant: normalizedOptions.adsp.tenant,
|
|
38
|
-
pluginVersion: plugin_version_1.PLUGIN_VERSION,
|
|
39
|
-
existingFiles: {
|
|
40
|
-
'src/main.ts': mainTs,
|
|
41
|
-
'src/environment.ts': environmentTs,
|
|
42
|
-
},
|
|
43
|
-
}, host, serviceRoot, { threadId: sharedThreadId });
|
|
44
|
-
}
|
|
24
|
+
const appsDir = (0, devkit_1.getWorkspaceLayout)(host).appsDir;
|
|
25
|
+
const serviceRoot = `${appsDir}/${serviceName}`;
|
|
26
|
+
const appRoot = `${appsDir}/${appName}`;
|
|
27
|
+
// Scaffold both projects before the agent interaction so files exist to upload.
|
|
28
|
+
yield (0, express_service_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: serviceName, skipAgent: true }));
|
|
45
29
|
yield (0, react_app_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: appName, proxy: {
|
|
46
30
|
location: '/api/',
|
|
47
31
|
proxyPass: `http://${serviceName}:3333/${serviceName}/`,
|
|
48
|
-
}, skipAgent:
|
|
49
|
-
if (
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
projectName: appName,
|
|
57
|
-
projectType: 'react-app',
|
|
32
|
+
}, skipAgent: true }));
|
|
33
|
+
if (normalizedOptions.adsp && options.tenant) {
|
|
34
|
+
// Single conversation covering the full stack. Files from both projects are
|
|
35
|
+
// uploaded with service/ and app/ prefixes so the agent can write to both,
|
|
36
|
+
// and are routed to the correct project root when applied.
|
|
37
|
+
yield (0, agent_1.confirmAfterAgentInterrupt)(yield (0, agent_1.consultAgent)(normalizedOptions.adsp.directoryServiceUrl, normalizedOptions.adsp.accessToken, {
|
|
38
|
+
projectName,
|
|
39
|
+
projectType: 'mern',
|
|
58
40
|
tenant: normalizedOptions.adsp.tenant,
|
|
59
41
|
pluginVersion: plugin_version_1.PLUGIN_VERSION,
|
|
60
42
|
existingFiles: {
|
|
61
|
-
'src/
|
|
62
|
-
'src/
|
|
63
|
-
'src/
|
|
64
|
-
'src/
|
|
65
|
-
'src/
|
|
43
|
+
'service/src/main.ts': (_b = (_a = host.read(`${serviceRoot}/src/main.ts`)) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : '',
|
|
44
|
+
'service/src/environment.ts': (_d = (_c = host.read(`${serviceRoot}/src/environment.ts`)) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : '',
|
|
45
|
+
'app/src/app/app.tsx': (_f = (_e = host.read(`${appRoot}/src/app/app.tsx`)) === null || _e === void 0 ? void 0 : _e.toString()) !== null && _f !== void 0 ? _f : '',
|
|
46
|
+
'app/src/store.ts': (_h = (_g = host.read(`${appRoot}/src/store.ts`)) === null || _g === void 0 ? void 0 : _g.toString()) !== null && _h !== void 0 ? _h : '',
|
|
47
|
+
'app/src/environments/environment.ts': (_k = (_j = host.read(`${appRoot}/src/environments/environment.ts`)) === null || _j === void 0 ? void 0 : _j.toString()) !== null && _k !== void 0 ? _k : '',
|
|
48
|
+
'app/src/app/config.slice.ts': (_m = (_l = host.read(`${appRoot}/src/app/config.slice.ts`)) === null || _l === void 0 ? void 0 : _l.toString()) !== null && _m !== void 0 ? _m : '',
|
|
49
|
+
'app/src/app/intake.slice.ts': (_p = (_o = host.read(`${appRoot}/src/app/intake.slice.ts`)) === null || _o === void 0 ? void 0 : _o.toString()) !== null && _p !== void 0 ? _p : '',
|
|
66
50
|
},
|
|
67
|
-
}, host,
|
|
51
|
+
}, host, serviceRoot, { additionalRoots: { 'app': appRoot } }));
|
|
68
52
|
}
|
|
69
53
|
yield (0, devkit_1.formatFiles)(host);
|
|
70
54
|
return () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mern.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/mern/mern.ts"],"names":[],"mappings":";;AAgBA,
|
|
1
|
+
{"version":3,"file":"mern.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/mern/mern.ts"],"names":[],"mappings":"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"}
|
|
@@ -116,7 +116,7 @@ function default_1(host, options) {
|
|
|
116
116
|
const environmentTs = (_j = (_h = host.read(`${normalizedOptions.projectRoot}/src/environments/environment.ts`)) === null || _h === void 0 ? void 0 : _h.toString()) !== null && _j !== void 0 ? _j : '';
|
|
117
117
|
const configSliceTs = (_l = (_k = host.read(`${normalizedOptions.projectRoot}/src/app/config.slice.ts`)) === null || _k === void 0 ? void 0 : _k.toString()) !== null && _l !== void 0 ? _l : '';
|
|
118
118
|
const intakeSliceTs = (_o = (_m = host.read(`${normalizedOptions.projectRoot}/src/app/intake.slice.ts`)) === null || _m === void 0 ? void 0 : _m.toString()) !== null && _o !== void 0 ? _o : '';
|
|
119
|
-
yield (0, agent_1.consultAgent)(normalizedOptions.adsp.directoryServiceUrl, accessToken, {
|
|
119
|
+
yield (0, agent_1.confirmAfterAgentInterrupt)(yield (0, agent_1.consultAgent)(normalizedOptions.adsp.directoryServiceUrl, accessToken, {
|
|
120
120
|
projectName: normalizedOptions.projectName,
|
|
121
121
|
projectType: 'react-app',
|
|
122
122
|
tenant: normalizedOptions.adsp.tenant,
|
|
@@ -128,7 +128,7 @@ function default_1(host, options) {
|
|
|
128
128
|
'src/app/config.slice.ts': configSliceTs,
|
|
129
129
|
'src/app/intake.slice.ts': intakeSliceTs,
|
|
130
130
|
},
|
|
131
|
-
}, host, normalizedOptions.projectRoot);
|
|
131
|
+
}, host, normalizedOptions.projectRoot));
|
|
132
132
|
}
|
|
133
133
|
yield (0, nx_oc_1.deploymentGenerator)(host, Object.assign(Object.assign({}, normalizedOptions), { appType: 'frontend', project: normalizedOptions.projectName }));
|
|
134
134
|
return () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-app.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/react-app/react-app.ts"],"names":[],"mappings":";;AAqGA,4BA4GC;;AAjND,wCAAyE;AACzE,
|
|
1
|
+
{"version":3,"file":"react-app.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/react-app/react-app.ts"],"names":[],"mappings":"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"}
|
package/src/utils/agent.d.ts
CHANGED
|
@@ -19,6 +19,12 @@ export interface AgentResult {
|
|
|
19
19
|
/** True when the conversation ended via Ctrl+C (SIGINT). */
|
|
20
20
|
interrupted?: boolean;
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* After a consultAgent call, check whether the user interrupted before any
|
|
24
|
+
* files were generated and confirm they still want to proceed with the base
|
|
25
|
+
* scaffolding. Throws if the user declines, which aborts the Nx Tree commit.
|
|
26
|
+
*/
|
|
27
|
+
export declare function confirmAfterAgentInterrupt(result: AgentResult | null): Promise<void>;
|
|
22
28
|
/**
|
|
23
29
|
* Connect to the ADSP agent-service and conduct a multi-turn conversation
|
|
24
30
|
* with the nx-adsp-agent. The agent uses its workspace tools to write
|
|
@@ -35,17 +41,24 @@ export interface AgentResult {
|
|
|
35
41
|
*/
|
|
36
42
|
export declare function consultAgent(directoryServiceUrl: string, accessToken: string, projectContext: {
|
|
37
43
|
projectName: string;
|
|
38
|
-
projectType: 'express-service' | 'react-app' | 'angular-app';
|
|
44
|
+
projectType: 'express-service' | 'react-app' | 'angular-app' | 'mern' | 'mean';
|
|
39
45
|
tenant: string;
|
|
40
46
|
pluginVersion: string;
|
|
41
47
|
/** Content of key integration files for the agent to read and potentially modify. */
|
|
42
48
|
existingFiles: Record<string, string>;
|
|
43
49
|
}, host: Tree, projectRoot: string, options?: {
|
|
50
|
+
/** Thread ID to use. When omitted a new UUID is generated. */
|
|
51
|
+
threadId?: string;
|
|
44
52
|
/**
|
|
45
|
-
* When
|
|
46
|
-
*
|
|
47
|
-
* allowing the agent to carry context from a prior service interaction.
|
|
48
|
-
* Used by composite generators (mern, mean) to run service + frontend in one session.
|
|
53
|
+
* When true, skip the description prompt and send a continuation message instead,
|
|
54
|
+
* letting the agent carry context from a prior interaction on the same thread.
|
|
49
55
|
*/
|
|
50
|
-
|
|
56
|
+
isContinuation?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Additional project roots for composite generators (mern, mean).
|
|
59
|
+
* Files whose paths start with a given prefix are written to the mapped root
|
|
60
|
+
* rather than projectRoot. E.g. { 'app': '/path/to/my-app' } routes any
|
|
61
|
+
* workspace file beginning with 'app/' to that root (with the prefix stripped).
|
|
62
|
+
*/
|
|
63
|
+
additionalRoots?: Record<string, string>;
|
|
51
64
|
}): Promise<AgentResult | null>;
|
package/src/utils/agent.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.confirmAfterAgentInterrupt = confirmAfterAgentInterrupt;
|
|
3
4
|
exports.consultAgent = consultAgent;
|
|
4
5
|
const tslib_1 = require("tslib");
|
|
5
6
|
const readline_1 = require("readline");
|
|
@@ -7,6 +8,27 @@ const socket_io_client_1 = require("socket.io-client");
|
|
|
7
8
|
const nx_oc_1 = require("@abgov/nx-oc");
|
|
8
9
|
const AGENT_SERVICE_URN = 'urn:ads:platform:agent-service:v1';
|
|
9
10
|
const AGENT_ID = 'nxAdspAgent';
|
|
11
|
+
/**
|
|
12
|
+
* After a consultAgent call, check whether the user interrupted before any
|
|
13
|
+
* files were generated and confirm they still want to proceed with the base
|
|
14
|
+
* scaffolding. Throws if the user declines, which aborts the Nx Tree commit.
|
|
15
|
+
*/
|
|
16
|
+
function confirmAfterAgentInterrupt(result) {
|
|
17
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
if ((result === null || result === void 0 ? void 0 : result.interrupted) && result.filesWritten === 0) {
|
|
19
|
+
const { prompt } = yield Promise.resolve().then(() => require('enquirer'));
|
|
20
|
+
const { proceed } = yield prompt({
|
|
21
|
+
type: 'confirm',
|
|
22
|
+
name: 'proceed',
|
|
23
|
+
message: 'Agent interaction ended without generating files. Continue with base scaffolding?',
|
|
24
|
+
initial: false,
|
|
25
|
+
});
|
|
26
|
+
if (!proceed) {
|
|
27
|
+
throw new Error('Generation aborted.');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
10
32
|
/**
|
|
11
33
|
* Connect to the ADSP agent-service and conduct a multi-turn conversation
|
|
12
34
|
* with the nx-adsp-agent. The agent uses its workspace tools to write
|
|
@@ -23,7 +45,7 @@ const AGENT_ID = 'nxAdspAgent';
|
|
|
23
45
|
*/
|
|
24
46
|
function consultAgent(directoryServiceUrl, accessToken, projectContext, host, projectRoot, options) {
|
|
25
47
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
26
|
-
var _a, _b;
|
|
48
|
+
var _a, _b, _c;
|
|
27
49
|
if (!accessToken) {
|
|
28
50
|
process.stdout.write('\n[nx-adsp] No access token — skipping agent interaction.\n');
|
|
29
51
|
return null;
|
|
@@ -33,8 +55,8 @@ function consultAgent(directoryServiceUrl, accessToken, projectContext, host, pr
|
|
|
33
55
|
process.stdout.write('\n[nx-adsp] Agent-service not found in directory — skipping agent interaction.\n');
|
|
34
56
|
return null;
|
|
35
57
|
}
|
|
36
|
-
const isContinuation =
|
|
37
|
-
const threadId = (
|
|
58
|
+
const isContinuation = (_a = options === null || options === void 0 ? void 0 : options.isContinuation) !== null && _a !== void 0 ? _a : false;
|
|
59
|
+
const threadId = (_b = options === null || options === void 0 ? void 0 : options.threadId) !== null && _b !== void 0 ? _b : crypto.randomUUID();
|
|
38
60
|
process.stdout.write(`\n[nx-adsp] Connecting to agent at ${agentServiceUrl}...\n`);
|
|
39
61
|
// Start socket connection immediately so file upload overlaps with the description prompt.
|
|
40
62
|
const socket = (0, socket_io_client_1.io)(agentServiceUrl, {
|
|
@@ -60,11 +82,32 @@ function consultAgent(directoryServiceUrl, accessToken, projectContext, host, pr
|
|
|
60
82
|
let buffer = '';
|
|
61
83
|
let conversationDone = false;
|
|
62
84
|
let agentHasResponded = false;
|
|
85
|
+
let thinkingInterval = null;
|
|
63
86
|
let interrupted = false;
|
|
64
87
|
let resolveConversation;
|
|
65
88
|
const conversationPromise = new Promise((r) => {
|
|
66
89
|
resolveConversation = r;
|
|
67
90
|
});
|
|
91
|
+
// ANSI helpers — no-op when stdout is not a TTY (e.g. CI, piped output).
|
|
92
|
+
const DIM = process.stdout.isTTY ? '\x1b[2m' : '';
|
|
93
|
+
const RESET = process.stdout.isTTY ? '\x1b[0m' : '';
|
|
94
|
+
const startThinking = () => {
|
|
95
|
+
// Dim colour is left open so the dots inherit it; stopThinking resets.
|
|
96
|
+
process.stdout.write(`${DIM}[nx-adsp] Agent is thinking`);
|
|
97
|
+
thinkingInterval = setInterval(() => {
|
|
98
|
+
if (!conversationDone)
|
|
99
|
+
process.stdout.write('.');
|
|
100
|
+
else
|
|
101
|
+
stopThinking();
|
|
102
|
+
}, 1000);
|
|
103
|
+
};
|
|
104
|
+
const stopThinking = () => {
|
|
105
|
+
if (thinkingInterval) {
|
|
106
|
+
clearInterval(thinkingInterval);
|
|
107
|
+
thinkingInterval = null;
|
|
108
|
+
process.stdout.write(`${RESET}\n`);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
68
111
|
const cleanup = (filesWritten) => {
|
|
69
112
|
conversationDone = true;
|
|
70
113
|
rl === null || rl === void 0 ? void 0 : rl.close();
|
|
@@ -78,17 +121,41 @@ function consultAgent(directoryServiceUrl, accessToken, projectContext, host, pr
|
|
|
78
121
|
: null);
|
|
79
122
|
};
|
|
80
123
|
const buildInitialMessage = () => {
|
|
81
|
-
const
|
|
124
|
+
const { projectType, projectName, tenant, pluginVersion } = projectContext;
|
|
125
|
+
const descriptionLine = description ? `It is described as: "${description}". ` : '';
|
|
82
126
|
if (isContinuation) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
127
|
+
const stackDetail = projectType === 'react-app'
|
|
128
|
+
? 'It uses Redux Toolkit slices for state (store.ts, config.slice.ts, intake.slice.ts) and keycloak-js for authentication. '
|
|
129
|
+
: projectType === 'angular-app'
|
|
130
|
+
? 'It uses Angular standalone components, HttpClient with includeBearerTokenInterceptor for authenticated requests, and keycloak-angular for authentication. '
|
|
131
|
+
: '';
|
|
132
|
+
const fileNames = Object.keys(projectContext.existingFiles).join(', ');
|
|
133
|
+
return (`I've also scaffolded a ${projectType} called "${projectName}" for the same tenant. ` +
|
|
134
|
+
stackDetail +
|
|
135
|
+
`The files (${fileNames}) have been uploaded to your workspace — please read them to understand the current structure before suggesting capabilities. ` +
|
|
136
|
+
`Based on our service discussion, what ADSP frontend integrations would be most useful?`);
|
|
137
|
+
}
|
|
138
|
+
if (projectType === 'mern' || projectType === 'mean') {
|
|
139
|
+
const frontendStack = projectType === 'mern'
|
|
140
|
+
? 'React frontend using Redux Toolkit slices and keycloak-js'
|
|
141
|
+
: 'Angular frontend using standalone components and keycloak-angular';
|
|
142
|
+
const serviceFiles = Object.keys(projectContext.existingFiles)
|
|
143
|
+
.filter((f) => f.startsWith('service/'))
|
|
144
|
+
.join(', ');
|
|
145
|
+
const appFiles = Object.keys(projectContext.existingFiles)
|
|
146
|
+
.filter((f) => f.startsWith('app/'))
|
|
147
|
+
.join(', ');
|
|
148
|
+
return (`I am setting up a ${projectType.toUpperCase()} full-stack project called "${projectName}" ` +
|
|
149
|
+
`for ADSP tenant "${tenant}" (nx-adsp plugin version ${pluginVersion}). ` +
|
|
150
|
+
descriptionLine +
|
|
151
|
+
`It has an Express service ("${projectName}-service") and a ${frontendStack} ("${projectName}-app"). ` +
|
|
152
|
+
`Both have been uploaded to your workspace: service files (${serviceFiles}) and frontend files (${appFiles}). ` +
|
|
153
|
+
`When writing generated files, use the service/ prefix for backend files and the app/ prefix for frontend files. ` +
|
|
154
|
+
`What ADSP capabilities would be useful for this full-stack project?`);
|
|
86
155
|
}
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
return (`I am setting up a new ${projectContext.projectType} called "${projectContext.projectName}" ` +
|
|
91
|
-
`for ADSP tenant "${projectContext.tenant}" (nx-adsp plugin version ${projectContext.pluginVersion}). ` +
|
|
156
|
+
const fileNames = Object.keys(projectContext.existingFiles).join(', ');
|
|
157
|
+
return (`I am setting up a new ${projectType} called "${projectName}" ` +
|
|
158
|
+
`for ADSP tenant "${tenant}" (nx-adsp plugin version ${pluginVersion}). ` +
|
|
92
159
|
descriptionLine +
|
|
93
160
|
`The project files (${fileNames}) have been uploaded to your workspace. ` +
|
|
94
161
|
`What ADSP capabilities would be useful to integrate into this service?`);
|
|
@@ -104,15 +171,9 @@ function consultAgent(directoryServiceUrl, accessToken, projectContext, host, pr
|
|
|
104
171
|
content: buildInitialMessage(),
|
|
105
172
|
rawChunks: true,
|
|
106
173
|
});
|
|
107
|
-
|
|
108
|
-
const dotInterval = setInterval(() => {
|
|
109
|
-
if (!conversationDone && !agentHasResponded)
|
|
110
|
-
process.stdout.write('.');
|
|
111
|
-
else
|
|
112
|
-
clearInterval(dotInterval);
|
|
113
|
-
}, 3000);
|
|
174
|
+
startThinking();
|
|
114
175
|
setTimeout(() => {
|
|
115
|
-
|
|
176
|
+
stopThinking();
|
|
116
177
|
if (!conversationDone && !agentHasResponded) {
|
|
117
178
|
process.stdout.write('\n[nx-adsp] No response after 2 minutes. ' +
|
|
118
179
|
'The nxAdspAgent may still be deploying or the LLM is unresponsive. ' +
|
|
@@ -133,6 +194,7 @@ function consultAgent(directoryServiceUrl, accessToken, projectContext, host, pr
|
|
|
133
194
|
content: trimmed,
|
|
134
195
|
rawChunks: true,
|
|
135
196
|
});
|
|
197
|
+
startThinking();
|
|
136
198
|
}
|
|
137
199
|
else {
|
|
138
200
|
// Empty input — apply whatever the agent has generated.
|
|
@@ -143,14 +205,29 @@ function consultAgent(directoryServiceUrl, accessToken, projectContext, host, pr
|
|
|
143
205
|
const applyWorkspaceFiles = (files) => {
|
|
144
206
|
let count = 0;
|
|
145
207
|
for (const file of files) {
|
|
146
|
-
// Skip files we uploaded that the agent hasn't modified
|
|
147
|
-
// new files and agent-modified versions of existing files.
|
|
208
|
+
// Skip files we uploaded that the agent hasn't modified.
|
|
148
209
|
const original = projectContext.existingFiles[file.path];
|
|
149
210
|
if (original !== undefined && original === file.content) {
|
|
150
211
|
continue;
|
|
151
212
|
}
|
|
152
|
-
|
|
153
|
-
|
|
213
|
+
// Route to the correct project root. For composite generators (mern, mean)
|
|
214
|
+
// files are prefixed with 'service/' or 'app/' to distinguish the two parts.
|
|
215
|
+
let targetRoot = projectRoot;
|
|
216
|
+
let relativePath = file.path;
|
|
217
|
+
if (options === null || options === void 0 ? void 0 : options.additionalRoots) {
|
|
218
|
+
for (const [prefix, root] of Object.entries(options.additionalRoots)) {
|
|
219
|
+
if (file.path.startsWith(prefix + '/')) {
|
|
220
|
+
targetRoot = root;
|
|
221
|
+
relativePath = file.path.slice(prefix.length + 1);
|
|
222
|
+
break;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
// Also strip the default 'service/' prefix when it matches projectRoot
|
|
226
|
+
if (relativePath === file.path && file.path.startsWith('service/')) {
|
|
227
|
+
relativePath = file.path.slice('service/'.length);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
host.write(`${targetRoot}/${relativePath}`, file.content);
|
|
154
231
|
count++;
|
|
155
232
|
}
|
|
156
233
|
return count;
|
|
@@ -183,13 +260,36 @@ function consultAgent(directoryServiceUrl, accessToken, projectContext, host, pr
|
|
|
183
260
|
}
|
|
184
261
|
// else: description prompt is still open — post-prompt code will call sendInitialMessage.
|
|
185
262
|
});
|
|
263
|
+
const describeToolCall = (toolName, args) => {
|
|
264
|
+
switch (toolName) {
|
|
265
|
+
// Workspace tools (Mastra built-in names)
|
|
266
|
+
case 'mastra_workspace_write_file': return `Writing: ${args['path']}`;
|
|
267
|
+
case 'mastra_workspace_edit_file': return `Editing: ${args['path']}`;
|
|
268
|
+
case 'mastra_workspace_read_file': return `Reading: ${args['path']}`;
|
|
269
|
+
case 'mastra_workspace_list_files': return `Listing workspace files`;
|
|
270
|
+
// nx-adsp template tools (Mastra uses the agent registration key, not the tool id)
|
|
271
|
+
case 'listNxAdspTemplatesTool': return `Listing available ADSP templates`;
|
|
272
|
+
case 'getNxAdspTemplateTool': return `Getting template: ${args['templateId']}`;
|
|
273
|
+
default: return `Tool: ${toolName}`;
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
let firstDeltaOfTurn = true;
|
|
186
277
|
socket.on('stream', ({ chunk, done }) => {
|
|
187
|
-
var _a, _b;
|
|
278
|
+
var _a, _b, _c;
|
|
279
|
+
if ((chunk === null || chunk === void 0 ? void 0 : chunk.type) === 'tool-call') {
|
|
280
|
+
const p = chunk.payload;
|
|
281
|
+
if (p === null || p === void 0 ? void 0 : p.toolName) {
|
|
282
|
+
stopThinking();
|
|
283
|
+
process.stdout.write(`${DIM}[nx-adsp] ${describeToolCall(p.toolName, (_a = p.args) !== null && _a !== void 0 ? _a : {})}${RESET}\n`);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
188
286
|
if ((chunk === null || chunk === void 0 ? void 0 : chunk.type) === 'text-delta') {
|
|
189
|
-
const text = (
|
|
190
|
-
|
|
191
|
-
|
|
287
|
+
const text = (_c = (_b = chunk.payload) === null || _b === void 0 ? void 0 : _b.text) !== null && _c !== void 0 ? _c : '';
|
|
288
|
+
stopThinking();
|
|
289
|
+
if (firstDeltaOfTurn) {
|
|
290
|
+
// Blank line between the status/tool output and the agent's response text.
|
|
192
291
|
process.stdout.write('\n');
|
|
292
|
+
firstDeltaOfTurn = false;
|
|
193
293
|
}
|
|
194
294
|
buffer += text;
|
|
195
295
|
agentHasResponded = true;
|
|
@@ -200,8 +300,7 @@ function consultAgent(directoryServiceUrl, accessToken, projectContext, host, pr
|
|
|
200
300
|
process.stdout.write('\n');
|
|
201
301
|
}
|
|
202
302
|
buffer = '';
|
|
203
|
-
|
|
204
|
-
// or press Enter to apply whatever the agent has written so far.
|
|
303
|
+
firstDeltaOfTurn = true; // reset for the next turn
|
|
205
304
|
promptUser();
|
|
206
305
|
}
|
|
207
306
|
});
|
|
@@ -246,10 +345,10 @@ function consultAgent(directoryServiceUrl, accessToken, projectContext, host, pr
|
|
|
246
345
|
name: 'description',
|
|
247
346
|
message: `Briefly describe what ${projectContext.projectName} does:`,
|
|
248
347
|
});
|
|
249
|
-
description = ((
|
|
348
|
+
description = ((_c = answer.description) === null || _c === void 0 ? void 0 : _c.trim()) || undefined;
|
|
250
349
|
descriptionReady = true;
|
|
251
350
|
}
|
|
252
|
-
catch (
|
|
351
|
+
catch (_d) {
|
|
253
352
|
// Ctrl+C or cancellation during the description prompt.
|
|
254
353
|
interrupted = true;
|
|
255
354
|
cleanup(0);
|
package/src/utils/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../../../packages/nx-adsp/src/utils/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../../../packages/nx-adsp/src/utils/agent.ts"],"names":[],"mappings":"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"}
|