artemys 0.1.0 → 0.2.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.
Files changed (121) hide show
  1. package/README.md +182 -26
  2. package/dist/agent/capabilities.d.ts +23 -0
  3. package/dist/agent/capabilities.d.ts.map +1 -0
  4. package/dist/agent/capabilities.js +87 -0
  5. package/dist/agent/capabilities.js.map +1 -0
  6. package/dist/agent/context-provider.d.ts +12 -0
  7. package/dist/agent/context-provider.d.ts.map +1 -0
  8. package/dist/agent/context-provider.js +34 -0
  9. package/dist/agent/context-provider.js.map +1 -0
  10. package/dist/agent/context.d.ts +3 -1
  11. package/dist/agent/context.d.ts.map +1 -1
  12. package/dist/agent/context.js +15 -15
  13. package/dist/agent/context.js.map +1 -1
  14. package/dist/agent/index.d.ts +7 -4
  15. package/dist/agent/index.d.ts.map +1 -1
  16. package/dist/agent/index.js +5 -3
  17. package/dist/agent/index.js.map +1 -1
  18. package/dist/agent/notifications/decision-parser.d.ts +10 -0
  19. package/dist/agent/notifications/decision-parser.d.ts.map +1 -0
  20. package/dist/agent/notifications/decision-parser.js +21 -0
  21. package/dist/agent/notifications/decision-parser.js.map +1 -0
  22. package/dist/agent/notifications/index.d.ts +4 -0
  23. package/dist/agent/notifications/index.d.ts.map +1 -0
  24. package/dist/agent/notifications/index.js +3 -0
  25. package/dist/agent/notifications/index.js.map +1 -0
  26. package/dist/agent/notifications/opportunity-templates.d.ts +14 -0
  27. package/dist/agent/notifications/opportunity-templates.d.ts.map +1 -0
  28. package/dist/agent/notifications/opportunity-templates.js +21 -0
  29. package/dist/agent/notifications/opportunity-templates.js.map +1 -0
  30. package/dist/agent/notifications/types.d.ts +16 -0
  31. package/dist/agent/notifications/types.d.ts.map +1 -0
  32. package/dist/agent/notifications/types.js +2 -0
  33. package/dist/agent/notifications/types.js.map +1 -0
  34. package/dist/agent/runtime.d.ts +36 -2
  35. package/dist/agent/runtime.d.ts.map +1 -1
  36. package/dist/agent/runtime.js +125 -8
  37. package/dist/agent/runtime.js.map +1 -1
  38. package/dist/agent/scanning/index.d.ts +3 -0
  39. package/dist/agent/scanning/index.d.ts.map +1 -0
  40. package/dist/agent/scanning/index.js +3 -0
  41. package/dist/agent/scanning/index.js.map +1 -0
  42. package/dist/agent/scanning/opportunity-scorer.d.ts +24 -0
  43. package/dist/agent/scanning/opportunity-scorer.d.ts.map +1 -0
  44. package/dist/agent/scanning/opportunity-scorer.js +90 -0
  45. package/dist/agent/scanning/opportunity-scorer.js.map +1 -0
  46. package/dist/agent/scanning/types.d.ts +65 -0
  47. package/dist/agent/scanning/types.d.ts.map +1 -0
  48. package/dist/agent/scanning/types.js +32 -0
  49. package/dist/agent/scanning/types.js.map +1 -0
  50. package/dist/agent/scheduler.d.ts +20 -4
  51. package/dist/agent/scheduler.d.ts.map +1 -1
  52. package/dist/agent/scheduler.js +66 -42
  53. package/dist/agent/scheduler.js.map +1 -1
  54. package/dist/agent/session.d.ts +4 -1
  55. package/dist/agent/session.d.ts.map +1 -1
  56. package/dist/agent/session.js +3 -1
  57. package/dist/agent/session.js.map +1 -1
  58. package/dist/agent/stores.d.ts +48 -0
  59. package/dist/agent/stores.d.ts.map +1 -0
  60. package/dist/agent/stores.js +2 -0
  61. package/dist/agent/stores.js.map +1 -0
  62. package/dist/connectors/google-calendar.d.ts +8 -0
  63. package/dist/connectors/google-calendar.d.ts.map +1 -0
  64. package/dist/connectors/google-calendar.js +23 -0
  65. package/dist/connectors/google-calendar.js.map +1 -0
  66. package/dist/connectors/google-gmail.d.ts +8 -0
  67. package/dist/connectors/google-gmail.d.ts.map +1 -0
  68. package/dist/connectors/google-gmail.js +30 -0
  69. package/dist/connectors/google-gmail.js.map +1 -0
  70. package/dist/connectors/google-oauth.d.ts +17 -0
  71. package/dist/connectors/google-oauth.d.ts.map +1 -0
  72. package/dist/connectors/google-oauth.js +52 -0
  73. package/dist/connectors/google-oauth.js.map +1 -0
  74. package/dist/connectors/index.d.ts +5 -0
  75. package/dist/connectors/index.d.ts.map +1 -0
  76. package/dist/connectors/index.js +5 -0
  77. package/dist/connectors/index.js.map +1 -0
  78. package/dist/connectors/types.d.ts +20 -0
  79. package/dist/connectors/types.d.ts.map +1 -0
  80. package/dist/connectors/types.js +5 -0
  81. package/dist/connectors/types.js.map +1 -0
  82. package/dist/discovery/agent-card.schema.d.ts +2 -2
  83. package/dist/integrations/index.d.ts +2 -0
  84. package/dist/integrations/index.d.ts.map +1 -0
  85. package/dist/integrations/index.js +2 -0
  86. package/dist/integrations/index.js.map +1 -0
  87. package/dist/integrations/job-boards/ashby.d.ts +3 -0
  88. package/dist/integrations/job-boards/ashby.d.ts.map +1 -0
  89. package/dist/integrations/job-boards/ashby.js +80 -0
  90. package/dist/integrations/job-boards/ashby.js.map +1 -0
  91. package/dist/integrations/job-boards/greenhouse.d.ts +3 -0
  92. package/dist/integrations/job-boards/greenhouse.d.ts.map +1 -0
  93. package/dist/integrations/job-boards/greenhouse.js +34 -0
  94. package/dist/integrations/job-boards/greenhouse.js.map +1 -0
  95. package/dist/integrations/job-boards/http.d.ts +6 -0
  96. package/dist/integrations/job-boards/http.d.ts.map +1 -0
  97. package/dist/integrations/job-boards/http.js +63 -0
  98. package/dist/integrations/job-boards/http.js.map +1 -0
  99. package/dist/integrations/job-boards/index.d.ts +10 -0
  100. package/dist/integrations/job-boards/index.d.ts.map +1 -0
  101. package/dist/integrations/job-boards/index.js +43 -0
  102. package/dist/integrations/job-boards/index.js.map +1 -0
  103. package/dist/integrations/job-boards/jsonld.d.ts +4 -0
  104. package/dist/integrations/job-boards/jsonld.d.ts.map +1 -0
  105. package/dist/integrations/job-boards/jsonld.js +116 -0
  106. package/dist/integrations/job-boards/jsonld.js.map +1 -0
  107. package/dist/integrations/job-boards/lever.d.ts +3 -0
  108. package/dist/integrations/job-boards/lever.d.ts.map +1 -0
  109. package/dist/integrations/job-boards/lever.js +37 -0
  110. package/dist/integrations/job-boards/lever.js.map +1 -0
  111. package/dist/integrations/job-boards/remotive.d.ts +26 -0
  112. package/dist/integrations/job-boards/remotive.d.ts.map +1 -0
  113. package/dist/integrations/job-boards/remotive.js +75 -0
  114. package/dist/integrations/job-boards/remotive.js.map +1 -0
  115. package/dist/integrations/job-boards/types.d.ts +25 -0
  116. package/dist/integrations/job-boards/types.d.ts.map +1 -0
  117. package/dist/integrations/job-boards/types.js +2 -0
  118. package/dist/integrations/job-boards/types.js.map +1 -0
  119. package/dist/protocol/handshake.schema.d.ts +16 -16
  120. package/dist/protocol/message.schema.d.ts +16 -16
  121. package/package.json +17 -1
package/README.md CHANGED
@@ -1,8 +1,100 @@
1
- # Artemys
1
+ <div align="center">
2
2
 
3
- Developer platform and SDK for agent-to-agent professional career communication.
3
+ <img src="https://raw.githubusercontent.com/artemyshq/artemys/main/.github/assets/artie-icon.svg" width="52" alt="Artie">
4
4
 
5
- Artemys defines how candidate agents and talent agents discover each other, negotiate consent, exchange structured career data, and reach hiring outcomes — all through a typed protocol with Zod schemas and a state machine.
5
+ <h1>A R T E M Y S</h1>
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>
13
+
14
+ [![npm](https://img.shields.io/npm/v/artemys?style=flat-square&color=000&label=npm)](https://www.npmjs.com/package/artemys)
15
+ [![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)
18
+
19
+ **[Vision](docs/VISION.md)** · **[Docs](docs/)** · **[Protocol Spec](protocol/)** · **[npm](https://www.npmjs.com/package/artemys)**
20
+
21
+ </div>
22
+
23
+ ---
24
+
25
+ ## The Problem
26
+
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.
28
+
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.
30
+
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.
32
+
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.
34
+
35
+ The industry is racing to automate the existing process faster. Nobody is asking whether the process itself is wrong.
36
+
37
+ ---
38
+
39
+ ## You Deserve Representation
40
+
41
+ Athletes have agents. Executives have agents. Actors have agents.
42
+
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.
44
+
45
+ Why doesn't everyone have this?
46
+
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.
48
+
49
+ **That's what Artemys makes possible.**
50
+
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.
52
+
53
+ > **The candidate sets direction and boundaries. Their agent handles everything else.**
54
+
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.
56
+
57
+ ---
58
+
59
+ ## How It Works
60
+
61
+ ```
62
+ You Company
63
+ │ │
64
+ ┌────▼──────┐ ◆ Artemys Protocol ◆ ┌──────────▼──┐
65
+ │ Your Agent │◄──────────────────────────►│ Talent Agent │
66
+ │(e.g. Artie)│ discover → handshake → │ (Theirs) │
67
+ └────────────┘ consent → dialogue → └──────────────┘
68
+ resolution
69
+ ```
70
+
71
+ When both sides have agents, professional career communication transforms:
72
+
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 |
81
+
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.
83
+
84
+ ---
85
+
86
+ ## What We're Building
87
+
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 |
96
+
97
+ ---
6
98
 
7
99
  ## Install
8
100
 
@@ -12,11 +104,46 @@ npm install artemys
12
104
  bun add artemys
13
105
  ```
14
106
 
107
+ ## Quick Example
108
+
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
+ })
123
+
124
+ // Start the runtime — your agent goes live
125
+ const runtime = new ArtemysRuntime(loadConfig())
126
+ await runtime.start()
127
+ ```
128
+
129
+ ---
130
+
131
+ ## Architecture
132
+
133
+ ```
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
140
+ ```
141
+
15
142
  ## Modules
16
143
 
17
- ### Protocol
144
+ ### 📋 Protocol
18
145
 
19
- Zod schemas for the Artemys conversation protocol — handshake, dialogue, resolution, and transport messages.
146
+ Typed Zod schemas for the full conversation lifecycle — handshake, consent gates, dialogue, and resolution.
20
147
 
21
148
  ```typescript
22
149
  import { HandshakeInitiateSchema, PROTOCOL_VERSION } from "artemys"
@@ -24,55 +151,84 @@ import { HandshakeInitiateSchema, PROTOCOL_VERSION } from "artemys"
24
151
  import { HandshakeInitiateSchema } from "artemys/protocol"
25
152
  ```
26
153
 
27
- ### Discovery
154
+ Includes `Envelope`, `ConversationState`, state machine transitions, `ConsentProfile`, `ConsentGate`, `FitAssessment`, and 20+ message schemas covering every phase of agent-to-agent communication.
155
+
156
+ ### ☕ Discovery
28
157
 
29
- Agent registration, discovery, and introduction (the "Coffee Shop" layer).
158
+ The "Coffee Shop" layer — where agents find each other, exchange cards, and bootstrap sessions.
30
159
 
31
160
  ```typescript
32
161
  import { AgentCardSchema, DiscoveryQuerySchema } from "artemys/discovery"
33
162
  ```
34
163
 
35
- ### Agent
164
+ Includes `AgentCard`, `DiscoveryQuery`, `IntroRequest`, `SessionBootstrap`, and relay/direct handoff flows.
36
165
 
37
- Runtime framework for building career agents with tools, scheduling, and MCP integration.
166
+ ### 🤖 Agent
167
+
168
+ Runtime framework for building career agents with built-in tools, task scheduling, browser automation, and MCP integration.
38
169
 
39
170
  ```typescript
40
171
  import { ArtemysRuntime, loadConfig } from "artemys/agent"
41
172
  ```
42
173
 
43
- ### Channels
174
+ **Built-in tools:** career advice · resume generation · market data · job search · web search · browser automation · memory · shell · task scheduling
175
+
176
+ ### 📡 Channels
44
177
 
45
- Communication adapters (Telegram, with more planned).
178
+ Communication adapters for reaching agents wherever they are.
46
179
 
47
180
  ```typescript
48
181
  import { TelegramAdapter } from "artemys/channels/telegram"
182
+ import { ChannelRegistry } from "artemys/channels"
49
183
  ```
50
184
 
51
- ### CLI
185
+ ### CLI
52
186
 
53
187
  ```bash
54
- artemys onboard # Guided setup
55
- artemys doctor # Validate config
56
- artemys start # Start agent
188
+ artemys onboard # Guided agent setup
189
+ artemys doctor # Validate your configuration
190
+ artemys start # Launch your agent
57
191
  ```
58
192
 
193
+ ---
194
+
59
195
  ## Ecosystem
60
196
 
61
- | Package | Repo | Role |
62
- |---------|------|------|
63
- | `artemys` | [artemyshq/artemys](https://github.com/artemyshq/artemys) | SDK protocol, discovery, agent framework, CLI |
64
- | `@artemys/web` | [artemyshq/artie](https://github.com/artemyshq/artie) | Consumer career agent web app |
65
- | | [artemyshq/orion](https://github.com/artemyshq/orion) | Employer platform (private) |
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 |
202
+
203
+ The protocol is open. The SDK is open. Build your own agent, extend the protocol, or use Artie out of the box.
204
+
205
+ ---
66
206
 
67
207
  ## Development
68
208
 
69
209
  ```bash
70
- bun install
71
- bun run build
72
- bun run test
73
- bun run type-check
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
74
215
  ```
75
216
 
76
- ## License
217
+ ## Docs
218
+
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 |
225
+
226
+ ---
227
+
228
+ <div align="center">
229
+
230
+ **Built for a world where talent has representation.**
231
+
232
+ [MIT License](LICENSE)
77
233
 
78
- MIT
234
+ </div>
@@ -0,0 +1,23 @@
1
+ export declare const CAPABILITY_KEYS: readonly ["files.upload", "files.read", "files.search", "connectors.gmail.read", "connectors.calendar.read", "connectors.gmail.send", "browser.operate", "browser.submit"];
2
+ export type CapabilityKey = (typeof CAPABILITY_KEYS)[number];
3
+ export type CapabilityCatalogEntry = {
4
+ key: CapabilityKey;
5
+ label: string;
6
+ description: string;
7
+ defaultEnabled: boolean;
8
+ defaultDecisionRequired: boolean;
9
+ phase: 1 | 2 | 3 | 4;
10
+ };
11
+ export declare const CAPABILITY_CATALOG: CapabilityCatalogEntry[];
12
+ export type CapabilityGrantState = {
13
+ capability: CapabilityKey;
14
+ enabled: boolean;
15
+ decisionRequired: boolean;
16
+ };
17
+ export type CapabilityGrantStore = {
18
+ getGrants(userId: string): Promise<CapabilityGrantState[]>;
19
+ setGrant(userId: string, grant: CapabilityGrantState): Promise<void>;
20
+ };
21
+ export declare function isCapabilityKey(value: string): value is CapabilityKey;
22
+ export declare function defaultCapabilityStates(): CapabilityGrantState[];
23
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/agent/capabilities.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,4KASlB,CAAA;AAEV,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAE5D,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,EAAE,aAAa,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,OAAO,CAAA;IACvB,uBAAuB,EAAE,OAAO,CAAA;IAChC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,sBAAsB,EAmEtD,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,EAAE,aAAa,CAAA;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,gBAAgB,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAA;IAC1D,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACrE,CAAA;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAErE;AAED,wBAAgB,uBAAuB,IAAI,oBAAoB,EAAE,CAMhE"}
@@ -0,0 +1,87 @@
1
+ export const CAPABILITY_KEYS = [
2
+ "files.upload",
3
+ "files.read",
4
+ "files.search",
5
+ "connectors.gmail.read",
6
+ "connectors.calendar.read",
7
+ "connectors.gmail.send",
8
+ "browser.operate",
9
+ "browser.submit",
10
+ ];
11
+ export const CAPABILITY_CATALOG = [
12
+ {
13
+ key: "files.upload",
14
+ label: "Upload files",
15
+ description: "Allow Artie to receive files you explicitly upload.",
16
+ defaultEnabled: true,
17
+ defaultDecisionRequired: false,
18
+ phase: 1,
19
+ },
20
+ {
21
+ key: "files.read",
22
+ label: "Read uploaded files",
23
+ description: "Allow Artie to read and reason over uploaded files.",
24
+ defaultEnabled: true,
25
+ defaultDecisionRequired: false,
26
+ phase: 1,
27
+ },
28
+ {
29
+ key: "files.search",
30
+ label: "Search uploaded files",
31
+ description: "Allow Artie to search across uploaded documents.",
32
+ defaultEnabled: true,
33
+ defaultDecisionRequired: false,
34
+ phase: 1,
35
+ },
36
+ {
37
+ key: "connectors.gmail.read",
38
+ label: "Read Gmail",
39
+ description: "Allow Artie to read message metadata from your Gmail connector.",
40
+ defaultEnabled: false,
41
+ defaultDecisionRequired: false,
42
+ phase: 2,
43
+ },
44
+ {
45
+ key: "connectors.calendar.read",
46
+ label: "Read Calendar",
47
+ description: "Allow Artie to read upcoming events from your calendar connector.",
48
+ defaultEnabled: false,
49
+ defaultDecisionRequired: false,
50
+ phase: 2,
51
+ },
52
+ {
53
+ key: "connectors.gmail.send",
54
+ label: "Send Gmail drafts",
55
+ description: "Allow Artie to prepare outbound drafts; decisions remain required.",
56
+ defaultEnabled: false,
57
+ defaultDecisionRequired: true,
58
+ phase: 3,
59
+ },
60
+ {
61
+ key: "browser.operate",
62
+ label: "Operate browser",
63
+ description: "Allow Artie to navigate job sites, fill forms, and gather evidence during applications.",
64
+ defaultEnabled: false,
65
+ defaultDecisionRequired: false,
66
+ phase: 3,
67
+ },
68
+ {
69
+ key: "browser.submit",
70
+ label: "Submit applications",
71
+ description: "Allow Artie to execute final submit actions on application forms.",
72
+ defaultEnabled: false,
73
+ defaultDecisionRequired: false,
74
+ phase: 4,
75
+ },
76
+ ];
77
+ export function isCapabilityKey(value) {
78
+ return CAPABILITY_KEYS.includes(value);
79
+ }
80
+ export function defaultCapabilityStates() {
81
+ return CAPABILITY_CATALOG.map((entry) => ({
82
+ capability: entry.key,
83
+ enabled: entry.defaultEnabled,
84
+ decisionRequired: entry.defaultDecisionRequired,
85
+ }));
86
+ }
87
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/agent/capabilities.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,cAAc;IACd,YAAY;IACZ,cAAc;IACd,uBAAuB;IACvB,0BAA0B;IAC1B,uBAAuB;IACvB,iBAAiB;IACjB,gBAAgB;CACR,CAAA;AAaV,MAAM,CAAC,MAAM,kBAAkB,GAA6B;IAC1D;QACE,GAAG,EAAE,cAAc;QACnB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,qDAAqD;QAClE,cAAc,EAAE,IAAI;QACpB,uBAAuB,EAAE,KAAK;QAC9B,KAAK,EAAE,CAAC;KACT;IACD;QACE,GAAG,EAAE,YAAY;QACjB,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,qDAAqD;QAClE,cAAc,EAAE,IAAI;QACpB,uBAAuB,EAAE,KAAK;QAC9B,KAAK,EAAE,CAAC;KACT;IACD;QACE,GAAG,EAAE,cAAc;QACnB,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,kDAAkD;QAC/D,cAAc,EAAE,IAAI;QACpB,uBAAuB,EAAE,KAAK;QAC9B,KAAK,EAAE,CAAC;KACT;IACD;QACE,GAAG,EAAE,uBAAuB;QAC5B,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,iEAAiE;QAC9E,cAAc,EAAE,KAAK;QACrB,uBAAuB,EAAE,KAAK;QAC9B,KAAK,EAAE,CAAC;KACT;IACD;QACE,GAAG,EAAE,0BAA0B;QAC/B,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,mEAAmE;QAChF,cAAc,EAAE,KAAK;QACrB,uBAAuB,EAAE,KAAK;QAC9B,KAAK,EAAE,CAAC;KACT;IACD;QACE,GAAG,EAAE,uBAAuB;QAC5B,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,oEAAoE;QACjF,cAAc,EAAE,KAAK;QACrB,uBAAuB,EAAE,IAAI;QAC7B,KAAK,EAAE,CAAC;KACT;IACD;QACE,GAAG,EAAE,iBAAiB;QACtB,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,yFAAyF;QAC3F,cAAc,EAAE,KAAK;QACrB,uBAAuB,EAAE,KAAK;QAC9B,KAAK,EAAE,CAAC;KACT;IACD;QACE,GAAG,EAAE,gBAAgB;QACrB,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,mEAAmE;QACrE,cAAc,EAAE,KAAK;QACrB,uBAAuB,EAAE,KAAK;QAC9B,KAAK,EAAE,CAAC;KACT;CACF,CAAA;AAaD,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,eAAe,CAAC,QAAQ,CAAC,KAAsB,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACxC,UAAU,EAAE,KAAK,CAAC,GAAG;QACrB,OAAO,EAAE,KAAK,CAAC,cAAc;QAC7B,gBAAgB,EAAE,KAAK,CAAC,uBAAuB;KAChD,CAAC,CAAC,CAAA;AACL,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { AgentConfig } from "./types.js";
2
+ import type { ContextProvider } from "./stores.js";
3
+ export declare class FileContextProvider implements ContextProvider {
4
+ private config;
5
+ constructor(config: AgentConfig);
6
+ getSoul(): Promise<string>;
7
+ getProfile(): Promise<string>;
8
+ getPreferences(): Promise<string>;
9
+ getMemory(): Promise<string>;
10
+ getHeartbeat(): Promise<string>;
11
+ }
12
+ //# sourceMappingURL=context-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-provider.d.ts","sourceRoot":"","sources":["../../src/agent/context-provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAUlD,qBAAa,mBAAoB,YAAW,eAAe;IACzD,OAAO,CAAC,MAAM,CAAa;gBAEf,MAAM,EAAE,WAAW;IAIzB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAK5B,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;CAItC"}
@@ -0,0 +1,34 @@
1
+ import * as fs from "node:fs/promises";
2
+ import { expandPath } from "./config.js";
3
+ async function readFileOrEmpty(filePath) {
4
+ try {
5
+ return await fs.readFile(filePath, "utf-8");
6
+ }
7
+ catch {
8
+ return "";
9
+ }
10
+ }
11
+ export class FileContextProvider {
12
+ config;
13
+ constructor(config) {
14
+ this.config = config;
15
+ }
16
+ async getSoul() {
17
+ return readFileOrEmpty(expandPath("~/.artemys/SOUL.md"));
18
+ }
19
+ async getProfile() {
20
+ return readFileOrEmpty(expandPath(this.config.profile_path ?? "~/.artemys/PROFILE.md"));
21
+ }
22
+ async getPreferences() {
23
+ return readFileOrEmpty(expandPath(this.config.preferences_path ?? "~/.artemys/PREFERENCES.md"));
24
+ }
25
+ async getMemory() {
26
+ const memoryDir = expandPath(this.config.memory_dir ?? "~/.artemys");
27
+ return readFileOrEmpty(`${memoryDir}/MEMORY.md`);
28
+ }
29
+ async getHeartbeat() {
30
+ const memoryDir = expandPath(this.config.memory_dir ?? "~/.artemys");
31
+ return readFileOrEmpty(`${memoryDir}/HEARTBEAT.md`);
32
+ }
33
+ }
34
+ //# sourceMappingURL=context-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-provider.js","sourceRoot":"","sources":["../../src/agent/context-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIxC,KAAK,UAAU,eAAe,CAAC,QAAgB;IAC7C,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,MAAM,OAAO,mBAAmB;IACtB,MAAM,CAAa;IAE3B,YAAY,MAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,eAAe,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,uBAAuB,CAAC,CAAC,CAAA;IACzF,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,2BAA2B,CAAC,CAAC,CAAA;IACjG,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,YAAY,CAAC,CAAA;QACpE,OAAO,eAAe,CAAC,GAAG,SAAS,YAAY,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,YAAY,CAAC,CAAA;QACpE,OAAO,eAAe,CAAC,GAAG,SAAS,eAAe,CAAC,CAAA;IACrD,CAAC;CACF"}
@@ -1,7 +1,9 @@
1
1
  import type { AgentConfig } from "./types.js";
2
2
  import type { ToolDefinition } from "./types.js";
3
+ import type { ContextProvider, SystemPromptBuilder } from "./stores.js";
3
4
  export declare function loadProfile(profilePath?: string): Promise<string>;
4
5
  export declare function loadPreferences(preferencesPath?: string): Promise<string>;
5
6
  export declare function buildBootstrapContext(profilePath?: string, preferencesPath?: string): Promise<string>;
6
- export declare function buildSystemPrompt(config: AgentConfig, tools: ToolDefinition[]): Promise<string>;
7
+ export declare const defaultSystemPromptBuilder: SystemPromptBuilder;
8
+ export declare function buildSystemPrompt(config: AgentConfig, tools: ToolDefinition[], contextProvider?: ContextProvider, promptBuilder?: SystemPromptBuilder): Promise<string>;
7
9
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/agent/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAUhD,wBAAsB,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEvE;AAED,wBAAsB,eAAe,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE/E;AAGD,wBAAsB,qBAAqB,CACzC,WAAW,CAAC,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,cAAc,EAAE,GACtB,OAAO,CAAC,MAAM,CAAC,CA6DjB"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/agent/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAWvE,wBAAsB,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEvE;AAED,wBAAsB,eAAe,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE/E;AAGD,wBAAsB,qBAAqB,CACzC,WAAW,CAAC,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED,eAAO,MAAM,0BAA0B,EAAE,mBA8CxC,CAAA;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,cAAc,EAAE,EACvB,eAAe,CAAC,EAAE,eAAe,EACjC,aAAa,CAAC,EAAE,mBAAmB,GAClC,OAAO,CAAC,MAAM,CAAC,CAajB"}
@@ -1,5 +1,6 @@
1
1
  import * as fs from "node:fs/promises";
2
2
  import { expandPath } from "./config.js";
3
+ import { FileContextProvider } from "./context-provider.js";
3
4
  async function readFileOrEmpty(filePath) {
4
5
  try {
5
6
  return await fs.readFile(filePath, "utf-8");
@@ -25,15 +26,9 @@ export async function buildBootstrapContext(profilePath, preferencesPath) {
25
26
  sections.push(`## Your Human's Preferences\n${prefs.trim()}`);
26
27
  return sections.join("\n\n");
27
28
  }
28
- export async function buildSystemPrompt(config, tools) {
29
- const memoryDir = expandPath(config.memory_dir ?? "~/.artemys");
30
- const soul = await readFileOrEmpty(expandPath("~/.artemys/SOUL.md"));
31
- const memory = await readFileOrEmpty(`${memoryDir}/MEMORY.md`);
32
- const heartbeat = await readFileOrEmpty(`${memoryDir}/HEARTBEAT.md`);
33
- const profile = await loadProfile(config.profile_path);
34
- const preferences = await loadPreferences(config.preferences_path);
29
+ export const defaultSystemPromptBuilder = (context) => {
30
+ const { soul, profile, preferences, memory, heartbeat, tools, config } = context;
35
31
  const sections = [];
36
- // Soul (identity) — if missing, use a sensible default
37
32
  if (soul.trim()) {
38
33
  sections.push(soul.trim());
39
34
  }
@@ -51,30 +46,35 @@ You represent your human in all professional career matters.
51
46
  - You communicate with warmth but professionalism — you're their agent, not an assistant
52
47
  - When uncertain about sharing information, err on the side of protecting your human`);
53
48
  }
54
- // Profile
55
49
  if (profile.trim()) {
56
50
  sections.push(`## Your Human's Profile\n${profile.trim()}`);
57
51
  }
58
- // Preferences
59
52
  if (preferences.trim()) {
60
53
  sections.push(`## Your Human's Preferences\n${preferences.trim()}`);
61
54
  }
62
- // Memory (learned facts)
63
55
  if (memory.trim()) {
64
56
  sections.push(`## Memory\n${memory.trim()}`);
65
57
  }
66
- // Heartbeat (scheduled actions)
67
58
  if (heartbeat.trim()) {
68
59
  sections.push(`## Scheduled Actions\n${heartbeat.trim()}`);
69
60
  }
70
- // Available tools
71
61
  const toolNames = tools.map(t => `- ${t.name}: ${t.description}`).join("\n");
72
62
  sections.push(`## Available Tools\nYou have access to the following tools. Use them proactively when appropriate:\n${toolNames}`);
73
- // Decision gates
74
63
  sections.push(`## Decision Gates
75
64
  Some actions require your human's approval. When a tool has a "confirm" policy, you'll see a decision prompt sent to your human. Wait for their response before proceeding.`);
76
- // Metadata
77
65
  sections.push(`## Runtime Info\n- Date: ${new Date().toISOString().split("T")[0]}\n- Model: ${config.model}`);
78
66
  return sections.join("\n\n");
67
+ };
68
+ export async function buildSystemPrompt(config, tools, contextProvider, promptBuilder) {
69
+ const provider = contextProvider ?? new FileContextProvider(config);
70
+ const builder = promptBuilder ?? defaultSystemPromptBuilder;
71
+ const [soul, profile, preferences, memory, heartbeat] = await Promise.all([
72
+ provider.getSoul(),
73
+ provider.getProfile(),
74
+ provider.getPreferences(),
75
+ provider.getMemory(),
76
+ provider.getHeartbeat(),
77
+ ]);
78
+ return builder({ soul, profile, preferences, memory, heartbeat, tools, config });
79
79
  }
80
80
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/agent/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/agent/context.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,17 @@
1
1
  export type { ToolDefinition, ToolResult, ToolContext, ChannelAdapter, MessageHandler, MessageAction, Session, SessionMessage, ToolCall, ToolCallResult, AgentConfig, ScheduledTask, ScheduleType, TaskStatus, ArchiveMeta, } from "./types.js";
2
2
  export { OpportunityStateSchema, type OpportunityState } from "./types.js";
3
+ export type { SessionStore, TaskStore, ContextProvider, SystemPromptBuilder, ToolExecutionHook, } from "./stores.js";
3
4
  export { AgentConfigSchema, loadConfig, expandPath } from "./config.js";
4
5
  export { type ArtemysEvent,
5
6
  /** @deprecated Use ArtemysEvent */
6
7
  type ArtieEvent, type EventPayloadMap, ArtemysEventEmitter,
7
8
  /** @deprecated Use ArtemysEventEmitter */
8
9
  ArtieEventEmitter, createEventEmitter, } from "./events.js";
9
- export { SessionManager } from "./session.js";
10
- export { loadProfile, loadPreferences, buildBootstrapContext, buildSystemPrompt } from "./context.js";
10
+ export { FileSessionStore, SessionManager } from "./session.js";
11
+ export { loadProfile, loadPreferences, buildBootstrapContext, buildSystemPrompt, defaultSystemPromptBuilder } from "./context.js";
12
+ export { FileContextProvider } from "./context-provider.js";
11
13
  export { ToolRegistry } from "./tools/index.js";
12
- export { ArtemysRuntime, /** @deprecated Use ArtemysRuntime */ ArtieRuntime } from "./runtime.js";
14
+ export { ArtemysRuntime, /** @deprecated Use ArtemysRuntime */ ArtieRuntime, type RuntimeOptions, type StreamEvent } from "./runtime.js";
13
15
  export { createCareerAdviceTool } from "./tools/career-advice.js";
14
16
  export { createResumeTool } from "./tools/resume.js";
15
17
  export { createMarketDataTool } from "./tools/market-data.js";
@@ -22,8 +24,9 @@ export { createScheduleTaskTool } from "./tools/schedule-task.js";
22
24
  export { createListTasksTool } from "./tools/list-tasks.js";
23
25
  export { createCancelTaskTool } from "./tools/cancel-task.js";
24
26
  export { SessionArchiver } from "./archiver.js";
25
- export { TaskScheduler } from "./scheduler.js";
27
+ export { TaskScheduler, FileTaskStore } from "./scheduler.js";
26
28
  export { createRegistry } from "./providers.js";
27
29
  export { loadMcpTools, parseMcpServersFromEnv, type McpServerConfig } from "./mcp.js";
28
30
  export { detectATS, getSelectors, getActionPlan, type ATSType, type ATSSelectors, type ATSFieldKey, type ATSActionPlan, } from "./tools/browser/ats-patterns.js";
31
+ export { CAPABILITY_KEYS, CAPABILITY_CATALOG, isCapabilityKey, defaultCapabilityStates, type CapabilityKey, type CapabilityCatalogEntry, type CapabilityGrantState, type CapabilityGrantStore, } from "./capabilities.js";
29
32
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,UAAU,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,aAAa,EACb,OAAO,EACP,cAAc,EACd,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,YAAY,EACZ,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE1E,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAEvE,OAAO,EACL,KAAK,YAAY;AACjB,mCAAmC;AACnC,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,mBAAmB;AACnB,0CAA0C;AAC1C,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAErG,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,OAAO,EAAE,cAAc,EAAE,qCAAqC,CAAC,YAAY,EAAE,MAAM,cAAc,CAAA;AAEjG,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,OAAO,EACP,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,GACvB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,KAAK,eAAe,EAAE,MAAM,UAAU,CAAA;AAErF,OAAO,EACL,SAAS,EACT,YAAY,EACZ,aAAa,EACb,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,GACnB,MAAM,iCAAiC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,UAAU,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,aAAa,EACb,OAAO,EACP,cAAc,EACd,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,YAAY,EACZ,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE1E,YAAY,EACV,YAAY,EACZ,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAEvE,OAAO,EACL,KAAK,YAAY;AACjB,mCAAmC;AACnC,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,mBAAmB;AACnB,0CAA0C;AAC1C,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE/D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AAEjI,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,OAAO,EAAE,cAAc,EAAE,qCAAqC,CAAC,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAExI,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,OAAO,EACP,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,GACvB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,KAAK,eAAe,EAAE,MAAM,UAAU,CAAA;AAErF,OAAO,EACL,SAAS,EACT,YAAY,EACZ,aAAa,EACb,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,GACnB,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAA"}
@@ -3,8 +3,9 @@ export { AgentConfigSchema, loadConfig, expandPath } from "./config.js";
3
3
  export { ArtemysEventEmitter,
4
4
  /** @deprecated Use ArtemysEventEmitter */
5
5
  ArtieEventEmitter, createEventEmitter, } from "./events.js";
6
- export { SessionManager } from "./session.js";
7
- export { loadProfile, loadPreferences, buildBootstrapContext, buildSystemPrompt } from "./context.js";
6
+ export { FileSessionStore, SessionManager } from "./session.js";
7
+ export { loadProfile, loadPreferences, buildBootstrapContext, buildSystemPrompt, defaultSystemPromptBuilder } from "./context.js";
8
+ export { FileContextProvider } from "./context-provider.js";
8
9
  export { ToolRegistry } from "./tools/index.js";
9
10
  export { ArtemysRuntime, /** @deprecated Use ArtemysRuntime */ ArtieRuntime } from "./runtime.js";
10
11
  export { createCareerAdviceTool } from "./tools/career-advice.js";
@@ -19,8 +20,9 @@ export { createScheduleTaskTool } from "./tools/schedule-task.js";
19
20
  export { createListTasksTool } from "./tools/list-tasks.js";
20
21
  export { createCancelTaskTool } from "./tools/cancel-task.js";
21
22
  export { SessionArchiver } from "./archiver.js";
22
- export { TaskScheduler } from "./scheduler.js";
23
+ export { TaskScheduler, FileTaskStore } from "./scheduler.js";
23
24
  export { createRegistry } from "./providers.js";
24
25
  export { loadMcpTools, parseMcpServersFromEnv } from "./mcp.js";
25
26
  export { detectATS, getSelectors, getActionPlan, } from "./tools/browser/ats-patterns.js";
27
+ export { CAPABILITY_KEYS, CAPABILITY_CATALOG, isCapabilityKey, defaultCapabilityStates, } from "./capabilities.js";
26
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,sBAAsB,EAAyB,MAAM,YAAY,CAAA;AAE1E,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAEvE,OAAO,EAKL,mBAAmB;AACnB,0CAA0C;AAC1C,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAErG,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,OAAO,EAAE,cAAc,EAAE,qCAAqC,CAAC,YAAY,EAAE,MAAM,cAAc,CAAA;AAEjG,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,OAAO,EACP,eAAe,EACf,iBAAiB,EACjB,oBAAoB,GAKrB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAwB,MAAM,UAAU,CAAA;AAErF,OAAO,EACL,SAAS,EACT,YAAY,EACZ,aAAa,GAKd,MAAM,iCAAiC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,sBAAsB,EAAyB,MAAM,YAAY,CAAA;AAU1E,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAEvE,OAAO,EAKL,mBAAmB;AACnB,0CAA0C;AAC1C,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE/D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AAEjI,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,OAAO,EAAE,cAAc,EAAE,qCAAqC,CAAC,YAAY,EAAyC,MAAM,cAAc,CAAA;AAExI,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,OAAO,EACP,eAAe,EACf,iBAAiB,EACjB,oBAAoB,GAKrB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAwB,MAAM,UAAU,CAAA;AAErF,OAAO,EACL,SAAS,EACT,YAAY,EACZ,aAAa,GAKd,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,uBAAuB,GAKxB,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1,10 @@
1
+ export type OpportunityDecision = "apply" | "pass" | "later";
2
+ export declare function parseOpportunityDecisionCommand(text: string): {
3
+ decision: OpportunityDecision;
4
+ opportunityId: string;
5
+ } | null;
6
+ export declare function buildOpportunityDecisionConfirmation(input: {
7
+ decision: OpportunityDecision;
8
+ opportunityId: string;
9
+ }): string;
10
+ //# sourceMappingURL=decision-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision-parser.d.ts","sourceRoot":"","sources":["../../../src/agent/notifications/decision-parser.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAA;AAK5D,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG;IAC7D,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,aAAa,EAAE,MAAM,CAAA;CACtB,GAAG,IAAI,CAWP;AAED,wBAAgB,oCAAoC,CAAC,KAAK,EAAE;IAC1D,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,aAAa,EAAE,MAAM,CAAA;CACtB,GAAG,MAAM,CAUT"}