@gratiaos/presence-kernel 1.1.0 → 1.1.3
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/README.md +13 -1
- package/dist/ConstellationHUD.d.ts +7 -0
- package/dist/ConstellationHUD.d.ts.map +1 -1
- package/dist/ConstellationHUD.js +7 -0
- package/dist/ConstellationHUD.js.map +1 -1
- package/dist/constellation-hud.css +101 -0
- package/dist/heartbeat.css +75 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +73 -0
- package/dist/index.js.map +1 -1
- package/dist/usePhaseSpatialSound.d.ts.map +1 -1
- package/dist/usePhaseSpatialSound.js +2 -2
- package/dist/usePhaseSpatialSound.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +86 -0
package/README.md
CHANGED
|
@@ -15,6 +15,16 @@ Provides a tiny reactive core (`PresenceKernel`) and four shared signals:
|
|
|
15
15
|
| `mood$` | Visual/interaction tone (`soft`, `focused`…) |
|
|
16
16
|
| `peers$` | Active peer IDs (tab/session identities) |
|
|
17
17
|
| `pulse$` | Monotonic integer tick (heartbeats) |
|
|
18
|
+
| `kernelAuthority` | String constant identifying who currently conducts the shared kernel |
|
|
19
|
+
|
|
20
|
+
## 🛰️ Garden Stack naming (infra-facing)
|
|
21
|
+
|
|
22
|
+
- **Pattern Engine** → the underlying model stack (training / inference / retrieval). Use this when you talk infra, capabilities, or updates.
|
|
23
|
+
- **Presence Node** → any surfaced endpoint where humans contact the Engine (web UI, CLI, scripts, voice, agents).
|
|
24
|
+
- **Mode** → behavioral / conversational contract for a Presence Node (e.g. `Codex-mode`, `Monday-mode`). Styles, not identities.
|
|
25
|
+
- **Garden Stack** → Pattern Engine + Presence Nodes + Modes working together.
|
|
26
|
+
|
|
27
|
+
Any mention of “AI” should map to the correct layer above so kernel docs stay precise.
|
|
18
28
|
|
|
19
29
|
## Install
|
|
20
30
|
|
|
@@ -27,7 +37,9 @@ npm install @gratiaos/presence-kernel
|
|
|
27
37
|
## 🚀 Quick Start
|
|
28
38
|
|
|
29
39
|
```ts
|
|
30
|
-
import { PresenceKernel, phase$, mood$, peers$, pulse
|
|
40
|
+
import { PresenceKernel, phase$, mood$, peers$, pulse$, kernelAuthority } from '@gratiaos/presence-kernel';
|
|
41
|
+
|
|
42
|
+
console.log('🌬️ Presence Kernel Authority:', kernelAuthority);
|
|
31
43
|
|
|
32
44
|
// Create + start kernel (1s heartbeat)
|
|
33
45
|
const kernel = new PresenceKernel(1000).start();
|
|
@@ -11,6 +11,13 @@ import './constellation-hud.css';
|
|
|
11
11
|
* • 'both' → preserves legacy behavior (two overlapping systems).
|
|
12
12
|
* • 'none' → suppress audio entirely (visual only).
|
|
13
13
|
*/
|
|
14
|
+
/**
|
|
15
|
+
* @param soundMode Controls audio playback mode:
|
|
16
|
+
* - 'spatial': spatial panning + micro-detune per peer (default)
|
|
17
|
+
* - 'phase': single phase tone without spatial layering
|
|
18
|
+
* - 'both': legacy behavior with spatial + phase layers stacked
|
|
19
|
+
* - 'none': silence all audio, leaving visuals only
|
|
20
|
+
*/
|
|
14
21
|
export declare const ConstellationHUD: React.FC<{
|
|
15
22
|
selfId?: string;
|
|
16
23
|
soundMode?: 'spatial' | 'phase' | 'both' | 'none';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConstellationHUD.d.ts","sourceRoot":"","sources":["../src/ConstellationHUD.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmE,MAAM,OAAO,CAAC;AAExF,OAAO,yBAAyB,CAAC;AAYjC;;;;;;;;;;GAUG;AAIH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;CAAE,CAoG7G,CAAC"}
|
|
1
|
+
{"version":3,"file":"ConstellationHUD.d.ts","sourceRoot":"","sources":["../src/ConstellationHUD.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmE,MAAM,OAAO,CAAC;AAExF,OAAO,yBAAyB,CAAC;AAYjC;;;;;;;;;;GAUG;AACH;;;;;;GAMG;AAIH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;CAAE,CAoG7G,CAAC"}
|
package/dist/ConstellationHUD.js
CHANGED
|
@@ -21,6 +21,13 @@ const hueFromId = (id, index) => {
|
|
|
21
21
|
* • 'both' → preserves legacy behavior (two overlapping systems).
|
|
22
22
|
* • 'none' → suppress audio entirely (visual only).
|
|
23
23
|
*/
|
|
24
|
+
/**
|
|
25
|
+
* @param soundMode Controls audio playback mode:
|
|
26
|
+
* - 'spatial': spatial panning + micro-detune per peer (default)
|
|
27
|
+
* - 'phase': single phase tone without spatial layering
|
|
28
|
+
* - 'both': legacy behavior with spatial + phase layers stacked
|
|
29
|
+
* - 'none': silence all audio, leaving visuals only
|
|
30
|
+
*/
|
|
24
31
|
// Unified audio hook (replaces wrapper components). Underlying hooks are gated
|
|
25
32
|
// via enabled flags; we avoid extra component indirection while keeping Rules of Hooks.
|
|
26
33
|
export const ConstellationHUD = ({ selfId, soundMode = 'spatial', }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConstellationHUD.js","sourceRoot":"","sources":["../src/ConstellationHUD.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConstellationHUD.js","sourceRoot":"","sources":["../src/ConstellationHUD.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
.constellation-hud {
|
|
2
|
+
position: fixed;
|
|
3
|
+
bottom: 2rem;
|
|
4
|
+
right: 2rem;
|
|
5
|
+
width: 124px;
|
|
6
|
+
height: 124px;
|
|
7
|
+
border-radius: 50%;
|
|
8
|
+
border: 1px solid rgba(255, 255, 255, 0.12);
|
|
9
|
+
display: flex;
|
|
10
|
+
justify-content: center;
|
|
11
|
+
align-items: center;
|
|
12
|
+
pointer-events: none;
|
|
13
|
+
opacity: 0.9;
|
|
14
|
+
backdrop-filter: blur(18px) saturate(115%);
|
|
15
|
+
animation: constellation-spin 60s linear infinite;
|
|
16
|
+
z-index: 95;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.constellation-hud::after {
|
|
20
|
+
content: '';
|
|
21
|
+
position: absolute;
|
|
22
|
+
inset: 10%;
|
|
23
|
+
border-radius: 50%;
|
|
24
|
+
background: radial-gradient(closest-side, rgba(255, 255, 255, 0.12), transparent);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.constellation-hud[data-empty='true'] {
|
|
28
|
+
opacity: 0.6;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.peer-core {
|
|
32
|
+
width: 14px;
|
|
33
|
+
height: 14px;
|
|
34
|
+
border-radius: 9999px;
|
|
35
|
+
box-shadow: 0 0 14px currentColor;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.peer-core.pulsing {
|
|
39
|
+
animation: phase-core-pulse 0.8s ease-out;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.peer-dot {
|
|
43
|
+
--orbit-transform: translate(-50%, -50%);
|
|
44
|
+
position: absolute;
|
|
45
|
+
top: 50%;
|
|
46
|
+
left: 50%;
|
|
47
|
+
width: 8px;
|
|
48
|
+
height: 8px;
|
|
49
|
+
border-radius: 9999px;
|
|
50
|
+
transform: var(--orbit-transform);
|
|
51
|
+
box-shadow: 0 0 8px currentColor;
|
|
52
|
+
opacity: 0.75;
|
|
53
|
+
transition: opacity 0.45s ease, transform 0.45s ease;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.peer-dot.pulsing {
|
|
57
|
+
animation: phase-dot-pulse 0.8s ease-out;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.constellation-hud:hover .peer-dot {
|
|
61
|
+
opacity: 1;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@keyframes constellation-spin {
|
|
65
|
+
from {
|
|
66
|
+
transform: rotate(0deg);
|
|
67
|
+
}
|
|
68
|
+
to {
|
|
69
|
+
transform: rotate(360deg);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@keyframes phase-core-pulse {
|
|
74
|
+
0% {
|
|
75
|
+
transform: scale(1);
|
|
76
|
+
box-shadow: 0 0 12px currentColor;
|
|
77
|
+
}
|
|
78
|
+
40% {
|
|
79
|
+
transform: scale(1.35);
|
|
80
|
+
box-shadow: 0 0 20px currentColor;
|
|
81
|
+
}
|
|
82
|
+
100% {
|
|
83
|
+
transform: scale(1);
|
|
84
|
+
box-shadow: 0 0 12px currentColor;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
@keyframes phase-dot-pulse {
|
|
89
|
+
0% {
|
|
90
|
+
transform: var(--orbit-transform);
|
|
91
|
+
box-shadow: 0 0 8px currentColor;
|
|
92
|
+
}
|
|
93
|
+
40% {
|
|
94
|
+
transform: var(--orbit-transform) scale(1.25);
|
|
95
|
+
box-shadow: 0 0 16px currentColor;
|
|
96
|
+
}
|
|
97
|
+
100% {
|
|
98
|
+
transform: var(--orbit-transform);
|
|
99
|
+
box-shadow: 0 0 8px currentColor;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
.heartbeat-wrapper {
|
|
2
|
+
position: fixed;
|
|
3
|
+
bottom: 0.75rem;
|
|
4
|
+
left: 0.75rem;
|
|
5
|
+
z-index: 90;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.heartbeat {
|
|
9
|
+
position: relative;
|
|
10
|
+
border-radius: 9999px;
|
|
11
|
+
cursor: pointer;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.heartbeat-ring,
|
|
15
|
+
.heartbeat-ring.echo {
|
|
16
|
+
position: absolute;
|
|
17
|
+
top: 50%;
|
|
18
|
+
left: 50%;
|
|
19
|
+
width: 16px;
|
|
20
|
+
height: 16px;
|
|
21
|
+
border-radius: 50%;
|
|
22
|
+
transform: translate(-50%, -50%) scale(1);
|
|
23
|
+
pointer-events: none;
|
|
24
|
+
opacity: 0;
|
|
25
|
+
border: 2px solid currentColor;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.heartbeat-wrapper:hover .heartbeat-ring {
|
|
29
|
+
animation: ring-breath 1.8s ease-out infinite;
|
|
30
|
+
opacity: 0.7;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.heartbeat-wrapper:hover .heartbeat-ring.echo {
|
|
34
|
+
animation: ring-breath 1.8s ease-out infinite;
|
|
35
|
+
animation-delay: 0.9s;
|
|
36
|
+
opacity: 0.5;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.pulse-on .heartbeat-ring {
|
|
40
|
+
animation: ring-breath 1.8s ease-out;
|
|
41
|
+
opacity: 0.6;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.pulse-on .heartbeat-ring.echo {
|
|
45
|
+
animation: ring-breath 1.8s ease-out;
|
|
46
|
+
animation-delay: 0.9s;
|
|
47
|
+
opacity: 0.4;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.heartbeat-wave {
|
|
51
|
+
position: absolute;
|
|
52
|
+
left: 24px;
|
|
53
|
+
bottom: 0;
|
|
54
|
+
opacity: 0.65;
|
|
55
|
+
filter: drop-shadow(0 0 4px currentColor);
|
|
56
|
+
transition: opacity 0.45s ease;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.heartbeat-wrapper:hover .heartbeat-wave {
|
|
60
|
+
opacity: 1;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
@keyframes ring-breath {
|
|
64
|
+
0% {
|
|
65
|
+
transform: translate(-50%, -50%) scale(1);
|
|
66
|
+
opacity: 0.8;
|
|
67
|
+
}
|
|
68
|
+
70% {
|
|
69
|
+
transform: translate(-50%, -50%) scale(2.6);
|
|
70
|
+
opacity: 0;
|
|
71
|
+
}
|
|
72
|
+
100% {
|
|
73
|
+
opacity: 0;
|
|
74
|
+
}
|
|
75
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export type Phase = 'companion' | 'presence' | 'archive' | (string & {});
|
|
2
2
|
export type Mood = 'soft' | 'presence' | 'focused' | 'celebratory' | (string & {});
|
|
3
|
+
export type KernelAuthority = 'local-primary' | 'remote-primary' | 'distributed' | (string & {});
|
|
3
4
|
export type PresenceSnapshot = Readonly<{
|
|
4
5
|
t: number;
|
|
5
6
|
phase: Phase;
|
|
@@ -41,6 +42,22 @@ export interface PresenceAdapter {
|
|
|
41
42
|
}
|
|
42
43
|
export type KernelPlugin = (kernel: PresenceKernel) => void;
|
|
43
44
|
import { type Signal } from '@gratiaos/signal';
|
|
45
|
+
/**
|
|
46
|
+
* Identifies who is currently "conducting" the shared presence kernel.
|
|
47
|
+
*
|
|
48
|
+
* - 'local-primary' (default): This process is the source-of-truth for presence state.
|
|
49
|
+
* Everything else listens or mirrors from here.
|
|
50
|
+
*
|
|
51
|
+
* Future modes (not yet implemented) may include:
|
|
52
|
+
* - 'remote-primary' — presence conducted elsewhere (e.g., another browser/device)
|
|
53
|
+
* - 'distributed' — multiple equal peers co-conduct the field
|
|
54
|
+
*
|
|
55
|
+
* Surfaces can read this to understand how to interpret presence and pulse flow.
|
|
56
|
+
*/
|
|
57
|
+
export declare const kernelAuthority: "local-primary";
|
|
58
|
+
export declare const authority$: Signal<KernelAuthority>;
|
|
59
|
+
export declare const setAuthority: (next: KernelAuthority) => void;
|
|
60
|
+
export declare const getAuthority: () => KernelAuthority;
|
|
44
61
|
export declare const phase$: Signal<Phase>;
|
|
45
62
|
export declare const mood$: Signal<Mood>;
|
|
46
63
|
export declare const peers$: Signal<string[]>;
|
|
@@ -74,6 +91,19 @@ export declare class PresenceKernel {
|
|
|
74
91
|
private tick;
|
|
75
92
|
private publish;
|
|
76
93
|
}
|
|
94
|
+
export interface ValueSealOptions {
|
|
95
|
+
whisper?: string;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* runValueSealRitual()
|
|
99
|
+
* ---------------------
|
|
100
|
+
* Helper for the Value Bridge "Seal" action.
|
|
101
|
+
*
|
|
102
|
+
* 1. Temporarily shifts the shared mood to 'soft' for the length of the exhale.
|
|
103
|
+
* 2. Emits a `value:sealed` CustomEvent so other surfaces can respond without direct wiring.
|
|
104
|
+
* 3. Applies a gentle glow to the body that falls back once the exhale completes.
|
|
105
|
+
*/
|
|
106
|
+
export declare function runValueSealRitual(options?: ValueSealOptions): void;
|
|
77
107
|
export { Heartbeat } from './Heartbeat';
|
|
78
108
|
export { ConstellationHUD } from './ConstellationHUD';
|
|
79
109
|
export { usePhaseSound } from './usePhaseSound';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AACzE,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
import { createSignal } from '@gratiaos/signal';
|
|
2
2
|
// Signals are now sourced from @gratiaos/signal (shared micro observable).
|
|
3
|
+
/**
|
|
4
|
+
* Identifies who is currently "conducting" the shared presence kernel.
|
|
5
|
+
*
|
|
6
|
+
* - 'local-primary' (default): This process is the source-of-truth for presence state.
|
|
7
|
+
* Everything else listens or mirrors from here.
|
|
8
|
+
*
|
|
9
|
+
* Future modes (not yet implemented) may include:
|
|
10
|
+
* - 'remote-primary' — presence conducted elsewhere (e.g., another browser/device)
|
|
11
|
+
* - 'distributed' — multiple equal peers co-conduct the field
|
|
12
|
+
*
|
|
13
|
+
* Surfaces can read this to understand how to interpret presence and pulse flow.
|
|
14
|
+
*/
|
|
15
|
+
export const kernelAuthority = 'local-primary';
|
|
16
|
+
export const authority$ = createSignal(kernelAuthority);
|
|
17
|
+
export const setAuthority = (next) => authority$.set(next);
|
|
18
|
+
export const getAuthority = () => authority$.value;
|
|
3
19
|
export const phase$ = createSignal('presence');
|
|
4
20
|
export const mood$ = createSignal('soft'); // phase can be vivid while mood stays gentle by default
|
|
5
21
|
export const peers$ = createSignal([]);
|
|
@@ -130,6 +146,63 @@ export class PresenceKernel {
|
|
|
130
146
|
(_a = adapter.emit) === null || _a === void 0 ? void 0 : _a.call(adapter, event);
|
|
131
147
|
}
|
|
132
148
|
}
|
|
149
|
+
const AUTHORITY_EXHALE_MS = {
|
|
150
|
+
'local-primary': 1200,
|
|
151
|
+
'remote-primary': 900,
|
|
152
|
+
distributed: 800,
|
|
153
|
+
};
|
|
154
|
+
const AUTHORITY_GLOWS = {
|
|
155
|
+
'local-primary': 'var(--tone-glow)',
|
|
156
|
+
'remote-primary': '0 0 18px color-mix(in oklab, var(--tone-accent) 26%, transparent)',
|
|
157
|
+
distributed: '0 0 16px color-mix(in oklab, var(--tone-accent) 22%, transparent)',
|
|
158
|
+
};
|
|
159
|
+
let valueSealTimer = null;
|
|
160
|
+
/**
|
|
161
|
+
* runValueSealRitual()
|
|
162
|
+
* ---------------------
|
|
163
|
+
* Helper for the Value Bridge "Seal" action.
|
|
164
|
+
*
|
|
165
|
+
* 1. Temporarily shifts the shared mood to 'soft' for the length of the exhale.
|
|
166
|
+
* 2. Emits a `value:sealed` CustomEvent so other surfaces can respond without direct wiring.
|
|
167
|
+
* 3. Applies a gentle glow to the body that falls back once the exhale completes.
|
|
168
|
+
*/
|
|
169
|
+
export function runValueSealRitual(options) {
|
|
170
|
+
var _a, _b;
|
|
171
|
+
const authority = authority$.value;
|
|
172
|
+
const previousMood = mood$.value;
|
|
173
|
+
const exhaleMs = (_a = AUTHORITY_EXHALE_MS[authority]) !== null && _a !== void 0 ? _a : 900;
|
|
174
|
+
const glow = (_b = AUTHORITY_GLOWS[authority]) !== null && _b !== void 0 ? _b : 'var(--tone-glow)';
|
|
175
|
+
setMood('soft');
|
|
176
|
+
if (typeof window !== 'undefined') {
|
|
177
|
+
const detail = {
|
|
178
|
+
t: Date.now(),
|
|
179
|
+
authority,
|
|
180
|
+
whisper: options === null || options === void 0 ? void 0 : options.whisper,
|
|
181
|
+
};
|
|
182
|
+
window.dispatchEvent(new CustomEvent('value:sealed', { detail }));
|
|
183
|
+
}
|
|
184
|
+
if (valueSealTimer) {
|
|
185
|
+
clearTimeout(valueSealTimer);
|
|
186
|
+
valueSealTimer = null;
|
|
187
|
+
}
|
|
188
|
+
let originalShadow = null;
|
|
189
|
+
if (typeof document !== 'undefined') {
|
|
190
|
+
originalShadow = document.body.style.boxShadow;
|
|
191
|
+
document.body.style.boxShadow = glow;
|
|
192
|
+
}
|
|
193
|
+
valueSealTimer = setTimeout(() => {
|
|
194
|
+
if (typeof document !== 'undefined') {
|
|
195
|
+
if (originalShadow !== null) {
|
|
196
|
+
document.body.style.boxShadow = originalShadow;
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
document.body.style.removeProperty('box-shadow');
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
setMood(previousMood);
|
|
203
|
+
valueSealTimer = null;
|
|
204
|
+
}, exhaleMs);
|
|
205
|
+
}
|
|
133
206
|
export { Heartbeat } from './Heartbeat';
|
|
134
207
|
export { ConstellationHUD } from './ConstellationHUD';
|
|
135
208
|
export { usePhaseSound } from './usePhaseSound';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePhaseSpatialSound.d.ts","sourceRoot":"","sources":["../src/usePhaseSpatialSound.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"usePhaseSpatialSound.d.ts","sourceRoot":"","sources":["../src/usePhaseSpatialSound.ts"],"names":[],"mappings":"AAmEA,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,OAAc,QAyK5E"}
|
|
@@ -17,7 +17,7 @@ const filterFrequency = (type) => {
|
|
|
17
17
|
return 1200;
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
|
-
const hashCode = (input) => Array.from(input).reduce((acc, char, index) => acc + char.charCodeAt(0) * (index + 1), 0);
|
|
20
|
+
const hashCode = (input) => Array.from(input).reduce((acc, char, index) => (acc + char.charCodeAt(0) * (index + 1)) % 2147483647, 0);
|
|
21
21
|
// Cache per peer so we only compute hash + derived pan/detune once per id.
|
|
22
22
|
// Peer IDs are stable for a session; memory footprint is minimal.
|
|
23
23
|
const peerMetricsCache = new Map();
|
|
@@ -27,7 +27,7 @@ const getPeerMetrics = (peerId) => {
|
|
|
27
27
|
return cached;
|
|
28
28
|
const hash = hashCode(peerId);
|
|
29
29
|
const pan = Math.max(-0.85, Math.min(0.85, Math.sin(hash)));
|
|
30
|
-
const semitone = (hash % 9) - 4; // discrete
|
|
30
|
+
const semitone = (hash % 9) - 4; // 9 discrete steps in [-4, 4]
|
|
31
31
|
// Micro‑detune per peer:
|
|
32
32
|
// Divide by 24 → range ≈ [-0.1667, +0.1667] semitones (± ~16.7 cents ≈ one sixth of a semitone).
|
|
33
33
|
// This is a subtle colorization — previously commented as "quarter‑tone" which would be ~50 cents; kept subtle.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePhaseSpatialSound.js","sourceRoot":"","sources":["../src/usePhaseSpatialSound.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAA0B,MAAM,uBAAuB,CAAC;AAS3G,MAAM,aAAa,GAAgC,CAAC,aAAa,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAE5F,MAAM,SAAS,GAAG,IAAI,CAAC;AAEvB,MAAM,eAAe,GAAG,CAAC,IAAsB,EAAE,EAAE;IACjD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,GAAG,CAAC;QACb,KAAK,UAAU;YACb,OAAO,IAAI,CAAC;QACd,KAAK,UAAU;YACb,OAAO,IAAI,CAAC;QACd,KAAK,OAAO;YACV,OAAO,IAAI,CAAC;QACd;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"usePhaseSpatialSound.js","sourceRoot":"","sources":["../src/usePhaseSpatialSound.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gratiaos/presence-kernel",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.3",
|
|
4
4
|
"funding": "https://github.com/sponsors/GratiaOS",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "AGPL-3.0-only",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"react": "^18 || ^19"
|
|
33
33
|
},
|
|
34
34
|
"scripts": {
|
|
35
|
-
"build": "tsc -p tsconfig.json",
|
|
35
|
+
"build": "tsc -p tsconfig.json && node ./scripts/copy-assets.mjs",
|
|
36
36
|
"clean": "rimraf dist"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export type Phase = 'companion' | 'presence' | 'archive' | (string & {});
|
|
2
2
|
export type Mood = 'soft' | 'presence' | 'focused' | 'celebratory' | (string & {});
|
|
3
|
+
export type KernelAuthority = 'local-primary' | 'remote-primary' | 'distributed' | (string & {});
|
|
3
4
|
|
|
4
5
|
export type PresenceSnapshot = Readonly<{
|
|
5
6
|
t: number;
|
|
@@ -32,6 +33,23 @@ export type KernelPlugin = (kernel: PresenceKernel) => void;
|
|
|
32
33
|
import { createSignal, type Signal, type SignalListener } from '@gratiaos/signal';
|
|
33
34
|
// Signals are now sourced from @gratiaos/signal (shared micro observable).
|
|
34
35
|
|
|
36
|
+
/**
|
|
37
|
+
* Identifies who is currently "conducting" the shared presence kernel.
|
|
38
|
+
*
|
|
39
|
+
* - 'local-primary' (default): This process is the source-of-truth for presence state.
|
|
40
|
+
* Everything else listens or mirrors from here.
|
|
41
|
+
*
|
|
42
|
+
* Future modes (not yet implemented) may include:
|
|
43
|
+
* - 'remote-primary' — presence conducted elsewhere (e.g., another browser/device)
|
|
44
|
+
* - 'distributed' — multiple equal peers co-conduct the field
|
|
45
|
+
*
|
|
46
|
+
* Surfaces can read this to understand how to interpret presence and pulse flow.
|
|
47
|
+
*/
|
|
48
|
+
export const kernelAuthority = 'local-primary' as const;
|
|
49
|
+
export const authority$ = createSignal<KernelAuthority>(kernelAuthority);
|
|
50
|
+
export const setAuthority = (next: KernelAuthority) => authority$.set(next);
|
|
51
|
+
export const getAuthority = () => authority$.value;
|
|
52
|
+
|
|
35
53
|
export const phase$ = createSignal<Phase>('presence');
|
|
36
54
|
export const mood$ = createSignal<Mood>('soft'); // phase can be vivid while mood stays gentle by default
|
|
37
55
|
export const peers$ = createSignal<string[]>([]);
|
|
@@ -165,6 +183,74 @@ export class PresenceKernel {
|
|
|
165
183
|
}
|
|
166
184
|
}
|
|
167
185
|
|
|
186
|
+
const AUTHORITY_EXHALE_MS: Record<string, number> = {
|
|
187
|
+
'local-primary': 1200,
|
|
188
|
+
'remote-primary': 900,
|
|
189
|
+
distributed: 800,
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
const AUTHORITY_GLOWS: Record<string, string> = {
|
|
193
|
+
'local-primary': 'var(--tone-glow)',
|
|
194
|
+
'remote-primary': '0 0 18px color-mix(in oklab, var(--tone-accent) 26%, transparent)',
|
|
195
|
+
distributed: '0 0 16px color-mix(in oklab, var(--tone-accent) 22%, transparent)',
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
let valueSealTimer: ReturnType<typeof setTimeout> | null = null;
|
|
199
|
+
|
|
200
|
+
export interface ValueSealOptions {
|
|
201
|
+
whisper?: string;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* runValueSealRitual()
|
|
206
|
+
* ---------------------
|
|
207
|
+
* Helper for the Value Bridge "Seal" action.
|
|
208
|
+
*
|
|
209
|
+
* 1. Temporarily shifts the shared mood to 'soft' for the length of the exhale.
|
|
210
|
+
* 2. Emits a `value:sealed` CustomEvent so other surfaces can respond without direct wiring.
|
|
211
|
+
* 3. Applies a gentle glow to the body that falls back once the exhale completes.
|
|
212
|
+
*/
|
|
213
|
+
export function runValueSealRitual(options?: ValueSealOptions) {
|
|
214
|
+
const authority = authority$.value;
|
|
215
|
+
const previousMood = mood$.value;
|
|
216
|
+
const exhaleMs = AUTHORITY_EXHALE_MS[authority] ?? 900;
|
|
217
|
+
const glow = AUTHORITY_GLOWS[authority] ?? 'var(--tone-glow)';
|
|
218
|
+
|
|
219
|
+
setMood('soft');
|
|
220
|
+
|
|
221
|
+
if (typeof window !== 'undefined') {
|
|
222
|
+
const detail = {
|
|
223
|
+
t: Date.now(),
|
|
224
|
+
authority,
|
|
225
|
+
whisper: options?.whisper,
|
|
226
|
+
};
|
|
227
|
+
window.dispatchEvent(new CustomEvent('value:sealed', { detail }));
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
if (valueSealTimer) {
|
|
231
|
+
clearTimeout(valueSealTimer);
|
|
232
|
+
valueSealTimer = null;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
let originalShadow: string | null = null;
|
|
236
|
+
if (typeof document !== 'undefined') {
|
|
237
|
+
originalShadow = document.body.style.boxShadow;
|
|
238
|
+
document.body.style.boxShadow = glow;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
valueSealTimer = setTimeout(() => {
|
|
242
|
+
if (typeof document !== 'undefined') {
|
|
243
|
+
if (originalShadow !== null) {
|
|
244
|
+
document.body.style.boxShadow = originalShadow;
|
|
245
|
+
} else {
|
|
246
|
+
document.body.style.removeProperty('box-shadow');
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
setMood(previousMood);
|
|
250
|
+
valueSealTimer = null;
|
|
251
|
+
}, exhaleMs);
|
|
252
|
+
}
|
|
253
|
+
|
|
168
254
|
export { Heartbeat } from './Heartbeat';
|
|
169
255
|
export { ConstellationHUD } from './ConstellationHUD';
|
|
170
256
|
|