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 +2 -2
- package/package.json +4 -2
- package/src/server/sessions.ts +2 -2
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
|
|
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.
|
|
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",
|
package/src/server/sessions.ts
CHANGED
|
@@ -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);
|