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,172 @@
1
+ "use strict";
2
+ /**
3
+ * Hardware API module for R1 device access
4
+ * Provides accelerometer, touch simulation, and hardware button events
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.hardwareEvents = exports.touch = exports.accelerometer = exports.HardwareEvents = exports.TouchAPI = exports.AccelerometerAPI = void 0;
8
+ class AccelerometerAPI {
9
+ constructor() {
10
+ this.isListening = false;
11
+ }
12
+ /**
13
+ * Check if accelerometer is available on the device
14
+ */
15
+ async isAvailable() {
16
+ return await window.creationSensors?.accelerometer?.isAvailable() ?? false;
17
+ }
18
+ /**
19
+ * Start receiving accelerometer data
20
+ * @param callback Function to handle accelerometer data
21
+ * @param options Configuration options including frequency
22
+ */
23
+ start(callback, options) {
24
+ if (this.isListening) {
25
+ this.stop();
26
+ }
27
+ this.currentCallback = callback;
28
+ this.isListening = true;
29
+ if (window.creationSensors?.accelerometer) {
30
+ window.creationSensors.accelerometer.start(callback, options);
31
+ }
32
+ }
33
+ /**
34
+ * Stop receiving accelerometer data
35
+ */
36
+ stop() {
37
+ if (this.isListening && window.creationSensors?.accelerometer) {
38
+ window.creationSensors.accelerometer.stop();
39
+ this.isListening = false;
40
+ this.currentCallback = undefined;
41
+ }
42
+ }
43
+ /**
44
+ * Check if currently listening for accelerometer data
45
+ */
46
+ isActive() {
47
+ return this.isListening;
48
+ }
49
+ }
50
+ exports.AccelerometerAPI = AccelerometerAPI;
51
+ class TouchAPI {
52
+ /**
53
+ * Simulate a tap at specific coordinates
54
+ * @param x X coordinate (0-240)
55
+ * @param y Y coordinate (0-282)
56
+ */
57
+ tap(x, y) {
58
+ this.sendTouchEvent({ type: 'tap', x, y });
59
+ }
60
+ /**
61
+ * Simulate touch down event
62
+ * @param x X coordinate
63
+ * @param y Y coordinate
64
+ */
65
+ touchDown(x, y) {
66
+ this.sendTouchEvent({ type: 'down', x, y });
67
+ }
68
+ /**
69
+ * Simulate touch up event
70
+ * @param x X coordinate
71
+ * @param y Y coordinate
72
+ */
73
+ touchUp(x, y) {
74
+ this.sendTouchEvent({ type: 'up', x, y });
75
+ }
76
+ /**
77
+ * Simulate touch move event
78
+ * @param x X coordinate
79
+ * @param y Y coordinate
80
+ */
81
+ touchMove(x, y) {
82
+ this.sendTouchEvent({ type: 'move', x, y });
83
+ }
84
+ /**
85
+ * Cancel touch event
86
+ * @param x X coordinate
87
+ * @param y Y coordinate
88
+ */
89
+ touchCancel(x, y) {
90
+ this.sendTouchEvent({ type: 'cancel', x, y });
91
+ }
92
+ sendTouchEvent(event) {
93
+ if (typeof TouchEventHandler !== 'undefined') {
94
+ TouchEventHandler.postMessage(JSON.stringify(event));
95
+ }
96
+ }
97
+ }
98
+ exports.TouchAPI = TouchAPI;
99
+ class HardwareEvents {
100
+ constructor() {
101
+ this.listeners = new Map();
102
+ this.initializeEventListeners();
103
+ }
104
+ /**
105
+ * Add event listener for hardware button events
106
+ * @param event Event type to listen for
107
+ * @param callback Function to call when event occurs
108
+ */
109
+ on(event, callback) {
110
+ if (!this.listeners.has(event)) {
111
+ this.listeners.set(event, new Set());
112
+ }
113
+ this.listeners.get(event).add(callback);
114
+ }
115
+ /**
116
+ * Remove event listener
117
+ * @param event Event type
118
+ * @param callback Function to remove
119
+ */
120
+ off(event, callback) {
121
+ const callbacks = this.listeners.get(event);
122
+ if (callbacks) {
123
+ callbacks.delete(callback);
124
+ }
125
+ }
126
+ /**
127
+ * Remove all listeners for an event type
128
+ * @param event Event type to clear
129
+ */
130
+ removeAllListeners(event) {
131
+ if (event) {
132
+ this.listeners.delete(event);
133
+ }
134
+ else {
135
+ this.listeners.clear();
136
+ }
137
+ }
138
+ initializeEventListeners() {
139
+ // Only initialize in browser environment
140
+ if (typeof window === 'undefined')
141
+ return;
142
+ // Side button (PTT) events
143
+ window.addEventListener('sideClick', () => {
144
+ this.emit('sideClick');
145
+ });
146
+ window.addEventListener('longPressStart', () => {
147
+ this.emit('longPressStart');
148
+ });
149
+ window.addEventListener('longPressEnd', () => {
150
+ this.emit('longPressEnd');
151
+ });
152
+ // Scroll wheel events
153
+ window.addEventListener('scrollUp', () => {
154
+ this.emit('scrollUp');
155
+ });
156
+ window.addEventListener('scrollDown', () => {
157
+ this.emit('scrollDown');
158
+ });
159
+ }
160
+ emit(event) {
161
+ const callbacks = this.listeners.get(event);
162
+ if (callbacks) {
163
+ callbacks.forEach(callback => callback());
164
+ }
165
+ }
166
+ }
167
+ exports.HardwareEvents = HardwareEvents;
168
+ // Export singleton instances
169
+ exports.accelerometer = new AccelerometerAPI();
170
+ exports.touch = new TouchAPI();
171
+ exports.hardwareEvents = new HardwareEvents();
172
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hardware/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * R1 Create SDK
3
+ * Official SDK for building R1/RabbitOS plugins
4
+ *
5
+ * Features:
6
+ * - Hardware access (accelerometer, touch, PTT, scroll)
7
+ * - Secure/plain storage with Base64 encoding
8
+ * - LLM interaction and messaging
9
+ * - Optimized UI utilities for 240x282px display
10
+ * - Media APIs (camera, microphone, speaker)
11
+ * - Event-driven architecture
12
+ * - Mobile performance optimizations
13
+ */
14
+ export * from './types';
15
+ export type { HardwareEventType } from './types';
16
+ export { AccelerometerAPI, TouchAPI, HardwareEvents, accelerometer, touch, hardwareEvents } from './hardware';
17
+ export { Base64Utils, R1Storage, storage } from './storage';
18
+ export { R1Messaging, LLMHelpers, messaging, llmHelpers } from './llm';
19
+ export { CSSUtils, DOMUtils, LayoutUtils, PerformanceUtils, R1Component, R1_DIMENSIONS } from './ui';
20
+ export { CameraAPI, MicrophoneAPI, SpeakerAPI, MediaUtils, camera, microphone, speaker } from './media';
21
+ import { R1Storage } from './storage';
22
+ /**
23
+ * R1 SDK main class
24
+ * Provides a unified interface to all R1 capabilities
25
+ */
26
+ export declare class R1SDK {
27
+ readonly accelerometer: import("./hardware").AccelerometerAPI;
28
+ readonly touch: import("./hardware").TouchAPI;
29
+ readonly hardware: import("./hardware").HardwareEvents;
30
+ readonly storage: R1Storage;
31
+ readonly messaging: import("./llm").R1Messaging;
32
+ readonly llm: import("./llm").LLMHelpers;
33
+ readonly camera: import("./media").CameraAPI;
34
+ readonly microphone: import("./media").MicrophoneAPI;
35
+ readonly speaker: import("./media").SpeakerAPI;
36
+ readonly DIMENSIONS: import("./types").R1Dimensions;
37
+ /**
38
+ * Initialize the SDK and check environment
39
+ */
40
+ initialize(): Promise<void>;
41
+ /**
42
+ * Get available R1 features
43
+ */
44
+ getAvailableFeatures(): Promise<{
45
+ storage: boolean;
46
+ secureStorage: boolean;
47
+ accelerometer: boolean;
48
+ camera: boolean;
49
+ microphone: boolean;
50
+ speaker: boolean;
51
+ messaging: boolean;
52
+ }>;
53
+ /**
54
+ * Create a simple R1 plugin with common setup
55
+ * @param config Plugin configuration
56
+ */
57
+ createPlugin(config: {
58
+ onMount?: () => void;
59
+ onUnmount?: () => void;
60
+ onMessage?: (data: any) => void;
61
+ onHardwareEvent?: (event: string) => void;
62
+ }): R1Plugin;
63
+ }
64
+ /**
65
+ * Simple plugin class for quick R1 app development
66
+ */
67
+ export declare class R1Plugin {
68
+ private config;
69
+ private mounted;
70
+ constructor(config: {
71
+ onMount?: () => void;
72
+ onUnmount?: () => void;
73
+ onMessage?: (data: any) => void;
74
+ onHardwareEvent?: (event: string) => void;
75
+ });
76
+ mount(): void;
77
+ unmount(): void;
78
+ private setupEventListeners;
79
+ }
80
+ export declare const r1: R1SDK;
81
+ export declare const initializeR1: () => Promise<void>;
82
+ /**
83
+ * Quick setup function for simple R1 plugins
84
+ * @param setup Setup function that receives the SDK instance
85
+ */
86
+ export declare const createR1App: (setup: (sdk: R1SDK) => void) => void;
87
+ export default r1;
88
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,cAAc,SAAS,CAAC;AACxB,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGjD,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,aAAa,EACb,KAAK,EACL,cAAc,EACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,WAAW,EACX,SAAS,EACT,OAAO,EACR,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,WAAW,EACX,UAAU,EACV,SAAS,EACT,UAAU,EACX,MAAM,OAAO,CAAC;AAGf,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,aAAa,EACd,MAAM,MAAM,CAAC;AAGd,OAAO,EACL,SAAS,EACT,aAAa,EACb,UAAU,EACV,UAAU,EACV,MAAM,EACN,UAAU,EACV,OAAO,EACR,MAAM,SAAS,CAAC;AASjB,OAAO,EAAW,SAAS,EAAE,MAAM,WAAW,CAAC;AAK/C;;;GAGG;AACH,qBAAa,KAAK;IAEhB,SAAgB,aAAa,wCAAiB;IAC9C,SAAgB,KAAK,gCAAS;IAC9B,SAAgB,QAAQ,sCAAkB;IAG1C,SAAgB,OAAO,YAAW;IAGlC,SAAgB,SAAS,8BAAa;IACtC,SAAgB,GAAG,6BAAc;IAGjC,SAAgB,MAAM,8BAAU;IAChC,SAAgB,UAAU,kCAAc;IACxC,SAAgB,OAAO,+BAAW;IAGlC,SAAgB,UAAU,iCAAiB;IAE3C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC;QACpC,OAAO,EAAE,OAAO,CAAC;QACjB,aAAa,EAAE,OAAO,CAAC;QACvB,aAAa,EAAE,OAAO,CAAC;QACvB,MAAM,EAAE,OAAO,CAAC;QAChB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IAYF;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE;QACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;QACvB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;QAChC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KAC3C,GAAG,QAAQ;CAGb;AAED;;GAEG;AACH,qBAAa,QAAQ;IAGP,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,OAAO,CAAS;gBAEJ,MAAM,EAAE;QAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;QACvB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;QAChC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KAC3C;IAID,KAAK,IAAI,IAAI;IAOb,OAAO,IAAI,IAAI;IAOf,OAAO,CAAC,mBAAmB;CAuB5B;AAGD,eAAO,MAAM,EAAE,OAAc,CAAC;AAG9B,eAAO,MAAM,YAAY,qBAAwB,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,SAKtD,CAAC;AAGF,eAAe,EAAE,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ /**
3
+ * R1 Create SDK
4
+ * Official SDK for building R1/RabbitOS plugins
5
+ *
6
+ * Features:
7
+ * - Hardware access (accelerometer, touch, PTT, scroll)
8
+ * - Secure/plain storage with Base64 encoding
9
+ * - LLM interaction and messaging
10
+ * - Optimized UI utilities for 240x282px display
11
+ * - Media APIs (camera, microphone, speaker)
12
+ * - Event-driven architecture
13
+ * - Mobile performance optimizations
14
+ */
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
27
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.createR1App = exports.initializeR1 = exports.r1 = exports.R1Plugin = exports.R1SDK = exports.speaker = exports.microphone = exports.camera = exports.MediaUtils = exports.SpeakerAPI = exports.MicrophoneAPI = exports.CameraAPI = exports.R1_DIMENSIONS = exports.R1Component = exports.PerformanceUtils = exports.LayoutUtils = exports.DOMUtils = exports.CSSUtils = exports.llmHelpers = exports.messaging = exports.LLMHelpers = exports.R1Messaging = exports.storage = exports.R1Storage = exports.Base64Utils = exports.hardwareEvents = exports.touch = exports.accelerometer = exports.HardwareEvents = exports.TouchAPI = exports.AccelerometerAPI = void 0;
31
+ // Type definitions
32
+ __exportStar(require("./types"), exports);
33
+ // Hardware APIs
34
+ var hardware_1 = require("./hardware");
35
+ Object.defineProperty(exports, "AccelerometerAPI", { enumerable: true, get: function () { return hardware_1.AccelerometerAPI; } });
36
+ Object.defineProperty(exports, "TouchAPI", { enumerable: true, get: function () { return hardware_1.TouchAPI; } });
37
+ Object.defineProperty(exports, "HardwareEvents", { enumerable: true, get: function () { return hardware_1.HardwareEvents; } });
38
+ Object.defineProperty(exports, "accelerometer", { enumerable: true, get: function () { return hardware_1.accelerometer; } });
39
+ Object.defineProperty(exports, "touch", { enumerable: true, get: function () { return hardware_1.touch; } });
40
+ Object.defineProperty(exports, "hardwareEvents", { enumerable: true, get: function () { return hardware_1.hardwareEvents; } });
41
+ // Storage APIs
42
+ var storage_1 = require("./storage");
43
+ Object.defineProperty(exports, "Base64Utils", { enumerable: true, get: function () { return storage_1.Base64Utils; } });
44
+ Object.defineProperty(exports, "R1Storage", { enumerable: true, get: function () { return storage_1.R1Storage; } });
45
+ Object.defineProperty(exports, "storage", { enumerable: true, get: function () { return storage_1.storage; } });
46
+ // LLM and messaging APIs
47
+ var llm_1 = require("./llm");
48
+ Object.defineProperty(exports, "R1Messaging", { enumerable: true, get: function () { return llm_1.R1Messaging; } });
49
+ Object.defineProperty(exports, "LLMHelpers", { enumerable: true, get: function () { return llm_1.LLMHelpers; } });
50
+ Object.defineProperty(exports, "messaging", { enumerable: true, get: function () { return llm_1.messaging; } });
51
+ Object.defineProperty(exports, "llmHelpers", { enumerable: true, get: function () { return llm_1.llmHelpers; } });
52
+ // UI utilities
53
+ var ui_1 = require("./ui");
54
+ Object.defineProperty(exports, "CSSUtils", { enumerable: true, get: function () { return ui_1.CSSUtils; } });
55
+ Object.defineProperty(exports, "DOMUtils", { enumerable: true, get: function () { return ui_1.DOMUtils; } });
56
+ Object.defineProperty(exports, "LayoutUtils", { enumerable: true, get: function () { return ui_1.LayoutUtils; } });
57
+ Object.defineProperty(exports, "PerformanceUtils", { enumerable: true, get: function () { return ui_1.PerformanceUtils; } });
58
+ Object.defineProperty(exports, "R1Component", { enumerable: true, get: function () { return ui_1.R1Component; } });
59
+ Object.defineProperty(exports, "R1_DIMENSIONS", { enumerable: true, get: function () { return ui_1.R1_DIMENSIONS; } });
60
+ // Media APIs
61
+ var media_1 = require("./media");
62
+ Object.defineProperty(exports, "CameraAPI", { enumerable: true, get: function () { return media_1.CameraAPI; } });
63
+ Object.defineProperty(exports, "MicrophoneAPI", { enumerable: true, get: function () { return media_1.MicrophoneAPI; } });
64
+ Object.defineProperty(exports, "SpeakerAPI", { enumerable: true, get: function () { return media_1.SpeakerAPI; } });
65
+ Object.defineProperty(exports, "MediaUtils", { enumerable: true, get: function () { return media_1.MediaUtils; } });
66
+ Object.defineProperty(exports, "camera", { enumerable: true, get: function () { return media_1.camera; } });
67
+ Object.defineProperty(exports, "microphone", { enumerable: true, get: function () { return media_1.microphone; } });
68
+ Object.defineProperty(exports, "speaker", { enumerable: true, get: function () { return media_1.speaker; } });
69
+ const hardware_2 = require("./hardware");
70
+ const storage_2 = require("./storage");
71
+ const llm_2 = require("./llm");
72
+ const ui_2 = require("./ui");
73
+ const media_2 = require("./media");
74
+ /**
75
+ * R1 SDK main class
76
+ * Provides a unified interface to all R1 capabilities
77
+ */
78
+ class R1SDK {
79
+ constructor() {
80
+ // Hardware access
81
+ this.accelerometer = hardware_2.accelerometer;
82
+ this.touch = hardware_2.touch;
83
+ this.hardware = hardware_2.hardwareEvents;
84
+ // Storage
85
+ this.storage = storage_2.storage;
86
+ // LLM and messaging
87
+ this.messaging = llm_2.messaging;
88
+ this.llm = llm_2.llmHelpers;
89
+ // Media
90
+ this.camera = media_2.camera;
91
+ this.microphone = media_2.microphone;
92
+ this.speaker = media_2.speaker;
93
+ // Constants
94
+ this.DIMENSIONS = ui_2.R1_DIMENSIONS;
95
+ }
96
+ /**
97
+ * Initialize the SDK and check environment
98
+ */
99
+ async initialize() {
100
+ // Check if running in R1 environment
101
+ if (typeof window === 'undefined') {
102
+ throw new Error('R1 SDK must be used in a browser environment');
103
+ }
104
+ // Log SDK initialization
105
+ console.log('R1 SDK initialized');
106
+ console.log(`Display dimensions: ${ui_2.R1_DIMENSIONS.width}x${ui_2.R1_DIMENSIONS.height}px`);
107
+ // Check available features
108
+ const features = await this.getAvailableFeatures();
109
+ console.log('Available features:', features);
110
+ }
111
+ /**
112
+ * Get available R1 features
113
+ */
114
+ async getAvailableFeatures() {
115
+ return {
116
+ storage: storage_2.R1Storage.isAvailable(),
117
+ secureStorage: storage_2.R1Storage.isSecureAvailable(),
118
+ accelerometer: await this.accelerometer.isAvailable(),
119
+ camera: await this.camera.isAvailable(),
120
+ microphone: await this.microphone.isAvailable(),
121
+ speaker: await media_2.MediaUtils.isSupported('speaker'),
122
+ messaging: typeof PluginMessageHandler !== 'undefined'
123
+ };
124
+ }
125
+ /**
126
+ * Create a simple R1 plugin with common setup
127
+ * @param config Plugin configuration
128
+ */
129
+ createPlugin(config) {
130
+ return new R1Plugin(config);
131
+ }
132
+ }
133
+ exports.R1SDK = R1SDK;
134
+ /**
135
+ * Simple plugin class for quick R1 app development
136
+ */
137
+ class R1Plugin {
138
+ constructor(config) {
139
+ this.config = config;
140
+ this.mounted = false;
141
+ this.setupEventListeners();
142
+ }
143
+ mount() {
144
+ if (this.mounted)
145
+ return;
146
+ this.mounted = true;
147
+ this.config.onMount?.();
148
+ }
149
+ unmount() {
150
+ if (!this.mounted)
151
+ return;
152
+ this.mounted = false;
153
+ this.config.onUnmount?.();
154
+ }
155
+ setupEventListeners() {
156
+ // Setup message handling
157
+ if (this.config.onMessage) {
158
+ llm_2.messaging.onMessage(this.config.onMessage);
159
+ }
160
+ // Setup hardware event handling
161
+ if (this.config.onHardwareEvent) {
162
+ const events = [
163
+ 'sideClick',
164
+ 'longPressStart',
165
+ 'longPressEnd',
166
+ 'scrollUp',
167
+ 'scrollDown'
168
+ ];
169
+ events.forEach(event => {
170
+ hardware_2.hardwareEvents.on(event, () => {
171
+ this.config.onHardwareEvent?.(event);
172
+ });
173
+ });
174
+ }
175
+ }
176
+ }
177
+ exports.R1Plugin = R1Plugin;
178
+ // Create and export default SDK instance
179
+ exports.r1 = new R1SDK();
180
+ // Export convenience functions
181
+ const initializeR1 = () => exports.r1.initialize();
182
+ exports.initializeR1 = initializeR1;
183
+ /**
184
+ * Quick setup function for simple R1 plugins
185
+ * @param setup Setup function that receives the SDK instance
186
+ */
187
+ const createR1App = (setup) => {
188
+ document.addEventListener('DOMContentLoaded', async () => {
189
+ await exports.r1.initialize();
190
+ setup(exports.r1);
191
+ });
192
+ };
193
+ exports.createR1App = createR1App;
194
+ // Default export
195
+ exports.default = exports.r1;
196
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;;;;;;;;;;;;;;;AAEH,mBAAmB;AACnB,0CAAwB;AAGxB,gBAAgB;AAChB,uCAOoB;AANlB,4GAAA,gBAAgB,OAAA;AAChB,oGAAA,QAAQ,OAAA;AACR,0GAAA,cAAc,OAAA;AACd,yGAAA,aAAa,OAAA;AACb,iGAAA,KAAK,OAAA;AACL,0GAAA,cAAc,OAAA;AAGhB,eAAe;AACf,qCAImB;AAHjB,sGAAA,WAAW,OAAA;AACX,oGAAA,SAAS,OAAA;AACT,kGAAA,OAAO,OAAA;AAGT,yBAAyB;AACzB,6BAKe;AAJb,kGAAA,WAAW,OAAA;AACX,iGAAA,UAAU,OAAA;AACV,gGAAA,SAAS,OAAA;AACT,iGAAA,UAAU,OAAA;AAGZ,eAAe;AACf,2BAOc;AANZ,8FAAA,QAAQ,OAAA;AACR,8FAAA,QAAQ,OAAA;AACR,iGAAA,WAAW,OAAA;AACX,sGAAA,gBAAgB,OAAA;AAChB,iGAAA,WAAW,OAAA;AACX,mGAAA,aAAa,OAAA;AAGf,aAAa;AACb,iCAQiB;AAPf,kGAAA,SAAS,OAAA;AACT,sGAAA,aAAa,OAAA;AACb,mGAAA,UAAU,OAAA;AACV,mGAAA,UAAU,OAAA;AACV,+FAAA,MAAM,OAAA;AACN,mGAAA,UAAU,OAAA;AACV,gGAAA,OAAO,OAAA;AAKT,yCAIoB;AACpB,uCAA+C;AAC/C,+BAA8C;AAC9C,6BAAqC;AACrC,mCAAkE;AAElE;;;GAGG;AACH,MAAa,KAAK;IAAlB;QACE,kBAAkB;QACF,kBAAa,GAAG,wBAAa,CAAC;QAC9B,UAAK,GAAG,gBAAK,CAAC;QACd,aAAQ,GAAG,yBAAc,CAAC;QAE1C,UAAU;QACM,YAAO,GAAG,iBAAO,CAAC;QAElC,oBAAoB;QACJ,cAAS,GAAG,eAAS,CAAC;QACtB,QAAG,GAAG,gBAAU,CAAC;QAEjC,QAAQ;QACQ,WAAM,GAAG,cAAM,CAAC;QAChB,eAAU,GAAG,kBAAU,CAAC;QACxB,YAAO,GAAG,eAAO,CAAC;QAElC,YAAY;QACI,eAAU,GAAG,kBAAa,CAAC;IAuD7C,CAAC;IArDC;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,qCAAqC;QACrC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QAED,yBAAyB;QACzB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,uBAAuB,kBAAa,CAAC,KAAK,IAAI,kBAAa,CAAC,MAAM,IAAI,CAAC,CAAC;QAEpF,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB;QASxB,OAAO;YACL,OAAO,EAAE,mBAAS,CAAC,WAAW,EAAE;YAChC,aAAa,EAAE,mBAAS,CAAC,iBAAiB,EAAE;YAC5C,aAAa,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;YACrD,MAAM,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YACvC,UAAU,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YAC/C,OAAO,EAAE,MAAM,kBAAU,CAAC,WAAW,CAAC,SAAS,CAAC;YAChD,SAAS,EAAE,OAAO,oBAAoB,KAAK,WAAW;SACvD,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,MAKZ;QACC,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;CACF;AA1ED,sBA0EC;AAED;;GAEG;AACH,MAAa,QAAQ;IAGnB,YAAoB,MAKnB;QALmB,WAAM,GAAN,MAAM,CAKzB;QAPO,YAAO,GAAG,KAAK,CAAC;QAQtB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QAEzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;IAC5B,CAAC;IAEO,mBAAmB;QACzB,yBAAyB;QACzB,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1B,eAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;QAED,gCAAgC;QAChC,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAChC,MAAM,MAAM,GAAwB;gBAClC,WAAW;gBACX,gBAAgB;gBAChB,cAAc;gBACd,UAAU;gBACV,YAAY;aACb,CAAC;YAEF,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACrB,yBAAc,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;oBAC5B,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC;gBACvC,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AAjDD,4BAiDC;AAED,yCAAyC;AAC5B,QAAA,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC;AAE9B,+BAA+B;AACxB,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,UAAE,CAAC,UAAU,EAAE,CAAC;AAArC,QAAA,YAAY,gBAAyB;AAElD;;;GAGG;AACI,MAAM,WAAW,GAAG,CAAC,KAA2B,EAAE,EAAE;IACzD,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,UAAE,CAAC,UAAU,EAAE,CAAC;QACtB,KAAK,CAAC,UAAE,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AALW,QAAA,WAAW,eAKtB;AAEF,iBAAiB;AACjB,kBAAe,UAAE,CAAC"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * LLM and messaging module for R1 AI integration
3
+ * Provides structured messaging and LLM interaction capabilities
4
+ */
5
+ import type { PluginMessageResponse } from '../types';
6
+ export interface LLMOptions {
7
+ wantsR1Response?: boolean;
8
+ wantsJournalEntry?: boolean;
9
+ }
10
+ export interface MessageOptions extends LLMOptions {
11
+ useLLM?: boolean;
12
+ }
13
+ /**
14
+ * Type-safe LLM response handler
15
+ */
16
+ export type MessageHandler<T = any> = (response: PluginMessageResponse & {
17
+ parsedData?: T;
18
+ }) => void;
19
+ /**
20
+ * LLM and messaging API for R1 interactions
21
+ */
22
+ export declare class R1Messaging {
23
+ private messageHandlers;
24
+ private isInitialized;
25
+ constructor();
26
+ /**
27
+ * Send a simple message to the server
28
+ * @param message Message text
29
+ * @param options Message options
30
+ */
31
+ sendMessage(message: string, options?: MessageOptions): Promise<void>;
32
+ /**
33
+ * Send a message and get LLM response
34
+ * @param message Message text
35
+ * @param options LLM options
36
+ */
37
+ askLLM(message: string, options?: LLMOptions): Promise<void>;
38
+ /**
39
+ * Ask LLM to speak response through R1 speaker
40
+ * @param message Message text
41
+ * @param saveToJournal Whether to save interaction to journal
42
+ */
43
+ askLLMSpeak(message: string, saveToJournal?: boolean): Promise<void>;
44
+ /**
45
+ * Ask LLM for JSON structured response
46
+ * @param message Message text (should specify desired JSON format)
47
+ * @param options LLM options
48
+ */
49
+ askLLMJSON<T = any>(message: string, options?: LLMOptions): Promise<void>;
50
+ /**
51
+ * Add message handler for incoming responses
52
+ * @param handler Function to handle incoming messages
53
+ */
54
+ onMessage<T = any>(handler: MessageHandler<T>): void;
55
+ /**
56
+ * Remove message handler
57
+ * @param handler Handler function to remove
58
+ */
59
+ offMessage(handler: MessageHandler): void;
60
+ /**
61
+ * Remove all message handlers
62
+ */
63
+ removeAllHandlers(): void;
64
+ /**
65
+ * Close the current plugin/webview
66
+ */
67
+ closePlugin(): void;
68
+ private initializeMessageHandler;
69
+ }
70
+ /**
71
+ * Convenient helper functions for common LLM interactions
72
+ */
73
+ export declare class LLMHelpers {
74
+ private messaging;
75
+ constructor(messaging: R1Messaging);
76
+ /**
77
+ * Ask LLM about user memories/context
78
+ */
79
+ getUserMemories(): Promise<void>;
80
+ /**
81
+ * Ask LLM to analyze an image or data
82
+ * @param prompt Analysis prompt
83
+ * @param data Optional data to analyze
84
+ */
85
+ analyzeData(prompt: string, data?: any): Promise<void>;
86
+ /**
87
+ * Ask LLM to perform a task and speak the result
88
+ * @param task Task description
89
+ * @param saveToJournal Whether to save to journal
90
+ */
91
+ performTask(task: string, saveToJournal?: boolean): Promise<void>;
92
+ /**
93
+ * Get LLM suggestions for user interface
94
+ * @param context Current UI context
95
+ */
96
+ getUISuggestions(context: string): Promise<void>;
97
+ }
98
+ export declare const messaging: R1Messaging;
99
+ export declare const llmHelpers: LLMHelpers;
100
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAiB,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAErE,MAAM,WAAW,UAAU;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,qBAAqB,GAAG;IAAE,UAAU,CAAC,EAAE,CAAC,CAAA;CAAE,KAAK,IAAI,CAAC;AAErG;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,aAAa,CAAS;;IAM9B;;;;OAIG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/E;;;;OAIG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtE;;;;OAIG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjF;;;;OAIG;IACG,UAAU,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnF;;;OAGG;IACH,SAAS,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAIpD;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIzC;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;OAEG;IACH,WAAW,IAAI,IAAI;IAMnB,OAAO,CAAC,wBAAwB;CAiCjC;AAED;;GAEG;AACH,qBAAa,UAAU;IACT,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,WAAW;IAE1C;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtC;;;;OAIG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5D;;;;OAIG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7E;;;OAGG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAMvD;AAGD,eAAO,MAAM,SAAS,aAAoB,CAAC;AAC3C,eAAO,MAAM,UAAU,YAA4B,CAAC"}