@redplanethq/corebrain 2.5.10 → 2.5.11

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.
Binary file
Binary file
@@ -0,0 +1,29 @@
1
+ import zod from 'zod';
2
+ import type { GatewayTool } from '../../server/tools/browser-tools.js';
3
+ export declare function isHealthKitBinaryInstalled(): boolean;
4
+ export declare const HealthKitWorkoutsSchema: zod.ZodObject<{
5
+ limit: zod.ZodDefault<zod.ZodOptional<zod.ZodNumber>>;
6
+ start: zod.ZodOptional<zod.ZodString>;
7
+ end: zod.ZodOptional<zod.ZodString>;
8
+ }, zod.core.$strip>;
9
+ export declare const HealthKitHeartRateSchema: zod.ZodObject<{
10
+ limit: zod.ZodDefault<zod.ZodOptional<zod.ZodNumber>>;
11
+ start: zod.ZodOptional<zod.ZodString>;
12
+ end: zod.ZodOptional<zod.ZodString>;
13
+ }, zod.core.$strip>;
14
+ export declare const HealthKitStepsSchema: zod.ZodObject<{
15
+ start: zod.ZodOptional<zod.ZodString>;
16
+ end: zod.ZodOptional<zod.ZodString>;
17
+ }, zod.core.$strip>;
18
+ export declare const HealthKitSleepSchema: zod.ZodObject<{
19
+ limit: zod.ZodDefault<zod.ZodOptional<zod.ZodNumber>>;
20
+ start: zod.ZodOptional<zod.ZodString>;
21
+ end: zod.ZodOptional<zod.ZodString>;
22
+ }, zod.core.$strip>;
23
+ export declare const healthkitTools: GatewayTool[];
24
+ export declare function executeHealthKitTool(toolName: string, params: Record<string, unknown>): Promise<{
25
+ success: boolean;
26
+ result?: unknown;
27
+ error?: string;
28
+ }>;
29
+ //# sourceMappingURL=healthkit-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"healthkit-tools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/healthkit-tools.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAItB,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAC;AAY9D,wBAAgB,0BAA0B,IAAI,OAAO,CAEpD;AAID,eAAO,MAAM,uBAAuB;;;;mBAIlC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;mBAInC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;mBAG/B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;mBAI/B,CAAC;AA4CH,eAAO,MAAM,cAAc,EAAE,WAAW,EAqBvC,CAAC;AAuDF,wBAAsB,oBAAoB,CACzC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC,CAmD/D"}
@@ -0,0 +1,192 @@
1
+ import zod from 'zod';
2
+ import { spawn } from 'node:child_process';
3
+ import { join } from 'node:path';
4
+ import { existsSync } from 'node:fs';
5
+ // ============ Binary path ============
6
+ const BINARY_PATH = join('/Applications', 'CoreBrainGateway.app', 'Contents', 'MacOS', 'CoreBrainHealthKit');
7
+ export function isHealthKitBinaryInstalled() {
8
+ return existsSync(BINARY_PATH);
9
+ }
10
+ // ============ Zod Schemas ============
11
+ export const HealthKitWorkoutsSchema = zod.object({
12
+ limit: zod.number().optional().default(10).describe('Number of workouts to return (default: 10)'),
13
+ start: zod.string().optional().describe('Start date filter (ISO 8601 or YYYY-MM-DD)'),
14
+ end: zod.string().optional().describe('End date filter (ISO 8601 or YYYY-MM-DD)'),
15
+ });
16
+ export const HealthKitHeartRateSchema = zod.object({
17
+ limit: zod.number().optional().default(50).describe('Number of readings to return (default: 50)'),
18
+ start: zod.string().optional().describe('Start date filter (ISO 8601 or YYYY-MM-DD)'),
19
+ end: zod.string().optional().describe('End date filter (ISO 8601 or YYYY-MM-DD)'),
20
+ });
21
+ export const HealthKitStepsSchema = zod.object({
22
+ start: zod.string().optional().describe('Start date (ISO 8601 or YYYY-MM-DD, default: 7 days ago)'),
23
+ end: zod.string().optional().describe('End date (ISO 8601 or YYYY-MM-DD, default: now)'),
24
+ });
25
+ export const HealthKitSleepSchema = zod.object({
26
+ limit: zod.number().optional().default(50).describe('Number of sleep records to return (default: 50)'),
27
+ start: zod.string().optional().describe('Start date filter (ISO 8601 or YYYY-MM-DD)'),
28
+ end: zod.string().optional().describe('End date filter (ISO 8601 or YYYY-MM-DD)'),
29
+ });
30
+ // ============ JSON Schemas ============
31
+ const jsonSchemas = {
32
+ healthkit_workouts: {
33
+ type: 'object',
34
+ properties: {
35
+ limit: { type: 'number', description: 'Number of workouts to return (default: 10)' },
36
+ start: { type: 'string', description: 'Start date filter (ISO 8601 or YYYY-MM-DD)' },
37
+ end: { type: 'string', description: 'End date filter (ISO 8601 or YYYY-MM-DD)' },
38
+ },
39
+ required: [],
40
+ },
41
+ healthkit_heart_rate: {
42
+ type: 'object',
43
+ properties: {
44
+ limit: { type: 'number', description: 'Number of readings to return (default: 50)' },
45
+ start: { type: 'string', description: 'Start date filter (ISO 8601 or YYYY-MM-DD)' },
46
+ end: { type: 'string', description: 'End date filter (ISO 8601 or YYYY-MM-DD)' },
47
+ },
48
+ required: [],
49
+ },
50
+ healthkit_steps: {
51
+ type: 'object',
52
+ properties: {
53
+ start: { type: 'string', description: 'Start date (default: 7 days ago)' },
54
+ end: { type: 'string', description: 'End date (default: now)' },
55
+ },
56
+ required: [],
57
+ },
58
+ healthkit_sleep: {
59
+ type: 'object',
60
+ properties: {
61
+ limit: { type: 'number', description: 'Number of sleep records to return (default: 50)' },
62
+ start: { type: 'string', description: 'Start date filter (ISO 8601 or YYYY-MM-DD)' },
63
+ end: { type: 'string', description: 'End date filter (ISO 8601 or YYYY-MM-DD)' },
64
+ },
65
+ required: [],
66
+ },
67
+ };
68
+ // ============ Tool Definitions ============
69
+ export const healthkitTools = [
70
+ {
71
+ name: 'healthkit_workouts',
72
+ description: 'Get recent workouts/fitness sessions from HealthKit. Returns type, duration, calories, distance.',
73
+ inputSchema: jsonSchemas.healthkit_workouts,
74
+ },
75
+ {
76
+ name: 'healthkit_heart_rate',
77
+ description: 'Get heart rate readings from HealthKit.',
78
+ inputSchema: jsonSchemas.healthkit_heart_rate,
79
+ },
80
+ {
81
+ name: 'healthkit_steps',
82
+ description: 'Get step count for a date range from HealthKit.',
83
+ inputSchema: jsonSchemas.healthkit_steps,
84
+ },
85
+ {
86
+ name: 'healthkit_sleep',
87
+ description: 'Get sleep analysis records from HealthKit (inBed, core, deep, rem, awake).',
88
+ inputSchema: jsonSchemas.healthkit_sleep,
89
+ },
90
+ ];
91
+ // ============ Binary runner ============
92
+ function runBinary(command, args) {
93
+ return new Promise((resolve, reject) => {
94
+ if (!isHealthKitBinaryInstalled()) {
95
+ reject(new Error('CoreBrainHealthKit binary not found. Run: cd packages/cli/src/swift && ./build-healthkit.sh YOUR_TEAM_ID'));
96
+ return;
97
+ }
98
+ const proc = spawn(BINARY_PATH, [command, ...args], {
99
+ stdio: ['ignore', 'pipe', 'pipe'],
100
+ });
101
+ let stdout = '';
102
+ let stderr = '';
103
+ proc.stdout.on('data', (d) => { stdout += d.toString(); });
104
+ proc.stderr.on('data', (d) => { stderr += d.toString(); });
105
+ proc.on('close', (code, signal) => {
106
+ if (stdout.trim()) {
107
+ try {
108
+ const parsed = JSON.parse(stdout.trim());
109
+ if (parsed.error) {
110
+ reject(new Error(parsed.error));
111
+ }
112
+ else {
113
+ resolve(parsed);
114
+ }
115
+ return;
116
+ }
117
+ catch {
118
+ reject(new Error(`Failed to parse HealthKit output: ${stdout}`));
119
+ return;
120
+ }
121
+ }
122
+ if (code !== 0 || signal) {
123
+ reject(new Error(`HealthKit binary exited with code ${code} signal ${signal}: ${stderr}`));
124
+ }
125
+ else {
126
+ resolve({});
127
+ }
128
+ });
129
+ proc.on('error', (err) => {
130
+ reject(new Error(`Failed to spawn HealthKit binary: ${err.message}`));
131
+ });
132
+ });
133
+ }
134
+ // ============ Tool Execution ============
135
+ export async function executeHealthKitTool(toolName, params) {
136
+ try {
137
+ switch (toolName) {
138
+ case 'healthkit_workouts': {
139
+ const p = HealthKitWorkoutsSchema.parse(params);
140
+ const args = ['--limit', String(p.limit)];
141
+ if (p.start)
142
+ args.push('--start', p.start);
143
+ if (p.end)
144
+ args.push('--end', p.end);
145
+ const result = await runBinary('workouts', args);
146
+ return { success: true, result };
147
+ }
148
+ case 'healthkit_heart_rate': {
149
+ const p = HealthKitHeartRateSchema.parse(params);
150
+ const args = ['--limit', String(p.limit)];
151
+ if (p.start)
152
+ args.push('--start', p.start);
153
+ if (p.end)
154
+ args.push('--end', p.end);
155
+ const result = await runBinary('heart_rate', args);
156
+ return { success: true, result };
157
+ }
158
+ case 'healthkit_steps': {
159
+ const p = HealthKitStepsSchema.parse(params);
160
+ const args = [];
161
+ if (p.start)
162
+ args.push('--start', p.start);
163
+ if (p.end)
164
+ args.push('--end', p.end);
165
+ const result = await runBinary('steps', args);
166
+ return { success: true, result };
167
+ }
168
+ case 'healthkit_sleep': {
169
+ const p = HealthKitSleepSchema.parse(params);
170
+ const args = ['--limit', String(p.limit)];
171
+ if (p.start)
172
+ args.push('--start', p.start);
173
+ if (p.end)
174
+ args.push('--end', p.end);
175
+ const result = await runBinary('sleep', args);
176
+ return { success: true, result };
177
+ }
178
+ default:
179
+ return { success: false, error: `Unknown tool: ${toolName}` };
180
+ }
181
+ }
182
+ catch (err) {
183
+ if (err instanceof zod.ZodError) {
184
+ return { success: false, error: `Invalid parameters: ${err.message}` };
185
+ }
186
+ return {
187
+ success: false,
188
+ error: err instanceof Error ? err.message : 'Unknown error',
189
+ };
190
+ }
191
+ }
192
+ //# sourceMappingURL=healthkit-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"healthkit-tools.js","sourceRoot":"","sources":["../../../src/server/tools/healthkit-tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"app-bundle.d.ts","sourceRoot":"","sources":["../../src/utils/app-bundle.ts"],"names":[],"mappings":"AAcA,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CA4ChF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAejD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAa5C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C"}
1
+ {"version":3,"file":"app-bundle.d.ts","sourceRoot":"","sources":["../../src/utils/app-bundle.ts"],"names":[],"mappings":"AAeA,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAwDhF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAejD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAa5C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C"}
@@ -1,5 +1,5 @@
1
1
  import { execSync } from 'node:child_process';
2
- import { existsSync, mkdirSync, writeFileSync, chmodSync, } from 'node:fs';
2
+ import { existsSync, mkdirSync, writeFileSync, chmodSync, copyFileSync, } from 'node:fs';
3
3
  import { join, dirname } from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
5
5
  const APP_NAME = 'CoreBrainGateway.app';
@@ -24,9 +24,18 @@ export function isAppBundleInstalled() {
24
24
  export function createAppBundle(nodePath, gatewayEntryPath) {
25
25
  const contentsDir = join(APP_PATH, 'Contents');
26
26
  const macosDir = join(contentsDir, 'MacOS');
27
+ const resourcesDir = join(contentsDir, 'Resources');
27
28
  const executablePath = getAppExecutablePath();
28
29
  // Create directory structure
29
30
  mkdirSync(macosDir, { recursive: true });
31
+ mkdirSync(resourcesDir, { recursive: true });
32
+ // Copy app icon
33
+ const __filename = fileURLToPath(import.meta.url);
34
+ const __dirname = dirname(__filename);
35
+ const icnsSource = join(__dirname, '..', 'assets', 'AppIcon.icns');
36
+ if (existsSync(icnsSource)) {
37
+ copyFileSync(icnsSource, join(resourcesDir, 'AppIcon.icns'));
38
+ }
30
39
  // Info.plist — gives the process a bundle identity TCC can track
31
40
  const infoPlist = `<?xml version="1.0" encoding="UTF-8"?>
32
41
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
@@ -40,6 +49,8 @@ export function createAppBundle(nodePath, gatewayEntryPath) {
40
49
  <string>CoreBrain Gateway</string>
41
50
  <key>CFBundleExecutable</key>
42
51
  <string>CoreBrainGateway</string>
52
+ <key>CFBundleIconFile</key>
53
+ <string>AppIcon</string>
43
54
  <key>CFBundleVersion</key>
44
55
  <string>1.0</string>
45
56
  <key>CFBundleShortVersionString</key>
@@ -1 +1 @@
1
- {"version":3,"file":"app-bundle.js","sourceRoot":"","sources":["../../src/utils/app-bundle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-bundle.js","sourceRoot":"","sources":["../../src/utils/app-bundle.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redplanethq/corebrain",
3
- "version": "2.5.10",
3
+ "version": "2.5.11",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": ">=16"
@@ -66,7 +66,7 @@
66
66
  },
67
67
  "prettier": "@vdemedes/prettier-config",
68
68
  "scripts": {
69
- "build": "tsc && tsc-alias && chmod +x dist/cli.js",
69
+ "build": "tsc && tsc-alias && chmod +x dist/cli.js && cp -r src/assets dist/assets",
70
70
  "test": "prettier --check . && xo && ava"
71
71
  }
72
72
  }