feat(plugin): PLG-CAL-001 - define Calendar heartbeat request/response format

- Add plugin/calendar/types.ts: TypeScript interfaces for heartbeat
  request/response (CalendarHeartbeatRequest/Response, CalendarSlotResponse,
  SlotAgentUpdate, all enums: SlotType, SlotStatus, EventType)
- Add plugin/calendar/calendar-bridge.ts: CalendarBridgeClient HTTP client
  with heartbeat(), updateSlot(), updateVirtualSlot(), reportAgentStatus()
- Add plugin/calendar/index.ts: module entry point exporting all public types
- Add docs/PLG-CAL-001-calendar-heartbeat-format.md: full specification
  documenting claw_identifier and agent_id determination, request/response
  shapes, error handling, and endpoint summary
- Update plugin/openclaw.plugin.json: add calendarEnabled,
  calendarHeartbeatIntervalSec, calendarApiKey config options; clarify
  identifier description as claw_identifier

Refs: HarborForge.NEXT_WAVE_DEV_DIRECTION.md §6, BE-AGT-001
This commit is contained in:
zhi
2026-04-01 07:51:39 +00:00
parent 188d0a48d7
commit 55d7d11a52
18 changed files with 1429 additions and 16 deletions

23
plugin/calendar/index.d.ts vendored Normal file
View File

@@ -0,0 +1,23 @@
/**
* HarborForge Calendar — Plugin Module
*
* PLG-CAL-001: Calendar heartbeat request/response format definition.
*
* Exports:
* • Types for heartbeat request/response and slot update
* • CalendarBridgeClient — HTTP client for backend communication
* • createCalendarBridgeClient — factory from plugin API context
*
* Usage in plugin/index.ts:
* import { createCalendarBridgeClient } from './calendar';
*
* const agentId = process.env.AGENT_ID || 'unknown';
* const calendar = createCalendarBridgeClient(api, 'https://monitor.hangman-lab.top', agentId);
*
* // Inside gateway_start or heartbeat tick:
* const result = await calendar.heartbeat();
* if (result?.slots.length) { /* handle pending slots /\ }
*/
export * from './types';
export * from './calendar-bridge';
//# sourceMappingURL=index.d.ts.map