shraga 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -18,7 +18,7 @@ Give it its own machine, its own keys, its own identity. Onboard it once, then d
18
18
  ## Why Shraga
19
19
 
20
20
  - ⭐ **Runs on your Claude subscription, not a metered API key.** Point it at Claude Code and it
21
- drives the agent through your existing plan (`claude auth login`). No per-token bill to watch.
21
+ drives the agent through your exsiting plan (`claude auth login`). No per-token bill to watch.
22
22
  - ⭐ **A real teammate, not a chat box.** It has its own machine, its own identity, and its own
23
23
  logins, so you delegate a task the way you would to a person and come back to the result.
24
24
  - ⭐ **Multi-user by design.** One Shraga serves a whole team, each with their own sessions,
@@ -31,7 +31,7 @@ Give it its own machine, its own keys, its own identity. Onboard it once, then d
31
31
  - **Skills**: reusable procedures you teach it once (files in `data/skills/`).
32
32
  - **MCP servers**: connect tools (GitHub, Slack, databases) per-user or globally.
33
33
  - **Schedules**: run agent jobs on a cron or in response to events.
34
- - **Programmatic API + MCP endpoint**: drive the agent from scripts or from claude.ai.
34
+ - **Programmatic API + MCP endpoint**: drive the the agent from scripts or from claude.ai.
35
35
 
36
36
  ## What's in the box
37
37
 
package/package.json CHANGED
@@ -1,13 +1,15 @@
1
1
  {
2
2
  "name": "shraga",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "description": "The teammate you delegate coding to — a self-hostable, multi-user AI coding agent web UI (Claude Code, with a pluggable engine seam).",
5
5
  "type": "module",
6
6
  "main": "./src/index.ts",
7
7
  "types": "./src/index.ts",
8
+ "//exports.server": "UNSTABLE internal seam (semver-exempt): ./server/* lets a downstream feature (e.g. the Circles Gmail overlay in shraga-circles) import the server-internal modules it already coupled to under the old rsync/overlay model — claude/sessions/contacts/mcp/paths. The stable public surface is '.' (createShraga + feature/engine/webhook/event seams). Depend on these subpaths only if '.' cannot express it, and expect breakage across minors.",
8
9
  "exports": {
9
10
  ".": "./src/index.ts",
10
- "./package.json": "./package.json"
11
+ "./package.json": "./package.json",
12
+ "./server/*": "./src/server/*.ts"
11
13
  },
12
14
  "license": "MIT",
13
15
  "author": "Elya Livshitz",
@@ -32,7 +32,7 @@ export interface SessionMeta {
32
32
  /** Emails allowed to see this session (lowercase). Checked in addition to uid/scope. */
33
33
  visibleTo?: string[];
34
34
  runStatus?: 'running' | 'idle';
35
- runOrigin?: 'web' | 'slack' | 'scheduler';
35
+ runOrigin?: 'web' | 'slack' | 'scheduler' | 'gmail';
36
36
  lastStopReason?: 'max_turns_reached' | 'error' | 'aborted';
37
37
  runRetryCount?: number;
38
38
  directives?: Directives;
@@ -263,7 +263,7 @@ export function setAutoApprove(uid: string, value: boolean): void {
263
263
  let _shuttingDown = false;
264
264
  export function setShuttingDown(): void { _shuttingDown = true; }
265
265
 
266
- export function setRunStatus(sessionId: string, status: 'running' | 'idle', origin?: 'web' | 'slack' | 'scheduler', stopReason?: SessionMeta['lastStopReason']): void {
266
+ export function setRunStatus(sessionId: string, status: 'running' | 'idle', origin?: 'web' | 'slack' | 'scheduler' | 'gmail', stopReason?: SessionMeta['lastStopReason']): void {
267
267
  if (_shuttingDown && status === 'idle') return;
268
268
  const sessions = loadIndex();
269
269
  const s = sessions.find((x) => x.sessionId === sessionId);