@synapse-research/synapse 0.2.11 → 0.2.13
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/.next/BUILD_ID +1 -1
- package/dist/.next/app-build-manifest.json +124 -124
- package/dist/.next/app-path-routes-manifest.json +34 -34
- package/dist/.next/build-manifest.json +2 -2
- package/dist/.next/server/app/(dashboard)/agents/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/compute/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-designs/[designUuid]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-designs/new/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-designs/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-runs/[runUuid]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-runs/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiments/new/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiments/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/insights/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/related-works/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/research-questions/[questionUuid]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/research-questions/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/settings/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/research-projects/new/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/research-projects/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found.html +1 -1
- package/dist/.next/server/app/_not-found.rsc +1 -1
- package/dist/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/admin/companies/new.html +1 -1
- package/dist/.next/server/app/admin/companies/new.rsc +1 -1
- package/dist/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/admin/companies.html +1 -1
- package/dist/.next/server/app/admin/companies.rsc +1 -1
- package/dist/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/admin.html +1 -1
- package/dist/.next/server/app/admin.rsc +1 -1
- package/dist/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/admin/stats/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/auth/refresh/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/compute-gpus/[uuid]/release/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/compute-nodes/[uuid]/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/compute-nodes/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/compute-pools/[uuid]/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/compute-pools/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/documents/[uuid]/images/[filename]/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/documents/[uuid]/images/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/experiment-designs/[uuid]/approve/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/experiment-designs/[uuid]/close/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/experiment-designs/[uuid]/reject/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/experiment-designs/[uuid]/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/experiment-runs/[uuid]/claim/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/experiment-runs/[uuid]/dependencies/[dependsOnRunUuid]/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/experiment-runs/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/experiment-runs/[uuid]/evaluate-criteria/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/experiment-runs/[uuid]/registry/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/experiment-runs/[uuid]/release/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/experiment-runs/[uuid]/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/experiment-runs/[uuid]/sessions/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/experiments/[uuid]/complete/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/experiments/[uuid]/progress/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/experiments/[uuid]/request-plan/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/experiments/[uuid]/reset/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/experiments/[uuid]/review/route.js +1 -1
- package/dist/.next/server/app/api/experiments/[uuid]/review/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/experiments/[uuid]/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/experiments/[uuid]/start/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/mcp/route.js +1 -1
- package/dist/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/onboarding/status/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/agent-activity/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/available/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/baselines/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/experiment-designs/[designUuid]/validate/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/experiment-designs/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/experiment-designs/summary/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/experiment-runs/dependencies/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/experiment-runs/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/experiments/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/github/branches/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/group/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/related-works/[workUuid]/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/related-works/auto-search/complete/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/related-works/auto-search/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/related-works/deep-research/complete/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/related-works/deep-research/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/related-works/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/research-questions/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/synthesis/complete/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/synthesis/refresh/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/[uuid]/synthesis/trigger/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-projects/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-questions/[uuid]/claim/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-questions/[uuid]/move/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-questions/[uuid]/release/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-questions/[uuid]/review/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/research-questions/[uuid]/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/settings/integrations/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/api/ssh-config/route_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/index.html +1 -1
- package/dist/.next/server/app/index.rsc +1 -1
- package/dist/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/login/admin.html +1 -1
- package/dist/.next/server/app/login/admin.rsc +1 -1
- package/dist/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/login/callback.html +1 -1
- package/dist/.next/server/app/login/callback.rsc +1 -1
- package/dist/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/login/silent-refresh/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/login/silent-refresh.html +1 -1
- package/dist/.next/server/app/login/silent-refresh.rsc +1 -1
- package/dist/.next/server/app/login.html +1 -1
- package/dist/.next/server/app/login.rsc +1 -1
- package/dist/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/research-projects/new.html +1 -1
- package/dist/.next/server/app/research-projects/new.rsc +1 -1
- package/dist/.next/server/app/research-projects.html +1 -1
- package/dist/.next/server/app/research-projects.rsc +1 -1
- package/dist/.next/server/app/settings.html +1 -1
- package/dist/.next/server/app/settings.rsc +1 -1
- package/dist/.next/server/app-paths-manifest.json +34 -34
- package/dist/.next/server/chunks/8499.js +1 -1
- package/dist/.next/server/middleware-manifest.json +1 -1
- package/dist/.next/server/pages/404.html +1 -1
- package/dist/.next/server/pages/500.html +1 -1
- package/dist/.next/server/server-reference-manifest.js +1 -1
- package/dist/.next/server/server-reference-manifest.json +1 -1
- package/package.json +4 -2
- package/dist/public/skill/SKILL.md +0 -200
- package/dist/public/skill/aris-synapse-sync/SKILL.md +0 -368
- package/dist/public/skill/package.json +0 -79
- package/dist/public/skill/references/00-common-tools.md +0 -253
- package/dist/public/skill/references/01-setup.md +0 -251
- package/dist/public/skill/references/02-pm-workflow.md +0 -584
- package/dist/public/skill/references/03-developer-workflow.md +0 -325
- package/dist/public/skill/references/04-admin-workflow.md +0 -328
- package/dist/public/skill/references/06-claude-code-agent-teams.md +0 -233
- package/dist/public/synapse-plugin/.claude-plugin/plugin.json +0 -20
- package/dist/public/synapse-plugin/.mcp.json +0 -11
- package/dist/public/synapse-plugin/bin/on-pre-enter-plan.sh +0 -26
- package/dist/public/synapse-plugin/bin/on-pre-exit-plan.sh +0 -22
- package/dist/public/synapse-plugin/bin/on-pre-spawn-agent.sh +0 -64
- package/dist/public/synapse-plugin/bin/on-session-end.sh +0 -39
- package/dist/public/synapse-plugin/bin/on-session-start.sh +0 -283
- package/dist/public/synapse-plugin/bin/on-subagent-start.sh +0 -233
- package/dist/public/synapse-plugin/bin/on-subagent-stop.sh +0 -80
- package/dist/public/synapse-plugin/bin/on-task-completed.sh +0 -66
- package/dist/public/synapse-plugin/bin/on-teammate-idle.sh +0 -47
- package/dist/public/synapse-plugin/bin/on-user-prompt.sh +0 -57
- package/dist/public/synapse-plugin/bin/synapse-api.sh +0 -387
- package/dist/public/synapse-plugin/bin/test-syntax.sh +0 -85
- package/dist/public/synapse-plugin/hooks/hooks.json +0 -105
- package/dist/public/synapse-plugin/skills/autonomy/SKILL.md +0 -140
- package/dist/public/synapse-plugin/skills/experiments/SKILL.md +0 -87
- package/dist/public/synapse-plugin/skills/research/SKILL.md +0 -58
- package/dist/public/synapse-plugin/skills/sessions/SKILL.md +0 -174
- package/dist/public/synapse-plugin/skills/setup/SKILL.md +0 -73
- package/dist/public/synapse-plugin/skills/synapse/SKILL.md +0 -144
- package/dist/public/synapse-plugin/skills/synapse/package.json +0 -49
- package/dist/public/synapse-plugin/skills/synapse/references/00-common-tools.md +0 -107
- package/dist/public/synapse-plugin/skills/synapse/references/01-setup.md +0 -112
- package/dist/public/synapse-plugin/skills/synapse/references/02-research-workflow.md +0 -145
- package/dist/public/synapse-plugin/skills/synapse/references/03-experiment-workflow.md +0 -319
- package/dist/public/synapse-plugin/skills/synapse/references/04-autonomous-loop.md +0 -223
- package/dist/public/synapse-plugin/skills/synapse/references/05-session-sub-agent.md +0 -251
- /package/dist/.next/static/{duLVRogIrNQ1Tarxga53z → VlyiqgSt6DSLuCX7rlcKa}/_buildManifest.js +0 -0
- /package/dist/.next/static/{duLVRogIrNQ1Tarxga53z → VlyiqgSt6DSLuCX7rlcKa}/_ssgManifest.js +0 -0
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: autonomy
|
|
3
|
-
description: Drive the Claude Code-client autonomous research loop — analyze project state, propose the next experiment, dispatch sub-agents to execute it, and iterate.
|
|
4
|
-
license: AGPL-3.0
|
|
5
|
-
metadata:
|
|
6
|
-
author: Vincentwei1021
|
|
7
|
-
version: "0.6.1"
|
|
8
|
-
category: research
|
|
9
|
-
mcp_server: synapse
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Autonomy Skill
|
|
13
|
-
|
|
14
|
-
Use this skill when the user asks the Claude Code agent to drive research autonomously on a Synapse project: propose the next experiment, dispatch it, analyze the result, and repeat.
|
|
15
|
-
|
|
16
|
-
This is the **CC-client autonomous loop**. It does not depend on the server-side `autonomousLoopEnabled` flag (that flag is for realtime-transport agents). The loop runs entirely inside the current Claude Code session: the main agent is the orchestrator, and sub-agents spawned via the Task tool are auto-enrolled by the plugin's `SubagentStart` hook.
|
|
17
|
-
|
|
18
|
-
## Default Mode
|
|
19
|
-
|
|
20
|
-
**Full auto** by default. When the user says "turn on autonomous loop", "run until done", or similar, assume full auto unless they say otherwise:
|
|
21
|
-
|
|
22
|
-
- New experiment proposals are created as `pending_start` and immediately dispatched to sub-agents for execution.
|
|
23
|
-
- The main agent does not wait for human approval between iterations.
|
|
24
|
-
- The user can stop the loop at any time by interrupting the session; the main agent should also stop voluntarily once stop conditions (below) are met.
|
|
25
|
-
|
|
26
|
-
If the user explicitly asks for "human review before each experiment", switch to **review mode**: proposals land as `pending_review` and the loop pauses until they are approved externally.
|
|
27
|
-
|
|
28
|
-
## Prompt Boundary
|
|
29
|
-
|
|
30
|
-
Stay inside this skill when the work is about:
|
|
31
|
-
- reviewing the project state after experiments finish
|
|
32
|
-
- deciding whether to propose the next experiment or wait for in-flight work
|
|
33
|
-
- dispatching sub-agents to execute `pending_start` experiments
|
|
34
|
-
- maintaining a rolling synthesis via `synapse_save_project_synthesis`
|
|
35
|
-
- detecting stop conditions and exiting cleanly
|
|
36
|
-
|
|
37
|
-
Hand off to:
|
|
38
|
-
- **[experiments](../experiments/SKILL.md)** for the inner execution logic of one experiment (the sub-agent operates there)
|
|
39
|
-
- **[research](../research/SKILL.md)** when the loop decides it needs new literature before the next experiment
|
|
40
|
-
- **[sessions](../sessions/SKILL.md)** for how sub-agent sessions and heartbeats are auto-managed
|
|
41
|
-
|
|
42
|
-
## Before Starting The Loop
|
|
43
|
-
|
|
44
|
-
1. `synapse_checkin()` to refresh identity and current assignments.
|
|
45
|
-
2. `synapse_get_project_full_context({ researchProjectUuid })` to load brief, evaluation methods, past experiments, latest synthesis, and compute availability.
|
|
46
|
-
3. Confirm with the user:
|
|
47
|
-
- target project UUID
|
|
48
|
-
- mode (`full_auto` default, or `review`)
|
|
49
|
-
- optional budgets: `maxIterations`, `maxExperimentsProposed`, `maxComputeHours`
|
|
50
|
-
4. If the project has no completed experiments, do not enter the loop cold. Offer the foundational path first (data prep + baseline + eval script — see **[experiments](../experiments/SKILL.md)**), then start the loop once the baseline is in place.
|
|
51
|
-
|
|
52
|
-
## Iteration Procedure
|
|
53
|
-
|
|
54
|
-
Each iteration of the loop follows the same shape. The main agent runs this until a stop condition triggers.
|
|
55
|
-
|
|
56
|
-
1. **Refresh project state**
|
|
57
|
-
- `synapse_get_project_full_context({ researchProjectUuid })`
|
|
58
|
-
- `synapse_get_assigned_experiments({ researchProjectUuid, statuses: ["pending_start", "in_progress"] })`
|
|
59
|
-
|
|
60
|
-
2. **Decide what this iteration should do**
|
|
61
|
-
- If any experiment is `in_progress`, the loop should **monitor**, not propose. Poll `synapse_get_experiment` for each running experiment, write a progress note to the user, and yield back so the next user turn re-enters the loop.
|
|
62
|
-
- If any experiment is `pending_start` (and mode is `full_auto`), **dispatch** it: spawn a Task-tool sub-agent with the experiment UUID in its prompt. The `SubagentStart` hook auto-injects the session UUID and execution workflow; the main agent does not need to call `synapse_create_session`.
|
|
63
|
-
- If the queue is empty and there are completed experiments to digest, **synthesize** first: read the current `project_synthesis` document via `synapse_get_documents({ type: "project_synthesis" })` + `synapse_get_document`, and update it with `synapse_save_project_synthesis` only if new results add something the existing synthesis does not already cover.
|
|
64
|
-
- If the queue is empty and synthesis is current, **propose** the next experiment with `synapse_propose_experiment`. One independent run per proposal — split comparisons, ablations, and parameter sweeps into separate proposals.
|
|
65
|
-
|
|
66
|
-
3. **Respect compute reality**
|
|
67
|
-
- Before proposing, check availability with `synapse_list_compute_nodes({ researchProjectUuid, onlyAvailable: true })`. Do not over-propose concurrent experiments beyond what available GPUs can run.
|
|
68
|
-
- If the project has a `computePoolUuid`, reservations must stay inside that pool.
|
|
69
|
-
|
|
70
|
-
4. **Log the decision**
|
|
71
|
-
- Add a short `synapse_add_comment({ targetType: "research_project", ... })` summarizing what this iteration decided and why. This gives the human a readable audit trail in the UI.
|
|
72
|
-
|
|
73
|
-
5. **Check stop conditions**, then either return control to the user (normal case) or immediately re-run step 1 if the user asked for tight, unattended iteration within a single turn.
|
|
74
|
-
|
|
75
|
-
## Monitor-Not-Executor
|
|
76
|
-
|
|
77
|
-
The main agent does **not** SSH into GPU nodes, does **not** run training loops, and does **not** call `synapse_start_experiment` itself (unless the user explicitly tells it to run an experiment inline with no sub-agent). Its job is:
|
|
78
|
-
|
|
79
|
-
- read state → decide → dispatch → monitor → synthesize → propose → repeat.
|
|
80
|
-
|
|
81
|
-
All execution work — `synapse_start_experiment`, `synapse_get_node_access_bundle`, SSH, training, `synapse_report_experiment_progress`, `synapse_submit_experiment_results` — happens inside sub-agents. Spawn one Task sub-agent per `pending_start` experiment. Each sub-agent receives its session UUID and the full experiment workflow automatically via the `SubagentStart` hook.
|
|
82
|
-
|
|
83
|
-
## Proposal Quality
|
|
84
|
-
|
|
85
|
-
A good proposal includes:
|
|
86
|
-
- **Motivation** — what previous result or gap this addresses
|
|
87
|
-
- **Hypothesis** — what you expect to learn
|
|
88
|
-
- **Method** — enough detail that a sub-agent can execute without further prompting
|
|
89
|
-
- **Success criteria** — how the result will be judged against the project's evaluation method
|
|
90
|
-
- **Compute fit** — realistic given current availability
|
|
91
|
-
|
|
92
|
-
Bad proposals to avoid:
|
|
93
|
-
- bundling multiple runs into one card
|
|
94
|
-
- re-running something already completed
|
|
95
|
-
- ignoring the project's stated evaluation methods
|
|
96
|
-
- proposing work the available compute pool cannot support
|
|
97
|
-
|
|
98
|
-
## Stop Conditions
|
|
99
|
-
|
|
100
|
-
Exit the loop and report back to the user when any of these hold:
|
|
101
|
-
|
|
102
|
-
- `maxIterations` reached (default: ask the user up front)
|
|
103
|
-
- `maxExperimentsProposed` reached
|
|
104
|
-
- `maxComputeHours` used across this loop's runs
|
|
105
|
-
- synthesis has not materially changed for K consecutive iterations (no-progress detection)
|
|
106
|
-
- the user interrupts or explicitly says "stop"
|
|
107
|
-
- all research questions are `completed` and there is no promising direction left
|
|
108
|
-
- compute pool is exhausted and no experiment is making forward progress
|
|
109
|
-
|
|
110
|
-
On exit, summarize what was run, what was learned, the current state of the synthesis document, and any recommended follow-ups for a human.
|
|
111
|
-
|
|
112
|
-
## Mutual Exclusion With The Server-Side Loop
|
|
113
|
-
|
|
114
|
-
If `synapse_get_research_project` shows the project already has `autonomousLoopEnabled = true` and a loop agent assigned on the realtime side, do not also run the CC-client loop against it. Warn the user and either defer, or ask them to disable the server-side loop first — running both will double-dispatch proposals and reservations.
|
|
115
|
-
|
|
116
|
-
## Typical Turn
|
|
117
|
-
|
|
118
|
-
```
|
|
119
|
-
synapse_checkin()
|
|
120
|
-
synapse_get_project_full_context({ researchProjectUuid })
|
|
121
|
-
synapse_get_assigned_experiments({ researchProjectUuid, statuses: ["pending_start", "in_progress"] })
|
|
122
|
-
|
|
123
|
-
# Monitor in-flight experiments if any
|
|
124
|
-
# Else dispatch pending_start via Task sub-agents
|
|
125
|
-
# Else synthesize if new results need analysis
|
|
126
|
-
# Else propose next experiment
|
|
127
|
-
|
|
128
|
-
synapse_add_comment({
|
|
129
|
-
targetType: "research_project",
|
|
130
|
-
targetUuid: "<projectUuid>",
|
|
131
|
-
content: "Iteration N — dispatched experiment <uuid> / proposed <title> / no-op (synthesis current)"
|
|
132
|
-
})
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
## Reference
|
|
136
|
-
|
|
137
|
-
- **[Autonomous loop reference](../synapse/references/04-autonomous-loop.md)**
|
|
138
|
-
- **[Experiments skill](../experiments/SKILL.md)**
|
|
139
|
-
- **[Sessions skill](../sessions/SKILL.md)**
|
|
140
|
-
- **[Common tools](../synapse/references/00-common-tools.md)**
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: experiments
|
|
3
|
-
description: Plan, revise, execute, and report Synapse experiments, including compute access and result submission.
|
|
4
|
-
license: AGPL-3.0
|
|
5
|
-
metadata:
|
|
6
|
-
author: Vincentwei1021
|
|
7
|
-
version: "0.6.1"
|
|
8
|
-
category: research
|
|
9
|
-
mcp_server: synapse
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Experiments Skill
|
|
13
|
-
|
|
14
|
-
Use this skill for the experiment stage: drafting plans, revising returned experiments, running approved work, using compute, and submitting results.
|
|
15
|
-
|
|
16
|
-
## Prompt Boundary
|
|
17
|
-
|
|
18
|
-
Stay inside this skill when the work is about:
|
|
19
|
-
- creating a brand-new experiment from scratch
|
|
20
|
-
- `draft`, `pending_review`, `pending_start`, `in_progress`, or `completed` experiments
|
|
21
|
-
- plan authoring or revision based on reviewer feedback
|
|
22
|
-
- reserving GPUs and starting workloads
|
|
23
|
-
- reporting progress and saving results
|
|
24
|
-
- writing experiment result reports
|
|
25
|
-
|
|
26
|
-
Hand off to:
|
|
27
|
-
- **[research](../research/SKILL.md)** for literature and deep research
|
|
28
|
-
- **[autonomy](../autonomy/SKILL.md)** to drive the CC-client autonomous loop when there is nothing to execute and you need to propose the next experiment
|
|
29
|
-
- **[sessions](../sessions/SKILL.md)** when running multiple experiments in parallel via sub-agents
|
|
30
|
-
|
|
31
|
-
## Empty-Assignment Onboarding
|
|
32
|
-
|
|
33
|
-
If `synapse_get_assigned_experiments` returns empty, do not idle. Ask the user which path:
|
|
34
|
-
|
|
35
|
-
1. **Execute an approved experiment** — list `pending_start` experiments in the project with `synapse_get_project_full_context` and ask which to start.
|
|
36
|
-
2. **Flesh out a quick idea** — call `synapse_get_project_full_context`, then draft a plan with `synapse_create_experiment` (defaults to `pending_review`, or pass `status: "draft"` to keep refining).
|
|
37
|
-
3. **Create the foundational experiment** — if the project has no completed experiments, offer the foundational template below.
|
|
38
|
-
4. **Enter the autonomous loop** — hand off to **[autonomy](../autonomy/SKILL.md)** to propose and auto-dispatch the next experiment.
|
|
39
|
-
|
|
40
|
-
## Foundational First Experiment
|
|
41
|
-
|
|
42
|
-
If the project has no completed experiments yet, the first experiment is not a normal research run — it is the project's baseline infrastructure. Drive it through three bundled deliverables before any comparison work:
|
|
43
|
-
|
|
44
|
-
1. **Data preparation** — normalize the raw dataset into a single canonical format every future experiment will consume. Keep the prep scripts under the project's repo (if one is configured via `synapse_get_repo_access`).
|
|
45
|
-
2. **Baseline run** — execute the simplest reasonable approach end-to-end and record its metrics with `synapse_submit_experiment_results`, so subsequent experiments have something to beat.
|
|
46
|
-
3. **Evaluation script** — implement the canonical eval harness future experiments will call. Commit alongside data prep.
|
|
47
|
-
|
|
48
|
-
If the project has a repo, commit all three onto the base branch (or a per-experiment branch merged back). Every subsequent experiment branches from that base so it inherits prep + eval automatically.
|
|
49
|
-
|
|
50
|
-
## Typical Flow
|
|
51
|
-
|
|
52
|
-
1. `synapse_checkin()` — refresh identity and assignments
|
|
53
|
-
2. Author or fetch the experiment
|
|
54
|
-
- New plan: `synapse_create_experiment(...)` (defaults to `pending_review`, or `status: "draft"` to keep editing)
|
|
55
|
-
- Existing assignment: `synapse_get_assigned_experiments()` then `synapse_get_experiment({ experimentUuid })`
|
|
56
|
-
3. If drafting or revising: `synapse_update_experiment_status({ status: "draft", liveStatus: "writing" })` + `synapse_update_experiment_plan(...)`, then `synapse_update_experiment_status({ status: "pending_review" })`
|
|
57
|
-
4. Before execution: `synapse_list_compute_nodes({ onlyAvailable: true, researchProjectUuid })`
|
|
58
|
-
5. Reserve compute: optional `synapse_reserve_gpus(...)` or inline via `synapse_start_experiment({ gpuUuids })`
|
|
59
|
-
6. `synapse_start_experiment({ experimentUuid, workingNotes })` — moves to `in_progress`
|
|
60
|
-
7. If remote compute: `synapse_get_node_access_bundle({ experimentUuid, nodeUuid })`, write the returned `privateKeyPemBase64` to a local PEM, `chmod 600`, SSH with the returned host/user/port
|
|
61
|
-
8. If repo-backed: `synapse_get_repo_access` → clone → branch from the experiment's base branch
|
|
62
|
-
9. Run the workload in a persistent remote shell (`tmux`/`screen`) with unbuffered output (`python -u …` or `PYTHONUNBUFFERED=1`) so logs never stall a tool call
|
|
63
|
-
10. Report progress with `synapse_report_experiment_progress` at milestones — `phase` ∈ `setup` | `training` | `evaluation` | `analysis`; `liveStatus` ∈ `checking_resources` | `queuing` | `running`
|
|
64
|
-
11. For long runs (>30 min), schedule periodic progress updates (cron on the remote node, or the main agent polling and calling `synapse_report_experiment_progress` on a timer) so the card never looks dead
|
|
65
|
-
12. Commit code/artifacts to the experiment branch or base branch; capture the commit SHA
|
|
66
|
-
13. Finish with `synapse_submit_experiment_results({ outcome, experimentResults, branch, commitSha })` — `outcome` ∈ `success` | `failure` | `inconclusive`; on failure include the error and partial results
|
|
67
|
-
14. If the flow asks for a dedicated report document: `synapse_save_experiment_report({ experimentUuid, title, content })` — do **not** post a full report as a comment
|
|
68
|
-
15. If revising per reviewer feedback, read the full thread first with `synapse_get_comments({ targetType: "experiment", targetUuid })` before editing the plan
|
|
69
|
-
|
|
70
|
-
## Core Rules
|
|
71
|
-
|
|
72
|
-
- **Never assume a server-local SSH key path exists.** Always fetch the access bundle and write the PEM locally.
|
|
73
|
-
- **One independent run per experiment card.** Do not bundle comparison runs, ablations, or parameter sweeps into a single experiment — create multiple cards.
|
|
74
|
-
- **Match the project description's language.** If the project brief is in Chinese, write the plan, progress, and report in Chinese.
|
|
75
|
-
- **Split plan / execution / report tools.** Use `synapse_update_experiment_plan` for plan edits, `synapse_report_experiment_progress` for live status, `synapse_submit_experiment_results` for completion, and `synapse_save_experiment_report` for the dedicated report. Do not substitute with comments.
|
|
76
|
-
- **Revision stays durable.** When a reviewer sends an experiment back, flip to `draft`, revise, then move it back to `pending_review`; leave a reply via `synapse_add_comment` using `@[name](actorType:uuid)` format to notify the reviewer.
|
|
77
|
-
- **Failures are data.** An experiment that crashes or shows a regression is still a valid submission: set `outcome: "failure"` (or `"inconclusive"`) and write up what happened in `experimentResults` and the report.
|
|
78
|
-
|
|
79
|
-
## Running Multiple Experiments In Parallel
|
|
80
|
-
|
|
81
|
-
When the user wants to execute several `pending_start` experiments at the same time, the main agent should monitor and dispatch rather than run workloads itself. Spawn one Task-tool sub-agent per experiment UUID — the plugin's `SubagentStart` hook auto-creates a Synapse session and injects the full execution workflow. The main agent then polls with `synapse_get_assigned_experiments({ statuses: ["in_progress", "completed"] })` and `synapse_get_experiment` to track progress. See **[sessions](../sessions/SKILL.md)** for the full pattern.
|
|
82
|
-
|
|
83
|
-
## Reference
|
|
84
|
-
|
|
85
|
-
- **[Experiment workflow reference](../synapse/references/03-experiment-workflow.md)**
|
|
86
|
-
- **[Common tools](../synapse/references/00-common-tools.md)**
|
|
87
|
-
- **[Plugin hooks and parallel execution](../synapse/references/05-session-sub-agent.md)**
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: research
|
|
3
|
-
description: Work on Synapse pre-experiment research: project context, research questions, literature search, related works, and deep research reports.
|
|
4
|
-
license: AGPL-3.0
|
|
5
|
-
metadata:
|
|
6
|
-
author: Vincentwei1021
|
|
7
|
-
version: "0.6.1"
|
|
8
|
-
category: research
|
|
9
|
-
mcp_server: synapse
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Research Skill
|
|
13
|
-
|
|
14
|
-
Use this skill for the pre-experiment stage: understanding project context, developing research questions, grounding work in literature, and producing deep research outputs.
|
|
15
|
-
|
|
16
|
-
## Prompt Boundary
|
|
17
|
-
|
|
18
|
-
Stay inside this skill when the work is about:
|
|
19
|
-
- reading project context and framing the problem
|
|
20
|
-
- creating or progressing research questions
|
|
21
|
-
- searching papers and reading them progressively
|
|
22
|
-
- curating `RelatedWork`
|
|
23
|
-
- writing or updating a deep research report
|
|
24
|
-
|
|
25
|
-
Hand off to:
|
|
26
|
-
- **[experiments](../experiments/SKILL.md)** once the work becomes experiment planning or execution
|
|
27
|
-
- **[autonomy](../autonomy/SKILL.md)** to drive the CC-client autonomous loop when you are choosing the next experiment yourself
|
|
28
|
-
|
|
29
|
-
## Empty-Project Onboarding
|
|
30
|
-
|
|
31
|
-
If `synapse_get_research_questions` and `synapse_get_related_works` both return empty for the active project, do not guess a direction. Ask the user:
|
|
32
|
-
|
|
33
|
-
1. **List existing literature** — does the user already have related works elsewhere that should be imported first?
|
|
34
|
-
2. **Search new literature** — run `synapse_search_papers` against an initial topic phrase supplied by the user, and curate results with `synapse_add_related_work`.
|
|
35
|
-
3. **Draft a research question** — create the first `ResearchQuestion` with `synapse_create_research_question` so later experiments have a framing to attach to.
|
|
36
|
-
4. **Generate a deep research report** — once some related works exist, run the progressive-read flow below and save the synthesis with `synapse_save_deep_research_report`.
|
|
37
|
-
|
|
38
|
-
Offer example invocations (with the project UUID filled in) so the user can pick one. Do not skip ahead to experiment planning from this skill.
|
|
39
|
-
|
|
40
|
-
## Typical Flow
|
|
41
|
-
|
|
42
|
-
1. `synapse_checkin()`
|
|
43
|
-
2. `synapse_get_research_project()` or `synapse_get_project_full_context()`
|
|
44
|
-
3. `synapse_get_research_questions()` or create/claim a question
|
|
45
|
-
4. `synapse_search_papers()` and inspect papers with `brief` / `head` / `section` / `full`
|
|
46
|
-
5. `synapse_add_related_work()` for durable project memory
|
|
47
|
-
6. `synapse_save_deep_research_report()` when synthesizing findings (organize thematically, not paper-by-paper; cite specific methods/results; match the project description's language)
|
|
48
|
-
7. `synapse_add_comment()` on the research question or project artifacts when reasoning should be durable
|
|
49
|
-
8. If the task originated from a Synapse-triggered deep research or auto search, finish with `synapse_complete_task({ taskType: "deep_research" | "auto_search" })`
|
|
50
|
-
|
|
51
|
-
## Core Rule
|
|
52
|
-
|
|
53
|
-
Do not drift into experiment execution from this skill. Once you are drafting a runnable experiment plan, switch to **[experiments](../experiments/SKILL.md)**.
|
|
54
|
-
|
|
55
|
-
## Reference
|
|
56
|
-
|
|
57
|
-
- **[Research workflow reference](../synapse/references/02-research-workflow.md)**
|
|
58
|
-
- **[Common tools](../synapse/references/00-common-tools.md)**
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sessions
|
|
3
|
-
description: Understand the Synapse Claude Code plugin hooks, session lifecycle, and multi-agent parallel execution. Covers what each hook does, where plugin state lives, and how to run multiple experiments in parallel via Task sub-agents.
|
|
4
|
-
license: AGPL-3.0
|
|
5
|
-
metadata:
|
|
6
|
-
author: Vincentwei1021
|
|
7
|
-
version: "0.6.1"
|
|
8
|
-
category: research
|
|
9
|
-
mcp_server: synapse
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Sessions Skill
|
|
13
|
-
|
|
14
|
-
Use this skill when the task is about how the Synapse plugin itself behaves inside Claude Code: which hooks fire, what they inject into context, how sub-agent sessions are managed, and how to dispatch multiple experiments in parallel to Task sub-agents.
|
|
15
|
-
|
|
16
|
-
## Prompt Boundary
|
|
17
|
-
|
|
18
|
-
Stay inside this skill when the work is about:
|
|
19
|
-
- understanding why Synapse context appeared in the session (which hook injected it)
|
|
20
|
-
- debugging a sub-agent that is not behaving as expected (session, heartbeat, or teardown issue)
|
|
21
|
-
- deciding how a main agent should dispatch parallel experiment work across sub-agents
|
|
22
|
-
- deciding when to call `synapse_create_session` / `synapse_close_session` directly instead of relying on hooks
|
|
23
|
-
|
|
24
|
-
Hand off to:
|
|
25
|
-
- **[experiments](../experiments/SKILL.md)** for the actual work inside one experiment
|
|
26
|
-
- **[autonomy](../autonomy/SKILL.md)** for the CC-client autonomous loop
|
|
27
|
-
|
|
28
|
-
## Core Rule
|
|
29
|
-
|
|
30
|
-
For sub-agents spawned through the Task tool, sessions are fully automatic. Do not manually call `synapse_create_session` or `synapse_close_session` for a sub-agent unless you are debugging the lifecycle itself. The `SubagentStart` and `SubagentStop` hooks already do it.
|
|
31
|
-
|
|
32
|
-
## Plugin Hooks At A Glance
|
|
33
|
-
|
|
34
|
-
The plugin ships ten hooks wired up in `hooks/hooks.json`. Each reads/writes local state under `.synapse/` in the project and, when needed, calls Synapse MCP tools via the bundled `synapse-api.sh` wrapper.
|
|
35
|
-
|
|
36
|
-
| Hook script | Claude Code event | What it does | State touched | MCP calls |
|
|
37
|
-
|---|---|---|---|---|
|
|
38
|
-
| `on-session-start.sh` | `SessionStart` (`startup` \| `resume` \| `compact`) | Calls `synapse_checkin`, caches owner / roles / project UUID into `state.json`, scans for pre-assigned sub-agent session files, and builds the rich `additionalContext` block that orients the agent on assignments, projects, and workflow. | `state.json`, reads `sessions/*.json` | `synapse_checkin`, optional `synapse_session_heartbeat` |
|
|
39
|
-
| `on-user-prompt.sh` | `UserPromptSubmit` | Fast local-only check on every user turn. Scans `.synapse/sessions/` and injects a brief reminder that sub-agent sessions are auto-managed. No network calls (stays under 100 ms). | reads `sessions/` | none |
|
|
40
|
-
| `on-pre-enter-plan.sh` | `PreToolUse` (`EnterPlanMode`) | Injects planning-mode guidance: prefer the current Experiment pipeline (`draft → pending_review → pending_start → in_progress → completed`), plan one independent run per experiment card, do not plan to create sessions manually. | none | none |
|
|
41
|
-
| `on-pre-exit-plan.sh` | `PreToolUse` (`ExitPlanMode`) | Reminds the agent to verify that the plan is expressed as Experiment records before executing. | none | none |
|
|
42
|
-
| `on-pre-spawn-agent.sh` | `PreToolUse` (`Task`) | Before a sub-agent is spawned, atomically writes `.synapse/pending/{name}` with the agent name and type so the `SubagentStart` hook can claim it. Skips read-only sub-agent types. | writes `pending/{name}` | none |
|
|
43
|
-
| `on-subagent-start.sh` | `SubagentStart` | Atomically claims the pending file via `mv`, then either reuses an active session, reopens a closed one, or creates a new one via `synapse_list_sessions` / `synapse_reopen_session` / `synapse_create_session`. Writes `sessions/{name}.json`, stores the mapping in `state.json`, and injects the session UUID plus the execution workflow directly into the sub-agent's context. | `state.json`, `sessions/{name}.json`, `claimed/{agent_id}` | `synapse_list_sessions`, `synapse_create_session`, `synapse_reopen_session`, `synapse_session_heartbeat` |
|
|
44
|
-
| `on-teammate-idle.sh` | `TeammateIdle` | When a teammate sub-agent idles between turns, sends a heartbeat so its Synapse session does not auto-time-out after 1 hour. Output suppressed — this fires too often to notify the user. | reads `state.json` | `synapse_session_heartbeat` |
|
|
45
|
-
| `on-subagent-stop.sh` | `SubagentStop` | Looks up the session UUID, calls `synapse_close_session`, and cleans up `state.json`, `sessions/{name}.json`, and `claimed/{agent_id}`. | deletes state entries, `sessions/{name}.json`, `claimed/{agent_id}` | `synapse_close_session` |
|
|
46
|
-
| `on-task-completed.sh` | `TaskCompleted` | Scans the completed task description/subject for a `synapse:experiment:<uuid>` marker. If found, injects a reminder to finalize the experiment with `synapse_submit_experiment_results` (or report progress if still running). | reads task metadata only | none |
|
|
47
|
-
| `on-session-end.sh` | `SessionEnd` | Safety-checked cleanup. Removes `.synapse/` only when all sub-agent sessions are closed and `state.json` has no meaningful content left. | deletes `.synapse/` if safe | none |
|
|
48
|
-
|
|
49
|
-
## Local State Layout
|
|
50
|
-
|
|
51
|
-
The plugin keeps per-project state under `.synapse/` in the project working directory:
|
|
52
|
-
|
|
53
|
-
- `state.json` — flock-guarded key/value store. Holds owner info cached from `synapse_checkin`, agent roles, the primary project UUID, and the `session_{…}` / `agent_for_session_{…}` / `name_for_agent_{…}` mappings used by the start/stop hooks.
|
|
54
|
-
- `pending/{name}` — written by `on-pre-spawn-agent.sh`, atomically claimed by `on-subagent-start.sh` via `mv`.
|
|
55
|
-
- `claimed/{agent_id}` — marker file showing which pending entry was claimed.
|
|
56
|
-
- `sessions/{name}.json` — per-sub-agent session metadata: `sessionUuid`, `agentId`, `agentName`, `agentType`, `sessionAction`, `createdAt`. Other hooks (idle, stop, user-prompt) read from here to locate the session.
|
|
57
|
-
|
|
58
|
-
`on-session-end.sh` removes `.synapse/` only when it is safe; otherwise state is preserved across sessions so resumed work reconnects to the same Synapse sessions.
|
|
59
|
-
|
|
60
|
-
## MCP Connection Session vs Synapse Agent Session
|
|
61
|
-
|
|
62
|
-
These are two different things — do not confuse them.
|
|
63
|
-
|
|
64
|
-
- **MCP connection session** — the HTTP-streamable session on `/api/mcp`. Identified by the `mcp-session-id` header, auto-renewed on every request, expires after 30 minutes of inactivity. The plugin handles this transparently.
|
|
65
|
-
- **Synapse agent session** — a durable record in Synapse of which agent is working on what (the green / yellow / grey indicators on the Settings page). Created/closed by the plugin hooks above, or explicitly by `synapse_create_session` / `synapse_close_session`.
|
|
66
|
-
|
|
67
|
-
## Session Status Lifecycle
|
|
68
|
-
|
|
69
|
-
```
|
|
70
|
-
active ——(no heartbeat 1h)——> inactive ——(heartbeat)——> active
|
|
71
|
-
\ \
|
|
72
|
-
\—— close ——> closed ——(reopen)——> active
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
| Status | Meaning |
|
|
76
|
-
|---|---|
|
|
77
|
-
| `active` | Agent is working. Green indicator. |
|
|
78
|
-
| `inactive` | No heartbeat in over an hour. Yellow indicator. |
|
|
79
|
-
| `closed` | Session ended. Grey indicator. Can be reopened. |
|
|
80
|
-
|
|
81
|
-
## Session Tools
|
|
82
|
-
|
|
83
|
-
| Tool | Purpose |
|
|
84
|
-
|---|---|
|
|
85
|
-
| `synapse_list_sessions` | List sessions for the current agent. |
|
|
86
|
-
| `synapse_get_session` | Read one session's details. |
|
|
87
|
-
| `synapse_create_session` | Create a named session — usually only needed for direct (non-sub-agent) work. |
|
|
88
|
-
| `synapse_close_session` | Close a session. |
|
|
89
|
-
| `synapse_reopen_session` | Reopen a closed session instead of creating a duplicate with the same name. |
|
|
90
|
-
| `synapse_session_heartbeat` | Keep a session active. Hooks already send heartbeats automatically. |
|
|
91
|
-
|
|
92
|
-
## Running Multiple Experiments In Parallel
|
|
93
|
-
|
|
94
|
-
When the main agent needs to execute several `pending_start` experiments concurrently, it should **orchestrate, not execute**. The plugin does the heavy lifting for session bookkeeping; the main agent only needs to spawn sub-agents and monitor.
|
|
95
|
-
|
|
96
|
-
### Main agent: dispatch
|
|
97
|
-
|
|
98
|
-
```text
|
|
99
|
-
# 1. Refresh and list what needs to run
|
|
100
|
-
synapse_checkin()
|
|
101
|
-
synapse_get_assigned_experiments({ researchProjectUuid, statuses: ["pending_start"] })
|
|
102
|
-
|
|
103
|
-
# 2. Inspect each candidate
|
|
104
|
-
synapse_get_experiment({ experimentUuid })
|
|
105
|
-
|
|
106
|
-
# 3. For each experiment, spawn a Task sub-agent with the experiment UUID in the prompt.
|
|
107
|
-
# The SubagentStart hook auto-creates/reuses a Synapse session and injects the
|
|
108
|
-
# execution workflow. The main agent does not need to call synapse_create_session.
|
|
109
|
-
Task({
|
|
110
|
-
subagent_type: "general-purpose",
|
|
111
|
-
name: "training-worker-<short>",
|
|
112
|
-
prompt: "Your Synapse experiment UUID: <experiment-uuid>. Run the experiment end to end."
|
|
113
|
-
})
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### Sub-agent: execute
|
|
117
|
-
|
|
118
|
-
Each sub-agent follows the full execution checklist in **[experiments](../experiments/SKILL.md)**: `synapse_start_experiment` → `synapse_list_compute_nodes` / `synapse_reserve_gpus` → `synapse_get_node_access_bundle` → run remotely (tmux + unbuffered) → `synapse_report_experiment_progress` at milestones → `synapse_submit_experiment_results` → optional `synapse_save_experiment_report`.
|
|
119
|
-
|
|
120
|
-
### Main agent: monitor
|
|
121
|
-
|
|
122
|
-
The main agent polls for completion rather than blocking on any one sub-agent:
|
|
123
|
-
|
|
124
|
-
```text
|
|
125
|
-
synapse_get_assigned_experiments({
|
|
126
|
-
researchProjectUuid,
|
|
127
|
-
statuses: ["in_progress", "completed"]
|
|
128
|
-
})
|
|
129
|
-
|
|
130
|
-
# For any experiment still in_progress, read its latest state
|
|
131
|
-
synapse_get_experiment({ experimentUuid })
|
|
132
|
-
|
|
133
|
-
# Once all have completed, synthesize / propose follow-ups
|
|
134
|
-
synapse_propose_experiment({ researchProjectUuid, title, description })
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
### Sequential multi-experiment sub-agent
|
|
138
|
-
|
|
139
|
-
A single sub-agent can also handle multiple experiments in order when dependencies matter:
|
|
140
|
-
|
|
141
|
-
```text
|
|
142
|
-
Task({
|
|
143
|
-
subagent_type: "general-purpose",
|
|
144
|
-
name: "sequential-worker",
|
|
145
|
-
prompt: """
|
|
146
|
-
Synapse experiments, in order (each depends on the previous):
|
|
147
|
-
1. <experiment-uuid-1> — baseline evaluation
|
|
148
|
-
2. <experiment-uuid-2> — ablation built on #1's results
|
|
149
|
-
|
|
150
|
-
For each: start_experiment → run → report_progress → submit_results.
|
|
151
|
-
"""
|
|
152
|
-
})
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
## Project-Level MCP For Sub-Agents
|
|
156
|
-
|
|
157
|
-
Sub-agents only inherit Synapse MCP access if the MCP server is configured at the project level. Put the config in `.mcp.json` at the project root (the plugin bundle ships the template at `public/synapse-plugin/.mcp.json`). User-level-only MCP configs will not reach sub-agents.
|
|
158
|
-
|
|
159
|
-
## Troubleshooting
|
|
160
|
-
|
|
161
|
-
| Symptom | Likely cause / fix |
|
|
162
|
-
|---|---|
|
|
163
|
-
| Sub-agent cannot see Synapse tools | MCP is user-level only. Move `.mcp.json` to the project root. |
|
|
164
|
-
| Sub-agent session shown as `inactive` | Heartbeat has not fired for 1 h. Usually the sub-agent crashed; respawn with the same name — `SubagentStart` will reopen the existing session instead of making a duplicate. |
|
|
165
|
-
| Duplicate sessions appear with similar names | A previous sub-agent stopped without the `SubagentStop` hook firing (hard crash). Close stale sessions with `synapse_close_session`, then respawn. |
|
|
166
|
-
| Main agent did not receive checkin context | `SessionStart` hook failed (check `SYNAPSE_URL`, `SYNAPSE_API_KEY`). Call `synapse_checkin()` manually to recover. |
|
|
167
|
-
| Experiment stuck in `in_progress` | The sub-agent died before `synapse_submit_experiment_results`. Either resume by respawning the sub-agent with the same experiment UUID, or the main agent calls `synapse_report_experiment_progress` and then `synapse_submit_experiment_results({ outcome: "failure", experimentResults: { error: "..." } })` to close it out. |
|
|
168
|
-
|
|
169
|
-
## Reference
|
|
170
|
-
|
|
171
|
-
- **[Session and sub-agent reference](../synapse/references/05-session-sub-agent.md)**
|
|
172
|
-
- **[Experiments skill](../experiments/SKILL.md)**
|
|
173
|
-
- **[Autonomy skill](../autonomy/SKILL.md)**
|
|
174
|
-
- **[Common tools](../synapse/references/00-common-tools.md)**
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: setup
|
|
3
|
-
description: Configure Synapse MCP access for Claude Code with project-level .mcp.json and verify the connection.
|
|
4
|
-
license: AGPL-3.0
|
|
5
|
-
metadata:
|
|
6
|
-
author: Vincentwei1021
|
|
7
|
-
version: "0.6.1"
|
|
8
|
-
category: research
|
|
9
|
-
mcp_server: synapse
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Setup Skill
|
|
13
|
-
|
|
14
|
-
Use this skill when the task is about getting Synapse connected inside Claude Code: API keys, MCP configuration, project-level `.mcp.json`, or connection debugging.
|
|
15
|
-
|
|
16
|
-
## Scope
|
|
17
|
-
|
|
18
|
-
This skill covers:
|
|
19
|
-
- creating or locating a Synapse API key
|
|
20
|
-
- configuring MCP with `SYNAPSE_URL` and `SYNAPSE_API_KEY`
|
|
21
|
-
- preferring project-level `.mcp.json` so sub-agents inherit access
|
|
22
|
-
- verifying access with `synapse_checkin()`
|
|
23
|
-
|
|
24
|
-
This skill does not cover day-to-day research or experiment execution. Hand off to:
|
|
25
|
-
- **[research](../research/SKILL.md)** for literature and research-question work
|
|
26
|
-
- **[experiments](../experiments/SKILL.md)** for experiment planning and execution
|
|
27
|
-
- **[sessions](../sessions/SKILL.md)** for plugin hook behavior and multi-agent parallel execution
|
|
28
|
-
- **[autonomy](../autonomy/SKILL.md)** to drive the CC-client autonomous research loop
|
|
29
|
-
|
|
30
|
-
## Recommended Flow
|
|
31
|
-
|
|
32
|
-
1. Get an API key from the Synapse **Agents** page.
|
|
33
|
-
2. Put Synapse MCP config at project level in `.mcp.json`.
|
|
34
|
-
3. Restart Claude Code if needed.
|
|
35
|
-
4. Call `synapse_checkin()` and confirm expected roles/tools are visible.
|
|
36
|
-
|
|
37
|
-
## Project-Level MCP Template
|
|
38
|
-
|
|
39
|
-
The plugin ships a project-level template at `public/synapse-plugin/.mcp.json`. The expected content is:
|
|
40
|
-
|
|
41
|
-
```json
|
|
42
|
-
{
|
|
43
|
-
"mcpServers": {
|
|
44
|
-
"synapse": {
|
|
45
|
-
"type": "http",
|
|
46
|
-
"url": "${SYNAPSE_URL}/api/mcp",
|
|
47
|
-
"headers": {
|
|
48
|
-
"Authorization": "Bearer ${SYNAPSE_API_KEY}"
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## Verification
|
|
56
|
-
|
|
57
|
-
Use:
|
|
58
|
-
|
|
59
|
-
```text
|
|
60
|
-
synapse_checkin()
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
If the connection is wrong, check:
|
|
64
|
-
- the key starts with `syn_`
|
|
65
|
-
- `SYNAPSE_URL` is reachable
|
|
66
|
-
- Claude Code has reloaded the MCP config
|
|
67
|
-
- the agent has the roles needed for the tools you expect to use
|
|
68
|
-
|
|
69
|
-
## Reference
|
|
70
|
-
|
|
71
|
-
- **[Synapse overview](../synapse/SKILL.md)**
|
|
72
|
-
- **[Setup reference](../synapse/references/01-setup.md)**
|
|
73
|
-
- **[Common tools](../synapse/references/00-common-tools.md)**
|