@openagt/dashboard 0.50.0 → 0.52.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 (131) hide show
  1. package/README.md +17 -17
  2. package/dist/built-in.d.ts.map +1 -1
  3. package/dist/built-in.js +2 -2
  4. package/dist/built-in.js.map +1 -1
  5. package/dist/cli/bin.d.ts +3 -0
  6. package/dist/cli/bin.d.ts.map +1 -0
  7. package/dist/cli/bin.js +11 -0
  8. package/dist/cli/bin.js.map +1 -0
  9. package/dist/cli/browser.d.ts +14 -0
  10. package/dist/cli/browser.d.ts.map +1 -0
  11. package/dist/cli/browser.js +22 -0
  12. package/dist/cli/browser.js.map +1 -0
  13. package/dist/cli/cli.d.ts +37 -0
  14. package/dist/cli/cli.d.ts.map +1 -0
  15. package/dist/cli/cli.js +188 -0
  16. package/dist/cli/cli.js.map +1 -0
  17. package/dist/cli/project.d.ts +6 -0
  18. package/dist/cli/project.d.ts.map +1 -0
  19. package/dist/cli/project.js +13 -0
  20. package/dist/cli/project.js.map +1 -0
  21. package/dist/cli/skills.d.ts +18 -0
  22. package/dist/cli/skills.d.ts.map +1 -0
  23. package/dist/cli/skills.js +36 -0
  24. package/dist/cli/skills.js.map +1 -0
  25. package/dist/cli/update-check.d.ts +44 -0
  26. package/dist/cli/update-check.d.ts.map +1 -0
  27. package/dist/cli/update-check.js +71 -0
  28. package/dist/cli/update-check.js.map +1 -0
  29. package/dist/client.d.ts +1 -0
  30. package/dist/client.d.ts.map +1 -1
  31. package/dist/client.js +1 -0
  32. package/dist/client.js.map +1 -1
  33. package/dist/daemon-runtime.d.ts.map +1 -1
  34. package/dist/daemon-runtime.js +16 -2
  35. package/dist/daemon-runtime.js.map +1 -1
  36. package/dist/daemon.d.ts +0 -2
  37. package/dist/daemon.d.ts.map +1 -1
  38. package/dist/daemon.js +0 -3
  39. package/dist/daemon.js.map +1 -1
  40. package/dist/dashboard/agent-handoff.js +4 -4
  41. package/dist/dashboard/agent-handoff.js.map +1 -1
  42. package/dist/dashboard/copy-logins.js +1 -1
  43. package/dist/dashboard/copy-logins.js.map +1 -1
  44. package/dist/dashboard/logins-sync.js +1 -1
  45. package/dist/dashboard/logins-sync.js.map +1 -1
  46. package/dist/dashboard/start-branch.d.ts +12 -5
  47. package/dist/dashboard/start-branch.d.ts.map +1 -1
  48. package/dist/dashboard/start-branch.js +37 -10
  49. package/dist/dashboard/start-branch.js.map +1 -1
  50. package/dist/dashboard/types.d.ts +10 -6
  51. package/dist/dashboard/types.d.ts.map +1 -1
  52. package/dist/dashboard-bundle/assets/host/module-PIrJC0JP.js +1 -0
  53. package/dist/dashboard-bundle/assets/main-CM5J2FK8.js +148 -0
  54. package/dist/dashboard-bundle/assets/main-CarPriwc.css +2 -0
  55. package/dist/dashboard-bundle/assets/module-fv4cy12w.js +14 -0
  56. package/dist/dashboard-bundle/index.html +4 -4
  57. package/dist/dashboard-rpc/computers.js +1 -1
  58. package/dist/dashboard-rpc/computers.js.map +1 -1
  59. package/dist/dashboard-rpc/index.d.ts +2 -2
  60. package/dist/dashboard-rpc/index.d.ts.map +1 -1
  61. package/dist/dashboard-rpc/index.js +2 -2
  62. package/dist/dashboard-rpc/index.js.map +1 -1
  63. package/dist/dashboard-rpc/projects.d.ts +22 -6
  64. package/dist/dashboard-rpc/projects.d.ts.map +1 -1
  65. package/dist/dashboard-rpc/projects.js +26 -7
  66. package/dist/dashboard-rpc/projects.js.map +1 -1
  67. package/dist/dashboard-rpc/reads.d.ts +6 -0
  68. package/dist/dashboard-rpc/reads.d.ts.map +1 -1
  69. package/dist/dashboard-rpc/reads.js +15 -0
  70. package/dist/dashboard-rpc/reads.js.map +1 -1
  71. package/dist/dashboard-rpc/relay-dispatch.js +3 -3
  72. package/dist/dashboard-rpc/relay-dispatch.js.map +1 -1
  73. package/dist/dashboard-rpc/skills.d.ts +3 -3
  74. package/dist/dashboard-rpc/skills.js +1 -1
  75. package/dist/index.d.ts +1 -1
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/module-types/dashboard/components/PersonMark.d.ts +21 -0
  78. package/dist/module-types/dashboard/components/ui/dropdown-menu.d.ts +3 -0
  79. package/dist/module-types/dashboard/components/ui/row-item.d.ts +22 -1
  80. package/dist/module-types/dashboard/lib/use-git-host-people.d.ts +16 -0
  81. package/dist/module-types/dashboard/module/index.d.ts +2 -0
  82. package/dist/module-types/src/branch-name.d.ts +7 -0
  83. package/dist/module-types/src/client.d.ts +1 -0
  84. package/dist/module-types/src/dashboard/start-branch.d.ts +12 -5
  85. package/dist/module-types/src/dashboard/types.d.ts +10 -6
  86. package/dist/module-types/src/dashboard-rpc/index.d.ts +2 -2
  87. package/dist/module-types/src/dashboard-rpc/projects.d.ts +22 -6
  88. package/dist/module-types/src/dashboard-rpc/reads.d.ts +6 -0
  89. package/dist/module-types/src/dashboard-rpc/skills.d.ts +3 -3
  90. package/dist/module-types/src/index.d.ts +1 -1
  91. package/dist/module-types/src/project-commands.d.ts +0 -2
  92. package/dist/module-types/src/project-hooks.d.ts +7 -6
  93. package/dist/module-types/src/project-skills/catalogue.d.ts +2 -2
  94. package/dist/module-types/src/project-skills/change.d.ts +1 -1
  95. package/dist/module-types/src/registry.d.ts +16 -12
  96. package/dist/module-types/src/store/agent-store.d.ts +4 -0
  97. package/dist/module-types/src/store/git-host.d.ts +1 -0
  98. package/dist/module-types/src/version.d.ts +0 -1
  99. package/dist/project-commands.d.ts +0 -2
  100. package/dist/project-commands.d.ts.map +1 -1
  101. package/dist/project-commands.js.map +1 -1
  102. package/dist/project-hooks.d.ts +7 -6
  103. package/dist/project-hooks.d.ts.map +1 -1
  104. package/dist/project-hooks.js +7 -4
  105. package/dist/project-hooks.js.map +1 -1
  106. package/dist/project-skills/catalogue.d.ts +2 -2
  107. package/dist/project-skills/change.d.ts +1 -1
  108. package/dist/registry.d.ts +16 -12
  109. package/dist/registry.d.ts.map +1 -1
  110. package/dist/registry.js +15 -3
  111. package/dist/registry.js.map +1 -1
  112. package/dist/store/agent-store.d.ts +4 -0
  113. package/dist/store/agent-store.d.ts.map +1 -1
  114. package/dist/store/agent-store.js.map +1 -1
  115. package/dist/store/git-host.d.ts +1 -0
  116. package/dist/store/git-host.d.ts.map +1 -1
  117. package/dist/store/git-host.js +1 -1
  118. package/dist/store/git-host.js.map +1 -1
  119. package/dist/version.d.ts +0 -1
  120. package/dist/version.d.ts.map +1 -1
  121. package/dist/version.js +21 -9
  122. package/dist/version.js.map +1 -1
  123. package/package.json +27 -27
  124. package/dist/dashboard-bundle/assets/host/module-Cj4JvDNR.js +0 -1
  125. package/dist/dashboard-bundle/assets/main-C337ghZH.css +0 -2
  126. package/dist/dashboard-bundle/assets/main-Dws_coS4.js +0 -148
  127. package/dist/dashboard-bundle/assets/module-pxUBfZug.js +0 -14
  128. package/dist/serve.d.ts +0 -4
  129. package/dist/serve.d.ts.map +0 -1
  130. package/dist/serve.js +0 -6
  131. package/dist/serve.js.map +0 -1
package/README.md CHANGED
@@ -8,15 +8,14 @@ checkout of the repo, does its work, and hands the result off as a pull request.
8
8
  checkout is never touched.
9
9
 
10
10
  ```bash
11
- npm i -g @openagt/start
11
+ npm i -g @openagt/dashboard
12
12
 
13
13
  cd ~/code/my-repo
14
14
  openagent # serves the dashboard at http://127.0.0.1:4200
15
15
  ```
16
16
 
17
- This package is the dashboard itself: the server and its pages, with no command of its own.
18
- OpenAgent is run as `@openagt/start`, which serves it and hands every run the skills it gets by
19
- default.
17
+ This package is OpenAgent: the server, its pages and the command that serves them and hands
18
+ every run the skills it gets by default.
20
19
 
21
20
  ## The command is three options and no verbs
22
21
 
@@ -40,7 +39,7 @@ OpenAgent runs no coding agent and makes no model call. Starting an agent is run
40
39
  `.openagent/hooks.yml`:
41
40
 
42
41
  ```yaml
43
- start: agent-runner run --detach "$PROMPT" ${DRIVER:+--driver "$DRIVER"} ${MODEL:+--model "$MODEL"} ${EFFORT:+--effort "$EFFORT"} ${THEN:+--then "$THEN"} ${PUBLISH:+--publish "$PUBLISH"} ${BASE:+--base "$BASE"}
42
+ start: agent-runner run --detach "$PROMPT" ${DRIVER:+--driver "$DRIVER"} ${MODEL:+--model "$MODEL"} ${EFFORT:+--effort "$EFFORT"} ${PUBLISH:+--publish "$PUBLISH"} ${BASE:+--base "$BASE"} ${PR_BASE:+--pr-base "$PR_BASE"}
44
43
  resume: agent-runner run --detach --resume "$RUN_ID" ${TEXT:+"$TEXT"} ${ANSWER:+--answer "$ANSWER"} ${PUBLISH:+--publish "$PUBLISH"}
45
44
  check: agent-runner check ${DRIVER:+--driver "$DRIVER"}
46
45
  ```
@@ -58,18 +57,19 @@ the scheduler's `open` and `close` lines (they start it when the dashboard opens
58
57
  when it closes), keeping any line already there. The file's keys are `open`, `close`, `start`, `resume` and `check`; any other key
59
58
  is refused and the whole file ignored.
60
59
 
61
- The launcher's **Post-merge cleanup** box, shown where the project has the
62
- `post-merge-cleanup` command, puts `/post-merge-cleanup` in `THEN`: once the agent ends done
63
- with a pull request, agent-runner starts a fresh agent on its branch with that command and the
64
- first agent's id, and holds the pull request's merge until that one is done. Its default is
65
- Settings → Agent → Post-merge cleanup, which the box writes too.
66
-
67
- The launcher's chip above the box says which branch the agent starts from: the project's
68
- main branch, fetched first, or **My local branch**, the branch the project's folder is on,
69
- with its commits that are not pushed (edits that are not committed are not carried). The
70
- local pick puts the branch's name in `BASE`, and is saved per project. The chip is shown only
71
- when the `start` line mentions `$BASE`: a project whose line was written before the chip
72
- existed gets it by adding `${BASE:+--base "$BASE"}` to the line.
60
+ The launcher's branch menu above the box says which branch the agent starts from: the
61
+ project's main branch, fetched first; **My local branch**, the branch the project's folder is
62
+ on, with its commits that are not pushed (edits that are not committed are not carried); or
63
+ another of the branches origin has now, fetched first. The pick is saved per project. The local
64
+ pick puts the branch's name in `BASE`, and another of origin's its full name
65
+ (`refs/remotes/origin/<branch>`), so the line can tell them apart; `agent-runner` fetches it. The
66
+ menu is shown only when the `start` line mentions `$BASE`: a project whose line was written
67
+ before the menu existed gets it by adding `${BASE:+--base "$BASE"}` to the line.
68
+
69
+ A run started from another branch origin has opens its pull request into that branch: the
70
+ launcher puts its name in `PR_BASE`, unless the Auto menu says main. The Auto menu's section "The
71
+ pull request goes into" is shown only when the `start` line mentions `$PR_BASE`: an older line
72
+ gets it by adding `${PR_BASE:+--pr-base "$PR_BASE"}`. Without it the pull request goes to main.
73
73
 
74
74
  The `check` line is what the launcher runs before a Start, with the picked coding agent in
75
75
  `DRIVER`: it answers one JSON document with `problems` (a coding agent not installed or logged
@@ -1 +1 @@
1
- {"version":3,"file":"built-in.d.ts","sourceRoot":"","sources":["../src/built-in.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAA4H,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAErO;;;;;;;;GAQG;AAEH,4GAA4G;AAC5G,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAA+I,CAAA;AAE9L;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAA4D,CAAA;AAE3G;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAA6I,CAAA;AAE1L,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAqE,CAAA;AAYpH,iHAAiH;AACjH,wBAAgB,eAAe,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAE3D;AAsBD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAQ/E;AA2BD,oFAAoF;AACpF,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAEzE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAEnE;AAED,4EAA4E;AAC5E,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAElE;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAElE;AAED,0IAA0I;AAC1I,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAMxD;AAED,wIAAwI;AACxI,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAE/F;AAED,gFAAgF;AAChF,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAEtG;AAED,gGAAgG;AAChG,wBAAgB,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAE3D;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQpE;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAkBtE"}
1
+ {"version":3,"file":"built-in.d.ts","sourceRoot":"","sources":["../src/built-in.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAA4H,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAErO;;;;;;;;GAQG;AAEH,4GAA4G;AAC5G,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAmK,CAAA;AAElN;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAsE,CAAA;AAErH;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAA6I,CAAA;AAE1L,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAqE,CAAA;AAYpH,iHAAiH;AACjH,wBAAgB,eAAe,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAE3D;AAsBD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAQ/E;AA2BD,oFAAoF;AACpF,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAEzE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAEnE;AAED,4EAA4E;AAC5E,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAElE;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAElE;AAED,0IAA0I;AAC1I,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAMxD;AAED,wIAAwI;AACxI,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAE/F;AAED,gFAAgF;AAChF,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAEtG;AAED,gGAAgG;AAChG,wBAAgB,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAE3D;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQpE;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAkBtE"}
package/dist/built-in.js CHANGED
@@ -12,13 +12,13 @@ import { declaring, SKILLS_DIRS, SKILLS_ENV, lookupProvidedCommand, packageBins,
12
12
  * project has it, are the only ones.
13
13
  */
14
14
  /** The packages every project has: an agent cannot start, be shown or be put on a git host without them. */
15
- export const BUILT_IN_PACKAGES = ['@openagt/changes', '@openagt/files', '@openagt/skill-branches', '@openagt/skill-github', '@openagt/skill-logs', '@openagt/agent-runner'];
15
+ export const BUILT_IN_PACKAGES = ['@openagt/dashboard-changes', '@openagt/dashboard-files', '@openagt/skill-branches', '@openagt/skill-github', '@openagt/skill-logs', '@openagt/agent-runner'];
16
16
  /**
17
17
  * The packages that are this computer's and no project's: the door to it, the servers it
18
18
  * installed OpenAgent on, and the accounts its runs use. Their pages show and their commands run with no project added, and
19
19
  * what one keeps is in the person's home folder.
20
20
  */
21
- export const COMPUTER_PACKAGES = ['@openagt/devices', '@openagt/skill-account-rotation'];
21
+ export const COMPUTER_PACKAGES = ['@openagt/dashboard-devices', '@openagt/skill-account-rotation'];
22
22
  /**
23
23
  * The packages a project has once it picked them (#2023). A skill's package is every project's
24
24
  * when the skill is one every run gets by default (the package that started OpenAgent names those,
@@ -1 +1 @@
1
- {"version":3,"file":"built-in.js","sourceRoot":"","sources":["../src/built-in.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"built-in.js","sourceRoot":"","sources":["../src/built-in.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../src/cli/bin.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ import { runCli } from './cli.js';
3
+ // Exited outright once the CLI is done: a handle left over (a child, a timer, a socket) must not
4
+ // keep the process up after the dashboard stopped (#2141).
5
+ runCli(process.argv.slice(2))
6
+ .then(code => process.exit(code))
7
+ .catch((err) => {
8
+ console.error(err);
9
+ process.exit(1);
10
+ });
11
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/cli/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,iGAAiG;AACjG,2DAA2D;AAC3D,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC1B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAChC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IACtB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ /** The command that opens an address in the default browser, by platform. */
2
+ export declare function browserCommand(platform: NodeJS.Platform, url: string): {
3
+ command: string;
4
+ args: string[];
5
+ };
6
+ /**
7
+ * Open the dashboard in the browser, for a person at this terminal only: a service, with no
8
+ * terminal, has no one to show it to. A computer with no browser to open says nothing: the
9
+ * address is printed above it.
10
+ */
11
+ export declare function openInBrowser(url: string, stdout?: {
12
+ isTTY?: boolean;
13
+ }): void;
14
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/cli/browser.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAK1G;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAmB,GAAG,IAAI,CAI7F"}
@@ -0,0 +1,22 @@
1
+ import { spawn } from 'node:child_process';
2
+ /** The command that opens an address in the default browser, by platform. */
3
+ export function browserCommand(platform, url) {
4
+ if (platform === 'darwin')
5
+ return { command: 'open', args: [url] };
6
+ // `start` is a command of cmd itself; its first quoted argument is the window's title.
7
+ if (platform === 'win32')
8
+ return { command: 'cmd', args: ['/c', 'start', '""', url] };
9
+ return { command: 'xdg-open', args: [url] };
10
+ }
11
+ /**
12
+ * Open the dashboard in the browser, for a person at this terminal only: a service, with no
13
+ * terminal, has no one to show it to. A computer with no browser to open says nothing: the
14
+ * address is printed above it.
15
+ */
16
+ export function openInBrowser(url, stdout = process.stdout) {
17
+ if (!stdout.isTTY)
18
+ return;
19
+ const { command, args } = browserCommand(process.platform, url);
20
+ spawn(command, args, { stdio: 'ignore', detached: true }).on('error', () => { }).unref();
21
+ }
22
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/cli/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE1C,6EAA6E;AAC7E,MAAM,UAAU,cAAc,CAAC,QAAyB,EAAE,GAAW;IACnE,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAA;IAClE,uFAAuF;IACvF,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,CAAA;IACrF,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAA;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,MAAM,GAAwB,OAAO,CAAC,MAAM;IACrF,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,OAAM;IACzB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IAC/D,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;AACzF,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { type VersionFetcher } from './update-check.js';
2
+ /** Where the CLI writes. Injectable so tests capture output. */
3
+ export interface CliIO {
4
+ out: (line: string) => void;
5
+ err: (line: string) => void;
6
+ }
7
+ /** What the CLI itself accepts: three options, no verbs (D4). */
8
+ export interface CliArgs {
9
+ help: boolean;
10
+ version: boolean;
11
+ /** `--port <n>`: the port the dashboard binds. Default {@link DEFAULT_DAEMON_PORT}; `0` is ephemeral. */
12
+ port?: number;
13
+ error?: string;
14
+ }
15
+ /**
16
+ * Parse argv (without the node/script prefix). Pure and testable.
17
+ *
18
+ * Three options and nothing else: `--port` because it is the one thing a browser cannot be asked
19
+ * and a dashboard cannot serve about itself; `--help` and `--version` because a command with
20
+ * options owes the user both. The command runs no agent (#1774): a run is started
21
+ * from the dashboard, by the project's own start hook.
22
+ */
23
+ export declare function parseArgs(argv: string[]): CliArgs;
24
+ export declare function runCli(argv: string[], io?: CliIO): Promise<number>;
25
+ /**
26
+ * The startup footer every dashboard path prints (#312): where prompts come from, the version,
27
+ * and then — once npm answers — whether that version is the latest.
28
+ *
29
+ * The update line is deliberately not awaited before the static lines. #312 asks for the static
30
+ * info first, and the foreground path (bare `openagent`) blocks on the server forever, so a line
31
+ * printed after the await would never appear there at all. `checkForUpdate` is already forgiving:
32
+ * offline or slow (2.5s cap) resolves to 'unknown', which prints nothing.
33
+ */
34
+ export declare function printStartupFooter(io: CliIO, opts?: {
35
+ fetchLatest?: VersionFetcher;
36
+ }): Promise<void>;
37
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0D,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAS/G,gEAAgE;AAChE,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5B;AA0BD,iEAAiE;AACjE,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;IAChB,yGAAyG;IACzG,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAyBjD;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAE,KAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBnF;AAgFD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,cAAc,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAaxG"}
@@ -0,0 +1,188 @@
1
+ import { checkForUpdate, formatUpdateStatus, nodeVersionFetcher } from './update-check.js';
2
+ import { runDaemon, DEFAULT_DAEMON_PORT } from '../daemon.js';
3
+ import { joinRunningDashboard } from '../join-dashboard.js';
4
+ import { handDownSkills } from './skills.js';
5
+ import { repositoryOf } from './project.js';
6
+ import { openInBrowser } from './browser.js';
7
+ import { openagentVersion } from '../version.js';
8
+ const defaultIO = {
9
+ out: line => process.stdout.write(line + '\n'),
10
+ err: line => process.stderr.write(line + '\n'),
11
+ };
12
+ const HELP = `OpenAgent — turnkey AI orchestration that wraps a coding agent (Claude Code or Codex).
13
+
14
+ Usage:
15
+ openagent Serve the dashboard in the foreground. Ctrl+C closes it; the server
16
+ logs stream to this terminal. Typed inside a Git repository, it adds
17
+ that repository to the dashboard's projects and opens its page. With
18
+ the dashboard running already, it hands the repository to that one.
19
+
20
+ Options:
21
+ --port <n> Dashboard port (default: 4200).
22
+ -h, --help Show this help.
23
+ -v, --version Print the version.
24
+
25
+ The dashboard listens on this computer only. A phone, or another computer's OpenAgent, gets in
26
+ from Settings › Devices.
27
+
28
+ Everything else is the dashboard: it shows a project's runs from their files, and starts one
29
+ through the project's own start hook (.openagent/hooks.yml), which names the tool that runs it.`;
30
+ /**
31
+ * Parse argv (without the node/script prefix). Pure and testable.
32
+ *
33
+ * Three options and nothing else: `--port` because it is the one thing a browser cannot be asked
34
+ * and a dashboard cannot serve about itself; `--help` and `--version` because a command with
35
+ * options owes the user both. The command runs no agent (#1774): a run is started
36
+ * from the dashboard, by the project's own start hook.
37
+ */
38
+ export function parseArgs(argv) {
39
+ const opts = { help: false, version: false };
40
+ for (let i = 0; i < argv.length; i++) {
41
+ const arg = argv[i];
42
+ switch (arg) {
43
+ case '--help':
44
+ case '-h':
45
+ opts.help = true;
46
+ break;
47
+ case '--version':
48
+ case '-v':
49
+ opts.version = true;
50
+ break;
51
+ case '--port': {
52
+ const n = Number(argv[++i]);
53
+ if (Number.isInteger(n) && n >= 0)
54
+ opts.port = n;
55
+ else
56
+ opts.error ??= 'invalid --port: must be a non-negative integer';
57
+ break;
58
+ }
59
+ default:
60
+ // The first thing that could not be read is the one told: what follows an unknown option is its value, not a command.
61
+ opts.error ??= arg.startsWith('-') ? `unknown option: ${arg}` : `unknown command: ${arg}`;
62
+ }
63
+ }
64
+ return opts;
65
+ }
66
+ export async function runCli(argv, io = defaultIO) {
67
+ const args = parseArgs(argv);
68
+ if (args.error) {
69
+ io.err(args.error);
70
+ io.err('Run `openagent --help` for usage.');
71
+ return 2;
72
+ }
73
+ if (args.help) {
74
+ io.out(HELP);
75
+ return 0;
76
+ }
77
+ if (args.version) {
78
+ io.out(openagentVersion());
79
+ return 0;
80
+ }
81
+ // Everything else is bare `openagent`: serve the dashboard in the foreground until Ctrl-C.
82
+ return runForegroundDaemonCmd(args, io);
83
+ }
84
+ /**
85
+ * Bare `openagent`: run the dashboard server in the foreground (#456), so its logs and any
86
+ * server-thrown errors are visible and Ctrl+C stops it. Blocks until the server is signalled
87
+ * (SIGINT/SIGTERM).
88
+ */
89
+ async function runForegroundDaemonCmd(args, io) {
90
+ const cwd = process.cwd();
91
+ const port = args.port ?? DEFAULT_DAEMON_PORT;
92
+ let project;
93
+ try {
94
+ // Set in this process's own environment, so everything the dashboard starts inherits it.
95
+ await handDownSkills(process.env);
96
+ // A server's service starts in its user's home, which is no project however it looks: a home
97
+ // made a repository would be added again at every start.
98
+ project = process.env.OPENAGENT_SERVER === '1' ? undefined : await repositoryOf(cwd);
99
+ let url = '';
100
+ await runDaemon(cwd, {
101
+ port,
102
+ onListening: state => {
103
+ url = state.url;
104
+ io.out(`◆ dashboard running: ${state.url}`);
105
+ io.out(' Ctrl+C to stop the dashboard. Server logs stream below.');
106
+ // #312 asks bare `openagent` to print the commands + version too. onListening is sync and
107
+ // runDaemon then blocks until signalled, so this is fire-and-forget by necessity: the
108
+ // update line lands a moment later, above the server logs.
109
+ void printStartupFooter(io);
110
+ // Outside a repository there is no project to open: the Overview, where one is added.
111
+ if (project === undefined)
112
+ openInBrowser(state.url);
113
+ },
114
+ ...(project !== undefined ? { project, onProject: (started) => openProject(url, started, io) } : {}),
115
+ });
116
+ }
117
+ catch (err) {
118
+ // Another dashboard has the port (#2141): this one hands it the folder rather than failing.
119
+ // An ephemeral port never collides, so it never joins.
120
+ if (err.code === 'EADDRINUSE' && port !== 0)
121
+ return joinRunning(port, project, io);
122
+ io.err(`could not start the dashboard (${err instanceof Error ? err.message : String(err)}).`);
123
+ return 1;
124
+ }
125
+ return 0;
126
+ }
127
+ /**
128
+ * Say where the project is and open its page, which picks it in the sidebar too. What is printed
129
+ * is the address the page shows; what is opened is its id, which always opens it, whatever the
130
+ * page's modules call their pages: the dashboard then writes the address in its place.
131
+ */
132
+ function openProject(url, started, io) {
133
+ if (started.added)
134
+ io.out(`◆ project added: ${started.path}`);
135
+ io.out(`◆ project: ${url}/${encodeURIComponent(started.address)}`);
136
+ openInBrowser(`${url}/${encodeURIComponent(started.id)}`);
137
+ }
138
+ /**
139
+ * A dashboard runs on the port already: hand it the repository this was typed in, open the page,
140
+ * and end, since this process serves nothing. What holds the port may be no dashboard at all.
141
+ */
142
+ async function joinRunning(port, project, io) {
143
+ const running = await joinRunningDashboard(port, project);
144
+ if (!running.joined) {
145
+ io.err(`could not start the dashboard: port ${port} is taken by another program. Pass --port <n> to use another one.`);
146
+ return 1;
147
+ }
148
+ io.out(`◆ dashboard already running: ${running.url}`);
149
+ const version = openagentVersion();
150
+ if (running.version !== version)
151
+ io.out(` It runs OpenAgent v${running.version}; this is v${version}. Stop it and run this again to use v${version}.`);
152
+ if (!running.project) {
153
+ // Outside a repository there is no project to open: the Overview, where one is added.
154
+ openInBrowser(running.url);
155
+ return 0;
156
+ }
157
+ if (!running.project.ok) {
158
+ io.err(`could not add ${project}: ${running.project.error}`);
159
+ return 1;
160
+ }
161
+ openProject(running.url, running.project, io);
162
+ return 0;
163
+ }
164
+ /**
165
+ * The startup footer every dashboard path prints (#312): where prompts come from, the version,
166
+ * and then — once npm answers — whether that version is the latest.
167
+ *
168
+ * The update line is deliberately not awaited before the static lines. #312 asks for the static
169
+ * info first, and the foreground path (bare `openagent`) blocks on the server forever, so a line
170
+ * printed after the await would never appear there at all. `checkForUpdate` is already forgiving:
171
+ * offline or slow (2.5s cap) resolves to 'unknown', which prints nothing.
172
+ */
173
+ export function printStartupFooter(io, opts = {}) {
174
+ const version = openagentVersion();
175
+ io.out('');
176
+ io.out('Type a prompt on the dashboard to start an agent, or use:');
177
+ io.out(' openagent --help All options');
178
+ io.out('');
179
+ io.out(`OpenAgent v${version}`);
180
+ return checkForUpdate(version, opts.fetchLatest ?? nodeVersionFetcher())
181
+ .then(status => {
182
+ const line = formatUpdateStatus(status);
183
+ if (line)
184
+ io.out(line);
185
+ })
186
+ .catch(() => { });
187
+ }
188
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The Git repository a folder is in, by its top folder: the project `npx @openagt/dashboard` adds when
3
+ * it is typed in that folder. Undefined outside a repository, where there is nothing to add.
4
+ */
5
+ export declare function repositoryOf(folder: string): Promise<string | undefined>;
6
+ //# sourceMappingURL=project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/cli/project.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAI9E"}
@@ -0,0 +1,13 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { promisify } from 'node:util';
3
+ const run = promisify(execFile);
4
+ /**
5
+ * The Git repository a folder is in, by its top folder: the project `npx @openagt/dashboard` adds when
6
+ * it is typed in that folder. Undefined outside a repository, where there is nothing to add.
7
+ */
8
+ export async function repositoryOf(folder) {
9
+ const said = await run('git', ['rev-parse', '--show-toplevel'], { cwd: folder }).catch(() => undefined);
10
+ const top = said?.stdout.trim();
11
+ return top ? top : undefined;
12
+ }
13
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/cli/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAE/B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc;IAC/C,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IACvG,MAAM,GAAG,GAAG,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;IAC/B,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;AAC9B,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * The skills every run gets by default: what an agent needs in any project to work at all, read
3
+ * what earlier agents did, ask the person a question, and hand its work over on the project's git
4
+ * host; and the ones the dashboard has pages for, so a page never shows work an agent cannot do:
5
+ * split a task across subagents, the tickets and the queue; and the accounts runs use, which are
6
+ * the computer's and no project's. The one place they are named: the runner links whatever it is
7
+ * handed, and the dashboard gives every project their pages. Each is linked into a run's checkout,
8
+ * hidden from git, and a project's own skill of the same name takes its place (see the runner's
9
+ * `basic-skills.ts`).
10
+ */
11
+ export declare const DEFAULT_SKILLS: readonly string[];
12
+ /**
13
+ * Put the default skills in `env` under {@link SKILLS_ENV}: their packages' directories, resolved
14
+ * from this package's own install, joined by the path delimiter. One that is not installed is
15
+ * left out.
16
+ */
17
+ export declare function handDownSkills(env: NodeJS.ProcessEnv): Promise<void>;
18
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"AAKA;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAAqM,CAAA;AAEjP;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAa1E"}
@@ -0,0 +1,36 @@
1
+ import { realpath } from 'node:fs/promises';
2
+ import { createRequire } from 'node:module';
3
+ import { delimiter, dirname } from 'node:path';
4
+ import { SKILLS_ENV } from '@openagt/agent-data';
5
+ /**
6
+ * The skills every run gets by default: what an agent needs in any project to work at all, read
7
+ * what earlier agents did, ask the person a question, and hand its work over on the project's git
8
+ * host; and the ones the dashboard has pages for, so a page never shows work an agent cannot do:
9
+ * split a task across subagents, the tickets and the queue; and the accounts runs use, which are
10
+ * the computer's and no project's. The one place they are named: the runner links whatever it is
11
+ * handed, and the dashboard gives every project their pages. Each is linked into a run's checkout,
12
+ * hidden from git, and a project's own skill of the same name takes its place (see the runner's
13
+ * `basic-skills.ts`).
14
+ */
15
+ export const DEFAULT_SKILLS = ['@openagt/skill-logs', '@openagt/skill-question', '@openagt/skill-github', '@openagt/skill-orchestration', '@openagt/skill-tickets', '@openagt/skill-queue', '@openagt/skill-account-rotation'];
16
+ /**
17
+ * Put the default skills in `env` under {@link SKILLS_ENV}: their packages' directories, resolved
18
+ * from this package's own install, joined by the path delimiter. One that is not installed is
19
+ * left out.
20
+ */
21
+ export async function handDownSkills(env) {
22
+ const require = createRequire(import.meta.url);
23
+ const dirs = [];
24
+ for (const name of DEFAULT_SKILLS) {
25
+ let manifest;
26
+ try {
27
+ manifest = require.resolve(`${name}/package.json`);
28
+ }
29
+ catch {
30
+ continue;
31
+ }
32
+ dirs.push(await realpath(dirname(manifest)));
33
+ }
34
+ env[SKILLS_ENV] = dirs.join(delimiter);
35
+ }
36
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,cAAc,GAAsB,CAAC,qBAAqB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,iCAAiC,CAAC,CAAA;AAEjP;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAsB;IACzD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAA;IAC9C,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,IAAI,QAAgB,CAAA;QACpB,IAAI,CAAC;YACH,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,eAAe,CAAC,CAAA;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC9C,CAAC;IACD,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AACxC,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * CLI "up-to-date?" check (#312): after the bare-`openagent` version footer,
3
+ * tell the user whether a newer version is published on npm. Display only;
4
+ * auto-update is a separate, deferred concern. Same seam + node-adapter +
5
+ * forgiving-on-error convention as `project.ts` (#380).
6
+ */
7
+ /** The npm package this CLI ships as; the registry key for the version check. */
8
+ export declare const PACKAGE_NAME = "@openagt/dashboard";
9
+ /** Fetches the latest published version of `pkg`, or undefined on any failure. Injectable for tests. */
10
+ export type VersionFetcher = (pkg: string) => Promise<string | undefined>;
11
+ /**
12
+ * A {@link VersionFetcher} backed by the npm registry. GETs the packument and
13
+ * reads `dist-tags.latest`. A 2.5s AbortSignal.timeout caps it; any error /
14
+ * non-ok / offline yields undefined (the check silently degrades to "unknown").
15
+ */
16
+ export declare function nodeVersionFetcher(): VersionFetcher;
17
+ /** The result of an update check. */
18
+ export type UpdateStatus = {
19
+ kind: 'up-to-date';
20
+ current: string;
21
+ } | {
22
+ kind: 'update-available';
23
+ current: string;
24
+ latest: string;
25
+ } | {
26
+ kind: 'unknown';
27
+ current: string;
28
+ };
29
+ /**
30
+ * Compare two `major.minor.patch` versions numerically (a prerelease/build
31
+ * suffix after `-` or `+` is stripped, missing parts read as 0). Returns
32
+ * -1 / 0 / 1. No semver dependency.
33
+ */
34
+ export declare function compareVersions(a: string, b: string): number;
35
+ /**
36
+ * Check whether `current` is behind the latest published version. Uses the
37
+ * injected fetcher; a missing/failed fetch is 'unknown'. `current` >= latest is
38
+ * 'up-to-date' (so running a local build ahead of the registry never reads as
39
+ * "update available").
40
+ */
41
+ export declare function checkForUpdate(current: string, fetchLatest: VersionFetcher, pkg?: string): Promise<UpdateStatus>;
42
+ /** The one-line message to print for a status, or undefined for 'unknown' (print nothing). */
43
+ export declare function formatUpdateStatus(status: UpdateStatus): string | undefined;
44
+ //# sourceMappingURL=update-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-check.d.ts","sourceRoot":"","sources":["../../src/cli/update-check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,iFAAiF;AACjF,eAAO,MAAM,YAAY,uBAAuB,CAAA;AAEhD,wGAAwG;AACxG,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;AAEzE;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CAYnD;AAED,qCAAqC;AACrC,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAExC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAW5D;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,cAAc,EAC3B,GAAG,GAAE,MAAqB,GACzB,OAAO,CAAC,YAAY,CAAC,CAMvB;AAED,8FAA8F;AAC9F,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAS3E"}