@prism-d1/cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/dist/bin/prism-cli.d.ts +3 -0
  2. package/dist/bin/prism-cli.d.ts.map +1 -0
  3. package/dist/bin/prism-cli.js +10 -0
  4. package/dist/bin/prism-cli.js.map +1 -0
  5. package/dist/src/commands/assessment/deploy-cdk.d.ts +22 -0
  6. package/dist/src/commands/assessment/deploy-cdk.d.ts.map +1 -0
  7. package/dist/src/commands/assessment/deploy-cdk.js +59 -0
  8. package/dist/src/commands/assessment/deploy-cdk.js.map +1 -0
  9. package/dist/src/commands/assessment/interview-agent.d.ts +71 -0
  10. package/dist/src/commands/assessment/interview-agent.d.ts.map +1 -0
  11. package/dist/src/commands/assessment/interview-agent.js +648 -0
  12. package/dist/src/commands/assessment/interview-agent.js.map +1 -0
  13. package/dist/src/commands/assessment/run.d.ts +20 -0
  14. package/dist/src/commands/assessment/run.d.ts.map +1 -0
  15. package/dist/src/commands/assessment/run.js +23 -0
  16. package/dist/src/commands/assessment/run.js.map +1 -0
  17. package/dist/src/commands/assessment/web.d.ts +15 -0
  18. package/dist/src/commands/assessment/web.d.ts.map +1 -0
  19. package/dist/src/commands/assessment/web.js +1393 -0
  20. package/dist/src/commands/assessment/web.js.map +1 -0
  21. package/dist/src/commands/bootstrapper/install-eval-harness.d.ts +15 -0
  22. package/dist/src/commands/bootstrapper/install-eval-harness.d.ts.map +1 -0
  23. package/dist/src/commands/bootstrapper/install-eval-harness.js +99 -0
  24. package/dist/src/commands/bootstrapper/install-eval-harness.js.map +1 -0
  25. package/dist/src/commands/bootstrapper/install-git-hooks.d.ts +15 -0
  26. package/dist/src/commands/bootstrapper/install-git-hooks.d.ts.map +1 -0
  27. package/dist/src/commands/bootstrapper/install-git-hooks.js +141 -0
  28. package/dist/src/commands/bootstrapper/install-git-hooks.js.map +1 -0
  29. package/dist/src/commands/bootstrapper/setup-github-oidc.d.ts +6 -0
  30. package/dist/src/commands/bootstrapper/setup-github-oidc.d.ts.map +1 -0
  31. package/dist/src/commands/bootstrapper/setup-github-oidc.js +157 -0
  32. package/dist/src/commands/bootstrapper/setup-github-oidc.js.map +1 -0
  33. package/dist/src/commands/securityagent/setup.d.ts +14 -0
  34. package/dist/src/commands/securityagent/setup.d.ts.map +1 -0
  35. package/dist/src/commands/securityagent/setup.js +113 -0
  36. package/dist/src/commands/securityagent/setup.js.map +1 -0
  37. package/dist/src/commands/workshop/deploy-infra.d.ts +13 -0
  38. package/dist/src/commands/workshop/deploy-infra.d.ts.map +1 -0
  39. package/dist/src/commands/workshop/deploy-infra.js +73 -0
  40. package/dist/src/commands/workshop/deploy-infra.js.map +1 -0
  41. package/dist/src/commands/workshop/generate-demo-data.d.ts +16 -0
  42. package/dist/src/commands/workshop/generate-demo-data.d.ts.map +1 -0
  43. package/dist/src/commands/workshop/generate-demo-data.js +362 -0
  44. package/dist/src/commands/workshop/generate-demo-data.js.map +1 -0
  45. package/dist/src/commands/workshop/perform-pen-test.d.ts +14 -0
  46. package/dist/src/commands/workshop/perform-pen-test.d.ts.map +1 -0
  47. package/dist/src/commands/workshop/perform-pen-test.js +301 -0
  48. package/dist/src/commands/workshop/perform-pen-test.js.map +1 -0
  49. package/dist/src/commands/workshop/run-agent.d.ts +20 -0
  50. package/dist/src/commands/workshop/run-agent.d.ts.map +1 -0
  51. package/dist/src/commands/workshop/run-agent.js +89 -0
  52. package/dist/src/commands/workshop/run-agent.js.map +1 -0
  53. package/dist/src/commands/workshop/verify-setup.d.ts +14 -0
  54. package/dist/src/commands/workshop/verify-setup.d.ts.map +1 -0
  55. package/dist/src/commands/workshop/verify-setup.js +493 -0
  56. package/dist/src/commands/workshop/verify-setup.js.map +1 -0
  57. package/dist/src/index.d.ts +13 -0
  58. package/dist/src/index.d.ts.map +1 -0
  59. package/dist/src/index.js +44 -0
  60. package/dist/src/index.js.map +1 -0
  61. package/dist/src/scanner/categories.d.ts +8 -0
  62. package/dist/src/scanner/categories.d.ts.map +1 -0
  63. package/dist/src/scanner/categories.js +322 -0
  64. package/dist/src/scanner/categories.js.map +1 -0
  65. package/dist/src/scanner/index.d.ts +16 -0
  66. package/dist/src/scanner/index.d.ts.map +1 -0
  67. package/dist/src/scanner/index.js +59 -0
  68. package/dist/src/scanner/index.js.map +1 -0
  69. package/dist/src/scanner/reporter.d.ts +3 -0
  70. package/dist/src/scanner/reporter.d.ts.map +1 -0
  71. package/dist/src/scanner/reporter.js +102 -0
  72. package/dist/src/scanner/reporter.js.map +1 -0
  73. package/dist/src/scanner/scoring.d.ts +7 -0
  74. package/dist/src/scanner/scoring.d.ts.map +1 -0
  75. package/dist/src/scanner/scoring.js +77 -0
  76. package/dist/src/scanner/scoring.js.map +1 -0
  77. package/dist/src/scanner/types.d.ts +41 -0
  78. package/dist/src/scanner/types.d.ts.map +1 -0
  79. package/dist/src/scanner/types.js +2 -0
  80. package/dist/src/scanner/types.js.map +1 -0
  81. package/dist/src/scanner/utils.d.ts +16 -0
  82. package/dist/src/scanner/utils.d.ts.map +1 -0
  83. package/dist/src/scanner/utils.js +54 -0
  84. package/dist/src/scanner/utils.js.map +1 -0
  85. package/package.json +39 -0
@@ -0,0 +1,14 @@
1
+ declare const _default: {
2
+ description: string;
3
+ options: {
4
+ flags: string;
5
+ description: string;
6
+ default: string;
7
+ }[];
8
+ action(options: {
9
+ profile: string;
10
+ region: string;
11
+ }): void;
12
+ };
13
+ export default _default;
14
+ //# sourceMappingURL=perform-pen-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perform-pen-test.d.ts","sourceRoot":"","sources":["../../../../src/commands/workshop/perform-pen-test.ts"],"names":[],"mappings":";;;;;;;oBAgCkB;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;;AANrD,wBA6SE"}
@@ -0,0 +1,301 @@
1
+ import { execSync } from 'node:child_process';
2
+ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
3
+ import { resolve, dirname } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ const __dirname = dirname(fileURLToPath(import.meta.url));
6
+ const SAMPLE_APP_DIR = resolve(__dirname, '../../../../sample-app');
7
+ const INFRA_DIR = resolve(__dirname, '../../../../infra');
8
+ function run(cmd, opts = {}) {
9
+ try {
10
+ execSync(cmd, { encoding: 'utf8', stdio: 'inherit', env: { ...process.env, AWS_PAGER: '' }, ...opts });
11
+ return true;
12
+ }
13
+ catch {
14
+ return false;
15
+ }
16
+ }
17
+ function runCapture(cmd, opts = {}) {
18
+ try {
19
+ return { ok: true, stdout: execSync(cmd, { encoding: 'utf8', stdio: ['pipe', 'pipe', 'pipe'], ...opts }).trim(), stderr: '' };
20
+ }
21
+ catch (err) {
22
+ return { ok: false, stdout: '', stderr: (err.stderr || err.message || '').trim() };
23
+ }
24
+ }
25
+ export default {
26
+ description: 'Deploy sample-app and run Security Agent pen test setup (Lambda + API Gateway + domain verification)',
27
+ options: [
28
+ { flags: '--profile <name>', description: 'AWS CLI profile', default: process.env.AWS_PROFILE || 'default' },
29
+ { flags: '--region <region>', description: 'AWS region', default: 'us-west-2' },
30
+ ],
31
+ action(options) {
32
+ const { profile, region } = options;
33
+ if (!existsSync(SAMPLE_APP_DIR)) {
34
+ console.error(`Error: sample-app not found at ${SAMPLE_APP_DIR}`);
35
+ process.exit(1);
36
+ }
37
+ // 1. Build the sample app
38
+ console.log('Building sample-app...');
39
+ if (!existsSync(resolve(SAMPLE_APP_DIR, 'node_modules'))) {
40
+ if (!run('npm install', { cwd: SAMPLE_APP_DIR })) {
41
+ console.error('Failed to install sample-app dependencies.');
42
+ process.exit(1);
43
+ }
44
+ }
45
+ if (!run('npm run build', { cwd: SAMPLE_APP_DIR })) {
46
+ console.error('Failed to build sample-app.');
47
+ process.exit(1);
48
+ }
49
+ // 2. Package as Lambda-compatible bundle
50
+ const bundleDir = resolve(SAMPLE_APP_DIR, '.lambda-bundle');
51
+ if (existsSync(bundleDir)) {
52
+ execSync(`rm -rf ${bundleDir}`);
53
+ }
54
+ mkdirSync(bundleDir, { recursive: true });
55
+ console.log('Packaging for Lambda...');
56
+ // Create Lambda handler wrapper
57
+ const handler = `
58
+ const serverlessExpress = require('@codegenie/serverless-express');
59
+ const app = require('./dist/index').app || require('./dist/index').default;
60
+ let serverlessExpressInstance;
61
+
62
+ async function setup(event, context) {
63
+ serverlessExpressInstance = serverlessExpress({ app });
64
+ return serverlessExpressInstance(event, context);
65
+ }
66
+
67
+ exports.handler = (event, context) => {
68
+ if (serverlessExpressInstance) return serverlessExpressInstance(event, context);
69
+ return setup(event, context);
70
+ };
71
+ `;
72
+ writeFileSync(resolve(bundleDir, 'lambda.js'), handler);
73
+ // Copy dist and package.json
74
+ execSync(`cp -r ${SAMPLE_APP_DIR}/dist ${bundleDir}/dist`);
75
+ execSync(`cp ${SAMPLE_APP_DIR}/package.json ${bundleDir}/package.json`);
76
+ // Install production deps + serverless-express adapter
77
+ run('npm install --omit=dev', { cwd: bundleDir });
78
+ run('npm install @codegenie/serverless-express', { cwd: bundleDir });
79
+ // Zip it
80
+ const zipPath = resolve(SAMPLE_APP_DIR, 'sample-app-lambda.zip');
81
+ run(`cd ${bundleDir} && zip -qr ${zipPath} .`);
82
+ console.log(`Lambda package: ${zipPath}`);
83
+ // 3. Deploy Lambda + API Gateway via AWS CLI
84
+ const functionName = 'prism-d1-sample-app';
85
+ const roleName = 'prism-d1-sample-app-lambda-role';
86
+ const apiName = 'prism-d1-sample-app-api';
87
+ const env = `--profile ${profile} --region ${region}`;
88
+ // Get account ID
89
+ const acct = runCapture(`aws sts get-caller-identity --profile ${profile} --query Account --output text`);
90
+ if (!acct.ok) {
91
+ console.error('Failed to get AWS account. Check credentials.');
92
+ process.exit(1);
93
+ }
94
+ const accountId = acct.stdout;
95
+ // Create/update IAM role
96
+ const roleArn = `arn:aws:iam::${accountId}:role/${roleName}`;
97
+ const roleCheck = runCapture(`aws iam get-role --role-name ${roleName} --profile ${profile} 2>&1`);
98
+ if (!roleCheck.ok) {
99
+ console.log('Creating Lambda execution role...');
100
+ const trustPolicy = JSON.stringify({
101
+ Version: '2012-10-17',
102
+ Statement: [{ Effect: 'Allow', Principal: { Service: 'lambda.amazonaws.com' }, Action: 'sts:AssumeRole' }],
103
+ });
104
+ run(`aws iam create-role --role-name ${roleName} --assume-role-policy-document '${trustPolicy}' --profile ${profile}`);
105
+ run(`aws iam attach-role-policy --role-name ${roleName} --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole --profile ${profile}`);
106
+ // Wait for role propagation
107
+ console.log('Waiting for IAM role propagation...');
108
+ execSync('sleep 10');
109
+ }
110
+ // Create or update Lambda function
111
+ const fnCheck = runCapture(`aws lambda get-function --function-name ${functionName} ${env} 2>&1`);
112
+ if (!fnCheck.ok) {
113
+ console.log('Creating Lambda function...');
114
+ run(`aws lambda create-function \
115
+ --function-name ${functionName} \
116
+ --runtime nodejs22.x \
117
+ --handler lambda.handler \
118
+ --role ${roleArn} \
119
+ --zip-file fileb://${zipPath} \
120
+ --timeout 30 \
121
+ --memory-size 256 \
122
+ ${env}`);
123
+ }
124
+ else {
125
+ console.log('Updating Lambda function code...');
126
+ run(`aws lambda update-function-code \
127
+ --function-name ${functionName} \
128
+ --zip-file fileb://${zipPath} \
129
+ ${env}`);
130
+ }
131
+ // Create or get API Gateway (HTTP API)
132
+ let apiId = '';
133
+ const apiCheck = runCapture(`aws apigatewayv2 get-apis ${env} --query "Items[?Name=='${apiName}'].ApiId" --output text`);
134
+ if (apiCheck.ok && apiCheck.stdout) {
135
+ apiId = apiCheck.stdout;
136
+ console.log(`Using existing API Gateway: ${apiId}`);
137
+ }
138
+ else {
139
+ console.log('Creating HTTP API Gateway...');
140
+ const apiResult = runCapture(`aws apigatewayv2 create-api \
141
+ --name ${apiName} \
142
+ --protocol-type HTTP \
143
+ --target arn:aws:lambda:${region}:${accountId}:function:${functionName} \
144
+ ${env} --query ApiId --output text`);
145
+ if (!apiResult.ok) {
146
+ console.error('Failed to create API Gateway.');
147
+ process.exit(1);
148
+ }
149
+ apiId = apiResult.stdout;
150
+ // Grant API Gateway permission to invoke Lambda
151
+ run(`aws lambda add-permission \
152
+ --function-name ${functionName} \
153
+ --statement-id apigateway-invoke \
154
+ --action lambda:InvokeFunction \
155
+ --principal apigateway.amazonaws.com \
156
+ --source-arn "arn:aws:execute-api:${region}:${accountId}:${apiId}/*" \
157
+ ${env}`);
158
+ }
159
+ const apiUrl = `https://${apiId}.execute-api.${region}.amazonaws.com`;
160
+ const apiDomain = `${apiId}.execute-api.${region}.amazonaws.com`;
161
+ console.log(`\n✅ Sample app deployed!`);
162
+ console.log(` API URL: ${apiUrl}`);
163
+ console.log(` Health: ${apiUrl}/health`);
164
+ // 4. Domain verification for Security Agent pen testing
165
+ const agentSpaceId = 'as-99cff7dd-90fa-4065-9d39-0b8dfff11c6c';
166
+ console.log(`\n🔐 Setting up domain verification for pen testing...`);
167
+ // Check if domain already exists and is verified
168
+ const domainsResult = runCapture(`aws securityagent list-target-domains ${env} --query "targetDomainSummaries[?domainName=='${apiDomain}']" --output json`);
169
+ let targetDomainId = '';
170
+ let alreadyVerified = false;
171
+ if (domainsResult.ok && domainsResult.stdout && domainsResult.stdout !== '[]') {
172
+ const domains = JSON.parse(domainsResult.stdout);
173
+ if (domains.length > 0) {
174
+ targetDomainId = domains[0].targetDomainId;
175
+ alreadyVerified = domains[0].verificationStatus === 'VERIFIED';
176
+ console.log(` Domain already registered: ${targetDomainId} (${domains[0].verificationStatus})`);
177
+ }
178
+ }
179
+ if (!targetDomainId) {
180
+ console.log(` Registering domain: ${apiDomain}`);
181
+ const createDomain = runCapture(`aws securityagent create-target-domain \
182
+ --target-domain-name "${apiDomain}" \
183
+ --verification-method HTTP_ROUTE \
184
+ ${env} --output json`);
185
+ if (!createDomain.ok) {
186
+ console.error(` ⚠️ Failed to register domain: ${createDomain.stderr}`);
187
+ }
188
+ else {
189
+ const domainResp = JSON.parse(createDomain.stdout);
190
+ targetDomainId = domainResp.targetDomainId;
191
+ const token = domainResp.verificationDetails?.httpRoute?.token;
192
+ if (token) {
193
+ // Update Lambda env with the verification token
194
+ console.log(` Setting verification token on Lambda...`);
195
+ run(`aws lambda wait function-updated --function-name ${functionName} ${env}`);
196
+ run(`aws lambda update-function-configuration \
197
+ --function-name ${functionName} \
198
+ --environment "Variables={DOMAIN_VERIFICATION_TOKEN=${token}}" \
199
+ ${env}`);
200
+ run(`aws lambda wait function-updated --function-name ${functionName} ${env}`);
201
+ // Wait for propagation then verify
202
+ console.log(` Verifying domain ownership...`);
203
+ execSync('sleep 5');
204
+ const verifyResult = runCapture(`aws securityagent verify-target-domain \
205
+ --target-domain-id ${targetDomainId} \
206
+ ${env} --output json`);
207
+ if (verifyResult.ok) {
208
+ const vr = JSON.parse(verifyResult.stdout);
209
+ if (vr.status === 'VERIFIED') {
210
+ alreadyVerified = true;
211
+ console.log(` ✅ Domain verified!`);
212
+ }
213
+ else {
214
+ console.log(` ⚠️ Verification status: ${vr.status} — ${vr.verificationStatusReason}`);
215
+ }
216
+ }
217
+ }
218
+ }
219
+ }
220
+ // Associate domain with agent space
221
+ if (targetDomainId && alreadyVerified) {
222
+ console.log(` Associating domain with agent space...`);
223
+ run(`aws securityagent update-agent-space \
224
+ --agent-space-id ${agentSpaceId} \
225
+ --name "prism-d1-security" \
226
+ --target-domain-ids ${targetDomainId} \
227
+ ${env}`);
228
+ console.log(` ✅ Domain associated with agent space`);
229
+ }
230
+ // 6. Create and run pen test, then poll for results
231
+ // Warm the Lambda to avoid cold-start timeout during domain re-verification
232
+ console.log(`\n🧪 Warming Lambda and creating pen test...`);
233
+ runCapture(`curl -sf ${apiUrl}/health`);
234
+ const serviceRole = `arn:aws:iam::${accountId}:role/prism-d1-security-agent-prism-d1-security`;
235
+ const createPt = runCapture(`aws securityagent create-pentest \
236
+ --agent-space-id ${agentSpaceId} \
237
+ --title "Sample_App_Pen_Test" \
238
+ --assets '{"endpoints": [{"uri": "${apiUrl}"}]}' \
239
+ --service-role ${serviceRole} \
240
+ ${env} --output json`);
241
+ if (!createPt.ok) {
242
+ console.error(` ⚠️ Failed to create pentest: ${createPt.stderr}`);
243
+ console.log(`\n Manual command:`);
244
+ console.log(` aws securityagent create-pentest \\`);
245
+ console.log(` --agent-space-id ${agentSpaceId} \\`);
246
+ console.log(` --title "Sample_App_Pen_Test" \\`);
247
+ console.log(` --assets '{"endpoints": [{"uri": "${apiUrl}"}]}' \\`);
248
+ console.log(` --service-role ${serviceRole} \\`);
249
+ console.log(` --profile ${profile} --region ${region}`);
250
+ return;
251
+ }
252
+ const pentest = JSON.parse(createPt.stdout);
253
+ const pentestId = pentest.pentestId;
254
+ console.log(` Pentest ID: ${pentestId}`);
255
+ // Start the job — warm Lambda and retry if domain verification times out
256
+ let startJob = { ok: false, stdout: '', stderr: '' };
257
+ for (let attempt = 1; attempt <= 3; attempt++) {
258
+ console.log(` ${attempt > 1 ? `Retry ${attempt}/3: ` : ''}Warming endpoint...`);
259
+ run(`curl -sf ${apiUrl}/.well-known/aws/securityagent-domain-verification.json > /dev/null`);
260
+ run(`curl -sf ${apiUrl}/.well-known/aws/securityagent-domain-verification.json > /dev/null`);
261
+ if (targetDomainId) {
262
+ runCapture(`aws securityagent verify-target-domain --target-domain-id ${targetDomainId} ${env}`);
263
+ }
264
+ execSync('sleep 3');
265
+ startJob = runCapture(`aws securityagent start-pentest-job \
266
+ --agent-space-id ${agentSpaceId} \
267
+ --pentest-id ${pentestId} \
268
+ ${env} --output json`);
269
+ if (startJob.ok)
270
+ break;
271
+ if (attempt < 3 && startJob.stderr.includes('Domain verification failed')) {
272
+ console.log(` ⚠️ Domain verification timed out, retrying in 10s...`);
273
+ execSync('sleep 10');
274
+ }
275
+ else {
276
+ break;
277
+ }
278
+ }
279
+ if (!startJob.ok) {
280
+ console.error(` ⚠️ Failed to start job: ${startJob.stderr}`);
281
+ return;
282
+ }
283
+ const job = JSON.parse(startJob.stdout);
284
+ const jobId = job.pentestJobId;
285
+ console.log(` Job ID: ${jobId}`);
286
+ console.log(` Status: IN_PROGRESS`);
287
+ console.log(`\n✅ Pen test started! It may take 15-30 minutes to complete.`);
288
+ console.log(`\n Check status:`);
289
+ console.log(` aws securityagent batch-get-pentest-jobs \\`);
290
+ console.log(` --agent-space-id ${agentSpaceId} \\`);
291
+ console.log(` --pentest-job-ids ${jobId} \\`);
292
+ console.log(` --query "pentestJobs[0].{status:status,steps:steps}" \\`);
293
+ console.log(` ${env} --output table`);
294
+ console.log(`\n Get findings (after completion):`);
295
+ console.log(` aws securityagent list-findings \\`);
296
+ console.log(` --agent-space-id ${agentSpaceId} \\`);
297
+ console.log(` --pentest-job-id ${jobId} \\`);
298
+ console.log(` ${env}`);
299
+ },
300
+ };
301
+ //# sourceMappingURL=perform-pen-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perform-pen-test.js","sourceRoot":"","sources":["../../../../src/commands/workshop/perform-pen-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ declare const _default: {
2
+ description: string;
3
+ options: ({
4
+ flags: string;
5
+ description: string;
6
+ default: boolean;
7
+ } | {
8
+ flags: string;
9
+ description: string;
10
+ default: string;
11
+ })[];
12
+ action(options: {
13
+ mock: boolean;
14
+ multi: boolean;
15
+ apiUrl: string;
16
+ interactive: boolean;
17
+ }): void;
18
+ };
19
+ export default _default;
20
+ //# sourceMappingURL=run-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-agent.d.ts","sourceRoot":"","sources":["../../../../src/commands/workshop/run-agent.ts"],"names":[],"mappings":";;;;;;;;;;;oBAgBkB;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE;;AARzF,wBAiDE"}
@@ -0,0 +1,89 @@
1
+ import { execSync } from 'node:child_process';
2
+ import { existsSync } from 'node:fs';
3
+ import { resolve, dirname } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ const __dirname = dirname(fileURLToPath(import.meta.url));
6
+ const AGENT_DIR = resolve(__dirname, '../../../../sample-app/agent');
7
+ export default {
8
+ description: 'Run the PRISM task assistant agent',
9
+ options: [
10
+ { flags: '--mock', description: 'Use mock model (no AWS credentials needed)', default: false },
11
+ { flags: '--multi', description: 'Run multi-agent orchestrator demo', default: false },
12
+ { flags: '--api-url <url>', description: 'Task API base URL', default: 'http://localhost:3000' },
13
+ { flags: '--interactive', description: 'Run in interactive chat mode', default: false },
14
+ ],
15
+ action(options) {
16
+ if (!existsSync(AGENT_DIR)) {
17
+ console.error(`Error: agent directory not found at ${AGENT_DIR}`);
18
+ process.exit(1);
19
+ }
20
+ // Check Python is available
21
+ const python = findPython();
22
+ if (!python) {
23
+ console.error('Error: Python >= 3.11 not found. Install it and try again.');
24
+ process.exit(1);
25
+ }
26
+ // Install dependencies if no venv/site-packages found
27
+ ensureDependencies(python);
28
+ // Build the command
29
+ const script = options.interactive
30
+ ? resolve(AGENT_DIR, 'scripts/run-interactive.py')
31
+ : resolve(AGENT_DIR, 'scripts/run-demo.py');
32
+ if (!existsSync(script)) {
33
+ console.error(`Error: script not found at ${script}`);
34
+ console.error('Available: scripts/run-demo.py');
35
+ process.exit(1);
36
+ }
37
+ const args = [];
38
+ if (options.mock)
39
+ args.push('--mock');
40
+ if (options.multi)
41
+ args.push('--multi');
42
+ if (options.apiUrl !== 'http://localhost:3000')
43
+ args.push('--api-url', options.apiUrl);
44
+ const cmd = `${python} ${script} ${args.join(' ')}`;
45
+ console.log(`Running: ${cmd}\n`);
46
+ try {
47
+ execSync(cmd, { stdio: 'inherit', cwd: AGENT_DIR });
48
+ }
49
+ catch (err) {
50
+ process.exit(err.status ?? 1);
51
+ }
52
+ },
53
+ };
54
+ function findPython() {
55
+ for (const bin of ['python3', 'python']) {
56
+ try {
57
+ const version = execSync(`${bin} --version`, { encoding: 'utf8' }).trim();
58
+ const match = version.match(/(\d+)\.(\d+)/);
59
+ if (match && Number(match[1]) >= 3 && Number(match[2]) >= 11) {
60
+ return bin;
61
+ }
62
+ }
63
+ catch { /* not found */ }
64
+ }
65
+ return null;
66
+ }
67
+ function ensureDependencies(python) {
68
+ // Check if the package is importable
69
+ const check = (() => {
70
+ try {
71
+ execSync(`${python} -c "import strands"`, { cwd: AGENT_DIR, stdio: ['pipe', 'pipe', 'pipe'] });
72
+ return true;
73
+ }
74
+ catch {
75
+ return false;
76
+ }
77
+ })();
78
+ if (!check) {
79
+ console.log('Installing agent dependencies...');
80
+ try {
81
+ execSync(`${python} -m pip install -e ".[dev]" --quiet`, { stdio: 'inherit', cwd: AGENT_DIR });
82
+ }
83
+ catch {
84
+ console.error('Failed to install agent dependencies. Try manually: cd sample-app/agent && pip install -e ".[dev]"');
85
+ process.exit(1);
86
+ }
87
+ }
88
+ }
89
+ //# sourceMappingURL=run-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-agent.js","sourceRoot":"","sources":["../../../../src/commands/workshop/run-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ declare const _default: {
2
+ description: string;
3
+ options: {
4
+ flags: string;
5
+ description: string;
6
+ }[];
7
+ action(opts: {
8
+ skipAws?: boolean;
9
+ skipKiro?: boolean;
10
+ verifyOnly?: boolean;
11
+ }): Promise<void>;
12
+ };
13
+ export default _default;
14
+ //# sourceMappingURL=verify-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-setup.d.ts","sourceRoot":"","sources":["../../../../src/commands/workshop/verify-setup.ts"],"names":[],"mappings":";;;;;;iBAsdqB;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE;;AAPpF,wBAUE"}