fraim-framework 2.0.26 → 2.0.30

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 (104) hide show
  1. package/.github/workflows/deploy-fraim.yml +1 -1
  2. package/dist/registry/scripts/build-scripts-generator.js +205 -0
  3. package/dist/registry/scripts/cleanup-branch.js +258 -0
  4. package/dist/registry/scripts/evaluate-code-quality.js +66 -0
  5. package/dist/registry/scripts/exec-with-timeout.js +142 -0
  6. package/dist/registry/scripts/fraim-config.js +61 -0
  7. package/dist/registry/scripts/generate-engagement-emails.js +630 -0
  8. package/dist/registry/scripts/generic-issues-api.js +100 -0
  9. package/dist/registry/scripts/newsletter-helpers.js +731 -0
  10. package/dist/registry/scripts/openapi-generator.js +664 -0
  11. package/dist/registry/scripts/performance/profile-server.js +390 -0
  12. package/dist/registry/scripts/run-thank-you-workflow.js +92 -0
  13. package/dist/registry/scripts/send-newsletter-simple.js +85 -0
  14. package/dist/registry/scripts/send-thank-you-emails.js +54 -0
  15. package/dist/registry/scripts/validate-openapi-limits.js +311 -0
  16. package/dist/registry/scripts/validate-test-coverage.js +262 -0
  17. package/dist/registry/scripts/verify-test-coverage.js +66 -0
  18. package/dist/src/cli/commands/init.js +14 -12
  19. package/dist/src/cli/commands/sync.js +19 -2
  20. package/dist/src/cli/fraim.js +24 -22
  21. package/dist/src/cli/setup/first-run.js +13 -6
  22. package/dist/src/fraim/config-loader.js +0 -8
  23. package/dist/src/fraim/db-service.js +26 -15
  24. package/dist/src/fraim/issues.js +67 -0
  25. package/dist/src/fraim/setup-wizard.js +1 -69
  26. package/dist/src/fraim/types.js +0 -11
  27. package/dist/src/fraim-mcp-server.js +272 -18
  28. package/dist/src/utils/git-utils.js +1 -1
  29. package/dist/src/utils/version-utils.js +32 -0
  30. package/dist/tests/debug-tools.js +79 -0
  31. package/dist/tests/esm-compat.js +11 -0
  32. package/dist/tests/test-chalk-esm-issue.js +159 -0
  33. package/dist/tests/test-chalk-real-world.js +265 -0
  34. package/dist/tests/test-chalk-regression.js +327 -0
  35. package/dist/tests/test-chalk-resolution-issue.js +304 -0
  36. package/dist/tests/test-cli.js +0 -2
  37. package/dist/tests/test-fraim-install-chalk-issue.js +254 -0
  38. package/dist/tests/test-fraim-issues.js +59 -0
  39. package/dist/tests/test-genericization.js +1 -3
  40. package/dist/tests/test-mcp-connection.js +166 -0
  41. package/dist/tests/test-mcp-issue-integration.js +144 -0
  42. package/dist/tests/test-mcp-lifecycle-methods.js +312 -0
  43. package/dist/tests/test-node-compatibility.js +71 -0
  44. package/dist/tests/test-npm-install.js +66 -0
  45. package/dist/tests/test-npm-resolution-diagnostic.js +140 -0
  46. package/dist/tests/test-session-rehydration.js +145 -0
  47. package/dist/tests/test-standalone.js +2 -8
  48. package/dist/tests/test-sync-version-update.js +93 -0
  49. package/dist/tests/test-telemetry.js +190 -0
  50. package/package.json +10 -8
  51. package/registry/agent-guardrails.md +62 -54
  52. package/registry/rules/agent-success-criteria.md +52 -0
  53. package/registry/rules/agent-testing-guidelines.md +502 -502
  54. package/registry/rules/communication.md +121 -121
  55. package/registry/rules/continuous-learning.md +54 -54
  56. package/registry/rules/ephemeral-execution.md +10 -5
  57. package/registry/rules/hitl-ppe-record-analysis.md +302 -302
  58. package/registry/rules/local-development.md +251 -251
  59. package/registry/rules/software-development-lifecycle.md +104 -104
  60. package/registry/rules/successful-debugging-patterns.md +482 -478
  61. package/registry/rules/telemetry.md +67 -0
  62. package/registry/scripts/build-scripts-generator.ts +216 -215
  63. package/registry/scripts/cleanup-branch.ts +303 -284
  64. package/registry/scripts/code-quality-check.sh +559 -559
  65. package/registry/scripts/detect-tautological-tests.sh +38 -38
  66. package/registry/scripts/evaluate-code-quality.ts +1 -1
  67. package/registry/scripts/generate-engagement-emails.ts +744 -744
  68. package/registry/scripts/generic-issues-api.ts +110 -150
  69. package/registry/scripts/newsletter-helpers.ts +874 -874
  70. package/registry/scripts/openapi-generator.ts +695 -693
  71. package/registry/scripts/performance/profile-server.ts +5 -3
  72. package/registry/scripts/prep-issue.sh +468 -455
  73. package/registry/scripts/validate-openapi-limits.ts +366 -365
  74. package/registry/scripts/validate-test-coverage.ts +280 -280
  75. package/registry/scripts/verify-pr-comments.sh +70 -70
  76. package/registry/scripts/verify-test-coverage.ts +1 -1
  77. package/registry/templates/bootstrap/ARCHITECTURE-TEMPLATE.md +53 -53
  78. package/registry/templates/evidence/Implementation-BugEvidence.md +85 -85
  79. package/registry/templates/evidence/Implementation-FeatureEvidence.md +120 -120
  80. package/registry/templates/marketing/HBR-ARTICLE-TEMPLATE.md +66 -0
  81. package/registry/workflows/bootstrap/create-architecture.md +2 -2
  82. package/registry/workflows/bootstrap/evaluate-code-quality.md +3 -3
  83. package/registry/workflows/bootstrap/verify-test-coverage.md +2 -2
  84. package/registry/workflows/customer-development/insight-analysis.md +156 -156
  85. package/registry/workflows/customer-development/interview-preparation.md +421 -421
  86. package/registry/workflows/customer-development/strategic-brainstorming.md +146 -146
  87. package/registry/workflows/customer-development/thank-customers.md +193 -191
  88. package/registry/workflows/customer-development/weekly-newsletter.md +362 -352
  89. package/registry/workflows/improve-fraim/contribute.md +32 -0
  90. package/registry/workflows/improve-fraim/file-issue.md +32 -0
  91. package/registry/workflows/marketing/hbr-article.md +73 -0
  92. package/registry/workflows/performance/analyze-performance.md +63 -59
  93. package/registry/workflows/product-building/design.md +3 -2
  94. package/registry/workflows/product-building/implement.md +4 -3
  95. package/registry/workflows/product-building/prep-issue.md +28 -17
  96. package/registry/workflows/product-building/resolve.md +3 -2
  97. package/registry/workflows/product-building/retrospect.md +3 -2
  98. package/registry/workflows/product-building/spec.md +5 -4
  99. package/registry/workflows/product-building/test.md +3 -2
  100. package/registry/workflows/quality-assurance/iterative-improvement-cycle.md +562 -562
  101. package/registry/workflows/replicate/website-discovery-analysis.md +3 -3
  102. package/registry/workflows/reviewer/review-implementation-vs-design-spec.md +632 -632
  103. package/registry/workflows/reviewer/review-implementation-vs-feature-spec.md +669 -669
  104. package/tsconfig.json +2 -1
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ /**
3
+ * FRAIM Generic Issues API
4
+ *
5
+ * Generic issue filing endpoint that works for any project.
6
+ * Can be invoked through ChatGPT OpenAPI or MCP.
7
+ *
8
+ * Usage:
9
+ * 1. Import this file
10
+ * 2. Mount the router in your Express app
11
+ * 3. Configure GitHub repository in .fraim/config.json
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.issuesRouter = void 0;
15
+ const express_1 = require("express");
16
+ const issues_js_1 = require("../../src/fraim/issues.js");
17
+ const config_loader_js_1 = require("../../src/fraim/config-loader.js");
18
+ const issuesRouter = (0, express_1.Router)();
19
+ exports.issuesRouter = issuesRouter;
20
+ /**
21
+ * POST /issues/create - Create a GitHub issue
22
+ *
23
+ * Generic endpoint that works for any FRAIM project.
24
+ * Repository owner and name are read from .fraim/config.json
25
+ */
26
+ issuesRouter.post('/create', async (req, res) => {
27
+ try {
28
+ // Load project configuration
29
+ const config = (0, config_loader_js_1.loadFraimConfig)();
30
+ const repoOwner = config.git?.repoOwner || process.env.GITHUB_OWNER || 'your-org';
31
+ const repoName = config.git?.repoName || process.env.GITHUB_REPO || 'your-repo';
32
+ // Get user context (if available - project-specific)
33
+ // Projects can customize this based on their auth system
34
+ const userId = req.userContext?.userId ||
35
+ req.executiveContext?.executiveId ||
36
+ req.headers['x-user-id'];
37
+ const userEmail = req.userContext?.email ||
38
+ req.executiveContext?.executiveEmail ||
39
+ req.headers['x-user-email'];
40
+ const userName = req.userContext?.name ||
41
+ req.executiveContext?.executiveName ||
42
+ req.headers['x-user-name'];
43
+ const { title, body, labels } = req.body;
44
+ if (!title || !body) {
45
+ return res.status(400).json({
46
+ success: false,
47
+ error: 'Missing required fields: title, body'
48
+ });
49
+ }
50
+ // Check if GitHub token is configured
51
+ if (!process.env.GITHUB_TOKEN && !process.env.GIT_TOKEN && !process.env.GITHUB_PAT) {
52
+ return res.status(500).json({
53
+ success: false,
54
+ error: 'GitHub integration not configured. Please set GITHUB_TOKEN environment variable.'
55
+ });
56
+ }
57
+ // Build issue body with user context (if available)
58
+ let issueBody = body;
59
+ if (userName || userEmail || userId) {
60
+ issueBody = `**Reported by:** ${userName || 'Unknown'}${userEmail ? ` (${userEmail})` : ''}${userId ? `\n**User ID:** ${userId}` : ''}\n\n**Issue Details:**\n${body}\n\n---\n*This issue was automatically created through the API.*`;
61
+ }
62
+ // Create the issue using shared function
63
+ const result = await (0, issues_js_1.fileFraimIssue)({
64
+ title: title,
65
+ body: issueBody,
66
+ labels: labels || ['user-reported']
67
+ });
68
+ if (!result.success) {
69
+ return res.status(500).json({
70
+ success: false,
71
+ error: result.message
72
+ });
73
+ }
74
+ return res.json({
75
+ success: true,
76
+ message: 'Issue created successfully',
77
+ issueNumber: result.issueNumber,
78
+ issueUrl: result.htmlUrl,
79
+ title: title
80
+ });
81
+ }
82
+ catch (error) {
83
+ console.error('❌ Unexpected error creating Git issue:', error);
84
+ return res.status(500).json({
85
+ success: false,
86
+ error: error.message || 'Failed to create Git issue'
87
+ });
88
+ }
89
+ });
90
+ /**
91
+ * GET /issues/list - List issues
92
+ *
93
+ * Not implemented in this generic version.
94
+ */
95
+ issuesRouter.get('/list', async (req, res) => {
96
+ return res.status(501).json({
97
+ success: false,
98
+ error: 'Listing issues is not supported in this generic API version yet.'
99
+ });
100
+ });