artemys 0.2.0 → 0.2.1

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.
Files changed (332) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +194 -146
  3. package/dist/cli/index.d.ts +1 -1
  4. package/dist/cli/index.d.ts.map +1 -1
  5. package/dist/cli/index.js +446 -379
  6. package/dist/cli/index.js.map +1 -1
  7. package/dist/coffeeshop/client.d.ts +158 -0
  8. package/dist/coffeeshop/client.d.ts.map +1 -0
  9. package/dist/coffeeshop/client.js +293 -0
  10. package/dist/coffeeshop/client.js.map +1 -0
  11. package/dist/coffeeshop/index.d.ts +2 -0
  12. package/dist/coffeeshop/index.d.ts.map +1 -0
  13. package/dist/coffeeshop/index.js +2 -0
  14. package/dist/coffeeshop/index.js.map +1 -0
  15. package/dist/discovery/agent-card.schema.d.ts +37 -109
  16. package/dist/discovery/agent-card.schema.d.ts.map +1 -1
  17. package/dist/discovery/discovery-query.schema.d.ts +6 -15
  18. package/dist/discovery/discovery-query.schema.d.ts.map +1 -1
  19. package/dist/discovery/index.d.ts +1 -1
  20. package/dist/discovery/index.d.ts.map +1 -1
  21. package/dist/discovery/index.js +1 -1
  22. package/dist/discovery/index.js.map +1 -1
  23. package/dist/discovery/intro-decision.schema.d.ts +9 -11
  24. package/dist/discovery/intro-decision.schema.d.ts.map +1 -1
  25. package/dist/discovery/intro-request.schema.d.ts +2 -14
  26. package/dist/discovery/intro-request.schema.d.ts.map +1 -1
  27. package/dist/discovery/session-bootstrap.schema.d.ts +86 -66
  28. package/dist/discovery/session-bootstrap.schema.d.ts.map +1 -1
  29. package/dist/discovery/session-bootstrap.schema.js +84 -8
  30. package/dist/discovery/session-bootstrap.schema.js.map +1 -1
  31. package/dist/mcp-server/index.d.ts +4 -0
  32. package/dist/mcp-server/index.d.ts.map +1 -0
  33. package/dist/mcp-server/index.js +4 -0
  34. package/dist/mcp-server/index.js.map +1 -0
  35. package/dist/mcp-server/persistence.d.ts +37 -0
  36. package/dist/mcp-server/persistence.d.ts.map +1 -0
  37. package/dist/mcp-server/persistence.js +309 -0
  38. package/dist/mcp-server/persistence.js.map +1 -0
  39. package/dist/mcp-server/resources.d.ts +20 -0
  40. package/dist/mcp-server/resources.d.ts.map +1 -0
  41. package/dist/mcp-server/resources.js +49 -0
  42. package/dist/mcp-server/resources.js.map +1 -0
  43. package/dist/mcp-server/server.d.ts +33 -0
  44. package/dist/mcp-server/server.d.ts.map +1 -0
  45. package/dist/mcp-server/server.js +220 -0
  46. package/dist/mcp-server/server.js.map +1 -0
  47. package/dist/mcp-server/state.d.ts +43 -0
  48. package/dist/mcp-server/state.d.ts.map +1 -0
  49. package/dist/mcp-server/state.js +111 -0
  50. package/dist/mcp-server/state.js.map +1 -0
  51. package/dist/mcp-server/tools/common.d.ts +225 -0
  52. package/dist/mcp-server/tools/common.d.ts.map +1 -0
  53. package/dist/mcp-server/tools/common.js +11 -0
  54. package/dist/mcp-server/tools/common.js.map +1 -0
  55. package/dist/mcp-server/tools/discovery.d.ts +3 -0
  56. package/dist/mcp-server/tools/discovery.d.ts.map +1 -0
  57. package/dist/mcp-server/tools/discovery.js +48 -0
  58. package/dist/mcp-server/tools/discovery.js.map +1 -0
  59. package/dist/mcp-server/tools/index.d.ts +4 -0
  60. package/dist/mcp-server/tools/index.d.ts.map +1 -0
  61. package/dist/mcp-server/tools/index.js +13 -0
  62. package/dist/mcp-server/tools/index.js.map +1 -0
  63. package/dist/mcp-server/tools/intro.d.ts +3 -0
  64. package/dist/mcp-server/tools/intro.d.ts.map +1 -0
  65. package/dist/mcp-server/tools/intro.js +53 -0
  66. package/dist/mcp-server/tools/intro.js.map +1 -0
  67. package/dist/mcp-server/tools/protocol.d.ts +3 -0
  68. package/dist/mcp-server/tools/protocol.d.ts.map +1 -0
  69. package/dist/mcp-server/tools/protocol.js +73 -0
  70. package/dist/mcp-server/tools/protocol.js.map +1 -0
  71. package/dist/mcp-server/tools/talent.d.ts +3 -0
  72. package/dist/mcp-server/tools/talent.d.ts.map +1 -0
  73. package/dist/mcp-server/tools/talent.js +226 -0
  74. package/dist/mcp-server/tools/talent.js.map +1 -0
  75. package/dist/openclaw/index.d.ts +2 -0
  76. package/dist/openclaw/index.d.ts.map +1 -0
  77. package/dist/openclaw/index.js +2 -0
  78. package/dist/openclaw/index.js.map +1 -0
  79. package/dist/openclaw/skill.d.ts +13 -0
  80. package/dist/openclaw/skill.d.ts.map +1 -0
  81. package/dist/openclaw/skill.js +18 -0
  82. package/dist/openclaw/skill.js.map +1 -0
  83. package/dist/protocol/consent.schema.d.ts +18 -48
  84. package/dist/protocol/consent.schema.d.ts.map +1 -1
  85. package/dist/protocol/consent.schema.js +1 -1
  86. package/dist/protocol/consent.schema.js.map +1 -1
  87. package/dist/protocol/dialogue.schema.d.ts +21 -177
  88. package/dist/protocol/dialogue.schema.d.ts.map +1 -1
  89. package/dist/protocol/envelope.schema.d.ts +46 -28
  90. package/dist/protocol/envelope.schema.d.ts.map +1 -1
  91. package/dist/protocol/errors.d.ts +8 -1
  92. package/dist/protocol/errors.d.ts.map +1 -1
  93. package/dist/protocol/handshake.schema.d.ts +130 -385
  94. package/dist/protocol/handshake.schema.d.ts.map +1 -1
  95. package/dist/protocol/handshake.schema.js +1 -0
  96. package/dist/protocol/handshake.schema.js.map +1 -1
  97. package/dist/protocol/identity.schema.d.ts +44 -94
  98. package/dist/protocol/identity.schema.d.ts.map +1 -1
  99. package/dist/protocol/index.d.ts +1 -0
  100. package/dist/protocol/index.d.ts.map +1 -1
  101. package/dist/protocol/index.js +1 -0
  102. package/dist/protocol/index.js.map +1 -1
  103. package/dist/protocol/message-types.d.ts +14 -1
  104. package/dist/protocol/message-types.d.ts.map +1 -1
  105. package/dist/protocol/message.schema.d.ts +100 -715
  106. package/dist/protocol/message.schema.d.ts.map +1 -1
  107. package/dist/protocol/resolution.schema.d.ts +22 -268
  108. package/dist/protocol/resolution.schema.d.ts.map +1 -1
  109. package/dist/protocol/resolution.schema.js +1 -1
  110. package/dist/protocol/resolution.schema.js.map +1 -1
  111. package/dist/protocol/state-machine.d.ts +10 -1
  112. package/dist/protocol/state-machine.d.ts.map +1 -1
  113. package/dist/protocol/talent.schema.d.ts +106 -0
  114. package/dist/protocol/talent.schema.d.ts.map +1 -0
  115. package/dist/protocol/talent.schema.js +47 -0
  116. package/dist/protocol/talent.schema.js.map +1 -0
  117. package/dist/protocol/transport.schema.d.ts +16 -18
  118. package/dist/protocol/transport.schema.d.ts.map +1 -1
  119. package/dist/transport/client.d.ts +32 -0
  120. package/dist/transport/client.d.ts.map +1 -0
  121. package/dist/transport/client.js +155 -0
  122. package/dist/transport/client.js.map +1 -0
  123. package/dist/transport/dedup.d.ts +9 -0
  124. package/dist/transport/dedup.d.ts.map +1 -0
  125. package/dist/transport/dedup.js +36 -0
  126. package/dist/transport/dedup.js.map +1 -0
  127. package/dist/transport/handler.d.ts +9 -0
  128. package/dist/transport/handler.d.ts.map +1 -0
  129. package/dist/transport/handler.js +105 -0
  130. package/dist/transport/handler.js.map +1 -0
  131. package/dist/transport/hmac.d.ts +3 -0
  132. package/dist/transport/hmac.d.ts.map +1 -0
  133. package/dist/transport/hmac.js +43 -0
  134. package/dist/transport/hmac.js.map +1 -0
  135. package/dist/transport/index.d.ts +6 -0
  136. package/dist/transport/index.d.ts.map +1 -0
  137. package/dist/transport/index.js +6 -0
  138. package/dist/transport/index.js.map +1 -0
  139. package/dist/transport/reference-runner.d.ts +37 -0
  140. package/dist/transport/reference-runner.d.ts.map +1 -0
  141. package/dist/transport/reference-runner.js +372 -0
  142. package/dist/transport/reference-runner.js.map +1 -0
  143. package/package.json +19 -31
  144. package/dist/agent/archiver.d.ts +0 -8
  145. package/dist/agent/archiver.d.ts.map +0 -1
  146. package/dist/agent/archiver.js +0 -48
  147. package/dist/agent/archiver.js.map +0 -1
  148. package/dist/agent/capabilities.d.ts +0 -23
  149. package/dist/agent/capabilities.d.ts.map +0 -1
  150. package/dist/agent/capabilities.js +0 -87
  151. package/dist/agent/capabilities.js.map +0 -1
  152. package/dist/agent/config.d.ts +0 -60
  153. package/dist/agent/config.d.ts.map +0 -1
  154. package/dist/agent/config.js +0 -84
  155. package/dist/agent/config.js.map +0 -1
  156. package/dist/agent/context-provider.d.ts +0 -12
  157. package/dist/agent/context-provider.d.ts.map +0 -1
  158. package/dist/agent/context-provider.js +0 -34
  159. package/dist/agent/context-provider.js.map +0 -1
  160. package/dist/agent/context.d.ts +0 -9
  161. package/dist/agent/context.d.ts.map +0 -1
  162. package/dist/agent/context.js +0 -80
  163. package/dist/agent/context.js.map +0 -1
  164. package/dist/agent/events.d.ts +0 -62
  165. package/dist/agent/events.d.ts.map +0 -1
  166. package/dist/agent/events.js +0 -21
  167. package/dist/agent/events.js.map +0 -1
  168. package/dist/agent/index.d.ts +0 -32
  169. package/dist/agent/index.d.ts.map +0 -1
  170. package/dist/agent/index.js +0 -28
  171. package/dist/agent/index.js.map +0 -1
  172. package/dist/agent/mcp.d.ts +0 -16
  173. package/dist/agent/mcp.d.ts.map +0 -1
  174. package/dist/agent/mcp.js +0 -69
  175. package/dist/agent/mcp.js.map +0 -1
  176. package/dist/agent/notifications/decision-parser.d.ts +0 -10
  177. package/dist/agent/notifications/decision-parser.d.ts.map +0 -1
  178. package/dist/agent/notifications/decision-parser.js +0 -21
  179. package/dist/agent/notifications/decision-parser.js.map +0 -1
  180. package/dist/agent/notifications/index.d.ts +0 -4
  181. package/dist/agent/notifications/index.d.ts.map +0 -1
  182. package/dist/agent/notifications/index.js +0 -3
  183. package/dist/agent/notifications/index.js.map +0 -1
  184. package/dist/agent/notifications/opportunity-templates.d.ts +0 -14
  185. package/dist/agent/notifications/opportunity-templates.d.ts.map +0 -1
  186. package/dist/agent/notifications/opportunity-templates.js +0 -21
  187. package/dist/agent/notifications/opportunity-templates.js.map +0 -1
  188. package/dist/agent/notifications/types.d.ts +0 -16
  189. package/dist/agent/notifications/types.d.ts.map +0 -1
  190. package/dist/agent/notifications/types.js +0 -2
  191. package/dist/agent/notifications/types.js.map +0 -1
  192. package/dist/agent/providers.d.ts +0 -9
  193. package/dist/agent/providers.d.ts.map +0 -1
  194. package/dist/agent/providers.js +0 -29
  195. package/dist/agent/providers.js.map +0 -1
  196. package/dist/agent/runtime.d.ts +0 -63
  197. package/dist/agent/runtime.d.ts.map +0 -1
  198. package/dist/agent/runtime.js +0 -395
  199. package/dist/agent/runtime.js.map +0 -1
  200. package/dist/agent/scanning/index.d.ts +0 -3
  201. package/dist/agent/scanning/index.d.ts.map +0 -1
  202. package/dist/agent/scanning/index.js +0 -3
  203. package/dist/agent/scanning/index.js.map +0 -1
  204. package/dist/agent/scanning/opportunity-scorer.d.ts +0 -24
  205. package/dist/agent/scanning/opportunity-scorer.d.ts.map +0 -1
  206. package/dist/agent/scanning/opportunity-scorer.js +0 -90
  207. package/dist/agent/scanning/opportunity-scorer.js.map +0 -1
  208. package/dist/agent/scanning/types.d.ts +0 -65
  209. package/dist/agent/scanning/types.d.ts.map +0 -1
  210. package/dist/agent/scanning/types.js +0 -32
  211. package/dist/agent/scanning/types.js.map +0 -1
  212. package/dist/agent/scheduler.d.ts +0 -38
  213. package/dist/agent/scheduler.d.ts.map +0 -1
  214. package/dist/agent/scheduler.js +0 -125
  215. package/dist/agent/scheduler.js.map +0 -1
  216. package/dist/agent/session.d.ts +0 -20
  217. package/dist/agent/session.d.ts.map +0 -1
  218. package/dist/agent/session.js +0 -88
  219. package/dist/agent/session.js.map +0 -1
  220. package/dist/agent/stores.d.ts +0 -48
  221. package/dist/agent/stores.d.ts.map +0 -1
  222. package/dist/agent/stores.js +0 -2
  223. package/dist/agent/stores.js.map +0 -1
  224. package/dist/agent/tools/browser/ats-patterns.d.ts +0 -20
  225. package/dist/agent/tools/browser/ats-patterns.d.ts.map +0 -1
  226. package/dist/agent/tools/browser/ats-patterns.js +0 -226
  227. package/dist/agent/tools/browser/ats-patterns.js.map +0 -1
  228. package/dist/agent/tools/browser/index.d.ts +0 -14
  229. package/dist/agent/tools/browser/index.d.ts.map +0 -1
  230. package/dist/agent/tools/browser/index.js +0 -126
  231. package/dist/agent/tools/browser/index.js.map +0 -1
  232. package/dist/agent/tools/browser/operator-runtime.d.ts +0 -35
  233. package/dist/agent/tools/browser/operator-runtime.d.ts.map +0 -1
  234. package/dist/agent/tools/browser/operator-runtime.js +0 -93
  235. package/dist/agent/tools/browser/operator-runtime.js.map +0 -1
  236. package/dist/agent/tools/browser/providers/chrome-mcp.d.ts +0 -3
  237. package/dist/agent/tools/browser/providers/chrome-mcp.d.ts.map +0 -1
  238. package/dist/agent/tools/browser/providers/chrome-mcp.js +0 -164
  239. package/dist/agent/tools/browser/providers/chrome-mcp.js.map +0 -1
  240. package/dist/agent/tools/browser/providers/playwright.d.ts +0 -7
  241. package/dist/agent/tools/browser/providers/playwright.d.ts.map +0 -1
  242. package/dist/agent/tools/browser/providers/playwright.js +0 -619
  243. package/dist/agent/tools/browser/providers/playwright.js.map +0 -1
  244. package/dist/agent/tools/browser/types.d.ts +0 -22
  245. package/dist/agent/tools/browser/types.d.ts.map +0 -1
  246. package/dist/agent/tools/browser/types.js +0 -15
  247. package/dist/agent/tools/browser/types.js.map +0 -1
  248. package/dist/agent/tools/cancel-task.d.ts +0 -4
  249. package/dist/agent/tools/cancel-task.d.ts.map +0 -1
  250. package/dist/agent/tools/cancel-task.js +0 -29
  251. package/dist/agent/tools/cancel-task.js.map +0 -1
  252. package/dist/agent/tools/career-advice.d.ts +0 -3
  253. package/dist/agent/tools/career-advice.d.ts.map +0 -1
  254. package/dist/agent/tools/career-advice.js +0 -49
  255. package/dist/agent/tools/career-advice.js.map +0 -1
  256. package/dist/agent/tools/index.d.ts +0 -15
  257. package/dist/agent/tools/index.d.ts.map +0 -1
  258. package/dist/agent/tools/index.js +0 -94
  259. package/dist/agent/tools/index.js.map +0 -1
  260. package/dist/agent/tools/job-search.d.ts +0 -3
  261. package/dist/agent/tools/job-search.d.ts.map +0 -1
  262. package/dist/agent/tools/job-search.js +0 -77
  263. package/dist/agent/tools/job-search.js.map +0 -1
  264. package/dist/agent/tools/list-tasks.d.ts +0 -4
  265. package/dist/agent/tools/list-tasks.d.ts.map +0 -1
  266. package/dist/agent/tools/list-tasks.js +0 -24
  267. package/dist/agent/tools/list-tasks.js.map +0 -1
  268. package/dist/agent/tools/market-data.d.ts +0 -8
  269. package/dist/agent/tools/market-data.d.ts.map +0 -1
  270. package/dist/agent/tools/market-data.js +0 -133
  271. package/dist/agent/tools/market-data.js.map +0 -1
  272. package/dist/agent/tools/memory-write.d.ts +0 -3
  273. package/dist/agent/tools/memory-write.d.ts.map +0 -1
  274. package/dist/agent/tools/memory-write.js +0 -48
  275. package/dist/agent/tools/memory-write.js.map +0 -1
  276. package/dist/agent/tools/resume.d.ts +0 -3
  277. package/dist/agent/tools/resume.d.ts.map +0 -1
  278. package/dist/agent/tools/resume.js +0 -70
  279. package/dist/agent/tools/resume.js.map +0 -1
  280. package/dist/agent/tools/schedule-task.d.ts +0 -4
  281. package/dist/agent/tools/schedule-task.d.ts.map +0 -1
  282. package/dist/agent/tools/schedule-task.js +0 -39
  283. package/dist/agent/tools/schedule-task.js.map +0 -1
  284. package/dist/agent/tools/shell.d.ts +0 -6
  285. package/dist/agent/tools/shell.d.ts.map +0 -1
  286. package/dist/agent/tools/shell.js +0 -66
  287. package/dist/agent/tools/shell.js.map +0 -1
  288. package/dist/agent/tools/web-search.d.ts +0 -6
  289. package/dist/agent/tools/web-search.d.ts.map +0 -1
  290. package/dist/agent/tools/web-search.js +0 -73
  291. package/dist/agent/tools/web-search.js.map +0 -1
  292. package/dist/agent/types.d.ts +0 -103
  293. package/dist/agent/types.d.ts.map +0 -1
  294. package/dist/agent/types.js +0 -11
  295. package/dist/agent/types.js.map +0 -1
  296. package/dist/channels/index.d.ts +0 -10
  297. package/dist/channels/index.d.ts.map +0 -1
  298. package/dist/channels/index.js +0 -15
  299. package/dist/channels/index.js.map +0 -1
  300. package/dist/channels/telegram.d.ts +0 -21
  301. package/dist/channels/telegram.d.ts.map +0 -1
  302. package/dist/channels/telegram.js +0 -255
  303. package/dist/channels/telegram.js.map +0 -1
  304. package/dist/channels/types.d.ts +0 -24
  305. package/dist/channels/types.d.ts.map +0 -1
  306. package/dist/channels/types.js +0 -2
  307. package/dist/channels/types.js.map +0 -1
  308. package/dist/cli/templates/HEARTBEAT.md +0 -6
  309. package/dist/cli/templates/MEMORY.md +0 -6
  310. package/dist/cli/templates/PREFERENCES.md +0 -40
  311. package/dist/cli/templates/PROFILE.md +0 -26
  312. package/dist/cli/templates/SOUL.md +0 -23
  313. package/dist/connectors/google-calendar.d.ts +0 -8
  314. package/dist/connectors/google-calendar.d.ts.map +0 -1
  315. package/dist/connectors/google-calendar.js +0 -23
  316. package/dist/connectors/google-calendar.js.map +0 -1
  317. package/dist/connectors/google-gmail.d.ts +0 -8
  318. package/dist/connectors/google-gmail.d.ts.map +0 -1
  319. package/dist/connectors/google-gmail.js +0 -30
  320. package/dist/connectors/google-gmail.js.map +0 -1
  321. package/dist/connectors/google-oauth.d.ts +0 -17
  322. package/dist/connectors/google-oauth.d.ts.map +0 -1
  323. package/dist/connectors/google-oauth.js +0 -52
  324. package/dist/connectors/google-oauth.js.map +0 -1
  325. package/dist/connectors/index.d.ts +0 -5
  326. package/dist/connectors/index.d.ts.map +0 -1
  327. package/dist/connectors/index.js +0 -5
  328. package/dist/connectors/index.js.map +0 -1
  329. package/dist/connectors/types.d.ts +0 -20
  330. package/dist/connectors/types.d.ts.map +0 -1
  331. package/dist/connectors/types.js +0 -5
  332. package/dist/connectors/types.js.map +0 -1
package/CHANGELOG.md ADDED
@@ -0,0 +1,23 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are documented in this file.
4
+
5
+ ## Unreleased
6
+
7
+ ## 0.2.1 - 2026-03-02
8
+
9
+ - Added SQLite-backed MCP persistence for profile + conversation state and exposed persistence APIs from `artemys/mcp-server`.
10
+ - Added `artemys talent` CLI subcommands and `--persist` support for `artemys mcp-server`.
11
+ - Added OpenClaw/MCP/talent quickstart docs and protocol flow diagrams.
12
+ - Hardened Coffee Shop service with API rate limiting, attestation expiry enforcement in discovery paths, and richer health/monitoring output.
13
+
14
+ - Added secure intro handoff contract in Coffee Shop bootstrap responses with explicit relay/direct handoff fields.
15
+ - Added bootstrap-issued shared secret lifecycle metadata and intro session secret rotation endpoint.
16
+ - Added Coffee Shop client and CLI fallback support for resolving transport shared secrets from accepted intros.
17
+ - Added runnable reference runtime loop (`examples/reference-runtime-loop.ts`) with happy path and timeout/deferred behavior.
18
+ - Updated docs for fundamentals, getting started, versioning, and current SDK/product boundary.
19
+
20
+ ## 0.1.2 - 2026-02-24
21
+
22
+ - Scope cleanup to keep Artemys focused on interoperability primitives.
23
+ - Removed stale references to previously extracted product workflows from package exports and docs.
package/README.md CHANGED
@@ -1,234 +1,282 @@
1
1
  <div align="center">
2
2
 
3
- <img src="https://raw.githubusercontent.com/artemyshq/artemys/main/.github/assets/artie-icon.svg" width="52" alt="Artie">
3
+ <img src="https://gist.githubusercontent.com/jblue-ops/4f2ddf27e37b2ca8358168535c8fd8ee/raw/artemys-icon.svg" width="56" alt="Artemys">
4
4
 
5
- <h1>A R T E M Y S</h1>
5
+ # Artemys
6
6
 
7
- **The open ecosystem for agent-to-agent career communication**
8
-
9
- *Athletes have agents. Executives have agents. Actors have agents.<br>
10
- Now everyone does.*
11
-
12
- <br>
7
+ **Open protocol and ecosystem for agent-to-agent career communication**
13
8
 
14
9
  [![npm](https://img.shields.io/npm/v/artemys?style=flat-square&color=000&label=npm)](https://www.npmjs.com/package/artemys)
10
+ [![protocol](https://img.shields.io/badge/protocol-v0.1.0-000?style=flat-square)](protocol/)
15
11
  [![license](https://img.shields.io/badge/license-MIT-000?style=flat-square)](LICENSE)
16
- [![TypeScript](https://img.shields.io/badge/TypeScript-first-000?style=flat-square&logo=typescript&logoColor=fff)](https://www.typescriptlang.org/)
17
- [![tests](https://img.shields.io/badge/tests-155%2B_passing-000?style=flat-square)](https://github.com/artemyshq/artemys)
12
+ [![TypeScript](https://img.shields.io/badge/TypeScript-000?style=flat-square&logo=typescript&logoColor=fff)](https://www.typescriptlang.org/)
18
13
 
19
- **[Vision](docs/VISION.md)** · **[Docs](docs/)** · **[Protocol Spec](protocol/)** · **[npm](https://www.npmjs.com/package/artemys)**
14
+ [Quickstart](docs/quickstart.md) &middot; [Getting Started](docs/start/GETTING-STARTED.md) &middot; [Fundamentals](docs/FUNDAMENTALS.md) &middot; [Protocol Flow](docs/protocol-flow.md) &middot; [Vision](docs/VISION.md) &middot; [npm](https://www.npmjs.com/package/artemys)
20
15
 
21
16
  </div>
22
17
 
23
- ---
24
-
25
- ## The Problem
18
+ <br>
26
19
 
27
- Every hiring system in the market was built for the old world. And every communication channel between talent and opportunity was built for a world where humans do the talking.
20
+ Artemys defines how AI agents representing candidates and employers discover each other, establish trust, and conduct structured career conversations so humans only engage at moments of meaningful choice.
28
21
 
29
- **The systems are broken.** They assume stable job families, linear career paths, and credentials as efficient proxies for capability. They filter people based on keywords, titles, and years the exact signals that are losing meaning. 98% of Fortune 500 companies use AI in hiring — to automate the same broken credential-matching faster.
22
+ This package provides the interoperability primitives: protocol schemas, authenticated transport, discovery, and an MCP bridge. Runtime and product logic belong downstream.
30
23
 
31
- **The communication is broken.** Candidates manually update profiles, write performative cover letters, and spray-and-pray applications. Recruiters send mass outreach that gets ignored. Both sides spend 90% of their time on overhead and 10% on signal. LinkedIn has become a spam wasteland where everyone performs and nobody communicates.
24
+ Start with `docs/FUNDAMENTALS.md` for the implementation map (plug in -> meet -> converse).
32
25
 
33
- **The result:** The recruiter who ships production software gets filtered out because they're "not an engineer on paper." Career changers, non-traditional builders, and high-agency generalists are structurally invisible. And even when the right person and the right opportunity exist in the same market, the communication infrastructure between them is so noisy and broken that they never connect.
26
+ <br>
34
27
 
35
- The industry is racing to automate the existing process faster. Nobody is asking whether the process itself is wrong.
28
+ ## Architecture
36
29
 
37
- ---
30
+ ```
31
+ ┌──────────────────────────────────┐
32
+ │ Coffee Shop │
33
+ │ (discovery + introductions) │
34
+ └──────┬───────────────┬───────────┘
35
+ │ │
36
+ discover introduce
37
+ │ │
38
+ ┌───────────────┴───┐ ┌───┴───────────────┐
39
+ │ Candidate Agent │ │ Talent Agent │
40
+ │ │ │ │
41
+ │ ┌─────────────┐ │ │ ┌─────────────┐ │
42
+ │ │ Protocol │◄─┼───────┼──► Protocol │ │
43
+ │ │ Schemas │ │ HMAC │ │ Schemas │ │
44
+ │ └─────────────┘ │ HTTP │ └─────────────┘ │
45
+ └───────────────────┘ └───────────────────┘
46
+ ```
38
47
 
39
- ## You Deserve Representation
48
+ <br>
40
49
 
41
- Athletes have agents. Executives have agents. Actors have agents.
50
+ ## Install
42
51
 
43
- These agents exist because **talent shouldn't have to sell itself**. An agent knows the market, understands your worth, handles the noise, and makes sure you only spend time on opportunities that matter. They represent your interests — not the buyer's.
52
+ ```bash
53
+ npm install artemys
54
+ ```
44
55
 
45
- Why doesn't everyone have this?
56
+ <br>
46
57
 
47
- Because until now, it didn't scale. A human agent for every professional in the world isn't possible. **But an AI agent is.** One that knows your skills, understands your goals, respects your boundaries, and works on your behalf around the clock.
58
+ ## Modules
48
59
 
49
- **That's what Artemys makes possible.**
60
+ | Import | What it does |
61
+ |--------|-------------|
62
+ | `artemys` | 47 Zod schemas, 8-state machine, 12 message types |
63
+ | `artemys/discovery` | Agent cards, discovery queries, intro requests |
64
+ | `artemys/transport` | HMAC-SHA256 authenticated HTTP client and server |
65
+ | `artemys/coffeeshop` | Client for the Coffee Shop discovery API |
66
+ | `artemys/mcp-server` | MCP bridge — expose the protocol to any agent |
67
+ | `artemys/integrations` | Job board connectors (Ashby, Greenhouse, Lever, Remotive) |
50
68
 
51
- Artemys is the open ecosystem for building career agents — the protocol they speak, the schemas they validate against, the runtime they run on, and the discovery layer where they find each other. Anyone can build a candidate agent or a talent agent on top of it.
69
+ <br>
52
70
 
53
- > **The candidate sets direction and boundaries. Their agent handles everything else.**
71
+ ## Quick Start
54
72
 
55
- We're building **[Artie](https://artemys.ai)** — a candidate agent powered by Artemys. But the ecosystem is open: anyone can build agents that speak the protocol.
73
+ Reference runnable examples: `examples/README.md`
56
74
 
57
- ---
75
+ ### Validate a protocol message
58
76
 
59
- ## How It Works
77
+ ```typescript
78
+ import { ProtocolMessageSchema, HandshakeInitiateSchema } from "artemys"
60
79
 
80
+ const result = ProtocolMessageSchema.safeParse(incomingMessage)
81
+ if (!result.success) {
82
+ console.error(result.error.issues)
83
+ }
61
84
  ```
62
- You Company
63
- │ │
64
- ┌────▼──────┐ ◆ Artemys Protocol ◆ ┌──────────▼──┐
65
- │ Your Agent │◄──────────────────────────►│ Talent Agent │
66
- │(e.g. Artie)│ discover handshake → │ (Theirs) │
67
- └────────────┘ consent → dialogue → └──────────────┘
68
- resolution
85
+
86
+ ### Send a signed message
87
+
88
+ ```typescript
89
+ import { ProtocolTransportClient } from "artemys/transport"
90
+
91
+ const transport = new ProtocolTransportClient({
92
+ agentId: "candidate-agent-01",
93
+ getSharedSecret: async (peerId) => secrets.get(peerId),
94
+ })
95
+
96
+ const result = await transport.send(
97
+ "https://peer.example.com/artemys/v0.1/messages",
98
+ message
99
+ )
69
100
  ```
70
101
 
71
- When both sides have agents, professional career communication transforms:
102
+ ### Discover agents via Coffee Shop
72
103
 
73
- | Today (Human-to-Human) | Artemys (Agent-to-Agent) |
74
- |-------------------------|--------------------------|
75
- | Recruiter sends cold email | Talent agent queries candidate Arties matching real criteria |
76
- | Candidate ignores 95% of messages | Artie evaluates and silently declines irrelevant queries |
77
- | Candidate manually tailors resume per app | Artie shares relevant evidence contextually |
78
- | Both sides guess at fit through phone screens | Agents exchange structured information progressively |
79
- | Humans spend weeks on discovery | Agents resolve fit in hours; humans meet when it matters |
80
- | Ghosting, black holes, no feedback | Every interaction resolves: mutual interest, decline, or defer |
104
+ Coffee Shop is the network receptionist for agents:
81
105
 
82
- **Consent is structural.** Candidates control what's shared, when, and with whom — enforced at the protocol level, not as a setting buried in a menu. The protocol ensures both sides progressively reveal information as trust builds. Neither side dumps everything upfront.
106
+ - Agents register their public card (who they are, what they can do, where they can be reached)
107
+ - Agents discover compatible peers for a given role/capability
108
+ - Agents request intros, and the target agent can accept or decline
109
+ - On accept, Coffee Shop returns a session bootstrap with peer endpoints, transport profile, shared secret, and rotation metadata
110
+ - Coffee Shop tracks intro lifecycle events and enforces safety checks (auth, compatibility, consent rules, retry-safe idempotency)
83
111
 
84
- ---
112
+ Coffee Shop handles matchmaking and safe handoff. The actual career conversation happens agent-to-agent through the protocol.
85
113
 
86
- ## What We're Building
114
+ ```typescript
115
+ import { CoffeeShopClient } from "artemys/coffeeshop"
87
116
 
88
- | We ARE Building | We Are NOT Building |
89
- |-----------------|---------------------|
90
- | Agent-to-agent career communication protocol | A LinkedIn replacement or job board |
91
- | Personal career agents that represent candidates 24/7 | A passive profile platform |
92
- | Autonomous talent agents that DO the job | AI tools that help humans do jobs faster |
93
- | Skills-based, agency-aware screening | Faster credential matching |
94
- | Open protocol anyone can build on | A walled garden |
95
- | Consent-native communication | Opt-out-only spam |
117
+ const shop = new CoffeeShopClient({
118
+ baseUrl: "https://coffeeshop.artemys.ai",
119
+ apiKey: process.env.ARTEMYS_API_KEY,
120
+ agentId: "candidate-agent-01",
121
+ })
96
122
 
97
- ---
123
+ const agents = await shop.discover({
124
+ requester_agent_id: "candidate-agent-01",
125
+ role: "talent_agent",
126
+ limit: 20,
127
+ })
128
+ ```
98
129
 
99
- ## Install
130
+ ### Run the reference runtime loop
100
131
 
101
132
  ```bash
102
- npm install artemys
103
- # or
104
- bun add artemys
133
+ bun run examples/reference-runtime-loop.ts
105
134
  ```
106
135
 
107
- ## Quick Example
136
+ ```bash
137
+ bun run examples/reference-runtime-loop.ts timeout
138
+ ```
108
139
 
109
- ```typescript
110
- import { HandshakeInitiateSchema, PROTOCOL_VERSION } from "artemys"
111
- import { AgentCardSchema } from "artemys/discovery"
112
- import { ArtemysRuntime, loadConfig } from "artemys/agent"
113
-
114
- // Every agent starts with a card — who you are, what you can do
115
- const card = AgentCardSchema.parse({
116
- agent_id: "artie-001",
117
- display_name: "Artie",
118
- role: "candidate_agent",
119
- protocol_versions: [PROTOCOL_VERSION],
120
- capabilities: ["skills_exchange", "interview_prep"],
121
- // ... endpoints, policy, attestation
122
- })
140
+ ### Run the MCP server
123
141
 
124
- // Start the runtime — your agent goes live
125
- const runtime = new ArtemysRuntime(loadConfig())
126
- await runtime.start()
142
+ ```bash
143
+ artemys mcp-server --agent-card ./agent-card.json
127
144
  ```
128
145
 
129
- ---
146
+ The MCP server exposes protocol, discovery, and intro tools — letting any MCP-compatible agent participate in the Artemys network without writing transport code.
147
+ Set `ARTEMYS_COFFEESHOP_API_KEY` to enable intro tools; without it, the bridge registers discovery + protocol tools.
130
148
 
131
- ## Architecture
149
+ <br>
150
+
151
+ ## Protocol
152
+
153
+ The protocol defines how two agents conduct a structured career conversation, from first contact to resolution.
132
154
 
133
155
  ```
134
- artemys
135
- ├── 📋 Protocol Zod schemas · state machine · message validation
136
- ├── ☕ Discovery Agent cards · registration · intro ("Coffee Shop")
137
- ├── 🤖 Agent Runtime · tools · scheduling · MCP integration
138
- ├── 📡 Channels Telegram adapter · channel registry
139
- └── ⚡ CLI onboard · doctor · start
156
+ NEW ──► HANDSHAKE_INITIATED ──► DIALOGUE_ACTIVE ──► RESOLVED
157
+ │ │
158
+ ▼ ▼
159
+ CANDIDATE_DECLINE PAUSED_HUMAN_APPROVAL
140
160
  ```
141
161
 
142
- ## Modules
162
+ **12 message types** across 4 phases — handshake, dialogue, consent, resolution — with sender role constraints, schema validation, and deterministic state transitions.
143
163
 
144
- ### 📋 Protocol
164
+ The protocol spec is frozen at **v0.1.0** with 41 contract fixtures and conformance tests.
145
165
 
146
- Typed Zod schemas for the full conversation lifecycle — handshake, consent gates, dialogue, and resolution.
166
+ **[Read the full spec &rarr;](protocol/)**
147
167
 
148
- ```typescript
149
- import { HandshakeInitiateSchema, PROTOCOL_VERSION } from "artemys"
150
- // or explicitly:
151
- import { HandshakeInitiateSchema } from "artemys/protocol"
152
- ```
153
-
154
- Includes `Envelope`, `ConversationState`, state machine transitions, `ConsentProfile`, `ConsentGate`, `FitAssessment`, and 20+ message schemas covering every phase of agent-to-agent communication.
168
+ <br>
155
169
 
156
- ### ☕ Discovery
170
+ ## Transport
157
171
 
158
- The "Coffee Shop" layer where agents find each other, exchange cards, and bootstrap sessions.
172
+ Messages travel over HTTPS with HMAC-SHA256 authentication:
159
173
 
160
- ```typescript
161
- import { AgentCardSchema, DiscoveryQuerySchema } from "artemys/discovery"
162
- ```
174
+ - **Endpoint:** `POST /artemys/v0.1/messages`
175
+ - **Signing:** `agent_id.timestamp.body` with shared secret
176
+ - **Replay protection:** 5-minute timestamp window
177
+ - **Deduplication:** by sender + message ID
178
+ - **Retries:** exponential backoff (5 attempts, 60s cap)
163
179
 
164
- Includes `AgentCard`, `DiscoveryQuery`, `IntroRequest`, `SessionBootstrap`, and relay/direct handoff flows.
180
+ **[Transport spec &rarr;](protocol/docs/TRANSPORT_HTTP.md)**
165
181
 
166
- ### 🤖 Agent
182
+ <br>
167
183
 
168
- Runtime framework for building career agents with built-in tools, task scheduling, browser automation, and MCP integration.
184
+ ## CLI
169
185
 
170
- ```typescript
171
- import { ArtemysRuntime, loadConfig } from "artemys/agent"
186
+ ```bash
187
+ artemys mcp-server # Start the MCP bridge server
188
+ artemys talent # Candidate talent workflow helpers
189
+ artemys register # Register an agent card with Coffee Shop
190
+ artemys discover # Query for compatible agents
191
+ artemys rotate-key # Rotate Coffee Shop API key
192
+ artemys intro-events # Show intro lifecycle events
193
+ artemys version # Print CLI package version
172
194
  ```
173
195
 
174
- **Built-in tools:** career advice · resume generation · market data · job search · web search · browser automation · memory · shell · task scheduling
175
-
176
- ### 📡 Channels
196
+ <br>
177
197
 
178
- Communication adapters for reaching agents wherever they are.
198
+ ## Project Structure
179
199
 
180
- ```typescript
181
- import { TelegramAdapter } from "artemys/channels/telegram"
182
- import { ChannelRegistry } from "artemys/channels"
183
200
  ```
201
+ src/
202
+ protocol/ Zod schemas, state machine, message types
203
+ discovery/ Agent cards, queries, OpenAPI spec
204
+ transport/ HMAC client, server handler, dedup
205
+ coffeeshop/ Coffee Shop API client
206
+ mcp-server/ MCP tools (protocol, discovery, intro)
207
+ integrations/ Job board connectors
208
+ cli/ CLI commands
209
+
210
+ protocol/ Protocol spec, contracts, fixtures
211
+ service/ Coffee Shop service (Vercel)
212
+ ```
213
+
214
+ <br>
184
215
 
185
- ### ⚡ CLI
216
+ ## Development
186
217
 
187
218
  ```bash
188
- artemys onboard # Guided agent setup
189
- artemys doctor # Validate your configuration
190
- artemys start # Launch your agent
219
+ bun install # Install dependencies
220
+ bun run type-check # Type-check without emitting
221
+ bun run test # Run test suite
222
+ bun run build # Build to dist/
223
+ bun run protocol:check # Run protocol contract tests
191
224
  ```
192
225
 
193
- ---
226
+ ### Coffee Shop Service (Turso/libSQL)
194
227
 
195
- ## Ecosystem
228
+ ```bash
229
+ cd service
230
+ bun install
196
231
 
197
- | | Component | Role |
198
- |---|-----------|------|
199
- | 🔷 | **[artemys](https://github.com/artemyshq/artemys)** | Open ecosystem + SDK *(you are here)* |
200
- | 🟢 | **[Artie](https://artemys.ai)** | Reference candidate agent — your personal career agent |
201
- | 🟠 | **Talent Agents** | Employer-side agents — anyone can build one using the protocol |
232
+ # Use durable DB mode
233
+ export ARTEMYS_DB_DRIVER=libsql
234
+ export TURSO_DATABASE_URL="libsql://..."
235
+ export TURSO_AUTH_TOKEN="..."
202
236
 
203
- The protocol is open. The SDK is open. Build your own agent, extend the protocol, or use Artie out of the box.
237
+ # Run schema migrations once per environment
238
+ bun run migrate
204
239
 
205
- ---
240
+ # Run service tests/type-check
241
+ bun run type-check
242
+ bun run test
206
243
 
207
- ## Development
244
+ # Optional: run coverage gate locally (same thresholded path as CI)
245
+ bun run test:coverage
246
+ ```
247
+
248
+ Non-local runtimes fail closed if durable DB config is missing.
249
+ If you intentionally want non-local ephemeral mode, set:
208
250
 
209
251
  ```bash
210
- bun install # Install dependencies
211
- bun run build # Build the SDK
212
- bun run test # Run 155+ tests
213
- bun run type-check # TypeScript validation
214
- bun run protocol:check # Protocol conformance tests
252
+ export ARTEMYS_ALLOW_IN_MEMORY_DB=true
215
253
  ```
216
254
 
217
- ## Docs
255
+ Metrics endpoint auth:
218
256
 
219
- | | Document | Covers |
220
- |---|---------|--------|
221
- | 📖 | **[Vision](docs/VISION.md)** | Why we exist · What we believe · What we're building |
222
- | 💡 | **[Why Artie](docs/WHY-ARTIE.md)** | The candidate story · What's broken · What Artie fixes |
223
- | 🔧 | **[How Artie Works](docs/HOW-ARTIE-WORKS.md)** | Product and technical reference |
224
- | 📋 | **[Protocol Spec](protocol/)** | Normative docs · Fixtures · Conformance checklist |
257
+ - Non-local runtimes require `ARTEMYS_METRICS_TOKEN`
258
+ - Local/test runtimes can leave it unset for local debugging
225
259
 
226
- ---
260
+ ```bash
261
+ export ARTEMYS_METRICS_TOKEN="your-shared-metrics-token"
262
+ ```
227
263
 
228
- <div align="center">
264
+ Attestation policy defaults to enforce. Explicit local opt-out:
229
265
 
230
- **Built for a world where talent has representation.**
266
+ ```bash
267
+ export ARTEMYS_ATTESTATION_MODE=warn
268
+ ```
269
+
270
+ <br>
271
+
272
+ ## Contributing
231
273
 
232
- [MIT License](LICENSE)
274
+ Artemys is open source under the [MIT License](LICENSE).
233
275
 
276
+ The protocol spec is frozen — changes require a version bump and updated contract fixtures. Contributions should stay focused on interoperability primitives; product-specific logic belongs in downstream repos.
277
+
278
+ <br>
279
+
280
+ <div align="center">
281
+ <sub>Built by <a href="https://artemys.ai">Artemys</a></sub>
234
282
  </div>
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- export {};
2
+ export declare function runCli(argv?: string[]): Promise<void>;
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AA+kBA,wBAAsB,MAAM,CAAC,IAAI,WAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6CxE"}