chore: convert plugin to ESM and migrate to current openclaw plugin SDK
ESM conversion:
- plugin/package.json: add "type": "module".
- plugin/tsconfig.json: switch module/moduleResolution to "nodenext"; bump
target to ES2022.
- All relative imports across plugin/ now carry .js extensions as required
by Node ESM (nodenext module resolution).
- plugin/index.ts: replace `require('./calendar/schedule-cache')` with a
proper top-level import; switch `from 'os'` to `from 'node:os'`.
Plugin SDK convention update:
- Wrap default export with definePluginEntry({ id, name, description,
register }) per the current openclaw plugin authoring contract.
- Modernize plugin/openclaw.plugin.json: drop entry/version, add
activation.onStartup so gateway_start fires for this plugin at boot,
declare contracts.tools listing the five harborforge_* tools.
- Add a local plugin/openclaw-sdk.d.ts with ambient declarations for the
focused subpaths (openclaw/plugin-sdk/plugin-entry,
openclaw/plugin-sdk/core). We deliberately do NOT add openclaw as an
npm devDependency: the installer's `npm install --omit=dev` step trips
over openclaw's own (deeply nested) dependency graph when listed via
file:.../openclaw, and the runtime contract is provided by the gateway
loader anyway.
- The local PluginAPI interface is preserved (broader than the standard
OpenClawPluginApi — it surfaces `version`/`runtime`/`spawn`); the
register function is cast at the definePluginEntry boundary.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -29,7 +29,7 @@ import {
|
||||
CalendarSlotResponse,
|
||||
SlotAgentUpdate,
|
||||
SlotStatus,
|
||||
} from './types';
|
||||
} from './types.js';
|
||||
|
||||
export interface CalendarBridgeConfig {
|
||||
/** HarborForge backend base URL (e.g. "https://monitor.hangman-lab.top") */
|
||||
@@ -292,7 +292,7 @@ export class CalendarBridgeClient {
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
import { hostname } from 'os';
|
||||
import { getPluginConfig } from '../core/config';
|
||||
import { getPluginConfig } from '../core/config.js';
|
||||
|
||||
export interface CalendarPluginConfig {
|
||||
/** Backend URL for calendar API (overrides monitor backendUrl) */
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
* • AgentWakeContext — context passed to agent when waking
|
||||
*
|
||||
* Usage in plugin/index.ts:
|
||||
* import { createCalendarBridgeClient, createCalendarScheduler } from './calendar';
|
||||
* import { createCalendarBridgeClient, createCalendarScheduler } from './calendar.js';
|
||||
*
|
||||
* const agentId = process.env.AGENT_ID || 'unknown';
|
||||
* const calendar = createCalendarBridgeClient(api, 'https://monitor.hangman-lab.top', agentId);
|
||||
@@ -28,7 +28,7 @@
|
||||
* scheduler.start();
|
||||
*/
|
||||
|
||||
export * from './types';
|
||||
export * from './calendar-bridge';
|
||||
export * from './scheduler';
|
||||
export * from './schedule-cache';
|
||||
export * from './types.js';
|
||||
export * from './calendar-bridge.js';
|
||||
export * from './scheduler.js';
|
||||
export * from './schedule-cache.js';
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
import { writeFileSync, readFileSync, existsSync, mkdirSync } from 'fs';
|
||||
import { join, dirname } from 'path';
|
||||
import { CalendarBridgeClient } from './calendar-bridge';
|
||||
import { CalendarBridgeClient } from './calendar-bridge.js';
|
||||
import {
|
||||
CalendarSlotResponse,
|
||||
SlotStatus,
|
||||
@@ -26,7 +26,7 @@ import {
|
||||
SlotAgentUpdate,
|
||||
CalendarEventDataJob,
|
||||
CalendarEventDataSystemEvent,
|
||||
} from './types';
|
||||
} from './types.js';
|
||||
|
||||
export interface CalendarSchedulerConfig {
|
||||
/** Calendar bridge client for backend communication */
|
||||
|
||||
Reference in New Issue
Block a user