fix(packages): load bundled Pi runtime for local installs
This commit is contained in:
@@ -17,6 +17,7 @@ import type { PiProductTools } from './product-tools';
|
||||
import type { CodingPluginToolDefinition } from '../../../shared/coding-plugins';
|
||||
import type { PiSkillEntry } from './resource-loader';
|
||||
import type { EffectivePluginSnapshot } from '../../coding-plugins/effective-resolver';
|
||||
import { DevicePackageError } from '../../coding-packages/device-package-manager';
|
||||
|
||||
const MAX_REQUEST_BYTES = 64 * 1024;
|
||||
const PRODUCT_TOOL_NAME_PATTERN = /^[A-Za-z][A-Za-z0-9._:-]{0,63}$/u;
|
||||
@@ -483,7 +484,14 @@ export class PiManagedExtensionHost {
|
||||
response.removeListener('close', cancel);
|
||||
record.waiters.delete(value.resourceId);
|
||||
}
|
||||
} catch {
|
||||
} catch (error) {
|
||||
if (!response.writableEnded && error instanceof DevicePackageError) {
|
||||
this.respond(response, 400, {
|
||||
code: error.code,
|
||||
error: error.message.slice(0, 512),
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!response.writableEnded) this.respond(response, 400, { error: 'Bridge request failed' });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import path from 'node:path';
|
||||
import { atomicWriteText } from '../../../coding-projects/atomic-json';
|
||||
|
||||
export const MAKELORE_PI_EXTENSION_VERSION = 4;
|
||||
export const MAKELORE_PI_EXTENSION_VERSION = 5;
|
||||
export const MAKELORE_PI_EXTENSION_FILENAME = `makelore-runtime-v${MAKELORE_PI_EXTENSION_VERSION}.mjs`;
|
||||
|
||||
const BUNDLE_SOURCE = String.raw`
|
||||
@@ -93,7 +93,15 @@ export function createMakeloreRuntime(runtimeDefaults = {}) {
|
||||
signal,
|
||||
});
|
||||
const result = await response.json().catch(() => ({}));
|
||||
if (!response.ok) throw new Error(result.error || 'Makelore runtime bridge rejected the request');
|
||||
if (!response.ok) {
|
||||
const message = typeof result.error === 'string' && result.error
|
||||
? result.error
|
||||
: 'Makelore runtime bridge rejected the request';
|
||||
const code = typeof result.code === 'string' && /^local_package_[a-z_]+$/.test(result.code)
|
||||
? result.code
|
||||
: '';
|
||||
throw new Error(code ? code + ': ' + message : message);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user