@openagt/dashboard 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -11
- package/dist/built-in.d.ts +38 -16
- package/dist/built-in.d.ts.map +1 -1
- package/dist/built-in.js +85 -31
- package/dist/built-in.js.map +1 -1
- package/dist/daemon-runtime.d.ts.map +1 -1
- package/dist/daemon-runtime.js +1 -2
- package/dist/daemon-runtime.js.map +1 -1
- package/dist/dashboard/start-branch.d.ts +32 -0
- package/dist/dashboard/start-branch.d.ts.map +1 -0
- package/dist/dashboard/start-branch.js +47 -0
- package/dist/dashboard/start-branch.js.map +1 -0
- package/dist/dashboard-bundle/assets/main-Q7JMdMJI.css +2 -0
- package/dist/dashboard-bundle/assets/main-fDZWGOub.js +140 -0
- package/dist/dashboard-bundle/assets/{module-v213KWfH.js → module-gKz-ZvkG.js} +2 -2
- package/dist/dashboard-bundle/host/module.js +1 -1
- package/dist/dashboard-bundle/index.html +3 -3
- package/dist/dashboard-rpc/index.d.ts +1 -0
- package/dist/dashboard-rpc/index.d.ts.map +1 -1
- package/dist/dashboard-rpc/index.js +3 -1
- package/dist/dashboard-rpc/index.js.map +1 -1
- package/dist/dashboard-rpc/projects.d.ts.map +1 -1
- package/dist/dashboard-rpc/projects.js +8 -1
- package/dist/dashboard-rpc/projects.js.map +1 -1
- package/dist/dashboard-rpc/skills.d.ts +80 -0
- package/dist/dashboard-rpc/skills.d.ts.map +1 -0
- package/dist/dashboard-rpc/skills.js +84 -0
- package/dist/dashboard-rpc/skills.js.map +1 -0
- package/dist/module-types/dashboard/components/ui/switch.d.ts +7 -0
- package/dist/module-types/dashboard/module/index.d.ts +1 -0
- package/dist/module-types/src/built-in.d.ts +38 -16
- package/dist/module-types/src/dashboard/start-branch.d.ts +31 -0
- package/dist/module-types/src/dashboard-rpc/index.d.ts +1 -0
- package/dist/module-types/src/dashboard-rpc/skills.d.ts +79 -0
- package/dist/module-types/src/openagent-dir.d.ts +3 -5
- package/dist/module-types/src/project-commands.d.ts +4 -0
- package/dist/module-types/src/project-hooks.d.ts +8 -5
- package/dist/module-types/src/project-modules.d.ts +8 -6
- package/dist/module-types/src/store/branches.d.ts +1 -1
- package/dist/module-types/src/store/git-host.d.ts +1 -1
- package/dist/module-types/src/store/queue.d.ts +1 -1
- package/dist/module-types/src/store/runs.d.ts +1 -1
- package/dist/module-types/src/store/tickets.d.ts +1 -1
- package/dist/openagent-dir.d.ts +3 -5
- package/dist/openagent-dir.d.ts.map +1 -1
- package/dist/openagent-dir.js +3 -5
- package/dist/openagent-dir.js.map +1 -1
- package/dist/project-commands.d.ts +4 -0
- package/dist/project-commands.d.ts.map +1 -1
- package/dist/project-commands.js.map +1 -1
- package/dist/project-hooks.d.ts +8 -5
- package/dist/project-hooks.d.ts.map +1 -1
- package/dist/project-hooks.js +9 -6
- package/dist/project-hooks.js.map +1 -1
- package/dist/project-modules.d.ts +8 -6
- package/dist/project-modules.d.ts.map +1 -1
- package/dist/project-modules.js +7 -13
- package/dist/project-modules.js.map +1 -1
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +1 -2
- package/dist/project.js.map +1 -1
- package/dist/store/branches.d.ts +1 -1
- package/dist/store/branches.js +1 -1
- package/dist/store/git-host.d.ts +1 -1
- package/dist/store/git-host.js +2 -2
- package/dist/store/git-host.js.map +1 -1
- package/dist/store/queue.d.ts +1 -1
- package/dist/store/queue.js +1 -1
- package/dist/store/runs.d.ts +1 -1
- package/dist/store/runs.js +1 -1
- package/dist/store/test-branches.d.ts +0 -8
- package/dist/store/test-branches.d.ts.map +1 -1
- package/dist/store/test-branches.js +0 -24
- package/dist/store/test-branches.js.map +1 -1
- package/dist/store/tickets.d.ts +1 -1
- package/dist/store/tickets.js +1 -1
- package/package.json +16 -13
- package/dist/dashboard-bundle/assets/main-B98UOA3_.js +0 -140
- package/dist/dashboard-bundle/assets/main-ByRjbCiA.css +0 -2
package/README.md
CHANGED
|
@@ -51,9 +51,9 @@ document whose `id` names the agent it began. From there the agent belongs to wh
|
|
|
51
51
|
line started. Adding a project writes these three lines into the file, so a new project, an
|
|
52
52
|
empty folder included, starts an agent with nothing typed by hand. They are a default: a line
|
|
53
53
|
already there is kept, and any of them can be changed or deleted. A line finds its tools in the
|
|
54
|
-
|
|
54
|
+
packages the dashboard brings first, `agent-runner` and `agent-scheduler` among them, then in the project's installed ones;
|
|
55
55
|
nothing is downloaded to run a line. A project with no `start` line cannot start an agent from
|
|
56
|
-
the dashboard, and the dashboard says so. `npx agent-scheduler init`, run in the project, writes
|
|
56
|
+
the dashboard, and the dashboard says so. `npx @openagt/agent-scheduler@0.1 init`, run in the project, writes
|
|
57
57
|
the scheduler's `open` and `close` lines (they start it when the dashboard opens and stop it
|
|
58
58
|
when it closes), keeping any line already there. The file's keys are `open`, `close`, `start`, `resume` and `check`; any other key
|
|
59
59
|
is refused and the whole file ignored.
|
|
@@ -76,11 +76,12 @@ The `check` line is what the launcher runs before a Start, with the picked codin
|
|
|
76
76
|
out: said in red) and `warnings` (said in amber), each line naming its own fix. A project
|
|
77
77
|
with no `check` line shows nothing there.
|
|
78
78
|
|
|
79
|
-
A package's own settings are no hook. The scheduler's
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
`agent-scheduler offset`, `switch
|
|
79
|
+
A package's own settings are no hook. The scheduler's are the scheduler package's own part of
|
|
80
|
+
the dashboard: its Automations page holds a switch, a pace, a number of agents at once and a
|
|
81
|
+
publish pick per scheduled command, its Settings section holds how far past the quota boundary
|
|
82
|
+
it may start unattended work, and the handle on the usage bar is its stop line. That part reads
|
|
83
|
+
them with `agent-scheduler status` and saves them with `agent-scheduler offset`, `switch`,
|
|
84
|
+
`pace`, `agents` and `publish`.
|
|
84
85
|
|
|
85
86
|
The dashboard is a **projection of the agent's own files**. The agent's tool keeps the
|
|
86
87
|
agent's card (`<id>.json`) and diary (`<id>.jsonl`) under `.openagent/` in the agent's
|
|
@@ -116,10 +117,6 @@ needs only its lines carried home.
|
|
|
116
117
|
- `dashboard/` — the browser app: a Vite SPA the daemon serves as static files,
|
|
117
118
|
talking back over plain HTTP. See [its README](./dashboard/README.md).
|
|
118
119
|
|
|
119
|
-
A `LOGIC.md` sits beside every source file and directory, describing the business
|
|
120
|
-
logic it implements, in prose written to be read instead of the code.
|
|
121
|
-
[`LOGIC.md`](./LOGIC.md) at the package root is the place to start.
|
|
122
|
-
|
|
123
120
|
## Status
|
|
124
121
|
|
|
125
122
|
Pre-release, published from the `0.x` line. There are no users to keep compatible,
|
package/dist/built-in.d.ts
CHANGED
|
@@ -1,38 +1,60 @@
|
|
|
1
1
|
import type { CleanupReport } from './dashboard/types.js';
|
|
2
2
|
import { type ProjectPackage, type ProvidedCommand, type ProvidedCommandLookup } from '@openagt/agent-data';
|
|
3
3
|
/**
|
|
4
|
-
* The packages OpenAgent
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* The packages OpenAgent brings, by name: dependencies of OpenAgent itself, resolved from its
|
|
5
|
+
* own install, so a project installs nothing for them and an empty folder starts an agent and
|
|
6
|
+
* shows it. Each comes through the same contract as any package: a module by its `./dashboard`
|
|
7
|
+
* export, a provider of a kind of data and the writer of its hook lines by its `openagent` key.
|
|
8
|
+
* These two lists are the one place OpenAgent names a package. One of these names among a
|
|
9
|
+
* project's own dependencies is not read: OpenAgent's copy, and the rules below for which
|
|
10
|
+
* project has it, are the only ones.
|
|
10
11
|
*/
|
|
12
|
+
/** The packages every project has: an agent cannot start, be shown or be put on a git host without them. */
|
|
11
13
|
export declare const BUILT_IN_PACKAGES: readonly string[];
|
|
12
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* The packages a project has once it picked them (#2023). A skill's package is the project's
|
|
16
|
+
* when the project holds the skill's text where the coding agents read it
|
|
17
|
+
* (`.claude/skills/<name>/SKILL.md`, `.agents/skills/<name>/SKILL.md`): the rule the launcher
|
|
18
|
+
* already lists a project's commands by, so deleting the skill's folder takes its page away. A
|
|
19
|
+
* tool with no skill text (the scheduler) is the project's when one of the project's hook lines
|
|
20
|
+
* runs it.
|
|
21
|
+
*/
|
|
22
|
+
export declare const PICKED_PACKAGES: readonly string[];
|
|
23
|
+
/** Every name OpenAgent brings itself. */
|
|
24
|
+
export declare const OWN_PACKAGE_NAMES: readonly string[];
|
|
25
|
+
/** Every package OpenAgent brings, resolved from its own install, once; one that is not installed is skipped. */
|
|
13
26
|
export declare function builtInPackages(): Promise<ProjectPackage[]>;
|
|
14
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* The packages OpenAgent brings to the project at `root`: the ones every project has, and
|
|
29
|
+
* each picked one the project has by its rule (see {@link PICKED_PACKAGES}). Read off the
|
|
30
|
+
* project's files each time, so a skill written or deleted a moment ago counts at once.
|
|
31
|
+
*/
|
|
32
|
+
export declare function builtInPackagesOf(root: string): Promise<ProjectPackage[]>;
|
|
33
|
+
/** The project's own installed packages, less the names OpenAgent brings itself. */
|
|
34
|
+
export declare function ownPackages(root: string): Promise<ProjectPackage[]>;
|
|
35
|
+
/** The directories the commands of OpenAgent's packages sit in: what a hook line's PATH gains after the project's own installed tools. */
|
|
15
36
|
export declare function builtInBinDirs(): Promise<string[]>;
|
|
16
|
-
/** What provides `kind` in the project at `root`:
|
|
37
|
+
/** What provides `kind` in the project at `root`: a package the project installed for it, else one OpenAgent brings to this project. */
|
|
17
38
|
export declare function lookupProvided(root: string, kind: string): Promise<ProvidedCommandLookup>;
|
|
18
39
|
/** {@link lookupProvided}'s command, for a caller that only needs to run it. */
|
|
19
40
|
export declare function providedCommand(root: string, kind: string): Promise<ProvidedCommand | undefined>;
|
|
20
|
-
/** Whether `command` comes from a
|
|
21
|
-
export declare function isBuiltIn(
|
|
41
|
+
/** Whether `command` comes from a package OpenAgent brings: one the project did not install. */
|
|
42
|
+
export declare function isBuiltIn(command: ProvidedCommand): boolean;
|
|
22
43
|
/**
|
|
23
44
|
* Have every package that writes hook lines write its own into the project at `root`: a package
|
|
24
45
|
* declares `"openagent": { "hooks": "<command>" }`, and `<command> init`, run in the project,
|
|
25
46
|
* writes its lines into the project's hooks file, keeping every line already there. The project's
|
|
26
|
-
* own packages are asked, then the
|
|
27
|
-
*
|
|
47
|
+
* own packages are asked, then the ones OpenAgent brings to it. Answers one line per package
|
|
48
|
+
* that could not write, in words.
|
|
28
49
|
*/
|
|
29
50
|
export declare function writeHookLines(root: string): Promise<string[]>;
|
|
30
51
|
/**
|
|
31
52
|
* Have every package that declares a clean-up remove what it left in the project at `root`: a
|
|
32
53
|
* package declares `"openagent": { "cleanup": "<command>" }`, and `<command> cleanup`, run in the
|
|
33
|
-
* project, answers `{ ok: true, removed, kept }`. The project's own packages are asked, then
|
|
34
|
-
*
|
|
35
|
-
*
|
|
54
|
+
* project, answers `{ ok: true, removed, kept }`. The project's own packages are asked, then
|
|
55
|
+
* every package OpenAgent brings, also one this project no longer has (what it left stays its
|
|
56
|
+
* own to remove), each whatever the one before answered. A package that refuses, fails or answers
|
|
57
|
+
* something else is one line in `failed`, in words.
|
|
36
58
|
*/
|
|
37
59
|
export declare function runCleanups(root: string): Promise<CleanupReport>;
|
|
38
60
|
//# sourceMappingURL=built-in.d.ts.map
|
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;
|
|
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;AAGzD,OAAO,EAA6G,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAEtN;;;;;;;;GAQG;AAEH,4GAA4G;AAC5G,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAA2H,CAAA;AAE1K;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAAmH,CAAA;AAEhK,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAA+C,CAAA;AAY9F,iHAAiH;AACjH,wBAAgB,eAAe,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAE3D;AAqBD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAU/E;AAqBD,oFAAoF;AACpF,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAEzE;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
|
@@ -1,25 +1,40 @@
|
|
|
1
|
-
import { realpath } from 'node:fs/promises';
|
|
1
|
+
import { readFile, realpath, stat } from 'node:fs/promises';
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { dirname, join } from 'node:path';
|
|
4
|
-
import {
|
|
4
|
+
import { SKILLS_DIRS } from './project-commands.js';
|
|
5
|
+
import { readProjectHooks } from './project-hooks.js';
|
|
6
|
+
import { declaring, lineRuns, lookupProvidedCommand, packageBins, projectPackages, readManifest, runPackageCommand } from '@openagt/agent-data';
|
|
5
7
|
/**
|
|
6
|
-
* The packages OpenAgent
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* The packages OpenAgent brings, by name: dependencies of OpenAgent itself, resolved from its
|
|
9
|
+
* own install, so a project installs nothing for them and an empty folder starts an agent and
|
|
10
|
+
* shows it. Each comes through the same contract as any package: a module by its `./dashboard`
|
|
11
|
+
* export, a provider of a kind of data and the writer of its hook lines by its `openagent` key.
|
|
12
|
+
* These two lists are the one place OpenAgent names a package. One of these names among a
|
|
13
|
+
* project's own dependencies is not read: OpenAgent's copy, and the rules below for which
|
|
14
|
+
* project has it, are the only ones.
|
|
12
15
|
*/
|
|
16
|
+
/** The packages every project has: an agent cannot start, be shown or be put on a git host without them. */
|
|
13
17
|
export const BUILT_IN_PACKAGES = ['@openagt/files', '@openagt/skill-branches', '@openagt/skill-github', '@openagt/skill-logs', '@openagt/agent-runner'];
|
|
18
|
+
/**
|
|
19
|
+
* The packages a project has once it picked them (#2023). A skill's package is the project's
|
|
20
|
+
* when the project holds the skill's text where the coding agents read it
|
|
21
|
+
* (`.claude/skills/<name>/SKILL.md`, `.agents/skills/<name>/SKILL.md`): the rule the launcher
|
|
22
|
+
* already lists a project's commands by, so deleting the skill's folder takes its page away. A
|
|
23
|
+
* tool with no skill text (the scheduler) is the project's when one of the project's hook lines
|
|
24
|
+
* runs it.
|
|
25
|
+
*/
|
|
26
|
+
export const PICKED_PACKAGES = ['@openagt/skill-tickets', '@openagt/skill-queue', '@openagt/skill-orchestration', '@openagt/agent-scheduler'];
|
|
27
|
+
/** Every name OpenAgent brings itself. */
|
|
28
|
+
export const OWN_PACKAGE_NAMES = [...BUILT_IN_PACKAGES, ...PICKED_PACKAGES];
|
|
14
29
|
let resolved;
|
|
15
|
-
/**
|
|
30
|
+
/** Every package OpenAgent brings, resolved from its own install, once; one that is not installed is skipped. */
|
|
16
31
|
export function builtInPackages() {
|
|
17
|
-
return (resolved ??=
|
|
32
|
+
return (resolved ??= resolveOwn());
|
|
18
33
|
}
|
|
19
|
-
async function
|
|
34
|
+
async function resolveOwn() {
|
|
20
35
|
const require = createRequire(import.meta.url);
|
|
21
36
|
const packages = [];
|
|
22
|
-
for (const name of
|
|
37
|
+
for (const name of OWN_PACKAGE_NAMES) {
|
|
23
38
|
let manifestPath;
|
|
24
39
|
try {
|
|
25
40
|
manifestPath = require.resolve(`${name}/package.json`);
|
|
@@ -29,12 +44,54 @@ async function resolveBuiltIn() {
|
|
|
29
44
|
}
|
|
30
45
|
const dir = await realpath(dirname(manifestPath)).catch(() => undefined);
|
|
31
46
|
const manifest = dir ? await readManifest(join(dir, 'package.json')) : undefined;
|
|
32
|
-
if (dir
|
|
33
|
-
|
|
47
|
+
if (!dir || !manifest)
|
|
48
|
+
continue;
|
|
49
|
+
const skill = /^name:[ \t]*([a-z0-9][a-z0-9-]*)[ \t]*$/m.exec(/^---\r?\n([\s\S]*?)\r?\n---/.exec(await readFile(join(dir, 'SKILL.md'), 'utf8').catch(() => ''))?.[1] ?? '')?.[1];
|
|
50
|
+
packages.push({ name, dir, manifest, picked: PICKED_PACKAGES.includes(name), ...(skill !== undefined ? { skill } : {}) });
|
|
51
|
+
}
|
|
52
|
+
return packages;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The packages OpenAgent brings to the project at `root`: the ones every project has, and
|
|
56
|
+
* each picked one the project has by its rule (see {@link PICKED_PACKAGES}). Read off the
|
|
57
|
+
* project's files each time, so a skill written or deleted a moment ago counts at once.
|
|
58
|
+
*/
|
|
59
|
+
export async function builtInPackagesOf(root) {
|
|
60
|
+
const packages = [];
|
|
61
|
+
let lines;
|
|
62
|
+
for (const pkg of await (resolved ??= resolveOwn())) {
|
|
63
|
+
if (pkg.picked) {
|
|
64
|
+
if (pkg.skill !== undefined ? !(await holdsSkill(root, pkg.skill)) : !runsOneOf((lines ??= await hookLines(root)), pkg))
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
packages.push(pkg);
|
|
34
68
|
}
|
|
35
69
|
return packages;
|
|
36
70
|
}
|
|
37
|
-
/**
|
|
71
|
+
/** Whether the project holds the text of the skill `name`, in one of the folders the coding agents read. */
|
|
72
|
+
async function holdsSkill(root, name) {
|
|
73
|
+
for (const dir of SKILLS_DIRS)
|
|
74
|
+
if (await stat(join(root, dir, name, 'SKILL.md')).then(s => s.isFile(), () => false))
|
|
75
|
+
return true;
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
/** Every line of the project's hooks file. */
|
|
79
|
+
async function hookLines(root) {
|
|
80
|
+
const hooks = await readProjectHooks(root).catch(() => undefined);
|
|
81
|
+
if (!hooks)
|
|
82
|
+
return [];
|
|
83
|
+
return [...hooks.open, ...hooks.close, hooks.start, hooks.resume, hooks.check].filter((line) => typeof line === 'string');
|
|
84
|
+
}
|
|
85
|
+
/** Whether one of `lines` runs the package: see `lineRuns`. */
|
|
86
|
+
function runsOneOf(lines, pkg) {
|
|
87
|
+
const tool = { name: pkg.name, commands: Object.keys(packageBins(pkg.name, pkg.manifest.bin, pkg.dir)) };
|
|
88
|
+
return lines.some(line => lineRuns(line, tool));
|
|
89
|
+
}
|
|
90
|
+
/** The project's own installed packages, less the names OpenAgent brings itself. */
|
|
91
|
+
export async function ownPackages(root) {
|
|
92
|
+
return (await projectPackages(root)).filter(pkg => !OWN_PACKAGE_NAMES.includes(pkg.name));
|
|
93
|
+
}
|
|
94
|
+
/** The directories the commands of OpenAgent's packages sit in: what a hook line's PATH gains after the project's own installed tools. */
|
|
38
95
|
export async function builtInBinDirs() {
|
|
39
96
|
const dirs = new Set();
|
|
40
97
|
for (const { name, dir, manifest } of await builtInPackages()) {
|
|
@@ -43,30 +100,27 @@ export async function builtInBinDirs() {
|
|
|
43
100
|
}
|
|
44
101
|
return [...dirs];
|
|
45
102
|
}
|
|
46
|
-
/** What provides `kind` in the project at `root`:
|
|
103
|
+
/** What provides `kind` in the project at `root`: a package the project installed for it, else one OpenAgent brings to this project. */
|
|
47
104
|
export async function lookupProvided(root, kind) {
|
|
48
|
-
return lookupProvidedCommand(root, kind, await
|
|
105
|
+
return lookupProvidedCommand(root, kind, await builtInPackagesOf(root), OWN_PACKAGE_NAMES);
|
|
49
106
|
}
|
|
50
107
|
/** {@link lookupProvided}'s command, for a caller that only needs to run it. */
|
|
51
108
|
export async function providedCommand(root, kind) {
|
|
52
109
|
return (await lookupProvided(root, kind)).command;
|
|
53
110
|
}
|
|
54
|
-
/** Whether `command` comes from a
|
|
55
|
-
export
|
|
56
|
-
|
|
57
|
-
return false;
|
|
58
|
-
return (await builtInPackages()).some(pkg => pkg.name === command.package);
|
|
111
|
+
/** Whether `command` comes from a package OpenAgent brings: one the project did not install. */
|
|
112
|
+
export function isBuiltIn(command) {
|
|
113
|
+
return OWN_PACKAGE_NAMES.includes(command.package);
|
|
59
114
|
}
|
|
60
115
|
/**
|
|
61
116
|
* Have every package that writes hook lines write its own into the project at `root`: a package
|
|
62
117
|
* declares `"openagent": { "hooks": "<command>" }`, and `<command> init`, run in the project,
|
|
63
118
|
* writes its lines into the project's hooks file, keeping every line already there. The project's
|
|
64
|
-
* own packages are asked, then the
|
|
65
|
-
*
|
|
119
|
+
* own packages are asked, then the ones OpenAgent brings to it. Answers one line per package
|
|
120
|
+
* that could not write, in words.
|
|
66
121
|
*/
|
|
67
122
|
export async function writeHookLines(root) {
|
|
68
|
-
const
|
|
69
|
-
const packages = [...own, ...(await builtInPackages()).filter(pkg => !own.some(o => o.name === pkg.name))];
|
|
123
|
+
const packages = [...(await ownPackages(root)), ...(await builtInPackagesOf(root))];
|
|
70
124
|
const failed = [];
|
|
71
125
|
for (const command of declaring(packages, 'hooks')) {
|
|
72
126
|
const result = await runPackageCommand(root, command, ['init']);
|
|
@@ -78,13 +132,13 @@ export async function writeHookLines(root) {
|
|
|
78
132
|
/**
|
|
79
133
|
* Have every package that declares a clean-up remove what it left in the project at `root`: a
|
|
80
134
|
* package declares `"openagent": { "cleanup": "<command>" }`, and `<command> cleanup`, run in the
|
|
81
|
-
* project, answers `{ ok: true, removed, kept }`. The project's own packages are asked, then
|
|
82
|
-
*
|
|
83
|
-
*
|
|
135
|
+
* project, answers `{ ok: true, removed, kept }`. The project's own packages are asked, then
|
|
136
|
+
* every package OpenAgent brings, also one this project no longer has (what it left stays its
|
|
137
|
+
* own to remove), each whatever the one before answered. A package that refuses, fails or answers
|
|
138
|
+
* something else is one line in `failed`, in words.
|
|
84
139
|
*/
|
|
85
140
|
export async function runCleanups(root) {
|
|
86
|
-
const
|
|
87
|
-
const packages = [...own, ...(await builtInPackages()).filter(pkg => !own.some(o => o.name === pkg.name))];
|
|
141
|
+
const packages = [...(await ownPackages(root)), ...(await builtInPackages())];
|
|
88
142
|
const report = { removed: [], kept: [], failed: [] };
|
|
89
143
|
for (const command of declaring(packages, 'cleanup')) {
|
|
90
144
|
const result = await runPackageCommand(root, command, ['cleanup']);
|
package/dist/built-in.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"built-in.js","sourceRoot":"","sources":["../src/built-in.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"built-in.js","sourceRoot":"","sources":["../src/built-in.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-runtime.d.ts","sourceRoot":"","sources":["../src/daemon-runtime.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AACtH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"daemon-runtime.d.ts","sourceRoot":"","sources":["../src/daemon-runtime.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AACtH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAe1E;;;;;GAKG;AAEH,8CAA8C;AAC9C,MAAM,WAAW,qBAAqB;IACpC,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAA;IACX,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;CACvB;AAED,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,eAAe,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC7G,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACzE,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACrF;uGACmG;IACnG,kBAAkB,EAAE,YAAY,CAAA;IAChC;2EACuE;IACvE,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;IAC1F;iGAC6F;IAC7F,YAAY,EAAE,YAAY,CAAA;IAC1B;oFACgF;IAChF,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7D,qCAAqC;IACrC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,qBAAqB,GAAG,cAAc,CA6JxF"}
|
package/dist/daemon-runtime.js
CHANGED
|
@@ -7,8 +7,7 @@ import { dispatchRelayRpc } from './dashboard-rpc/relay-dispatch.js';
|
|
|
7
7
|
import { tailAgentEvents } from './dashboard-rpc/events-tail.js';
|
|
8
8
|
import { addProject, listProjects, projectId, removeProject } from './registry.js';
|
|
9
9
|
import { writeHookLines } from './built-in.js';
|
|
10
|
-
import { installProject } from '
|
|
11
|
-
import { fileBranchRepo, writeSharing } from '@openagt/agent-data';
|
|
10
|
+
import { fileBranchRepo, installProject, writeSharing } from '@openagt/agent-data';
|
|
12
11
|
import { removeProjectFiles } from './remove-files.js';
|
|
13
12
|
import { runProjectHooks, runStartHook } from './project-hooks.js';
|
|
14
13
|
import { publishLevelOf, publishPickIn } from './publish-levels.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-runtime.js","sourceRoot":"","sources":["../src/daemon-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAqC,MAAM,kBAAkB,CAAA;AAIlJ,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"daemon-runtime.js","sourceRoot":"","sources":["../src/daemon-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The branch agents start from in the project at `cwd`: origin's default branch as this clone has
|
|
3
|
+
* it, else the branch the folder is on (a project with no remote starts an agent from its last
|
|
4
|
+
* local commit). `ref` is what git is asked, `name` what a person reads. None where the folder is
|
|
5
|
+
* on no branch, or is no repository.
|
|
6
|
+
*/
|
|
7
|
+
export declare function startBranch(cwd: string): Promise<{
|
|
8
|
+
ref: string;
|
|
9
|
+
name: string;
|
|
10
|
+
} | undefined>;
|
|
11
|
+
/** A skill that is in the folder and not on the branch agents start from. */
|
|
12
|
+
export interface Waiting {
|
|
13
|
+
/** The branch it has yet to reach, by name. */
|
|
14
|
+
branch: string;
|
|
15
|
+
/** Whether the branch the folder is on has it: an agent started from that branch does. */
|
|
16
|
+
here: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Which of the skills `names`, all in the project's folder, are waiting to reach the branch agents
|
|
20
|
+
* start from. A skill is said to be waiting only when that is known: an agent's checkout fetches
|
|
21
|
+
* the remote before it starts, so before a skill is called waiting against a remote branch, this
|
|
22
|
+
* clone's copy of that branch is fetched too (at most once a minute per project), or a pull
|
|
23
|
+
* request merged a moment ago would keep its skill waiting here.
|
|
24
|
+
*/
|
|
25
|
+
export declare function waitingSkills(cwd: string, names: readonly string[]): Promise<{
|
|
26
|
+
start?: {
|
|
27
|
+
ref: string;
|
|
28
|
+
name: string;
|
|
29
|
+
};
|
|
30
|
+
waiting: Map<string, Waiting>;
|
|
31
|
+
}>;
|
|
32
|
+
//# sourceMappingURL=start-branch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-branch.d.ts","sourceRoot":"","sources":["../../src/dashboard/start-branch.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAKjG;AAED,6EAA6E;AAC7E,MAAM,WAAW,OAAO;IACtB,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAA;IACd,0FAA0F;IAC1F,IAAI,EAAE,OAAO,CAAA;CACd;AAQD;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAe5J"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { nodeGitRunner, originDefaultBranch } from '@openagt/agent-data';
|
|
2
|
+
import { skillsOn } from '@openagt/init';
|
|
3
|
+
import { currentBranch } from './git-status.js';
|
|
4
|
+
/**
|
|
5
|
+
* The branch agents start from in the project at `cwd`: origin's default branch as this clone has
|
|
6
|
+
* it, else the branch the folder is on (a project with no remote starts an agent from its last
|
|
7
|
+
* local commit). `ref` is what git is asked, `name` what a person reads. None where the folder is
|
|
8
|
+
* on no branch, or is no repository.
|
|
9
|
+
*/
|
|
10
|
+
export async function startBranch(cwd) {
|
|
11
|
+
const main = await originDefaultBranch(cwd).catch(() => undefined);
|
|
12
|
+
if (main !== undefined)
|
|
13
|
+
return { ref: main, name: main.slice('origin/'.length) };
|
|
14
|
+
const local = await currentBranch(cwd).catch(() => undefined);
|
|
15
|
+
return local !== undefined && local !== 'HEAD' ? { ref: 'HEAD', name: local } : undefined;
|
|
16
|
+
}
|
|
17
|
+
/** How long this clone's copy of the remote's default branch counts as fresh, per project. */
|
|
18
|
+
const FRESH_MS = 60_000;
|
|
19
|
+
/** How long a read waits for the fetch that freshens it; the fetch itself goes on. */
|
|
20
|
+
const FETCH_WAIT_MS = 5_000;
|
|
21
|
+
const fetched = new Map();
|
|
22
|
+
/**
|
|
23
|
+
* Which of the skills `names`, all in the project's folder, are waiting to reach the branch agents
|
|
24
|
+
* start from. A skill is said to be waiting only when that is known: an agent's checkout fetches
|
|
25
|
+
* the remote before it starts, so before a skill is called waiting against a remote branch, this
|
|
26
|
+
* clone's copy of that branch is fetched too (at most once a minute per project), or a pull
|
|
27
|
+
* request merged a moment ago would keep its skill waiting here.
|
|
28
|
+
*/
|
|
29
|
+
export async function waitingSkills(cwd, names) {
|
|
30
|
+
const start = await startBranch(cwd);
|
|
31
|
+
if (!start || names.length === 0)
|
|
32
|
+
return { ...(start ? { start } : {}), waiting: new Map() };
|
|
33
|
+
let on = await skillsOn(cwd, start.ref);
|
|
34
|
+
let missing = names.filter(name => !on.has(name));
|
|
35
|
+
if (missing.length > 0 && start.ref !== 'HEAD' && Date.now() - (fetched.get(cwd) ?? 0) > FRESH_MS) {
|
|
36
|
+
fetched.set(cwd, Date.now());
|
|
37
|
+
const fetch = nodeGitRunner()(['fetch', '--quiet', 'origin', start.name], cwd).catch(() => undefined);
|
|
38
|
+
await Promise.race([fetch, new Promise(resolve => setTimeout(resolve, FETCH_WAIT_MS))]);
|
|
39
|
+
on = await skillsOn(cwd, start.ref);
|
|
40
|
+
missing = names.filter(name => !on.has(name));
|
|
41
|
+
}
|
|
42
|
+
if (missing.length === 0)
|
|
43
|
+
return { start, waiting: new Map() };
|
|
44
|
+
const here = start.ref === 'HEAD' ? { has: () => false } : await skillsOn(cwd, 'HEAD');
|
|
45
|
+
return { start, waiting: new Map(missing.map(name => [name, { branch: start.name, here: here.has(name) }])) };
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=start-branch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-branch.js","sourceRoot":"","sources":["../../src/dashboard/start-branch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAW;IAC3C,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IAClE,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAA;IAChF,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IAC7D,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AAC3F,CAAC;AAUD,8FAA8F;AAC9F,MAAM,QAAQ,GAAG,MAAM,CAAA;AACvB,sFAAsF;AACtF,MAAM,aAAa,GAAG,KAAK,CAAA;AAC3B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;AAEzC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,KAAwB;IACvE,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAA;IACpC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,CAAA;IAC5F,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;IACvC,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IACjD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC;QAClG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QAC5B,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QACrG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;QACvF,EAAE,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;QACnC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IAC/C,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,CAAA;IAC9D,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACtF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AAC/G,CAAC"}
|