dory-to-dory-mcp 0.2.0 → 0.4.0

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.
package/README.md CHANGED
@@ -11,13 +11,13 @@
11
11
  - lease/fencing token이 있는 work claim, 사용자 확인, host 갱신과 client 응답 제출
12
12
  - 참여자별 nullable session 연결과 revision 기반 명시적 이동·해제
13
13
  - Core API key 기반 인증
14
- - MCP Tools 21개 제공
14
+ - MCP Tools 22개 제공
15
15
 
16
- 버전은 `0.2.0`이며 Core `/v2` 계약이 필요합니다. npm에서 정확한 버전을 고정해 설치하거나 검증한 tarball을 사용할 수 있습니다. 구형 `/v1` 쓰기를 새 계약으로 자동 변환하지 않으며 진행 중인 구형 작업에는 기존 MCP 버전을 사용합니다.
16
+ 버전 `0.4.0`은 검색 증빙 발급 API와 실행 담당자 규약 2를 지원하는 Core `/v2` 계약이 필요합니다. `POST /v2/agent/work/{work_id}/question`, 단일 담당자 인계, 같은 work 재개를 지원하는 Core migration을 먼저 적용해야 합니다. 호환 Core를 먼저 적용하고 정확한 MCP 버전을 고정해 설치하십시오. npm 게시 전 검증이나 사내 배포에는 로컬 빌드 또는 tarball을 사용할 수 있습니다. 구형 `/v1` 쓰기를 새 계약으로 자동 변환하지 않으며 진행 중인 구형 작업에는 기존 MCP 버전을 사용합니다.
17
17
 
18
18
  ### 카드와 세션 도구
19
19
 
20
- `d2d_create_coordination`은 `client_handles`, `goal`을 받습니다. `goal_type`은 제거했습니다. 매 새 coordination 생성 전에 `d2d_search_coordination_skills`를 최소 한 번 호출하도록 안내합니다. 관련 후보는 `d2d_get_coordination_skill`로 조건·계획 템플릿·정확한 버전을 확인한 뒤 plan을 작성합니다. 적합한 후보가 없으면 skill 없이 직접 계획하며, 검색 이력을 서버에서 강제 검증하지는 않습니다. `d2d_run_skill_code`는 skill에 등록된 코드와 입력 스키마를 사용합니다.
20
+ `d2d_create_coordination`은 `client_handles`, `goal`, `skill_search_id`를 받습니다. `goal_type`은 제거했습니다. 매 새 coordination 생성 전에 `d2d_search_coordination_skills`를 동일한 goal로 최소 한 번 정상 완료해야 합니다. 검색 도구는 `POST /v2/agent/skill-searches`로 증빙을 발급받으며 검색 입력은 `goal`(필수), `query`(최대 200자, 기본 빈 문자열), `operation_id`(선택)입니다. 반환된 `skill_search_id`를 생성에 전달합니다. 관련 후보는 `d2d_get_coordination_skill`로 조건·계획 템플릿·정확한 버전을 확인한 뒤 plan을 작성합니다. 적합한 후보가 없으면 skill 없이 직접 계획하며, Core는 실제 검색 완료 증빙의 호출자·goal·만료·일회 사용을 검증합니다. 결과가 0건이거나 LLM이 유효한 Skill이 없다고 판단하면 `skill=null`로 생성할 수 있습니다. 검색 결과나 선택 판단은 검토하지 않습니다. 검색 오류는 최초 1회와 최대 3회 재시도, 총 4회 HTTP 요청으로 제한하고 `D2D_MAX_RETRIES`와 중첩하지 않습니다. HTTP 408을 포함한 검색 오류를 재시도하되, Core가 명시한 `skill_search_exhausted`·`idempotency_conflict`는 즉시 종료합니다. 동일 `operation_id`와 goal/query의 실행 중·성공·실패 결과는 MCP 프로세스에서 공유하므로 중복·동시 도구 호출로 HTTP 재시도 예산을 초기화할 수 없습니다. 같은 키에 다른 입력은 충돌로 거부합니다. Core는 프로세스 재시작 뒤에도 실제 검색 횟수를 DB에서 제한하지만 Core에 도달하지 않은 전송 오류 횟수는 MCP 프로세스 안에서만 유지됩니다. 실패하면 생성도 종료하며 새 `operation_id`로 예산을 초기화하지 않습니다. 검색 결과의 `operation_id`를 보존하고, 생성은 생략 시 `skill_search_id`를 idempotency key로 사용하므로 불명확한 응답에는 동일 payload와 key를 재사용합니다. `d2d_run_skill_code`는 skill에 등록된 코드와 입력 스키마를 사용합니다.
21
21
 
22
22
  `d2d_claim_next_item` 결과의 `delivery.work.claim_id`와 카드 revision을 사용합니다. claim 응답에는 skill 본문을 포함하지 않습니다. 필요한 경우 `d2d_get_coordination`으로 저장된 skill을 명시적으로 조회합니다. client는 `d2d_submit_item_result`의 `to_host`만 제출하고 다른 카드 필드는 거부됩니다. host는 `d2d_update_host_card`로 plan, slots, 상태 및 다음 요청을 결정합니다. 회의 commit은 같은 proposal에 전원 준비가 확인된 뒤 host가 결정하며 최종 실행 receipt를 확인해야 완료할 수 있습니다.
23
23
 
@@ -27,6 +27,15 @@ MCP Resources, Prompts, 알림 push, polling daemon, FCM, Runtime Adapter는 포
27
27
 
28
28
  Agent가 dory-to-dory의 목적, Watcher 설치와 device pairing, SSE 처리, 사용자 확인, 허용 범위와 일반적인 처리 흐름을 설명해야 할 때는 파라미터 없이 `d2d_get_usage_guide`를 호출할 수 있습니다.
29
29
 
30
+ ## 작업 인계와 사용자 질문
31
+
32
+ 새 Core의 `execution_protocol=2` coordination은 `Host → 한 Client → Host` 순서로 진행합니다. Host만 카드 상태·계획·slots를 결정하며 Client는 필요한 정보를 모은 뒤 최종 `to_host`만 제출합니다.
33
+
34
+ - Host 중간 저장: `d2d_update_host_card`의 `next_action=continue`는 같은 claim을 유지합니다. 다음 Client 한 명에게 요청할 때 `dispatch`, 최종 완료·실패·취소를 결정할 때 `finish`를 사용합니다.
35
+ - 사용자 질문: 현재 담당 Host 또는 Client가 `d2d_request_user_input`에 `work_id`, `claim_id`, `question`을 전달합니다. Core는 같은 작업을 `waiting_for_input`으로 보존하고 claim을 해제합니다. 카드 업무 상태와 담당자는 유지하며 Client 응답이나 Host 검토는 발생하지 않습니다.
36
+ - 재개: 명시적인 답변을 `d2d_submit_user_response`로 기록하고, 같은 `work_id`를 다시 claim해 새 `claim_id`와 현재 revision으로 계속합니다. 질문이 더 필요하면 같은 작업에서 반복합니다. 외부 동작의 승인·commit·receipt 검증은 그대로 적용됩니다.
37
+ - 호환성: `ask_user` Client 결과와 사용자 대기 카드 상태는 `execution_protocol=1`인 기존 건에서만 사용합니다. 새 질문·인계 기능은 이를 지원하는 Core, MCP, Agent와 Watcher를 함께 배포해야 합니다.
38
+
30
39
  ## 요구 사항
31
40
 
32
41
  - Node.js 22 이상
@@ -35,16 +44,18 @@ Agent가 dory-to-dory의 목적, Watcher 설치와 device pairing, SSE 처리,
35
44
 
36
45
  ## Watcher를 통한 설치
37
46
 
38
- Watcher를 사용하면 대화형 setup으로 설치할 수 있습니다. 아래 `dory-to-dory-watcher@0.2.0` 명령은 해당 Watcher 버전이 별도로 게시된 뒤 사용합니다. MCP만 게시해도 기존 Watcher 설치의 의존성이 자동으로 바뀌지는 않습니다. Watcher 게시 전에는 Dory 앱의 검증된 번들 또는 로컬 Watcher 빌드를 사용하고, MCP를 직접 등록하려면 아래 npx 설정을 사용합니다. setup이 Codex CLI, Claude Code, Gemini CLI를 탐색하고 브라우저 device pairing, credential 파일 저장, MCP 등록과 연결 검사를 안내합니다. 호환되는 정확한 MCP 버전이 Watcher 의존성으로 함께 설치되므로 MCP를 별도로 설치할 필요가 없습니다.
47
+ 실행 담당자 규약 2를 사용하는 coordination에는 MCP `0.4.0`을 포함한 Watcher `0.4.0`이 필요합니다. Watcher `0.3.0` 이하의 기존 설치에는 새 질문 도구와 인계 처리가 없습니다. Watcher는 별도 게시 단위입니다. 해당 버전이 registry에 게시되기 전에는 검증된 Dory 앱 번들 또는 아래의 MCP 직접 등록 방식으로 새 MCP를 실행합니다. 기존 Watcher 설치의 의존성은 자동으로 바뀌지 않습니다.
48
+
49
+ 아래는 Watcher `0.4.0` 게시 후 사용할 설치 예시입니다. setup이 Codex CLI, Claude Code, Gemini CLI를 탐색하고 브라우저 device pairing, credential 파일 저장, MCP 등록과 연결 검사를 안내합니다.
39
50
 
40
51
  ```sh
41
- npm install --global dory-to-dory-watcher@0.2.0
52
+ npm install --global dory-to-dory-watcher@0.4.0
42
53
  dory-watcher setup
43
54
  ```
44
55
 
45
56
  Watcher는 Core의 SSE wake-up을 기다렸다가 pending item이 있을 때만 기존 Agent CLI를 실행합니다. macOS와 Linux에서는 선택적으로 로그인 백그라운드 서비스를 설치할 수 있고, Windows에서는 foreground `dory-watcher run`을 사용합니다. 자동 업데이트는 아직 제공하지 않습니다.
46
57
 
47
- Watcher는 Agent별로 지원되는 비대화식 승인과 격리 방식을 사용합니다. Codex는 `--approve-for-me --ephemeral`로 `workspace-write` 경계 안에서 Auto Review를 사용하고, Claude Code는 `--permission-mode auto`의 classifier로 도구 요청을 검토합니다. Gemini CLI에는 reviewer형 자동 검토 모드가 없으므로 현재 macOS에서만 `--approval-mode yolo --sandbox`와 `sandbox-exec`의 `strict-open` profile을 함께 사용합니다. Linux/Windows Gemini는 로컬 MCP와 credential을 container sandbox에 안전하게 연결하는 기능이 마련될 때까지 fail-closed로 거부합니다. 전역 Agent 설정은 변경하지 않으며, built-in Adapter는 권한·sandbox·config·MCP 경계를 바꾸는 추가 인자를 거부합니다. 자동 검토가 거부한 동작은 실행되지 않습니다. Agent가 계속 실행할 수 있으면 더 안전한 대안을 찾거나 `ask_user` 또는 `error`로 전환하고, 제출 전에 중단되면 Watcher가 안전한 장애 코드만 보고하며 item은 재시도할 수 있게 유지합니다.
58
+ Watcher는 Agent별로 지원되는 비대화식 승인과 격리 방식을 사용합니다. Codex는 `--approve-for-me --ephemeral`로 `workspace-write` 경계 안에서 Auto Review를 사용하고, Claude Code는 `--permission-mode auto`의 classifier로 도구 요청을 검토합니다. Gemini CLI에는 reviewer형 자동 검토 모드가 없으므로 현재 macOS에서만 `--approval-mode yolo --sandbox`와 `sandbox-exec`의 `strict-open` profile을 함께 사용합니다. Linux/Windows Gemini는 로컬 MCP와 credential을 container sandbox에 안전하게 연결하는 기능이 마련될 때까지 fail-closed로 거부합니다. 전역 Agent 설정은 변경하지 않으며, built-in Adapter는 권한·sandbox·config·MCP 경계를 바꾸는 추가 인자를 거부합니다. 자동 검토가 거부한 동작은 실행되지 않습니다. Agent가 계속 실행할 수 있으면 더 안전한 대안을 찾거나 `d2d_request_user_input`으로 자기 사용자에게 질문하거나 `error`를 제출하고, 제출 전에 중단되면 Watcher가 안전한 장애 코드만 보고하며 item은 재시도할 수 있게 유지합니다.
48
59
 
49
60
  `dory-watcher doctor`는 Core와 Agent 로그인뿐 아니라 실제 무인 실행 모드도 검사합니다. Codex와 macOS Gemini에서는 빈 임시 작업공간에서 도구를 사용하지 않는 짧은 모델 진단을 한 번 실행하므로 소량의 사용량 또는 API 요금이 발생할 수 있지만, dory-to-dory item을 claim하거나 처리하지 않습니다.
50
61
 
@@ -54,14 +65,14 @@ Watcher는 Agent별로 지원되는 비대화식 승인과 격리 방식을 사
54
65
 
55
66
  ## 고급 사용자: MCP 직접 추가
56
67
 
57
- MCP 호스트 설정에 정확한 버전을 지정합니다.
68
+ 호환 Core와 MCP 패키지의 게시 여부를 확인한 뒤 호스트 설정에 정확한 버전을 지정합니다.
58
69
 
59
70
  ```json
60
71
  {
61
72
  "mcpServers": {
62
73
  "dory-to-dory": {
63
74
  "command": "npx",
64
- "args": ["-y", "dory-to-dory-mcp@0.2.0"],
75
+ "args": ["-y", "dory-to-dory-mcp@0.4.0"],
65
76
  "env": {
66
77
  "D2D_API_KEY": "d2d_live_replace_me"
67
78
  }
@@ -72,7 +83,7 @@ MCP 호스트 설정에 정확한 버전을 지정합니다.
72
83
 
73
84
  호스트마다 설정 파일 위치와 최상위 키 이름은 다를 수 있지만 핵심은 같습니다. 호스트가 `npx`를 실행하고 환경 변수로 API key를 넘깁니다. Core URL은 기본적으로 `https://dory-to-dory.dnotitia.ai`를 사용하며, 다른 Core에 연결할 때만 `D2D_CORE_URL`로 재정의합니다. 패키지 버전을 고정하면 예기치 않은 자동 업데이트를 피할 수 있습니다.
74
85
 
75
- `pnpm dlx`를 쓰는 호스트라면 command를 `pnpm`, args를 `["dlx", "dory-to-dory-mcp@0.2.0"]`로 바꿉니다.
86
+ `pnpm dlx`를 쓰는 호스트라면 command를 `pnpm`, args를 `["dlx", "dory-to-dory-mcp@0.4.0"]`로 바꿉니다.
76
87
 
77
88
  ## 로컬 소스 또는 tarball 설치
78
89
 
@@ -102,7 +113,7 @@ MCP 호스트 설정:
102
113
  또는 `pnpm pack`으로 생성한 `.tgz` 파일을 다른 장비에 전달해 설치할 수 있습니다.
103
114
 
104
115
  ```sh
105
- npm install --global ./dory-to-dory-mcp-0.2.0.tgz
116
+ npm install --global ./dory-to-dory-mcp-0.4.0.tgz
106
117
  ```
107
118
 
108
119
  이후 MCP command를 `d2d-mcp`로 설정합니다.
@@ -115,7 +126,7 @@ npm install --global ./dory-to-dory-mcp-0.2.0.tgz
115
126
  | `D2D_API_KEY` | 조건부 | - | Core가 발급한 Agent API key. `D2D_API_KEY_FILE`과 동시에 설정하지 않음 |
116
127
  | `D2D_API_KEY_FILE` | 조건부 | - | Agent API key 한 줄을 저장한 credential 파일. `D2D_API_KEY` 대신 사용 |
117
128
  | `D2D_REQUEST_TIMEOUT_SECONDS` | 아니요 | `15` | HTTP 요청 timeout |
118
- | `D2D_MAX_RETRIES` | 아니요 | `2` | GET 및 idempotent 쓰기 요청의 추가 재시도 횟수 |
129
+ | `D2D_MAX_RETRIES` | 아니요 | `2` | GET 및 idempotent 쓰기 요청의 추가 재시도 횟수. 검색 증빙 요청은 별도 최대 3회로 고정 |
119
130
 
120
131
  API key는 tool input이나 stdout에 노출하지 않습니다. MCP 설정 파일의 권한을 제한하고, 유출 가능성이 있으면 Core 대시보드에서 즉시 키를 재발급하십시오.
121
132
 
@@ -4576,6 +4576,85 @@
4576
4576
  }
4577
4577
  }
4578
4578
  },
4579
+ "/v2/agent/work/{work_id}/question": {
4580
+ "post": {
4581
+ "tags": [
4582
+ "workflows-v2"
4583
+ ],
4584
+ "summary": "Request Work Question",
4585
+ "operationId": "request_work_question_v2_agent_work__work_id__question_post",
4586
+ "parameters": [
4587
+ {
4588
+ "name": "work_id",
4589
+ "in": "path",
4590
+ "required": true,
4591
+ "schema": {
4592
+ "type": "string",
4593
+ "title": "Work Id"
4594
+ }
4595
+ },
4596
+ {
4597
+ "name": "Idempotency-Key",
4598
+ "in": "header",
4599
+ "required": true,
4600
+ "schema": {
4601
+ "type": "string",
4602
+ "minLength": 8,
4603
+ "maxLength": 128,
4604
+ "title": "Idempotency-Key"
4605
+ }
4606
+ },
4607
+ {
4608
+ "name": "authorization",
4609
+ "in": "header",
4610
+ "required": false,
4611
+ "schema": {
4612
+ "anyOf": [
4613
+ {
4614
+ "type": "string"
4615
+ },
4616
+ {
4617
+ "type": "null"
4618
+ }
4619
+ ],
4620
+ "title": "Authorization"
4621
+ }
4622
+ }
4623
+ ],
4624
+ "requestBody": {
4625
+ "required": true,
4626
+ "content": {
4627
+ "application/json": {
4628
+ "schema": {
4629
+ "$ref": "#/components/schemas/WorkQuestionRequest"
4630
+ }
4631
+ }
4632
+ }
4633
+ },
4634
+ "responses": {
4635
+ "200": {
4636
+ "description": "Successful Response",
4637
+ "content": {
4638
+ "application/json": {
4639
+ "schema": {
4640
+ "$ref": "#/components/schemas/WorkQuestionResult"
4641
+ }
4642
+ }
4643
+ }
4644
+ },
4645
+ "422": {
4646
+ "description": "Validation Error",
4647
+ "content": {
4648
+ "application/json": {
4649
+ "schema": {
4650
+ "$ref": "#/components/schemas/HTTPValidationError"
4651
+ }
4652
+ }
4653
+ }
4654
+ }
4655
+ }
4656
+ }
4657
+ },
4579
4658
  "/v2/agent/interactions": {
4580
4659
  "get": {
4581
4660
  "tags": [
@@ -4902,6 +4981,76 @@
4902
4981
  }
4903
4982
  }
4904
4983
  },
4984
+ "/v2/agent/skill-searches": {
4985
+ "post": {
4986
+ "tags": [
4987
+ "workflows-v2"
4988
+ ],
4989
+ "summary": "Search For Creation",
4990
+ "operationId": "search_for_creation_v2_agent_skill_searches_post",
4991
+ "parameters": [
4992
+ {
4993
+ "name": "Idempotency-Key",
4994
+ "in": "header",
4995
+ "required": true,
4996
+ "schema": {
4997
+ "type": "string",
4998
+ "minLength": 8,
4999
+ "maxLength": 128,
5000
+ "title": "Idempotency-Key"
5001
+ }
5002
+ },
5003
+ {
5004
+ "name": "authorization",
5005
+ "in": "header",
5006
+ "required": false,
5007
+ "schema": {
5008
+ "anyOf": [
5009
+ {
5010
+ "type": "string"
5011
+ },
5012
+ {
5013
+ "type": "null"
5014
+ }
5015
+ ],
5016
+ "title": "Authorization"
5017
+ }
5018
+ }
5019
+ ],
5020
+ "requestBody": {
5021
+ "required": true,
5022
+ "content": {
5023
+ "application/json": {
5024
+ "schema": {
5025
+ "$ref": "#/components/schemas/SkillSearchRequest"
5026
+ }
5027
+ }
5028
+ }
5029
+ },
5030
+ "responses": {
5031
+ "200": {
5032
+ "description": "Successful Response",
5033
+ "content": {
5034
+ "application/json": {
5035
+ "schema": {
5036
+ "$ref": "#/components/schemas/SkillSearchResult"
5037
+ }
5038
+ }
5039
+ }
5040
+ },
5041
+ "422": {
5042
+ "description": "Validation Error",
5043
+ "content": {
5044
+ "application/json": {
5045
+ "schema": {
5046
+ "$ref": "#/components/schemas/HTTPValidationError"
5047
+ }
5048
+ }
5049
+ }
5050
+ }
5051
+ }
5052
+ }
5053
+ },
4905
5054
  "/v2/agent/skills/{skill_id}": {
4906
5055
  "get": {
4907
5056
  "tags": [
@@ -5260,6 +5409,76 @@
5260
5409
  }
5261
5410
  }
5262
5411
  },
5412
+ "/v2/dashboard/skill-searches": {
5413
+ "post": {
5414
+ "tags": [
5415
+ "workflows-v2"
5416
+ ],
5417
+ "summary": "Dashboard Search Skills",
5418
+ "operationId": "dashboard_search_skills_v2_dashboard_skill_searches_post",
5419
+ "parameters": [
5420
+ {
5421
+ "name": "Idempotency-Key",
5422
+ "in": "header",
5423
+ "required": true,
5424
+ "schema": {
5425
+ "type": "string",
5426
+ "minLength": 8,
5427
+ "maxLength": 128,
5428
+ "title": "Idempotency-Key"
5429
+ }
5430
+ },
5431
+ {
5432
+ "name": "d2d_session",
5433
+ "in": "cookie",
5434
+ "required": false,
5435
+ "schema": {
5436
+ "anyOf": [
5437
+ {
5438
+ "type": "string"
5439
+ },
5440
+ {
5441
+ "type": "null"
5442
+ }
5443
+ ],
5444
+ "title": "D2D Session"
5445
+ }
5446
+ }
5447
+ ],
5448
+ "requestBody": {
5449
+ "required": true,
5450
+ "content": {
5451
+ "application/json": {
5452
+ "schema": {
5453
+ "$ref": "#/components/schemas/SkillSearchRequest"
5454
+ }
5455
+ }
5456
+ }
5457
+ },
5458
+ "responses": {
5459
+ "200": {
5460
+ "description": "Successful Response",
5461
+ "content": {
5462
+ "application/json": {
5463
+ "schema": {
5464
+ "$ref": "#/components/schemas/SkillSearchResult"
5465
+ }
5466
+ }
5467
+ }
5468
+ },
5469
+ "422": {
5470
+ "description": "Validation Error",
5471
+ "content": {
5472
+ "application/json": {
5473
+ "schema": {
5474
+ "$ref": "#/components/schemas/HTTPValidationError"
5475
+ }
5476
+ }
5477
+ }
5478
+ }
5479
+ }
5480
+ }
5481
+ },
5263
5482
  "/v2/dashboard/coordinations/{coordination_id}/cancel": {
5264
5483
  "post": {
5265
5484
  "tags": [
@@ -7275,6 +7494,22 @@
7275
7494
  }
7276
7495
  ],
7277
7496
  "title": "Claim Id"
7497
+ },
7498
+ "next_action": {
7499
+ "anyOf": [
7500
+ {
7501
+ "type": "string",
7502
+ "enum": [
7503
+ "continue",
7504
+ "dispatch",
7505
+ "finish"
7506
+ ]
7507
+ },
7508
+ {
7509
+ "type": "null"
7510
+ }
7511
+ ],
7512
+ "title": "Next Action"
7278
7513
  }
7279
7514
  },
7280
7515
  "additionalProperties": false,
@@ -8143,6 +8378,63 @@
8143
8378
  ],
8144
8379
  "title": "SkillRunRequest"
8145
8380
  },
8381
+ "SkillSearchRequest": {
8382
+ "properties": {
8383
+ "goal": {
8384
+ "type": "string",
8385
+ "maxLength": 20000,
8386
+ "minLength": 1,
8387
+ "title": "Goal"
8388
+ },
8389
+ "query": {
8390
+ "type": "string",
8391
+ "maxLength": 200,
8392
+ "title": "Query",
8393
+ "default": ""
8394
+ }
8395
+ },
8396
+ "additionalProperties": false,
8397
+ "type": "object",
8398
+ "required": [
8399
+ "goal"
8400
+ ],
8401
+ "title": "SkillSearchRequest"
8402
+ },
8403
+ "SkillSearchResult": {
8404
+ "properties": {
8405
+ "skills": {
8406
+ "items": {
8407
+ "$ref": "#/components/schemas/CoordinationSkill"
8408
+ },
8409
+ "type": "array",
8410
+ "title": "Skills"
8411
+ },
8412
+ "skill_search_id": {
8413
+ "type": "string",
8414
+ "title": "Skill Search Id"
8415
+ },
8416
+ "expires_at": {
8417
+ "type": "string",
8418
+ "format": "date-time",
8419
+ "title": "Expires At"
8420
+ },
8421
+ "attempt_count": {
8422
+ "type": "integer",
8423
+ "maximum": 4.0,
8424
+ "minimum": 1.0,
8425
+ "title": "Attempt Count"
8426
+ }
8427
+ },
8428
+ "additionalProperties": false,
8429
+ "type": "object",
8430
+ "required": [
8431
+ "skills",
8432
+ "skill_search_id",
8433
+ "expires_at",
8434
+ "attempt_count"
8435
+ ],
8436
+ "title": "SkillSearchResult"
8437
+ },
8146
8438
  "TelegramConnectionView": {
8147
8439
  "properties": {
8148
8440
  "available": {
@@ -8788,6 +9080,56 @@
8788
9080
  ],
8789
9081
  "title": "WorkDelivery"
8790
9082
  },
9083
+ "WorkQuestionRequest": {
9084
+ "properties": {
9085
+ "claim_id": {
9086
+ "type": "string",
9087
+ "title": "Claim Id"
9088
+ },
9089
+ "question": {
9090
+ "$ref": "#/components/schemas/WorkflowQuestion"
9091
+ },
9092
+ "session_id": {
9093
+ "anyOf": [
9094
+ {
9095
+ "type": "string",
9096
+ "maxLength": 256,
9097
+ "minLength": 1,
9098
+ "pattern": "^[^\\s\\x00-\\x1f\\x7f]+$"
9099
+ },
9100
+ {
9101
+ "type": "null"
9102
+ }
9103
+ ],
9104
+ "title": "Session Id"
9105
+ }
9106
+ },
9107
+ "additionalProperties": false,
9108
+ "type": "object",
9109
+ "required": [
9110
+ "claim_id",
9111
+ "question"
9112
+ ],
9113
+ "title": "WorkQuestionRequest"
9114
+ },
9115
+ "WorkQuestionResult": {
9116
+ "properties": {
9117
+ "work": {
9118
+ "$ref": "#/components/schemas/WorkView"
9119
+ },
9120
+ "interaction": {
9121
+ "additionalProperties": true,
9122
+ "type": "object",
9123
+ "title": "Interaction"
9124
+ }
9125
+ },
9126
+ "type": "object",
9127
+ "required": [
9128
+ "work",
9129
+ "interaction"
9130
+ ],
9131
+ "title": "WorkQuestionResult"
9132
+ },
8791
9133
  "WorkResultRequest": {
8792
9134
  "properties": {
8793
9135
  "claim_id": {
@@ -8913,6 +9255,17 @@
8913
9255
  }
8914
9256
  ],
8915
9257
  "title": "Claim Expires At"
9258
+ },
9259
+ "interaction_id": {
9260
+ "anyOf": [
9261
+ {
9262
+ "type": "string"
9263
+ },
9264
+ {
9265
+ "type": "null"
9266
+ }
9267
+ ],
9268
+ "title": "Interaction Id"
8916
9269
  }
8917
9270
  },
8918
9271
  "type": "object",
@@ -9105,6 +9458,22 @@
9105
9458
  "title": "Schema Version",
9106
9459
  "default": 2
9107
9460
  },
9461
+ "execution_protocol": {
9462
+ "type": "integer",
9463
+ "title": "Execution Protocol",
9464
+ "default": 1
9465
+ },
9466
+ "owner_card_id": {
9467
+ "anyOf": [
9468
+ {
9469
+ "type": "string"
9470
+ },
9471
+ {
9472
+ "type": "null"
9473
+ }
9474
+ ],
9475
+ "title": "Owner Card Id"
9476
+ },
9108
9477
  "role": {
9109
9478
  "type": "string",
9110
9479
  "enum": [
@@ -9306,6 +9675,20 @@
9306
9675
  "minLength": 1,
9307
9676
  "title": "Goal"
9308
9677
  },
9678
+ "skill_search_id": {
9679
+ "anyOf": [
9680
+ {
9681
+ "type": "string",
9682
+ "maxLength": 36,
9683
+ "minLength": 1
9684
+ },
9685
+ {
9686
+ "type": "null"
9687
+ }
9688
+ ],
9689
+ "title": "Skill Search Id",
9690
+ "description": "Successful, owned, unexpired search proof for this goal; required for every new v2 creation."
9691
+ },
9309
9692
  "completion_criteria": {
9310
9693
  "items": {
9311
9694
  "type": "string"
@@ -9492,6 +9875,22 @@
9492
9875
  "title": "Schema Version",
9493
9876
  "default": 2
9494
9877
  },
9878
+ "execution_protocol": {
9879
+ "type": "integer",
9880
+ "title": "Execution Protocol",
9881
+ "default": 1
9882
+ },
9883
+ "owner_card_id": {
9884
+ "anyOf": [
9885
+ {
9886
+ "type": "string"
9887
+ },
9888
+ {
9889
+ "type": "null"
9890
+ }
9891
+ ],
9892
+ "title": "Owner Card Id"
9893
+ },
9495
9894
  "role": {
9496
9895
  "type": "string",
9497
9896
  "enum": [
@@ -9713,6 +10112,13 @@
9713
10112
  },
9714
10113
  "type": "array",
9715
10114
  "title": "Pending Work"
10115
+ },
10116
+ "owned_work": {
10117
+ "items": {
10118
+ "$ref": "#/components/schemas/WorkView"
10119
+ },
10120
+ "type": "array",
10121
+ "title": "Owned Work"
9716
10122
  }
9717
10123
  },
9718
10124
  "type": "object",
@@ -12,14 +12,20 @@ export type ItemDelivery = Schemas["WorkDelivery"];
12
12
  export type WaitingItemDelivery = Record<string, unknown>;
13
13
  export type ItemResultRequest = Schemas["WorkResultRequest"];
14
14
  export type ItemUserResponseRequest = Schemas["WorkflowUserResponse"];
15
- export type CoordinationCreate = Schemas["WorkflowCreate"];
15
+ export type CoordinationCreate = Omit<Schemas["WorkflowCreate"], "skill_search_id"> & {
16
+ skill_search_id: string;
17
+ };
16
18
  export type HostUpdate = Schemas["HostUpdate"];
17
19
  export type SessionBindRequest = Schemas["SessionBindRequest"];
18
20
  export type WorkClaimRequest = Schemas["WorkClaimRequest"];
21
+ export type WorkQuestionRequest = Schemas["WorkQuestionRequest"];
22
+ export type WorkQuestionResult = Schemas["WorkQuestionResult"];
19
23
  export type SkillRunRequest = Schemas["SkillRunRequest"];
20
24
  export type RecoveryReceipt = Schemas["RecoveryReceipt"];
21
25
  export type CoordinationSkill = Schemas["CoordinationSkill"];
22
26
  export type SkillCodeExecution = Schemas["SkillCodeExecution"];
27
+ export type SkillSearchRequest = Schemas["SkillSearchRequest"];
28
+ export type SkillSearchResponse = Schemas["SkillSearchResult"];
23
29
  export type ActionableNextAction = "ask_user" | "claim_pending" | "none";
24
30
  export interface ActionableItems {
25
31
  waiting_items: WaitingItemDelivery[];
@@ -36,6 +42,7 @@ export declare class CoreApiError extends Error {
36
42
  export declare class CoreClient {
37
43
  private readonly config;
38
44
  private readonly fetcher;
45
+ private readonly skillSearchOperations;
39
46
  constructor(config: AppConfig, fetcher?: typeof fetch);
40
47
  private request;
41
48
  getConnectionStatus(): Promise<AgentMe>;
@@ -68,11 +75,14 @@ export declare class CoreClient {
68
75
  checkActionableItems(limit?: number): Promise<ActionableItems>;
69
76
  submitItemResult(itemId: string, result: ItemResultRequest, operationId?: string): Promise<Coordination>;
70
77
  acknowledgeItem(workId: string, claimId: string, operationId?: string): Promise<Item>;
78
+ requestUserInput(workId: string, input: WorkQuestionRequest, operationId?: string): Promise<WorkQuestionResult>;
71
79
  submitUserResponse(interactionId: string, response: ItemUserResponseRequest, operationId?: string): Promise<Record<string, unknown>>;
72
80
  recordRecoveryReceipt(coordinationId: string, input: RecoveryReceipt, operationId?: string): Promise<{
73
81
  recorded: boolean;
74
82
  coordination_id: string;
75
83
  }>;
84
+ searchSkillsForCoordination(input: SkillSearchRequest, operationId: string): Promise<SkillSearchResponse>;
85
+ private performSkillSearch;
76
86
  searchSkills(query?: string): Promise<CoordinationSkill[]>;
77
87
  getSkill(skillId: string, version?: string): Promise<CoordinationSkill>;
78
88
  runSkillCode(skillId: string, input: SkillRunRequest, operationId?: string): Promise<SkillCodeExecution>;
@@ -1 +1 @@
1
- {"version":3,"file":"core-client.d.ts","sourceRoot":"","sources":["../src/core-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,KAAK,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;AACrC,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AACjD,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAC3C,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AACnD,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AACnD,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAC3D,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AACnD,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACvC,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AACnD,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1D,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAC7D,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC3D,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAC/C,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAC/D,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAC3D,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAC7D,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE/D,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,eAAe,GAAG,MAAM,CAAC;AAEzE,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACrC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,WAAW,EAAE,oBAAoB,CAAC;CACnC;AAcD,qBAAa,YAAa,SAAQ,KAAK;IAKnC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IACnC,QAAQ,CAAC,SAAS,EAAE,OAAO;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO;IANnB,IAAI,SAAkB;gBAG7B,OAAO,EAAE,MAAM,EACN,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,OAAO,YAAA;CAI7B;AAgBD,qBAAa,UAAU;IAEnB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,OAAO,KAAa;YAGlC,OAAO;IAiErB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIvC,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAInC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAI7C,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAIpC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAK9D,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,EAAE,WAAW,GAAE,MAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;IAIxG,OAAO,CAAC,KAAK;IAIb,iBAAiB,CAAC,KAAK,GAAE;QAAE,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAQ5H,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI9D,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,GAAE,MAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;IAIrH,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,WAAW,GAAE,MAAqB,GAAG,OAAO,CAAC;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;IAI9M,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,WAAW,GAAE,MAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;IAI5J,aAAa,CAAC,KAAK,GAAE,gBAAqB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAIzE,SAAS,CAAC,MAAM,SAAW,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAKzD,gBAAgB,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAItD,oBAAoB,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,eAAe,CAAC;IAWhE,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,WAAW,GAAE,MAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;IAItH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,MAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAInG,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,uBAAuB,EAAE,WAAW,GAAE,MAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIlJ,qBAAqB,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,GAAE,MAAqB,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;IAIlK,YAAY,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAItD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKvE,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,GAAE,MAAqB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAGvH"}
1
+ {"version":3,"file":"core-client.d.ts","sourceRoot":"","sources":["../src/core-client.ts"],"names":[],"mappings":"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"}