@openagt/dashboard 0.9.0 → 0.11.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 +9 -17
- package/dist/built-in.d.ts +45 -16
- package/dist/built-in.d.ts.map +1 -1
- package/dist/built-in.js +95 -32
- package/dist/built-in.js.map +1 -1
- package/dist/cli.d.ts +4 -10
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +11 -67
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +2 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +3 -4
- package/dist/client.js.map +1 -1
- package/dist/daemon-runtime.d.ts +12 -12
- package/dist/daemon-runtime.d.ts.map +1 -1
- package/dist/daemon-runtime.js +97 -37
- package/dist/daemon-runtime.js.map +1 -1
- package/dist/daemon.d.ts +3 -14
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +15 -26
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/bridge-endpoints.d.ts +5 -5
- package/dist/dashboard/bridge-endpoints.js +5 -5
- package/dist/dashboard/http.d.ts +1 -1
- package/dist/dashboard/http.js +1 -1
- package/dist/dashboard/machine-call.d.ts +10 -0
- package/dist/dashboard/machine-call.d.ts.map +1 -0
- package/dist/dashboard/machine-call.js +86 -0
- package/dist/dashboard/machine-call.js.map +1 -0
- package/dist/dashboard/relay-endpoints.d.ts +26 -17
- package/dist/dashboard/relay-endpoints.d.ts.map +1 -1
- package/dist/dashboard/relay-endpoints.js +70 -27
- package/dist/dashboard/relay-endpoints.js.map +1 -1
- package/dist/dashboard/remote-run.d.ts +77 -32
- package/dist/dashboard/remote-run.d.ts.map +1 -1
- package/dist/dashboard/remote-run.js +120 -42
- package/dist/dashboard/remote-run.js.map +1 -1
- package/dist/dashboard/rpc-serve.d.ts +19 -25
- package/dist/dashboard/rpc-serve.d.ts.map +1 -1
- package/dist/dashboard/rpc-serve.js +11 -22
- package/dist/dashboard/rpc-serve.js.map +1 -1
- package/dist/dashboard/screen.d.ts +53 -0
- package/dist/dashboard/screen.d.ts.map +1 -0
- package/dist/dashboard/screen.js +175 -0
- package/dist/dashboard/screen.js.map +1 -0
- package/dist/dashboard/server.d.ts +18 -19
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +52 -81
- package/dist/dashboard/server.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/types.d.ts +6 -14
- package/dist/dashboard/types.d.ts.map +1 -1
- package/dist/dashboard/web-start-endpoints.d.ts +2 -2
- package/dist/dashboard/web-start-endpoints.js +1 -1
- package/dist/dashboard-bundle/assets/main-9Xb8Ao4p.css +2 -0
- package/dist/dashboard-bundle/assets/main-DTyyQ0jM.js +140 -0
- package/dist/dashboard-bundle/assets/{module-v213KWfH.js → module-DKd-4BTU.js} +4 -4
- package/dist/dashboard-bundle/host/module.js +1 -1
- package/dist/dashboard-bundle/index.html +3 -3
- package/dist/dashboard-rpc/context.d.ts +4 -4
- package/dist/dashboard-rpc/context.js +5 -5
- package/dist/dashboard-rpc/context.js.map +1 -1
- package/dist/dashboard-rpc/control.d.ts +1 -1
- package/dist/dashboard-rpc/control.js +7 -7
- package/dist/dashboard-rpc/control.js.map +1 -1
- package/dist/dashboard-rpc/events.d.ts +1 -1
- package/dist/dashboard-rpc/events.js +1 -1
- package/dist/dashboard-rpc/index.d.ts +2 -1
- 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/machines.d.ts +52 -0
- package/dist/dashboard-rpc/machines.d.ts.map +1 -0
- package/dist/dashboard-rpc/machines.js +82 -0
- package/dist/dashboard-rpc/machines.js.map +1 -0
- package/dist/dashboard-rpc/modules.d.ts +1 -1
- package/dist/dashboard-rpc/modules.js +2 -2
- package/dist/dashboard-rpc/modules.js.map +1 -1
- package/dist/dashboard-rpc/projects.d.ts +2 -0
- package/dist/dashboard-rpc/projects.d.ts.map +1 -1
- package/dist/dashboard-rpc/projects.js +10 -2
- package/dist/dashboard-rpc/projects.js.map +1 -1
- package/dist/dashboard-rpc/reads.d.ts +3 -4
- package/dist/dashboard-rpc/reads.d.ts.map +1 -1
- package/dist/dashboard-rpc/reads.js +5 -6
- package/dist/dashboard-rpc/reads.js.map +1 -1
- package/dist/dashboard-rpc/relay-agent.d.ts +3 -3
- package/dist/dashboard-rpc/relay-agent.js +3 -3
- package/dist/dashboard-rpc/relay-dispatch.d.ts +4 -4
- package/dist/dashboard-rpc/relay-dispatch.d.ts.map +1 -1
- package/dist/dashboard-rpc/relay-dispatch.js +7 -7
- package/dist/dashboard-rpc/relay-dispatch.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/dashboard-rpc/test-context.js +1 -1
- package/dist/dashboard-rpc/test-context.js.map +1 -1
- package/dist/events.d.ts +4 -3
- package/dist/events.d.ts.map +1 -1
- package/dist/loopback-host.d.ts +3 -5
- package/dist/loopback-host.d.ts.map +1 -1
- package/dist/loopback-host.js +3 -5
- package/dist/loopback-host.js.map +1 -1
- package/dist/machine-link.d.ts +21 -0
- package/dist/machine-link.d.ts.map +1 -0
- package/dist/machine-link.js +20 -0
- package/dist/machine-link.js.map +1 -0
- package/dist/module-server.d.ts +1 -1
- package/dist/module-types/dashboard/components/ui/switch.d.ts +7 -0
- package/dist/module-types/dashboard/lib/draft-handoff.d.ts +5 -9
- package/dist/module-types/dashboard/module/index.d.ts +46 -0
- package/dist/module-types/src/built-in.d.ts +45 -16
- package/dist/module-types/src/client.d.ts +2 -1
- package/dist/module-types/src/dashboard/bridge-endpoints.d.ts +5 -5
- package/dist/module-types/src/dashboard/http.d.ts +1 -1
- package/dist/module-types/src/dashboard/machine-call.d.ts +9 -0
- package/dist/module-types/src/dashboard/remote-run.d.ts +77 -32
- package/dist/module-types/src/dashboard/rpc-serve.d.ts +19 -25
- package/dist/module-types/src/dashboard/start-branch.d.ts +31 -0
- package/dist/module-types/src/dashboard/types.d.ts +6 -14
- package/dist/module-types/src/dashboard-rpc/context.d.ts +4 -4
- package/dist/module-types/src/dashboard-rpc/control.d.ts +1 -1
- package/dist/module-types/src/dashboard-rpc/events.d.ts +1 -1
- package/dist/module-types/src/dashboard-rpc/index.d.ts +2 -1
- package/dist/module-types/src/dashboard-rpc/machines.d.ts +51 -0
- package/dist/module-types/src/dashboard-rpc/modules.d.ts +1 -1
- package/dist/module-types/src/dashboard-rpc/projects.d.ts +2 -0
- package/dist/module-types/src/dashboard-rpc/reads.d.ts +3 -4
- package/dist/module-types/src/dashboard-rpc/relay-agent.d.ts +3 -3
- package/dist/module-types/src/dashboard-rpc/skills.d.ts +79 -0
- package/dist/module-types/src/events.d.ts +4 -3
- package/dist/module-types/src/loopback-host.d.ts +3 -5
- package/dist/module-types/src/machine-link.d.ts +20 -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/registry.d.ts +59 -16
- package/dist/module-types/src/repository-address.d.ts +22 -0
- package/dist/module-types/src/screens.d.ts +13 -0
- package/dist/module-types/src/store/agent-store.d.ts +2 -2
- 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/module-types/src/version.d.ts +1 -0
- 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/package-services.d.ts +27 -0
- package/dist/package-services.d.ts.map +1 -0
- package/dist/package-services.js +62 -0
- package/dist/package-services.js.map +1 -0
- 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/registry.d.ts +59 -16
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +91 -20
- package/dist/registry.js.map +1 -1
- package/dist/repository-address.d.ts +23 -0
- package/dist/repository-address.d.ts.map +1 -0
- package/dist/repository-address.js +38 -0
- package/dist/repository-address.js.map +1 -0
- package/dist/screens.d.ts +14 -0
- package/dist/screens.d.ts.map +1 -0
- package/dist/screens.js +40 -0
- package/dist/screens.js.map +1 -0
- package/dist/store/agent-store.d.ts +2 -2
- package/dist/store/agent-store.d.ts.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/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +26 -0
- package/dist/version.js.map +1 -0
- package/package.json +19 -13
- package/dist/dashboard-bundle/assets/main-B98UOA3_.js +0 -140
- package/dist/dashboard-bundle/assets/main-ByRjbCiA.css +0 -2
- package/dist/dashboard-rpc/devices.d.ts +0 -9
- package/dist/dashboard-rpc/devices.d.ts.map +0 -1
- package/dist/dashboard-rpc/devices.js +0 -12
- package/dist/dashboard-rpc/devices.js.map +0 -1
- package/dist/install.d.ts +0 -31
- package/dist/install.d.ts.map +0 -1
- package/dist/install.js +0 -54
- package/dist/install.js.map +0 -1
- package/dist/module-types/src/dashboard-rpc/devices.d.ts +0 -8
- package/dist/module-types/src/openagent-gitignore.d.ts +0 -11
- package/dist/openagent-gitignore.d.ts +0 -12
- package/dist/openagent-gitignore.d.ts.map +0 -1
- package/dist/openagent-gitignore.js +0 -19
- package/dist/openagent-gitignore.js.map +0 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/** A saved machine as the browser sees it: no key. */
|
|
2
|
+
export interface Machine {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
url: string;
|
|
6
|
+
}
|
|
7
|
+
export type AddMachineResult = {
|
|
8
|
+
ok: true;
|
|
9
|
+
machine: Machine;
|
|
10
|
+
} | {
|
|
11
|
+
ok: false;
|
|
12
|
+
error: string;
|
|
13
|
+
};
|
|
14
|
+
/** The saved machines, newest first. */
|
|
15
|
+
export declare function onMachines(): Promise<Machine[]>;
|
|
16
|
+
/**
|
|
17
|
+
* Save the machine a pasted link names: the link another OpenAgent gives for a new device. This
|
|
18
|
+
* computer is let in there with the link's code, once, and keeps the key it is answered. Adding
|
|
19
|
+
* a machine again, with a new link, replaces its name and the key, and the key it had there
|
|
20
|
+
* before is taken out.
|
|
21
|
+
*/
|
|
22
|
+
export declare function sendAddMachine(pasted: string, label?: string): Promise<AddMachineResult>;
|
|
23
|
+
export type RemoveMachineResult = {
|
|
24
|
+
ok: true;
|
|
25
|
+
} | {
|
|
26
|
+
ok: false;
|
|
27
|
+
error: string;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Take a saved machine off the list, and this computer out of the machine: its key there stops
|
|
31
|
+
* working. Not while a run is at work there, which is read with that key. Taking the key out is
|
|
32
|
+
* not waited for: a machine that cannot be reached right now keeps it until this computer is
|
|
33
|
+
* removed there, among its devices.
|
|
34
|
+
*/
|
|
35
|
+
export declare function sendRemoveMachine(id: string): Promise<RemoveMachineResult>;
|
|
36
|
+
/** Whether each saved machine answers right now, by id: one short call to each, with this computer's key. */
|
|
37
|
+
export declare function onMachinesReachable(): Promise<Record<string, boolean>>;
|
|
38
|
+
/** This computer's OpenAgent, and the one each saved machine runs. */
|
|
39
|
+
export interface MachineVersions {
|
|
40
|
+
/** This computer's own. */
|
|
41
|
+
version: string;
|
|
42
|
+
/** Each saved machine, with its version when it answers and says. */
|
|
43
|
+
machines: (Machine & {
|
|
44
|
+
version?: string;
|
|
45
|
+
})[];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The saved machines with the OpenAgent each runs, beside this computer's own: how a page tells
|
|
49
|
+
* that a machine fell behind this computer. One short call to each, with this computer's key.
|
|
50
|
+
*/
|
|
51
|
+
export declare function onMachineVersions(): Promise<MachineVersions>;
|
|
@@ -38,7 +38,7 @@ export declare function runModuleCommand(projectId: string, pkg: string, args: s
|
|
|
38
38
|
* Call read `name` of a module's server part in one project: how a module's browser part reads
|
|
39
39
|
* what a command cannot answer fast enough. Refused for an unknown project, a package that is not
|
|
40
40
|
* a module of that project, and a module with no server part. A read whose input names a run this
|
|
41
|
-
* daemon relays to a
|
|
41
|
+
* daemon relays to a saved machine (`input.agentId`) is read over there, by that machine's own
|
|
42
42
|
* copy of the module, since the run's checkout is there.
|
|
43
43
|
*/
|
|
44
44
|
export declare function readModule(projectId: string, pkg: string, name: string, input: unknown): Promise<ModuleReadResult>;
|
|
@@ -58,6 +58,8 @@ export interface ProjectLauncher {
|
|
|
58
58
|
gitHost: boolean;
|
|
59
59
|
/** Whether the project's repository has an `origin` remote; without one nothing can be published, so the publish menu stops at the commit. */
|
|
60
60
|
remote: boolean;
|
|
61
|
+
/** The address the project's repository was cloned from, the name another machine knows the project by; absent, the project cannot be sent to one. */
|
|
62
|
+
address?: string;
|
|
61
63
|
/**
|
|
62
64
|
* The two branches an agent can start from here, for the launcher's "start from" chip: `main`,
|
|
63
65
|
* the name of origin's default branch, and `local`, the branch the project's folder is on now.
|
|
@@ -31,7 +31,7 @@ import type { BridgeAnswer, BridgeContact, BridgeVersion } from '../dashboard/br
|
|
|
31
31
|
* may have just self-healed a dead agent to `stopped` (#716), and that freshly-archived row can
|
|
32
32
|
* lag `listAgents` by a poll — keeping it regardless leaves the row visible with no flicker.
|
|
33
33
|
*
|
|
34
|
-
* An agent relayed to a
|
|
34
|
+
* An agent relayed to a saved machine (#1067) lives only in the daemon's memory, never on disk, so
|
|
35
35
|
* its in-memory stub is merged in too (#1077): that is what re-opens it after a dashboard reload
|
|
36
36
|
* instead of losing it.
|
|
37
37
|
*/
|
|
@@ -168,9 +168,8 @@ export declare function onBridgeStatus(): Promise<{
|
|
|
168
168
|
*
|
|
169
169
|
* Only while the bridge is on, so a daemon with the feature off never hands the secret to a
|
|
170
170
|
* page. Revealing it here is not a new exposure: anyone who can load this dashboard can already
|
|
171
|
-
* start runs on this machine
|
|
172
|
-
*
|
|
173
|
-
* `~/.openagent.json` and copy a field out of it.
|
|
171
|
+
* start runs on this machine. What it replaces is the alternative, which was telling people to
|
|
172
|
+
* open `~/.openagent.json` and copy a field out of it.
|
|
174
173
|
*/
|
|
175
174
|
export declare function onBridgeToken(): Promise<string | null>;
|
|
176
175
|
/**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Run a run-scoped RPC locally, or relay it to the
|
|
3
|
-
* relaying to a
|
|
2
|
+
* Run a run-scoped RPC locally, or relay it to the machine when `agentId` names an agent this daemon is
|
|
3
|
+
* relaying to a saved one (#1067 slice 2). For an ordinary local agent the remote lookup is empty and
|
|
4
4
|
* `local()` runs unchanged. For a remote agent there is no local checkout, so the call is forwarded to the
|
|
5
|
-
*
|
|
5
|
+
* machine with this computer's key there; if the machine is unreachable, or no longer lets this computer in, `unreachable` is returned - the same empty/error
|
|
6
6
|
* shape `local()` gives on a failed read - so the caller never special-cases a remote agent.
|
|
7
7
|
*/
|
|
8
8
|
export declare function relayOr<T>(agentId: string | undefined, fn: string, args: unknown[], local: () => Promise<T>, unreachable: T): Promise<T>;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { type Standing } from '@openagt/init';
|
|
2
|
+
/**
|
|
3
|
+
* A project's skills, as the dashboard shows and changes them (#2023): the same list with ticks
|
|
4
|
+
* `npx @openagt/init` shows in a terminal, read and written through that package's own code, so
|
|
5
|
+
* the two cannot drift apart. A project has a skill when the skill's text is in its folder; the
|
|
6
|
+
* dashboard writes and deletes those files, and offers the one commit that holds them.
|
|
7
|
+
*/
|
|
8
|
+
/** One skill of the list, as it stands in the project. */
|
|
9
|
+
export interface ProjectSkill {
|
|
10
|
+
name: string;
|
|
11
|
+
/** The one line the skill's text says of itself. */
|
|
12
|
+
description: string;
|
|
13
|
+
/** How the project's text stands against the one this dashboard carries; `absent` when the project does not hold the skill. */
|
|
14
|
+
standing: Standing;
|
|
15
|
+
/** Whether the skill is in the folder but not yet on the branch agents start from: an agent started from it does not have the skill. */
|
|
16
|
+
waiting: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface ProjectSkills {
|
|
19
|
+
/** How many skills the project has, of how many there are: the ones in its folder, and the basic ones every run gets. */
|
|
20
|
+
has: number;
|
|
21
|
+
of: number;
|
|
22
|
+
/** The list's groups; `ticked` says whether a group's skills are ticked in a project that has none yet. */
|
|
23
|
+
groups: {
|
|
24
|
+
title: string;
|
|
25
|
+
ticked: boolean;
|
|
26
|
+
skills: ProjectSkill[];
|
|
27
|
+
}[];
|
|
28
|
+
/** Whether the scheduler starts with the dashboard for this project, on this machine. */
|
|
29
|
+
scheduler: boolean;
|
|
30
|
+
/** The branch agents start from, by its name: the remote's default branch, else the branch the folder is on. Absent where there is none. */
|
|
31
|
+
startBranch?: string;
|
|
32
|
+
/** How many skill files stand written or deleted in the folder with no commit yet. */
|
|
33
|
+
uncommitted: number;
|
|
34
|
+
/** Whether the folder is a git repository: without one there is nothing to commit. */
|
|
35
|
+
git: boolean;
|
|
36
|
+
/** Whether the project has a remote: without one a commit on this machine is all agents need. */
|
|
37
|
+
remote: boolean;
|
|
38
|
+
}
|
|
39
|
+
/** The project's skills; `null` when the project is unknown here. */
|
|
40
|
+
export declare function onProjectSkills(projectId: string): Promise<ProjectSkills | null>;
|
|
41
|
+
/** What a change of skills answered: what was written and deleted, what was left as it is, and the scheduler when the change switched it. */
|
|
42
|
+
export type ChangeSkillsResult = {
|
|
43
|
+
ok: true;
|
|
44
|
+
written: string[];
|
|
45
|
+
removed: string[];
|
|
46
|
+
left: {
|
|
47
|
+
path: string;
|
|
48
|
+
reason: string;
|
|
49
|
+
}[];
|
|
50
|
+
scheduler?: 'on' | 'off';
|
|
51
|
+
schedulerError?: string;
|
|
52
|
+
} | {
|
|
53
|
+
ok: false;
|
|
54
|
+
error: string;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Write and delete skills in a project's folder, and switch its scheduler: what the "Add skills"
|
|
58
|
+
* screen saves. Only the names of the list are taken; anything else is refused whole. A scheduler
|
|
59
|
+
* switched on starts at once, by its own line, as it would have at this dashboard's opening.
|
|
60
|
+
* Nothing is committed here: `sendCommitSkills` is the person's next press.
|
|
61
|
+
*/
|
|
62
|
+
export declare function sendChangeSkills(projectId: string, change: {
|
|
63
|
+
write?: string[];
|
|
64
|
+
remove?: string[];
|
|
65
|
+
scheduler?: boolean;
|
|
66
|
+
}): Promise<ChangeSkillsResult>;
|
|
67
|
+
/**
|
|
68
|
+
* One commit of skill files that stand uncommitted in the project's folder, on the branch the
|
|
69
|
+
* folder is on: the files of the skills `only` names, after a change that wrote or deleted them,
|
|
70
|
+
* else every uncommitted skill file. Never a push.
|
|
71
|
+
*/
|
|
72
|
+
export declare function sendCommitSkills(projectId: string, only?: string[]): Promise<{
|
|
73
|
+
ok: true;
|
|
74
|
+
committed: boolean;
|
|
75
|
+
commit?: string;
|
|
76
|
+
} | {
|
|
77
|
+
ok: false;
|
|
78
|
+
error: string;
|
|
79
|
+
}>;
|
|
@@ -102,11 +102,12 @@ export type OpenAgentEvent = {
|
|
|
102
102
|
event: DriverEvent;
|
|
103
103
|
}
|
|
104
104
|
/**
|
|
105
|
-
* A live screen something the agent ran is showing:
|
|
106
|
-
*
|
|
105
|
+
* A live screen something the agent ran is showing: where it answers, on the loopback of the
|
|
106
|
+
* computer the run is on, live while it is the newest open screen at that address and the run
|
|
107
107
|
* has not ended. `label` names what it showed then. The same address with `ended` says the
|
|
108
108
|
* screen has gone. A diary line a command appends itself (agent-driver's `DIARY_ENV`);
|
|
109
|
-
* OpenAgent
|
|
109
|
+
* OpenAgent passes a watcher's calls on to the address (dashboard/screen.ts) and knows nothing
|
|
110
|
+
* of what the screen is.
|
|
110
111
|
*/
|
|
111
112
|
| {
|
|
112
113
|
kind: 'screen';
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Loopback-address helpers,
|
|
3
|
-
* token, #1051) and the RPC mount (rejecting a rebound `Host`). A leaf module on purpose:
|
|
4
|
-
* `daemon.ts` imports the dashboard, so the mount cannot import these back out of it.
|
|
2
|
+
* Loopback-address helpers, for the RPC mount (rejecting a cross-origin page and a rebound `Host`).
|
|
5
3
|
*/
|
|
6
4
|
/**
|
|
7
|
-
* True when `host` is a loopback address the browser reaches without leaving the machine
|
|
8
|
-
* A bind-all (`0.0.0.0`, `::`) or a routable address is not
|
|
5
|
+
* True when `host` is a loopback address the browser reaches without leaving the machine.
|
|
6
|
+
* A bind-all (`0.0.0.0`, `::`) or a routable address is not.
|
|
9
7
|
*
|
|
10
8
|
* The IPv4 check matches the whole `127.0.0.0/8` range but only as an address: a bare
|
|
11
9
|
* `startsWith('127.')` also accepts a *registrable name* like `127.evil.com`, which is exactly the
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read the link another computer's OpenAgent gives for a new device (its Settings, Devices, Add
|
|
3
|
+
* device): where this computer is let in, and the code that lets it in once. The code rides the
|
|
4
|
+
* link after the `#`. A server's link carries one thing more after the code and a dot: what the
|
|
5
|
+
* server's key is known by. Not a web address is `null`, and so is a link with no code.
|
|
6
|
+
*
|
|
7
|
+
* A leaf with no Node in it: the dashboard reads a paste with it as the person types, and the
|
|
8
|
+
* daemon reads it again before it asks to be let in.
|
|
9
|
+
*/
|
|
10
|
+
export interface MachineLink {
|
|
11
|
+
/** Where the other OpenAgent answers, as an origin (`http://studio.local:4201`). */
|
|
12
|
+
url: string;
|
|
13
|
+
/** Where this computer asks to be let in, and later takes itself out: the link without its code. */
|
|
14
|
+
door: string;
|
|
15
|
+
/** The code, good once. */
|
|
16
|
+
code: string;
|
|
17
|
+
/** What the machine's key is known by, when the link says: a call then goes only to a machine that shows that key. */
|
|
18
|
+
pin?: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function parseMachineLink(pasted: string): MachineLink | null;
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
* The directory, under a project root, that holds OpenAgent's own files.
|
|
3
3
|
*
|
|
4
4
|
* Its own module so every reader and writer of the directory (the hooks file, the project's saved
|
|
5
|
-
* prompts,
|
|
6
|
-
*
|
|
7
|
-
* Nothing of the product's rides on a branch of its own any more: the agent archives are the
|
|
8
|
-
* `logs` skill's runs, on the shared `agent-data` branch that `@openagt/agent-data` names (#1769).
|
|
5
|
+
* prompts, a run's card, diary and inbox) spells it the same way. The name itself is
|
|
6
|
+
* `@openagt/agent-data`'s, which also makes the directory when a folder becomes a project.
|
|
9
7
|
*/
|
|
10
|
-
export
|
|
8
|
+
export { OPENAGENT_DIR } from '@openagt/agent-data/names';
|
|
@@ -13,6 +13,10 @@ export interface ProjectCommand {
|
|
|
13
13
|
name: string;
|
|
14
14
|
/** The `description` of the skill's front matter, when it has one. */
|
|
15
15
|
description?: string;
|
|
16
|
+
/** The branch the skill has yet to reach, by name, when its text is in the folder but not on the branch agents start from: an agent started from that branch does not have the command. */
|
|
17
|
+
waiting?: string;
|
|
18
|
+
/** With `waiting`: whether the branch the folder is on has the skill, so an agent started from that branch does have the command. */
|
|
19
|
+
here?: true;
|
|
16
20
|
}
|
|
17
21
|
/**
|
|
18
22
|
* The project's commands, by name: the skills whose front matter says
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* A project's hooks (#1774): the shell lines a project's own `.openagent/hooks.yml` names to
|
|
3
3
|
* run when the dashboard opens and when it closes, the two lines that start a run and continue
|
|
4
4
|
* one, and the line that says whether a run can start here at all. The daemon calls no tool by
|
|
5
|
-
* name: it runs whatever the file says, in the project, with the
|
|
6
|
-
* then the
|
|
5
|
+
* name: it runs whatever the file says, in the project, with the commands of the packages
|
|
6
|
+
* OpenAgent brings and then the project's installed tools on the PATH, so a line reaches its tool with nothing fetched from npm. Per
|
|
7
7
|
* user, since `.openagent/` is ignored: a hook is this machine's, and a teammate's pull
|
|
8
8
|
* changes nothing.
|
|
9
9
|
*
|
|
@@ -49,6 +49,8 @@ export interface RunHooksOptions {
|
|
|
49
49
|
timeoutMs?: number;
|
|
50
50
|
/** The environment the lines run with; default the daemon's own. */
|
|
51
51
|
env?: NodeJS.ProcessEnv;
|
|
52
|
+
/** The lines to run, of the ones the file holds; every line when absent. */
|
|
53
|
+
only?: readonly string[];
|
|
52
54
|
}
|
|
53
55
|
/**
|
|
54
56
|
* Run a project's `open` or `close` lines, in order, each through `sh -c` with the project's
|
|
@@ -122,8 +124,9 @@ export declare function runCheckHook(cwd: string, input: {
|
|
|
122
124
|
driver?: string;
|
|
123
125
|
}, opts?: Omit<RunHooksOptions, 'log'>): Promise<CheckHookResult>;
|
|
124
126
|
/**
|
|
125
|
-
* The environment a line runs with: the PATH led by the
|
|
126
|
-
*
|
|
127
|
-
*
|
|
127
|
+
* The environment a line runs with: the PATH led by the commands of the packages OpenAgent
|
|
128
|
+
* brings, then the project's installed tools. So a tool of OpenAgent's named in a line is always
|
|
129
|
+
* OpenAgent's copy, the one its pages and its data go through too, any other tool is the
|
|
130
|
+
* project's, and nothing is a package fetched by name.
|
|
128
131
|
*/
|
|
129
132
|
export declare function hookEnv(cwd: string, env: NodeJS.ProcessEnv): Promise<NodeJS.ProcessEnv>;
|
|
@@ -2,11 +2,12 @@ import { type PackageCommandResult } from '@openagt/agent-data';
|
|
|
2
2
|
/**
|
|
3
3
|
* A package that adds to the dashboard (#1774): its browser part, named by its
|
|
4
4
|
* `exports["./dashboard"]`, and optionally its server part, named by `exports["./server"]`.
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Any dependency of the project that exports `./dashboard` is a module, whoever wrote it, and the
|
|
6
|
+
* packages OpenAgent brings itself come the same way, for the projects that have them
|
|
7
|
+
* (`built-in.ts`).
|
|
7
8
|
*/
|
|
8
9
|
export interface ProjectModule {
|
|
9
|
-
/** The package's name
|
|
10
|
+
/** The package's name. */
|
|
10
11
|
package: string;
|
|
11
12
|
/** The package's version, when its package.json says one. */
|
|
12
13
|
version?: string;
|
|
@@ -21,8 +22,9 @@ export interface ProjectModule {
|
|
|
21
22
|
}
|
|
22
23
|
/**
|
|
23
24
|
* The modules a project has: each of its dependencies whose package.json exports `./dashboard` to
|
|
24
|
-
* a file that exists inside the package, plus the modules among
|
|
25
|
-
*
|
|
25
|
+
* a file that exists inside the package, plus the modules among the packages OpenAgent brings to
|
|
26
|
+
* this project (`built-in.ts`): a skill's page where the project holds the skill's text. Sorted
|
|
27
|
+
* by name.
|
|
26
28
|
*/
|
|
27
29
|
export declare function readProjectModules(root: string): Promise<ProjectModule[]>;
|
|
28
30
|
/** The one module of this project that `name` names, or undefined. */
|
|
@@ -38,7 +40,7 @@ export type ModuleCommandResult = PackageCommandResult;
|
|
|
38
40
|
/**
|
|
39
41
|
* Run one of a module package's own commands in the project, with the given arguments, and read
|
|
40
42
|
* its standard output as JSON. This is how a module reads its data: the same command an agent runs
|
|
41
|
-
* (`npx logs`), so the module and the agent see the same thing and OpenAgent knows neither.
|
|
43
|
+
* (`npx @openagt/skill-logs@0.1`), so the module and the agent see the same thing and OpenAgent knows neither.
|
|
42
44
|
*
|
|
43
45
|
* `command` picks one of the package's commands; a package with exactly one needs none. The
|
|
44
46
|
* command runs with Node (a package's commands are Node scripts), in the project root, never
|
|
@@ -3,8 +3,9 @@ import { type PublishPick } from './publish-levels.js';
|
|
|
3
3
|
* The multi-project registry (#390): the list of projects the user has
|
|
4
4
|
* installed OpenAgent into, kept as a single JSON file `.bashrc`-style —
|
|
5
5
|
* `$HOME/.openagent.json` — so it is the user's responsibility to re-create
|
|
6
|
-
* per machine. The same file also holds the user's dashboard preferences (#410)
|
|
7
|
-
* so the daemon owns one user file and the UI never
|
|
6
|
+
* per machine. The same file also holds the user's dashboard preferences (#410)
|
|
7
|
+
* and the machines they saved, so the daemon owns one user file and the UI never
|
|
8
|
+
* needs localStorage.
|
|
8
9
|
*/
|
|
9
10
|
/** One registered project. */
|
|
10
11
|
export interface ProjectRecord {
|
|
@@ -15,6 +16,25 @@ export interface ProjectRecord {
|
|
|
15
16
|
/** ISO timestamp the project was added. */
|
|
16
17
|
addedAt: string;
|
|
17
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* A saved machine: another computer running OpenAgent that a run can be sent to. Kept in this
|
|
21
|
+
* file, the person's own, so every browser on this computer shows the same machines and the
|
|
22
|
+
* key that reaches one never leaves the two machines.
|
|
23
|
+
*/
|
|
24
|
+
export interface MachineRecord {
|
|
25
|
+
/** The machine's address, which is also what names it: saving the same address again replaces it. */
|
|
26
|
+
id: string;
|
|
27
|
+
/** The name the person gave it, or its host when they gave none. */
|
|
28
|
+
label: string;
|
|
29
|
+
/** Where its OpenAgent answers, as an origin (`http://studio.local:4201`). */
|
|
30
|
+
url: string;
|
|
31
|
+
/** This computer's own key on that machine. Never handed to a browser. */
|
|
32
|
+
key: string;
|
|
33
|
+
/** Where this computer was let in there, and where it takes itself out when the machine is removed. */
|
|
34
|
+
door: string;
|
|
35
|
+
/** What the machine's key is known by, when its link said: every call goes only to a machine that shows that key. */
|
|
36
|
+
pin?: string;
|
|
37
|
+
}
|
|
18
38
|
/**
|
|
19
39
|
* The dashboard's Global options (#410), persisted next to the project list so they
|
|
20
40
|
* survive restarts without localStorage — the daemon reads/writes them, the SPA reads
|
|
@@ -104,11 +124,16 @@ export interface Registry {
|
|
|
104
124
|
projects: ProjectRecord[];
|
|
105
125
|
preferences: Preferences;
|
|
106
126
|
/**
|
|
107
|
-
* The
|
|
108
|
-
* A top-level field, deliberately not a {@link Preferences} one, so it is never shipped
|
|
109
|
-
* browser bundle. Absent on a
|
|
127
|
+
* The browser bridge's key (#1237): generated when the bridge is first switched on and reused
|
|
128
|
+
* after. A top-level field, deliberately not a {@link Preferences} one, so it is never shipped
|
|
129
|
+
* to the browser bundle. Absent on a machine that never had the bridge on.
|
|
110
130
|
*/
|
|
111
|
-
|
|
131
|
+
bridgeToken?: string;
|
|
132
|
+
/**
|
|
133
|
+
* The saved machines. Top-level like {@link bridgeToken}, and for the same reason: each one
|
|
134
|
+
* carries a key, so the list is never part of what the browser is handed.
|
|
135
|
+
*/
|
|
136
|
+
machines?: MachineRecord[];
|
|
112
137
|
}
|
|
113
138
|
/** A read/write handle for the user preferences, wired into the dashboard's context by the daemon. */
|
|
114
139
|
export interface PreferencesStore {
|
|
@@ -122,7 +147,7 @@ export interface PreferencesStore {
|
|
|
122
147
|
}
|
|
123
148
|
/** The registry file name: a single file under `$XDG_CONFIG_HOME` (dotted under `$HOME`). */
|
|
124
149
|
export declare const REGISTRY_FILE = "openagent.json";
|
|
125
|
-
/** Owner read/write only: the file holds the
|
|
150
|
+
/** Owner read/write only: the file holds the bridge's key and the saved machines' keys. */
|
|
126
151
|
export declare const REGISTRY_FILE_MODE = 384;
|
|
127
152
|
/**
|
|
128
153
|
* Deterministic, URL-safe id for a project path: the sanitized basename plus a
|
|
@@ -151,7 +176,7 @@ export interface RegistryFs {
|
|
|
151
176
|
rename?(from: string, to: string): Promise<void>;
|
|
152
177
|
/**
|
|
153
178
|
* Narrow a file's permissions. Optional, and best-effort at the call site: this file holds the
|
|
154
|
-
*
|
|
179
|
+
* bridge's key and the saved machines' keys, so it is written owner-only — but a
|
|
155
180
|
* filesystem that cannot express that (Windows, a FAT volume) must not fail the write.
|
|
156
181
|
*/
|
|
157
182
|
chmod?(path: string, mode: number): Promise<void>;
|
|
@@ -205,15 +230,33 @@ export declare function writePreferences(preferences: Preferences, fs?: Registry
|
|
|
205
230
|
*/
|
|
206
231
|
export declare function patchPreferences(patch: Preferences, fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<Preferences>;
|
|
207
232
|
/**
|
|
208
|
-
* The
|
|
209
|
-
* only
|
|
210
|
-
* other mutators so two concurrent
|
|
211
|
-
|
|
233
|
+
* The browser bridge's key (#1237): read the persisted one, or generate + persist it now. Called
|
|
234
|
+
* only with the bridge switched on, so a machine that never had it on never grows one. Serialized
|
|
235
|
+
* with the other mutators so two concurrent starts can't each write a different key.
|
|
236
|
+
*/
|
|
237
|
+
export declare function ensureBridgeToken(fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<string>;
|
|
238
|
+
/** The persisted bridge key, or `undefined` when none exists. A pure read: it never generates one. */
|
|
239
|
+
export declare function readBridgeToken(fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<string | undefined>;
|
|
240
|
+
/** The saved machines, newest first. Forgiving like every read of this file: none on a bad file. */
|
|
241
|
+
export declare function listMachines(fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<MachineRecord[]>;
|
|
242
|
+
/**
|
|
243
|
+
* Save a machine, newest first. One per address: saving an address again replaces its name and
|
|
244
|
+
* its key, which is how a machine whose key changed is fixed. Answers the stored record, and the
|
|
245
|
+
* records it took the place of (the one saved at that address before, the oldest past the cap):
|
|
246
|
+
* each still holds a key the caller takes out of its machine.
|
|
212
247
|
*/
|
|
213
|
-
export declare function
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
248
|
+
export declare function addMachine(machine: {
|
|
249
|
+
url: string;
|
|
250
|
+
key: string;
|
|
251
|
+
door: string;
|
|
252
|
+
pin?: string;
|
|
253
|
+
label?: string;
|
|
254
|
+
}, fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<{
|
|
255
|
+
record: MachineRecord;
|
|
256
|
+
displaced: MachineRecord[];
|
|
257
|
+
}>;
|
|
258
|
+
/** Take a saved machine off the list, by id. Answers the one that was there. */
|
|
259
|
+
export declare function removeMachine(id: string, fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<MachineRecord | undefined>;
|
|
217
260
|
/** A {@link PreferencesStore} bound to the real registry file, wired by the daemon so the
|
|
218
261
|
* dashboard's preferences RPCs read/write the user's home file.
|
|
219
262
|
*
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type GitRunner } from '@openagt/agent-data';
|
|
2
|
+
/**
|
|
3
|
+
* The one name a project has on every machine: where its repository was cloned from, as
|
|
4
|
+
* `host/path` (`github.com/me/shop`). A project's id is made from its folder's path, which is
|
|
5
|
+
* another path on another machine, so a run sent to a machine names its project by this.
|
|
6
|
+
*
|
|
7
|
+
* The same repository reads the same whichever way it was cloned: the scheme, a user before the
|
|
8
|
+
* host, a port, a trailing `.git` or slash are dropped, and letters are lowered, since the git
|
|
9
|
+
* hosts match names without regard to case. Not an address at all (a path on this disk, a
|
|
10
|
+
* `file:` address) is none.
|
|
11
|
+
*
|
|
12
|
+
* What it does not see through: a host that serves the two ways under two names or two paths
|
|
13
|
+
* (`ssh.github.com`, Azure DevOps). Such a project reads as two, and the other machine says it
|
|
14
|
+
* does not have it.
|
|
15
|
+
*/
|
|
16
|
+
export declare function addressOfRemote(remote: string): string | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* The address of the repository at `cwd`: its `origin` remote, the one every push goes to. A
|
|
19
|
+
* project with no `origin`, or one that is a folder on this disk, has none and runs on this
|
|
20
|
+
* machine only.
|
|
21
|
+
*/
|
|
22
|
+
export declare function repositoryAddress(cwd: string, git?: GitRunner): Promise<string | undefined>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { OpenAgentEvent } from './events.js';
|
|
2
|
+
/**
|
|
3
|
+
* Which of a run's `screen` lines are live and which are hidden. Live: the newest line at its
|
|
4
|
+
* address with no `ended` line for it after, and no run `end` after it other than one waiting on
|
|
5
|
+
* an answer. Every `ended` line is hidden: the screen going is said by its line no longer being
|
|
6
|
+
* live.
|
|
7
|
+
*/
|
|
8
|
+
export declare function foldScreenRows(events: readonly OpenAgentEvent[]): {
|
|
9
|
+
live: Set<OpenAgentEvent>;
|
|
10
|
+
hidden: Set<OpenAgentEvent>;
|
|
11
|
+
};
|
|
12
|
+
/** Where a run's live screen answers: the address of its newest live `screen` line, or nothing. */
|
|
13
|
+
export declare function liveScreen(events: readonly OpenAgentEvent[]): string | undefined;
|
|
@@ -157,12 +157,12 @@ export interface AgentMeta {
|
|
|
157
157
|
browserStreamPort?: number;
|
|
158
158
|
/**
|
|
159
159
|
* Where this run executes (#1050/#1053/#610): `actions` for a GitHub Actions run, `web` for a
|
|
160
|
-
* Claude Code cloud session, `remote` when relayed to a
|
|
160
|
+
* Claude Code cloud session, `remote` when relayed to a saved machine (#1067), absent for a
|
|
161
161
|
* local run. Persisted so the agent view can tell a burst-mode Actions run from a stalled live
|
|
162
162
|
* feed, show a cloud agent's session link after a reload, and gate the browser pane off (#1053).
|
|
163
163
|
*/
|
|
164
164
|
target?: 'local' | 'actions' | 'remote' | 'web';
|
|
165
|
-
/** The
|
|
165
|
+
/** The saved machine a remote agent (#1067) executes on, for the session list + notice after a reload. */
|
|
166
166
|
remoteLabel?: string;
|
|
167
167
|
/**
|
|
168
168
|
* The flow this agent started under (#1467): `build` for the scope→build orchestration, `prompt`
|
|
@@ -149,7 +149,7 @@ export declare function parseCheckouts(output: unknown): Checkout[];
|
|
|
149
149
|
/** The states read back from a provider's `show`: the objects with a branch and the three verdicts, lists cleaned; anything else is no state. */
|
|
150
150
|
export declare function parseBranchStates(output: unknown): BranchState[];
|
|
151
151
|
/**
|
|
152
|
-
* The production {@link BranchesReader}: the project's provider, looked up
|
|
152
|
+
* The production {@link BranchesReader}: the project's provider, looked up among the packages the project has (`built-in.ts`),
|
|
153
153
|
* one source per project kept while the same command provides — so the cache holds across the
|
|
154
154
|
* many reads of one poll, and a project that installs, swaps or drops its provider is read the new
|
|
155
155
|
* way within {@link CACHE_MS}. `changed(root)` forgets that project's reads, so the next read runs
|
|
@@ -101,7 +101,7 @@ export type GitHostReader = GitHostFor & {
|
|
|
101
101
|
/** The rows read back from a provider's `requests`: the objects with the facts a request needs; anything else is no request. */
|
|
102
102
|
export declare function parseRequests(output: unknown): GitHostRequest[];
|
|
103
103
|
/**
|
|
104
|
-
* The production {@link GitHostReader}: the project's provider, looked up
|
|
104
|
+
* The production {@link GitHostReader}: the project's provider, looked up among the packages the project has (`built-in.ts`), one
|
|
105
105
|
* source per project kept while the same command provides, so a project that installs, swaps or
|
|
106
106
|
* drops its git host is read the new way within {@link CACHE_MS}. `changed(root)` forgets the
|
|
107
107
|
* project, so the next ask looks its provider up again.
|
|
@@ -32,7 +32,7 @@ export type QueueReader = QueueFor & {
|
|
|
32
32
|
/** Entries read back from a provider's output: the non-empty strings of an array, trimmed; anything else is no entries. */
|
|
33
33
|
export declare function parseQueueEntries(output: unknown): string[];
|
|
34
34
|
/**
|
|
35
|
-
* The production {@link QueueReader}: the project's provider, looked up
|
|
35
|
+
* The production {@link QueueReader}: the project's provider, looked up among the packages the project has (`built-in.ts`), one
|
|
36
36
|
* source per project kept while the same command provides — so the cache holds across the many
|
|
37
37
|
* reads of one poll, and a project that installs, swaps or drops its provider is read the new way
|
|
38
38
|
* within {@link CACHE_MS}. `changed(root)` forgets that project's read, so the next read runs the
|
|
@@ -94,7 +94,7 @@ export declare function isRunId(id: string): boolean;
|
|
|
94
94
|
*/
|
|
95
95
|
export declare function parseRunCard(input: unknown): RunCard | undefined;
|
|
96
96
|
/**
|
|
97
|
-
* The production {@link RunsFor}: the project's provider, looked up
|
|
97
|
+
* The production {@link RunsFor}: the project's provider, looked up among the packages the project has (`built-in.ts`), one
|
|
98
98
|
* source per project kept while the same command provides — so the cache holds across the many
|
|
99
99
|
* reads of one poll, and a project that installs, swaps or drops its provider is read the new way
|
|
100
100
|
* within {@link CACHE_MS}. `changed(root)` forgets that project's reads, so the next read runs the
|
|
@@ -59,7 +59,7 @@ export type TicketsReader = TicketsFor & {
|
|
|
59
59
|
/** The rows read back from a provider's output: the objects with the five plain facts, everything else as printed; anything else is no ticket. */
|
|
60
60
|
export declare function parseTickets(output: unknown): Ticket[];
|
|
61
61
|
/**
|
|
62
|
-
* The production {@link TicketsReader}: the project's provider, looked up
|
|
62
|
+
* The production {@link TicketsReader}: the project's provider, looked up among the packages the project has (`built-in.ts`), one
|
|
63
63
|
* source per project kept while the same command provides — so the cache holds across the many
|
|
64
64
|
* reads of one poll, and a project that installs, swaps or drops its provider is read the new way
|
|
65
65
|
* within {@link CACHE_MS}. `changed(root)` forgets that project's read, so the next read runs the
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function openagentVersion(): string;
|
package/dist/openagent-dir.d.ts
CHANGED
|
@@ -2,10 +2,8 @@
|
|
|
2
2
|
* The directory, under a project root, that holds OpenAgent's own files.
|
|
3
3
|
*
|
|
4
4
|
* Its own module so every reader and writer of the directory (the hooks file, the project's saved
|
|
5
|
-
* prompts,
|
|
6
|
-
*
|
|
7
|
-
* Nothing of the product's rides on a branch of its own any more: the agent archives are the
|
|
8
|
-
* `logs` skill's runs, on the shared `agent-data` branch that `@openagt/agent-data` names (#1769).
|
|
5
|
+
* prompts, a run's card, diary and inbox) spells it the same way. The name itself is
|
|
6
|
+
* `@openagt/agent-data`'s, which also makes the directory when a folder becomes a project.
|
|
9
7
|
*/
|
|
10
|
-
export
|
|
8
|
+
export { OPENAGENT_DIR } from '@openagt/agent-data/names';
|
|
11
9
|
//# sourceMappingURL=openagent-dir.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openagent-dir.d.ts","sourceRoot":"","sources":["../src/openagent-dir.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"openagent-dir.d.ts","sourceRoot":"","sources":["../src/openagent-dir.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA"}
|
package/dist/openagent-dir.js
CHANGED
|
@@ -2,10 +2,8 @@
|
|
|
2
2
|
* The directory, under a project root, that holds OpenAgent's own files.
|
|
3
3
|
*
|
|
4
4
|
* Its own module so every reader and writer of the directory (the hooks file, the project's saved
|
|
5
|
-
* prompts,
|
|
6
|
-
*
|
|
7
|
-
* Nothing of the product's rides on a branch of its own any more: the agent archives are the
|
|
8
|
-
* `logs` skill's runs, on the shared `agent-data` branch that `@openagt/agent-data` names (#1769).
|
|
5
|
+
* prompts, a run's card, diary and inbox) spells it the same way. The name itself is
|
|
6
|
+
* `@openagt/agent-data`'s, which also makes the directory when a folder becomes a project.
|
|
9
7
|
*/
|
|
10
|
-
export
|
|
8
|
+
export { OPENAGENT_DIR } from '@openagt/agent-data/names';
|
|
11
9
|
//# sourceMappingURL=openagent-dir.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openagent-dir.js","sourceRoot":"","sources":["../src/openagent-dir.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"openagent-dir.js","sourceRoot":"","sources":["../src/openagent-dir.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA"}
|