artemys 0.3.2 → 0.3.4
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/CHANGELOG.md +37 -0
- package/README.md +14 -5
- package/dist/cli/config.js +1 -1
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +196 -21
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +9 -6
- package/dist/cli/init.js.map +1 -1
- package/dist/coffeeshop/client.d.ts +3 -8
- package/dist/coffeeshop/client.d.ts.map +1 -1
- package/dist/coffeeshop/client.js +40 -12
- package/dist/coffeeshop/client.js.map +1 -1
- package/dist/coffeeshop/index.d.ts +1 -1
- package/dist/coffeeshop/index.d.ts.map +1 -1
- package/dist/coffeeshop/index.js +1 -1
- package/dist/coffeeshop/index.js.map +1 -1
- package/dist/coffeeshop/schemas.d.ts +22 -16
- package/dist/coffeeshop/schemas.d.ts.map +1 -1
- package/dist/coffeeshop/schemas.js +21 -25
- package/dist/coffeeshop/schemas.js.map +1 -1
- package/dist/discovery/agent-card.schema.js +1 -1
- package/dist/discovery/agent-card.schema.js.map +1 -1
- package/dist/integrations/job-boards/jsonld.d.ts.map +1 -1
- package/dist/integrations/job-boards/jsonld.js +28 -0
- package/dist/integrations/job-boards/jsonld.js.map +1 -1
- package/dist/mcp-server/prompts.d.ts +20 -0
- package/dist/mcp-server/prompts.d.ts.map +1 -0
- package/dist/mcp-server/prompts.js +44 -0
- package/dist/mcp-server/prompts.js.map +1 -0
- package/dist/mcp-server/resources.d.ts +2 -1
- package/dist/mcp-server/resources.d.ts.map +1 -1
- package/dist/mcp-server/resources.js +15 -0
- package/dist/mcp-server/resources.js.map +1 -1
- package/dist/mcp-server/server.d.ts +1 -0
- package/dist/mcp-server/server.d.ts.map +1 -1
- package/dist/mcp-server/server.js +25 -0
- package/dist/mcp-server/server.js.map +1 -1
- package/dist/mcp-server/tools/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/index.js +2 -0
- package/dist/mcp-server/tools/index.js.map +1 -1
- package/dist/mcp-server/tools/resume.d.ts +3 -0
- package/dist/mcp-server/tools/resume.d.ts.map +1 -0
- package/dist/mcp-server/tools/resume.js +61 -0
- package/dist/mcp-server/tools/resume.js.map +1 -0
- package/dist/mcp-server/tools/talent.d.ts +9 -2
- package/dist/mcp-server/tools/talent.d.ts.map +1 -1
- package/dist/mcp-server/tools/talent.js +72 -6
- package/dist/mcp-server/tools/talent.js.map +1 -1
- package/dist/resume/parse-resume.d.ts.map +1 -1
- package/dist/resume/parse-resume.js +8 -1
- package/dist/resume/parse-resume.js.map +1 -1
- package/dist/resume/providers/anthropic.js +1 -1
- package/dist/resume/providers/anthropic.js.map +1 -1
- package/dist/resume/providers/google.js +1 -1
- package/dist/resume/providers/google.js.map +1 -1
- package/dist/resume/providers/openai.js +1 -1
- package/dist/resume/providers/openai.js.map +1 -1
- package/package.json +5 -1
- package/skills/artemys-talent/SKILL.md +258 -0
- package/skills/artemys-talent/references/TOOLS.md +479 -0
- package/skills/artemys-talent/scripts/setup.sh +88 -0
- package/dist/mcp-server/__tests__/test-fixtures.d.ts +0 -39
- package/dist/mcp-server/__tests__/test-fixtures.d.ts.map +0 -1
- package/dist/mcp-server/__tests__/test-fixtures.js +0 -87
- package/dist/mcp-server/__tests__/test-fixtures.js.map +0 -1
|
@@ -0,0 +1,479 @@
|
|
|
1
|
+
# Artemys Talent — Tool & CLI Reference
|
|
2
|
+
|
|
3
|
+
Complete reference for all Artemys talent capabilities. Each entry documents the MCP tool and its CLI equivalent.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Identity Tools
|
|
8
|
+
|
|
9
|
+
### get_identity
|
|
10
|
+
|
|
11
|
+
Get this agent's identity, capabilities, and hub connectivity status.
|
|
12
|
+
|
|
13
|
+
**MCP Tool:**
|
|
14
|
+
|
|
15
|
+
| Param | Type | Required | Constraints |
|
|
16
|
+
|-------|------|----------|-------------|
|
|
17
|
+
| *(none)* | | | |
|
|
18
|
+
|
|
19
|
+
**CLI:**
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
artemys whoami
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Returns:**
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
{
|
|
29
|
+
"agent_id": "@alex-chen",
|
|
30
|
+
"display_name": "Alex Chen",
|
|
31
|
+
"role": "candidate_agent",
|
|
32
|
+
"capabilities": ["discovery", "messaging"],
|
|
33
|
+
"protocol_versions": ["0.1.0"],
|
|
34
|
+
"hub_reachable": true,
|
|
35
|
+
"has_profile": true
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
### get_profile
|
|
42
|
+
|
|
43
|
+
Get the currently stored candidate profile snapshot.
|
|
44
|
+
|
|
45
|
+
**MCP Tool:**
|
|
46
|
+
|
|
47
|
+
| Param | Type | Required | Constraints |
|
|
48
|
+
|-------|------|----------|-------------|
|
|
49
|
+
| *(none)* | | | |
|
|
50
|
+
|
|
51
|
+
**CLI:**
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
artemys talent whoami [--persist [path]]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Returns:**
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"has_profile": true,
|
|
62
|
+
"profile": {
|
|
63
|
+
"display_name": "Alex Chen",
|
|
64
|
+
"skills": ["TypeScript", "Node.js"],
|
|
65
|
+
"experience_years": 8
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Resume Tools
|
|
73
|
+
|
|
74
|
+
### parse_resume
|
|
75
|
+
|
|
76
|
+
Parse resume text into structured FullResume JSON via LLM. The host LLM should read the file and pass the text content.
|
|
77
|
+
|
|
78
|
+
**MCP Tool:**
|
|
79
|
+
|
|
80
|
+
| Param | Type | Required | Constraints |
|
|
81
|
+
|-------|------|----------|-------------|
|
|
82
|
+
| `resume_text` | string | Yes | Non-empty |
|
|
83
|
+
| `provider` | string | Yes | `"anthropic"`, `"openai"`, or `"google"` |
|
|
84
|
+
| `api_key` | string | Yes | Non-empty |
|
|
85
|
+
| `model` | string | No | Provider-specific model ID |
|
|
86
|
+
|
|
87
|
+
**CLI:**
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
artemys parse-resume <file> --provider <provider> [--api-key <key>] [--model <model>] [--output <path>]
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Returns:**
|
|
94
|
+
|
|
95
|
+
The parsed FullResume JSON object.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
### resume_to_profile
|
|
100
|
+
|
|
101
|
+
Convert a parsed FullResume JSON into a candidate profile and anonymous CandidateCard. Stores the profile and optionally syncs to Coffee Shop.
|
|
102
|
+
|
|
103
|
+
**MCP Tool:**
|
|
104
|
+
|
|
105
|
+
| Param | Type | Required | Constraints |
|
|
106
|
+
|-------|------|----------|-------------|
|
|
107
|
+
| `resume` | object | Yes | FullResume JSON |
|
|
108
|
+
| `sync_agent_card` | boolean | No | Sync capabilities to agent card |
|
|
109
|
+
|
|
110
|
+
**Returns:**
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"stored": true,
|
|
115
|
+
"profile": { "display_name": "Alex Chen", "..." : "..." },
|
|
116
|
+
"hub_synced": true,
|
|
117
|
+
"candidate_card": { "skills": [...], "experience_years": 8 }
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Talent Tools
|
|
124
|
+
|
|
125
|
+
### search_opportunities
|
|
126
|
+
|
|
127
|
+
Search for matching job opportunities via Coffee Shop hub.
|
|
128
|
+
|
|
129
|
+
**MCP Tool:**
|
|
130
|
+
|
|
131
|
+
| Param | Type | Required | Constraints |
|
|
132
|
+
|-------|------|----------|-------------|
|
|
133
|
+
| `skills` | string[] | No | Filter by skills |
|
|
134
|
+
| `location` | string | No | Filter by location |
|
|
135
|
+
| `remote` | boolean | No | Remote positions only |
|
|
136
|
+
| `min_compensation` | number | No | Minimum compensation |
|
|
137
|
+
| `max_compensation` | number | No | Maximum compensation |
|
|
138
|
+
| `limit` | integer | No | Min 1, max 100 |
|
|
139
|
+
|
|
140
|
+
**CLI:**
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
artemys talent search [--skills <csv>] [--location <loc>] [--remote] [--limit <n>] [--agent-card <path>] [--coffeeshop-url <url>]
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**Returns:**
|
|
147
|
+
|
|
148
|
+
```json
|
|
149
|
+
{
|
|
150
|
+
"total": 12,
|
|
151
|
+
"matches": [
|
|
152
|
+
{
|
|
153
|
+
"job_id": "job-abc123",
|
|
154
|
+
"title": "Senior Backend Engineer",
|
|
155
|
+
"company": "Acme Corp",
|
|
156
|
+
"requirements": ["TypeScript", "Node.js"],
|
|
157
|
+
"match_score": 0.87
|
|
158
|
+
}
|
|
159
|
+
]
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
### express_interest
|
|
166
|
+
|
|
167
|
+
Submit an application for a job posting via Coffee Shop hub. Uses the stored candidate profile (or a minimal snapshot from the agent card if no profile is stored).
|
|
168
|
+
|
|
169
|
+
**MCP Tool:**
|
|
170
|
+
|
|
171
|
+
| Param | Type | Required | Constraints |
|
|
172
|
+
|-------|------|----------|-------------|
|
|
173
|
+
| `job_id` | string | Yes | Non-empty |
|
|
174
|
+
| `match_reasoning` | string | No | Max 4000 chars |
|
|
175
|
+
|
|
176
|
+
**CLI:**
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
artemys talent apply --job-id <id> [--match-reasoning <text>] [--agent-card <path>] [--persist [path]]
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
**Returns:**
|
|
183
|
+
|
|
184
|
+
The application confirmation object from Coffee Shop, including `application_id` and status.
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
### get_my_applications
|
|
189
|
+
|
|
190
|
+
List your submitted job applications, optionally filtered by status.
|
|
191
|
+
|
|
192
|
+
**MCP Tool:**
|
|
193
|
+
|
|
194
|
+
| Param | Type | Required | Constraints |
|
|
195
|
+
|-------|------|----------|-------------|
|
|
196
|
+
| `status` | string | No | `"pending"`, `"reviewing"`, `"accepted"`, `"declined"` |
|
|
197
|
+
|
|
198
|
+
**CLI:**
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
artemys talent applications [--status <status>] [--agent-card <path>]
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**Returns:**
|
|
205
|
+
|
|
206
|
+
```json
|
|
207
|
+
{
|
|
208
|
+
"total": 3,
|
|
209
|
+
"applications": [
|
|
210
|
+
{
|
|
211
|
+
"id": "app-1",
|
|
212
|
+
"job_id": "job-abc123",
|
|
213
|
+
"status": "pending",
|
|
214
|
+
"created_at": "2026-03-04T10:00:00Z"
|
|
215
|
+
}
|
|
216
|
+
]
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
### update_profile
|
|
223
|
+
|
|
224
|
+
Validate and store a candidate profile snapshot, sync to Coffee Shop hub.
|
|
225
|
+
|
|
226
|
+
**MCP Tool:**
|
|
227
|
+
|
|
228
|
+
| Param | Type | Required | Constraints |
|
|
229
|
+
|-------|------|----------|-------------|
|
|
230
|
+
| `display_name` | string | Yes | Non-empty |
|
|
231
|
+
| `headline` | string | No | |
|
|
232
|
+
| `skills` | string[] | No | |
|
|
233
|
+
| `experience_years` | number | No | |
|
|
234
|
+
| `preferred_roles` | string[] | No | |
|
|
235
|
+
| `location` | string | No | |
|
|
236
|
+
| `remote_preference` | string | No | `"remote_only"`, `"hybrid"`, `"onsite"`, `"flexible"` |
|
|
237
|
+
| `salary_range` | object | No | `{ min, max, currency }` |
|
|
238
|
+
| `availability` | string | No | |
|
|
239
|
+
| `summary` | string | No | |
|
|
240
|
+
| `sync_agent_card` | boolean | No | Sync capabilities to agent card |
|
|
241
|
+
|
|
242
|
+
All fields beyond `display_name` are from the `CandidateSnapshot` schema.
|
|
243
|
+
|
|
244
|
+
**CLI:**
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
artemys talent profile --profile-file <path.json> [--sync-agent-card] [--persist [path]] [--agent-card <path>]
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
The profile file must be a JSON object matching the CandidateSnapshot schema.
|
|
251
|
+
|
|
252
|
+
**Returns:**
|
|
253
|
+
|
|
254
|
+
```json
|
|
255
|
+
{
|
|
256
|
+
"stored": true,
|
|
257
|
+
"profile": { "display_name": "Alex Chen", "..." : "..." },
|
|
258
|
+
"hub_synced": true
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## Messaging Tools
|
|
265
|
+
|
|
266
|
+
### check_inbox
|
|
267
|
+
|
|
268
|
+
Check inbox for messages from employers or candidates.
|
|
269
|
+
|
|
270
|
+
**MCP Tool:**
|
|
271
|
+
|
|
272
|
+
| Param | Type | Required | Constraints |
|
|
273
|
+
|-------|------|----------|-------------|
|
|
274
|
+
| `unread_only` | boolean | No | Default: false |
|
|
275
|
+
|
|
276
|
+
**CLI:**
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
artemys talent status [--unread-only] [--agent-card <path>] [--persist [path]]
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
**Returns:**
|
|
283
|
+
|
|
284
|
+
```json
|
|
285
|
+
{
|
|
286
|
+
"total": 3,
|
|
287
|
+
"messages": [
|
|
288
|
+
{
|
|
289
|
+
"message_id": "msg-xyz789",
|
|
290
|
+
"sender_agent_id": "@acme-recruiter",
|
|
291
|
+
"content": { "text": "We'd like to schedule an interview" },
|
|
292
|
+
"timestamp": "2026-03-04T10:00:00Z",
|
|
293
|
+
"read": false
|
|
294
|
+
}
|
|
295
|
+
]
|
|
296
|
+
}
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
### respond_to_message
|
|
302
|
+
|
|
303
|
+
Reply to a message in your inbox.
|
|
304
|
+
|
|
305
|
+
**MCP Tool:**
|
|
306
|
+
|
|
307
|
+
| Param | Type | Required | Constraints |
|
|
308
|
+
|-------|------|----------|-------------|
|
|
309
|
+
| `message_id` | string | Yes | Non-empty |
|
|
310
|
+
| `content` | object | Yes | `Record<string, unknown>` |
|
|
311
|
+
| `message_type` | string | No | Protocol message type |
|
|
312
|
+
|
|
313
|
+
**CLI:**
|
|
314
|
+
|
|
315
|
+
```bash
|
|
316
|
+
artemys talent respond --message-id <id> --content '<json>' [--message-type <type>] [--agent-card <path>]
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
The `--content` flag accepts a JSON string (e.g., `'{"text":"I accept"}'`).
|
|
320
|
+
|
|
321
|
+
**Returns:**
|
|
322
|
+
|
|
323
|
+
```json
|
|
324
|
+
{
|
|
325
|
+
"sent": true,
|
|
326
|
+
"message_id": "msg-xyz789"
|
|
327
|
+
}
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## Discovery Tools
|
|
333
|
+
|
|
334
|
+
### discover_agents
|
|
335
|
+
|
|
336
|
+
Discover agents by role, capabilities, and protocol version.
|
|
337
|
+
|
|
338
|
+
**MCP Tool:**
|
|
339
|
+
|
|
340
|
+
| Param | Type | Required | Constraints |
|
|
341
|
+
|-------|------|----------|-------------|
|
|
342
|
+
| `role` | string | No | `"candidate_agent"` or `"talent_agent"` |
|
|
343
|
+
| `capabilities_any` | string[] | No | Match agents with any of these capabilities |
|
|
344
|
+
| `protocol_version` | string | No | |
|
|
345
|
+
| `limit` | integer | No | Min 1, max 100 |
|
|
346
|
+
|
|
347
|
+
**CLI:**
|
|
348
|
+
|
|
349
|
+
```bash
|
|
350
|
+
artemys discover --requester-agent-id <id> [--role <role>] [--capability <cap>] [--protocol-version <ver>] [--limit <n>]
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
The `--capability` flag can be repeated for multiple capabilities.
|
|
354
|
+
|
|
355
|
+
**Returns:**
|
|
356
|
+
|
|
357
|
+
Array of agent cards matching the query.
|
|
358
|
+
|
|
359
|
+
---
|
|
360
|
+
|
|
361
|
+
### get_agent_card
|
|
362
|
+
|
|
363
|
+
Fetch a public agent card by agent ID.
|
|
364
|
+
|
|
365
|
+
**MCP Tool:**
|
|
366
|
+
|
|
367
|
+
| Param | Type | Required | Constraints |
|
|
368
|
+
|-------|------|----------|-------------|
|
|
369
|
+
| `agent_id` | string | Yes | Non-empty |
|
|
370
|
+
|
|
371
|
+
**CLI:**
|
|
372
|
+
|
|
373
|
+
```bash
|
|
374
|
+
artemys discover --requester-agent-id <your-id> --agent-id <target-id>
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
*Note: The CLI discover command filters by agent ID when `--agent-id` is provided.*
|
|
378
|
+
|
|
379
|
+
**Returns:**
|
|
380
|
+
|
|
381
|
+
The full agent card object including `agent_id`, `display_name`, `role`, `capabilities`, `protocol_version`, and `endpoint`.
|
|
382
|
+
|
|
383
|
+
---
|
|
384
|
+
|
|
385
|
+
### register_agent
|
|
386
|
+
|
|
387
|
+
Register an agent card with Coffee Shop. Returns an API key (shown only once).
|
|
388
|
+
|
|
389
|
+
**MCP Tool:**
|
|
390
|
+
|
|
391
|
+
| Param | Type | Required | Constraints |
|
|
392
|
+
|-------|------|----------|-------------|
|
|
393
|
+
| `card` | AgentCard | Yes | Full agent card object |
|
|
394
|
+
|
|
395
|
+
AgentCard fields: `agent_id` (@handle), `display_name`, `role`, `capabilities` (string[]), `protocol_version`, `endpoint`.
|
|
396
|
+
|
|
397
|
+
**CLI:**
|
|
398
|
+
|
|
399
|
+
```bash
|
|
400
|
+
artemys register --agent-card <path.json>
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
**Returns:**
|
|
404
|
+
|
|
405
|
+
```json
|
|
406
|
+
{
|
|
407
|
+
"agent_id": "@alex-chen",
|
|
408
|
+
"api_key": "cs_live_...",
|
|
409
|
+
"registered_at": "2026-03-04T10:00:00Z"
|
|
410
|
+
}
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
**Important:** Save the `api_key` immediately. It is only returned at registration time.
|
|
414
|
+
|
|
415
|
+
---
|
|
416
|
+
|
|
417
|
+
## Protocol Tools
|
|
418
|
+
|
|
419
|
+
These tools are available via MCP only. They operate on local protocol state and do not have CLI equivalents.
|
|
420
|
+
|
|
421
|
+
### validate_message
|
|
422
|
+
|
|
423
|
+
Validate a protocol message against Artemys schemas.
|
|
424
|
+
|
|
425
|
+
| Param | Type | Required | Constraints |
|
|
426
|
+
|-------|------|----------|-------------|
|
|
427
|
+
| `message` | object | Yes | JSON protocol message |
|
|
428
|
+
|
|
429
|
+
**Returns:**
|
|
430
|
+
|
|
431
|
+
```json
|
|
432
|
+
{ "valid": true }
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
Or on failure:
|
|
436
|
+
|
|
437
|
+
```json
|
|
438
|
+
{
|
|
439
|
+
"valid": false,
|
|
440
|
+
"errors": {
|
|
441
|
+
"code": "PARSE_ERROR",
|
|
442
|
+
"message": "...",
|
|
443
|
+
"details": [...]
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
---
|
|
449
|
+
|
|
450
|
+
### list_conversations
|
|
451
|
+
|
|
452
|
+
List active tracked conversations.
|
|
453
|
+
|
|
454
|
+
| Param | Type | Required | Constraints |
|
|
455
|
+
|-------|------|----------|-------------|
|
|
456
|
+
| *(none)* | | | |
|
|
457
|
+
|
|
458
|
+
**Returns:**
|
|
459
|
+
|
|
460
|
+
Array of conversation summaries with `conversation_id`, `state`, and `message_count`.
|
|
461
|
+
|
|
462
|
+
---
|
|
463
|
+
|
|
464
|
+
### get_conversation_state
|
|
465
|
+
|
|
466
|
+
Get tracked protocol conversation state.
|
|
467
|
+
|
|
468
|
+
| Param | Type | Required | Constraints |
|
|
469
|
+
|-------|------|----------|-------------|
|
|
470
|
+
| `conversation_id` | string | Yes | Non-empty |
|
|
471
|
+
|
|
472
|
+
**Returns:**
|
|
473
|
+
|
|
474
|
+
```json
|
|
475
|
+
{
|
|
476
|
+
"state": "active",
|
|
477
|
+
"message_count": 4
|
|
478
|
+
}
|
|
479
|
+
```
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
echo "=== Artemys Talent Skill Setup ==="
|
|
5
|
+
echo ""
|
|
6
|
+
|
|
7
|
+
# 1. Check Node.js version
|
|
8
|
+
if ! command -v node &>/dev/null; then
|
|
9
|
+
echo "ERROR: Node.js is not installed."
|
|
10
|
+
echo "Install Node.js 20+ from https://nodejs.org"
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
NODE_VERSION=$(node -v | sed 's/v//' | cut -d. -f1)
|
|
15
|
+
if [ "$NODE_VERSION" -lt 20 ]; then
|
|
16
|
+
echo "ERROR: Node.js 20+ required (found v$(node -v))"
|
|
17
|
+
echo "Upgrade at https://nodejs.org"
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
echo "[OK] Node.js $(node -v)"
|
|
22
|
+
|
|
23
|
+
# 2. Install artemys CLI globally
|
|
24
|
+
if command -v artemys &>/dev/null; then
|
|
25
|
+
CURRENT_VERSION=$(artemys version 2>/dev/null || echo "unknown")
|
|
26
|
+
echo "[OK] artemys CLI already installed (v${CURRENT_VERSION})"
|
|
27
|
+
echo " To update: npm install -g artemys@latest"
|
|
28
|
+
else
|
|
29
|
+
echo "Installing artemys CLI globally..."
|
|
30
|
+
npm install -g artemys
|
|
31
|
+
echo "[OK] artemys CLI installed"
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
# 3. Initialize agent identity if not already done
|
|
35
|
+
CONFIG_FILE="$HOME/.artemys/config.json"
|
|
36
|
+
if [ -f "$CONFIG_FILE" ]; then
|
|
37
|
+
echo "[OK] Agent identity already initialized (~/.artemys/config.json exists)"
|
|
38
|
+
else
|
|
39
|
+
echo ""
|
|
40
|
+
echo "Initializing agent identity..."
|
|
41
|
+
echo "This will create your agent card and register with Coffee Shop."
|
|
42
|
+
echo ""
|
|
43
|
+
artemys start
|
|
44
|
+
echo "[OK] Agent identity initialized"
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
# 4. Run diagnostics
|
|
48
|
+
echo ""
|
|
49
|
+
echo "Running diagnostics..."
|
|
50
|
+
artemys doctor || true
|
|
51
|
+
|
|
52
|
+
# 5. Verify MCP server can start
|
|
53
|
+
echo ""
|
|
54
|
+
echo "Verifying MCP server..."
|
|
55
|
+
if timeout 5 artemys mcp-server --transport stdio </dev/null &>/dev/null; then
|
|
56
|
+
echo "[OK] MCP server starts successfully"
|
|
57
|
+
else
|
|
58
|
+
# timeout exit code 124 means it ran but we killed it (expected for stdio)
|
|
59
|
+
echo "[OK] MCP server verified"
|
|
60
|
+
fi
|
|
61
|
+
|
|
62
|
+
# 6. Print next steps
|
|
63
|
+
echo ""
|
|
64
|
+
echo "=== Setup Complete ==="
|
|
65
|
+
echo ""
|
|
66
|
+
echo "Your agent is registered with Coffee Shop and ready to go."
|
|
67
|
+
echo ""
|
|
68
|
+
echo "OPTION A: MCP Server (recommended)"
|
|
69
|
+
echo " Add to your MCP config:"
|
|
70
|
+
echo ' {'
|
|
71
|
+
echo ' "mcpServers": {'
|
|
72
|
+
echo ' "artemys": {'
|
|
73
|
+
echo ' "command": "artemys",'
|
|
74
|
+
echo ' "args": ["mcp-server", "--persist"]'
|
|
75
|
+
echo ' }'
|
|
76
|
+
echo ' }'
|
|
77
|
+
echo ' }'
|
|
78
|
+
echo " Then use the 'onboard_candidate' prompt for guided setup."
|
|
79
|
+
echo ""
|
|
80
|
+
echo "OPTION B: CLI Commands"
|
|
81
|
+
echo " artemys whoami # Verify identity"
|
|
82
|
+
echo " artemys talent search --limit 20 # Search for jobs"
|
|
83
|
+
echo " artemys talent apply --job-id <id>"
|
|
84
|
+
echo " artemys talent applications # Track applications"
|
|
85
|
+
echo " artemys talent status --unread-only"
|
|
86
|
+
echo ""
|
|
87
|
+
echo "Next: Parse your resume and create a profile for better matching."
|
|
88
|
+
echo " artemys parse-resume ./resume.pdf --provider anthropic"
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { type ProtocolMessage } from "../../protocol/index.js";
|
|
2
|
-
export declare function makeAgentCard(overrides?: Record<string, unknown>): {
|
|
3
|
-
agent_id: string;
|
|
4
|
-
display_name: string;
|
|
5
|
-
role: string;
|
|
6
|
-
protocol_versions: string[];
|
|
7
|
-
capabilities: string[];
|
|
8
|
-
endpoints: {};
|
|
9
|
-
policy: {
|
|
10
|
-
requires_candidate_consent: boolean;
|
|
11
|
-
};
|
|
12
|
-
attestation: {
|
|
13
|
-
key_id: string;
|
|
14
|
-
algorithm: string;
|
|
15
|
-
signature: string;
|
|
16
|
-
issued_at: string;
|
|
17
|
-
expires_at: string;
|
|
18
|
-
};
|
|
19
|
-
status: string;
|
|
20
|
-
};
|
|
21
|
-
export declare function makeHandshakeMessage(overrides?: Record<string, unknown>): ProtocolMessage;
|
|
22
|
-
export declare function makeHandshakeResponseMessage(overrides?: Record<string, unknown>): ProtocolMessage;
|
|
23
|
-
export declare function makeCoffeeShopClientStub(): {
|
|
24
|
-
discover: import("vitest").Mock<(...args: any[]) => any>;
|
|
25
|
-
getCard: import("vitest").Mock<(...args: any[]) => any>;
|
|
26
|
-
register: import("vitest").Mock<(...args: any[]) => any>;
|
|
27
|
-
updateCard: import("vitest").Mock<(...args: any[]) => any>;
|
|
28
|
-
getMatches: import("vitest").Mock<(...args: any[]) => any>;
|
|
29
|
-
submitApplication: import("vitest").Mock<(...args: any[]) => any>;
|
|
30
|
-
getInbox: import("vitest").Mock<(...args: any[]) => any>;
|
|
31
|
-
respondToMessage: import("vitest").Mock<(...args: any[]) => any>;
|
|
32
|
-
createProfile: import("vitest").Mock<(...args: any[]) => any>;
|
|
33
|
-
createJob: import("vitest").Mock<(...args: any[]) => any>;
|
|
34
|
-
getCandidates: import("vitest").Mock<(...args: any[]) => any>;
|
|
35
|
-
messageCandidate: import("vitest").Mock<(...args: any[]) => any>;
|
|
36
|
-
getApplications: import("vitest").Mock<(...args: any[]) => any>;
|
|
37
|
-
decideApplication: import("vitest").Mock<(...args: any[]) => any>;
|
|
38
|
-
};
|
|
39
|
-
//# sourceMappingURL=test-fixtures.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-fixtures.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/__tests__/test-fixtures.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAEhF,wBAAgB,aAAa,CAAC,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;;;;;;;;;;;;;;;;;;EAmBpE;AAED,wBAAgB,oBAAoB,CAAC,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,eAAe,CA0B7F;AAED,wBAAgB,4BAA4B,CAAC,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,eAAe,CAkBrG;AAED,wBAAgB,wBAAwB;;;;;;;;;;;;;;;EAiBvC"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { vi } from "vitest";
|
|
2
|
-
import { PROTOCOL_VERSION } from "../../protocol/index.js";
|
|
3
|
-
export function makeAgentCard(overrides = {}) {
|
|
4
|
-
return {
|
|
5
|
-
agent_id: "@test-agent",
|
|
6
|
-
display_name: "Agent One",
|
|
7
|
-
role: "candidate_agent",
|
|
8
|
-
protocol_versions: ["0.1.0"],
|
|
9
|
-
capabilities: ["discovery"],
|
|
10
|
-
endpoints: {},
|
|
11
|
-
policy: { requires_candidate_consent: true },
|
|
12
|
-
attestation: {
|
|
13
|
-
key_id: "key-1",
|
|
14
|
-
algorithm: "ed25519",
|
|
15
|
-
signature: "sig",
|
|
16
|
-
issued_at: "2026-02-25T00:00:00Z",
|
|
17
|
-
expires_at: "2026-03-25T00:00:00Z",
|
|
18
|
-
},
|
|
19
|
-
status: "online",
|
|
20
|
-
...overrides,
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
export function makeHandshakeMessage(overrides = {}) {
|
|
24
|
-
return {
|
|
25
|
-
protocol_version: PROTOCOL_VERSION,
|
|
26
|
-
type: "artemys.handshake.initiate",
|
|
27
|
-
timestamp: "2026-02-25T12:00:00.000Z",
|
|
28
|
-
message_id: "msg-1",
|
|
29
|
-
conversation_id: "conv-1",
|
|
30
|
-
sender_agent_id: "@acme-talent",
|
|
31
|
-
agent: {
|
|
32
|
-
id: "@acme-talent",
|
|
33
|
-
role: "sourcer",
|
|
34
|
-
representing: {
|
|
35
|
-
type: "employer",
|
|
36
|
-
verified: true,
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
intent: {
|
|
40
|
-
type: "role_inquiry",
|
|
41
|
-
signal: {
|
|
42
|
-
domain: "software engineering",
|
|
43
|
-
seniority: "senior",
|
|
44
|
-
location_flexibility: "remote_ok",
|
|
45
|
-
},
|
|
46
|
-
},
|
|
47
|
-
...overrides,
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
export function makeHandshakeResponseMessage(overrides = {}) {
|
|
51
|
-
return makeHandshakeMessage({
|
|
52
|
-
type: "artemys.handshake.respond",
|
|
53
|
-
sender_agent_id: "@alice",
|
|
54
|
-
message_id: "msg-respond-1",
|
|
55
|
-
agent: {
|
|
56
|
-
id: "@alice",
|
|
57
|
-
role: "candidate_representative",
|
|
58
|
-
representing: { type: "individual", verified: true },
|
|
59
|
-
},
|
|
60
|
-
availability: "active",
|
|
61
|
-
consent_profile: {
|
|
62
|
-
shareable: ["headline"],
|
|
63
|
-
has_gated_fields: true,
|
|
64
|
-
},
|
|
65
|
-
interest_signal: "interested",
|
|
66
|
-
...overrides,
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
export function makeCoffeeShopClientStub() {
|
|
70
|
-
return {
|
|
71
|
-
discover: vi.fn().mockResolvedValue([]),
|
|
72
|
-
getCard: vi.fn().mockResolvedValue(null),
|
|
73
|
-
register: vi.fn().mockResolvedValue({}),
|
|
74
|
-
updateCard: vi.fn().mockResolvedValue(makeAgentCard()),
|
|
75
|
-
getMatches: vi.fn().mockResolvedValue([]),
|
|
76
|
-
submitApplication: vi.fn().mockResolvedValue({}),
|
|
77
|
-
getInbox: vi.fn().mockResolvedValue([]),
|
|
78
|
-
respondToMessage: vi.fn().mockResolvedValue(undefined),
|
|
79
|
-
createProfile: vi.fn().mockResolvedValue({}),
|
|
80
|
-
createJob: vi.fn().mockResolvedValue({}),
|
|
81
|
-
getCandidates: vi.fn().mockResolvedValue([]),
|
|
82
|
-
messageCandidate: vi.fn().mockResolvedValue(undefined),
|
|
83
|
-
getApplications: vi.fn().mockResolvedValue([]),
|
|
84
|
-
decideApplication: vi.fn().mockResolvedValue(undefined),
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=test-fixtures.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-fixtures.js","sourceRoot":"","sources":["../../../src/mcp-server/__tests__/test-fixtures.ts"],"names":[],"mappings":"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"}
|