@openagt/dashboard 0.51.0 → 0.53.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 +14 -13
- package/dist/client.d.ts +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +1 -0
- package/dist/client.js.map +1 -1
- package/dist/daemon-runtime.d.ts +6 -2
- package/dist/daemon-runtime.d.ts.map +1 -1
- package/dist/daemon-runtime.js +72 -6
- package/dist/daemon-runtime.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +5 -1
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/agent-handoff.js +4 -4
- package/dist/dashboard/agent-handoff.js.map +1 -1
- package/dist/dashboard/logins-sync.js +1 -1
- package/dist/dashboard/logins-sync.js.map +1 -1
- package/dist/dashboard/rpc-serve.d.ts +2 -0
- package/dist/dashboard/rpc-serve.d.ts.map +1 -1
- package/dist/dashboard/rpc-serve.js.map +1 -1
- package/dist/dashboard/server.d.ts +2 -0
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +1 -0
- package/dist/dashboard/server.js.map +1 -1
- package/dist/dashboard/start-branch.d.ts +12 -5
- package/dist/dashboard/start-branch.d.ts.map +1 -1
- package/dist/dashboard/start-branch.js +37 -10
- package/dist/dashboard/start-branch.js.map +1 -1
- package/dist/dashboard/types.d.ts +10 -6
- package/dist/dashboard/types.d.ts.map +1 -1
- package/dist/dashboard-bundle/assets/host/module-CTQrrHFl.js +1 -0
- package/dist/dashboard-bundle/assets/main-BKp0ZMXD.css +2 -0
- package/dist/dashboard-bundle/assets/main-Du4cDqEn.js +148 -0
- package/dist/dashboard-bundle/assets/module-Cwganbc7.js +16 -0
- package/dist/dashboard-bundle/index.html +4 -4
- package/dist/dashboard-rpc/context.d.ts +1 -0
- package/dist/dashboard-rpc/context.d.ts.map +1 -1
- package/dist/dashboard-rpc/context.js +3 -0
- package/dist/dashboard-rpc/context.js.map +1 -1
- package/dist/dashboard-rpc/index.d.ts +2 -2
- package/dist/dashboard-rpc/index.d.ts.map +1 -1
- package/dist/dashboard-rpc/index.js +2 -2
- package/dist/dashboard-rpc/index.js.map +1 -1
- package/dist/dashboard-rpc/projects.d.ts +22 -6
- package/dist/dashboard-rpc/projects.d.ts.map +1 -1
- package/dist/dashboard-rpc/projects.js +29 -8
- package/dist/dashboard-rpc/projects.js.map +1 -1
- package/dist/dashboard-rpc/reads.d.ts +12 -0
- package/dist/dashboard-rpc/reads.d.ts.map +1 -1
- package/dist/dashboard-rpc/reads.js +25 -1
- package/dist/dashboard-rpc/reads.js.map +1 -1
- package/dist/dashboard-rpc/relay-dispatch.js +3 -3
- package/dist/dashboard-rpc/relay-dispatch.js.map +1 -1
- package/dist/dashboard-rpc/skills.d.ts +3 -3
- package/dist/dashboard-rpc/skills.js +1 -1
- package/dist/dashboard-rpc/test-context.d.ts.map +1 -1
- package/dist/dashboard-rpc/test-context.js +3 -2
- package/dist/dashboard-rpc/test-context.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/module-types/dashboard/components/Markdown.d.ts +2 -1
- package/dist/module-types/dashboard/components/PersonMark.d.ts +21 -0
- package/dist/module-types/dashboard/components/ui/dropdown-menu.d.ts +3 -0
- package/dist/module-types/dashboard/components/ui/row-item.d.ts +22 -1
- package/dist/module-types/dashboard/lib/highlight.d.ts +6 -0
- package/dist/module-types/dashboard/lib/use-git-host-people.d.ts +16 -0
- package/dist/module-types/dashboard/lib/use-steady-text.d.ts +24 -0
- package/dist/module-types/dashboard/module/index.d.ts +2 -0
- package/dist/module-types/src/branch-name.d.ts +7 -0
- package/dist/module-types/src/client.d.ts +1 -0
- package/dist/module-types/src/dashboard/rpc-serve.d.ts +2 -0
- package/dist/module-types/src/dashboard/start-branch.d.ts +12 -5
- package/dist/module-types/src/dashboard/types.d.ts +10 -6
- package/dist/module-types/src/dashboard-rpc/context.d.ts +1 -0
- package/dist/module-types/src/dashboard-rpc/index.d.ts +2 -2
- package/dist/module-types/src/dashboard-rpc/projects.d.ts +22 -6
- package/dist/module-types/src/dashboard-rpc/reads.d.ts +12 -0
- package/dist/module-types/src/dashboard-rpc/skills.d.ts +3 -3
- package/dist/module-types/src/index.d.ts +1 -1
- package/dist/module-types/src/project-commands.d.ts +0 -2
- package/dist/module-types/src/project-hooks.d.ts +12 -6
- package/dist/module-types/src/project-skills/catalogue.d.ts +1 -1
- package/dist/module-types/src/project-skills/change.d.ts +1 -1
- package/dist/module-types/src/registry.d.ts +16 -12
- package/dist/module-types/src/started-names.d.ts +9 -0
- package/dist/module-types/src/store/agent-store.d.ts +4 -0
- package/dist/module-types/src/store/git-host.d.ts +1 -0
- package/dist/project-commands.d.ts +0 -2
- package/dist/project-commands.d.ts.map +1 -1
- package/dist/project-commands.js.map +1 -1
- package/dist/project-hooks.d.ts +12 -6
- package/dist/project-hooks.d.ts.map +1 -1
- package/dist/project-hooks.js +9 -4
- package/dist/project-hooks.js.map +1 -1
- package/dist/project-skills/catalogue.d.ts +1 -1
- package/dist/project-skills/change.d.ts +1 -1
- package/dist/registry.d.ts +16 -12
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +15 -3
- package/dist/registry.js.map +1 -1
- package/dist/started-names.d.ts +10 -0
- package/dist/started-names.d.ts.map +1 -0
- package/dist/started-names.js +40 -0
- package/dist/started-names.js.map +1 -0
- package/dist/store/agent-store.d.ts +4 -0
- package/dist/store/agent-store.d.ts.map +1 -1
- package/dist/store/agent-store.js.map +1 -1
- package/dist/store/git-host.d.ts +1 -0
- package/dist/store/git-host.d.ts.map +1 -1
- package/dist/store/git-host.js +2 -1
- package/dist/store/git-host.js.map +1 -1
- package/dist/store/run-record.d.ts.map +1 -1
- package/dist/store/run-record.js +2 -0
- package/dist/store/run-record.js.map +1 -1
- package/dist/terminal.js +4 -0
- package/dist/terminal.js.map +1 -1
- package/package.json +25 -25
- package/dist/dashboard-bundle/assets/host/module-Cj4JvDNR.js +0 -1
- package/dist/dashboard-bundle/assets/main-C337ghZH.css +0 -2
- package/dist/dashboard-bundle/assets/main-Dws_coS4.js +0 -148
- package/dist/dashboard-bundle/assets/module-pxUBfZug.js +0 -14
|
@@ -2,8 +2,8 @@ import { type Standing } from '../project-skills/project.js';
|
|
|
2
2
|
import { type SendSkillsResult } from '../dashboard/send-skills.js';
|
|
3
3
|
export type { SendSkillsResult } from '../dashboard/send-skills.js';
|
|
4
4
|
/**
|
|
5
|
-
* A project's skills, as the dashboard shows and changes them (#2023):
|
|
6
|
-
*
|
|
5
|
+
* A project's skills, as the dashboard shows and changes them (#2023): a card with a tick for each
|
|
6
|
+
* skill a project picks beyond the defaults. A project has a skill when the skill's text is in its folder; the
|
|
7
7
|
* dashboard writes and deletes those files, and sends them where agents start from.
|
|
8
8
|
*/
|
|
9
9
|
/** One skill of the list, as it stands in the project. */
|
|
@@ -61,7 +61,7 @@ export type ChangeSkillsResult = {
|
|
|
61
61
|
error: string;
|
|
62
62
|
};
|
|
63
63
|
/**
|
|
64
|
-
* Write and delete skills in a project's folder: what the
|
|
64
|
+
* Write and delete skills in a project's folder: what the Skills page saves. Only the names
|
|
65
65
|
* of the list are taken; anything else is refused whole. The scheduler's skill written switches the
|
|
66
66
|
* scheduler on for this machine, and it starts at once, by its own line, as it would have at this
|
|
67
67
|
* dashboard's opening.
|
|
@@ -55,7 +55,7 @@ async function remoteName(cwd) {
|
|
|
55
55
|
/** A list of the list's own skill names, each once; nothing for anything else. */
|
|
56
56
|
const names = (value) => (value === undefined ? [] : Array.isArray(value) && value.every(name => typeof name === 'string' && isKnown(name)) ? [...new Set(value)] : undefined);
|
|
57
57
|
/**
|
|
58
|
-
* Write and delete skills in a project's folder: what the
|
|
58
|
+
* Write and delete skills in a project's folder: what the Skills page saves. Only the names
|
|
59
59
|
* of the list are taken; anything else is refused whole. The scheduler's skill written switches the
|
|
60
60
|
* scheduler on for this machine, and it starts at once, by its own line, as it would have at this
|
|
61
61
|
* dashboard's opening.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-context.d.ts","sourceRoot":"","sources":["../../src/dashboard-rpc/test-context.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE9D;;;;;;GAMG;AACH,oHAAoH;AACpH,eAAO,MAAM,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,qBAAqB,GAAG,eAAe,GAAG,WAAW,GAAG,SAAS,GAAG,eAAe,CAUhK,CAAA;AAED,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,OAAO,CAAC,gBAAgB,CAAM,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"test-context.d.ts","sourceRoot":"","sources":["../../src/dashboard-rpc/test-context.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE9D;;;;;;GAMG;AACH,oHAAoH;AACpH,eAAO,MAAM,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,qBAAqB,GAAG,eAAe,GAAG,WAAW,GAAG,SAAS,GAAG,eAAe,CAUhK,CAAA;AAED,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,OAAO,CAAC,gBAAgB,CAAM,GAAG,gBAAgB,CAiB3F;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,OAAO,CAAC,gBAAgB,CAAM,GAAG,gBAAgB,CAG3F;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,OAAO,CAAC,gBAAgB,CAAM,GAAG,IAAI,CAE7E"}
|
|
@@ -25,6 +25,7 @@ export function testDashboardContext(over = {}) {
|
|
|
25
25
|
startAgent: () => ({ ok: false, error: 'not wired in this test' }),
|
|
26
26
|
addProject: () => ({ ok: false, error: 'not wired in this test' }),
|
|
27
27
|
startedIn: () => ({ ok: false, error: 'not wired in this test' }),
|
|
28
|
+
prepareStart: () => { },
|
|
28
29
|
removeProject: () => ({ ok: false, error: 'not wired in this test' }),
|
|
29
30
|
eventsSource: () => undefined,
|
|
30
31
|
remote: { target: () => undefined, list: () => [], working: () => false, rekey: () => { }, sent: () => true, home: async () => undefined, follow: async () => { }, machineNames: async () => () => undefined, machineRuns: async () => [], followRuns: () => () => { }, ...NO_ELSEWHERE },
|
|
@@ -42,8 +43,8 @@ export function testDashboardContext(over = {}) {
|
|
|
42
43
|
* test asserting one route still stands up the same server the product does.
|
|
43
44
|
*/
|
|
44
45
|
export function testDashboardOptions(over = {}) {
|
|
45
|
-
const { startAgent, addProject, startedIn, removeProject, ...rest } = testDashboardContext();
|
|
46
|
-
return { port: 0, onStart: startAgent, onAddProject: addProject, onStartedIn: startedIn, onRemoveProject: removeProject, ...rest, ...over };
|
|
46
|
+
const { startAgent, addProject, startedIn, removeProject, prepareStart, ...rest } = testDashboardContext();
|
|
47
|
+
return { port: 0, onStart: startAgent, onAddProject: addProject, onStartedIn: startedIn, onRemoveProject: removeProject, onPrepareStart: prepareStart, ...rest, ...over };
|
|
47
48
|
}
|
|
48
49
|
/**
|
|
49
50
|
* Wire the dashboard's capabilities for a test that calls an RPC directly.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-context.js","sourceRoot":"","sources":["../../src/dashboard-rpc/test-context.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"test-context.js","sourceRoot":"","sources":["../../src/dashboard-rpc/test-context.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
export type { AgentError, SessionInfo } from './agent-view.js';
|
|
16
16
|
export type { ChoiceRequest, OpenAgentEvent } from './events.js';
|
|
17
17
|
export type { QuotaBoundary } from './quota-boundary.js';
|
|
18
|
-
export type { CustomPreset, Preferences } from './registry.js';
|
|
18
|
+
export type { CustomPreset, Preferences, StartFromPick } from './registry.js';
|
|
19
19
|
export type { PublishPick } from './publish-levels.js';
|
|
20
20
|
export type { DriverQuotaWindow } from '@openagt/agent-driver';
|
|
21
21
|
export type { AgentDoing, AgentMeta, AgentStatus } from './store/agent-store.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC9D,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAChE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC9D,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAChE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7E,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAChF,YAAY,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACvD,YAAY,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAChE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AACpF,YAAY,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACtE,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAClE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAClF,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC/D,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAC7D,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,YAAY,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAChE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACjF,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7E,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACzE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACrD,YAAY,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC9F,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export declare function Markdown({ text, compact }: {
|
|
1
|
+
export declare function Markdown({ text, compact, fade }: {
|
|
2
2
|
text: string;
|
|
3
3
|
compact?: boolean;
|
|
4
|
+
fade?: boolean;
|
|
4
5
|
}): import("react").JSX.Element;
|
|
5
6
|
/**
|
|
6
7
|
* Where `#12` in an answer leads: the project's page on GitHub, under which `issues/12` opens the
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The name a person goes by here: the one git knows them by, else one drawn from their email
|
|
3
|
+
* (`suleiman@averotech.com` is suleiman), or from its domain when its name is a generic word
|
|
4
|
+
* (`git@brillout.com` is brillout), or the login in GitHub's own address for an account.
|
|
5
|
+
*/
|
|
6
|
+
export declare function personName(email: string, name?: string): string;
|
|
7
|
+
/** Two letters for a person's mark: "Romuald Brillout" is RB, "suleiman" is SU. */
|
|
8
|
+
export declare function personLetters(name: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* A person's mark. No email: an empty circle, for a row whose person is seconds away. `said` is
|
|
11
|
+
* what it says when pointed at and to a reader that cannot see it; without it, it is decoration
|
|
12
|
+
* and whatever is around it says who. `you` sets the person at this computer apart.
|
|
13
|
+
*/
|
|
14
|
+
export declare function PersonMark({ email, name, picture, you, said, className }: {
|
|
15
|
+
email?: string | undefined;
|
|
16
|
+
name?: string | undefined;
|
|
17
|
+
picture?: string | undefined;
|
|
18
|
+
you?: boolean | undefined;
|
|
19
|
+
said?: string | undefined;
|
|
20
|
+
className?: string | undefined;
|
|
21
|
+
}): import("react").JSX.Element;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { Menu } from '@base-ui/react/menu';
|
|
2
2
|
import type { ComponentProps } from 'react';
|
|
3
|
+
export declare const MENU_POPUP_CLASS = "min-w-[13rem] rounded-md border border-[var(--color-border)] bg-[var(--color-card)] text-[var(--color-card-foreground)] shadow-md outline-none";
|
|
4
|
+
export declare const MENU_ITEM_CLASS = "relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none data-[highlighted]:bg-[var(--color-accent)] data-[highlighted]:text-[var(--color-accent-foreground)] data-[disabled]:pointer-events-none data-[disabled]:opacity-50";
|
|
3
5
|
export declare const DropdownMenu: typeof Menu.Root;
|
|
4
6
|
export declare const DropdownMenuGroup: import("react").ForwardRefExoticComponent<Omit<import("@base-ui/react").MenuGroupProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
5
7
|
export declare const DropdownMenuSub: typeof Menu.SubmenuRoot;
|
|
8
|
+
export declare const MENU_TRIGGER_OPEN_CLASS = "data-[popup-open]:bg-[var(--color-accent)] data-[popup-open]:text-[var(--color-accent-foreground)]";
|
|
6
9
|
export declare function DropdownMenuTrigger({ className, ...props }: ComponentProps<typeof Menu.Trigger>): import("react").JSX.Element;
|
|
7
10
|
export declare function DropdownMenuContent({ className, sideOffset, align, children, ...props }: ComponentProps<typeof Menu.Popup> & {
|
|
8
11
|
sideOffset?: number;
|
|
@@ -1,7 +1,28 @@
|
|
|
1
|
-
import type { ReactNode } from 'react';
|
|
1
|
+
import type { ReactElement, ReactNode } from 'react';
|
|
2
2
|
export declare const rowItemClass = "inline-flex h-7 min-w-0 max-w-full shrink items-center gap-1.5 overflow-hidden rounded-md px-2 text-[13px] font-normal text-muted-foreground max-sm:max-w-none max-sm:shrink-0";
|
|
3
3
|
/** A row item that is a button: it lights up under the pointer and shows the keyboard's focus. */
|
|
4
4
|
export declare const rowButtonClass: string;
|
|
5
|
+
/** A row of items above or under the box: one line of a fixed height, no wrap. */
|
|
6
|
+
export declare const rowClass = "flex h-8 items-center gap-2";
|
|
7
|
+
/** Its left side, which gives way: each item cut short, and on a phone, where cut short they would say nothing, scrolled sideways under a faded edge. */
|
|
8
|
+
export declare const rowLeftClass = "flex min-w-0 flex-1 items-center gap-0.5 max-sm:overflow-x-auto max-sm:[scrollbar-width:none] max-sm:[mask-image:linear-gradient(to_right,#000_85%,transparent)]";
|
|
9
|
+
/**
|
|
10
|
+
* The row above the box, on both pages: where the agent starts, or where it started. A fixed height
|
|
11
|
+
* and no wrap, so a name that lands late moves nothing; the later items give way first, each cut
|
|
12
|
+
* short, and on a phone the row scrolls sideways, its right edge faded to say so.
|
|
13
|
+
*/
|
|
14
|
+
export declare function RowAboveBox({ children, end }: {
|
|
15
|
+
children: ReactNode;
|
|
16
|
+
end?: ReactNode;
|
|
17
|
+
}): import("react").JSX.Element;
|
|
18
|
+
/**
|
|
19
|
+
* A disabled row button and what its hover says. A disabled button takes no pointer, so the hover
|
|
20
|
+
* is on what holds it, which gives way in the row as the button does.
|
|
21
|
+
*/
|
|
22
|
+
export declare function RowOff({ tip, children }: {
|
|
23
|
+
tip: string;
|
|
24
|
+
children: ReactElement;
|
|
25
|
+
}): import("react").JSX.Element;
|
|
5
26
|
/** A plain row item: an icon and a few words that say one thing. Not a button. */
|
|
6
27
|
export declare function RowItem({ icon, children }: {
|
|
7
28
|
icon: ReactNode;
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
/** The language a fenced code block names (```bash, ```ts, ```python), as an extension or as a grammar's own name. */
|
|
2
|
+
export declare function languageOfFence(name: string): string | undefined;
|
|
1
3
|
export declare function languageOf(path: string): string | undefined;
|
|
4
|
+
/** Which colours a text is drawn in: an editor's, for a file's lines, or the chat's, for a reply's code block. */
|
|
5
|
+
export type Palette = 'editor' | 'chat';
|
|
2
6
|
/** One line's coloured pieces: the text, and its colour in the light theme and in the dark one. */
|
|
3
7
|
export type Piece = {
|
|
4
8
|
text: string;
|
|
@@ -10,6 +14,8 @@ export type Piece = {
|
|
|
10
14
|
* for a file that stays plain.
|
|
11
15
|
*/
|
|
12
16
|
export declare function useHighlighted(text: string, path: string): Piece[][] | null;
|
|
17
|
+
/** The same, for a language already known (a fenced block names its own), in the colours of `palette`. */
|
|
18
|
+
export declare function useHighlightedIn(text: string, language: string | undefined, palette?: Palette): Piece[][] | null;
|
|
13
19
|
/** One line's pieces, each in its colour for the page's theme. */
|
|
14
20
|
export declare function Pieces({ pieces }: {
|
|
15
21
|
pieces: Piece[];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ModuleHostPerson } from '../module/index.js';
|
|
2
|
+
/** Who a row wants: the run's person, in the project it belongs to. */
|
|
3
|
+
export interface PersonWanted {
|
|
4
|
+
projectId: string | null;
|
|
5
|
+
person?: string | undefined;
|
|
6
|
+
}
|
|
7
|
+
/** A person's account, as a row finds it. */
|
|
8
|
+
export type AccountOf = (projectId: string | null, person: string | undefined) => ModuleHostPerson | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* What the project's git host said of the people of these runs. `remember` names the list: its
|
|
11
|
+
* last answer stays shown while new people are asked for, and is there from the first frame of the
|
|
12
|
+
* next visit, so a picture already seen does not fall back to letters.
|
|
13
|
+
*/
|
|
14
|
+
export declare function useGitHostPeople(wanted: readonly PersonWanted[], ask: (projectId: string, emails: string[]) => Promise<ModuleHostPerson[]>, remember: string): AccountOf;
|
|
15
|
+
/** Who a person's mark says it is: their email, and their account at the git host when it knows one. */
|
|
16
|
+
export declare function personSaid(person: string, account: ModuleHostPerson | undefined): string;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** When the word at this place of this message first showed: now, the first time it is asked. */
|
|
2
|
+
export declare function wordShownAt(text: string, at: number): number;
|
|
3
|
+
/** How far to show `text`, given that `at` characters may: on to the end of the word that reaches. */
|
|
4
|
+
export declare function toWordEnd(text: string, at: number): number;
|
|
5
|
+
/**
|
|
6
|
+
* Where the pace stands once the blocks that come in whole are counted, and how far the text may
|
|
7
|
+
* show. A table or a code block comes in whole, as on Claude Code on the web: a pace that reaches
|
|
8
|
+
* into one is moved to its end, and while the text has not finished one (`final` false) it stops at
|
|
9
|
+
* the block's start, with the words before it all there, and waits for it.
|
|
10
|
+
*/
|
|
11
|
+
export declare function pastWholeBlocks(text: string, at: number, final: boolean): {
|
|
12
|
+
at: number;
|
|
13
|
+
limit: number;
|
|
14
|
+
};
|
|
15
|
+
/** Whether some message is still coming in word by word: what comes under it waits for it to be all there. */
|
|
16
|
+
export declare function useStillWriting(): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* How much of `text` to show now. `fresh`: a message being written, shown from its start; else a
|
|
19
|
+
* message shown whole, unless it is the one being written a moment ago, which goes on from where it was.
|
|
20
|
+
*/
|
|
21
|
+
export declare function useSteadyText(text: string, fresh: boolean, final?: boolean): {
|
|
22
|
+
shown: string;
|
|
23
|
+
done: boolean;
|
|
24
|
+
};
|
|
@@ -609,6 +609,8 @@ export { Markdown } from '../components/Markdown.js';
|
|
|
609
609
|
export { StartAgentButton } from '../components/StartAgentButton.js';
|
|
610
610
|
export { LinkActions, type ProjectLinks, type LinkTargets } from '../components/LinkActions.js';
|
|
611
611
|
export { MachineMark } from '../components/MachineMark.js';
|
|
612
|
+
export { PersonMark, personName } from '../components/PersonMark.js';
|
|
613
|
+
export { useGitHostPeople, personSaid } from '../lib/use-git-host-people.js';
|
|
612
614
|
export { machineKind, machineName, type MachineKind } from '../../src/client.js';
|
|
613
615
|
export { SettingsSection, SettingsRow, SettingsSelectRow, type SettingsOption } from '../components/SettingsRows.js';
|
|
614
616
|
export { useSettingsCrumb, type SettingsCrumb } from '../lib/settings-crumb.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether `value` names a branch the way git lets a branch be named (`git check-ref-format
|
|
3
|
+
* --branch`), told without running git. The branch a Start names to start from ends up on a
|
|
4
|
+
* command line, so a word that could be read there as an option (a leading `-`), or that git would
|
|
5
|
+
* read as something other than one branch (`a..b`, `x@{1}`, `HEAD`), is not a name.
|
|
6
|
+
*/
|
|
7
|
+
export declare function isBranchName(value: unknown): value is string;
|
|
@@ -5,6 +5,7 @@ export { runName } from './run-name.js';
|
|
|
5
5
|
export { foldScreenRows } from './screens.js';
|
|
6
6
|
export { formatBytes } from './format-bytes.js';
|
|
7
7
|
export { errorMessage } from './error-message.js';
|
|
8
|
+
export { publishedBase } from '@openagt/agent-data/names';
|
|
8
9
|
export { pickedIds } from './events.js';
|
|
9
10
|
export { sessionInfo, agentErrors, type SessionInfo, type AgentError, } from './agent-view.js';
|
|
10
11
|
export { pendingChoices } from './open-choices.js';
|
|
@@ -94,6 +94,8 @@ export interface DashboardContext {
|
|
|
94
94
|
addProject: AddProjectHandler;
|
|
95
95
|
startedIn: StartedInHandler;
|
|
96
96
|
removeProject: RemoveProjectHandler;
|
|
97
|
+
/** A Start is near in a project, on a coding agent: have what the run will want first ready for it (its name). Never throws. */
|
|
98
|
+
prepareStart: (projectId: string, driver?: string) => void;
|
|
97
99
|
/** The in-memory event stream for an agent relayed from a saved machine (#1067), else undefined. */
|
|
98
100
|
eventsSource: EventsSource;
|
|
99
101
|
/** The relayed-agent lookup (#1067 slice 2), so a run-scoped RPC can tell a local agent from one
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { StartFromPick } from '../registry.js';
|
|
1
2
|
/**
|
|
2
3
|
* The branch agents start from in the project at `cwd`: origin's default branch as this clone has
|
|
3
4
|
* it, else the branch the folder is on (a project with no remote starts an agent from its last
|
|
@@ -8,6 +9,11 @@ export declare function startBranch(cwd: string): Promise<{
|
|
|
8
9
|
ref: string;
|
|
9
10
|
name: string;
|
|
10
11
|
} | undefined>;
|
|
12
|
+
/**
|
|
13
|
+
* The branches origin has now, asked of origin itself: this clone's copies keep every branch it
|
|
14
|
+
* ever saw, long after origin deleted it. Nothing where origin could not be read.
|
|
15
|
+
*/
|
|
16
|
+
export declare function branchesOnOrigin(cwd: string): Promise<string[] | undefined>;
|
|
11
17
|
/** A skill that is in the folder and not on the branch agents start from. */
|
|
12
18
|
export interface Waiting {
|
|
13
19
|
/** The branch it has yet to reach, by name. */
|
|
@@ -17,12 +23,13 @@ export interface Waiting {
|
|
|
17
23
|
}
|
|
18
24
|
/**
|
|
19
25
|
* Which of the skills `names`, all in the project's folder, are waiting to reach the branch agents
|
|
20
|
-
* start from
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
26
|
+
* start from: the one the launcher's menu has picked, given a `pick`, else the main branch. A skill
|
|
27
|
+
* is said to be waiting only when that is known: an agent's checkout fetches the remote before it
|
|
28
|
+
* starts, so before a skill is called waiting against a remote branch, this clone's copy of that
|
|
29
|
+
* branch is fetched too (at most once a minute per project and branch), or a pull request merged a
|
|
30
|
+
* moment ago would keep its skill waiting here.
|
|
24
31
|
*/
|
|
25
|
-
export declare function waitingSkills(cwd: string, names: readonly string[]): Promise<{
|
|
32
|
+
export declare function waitingSkills(cwd: string, names: readonly string[], pick?: StartFromPick): Promise<{
|
|
26
33
|
start?: {
|
|
27
34
|
ref: string;
|
|
28
35
|
name: string;
|
|
@@ -96,16 +96,20 @@ export interface StartAgentOptions {
|
|
|
96
96
|
/** The person's saved pick of how far the run takes its work when the agent finishes. Absent, none is saved: the daemon starts the run at `commit`. A saved pick the project is not offered is held to the furthest the project goes with no pull request. */
|
|
97
97
|
publish?: PublishPick;
|
|
98
98
|
/**
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
99
|
+
* What the agent's own branch starts from, from the launcher's branch menu. A branch's name: that
|
|
100
|
+
* branch as this computer has it, commits that are not pushed included ("My local branch"). A
|
|
101
|
+
* `publishedBase`: that branch as origin has it, fetched at the Start; one origin no longer has,
|
|
102
|
+
* or an origin that cannot be read, refuses the Start. Absent, origin's default branch. A word
|
|
103
|
+
* that is no branch name refuses the Start. Not sent to a machine picked to run on: the launcher
|
|
104
|
+
* read this computer's branches, and that machine's copy is its own.
|
|
102
105
|
*/
|
|
103
106
|
base?: string;
|
|
104
107
|
/**
|
|
105
|
-
* The
|
|
106
|
-
*
|
|
108
|
+
* The branch the run's pull request goes into, from the launcher's Auto menu, kept on the run's
|
|
109
|
+
* record for its agent and the Open PR press. Absent, the repository's default branch. A word
|
|
110
|
+
* that is no branch name refuses the Start. Not sent to a machine picked to run on, as {@link base}.
|
|
107
111
|
*/
|
|
108
|
-
|
|
112
|
+
prBase?: string;
|
|
109
113
|
/**
|
|
110
114
|
* Run this session on a saved machine (#1067), named by its id: the local daemon relays the
|
|
111
115
|
* start to that machine's daemon, which starts it in its own copy of the project, and streams
|
|
@@ -55,6 +55,7 @@ export declare function contextStartAgent(): DashboardContext['startAgent'];
|
|
|
55
55
|
/** Install + register a repo (#433), which only the daemon can do. */
|
|
56
56
|
export declare function contextAddProject(): DashboardContext['addProject'];
|
|
57
57
|
/** Find or add the project a second `openagent` was started in (#2141), which only the daemon can do. */
|
|
58
|
+
export declare function contextPrepareStart(): DashboardContext['prepareStart'];
|
|
58
59
|
export declare function contextStartedIn(): DashboardContext['startedIn'];
|
|
59
60
|
/** Take a project off the list, which only the daemon can do: it runs the project's close hooks first. */
|
|
60
61
|
export declare function contextRemoveProject(): DashboardContext['removeProject'];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { onAgents, onModuleAgents, onAgent, onAgentsDoing, onDocs, onQueue, onOverview, onRecentAgents, onInterventions, onActivity, onDashboard, onGitHostHome, onRepositoryOffer, onGitStatus, onProjectFiles, onRetainedWorktrees, onAgentWorktree, onAgentHandoff, onBridgeQuestion, onBridgeStatus, onBridgeToken, onBridgeEvents, onBridgeAnswer, onBridgeBrowser } from './reads.js';
|
|
1
|
+
export { onAgents, onStartedName, onModuleAgents, onAgent, onAgentsDoing, onDocs, onQueue, onOverview, onRecentAgents, onInterventions, onActivity, onDashboard, onGitHostHome, onRepositoryOffer, onGitStatus, onProjectFiles, onRetainedWorktrees, onAgentWorktree, onAgentMainBranch, onAgentHandoff, onBridgeQuestion, onBridgeStatus, onBridgeToken, onBridgeEvents, onBridgeAnswer, onBridgeBrowser } from './reads.js';
|
|
2
2
|
export { sendStop, sendChoice, sendBridgeAnswer, sendBridgeAnswerCancel, sendBridgeBrowser, sendMessage, sendStart, sendOpenInApp, sendRemoveWorktree, sendDeleteAgent, sendOpenPullRequest, sendPush, sendMergeBranch, sendMerge, sendCreateRepository } from './control.js';
|
|
3
3
|
export { streamAgentEvents, type LiveFeedEvent, type PartialMessage, type StreamSync } from './events.js';
|
|
4
|
-
export { onProjects, sendAddProject, sendStartedAgain, onCloneTarget, sendAddProjectFromAddress, sendRemoveProject, onRecordsReach, sendShareRecords, sendPickProjectDirectory, onOnboarding, onCommands, onStartCheck, onCloneCheck, type ProjectLauncher } from './projects.js';
|
|
4
|
+
export { onProjects, sendAddProject, sendStartedAgain, onCloneTarget, sendAddProjectFromAddress, sendRemoveProject, onRecordsReach, sendShareRecords, sendPickProjectDirectory, onOnboarding, onCommands, onStartBranches, onStartCheck, onCloneCheck, type ProjectLauncher } from './projects.js';
|
|
5
5
|
export { onPreferences, savePreferences, patchPreferences, onProjectPresets, saveProjectPresets, onEditors, type SavePreferencesResult, type PatchPreferencesResult, } from './preferences.js';
|
|
6
6
|
export { type EditorInfo } from '../dashboard/open-in-app.js';
|
|
7
7
|
export { onQuota } from './quota.js';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type ProjectCommand } from '../project-commands.js';
|
|
2
2
|
import { type BranchReach } from '@openagt/agent-data';
|
|
3
3
|
import { type StartReadiness } from '../project-hooks.js';
|
|
4
|
+
import { type StartFromPick } from '../registry.js';
|
|
4
5
|
import { type PickDirectoryResult } from '../pick-directory.js';
|
|
5
6
|
import type { ProjectSummary } from '../dashboard/projects.js';
|
|
6
7
|
import type { OwnProject } from '../dashboard/elsewhere.js';
|
|
@@ -94,21 +95,36 @@ export interface ProjectLauncher {
|
|
|
94
95
|
/** 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. */
|
|
95
96
|
address?: string;
|
|
96
97
|
/**
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
98
|
+
* What the launcher's branch menu always lists: `main`, the name of origin's default branch, and
|
|
99
|
+
* `local`, the branch the project's folder is on now. Absent where a pick could not be obeyed:
|
|
100
|
+
* the start line does not pass `BASE` on, the repository has no remote, or the folder is on no
|
|
101
|
+
* branch. The rest of the menu is {@link onStartBranches}.
|
|
101
102
|
*/
|
|
102
103
|
startFrom?: {
|
|
103
104
|
main: string;
|
|
104
105
|
local: string;
|
|
105
106
|
};
|
|
107
|
+
/** Whether the start line passes `PR_BASE` on: without it the launcher offers no branch for the pull request to go into. */
|
|
108
|
+
prBase: boolean;
|
|
106
109
|
}
|
|
107
110
|
/**
|
|
108
111
|
* The project's commands (#1774), read off its skills folders, whether it has a start hook, whether
|
|
109
|
-
* it has a git host, and the branches an agent can start from. `
|
|
112
|
+
* it has a git host, and the branches an agent can start from. `from` is the person's pick of those
|
|
113
|
+
* branches: a command is waiting for the branch agents will start from. `null` when the project is
|
|
114
|
+
* unknown here.
|
|
110
115
|
*/
|
|
111
|
-
export declare function onCommands(projectId: string): Promise<ProjectLauncher | null>;
|
|
116
|
+
export declare function onCommands(projectId: string, from?: StartFromPick): Promise<ProjectLauncher | null>;
|
|
117
|
+
/** The other branches the launcher's menu lists; `branches` is absent where origin could not be read. */
|
|
118
|
+
export interface StartBranches {
|
|
119
|
+
branches?: string[];
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* The branches an agent can start from besides the two `onCommands` names, read live from origin
|
|
123
|
+
* each time the launcher's menu opens: all of origin's but its main branch, which the menu lists
|
|
124
|
+
* first, and the branch that holds the runs' records, which is no code to start from. `null` when
|
|
125
|
+
* the project is unknown here.
|
|
126
|
+
*/
|
|
127
|
+
export declare function onStartBranches(projectId: string): Promise<StartBranches | null>;
|
|
112
128
|
/**
|
|
113
129
|
* What would stop a run in this project before it spends a checkout, said in the launcher before
|
|
114
130
|
* the Start: the project's `check` hook, given the coding agent picked. A missing CLI or a
|
|
@@ -39,6 +39,12 @@ import { type OwnRuns } from '../dashboard/machine-runs.js';
|
|
|
39
39
|
* instead of losing it.
|
|
40
40
|
*/
|
|
41
41
|
export declare function onAgents(projectId: string): Promise<AgentMeta[]>;
|
|
42
|
+
/**
|
|
43
|
+
* The name asked for a run this computer just started, answered once it is in (`started-names.ts`):
|
|
44
|
+
* the run's row is not in the list yet when it is, and the page shows it where the row will be.
|
|
45
|
+
* Nothing for a run started elsewhere, or when no name came.
|
|
46
|
+
*/
|
|
47
|
+
export declare function onStartedName(agentId: string): Promise<string | undefined>;
|
|
42
48
|
/**
|
|
43
49
|
* A project's runs as a module sees them ({@link ModuleAgent}), only the ones it asks for: a card
|
|
44
50
|
* shows a few of the hundreds a project keeps, and each run in the few fields a module reads, so
|
|
@@ -194,6 +200,12 @@ export declare function onDashboard(): Promise<DashboardData>;
|
|
|
194
200
|
* Files pane reads its own list, through its module.
|
|
195
201
|
*/
|
|
196
202
|
export declare function onProjectFiles(projectId: string, agentId?: string): Promise<string[]>;
|
|
203
|
+
/**
|
|
204
|
+
* The name of origin's default branch on the computer a run is on: what a run that made its own
|
|
205
|
+
* branch and was told no other started from, read by the rule the start itself goes by. Null for a
|
|
206
|
+
* clone with none: such a run started from whatever was checked out, which nobody wrote down.
|
|
207
|
+
*/
|
|
208
|
+
export declare function onAgentMainBranch(projectId: string, agentId: string): Promise<string | null>;
|
|
197
209
|
/** The project's page on its git host and the git host's name (#489, #1820), or null: no git host package, no remote there, or the relay. */
|
|
198
210
|
export declare function onGitHostHome(projectId: string): Promise<GitHostHome | null>;
|
|
199
211
|
/** The repository the project's provider offers to create for it (a project with no remote), or null: no provider, a remote already there, the host out of reach, or the relay. */
|
|
@@ -2,8 +2,8 @@ import { type Standing } from '../project-skills/project.js';
|
|
|
2
2
|
import { type SendSkillsResult } from '../dashboard/send-skills.js';
|
|
3
3
|
export type { SendSkillsResult } from '../dashboard/send-skills.js';
|
|
4
4
|
/**
|
|
5
|
-
* A project's skills, as the dashboard shows and changes them (#2023):
|
|
6
|
-
*
|
|
5
|
+
* A project's skills, as the dashboard shows and changes them (#2023): a card with a tick for each
|
|
6
|
+
* skill a project picks beyond the defaults. A project has a skill when the skill's text is in its folder; the
|
|
7
7
|
* dashboard writes and deletes those files, and sends them where agents start from.
|
|
8
8
|
*/
|
|
9
9
|
/** One skill of the list, as it stands in the project. */
|
|
@@ -61,7 +61,7 @@ export type ChangeSkillsResult = {
|
|
|
61
61
|
error: string;
|
|
62
62
|
};
|
|
63
63
|
/**
|
|
64
|
-
* Write and delete skills in a project's folder: what the
|
|
64
|
+
* Write and delete skills in a project's folder: what the Skills page saves. Only the names
|
|
65
65
|
* of the list are taken; anything else is refused whole. The scheduler's skill written switches the
|
|
66
66
|
* scheduler on for this machine, and it starts at once, by its own line, as it would have at this
|
|
67
67
|
* dashboard's opening.
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
export type { AgentError, SessionInfo } from './agent-view.js';
|
|
16
16
|
export type { ChoiceRequest, OpenAgentEvent } from './events.js';
|
|
17
17
|
export type { QuotaBoundary } from './quota-boundary.js';
|
|
18
|
-
export type { CustomPreset, Preferences } from './registry.js';
|
|
18
|
+
export type { CustomPreset, Preferences, StartFromPick } from './registry.js';
|
|
19
19
|
export type { PublishPick } from './publish-levels.js';
|
|
20
20
|
export type { DriverQuotaWindow } from '@openagt/agent-driver';
|
|
21
21
|
export type { AgentDoing, AgentMeta, AgentStatus } from './store/agent-store.js';
|
|
@@ -13,8 +13,6 @@ export interface ProjectCommand {
|
|
|
13
13
|
description?: string;
|
|
14
14
|
/** 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. */
|
|
15
15
|
waiting?: string;
|
|
16
|
-
/** With `waiting`: whether the branch the folder is on has the skill, so an agent started from that branch does have the command. */
|
|
17
|
-
here?: true;
|
|
18
16
|
}
|
|
19
17
|
/**
|
|
20
18
|
* The project's commands, by name: the skills whose front matter says
|
|
@@ -59,25 +59,30 @@ export interface RunHooksOptions {
|
|
|
59
59
|
* goes there. Never throws.
|
|
60
60
|
*/
|
|
61
61
|
export declare function runProjectHooks(cwd: string, kind: HookKind, opts?: RunHooksOptions): Promise<void>;
|
|
62
|
-
/** What a `start` line is given: the prompt, the coding agent, model, publish level
|
|
62
|
+
/** What a `start` line is given: the prompt, and the coding agent, model, publish level branch to start from and pull request's branch when the person picked them. */
|
|
63
63
|
export interface StartHookInput {
|
|
64
64
|
prompt: string;
|
|
65
65
|
driver?: string;
|
|
66
66
|
model?: string;
|
|
67
67
|
/** How hard the model may think, by the coding agent's own names. */
|
|
68
68
|
effort?: string;
|
|
69
|
-
/** A fresh agent's prompt once the run ends done with a pull request; the merge waits for it. */
|
|
70
|
-
then?: string;
|
|
71
69
|
/** How far the run takes its work when its agent finishes: `commit`, `branch`, `pr` or `merge`. */
|
|
72
70
|
publish?: string;
|
|
73
71
|
/** The branch the run's own branch starts from; origin's default branch when absent. */
|
|
74
72
|
base?: string;
|
|
73
|
+
/** The branch the run's pull request goes into; the repository's default branch when absent. */
|
|
74
|
+
prBase?: string;
|
|
75
75
|
/**
|
|
76
76
|
* Whether the run is given a short name by a small model (the person's setting). `false` reaches
|
|
77
77
|
* the run's own tool through the environment rather than the line, so no project's `hooks.yml`
|
|
78
78
|
* has to carry it; absent means named, which is what every run was before the setting existed.
|
|
79
79
|
*/
|
|
80
80
|
nameRun?: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Where the run finds the name this computer is asking for it as it starts it (`ReadyNaming`),
|
|
83
|
+
* so it does not ask again. In the environment too, read by the run's own tool.
|
|
84
|
+
*/
|
|
85
|
+
nameFile?: string;
|
|
81
86
|
}
|
|
82
87
|
/**
|
|
83
88
|
* Whether a `start` line passes the branch to start from on: it mentions `$BASE` or `${BASE`. A
|
|
@@ -85,6 +90,8 @@ export interface StartHookInput {
|
|
|
85
90
|
* not; the launcher then offers no pick, rather than one the line would drop.
|
|
86
91
|
*/
|
|
87
92
|
export declare function startLineTakesBase(line: string): boolean;
|
|
93
|
+
/** Whether a `start` line passes the branch a pull request goes into on, read as {@link startLineTakesBase} reads `BASE`. */
|
|
94
|
+
export declare function startLineTakesPrBase(line: string): boolean;
|
|
88
95
|
/** What a `resume` line is given: the run, and the person's text or their answer to the question it ended on. */
|
|
89
96
|
export type ResumeHookInput = {
|
|
90
97
|
runId: string;
|
|
@@ -105,9 +112,8 @@ export type RunHookResult = {
|
|
|
105
112
|
};
|
|
106
113
|
/**
|
|
107
114
|
* Run the project's `start` line: the prompt in `PROMPT`, the picks in `DRIVER`, `MODEL`, `EFFORT`,
|
|
108
|
-
* `PUBLISH` and `
|
|
109
|
-
*
|
|
110
|
-
* agent that runs it.
|
|
115
|
+
* `PUBLISH`, `BASE` and `PR_BASE` when made. The line answers one JSON document on stdout whose `id` names the
|
|
116
|
+
* run it started, and whose `driver` may name the coding agent that runs it.
|
|
111
117
|
*/
|
|
112
118
|
export declare function runStartHook(cwd: string, input: StartHookInput, opts?: Omit<RunHooksOptions, 'log'>): Promise<RunHookResult>;
|
|
113
119
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The skills a project can pick
|
|
2
|
+
* The skills a project can pick on the dashboard's Skills page (#2023), in its groups, with what
|
|
3
3
|
* is ticked the first time. Every group is ticked except the skills that are useless until something of
|
|
4
4
|
* their own is set up. The skills every run gets by default are not here (the branches skill,
|
|
5
5
|
* and the ones its command names): they come with every run, with nothing written in the
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** One change to a project's skills, from the dashboard's Skills
|
|
1
|
+
/** One change to a project's skills, from the dashboard's Skills page or its Update button. */
|
|
2
2
|
export interface Change {
|
|
3
3
|
/** Skills to write: a new one, or one written again over what is there. */
|
|
4
4
|
write?: readonly string[];
|
|
@@ -100,6 +100,18 @@ export interface CustomPreset {
|
|
|
100
100
|
label: string;
|
|
101
101
|
prompt: string;
|
|
102
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Where agents started from the launcher start, when it is not the project's main branch: the
|
|
105
|
+
* branch the project's folder is on, whatever that is by then, or one of origin's branches, by name.
|
|
106
|
+
*/
|
|
107
|
+
export type StartFromPick = {
|
|
108
|
+
kind: 'local';
|
|
109
|
+
} | {
|
|
110
|
+
kind: 'published';
|
|
111
|
+
branch: string;
|
|
112
|
+
};
|
|
113
|
+
/** A value read as a {@link StartFromPick}: nothing for anything else, a word that is no branch name included. */
|
|
114
|
+
export declare function startFromPick(value: unknown): StartFromPick | undefined;
|
|
103
115
|
export interface Preferences {
|
|
104
116
|
/** Fire a browser notification when a new item lands on the "needs you" queue (#627). Absent = on. */
|
|
105
117
|
notifyBrowser?: boolean;
|
|
@@ -131,25 +143,17 @@ export interface Preferences {
|
|
|
131
143
|
/** How far a run started from the dashboard publishes its work: `nothing`, or the level handed to the project's start hook, `commit`, `branch`, `pr` or `merge`. The launcher's menu shows it and writes it. Absent = none saved: the daemon decides where a Start goes. */
|
|
132
144
|
publish?: PublishPick;
|
|
133
145
|
/**
|
|
134
|
-
* Where an agent started from the launcher starts, per project
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
* starts from its main branch**, so the default stores nothing.
|
|
146
|
+
* Where an agent started from the launcher starts, per project, by its id: "My local branch",
|
|
147
|
+
* or a branch of origin's. The launcher's branch menu shows it and writes it. **A project not
|
|
148
|
+
* listed starts from its main branch**, so the default stores nothing.
|
|
138
149
|
*/
|
|
139
|
-
startFrom?: Record<string,
|
|
150
|
+
startFrom?: Record<string, StartFromPick>;
|
|
140
151
|
/**
|
|
141
152
|
* Where a run started from the launcher goes: a saved machine, by its id. The "Run on" pick
|
|
142
153
|
* writes it, and the page picks it again at its next opening. **Absent = this machine.** A
|
|
143
154
|
* machine no longer saved, or offline when the page opens, is not picked: the run starts here.
|
|
144
155
|
*/
|
|
145
156
|
runOn?: string;
|
|
146
|
-
/**
|
|
147
|
-
* Post-merge cleanup: a run started from the launcher, in a project that has the
|
|
148
|
-
* `post-merge-cleanup` command, is followed by a fresh agent running it on the run's branch
|
|
149
|
-
* before the run's pull request merges. The default of the launcher's box, which writes it
|
|
150
|
-
* too. **Absent = off.**
|
|
151
|
-
*/
|
|
152
|
-
postMergeCleanup?: boolean;
|
|
153
157
|
/**
|
|
154
158
|
* Name each run: a small model is asked for the two to five words a list of runs shows in place
|
|
155
159
|
* of the first line of the prompt (`agent-runner`'s `title.ts`). It is one short turn of the
|