fraim-framework 2.0.63 → 2.0.65
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/bin/fraim-mcp.js +52 -19
- package/bin/fraim.js +23 -0
- package/dist/src/cli/commands/add-ide.js +53 -14
- package/dist/src/cli/commands/doctor.js +12 -24
- package/dist/src/cli/commands/init-project.js +0 -3
- package/dist/src/cli/commands/init.js +0 -2
- package/dist/src/cli/commands/mcp.js +65 -0
- package/dist/src/cli/commands/setup.js +17 -1
- package/dist/src/cli/commands/sync.js +173 -104
- package/dist/src/cli/setup/auto-mcp-setup.js +6 -4
- package/dist/src/cli/setup/mcp-config-generator.js +65 -41
- package/dist/src/fraim/issue-tracking/ado-provider.js +304 -0
- package/dist/src/fraim/issue-tracking/factory.js +63 -0
- package/dist/src/fraim/issue-tracking/github-provider.js +200 -0
- package/dist/src/fraim/issue-tracking/types.js +7 -0
- package/dist/src/fraim/issue-tracking-config.js +83 -0
- package/dist/src/local-mcp-server/stdio-server.js +91 -15
- package/dist/src/utils/remote-sync.js +130 -0
- package/package.json +3 -4
- package/dist/src/utils/enforcement-utils.js +0 -239
- package/dist/src/utils/validate-workflows.js +0 -101
- package/registry/scripts/cleanup-branch.ts +0 -341
- package/registry/scripts/code-quality-check.sh +0 -566
- package/registry/scripts/comprehensive-explorer.py +0 -297
- package/registry/scripts/create-git-labels.sh +0 -49
- package/registry/scripts/create-website-structure.js +0 -562
- package/registry/scripts/detect-tautological-tests.sh +0 -38
- package/registry/scripts/evaluate-code-quality.ts +0 -36
- package/registry/scripts/exec-with-timeout.ts +0 -122
- package/registry/scripts/generate-engagement-emails.ts +0 -830
- package/registry/scripts/interactive-explorer.py +0 -270
- package/registry/scripts/markdown-to-pdf.js +0 -395
- package/registry/scripts/newsletter-helpers.ts +0 -777
- package/registry/scripts/pdf-styles.css +0 -172
- package/registry/scripts/prep-issue.sh +0 -548
- package/registry/scripts/productivity/build-productivity-csv.mjs +0 -242
- package/registry/scripts/productivity/fetch-pr-details.mjs +0 -144
- package/registry/scripts/productivity/productivity-report.sh +0 -147
- package/registry/scripts/profile-server.ts +0 -426
- package/registry/scripts/run-thank-you-workflow.ts +0 -122
- package/registry/scripts/scrape-site.py +0 -302
- package/registry/scripts/send-newsletter-simple.ts +0 -102
- package/registry/scripts/send-thank-you-emails.ts +0 -57
- package/registry/scripts/validate-openapi-limits.ts +0 -366
- package/registry/scripts/validate-test-coverage.ts +0 -280
- package/registry/scripts/verify-pr-comments.sh +0 -74
- package/registry/scripts/verify-test-coverage.ts +0 -36
- package/registry/stubs/workflows/bootstrap/create-architecture.md +0 -11
- package/registry/stubs/workflows/bootstrap/detect-broken-windows.md +0 -11
- package/registry/stubs/workflows/bootstrap/evaluate-code-quality.md +0 -11
- package/registry/stubs/workflows/bootstrap/verify-test-coverage.md +0 -11
- package/registry/stubs/workflows/brainstorming/blue-sky-brainstorming.md +0 -11
- package/registry/stubs/workflows/brainstorming/codebase-brainstorming.md +0 -11
- package/registry/stubs/workflows/business-development/create-business-plan.md +0 -11
- package/registry/stubs/workflows/business-development/ideate-business-opportunity.md +0 -11
- package/registry/stubs/workflows/business-development/price-product.md +0 -18
- package/registry/stubs/workflows/compliance/detect-compliance-requirements.md +0 -11
- package/registry/stubs/workflows/compliance/generate-audit-evidence.md +0 -11
- package/registry/stubs/workflows/compliance/soc2-evidence-generator.md +0 -11
- package/registry/stubs/workflows/customer-development/insight-analysis.md +0 -11
- package/registry/stubs/workflows/customer-development/insight-triage.md +0 -11
- package/registry/stubs/workflows/customer-development/interview-preparation.md +0 -11
- package/registry/stubs/workflows/customer-development/linkedin-outreach.md +0 -11
- package/registry/stubs/workflows/customer-development/strategic-brainstorming.md +0 -11
- package/registry/stubs/workflows/customer-development/thank-customers.md +0 -11
- package/registry/stubs/workflows/customer-development/user-survey-dispatch.md +0 -11
- package/registry/stubs/workflows/customer-development/users-to-target.md +0 -11
- package/registry/stubs/workflows/customer-development/weekly-newsletter.md +0 -11
- package/registry/stubs/workflows/deploy/cloud-deployment.md +0 -11
- package/registry/stubs/workflows/improve-fraim/contribute.md +0 -11
- package/registry/stubs/workflows/improve-fraim/file-issue.md +0 -11
- package/registry/stubs/workflows/learning/build-skillset.md +0 -11
- package/registry/stubs/workflows/learning/synthesize-learnings.md +0 -11
- package/registry/stubs/workflows/legal/contract-review-analysis.md +0 -11
- package/registry/stubs/workflows/legal/nda.md +0 -11
- package/registry/stubs/workflows/legal/patent-filing.md +0 -11
- package/registry/stubs/workflows/legal/saas-contract-development.md +0 -11
- package/registry/stubs/workflows/legal/trademark-filing.md +0 -11
- package/registry/stubs/workflows/marketing/content-creation.md +0 -11
- package/registry/stubs/workflows/marketing/convert-to-pdf.md +0 -11
- package/registry/stubs/workflows/marketing/create-modern-website.md +0 -11
- package/registry/stubs/workflows/marketing/domain-registration.md +0 -11
- package/registry/stubs/workflows/marketing/hbr-article.md +0 -11
- package/registry/stubs/workflows/marketing/launch-checklist.md +0 -11
- package/registry/stubs/workflows/marketing/marketing-strategy.md +0 -11
- package/registry/stubs/workflows/marketing/storytelling.md +0 -11
- package/registry/stubs/workflows/performance/analyze-performance.md +0 -11
- package/registry/stubs/workflows/product-building/design.md +0 -11
- package/registry/stubs/workflows/product-building/implement.md +0 -11
- package/registry/stubs/workflows/product-building/iterate-on-pr-comments.md +0 -11
- package/registry/stubs/workflows/product-building/prep-issue.md +0 -11
- package/registry/stubs/workflows/product-building/prototype.md +0 -11
- package/registry/stubs/workflows/product-building/resolve.md +0 -11
- package/registry/stubs/workflows/product-building/retrospect.md +0 -11
- package/registry/stubs/workflows/product-building/spec.md +0 -11
- package/registry/stubs/workflows/product-building/test.md +0 -11
- package/registry/stubs/workflows/productivity-report/productivity-report.md +0 -11
- package/registry/stubs/workflows/quality-assurance/browser-validation.md +0 -11
- package/registry/stubs/workflows/quality-assurance/iterative-improvement-cycle.md +0 -11
- package/registry/stubs/workflows/replicate/replicate-discovery.md +0 -11
- package/registry/stubs/workflows/replicate/replicate-to-issues.md +0 -11
- package/registry/stubs/workflows/reviewer/review-implementation-vs-design-spec.md +0 -11
- package/registry/stubs/workflows/reviewer/review-implementation-vs-feature-spec.md +0 -11
- package/registry/stubs/workflows/startup-credits/aws-activate-application.md +0 -11
- package/registry/stubs/workflows/startup-credits/google-cloud-application.md +0 -11
- package/registry/stubs/workflows/startup-credits/microsoft-azure-application.md +0 -11
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { spawn } from "child_process";
|
|
2
|
-
import * as fs from "fs";
|
|
3
|
-
import * as path from "path";
|
|
4
|
-
import fg from "fast-glob";
|
|
5
|
-
import kill from "tree-kill";
|
|
6
|
-
import os from "os";
|
|
7
|
-
|
|
8
|
-
function parseArgs(argv: string[]) {
|
|
9
|
-
const out: any = { cmd: [], timeout: 120, logfile: "run.log" };
|
|
10
|
-
let parsingCmd = false;
|
|
11
|
-
|
|
12
|
-
for (let i = 0; i < argv.length; i++) {
|
|
13
|
-
const a = argv[i];
|
|
14
|
-
|
|
15
|
-
if (!parsingCmd) {
|
|
16
|
-
if (a === "--timeout" && argv[i + 1]) {
|
|
17
|
-
out.timeout = parseInt(argv[++i], 10);
|
|
18
|
-
} else if (a.startsWith("--timeout=")) {
|
|
19
|
-
out.timeout = parseInt(a.split("=")[1], 10);
|
|
20
|
-
} else if (a === "--logfile" && argv[i + 1]) {
|
|
21
|
-
out.logfile = argv[++i];
|
|
22
|
-
} else if (a.startsWith("--logfile=")) {
|
|
23
|
-
out.logfile = a.split("=")[1];
|
|
24
|
-
} else if (a === "--") {
|
|
25
|
-
parsingCmd = true; // everything after this is command
|
|
26
|
-
} else {
|
|
27
|
-
parsingCmd = true;
|
|
28
|
-
out.cmd.push(a);
|
|
29
|
-
}
|
|
30
|
-
} else {
|
|
31
|
-
out.cmd.push(a);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return out;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
async function main() {
|
|
39
|
-
const args = parseArgs(process.argv.slice(2));
|
|
40
|
-
if (!args.cmd.length) {
|
|
41
|
-
console.error(
|
|
42
|
-
"Usage: exec-with-timeout <cmd> [args...] [--timeout 120] [--logfile run.log]"
|
|
43
|
-
);
|
|
44
|
-
process.exit(2);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const logPath = path.resolve(process.cwd(), args.logfile);
|
|
48
|
-
const out = fs.createWriteStream(logPath, { flags: "a" });
|
|
49
|
-
out.write(
|
|
50
|
-
`\n--- RUN: ${args.cmd.join(" ")} @ ${new Date().toISOString()} (timeout ${
|
|
51
|
-
args.timeout
|
|
52
|
-
}s) ---\n`
|
|
53
|
-
);
|
|
54
|
-
|
|
55
|
-
// Expand globs (e.g. test*.ts)
|
|
56
|
-
let [cmd, ...argv] = args.cmd;
|
|
57
|
-
let expanded: string[] = [];
|
|
58
|
-
for (const a of argv) {
|
|
59
|
-
if (a.includes("*")) {
|
|
60
|
-
const matches = await fg(a);
|
|
61
|
-
expanded.push(...matches);
|
|
62
|
-
} else {
|
|
63
|
-
expanded.push(a);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
let child;
|
|
68
|
-
if (os.platform() === "win32" && (cmd === "npm" || cmd === "npx")) {
|
|
69
|
-
// On Windows, run the full command line with shell
|
|
70
|
-
const fullCommand = [cmd, ...expanded].join(" ");
|
|
71
|
-
child = spawn(fullCommand, { stdio: ["ignore", "pipe", "pipe"], shell: true });
|
|
72
|
-
} else {
|
|
73
|
-
// On Linux/Mac, do it the normal way
|
|
74
|
-
child = spawn(cmd, expanded, { stdio: ["ignore", "pipe", "pipe"] });
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
child.stdout.on("data", (d) => {
|
|
80
|
-
process.stdout.write(d);
|
|
81
|
-
out.write(d);
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
child.stderr.on("data", (d) => {
|
|
85
|
-
process.stderr.write(d);
|
|
86
|
-
out.write(d);
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
let timedOut = false;
|
|
90
|
-
const timer = setTimeout(() => {
|
|
91
|
-
timedOut = true;
|
|
92
|
-
out.write(
|
|
93
|
-
`\n[exec-with-timeout] TIMEOUT after ${args.timeout}s → killing process tree\n`
|
|
94
|
-
);
|
|
95
|
-
kill(child.pid!, "SIGTERM");
|
|
96
|
-
|
|
97
|
-
setTimeout(() => {
|
|
98
|
-
try {
|
|
99
|
-
kill(child.pid!, "SIGKILL");
|
|
100
|
-
} catch {}
|
|
101
|
-
}, 2000);
|
|
102
|
-
}, args.timeout * 1000);
|
|
103
|
-
|
|
104
|
-
child.on("exit", (code, signal) => {
|
|
105
|
-
clearTimeout(timer);
|
|
106
|
-
out.write(
|
|
107
|
-
`\n--- EXIT: code=${code} signal=${signal} timedOut=${timedOut} ---\n`
|
|
108
|
-
);
|
|
109
|
-
out.end();
|
|
110
|
-
|
|
111
|
-
if (timedOut) {
|
|
112
|
-
console.error(`[guard] Command timed out: ${args.cmd.join(" ")}`);
|
|
113
|
-
process.exit(124);
|
|
114
|
-
}
|
|
115
|
-
process.exit(code === null ? 1 : code);
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
main().catch((err) => {
|
|
120
|
-
console.error(err);
|
|
121
|
-
process.exit(1);
|
|
122
|
-
});
|