@openagt/skill-branches 0.0.1 → 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/SKILL.md +6 -6
- package/dist/checkout.d.ts +6 -0
- package/dist/checkout.d.ts.map +1 -1
- package/dist/checkout.js +11 -2
- package/dist/checkout.js.map +1 -1
- package/dist/cleanup.d.ts +41 -0
- package/dist/cleanup.d.ts.map +1 -0
- package/dist/cleanup.js +79 -0
- package/dist/cleanup.js.map +1 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +8 -0
- package/dist/cli.js.map +1 -1
- package/dist/command-link.d.ts +37 -13
- package/dist/command-link.d.ts.map +1 -1
- package/dist/command-link.js +48 -26
- package/dist/command-link.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/skill-links.d.ts +7 -1
- package/dist/skill-links.d.ts.map +1 -1
- package/dist/skill-links.js +12 -3
- package/dist/skill-links.js.map +1 -1
- package/package.json +6 -5
package/SKILL.md
CHANGED
|
@@ -9,12 +9,12 @@ Your work goes on a branch named `agent-<name>`, unless whoever started you cont
|
|
|
9
9
|
|
|
10
10
|
## The command
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
Run the `branches` command inside your checkout, always by its full name: `npx @openagt/skill-branches@0.1`. `status`, `name` and `push` (with no flag) are yours; the rest are the caller's.
|
|
13
13
|
|
|
14
14
|
## Where you are
|
|
15
15
|
|
|
16
16
|
```
|
|
17
|
-
npx branches status
|
|
17
|
+
npx @openagt/skill-branches@0.1 status
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
It prints JSON; `branch` is the branch you are on.
|
|
@@ -24,7 +24,7 @@ It prints JSON; `branch` is the branch you are on.
|
|
|
24
24
|
Before your first change, name the session with `[a-z0-9-]+`, starting with a letter or digit, saying what the work is, unless your branch already differs from `path`'s last segment: then it is named, keep it.
|
|
25
25
|
|
|
26
26
|
```
|
|
27
|
-
npx branches name <name>
|
|
27
|
+
npx @openagt/skill-branches@0.1 name <name>
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
It renames your branch to `agent-<name>` and prints it in `branch`: `agent-<name>-2`, `-3`, … when `<name>` was taken; a name outside `[a-z0-9-]+` is refused as `invalid-name`.
|
|
@@ -44,7 +44,7 @@ Nothing is committed for you.
|
|
|
44
44
|
## Before you finish
|
|
45
45
|
|
|
46
46
|
```
|
|
47
|
-
npx branches status
|
|
47
|
+
npx @openagt/skill-branches@0.1 status
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
It must report `"clean": true`. `clean` is false while anything is uncommitted or untracked: commit or delete what you added; if what remains is not yours, say so and finish.
|
|
@@ -54,7 +54,7 @@ It must report `"clean": true`. `clean` is false while anything is uncommitted o
|
|
|
54
54
|
Only when your task or the person asks you to push or publish your work, and once clean:
|
|
55
55
|
|
|
56
56
|
```
|
|
57
|
-
npx branches push
|
|
57
|
+
npx @openagt/skill-branches@0.1 push
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
It pushes your branch to origin and prints it in `branch`. `clean` false is refused as `dirty`: commit or delete first.
|
|
@@ -64,7 +64,7 @@ It pushes your branch to origin and prints it in `branch`. `clean` false is refu
|
|
|
64
64
|
Only when the person asks you to merge your work into the project's main branch, and once clean:
|
|
65
65
|
|
|
66
66
|
```
|
|
67
|
-
npx branches merge <your branch>
|
|
67
|
+
npx @openagt/skill-branches@0.1 merge <your branch>
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
It merges your branch into the main branch, in the project's own folder. A conflict changes nothing and names the files in `files`: say so and stop. Your checkout and your branch stay.
|
package/dist/checkout.d.ts
CHANGED
|
@@ -22,4 +22,10 @@ export declare function attachCheckout(repo: string, opts: {
|
|
|
22
22
|
branch: string;
|
|
23
23
|
base?: string;
|
|
24
24
|
} & CheckoutSkills, git?: GitRunner): Promise<AddedWorktree>;
|
|
25
|
+
/**
|
|
26
|
+
* The links of a checkout that is already there, brought to what a new one gets: the package's
|
|
27
|
+
* command and skill, and the caller's skills. For a continued agent whose checkout stayed, made by
|
|
28
|
+
* whatever version ran then. A link that is there is left alone, so this is safe to ask again.
|
|
29
|
+
*/
|
|
30
|
+
export declare function relinkCheckout(repo: string, path: string, opts?: CheckoutSkills, git?: GitRunner): Promise<void>;
|
|
25
31
|
//# sourceMappingURL=checkout.d.ts.map
|
package/dist/checkout.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../src/checkout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAgC,MAAM,qBAAqB,CAAA;AAEjG,OAAO,EAA+B,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAG/E,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAG5D;;;;;GAKG;AAEH,yFAAyF;AACzF,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,SAAS,SAAS,EAAE,CAAA;CAC9B;AAED,qGAAqG;AACrG,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,EACzD,GAAG,GAAE,SAA2B,GAC/B,OAAO,CAAC,aAAa,CAAC,CAIxB;AAED,sJAAsJ;AACtJ,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,EACzE,GAAG,GAAE,SAA2B,GAC/B,OAAO,CAAC,aAAa,CAAC,CAIxB"}
|
|
1
|
+
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../src/checkout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,SAAS,EAAgC,MAAM,qBAAqB,CAAA;AAEjG,OAAO,EAA+B,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAG/E,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAG5D;;;;;GAKG;AAEH,yFAAyF;AACzF,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,SAAS,SAAS,EAAE,CAAA;CAC9B;AAED,qGAAqG;AACrG,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,EACzD,GAAG,GAAE,SAA2B,GAC/B,OAAO,CAAC,aAAa,CAAC,CAIxB;AAED,sJAAsJ;AACtJ,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,EACzE,GAAG,GAAE,SAA2B,GAC/B,OAAO,CAAC,aAAa,CAAC,CAIxB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,EAAE,GAAG,GAAE,SAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3I"}
|
package/dist/checkout.js
CHANGED
|
@@ -17,14 +17,23 @@ export async function attachCheckout(repo, opts, git = nodeGitRunner()) {
|
|
|
17
17
|
await settle(repo, worktree.path, git, opts.skills);
|
|
18
18
|
return worktree;
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* The links of a checkout that is already there, brought to what a new one gets: the package's
|
|
22
|
+
* command and skill, and the caller's skills. For a continued agent whose checkout stayed, made by
|
|
23
|
+
* whatever version ran then. A link that is there is left alone, so this is safe to ask again.
|
|
24
|
+
*/
|
|
25
|
+
export async function relinkCheckout(repo, path, opts = {}, git = nodeGitRunner()) {
|
|
26
|
+
await linkOwnCommand(repo, path, git);
|
|
27
|
+
await linkSkill(repo, path, undefined, git, opts.skills);
|
|
28
|
+
}
|
|
20
29
|
/**
|
|
21
30
|
* What a checkout gets besides its files. All best-effort: the checkouts are the package's state
|
|
22
31
|
* and hidden from the project's git the moment the first one exists (#1600) — as an untracked
|
|
23
32
|
* directory at the root, `.branches/` would ride any sweeping `git add -A` onto a code branch —
|
|
24
33
|
* through the repository's own exclude file, so no tracked file changes; `node_modules` is
|
|
25
34
|
* gitignored, so a fresh checkout has none and a link that cannot be made is a worse run, not a
|
|
26
|
-
* failed one; the package
|
|
27
|
-
* `npx branches` runs
|
|
35
|
+
* failed one; the package and its command are linked into a checkout that has neither, so the skill's
|
|
36
|
+
* `npx @openagt/skill-branches@0.1` runs this copy and downloads nothing (`command-link.ts`); a link under `.branches/` is a view, and the next reconcile pass makes it.
|
|
28
37
|
*/
|
|
29
38
|
async function settle(repo, path, git, skills = []) {
|
|
30
39
|
await excludeFromGit(repo, `/${BRANCHES_DIR}`, undefined, git).catch(() => { });
|
package/dist/checkout.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../src/checkout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACjG,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAsB,MAAM,eAAe,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAkB,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAclD,qGAAqG;AACrG,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,IAAyD,EACzD,GAAG,GAAc,aAAa,EAAE;IAEhC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IAC1J,MAAM,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACnD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,sJAAsJ;AACtJ,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,IAAyE,EACzE,GAAG,GAAc,aAAa,EAAE;IAEhC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IAC3I,MAAM,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACnD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,MAAM,CAAC,IAAY,EAAE,IAAY,EAAE,GAAc,EAAE,MAAM,GAAyB,EAAE;IACjG,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,YAAY,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAC9E,MAAM,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;IAClD,sGAAsG;IACtG,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;IACrC,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;IACnD,MAAM,oBAAoB,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;AAC3D,CAAC"}
|
|
1
|
+
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../src/checkout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type GitRunner } from '@openagt/agent-data';
|
|
2
|
+
import { type SkillLink } from './skill-links.js';
|
|
3
|
+
/**
|
|
4
|
+
* `cleanup`: what this tool left in a project, removed, for a person who takes the project out of
|
|
5
|
+
* a dashboard and asks for the tool's files to go too. The tool removes its own and nothing else:
|
|
6
|
+
* a dashboard asks for it by the `cleanup` kind the package declares under `openagent` in its
|
|
7
|
+
* package.json, and holds no list of this tool's files.
|
|
8
|
+
*
|
|
9
|
+
* Every agent checkout goes under the reclaim rule, as `prune` does it: one holding uncommitted
|
|
10
|
+
* work stays, named with the reason, and a branch with work on it is never deleted. The checkouts
|
|
11
|
+
* directory goes only once it is empty: whatever else sits in it (another tool's checkout, a
|
|
12
|
+
* person's file) keeps it, each named. Nothing is pushed.
|
|
13
|
+
*
|
|
14
|
+
* The rules that hide this tool's files from git are the repository's, read by every checkout of
|
|
15
|
+
* it, so a rule goes only when this pass removed what it hid and no checkout of the repository
|
|
16
|
+
* still holds such a thing: the rules for the links once no agent checkout is left anywhere, the
|
|
17
|
+
* rule for the directory once no checkout has one.
|
|
18
|
+
*/
|
|
19
|
+
/** One thing left where it was, by its path from the project's root, and why. */
|
|
20
|
+
export interface Kept {
|
|
21
|
+
path: string;
|
|
22
|
+
reason: string;
|
|
23
|
+
}
|
|
24
|
+
export interface CleanupOutcome {
|
|
25
|
+
ok: true;
|
|
26
|
+
removed: string[];
|
|
27
|
+
kept: Kept[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* `reclaimOne` removes one agent's checkout under the reclaim rule and answers nothing, or the
|
|
31
|
+
* line saying why it stayed.
|
|
32
|
+
*/
|
|
33
|
+
export declare function cleanup(repo: string, reclaimOne: (agentId: string) => Promise<string | undefined>, git?: GitRunner): Promise<CleanupOutcome>;
|
|
34
|
+
/**
|
|
35
|
+
* Take back the rules that hide `skills`' links, for a caller that had skills of its own linked
|
|
36
|
+
* into the checkouts (`SkillLink`) and now removes what it left in the project. Under this
|
|
37
|
+
* tool's own rule for its links: a rule goes once no agent checkout is left anywhere in the
|
|
38
|
+
* repository, since every checkout reads the one exclude file.
|
|
39
|
+
*/
|
|
40
|
+
export declare function liftSkillRules(repo: string, skills: readonly SkillLink[], git?: GitRunner): Promise<void>;
|
|
41
|
+
//# sourceMappingURL=cleanup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../src/cleanup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAIxH,OAAO,EAAkD,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAGjG;;;;;;;;;;;;;;;GAeG;AAEH,iFAAiF;AACjF,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,IAAI,CAAA;IACR,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,IAAI,EAAE,IAAI,EAAE,CAAA;CACb;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,GAAE,SAA2B,GAAG,OAAO,CAAC,cAAc,CAAC,CAsCnK;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,SAAS,EAAE,EAAE,GAAG,GAAE,SAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhI"}
|
package/dist/cleanup.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { lstat, readdir, readlink, rmdir } from 'node:fs/promises';
|
|
2
|
+
import { basename, dirname, join } from 'node:path';
|
|
3
|
+
import { BRANCHES_DIR, nodeGitRunner, repositoryCheckouts, unexcludeFromGit } from '@openagt/agent-data';
|
|
4
|
+
import { reconcileBranchLinks } from './branch-links.js';
|
|
5
|
+
import { isAgentBranch } from './branch-names.js';
|
|
6
|
+
import { COMMAND_LINKS } from './command-link.js';
|
|
7
|
+
import { HARNESS_SKILL_DIRS, SKILL_NAME, skillLinkPaths } from './skill-links.js';
|
|
8
|
+
import { worktreeDirEntries } from './worktree.js';
|
|
9
|
+
/**
|
|
10
|
+
* `reclaimOne` removes one agent's checkout under the reclaim rule and answers nothing, or the
|
|
11
|
+
* line saying why it stayed.
|
|
12
|
+
*/
|
|
13
|
+
export async function cleanup(repo, reclaimOne, git = nodeGitRunner()) {
|
|
14
|
+
const dir = join(repo, BRANCHES_DIR);
|
|
15
|
+
const removed = [];
|
|
16
|
+
const kept = [];
|
|
17
|
+
for (const { agentId, path } of await worktreeDirEntries(repo)) {
|
|
18
|
+
const stayed = await reclaimOne(agentId);
|
|
19
|
+
if (stayed === undefined)
|
|
20
|
+
removed.push(`${BRANCHES_DIR}/${basename(path)}`);
|
|
21
|
+
else
|
|
22
|
+
kept.push({ path: `${BRANCHES_DIR}/${basename(path)}`, reason: stayed });
|
|
23
|
+
}
|
|
24
|
+
// The links named after a checkout that just went are stale from this moment.
|
|
25
|
+
await reconcileBranchLinks(repo, { git });
|
|
26
|
+
for (const name of await readdir(dir).catch(() => [])) {
|
|
27
|
+
const path = `${BRANCHES_DIR}/${name}`;
|
|
28
|
+
if (kept.some(entry => entry.path === path))
|
|
29
|
+
continue;
|
|
30
|
+
// This tool's own link, named as the branch a kept checkout is on: it stays with its checkout.
|
|
31
|
+
const target = await readlink(join(dir, name)).catch(() => undefined);
|
|
32
|
+
if (target !== undefined && kept.some(entry => entry.path === `${BRANCHES_DIR}/${target}`))
|
|
33
|
+
continue;
|
|
34
|
+
kept.push({ path, reason: 'not made by branches' });
|
|
35
|
+
}
|
|
36
|
+
// rmdir, never a recursive remove: a file that appeared since the listing keeps the directory.
|
|
37
|
+
const gone = kept.length === 0 && (await rmdir(dir).then(() => true, () => false));
|
|
38
|
+
if (gone)
|
|
39
|
+
removed.push(BRANCHES_DIR);
|
|
40
|
+
else if (kept.length === 0 && (await lstat(dir).then(() => true, () => false)))
|
|
41
|
+
kept.push({ path: BRANCHES_DIR, reason: 'not empty' });
|
|
42
|
+
if (removed.length > 0) {
|
|
43
|
+
const checkouts = await repositoryCheckouts(repo, git).catch(() => undefined);
|
|
44
|
+
if (checkouts) {
|
|
45
|
+
// A link lives in an agent's checkout: with none left in the repository, the rules hide nothing.
|
|
46
|
+
if (!kept.some(entry => isAgentBranch(basename(entry.path))) && !checkouts.some(path => basename(dirname(path)) === BRANCHES_DIR && isAgentBranch(basename(path)))) {
|
|
47
|
+
for (const rule of [...COMMAND_LINKS.map(link => `/${link}`), ...HARNESS_SKILL_DIRS.map(skills => `/${skills}/${SKILL_NAME}`)]) {
|
|
48
|
+
await unexcludeFromGit(repo, rule, undefined, git).catch(() => { });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (gone && !(await anyHolds(checkouts, BRANCHES_DIR)))
|
|
52
|
+
await unexcludeFromGit(repo, `/${BRANCHES_DIR}`, undefined, git).catch(() => { });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return { ok: true, removed, kept };
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Take back the rules that hide `skills`' links, for a caller that had skills of its own linked
|
|
59
|
+
* into the checkouts (`SkillLink`) and now removes what it left in the project. Under this
|
|
60
|
+
* tool's own rule for its links: a rule goes once no agent checkout is left anywhere in the
|
|
61
|
+
* repository, since every checkout reads the one exclude file.
|
|
62
|
+
*/
|
|
63
|
+
export async function liftSkillRules(repo, skills, git = nodeGitRunner()) {
|
|
64
|
+
const checkouts = await repositoryCheckouts(repo, git).catch(() => undefined);
|
|
65
|
+
if (!checkouts)
|
|
66
|
+
return;
|
|
67
|
+
if ((await worktreeDirEntries(repo)).length > 0 || checkouts.some(path => basename(dirname(path)) === BRANCHES_DIR && isAgentBranch(basename(path))))
|
|
68
|
+
return;
|
|
69
|
+
for (const skill of skills)
|
|
70
|
+
for (const path of skillLinkPaths(skill))
|
|
71
|
+
await unexcludeFromGit(repo, `/${path}`, undefined, git).catch(() => { });
|
|
72
|
+
}
|
|
73
|
+
async function anyHolds(checkouts, name) {
|
|
74
|
+
for (const checkout of checkouts)
|
|
75
|
+
if (await lstat(join(checkout, name)).then(() => true, () => false))
|
|
76
|
+
return true;
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=cleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../src/cleanup.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ import { type GitRunner } from '@openagt/agent-data';
|
|
|
18
18
|
* Git only (#1820): what the project's git host does with a pushed branch, the pull request and its
|
|
19
19
|
* merge, is the git host package's own command; this one never names it.
|
|
20
20
|
*/
|
|
21
|
-
export declare const USAGE = "usage: branches <command>\n\n create <id> [--base <ref>] a checkout for agent <id>, on a fresh branch agent-<id>\n attach <id> <branch> [--base <ref>]\n a checkout for agent <id>, on an existing branch; one that is gone starts again from <ref>\n name <name> rename this checkout's branch to agent-<name>; prints the name it got\n status [path] the checkout's branch, whether it is clean, whether it is on the remote\n show [--from <commit>] <branch>...\n what each branch holds and where it stands: its commits and files beyond the base, whether it is pushed, merged, and what its checkout left uncommitted;\n measured from <commit>, the one the branches started from, in place of the default branch; a full commit id in place of a branch is read as a branch that ends there\n push [--branch <b>] push this checkout's branch, or branch <b>, to origin; a dirty checkout is refused\n merge <branch> merge branch <branch> into the default branch, in the project's folder, then delete it; a conflict changes nothing and names the files\n list [--sizes] every agent checkout under .branches/\n remove <id> [--from <commit>] reclaim agent <id>'s checkout, once its branch holds everything in it; the branch stays, nothing is pushed;\n <commit> is the one its branch started from, in place of the default branch\n [--discard] ... or drop it whatever it holds, uncommitted work included; the branch stays\n prune remove, for every checkout\n\nJSON on stdout. Exit code 1 for a refusal or a git failure (the reason on stderr), 2 for a usage error.";
|
|
21
|
+
export declare const USAGE = "usage: branches <command>\n\n create <id> [--base <ref>] a checkout for agent <id>, on a fresh branch agent-<id>\n attach <id> <branch> [--base <ref>]\n a checkout for agent <id>, on an existing branch; one that is gone starts again from <ref>\n name <name> rename this checkout's branch to agent-<name>; prints the name it got\n status [path] the checkout's branch, whether it is clean, whether it is on the remote\n show [--from <commit>] <branch>...\n what each branch holds and where it stands: its commits and files beyond the base, whether it is pushed, merged, and what its checkout left uncommitted;\n measured from <commit>, the one the branches started from, in place of the default branch; a full commit id in place of a branch is read as a branch that ends there\n push [--branch <b>] push this checkout's branch, or branch <b>, to origin; a dirty checkout is refused\n merge <branch> merge branch <branch> into the default branch, in the project's folder, then delete it; a conflict changes nothing and names the files\n list [--sizes] every agent checkout under .branches/\n remove <id> [--from <commit>] reclaim agent <id>'s checkout, once its branch holds everything in it; the branch stays, nothing is pushed;\n <commit> is the one its branch started from, in place of the default branch\n [--discard] ... or drop it whatever it holds, uncommitted work included; the branch stays\n prune remove, for every checkout\n cleanup remove what this tool left in the project: prune, then .branches/ and the rules hiding this tool's files from git once no checkout is left;\n a checkout with uncommitted work stays, and every branch with work on it; the command a dashboard asks for when a project is removed with its files\n\nJSON on stdout. Exit code 1 for a refusal or a git failure (the reason on stderr), 2 for a usage error.";
|
|
22
22
|
/** The streams and the working directory a run of the CLI sees. */
|
|
23
23
|
export interface CliIo {
|
|
24
24
|
cwd: string;
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0C,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0C,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAuB5F;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,KAAK,ylEAoBsF,CAAA;AAExG,mEAAmE;AACnE,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B;AAED,8DAA8D;AAC9D,MAAM,MAAM,UAAU,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAA;AAY9E,2FAA2F;AAC3F,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,GAAE,SAA2B,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBzG"}
|
package/dist/cli.js
CHANGED
|
@@ -10,6 +10,7 @@ import { discardWorktree, reclaimWorktree } from './reclaim.js';
|
|
|
10
10
|
import { pushBranchByName, pushCheckout } from './push.js';
|
|
11
11
|
import { mergeBranch } from './merge.js';
|
|
12
12
|
import { readBranchStates } from './branch-state.js';
|
|
13
|
+
import { cleanup } from './cleanup.js';
|
|
13
14
|
/**
|
|
14
15
|
* The command line over the package (#1725): the same functions a caller's code calls, for an agent
|
|
15
16
|
* (and a person) in a shell. One implementation, every surface a caller.
|
|
@@ -46,6 +47,8 @@ export const USAGE = `usage: branches <command>
|
|
|
46
47
|
<commit> is the one its branch started from, in place of the default branch
|
|
47
48
|
[--discard] ... or drop it whatever it holds, uncommitted work included; the branch stays
|
|
48
49
|
prune remove, for every checkout
|
|
50
|
+
cleanup remove what this tool left in the project: prune, then .branches/ and the rules hiding this tool's files from git once no checkout is left;
|
|
51
|
+
a checkout with uncommitted work stays, and every branch with work on it; the command a dashboard asks for when a project is removed with its files
|
|
49
52
|
|
|
50
53
|
JSON on stdout. Exit code 1 for a refusal or a git failure (the reason on stderr), 2 for a usage error.`;
|
|
51
54
|
/** Thrown inside a command to end it with a refusal. */
|
|
@@ -199,6 +202,11 @@ const COMMANDS = {
|
|
|
199
202
|
await reconcileBranchLinks(repo, { git });
|
|
200
203
|
return { ok: true, removed, skipped };
|
|
201
204
|
},
|
|
205
|
+
async cleanup(args, cwd, git) {
|
|
206
|
+
parse(args, {}, 0);
|
|
207
|
+
const repo = await project(cwd, git);
|
|
208
|
+
return cleanup(repo, agentId => reclaim(repo, agentId, git).then(outcome => (outcome.ok ? undefined : refusalLine(agentId, outcome))), git);
|
|
209
|
+
},
|
|
202
210
|
};
|
|
203
211
|
/**
|
|
204
212
|
* One agent's checkout under the reclaim rule; a missing checkout is its own refusal. The
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/command-link.d.ts
CHANGED
|
@@ -1,20 +1,44 @@
|
|
|
1
1
|
import { type GitRunner } from '@openagt/agent-data';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* A package's command, linked into a checkout that has none: each command at
|
|
4
|
+
* `node_modules/.bin/<command>`, and the package itself at `node_modules/<package>`.
|
|
4
5
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
6
|
+
* A skill's text tells the agent to run its command by the package's full name,
|
|
7
|
+
* `npx @openagt/skill-branches@0.1`. `npx` looks for a copy of the package in the checkout, and asks
|
|
8
|
+
* npm for one otherwise; a copy it finds, it runs by the command's name from `node_modules/.bin`.
|
|
9
|
+
* In a project that depends on the package the checkout already has both, linked with the
|
|
10
|
+
* project's other tools. In a project with nothing installed (an empty folder a dashboard added)
|
|
11
|
+
* it has neither, so both are linked here: the agent then runs the very copy that made its
|
|
12
|
+
* checkout, with nothing downloaded and no network.
|
|
11
13
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
14
|
+
* The package is linked only beside its own commands. Beside another tool that holds a command's
|
|
15
|
+
* name in the project, the full name would run that tool, so there it is left to npm.
|
|
16
|
+
*
|
|
17
|
+
* Hidden from the project's git through the repository's exclude file, like a skill's link: a link
|
|
18
|
+
* is the package's state, not the agent's work. Best-effort: an entry already there (the project's
|
|
19
|
+
* own copy) is left alone, a link of this package's that points nowhere is made again, and a link
|
|
20
|
+
* that cannot be made is a worse run, not a failed one.
|
|
16
21
|
*/
|
|
17
|
-
/**
|
|
18
|
-
export
|
|
22
|
+
/** A package to link into a checkout: its name, its directory (the one holding its `package.json`), and its commands, each a name and its script. */
|
|
23
|
+
export interface PackageLink {
|
|
24
|
+
name: string;
|
|
25
|
+
dir: string;
|
|
26
|
+
bins: Readonly<Record<string, string>>;
|
|
27
|
+
}
|
|
28
|
+
/** This package, as a {@link PackageLink}: its directory is beside `bin/`. */
|
|
29
|
+
export declare const OWN_PACKAGE: PackageLink;
|
|
30
|
+
/** The paths of a package's links, relative to a checkout: what the exclude file hides, and the rules a cleanup lifts. */
|
|
31
|
+
export declare function packageLinkPaths(pkg: PackageLink): string[];
|
|
32
|
+
/** The paths of this package's own links. */
|
|
33
|
+
export declare const COMMAND_LINKS: readonly string[];
|
|
34
|
+
export declare function linkPackage(repo: string, checkout: string, pkg: PackageLink, git?: GitRunner): Promise<void>;
|
|
35
|
+
/** This package's own command and package, linked into `checkout`. */
|
|
19
36
|
export declare function linkOwnCommand(repo: string, checkout: string, git?: GitRunner): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Whether something is at `path`. lstat, not stat: a link that is there counts, whatever it points
|
|
39
|
+
* at. One exception is taken away first: a link to an absolute path that is gone. That is a link
|
|
40
|
+
* this package made to an install that has since moved (the project's own links are relative), and
|
|
41
|
+
* left there it would keep the place of a working one.
|
|
42
|
+
*/
|
|
43
|
+
export declare function entryExists(path: string): Promise<boolean>;
|
|
20
44
|
//# sourceMappingURL=command-link.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-link.d.ts","sourceRoot":"","sources":["../src/command-link.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAGnF
|
|
1
|
+
{"version":3,"file":"command-link.d.ts","sourceRoot":"","sources":["../src/command-link.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAGnF;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,qJAAqJ;AACrJ,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACvC;AAKD,8EAA8E;AAC9E,eAAO,MAAM,WAAW,EAAE,WAA+H,CAAA;AAEzJ,0HAA0H;AAC1H,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,EAAE,CAE3D;AAED,6CAA6C;AAC7C,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAAkC,CAAA;AAE7E,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,GAAE,SAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAUnI;AAED,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,SAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9G;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOhE"}
|
package/dist/command-link.js
CHANGED
|
@@ -1,34 +1,56 @@
|
|
|
1
|
-
import { lstat, mkdir, symlink } from 'node:fs/promises';
|
|
2
|
-
import { join } from 'node:path';
|
|
1
|
+
import { lstat, mkdir, readlink, realpath, stat, symlink, unlink } from 'node:fs/promises';
|
|
2
|
+
import { dirname, isAbsolute, join } from 'node:path';
|
|
3
3
|
import { excludeFromGit, nodeGitRunner } from '@openagt/agent-data';
|
|
4
4
|
import { CLI_BIN_DIR } from './bin-dir.js';
|
|
5
|
+
/** Where a checkout holds its tools. */
|
|
6
|
+
const BIN_DIR = 'node_modules/.bin';
|
|
7
|
+
/** This package, as a {@link PackageLink}: its directory is beside `bin/`. */
|
|
8
|
+
export const OWN_PACKAGE = { name: '@openagt/skill-branches', dir: dirname(CLI_BIN_DIR), bins: { branches: join(CLI_BIN_DIR, 'branches') } };
|
|
9
|
+
/** The paths of a package's links, relative to a checkout: what the exclude file hides, and the rules a cleanup lifts. */
|
|
10
|
+
export function packageLinkPaths(pkg) {
|
|
11
|
+
return [...Object.keys(pkg.bins).map(command => `${BIN_DIR}/${command}`), `node_modules/${pkg.name}`];
|
|
12
|
+
}
|
|
13
|
+
/** The paths of this package's own links. */
|
|
14
|
+
export const COMMAND_LINKS = packageLinkPaths(OWN_PACKAGE);
|
|
15
|
+
export async function linkPackage(repo, checkout, pkg, git = nodeGitRunner()) {
|
|
16
|
+
let ours = true;
|
|
17
|
+
for (const [command, script] of Object.entries(pkg.bins)) {
|
|
18
|
+
const path = `${BIN_DIR}/${command}`;
|
|
19
|
+
if (!(await entryExists(join(checkout, path))))
|
|
20
|
+
await link(repo, checkout, path, script, 'file', git);
|
|
21
|
+
ours &&= await realpath(join(checkout, path)).then(async (found) => found === (await realpath(script)), () => false);
|
|
22
|
+
}
|
|
23
|
+
const path = `node_modules/${pkg.name}`;
|
|
24
|
+
// 'junction' is the only directory-link type Windows grants without elevation; it is ignored on POSIX.
|
|
25
|
+
if (ours && !(await entryExists(join(checkout, path))))
|
|
26
|
+
await link(repo, checkout, path, pkg.dir, process.platform === 'win32' ? 'junction' : 'dir', git);
|
|
27
|
+
}
|
|
28
|
+
/** This package's own command and package, linked into `checkout`. */
|
|
29
|
+
export function linkOwnCommand(repo, checkout, git = nodeGitRunner()) {
|
|
30
|
+
return linkPackage(repo, checkout, OWN_PACKAGE, git);
|
|
31
|
+
}
|
|
5
32
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* nothing installed (an empty folder a dashboard added) it has none, and `npx` then downloads
|
|
11
|
-
* whatever package holds the name `branches` on npm and runs it: a stranger's code, in the
|
|
12
|
-
* person's project. With the command linked here `npx` finds it in the checkout and downloads
|
|
13
|
-
* nothing.
|
|
14
|
-
*
|
|
15
|
-
* Hidden from the project's git through the repository's exclude file, like the skill's link: the
|
|
16
|
-
* link is the package's state, not the agent's work. Best-effort: a command already there (the
|
|
17
|
-
* project's own copy) is left alone, and a link that cannot be made is a worse run, not a failed
|
|
18
|
-
* one.
|
|
33
|
+
* Whether something is at `path`. lstat, not stat: a link that is there counts, whatever it points
|
|
34
|
+
* at. One exception is taken away first: a link to an absolute path that is gone. That is a link
|
|
35
|
+
* this package made to an install that has since moved (the project's own links are relative), and
|
|
36
|
+
* left there it would keep the place of a working one.
|
|
19
37
|
*/
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
38
|
+
export async function entryExists(path) {
|
|
39
|
+
const entry = await lstat(path).catch(() => undefined);
|
|
40
|
+
if (!entry)
|
|
41
|
+
return false;
|
|
42
|
+
if (!entry.isSymbolicLink())
|
|
43
|
+
return true;
|
|
44
|
+
const target = await readlink(path).catch(() => undefined);
|
|
45
|
+
if (target === undefined || !isAbsolute(target) || (await stat(target).then(() => true, () => false)))
|
|
46
|
+
return true;
|
|
47
|
+
return unlink(path).then(() => false, () => true);
|
|
48
|
+
}
|
|
49
|
+
async function link(repo, checkout, path, target, type, git) {
|
|
50
|
+
await excludeFromGit(repo, `/${path}`, undefined, git).catch(() => { });
|
|
29
51
|
try {
|
|
30
|
-
await mkdir(join(checkout,
|
|
31
|
-
await symlink(join(
|
|
52
|
+
await mkdir(dirname(join(checkout, path)), { recursive: true });
|
|
53
|
+
await symlink(target, join(checkout, path), type);
|
|
32
54
|
}
|
|
33
55
|
catch {
|
|
34
56
|
// A filesystem that refuses the link: the agent still starts.
|
package/dist/command-link.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-link.js","sourceRoot":"","sources":["../src/command-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"command-link.js","sourceRoot":"","sources":["../src/command-link.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,12 +4,13 @@ export { linkDependencies, findDependencyDirs, nodeLinkFs, type LinkFs } from '.
|
|
|
4
4
|
export { reconcileBranchLinks, type LinksFs, type BranchLinksDeps } from './branch-links.js';
|
|
5
5
|
export { reclaimWorktree, discardWorktree, type ReclaimOptions, type ReclaimOutcome, type ReclaimRefusal } from './reclaim.js';
|
|
6
6
|
export { projectRoot, nameBranch, isSessionName, type NameBranchOutcome, type NameBranchRefusal } from './worktree.js';
|
|
7
|
-
export { createCheckout, attachCheckout, type CheckoutSkills } from './checkout.js';
|
|
7
|
+
export { createCheckout, attachCheckout, relinkCheckout, type CheckoutSkills } from './checkout.js';
|
|
8
|
+
export { liftSkillRules } from './cleanup.js';
|
|
8
9
|
export { pushCheckout, pushBranchByName, type PushOutcome, type PushRefusal } from './push.js';
|
|
9
10
|
export { mergeBranch, type MergeOutcome, type MergeRefusal } from './merge.js';
|
|
10
11
|
export { readBranchStates, parseCommits, parseNumstat, parsePorcelain, type BranchState, type BranchCommit, type BranchFile } from './branch-state.js';
|
|
11
12
|
export { runCli, USAGE, type CliIo, type CliRefusal } from './cli.js';
|
|
12
13
|
export { CLI_BIN_DIR } from './bin-dir.js';
|
|
13
|
-
export { linkOwnCommand } from './command-link.js';
|
|
14
|
-
export { linkSkill, HARNESS_SKILL_DIRS, SKILL_DIR, SKILL_NAME, OWN_SKILL, type SkillLink } from './skill-links.js';
|
|
14
|
+
export { linkOwnCommand, linkPackage, packageLinkPaths, type PackageLink } from './command-link.js';
|
|
15
|
+
export { linkSkill, skillLinkPaths, HARNESS_SKILL_DIRS, SKILL_DIR, SKILL_NAME, OWN_SKILL, type SkillLink } from './skill-links.js';
|
|
15
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,aAAa,GACd,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,EACb,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,SAAS,GACf,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAClG,OAAO,EAAE,oBAAoB,EAAE,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC5F,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAC9H,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,aAAa,GACd,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,EACb,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,SAAS,GACf,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAClG,OAAO,EAAE,oBAAoB,EAAE,KAAK,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC5F,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AAC9H,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAA;AAC9F,OAAO,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9E,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACtJ,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAA;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACnG,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -4,12 +4,13 @@ export { linkDependencies, findDependencyDirs, nodeLinkFs } from './worktree-dep
|
|
|
4
4
|
export { reconcileBranchLinks } from './branch-links.js';
|
|
5
5
|
export { reclaimWorktree, discardWorktree } from './reclaim.js';
|
|
6
6
|
export { projectRoot, nameBranch, isSessionName } from './worktree.js';
|
|
7
|
-
export { createCheckout, attachCheckout } from './checkout.js';
|
|
7
|
+
export { createCheckout, attachCheckout, relinkCheckout } from './checkout.js';
|
|
8
|
+
export { liftSkillRules } from './cleanup.js';
|
|
8
9
|
export { pushCheckout, pushBranchByName } from './push.js';
|
|
9
10
|
export { mergeBranch } from './merge.js';
|
|
10
11
|
export { readBranchStates, parseCommits, parseNumstat, parsePorcelain } from './branch-state.js';
|
|
11
12
|
export { runCli, USAGE } from './cli.js';
|
|
12
13
|
export { CLI_BIN_DIR } from './bin-dir.js';
|
|
13
|
-
export { linkOwnCommand } from './command-link.js';
|
|
14
|
-
export { linkSkill, HARNESS_SKILL_DIRS, SKILL_DIR, SKILL_NAME, OWN_SKILL } from './skill-links.js';
|
|
14
|
+
export { linkOwnCommand, linkPackage, packageLinkPaths } from './command-link.js';
|
|
15
|
+
export { linkSkill, skillLinkPaths, HARNESS_SKILL_DIRS, SKILL_DIR, SKILL_NAME, OWN_SKILL } from './skill-links.js';
|
|
15
16
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,aAAa,GACd,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,EACb,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,gBAAgB,GAOjB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,EAAe,MAAM,oBAAoB,CAAA;AAClG,OAAO,EAAE,oBAAoB,EAAsC,MAAM,mBAAmB,CAAA;AAC5F,OAAO,EAAE,eAAe,EAAE,eAAe,EAAiE,MAAM,cAAc,CAAA;AAC9H,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAkD,MAAM,eAAe,CAAA;AACtH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAuB,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,aAAa,GACd,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,EACb,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,gBAAgB,GAOjB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,EAAe,MAAM,oBAAoB,CAAA;AAClG,OAAO,EAAE,oBAAoB,EAAsC,MAAM,mBAAmB,CAAA;AAC5F,OAAO,EAAE,eAAe,EAAE,eAAe,EAAiE,MAAM,cAAc,CAAA;AAC9H,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAkD,MAAM,eAAe,CAAA;AACtH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAuB,MAAM,eAAe,CAAA;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAsC,MAAM,WAAW,CAAA;AAC9F,OAAO,EAAE,WAAW,EAAwC,MAAM,YAAY,CAAA;AAC9E,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAwD,MAAM,mBAAmB,CAAA;AACtJ,OAAO,EAAE,MAAM,EAAE,KAAK,EAA+B,MAAM,UAAU,CAAA;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAoB,MAAM,mBAAmB,CAAA;AACnG,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAkB,MAAM,kBAAkB,CAAA"}
|
package/dist/skill-links.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type GitRunner } from '@openagt/agent-data';
|
|
2
2
|
import { type LinkFs } from './worktree-deps.js';
|
|
3
|
+
import { type PackageLink } from './command-link.js';
|
|
3
4
|
/**
|
|
4
5
|
* The skill, where the agent's harness looks for one (#1739). A harness discovers skills under a
|
|
5
6
|
* directory of its own at the checkout root — `.claude/skills/<name>/SKILL.md` for Claude Code,
|
|
@@ -29,6 +30,8 @@ export declare const SKILL_DIR: string;
|
|
|
29
30
|
export interface SkillLink {
|
|
30
31
|
name: string;
|
|
31
32
|
dir: string;
|
|
33
|
+
/** The package the skill's text calls by its full name, when the skill has a command: linked with its commands (`command-link.ts`). */
|
|
34
|
+
package?: PackageLink;
|
|
32
35
|
}
|
|
33
36
|
/** This package's own skill, as a {@link SkillLink}. */
|
|
34
37
|
export declare const OWN_SKILL: SkillLink;
|
|
@@ -37,7 +40,10 @@ export declare const OWN_SKILL: SkillLink;
|
|
|
37
40
|
* the caller names (see {@link SkillLink}) — and hide the links from the project's git
|
|
38
41
|
* through the repository's exclude file: a symlink at the checkout root would otherwise ride any
|
|
39
42
|
* sweeping `git add -A` onto the agent's branch. Best-effort: an entry already at a link's path is
|
|
40
|
-
* left alone
|
|
43
|
+
* left alone and gets no rule, a link of this package's that points nowhere is made again, and a
|
|
44
|
+
* link that cannot be made is a worse run, not a failed one.
|
|
41
45
|
*/
|
|
42
46
|
export declare function linkSkill(repo: string, checkout: string, fs?: LinkFs, git?: GitRunner, skills?: readonly SkillLink[]): Promise<void>;
|
|
47
|
+
/** The paths of a skill's links, relative to a checkout: its text for every harness, and its package's links when it has one. */
|
|
48
|
+
export declare function skillLinkPaths(skill: SkillLink): string[];
|
|
43
49
|
//# sourceMappingURL=skill-links.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-links.d.ts","sourceRoot":"","sources":["../src/skill-links.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,SAAS,EAAkB,MAAM,qBAAqB,CAAA;AACnF,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"skill-links.d.ts","sourceRoot":"","sources":["../src/skill-links.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,SAAS,EAAkB,MAAM,qBAAqB,CAAA;AACnF,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAA8C,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEhG;;;;;;;;GAQG;AAEH,6GAA6G;AAC7G,eAAO,MAAM,UAAU,aAAa,CAAA;AAEpC,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,YAAI,gBAAgB,EAAE,gBAAgB,CAAU,CAAA;AAE/E;;;GAGG;AACH,eAAO,MAAM,SAAS,QAAsD,CAAA;AAE5E;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,uIAAuI;IACvI,OAAO,CAAC,EAAE,WAAW,CAAA;CACtB;AAED,wDAAwD;AACxD,eAAO,MAAM,SAAS,EAAE,SAAgD,CAAA;AAExE;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,EAAE,GAAE,MAAqB,EACzB,GAAG,GAAE,SAA2B,EAChC,MAAM,GAAE,SAAS,SAAS,EAAO,GAChC,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,iIAAiI;AACjI,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,EAAE,CAEzD"}
|
package/dist/skill-links.js
CHANGED
|
@@ -2,6 +2,7 @@ import { dirname, join } from 'node:path';
|
|
|
2
2
|
import { fileURLToPath } from 'node:url';
|
|
3
3
|
import { nodeGitRunner, excludeFromGit } from '@openagt/agent-data';
|
|
4
4
|
import { nodeLinkFs } from './worktree-deps.js';
|
|
5
|
+
import { entryExists, linkPackage, packageLinkPaths } from './command-link.js';
|
|
5
6
|
/**
|
|
6
7
|
* The skill, where the agent's harness looks for one (#1739). A harness discovers skills under a
|
|
7
8
|
* directory of its own at the checkout root — `.claude/skills/<name>/SKILL.md` for Claude Code,
|
|
@@ -27,17 +28,19 @@ export const OWN_SKILL = { name: SKILL_NAME, dir: SKILL_DIR };
|
|
|
27
28
|
* the caller names (see {@link SkillLink}) — and hide the links from the project's git
|
|
28
29
|
* through the repository's exclude file: a symlink at the checkout root would otherwise ride any
|
|
29
30
|
* sweeping `git add -A` onto the agent's branch. Best-effort: an entry already at a link's path is
|
|
30
|
-
* left alone
|
|
31
|
+
* left alone and gets no rule, a link of this package's that points nowhere is made again, and a
|
|
32
|
+
* link that cannot be made is a worse run, not a failed one.
|
|
31
33
|
*/
|
|
32
34
|
export async function linkSkill(repo, checkout, fs = nodeLinkFs(), git = nodeGitRunner(), skills = []) {
|
|
33
35
|
for (const skill of [OWN_SKILL, ...skills]) {
|
|
34
36
|
for (const dir of HARNESS_SKILL_DIRS) {
|
|
35
37
|
const rel = `${dir}/${skill.name}`;
|
|
36
|
-
await excludeFromGit(repo, `/${rel}`, undefined, git).catch(() => { });
|
|
37
38
|
try {
|
|
38
39
|
const path = join(checkout, rel);
|
|
39
|
-
|
|
40
|
+
// The project's own copy, tracked or not, stays, and gets no rule: a rule would hide what a person adds there.
|
|
41
|
+
if (await entryExists(path))
|
|
40
42
|
continue;
|
|
43
|
+
await excludeFromGit(repo, `/${rel}`, undefined, git).catch(() => { });
|
|
41
44
|
await fs.mkdir(join(checkout, dir));
|
|
42
45
|
await fs.symlinkDir(skill.dir, path);
|
|
43
46
|
}
|
|
@@ -45,6 +48,12 @@ export async function linkSkill(repo, checkout, fs = nodeLinkFs(), git = nodeGit
|
|
|
45
48
|
// A filesystem that refuses the link: the agent still starts, without the skill.
|
|
46
49
|
}
|
|
47
50
|
}
|
|
51
|
+
if (skill.package)
|
|
52
|
+
await linkPackage(repo, checkout, skill.package, git);
|
|
48
53
|
}
|
|
49
54
|
}
|
|
55
|
+
/** The paths of a skill's links, relative to a checkout: its text for every harness, and its package's links when it has one. */
|
|
56
|
+
export function skillLinkPaths(skill) {
|
|
57
|
+
return [...HARNESS_SKILL_DIRS.map(dir => `${dir}/${skill.name}`), ...(skill.package ? packageLinkPaths(skill.package) : [])];
|
|
58
|
+
}
|
|
50
59
|
//# sourceMappingURL=skill-links.js.map
|
package/dist/skill-links.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-links.js","sourceRoot":"","sources":["../src/skill-links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,aAAa,EAAkB,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACnF,OAAO,EAAE,UAAU,EAAe,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"skill-links.js","sourceRoot":"","sources":["../src/skill-links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,aAAa,EAAkB,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACnF,OAAO,EAAE,UAAU,EAAe,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAoB,MAAM,mBAAmB,CAAA;AAEhG;;;;;;;;GAQG;AAEH,6GAA6G;AAC7G,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAA;AAEpC,0EAA0E;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAU,CAAA;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;AAiB5E,wDAAwD;AACxD,MAAM,CAAC,MAAM,SAAS,GAAc,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,CAAA;AAExE;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAY,EACZ,QAAgB,EAChB,EAAE,GAAW,UAAU,EAAE,EACzB,GAAG,GAAc,aAAa,EAAE,EAChC,MAAM,GAAyB,EAAE;IAEjC,KAAK,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAA;YAClC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;gBAChC,+GAA+G;gBAC/G,IAAI,MAAM,WAAW,CAAC,IAAI,CAAC;oBAAE,SAAQ;gBACrC,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;gBACrE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;gBACnC,MAAM,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,iFAAiF;YACnF,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,OAAO;YAAE,MAAM,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC1E,CAAC;AACH,CAAC;AAED,iIAAiI;AACjI,MAAM,UAAU,cAAc,CAAC,KAAgB;IAC7C,OAAO,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAC9H,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openagt/skill-branches",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "Branch management for coding agents: one git checkout per agent under .branches/, named as its branch, reclaimed once its work is on the remote.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
|
-
"url": "git+https://github.com/
|
|
8
|
+
"url": "git+https://github.com/openagt/openagent.git",
|
|
9
9
|
"directory": "packages/skill-branches"
|
|
10
10
|
},
|
|
11
11
|
"type": "module",
|
|
@@ -23,8 +23,9 @@
|
|
|
23
23
|
"bin": {
|
|
24
24
|
"branches": "bin/branches"
|
|
25
25
|
},
|
|
26
|
-
"
|
|
27
|
-
"branches": "branches"
|
|
26
|
+
"openagent": {
|
|
27
|
+
"branches": "branches",
|
|
28
|
+
"cleanup": "branches"
|
|
28
29
|
},
|
|
29
30
|
"exports": {
|
|
30
31
|
"./package.json": "./package.json",
|
|
@@ -38,7 +39,7 @@
|
|
|
38
39
|
}
|
|
39
40
|
},
|
|
40
41
|
"dependencies": {
|
|
41
|
-
"@openagt/agent-data": "0.0.
|
|
42
|
+
"@openagt/agent-data": "0.0.3"
|
|
42
43
|
},
|
|
43
44
|
"devDependencies": {
|
|
44
45
|
"@types/node": "^20.0.0",
|