@openagt/dashboard 0.40.0 → 0.42.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.
Files changed (145) hide show
  1. package/dist/built-in.d.ts +5 -0
  2. package/dist/built-in.d.ts.map +1 -1
  3. package/dist/built-in.js +7 -0
  4. package/dist/built-in.js.map +1 -1
  5. package/dist/clone-project.d.ts +11 -0
  6. package/dist/clone-project.d.ts.map +1 -1
  7. package/dist/clone-project.js +38 -12
  8. package/dist/clone-project.js.map +1 -1
  9. package/dist/daemon-runtime.d.ts.map +1 -1
  10. package/dist/daemon-runtime.js +216 -63
  11. package/dist/daemon-runtime.js.map +1 -1
  12. package/dist/daemon.d.ts.map +1 -1
  13. package/dist/daemon.js +6 -2
  14. package/dist/daemon.js.map +1 -1
  15. package/dist/dashboard/activity.d.ts +2 -2
  16. package/dist/dashboard/activity.d.ts.map +1 -1
  17. package/dist/dashboard/activity.js +2 -2
  18. package/dist/dashboard/activity.js.map +1 -1
  19. package/dist/dashboard/computers-sync.d.ts +104 -0
  20. package/dist/dashboard/computers-sync.d.ts.map +1 -0
  21. package/dist/dashboard/computers-sync.js +179 -0
  22. package/dist/dashboard/computers-sync.js.map +1 -0
  23. package/dist/dashboard/elsewhere.d.ts +92 -0
  24. package/dist/dashboard/elsewhere.d.ts.map +1 -0
  25. package/dist/dashboard/elsewhere.js +155 -0
  26. package/dist/dashboard/elsewhere.js.map +1 -0
  27. package/dist/dashboard/interventions.d.ts +6 -0
  28. package/dist/dashboard/interventions.d.ts.map +1 -1
  29. package/dist/dashboard/interventions.js.map +1 -1
  30. package/dist/dashboard/machine-interventions.d.ts +52 -0
  31. package/dist/dashboard/machine-interventions.d.ts.map +1 -0
  32. package/dist/dashboard/machine-interventions.js +117 -0
  33. package/dist/dashboard/machine-interventions.js.map +1 -0
  34. package/dist/dashboard/models.d.ts +2 -1
  35. package/dist/dashboard/models.d.ts.map +1 -1
  36. package/dist/dashboard/models.js +1 -1
  37. package/dist/dashboard/models.js.map +1 -1
  38. package/dist/dashboard/module-serve.d.ts +6 -0
  39. package/dist/dashboard/module-serve.d.ts.map +1 -1
  40. package/dist/dashboard/module-serve.js +11 -1
  41. package/dist/dashboard/module-serve.js.map +1 -1
  42. package/dist/dashboard/overview.d.ts +20 -5
  43. package/dist/dashboard/overview.d.ts.map +1 -1
  44. package/dist/dashboard/overview.js +28 -8
  45. package/dist/dashboard/overview.js.map +1 -1
  46. package/dist/dashboard/projects.d.ts +11 -2
  47. package/dist/dashboard/projects.d.ts.map +1 -1
  48. package/dist/dashboard/projects.js +3 -2
  49. package/dist/dashboard/projects.js.map +1 -1
  50. package/dist/dashboard/relay-endpoints.d.ts +2 -0
  51. package/dist/dashboard/relay-endpoints.d.ts.map +1 -1
  52. package/dist/dashboard/relay-endpoints.js +4 -2
  53. package/dist/dashboard/relay-endpoints.js.map +1 -1
  54. package/dist/dashboard/rpc-serve.d.ts +21 -1
  55. package/dist/dashboard/rpc-serve.d.ts.map +1 -1
  56. package/dist/dashboard/rpc-serve.js +9 -3
  57. package/dist/dashboard/rpc-serve.js.map +1 -1
  58. package/dist/dashboard/server.d.ts +2 -0
  59. package/dist/dashboard/server.d.ts.map +1 -1
  60. package/dist/dashboard/server.js +6 -4
  61. package/dist/dashboard/server.js.map +1 -1
  62. package/dist/dashboard/types.d.ts +3 -1
  63. package/dist/dashboard/types.d.ts.map +1 -1
  64. package/dist/dashboard-bundle/assets/host/module-BWXIkXv5.js +1 -0
  65. package/dist/dashboard-bundle/assets/main-CA55XzlS.js +148 -0
  66. package/dist/dashboard-bundle/assets/main-Ca6eaXat.css +2 -0
  67. package/dist/dashboard-bundle/assets/{module-C8GDq0nb.js → module-CXKv8UKd.js} +5 -5
  68. package/dist/dashboard-bundle/index.html +4 -4
  69. package/dist/dashboard-rpc/computers.d.ts +27 -0
  70. package/dist/dashboard-rpc/computers.d.ts.map +1 -0
  71. package/dist/dashboard-rpc/computers.js +90 -0
  72. package/dist/dashboard-rpc/computers.js.map +1 -0
  73. package/dist/dashboard-rpc/context.js +1 -1
  74. package/dist/dashboard-rpc/context.js.map +1 -1
  75. package/dist/dashboard-rpc/index.d.ts +1 -1
  76. package/dist/dashboard-rpc/index.d.ts.map +1 -1
  77. package/dist/dashboard-rpc/index.js +1 -1
  78. package/dist/dashboard-rpc/index.js.map +1 -1
  79. package/dist/dashboard-rpc/machines.d.ts +22 -3
  80. package/dist/dashboard-rpc/machines.d.ts.map +1 -1
  81. package/dist/dashboard-rpc/machines.js +102 -22
  82. package/dist/dashboard-rpc/machines.js.map +1 -1
  83. package/dist/dashboard-rpc/modules.d.ts.map +1 -1
  84. package/dist/dashboard-rpc/modules.js +19 -3
  85. package/dist/dashboard-rpc/modules.js.map +1 -1
  86. package/dist/dashboard-rpc/projects.d.ts +14 -0
  87. package/dist/dashboard-rpc/projects.d.ts.map +1 -1
  88. package/dist/dashboard-rpc/projects.js +48 -5
  89. package/dist/dashboard-rpc/projects.js.map +1 -1
  90. package/dist/dashboard-rpc/reads.d.ts +6 -0
  91. package/dist/dashboard-rpc/reads.d.ts.map +1 -1
  92. package/dist/dashboard-rpc/reads.js +48 -14
  93. package/dist/dashboard-rpc/reads.js.map +1 -1
  94. package/dist/dashboard-rpc/relay-dispatch.d.ts +12 -0
  95. package/dist/dashboard-rpc/relay-dispatch.d.ts.map +1 -1
  96. package/dist/dashboard-rpc/relay-dispatch.js +44 -8
  97. package/dist/dashboard-rpc/relay-dispatch.js.map +1 -1
  98. package/dist/dashboard-rpc/runs-changed.d.ts.map +1 -1
  99. package/dist/dashboard-rpc/runs-changed.js +14 -6
  100. package/dist/dashboard-rpc/runs-changed.js.map +1 -1
  101. package/dist/dashboard-rpc/test-context.d.ts +3 -1
  102. package/dist/dashboard-rpc/test-context.d.ts.map +1 -1
  103. package/dist/dashboard-rpc/test-context.js +13 -1
  104. package/dist/dashboard-rpc/test-context.js.map +1 -1
  105. package/dist/module-types/dashboard/components/MachineMark.d.ts +14 -0
  106. package/dist/module-types/dashboard/lib/models.d.ts +11 -1
  107. package/dist/module-types/dashboard/rpc/machines.d.ts +35 -0
  108. package/dist/module-types/src/built-in.d.ts +5 -0
  109. package/dist/module-types/src/clone-project.d.ts +11 -0
  110. package/dist/module-types/src/dashboard/activity.d.ts +2 -2
  111. package/dist/module-types/src/dashboard/computers-sync.d.ts +103 -0
  112. package/dist/module-types/src/dashboard/elsewhere.d.ts +91 -0
  113. package/dist/module-types/src/dashboard/interventions.d.ts +6 -0
  114. package/dist/module-types/src/dashboard/machine-interventions.d.ts +51 -0
  115. package/dist/module-types/src/dashboard/models.d.ts +2 -1
  116. package/dist/module-types/src/dashboard/module-serve.d.ts +6 -0
  117. package/dist/module-types/src/dashboard/overview.d.ts +20 -5
  118. package/dist/module-types/src/dashboard/projects.d.ts +11 -2
  119. package/dist/module-types/src/dashboard/rpc-serve.d.ts +21 -1
  120. package/dist/module-types/src/dashboard/types.d.ts +3 -1
  121. package/dist/module-types/src/dashboard-rpc/computers.d.ts +26 -0
  122. package/dist/module-types/src/dashboard-rpc/index.d.ts +1 -1
  123. package/dist/module-types/src/dashboard-rpc/machines.d.ts +22 -3
  124. package/dist/module-types/src/dashboard-rpc/projects.d.ts +14 -0
  125. package/dist/module-types/src/dashboard-rpc/reads.d.ts +6 -0
  126. package/dist/module-types/src/dashboard-rpc/relay-dispatch.d.ts +28 -0
  127. package/dist/module-types/src/project-modules.d.ts +19 -0
  128. package/dist/module-types/src/registry.d.ts +28 -0
  129. package/dist/module-types/src/repository-address.d.ts +6 -0
  130. package/dist/project-modules.d.ts +19 -0
  131. package/dist/project-modules.d.ts.map +1 -1
  132. package/dist/project-modules.js +42 -2
  133. package/dist/project-modules.js.map +1 -1
  134. package/dist/registry.d.ts +28 -0
  135. package/dist/registry.d.ts.map +1 -1
  136. package/dist/registry.js +60 -4
  137. package/dist/registry.js.map +1 -1
  138. package/dist/repository-address.d.ts +6 -0
  139. package/dist/repository-address.d.ts.map +1 -1
  140. package/dist/repository-address.js +9 -0
  141. package/dist/repository-address.js.map +1 -1
  142. package/package.json +20 -20
  143. package/dist/dashboard-bundle/assets/host/module-JRfd42hf.js +0 -1
  144. package/dist/dashboard-bundle/assets/main-BhC5aJ1h.css +0 -2
  145. package/dist/dashboard-bundle/assets/main-Bo8Pao9A.js +0 -148
@@ -12,8 +12,15 @@ import { type GitHostFor } from '../store/git-host.js';
12
12
  export interface ProjectSummary {
13
13
  /** Registry id (stable, URL-safe). */
14
14
  id: string;
15
- /** Absolute repo path. */
15
+ /** Absolute repo path: on the computer the project is on. */
16
16
  path: string;
17
+ /**
18
+ * The saved machine the project is on, when it is not on this computer (elsewhere.ts): what the
19
+ * page asks of it is asked there, and a run of it starts there unless another computer is picked.
20
+ */
21
+ machine?: string;
22
+ /** The packages that bring a module's pages to a project of another computer's, as that computer said them. */
23
+ modules?: string[];
17
24
  /** Display name (the path's basename). */
18
25
  name: string;
19
26
  /** True when the repo still has its `.openagent/` marker. */
@@ -56,10 +63,12 @@ export interface SummarizeDeps {
56
63
  readAgents?: (path: string) => Promise<AgentMeta[]>;
57
64
  /** The project's git host. Defaults to {@link projectGitHost}. */
58
65
  gitHost?: GitHostFor;
66
+ /** The project's name. Defaults to {@link projectNameOf}: its repository's. */
67
+ name?: (path: string) => Promise<string>;
59
68
  }
60
69
  /** A project's runs, live prepended to the archived history. Forgiving: a failed read is `[]`. */
61
70
  /**
62
- * Derive a {@link ProjectSummary} from a registry record: its display name, whether
71
+ * Derive a {@link ProjectSummary} from a registry record: its name (its repository's), whether
63
72
  * it is still activated, and its last activity. Forgiving: a failed read reads as an
64
73
  * inactive project with no activity, never a throw.
65
74
  *
@@ -1,4 +1,7 @@
1
1
  import type { IncomingMessage, ServerResponse } from 'node:http';
2
+ import { type OwnProject } from './elsewhere.js';
3
+ import type { MachinesQueue } from './machine-interventions.js';
4
+ import type { ProjectSummary } from './projects.js';
2
5
  import type { OpenAgentEvent } from '../events.js';
3
6
  import type { PreferencesStore } from '../registry.js';
4
7
  import type { QuotaSource } from './quota.js';
@@ -7,7 +10,7 @@ import type { BridgeBrowserOwner } from '../bridge-browser.js';
7
10
  import type { ProjectErrorsReader } from '../project-errors.js';
8
11
  import type { AddProjectResult, RemoveProjectResult, StartAgentOptions, StartAgentResult, StartedInResult } from './types.js';
9
12
  import type { AgentMeta } from '../store/index.js';
10
- import type { RemoteTarget } from './remote-run.js';
13
+ import type { BringProject, RelayProject, RemoteTarget } from './remote-run.js';
11
14
  import type { MachineRuns } from './machine-runs.js';
12
15
  /** Wired by the daemon so `sendStart` can reach the daemon's own `startAgent` closure. */
13
16
  export type StartAgentHandler = (prompt: string, options: StartAgentOptions, projectId?: string) => StartAgentResult | Promise<StartAgentResult>;
@@ -58,6 +61,23 @@ export interface RemoteAgents {
58
61
  machineRuns(projectPath: string): Promise<MachineRuns[]>;
59
62
  /** Tell `changed` each time a saved machine's runs of the project at `projectPath` change, until the answer is called. */
60
63
  followRuns(projectPath: string, changed: () => void): () => void;
64
+ /** The projects of the person's other computers that this one does not have, each marked with the saved machine it is on (elsewhere.ts). */
65
+ elsewhere(): Promise<ProjectSummary[]>;
66
+ /** What the computer another computer's project is on says of its own runs of it, followed for a while from now on. */
67
+ elsewhereRuns(projectId: string): Promise<MachineRuns[]>;
68
+ /** Tell `changed` each time the runs of another computer's project change there, until the answer is called. */
69
+ followElsewhereRuns(projectId: string, changed: () => void): () => void;
70
+ /** Another computer's project by its id here: the saved machine it is on, and the project as that computer said it. */
71
+ elsewhereHome(projectId: string): Promise<{
72
+ machine: string;
73
+ project: OwnProject;
74
+ } | undefined>;
75
+ /** Make a page's call about another computer's project on that computer, and answer what it answered. */
76
+ forward(projectId: string, fn: string, args: unknown[]): Promise<unknown>;
77
+ /** What the person's other computers say of their Human Queues, each named as its project is here (machine-interventions.ts). */
78
+ machinesQueue(): Promise<MachinesQueue>;
79
+ /** Where this computer's copy of the project at `address` stands; with `bring`, cloned and added when there is none, on its own. */
80
+ bringHere(address: string, bring?: BringProject): Promise<RelayProject>;
61
81
  }
62
82
  /**
63
83
  * What every RPC acts through.
@@ -119,12 +119,14 @@ export interface StartAgentOptions {
119
119
  * there is none. `driver` is the coding agent the hook said runs it: what another computer that
120
120
  * follows the run shows, since the run's record stays on this one. `notThere` marks the one
121
121
  * refusal a page can do something about: the machine the run was sent to does not have the
122
- * project yet, and can clone it.
122
+ * project yet, and can clone it. `projectId` is the project the run started in, when it is not the
123
+ * one the start named: this computer's own copy of a project another computer of the person's has.
123
124
  */
124
125
  export type StartAgentResult = {
125
126
  ok: true;
126
127
  agentId: string;
127
128
  driver?: string;
129
+ projectId?: string;
128
130
  } | {
129
131
  ok: false;
130
132
  error: string;
@@ -0,0 +1,26 @@
1
+ import { type OwnComputers, type OwnDoor } from '../dashboard/computers-sync.js';
2
+ /** Where this computer's own door is reached at an address, when it is: a server's, or its name on Tailscale; and its id at each server it keeps a line to. */
3
+ export declare function ownDoor(): Promise<OwnDoor>;
4
+ /** A link one more device of the person's gets in with at this computer's own door: only at an address. */
5
+ export declare function ownCode(): Promise<string | undefined>;
6
+ /**
7
+ * The person's computers this one reaches at their addresses, and the ones the person removed
8
+ * here, for another computer of theirs that brings itself up to them: never another person's.
9
+ */
10
+ export declare function onOwnComputers(): Promise<OwnComputers>;
11
+ export type AddComputerResult = {
12
+ ok: true;
13
+ } | {
14
+ ok: false;
15
+ error: string;
16
+ };
17
+ /**
18
+ * Save a computer another of the person's computers hands this one, by the link it got in with
19
+ * for it: this computer's own key there. Not this computer itself, not one the person removed
20
+ * here since the other saved it (`added`), and only one reached at an address.
21
+ */
22
+ export declare function sendAddComputer(link: unknown, label: unknown, added: unknown): Promise<AddComputerResult>;
23
+ /** Take out here the computers the person removed on another of theirs, each removed after it was saved here. */
24
+ export declare function sendForgetComputers(gone: unknown): Promise<{
25
+ ok: true;
26
+ }>;
@@ -1,7 +1,7 @@
1
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';
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, type ProjectLauncher } from './projects.js';
4
+ export { onProjects, sendAddProject, sendStartedAgain, onCloneTarget, sendAddProjectFromAddress, sendRemoveProject, onRecordsReach, sendShareRecords, sendPickProjectDirectory, onOnboarding, onCommands, 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 Health } from '../health.js';
2
2
  import { type MachineLogins } from '../dashboard/machine-logins.js';
3
3
  import { type StartReadiness } from '../project-hooks.js';
4
+ import type { ModelsView } from '../dashboard/models.js';
4
5
  /** A saved machine as the browser sees it: no key. */
5
6
  export interface Machine {
6
7
  id: string;
@@ -30,6 +31,8 @@ export declare function onMachines(): Promise<Machine[]>;
30
31
  * everyone: the door says whose it is when it tells this OpenAgent of it.
31
32
  */
32
33
  export declare function sendAddMachine(pasted: string, label?: string, owner?: string): Promise<AddMachineResult>;
34
+ /** Get in at the machine a link names and save it, with this computer's own key there. */
35
+ export declare function saveMachine(pasted: string, label?: string, owner?: string): Promise<AddMachineResult>;
33
36
  export type RemoveMachineResult = {
34
37
  ok: true;
35
38
  } | {
@@ -73,6 +76,8 @@ export declare function onComputersThrough(machineId: string): Promise<Computers
73
76
  * computer's logins.
74
77
  */
75
78
  export declare function sendAddComputerThrough(machineId: string, computerId: string): Promise<AddMachineResult>;
79
+ /** Save a computer on a line at a saved server, through that server. */
80
+ export declare function saveComputerThrough(machineId: string, computerId: string): Promise<AddMachineResult>;
76
81
  /** Write down that the person was told their logins are copied to a saved machine of another person's: the page says it once. */
77
82
  export declare function sendMachineTold(machineId: string): Promise<{
78
83
  ok: boolean;
@@ -211,8 +216,22 @@ export declare function sendProjectToMachine(projectId: string, machineId: strin
211
216
  export declare function onProjectOnMachine(projectId: string, machineId: string): Promise<ProjectOnMachine>;
212
217
  /**
213
218
  * What would stop a run sent to a saved machine, as the machine says from its own copy of the
214
- * project: its coding agent there, installed and logged in. `null` when there is nothing to say:
215
- * a machine that does not answer, does not have the project yet (it clones it at the first run),
216
- * or has no check.
219
+ * project: its coding agent there, installed and logged in. A machine that does not have the
220
+ * project yet clones it at the first run, and says before it whether it could: its coding agent,
221
+ * and whether its logins read the repository. `null` when there is nothing to say: a machine that
222
+ * does not answer, or one with no check.
217
223
  */
218
224
  export declare function onMachineStartCheck(projectId: string, machineId: string, driver?: string): Promise<StartReadiness | null>;
225
+ /**
226
+ * The models each coding agent offers on a saved machine, as it asked its own: a run sent there is
227
+ * given one of these. `null` when it does not answer, or runs an OpenAgent that is not asked this.
228
+ */
229
+ export declare function onMachineModels(machineId: string): Promise<ModelsView | null>;
230
+ /**
231
+ * Have this computer clone a project only another computer of the person's has (elsewhere.ts),
232
+ * for a run here: on its own, as for a machine that is sent a run. {@link onProjectHere} says when
233
+ * it is here. Nothing happens when it is here already, or on its way.
234
+ */
235
+ export declare function sendProjectHere(projectId: string): Promise<ProjectOnMachine>;
236
+ /** Whether this computer has another computer's project by now, or why it will not. */
237
+ export declare function onProjectHere(projectId: string): Promise<ProjectOnMachine>;
@@ -3,8 +3,15 @@ import { type BranchReach } from '@openagt/agent-data';
3
3
  import { type StartReadiness } from '../project-hooks.js';
4
4
  import { type PickDirectoryResult } from '../pick-directory.js';
5
5
  import type { ProjectSummary } from '../dashboard/projects.js';
6
+ import type { OwnProject } from '../dashboard/elsewhere.js';
6
7
  import type { AddProjectResult, OnboardingSuggestion, RemoveProjectResult, StartedInResult } from '../dashboard/types.js';
7
8
  export declare function onProjects(): Promise<ProjectSummary[]>;
9
+ /**
10
+ * This computer's own projects, for another computer of the person's that lists them beside its
11
+ * own (elsewhere.ts): each with the address another computer names it by and clones it from, and
12
+ * whether its agents' records are shared. Never the projects this computer lists of others.
13
+ */
14
+ export declare function onOwnProjects(): Promise<OwnProject[]>;
8
15
  /**
9
16
  * Add a project from the dashboard (#396/#433): install the repo and register it so it joins the
10
17
  * Projects list. Like `sendStart` this needs the daemon (it spawns git + writes the shared
@@ -110,3 +117,10 @@ export declare function onCommands(projectId: string): Promise<ProjectLauncher |
110
117
  * `null` for an unknown project or one without a check hook: nothing to say.
111
118
  */
112
119
  export declare function onStartCheck(projectId: string, driver?: string): Promise<StartReadiness | null>;
120
+ /**
121
+ * What would stop a run of a project this computer clones first, asked before it does: its coding
122
+ * agent, installed and logged in, and whether its logins read the repository at the address. A
123
+ * computer that does not have the project yet has no check hook of it to run. `as` is what the
124
+ * asker calls this computer, so the words read right on its page.
125
+ */
126
+ export declare function onCloneCheck(address: string, driver?: string, as?: string): Promise<StartReadiness>;
@@ -173,6 +173,12 @@ export declare function onRecentAgents(): Promise<RecentAgent[]>;
173
173
  * backlog the moment the git host answers.
174
174
  */
175
175
  export declare function onInterventions(): Promise<ProjectionRead<Intervention>>;
176
+ /**
177
+ * This computer's own Human Queue, for another computer of the person's that shows it beside its
178
+ * own (machine-interventions.ts): the items of this computer's projects only, never of the
179
+ * projects it lists of other computers, so no computer asks back the one that asked it.
180
+ */
181
+ export declare function onOwnInterventions(): Promise<ProjectionRead<Intervention>>;
176
182
  /**
177
183
  * The cross-project "New activity" feed (#627): recent run started/finished transitions, newest
178
184
  * first, with the projects that were read whole beside them (#1625) — see {@link onInterventions}.
@@ -0,0 +1,28 @@
1
+ /** The names a relay caller may invoke. */
2
+ export declare const RELAY_RPC_NAMES: readonly string[];
3
+ /**
4
+ * The calls a page makes about another computer's project (elsewhere.ts) that this computer passes
5
+ * on to that computer as they are: every relayed one but a start, which goes where "Run on" says,
6
+ * and a computer's own runs, which only a computer asks for.
7
+ */
8
+ export declare const ELSEWHERE_FORWARDED: ReadonlySet<string>;
9
+ /** Whether a relayed RPC only reads. A name that is not on the whitelist is no read. */
10
+ export declare function isRelayRead(fn: string): boolean;
11
+ /**
12
+ * Whether one relayed call only reads, here: a read by its name, or a module's command that its
13
+ * package says only reads, as this computer's own copy of the module says it. The caller's word
14
+ * for it counts for nothing: a server holding this computer's key could call any command a read.
15
+ */
16
+ export declare function isRelayReadCall(projectId: string, fn: string, args: readonly unknown[]): Promise<boolean>;
17
+ /**
18
+ * Dispatch one relayed RPC against `projectId` (this machine's own id for the project). `args[0]`
19
+ * from the caller is the remote daemon's project id and is meaningless here, so it is replaced
20
+ * with `projectId`; the rest (path, agentId, ...) carry through unchanged. Throws on an unknown name.
21
+ */
22
+ export declare function dispatchRelayRpc(projectId: string, fn: string, args: unknown[]): Promise<unknown>;
23
+ /** The machine-wide names a relay caller may invoke. */
24
+ export declare const MACHINE_RPC_NAMES: readonly string[];
25
+ /** Whether a machine-wide call only reads. A name that is not on the whitelist is no read. */
26
+ export declare function isMachineRead(fn: string): boolean;
27
+ /** Dispatch one machine-wide call, its arguments as the caller gave them. Throws on an unknown name. */
28
+ export declare function dispatchMachineRpc(fn: string, args: unknown[]): Promise<unknown>;
@@ -20,7 +20,20 @@ export interface ProjectModule {
20
20
  bins: Record<string, string>;
21
21
  /** The module's server part, an absolute path inside the package, when it has one. */
22
22
  server?: string;
23
+ /**
24
+ * The commands that only read, by command name: the first word of the arguments, or `""` for
25
+ * the command with no word (flags only). What a computer that lets its server only watch answers
26
+ * of the module; any other command changes something there, and is refused. The package says
27
+ * them: `"openagent": { "reads": { "<command>": ["list", ""] } }`.
28
+ */
29
+ reads: Record<string, string[]>;
23
30
  }
31
+ /**
32
+ * Whether running the module's command with these arguments only reads, as its package says
33
+ * ({@link ProjectModule.reads}): its first word is a read, or it has no word and its bare form is
34
+ * one, every argument then being a flag.
35
+ */
36
+ export declare function commandReads(module: Pick<ProjectModule, 'bins' | 'reads'>, args: readonly unknown[], command?: string): boolean;
24
37
  /**
25
38
  * The modules a project has: each of its dependencies whose package.json exports `./dashboard` to
26
39
  * a file that exists inside the package, plus the modules among the packages OpenAgent brings to
@@ -37,6 +50,12 @@ export declare function findProjectModule(root: string, name: string): Promise<P
37
50
  export declare function readComputerModules(): Promise<ProjectModule[]>;
38
51
  /** The one module of this computer's that `name` names, or undefined. */
39
52
  export declare function findComputerModule(name: string): Promise<ProjectModule | undefined>;
53
+ /**
54
+ * The module of a package OpenAgent brings to projects, from OpenAgent's own copy: the page of
55
+ * another computer's project, on a computer where no project of its own has it. Undefined for any
56
+ * other package.
57
+ */
58
+ export declare function findBroughtModule(name: string): Promise<ProjectModule | undefined>;
40
59
  /**
41
60
  * The file a module serves at `rel`, a path relative to its module's directory: its module, its
42
61
  * stylesheet, a chunk. `undefined` for a path that leaves that directory (symlinks resolved) or
@@ -1,5 +1,6 @@
1
1
  import { type OverviewLayouts } from './overview-layout.js';
2
2
  import { type PublishPick } from './publish-levels.js';
3
+ import { type OwnProject } from './dashboard/elsewhere.js';
3
4
  /**
4
5
  * The multi-project registry (#390): the list of projects the user has
5
6
  * installed OpenAgent into, kept as a single JSON file `.bashrc`-style —
@@ -58,6 +59,20 @@ export interface MachineRecord {
58
59
  listed?: string[];
59
60
  /** When the machine last answered for its runs, ISO, kept to the minute: what its runs say while it does not answer. */
60
61
  seenAt?: string;
62
+ /** Its own projects, as it said them last (elsewhere.ts): a computer of the person's own lists them while it does not answer. */
63
+ projects?: OwnProject[];
64
+ /** When it was first saved here, ISO: of two computers' word on it, a removal after this is the one that stands (computers-sync.ts). */
65
+ added?: string;
66
+ }
67
+ /**
68
+ * A computer the person removed, by its address: one of their other computers that still has it
69
+ * does not bring it back here, and takes it out too (computers-sync.ts). Saved again by the person,
70
+ * it is no longer one.
71
+ */
72
+ export interface ForgottenMachine {
73
+ url: string;
74
+ /** When it was removed, ISO. */
75
+ at: string;
61
76
  }
62
77
  /** A GitHub account's name: letters, digits and single dashes, at most 39. */
63
78
  export declare function isAccount(value: unknown): value is string;
@@ -196,6 +211,8 @@ export interface Registry {
196
211
  * in again. Top-level, and never part of what the browser is handed. Absent until first needed.
197
212
  */
198
213
  computer?: string;
214
+ /** The computers the person removed, the newest last (computers-sync.ts). */
215
+ forgotten?: ForgottenMachine[];
199
216
  }
200
217
  /** A read/write handle for the user preferences, wired into the dashboard's context by the daemon. */
201
218
  export interface PreferencesStore {
@@ -348,6 +365,11 @@ export declare function noteSeen(machine: {
348
365
  id: string;
349
366
  key: string;
350
367
  }, at: string, fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<void>;
368
+ /** Keep what a saved machine said of its own projects: the same machine, by its key, or nothing is written. */
369
+ export declare function noteProjects(machine: {
370
+ id: string;
371
+ key: string;
372
+ }, projects: OwnProject[], fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<void>;
351
373
  /** Write down that the person was told their logins are copied to a saved machine of another person's. Answers whether it is saved. */
352
374
  export declare function tellMachine(id: string, fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<boolean>;
353
375
  /** Say whether a saved server uses this computer's logins. Answers whether it is saved. */
@@ -356,6 +378,12 @@ export declare function useLoginsOn(id: string, on: boolean, fs?: RegistryFs, en
356
378
  export declare function renameMachine(id: string, label: string, fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<MachineRecord | undefined>;
357
379
  /** Take a saved machine off the list, by id. Answers the one that was there. */
358
380
  export declare function removeMachine(id: string, fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<MachineRecord | undefined>;
381
+ /** The computers the person removed, the newest last. */
382
+ export declare function listForgotten(fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<ForgottenMachine[]>;
383
+ /** Remember that the person removed the computer at `url`, at `at`; a later removal of it replaces an earlier one. */
384
+ export declare function forgetMachine(url: string, at: string, fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<void>;
385
+ /** The person saved the computer at `url` again: it is no longer one they removed. */
386
+ export declare function unforgetMachine(url: string, fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<void>;
359
387
  /** A {@link PreferencesStore} bound to the real registry file, wired by the daemon so the
360
388
  * dashboard's preferences RPCs read/write the user's home file.
361
389
  *
@@ -26,5 +26,11 @@ export declare function spellingOfRemote(remote: string): string | undefined;
26
26
  * machine only.
27
27
  */
28
28
  export declare function repositoryAddress(cwd: string, git?: GitRunner): Promise<string | undefined>;
29
+ /**
30
+ * A project's name: its repository's, the last part of its address in the letters `origin` writes
31
+ * it with, so the project reads the same on every computer whatever its folder there is called.
32
+ * A project with no address is its folder's.
33
+ */
34
+ export declare function projectNameOf(cwd: string, git?: GitRunner): Promise<string>;
29
35
  /** The same address in the letters the `origin` remote is written with: see {@link spellingOfRemote}. */
30
36
  export declare function repositorySpelling(cwd: string, git?: GitRunner): Promise<string | undefined>;
@@ -20,7 +20,20 @@ export interface ProjectModule {
20
20
  bins: Record<string, string>;
21
21
  /** The module's server part, an absolute path inside the package, when it has one. */
22
22
  server?: string;
23
+ /**
24
+ * The commands that only read, by command name: the first word of the arguments, or `""` for
25
+ * the command with no word (flags only). What a computer that lets its server only watch answers
26
+ * of the module; any other command changes something there, and is refused. The package says
27
+ * them: `"openagent": { "reads": { "<command>": ["list", ""] } }`.
28
+ */
29
+ reads: Record<string, string[]>;
23
30
  }
31
+ /**
32
+ * Whether running the module's command with these arguments only reads, as its package says
33
+ * ({@link ProjectModule.reads}): its first word is a read, or it has no word and its bare form is
34
+ * one, every argument then being a flag.
35
+ */
36
+ export declare function commandReads(module: Pick<ProjectModule, 'bins' | 'reads'>, args: readonly unknown[], command?: string): boolean;
24
37
  /**
25
38
  * The modules a project has: each of its dependencies whose package.json exports `./dashboard` to
26
39
  * a file that exists inside the package, plus the modules among the packages OpenAgent brings to
@@ -37,6 +50,12 @@ export declare function findProjectModule(root: string, name: string): Promise<P
37
50
  export declare function readComputerModules(): Promise<ProjectModule[]>;
38
51
  /** The one module of this computer's that `name` names, or undefined. */
39
52
  export declare function findComputerModule(name: string): Promise<ProjectModule | undefined>;
53
+ /**
54
+ * The module of a package OpenAgent brings to projects, from OpenAgent's own copy: the page of
55
+ * another computer's project, on a computer where no project of its own has it. Undefined for any
56
+ * other package.
57
+ */
58
+ export declare function findBroughtModule(name: string): Promise<ProjectModule | undefined>;
40
59
  /**
41
60
  * The file a module serves at `rel`, a path relative to its module's directory: its module, its
42
61
  * stylesheet, a chunk. `undefined` for a path that leaves that directory (symlinks resolved) or
@@ -1 +1 @@
1
- {"version":3,"file":"project-modules.d.ts","sourceRoot":"","sources":["../src/project-modules.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkC,KAAK,oBAAoB,EAAuB,MAAM,qBAAqB,CAAA;AAGpH;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4GAA4G;IAC5G,GAAG,EAAE,MAAM,CAAA;IACX,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAA;IACb,2IAA2I;IAC3I,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AA4BD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAO/E;AAgBD,sEAAsE;AACtE,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAEtG;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAOpE;AAED,yEAAyE;AACzE,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAEzF;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAKhG;AAED,+EAA+E;AAC/E,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,CAAA;AAMtD;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,MAAM;AAChB,6EAA6E;AAC7E,IAAI,CAAC,EAAE,MAAM,CAAC,UAAU;AACxB,gDAAgD;AAChD,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC,CAS9B"}
1
+ {"version":3,"file":"project-modules.d.ts","sourceRoot":"","sources":["../src/project-modules.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkC,KAAK,oBAAoB,EAAuB,MAAM,qBAAqB,CAAA;AAGpH;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4GAA4G;IAC5G,GAAG,EAAE,MAAM,CAAA;IACX,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAA;IACb,2IAA2I;IAC3I,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;CAChC;AAcD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAQ/H;AA4BD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAO/E;AAkBD,sEAAsE;AACtE,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAEtG;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAOpE;AAED,yEAAyE;AACzE,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAEzF;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAGxF;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAKhG;AAED,+EAA+E;AAC/E,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,CAAA;AAMtD;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,MAAM;AAChB,6EAA6E;AAC7E,IAAI,CAAC,EAAE,MAAM,CAAC,UAAU;AACxB,gDAAgD;AAChD,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC,CAS9B"}
@@ -1,7 +1,36 @@
1
1
  import { realpath, stat } from 'node:fs/promises';
2
2
  import { dirname, join, normalize, sep } from 'node:path';
3
3
  import { packageBins, runPackageCommand } from '@openagt/agent-data';
4
- import { builtInPackagesOf, computerPackages, ownPackages } from './built-in.js';
4
+ import { broughtToProjects, builtInPackagesOf, computerPackages, ownPackages } from './built-in.js';
5
+ /** The commands a package says only read, of the ones it has: anything else in its word is dropped. */
6
+ function readsOf(openagent, bins) {
7
+ const said = openagent && typeof openagent === 'object' ? openagent['reads'] : undefined;
8
+ if (!said || typeof said !== 'object' || Array.isArray(said))
9
+ return {};
10
+ const reads = {};
11
+ for (const [name, words] of Object.entries(said)) {
12
+ if (!Object.hasOwn(bins, name) || !Array.isArray(words))
13
+ continue;
14
+ reads[name] = words.filter((word) => typeof word === 'string' && !word.startsWith('-'));
15
+ }
16
+ return reads;
17
+ }
18
+ /**
19
+ * Whether running the module's command with these arguments only reads, as its package says
20
+ * ({@link ProjectModule.reads}): its first word is a read, or it has no word and its bare form is
21
+ * one, every argument then being a flag.
22
+ */
23
+ export function commandReads(module, args, command) {
24
+ const names = Object.keys(module.bins);
25
+ const name = command ?? (names.length === 1 ? names[0] : undefined);
26
+ const words = name !== undefined && Object.hasOwn(module.reads, name) ? module.reads[name] : [];
27
+ if (!args.every(arg => typeof arg === 'string'))
28
+ return false;
29
+ const first = args[0];
30
+ if (first === undefined || first.startsWith('-'))
31
+ return words.includes('') && args.every(arg => arg.startsWith('-'));
32
+ return words.includes(first);
33
+ }
5
34
  /** The file an `exports[key]` entry names: a plain path, or the first of `conditions` it has. */
6
35
  function exportedFile(exports, key, conditions) {
7
36
  if (!exports || typeof exports !== 'object' || Array.isArray(exports))
@@ -51,13 +80,15 @@ async function readModule({ name, dir: pkgDir, manifest: pkg }) {
51
80
  if (!file)
52
81
  return undefined;
53
82
  const server = await fileInside(pkgDir, exportedFile(pkg.exports, './server', ['node', 'import', 'default']));
83
+ const bins = packageBins(name, pkg.bin, pkgDir);
54
84
  return {
55
85
  package: name,
56
86
  ...(typeof pkg.version === 'string' ? { version: pkg.version } : {}),
57
87
  dir: dirname(file),
58
88
  entry: file.slice(dirname(file).length + 1),
59
- bins: packageBins(name, pkg.bin, pkgDir),
89
+ bins,
60
90
  ...(server ? { server } : {}),
91
+ reads: readsOf(pkg.openagent, bins),
61
92
  };
62
93
  }
63
94
  /** The one module of this project that `name` names, or undefined. */
@@ -81,6 +112,15 @@ export async function readComputerModules() {
81
112
  export async function findComputerModule(name) {
82
113
  return (await readComputerModules()).find(module => module.package === name);
83
114
  }
115
+ /**
116
+ * The module of a package OpenAgent brings to projects, from OpenAgent's own copy: the page of
117
+ * another computer's project, on a computer where no project of its own has it. Undefined for any
118
+ * other package.
119
+ */
120
+ export async function findBroughtModule(name) {
121
+ const pkg = (await broughtToProjects()).find(brought => brought.name === name);
122
+ return pkg ? readModule(pkg) : undefined;
123
+ }
84
124
  /**
85
125
  * The file a module serves at `rel`, a path relative to its module's directory: its module, its
86
126
  * stylesheet, a chunk. `undefined` for a path that leaves that directory (symlinks resolved) or
@@ -1 +1 @@
1
- {"version":3,"file":"project-modules.js","sourceRoot":"","sources":["../src/project-modules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAkD,MAAM,qBAAqB,CAAA;AACpH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAyBhF,iGAAiG;AACjG,SAAS,YAAY,CAAC,OAAgB,EAAE,GAAW,EAAE,UAA6B;IAChF,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAA;IACvF,MAAM,KAAK,GAAI,OAAmC,CAAC,GAAG,CAAC,CAAA;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACjF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,MAAM,GAAI,KAAiC,CAAC,SAAS,CAAC,CAAA;QAC5D,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAA;IAC/C,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,4EAA4E;AAC5E,SAAS,MAAM,CAAC,GAAW,EAAE,IAAY;IACvC,OAAO,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;AACnD,CAAC;AAED,qHAAqH;AACrH,KAAK,UAAU,UAAU,CAAC,MAAc,EAAE,MAA0B;IAClE,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAA;IAC7B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IACxE,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAA;IACpH,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY;IACnD,MAAM,OAAO,GAAoB,EAAE,CAAA;IACnC,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClC,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;AACnE,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAkB;IAC5E,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IACjH,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAA;IAC3B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IAC7G,OAAO;QACL,OAAO,EAAE,IAAI;QACb,GAAG,CAAC,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC;QAClB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3C,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;QACxC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAA;AACH,CAAC;AAED,sEAAsE;AACtE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAY,EAAE,IAAY;IAChE,OAAO,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,CAAA;AACjF,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,MAAM,OAAO,GAAoB,EAAE,CAAA;IACnC,KAAK,MAAM,GAAG,IAAI,MAAM,gBAAgB,EAAE,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClC,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;AACnE,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY;IACnD,OAAO,CAAC,MAAM,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,CAAA;AAC9E,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAqB,EAAE,GAAW;IACjE,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAC1B,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IACzF,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC;QAAE,OAAO,SAAS,CAAA;IAClE,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;AACjG,CAAC;AAKD,+FAA+F;AAC/F,MAAM,QAAQ,GAAG,EAAE,CAAA;AACnB,MAAM,cAAc,GAAG,IAAI,CAAA;AAE3B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAY,EACZ,MAAqB,EACrB,IAAuB,EACvB,OAAgB;AAChB,6EAA6E;AAC7E,IAAwB;AACxB,gDAAgD;AAChD,KAAc;IAEd,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IACnE,MAAM,GAAG,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC9D,IAAI,GAAG,KAAK,SAAS;QACnB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,mBAAmB,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,QAAQ,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,4BAA4B,EAAE,EAAE,CAAA;IAClM,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,cAAc,CAAC;QACpG,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAA;IAC/D,OAAO,iBAAiB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAK,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;AACzE,CAAC"}
1
+ {"version":3,"file":"project-modules.js","sourceRoot":"","sources":["../src/project-modules.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { type OverviewLayouts } from './overview-layout.js';
2
2
  import { type PublishPick } from './publish-levels.js';
3
+ import { type OwnProject } from './dashboard/elsewhere.js';
3
4
  /**
4
5
  * The multi-project registry (#390): the list of projects the user has
5
6
  * installed OpenAgent into, kept as a single JSON file `.bashrc`-style —
@@ -58,6 +59,20 @@ export interface MachineRecord {
58
59
  listed?: string[];
59
60
  /** When the machine last answered for its runs, ISO, kept to the minute: what its runs say while it does not answer. */
60
61
  seenAt?: string;
62
+ /** Its own projects, as it said them last (elsewhere.ts): a computer of the person's own lists them while it does not answer. */
63
+ projects?: OwnProject[];
64
+ /** When it was first saved here, ISO: of two computers' word on it, a removal after this is the one that stands (computers-sync.ts). */
65
+ added?: string;
66
+ }
67
+ /**
68
+ * A computer the person removed, by its address: one of their other computers that still has it
69
+ * does not bring it back here, and takes it out too (computers-sync.ts). Saved again by the person,
70
+ * it is no longer one.
71
+ */
72
+ export interface ForgottenMachine {
73
+ url: string;
74
+ /** When it was removed, ISO. */
75
+ at: string;
61
76
  }
62
77
  /** A GitHub account's name: letters, digits and single dashes, at most 39. */
63
78
  export declare function isAccount(value: unknown): value is string;
@@ -196,6 +211,8 @@ export interface Registry {
196
211
  * in again. Top-level, and never part of what the browser is handed. Absent until first needed.
197
212
  */
198
213
  computer?: string;
214
+ /** The computers the person removed, the newest last (computers-sync.ts). */
215
+ forgotten?: ForgottenMachine[];
199
216
  }
200
217
  /** A read/write handle for the user preferences, wired into the dashboard's context by the daemon. */
201
218
  export interface PreferencesStore {
@@ -348,6 +365,11 @@ export declare function noteSeen(machine: {
348
365
  id: string;
349
366
  key: string;
350
367
  }, at: string, fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<void>;
368
+ /** Keep what a saved machine said of its own projects: the same machine, by its key, or nothing is written. */
369
+ export declare function noteProjects(machine: {
370
+ id: string;
371
+ key: string;
372
+ }, projects: OwnProject[], fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<void>;
351
373
  /** Write down that the person was told their logins are copied to a saved machine of another person's. Answers whether it is saved. */
352
374
  export declare function tellMachine(id: string, fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<boolean>;
353
375
  /** Say whether a saved server uses this computer's logins. Answers whether it is saved. */
@@ -356,6 +378,12 @@ export declare function useLoginsOn(id: string, on: boolean, fs?: RegistryFs, en
356
378
  export declare function renameMachine(id: string, label: string, fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<MachineRecord | undefined>;
357
379
  /** Take a saved machine off the list, by id. Answers the one that was there. */
358
380
  export declare function removeMachine(id: string, fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<MachineRecord | undefined>;
381
+ /** The computers the person removed, the newest last. */
382
+ export declare function listForgotten(fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<ForgottenMachine[]>;
383
+ /** Remember that the person removed the computer at `url`, at `at`; a later removal of it replaces an earlier one. */
384
+ export declare function forgetMachine(url: string, at: string, fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<void>;
385
+ /** The person saved the computer at `url` again: it is no longer one they removed. */
386
+ export declare function unforgetMachine(url: string, fs?: RegistryFs, env?: NodeJS.ProcessEnv): Promise<void>;
359
387
  /** A {@link PreferencesStore} bound to the real registry file, wired by the daemon so the
360
388
  * dashboard's preferences RPCs read/write the user's home file.
361
389
  *
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}