import type { ApprovedCommand } from '@operato/ops-contract'; import { type ActuationReadiness } from './reference-adapter.js'; import { type ActuationTarget } from './actuation-target.js'; /** 어댑터가 답하는 모양 그대로 — 디스패처가 이 값을 커맨드 행에 적는다. */ /** * 조치를 낸 결과 — **어댑터가 답한 것을 좁히지 않고 그대로 나른다.** * * ── 왜 넓혔나 (2026-09-04, 인티그레이션 레인이 찾음) ──────────────────────── * 이 타입이 `ok`·`ref`·`error` 셋만 들고 있었다. 그래서 `routeActuation` 이 어댑터의 답을 * 그대로 되돌리는데 **타입은 `note`·`noteNext`·`retry` 를 버린다고 말했다.** * * 값은 흘렀다 — JS 객체가 키를 안 버리므로. 어제 `dispatch_note` 에 실제로 앉았다. 그런데 * **커넥터를 만드는 사람이 그 칸이 있다는 것을 알 방법이 없었다.** 우리가 어제 하루 종일 * 「자리는 있고 길이 없다」로 부른 것의 타입 버전이다. * * 좁히지 않는다: 세 칸을 다 실어 `CommandAck` 와 같은 모양으로 둔다. 커널이 어느 칸을 어떻게 * 쓰는지는 `dispatch` 가 정하고, 이 자리는 나르기만 한다. */ export interface ActuationAck { ok: boolean; /** 저쪽 문서·작업 식별자. 없으면 무엇을 되돌릴지 지목할 수 없다. */ ref?: string; /** 받아들였으나 저쪽이 덧붙인 말 — **실패가 아니다.** 원인 쪽 문장. */ note?: string; /** 그 말 중 다음에 할 일 한 줄 — 붙여 보내지 않는다. */ noteNext?: string; error?: string; /** 다시 해서 될 일인가 — 실패에만. 말하지 않으면 일꾼이 집지 않는다. */ retry?: 'again' | 'after-fix' | 'never'; } /** * 이 트윈의 원본에 승인된 조치를 보낸다. * * **거절할 때는 무엇이 없어서인지 말한다.** 「보내지 못했습니다」만 답하면 사람이 연결 설정을 열어야 * 하는지, 커넥터를 고쳐야 하는지, 트윈을 다시 만들어야 하는지 알 수 없다. */ export declare function routeActuation(domainId: string, instanceId: string, command: ApprovedCommand): Promise; /** * 이 트윈이 조치를 받을 수 있나 — **넘기기 전에 화면이 먼저 알 수 있게.** * * 승인 화면이 「넘기기」를 보이기 전에 이것을 묻는다. 누를 수 없는 것을 보여 주고 눌렀을 때 거절하는 * 것보다, 왜 못 넘기는지 먼저 말하는 것이 낫다. */ export declare function actuationTargetOf(domainId: string, instanceId: string): Promise; /** * **저쪽이 받을 준비가 됐나** — 넘기기 전에 묻는다. 화면이 사람을 헛걸음시키지 않게. * * ── 왜 `actuationTargetOf` 와 따로인가 ────────────────────────────────────── * 그쪽은 **망을 타지 않는다.** 화면이 목록을 그릴 때마다 부를 수 있어야 하므로 그래야 한다. * 이 함수는 커넥터가 저쪽에 물을 수 있고, 그래서 부르는 시점이 다르다 — 사람이 「넘기기」를 * 열었을 때다. * * ── 답이 문이 아니다 ──────────────────────────────────────────────────────── * **이 답으로 넘김을 막지 않는다.** 막으면 점검이 틀렸거나 잠깐 못 닿은 사이에 성공할 수 있었던 * 조치가 못 나간다. 화면이 미리 말하는 데까지가 이 함수의 일이다. * * 커넥터가 이 얼굴을 안 만들었으면 **「모른다」로 답한다** — 「준비됐다」가 아니다. 없는 확인을 * 통과로 읽으면 이 함수가 있으나 없으나 같아진다. */ export declare function actuationReadinessOf(domainId: string, instanceId: string): Promise;