@things-factory/board-ai 10.1.7 → 10.1.13

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.
@@ -206,6 +206,21 @@ export class DefaultBoardAIAssistant {
206
206
  messages: messages.map(m => (typeof m.content === 'string' ? m.content : '')),
207
207
  toolResults: loopResult.groundedTexts
208
208
  });
209
+ const analysis = (toolUsages.length || patch || accumulatedActions.length || loopResult.proposals.length)
210
+ ? {
211
+ kind: 'board.analysis.v1',
212
+ scope: { boardId: currentBoard?.id },
213
+ window: { turn: messages.length },
214
+ confidence: { level: warnings.length ? 'low' : 'medium', reasons: warnings.length ? ['grounding-warning'] : ['tool-or-board-context'] },
215
+ limitations: warnings.map(code => ({ code })),
216
+ claims: [{ code: patch ? 'board.patch-proposed' : 'board.context-reviewed', severity: 'info', evidence: { toolCalls: toolUsages.length, componentCount: components.length }, method: 'board-agentic-loop', assumptions: ['Board context is current for this turn.'] }],
217
+ facts: { board: boardContext, toolUsages },
218
+ ...(patch ? { proposal: patch } : accumulatedActions.length ? { proposal: accumulatedActions } : {}),
219
+ approvalRequired: true,
220
+ approval: { required: true, mode: 'confirm', reason: patch || accumulatedActions.length ? 'Board or scene change requires user confirmation.' : 'Analysis is advisory.' },
221
+ trace: { source: 'board-ai', generatedAt: new Date().toISOString(), version: '1' }
222
+ }
223
+ : undefined;
209
224
  return {
210
225
  reply,
211
226
  patch,
@@ -214,7 +229,8 @@ export class DefaultBoardAIAssistant {
214
229
  actions: accumulatedActions.length > 0 ? accumulatedActions : undefined,
215
230
  /* 제안은 실행 전 상태다 — 대화면이 확인 버튼을 그린다. 서버는 실행하지 않는다. */
216
231
  proposals: loopResult.proposals.length > 0 ? loopResult.proposals : undefined,
217
- groundingWarnings: warnings.length > 0 ? warnings : undefined
232
+ groundingWarnings: warnings.length > 0 ? warnings : undefined,
233
+ analysis
218
234
  };
219
235
  }
220
236
  resolveTypesAndCategories(options) {