fraim-framework 2.0.30 → 2.0.34
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.js +3 -18
- package/dist/src/cli/commands/init.js +29 -2
- package/dist/src/cli/commands/sync.js +82 -70
- package/dist/src/utils/script-sync-utils.js +216 -0
- package/dist/tests/debug-tools.js +6 -5
- package/dist/tests/test-chalk-regression.js +58 -8
- package/dist/tests/test-cli.js +70 -5
- package/dist/tests/test-end-to-end-hybrid-validation.js +328 -0
- package/dist/tests/test-first-run-journey.js +43 -3
- package/dist/tests/test-hybrid-script-execution.js +340 -0
- package/dist/tests/test-mcp-connection.js +2 -2
- package/dist/tests/test-mcp-issue-integration.js +12 -4
- package/dist/tests/test-mcp-lifecycle-methods.js +4 -4
- package/dist/tests/test-node-compatibility.js +24 -2
- package/dist/tests/test-prep-issue.js +4 -1
- package/dist/tests/test-script-location-independence.js +173 -0
- package/dist/tests/test-script-sync.js +557 -0
- package/dist/tests/test-session-rehydration.js +2 -2
- package/dist/tests/test-standalone.js +3 -3
- package/dist/tests/test-sync-version-update.js +1 -1
- package/dist/tests/test-telemetry.js +2 -2
- package/dist/tests/test-user-journey.js +8 -4
- package/dist/tests/test-utils.js +13 -0
- package/dist/tests/test-wizard.js +2 -2
- package/package.json +3 -3
- package/registry/rules/agent-testing-guidelines.md +502 -502
- package/registry/rules/ephemeral-execution.md +37 -27
- package/registry/rules/local-development.md +253 -251
- package/registry/rules/successful-debugging-patterns.md +491 -482
- package/registry/scripts/prep-issue.sh +468 -468
- package/registry/workflows/bootstrap/evaluate-code-quality.md +8 -2
- package/registry/workflows/bootstrap/verify-test-coverage.md +8 -2
- package/registry/workflows/customer-development/thank-customers.md +203 -193
- package/registry/workflows/customer-development/weekly-newsletter.md +366 -362
- package/registry/workflows/performance/analyze-performance.md +65 -63
- package/registry/workflows/product-building/implement.md +6 -2
- package/registry/workflows/product-building/prep-issue.md +11 -24
- package/registry/workflows/product-building/resolve.md +5 -1
- package/registry/workflows/replicate/replicate-discovery.md +336 -0
- package/registry/workflows/replicate/replicate-to-issues.md +319 -0
- package/registry/workflows/reviewer/review-implementation-vs-design-spec.md +632 -632
- package/.windsurf/rules/windsurf-rules.md +0 -7
- package/.windsurf/workflows/resolve-issue.md +0 -6
- package/.windsurf/workflows/retrospect.md +0 -6
- package/.windsurf/workflows/start-design.md +0 -6
- package/.windsurf/workflows/start-impl.md +0 -6
- package/.windsurf/workflows/start-spec.md +0 -6
- package/.windsurf/workflows/start-tests.md +0 -6
- package/registry/scripts/build-scripts-generator.ts +0 -216
- package/registry/scripts/cleanup-branch.ts +0 -303
- package/registry/scripts/fraim-config.ts +0 -63
- package/registry/scripts/generate-engagement-emails.ts +0 -744
- package/registry/scripts/generic-issues-api.ts +0 -110
- package/registry/scripts/newsletter-helpers.ts +0 -874
- package/registry/scripts/openapi-generator.ts +0 -695
- package/registry/scripts/performance/profile-server.ts +0 -370
- package/registry/scripts/run-thank-you-workflow.ts +0 -122
- package/registry/scripts/send-newsletter-simple.ts +0 -104
- package/registry/scripts/send-thank-you-emails.ts +0 -57
- package/registry/workflows/replicate/re-implementation-strategy.md +0 -226
- package/registry/workflows/replicate/use-case-extraction.md +0 -135
- package/registry/workflows/replicate/visual-analysis.md +0 -154
- package/registry/workflows/replicate/website-discovery-analysis.md +0 -231
- package/sample_package.json +0 -18
- /package/registry/scripts/{replicate/comprehensive-explorer.py → comprehensive-explorer.py} +0 -0
- /package/registry/scripts/{replicate/interactive-explorer.py → interactive-explorer.py} +0 -0
- /package/registry/scripts/{replicate/scrape-site.py → scrape-site.py} +0 -0
package/dist/tests/test-utils.js
CHANGED
|
@@ -3,12 +3,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.resolveProjectPath = resolveProjectPath;
|
|
6
7
|
exports.runTests = runTests;
|
|
7
8
|
const dotenv_1 = __importDefault(require("dotenv"));
|
|
8
9
|
dotenv_1.default.config({ override: true });
|
|
9
10
|
const node_test_1 = require("node:test");
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
10
12
|
// Global tracker for failed tests across all suites
|
|
11
13
|
const globalFailedTests = [];
|
|
14
|
+
/**
|
|
15
|
+
* Helper to resolve paths correctly whether running from tests/ or dist/tests/
|
|
16
|
+
* @param relativePath - Path relative to project root (e.g., 'dist/src/cli/fraim.js')
|
|
17
|
+
* @returns Absolute path to the file
|
|
18
|
+
*/
|
|
19
|
+
function resolveProjectPath(relativePath) {
|
|
20
|
+
// Detect if running from dist/tests or tests
|
|
21
|
+
const isCompiledTest = __dirname.includes(path_1.default.join('dist', 'tests'));
|
|
22
|
+
const projectRoot = isCompiledTest ? path_1.default.resolve(__dirname, '../..') : path_1.default.resolve(__dirname, '..');
|
|
23
|
+
return path_1.default.resolve(projectRoot, relativePath);
|
|
24
|
+
}
|
|
12
25
|
// Generic test runner function that can run any type of test
|
|
13
26
|
async function runTests(testCases, runTestFn, testTitle) {
|
|
14
27
|
console.log(`🧪 Testing ${testTitle}...\n`);
|
|
@@ -14,8 +14,8 @@ async function testWizardLaunch() {
|
|
|
14
14
|
// Since it's interactive, we expect it to output the banner and then maybe hang or exit if we don't provide input.
|
|
15
15
|
// However, our mocked wizard (setup.js import) might just run setup non-interactively if we didn't implement real prompts yet.
|
|
16
16
|
// The current implementation just calls `runSetup()` from setup.js.
|
|
17
|
-
const cliScript =
|
|
18
|
-
const tsxCli =
|
|
17
|
+
const cliScript = (0, test_utils_1.resolveProjectPath)('dist/src/cli/fraim.js');
|
|
18
|
+
const tsxCli = (0, test_utils_1.resolveProjectPath)('node_modules/tsx/dist/cli.mjs');
|
|
19
19
|
// Use a temp dir!
|
|
20
20
|
const tempDir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'fraim-wizard-test-'));
|
|
21
21
|
return new Promise(resolve => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fraim-framework",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.34",
|
|
4
4
|
"description": "FRAIM v2: Framework for Rigor-based AI Management - Transform from solo developer to AI manager orchestrating production-ready code with enterprise-grade discipline",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"setup": "node setup.js",
|
|
12
12
|
"dev": "tsx --watch src/fraim-mcp-server.ts",
|
|
13
13
|
"build": "tsc && npm run validate:registry",
|
|
14
|
-
"test": "tsx --test > test.log 2>&1",
|
|
14
|
+
"test": "tsx --test tests/**/*.ts > test.log 2>&1",
|
|
15
15
|
"start:fraim": "tsx src/fraim-mcp-server.ts",
|
|
16
16
|
"dev:fraim": "tsx --watch src/fraim-mcp-server.ts",
|
|
17
17
|
"watch:fraimlogs": "tsx scripts/watch-fraim-logs.ts",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"fraim:init": "npm run build && node bin/fraim.js init",
|
|
20
20
|
"fraim:sync": "node bin/fraim.js sync",
|
|
21
21
|
"postinstall": "fraim sync || echo 'FRAIM setup skipped.'",
|
|
22
|
-
"prepublishOnly": "npm run build
|
|
22
|
+
"prepublishOnly": "npm run build",
|
|
23
23
|
"release": "npm version patch && npm publish",
|
|
24
24
|
"test-smoke-ci": "tsx --test tests/test-genericization.ts tests/test-cli.ts",
|
|
25
25
|
"test-all-ci": "tsx --test tests/test-*.ts",
|