import assert from 'node:assert/strict'; import plugin, { runForceRecallContinuityAdapter, runGenericPreflightContinuityAdapter, validateContinuityConfig, } from '../src/index.mjs'; const configResult = validateContinuityConfig(plugin.defaultConfig); assert.equal(configResult.ok, true); const smoke = runForceRecallContinuityAdapter({ config: plugin.defaultConfig, wrapperResult: { classification: 'long_task', planId: 'plan-smoke', currentTask: 'task-8', replyClosureState: 'completed', dispatchReceipt: null, }, autoChainPlanResult: { derivedAction: 'continue_task_9', dispatchMode: 'message_subagent', }, }); assert.equal(smoke.result.ok, false); assert.equal(smoke.result.reason, 'missing_auto_next_dispatch'); assert.match(smoke.block, /APPROVED_PLAN_CONTINUITY_GATE/); assert.equal(smoke.meta.adapterName, 'force-recall'); const genericSmoke = runGenericPreflightContinuityAdapter({ config: plugin.defaultConfig, source: { planId: 'plan-generic-smoke', currentTask: 'task-9', taskState: 'complete', nextTaskKnown: true, sameApprovedPlan: true, taskBoundaryStop: true, nextTaskId: 'task-10', nextDerivedAction: { type: 'message_subagent', task: 'continue' }, replyClosureState: 'completed', dispatchReceipt: null, }, }); assert.equal(genericSmoke.result.ok, false); assert.equal(genericSmoke.result.reason, 'missing_auto_next_dispatch'); assert.match(genericSmoke.block, /APPROVED_PLAN_CONTINUITY_GATE/); assert.equal(genericSmoke.meta.adapterName, 'generic-preflight'); console.log('continuity.smoke.test.mjs PASS');