@rhei-team/rhei 1.0.0-beta.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 (30) hide show
  1. package/README.md +1048 -0
  2. package/bin/rhei-mcp.js +3 -0
  3. package/dist/index.d.ts +12 -0
  4. package/dist/index.js +86366 -0
  5. package/dist/premium/contracts.d.ts +445 -0
  6. package/dist/premium/contracts.js +97 -0
  7. package/dist/vendor/rhei-core/briefs.js +1276 -0
  8. package/dist/vendor/rhei-core/codeAgent.js +615 -0
  9. package/dist/vendor/rhei-core/codeEditSession.js +293 -0
  10. package/dist/vendor/rhei-core/codeIntelligence.js +4287 -0
  11. package/dist/vendor/rhei-core/codeMarket.js +8946 -0
  12. package/dist/vendor/rhei-core/codeReviewIntelligence.js +5918 -0
  13. package/dist/vendor/rhei-core/codeSemantics.js +172427 -0
  14. package/dist/vendor/rhei-core/codeStory.js +667 -0
  15. package/dist/vendor/rhei-core/codeStrategyPlan.js +663 -0
  16. package/dist/vendor/rhei-core/codeTrail.js +2781 -0
  17. package/dist/vendor/rhei-core/codeWorkHandoff.js +281 -0
  18. package/dist/vendor/rhei-core/contextQuery.js +1119 -0
  19. package/dist/vendor/rhei-core/contextRouting.js +2052 -0
  20. package/dist/vendor/rhei-core/evidenceLedger.js +5336 -0
  21. package/dist/vendor/rhei-core/executionSafety.js +0 -0
  22. package/dist/vendor/rhei-core/goalIntelligence.js +2218 -0
  23. package/dist/vendor/rhei-core/model-lanes.js +75 -0
  24. package/dist/vendor/rhei-core/now.js +127 -0
  25. package/dist/vendor/rhei-core/package.json +29 -0
  26. package/dist/vendor/rhei-core/programPlan.js +3153 -0
  27. package/dist/vendor/rhei-core/search.js +196 -0
  28. package/dist/vendor/rhei-core/serviceIntelligence.js +1734 -0
  29. package/dist/vendor/rhei-core/workflowPlan.js +1660 -0
  30. package/package.json +41 -0
@@ -0,0 +1,75 @@
1
+ // ../core/src/modelLaneContracts.ts
2
+ var MODEL_LANE_CONTRACTS = {
3
+ hosted_code_embedding: {
4
+ name: "hosted_code_embedding",
5
+ capability: "embedding",
6
+ execution: "hosted",
7
+ provider: "octen_tei",
8
+ modelId: "Octen/Octen-Embedding-0.6B",
9
+ dimensions: 1024,
10
+ storage: "Convex codeNodeOctenEmbeddings.by_repo_octen_embedding",
11
+ endpoint: "http://octen-embeddings:80/v1/embeddings",
12
+ runtimeStatus: "active",
13
+ auth: "server_secret",
14
+ notes: "Private Docker-network TEI lane for hosted code semantic embeddings."
15
+ },
16
+ hosted_knowledge_embedding: {
17
+ name: "hosted_knowledge_embedding",
18
+ capability: "embedding",
19
+ execution: "hosted",
20
+ provider: "deepinfra_qdrant",
21
+ modelId: "Qwen/Qwen3-Embedding-8B",
22
+ dimensions: 4096,
23
+ storage: "Qdrant rhei_text.text_qwen",
24
+ runtimeStatus: "active",
25
+ auth: "server_secret",
26
+ notes: "Hosted knowledge/text embedding lane."
27
+ },
28
+ hosted_image_embedding: {
29
+ name: "hosted_image_embedding",
30
+ capability: "embedding",
31
+ execution: "hosted",
32
+ provider: "deepinfra_qdrant",
33
+ modelId: "CLIP image embeddings",
34
+ dimensions: 512,
35
+ storage: "Qdrant rhei_images.image_clip",
36
+ runtimeStatus: "active",
37
+ auth: "server_secret",
38
+ notes: "Hosted image embedding lane."
39
+ },
40
+ hosted_context_rerank: {
41
+ name: "hosted_context_rerank",
42
+ capability: "rerank",
43
+ execution: "hosted",
44
+ provider: "deepinfra",
45
+ modelId: "Qwen/Qwen3-Reranker-4B",
46
+ runtimeStatus: "active",
47
+ auth: "server_secret",
48
+ notes: "Server-side context rerank policy. Local clients should not require provider keys."
49
+ },
50
+ local_code_embedding: {
51
+ name: "local_code_embedding",
52
+ capability: "embedding",
53
+ execution: "local",
54
+ provider: "mlx_qdrant",
55
+ modelId: "user-owned-mlx-embedding",
56
+ dimensions: 1024,
57
+ storage: "User-owned local Qdrant",
58
+ runtimeStatus: "optional",
59
+ auth: "user_owned",
60
+ notes: "Optional local semantic acceleration; not hosted parity and not premium ranking."
61
+ },
62
+ local_model_rerank: {
63
+ name: "local_model_rerank",
64
+ capability: "rerank",
65
+ execution: "local",
66
+ provider: "mlx_rerank_bridge",
67
+ modelId: "placeholder:no-runtime-model",
68
+ runtimeStatus: "placeholder_disabled",
69
+ auth: "user_owned",
70
+ notes: "Reserved for a future local reranker that returns pairwise relevance scores/logits. No runtime is wired."
71
+ }
72
+ };
73
+ export {
74
+ MODEL_LANE_CONTRACTS
75
+ };
@@ -0,0 +1,127 @@
1
+ // ../core/src/pulseDigestPolicy.ts
2
+ var PULSE_DIGEST_REASON_LABELS = [
3
+ "Review waiting",
4
+ "Proof blocked",
5
+ "Evidence gap",
6
+ "High blast radius",
7
+ "Stale important work",
8
+ "Ready to continue"
9
+ ];
10
+ function isPulseDigestReasonLabel(value) {
11
+ return typeof value === "string" && PULSE_DIGEST_REASON_LABELS.includes(value);
12
+ }
13
+ function pulseDigestFocusCategoryForSignals(signals) {
14
+ if (signals.reviewWaiting > 0)
15
+ return "review_waiting";
16
+ if (signals.blockedProof > 0)
17
+ return "proof_blocked";
18
+ if (signals.openEvidenceGaps > 0)
19
+ return "evidence_gap";
20
+ if (signals.blastReach > 0)
21
+ return "high_blast_radius";
22
+ if (signals.staleImportantWork > 0)
23
+ return "stale_important_work";
24
+ return "ready_to_continue";
25
+ }
26
+ function pulseDigestReasonLabelForCategory(category) {
27
+ switch (category) {
28
+ case "review_waiting":
29
+ return "Review waiting";
30
+ case "proof_blocked":
31
+ return "Proof blocked";
32
+ case "evidence_gap":
33
+ return "Evidence gap";
34
+ case "high_blast_radius":
35
+ return "High blast radius";
36
+ case "stale_important_work":
37
+ return "Stale important work";
38
+ case "ready_to_continue":
39
+ default:
40
+ return "Ready to continue";
41
+ }
42
+ }
43
+ function pulseDigestCategoryForReasonLabel(label) {
44
+ switch (label) {
45
+ case "Review waiting":
46
+ return "review_waiting";
47
+ case "Proof blocked":
48
+ return "proof_blocked";
49
+ case "Evidence gap":
50
+ return "evidence_gap";
51
+ case "High blast radius":
52
+ return "high_blast_radius";
53
+ case "Stale important work":
54
+ return "stale_important_work";
55
+ case "Ready to continue":
56
+ return "ready_to_continue";
57
+ }
58
+ }
59
+ function pulseDigestSignalLayersForSignals(signals) {
60
+ const layers = ["pulse"];
61
+ if (signals.contextLensSignal > 0)
62
+ layers.push("context_lens");
63
+ if (signals.connectedWorkSignal > 0)
64
+ layers.push("connected_work");
65
+ if (signals.userPinnedOrRecentlyActive > 0 || signals.staleImportantWork > 0 || pulseDigestFocusCategoryForSignals(signals) === "ready_to_continue") {
66
+ layers.push("focus_meter");
67
+ }
68
+ return [...new Set(layers)];
69
+ }
70
+ function pulseDigestFocusMeterForSignals(signals, options = {}) {
71
+ const nextScore = typeof options.nextScore === "number" ? options.nextScore : scorePulseDigestNext(signals, options);
72
+ const category = pulseDigestFocusCategoryForSignals(signals);
73
+ const hasPositiveFocusSignal = signals.reviewWaiting > 0 || signals.blockedProof > 0 || signals.openEvidenceGaps > 0 || signals.staleImportantWork > 0 || signals.blastReach > 0 || signals.userPinnedOrRecentlyActive > 0 || signals.contextLensSignal > 0 || signals.connectedWorkSignal > 0;
74
+ const state = !hasPositiveFocusSignal && (signals.repeatedDigestIgnorePenalty > 0 || signals.completedRecentlyPenalty > 0) ? "deprioritized" : category;
75
+ const frictionScore = clampPulseMeterScore(signals.blockedProof * 72 + signals.openEvidenceGaps * 58 + signals.reviewWaiting * 24 + signals.blastReach * 20 + signals.staleImportantWork * 28 + signals.repeatedDigestIgnorePenalty * 24 + signals.completedRecentlyPenalty * 42);
76
+ const readinessScore = clampPulseMeterScore(64 + signals.userPinnedOrRecentlyActive * 18 + signals.contextLensSignal * 6 + signals.connectedWorkSignal * 6 - signals.blockedProof * 70 - signals.openEvidenceGaps * 54 - signals.reviewWaiting * 22 - signals.blastReach * 18 - signals.staleImportantWork * 24 - signals.repeatedDigestIgnorePenalty * 24 - signals.completedRecentlyPenalty * 42);
77
+ return {
78
+ state,
79
+ focusScore: clampPulseMeterScore(nextScore / 2),
80
+ readinessScore,
81
+ frictionScore
82
+ };
83
+ }
84
+ function scorePulseDigestNext(signals, options = {}) {
85
+ const sectionBonus = pulseDigestSectionBonus(options.section);
86
+ const evidenceBonus = Math.min(18, Math.max(0, Math.round(options.evidenceCount ?? 0)) * 4);
87
+ return Math.max(0, Math.round(signals.reviewWaiting * 90 + signals.blockedProof * 104 + signals.openEvidenceGaps * 78 + signals.blastReach * 62 + signals.staleImportantWork * 54 + signals.userPinnedOrRecentlyActive * 20 + signals.contextLensSignal * 8 + signals.connectedWorkSignal * 8 + sectionBonus + evidenceBonus - signals.repeatedDigestIgnorePenalty * 24 - signals.completedRecentlyPenalty * 42));
88
+ }
89
+ function pulseDigestSectionBonus(section) {
90
+ switch (section) {
91
+ case "for_review":
92
+ return 22;
93
+ case "waiting_on_you":
94
+ return 18;
95
+ case "changed":
96
+ return 10;
97
+ case "in_motion":
98
+ return 8;
99
+ case "resume":
100
+ return 16;
101
+ default:
102
+ return 0;
103
+ }
104
+ }
105
+ function clampPulseMeterScore(value) {
106
+ return Math.max(0, Math.min(100, Math.round(value)));
107
+ }
108
+ // ../core/src/types/nowOverview.ts
109
+ var RHEI_NOW_OVERVIEW_SCHEMA_VERSION = 1;
110
+ function isRheiNowOverviewV1(value) {
111
+ if (!value || typeof value !== "object")
112
+ return false;
113
+ const record = value;
114
+ return record.kind === "RheiNowOverviewV1" && record.schemaVersion === RHEI_NOW_OVERVIEW_SCHEMA_VERSION && record.advisoryOnly === true && record.noAuthority === true && typeof record.generatedAt === "number" && Boolean(record.goal) && Boolean(record.focus) && Boolean(record.work) && Boolean(record.review) && Boolean(record.trust) && Boolean(record.pulse);
115
+ }
116
+ export {
117
+ scorePulseDigestNext,
118
+ pulseDigestSignalLayersForSignals,
119
+ pulseDigestReasonLabelForCategory,
120
+ pulseDigestFocusMeterForSignals,
121
+ pulseDigestFocusCategoryForSignals,
122
+ pulseDigestCategoryForReasonLabel,
123
+ isRheiNowOverviewV1,
124
+ isPulseDigestReasonLabel,
125
+ RHEI_NOW_OVERVIEW_SCHEMA_VERSION,
126
+ PULSE_DIGEST_REASON_LABELS
127
+ };
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@rhei/core",
3
+ "version": "0.0.1-beta.0",
4
+ "type": "module",
5
+ "exports": {
6
+ "./briefs": "./briefs.js",
7
+ "./codeAgent": "./codeAgent.js",
8
+ "./codeEditSession": "./codeEditSession.js",
9
+ "./codeIntelligence": "./codeIntelligence.js",
10
+ "./codeMarket": "./codeMarket.js",
11
+ "./codeReviewIntelligence": "./codeReviewIntelligence.js",
12
+ "./codeSemantics": "./codeSemantics.js",
13
+ "./codeStrategyPlan": "./codeStrategyPlan.js",
14
+ "./codeStory": "./codeStory.js",
15
+ "./codeTrail": "./codeTrail.js",
16
+ "./codeWorkHandoff": "./codeWorkHandoff.js",
17
+ "./contextRouting": "./contextRouting.js",
18
+ "./contextQuery": "./contextQuery.js",
19
+ "./evidenceLedger": "./evidenceLedger.js",
20
+ "./executionSafety": "./executionSafety.js",
21
+ "./goalIntelligence": "./goalIntelligence.js",
22
+ "./model-lanes": "./model-lanes.js",
23
+ "./now": "./now.js",
24
+ "./programPlan": "./programPlan.js",
25
+ "./search": "./search.js",
26
+ "./serviceIntelligence": "./serviceIntelligence.js",
27
+ "./workflowPlan": "./workflowPlan.js"
28
+ }
29
+ }