@prodara/templates 0.1.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/README.md +94 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/phases/clarify.d.ts +4 -0
- package/dist/phases/clarify.d.ts.map +1 -0
- package/dist/phases/clarify.js +38 -0
- package/dist/phases/clarify.js.map +1 -0
- package/dist/phases/design.d.ts +4 -0
- package/dist/phases/design.d.ts.map +1 -0
- package/dist/phases/design.js +72 -0
- package/dist/phases/design.js.map +1 -0
- package/dist/phases/explore.d.ts +4 -0
- package/dist/phases/explore.d.ts.map +1 -0
- package/dist/phases/explore.js +52 -0
- package/dist/phases/explore.js.map +1 -0
- package/dist/phases/fix.d.ts +4 -0
- package/dist/phases/fix.d.ts.map +1 -0
- package/dist/phases/fix.js +42 -0
- package/dist/phases/fix.js.map +1 -0
- package/dist/phases/help.d.ts +4 -0
- package/dist/phases/help.d.ts.map +1 -0
- package/dist/phases/help.js +40 -0
- package/dist/phases/help.js.map +1 -0
- package/dist/phases/helpers.d.ts +4 -0
- package/dist/phases/helpers.d.ts.map +1 -0
- package/dist/phases/helpers.js +15 -0
- package/dist/phases/helpers.js.map +1 -0
- package/dist/phases/implement.d.ts +4 -0
- package/dist/phases/implement.d.ts.map +1 -0
- package/dist/phases/implement.js +62 -0
- package/dist/phases/implement.js.map +1 -0
- package/dist/phases/index.d.ts +13 -0
- package/dist/phases/index.d.ts.map +1 -0
- package/dist/phases/index.js +16 -0
- package/dist/phases/index.js.map +1 -0
- package/dist/phases/onboard.d.ts +4 -0
- package/dist/phases/onboard.d.ts.map +1 -0
- package/dist/phases/onboard.js +76 -0
- package/dist/phases/onboard.js.map +1 -0
- package/dist/phases/party.d.ts +4 -0
- package/dist/phases/party.d.ts.map +1 -0
- package/dist/phases/party.js +37 -0
- package/dist/phases/party.js.map +1 -0
- package/dist/phases/plan.d.ts +4 -0
- package/dist/phases/plan.d.ts.map +1 -0
- package/dist/phases/plan.js +43 -0
- package/dist/phases/plan.js.map +1 -0
- package/dist/phases/review.d.ts +4 -0
- package/dist/phases/review.d.ts.map +1 -0
- package/dist/phases/review.js +45 -0
- package/dist/phases/review.js.map +1 -0
- package/dist/phases/specify.d.ts +4 -0
- package/dist/phases/specify.d.ts.map +1 -0
- package/dist/phases/specify.js +39 -0
- package/dist/phases/specify.js.map +1 -0
- package/dist/platforms/claude.d.ts +8 -0
- package/dist/platforms/claude.d.ts.map +1 -0
- package/dist/platforms/claude.js +16 -0
- package/dist/platforms/claude.js.map +1 -0
- package/dist/platforms/codex.d.ts +8 -0
- package/dist/platforms/codex.d.ts.map +1 -0
- package/dist/platforms/codex.js +16 -0
- package/dist/platforms/codex.js.map +1 -0
- package/dist/platforms/copilot.d.ts +8 -0
- package/dist/platforms/copilot.d.ts.map +1 -0
- package/dist/platforms/copilot.js +24 -0
- package/dist/platforms/copilot.js.map +1 -0
- package/dist/platforms/cursor.d.ts +8 -0
- package/dist/platforms/cursor.d.ts.map +1 -0
- package/dist/platforms/cursor.js +24 -0
- package/dist/platforms/cursor.js.map +1 -0
- package/dist/platforms/index.d.ts +8 -0
- package/dist/platforms/index.d.ts.map +1 -0
- package/dist/platforms/index.js +10 -0
- package/dist/platforms/index.js.map +1 -0
- package/dist/platforms/opencode.d.ts +8 -0
- package/dist/platforms/opencode.d.ts.map +1 -0
- package/dist/platforms/opencode.js +16 -0
- package/dist/platforms/opencode.js.map +1 -0
- package/dist/platforms/registry.d.ts +71 -0
- package/dist/platforms/registry.d.ts.map +1 -0
- package/dist/platforms/registry.js +80 -0
- package/dist/platforms/registry.js.map +1 -0
- package/dist/renderer.d.ts +8 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/renderer.js +123 -0
- package/dist/renderer.js.map +1 -0
- package/dist/reviewers/adversarial.d.ts +6 -0
- package/dist/reviewers/adversarial.d.ts.map +1 -0
- package/dist/reviewers/adversarial.js +30 -0
- package/dist/reviewers/adversarial.js.map +1 -0
- package/dist/reviewers/architecture.d.ts +6 -0
- package/dist/reviewers/architecture.d.ts.map +1 -0
- package/dist/reviewers/architecture.js +25 -0
- package/dist/reviewers/architecture.js.map +1 -0
- package/dist/reviewers/code-quality.d.ts +6 -0
- package/dist/reviewers/code-quality.d.ts.map +1 -0
- package/dist/reviewers/code-quality.js +25 -0
- package/dist/reviewers/code-quality.js.map +1 -0
- package/dist/reviewers/custom.d.ts +4 -0
- package/dist/reviewers/custom.d.ts.map +1 -0
- package/dist/reviewers/custom.js +25 -0
- package/dist/reviewers/custom.js.map +1 -0
- package/dist/reviewers/edge-case.d.ts +6 -0
- package/dist/reviewers/edge-case.d.ts.map +1 -0
- package/dist/reviewers/edge-case.js +28 -0
- package/dist/reviewers/edge-case.js.map +1 -0
- package/dist/reviewers/helpers.d.ts +6 -0
- package/dist/reviewers/helpers.d.ts.map +1 -0
- package/dist/reviewers/helpers.js +42 -0
- package/dist/reviewers/helpers.js.map +1 -0
- package/dist/reviewers/index.d.ts +10 -0
- package/dist/reviewers/index.d.ts.map +1 -0
- package/dist/reviewers/index.js +13 -0
- package/dist/reviewers/index.js.map +1 -0
- package/dist/reviewers/security.d.ts +6 -0
- package/dist/reviewers/security.d.ts.map +1 -0
- package/dist/reviewers/security.js +25 -0
- package/dist/reviewers/security.js.map +1 -0
- package/dist/reviewers/test-quality.d.ts +6 -0
- package/dist/reviewers/test-quality.d.ts.map +1 -0
- package/dist/reviewers/test-quality.js +25 -0
- package/dist/reviewers/test-quality.js.map +1 -0
- package/dist/reviewers/ux-quality.d.ts +6 -0
- package/dist/reviewers/ux-quality.d.ts.map +1 -0
- package/dist/reviewers/ux-quality.js +25 -0
- package/dist/reviewers/ux-quality.js.map +1 -0
- package/dist/types.d.ts +129 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/platforms/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Prodara Templates — Platform Adapter Registry
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Data-driven registry for simple pass-through platform adapters.
|
|
5
|
+
// Platforms that need custom frontmatter (copilot, cursor) have their own files.
|
|
6
|
+
/** Create a pass-through adapter from a platform definition. */
|
|
7
|
+
export function makeAdapter(def) {
|
|
8
|
+
return (content, capability) => ({
|
|
9
|
+
content,
|
|
10
|
+
suggestedPath: `${def.dir}/prodara-${capability}${def.ext}`,
|
|
11
|
+
extension: def.ext,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// Platform definitions
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
export const GEMINI_DIR = '.gemini/prompts';
|
|
18
|
+
export const GEMINI_EXT = '.md';
|
|
19
|
+
export const wrapGemini = makeAdapter({ dir: GEMINI_DIR, ext: GEMINI_EXT });
|
|
20
|
+
export const WINDSURF_DIR = '.windsurf/rules';
|
|
21
|
+
export const WINDSURF_EXT = '.md';
|
|
22
|
+
export const wrapWindsurf = makeAdapter({ dir: WINDSURF_DIR, ext: WINDSURF_EXT });
|
|
23
|
+
export const KIRO_DIR = '.kiro/specs';
|
|
24
|
+
export const KIRO_EXT = '.md';
|
|
25
|
+
export const wrapKiro = makeAdapter({ dir: KIRO_DIR, ext: KIRO_EXT });
|
|
26
|
+
export const JULES_DIR = '.jules/prompts';
|
|
27
|
+
export const JULES_EXT = '.md';
|
|
28
|
+
export const wrapJules = makeAdapter({ dir: JULES_DIR, ext: JULES_EXT });
|
|
29
|
+
export const AMP_DIR = '.amp/rules';
|
|
30
|
+
export const AMP_EXT = '.md';
|
|
31
|
+
export const wrapAmp = makeAdapter({ dir: AMP_DIR, ext: AMP_EXT });
|
|
32
|
+
export const ROO_DIR = '.roo/rules';
|
|
33
|
+
export const ROO_EXT = '.md';
|
|
34
|
+
export const wrapRoo = makeAdapter({ dir: ROO_DIR, ext: ROO_EXT });
|
|
35
|
+
export const AIDER_DIR = '.aider/prompts';
|
|
36
|
+
export const AIDER_EXT = '.md';
|
|
37
|
+
export const wrapAider = makeAdapter({ dir: AIDER_DIR, ext: AIDER_EXT });
|
|
38
|
+
export const CLINE_DIR = '.cline/rules';
|
|
39
|
+
export const CLINE_EXT = '.md';
|
|
40
|
+
export const wrapCline = makeAdapter({ dir: CLINE_DIR, ext: CLINE_EXT });
|
|
41
|
+
export const CONTINUE_DIR = '.continue/rules';
|
|
42
|
+
export const CONTINUE_EXT = '.md';
|
|
43
|
+
export const wrapContinue = makeAdapter({ dir: CONTINUE_DIR, ext: CONTINUE_EXT });
|
|
44
|
+
export const ZED_DIR = '.zed/prompts';
|
|
45
|
+
export const ZED_EXT = '.md';
|
|
46
|
+
export const wrapZed = makeAdapter({ dir: ZED_DIR, ext: ZED_EXT });
|
|
47
|
+
export const BOLT_DIR = '.bolt/prompts';
|
|
48
|
+
export const BOLT_EXT = '.md';
|
|
49
|
+
export const wrapBolt = makeAdapter({ dir: BOLT_DIR, ext: BOLT_EXT });
|
|
50
|
+
export const AIDE_DIR = '.aide/prompts';
|
|
51
|
+
export const AIDE_EXT = '.md';
|
|
52
|
+
export const wrapAide = makeAdapter({ dir: AIDE_DIR, ext: AIDE_EXT });
|
|
53
|
+
export const TRAE_DIR = '.trae/rules';
|
|
54
|
+
export const TRAE_EXT = '.md';
|
|
55
|
+
export const wrapTrae = makeAdapter({ dir: TRAE_DIR, ext: TRAE_EXT });
|
|
56
|
+
export const AUGMENT_DIR = '.augment/prompts';
|
|
57
|
+
export const AUGMENT_EXT = '.md';
|
|
58
|
+
export const wrapAugment = makeAdapter({ dir: AUGMENT_DIR, ext: AUGMENT_EXT });
|
|
59
|
+
export const SOURCEGRAPH_DIR = '.sourcegraph/prompts';
|
|
60
|
+
export const SOURCEGRAPH_EXT = '.md';
|
|
61
|
+
export const wrapSourcegraph = makeAdapter({ dir: SOURCEGRAPH_DIR, ext: SOURCEGRAPH_EXT });
|
|
62
|
+
export const TABNINE_DIR = '.tabnine/prompts';
|
|
63
|
+
export const TABNINE_EXT = '.md';
|
|
64
|
+
export const wrapTabnine = makeAdapter({ dir: TABNINE_DIR, ext: TABNINE_EXT });
|
|
65
|
+
export const SUPERMAVEN_DIR = '.supermaven/prompts';
|
|
66
|
+
export const SUPERMAVEN_EXT = '.md';
|
|
67
|
+
export const wrapSupermaven = makeAdapter({ dir: SUPERMAVEN_DIR, ext: SUPERMAVEN_EXT });
|
|
68
|
+
export const VOID_DIR = '.void/prompts';
|
|
69
|
+
export const VOID_EXT = '.md';
|
|
70
|
+
export const wrapVoid = makeAdapter({ dir: VOID_DIR, ext: VOID_EXT });
|
|
71
|
+
export const PEAR_DIR = '.pear/prompts';
|
|
72
|
+
export const PEAR_EXT = '.md';
|
|
73
|
+
export const wrapPear = makeAdapter({ dir: PEAR_DIR, ext: PEAR_EXT });
|
|
74
|
+
export const DOUBLE_DIR = '.double/prompts';
|
|
75
|
+
export const DOUBLE_EXT = '.md';
|
|
76
|
+
export const wrapDouble = makeAdapter({ dir: DOUBLE_DIR, ext: DOUBLE_EXT });
|
|
77
|
+
export const GENERIC_DIR = '.ai/commands';
|
|
78
|
+
export const GENERIC_EXT = '.md';
|
|
79
|
+
export const wrapGeneric = makeAdapter({ dir: GENERIC_DIR, ext: GENERIC_EXT });
|
|
80
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/platforms/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TemplateId, TemplateContext, RenderOptions, PlatformOutput, PlatformTarget } from './types.js';
|
|
2
|
+
/** All registered template IDs (built-in only). */
|
|
3
|
+
export declare function listTemplates(): readonly TemplateId[];
|
|
4
|
+
/** Render a template by ID. Returns raw markdown string. */
|
|
5
|
+
export declare function render(id: TemplateId, context: TemplateContext, options?: RenderOptions): string;
|
|
6
|
+
/** Wrap rendered content for a specific platform. */
|
|
7
|
+
export declare function wrapForPlatform(content: string, capability: string, platform: PlatformTarget): PlatformOutput;
|
|
8
|
+
//# sourceMappingURL=renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,aAAa,EACb,cAAc,EACd,cAAc,EAYf,MAAM,YAAY,CAAC;AA8FpB,mDAAmD;AACnD,wBAAgB,aAAa,IAAI,SAAS,UAAU,EAAE,CAErD;AAED,4DAA4D;AAC5D,wBAAgB,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,CA6BhG;AAED,qDAAqD;AACrD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,GACvB,cAAc,CAGhB"}
|
package/dist/renderer.js
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Prodara Templates — Renderer
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Central render() function that dispatches to the correct template and
|
|
5
|
+
// optionally wraps the output with platform-specific formatting.
|
|
6
|
+
import { renderSpecify } from './phases/specify.js';
|
|
7
|
+
import { renderClarify } from './phases/clarify.js';
|
|
8
|
+
import { renderPlan } from './phases/plan.js';
|
|
9
|
+
import { renderImplement } from './phases/implement.js';
|
|
10
|
+
import { renderReview } from './phases/review.js';
|
|
11
|
+
import { renderFix } from './phases/fix.js';
|
|
12
|
+
import { renderExplore } from './phases/explore.js';
|
|
13
|
+
import { renderHelp } from './phases/help.js';
|
|
14
|
+
import { renderParty } from './phases/party.js';
|
|
15
|
+
import { renderDesign } from './phases/design.js';
|
|
16
|
+
import { renderOnboard } from './phases/onboard.js';
|
|
17
|
+
import { renderArchitectureReview } from './reviewers/architecture.js';
|
|
18
|
+
import { renderSecurityReview } from './reviewers/security.js';
|
|
19
|
+
import { renderCodeQualityReview } from './reviewers/code-quality.js';
|
|
20
|
+
import { renderTestQualityReview } from './reviewers/test-quality.js';
|
|
21
|
+
import { renderUxQualityReview } from './reviewers/ux-quality.js';
|
|
22
|
+
import { renderCustomReview } from './reviewers/custom.js';
|
|
23
|
+
import { renderAdversarialReview } from './reviewers/adversarial.js';
|
|
24
|
+
import { renderEdgeCaseReview } from './reviewers/edge-case.js';
|
|
25
|
+
import { wrapCopilot } from './platforms/copilot.js';
|
|
26
|
+
import { wrapClaude } from './platforms/claude.js';
|
|
27
|
+
import { wrapCursor } from './platforms/cursor.js';
|
|
28
|
+
import { wrapOpencode } from './platforms/opencode.js';
|
|
29
|
+
import { wrapCodex } from './platforms/codex.js';
|
|
30
|
+
import { wrapGemini, wrapWindsurf, wrapKiro, wrapJules, wrapAmp, wrapRoo, wrapAider, wrapCline, wrapContinue, wrapZed, wrapBolt, wrapAide, wrapTrae, wrapAugment, wrapSourcegraph, wrapTabnine, wrapSupermaven, wrapVoid, wrapPear, wrapDouble, wrapGeneric, } from './platforms/registry.js';
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
// Phase renderers map
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
const PHASE_RENDERERS = {
|
|
35
|
+
'phase:specify': (ctx) => renderSpecify(ctx),
|
|
36
|
+
'phase:clarify': (ctx) => renderClarify(ctx),
|
|
37
|
+
'phase:plan': (ctx) => renderPlan(ctx),
|
|
38
|
+
'phase:implement': (ctx) => renderImplement(ctx),
|
|
39
|
+
'phase:review': (ctx) => renderReview(ctx),
|
|
40
|
+
'phase:fix': (ctx) => renderFix(ctx),
|
|
41
|
+
'reviewer:architecture': (ctx) => renderArchitectureReview(ctx),
|
|
42
|
+
'reviewer:security': (ctx) => renderSecurityReview(ctx),
|
|
43
|
+
'reviewer:code-quality': (ctx) => renderCodeQualityReview(ctx),
|
|
44
|
+
'reviewer:test-quality': (ctx) => renderTestQualityReview(ctx),
|
|
45
|
+
'reviewer:ux-quality': (ctx) => renderUxQualityReview(ctx),
|
|
46
|
+
'reviewer:adversarial': (ctx) => renderAdversarialReview(ctx),
|
|
47
|
+
'reviewer:edge-case': (ctx) => renderEdgeCaseReview(ctx),
|
|
48
|
+
'phase:explore': (ctx) => renderExplore(ctx),
|
|
49
|
+
'phase:help': (ctx) => renderHelp(ctx),
|
|
50
|
+
'phase:party': (ctx) => renderParty(ctx),
|
|
51
|
+
'phase:design': (ctx) => renderDesign(ctx),
|
|
52
|
+
'phase:onboard': (ctx) => renderOnboard(ctx),
|
|
53
|
+
};
|
|
54
|
+
// ---------------------------------------------------------------------------
|
|
55
|
+
// Platform wrappers map
|
|
56
|
+
// ---------------------------------------------------------------------------
|
|
57
|
+
const PLATFORM_WRAPPERS = {
|
|
58
|
+
copilot: wrapCopilot,
|
|
59
|
+
claude: wrapClaude,
|
|
60
|
+
cursor: wrapCursor,
|
|
61
|
+
opencode: wrapOpencode,
|
|
62
|
+
codex: wrapCodex,
|
|
63
|
+
gemini: wrapGemini,
|
|
64
|
+
windsurf: wrapWindsurf,
|
|
65
|
+
kiro: wrapKiro,
|
|
66
|
+
jules: wrapJules,
|
|
67
|
+
amp: wrapAmp,
|
|
68
|
+
roo: wrapRoo,
|
|
69
|
+
aider: wrapAider,
|
|
70
|
+
cline: wrapCline,
|
|
71
|
+
continue: wrapContinue,
|
|
72
|
+
zed: wrapZed,
|
|
73
|
+
bolt: wrapBolt,
|
|
74
|
+
aide: wrapAide,
|
|
75
|
+
trae: wrapTrae,
|
|
76
|
+
augment: wrapAugment,
|
|
77
|
+
sourcegraph: wrapSourcegraph,
|
|
78
|
+
tabnine: wrapTabnine,
|
|
79
|
+
supermaven: wrapSupermaven,
|
|
80
|
+
void: wrapVoid,
|
|
81
|
+
pear: wrapPear,
|
|
82
|
+
double: wrapDouble,
|
|
83
|
+
generic: wrapGeneric,
|
|
84
|
+
};
|
|
85
|
+
// ---------------------------------------------------------------------------
|
|
86
|
+
// Public API
|
|
87
|
+
// ---------------------------------------------------------------------------
|
|
88
|
+
/** All registered template IDs (built-in only). */
|
|
89
|
+
export function listTemplates() {
|
|
90
|
+
return Object.keys(PHASE_RENDERERS);
|
|
91
|
+
}
|
|
92
|
+
/** Render a template by ID. Returns raw markdown string. */
|
|
93
|
+
export function render(id, context, options) {
|
|
94
|
+
// Check for template override (file path provided via options)
|
|
95
|
+
if (options?.templateOverride) {
|
|
96
|
+
const content = options.templateOverride;
|
|
97
|
+
if (options.platform) {
|
|
98
|
+
const capability = id.split(':').pop();
|
|
99
|
+
return wrapForPlatform(content, capability, options.platform).content;
|
|
100
|
+
}
|
|
101
|
+
return content;
|
|
102
|
+
}
|
|
103
|
+
let renderer = PHASE_RENDERERS[id];
|
|
104
|
+
// Dynamic dispatch for custom reviewer templates: reviewer:{name}
|
|
105
|
+
if (!renderer && id.startsWith('reviewer:')) {
|
|
106
|
+
renderer = (ctx) => renderCustomReview(ctx);
|
|
107
|
+
}
|
|
108
|
+
if (!renderer) {
|
|
109
|
+
throw new Error(`Unknown template: ${id}`);
|
|
110
|
+
}
|
|
111
|
+
const content = renderer(context);
|
|
112
|
+
if (options?.platform) {
|
|
113
|
+
const capability = id.split(':').pop();
|
|
114
|
+
return wrapForPlatform(content, capability, options.platform).content;
|
|
115
|
+
}
|
|
116
|
+
return content;
|
|
117
|
+
}
|
|
118
|
+
/** Wrap rendered content for a specific platform. */
|
|
119
|
+
export function wrapForPlatform(content, capability, platform) {
|
|
120
|
+
const wrapper = PLATFORM_WRAPPERS[platform];
|
|
121
|
+
return wrapper(content, capability);
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ReviewContext } from '../types.js';
|
|
2
|
+
/** Perspective statement guiding the adversarial review. */
|
|
3
|
+
export declare const ADVERSARIAL_PERSPECTIVE = "Assume problems exist. Exhaustively find gaps, unstated assumptions, contradictions, missing items, and anything that could go wrong.";
|
|
4
|
+
/** Render adversarial review prompt with cynical/skeptical perspective. */
|
|
5
|
+
export declare function renderAdversarialReview(ctx: ReviewContext): string;
|
|
6
|
+
//# sourceMappingURL=adversarial.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adversarial.d.ts","sourceRoot":"","sources":["../../src/reviewers/adversarial.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,4DAA4D;AAC5D,eAAO,MAAM,uBAAuB,0IACqG,CAAC;AAE1I,2EAA2E;AAC3E,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAwBlE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Prodara Templates — Adversarial Reviewer
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
import { appendFindings, appendContext } from './helpers.js';
|
|
5
|
+
/** Perspective statement guiding the adversarial review. */
|
|
6
|
+
export const ADVERSARIAL_PERSPECTIVE = 'Assume problems exist. Exhaustively find gaps, unstated assumptions, contradictions, missing items, and anything that could go wrong.';
|
|
7
|
+
/** Render adversarial review prompt with cynical/skeptical perspective. */
|
|
8
|
+
export function renderAdversarialReview(ctx) {
|
|
9
|
+
const lines = [];
|
|
10
|
+
lines.push('# Adversarial Review');
|
|
11
|
+
lines.push('');
|
|
12
|
+
lines.push(`Perspective: ${ADVERSARIAL_PERSPECTIVE}`);
|
|
13
|
+
lines.push('');
|
|
14
|
+
lines.push('## Instructions');
|
|
15
|
+
lines.push('');
|
|
16
|
+
lines.push('1. Challenge every assumption — what is taken for granted that could be wrong?');
|
|
17
|
+
lines.push('2. Find gaps in the specification — what is missing that should be explicitly stated?');
|
|
18
|
+
lines.push('3. Identify contradictions — do any declarations conflict with each other?');
|
|
19
|
+
lines.push('4. Look for unstated dependencies — what implicit requirements are not declared?');
|
|
20
|
+
lines.push('5. Question completeness — are there scenarios, actors, or data flows not covered?');
|
|
21
|
+
lines.push('6. Find ambiguities — where can the spec be interpreted in multiple ways?');
|
|
22
|
+
lines.push('7. Evaluate error scenarios — what failure modes are unaddressed?');
|
|
23
|
+
lines.push('8. Check for security blind spots — what attack vectors are not considered?');
|
|
24
|
+
lines.push('9. Assess scalability gaps — what happens at 10x or 100x the expected load?');
|
|
25
|
+
lines.push('10. Verify naming consistency — are terms used consistently across the entire spec?');
|
|
26
|
+
appendFindings(lines, ctx);
|
|
27
|
+
appendContext(lines, ctx);
|
|
28
|
+
return lines.join('\n');
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=adversarial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adversarial.js","sourceRoot":"","sources":["../../src/reviewers/adversarial.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2CAA2C;AAC3C,8EAA8E;AAG9E,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7D,4DAA4D;AAC5D,MAAM,CAAC,MAAM,uBAAuB,GAClC,uIAAuI,CAAC;AAE1I,2EAA2E;AAC3E,MAAM,UAAU,uBAAuB,CAAC,GAAkB;IACxD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gBAAgB,uBAAuB,EAAE,CAAC,CAAC;IACtD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;IAC7F,KAAK,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;IACpG,KAAK,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;IACzF,KAAK,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;IAC/F,KAAK,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;IACjG,KAAK,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;IACxF,KAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IAChF,KAAK,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;IAC1F,KAAK,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;IAC1F,KAAK,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC;IAElG,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3B,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAE1B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ReviewContext } from '../types.js';
|
|
2
|
+
/** Perspective statement guiding the architecture review. */
|
|
3
|
+
export declare const ARCHITECTURE_PERSPECTIVE = "Evaluate module boundaries, dependency direction, separation of concerns, and adherence to declared architecture constraints.";
|
|
4
|
+
/** Render architecture review prompt with module boundary and dependency checks. */
|
|
5
|
+
export declare function renderArchitectureReview(ctx: ReviewContext): string;
|
|
6
|
+
//# sourceMappingURL=architecture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"architecture.d.ts","sourceRoot":"","sources":["../../src/reviewers/architecture.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,6DAA6D;AAC7D,eAAO,MAAM,wBAAwB,kIAC4F,CAAC;AAElI,oFAAoF;AACpF,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAmBnE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Prodara Templates — Architecture Reviewer
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
import { appendFindings, appendContext } from './helpers.js';
|
|
5
|
+
/** Perspective statement guiding the architecture review. */
|
|
6
|
+
export const ARCHITECTURE_PERSPECTIVE = 'Evaluate module boundaries, dependency direction, separation of concerns, and adherence to declared architecture constraints.';
|
|
7
|
+
/** Render architecture review prompt with module boundary and dependency checks. */
|
|
8
|
+
export function renderArchitectureReview(ctx) {
|
|
9
|
+
const lines = [];
|
|
10
|
+
lines.push('# Architecture Review');
|
|
11
|
+
lines.push('');
|
|
12
|
+
lines.push(`Perspective: ${ARCHITECTURE_PERSPECTIVE}`);
|
|
13
|
+
lines.push('');
|
|
14
|
+
lines.push('## Instructions');
|
|
15
|
+
lines.push('');
|
|
16
|
+
lines.push('1. Verify that module boundaries match the declared architecture in the constitution.');
|
|
17
|
+
lines.push('2. Check that dependency edges flow in the correct direction (no circular dependencies).');
|
|
18
|
+
lines.push('3. Ensure entities are not directly accessed across module boundaries without a declared edge.');
|
|
19
|
+
lines.push('4. Flag any violation of separation of concerns (e.g., UI logic in data modules).');
|
|
20
|
+
lines.push('5. Confirm that interfaces between modules are minimal and well-defined.');
|
|
21
|
+
appendFindings(lines, ctx);
|
|
22
|
+
appendContext(lines, ctx);
|
|
23
|
+
return lines.join('\n');
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=architecture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../src/reviewers/architecture.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4CAA4C;AAC5C,8EAA8E;AAG9E,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7D,6DAA6D;AAC7D,MAAM,CAAC,MAAM,wBAAwB,GACnC,+HAA+H,CAAC;AAElI,oFAAoF;AACpF,MAAM,UAAU,wBAAwB,CAAC,GAAkB;IACzD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gBAAgB,wBAAwB,EAAE,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;IACpG,KAAK,CAAC,IAAI,CAAC,0FAA0F,CAAC,CAAC;IACvG,KAAK,CAAC,IAAI,CAAC,gGAAgG,CAAC,CAAC;IAC7G,KAAK,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;IAChG,KAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;IAEvF,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3B,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAE1B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ReviewContext } from '../types.js';
|
|
2
|
+
/** Perspective statement guiding the code quality review. */
|
|
3
|
+
export declare const CODE_QUALITY_PERSPECTIVE = "Assess code clarity, consistency, naming conventions, complexity, and adherence to best practices.";
|
|
4
|
+
/** Render code quality review prompt assessing clarity, naming, and complexity. */
|
|
5
|
+
export declare function renderCodeQualityReview(ctx: ReviewContext): string;
|
|
6
|
+
//# sourceMappingURL=code-quality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-quality.d.ts","sourceRoot":"","sources":["../../src/reviewers/code-quality.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,6DAA6D;AAC7D,eAAO,MAAM,wBAAwB,uGACiE,CAAC;AAEvG,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAmBlE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Prodara Templates — Code Quality Reviewer
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
import { appendFindings, appendContext } from './helpers.js';
|
|
5
|
+
/** Perspective statement guiding the code quality review. */
|
|
6
|
+
export const CODE_QUALITY_PERSPECTIVE = 'Assess code clarity, consistency, naming conventions, complexity, and adherence to best practices.';
|
|
7
|
+
/** Render code quality review prompt assessing clarity, naming, and complexity. */
|
|
8
|
+
export function renderCodeQualityReview(ctx) {
|
|
9
|
+
const lines = [];
|
|
10
|
+
lines.push('# Code Quality Review');
|
|
11
|
+
lines.push('');
|
|
12
|
+
lines.push(`Perspective: ${CODE_QUALITY_PERSPECTIVE}`);
|
|
13
|
+
lines.push('');
|
|
14
|
+
lines.push('## Instructions');
|
|
15
|
+
lines.push('');
|
|
16
|
+
lines.push('1. Check naming conventions — entities, fields, and workflows should follow declared patterns.');
|
|
17
|
+
lines.push('2. Identify overly complex workflows (excessive branching, deep nesting).');
|
|
18
|
+
lines.push('3. Flag duplicated logic that should be extracted into shared entities or edges.');
|
|
19
|
+
lines.push('4. Verify error handling patterns are consistent across modules.');
|
|
20
|
+
lines.push('5. Ensure generated code follows language-idiomatic patterns.');
|
|
21
|
+
appendFindings(lines, ctx);
|
|
22
|
+
appendContext(lines, ctx);
|
|
23
|
+
return lines.join('\n');
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=code-quality.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-quality.js","sourceRoot":"","sources":["../../src/reviewers/code-quality.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4CAA4C;AAC5C,8EAA8E;AAG9E,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7D,6DAA6D;AAC7D,MAAM,CAAC,MAAM,wBAAwB,GACnC,oGAAoG,CAAC;AAEvG,mFAAmF;AACnF,MAAM,UAAU,uBAAuB,CAAC,GAAkB;IACxD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gBAAgB,wBAAwB,EAAE,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gGAAgG,CAAC,CAAC;IAC7G,KAAK,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;IACxF,KAAK,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;IAC/F,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;IAC/E,KAAK,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;IAE5E,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3B,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAE1B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../src/reviewers/custom.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAoB7D"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Prodara Templates — Custom Reviewer
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Renders a review prompt from user-provided custom prompt content.
|
|
5
|
+
import { appendFindings, appendContext } from './helpers.js';
|
|
6
|
+
/** Render a custom reviewer prompt using user-provided instructions. */
|
|
7
|
+
export function renderCustomReview(ctx) {
|
|
8
|
+
const lines = [];
|
|
9
|
+
lines.push(`# ${ctx.reviewerName} Review`);
|
|
10
|
+
lines.push('');
|
|
11
|
+
lines.push(`Perspective: ${ctx.perspective}`);
|
|
12
|
+
lines.push('');
|
|
13
|
+
lines.push('## Instructions');
|
|
14
|
+
lines.push('');
|
|
15
|
+
if (ctx.customPrompt) {
|
|
16
|
+
lines.push(ctx.customPrompt);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
lines.push('Perform a thorough review from the stated perspective.');
|
|
20
|
+
}
|
|
21
|
+
appendFindings(lines, ctx);
|
|
22
|
+
appendContext(lines, ctx);
|
|
23
|
+
return lines.join('\n');
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=custom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom.js","sourceRoot":"","sources":["../../src/reviewers/custom.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,sCAAsC;AACtC,8EAA8E;AAC9E,oEAAoE;AAGpE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7D,wEAAwE;AACxE,MAAM,UAAU,kBAAkB,CAAC,GAAkB;IACnD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,YAAY,SAAS,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACvE,CAAC;IAED,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3B,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAE1B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ReviewContext } from '../types.js';
|
|
2
|
+
/** Perspective statement guiding the edge case review. */
|
|
3
|
+
export declare const EDGE_CASE_PERSPECTIVE = "Systematically analyze every branching path for missing defaults, off-by-one errors, empty collections, null states, boundary values, and race conditions.";
|
|
4
|
+
/** Render edge case review prompt with methodical analysis perspective. */
|
|
5
|
+
export declare function renderEdgeCaseReview(ctx: ReviewContext): string;
|
|
6
|
+
//# sourceMappingURL=edge-case.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-case.d.ts","sourceRoot":"","sources":["../../src/reviewers/edge-case.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,0DAA0D;AAC1D,eAAO,MAAM,qBAAqB,+JAC4H,CAAC;AAE/J,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAsB/D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Prodara Templates — Edge Case Hunter Reviewer
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
import { appendFindings, appendContext } from './helpers.js';
|
|
5
|
+
/** Perspective statement guiding the edge case review. */
|
|
6
|
+
export const EDGE_CASE_PERSPECTIVE = 'Systematically analyze every branching path for missing defaults, off-by-one errors, empty collections, null states, boundary values, and race conditions.';
|
|
7
|
+
/** Render edge case review prompt with methodical analysis perspective. */
|
|
8
|
+
export function renderEdgeCaseReview(ctx) {
|
|
9
|
+
const lines = [];
|
|
10
|
+
lines.push('# Edge Case Review');
|
|
11
|
+
lines.push('');
|
|
12
|
+
lines.push(`Perspective: ${EDGE_CASE_PERSPECTIVE}`);
|
|
13
|
+
lines.push('');
|
|
14
|
+
lines.push('## Instructions');
|
|
15
|
+
lines.push('');
|
|
16
|
+
lines.push('1. Check every decision point — is there a default/else path for unexpected values?');
|
|
17
|
+
lines.push('2. Examine collections — what happens when they are empty, have one item, or overflow?');
|
|
18
|
+
lines.push('3. Analyze boundaries — are min/max, first/last, and zero cases handled?');
|
|
19
|
+
lines.push('4. Look for null/undefined states — can any field, reference, or result be absent?');
|
|
20
|
+
lines.push('5. Identify race conditions — can concurrent workflows produce conflicting states?');
|
|
21
|
+
lines.push('6. Check temporal dependencies — what happens if events arrive out of order?');
|
|
22
|
+
lines.push('7. Verify idempotency — can operations be safely retried without side effects?');
|
|
23
|
+
lines.push('8. Assess type boundaries — are numeric overflows, string lengths, and date ranges guarded?');
|
|
24
|
+
appendFindings(lines, ctx);
|
|
25
|
+
appendContext(lines, ctx);
|
|
26
|
+
return lines.join('\n');
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=edge-case.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-case.js","sourceRoot":"","sources":["../../src/reviewers/edge-case.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,gDAAgD;AAChD,8EAA8E;AAG9E,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7D,0DAA0D;AAC1D,MAAM,CAAC,MAAM,qBAAqB,GAChC,4JAA4J,CAAC;AAE/J,2EAA2E;AAC3E,MAAM,UAAU,oBAAoB,CAAC,GAAkB;IACrD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gBAAgB,qBAAqB,EAAE,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC;IAClG,KAAK,CAAC,IAAI,CAAC,wFAAwF,CAAC,CAAC;IACrG,KAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;IACvF,KAAK,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;IACjG,KAAK,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;IACjG,KAAK,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;IAC3F,KAAK,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;IAC7F,KAAK,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAC;IAE1G,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3B,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAE1B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ReviewContext } from '../types.js';
|
|
2
|
+
/** Append existing findings section to the output lines. */
|
|
3
|
+
export declare function appendFindings(lines: string[], ctx: ReviewContext): void;
|
|
4
|
+
/** Append code context, custom prompt, constitution, and graph slice sections. */
|
|
5
|
+
export declare function appendContext(lines: string[], ctx: ReviewContext): void;
|
|
6
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/reviewers/helpers.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,aAAa,GAAG,IAAI,CASxE;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,aAAa,GAAG,IAAI,CAyBvE"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Prodara Templates — Shared Reviewer Helpers
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
/** Append existing findings section to the output lines. */
|
|
5
|
+
export function appendFindings(lines, ctx) {
|
|
6
|
+
if (ctx.findings.length > 0) {
|
|
7
|
+
lines.push('');
|
|
8
|
+
lines.push(`## Existing Findings (${ctx.findings.length})`);
|
|
9
|
+
lines.push('');
|
|
10
|
+
for (const f of ctx.findings) {
|
|
11
|
+
lines.push(`- [${f.severity.toUpperCase()}] ${f.category}: ${f.message}`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/** Append code context, custom prompt, constitution, and graph slice sections. */
|
|
16
|
+
export function appendContext(lines, ctx) {
|
|
17
|
+
if (ctx.customPrompt) {
|
|
18
|
+
lines.push('');
|
|
19
|
+
lines.push('## Custom Instructions');
|
|
20
|
+
lines.push('');
|
|
21
|
+
lines.push(ctx.customPrompt);
|
|
22
|
+
}
|
|
23
|
+
if (ctx.codeContext) {
|
|
24
|
+
lines.push('');
|
|
25
|
+
lines.push('## Code Context');
|
|
26
|
+
lines.push('');
|
|
27
|
+
lines.push(ctx.codeContext);
|
|
28
|
+
}
|
|
29
|
+
if (ctx.constitution) {
|
|
30
|
+
lines.push('');
|
|
31
|
+
lines.push('## Constitution');
|
|
32
|
+
lines.push('');
|
|
33
|
+
lines.push(ctx.constitution);
|
|
34
|
+
}
|
|
35
|
+
if (ctx.graphSlice) {
|
|
36
|
+
lines.push('');
|
|
37
|
+
lines.push('## Graph Context');
|
|
38
|
+
lines.push('');
|
|
39
|
+
lines.push(ctx.graphSlice);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/reviewers/helpers.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8CAA8C;AAC9C,8EAA8E;AAI9E,4DAA4D;AAC5D,MAAM,UAAU,cAAc,CAAC,KAAe,EAAE,GAAkB;IAChE,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,yBAAyB,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,aAAa,CAAC,KAAe,EAAE,GAAkB;IAC/D,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { appendFindings, appendContext } from './helpers.js';
|
|
2
|
+
export { renderArchitectureReview, ARCHITECTURE_PERSPECTIVE } from './architecture.js';
|
|
3
|
+
export { renderSecurityReview, SECURITY_PERSPECTIVE } from './security.js';
|
|
4
|
+
export { renderCodeQualityReview, CODE_QUALITY_PERSPECTIVE } from './code-quality.js';
|
|
5
|
+
export { renderTestQualityReview, TEST_QUALITY_PERSPECTIVE } from './test-quality.js';
|
|
6
|
+
export { renderUxQualityReview, UX_QUALITY_PERSPECTIVE } from './ux-quality.js';
|
|
7
|
+
export { renderCustomReview } from './custom.js';
|
|
8
|
+
export { renderAdversarialReview, ADVERSARIAL_PERSPECTIVE } from './adversarial.js';
|
|
9
|
+
export { renderEdgeCaseReview, EDGE_CASE_PERSPECTIVE } from './edge-case.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reviewers/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Prodara Templates — Reviewer Templates Barrel
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
export { appendFindings, appendContext } from './helpers.js';
|
|
5
|
+
export { renderArchitectureReview, ARCHITECTURE_PERSPECTIVE } from './architecture.js';
|
|
6
|
+
export { renderSecurityReview, SECURITY_PERSPECTIVE } from './security.js';
|
|
7
|
+
export { renderCodeQualityReview, CODE_QUALITY_PERSPECTIVE } from './code-quality.js';
|
|
8
|
+
export { renderTestQualityReview, TEST_QUALITY_PERSPECTIVE } from './test-quality.js';
|
|
9
|
+
export { renderUxQualityReview, UX_QUALITY_PERSPECTIVE } from './ux-quality.js';
|
|
10
|
+
export { renderCustomReview } from './custom.js';
|
|
11
|
+
export { renderAdversarialReview, ADVERSARIAL_PERSPECTIVE } from './adversarial.js';
|
|
12
|
+
export { renderEdgeCaseReview, EDGE_CASE_PERSPECTIVE } from './edge-case.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reviewers/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,gDAAgD;AAChD,8EAA8E;AAE9E,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ReviewContext } from '../types.js';
|
|
2
|
+
/** Perspective statement guiding the security review. */
|
|
3
|
+
export declare const SECURITY_PERSPECTIVE = "Identify authorization gaps, credential exposure, injection surfaces, and missing access controls.";
|
|
4
|
+
/** Render security review prompt checking auth, credentials, and injection surfaces. */
|
|
5
|
+
export declare function renderSecurityReview(ctx: ReviewContext): string;
|
|
6
|
+
//# sourceMappingURL=security.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/reviewers/security.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,yDAAyD;AACzD,eAAO,MAAM,oBAAoB,uGACqE,CAAC;AAEvG,wFAAwF;AACxF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAmB/D"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Prodara Templates — Security Reviewer
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
import { appendFindings, appendContext } from './helpers.js';
|
|
5
|
+
/** Perspective statement guiding the security review. */
|
|
6
|
+
export const SECURITY_PERSPECTIVE = 'Identify authorization gaps, credential exposure, injection surfaces, and missing access controls.';
|
|
7
|
+
/** Render security review prompt checking auth, credentials, and injection surfaces. */
|
|
8
|
+
export function renderSecurityReview(ctx) {
|
|
9
|
+
const lines = [];
|
|
10
|
+
lines.push('# Security Review');
|
|
11
|
+
lines.push('');
|
|
12
|
+
lines.push(`Perspective: ${SECURITY_PERSPECTIVE}`);
|
|
13
|
+
lines.push('');
|
|
14
|
+
lines.push('## Instructions');
|
|
15
|
+
lines.push('');
|
|
16
|
+
lines.push('1. Check all write operations for proper authorization (authorized_as edges).');
|
|
17
|
+
lines.push('2. Identify entities with sensitive fields (password, token, secret, api_key, credit_card, ssn) that lack access controls.');
|
|
18
|
+
lines.push('3. Verify that published events carry authorization context.');
|
|
19
|
+
lines.push('4. Flag any direct user input flowing to queries or commands without validation.');
|
|
20
|
+
lines.push('5. Ensure credentials are never stored in plaintext or logged.');
|
|
21
|
+
appendFindings(lines, ctx);
|
|
22
|
+
appendContext(lines, ctx);
|
|
23
|
+
return lines.join('\n');
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/reviewers/security.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,wCAAwC;AACxC,8EAA8E;AAG9E,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7D,yDAAyD;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAC/B,oGAAoG,CAAC;AAEvG,wFAAwF;AACxF,MAAM,UAAU,oBAAoB,CAAC,GAAkB;IACrD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gBAAgB,oBAAoB,EAAE,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;IAC5F,KAAK,CAAC,IAAI,CAAC,4HAA4H,CAAC,CAAC;IACzI,KAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAC3E,KAAK,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;IAC/F,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAE7E,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3B,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAE1B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|