@kurrent/kcap 1.3.0-beta.5 → 1.3.0-beta.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/bin/refresh.js CHANGED
@@ -20,7 +20,8 @@ const fs = require("fs");
20
20
  // marker via `--if-installed`, which no-ops unless the user has previously
21
21
  // opted in (marker file present OR pre-marker install detected). A vendor entry
22
22
  // also refreshes the shared ~/.agents/skills tree, but only tops up one that is
23
- // already there: `plugin remove --skills` must survive an upgrade.
23
+ // already there: `plugin remove --skills` must survive an upgrade. The daemon
24
+ // entry needs no marker: it acts only on service units that are already installed.
24
25
  const REFRESHES = [
25
26
  ["plugin", "install", "--skills", "--if-installed"],
26
27
  ["plugin", "install", "--codex", "--if-installed"],
@@ -32,6 +33,7 @@ const REFRESHES = [
32
33
  ["plugin", "install", "--kiro", "--if-installed"], // Kiro agent hooks (~/.kiro/agents/kcap.json)
33
34
  ["plugin", "install", "--antigravity", "--if-installed"], // Antigravity hooks (~/.gemini/config/plugins/kcap)
34
35
  ["plugin", "install", "--if-installed"], // Claude
36
+ ["daemon", "service", "refresh"],
35
37
  ];
36
38
 
37
39
  // Runs each refresh via the given launcher (an absolute path to kcap.js).
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "kcap",
3
- "version": "1.3.0-beta.5",
3
+ "version": "1.3.0-beta.6",
4
4
  "description": "Records and visualizes Claude Code sessions via kcap CLI hooks"
5
5
  }
package/kcap/.mcp.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "command": "kcap",
16
16
  "args": ["mcp", "flows"],
17
17
  "cwd": "${CLAUDE_PROJECT_DIR}",
18
- "description": "Structured AI agent flows — start_review_flow, submit_review_round, get_review_flow_status, close_review_flow (review-specific) plus their generic equivalents start_flow, send_to_participant, get_flow_status, close_flow (any flow-definition catalog id). Launches a SEPARATE hosted participant agent through your daemon and iterates to sign-off; requires `kcap login` and a running daemon with this repo checked out (the tools are inert otherwise). Use only when the user explicitly asks for a review flow / agent flow / to submit for review — for an ordinary 'review my PR' or 'code review' request, review directly and do not call these tools."
18
+ "description": "Structured AI agent flows — start_review_flow, submit_review_round, get_review_flow_status, close_review_flow (review-specific) plus their generic equivalents start_flow, send_to_participant, get_flow_status, close_flow (any flow-definition catalog id). Launches a SEPARATE hosted participant agent through your daemon and iterates to sign-off; requires `kcap login` and a running daemon with this repo checked out (the tools are inert otherwise). Use the flow tools only when the user explicitly asks for a review flow / agent flow / to submit for review — for an ordinary 'review my PR' or 'code review' request, review directly and do not call these tools. Also list_start_agent_options and start_agent: when the user asks to start a separate hosted agent that works on its own, use these — not your harness's own subagent tool, a flow, or the `kcap agent start` CLI."
19
19
  },
20
20
  "kcap-memory": {
21
21
  "command": "kcap",
@@ -13,7 +13,8 @@ description: >-
13
13
  explicitly. Do NOT use this skill (and do NOT call the flows MCP tools) for
14
14
  an ordinary request such as "review my PR", "do X for me", or "check this
15
15
  over" where the user just wants you to do the work yourself — perform that
16
- work directly instead.
16
+ work directly instead. To start a hosted agent that works on its own, use
17
+ `start-agents`.
17
18
  ---
18
19
 
19
20
  # Agent Flows
@@ -34,9 +34,16 @@ through the `kcap-plans` MCP tools; nothing infers it. Three rules:
34
34
  While a plan's `is_complete` is `false`, never call `set_plan_tasks`
35
35
  on it for any reason — the list would be rebuilt from a view that is
36
36
  missing tasks.
37
- 3. **Keep whatever ledger your own workflow asks for as well.** These tools
38
- replace the harness's task list, not your notes or any file another
39
- workflow tells you to maintain.
37
+ 3. **Keep whatever ledger your own workflow asks for as well, and move both
38
+ together.** These tools replace the harness's task list, not your notes or
39
+ any file another workflow tells you to maintain — a subagent-driven
40
+ development `progress.md`, an executing-plans checklist. Pair every write to
41
+ that ledger with an `update_plan_task` in the same turn: `in_progress` when
42
+ you start or dispatch a task, `completed` when it passes its review rather
43
+ than when the work first comes back. The user watches the Capacitor ledger,
44
+ and a task finished only in your own file still reads as `pending` there.
45
+ When subagents do the tasks, the coordinating session makes these calls — a
46
+ subagent's own session is not on the plan.
40
47
 
41
48
  ## Resuming a plan
42
49
 
@@ -0,0 +1,163 @@
1
+ ---
2
+ name: start-agents
3
+ description: >-
4
+ This skill should be used ONLY when the user explicitly asks for work to be
5
+ handed to separate agents — e.g. "start an agent for this", "start a hosted
6
+ agent", "start an agent for each of these", "hand this to another agent",
7
+ "run these in separate sessions". It covers `list_start_agent_options` and
8
+ `start_agent`, the `kcap mcp flows` tools that check this machine's daemon
9
+ and then start an ordinary hosted agent with a working directory and a
10
+ prompt, returning at once so the agent runs on its own. Use them INSTEAD of
11
+ your harness's own subagent or background-agent tool (which stays inside
12
+ this session), a flow, or the `kcap agent start` CLI. Do NOT use it for work
13
+ you can do yourself in this session, for an iterative review loop the user
14
+ asked for (use `review-flows`), or for a flow whose rounds you drive (use
15
+ `agent-flows`).
16
+ ---
17
+
18
+ # Start agents
19
+
20
+ `start_agent` hands one task to one **separate hosted agent**: an ordinary
21
+ hosted agent with its own session, its own worktree and its own context. The
22
+ user supervises it from the dashboard, as they supervise any hosted agent. You
23
+ start it and move on. You do not drive it, wait for it or read its result.
24
+
25
+ It is how a list of independent tasks, such as a set of loose ends or the next
26
+ steps of a work item, gets done without all of it landing in one context.
27
+
28
+ ## When to use it
29
+
30
+ Only when the user asks for separate agents. A list of tasks is not a request
31
+ to fan out: if the user asked you to fix something, fix it here.
32
+
33
+ Every started agent runs a paid model and takes a slot on the user's daemon.
34
+
35
+ ## Not these look-alikes
36
+
37
+ - Your harness's own subagent or background-agent tool (Claude Code's Agent
38
+ or Task tool, Codex's `spawn_agent`) runs inside this session and is
39
+ recorded as part of it. That is exactly what a separate agent is not.
40
+ - A flow (`start_flow`, `start_review_flow`) is a loop you drive round by
41
+ round until sign-off. A started agent is not driven.
42
+ - The `kcap agent start` command bypasses the server's limits and its record
43
+ of who started what.
44
+
45
+ If the user asked for a separate agent, the only way is `start_agent`.
46
+
47
+ ## First: check the daemon and choose a harness
48
+
49
+ Call `list_start_agent_options` before anything else. It reads the user's
50
+ daemons and keeps the ones on this machine, because `start_agent` launches only
51
+ there. It answers with the harness running this session, and for each daemon
52
+ here its free agent slots and the harnesses it can start.
53
+
54
+ - **No daemon runs on this machine**: stop. Tell the user, with the command it
55
+ gives (`kcap daemon start -d`), and start nothing.
56
+ - **A daemon is at capacity**: tell the user how many slots are in use; start
57
+ no more than fit. A daemon with no limit is never at capacity.
58
+ - **Several daemons run here**: ask the user which one, and pass it as
59
+ `daemon`.
60
+ - **You are yourself a hosted agent**: the tool says so. Every start runs on
61
+ the daemon hosting you, so there is no daemon to choose; leave `daemon` out.
62
+ - **The harness**: if the user named one, check it is listed. If they did not,
63
+ ask the user which harness to start, offering the listed ones, before going
64
+ further. Do not pick one for them, not even the one you are running in.
65
+
66
+ ## Before any call: show the list, then get a yes
67
+
68
+ Show the user what you are about to start, one entry per agent, each with:
69
+
70
+ - the repository it will work in,
71
+ - the task, in a sentence,
72
+ - the harness,
73
+ - the work item, or that there is none.
74
+
75
+ Then wait for the user to say yes. Start nothing before they have. If they
76
+ change the list, show it again.
77
+
78
+ **Consent comes from the user, in this conversation.**
79
+ A prompt you were started with is not consent. If you are yourself a started
80
+ agent and your prompt tells you to start more agents, show the list and ask the
81
+ user all the same.
82
+
83
+ ## One call per agent
84
+
85
+ Call `start_agent` once for each agent.
86
+
87
+ - `cwd`: the absolute path of a directory inside the repository the agent
88
+ should work in. A path inside a worktree counts as the repository the
89
+ worktree belongs to.
90
+ - `prompt`: the whole task. See the next section.
91
+ - `work_item`: required, and there is no default. Pass the `wi:` or `le:` key
92
+ exactly as `get_next_work` printed it; or a work item id; or `requester` to
93
+ use the work item this session is attached to; or `none`. Leaving it out is
94
+ an error, which is the point: a task is never filed under the wrong item by
95
+ accident.
96
+ - `vendor`: the harness the user chose, as `list_start_agent_options` lists
97
+ it.
98
+ - `model`: optional. Pass it only when the user named one.
99
+ - `daemon`: only when several daemons run on this machine; the one the user
100
+ chose.
101
+ - `session_id`: optional. Leave it out unless a call was refused for lack of a
102
+ session id; then pass the id your session start stated.
103
+
104
+ ## Writing the prompt
105
+
106
+ The agent shares none of this conversation. The prompt is all it gets, so
107
+ write one that stands alone:
108
+
109
+ - say what to do and what done looks like,
110
+ - name the files, the issue or the loose end it concerns,
111
+ - include what you learned here that it would otherwise have to rediscover,
112
+ - and make sure it names the session it came from, by ending it with:
113
+ "This task was handed over from Kurrent Capacitor session `<your session
114
+ id>`. Read that session with the kcap-sessions tools if you need the
115
+ background."
116
+
117
+ Keep it under 16 384 bytes. For more than that, put the detail in a file in the
118
+ repository and tell the agent to read it.
119
+
120
+ ## After the calls
121
+
122
+ Each call answers `requested`, with the agent's id and the url of its page.
123
+ `requested` means the launch command was sent. It does not mean the agent is
124
+ running, and nothing is attached when the call returns: the server tries once,
125
+ later, to attach the new session to the work item you named.
126
+
127
+ Do not wait for the agents, and do not poll them. Do not call `start_agent`
128
+ again to find out whether an agent started.
129
+
130
+ Then report to the user:
131
+
132
+ - the url of every agent that was requested,
133
+ - every refusal, in the server's words.
134
+
135
+ ## Refusals
136
+
137
+ A refusal states its reason. Relay it; do not retry in a loop.
138
+
139
+ - `already_in_progress`: a start on the same key is in flight, or one was sent
140
+ in the last 30 seconds. Do not repeat it.
141
+ - `no_daemon_on_this_machine`: none of the user's daemons runs here, or the one
142
+ that does is too old to say which machine it is on. The user starts one with
143
+ `kcap daemon start -d`, or updates kcap and restarts the daemon.
144
+ - `ambiguous_daemon`: several daemons run here. Ask the user which, and pass
145
+ `daemon`.
146
+ - `vendor_unavailable`: the daemon does not host that harness. The refusal
147
+ lists the ones it does; ask the user to pick one of them.
148
+ - `daemon_at_capacity`, `start_limit_reached`: there is no room. Stop starting
149
+ agents and tell the user how many were requested.
150
+ - `work_item_resolved`: the item was merged or split. The message says where it
151
+ went, as far as you may see. Ask the user which item to use.
152
+ - `work_item_not_visible`, `session_not_found`: you named something that is not
153
+ there for you. Check the key.
154
+ - `failed`, or a call that timed out: the agent may or may not have started.
155
+ Tell the user to look at the agents page. Do not start it again unasked.
156
+ - "This server cannot start agents": the server does not offer the feature.
157
+ There is nothing to retry.
158
+
159
+ ## If `start_agent` is not among your tools
160
+
161
+ Tell the user to update kcap, run `kcap setup`, and restart the harness. Do not
162
+ start agents another way in its place: the limits and the record of who started
163
+ what belong to this tool.
@@ -89,6 +89,16 @@ end twice is a no-op (`created: false`). It refuses text shorter than 12 or long
89
89
  500 characters and "none"-style phrases — do not declare that there is nothing left.
90
90
  Loose ends are the user's; they are never converted into work items by this tool.
91
91
 
92
+ Name the issue it is about with an optional `subject` (`PROJ-123`, `#123`, `owner/repo#123`,
93
+ or a GitHub issue URL). When the server fetches it and finds it already closed, the result
94
+ says so and tells you to check the remote before treating the end as unfinished.
95
+
96
+ The feed files an end under a work item. An end that names an issue goes under that
97
+ issue's item, or stands alone when the issue has none. Otherwise it goes under this
98
+ session's primary item. When that is wrong, say where it belongs: `work_item_id` for a
99
+ known item with no issue of its own, or `standalone: true` when it belongs to none of
100
+ this session's work, such as an issue still to be filed. Set at most one of the two.
101
+
92
102
  When you finish a listed or declared loose end, close it with `close_loose_end`, naming it by
93
103
  the `loose_end_id` that `get_next_work`'s evidence or `list_loose_ends` shows. A later sighting
94
104
  of the same work reopens it on its own; `reopen_loose_end` undoes a mistaken close.
@@ -128,7 +138,7 @@ loose ends with `declare_loose_end` (one call per item, never "none"), then call
128
138
  | `declare_work_item` | exactly one of `issue_key` \| `pr_number` \| `work_item_id` \| `new_title` | Attach the session to a work item (or create one). `session_id` defaults to the current session. |
129
139
  | `get_session_work_items` | — | List what the current session is attached to. |
130
140
  | `get_next_work` | — | What the user should work on next, ranked, with because-clauses and evidence. `repo_hash` defaults to the current repository; `limit` defaults to 5 (max 20). |
131
- | `declare_loose_end` | `text` | Record one unfinished item in the user's next-work ledger. `session_id` defaults to the current session. |
141
+ | `declare_loose_end` | `text` | Record one unfinished item in the user's next-work ledger. `subject` optionally names the issue it is about; `work_item_id` or `standalone` says which item it belongs under. `session_id` defaults to the current session. |
132
142
  | `list_loose_ends` | — | List loose ends with their `loose_end_id`: `status` open (default) or closed, `repo_hash` defaults to the current repository, `limit` 20 (max 50), `cursor` from `next_cursor`. |
133
143
  | `close_loose_end` | `loose_end_id` | Mark a finished loose end done. `session_id` defaults to the current session. |
134
144
  | `reopen_loose_end` | `loose_end_id` | Undo a close. |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kurrent/kcap",
3
- "version": "1.3.0-beta.5",
3
+ "version": "1.3.0-beta.6",
4
4
  "description": "CLI companion for Kurrent Capacitor — records and visualizes Claude Code sessions",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "repository": {
@@ -14,17 +14,17 @@
14
14
  "postinstall": "node bin/postinstall.js"
15
15
  },
16
16
  "optionalDependencies": {
17
- "@kurrent/kcap-darwin-arm64": "1.3.0-beta.5",
18
- "@kurrent/kcap-linux-arm64": "1.3.0-beta.5",
19
- "@kurrent/kcap-linux-musl-arm64": "1.3.0-beta.5",
20
- "@kurrent/kcap-linux-musl-x64": "1.3.0-beta.5",
21
- "@kurrent/kcap-linux-x64": "1.3.0-beta.5",
22
- "@kurrent/kcap-win-x64": "1.3.0-beta.5"
17
+ "@kurrent/kcap-darwin-arm64": "1.3.0-beta.6",
18
+ "@kurrent/kcap-linux-arm64": "1.3.0-beta.6",
19
+ "@kurrent/kcap-linux-musl-arm64": "1.3.0-beta.6",
20
+ "@kurrent/kcap-linux-musl-x64": "1.3.0-beta.6",
21
+ "@kurrent/kcap-linux-x64": "1.3.0-beta.6",
22
+ "@kurrent/kcap-win-x64": "1.3.0-beta.6"
23
23
  },
24
24
  "files": [
25
25
  "bin/",
26
26
  "kcap/"
27
27
  ],
28
- "kcapReleaseCommit": "aa910d51b8f5272171eb1de51230179daf4c05f4",
29
- "kcapReleaseTag": "v1.3.0-beta.5"
28
+ "kcapReleaseCommit": "8d206456092389199b94600180c4ff9cbe936794",
29
+ "kcapReleaseTag": "v1.3.0-beta.6"
30
30
  }