thumbgate 1.2.0 → 1.3.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.
Files changed (54) hide show
  1. package/.claude-plugin/README.md +4 -4
  2. package/.claude-plugin/marketplace.json +1 -1
  3. package/.claude-plugin/plugin.json +1 -1
  4. package/.well-known/mcp/server-card.json +1 -1
  5. package/README.md +35 -14
  6. package/adapters/README.md +1 -1
  7. package/adapters/claude/.mcp.json +2 -2
  8. package/adapters/codex/config.toml +2 -2
  9. package/adapters/mcp/server-stdio.js +2 -2
  10. package/adapters/opencode/opencode.json +1 -1
  11. package/bin/cli.js +20 -11
  12. package/config/github-about.json +1 -1
  13. package/config/model-tiers.json +11 -0
  14. package/package.json +8 -6
  15. package/plugins/claude-codex-bridge/.claude-plugin/plugin.json +1 -1
  16. package/plugins/claude-codex-bridge/.mcp.json +1 -1
  17. package/plugins/codex-profile/.codex-plugin/plugin.json +1 -1
  18. package/plugins/codex-profile/.mcp.json +1 -1
  19. package/plugins/codex-profile/INSTALL.md +1 -1
  20. package/plugins/codex-profile/README.md +1 -1
  21. package/plugins/cursor-marketplace/.cursor-plugin/plugin.json +1 -1
  22. package/plugins/cursor-marketplace/README.md +2 -2
  23. package/plugins/cursor-marketplace/commands/capture-feedback.md +2 -2
  24. package/plugins/cursor-marketplace/rules/feedback-capture.mdc +3 -3
  25. package/plugins/cursor-marketplace/skills/capture-feedback/SKILL.md +3 -2
  26. package/plugins/opencode-profile/INSTALL.md +1 -1
  27. package/public/compare.html +4 -4
  28. package/public/guide.html +4 -4
  29. package/public/index.html +51 -38
  30. package/public/learn/ai-agent-persistent-memory.html +1 -0
  31. package/public/lessons.html +325 -17
  32. package/scripts/__pycache__/train_from_feedback.cpython-312.pyc +0 -0
  33. package/scripts/audit-trail.js +6 -0
  34. package/scripts/capture-railway-diagnostics.sh +97 -0
  35. package/scripts/check-congruence.js +1 -1
  36. package/scripts/claude-feedback-sync.js +320 -0
  37. package/scripts/cli-telemetry.js +4 -1
  38. package/scripts/contextfs.js +32 -23
  39. package/scripts/dashboard.js +84 -0
  40. package/scripts/feedback-loop.js +16 -0
  41. package/scripts/intervention-policy.js +696 -0
  42. package/scripts/local-model-profile.js +18 -2
  43. package/scripts/model-tier-router.js +10 -1
  44. package/scripts/operational-integrity.js +354 -31
  45. package/scripts/prove-adapters.js +1 -0
  46. package/scripts/prove-automation.js +2 -2
  47. package/scripts/prove-packaged-runtime.js +260 -0
  48. package/scripts/prove-runtime.js +13 -0
  49. package/scripts/rate-limiter.js +3 -3
  50. package/scripts/statusline-local-stats.js +2 -0
  51. package/scripts/statusline.sh +166 -11
  52. package/scripts/tool-registry.js +2 -2
  53. package/scripts/workflow-sentinel.js +114 -4
  54. package/skills/thumbgate/SKILL.md +1 -1
@@ -377,6 +377,10 @@ function appendDiagnosticRecord(params = {}) {
377
377
  timestamp: params.timestamp || new Date().toISOString(),
378
378
  };
379
379
  appendJSONL(DIAGNOSTIC_LOG_PATH, record);
380
+ try {
381
+ const { trainAndPersistInterventionPolicy } = require('./intervention-policy');
382
+ trainAndPersistInterventionPolicy(getFeedbackPaths().FEEDBACK_DIR);
383
+ } catch { /* non-critical */ }
380
384
  return record;
381
385
  }
382
386
 
@@ -1090,6 +1094,10 @@ function captureFeedback(params) {
1090
1094
  const riskScorer = getRiskScorerModule();
1091
1095
  if (riskScorer) riskScorer.trainAndPersistRiskModel(FEEDBACK_DIR);
1092
1096
  } catch { /* non-critical */ }
1097
+ try {
1098
+ const { trainAndPersistInterventionPolicy } = require('./intervention-policy');
1099
+ trainAndPersistInterventionPolicy(FEEDBACK_DIR);
1100
+ } catch { /* non-critical */ }
1093
1101
  updateStatuslineWithLesson({
1094
1102
  accepted: false,
1095
1103
  signal,
@@ -1127,6 +1135,10 @@ function captureFeedback(params) {
1127
1135
  const riskScorer = getRiskScorerModule();
1128
1136
  if (riskScorer) riskScorer.trainAndPersistRiskModel(FEEDBACK_DIR);
1129
1137
  } catch { /* non-critical */ }
1138
+ try {
1139
+ const { trainAndPersistInterventionPolicy } = require('./intervention-policy');
1140
+ trainAndPersistInterventionPolicy(FEEDBACK_DIR);
1141
+ } catch { /* non-critical */ }
1130
1142
  return {
1131
1143
  accepted: false,
1132
1144
  signalLogged: true,
@@ -1285,6 +1297,10 @@ function captureFeedback(params) {
1285
1297
  const riskScorer = getRiskScorerModule();
1286
1298
  if (riskScorer) riskScorer.trainAndPersistRiskModel(FEEDBACK_DIR);
1287
1299
  } catch { /* non-critical */ }
1300
+ try {
1301
+ const { trainAndPersistInterventionPolicy } = require('./intervention-policy');
1302
+ trainAndPersistInterventionPolicy(FEEDBACK_DIR);
1303
+ } catch { /* non-critical */ }
1288
1304
  try {
1289
1305
  const toolName = feedbackEvent.toolName || feedbackEvent.tool_name || 'unknown';
1290
1306
  const toolInput = feedbackEvent.context || feedbackEvent.input || '';