@openagt/dashboard 0.56.0 → 0.57.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/README.md +19 -1
- package/dist/built-in.d.ts +9 -0
- package/dist/built-in.d.ts.map +1 -1
- package/dist/built-in.js +19 -1
- package/dist/built-in.js.map +1 -1
- package/dist/cli/skills.d.ts +7 -9
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +25 -22
- package/dist/cli/skills.js.map +1 -1
- package/dist/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +3 -0
- package/dist/client.js.map +1 -1
- package/dist/clone-project.d.ts +10 -8
- package/dist/clone-project.d.ts.map +1 -1
- package/dist/clone-project.js +36 -47
- package/dist/clone-project.js.map +1 -1
- package/dist/cloud-scratch-refs.d.ts +9 -1
- package/dist/cloud-scratch-refs.d.ts.map +1 -1
- package/dist/cloud-scratch-refs.js +9 -2
- package/dist/cloud-scratch-refs.js.map +1 -1
- package/dist/daemon-runtime.d.ts.map +1 -1
- package/dist/daemon-runtime.js +37 -5
- package/dist/daemon-runtime.js.map +1 -1
- package/dist/daemon-services.d.ts.map +1 -1
- package/dist/daemon-services.js +4 -2
- package/dist/daemon-services.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +7 -0
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/copy-logins.d.ts +1 -1
- package/dist/dashboard/copy-logins.d.ts.map +1 -1
- package/dist/dashboard/copy-logins.js +9 -6
- package/dist/dashboard/copy-logins.js.map +1 -1
- package/dist/dashboard/git-hosts.d.ts +1 -3
- package/dist/dashboard/git-hosts.d.ts.map +1 -1
- package/dist/dashboard/git-hosts.js +2 -2
- package/dist/dashboard/git-hosts.js.map +1 -1
- package/dist/dashboard/logins-sync.d.ts +25 -1
- package/dist/dashboard/logins-sync.d.ts.map +1 -1
- package/dist/dashboard/logins-sync.js +78 -15
- package/dist/dashboard/logins-sync.js.map +1 -1
- package/dist/dashboard/overview.d.ts +4 -2
- package/dist/dashboard/overview.d.ts.map +1 -1
- package/dist/dashboard/overview.js +7 -3
- package/dist/dashboard/overview.js.map +1 -1
- package/dist/dashboard/person.d.ts +13 -12
- package/dist/dashboard/person.d.ts.map +1 -1
- package/dist/dashboard/person.js +7 -21
- package/dist/dashboard/person.js.map +1 -1
- package/dist/dashboard/projects.d.ts.map +1 -1
- package/dist/dashboard/projects.js +5 -1
- package/dist/dashboard/projects.js.map +1 -1
- package/dist/dashboard/repos.d.ts +63 -0
- package/dist/dashboard/repos.d.ts.map +1 -0
- package/dist/dashboard/repos.js +131 -0
- package/dist/dashboard/repos.js.map +1 -0
- package/dist/dashboard/send-skills.d.ts +12 -1
- package/dist/dashboard/send-skills.d.ts.map +1 -1
- package/dist/dashboard/send-skills.js +11 -3
- package/dist/dashboard/send-skills.js.map +1 -1
- package/dist/dashboard/start-branch.d.ts.map +1 -1
- package/dist/dashboard/start-branch.js +5 -3
- package/dist/dashboard/start-branch.js.map +1 -1
- package/dist/dashboard/types.d.ts +26 -0
- package/dist/dashboard/types.d.ts.map +1 -1
- package/dist/dashboard-bundle/assets/host/module--PBDa8mk.js +1 -0
- package/dist/dashboard-bundle/assets/main-5Ke2be9l.js +152 -0
- package/dist/dashboard-bundle/assets/main-D9WdDo5V.css +2 -0
- package/dist/dashboard-bundle/assets/module-XkaUkYn0.js +19 -0
- package/dist/dashboard-bundle/index.html +4 -4
- package/dist/dashboard-rpc/agents.d.ts +64 -0
- package/dist/dashboard-rpc/agents.d.ts.map +1 -0
- package/dist/dashboard-rpc/agents.js +137 -0
- package/dist/dashboard-rpc/agents.js.map +1 -0
- package/dist/dashboard-rpc/copied-logins.d.ts +1 -1
- package/dist/dashboard-rpc/copied-logins.d.ts.map +1 -1
- package/dist/dashboard-rpc/copied-logins.js +7 -7
- package/dist/dashboard-rpc/copied-logins.js.map +1 -1
- package/dist/dashboard-rpc/hosted-repos.d.ts +42 -0
- package/dist/dashboard-rpc/hosted-repos.d.ts.map +1 -0
- package/dist/dashboard-rpc/hosted-repos.js +74 -0
- package/dist/dashboard-rpc/hosted-repos.js.map +1 -0
- package/dist/dashboard-rpc/index.d.ts +3 -2
- package/dist/dashboard-rpc/index.d.ts.map +1 -1
- package/dist/dashboard-rpc/index.js +5 -3
- package/dist/dashboard-rpc/index.js.map +1 -1
- package/dist/dashboard-rpc/logins.d.ts +1 -33
- package/dist/dashboard-rpc/logins.d.ts.map +1 -1
- package/dist/dashboard-rpc/logins.js +3 -51
- package/dist/dashboard-rpc/logins.js.map +1 -1
- package/dist/dashboard-rpc/modules.d.ts +4 -3
- package/dist/dashboard-rpc/modules.d.ts.map +1 -1
- package/dist/dashboard-rpc/modules.js +6 -5
- package/dist/dashboard-rpc/modules.js.map +1 -1
- package/dist/dashboard-rpc/person.d.ts +32 -1
- package/dist/dashboard-rpc/person.d.ts.map +1 -1
- package/dist/dashboard-rpc/person.js +49 -8
- package/dist/dashboard-rpc/person.js.map +1 -1
- package/dist/dashboard-rpc/personal-folder.d.ts +19 -2
- package/dist/dashboard-rpc/personal-folder.d.ts.map +1 -1
- package/dist/dashboard-rpc/personal-folder.js +24 -6
- package/dist/dashboard-rpc/personal-folder.js.map +1 -1
- package/dist/dashboard-rpc/project-agent-data.d.ts +12 -0
- package/dist/dashboard-rpc/project-agent-data.d.ts.map +1 -1
- package/dist/dashboard-rpc/project-agent-data.js +17 -2
- package/dist/dashboard-rpc/project-agent-data.js.map +1 -1
- package/dist/dashboard-rpc/projects.d.ts +62 -6
- package/dist/dashboard-rpc/projects.d.ts.map +1 -1
- package/dist/dashboard-rpc/projects.js +104 -15
- package/dist/dashboard-rpc/projects.js.map +1 -1
- package/dist/dashboard-rpc/reads.d.ts +1 -1
- package/dist/dashboard-rpc/reads.d.ts.map +1 -1
- package/dist/dashboard-rpc/reads.js +6 -2
- package/dist/dashboard-rpc/reads.js.map +1 -1
- package/dist/dashboard-rpc/runs-changed.d.ts.map +1 -1
- package/dist/dashboard-rpc/runs-changed.js +9 -3
- package/dist/dashboard-rpc/runs-changed.js.map +1 -1
- package/dist/dashboard-rpc/send-as.d.ts +42 -0
- package/dist/dashboard-rpc/send-as.d.ts.map +1 -0
- package/dist/dashboard-rpc/send-as.js +78 -0
- package/dist/dashboard-rpc/send-as.js.map +1 -0
- package/dist/dashboard-rpc/skills.d.ts +2 -1
- package/dist/dashboard-rpc/skills.d.ts.map +1 -1
- package/dist/dashboard-rpc/skills.js +6 -4
- package/dist/dashboard-rpc/skills.js.map +1 -1
- package/dist/module-types/dashboard/components/ui/confirm-dialog.d.ts +5 -1
- package/dist/module-types/dashboard/components/ui/row-item.d.ts +1 -2
- package/dist/module-types/dashboard/lib/route.d.ts +3 -3
- package/dist/module-types/dashboard/module/index.d.ts +2 -2
- package/dist/module-types/src/built-in.d.ts +9 -0
- package/dist/module-types/src/client.d.ts +3 -0
- package/dist/module-types/src/clone-project.d.ts +10 -8
- package/dist/module-types/src/dashboard/git-hosts.d.ts +1 -3
- package/dist/module-types/src/dashboard/logins-sync.d.ts +25 -1
- package/dist/module-types/src/dashboard/overview.d.ts +4 -2
- package/dist/module-types/src/dashboard/person.d.ts +13 -12
- package/dist/module-types/src/dashboard/repos.d.ts +62 -0
- package/dist/module-types/src/dashboard/send-skills.d.ts +12 -1
- package/dist/module-types/src/dashboard/types.d.ts +26 -0
- package/dist/module-types/src/dashboard-rpc/agents.d.ts +63 -0
- package/dist/module-types/src/dashboard-rpc/copied-logins.d.ts +1 -1
- package/dist/module-types/src/dashboard-rpc/hosted-repos.d.ts +41 -0
- package/dist/module-types/src/dashboard-rpc/index.d.ts +3 -2
- package/dist/module-types/src/dashboard-rpc/logins.d.ts +1 -33
- package/dist/module-types/src/dashboard-rpc/modules.d.ts +4 -3
- package/dist/module-types/src/dashboard-rpc/person.d.ts +32 -1
- package/dist/module-types/src/dashboard-rpc/personal-folder.d.ts +19 -2
- package/dist/module-types/src/dashboard-rpc/project-agent-data.d.ts +12 -0
- package/dist/module-types/src/dashboard-rpc/projects.d.ts +62 -6
- package/dist/module-types/src/dashboard-rpc/reads.d.ts +1 -1
- package/dist/module-types/src/dashboard-rpc/send-as.d.ts +41 -0
- package/dist/module-types/src/dashboard-rpc/skills.d.ts +2 -1
- package/dist/module-types/src/project-address.d.ts +8 -1
- package/dist/module-types/src/project-hooks.d.ts +12 -2
- package/dist/module-types/src/project-modules.d.ts +6 -0
- package/dist/module-types/src/project-skills/catalogue.d.ts +6 -9
- package/dist/module-types/src/registry.d.ts +13 -0
- package/dist/module-types/src/store/agent-store.d.ts +14 -0
- package/dist/module-types/src/store/branches.d.ts +7 -0
- package/dist/module-types/src/store/git-host.d.ts +1 -3
- package/dist/module-types/src/typed-repository.d.ts +16 -0
- package/dist/project-address.d.ts +8 -1
- package/dist/project-address.d.ts.map +1 -1
- package/dist/project-address.js +11 -4
- package/dist/project-address.js.map +1 -1
- package/dist/project-hooks.d.ts +12 -2
- package/dist/project-hooks.d.ts.map +1 -1
- package/dist/project-hooks.js +9 -2
- package/dist/project-hooks.js.map +1 -1
- package/dist/project-modules.d.ts +6 -0
- package/dist/project-modules.d.ts.map +1 -1
- package/dist/project-modules.js +13 -1
- package/dist/project-modules.js.map +1 -1
- package/dist/project-skills/catalogue.d.ts +6 -9
- package/dist/project-skills/catalogue.d.ts.map +1 -1
- package/dist/project-skills/catalogue.js +9 -8
- package/dist/project-skills/catalogue.js.map +1 -1
- package/dist/registry.d.ts +13 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +43 -2
- package/dist/registry.js.map +1 -1
- package/dist/sessions-home.d.ts +11 -0
- package/dist/sessions-home.d.ts.map +1 -0
- package/dist/sessions-home.js +41 -0
- package/dist/sessions-home.js.map +1 -0
- package/dist/store/agent-store.d.ts +14 -0
- package/dist/store/agent-store.d.ts.map +1 -1
- package/dist/store/agent-store.js.map +1 -1
- package/dist/store/branches.d.ts +7 -0
- package/dist/store/branches.d.ts.map +1 -1
- package/dist/store/branches.js +37 -2
- package/dist/store/branches.js.map +1 -1
- package/dist/store/git-host.d.ts +1 -3
- package/dist/store/git-host.d.ts.map +1 -1
- package/dist/store/git-host.js +0 -14
- package/dist/store/git-host.js.map +1 -1
- package/dist/typed-repository.d.ts +17 -0
- package/dist/typed-repository.d.ts.map +1 -0
- package/dist/typed-repository.js +29 -0
- package/dist/typed-repository.js.map +1 -0
- package/dist/website/assets/entries/{entry-client-routing.C33s8xOY.js → entry-client-routing.CvPemUV2.js} +2 -2
- package/dist/website/assets/entries/{pages_go-to-dashboard.C3OBfFYB.js → pages_go-to-dashboard.CUCqKDCh.js} +1 -1
- package/dist/website/banner/index.html +1 -1
- package/dist/website/go-to-dashboard/index.html +3 -3
- package/dist/website/index.html +1 -1
- package/dist/website/press/index.html +1 -1
- package/package.json +18 -18
- package/dist/dashboard-bundle/assets/host/module-BMyNrbiB.js +0 -1
- package/dist/dashboard-bundle/assets/main-BK8YIg7v.js +0 -152
- package/dist/dashboard-bundle/assets/main-mnNPGbsz.css +0 -2
- package/dist/dashboard-bundle/assets/module-DY3Aigsz.js +0 -19
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@ OpenAgent runs no coding agent and makes no model call. Starting an agent is run
|
|
|
39
39
|
`.openagent/hooks.yml`:
|
|
40
40
|
|
|
41
41
|
```yaml
|
|
42
|
-
start: agent-runner run --detach "$PROMPT" ${DRIVER:+--driver "$DRIVER"} ${MODEL:+--model "$MODEL"} ${EFFORT:+--effort "$EFFORT"} ${PUBLISH:+--publish "$PUBLISH"} ${BASE:+--base "$BASE"} ${PR_BASE:+--pr-base "$PR_BASE"}
|
|
42
|
+
start: agent-runner run --detach "$PROMPT" ${DRIVER:+--driver "$DRIVER"} ${MODEL:+--model "$MODEL"} ${EFFORT:+--effort "$EFFORT"} ${PUBLISH:+--publish "$PUBLISH"} ${BASE:+--base "$BASE"} ${PR_BASE:+--pr-base "$PR_BASE"} ${REPOS:+--repos "$REPOS"}
|
|
43
43
|
resume: agent-runner run --detach --resume "$RUN_ID" ${TEXT:+"$TEXT"} ${ANSWER:+--answer "$ANSWER"} ${PUBLISH:+--publish "$PUBLISH"}
|
|
44
44
|
check: agent-runner check ${DRIVER:+--driver "$DRIVER"}
|
|
45
45
|
```
|
|
@@ -71,6 +71,24 @@ launcher puts its name in `PR_BASE`, unless the Auto menu says main. The Auto me
|
|
|
71
71
|
pull request goes into" is shown only when the `start` line mentions `$PR_BASE`: an older line
|
|
72
72
|
gets it by adding `${PR_BASE:+--pr-base "$PR_BASE"}`. Without it the pull request goes to main.
|
|
73
73
|
|
|
74
|
+
A session with no project may have repos as context, picked with **Add repo** beside "No project":
|
|
75
|
+
their folders reach the line in `REPOS`, one per line, and `agent-runner` copies each into the
|
|
76
|
+
session's folder. The sessions home's lines are OpenAgent's own, written fresh each time it starts.
|
|
77
|
+
|
|
78
|
+
The session's agent (the **Agent** menu under the box) and its GitHub account (the control at
|
|
79
|
+
the right) reach the run through its environment, `OPENAGENT_AGENT` and `OPENAGENT_GIT_ACCOUNT`,
|
|
80
|
+
never on the line: `agent-runner` reads them as the line's own child. An agent is a name, skills
|
|
81
|
+
and accounts, a file in `~/.openagent/agents/`, edited on the Agents page; the skills it can be
|
|
82
|
+
given are handed down with the default ones (`OPENAGENT_SKILL_CATALOGUE`).
|
|
83
|
+
|
|
84
|
+
The **Skills** menu under the box picks, for this session alone, which skills the run gets: its
|
|
85
|
+
agent's ticked, any other carried skill tickable, and which of the project's own skills stay in
|
|
86
|
+
its checkout. The picks go the same way, in `OPENAGENT_SKILLS_ON`, `OPENAGENT_SKILLS_OFF` (names,
|
|
87
|
+
comma-separated) and `OPENAGENT_PROJECT_SKILLS` (`all`, `none` or names): `agent-runner` links the
|
|
88
|
+
agent's skills less the ones off plus the ones on, and leaves the project skills not picked out of
|
|
89
|
+
the run's checkout with git's sparse checkout, nothing committed. The record keeps the picks, and
|
|
90
|
+
a resume goes on with them.
|
|
91
|
+
|
|
74
92
|
The `check` line is what the launcher runs before a Start, with the picked coding agent in
|
|
75
93
|
`DRIVER`: it answers one JSON document with `problems` (a coding agent not installed or logged
|
|
76
94
|
out: said in red) and `warnings` (said in amber), each line naming its own fix. A project
|
package/dist/built-in.d.ts
CHANGED
|
@@ -11,6 +11,13 @@ import { type ProjectPackage, type ProvidedCommand, type ProvidedCommandLookup }
|
|
|
11
11
|
*/
|
|
12
12
|
/** The packages every project has: an agent cannot start, be shown or be put on a git host without them. */
|
|
13
13
|
export declare const BUILT_IN_PACKAGES: readonly string[];
|
|
14
|
+
/**
|
|
15
|
+
* Of the packages every project has, the ones whose pages and cards a project shows only once it
|
|
16
|
+
* picked their skill, by the rule of {@link PICKED_PACKAGES}. The logs package keeps every run's
|
|
17
|
+
* records, which the Log lists, so every project has it and its commands; its Logs page is a pick
|
|
18
|
+
* like any other skill's.
|
|
19
|
+
*/
|
|
20
|
+
export declare const PICKED_PAGES: readonly string[];
|
|
14
21
|
/**
|
|
15
22
|
* The packages that are this computer's and no project's: the door to it, the servers it
|
|
16
23
|
* installed OpenAgent on, and the accounts its runs use. Their pages show and their commands run with no project added, and
|
|
@@ -37,6 +44,8 @@ export declare function builtInPackages(): Promise<ProjectPackage[]>;
|
|
|
37
44
|
* the computer's: no project has those.
|
|
38
45
|
*/
|
|
39
46
|
export declare function builtInPackagesOf(root: string): Promise<ProjectPackage[]>;
|
|
47
|
+
/** Whether the project at `root` shows the pages and cards of `name`, one of the packages it has: always, but for one of {@link PICKED_PAGES} it did not pick. */
|
|
48
|
+
export declare function showsPages(root: string, name: string): Promise<boolean>;
|
|
40
49
|
/** The project's own installed packages, less the names OpenAgent brings itself. */
|
|
41
50
|
export declare function ownPackages(root: string): Promise<ProjectPackage[]>;
|
|
42
51
|
/**
|
package/dist/built-in.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"built-in.d.ts","sourceRoot":"","sources":["../src/built-in.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAA4H,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAErO;;;;;;;;GAQG;AAEH,4GAA4G;AAC5G,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAmK,CAAA;AAElN;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAsE,CAAA;AAErH;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAA6I,CAAA;AAE1L,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAqE,CAAA;AAYpH,iHAAiH;AACjH,wBAAgB,eAAe,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAE3D;AAsBD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAQ/E;
|
|
1
|
+
{"version":3,"file":"built-in.d.ts","sourceRoot":"","sources":["../src/built-in.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAA4H,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAErO;;;;;;;;GAQG;AAEH,4GAA4G;AAC5G,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAmK,CAAA;AAElN;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAA4B,CAAA;AAEtE;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAsE,CAAA;AAErH;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAA6I,CAAA;AAE1L,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAqE,CAAA;AAYpH,iHAAiH;AACjH,wBAAgB,eAAe,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAE3D;AAsBD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAQ/E;AAED,kKAAkK;AAClK,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAI7E;AAgCD,oFAAoF;AACpF,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAEzE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAEnE;AAED,4EAA4E;AAC5E,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAElE;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAElE;AAED,0IAA0I;AAC1I,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAMxD;AAED,wIAAwI;AACxI,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAE/F;AAED,gFAAgF;AAChF,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAEtG;AAED,gGAAgG;AAChG,wBAAgB,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAE3D;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQpE;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAkBtE"}
|
package/dist/built-in.js
CHANGED
|
@@ -13,6 +13,13 @@ import { declaring, SKILLS_DIRS, SKILLS_ENV, lookupProvidedCommand, packageBins,
|
|
|
13
13
|
*/
|
|
14
14
|
/** The packages every project has: an agent cannot start, be shown or be put on a git host without them. */
|
|
15
15
|
export const BUILT_IN_PACKAGES = ['@openagt/dashboard-changes', '@openagt/dashboard-files', '@openagt/skill-branches', '@openagt/skill-github', '@openagt/skill-logs', '@openagt/agent-runner'];
|
|
16
|
+
/**
|
|
17
|
+
* Of the packages every project has, the ones whose pages and cards a project shows only once it
|
|
18
|
+
* picked their skill, by the rule of {@link PICKED_PACKAGES}. The logs package keeps every run's
|
|
19
|
+
* records, which the Log lists, so every project has it and its commands; its Logs page is a pick
|
|
20
|
+
* like any other skill's.
|
|
21
|
+
*/
|
|
22
|
+
export const PICKED_PAGES = ['@openagt/skill-logs'];
|
|
16
23
|
/**
|
|
17
24
|
* The packages that are this computer's and no project's: the door to it, the servers it
|
|
18
25
|
* installed OpenAgent on, and the accounts its runs use. Their pages show and their commands run with no project added, and
|
|
@@ -67,12 +74,23 @@ export async function builtInPackagesOf(root) {
|
|
|
67
74
|
for (const pkg of await (resolved ??= resolveOwn())) {
|
|
68
75
|
if (pkg.of === 'the computer')
|
|
69
76
|
continue;
|
|
70
|
-
if (pkg.of === 'a pick' && !(await
|
|
77
|
+
if (pkg.of === 'a pick' && !(await picked(root, pkg)))
|
|
71
78
|
continue;
|
|
72
79
|
packages.push(pkg);
|
|
73
80
|
}
|
|
74
81
|
return packages;
|
|
75
82
|
}
|
|
83
|
+
/** Whether the project at `root` shows the pages and cards of `name`, one of the packages it has: always, but for one of {@link PICKED_PAGES} it did not pick. */
|
|
84
|
+
export async function showsPages(root, name) {
|
|
85
|
+
if (!PICKED_PAGES.includes(name))
|
|
86
|
+
return true;
|
|
87
|
+
const pkg = (await (resolved ??= resolveOwn())).find(own => own.name === name);
|
|
88
|
+
return pkg !== undefined && (await picked(root, pkg));
|
|
89
|
+
}
|
|
90
|
+
/** Whether the project at `root` has the skill of `pkg`: every run gets it by default, or the project holds its text. */
|
|
91
|
+
async function picked(root, pkg) {
|
|
92
|
+
return (await defaultSkills()).has(pkg.name) || (pkg.skill !== undefined && (await holdsSkill(root, pkg.skill)));
|
|
93
|
+
}
|
|
76
94
|
/** The default skills as read last, by the value they were read off. */
|
|
77
95
|
let defaults;
|
|
78
96
|
/** The names of the packages of the skills every run gets by default: see {@link SKILLS_ENV}. */
|
package/dist/built-in.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"built-in.js","sourceRoot":"","sources":["../src/built-in.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"built-in.js","sourceRoot":"","sources":["../src/built-in.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/skills.d.ts
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The skills every run gets by default: what an agent needs in any project to work at all,
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* handed, and the dashboard gives every project their pages. Each is linked into a run's checkout,
|
|
8
|
-
* hidden from git, and a project's own skill of the same name takes its place (see the runner's
|
|
9
|
-
* `basic-skills.ts`).
|
|
2
|
+
* The skills every run gets by default: what an agent needs in any project to work at all, ask
|
|
3
|
+
* the person a question, and hand its work over on the project's git host. Every other skill is
|
|
4
|
+
* one the person picks on the project's Skills page. The one place they are named: the runner
|
|
5
|
+
* links whatever it is handed. Each is linked into a run's checkout, hidden from git, and a
|
|
6
|
+
* project's own skill of the same name takes its place (see the runner's `basic-skills.ts`).
|
|
10
7
|
*/
|
|
11
8
|
export declare const DEFAULT_SKILLS: readonly string[];
|
|
12
9
|
/**
|
|
13
|
-
* Put the default skills in `env` under {@link SKILLS_ENV}
|
|
10
|
+
* Put the default skills in `env` under {@link SKILLS_ENV}, and every skill of the catalogue, which
|
|
11
|
+
* an agent picks from, under {@link SKILL_CATALOGUE_ENV}: their packages' directories, resolved
|
|
14
12
|
* from this package's own install, joined by the path delimiter. One that is not installed is
|
|
15
13
|
* left out.
|
|
16
14
|
*/
|
package/dist/cli/skills.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAAoD,CAAA;AAEhG;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB1E"}
|
package/dist/cli/skills.js
CHANGED
|
@@ -1,36 +1,39 @@
|
|
|
1
1
|
import { realpath } from 'node:fs/promises';
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { delimiter, dirname } from 'node:path';
|
|
4
|
-
import { SKILLS_ENV } from '@openagt/agent-data';
|
|
4
|
+
import { SKILL_CATALOGUE_ENV, SKILLS_ENV } from '@openagt/agent-data';
|
|
5
|
+
import { SKILL_NAMES } from '../project-skills/catalogue.js';
|
|
5
6
|
/**
|
|
6
|
-
* The skills every run gets by default: what an agent needs in any project to work at all,
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* handed, and the dashboard gives every project their pages. Each is linked into a run's checkout,
|
|
12
|
-
* hidden from git, and a project's own skill of the same name takes its place (see the runner's
|
|
13
|
-
* `basic-skills.ts`).
|
|
7
|
+
* The skills every run gets by default: what an agent needs in any project to work at all, ask
|
|
8
|
+
* the person a question, and hand its work over on the project's git host. Every other skill is
|
|
9
|
+
* one the person picks on the project's Skills page. The one place they are named: the runner
|
|
10
|
+
* links whatever it is handed. Each is linked into a run's checkout, hidden from git, and a
|
|
11
|
+
* project's own skill of the same name takes its place (see the runner's `basic-skills.ts`).
|
|
14
12
|
*/
|
|
15
|
-
export const DEFAULT_SKILLS = ['@openagt/skill-
|
|
13
|
+
export const DEFAULT_SKILLS = ['@openagt/skill-ask', '@openagt/skill-github'];
|
|
16
14
|
/**
|
|
17
|
-
* Put the default skills in `env` under {@link SKILLS_ENV}
|
|
15
|
+
* Put the default skills in `env` under {@link SKILLS_ENV}, and every skill of the catalogue, which
|
|
16
|
+
* an agent picks from, under {@link SKILL_CATALOGUE_ENV}: their packages' directories, resolved
|
|
18
17
|
* from this package's own install, joined by the path delimiter. One that is not installed is
|
|
19
18
|
* left out.
|
|
20
19
|
*/
|
|
21
20
|
export async function handDownSkills(env) {
|
|
22
21
|
const require = createRequire(import.meta.url);
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
const dirsOf = async (names) => {
|
|
23
|
+
const dirs = [];
|
|
24
|
+
for (const name of names) {
|
|
25
|
+
let manifest;
|
|
26
|
+
try {
|
|
27
|
+
manifest = require.resolve(`${name}/package.json`);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
dirs.push(await realpath(dirname(manifest)));
|
|
28
33
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
env[SKILLS_ENV] = dirs.join(delimiter);
|
|
34
|
+
return dirs.join(delimiter);
|
|
35
|
+
};
|
|
36
|
+
env[SKILLS_ENV] = await dirsOf(DEFAULT_SKILLS);
|
|
37
|
+
env[SKILL_CATALOGUE_ENV] = await dirsOf(SKILL_NAMES.map(name => `@openagt/skill-${name}`));
|
|
35
38
|
}
|
|
36
39
|
//# sourceMappingURL=skills.js.map
|
package/dist/cli/skills.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAE5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAsB,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,CAAA;AAEhG;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAsB;IACzD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAA;IAC9C,MAAM,MAAM,GAAG,KAAK,EAAE,KAAwB,EAAmB,EAAE;QACjE,MAAM,IAAI,GAAa,EAAE,CAAA;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,QAAgB,CAAA;YACpB,IAAI,CAAC;gBACH,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,eAAe,CAAC,CAAA;YACpD,CAAC;YAAC,MAAM,CAAC;gBACP,SAAQ;YACV,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC9C,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC7B,CAAC,CAAA;IACD,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;IAC9C,GAAG,CAAC,mBAAmB,CAAC,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,CAAA;AAC5F,CAAC"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { DRIVERS, DRIVER_LABELS, isDriverName, driverFromImpl, type DriverName } from './driver-names.js';
|
|
2
2
|
export { PUBLISH_LABELS, isPublishPick, offeredPublishPicks, publishPickIn, type PublishPick } from './publish-levels.js';
|
|
3
|
+
/** The default agent's id: the agent a run is on when none is picked (`agent-data`'s `agents.ts`). */
|
|
4
|
+
export declare const DEFAULT_AGENT = "default";
|
|
3
5
|
export { formatOpenAgentEvent } from './terminal.js';
|
|
4
6
|
export { ACCENTS, DEFAULT_ACCENT_LABELS, accentOf, CODE_FONTS, DOCUMENT_FONTS, FONTS, PALETTES, PALETTE_LABELS, type Accent, type CodeFont, type DocumentFont, type Font, type Palette } from './appearance.js';
|
|
5
7
|
export { runName } from './run-name.js';
|
|
@@ -7,6 +9,7 @@ export { foldScreenRows } from './screens.js';
|
|
|
7
9
|
export { formatBytes } from './format-bytes.js';
|
|
8
10
|
export { errorMessage } from './error-message.js';
|
|
9
11
|
export { publishedBase } from '@openagt/agent-data/names';
|
|
12
|
+
export { typedRepository, type TypedRepository } from './typed-repository.js';
|
|
10
13
|
export { pickedIds } from './events.js';
|
|
11
14
|
export { sessionInfo, agentErrors, type SessionInfo, type AgentError, } from './agent-view.js';
|
|
12
15
|
export { pendingChoices } from './open-choices.js';
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACzG,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACzH,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,IAAI,EAAE,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAE/M,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EACL,WAAW,EACX,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,UAAU,GAChB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGlD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAIlE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAE9J,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAEhH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AAEpE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,uBAAuB,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACjH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA"}
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACzG,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACzH,sGAAsG;AACtG,eAAO,MAAM,aAAa,YAAY,CAAA;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,IAAI,EAAE,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAE/M,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EACL,WAAW,EACX,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,UAAU,GAChB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGlD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAIlE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAE9J,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAEhH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AAEpE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,uBAAuB,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACjH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA"}
|
package/dist/client.js
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
// sandbox, node:fs/http, …) into the browser bundle. Types come from the root entry.
|
|
5
5
|
export { DRIVERS, DRIVER_LABELS, isDriverName, driverFromImpl } from './driver-names.js';
|
|
6
6
|
export { PUBLISH_LABELS, isPublishPick, offeredPublishPicks, publishPickIn } from './publish-levels.js';
|
|
7
|
+
/** The default agent's id: the agent a run is on when none is picked (`agent-data`'s `agents.ts`). */
|
|
8
|
+
export const DEFAULT_AGENT = 'default';
|
|
7
9
|
export { formatOpenAgentEvent } from './terminal.js';
|
|
8
10
|
export { ACCENTS, DEFAULT_ACCENT_LABELS, accentOf, CODE_FONTS, DOCUMENT_FONTS, FONTS, PALETTES, PALETTE_LABELS } from './appearance.js';
|
|
9
11
|
// What every list calls a run, so the same run never goes by two names.
|
|
@@ -12,6 +14,7 @@ export { foldScreenRows } from './screens.js';
|
|
|
12
14
|
export { formatBytes } from './format-bytes.js';
|
|
13
15
|
export { errorMessage } from './error-message.js';
|
|
14
16
|
export { publishedBase } from '@openagt/agent-data/names';
|
|
17
|
+
export { typedRepository } from './typed-repository.js';
|
|
15
18
|
export { pickedIds } from './events.js';
|
|
16
19
|
export { sessionInfo, agentErrors, } from './agent-view.js';
|
|
17
20
|
// Which questions a run still waits on: one rule for the run page and the daemon's own reads.
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,wFAAwF;AACxF,oFAAoF;AACpF,qFAAqF;AACrF,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAmB,MAAM,mBAAmB,CAAA;AACzG,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAoB,MAAM,qBAAqB,CAAA;AACzH,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAA0E,MAAM,iBAAiB,CAAA;AAC/M,wEAAwE;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EACL,WAAW,EACX,WAAW,GAGZ,MAAM,iBAAiB,CAAA;AACxB,8FAA8F;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,+FAA+F;AAC/F,8DAA8D;AAC9D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAClE,oGAAoG;AACpG,qGAAqG;AACrG,4FAA4F;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAE1D,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,qBAAqB,EAAuB,MAAM,0BAA0B,CAAA;AAC9J,6FAA6F;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,8HAA8H;AAC9H,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAoB,MAAM,sBAAsB,CAAA;AAChH,gHAAgH;AAChH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,mGAAmG;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACpE,+GAA+G;AAC/G,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,uBAAuB,EAAsB,MAAM,sBAAsB,CAAA;AACjH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAyE,MAAM,sBAAsB,CAAA"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,wFAAwF;AACxF,oFAAoF;AACpF,qFAAqF;AACrF,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAmB,MAAM,mBAAmB,CAAA;AACzG,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAoB,MAAM,qBAAqB,CAAA;AACzH,sGAAsG;AACtG,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAA;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAA0E,MAAM,iBAAiB,CAAA;AAC/M,wEAAwE;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,eAAe,EAAwB,MAAM,uBAAuB,CAAA;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EACL,WAAW,EACX,WAAW,GAGZ,MAAM,iBAAiB,CAAA;AACxB,8FAA8F;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,+FAA+F;AAC/F,8DAA8D;AAC9D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAClE,oGAAoG;AACpG,qGAAqG;AACrG,4FAA4F;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAE1D,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,qBAAqB,EAAuB,MAAM,0BAA0B,CAAA;AAC9J,6FAA6F;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,8HAA8H;AAC9H,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAoB,MAAM,sBAAsB,CAAA;AAChH,gHAAgH;AAChH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,mGAAmG;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACpE,+GAA+G;AAC/G,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,uBAAuB,EAAsB,MAAM,sBAAsB,CAAA;AACjH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAyE,MAAM,sBAAsB,CAAA"}
|
package/dist/clone-project.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type RemoteAccount } from '@openagt/agent-data';
|
|
1
2
|
/**
|
|
2
3
|
* A project added by its repository's address, for a computer that does not have its folder: a
|
|
3
4
|
* server that was just connected has no screen to pick a folder on and no folder to pick. The
|
|
@@ -5,8 +6,11 @@
|
|
|
5
6
|
* and that folder is then added like any other. Nothing is asked about where: the page says
|
|
6
7
|
* where it went.
|
|
7
8
|
*
|
|
8
|
-
* git clones
|
|
9
|
-
*
|
|
9
|
+
* git clones as one of OpenAgent's accounts at the repository's host (`account`), never with the
|
|
10
|
+
* person's own logins: their credential helpers are dropped, and an SSH address, which would use
|
|
11
|
+
* their own key, is refused unless the account's settings take it over the web. With no account
|
|
12
|
+
* there, only a public repository can be cloned. git is never let ask a person for a login: a
|
|
13
|
+
* repository it cannot read is refused in words.
|
|
10
14
|
*/
|
|
11
15
|
/** Where a repository is cloned from and to. */
|
|
12
16
|
export interface CloneTarget {
|
|
@@ -18,10 +22,8 @@ export interface CloneTarget {
|
|
|
18
22
|
path: string;
|
|
19
23
|
}
|
|
20
24
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* Undefined for anything else: a folder on this disk, another kind of address, a name that could
|
|
24
|
-
* be read as an option or lead out of the folder projects are cloned into.
|
|
25
|
+
* Where what a person typed would be cloned to: `~/projects/<its name>`, in the home of the user
|
|
26
|
+
* OpenAgent runs as. Undefined wherever {@link typedRepository} is.
|
|
25
27
|
*/
|
|
26
28
|
export declare function cloneTarget(typed: string, home?: string): CloneTarget | undefined;
|
|
27
29
|
/** How a clone went: the folder the project is in, and whether it was cloned now or was already there. */
|
|
@@ -55,8 +57,8 @@ export interface CloneOptions {
|
|
|
55
57
|
run?: CloneRunner;
|
|
56
58
|
env?: NodeJS.ProcessEnv;
|
|
57
59
|
timeoutMs?: number;
|
|
58
|
-
/** The
|
|
59
|
-
|
|
60
|
+
/** The account of OpenAgent's the repository is read as: its git settings. None: no login at all. */
|
|
61
|
+
account?: RemoteAccount;
|
|
60
62
|
}
|
|
61
63
|
/**
|
|
62
64
|
* Clone the repository a person typed the address of into `~/projects/<its name>`. A folder that
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone-project.d.ts","sourceRoot":"","sources":["../src/clone-project.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clone-project.d.ts","sourceRoot":"","sources":["../src/clone-project.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAG3E;;;;;;;;;;;;GAYG;AAEH,gDAAgD;AAChD,MAAM,WAAW,WAAW;IAC1B,yBAAyB;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAA;IACf,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAkB,GAAG,WAAW,GAAG,SAAS,CAG5F;AAED,0GAA0G;AAC1G,MAAM,MAAM,MAAM,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE/F,4EAA4E;AAC5E,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAAA;AAwBxK,oHAAoH;AACpH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAGtI;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,WAAW,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qGAAqG;IACrG,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB;AAKD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CASpF;AA6BD;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,EAAE,OAAO,SAAkB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CASrJ"}
|
package/dist/clone-project.js
CHANGED
|
@@ -2,39 +2,15 @@ import { execFile } from 'node:child_process';
|
|
|
2
2
|
import { lstat, mkdir, mkdtemp, rename, rm } from 'node:fs/promises';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { basename, dirname, join } from 'node:path';
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
const SEGMENT = /^[a-z0-9_][a-z0-9._~-]*$/i;
|
|
8
|
-
const MAX_TYPED = 512;
|
|
5
|
+
import { repositoryAddress } from '@openagt/agent-data';
|
|
6
|
+
import { typedRepository } from './typed-repository.js';
|
|
9
7
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* Undefined for anything else: a folder on this disk, another kind of address, a name that could
|
|
13
|
-
* be read as an option or lead out of the folder projects are cloned into.
|
|
8
|
+
* Where what a person typed would be cloned to: `~/projects/<its name>`, in the home of the user
|
|
9
|
+
* OpenAgent runs as. Undefined wherever {@link typedRepository} is.
|
|
14
10
|
*/
|
|
15
11
|
export function cloneTarget(typed, home = homedir()) {
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
return undefined;
|
|
19
|
-
const scp = /^([a-z0-9_][a-z0-9._-]*)@([^:/@]+):([^:].*)$/i.exec(said);
|
|
20
|
-
const web = scp ? null : /^(?:(https|ssh):\/\/(?:([a-z0-9_][a-z0-9._-]*)@)?)?([^:/@]+)(?::(\d{1,5}))?\/(.+)$/i.exec(said);
|
|
21
|
-
const [host, rest] = scp ? [scp[2], scp[3]] : web ? [web[3], web[5]] : [];
|
|
22
|
-
if (host === undefined || rest === undefined || !HOST.test(host) || !host.includes('.'))
|
|
23
|
-
return undefined;
|
|
24
|
-
const segments = rest.split('/');
|
|
25
|
-
if (!segments.every(segment => SEGMENT.test(segment)))
|
|
26
|
-
return undefined;
|
|
27
|
-
const name = segments.at(-1).replace(/\.git$/i, '');
|
|
28
|
-
if (!name || !SEGMENT.test(name))
|
|
29
|
-
return undefined;
|
|
30
|
-
const scheme = web?.[1]?.toLowerCase();
|
|
31
|
-
// A user or a port is for SSH; a web address has neither, so no login rides in what was typed.
|
|
32
|
-
if (web && scheme !== 'ssh' && (web[2] !== undefined || web[4] !== undefined))
|
|
33
|
-
return undefined;
|
|
34
|
-
// Written anew from its parts, so git is given the two kinds of address it is allowed, as it spells them.
|
|
35
|
-
const url = scp ? said : scheme === 'ssh' ? `ssh://${web[2] !== undefined ? `${web[2]}@` : ''}${host}${web[4] !== undefined ? `:${web[4]}` : ''}/${rest}` : `https://${host}/${rest}`;
|
|
36
|
-
const address = addressOfRemote(url);
|
|
37
|
-
return address ? { url, address, path: join(home, 'projects', name) } : undefined;
|
|
12
|
+
const repository = typedRepository(typed);
|
|
13
|
+
return repository && { url: repository.url, address: repository.address, path: join(home, 'projects', repository.name) };
|
|
38
14
|
}
|
|
39
15
|
const nodeCloneRunner = (args, env, timeoutMs) => new Promise(done => {
|
|
40
16
|
execFile('git', [...args], { env, timeout: timeoutMs, maxBuffer: 4 * 1024 * 1024 }, (error, _stdout, stderr) => {
|
|
@@ -45,16 +21,12 @@ const nodeCloneRunner = (args, env, timeoutMs) => new Promise(done => {
|
|
|
45
21
|
done({ ok: false, said: String(stderr), timedOut });
|
|
46
22
|
});
|
|
47
23
|
});
|
|
48
|
-
/** The way to SSH a person set for git on this computer, when they set one: which key, which program. */
|
|
49
|
-
const ownSshCommand = (env) => new Promise(done => execFile('git', ['config', '--get', 'core.sshCommand'], { env, cwd: homedir(), timeout: 10_000 }, (error, stdout) => done(error ? undefined : String(stdout).trim() || undefined)));
|
|
50
24
|
/** How long a clone may take: a large repository over a slow line, not a hang. */
|
|
51
25
|
const CLONE_TIMEOUT_MS = 15 * 60_000;
|
|
52
26
|
/** How long asking a repository's host whether it is readable may take. */
|
|
53
27
|
const READ_TIMEOUT_MS = 30_000;
|
|
54
|
-
/** What git says when it has no login that can read a repository
|
|
55
|
-
const NO_LOGIN = /could not read Username|Authentication failed|terminal prompts disabled|
|
|
56
|
-
/** What SSH says of a host this computer has never met: it would ask a person, and nobody is there to answer. */
|
|
57
|
-
const NOT_MET = /Host key verification failed/i;
|
|
28
|
+
/** What git says when it has no login that can read a repository. */
|
|
29
|
+
const NO_LOGIN = /could not read Username|Authentication failed|terminal prompts disabled|Repository not found/i;
|
|
58
30
|
/** What git says after every failure, whatever the reason. */
|
|
59
31
|
const SAID_EVERY_TIME = /^(Cloning into |Please make sure you have the correct access rights|and the repository exists)/;
|
|
60
32
|
const NOT_AN_ADDRESS = "is not a repository's address. One looks like github.com/you/project.";
|
|
@@ -95,6 +67,9 @@ async function cloneTo({ url, address, path }, opts) {
|
|
|
95
67
|
const already = await there();
|
|
96
68
|
if (already)
|
|
97
69
|
return already;
|
|
70
|
+
const ssh = overSsh(url, address, opts);
|
|
71
|
+
if (ssh)
|
|
72
|
+
return ssh;
|
|
98
73
|
const projects = dirname(path);
|
|
99
74
|
await mkdir(projects, { recursive: true });
|
|
100
75
|
// A name no repository has: one starts with a letter, a digit or an underscore.
|
|
@@ -122,6 +97,9 @@ export async function canRead(typed, opts = {}, subject = 'This computer') {
|
|
|
122
97
|
const target = cloneTarget(typed, opts.home);
|
|
123
98
|
if (!target)
|
|
124
99
|
return { ok: false, error: `"${typed.trim().slice(0, 80)}" ${NOT_AN_ADDRESS}` };
|
|
100
|
+
const ssh = overSsh(target.url, target.address, opts);
|
|
101
|
+
if (ssh)
|
|
102
|
+
return ssh;
|
|
125
103
|
const said = await askGit(['ls-remote', '--heads', '--', target.url], opts, READ_TIMEOUT_MS);
|
|
126
104
|
if (said.ok)
|
|
127
105
|
return { ok: true };
|
|
@@ -129,22 +107,33 @@ export async function canRead(typed, opts = {}, subject = 'This computer') {
|
|
|
129
107
|
return { ok: false, error: `${target.address} did not answer in time.` };
|
|
130
108
|
return { ok: false, error: gitRefusal(said.said, target.address, 'git could not read it.', subject) };
|
|
131
109
|
}
|
|
132
|
-
/**
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
110
|
+
/**
|
|
111
|
+
* An SSH address would be read with the person's own key: refused, unless the account's settings
|
|
112
|
+
* take that host's SSH addresses over the web, where the account's login is the one asked.
|
|
113
|
+
*/
|
|
114
|
+
function overSsh(url, address, opts) {
|
|
115
|
+
if (/^https:\/\//i.test(url))
|
|
116
|
+
return undefined;
|
|
117
|
+
const host = address.split('/')[0];
|
|
118
|
+
const rewritten = opts.account?.config.some(([key, value]) => key === `url.https://${host}/.insteadOf` && url.startsWith(value));
|
|
119
|
+
if (rewritten)
|
|
120
|
+
return undefined;
|
|
121
|
+
return { ok: false, error: `OpenAgent reads ${address} over SSH only through one of its own accounts, never with your own key. Paste its https:// address${opts.account ? '' : `, or add an account at ${host} in Permissions`}.` };
|
|
122
|
+
}
|
|
123
|
+
/** Run git about a repository the way a clone does: over the web only, as the account given or no login, never a question to a person. */
|
|
124
|
+
function askGit(args, opts, timeoutMs) {
|
|
125
|
+
// The person's credential helpers dropped, the keychain's too; the account's in their place.
|
|
126
|
+
const login = ['-c', 'credential.helper=', ...(opts.account?.config ?? []).flatMap(([key, value]) => ['-c', `${key}=${value}`])];
|
|
136
127
|
return (opts.run ?? nodeCloneRunner)(
|
|
137
|
-
//
|
|
138
|
-
['-c', 'protocol.allow=never', '-c', 'protocol.https.allow=always',
|
|
139
|
-
// Never a question to a person, in a terminal or in a window: nobody is there to answer one.
|
|
140
|
-
{ ...env, GIT_TERMINAL_PROMPT: '0', GIT_ASKPASS: ''
|
|
128
|
+
// Over the web only: SSH would use the person's own key, and git never runs a program an address could name.
|
|
129
|
+
[...login, '-c', 'protocol.allow=never', '-c', 'protocol.https.allow=always', ...args],
|
|
130
|
+
// Never a question to a person, in a terminal or in a window: nobody is there to answer one.
|
|
131
|
+
{ ...(opts.env ?? process.env), GIT_TERMINAL_PROMPT: '0', GIT_ASKPASS: '' }, opts.timeoutMs ?? timeoutMs);
|
|
141
132
|
}
|
|
142
133
|
/** What git said when it could not reach the repository, in a person's words, of the computer it ran on. */
|
|
143
134
|
function gitRefusal(said, address, otherwise, subject = 'This computer') {
|
|
144
135
|
const lines = said.split('\n').map(line => line.trim().replace(/^(fatal|error): /i, '')).filter(line => line && !SAID_EVERY_TIME.test(line));
|
|
145
136
|
const words = lines.slice(-2).join(' ') || otherwise;
|
|
146
|
-
|
|
147
|
-
return `${subject} has never met ${address.split('/')[0]} over SSH, so it does not know it is the real one. Use the address that starts with https://, or connect to it once in a terminal. git said: ${words}`;
|
|
148
|
-
return NO_LOGIN.test(said) ? `${subject} has no login that can read ${address}, or there is no such repository: a private one needs a login. git said: ${words}` : words;
|
|
137
|
+
return NO_LOGIN.test(said) ? `${subject} has no account of OpenAgent's that can read ${address}, or there is no such repository: a private one needs one, added in Permissions. git said: ${words}` : words;
|
|
149
138
|
}
|
|
150
139
|
//# sourceMappingURL=clone-project.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone-project.js","sourceRoot":"","sources":["../src/clone-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"clone-project.js","sourceRoot":"","sources":["../src/clone-project.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type GitRunner } from '@openagt/agent-data';
|
|
1
|
+
import { type GitRunner, type RemoteAccount } from '@openagt/agent-data';
|
|
2
2
|
import { type LinkedPr } from './dashboard/pull-requests.js';
|
|
3
3
|
import { type AgentMeta } from './store/index.js';
|
|
4
4
|
import { type ProjectPass, type ProjectsSource } from './project-pass.js';
|
|
@@ -71,6 +71,14 @@ export interface CloudScratchSweepOptions {
|
|
|
71
71
|
log: (message: string) => void;
|
|
72
72
|
/** The agents the daemon is still responsible for, whose run branches this must not touch. */
|
|
73
73
|
busy?: () => ReadonlySet<string>;
|
|
74
|
+
/** The account of OpenAgent's a project's origin is talked with as: never the person's own login. */
|
|
75
|
+
pushAccount?: (cwd: string) => Promise<{
|
|
76
|
+
ok: true;
|
|
77
|
+
account?: RemoteAccount;
|
|
78
|
+
} | {
|
|
79
|
+
ok: false;
|
|
80
|
+
error: string;
|
|
81
|
+
}>;
|
|
74
82
|
/** The per-project sweep (default {@link sweepCloudScratchRefs}). */
|
|
75
83
|
sweep?: (cwd: string) => Promise<ScratchSweepResult>;
|
|
76
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-scratch-refs.d.ts","sourceRoot":"","sources":["../src/cloud-scratch-refs.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"cloud-scratch-refs.d.ts","sourceRoot":"","sources":["../src/cloud-scratch-refs.ts"],"names":[],"mappings":"AACA,OAAO,EAA0C,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEhH,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAC1E,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAG7D,OAAO,EAAoB,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAA;AA8B3F,2FAA2F;AAC3F,eAAO,MAAM,uBAAuB,QAAsB,CAAA;AAE1D;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,QAA4B,CAAA;AAe1D,8EAA8E;AAC9E,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACnC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACnC;AAQD,iDAAiD;AACjD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AA4BD,8FAA8F;AAC9F,MAAM,MAAM,iBAAiB;AAC3B,+FAA+F;AAC7F,OAAO;AACT,4DAA4D;GAC1D,MAAM;AACR,0EAA0E;GACxE,YAAY;AACd,uDAAuD;GACrD,SAAS,CAAA;AAEb,mEAAmE;AACnE,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,0FAA0F;IAC1F,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAA;KAAE,EAAE,CAAA;IAClD,0EAA0E;IAC1E,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACzC;AAED,qGAAqG;AACrG,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,mEAAmE;IACnE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC1D,EAAE,CAAC,EAAE,SAAS,CAAA;IACd,iFAAiF;IACjF,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6FAA6F;IAC7F,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1B,+GAA+G;IAC/G,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;CAC/C;AAkFD;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgGjH;AAED,iEAAiE;AACjE,MAAM,WAAW,wBAAwB;IACvC,wCAAwC;IACxC,QAAQ,EAAE,cAAc,CAAA;IACxB,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,8FAA8F;IAC9F,IAAI,CAAC,EAAE,MAAM,WAAW,CAAC,MAAM,CAAC,CAAA;IAChC,qGAAqG;IACrG,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,OAAO,CAAC,EAAE,aAAa,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC5G,qEAAqE;IACrE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAA;CACrD;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,wBAAwB,GAAG,WAAW,CAoBlF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { join } from 'node:path';
|
|
2
|
-
import { DATA_BRANCH, nodeGitRunner } from '@openagt/agent-data';
|
|
2
|
+
import { DATA_BRANCH, accountGit, nodeGitRunner } from '@openagt/agent-data';
|
|
3
3
|
import { OPENAGENT_DIR } from './openagent-dir.js';
|
|
4
4
|
import { prsForBranch } from './dashboard/pull-requests.js';
|
|
5
5
|
import { listAgents } from './store/index.js';
|
|
@@ -260,7 +260,14 @@ export async function sweepCloudScratchRefs(cwd, deps = {}) {
|
|
|
260
260
|
* noise. A ref vanishing from origin with no line explaining why would read as a bug.
|
|
261
261
|
*/
|
|
262
262
|
export function startCloudScratchSweep(opts) {
|
|
263
|
-
const sweep = opts.sweep ??
|
|
263
|
+
const sweep = opts.sweep ??
|
|
264
|
+
(async (cwd) => {
|
|
265
|
+
// Origin is read and its refs deleted as one of OpenAgent's accounts; a project with none to go as is left alone.
|
|
266
|
+
const as = opts.pushAccount ? await opts.pushAccount(cwd) : { ok: true };
|
|
267
|
+
if (!as.ok)
|
|
268
|
+
return { deleted: [], kept: [], failed: [] };
|
|
269
|
+
return sweepCloudScratchRefs(cwd, { git: accountGit(nodeGitRunner(), as.account), ...(opts.busy ? { busy: opts.busy() } : {}) });
|
|
270
|
+
});
|
|
264
271
|
// No timer of its own (E4): the daemon's one clock calls `tick`.
|
|
265
272
|
return startProjectPass(opts.projects, async (cwd) => {
|
|
266
273
|
const { deleted, failed } = await sweep(cwd).catch(() => ({ deleted: [], kept: [], failed: [] }));
|