@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.
- package/dist/bin/prism-cli.d.ts +3 -0
- package/dist/bin/prism-cli.d.ts.map +1 -0
- package/dist/bin/prism-cli.js +10 -0
- package/dist/bin/prism-cli.js.map +1 -0
- package/dist/src/commands/assessment/deploy-cdk.d.ts +22 -0
- package/dist/src/commands/assessment/deploy-cdk.d.ts.map +1 -0
- package/dist/src/commands/assessment/deploy-cdk.js +59 -0
- package/dist/src/commands/assessment/deploy-cdk.js.map +1 -0
- package/dist/src/commands/assessment/interview-agent.d.ts +71 -0
- package/dist/src/commands/assessment/interview-agent.d.ts.map +1 -0
- package/dist/src/commands/assessment/interview-agent.js +648 -0
- package/dist/src/commands/assessment/interview-agent.js.map +1 -0
- package/dist/src/commands/assessment/run.d.ts +20 -0
- package/dist/src/commands/assessment/run.d.ts.map +1 -0
- package/dist/src/commands/assessment/run.js +23 -0
- package/dist/src/commands/assessment/run.js.map +1 -0
- package/dist/src/commands/assessment/web.d.ts +15 -0
- package/dist/src/commands/assessment/web.d.ts.map +1 -0
- package/dist/src/commands/assessment/web.js +1393 -0
- package/dist/src/commands/assessment/web.js.map +1 -0
- package/dist/src/commands/bootstrapper/install-eval-harness.d.ts +15 -0
- package/dist/src/commands/bootstrapper/install-eval-harness.d.ts.map +1 -0
- package/dist/src/commands/bootstrapper/install-eval-harness.js +99 -0
- package/dist/src/commands/bootstrapper/install-eval-harness.js.map +1 -0
- package/dist/src/commands/bootstrapper/install-git-hooks.d.ts +15 -0
- package/dist/src/commands/bootstrapper/install-git-hooks.d.ts.map +1 -0
- package/dist/src/commands/bootstrapper/install-git-hooks.js +141 -0
- package/dist/src/commands/bootstrapper/install-git-hooks.js.map +1 -0
- package/dist/src/commands/bootstrapper/setup-github-oidc.d.ts +6 -0
- package/dist/src/commands/bootstrapper/setup-github-oidc.d.ts.map +1 -0
- package/dist/src/commands/bootstrapper/setup-github-oidc.js +157 -0
- package/dist/src/commands/bootstrapper/setup-github-oidc.js.map +1 -0
- package/dist/src/commands/securityagent/setup.d.ts +14 -0
- package/dist/src/commands/securityagent/setup.d.ts.map +1 -0
- package/dist/src/commands/securityagent/setup.js +113 -0
- package/dist/src/commands/securityagent/setup.js.map +1 -0
- package/dist/src/commands/workshop/deploy-infra.d.ts +13 -0
- package/dist/src/commands/workshop/deploy-infra.d.ts.map +1 -0
- package/dist/src/commands/workshop/deploy-infra.js +73 -0
- package/dist/src/commands/workshop/deploy-infra.js.map +1 -0
- package/dist/src/commands/workshop/generate-demo-data.d.ts +16 -0
- package/dist/src/commands/workshop/generate-demo-data.d.ts.map +1 -0
- package/dist/src/commands/workshop/generate-demo-data.js +362 -0
- package/dist/src/commands/workshop/generate-demo-data.js.map +1 -0
- package/dist/src/commands/workshop/perform-pen-test.d.ts +14 -0
- package/dist/src/commands/workshop/perform-pen-test.d.ts.map +1 -0
- package/dist/src/commands/workshop/perform-pen-test.js +301 -0
- package/dist/src/commands/workshop/perform-pen-test.js.map +1 -0
- package/dist/src/commands/workshop/run-agent.d.ts +20 -0
- package/dist/src/commands/workshop/run-agent.d.ts.map +1 -0
- package/dist/src/commands/workshop/run-agent.js +89 -0
- package/dist/src/commands/workshop/run-agent.js.map +1 -0
- package/dist/src/commands/workshop/verify-setup.d.ts +14 -0
- package/dist/src/commands/workshop/verify-setup.d.ts.map +1 -0
- package/dist/src/commands/workshop/verify-setup.js +493 -0
- package/dist/src/commands/workshop/verify-setup.js.map +1 -0
- package/dist/src/index.d.ts +13 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +44 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/scanner/categories.d.ts +8 -0
- package/dist/src/scanner/categories.d.ts.map +1 -0
- package/dist/src/scanner/categories.js +322 -0
- package/dist/src/scanner/categories.js.map +1 -0
- package/dist/src/scanner/index.d.ts +16 -0
- package/dist/src/scanner/index.d.ts.map +1 -0
- package/dist/src/scanner/index.js +59 -0
- package/dist/src/scanner/index.js.map +1 -0
- package/dist/src/scanner/reporter.d.ts +3 -0
- package/dist/src/scanner/reporter.d.ts.map +1 -0
- package/dist/src/scanner/reporter.js +102 -0
- package/dist/src/scanner/reporter.js.map +1 -0
- package/dist/src/scanner/scoring.d.ts +7 -0
- package/dist/src/scanner/scoring.d.ts.map +1 -0
- package/dist/src/scanner/scoring.js +77 -0
- package/dist/src/scanner/scoring.js.map +1 -0
- package/dist/src/scanner/types.d.ts +41 -0
- package/dist/src/scanner/types.d.ts.map +1 -0
- package/dist/src/scanner/types.js +2 -0
- package/dist/src/scanner/types.js.map +1 -0
- package/dist/src/scanner/utils.d.ts +16 -0
- package/dist/src/scanner/utils.d.ts.map +1 -0
- package/dist/src/scanner/utils.js +54 -0
- package/dist/src/scanner/utils.js.map +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prism-cli.d.ts","sourceRoot":"","sources":["../../bin/prism-cli.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { program } from 'commander';
|
|
3
|
+
import { registerCommands } from '../src/index.js';
|
|
4
|
+
program
|
|
5
|
+
.name('prism-cli')
|
|
6
|
+
.description('PRISM D1 Velocity CLI tool')
|
|
7
|
+
.version('1.0.0');
|
|
8
|
+
await registerCommands(program);
|
|
9
|
+
program.parse();
|
|
10
|
+
//# sourceMappingURL=prism-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prism-cli.js","sourceRoot":"","sources":["../../bin/prism-cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,4BAA4B,CAAC;KACzC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAEhC,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
description: string;
|
|
3
|
+
options: ({
|
|
4
|
+
flags: string;
|
|
5
|
+
description: string;
|
|
6
|
+
default?: undefined;
|
|
7
|
+
} | {
|
|
8
|
+
flags: string;
|
|
9
|
+
description: string;
|
|
10
|
+
default: string;
|
|
11
|
+
})[];
|
|
12
|
+
action(options: {
|
|
13
|
+
hostedZone?: string;
|
|
14
|
+
subdomain: string;
|
|
15
|
+
certificateArn?: string;
|
|
16
|
+
profile?: string;
|
|
17
|
+
region: string;
|
|
18
|
+
destroy?: boolean;
|
|
19
|
+
}): void;
|
|
20
|
+
};
|
|
21
|
+
export default _default;
|
|
22
|
+
//# sourceMappingURL=deploy-cdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-cdk.d.ts","sourceRoot":"","sources":["../../../../src/commands/assessment/deploy-cdk.ts"],"names":[],"mappings":";;;;;;;;;;;oBAkBkB;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB;;AAjBH,wBAsEE"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
2
|
+
import { resolve, dirname } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { existsSync } from 'node:fs';
|
|
5
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
6
|
+
const SHELL = process.platform === 'win32' ? undefined : '/bin/bash';
|
|
7
|
+
export default {
|
|
8
|
+
description: 'Deploy the assessment web app to AWS via CDK (ECS + Cognito + ALB)',
|
|
9
|
+
options: [
|
|
10
|
+
{ flags: '--hosted-zone <domain>', description: 'Route53 hosted zone domain (e.g. prism.startups.aws.dev)' },
|
|
11
|
+
{ flags: '--subdomain <name>', description: 'Subdomain for the app', default: 'assessment' },
|
|
12
|
+
{ flags: '--certificate-arn <arn>', description: 'ACM certificate ARN (auto-created if omitted)' },
|
|
13
|
+
{ flags: '--profile <name>', description: 'AWS CLI profile' },
|
|
14
|
+
{ flags: '--region <region>', description: 'AWS region', default: 'us-east-1' },
|
|
15
|
+
{ flags: '--destroy', description: 'Destroy the stack instead of deploying' },
|
|
16
|
+
],
|
|
17
|
+
action(options) {
|
|
18
|
+
if (!options.hostedZone) {
|
|
19
|
+
console.error('Error: --hosted-zone is required');
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
const cdkDir = resolve(__dirname, 'cdk');
|
|
23
|
+
const webAppDir = resolve(__dirname, 'web-app');
|
|
24
|
+
const cliDir = resolve(__dirname, '..', '..', '..', '..');
|
|
25
|
+
// Bundle web.ts into web-app/web.js for Docker
|
|
26
|
+
console.log('Bundling web app...');
|
|
27
|
+
const entryPoint = resolve(__dirname, 'web.ts');
|
|
28
|
+
const outFile = resolve(webAppDir, 'web.js');
|
|
29
|
+
execSync(`npx esbuild ${entryPoint} --bundle --platform=node --format=cjs --outfile=${outFile}`, { cwd: cliDir, stdio: 'inherit', shell: SHELL });
|
|
30
|
+
// Ensure CDK dependencies are installed
|
|
31
|
+
if (!existsSync(resolve(cdkDir, 'node_modules'))) {
|
|
32
|
+
console.log('Installing CDK dependencies...');
|
|
33
|
+
execSync('npm install', { cwd: cdkDir, stdio: 'inherit', shell: SHELL });
|
|
34
|
+
}
|
|
35
|
+
// Resolve AWS account ID
|
|
36
|
+
const stsCmd = options.profile
|
|
37
|
+
? `aws sts get-caller-identity --profile ${options.profile} --query Account --output text`
|
|
38
|
+
: `aws sts get-caller-identity --query Account --output text`;
|
|
39
|
+
const accountId = execSync(stsCmd, { encoding: 'utf-8', shell: SHELL }).trim();
|
|
40
|
+
const env = {
|
|
41
|
+
...process.env,
|
|
42
|
+
CDK_DEFAULT_REGION: options.region,
|
|
43
|
+
CDK_DEFAULT_ACCOUNT: accountId,
|
|
44
|
+
AWS_DEFAULT_REGION: options.region,
|
|
45
|
+
};
|
|
46
|
+
// Build context args
|
|
47
|
+
const contextArgs = [
|
|
48
|
+
`-c hostedZone=${options.hostedZone}`,
|
|
49
|
+
`-c subdomain=${options.subdomain}`,
|
|
50
|
+
options.certificateArn ? `-c certificateArn=${options.certificateArn}` : '',
|
|
51
|
+
].filter(Boolean).join(' ');
|
|
52
|
+
const profileArg = options.profile ? `--profile ${options.profile}` : '';
|
|
53
|
+
const action = options.destroy ? 'destroy --force' : 'deploy --require-approval never';
|
|
54
|
+
const cmd = `npx cdk ${action} ${contextArgs} ${profileArg}`;
|
|
55
|
+
console.log(`\n Running: ${cmd}\n Directory: ${cdkDir}\n`);
|
|
56
|
+
execSync(cmd, { cwd: cdkDir, stdio: 'inherit', env, shell: SHELL });
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=deploy-cdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-cdk.js","sourceRoot":"","sources":["../../../../src/commands/assessment/deploy-cdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PRISM D1 Velocity -- Interview Agent
|
|
3
|
+
*
|
|
4
|
+
* Conversational AI agent that conducts the SA interview via chat.
|
|
5
|
+
* Uses Amazon Bedrock (Claude) to ask questions, probe responses,
|
|
6
|
+
* and score answers against the rubrics from interview-guide.md.
|
|
7
|
+
*
|
|
8
|
+
* Runs locally — no AgentCore required. Just needs AWS credentials
|
|
9
|
+
* with Bedrock invoke-model access.
|
|
10
|
+
*/
|
|
11
|
+
import type { ScanResult } from '../../scanner/types.js';
|
|
12
|
+
export interface AgentMessage {
|
|
13
|
+
role: 'user' | 'assistant';
|
|
14
|
+
content: string;
|
|
15
|
+
}
|
|
16
|
+
export interface QuestionResult {
|
|
17
|
+
questionId: string;
|
|
18
|
+
label: string;
|
|
19
|
+
section: string;
|
|
20
|
+
score: number;
|
|
21
|
+
evidence: string;
|
|
22
|
+
notes: string;
|
|
23
|
+
}
|
|
24
|
+
export interface AgentSessionState {
|
|
25
|
+
phase: 'intro' | 'interview' | 'org_readiness' | 'closing' | 'complete';
|
|
26
|
+
currentSectionIdx: number;
|
|
27
|
+
currentQuestionIdx: number;
|
|
28
|
+
followUpCount: number;
|
|
29
|
+
maxFollowUps: number;
|
|
30
|
+
results: QuestionResult[];
|
|
31
|
+
orgReadiness: Record<string, boolean>;
|
|
32
|
+
customerName: string;
|
|
33
|
+
saName: string;
|
|
34
|
+
fundingStage: string;
|
|
35
|
+
teamSize: number;
|
|
36
|
+
closingNotes: string;
|
|
37
|
+
messages: AgentMessage[];
|
|
38
|
+
scanData: ScanResult;
|
|
39
|
+
/** Curated summary of prior answers relevant to remaining questions */
|
|
40
|
+
runningContext: string;
|
|
41
|
+
}
|
|
42
|
+
export interface InterviewQuestion {
|
|
43
|
+
id: string;
|
|
44
|
+
label: string;
|
|
45
|
+
max: number;
|
|
46
|
+
ask: string;
|
|
47
|
+
listenFor: string[];
|
|
48
|
+
rubric: string[];
|
|
49
|
+
}
|
|
50
|
+
export interface InterviewSection {
|
|
51
|
+
id: string;
|
|
52
|
+
name: string;
|
|
53
|
+
maxScore: number;
|
|
54
|
+
time: string;
|
|
55
|
+
questions: InterviewQuestion[];
|
|
56
|
+
}
|
|
57
|
+
export declare const SECTIONS: InterviewSection[];
|
|
58
|
+
export interface BedrockCheckResult {
|
|
59
|
+
ok: boolean;
|
|
60
|
+
error?: string;
|
|
61
|
+
errorType?: 'no_credentials' | 'no_model_access' | 'wrong_region' | 'sdk_missing' | 'unknown';
|
|
62
|
+
}
|
|
63
|
+
export declare function checkBedrockAccess(modelId?: string, region?: string): Promise<BedrockCheckResult>;
|
|
64
|
+
export declare function createSession(scan: ScanResult): AgentSessionState;
|
|
65
|
+
export declare function processMessage(state: AgentSessionState, userMessage: string, modelId?: string, region?: string): Promise<{
|
|
66
|
+
reply: string;
|
|
67
|
+
state: AgentSessionState;
|
|
68
|
+
done: boolean;
|
|
69
|
+
}>;
|
|
70
|
+
export declare function agentResultsToFormData(state: AgentSessionState): Record<string, string>;
|
|
71
|
+
//# sourceMappingURL=interview-agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interview-agent.d.ts","sourceRoot":"","sources":["../../../../src/commands/assessment/interview-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAMzD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,eAAe,GAAG,SAAS,GAAG,UAAU,CAAC;IACxE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,QAAQ,EAAE,UAAU,CAAC;IACrB,uEAAuE;IACvE,cAAc,EAAE,MAAM,CAAC;CACxB;AAGD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,iBAAiB,EAAE,CAAC;CAChC;AAMD,eAAO,MAAM,QAAQ,EAAE,gBAAgB,EA+GtC,CAAC;AAoDF,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,gBAAgB,GAAG,iBAAiB,GAAG,cAAc,GAAG,aAAa,GAAG,SAAS,CAAC;CAC/F;AAED,wBAAsB,kBAAkB,CACtC,OAAO,GAAE,MAAyC,EAClD,MAAM,GAAE,MAAoB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAqD7B;AA6GD,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,iBAAiB,CAwBjE;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,iBAAiB,EACxB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CA2BrE;AA+WD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiCvF"}
|