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.
Files changed (67) hide show
  1. package/bin/fraim.js +3 -18
  2. package/dist/src/cli/commands/init.js +29 -2
  3. package/dist/src/cli/commands/sync.js +82 -70
  4. package/dist/src/utils/script-sync-utils.js +216 -0
  5. package/dist/tests/debug-tools.js +6 -5
  6. package/dist/tests/test-chalk-regression.js +58 -8
  7. package/dist/tests/test-cli.js +70 -5
  8. package/dist/tests/test-end-to-end-hybrid-validation.js +328 -0
  9. package/dist/tests/test-first-run-journey.js +43 -3
  10. package/dist/tests/test-hybrid-script-execution.js +340 -0
  11. package/dist/tests/test-mcp-connection.js +2 -2
  12. package/dist/tests/test-mcp-issue-integration.js +12 -4
  13. package/dist/tests/test-mcp-lifecycle-methods.js +4 -4
  14. package/dist/tests/test-node-compatibility.js +24 -2
  15. package/dist/tests/test-prep-issue.js +4 -1
  16. package/dist/tests/test-script-location-independence.js +173 -0
  17. package/dist/tests/test-script-sync.js +557 -0
  18. package/dist/tests/test-session-rehydration.js +2 -2
  19. package/dist/tests/test-standalone.js +3 -3
  20. package/dist/tests/test-sync-version-update.js +1 -1
  21. package/dist/tests/test-telemetry.js +2 -2
  22. package/dist/tests/test-user-journey.js +8 -4
  23. package/dist/tests/test-utils.js +13 -0
  24. package/dist/tests/test-wizard.js +2 -2
  25. package/package.json +3 -3
  26. package/registry/rules/agent-testing-guidelines.md +502 -502
  27. package/registry/rules/ephemeral-execution.md +37 -27
  28. package/registry/rules/local-development.md +253 -251
  29. package/registry/rules/successful-debugging-patterns.md +491 -482
  30. package/registry/scripts/prep-issue.sh +468 -468
  31. package/registry/workflows/bootstrap/evaluate-code-quality.md +8 -2
  32. package/registry/workflows/bootstrap/verify-test-coverage.md +8 -2
  33. package/registry/workflows/customer-development/thank-customers.md +203 -193
  34. package/registry/workflows/customer-development/weekly-newsletter.md +366 -362
  35. package/registry/workflows/performance/analyze-performance.md +65 -63
  36. package/registry/workflows/product-building/implement.md +6 -2
  37. package/registry/workflows/product-building/prep-issue.md +11 -24
  38. package/registry/workflows/product-building/resolve.md +5 -1
  39. package/registry/workflows/replicate/replicate-discovery.md +336 -0
  40. package/registry/workflows/replicate/replicate-to-issues.md +319 -0
  41. package/registry/workflows/reviewer/review-implementation-vs-design-spec.md +632 -632
  42. package/.windsurf/rules/windsurf-rules.md +0 -7
  43. package/.windsurf/workflows/resolve-issue.md +0 -6
  44. package/.windsurf/workflows/retrospect.md +0 -6
  45. package/.windsurf/workflows/start-design.md +0 -6
  46. package/.windsurf/workflows/start-impl.md +0 -6
  47. package/.windsurf/workflows/start-spec.md +0 -6
  48. package/.windsurf/workflows/start-tests.md +0 -6
  49. package/registry/scripts/build-scripts-generator.ts +0 -216
  50. package/registry/scripts/cleanup-branch.ts +0 -303
  51. package/registry/scripts/fraim-config.ts +0 -63
  52. package/registry/scripts/generate-engagement-emails.ts +0 -744
  53. package/registry/scripts/generic-issues-api.ts +0 -110
  54. package/registry/scripts/newsletter-helpers.ts +0 -874
  55. package/registry/scripts/openapi-generator.ts +0 -695
  56. package/registry/scripts/performance/profile-server.ts +0 -370
  57. package/registry/scripts/run-thank-you-workflow.ts +0 -122
  58. package/registry/scripts/send-newsletter-simple.ts +0 -104
  59. package/registry/scripts/send-thank-you-emails.ts +0 -57
  60. package/registry/workflows/replicate/re-implementation-strategy.md +0 -226
  61. package/registry/workflows/replicate/use-case-extraction.md +0 -135
  62. package/registry/workflows/replicate/visual-analysis.md +0 -154
  63. package/registry/workflows/replicate/website-discovery-analysis.md +0 -231
  64. package/sample_package.json +0 -18
  65. /package/registry/scripts/{replicate/comprehensive-explorer.py → comprehensive-explorer.py} +0 -0
  66. /package/registry/scripts/{replicate/interactive-explorer.py → interactive-explorer.py} +0 -0
  67. /package/registry/scripts/{replicate/scrape-site.py → scrape-site.py} +0 -0
@@ -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 = path_1.default.resolve(__dirname, '../src/cli/fraim.ts');
18
- const tsxCli = path_1.default.resolve(__dirname, '../node_modules/tsx/dist/cli.mjs');
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.30",
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 && npm test",
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",