@ssheleg/agent-sync 1.8.3 → 1.10.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/CHANGELOG.md CHANGED
@@ -1,3 +1,40 @@
1
+ ## v1.10.0
2
+
3
+ Following `task-pipeline` v1.53.0, which renamed the artifact root's default from
4
+ `docs/superpowers/` to `docs/evidence/` and made the root resolvable (`paths.artifacts`
5
+ in `pipeline.json`, else an existing `docs/evidence/`, else an existing
6
+ `docs/superpowers/` — **the legacy name stays supported and no run warns about it**).
7
+
8
+ Shipped surfaces name the new default now, which is why this is a minor rather than a
9
+ patch. This project's own records moved with the directory and were not rewritten: a
10
+ brief describes where things were when it was written.
11
+
12
+ ## v1.9.0
13
+
14
+ ### Changed
15
+
16
+ - **The installer now offers the family's routing block** (closing B-06 in the
17
+ umbrella). Until now only `super-ux` delegated: install this skill on its own
18
+ and no router was written at all, so an agent had the skill and no rule saying
19
+ when to reach for it. The bundle installer wrote all eight, which is why
20
+ nothing looked broken — the gap only opened for someone installing one member.
21
+
22
+ Delegated to `npx sshlg-skills routers --member agent-sync` rather than
23
+ reimplemented, for three reasons:
24
+
25
+ - The block describes what the machine actually has. A lone member rendering
26
+ the whole thing would print a table for routers nobody installed.
27
+ - `--member` scopes the write to this skill's own section. Verified by damaging
28
+ two sections of a real block and running this installer: its own was
29
+ repaired, the other left exactly as it was.
30
+ - The launcher is the only writer that copies the operator's global instruction
31
+ file before touching it. That file has no version control behind it.
32
+
33
+ `--no-install` keeps it from silently downloading a package nobody asked for.
34
+ When the launcher is absent the command is printed instead of failing: ending
35
+ an install in an error over an optional follow-up reads as a failed install.
36
+ Both paths were exercised.
37
+
1
38
  ## v1.8.3
2
39
 
3
40
  ### Changed
@@ -19,7 +19,7 @@
19
19
  "docs/OPEN_QUESTIONS.md",
20
20
  "docs/ROADMAP.md",
21
21
  "docs/DOCMAP.md",
22
- "docs/superpowers/retro.md"
22
+ "docs/evidence/retro.md"
23
23
  ],
24
24
  "claimTags": {
25
25
  "docs/ROADMAP.md": {
package/bin/agent-sync.js CHANGED
@@ -95,6 +95,9 @@ function install(argv) {
95
95
  ? C.green('\n✓ installed')
96
96
  : C.red('\n✗ at least one channel failed — see the output above')
97
97
  );
98
+ // Before the "Next:" block, so the last thing on screen stays the instruction
99
+ // rather than the tail of a delegated command.
100
+ offerRouters();
98
101
  console.log(`
99
102
  ${C.bold('Next:')} restart Claude Code, then run ${C.bold('/agent-sync init')} in your project.
100
103
  It will ask where coordination state should live before writing anything.
@@ -102,6 +105,37 @@ It will ask where coordination state should live before writing anything.
102
105
  return ok ? 0 : 1;
103
106
  }
104
107
 
108
+ /**
109
+ * Ask the family launcher to write the routing block, for this member only.
110
+ *
111
+ * Delegated rather than reimplemented, for three reasons. The block describes
112
+ * what the machine actually has, so a lone member rendering the whole thing
113
+ * would produce a table for routers nobody installed. `--member` limits the
114
+ * write to the `agent-sync` section and leaves everyone else's alone, which is
115
+ * what lets the bundle and a single installer both write. And the launcher is
116
+ * the only writer that copies the operator's global instruction file before
117
+ * touching it — that file has no version control behind it.
118
+ *
119
+ * `--no-install` keeps this from silently downloading a package nobody asked
120
+ * for. When the launcher is absent, print the command rather than fail: ending
121
+ * an install in an error because an OPTIONAL follow-up is missing reads as a
122
+ * failed install.
123
+ */
124
+ function offerRouters() {
125
+ const r = spawnSync(
126
+ 'npx',
127
+ ['--no-install', 'sshlg-skills', 'routers', '--member', NAME],
128
+ { stdio: 'inherit', shell: process.platform === 'win32' }
129
+ );
130
+ if (r.status !== 0) {
131
+ console.log(
132
+ `\nTo have this skill apply by default in every project, add the ` +
133
+ `family's\nrouting block to your agent's global instructions:\n\n` +
134
+ ` npx --yes sshlg-skills routers --member ${NAME}\n`
135
+ );
136
+ }
137
+ }
138
+
105
139
  /**
106
140
  * The shadow regrows on its own: `npx skills add|update --global` auto-detects
107
141
  * Claude Code and recreates ~/.claude/skills/<name> — often as a symlink — even when
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ssheleg/agent-sync",
3
- "version": "1.8.3",
4
- "description": "Let concurrent coding agents share one project without colliding \u2014 leases with TTL, race-free id reservation, a run journal and a generated board, over a pluggable knowledge cloud.",
3
+ "version": "1.10.0",
4
+ "description": "Let concurrent coding agents share one project without colliding leases with TTL, race-free id reservation, a run journal and a generated board, over a pluggable knowledge cloud.",
5
5
  "bin": {
6
6
  "agent-sync": "bin/agent-sync.js"
7
7
  },
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "agent-sync",
3
3
  "displayName": "Agent Sync",
4
- "version": "1.8.3",
5
- "description": "Coordination layer for multi-agent repositories \u2014 leases with TTL, race-free ID reservation, a run journal, a cross-repo signal feed and a generated board, over a pluggable knowledge cloud.",
4
+ "version": "1.10.0",
5
+ "description": "Coordination layer for multi-agent repositories leases with TTL, race-free ID reservation, a run journal, a cross-repo signal feed and a generated board, over a pluggable knowledge cloud.",
6
6
  "author": {
7
7
  "name": "ssheleg",
8
8
  "url": "https://x.com/sshlg93"
@@ -4,7 +4,7 @@ description: "Use when several coding agents work one repository at the same tim
4
4
  compatibility: "Requires the task-pipeline skill for its stages (npx sshlg-skills install). Needs python3 3.9+ (stdlib only, HTTP included - nothing to pip install) and bash for the hooks. The knowledge backend is configured per project; with none configured it degrades to git-file leases. Enforcement hooks are Claude Code only - on other agents the same checks run as a self-check."
5
5
  license: MIT
6
6
  metadata:
7
- version: "1.8.3"
7
+ version: "1.10.0"
8
8
  author: ssheleg
9
9
  ---
10
10
 
@@ -108,7 +108,7 @@ since the pipeline's documentation track it is longer than the registers:
108
108
  | the decision register (`docs/DECISIONS.md` or `docs/adr/`) | append-only; a concurrent write loses an entry |
109
109
  | `docs/OPEN_QUESTIONS.md`, `docs/ROADMAP.md` | the same |
110
110
  | **`docs/DOCMAP.md`** | seeded into every project the pipeline touches; holds the registers, the propagation matrix and the ratchet floors. Losing it loses the map |
111
- | **`docs/superpowers/retro.md`** | capped at ten standing instructions, so a concurrent write silently **drops a lesson** instead of conflicting visibly |
111
+ | **`docs/evidence/retro.md`** | capped at ten standing instructions, so a concurrent write silently **drops a lesson** instead of conflicting visibly |
112
112
 
113
113
  The schema keeps `agent-sync.json` to known keys, which is why this reasoning lives
114
114
  here and not as a comment in the config.
@@ -33,7 +33,7 @@ from datetime import datetime, timezone
33
33
  from pathlib import Path
34
34
  from typing import Any
35
35
 
36
- VERSION = "1.8.3"
36
+ VERSION = "1.10.0"
37
37
 
38
38
  CONFIG_PATH = Path(".claude/agent-sync.json")
39
39
  ENV_FILE = Path(".env.agent-sync")