jinn-cli 0.1.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.
- package/dist/bin/jimmy.d.ts +3 -0
- package/dist/bin/jimmy.d.ts.map +1 -0
- package/dist/bin/jimmy.js +148 -0
- package/dist/bin/jimmy.js.map +1 -0
- package/dist/src/cli/chrome-allow.d.ts +5 -0
- package/dist/src/cli/chrome-allow.d.ts.map +1 -0
- package/dist/src/cli/chrome-allow.js +241 -0
- package/dist/src/cli/chrome-allow.js.map +1 -0
- package/dist/src/cli/create.d.ts +2 -0
- package/dist/src/cli/create.d.ts.map +1 -0
- package/dist/src/cli/create.js +72 -0
- package/dist/src/cli/create.js.map +1 -0
- package/dist/src/cli/instances.d.ts +14 -0
- package/dist/src/cli/instances.d.ts.map +1 -0
- package/dist/src/cli/instances.js +43 -0
- package/dist/src/cli/instances.js.map +1 -0
- package/dist/src/cli/list.d.ts +2 -0
- package/dist/src/cli/list.d.ts.map +1 -0
- package/dist/src/cli/list.js +38 -0
- package/dist/src/cli/list.js.map +1 -0
- package/dist/src/cli/migrate.d.ts +5 -0
- package/dist/src/cli/migrate.d.ts.map +1 -0
- package/dist/src/cli/migrate.js +203 -0
- package/dist/src/cli/migrate.js.map +1 -0
- package/dist/src/cli/nuke.d.ts +2 -0
- package/dist/src/cli/nuke.d.ts.map +1 -0
- package/dist/src/cli/nuke.js +91 -0
- package/dist/src/cli/nuke.js.map +1 -0
- package/dist/src/cli/remove.d.ts +4 -0
- package/dist/src/cli/remove.d.ts.map +1 -0
- package/dist/src/cli/remove.js +47 -0
- package/dist/src/cli/remove.js.map +1 -0
- package/dist/src/cli/setup.d.ts +4 -0
- package/dist/src/cli/setup.d.ts.map +1 -0
- package/dist/src/cli/setup.js +483 -0
- package/dist/src/cli/setup.js.map +1 -0
- package/dist/src/cli/skills.d.ts +28 -0
- package/dist/src/cli/skills.d.ts.map +1 -0
- package/dist/src/cli/skills.js +284 -0
- package/dist/src/cli/skills.js.map +1 -0
- package/dist/src/cli/start.d.ts +5 -0
- package/dist/src/cli/start.d.ts.map +1 -0
- package/dist/src/cli/start.js +34 -0
- package/dist/src/cli/start.js.map +1 -0
- package/dist/src/cli/status.d.ts +2 -0
- package/dist/src/cli/status.d.ts.map +1 -0
- package/dist/src/cli/status.js +60 -0
- package/dist/src/cli/status.js.map +1 -0
- package/dist/src/cli/stop.d.ts +2 -0
- package/dist/src/cli/stop.d.ts.map +1 -0
- package/dist/src/cli/stop.js +11 -0
- package/dist/src/cli/stop.js.map +1 -0
- package/dist/src/connectors/slack/format.d.ts +10 -0
- package/dist/src/connectors/slack/format.d.ts.map +1 -0
- package/dist/src/connectors/slack/format.js +55 -0
- package/dist/src/connectors/slack/format.js.map +1 -0
- package/dist/src/connectors/slack/index.d.ts +18 -0
- package/dist/src/connectors/slack/index.d.ts.map +1 -0
- package/dist/src/connectors/slack/index.js +122 -0
- package/dist/src/connectors/slack/index.js.map +1 -0
- package/dist/src/connectors/slack/threads.d.ts +2 -0
- package/dist/src/connectors/slack/threads.d.ts.map +1 -0
- package/dist/src/connectors/slack/threads.js +10 -0
- package/dist/src/connectors/slack/threads.js.map +1 -0
- package/dist/src/cron/jobs.d.ts +5 -0
- package/dist/src/cron/jobs.d.ts.map +1 -0
- package/dist/src/cron/jobs.js +23 -0
- package/dist/src/cron/jobs.js.map +1 -0
- package/dist/src/cron/runner.d.ts +3 -0
- package/dist/src/cron/runner.d.ts.map +1 -0
- package/dist/src/cron/runner.js +118 -0
- package/dist/src/cron/runner.js.map +1 -0
- package/dist/src/cron/scheduler.d.ts +5 -0
- package/dist/src/cron/scheduler.d.ts.map +1 -0
- package/dist/src/cron/scheduler.js +39 -0
- package/dist/src/cron/scheduler.js.map +1 -0
- package/dist/src/engines/claude.d.ts +14 -0
- package/dist/src/engines/claude.d.ts.map +1 -0
- package/dist/src/engines/claude.js +264 -0
- package/dist/src/engines/claude.js.map +1 -0
- package/dist/src/engines/codex.d.ts +15 -0
- package/dist/src/engines/codex.d.ts.map +1 -0
- package/dist/src/engines/codex.js +346 -0
- package/dist/src/engines/codex.js.map +1 -0
- package/dist/src/gateway/api.d.ts +13 -0
- package/dist/src/gateway/api.d.ts.map +1 -0
- package/dist/src/gateway/api.js +819 -0
- package/dist/src/gateway/api.js.map +1 -0
- package/dist/src/gateway/daemon-entry.d.ts +2 -0
- package/dist/src/gateway/daemon-entry.d.ts.map +1 -0
- package/dist/src/gateway/daemon-entry.js +12 -0
- package/dist/src/gateway/daemon-entry.js.map +1 -0
- package/dist/src/gateway/lifecycle.d.ts +10 -0
- package/dist/src/gateway/lifecycle.d.ts.map +1 -0
- package/dist/src/gateway/lifecycle.js +124 -0
- package/dist/src/gateway/lifecycle.js.map +1 -0
- package/dist/src/gateway/org.d.ts +10 -0
- package/dist/src/gateway/org.d.ts.map +1 -0
- package/dist/src/gateway/org.js +71 -0
- package/dist/src/gateway/org.js.map +1 -0
- package/dist/src/gateway/server.d.ts +4 -0
- package/dist/src/gateway/server.d.ts.map +1 -0
- package/dist/src/gateway/server.js +301 -0
- package/dist/src/gateway/server.js.map +1 -0
- package/dist/src/gateway/watcher.d.ts +14 -0
- package/dist/src/gateway/watcher.d.ts.map +1 -0
- package/dist/src/gateway/watcher.js +104 -0
- package/dist/src/gateway/watcher.js.map +1 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/sessions/context.d.ts +20 -0
- package/dist/src/sessions/context.d.ts.map +1 -0
- package/dist/src/sessions/context.js +532 -0
- package/dist/src/sessions/context.js.map +1 -0
- package/dist/src/sessions/manager.d.ts +38 -0
- package/dist/src/sessions/manager.d.ts.map +1 -0
- package/dist/src/sessions/manager.js +208 -0
- package/dist/src/sessions/manager.js.map +1 -0
- package/dist/src/sessions/queue.d.ts +14 -0
- package/dist/src/sessions/queue.d.ts.map +1 -0
- package/dist/src/sessions/queue.js +42 -0
- package/dist/src/sessions/queue.js.map +1 -0
- package/dist/src/sessions/registry.d.ts +46 -0
- package/dist/src/sessions/registry.d.ts.map +1 -0
- package/dist/src/sessions/registry.js +193 -0
- package/dist/src/sessions/registry.js.map +1 -0
- package/dist/src/shared/config.d.ts +3 -0
- package/dist/src/shared/config.d.ts.map +1 -0
- package/dist/src/shared/config.js +11 -0
- package/dist/src/shared/config.js.map +1 -0
- package/dist/src/shared/logger.d.ts +12 -0
- package/dist/src/shared/logger.d.ts.map +1 -0
- package/dist/src/shared/logger.js +35 -0
- package/dist/src/shared/logger.js.map +1 -0
- package/dist/src/shared/paths.d.ts +19 -0
- package/dist/src/shared/paths.d.ts.map +1 -0
- package/dist/src/shared/paths.js +31 -0
- package/dist/src/shared/paths.js.map +1 -0
- package/dist/src/shared/types.d.ts +166 -0
- package/dist/src/shared/types.d.ts.map +1 -0
- package/dist/src/shared/types.js +4 -0
- package/dist/src/shared/types.js.map +1 -0
- package/dist/src/shared/version.d.ts +15 -0
- package/dist/src/shared/version.d.ts.map +1 -0
- package/dist/src/shared/version.js +56 -0
- package/dist/src/shared/version.js.map +1 -0
- package/dist/web/404.html +1 -0
- package/dist/web/_next/static/chunks/198-fd91406a158c5c25.js +1 -0
- package/dist/web/_next/static/chunks/517.62389e8d3c929c43.js +1 -0
- package/dist/web/_next/static/chunks/534-17c49c944e0d0fe1.js +1 -0
- package/dist/web/_next/static/chunks/573-070537ec2452d03e.js +1 -0
- package/dist/web/_next/static/chunks/590-2c34156c7417317e.js +1 -0
- package/dist/web/_next/static/chunks/704-af2893821e1d18dc.js +1 -0
- package/dist/web/_next/static/chunks/7273c211.06e3b6021d90b73f.js +1 -0
- package/dist/web/_next/static/chunks/73-c226535579393e21.js +1 -0
- package/dist/web/_next/static/chunks/743-5bb03adbb0e4ddec.js +1 -0
- package/dist/web/_next/static/chunks/874.97d5a27895061057.js +1 -0
- package/dist/web/_next/static/chunks/8e6518bb-c26e82767f1faf66.js +1 -0
- package/dist/web/_next/static/chunks/app/_not-found/page-bb075b0779827928.js +1 -0
- package/dist/web/_next/static/chunks/app/chat/page-6d5bc707a45c92c6.js +1 -0
- package/dist/web/_next/static/chunks/app/costs/page-d6c03718defdb599.js +1 -0
- package/dist/web/_next/static/chunks/app/cron/page-4c563eef2b6231fe.js +1 -0
- package/dist/web/_next/static/chunks/app/kanban/page-55a73165a36f4077.js +1 -0
- package/dist/web/_next/static/chunks/app/layout-5129b67d5f126cf0.js +1 -0
- package/dist/web/_next/static/chunks/app/logs/page-e18889d67e48c9c9.js +1 -0
- package/dist/web/_next/static/chunks/app/org/page-d5cd8d9b7864737b.js +1 -0
- package/dist/web/_next/static/chunks/app/page-b81992940fd1dbc6.js +1 -0
- package/dist/web/_next/static/chunks/app/sessions/page-2eef6ac7882a28ba.js +1 -0
- package/dist/web/_next/static/chunks/app/settings/page-4fb01b9b09500170.js +1 -0
- package/dist/web/_next/static/chunks/app/skills/page-df9465e314561bb5.js +1 -0
- package/dist/web/_next/static/chunks/framework-077b27ad7787463c.js +1 -0
- package/dist/web/_next/static/chunks/main-app-437f51faf74fbb3b.js +1 -0
- package/dist/web/_next/static/chunks/main-f1c74cefd4965abf.js +1 -0
- package/dist/web/_next/static/chunks/pages/_app-77a85fe7d6bca671.js +1 -0
- package/dist/web/_next/static/chunks/pages/_error-68febf4b34900064.js +1 -0
- package/dist/web/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/dist/web/_next/static/chunks/webpack-0f39b7e91dce9791.js +1 -0
- package/dist/web/_next/static/css/4a6a5bca9238c104.css +1 -0
- package/dist/web/_next/static/vLvOwhC8JocJzSHTHKKOv/_buildManifest.js +1 -0
- package/dist/web/_next/static/vLvOwhC8JocJzSHTHKKOv/_ssgManifest.js +1 -0
- package/dist/web/chat.html +1 -0
- package/dist/web/chat.txt +20 -0
- package/dist/web/costs.html +16 -0
- package/dist/web/costs.txt +20 -0
- package/dist/web/cron.html +1 -0
- package/dist/web/cron.txt +20 -0
- package/dist/web/index.html +1 -0
- package/dist/web/index.txt +20 -0
- package/dist/web/kanban.html +1 -0
- package/dist/web/kanban.txt +20 -0
- package/dist/web/logs.html +7 -0
- package/dist/web/logs.txt +20 -0
- package/dist/web/org.html +1 -0
- package/dist/web/org.txt +20 -0
- package/dist/web/sessions.html +1 -0
- package/dist/web/sessions.txt +20 -0
- package/dist/web/settings.html +1 -0
- package/dist/web/settings.txt +20 -0
- package/dist/web/skills.html +1 -0
- package/dist/web/skills.txt +20 -0
- package/package.json +43 -0
- package/template/AGENTS.md +167 -0
- package/template/CLAUDE.md +106 -0
- package/template/config.default.yaml +27 -0
- package/template/docs/architecture.md +74 -0
- package/template/docs/connectors.md +72 -0
- package/template/docs/cron.md +137 -0
- package/template/docs/org.md +105 -0
- package/template/docs/overview.md +39 -0
- package/template/docs/self-modification.md +65 -0
- package/template/docs/skills.md +58 -0
- package/template/knowledge/.gitkeep +0 -0
- package/template/migrations/.gitkeep +0 -0
- package/template/migrations/0.1.0/MIGRATION.md +25 -0
- package/template/skills/cron-manager/SKILL.md +127 -0
- package/template/skills/find-and-install/SKILL.md +92 -0
- package/template/skills/management/SKILL.md +203 -0
- package/template/skills/migrate/SKILL.md +154 -0
- package/template/skills/new/SKILL.md +19 -0
- package/template/skills/onboarding/SKILL.md +106 -0
- package/template/skills/self-heal/SKILL.md +114 -0
- package/template/skills/skill-creator/SKILL.md +112 -0
- package/template/skills/status/SKILL.md +19 -0
- package/template/skills/sync/SKILL.md +67 -0
- package/template/skills.json +3 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skill-creator
|
|
3
|
+
description: Create new custom skills by writing SKILL.md playbooks
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill Creator Skill
|
|
7
|
+
|
|
8
|
+
## Trigger
|
|
9
|
+
|
|
10
|
+
This skill activates when the user wants to create a new custom skill for {{portalName}}.
|
|
11
|
+
|
|
12
|
+
## Output Location
|
|
13
|
+
|
|
14
|
+
All skills are stored at `~/.jinn/skills/<skill-name>/SKILL.md`. Each skill lives in its own directory named with kebab-case.
|
|
15
|
+
|
|
16
|
+
## Behavior by Engine
|
|
17
|
+
|
|
18
|
+
### Claude Code (claude engine)
|
|
19
|
+
|
|
20
|
+
Claude Code has native skill creation capabilities. Defer to the engine's built-in skill/memory system when available. The engine knows how to create well-structured instruction files. Simply ensure the output file lands at the correct path: `~/.jinn/skills/<skill-name>/SKILL.md`.
|
|
21
|
+
|
|
22
|
+
### Codex (codex engine)
|
|
23
|
+
|
|
24
|
+
Create the SKILL.md file manually following the conventions below. Write the file directly to `~/.jinn/skills/<skill-name>/SKILL.md`.
|
|
25
|
+
|
|
26
|
+
## Steps
|
|
27
|
+
|
|
28
|
+
1. Ask the user what the skill should do. Get a clear description of the capability.
|
|
29
|
+
2. Ask for a name (kebab-case). Suggest one if the user does not provide it.
|
|
30
|
+
3. Create the directory `~/.jinn/skills/<skill-name>/` if it does not exist.
|
|
31
|
+
4. Generate the SKILL.md content following the conventions below.
|
|
32
|
+
5. Write the file to `~/.jinn/skills/<skill-name>/SKILL.md`.
|
|
33
|
+
6. Confirm the skill was created and summarize what it does.
|
|
34
|
+
|
|
35
|
+
## Conventions for Writing Good SKILL.md Files
|
|
36
|
+
|
|
37
|
+
Every SKILL.md should follow these conventions:
|
|
38
|
+
|
|
39
|
+
### 1. Clear Trigger Description
|
|
40
|
+
|
|
41
|
+
Start with a `## Trigger` section that explains exactly when this skill should activate. Be specific about the keywords, phrases, or situations that should invoke this skill.
|
|
42
|
+
|
|
43
|
+
Good: "This skill activates when the user asks to generate a weekly report from their GitHub repositories."
|
|
44
|
+
Bad: "This skill does reporting stuff."
|
|
45
|
+
|
|
46
|
+
### 2. Step-by-Step Instructions
|
|
47
|
+
|
|
48
|
+
Provide numbered steps that an AI engine can follow without ambiguity. Each step should be a concrete action, not a vague directive.
|
|
49
|
+
|
|
50
|
+
Good: "1. Read the file at `~/.jinn/data/repos.json`. 2. For each repository, fetch the latest commits from the past 7 days."
|
|
51
|
+
Bad: "1. Get the data. 2. Process it."
|
|
52
|
+
|
|
53
|
+
### 3. Data File References
|
|
54
|
+
|
|
55
|
+
Specify exact file paths for any data the skill reads or writes. Use `~/.jinn/` as the base directory. Define the expected schema for any JSON or YAML files.
|
|
56
|
+
|
|
57
|
+
### 4. Error Handling Guidance
|
|
58
|
+
|
|
59
|
+
Include a section on what to do when things go wrong: missing files, malformed data, unavailable services. Provide fallback behavior.
|
|
60
|
+
|
|
61
|
+
### 5. Keep Skills Focused
|
|
62
|
+
|
|
63
|
+
Each skill should do one thing well. If a skill is trying to do too many things, suggest splitting it into multiple skills.
|
|
64
|
+
|
|
65
|
+
### 6. Use Concrete Examples
|
|
66
|
+
|
|
67
|
+
Include example inputs, outputs, file contents, and commands wherever possible. Examples remove ambiguity.
|
|
68
|
+
|
|
69
|
+
## Template
|
|
70
|
+
|
|
71
|
+
Use this template as a starting point. **YAML frontmatter is required** — both Claude Code and Codex CLIs discover skills by reading frontmatter from `SKILL.md` files. Without it, the skill won't be recognized by engines.
|
|
72
|
+
|
|
73
|
+
```markdown
|
|
74
|
+
---
|
|
75
|
+
name: <skill-name>
|
|
76
|
+
description: <One-line description of what this skill does>
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
# <Skill Name>
|
|
80
|
+
|
|
81
|
+
## Trigger
|
|
82
|
+
|
|
83
|
+
This skill activates when <specific trigger description>.
|
|
84
|
+
|
|
85
|
+
## Data Files
|
|
86
|
+
|
|
87
|
+
- `~/.jinn/<path>` — <description of the file and its format>
|
|
88
|
+
|
|
89
|
+
## Steps
|
|
90
|
+
|
|
91
|
+
1. <First concrete action>
|
|
92
|
+
2. <Second concrete action>
|
|
93
|
+
3. ...
|
|
94
|
+
|
|
95
|
+
## Examples
|
|
96
|
+
|
|
97
|
+
<Example input and expected behavior>
|
|
98
|
+
|
|
99
|
+
## Error Handling
|
|
100
|
+
|
|
101
|
+
- If <error condition>, then <fallback behavior>.
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Auto-Sync
|
|
105
|
+
|
|
106
|
+
The gateway automatically creates symlinks in `~/.jinn/.claude/skills/` and `~/.jinn/.agents/skills/` pointing to each skill directory. This happens on startup and whenever the `skills/` directory changes. You do not need to manage symlinks manually.
|
|
107
|
+
|
|
108
|
+
## Error Handling
|
|
109
|
+
|
|
110
|
+
- If a skill with the same name already exists, ask the user whether to overwrite or choose a different name.
|
|
111
|
+
- Validate that the skill name is valid kebab-case (lowercase letters, numbers, and hyphens only).
|
|
112
|
+
- If the user's description is too vague, ask clarifying questions before generating the skill.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: status
|
|
3
|
+
description: Show information about the current session
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Status Skill
|
|
7
|
+
|
|
8
|
+
## Trigger
|
|
9
|
+
|
|
10
|
+
This skill activates when the user sends `/status`. It shows information about the current session.
|
|
11
|
+
|
|
12
|
+
## How It Works
|
|
13
|
+
|
|
14
|
+
- **Web UI**: The frontend handles `/status` locally — it fetches the session details via the API and displays them inline. No message is sent to the engine.
|
|
15
|
+
- **Connectors (Slack, etc.)**: The gateway's session manager intercepts `/status`, looks up the current session, and sends back session info (ID, engine, status, timestamps, last error).
|
|
16
|
+
|
|
17
|
+
## Your Behavior
|
|
18
|
+
|
|
19
|
+
You typically won't see `/status` messages because they're handled before reaching the engine. If a `/status` message does reach you, provide session info from your context: session ID, source, channel, engine, and any other metadata available.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sync
|
|
3
|
+
description: Sync the latest conversation with an employee into your context
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Sync Skill
|
|
7
|
+
|
|
8
|
+
## Trigger
|
|
9
|
+
|
|
10
|
+
This skill activates when the user sends `/sync @employee-name`. It pulls in the most recent conversation with the specified employee so you can respond with full awareness of what was discussed.
|
|
11
|
+
|
|
12
|
+
## How It Works
|
|
13
|
+
|
|
14
|
+
You fetch the conversation yourself using the gateway API. No magic injection — you're in control.
|
|
15
|
+
|
|
16
|
+
**Gateway URL**: Use the gateway URL from the "Current configuration" section of your system prompt (e.g., `http://127.0.0.1:7777`). Do not hardcode it — it may vary.
|
|
17
|
+
|
|
18
|
+
### Steps
|
|
19
|
+
|
|
20
|
+
1. **Extract the employee name** from the user's message (e.g., `/sync @jinn-dev` → `jinn-dev`)
|
|
21
|
+
|
|
22
|
+
2. **List all sessions** to find the employee's most recent one:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
curl -s $GATEWAY_URL/api/sessions | jq '[.[] | select(.employee == "EMPLOYEE_NAME")] | sort_by(.lastActivity) | reverse | .[0]'
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Replace `EMPLOYEE_NAME` with the target and `$GATEWAY_URL` with the gateway URL from your system prompt. This gives you the most recent session for that employee.
|
|
29
|
+
|
|
30
|
+
**Tip**: Your own session ID is in the "Current session" section of your system prompt. If you want to exclude child sessions of the current session (to avoid circular references), filter with:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
curl -s $GATEWAY_URL/api/sessions | jq '[.[] | select(.employee == "EMPLOYEE_NAME" and .parentSessionId != "YOUR_SESSION_ID")] | sort_by(.lastActivity) | reverse | .[0]'
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
3. **Fetch the full conversation** using the session ID from step 2:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
curl -s $GATEWAY_URL/api/sessions/SESSION_ID | jq '.messages'
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
This returns all messages with `role` and `content` fields. Read through them to understand what was discussed.
|
|
43
|
+
|
|
44
|
+
4. **Respond naturally** — summarize, highlight key points, offer next steps.
|
|
45
|
+
|
|
46
|
+
## Your Behavior
|
|
47
|
+
|
|
48
|
+
After fetching and reading the conversation:
|
|
49
|
+
|
|
50
|
+
1. **Summarize** the key points — what was discussed, what decisions were made, what work was done
|
|
51
|
+
2. **Highlight** any action items, blockers, or open questions
|
|
52
|
+
3. **Offer** to take next steps — continue the work, relay instructions, or loop in other employees
|
|
53
|
+
|
|
54
|
+
## Edge Cases
|
|
55
|
+
|
|
56
|
+
- **No sessions found**: If no sessions exist for that employee, tell the user: "I don't see any recent conversations with @employee-name."
|
|
57
|
+
- **Empty messages**: If the session exists but has no messages, note that the session was created but no conversation happened yet.
|
|
58
|
+
- **Employee not found**: If the name doesn't match any sessions, suggest the user check the org with `curl -s $GATEWAY_URL/api/org` to see available employees.
|
|
59
|
+
- **Very long conversations**: You decide how much to read. You can fetch the full conversation and focus on the most recent messages, or read everything if it's short. No artificial limits.
|
|
60
|
+
|
|
61
|
+
## Examples
|
|
62
|
+
|
|
63
|
+
User: `/sync @jinn-dev`
|
|
64
|
+
You: *[fetches sessions via API, finds jinn-dev's latest session, reads messages]* "Here's what happened in the latest conversation with @jinn-dev: [summary]. Want me to follow up on anything?"
|
|
65
|
+
|
|
66
|
+
User: `/sync @content-writer`
|
|
67
|
+
You: *[fetches via API]* "Looking at the recent chat with @content-writer — they finished the blog draft and are waiting for review. Should I ask them to make revisions, or is it ready to publish?"
|