r1-create 1.0.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.
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ /**
3
+ * LLM and messaging module for R1 AI integration
4
+ * Provides structured messaging and LLM interaction capabilities
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.llmHelpers = exports.messaging = exports.LLMHelpers = exports.R1Messaging = void 0;
8
+ /**
9
+ * LLM and messaging API for R1 interactions
10
+ */
11
+ class R1Messaging {
12
+ constructor() {
13
+ this.messageHandlers = new Set();
14
+ this.isInitialized = false;
15
+ this.initializeMessageHandler();
16
+ }
17
+ /**
18
+ * Send a simple message to the server
19
+ * @param message Message text
20
+ * @param options Message options
21
+ */
22
+ async sendMessage(message, options = {}) {
23
+ const payload = {
24
+ message,
25
+ ...options
26
+ };
27
+ if (typeof PluginMessageHandler !== 'undefined') {
28
+ PluginMessageHandler.postMessage(JSON.stringify(payload));
29
+ }
30
+ else {
31
+ throw new Error('PluginMessageHandler not available. Make sure you are running in R1 environment.');
32
+ }
33
+ }
34
+ /**
35
+ * Send a message and get LLM response
36
+ * @param message Message text
37
+ * @param options LLM options
38
+ */
39
+ async askLLM(message, options = {}) {
40
+ await this.sendMessage(message, {
41
+ useLLM: true,
42
+ ...options
43
+ });
44
+ }
45
+ /**
46
+ * Ask LLM to speak response through R1 speaker
47
+ * @param message Message text
48
+ * @param saveToJournal Whether to save interaction to journal
49
+ */
50
+ async askLLMSpeak(message, saveToJournal = false) {
51
+ await this.askLLM(message, {
52
+ wantsR1Response: true,
53
+ wantsJournalEntry: saveToJournal
54
+ });
55
+ }
56
+ /**
57
+ * Ask LLM for JSON structured response
58
+ * @param message Message text (should specify desired JSON format)
59
+ * @param options LLM options
60
+ */
61
+ async askLLMJSON(message, options = {}) {
62
+ const jsonMessage = message.includes('JSON') ? message :
63
+ `${message}. Please respond with a valid JSON object.`;
64
+ await this.askLLM(jsonMessage, options);
65
+ }
66
+ /**
67
+ * Add message handler for incoming responses
68
+ * @param handler Function to handle incoming messages
69
+ */
70
+ onMessage(handler) {
71
+ this.messageHandlers.add(handler);
72
+ }
73
+ /**
74
+ * Remove message handler
75
+ * @param handler Handler function to remove
76
+ */
77
+ offMessage(handler) {
78
+ this.messageHandlers.delete(handler);
79
+ }
80
+ /**
81
+ * Remove all message handlers
82
+ */
83
+ removeAllHandlers() {
84
+ this.messageHandlers.clear();
85
+ }
86
+ /**
87
+ * Close the current plugin/webview
88
+ */
89
+ closePlugin() {
90
+ if (typeof closeWebView !== 'undefined') {
91
+ closeWebView.postMessage('');
92
+ }
93
+ }
94
+ initializeMessageHandler() {
95
+ if (this.isInitialized || typeof window === 'undefined')
96
+ return;
97
+ // Set up global message handler
98
+ window.onPluginMessage = (data) => {
99
+ try {
100
+ // Try to parse data.data as JSON if it exists
101
+ let parsedData = undefined;
102
+ if (data.data) {
103
+ try {
104
+ parsedData = JSON.parse(data.data);
105
+ }
106
+ catch (e) {
107
+ // data.data is not valid JSON, keep as string
108
+ parsedData = data.data;
109
+ }
110
+ }
111
+ // Call all registered handlers
112
+ const enhancedData = { ...data, parsedData };
113
+ this.messageHandlers.forEach(handler => {
114
+ try {
115
+ handler(enhancedData);
116
+ }
117
+ catch (error) {
118
+ console.error('Error in message handler:', error);
119
+ }
120
+ });
121
+ }
122
+ catch (error) {
123
+ console.error('Error processing plugin message:', error);
124
+ }
125
+ };
126
+ this.isInitialized = true;
127
+ }
128
+ }
129
+ exports.R1Messaging = R1Messaging;
130
+ /**
131
+ * Convenient helper functions for common LLM interactions
132
+ */
133
+ class LLMHelpers {
134
+ constructor(messaging) {
135
+ this.messaging = messaging;
136
+ }
137
+ /**
138
+ * Ask LLM about user memories/context
139
+ */
140
+ async getUserMemories() {
141
+ await this.messaging.askLLMJSON("Tell me what you know about me. Return only a JSON message formatted as {'facts': ['fact1', 'fact2', ...]}");
142
+ }
143
+ /**
144
+ * Ask LLM to analyze an image or data
145
+ * @param prompt Analysis prompt
146
+ * @param data Optional data to analyze
147
+ */
148
+ async analyzeData(prompt, data) {
149
+ let message = prompt;
150
+ if (data) {
151
+ message += ` Data: ${JSON.stringify(data)}`;
152
+ }
153
+ message += ' Please respond with a JSON analysis.';
154
+ await this.messaging.askLLMJSON(message);
155
+ }
156
+ /**
157
+ * Ask LLM to perform a task and speak the result
158
+ * @param task Task description
159
+ * @param saveToJournal Whether to save to journal
160
+ */
161
+ async performTask(task, saveToJournal = true) {
162
+ await this.messaging.askLLMSpeak(task, saveToJournal);
163
+ }
164
+ /**
165
+ * Get LLM suggestions for user interface
166
+ * @param context Current UI context
167
+ */
168
+ async getUISuggestions(context) {
169
+ await this.messaging.askLLMJSON(`Given this UI context: "${context}", provide suggestions for user actions. ` +
170
+ `Respond with JSON format: {"suggestions": [{"action": "action_name", "description": "description"}]}`);
171
+ }
172
+ }
173
+ exports.LLMHelpers = LLMHelpers;
174
+ // Export singleton instances
175
+ exports.messaging = new R1Messaging();
176
+ exports.llmHelpers = new LLMHelpers(exports.messaging);
177
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Media API module for R1 device
3
+ * Provides access to camera, microphone, and speaker using standard web APIs
4
+ * Optimized for R1 hardware limitations and mobile performance
5
+ */
6
+ export interface MediaDeviceInfo {
7
+ deviceId: string;
8
+ kind: 'audioinput' | 'audiooutput' | 'videoinput';
9
+ label: string;
10
+ groupId: string;
11
+ }
12
+ export interface AudioConfig {
13
+ sampleRate?: number;
14
+ channelCount?: number;
15
+ echoCancellation?: boolean;
16
+ noiseSuppression?: boolean;
17
+ autoGainControl?: boolean;
18
+ }
19
+ export interface VideoConfig {
20
+ width?: number;
21
+ height?: number;
22
+ frameRate?: number;
23
+ facingMode?: 'user' | 'environment';
24
+ }
25
+ export interface RecordingOptions {
26
+ audio?: boolean | AudioConfig;
27
+ video?: boolean | VideoConfig;
28
+ mimeType?: string;
29
+ audioBitsPerSecond?: number;
30
+ videoBitsPerSecond?: number;
31
+ }
32
+ export type RecordingState = 'inactive' | 'recording' | 'paused';
33
+ /**
34
+ * Camera API for R1 device
35
+ */
36
+ export declare class CameraAPI {
37
+ private stream;
38
+ private videoElement;
39
+ /**
40
+ * Check if camera is available
41
+ */
42
+ isAvailable(): Promise<boolean>;
43
+ /**
44
+ * Start camera stream
45
+ * @param config Video configuration
46
+ */
47
+ start(config?: VideoConfig): Promise<MediaStream>;
48
+ /**
49
+ * Stop camera stream
50
+ */
51
+ stop(): void;
52
+ /**
53
+ * Get camera stream
54
+ */
55
+ getStream(): MediaStream | null;
56
+ /**
57
+ * Create video element with stream
58
+ * @param autoplay Whether to autoplay video
59
+ * @param muted Whether to mute video
60
+ */
61
+ createVideoElement(autoplay?: boolean, muted?: boolean): HTMLVideoElement;
62
+ /**
63
+ * Capture photo from camera stream
64
+ * @param width Image width (default: 240)
65
+ * @param height Image height (default: 282)
66
+ */
67
+ capturePhoto(width?: number, height?: number): string | null;
68
+ /**
69
+ * Switch camera (front/back)
70
+ */
71
+ switchCamera(): Promise<void>;
72
+ }
73
+ /**
74
+ * Microphone API for R1 device
75
+ */
76
+ export declare class MicrophoneAPI {
77
+ private stream;
78
+ private mediaRecorder;
79
+ private recordedChunks;
80
+ /**
81
+ * Check if microphone is available
82
+ */
83
+ isAvailable(): Promise<boolean>;
84
+ /**
85
+ * Start microphone stream
86
+ * @param config Audio configuration
87
+ */
88
+ start(config?: AudioConfig): Promise<MediaStream>;
89
+ /**
90
+ * Stop microphone stream
91
+ */
92
+ stop(): void;
93
+ /**
94
+ * Start recording audio
95
+ * @param options Recording options
96
+ */
97
+ startRecording(options?: RecordingOptions): Promise<void>;
98
+ /**
99
+ * Stop recording and get audio blob
100
+ */
101
+ stopRecording(): Promise<Blob>;
102
+ /**
103
+ * Get current recording state
104
+ */
105
+ getRecordingState(): RecordingState;
106
+ /**
107
+ * Get audio stream
108
+ */
109
+ getStream(): MediaStream | null;
110
+ }
111
+ /**
112
+ * Speaker API for R1 device
113
+ */
114
+ export declare class SpeakerAPI {
115
+ private audioContext;
116
+ private currentAudio;
117
+ /**
118
+ * Initialize audio context
119
+ */
120
+ private initializeAudioContext;
121
+ /**
122
+ * Play audio from URL or blob
123
+ * @param source Audio source (URL, blob, or base64)
124
+ * @param volume Volume level (0-1)
125
+ */
126
+ play(source: string | Blob, volume?: number): Promise<void>;
127
+ /**
128
+ * Stop current audio playback
129
+ */
130
+ stop(): void;
131
+ /**
132
+ * Set volume for current audio
133
+ * @param volume Volume level (0-1)
134
+ */
135
+ setVolume(volume: number): void;
136
+ /**
137
+ * Generate and play tone
138
+ * @param frequency Frequency in Hz
139
+ * @param duration Duration in milliseconds
140
+ * @param volume Volume level (0-1)
141
+ */
142
+ playTone(frequency: number, duration: number, volume?: number): Promise<void>;
143
+ /**
144
+ * Check if audio is currently playing
145
+ */
146
+ isPlaying(): boolean;
147
+ }
148
+ /**
149
+ * Media device utilities
150
+ */
151
+ export declare class MediaUtils {
152
+ /**
153
+ * Get available media devices
154
+ */
155
+ static getDevices(): Promise<MediaDeviceInfo[]>;
156
+ /**
157
+ * Check if specific media type is supported
158
+ * @param type Media type to check
159
+ */
160
+ static isSupported(type: 'camera' | 'microphone' | 'speaker'): Promise<boolean>;
161
+ /**
162
+ * Convert blob to base64 string
163
+ * @param blob Blob to convert
164
+ */
165
+ static blobToBase64(blob: Blob): Promise<string>;
166
+ /**
167
+ * Convert base64 string to blob
168
+ * @param base64 Base64 string
169
+ * @param mimeType MIME type
170
+ */
171
+ static base64ToBlob(base64: string, mimeType: string): Blob;
172
+ }
173
+ export declare const camera: CameraAPI;
174
+ export declare const microphone: MicrophoneAPI;
175
+ export declare const speaker: SpeakerAPI;
176
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/media/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,YAAY,GAAG,aAAa,GAAG,YAAY,CAAC;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAGD,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEjE;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,YAAY,CAAiC;IAErD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC;;;OAGG;IACG,KAAK,CAAC,MAAM,GAAE,WAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAmB3D;;OAEG;IACH,IAAI,IAAI,IAAI;IAWZ;;OAEG;IACH,SAAS,IAAI,WAAW,GAAG,IAAI;IAI/B;;;;OAIG;IACH,kBAAkB,CAAC,QAAQ,GAAE,OAAc,EAAE,KAAK,GAAE,OAAc,GAAG,gBAAgB;IAmBrF;;;;OAIG;IACH,YAAY,CAAC,KAAK,GAAE,MAAY,EAAE,MAAM,GAAE,MAAY,GAAG,MAAM,GAAG,IAAI;IAgBtE;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAYpC;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,cAAc,CAAc;IAEpC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC;;;OAGG;IACG,KAAK,CAAC,MAAM,GAAE,WAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAmB3D;;OAEG;IACH,IAAI,IAAI,IAAI;IAWZ;;;OAGG;IACG,cAAc,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBnE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBpC;;OAEG;IACH,iBAAiB,IAAI,cAAc;IAInC;;OAEG;IACH,SAAS,IAAI,WAAW,GAAG,IAAI;CAGhC;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,YAAY,CAAiC;IAErD;;OAEG;YACW,sBAAsB;IAUpC;;;;OAIG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBpE;;OAEG;IACH,IAAI,IAAI,IAAI;IAWZ;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM/B;;;;;OAKG;IACG,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBxF;;OAEG;IACH,SAAS,IAAI,OAAO;CAGrB;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB;;OAEG;WACU,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAcrD;;;OAGG;WACU,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAarF;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAYhD;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;CAW5D;AAGD,eAAO,MAAM,MAAM,WAAkB,CAAC;AACtC,eAAO,MAAM,UAAU,eAAsB,CAAC;AAC9C,eAAO,MAAM,OAAO,YAAmB,CAAC"}