@ponythewhite/base-context 1.0.0 → 1.0.2

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 (285) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/NOTICE +0 -5
  3. package/README.md +44 -27
  4. package/dist/NOTICE +0 -5
  5. package/dist/base-context-runtime/pyproject.toml +1 -1
  6. package/dist/base-context-runtime/src/rlm/__init__.py +7 -5
  7. package/dist/base-context-runtime/test/test_subagent_registry.py +28 -1
  8. package/dist/base-context-runtime/uv.lock +1 -1
  9. package/dist/build-info.json +1 -1
  10. package/dist/bundle/amazon-bedrock.js +21 -0
  11. package/dist/bundle/{anthropic-YY4S534V.js → anthropic-UV5GZDGU.js} +5 -5
  12. package/dist/bundle/{azure-openai-responses-JRP6MIM3.js → azure-openai-responses-WSNPXLYC.js} +6 -6
  13. package/dist/bundle/{bundled-modules-P5HARVZA.js → bundled-modules-PWOGKUQQ.js} +71 -16
  14. package/dist/bundle/chunk-27QCJ2AZ.js +2578 -0
  15. package/dist/bundle/{chunk-BYVP7LWV.js → chunk-44PEHPOG.js} +1916 -4689
  16. package/dist/bundle/{chunk-MZHTNNVA.js → chunk-4GXPNXOJ.js} +8 -0
  17. package/dist/bundle/{chunk-SC5KG5R4.js → chunk-DGNX7HQ3.js} +1 -7
  18. package/dist/bundle/{chunk-A53O363M.js → chunk-GRJFXLBM.js} +0 -1
  19. package/dist/bundle/chunk-HKINIBP4.js +29 -0
  20. package/dist/bundle/{chunk-73DCPU3D.js → chunk-IADCPVEI.js} +1019 -3427
  21. package/dist/bundle/{chunk-UDSW6FNG.js → chunk-KTNETTHI.js} +1 -1
  22. package/dist/bundle/{chunk-U7AUVG3B.js → chunk-VSIYFWYI.js} +24 -6
  23. package/dist/bundle/{chunk-IW77OXFS.js → chunk-W46VZFI6.js} +0 -2099
  24. package/dist/bundle/{cli-main-O4X7GFGY.js → cli-main-4DS7Y3PI.js} +8 -6
  25. package/dist/bundle/cli.js +2 -2
  26. package/dist/bundle/{google-AUTVGDGZ.js → google-T32FMD4G.js} +6 -6
  27. package/dist/bundle/{google-vertex-Q75D7RKS.js → google-vertex-56KP6I3B.js} +3 -3
  28. package/dist/bundle/{main-XKOW2BV6.js → main-SV7JLVEB.js} +7 -5
  29. package/dist/bundle/{mistral-7ESB7QUD.js → mistral-WGBMYIVU.js} +5 -5
  30. package/dist/bundle/{openai-codex-responses-LV3QRPN4.js → openai-codex-responses-PIV2RQ3G.js} +6 -6
  31. package/dist/bundle/{openai-completions-OJECLPXJ.js → openai-completions-64C3JPR4.js} +11 -22
  32. package/dist/bundle/{openai-responses-FN6HZMBC.js → openai-responses-UI7RSTDV.js} +6 -6
  33. package/dist/cli/args.d.ts.map +1 -1
  34. package/dist/cli/args.js +108 -59
  35. package/dist/cli/args.js.map +1 -1
  36. package/dist/cli/daemon-ps.d.ts +4 -3
  37. package/dist/cli/daemon-ps.d.ts.map +1 -1
  38. package/dist/cli/daemon-ps.js +6 -1
  39. package/dist/cli/daemon-ps.js.map +1 -1
  40. package/dist/cli/product-doctor.d.ts +0 -1
  41. package/dist/cli/product-doctor.d.ts.map +1 -1
  42. package/dist/cli/product-doctor.js +6 -3
  43. package/dist/cli/product-doctor.js.map +1 -1
  44. package/dist/config.d.ts +0 -3
  45. package/dist/config.d.ts.map +1 -1
  46. package/dist/config.js +0 -8
  47. package/dist/config.js.map +1 -1
  48. package/dist/core/agent-session-config.d.ts +1 -2
  49. package/dist/core/agent-session-config.d.ts.map +1 -1
  50. package/dist/core/agent-session-config.js +0 -3
  51. package/dist/core/agent-session-config.js.map +1 -1
  52. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  53. package/dist/core/agent-session-runtime.js +5 -4
  54. package/dist/core/agent-session-runtime.js.map +1 -1
  55. package/dist/core/agent-session-services.d.ts +5 -3
  56. package/dist/core/agent-session-services.d.ts.map +1 -1
  57. package/dist/core/agent-session-services.js +2 -27
  58. package/dist/core/agent-session-services.js.map +1 -1
  59. package/dist/core/agent-session.d.ts +10 -6
  60. package/dist/core/agent-session.d.ts.map +1 -1
  61. package/dist/core/agent-session.js +107 -107
  62. package/dist/core/agent-session.js.map +1 -1
  63. package/dist/core/auth-storage.d.ts +8 -35
  64. package/dist/core/auth-storage.d.ts.map +1 -1
  65. package/dist/core/auth-storage.js +33 -243
  66. package/dist/core/auth-storage.js.map +1 -1
  67. package/dist/core/cron-jobs.d.ts.map +1 -1
  68. package/dist/core/cron-jobs.js +7 -1
  69. package/dist/core/cron-jobs.js.map +1 -1
  70. package/dist/core/inference-coordinator.d.ts +6 -1
  71. package/dist/core/inference-coordinator.d.ts.map +1 -1
  72. package/dist/core/inference-coordinator.js +18 -2
  73. package/dist/core/inference-coordinator.js.map +1 -1
  74. package/dist/core/kernel/bootstrap.d.ts.map +1 -1
  75. package/dist/core/kernel/bootstrap.js +2 -2
  76. package/dist/core/kernel/bootstrap.js.map +1 -1
  77. package/dist/core/kernel/repl-manager.d.ts +2 -0
  78. package/dist/core/kernel/repl-manager.d.ts.map +1 -1
  79. package/dist/core/kernel/repl-manager.js +44 -1
  80. package/dist/core/kernel/repl-manager.js.map +1 -1
  81. package/dist/core/logging.d.ts +4 -3
  82. package/dist/core/logging.d.ts.map +1 -1
  83. package/dist/core/logging.js +6 -6
  84. package/dist/core/logging.js.map +1 -1
  85. package/dist/core/mcp/mcp-manager.d.ts.map +1 -1
  86. package/dist/core/mcp/mcp-manager.js +3 -3
  87. package/dist/core/mcp/mcp-manager.js.map +1 -1
  88. package/dist/core/model-registry.d.ts +1 -16
  89. package/dist/core/model-registry.d.ts.map +1 -1
  90. package/dist/core/model-registry.js +88 -196
  91. package/dist/core/model-registry.js.map +1 -1
  92. package/dist/core/model-resolver.d.ts +2 -19
  93. package/dist/core/model-resolver.d.ts.map +1 -1
  94. package/dist/core/model-resolver.js +36 -266
  95. package/dist/core/model-resolver.js.map +1 -1
  96. package/dist/core/provider-contracts.d.ts +5 -6
  97. package/dist/core/provider-contracts.d.ts.map +1 -1
  98. package/dist/core/provider-contracts.js +25 -36
  99. package/dist/core/provider-contracts.js.map +1 -1
  100. package/dist/core/provider-display-names.d.ts.map +1 -1
  101. package/dist/core/provider-display-names.js +0 -2
  102. package/dist/core/provider-display-names.js.map +1 -1
  103. package/dist/core/rlm-max-subagents.d.ts +32 -0
  104. package/dist/core/rlm-max-subagents.d.ts.map +1 -0
  105. package/dist/core/rlm-max-subagents.js +50 -0
  106. package/dist/core/rlm-max-subagents.js.map +1 -0
  107. package/dist/core/rlm-runtime.d.ts +3 -3
  108. package/dist/core/rlm-runtime.d.ts.map +1 -1
  109. package/dist/core/rlm-runtime.js.map +1 -1
  110. package/dist/core/sdk.d.ts +4 -3
  111. package/dist/core/sdk.d.ts.map +1 -1
  112. package/dist/core/sdk.js +27 -14
  113. package/dist/core/sdk.js.map +1 -1
  114. package/dist/core/settings-manager.d.ts +3 -16
  115. package/dist/core/settings-manager.d.ts.map +1 -1
  116. package/dist/core/settings-manager.js +12 -44
  117. package/dist/core/settings-manager.js.map +1 -1
  118. package/dist/core/slash-commands.d.ts.map +1 -1
  119. package/dist/core/slash-commands.js +6 -6
  120. package/dist/core/slash-commands.js.map +1 -1
  121. package/dist/index.d.ts +1 -1
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js.map +1 -1
  124. package/dist/installer.mjs +2 -3
  125. package/dist/main.d.ts.map +1 -1
  126. package/dist/main.js +39 -34
  127. package/dist/main.js.map +1 -1
  128. package/dist/modes/acp/acp-mode.d.ts.map +1 -1
  129. package/dist/modes/acp/acp-mode.js +1 -1
  130. package/dist/modes/acp/acp-mode.js.map +1 -1
  131. package/dist/modes/agent-connection/daemon-agent-connection.d.ts +6 -2
  132. package/dist/modes/agent-connection/daemon-agent-connection.d.ts.map +1 -1
  133. package/dist/modes/agent-connection/daemon-agent-connection.js +13 -2
  134. package/dist/modes/agent-connection/daemon-agent-connection.js.map +1 -1
  135. package/dist/modes/agent-connection/in-process-agent-connection.d.ts +2 -0
  136. package/dist/modes/agent-connection/in-process-agent-connection.d.ts.map +1 -1
  137. package/dist/modes/agent-connection/in-process-agent-connection.js +6 -0
  138. package/dist/modes/agent-connection/in-process-agent-connection.js.map +1 -1
  139. package/dist/modes/agent-connection/types.d.ts +3 -0
  140. package/dist/modes/agent-connection/types.d.ts.map +1 -1
  141. package/dist/modes/agent-connection/types.js.map +1 -1
  142. package/dist/modes/agents-view/agents-view-mode.d.ts.map +1 -1
  143. package/dist/modes/agents-view/agents-view-mode.js +2 -19
  144. package/dist/modes/agents-view/agents-view-mode.js.map +1 -1
  145. package/dist/modes/daemon/daemon-mode.d.ts +5 -0
  146. package/dist/modes/daemon/daemon-mode.d.ts.map +1 -1
  147. package/dist/modes/daemon/daemon-mode.js +107 -12
  148. package/dist/modes/daemon/daemon-mode.js.map +1 -1
  149. package/dist/modes/daemon/daemon-protocol.d.ts +194 -165
  150. package/dist/modes/daemon/daemon-protocol.d.ts.map +1 -1
  151. package/dist/modes/daemon/daemon-protocol.js +16 -11
  152. package/dist/modes/daemon/daemon-protocol.js.map +1 -1
  153. package/dist/modes/daemon/daemon-rlm-capacity-coordinator.d.ts +19 -0
  154. package/dist/modes/daemon/daemon-rlm-capacity-coordinator.d.ts.map +1 -0
  155. package/dist/modes/daemon/daemon-rlm-capacity-coordinator.js +74 -0
  156. package/dist/modes/daemon/daemon-rlm-capacity-coordinator.js.map +1 -0
  157. package/dist/modes/daemon/daemon-rlm-capacity.d.ts +19 -0
  158. package/dist/modes/daemon/daemon-rlm-capacity.d.ts.map +1 -0
  159. package/dist/modes/daemon/daemon-rlm-capacity.js +85 -0
  160. package/dist/modes/daemon/daemon-rlm-capacity.js.map +1 -0
  161. package/dist/modes/daemon/daemon-session-summarizer.d.ts +2 -3
  162. package/dist/modes/daemon/daemon-session-summarizer.d.ts.map +1 -1
  163. package/dist/modes/daemon/daemon-session-summarizer.js +32 -23
  164. package/dist/modes/daemon/daemon-session-summarizer.js.map +1 -1
  165. package/dist/modes/daemon/daemon-state-root.d.ts +15 -0
  166. package/dist/modes/daemon/daemon-state-root.d.ts.map +1 -0
  167. package/dist/modes/daemon/daemon-state-root.js +40 -0
  168. package/dist/modes/daemon/daemon-state-root.js.map +1 -0
  169. package/dist/modes/daemon/daemon-supervisor-ownership.d.ts +2 -0
  170. package/dist/modes/daemon/daemon-supervisor-ownership.d.ts.map +1 -1
  171. package/dist/modes/daemon/daemon-supervisor-ownership.js +27 -0
  172. package/dist/modes/daemon/daemon-supervisor-ownership.js.map +1 -1
  173. package/dist/modes/daemon/daemon-supervisor.d.ts +10 -1
  174. package/dist/modes/daemon/daemon-supervisor.d.ts.map +1 -1
  175. package/dist/modes/daemon/daemon-supervisor.js +213 -20
  176. package/dist/modes/daemon/daemon-supervisor.js.map +1 -1
  177. package/dist/modes/daemon/daemon-worker-protocol.d.ts +28 -1
  178. package/dist/modes/daemon/daemon-worker-protocol.d.ts.map +1 -1
  179. package/dist/modes/daemon/daemon-worker-protocol.js +16 -2
  180. package/dist/modes/daemon/daemon-worker-protocol.js.map +1 -1
  181. package/dist/modes/daemon/saved-session-catalog.d.ts.map +1 -1
  182. package/dist/modes/daemon/saved-session-catalog.js +2 -0
  183. package/dist/modes/daemon/saved-session-catalog.js.map +1 -1
  184. package/dist/modes/interactive/auth-flows.d.ts +0 -6
  185. package/dist/modes/interactive/auth-flows.d.ts.map +1 -1
  186. package/dist/modes/interactive/auth-flows.js +6 -126
  187. package/dist/modes/interactive/auth-flows.js.map +1 -1
  188. package/dist/modes/interactive/components/configuration-menu.d.ts +3 -0
  189. package/dist/modes/interactive/components/configuration-menu.d.ts.map +1 -1
  190. package/dist/modes/interactive/components/configuration-menu.js +13 -2
  191. package/dist/modes/interactive/components/configuration-menu.js.map +1 -1
  192. package/dist/modes/interactive/components/footer.d.ts +1 -1
  193. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  194. package/dist/modes/interactive/components/footer.js +2 -2
  195. package/dist/modes/interactive/components/footer.js.map +1 -1
  196. package/dist/modes/interactive/components/index.d.ts +0 -1
  197. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  198. package/dist/modes/interactive/components/index.js +0 -1
  199. package/dist/modes/interactive/components/index.js.map +1 -1
  200. package/dist/modes/interactive/components/login-dialog.d.ts +0 -1
  201. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  202. package/dist/modes/interactive/components/login-dialog.js +3 -40
  203. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  204. package/dist/modes/interactive/components/model-selector.d.ts +2 -0
  205. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  206. package/dist/modes/interactive/components/model-selector.js +13 -2
  207. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  208. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  209. package/dist/modes/interactive/components/oauth-selector.js +2 -11
  210. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  211. package/dist/modes/interactive/feature-hints.d.ts.map +1 -1
  212. package/dist/modes/interactive/feature-hints.js +0 -4
  213. package/dist/modes/interactive/feature-hints.js.map +1 -1
  214. package/dist/modes/interactive/interactive-mode.d.ts +3 -12
  215. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  216. package/dist/modes/interactive/interactive-mode.js +81 -507
  217. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  218. package/dist/modes/interactive/onboarding.d.ts +0 -3
  219. package/dist/modes/interactive/onboarding.d.ts.map +1 -1
  220. package/dist/modes/interactive/onboarding.js +0 -17
  221. package/dist/modes/interactive/onboarding.js.map +1 -1
  222. package/dist/modes/rpc/rpc-client.d.ts +4 -1
  223. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  224. package/dist/modes/rpc/rpc-client.js +82 -42
  225. package/dist/modes/rpc/rpc-client.js.map +1 -1
  226. package/dist/node/amazon-bedrock.d.ts +2 -0
  227. package/dist/node/amazon-bedrock.d.ts.map +1 -0
  228. package/dist/node/amazon-bedrock.js +6 -0
  229. package/dist/node/amazon-bedrock.js.map +1 -0
  230. package/dist/product-identity.d.ts +0 -1
  231. package/dist/product-identity.d.ts.map +1 -1
  232. package/dist/product-identity.js +0 -1
  233. package/dist/product-identity.js.map +1 -1
  234. package/docs/development.md +1 -1
  235. package/docs/fork-philosophy.md +4 -8
  236. package/docs/installation.md +83 -62
  237. package/docs/providers.md +23 -25
  238. package/docs/quickstart.md +19 -10
  239. package/docs/rlm-runtime.md +13 -5
  240. package/docs/rpc.md +4 -4
  241. package/docs/sdk.md +20 -11
  242. package/docs/sessions.md +0 -1
  243. package/docs/settings.md +9 -42
  244. package/docs/skills.md +0 -1
  245. package/docs/upstream-0.9.5.md +171 -0
  246. package/docs/usage.md +14 -10
  247. package/package.json +4 -4
  248. package/dist/core/agent-traces.d.ts +0 -149
  249. package/dist/core/agent-traces.d.ts.map +0 -1
  250. package/dist/core/agent-traces.js +0 -904
  251. package/dist/core/agent-traces.js.map +0 -1
  252. package/dist/core/prime-inference-auth.d.ts +0 -70
  253. package/dist/core/prime-inference-auth.d.ts.map +0 -1
  254. package/dist/core/prime-inference-auth.js +0 -352
  255. package/dist/core/prime-inference-auth.js.map +0 -1
  256. package/dist/core/prime-inference-model-selection.d.ts +0 -16
  257. package/dist/core/prime-inference-model-selection.d.ts.map +0 -1
  258. package/dist/core/prime-inference-model-selection.js +0 -16
  259. package/dist/core/prime-inference-model-selection.js.map +0 -1
  260. package/dist/core/prime-inference-models.d.ts +0 -6
  261. package/dist/core/prime-inference-models.d.ts.map +0 -1
  262. package/dist/core/prime-inference-models.js +0 -62
  263. package/dist/core/prime-inference-models.js.map +0 -1
  264. package/dist/core/telemetry.d.ts +0 -95
  265. package/dist/core/telemetry.d.ts.map +0 -1
  266. package/dist/core/telemetry.js +0 -637
  267. package/dist/core/telemetry.js.map +0 -1
  268. package/dist/modes/interactive/components/prime-onboarding-splash.d.ts +0 -39
  269. package/dist/modes/interactive/components/prime-onboarding-splash.d.ts.map +0 -1
  270. package/dist/modes/interactive/components/prime-onboarding-splash.js +0 -286
  271. package/dist/modes/interactive/components/prime-onboarding-splash.js.map +0 -1
  272. package/dist/modes/interactive/components/prime-team-selector.d.ts +0 -30
  273. package/dist/modes/interactive/components/prime-team-selector.d.ts.map +0 -1
  274. package/dist/modes/interactive/components/prime-team-selector.js +0 -166
  275. package/dist/modes/interactive/components/prime-team-selector.js.map +0 -1
  276. package/dist/skills/prime-intellect/SKILL.md +0 -87
  277. package/dist/skills/prime-intellect/references/compute.md +0 -45
  278. package/dist/skills/prime-intellect/references/environments.md +0 -73
  279. package/dist/skills/prime-intellect/references/inference.md +0 -47
  280. package/dist/skills/prime-intellect/references/sandboxes.md +0 -75
  281. package/skills/prime-intellect/SKILL.md +0 -87
  282. package/skills/prime-intellect/references/compute.md +0 -45
  283. package/skills/prime-intellect/references/environments.md +0 -73
  284. package/skills/prime-intellect/references/inference.md +0 -47
  285. package/skills/prime-intellect/references/sandboxes.md +0 -75
@@ -1,166 +0,0 @@
1
- import { Container, fuzzyFilter, getKeybindings, Spacer, TruncatedText, } from "@ponythewhite/base-context-tui";
2
- import { theme } from "../theme/theme.js";
3
- import { getMenuListLayout, MenuList, MenuPanel, MenuRow, MenuSearchInput, } from "./menu-panel.js";
4
- const PREFERRED_VISIBLE_TEAMS = 8;
5
- const TEAM_LIST_RESERVED_ROWS = 7;
6
- const TEAM_SCROLL_INDICATOR_ROWS = 1;
7
- export class PrimeTeamSelectorComponent extends Container {
8
- currentTeamId;
9
- onSelect;
10
- onCancel;
11
- viewport;
12
- searchInput;
13
- listContainer;
14
- allOptions;
15
- filteredOptions;
16
- selectedIndex = 0;
17
- searchQuery = "";
18
- _focused = false;
19
- listLayout = getMenuListLayout({
20
- preferredVisibleItems: PREFERRED_VISIBLE_TEAMS,
21
- reservedRows: TEAM_LIST_RESERVED_ROWS,
22
- comfortableItemRows: 3,
23
- compactItemRows: 2,
24
- });
25
- constructor(teams, currentTeamId, onSelect, onCancel, viewport = {}) {
26
- super();
27
- this.currentTeamId = currentTeamId;
28
- this.onSelect = onSelect;
29
- this.onCancel = onCancel;
30
- this.viewport = viewport;
31
- this.allOptions = [{ type: "personal", team: null }, ...teams.map((team) => ({ type: "team", team }))];
32
- this.filteredOptions = this.allOptions;
33
- const panel = new MenuPanel({
34
- title: "Prime Team",
35
- subtitle: "Choose which account pays for Prime Inference usage.",
36
- });
37
- this.addChild(panel);
38
- this.searchInput = new MenuSearchInput("Search teams");
39
- this.searchInput.onSubmit = () => {
40
- const selected = this.filteredOptions[this.selectedIndex];
41
- if (selected) {
42
- this.onSelect(selected.team);
43
- }
44
- };
45
- panel.addChild(this.searchInput);
46
- panel.addChild(new Spacer(1));
47
- this.listContainer = new MenuList({ compact: () => this.listLayout.compact });
48
- panel.addChild(this.listContainer);
49
- this.filterOptions("");
50
- }
51
- get focused() {
52
- return this._focused;
53
- }
54
- set focused(value) {
55
- this._focused = value;
56
- this.searchInput.focused = value;
57
- }
58
- filterOptions(query) {
59
- const queryChanged = query !== this.searchQuery;
60
- this.searchQuery = query;
61
- this.filteredOptions = query
62
- ? fuzzyFilter(this.allOptions, query, (option) => this.getSearchText(option))
63
- : this.allOptions;
64
- this.selectedIndex = queryChanged
65
- ? 0
66
- : Math.max(0, Math.min(this.selectedIndex, Math.max(0, this.filteredOptions.length - 1)));
67
- this.updateList();
68
- }
69
- getSearchText(option) {
70
- if (option.type === "personal") {
71
- return "personal account";
72
- }
73
- const team = option.team;
74
- return team ? `${team.name} ${team.slug ?? ""} ${team.role ?? ""} ${team.teamId}` : "";
75
- }
76
- render(width) {
77
- const previousLayout = this.listLayout;
78
- this.updateLayout();
79
- if (this.listLayout.compact !== previousLayout.compact ||
80
- this.listLayout.visibleItems !== previousLayout.visibleItems) {
81
- this.updateList();
82
- }
83
- return super.render(width);
84
- }
85
- updateList() {
86
- this.updateLayout();
87
- this.listContainer.clear();
88
- const maxVisible = this.listLayout.visibleItems;
89
- const startIndex = Math.max(0, Math.min(this.selectedIndex - Math.floor(maxVisible / 2), this.filteredOptions.length - maxVisible));
90
- const endIndex = Math.min(startIndex + maxVisible, this.filteredOptions.length);
91
- for (let i = startIndex; i < endIndex; i++) {
92
- const option = this.filteredOptions[i];
93
- if (!option) {
94
- continue;
95
- }
96
- this.listContainer.addChild(new MenuRow({
97
- primary: this.getPrimary(option),
98
- secondary: this.getSecondary(option),
99
- meta: this.getMeta(option),
100
- selected: i === this.selectedIndex,
101
- }));
102
- }
103
- if (startIndex > 0 || endIndex < this.filteredOptions.length) {
104
- this.listContainer.addChild(new TruncatedText(theme.fg("muted", ` (${this.selectedIndex + 1}/${this.filteredOptions.length})`), 1, 0));
105
- }
106
- if (this.filteredOptions.length === 0) {
107
- this.listContainer.addChild(new TruncatedText(theme.fg("muted", "No matching teams"), 1, 0));
108
- }
109
- }
110
- getPrimary(option) {
111
- return option.team?.name ?? "Personal";
112
- }
113
- getSecondary(option) {
114
- if (!option.team) {
115
- return "personal account";
116
- }
117
- const role = option.team.role?.toLowerCase() ?? "member";
118
- return option.team.slug ? `slug: ${option.team.slug}, role: ${role}` : `role: ${role}`;
119
- }
120
- getMeta(option) {
121
- const isCurrent = option.team ? option.team.teamId === this.currentTeamId : this.currentTeamId === undefined;
122
- return isCurrent ? theme.fg("success", "current") : "";
123
- }
124
- handleInput(keyData) {
125
- const kb = getKeybindings();
126
- if (kb.matches(keyData, "tui.select.up")) {
127
- if (this.filteredOptions.length === 0) {
128
- return;
129
- }
130
- this.selectedIndex = Math.max(0, this.selectedIndex - 1);
131
- this.updateList();
132
- }
133
- else if (kb.matches(keyData, "tui.select.down")) {
134
- if (this.filteredOptions.length === 0) {
135
- return;
136
- }
137
- this.selectedIndex = Math.min(this.filteredOptions.length - 1, this.selectedIndex + 1);
138
- this.updateList();
139
- }
140
- else if (kb.matches(keyData, "tui.select.confirm")) {
141
- const selected = this.filteredOptions[this.selectedIndex];
142
- if (selected) {
143
- this.onSelect(selected.team);
144
- }
145
- }
146
- else if (kb.matches(keyData, "tui.select.cancel")) {
147
- this.onCancel();
148
- }
149
- else {
150
- this.searchInput.handleInput(keyData);
151
- this.filterOptions(this.searchInput.getValue());
152
- }
153
- }
154
- updateLayout() {
155
- this.listLayout = getMenuListLayout({
156
- getRows: this.viewport.getRows,
157
- preferredVisibleItems: PREFERRED_VISIBLE_TEAMS,
158
- totalItems: this.filteredOptions.length,
159
- reservedRows: TEAM_LIST_RESERVED_ROWS,
160
- comfortableItemRows: 3,
161
- compactItemRows: 2,
162
- scrollIndicatorRows: TEAM_SCROLL_INDICATOR_ROWS,
163
- });
164
- }
165
- }
166
- //# sourceMappingURL=prime-team-selector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prime-team-selector.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/prime-team-selector.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tContainer,\n\ttype Focusable,\n\tfuzzyFilter,\n\tgetKeybindings,\n\tSpacer,\n\tTruncatedText,\n} from \"@ponythewhite/base-context-tui\";\nimport type { PrimeTeam } from \"../../../core/prime-inference-auth.js\";\nimport { theme } from \"../theme/theme.js\";\nimport {\n\tgetMenuListLayout,\n\tMenuList,\n\tMenuPanel,\n\tMenuRow,\n\tMenuSearchInput,\n\ttype MenuViewportProvider,\n} from \"./menu-panel.js\";\n\ntype PrimeTeamOption = {\n\ttype: \"personal\" | \"team\";\n\tteam: PrimeTeam | null;\n};\n\nconst PREFERRED_VISIBLE_TEAMS = 8;\nconst TEAM_LIST_RESERVED_ROWS = 7;\nconst TEAM_SCROLL_INDICATOR_ROWS = 1;\n\nexport class PrimeTeamSelectorComponent extends Container implements Focusable {\n\tprivate readonly searchInput: MenuSearchInput;\n\tprivate readonly listContainer: Container;\n\tprivate readonly allOptions: PrimeTeamOption[];\n\tprivate filteredOptions: PrimeTeamOption[];\n\tprivate selectedIndex = 0;\n\tprivate searchQuery = \"\";\n\tprivate _focused = false;\n\tprivate listLayout = getMenuListLayout({\n\t\tpreferredVisibleItems: PREFERRED_VISIBLE_TEAMS,\n\t\treservedRows: TEAM_LIST_RESERVED_ROWS,\n\t\tcomfortableItemRows: 3,\n\t\tcompactItemRows: 2,\n\t});\n\n\tconstructor(\n\t\tteams: PrimeTeam[],\n\t\tprivate readonly currentTeamId: string | undefined,\n\t\tprivate readonly onSelect: (team: PrimeTeam | null) => void,\n\t\tprivate readonly onCancel: () => void,\n\t\tprivate readonly viewport: MenuViewportProvider = {},\n\t) {\n\t\tsuper();\n\n\t\tthis.allOptions = [{ type: \"personal\", team: null }, ...teams.map((team) => ({ type: \"team\" as const, team }))];\n\t\tthis.filteredOptions = this.allOptions;\n\n\t\tconst panel = new MenuPanel({\n\t\t\ttitle: \"Prime Team\",\n\t\t\tsubtitle: \"Choose which account pays for Prime Inference usage.\",\n\t\t});\n\t\tthis.addChild(panel);\n\n\t\tthis.searchInput = new MenuSearchInput(\"Search teams\");\n\t\tthis.searchInput.onSubmit = () => {\n\t\t\tconst selected = this.filteredOptions[this.selectedIndex];\n\t\t\tif (selected) {\n\t\t\t\tthis.onSelect(selected.team);\n\t\t\t}\n\t\t};\n\t\tpanel.addChild(this.searchInput);\n\t\tpanel.addChild(new Spacer(1));\n\n\t\tthis.listContainer = new MenuList({ compact: () => this.listLayout.compact });\n\t\tpanel.addChild(this.listContainer);\n\t\tthis.filterOptions(\"\");\n\t}\n\n\tget focused(): boolean {\n\t\treturn this._focused;\n\t}\n\n\tset focused(value: boolean) {\n\t\tthis._focused = value;\n\t\tthis.searchInput.focused = value;\n\t}\n\n\tprivate filterOptions(query: string): void {\n\t\tconst queryChanged = query !== this.searchQuery;\n\t\tthis.searchQuery = query;\n\t\tthis.filteredOptions = query\n\t\t\t? fuzzyFilter(this.allOptions, query, (option) => this.getSearchText(option))\n\t\t\t: this.allOptions;\n\t\tthis.selectedIndex = queryChanged\n\t\t\t? 0\n\t\t\t: Math.max(0, Math.min(this.selectedIndex, Math.max(0, this.filteredOptions.length - 1)));\n\t\tthis.updateList();\n\t}\n\n\tprivate getSearchText(option: PrimeTeamOption): string {\n\t\tif (option.type === \"personal\") {\n\t\t\treturn \"personal account\";\n\t\t}\n\t\tconst team = option.team;\n\t\treturn team ? `${team.name} ${team.slug ?? \"\"} ${team.role ?? \"\"} ${team.teamId}` : \"\";\n\t}\n\n\toverride render(width: number): string[] {\n\t\tconst previousLayout = this.listLayout;\n\t\tthis.updateLayout();\n\t\tif (\n\t\t\tthis.listLayout.compact !== previousLayout.compact ||\n\t\t\tthis.listLayout.visibleItems !== previousLayout.visibleItems\n\t\t) {\n\t\t\tthis.updateList();\n\t\t}\n\t\treturn super.render(width);\n\t}\n\n\tprivate updateList(): void {\n\t\tthis.updateLayout();\n\t\tthis.listContainer.clear();\n\n\t\tconst maxVisible = this.listLayout.visibleItems;\n\t\tconst startIndex = Math.max(\n\t\t\t0,\n\t\t\tMath.min(this.selectedIndex - Math.floor(maxVisible / 2), this.filteredOptions.length - maxVisible),\n\t\t);\n\t\tconst endIndex = Math.min(startIndex + maxVisible, this.filteredOptions.length);\n\n\t\tfor (let i = startIndex; i < endIndex; i++) {\n\t\t\tconst option = this.filteredOptions[i];\n\t\t\tif (!option) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis.listContainer.addChild(\n\t\t\t\tnew MenuRow({\n\t\t\t\t\tprimary: this.getPrimary(option),\n\t\t\t\t\tsecondary: this.getSecondary(option),\n\t\t\t\t\tmeta: this.getMeta(option),\n\t\t\t\t\tselected: i === this.selectedIndex,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tif (startIndex > 0 || endIndex < this.filteredOptions.length) {\n\t\t\tthis.listContainer.addChild(\n\t\t\t\tnew TruncatedText(theme.fg(\"muted\", ` (${this.selectedIndex + 1}/${this.filteredOptions.length})`), 1, 0),\n\t\t\t);\n\t\t}\n\n\t\tif (this.filteredOptions.length === 0) {\n\t\t\tthis.listContainer.addChild(new TruncatedText(theme.fg(\"muted\", \"No matching teams\"), 1, 0));\n\t\t}\n\t}\n\n\tprivate getPrimary(option: PrimeTeamOption): string {\n\t\treturn option.team?.name ?? \"Personal\";\n\t}\n\n\tprivate getSecondary(option: PrimeTeamOption): string {\n\t\tif (!option.team) {\n\t\t\treturn \"personal account\";\n\t\t}\n\t\tconst role = option.team.role?.toLowerCase() ?? \"member\";\n\t\treturn option.team.slug ? `slug: ${option.team.slug}, role: ${role}` : `role: ${role}`;\n\t}\n\n\tprivate getMeta(option: PrimeTeamOption): string {\n\t\tconst isCurrent = option.team ? option.team.teamId === this.currentTeamId : this.currentTeamId === undefined;\n\t\treturn isCurrent ? theme.fg(\"success\", \"current\") : \"\";\n\t}\n\n\thandleInput(keyData: string): void {\n\t\tconst kb = getKeybindings();\n\t\tif (kb.matches(keyData, \"tui.select.up\")) {\n\t\t\tif (this.filteredOptions.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.selectedIndex = Math.max(0, this.selectedIndex - 1);\n\t\t\tthis.updateList();\n\t\t} else if (kb.matches(keyData, \"tui.select.down\")) {\n\t\t\tif (this.filteredOptions.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.selectedIndex = Math.min(this.filteredOptions.length - 1, this.selectedIndex + 1);\n\t\t\tthis.updateList();\n\t\t} else if (kb.matches(keyData, \"tui.select.confirm\")) {\n\t\t\tconst selected = this.filteredOptions[this.selectedIndex];\n\t\t\tif (selected) {\n\t\t\t\tthis.onSelect(selected.team);\n\t\t\t}\n\t\t} else if (kb.matches(keyData, \"tui.select.cancel\")) {\n\t\t\tthis.onCancel();\n\t\t} else {\n\t\t\tthis.searchInput.handleInput(keyData);\n\t\t\tthis.filterOptions(this.searchInput.getValue());\n\t\t}\n\t}\n\n\tprivate updateLayout(): void {\n\t\tthis.listLayout = getMenuListLayout({\n\t\t\tgetRows: this.viewport.getRows,\n\t\t\tpreferredVisibleItems: PREFERRED_VISIBLE_TEAMS,\n\t\t\ttotalItems: this.filteredOptions.length,\n\t\t\treservedRows: TEAM_LIST_RESERVED_ROWS,\n\t\t\tcomfortableItemRows: 3,\n\t\t\tcompactItemRows: 2,\n\t\t\tscrollIndicatorRows: TEAM_SCROLL_INDICATOR_ROWS,\n\t\t});\n\t}\n}\n"]}
@@ -1,87 +0,0 @@
1
- ---
2
- name: prime-intellect
3
- description: Work with Prime Intellect products via the prime CLI and Python SDKs - verifiers environments and the Environments Hub, evaluations (local and hosted), Hosted Training and prime-rl, code sandboxes, Prime Inference, GPU compute (pods and clusters), storage, and tunnels. Use when a task involves Prime Intellect, the prime CLI, verifiers, RL environments, evals, training, sandboxes, renting GPUs, Prime Inference models, or when the user asks what Prime Intellect is or what it offers.
4
- ---
5
-
6
- # Prime Intellect
7
-
8
- Prime Intellect is an open superintelligence lab building open-source AGI infrastructure: a platform for RL environments, evaluations, post-training, inference, and globally distributed GPU compute. Prime Agent (this agent) is built by Prime Intellect, and the `prime` CLI is the default way to interface with every product below.
9
-
10
- ## Product Map
11
-
12
- | Product | What it is | Details |
13
- |---|---|---|
14
- | verifiers | Python library for building LLM environments and evaluations | [environments.md](references/environments.md) |
15
- | Environments Hub | Platform library of community RL environments (`prime env`) | [environments.md](references/environments.md) |
16
- | Hosted Evaluations | Run evals on Prime-managed infra (`prime eval run --hosted`) | [environments.md](references/environments.md) |
17
- | Hosted Training | Post-train models against environments (`prime train`, Lab) | [environments.md](references/environments.md) |
18
- | prime-rl | Large-scale async RL framework for self-managed training | [environments.md](references/environments.md) |
19
- | Sandboxes | Secure disposable Docker environments for AI-generated code | [sandboxes.md](references/sandboxes.md) |
20
- | Tunnels | Public HTTPS URLs for local/sandboxed services | [sandboxes.md](references/sandboxes.md) |
21
- | Inference | OpenAI-compatible API for frontier models | [inference.md](references/inference.md) |
22
- | Compute | Rent single GPU pods or multi-node clusters | [compute.md](references/compute.md) |
23
- | Storage | Persistent disks shared between instances | [compute.md](references/compute.md) |
24
-
25
- ## Prime CLI Setup
26
-
27
- Default to the `prime` CLI for all Prime Intellect operations. If it is not installed:
28
-
29
- ```bash
30
- uv tool install prime # or: pip install prime
31
- prime login # browser auth; or: prime config set-api-key
32
- prime config view # verify configuration
33
- ```
34
-
35
- The same package provides the Python SDKs (e.g. `prime_sandboxes`, `prime_tunnel`). Source: https://github.com/PrimeIntellect-ai/prime
36
-
37
- ## Live Documentation
38
-
39
- Authoritative, current docs live at https://docs.primeintellect.ai. Any docs page is fetchable as Markdown by appending `.md` to its URL, and the full index is at https://docs.primeintellect.ai/llms.txt. When you need details not covered here (exact flags, API schemas, pricing, new features), fetch the live docs instead of guessing:
40
-
41
- ```bash
42
- curl -s https://docs.primeintellect.ai/llms.txt # discover pages
43
- curl -s https://docs.primeintellect.ai/sandboxes/overview.md # fetch a page as markdown
44
- ```
45
-
46
- The REST API is documented under `api-reference/` pages (OpenAPI spec: https://api.primeintellect.ai/openapi.json), with `https://api.primeintellect.ai` as the base URL.
47
-
48
- ## Command Quick Reference
49
-
50
- ```bash
51
- # Environments Hub
52
- prime env list --search "math" # discover environments
53
- prime env info owner/name # inspect one
54
- prime env install owner/name # install locally
55
- prime env init my-env --v1 # scaffold a new environment
56
- prime env push # publish to the Hub
57
-
58
- # Evaluations
59
- prime eval run my-env -m openai/gpt-4.1-mini -n 5 # local smoke eval
60
- prime eval run owner/env --hosted --follow # hosted eval with logs
61
-
62
- # Training
63
- prime lab setup # set up a Lab workspace (Hosted Training)
64
- prime train models # models, capacity, pricing
65
- prime train init && prime train rl.toml # configure + launch a run
66
-
67
- # Sandboxes
68
- prime sandbox create python:3.11-slim --timeout-minutes 120
69
- prime sandbox run <sandbox-id> "python --version"
70
- prime sandbox delete <sandbox-id>
71
-
72
- # Inference
73
- prime inference models # list available models
74
-
75
- # Compute
76
- prime availability list # GPU availability + pricing
77
- prime pods create # provision a pod
78
- prime pods ssh <pod-id> # SSH in (needs: prime config set-ssh-key-path)
79
- ```
80
-
81
- ## Working Conventions
82
-
83
- - Prefer ecosystem-native paths (`prime env init`, `prime eval run`, `prime lab setup`) over custom scaffolding.
84
- - Smoke-test small (`-n 5`) before scaling evals or training; keep default result uploads unless the user explicitly opts out.
85
- - For non-trivial eval/training work, ask whether the user wants instruct models (`gpt-4.1` series, `qwen3` instruct) or reasoning models (`gpt-5` series, `qwen3` thinking, `glm` series).
86
- - Hosted Training launches from a CPU machine; self-managed `prime-rl` requires local GPU access and is a power-user path.
87
- - The dashboard at https://app.primeintellect.ai covers API keys, billing, teams, and anything the CLI does not.
@@ -1,45 +0,0 @@
1
- # Compute & Storage
2
-
3
- Prime Intellect aggregates GPU capacity across providers: rent single GPU pods on demand or deploy multi-node clusters, with persistent network-attached storage.
4
-
5
- Live docs: `cli-reference/check-gpu-availability.md`, `cli-reference/provision-gpu.md`, `cli-reference/managing-disks.md`, `tutorials-multi-node-cluster/deploy-multi-node.md`, `tutorials-storage/create-persistent-storage.md` under https://docs.primeintellect.ai/
6
-
7
- ## GPU Availability
8
-
9
- ```bash
10
- prime availability list # all GPUs with pricing
11
- prime availability list --gpu-type H100_80GB # filter by GPU type
12
- ```
13
-
14
- ## Pods (single instances)
15
-
16
- ```bash
17
- prime config set-ssh-key-path # one-time: SSH key for pod access (generate on the dashboard profile page)
18
- prime pods create # interactive provisioning from availability data
19
- prime pods list
20
- prime pods ssh <pod-id>
21
- ```
22
-
23
- Pods support custom Docker images (`tutorials-on-demand-cloud/deploy-custom-docker-image.md`). Monitor, terminate, and inspect pods from the CLI or the dashboard.
24
-
25
- ## Multi-Node Clusters
26
-
27
- Deploy multi-node clusters (with optional Slurm orchestration) from the platform; see `tutorials-multi-node-cluster/deploy-multi-node.md` and `tutorials-multi-node-cluster/slurm-orchestration.md`. Cluster monitoring guidance lives at `tutorials-reserved-clusters/monitoring.md`.
28
-
29
- ## Storage
30
-
31
- Persistent disks outlive individual instances and can be attached to different instances as needed:
32
-
33
- - Create disks from the Storage tab of the Instances page (choose provider, datacenter, size), then attach them to pods or clusters.
34
- - Manage disks from the CLI as well — see `cli-reference/managing-disks.md`.
35
- - For multi-node shared and ephemeral storage patterns, see `tutorials-storage/cluster-storage.md`.
36
-
37
- ## Teams
38
-
39
- Manage team membership and run resources against team billing:
40
-
41
- ```bash
42
- prime teams list
43
- ```
44
-
45
- Most provisioning commands accept a `--team-id` flag; the REST API equivalent is the `X-Prime-Team-ID` header.
@@ -1,73 +0,0 @@
1
- # Environments, Evaluations & Training
2
-
3
- verifiers is Prime Intellect's Python library for LLM environments: packages that expose `load_environment` and bundle datasets, rollout logic, and reward rubrics. Environments power evaluations (local and hosted) and RL training (Hosted Training or self-managed prime-rl).
4
-
5
- Live docs: `verifiers/overview.md`, `tutorials-environments/getting-started.md`, `hosted-training/getting-started.md`, `prime-rl/overview.md` under https://docs.primeintellect.ai/ (append `.md` for raw markdown). Source: https://github.com/PrimeIntellect-ai/verifiers and https://github.com/PrimeIntellect-ai/prime-rl
6
-
7
- ## Discovering Environments (Hub)
8
-
9
- ```bash
10
- prime env list --search "math" --owner primeintellect --show-actions
11
- prime env list --tag tools --tag sandbox
12
- prime env list --mine
13
- prime env list --starred
14
- prime env info owner/name # metadata, version, dependencies
15
- prime env status owner/name # CI/action status
16
- prime env pull owner/name -t ./tmp-env # pull source for inspection
17
- prime env install owner/name # install locally
18
- ```
19
-
20
- When picking candidates, prefer: `primeintellect`-owned, passing latest actions, updated within ~2 months, recent verifiers versions. Compare task type (single-turn, multi-turn, tool, sandbox, agent), reward type (binary, continuous, judge-based), and dependency/secret requirements.
21
-
22
- ## Creating Environments
23
-
24
- ```bash
25
- prime env init my-env --v1 # scaffold (add --with-harness for an explicit reusable harness)
26
- prime env install my-env
27
- prime eval run my-env -m openai/gpt-4.1-mini -n 5 # smoke test immediately
28
- prime env push # publish to the Hub
29
- ```
30
-
31
- Build guidance:
32
-
33
- - Define the task contract first: prompt shape, allowed tools, stop conditions, rubric outputs, metrics.
34
- - Prefer starting from an existing Hub environment (`prime env list --search`, then `prime env install owner/name`) over building from scratch.
35
- - v1 environments expose `load_environment(config: vf.EnvConfig) -> vf.Env`; Taskset + Harness environments additionally expose `load_taskset(config)` and optionally `load_harness(config)` with `load_environment` delegating through `vf.load_taskset`/`vf.load_harness`.
36
- - The environment must install, load, evaluate, and train without hidden setup.
37
-
38
- ## Evaluations
39
-
40
- `prime eval run` is the canonical eval path. Runs save automatically (visible in the Evaluations tab and `prime eval view`); do not add `--skip-upload` unless the user explicitly asks.
41
-
42
- ```bash
43
- prime eval run my-env -m openai/gpt-4.1-mini -n 5 # smoke
44
- prime eval run owner/env -m openai/gpt-4.1-mini -n 200 -r 3 --shuffle -s # scaled
45
- prime eval run owner/env --hosted --follow # hosted, streaming logs
46
- ```
47
-
48
- - Smoke-test first; scale only after a pass. Use `--shuffle` (seed defaults to 0; set `--shuffle-seed` for reproducible reports).
49
- - Hosted evals require the environment to be published (`prime env push`) and support TOML configs and temporary sandbox/tunnel permissions (`--allow-tunnel-access`).
50
- - Prime Inference models include estimated run cost in eval output automatically.
51
- - Keep reusable model endpoints as aliases in `configs/endpoints.toml` (fields: `endpoint_id`, `model`, `url`, key) and reference them with `-m <endpoint_id>`.
52
-
53
- ## Training
54
-
55
- Default to Hosted Training unless the user explicitly wants self-managed infrastructure.
56
-
57
- ```bash
58
- prime lab setup # Lab workspace for environments, evals, GEPA, Hosted Training
59
- prime train models # supported models, capacity, pricing
60
- prime train init # generate a training config
61
- prime train rl.toml # launch the run
62
- ```
63
-
64
- - Hosted Training launches from a CPU machine; no local GPUs needed.
65
- - Validate the environment with an eval before training (e.g. `-n 20 -r 3 -s`) and confirm reward diversity exists at baseline.
66
- - Self-managed path: `prime lab setup --prime-rl`, then follow prime-rl's own configs and launch commands. Treat prime-rl as a power-user path requiring local GPU access; see https://docs.primeintellect.ai/prime-rl/overview.md.
67
-
68
- ## Model Family Choice
69
-
70
- Ask the user whether they want instruct or reasoning models before non-trivial runs:
71
-
72
- - Instruct (quick behavior checks): `gpt-4.1` series, `qwen3` instruct series.
73
- - Reasoning (harder probes, deeper coverage): `gpt-5` series, `qwen3` thinking series, `glm` series.
@@ -1,47 +0,0 @@
1
- # Prime Inference
2
-
3
- Prime Inference is an OpenAI-compatible API for frontier and open models, routed across providers and built for large-scale evaluations.
4
-
5
- Live docs: `inference/overview.md`, `inference/usage.md`, `inference/adapter-deployments.md`, `inference/troubleshooting.md` under https://docs.primeintellect.ai/
6
-
7
- ## Setup
8
-
9
- 1. Create an API key on https://app.primeintellect.ai (account settings → API Keys) with the **Inference** permission enabled — without it, requests fail with authentication errors.
10
- 2. Export it:
11
-
12
- ```bash
13
- export PRIME_API_KEY="your-api-key-here"
14
- ```
15
-
16
- ## Via the CLI (recommended for evaluations)
17
-
18
- ```bash
19
- prime inference models # list available models
20
- prime eval run gsm8k -m meta-llama/llama-3.1-70b-instruct -n 25 # evals route through Prime Inference
21
- ```
22
-
23
- Eval runs against Prime Inference models report estimated USD cost automatically.
24
-
25
- ## Direct API (OpenAI-compatible)
26
-
27
- Base URL: `https://api.pinference.ai/api/v1`
28
-
29
- ```python
30
- import openai, os
31
-
32
- client = openai.OpenAI(
33
- api_key=os.environ["PRIME_API_KEY"],
34
- base_url="https://api.pinference.ai/api/v1",
35
- )
36
- response = client.chat.completions.create(
37
- model="meta-llama/llama-3.1-70b-instruct",
38
- messages=[{"role": "user", "content": "Hello!"}],
39
- )
40
- ```
41
-
42
- Anything that speaks the OpenAI API works — just point it at the base URL above. Streaming and advanced parameters are covered in `inference/usage.md`.
43
-
44
- ## Teams & Adapters
45
-
46
- - Team billing: send the `X-Prime-Team-ID` header (find the ID via `prime teams list` or the Team Profile page) to use team credits instead of personal balance.
47
- - LoRA adapters trained with Hosted Training can be deployed and queried through the same OpenAI-compatible API (`inference/adapter-deployments.md`).
@@ -1,75 +0,0 @@
1
- # Sandboxes & Tunnels
2
-
3
- Prime Sandboxes are disposable Docker environments for running AI-generated or untrusted code in the cloud: isolated, fast to create, billed only while running (CPU $0.05/core/hr, memory $0.01/GB/hr, disk $0.001/GB/hr).
4
-
5
- Live docs: `sandboxes/overview.md`, `sandboxes/cli.md`, `sandboxes/sdk.md`, `sandboxes/images.md`, `sandboxes/tunnel.md` under https://docs.primeintellect.ai/
6
-
7
- ## CLI Lifecycle
8
-
9
- ```bash
10
- prime sandbox create python:3.11-slim --timeout-minutes 120 # any Docker image
11
- prime sandbox list
12
- prime sandbox run <sandbox-id> "python --version"
13
- prime sandbox get <sandbox-id>
14
- prime sandbox delete <sandbox-id>
15
- ```
16
-
17
- Useful create flags:
18
-
19
- ```bash
20
- prime sandbox create python:3.11-slim \
21
- --name analytics-lab \
22
- --cpu-cores 2 --memory-gb 4 --disk-size-gb 20 \
23
- --timeout-minutes 240 \
24
- --idle-timeout-minutes 15 \
25
- --env APP_ENV=staging \
26
- --secret API_KEY=sk-abc123 \
27
- --start-command "python serve.py --port 8000" \
28
- --yes
29
- ```
30
-
31
- - `--timeout-minutes` caps total lifetime; `--idle-timeout-minutes` reaps the sandbox early when no exec/upload/download/file-read arrives (1 ≤ idle ≤ timeout ≤ 1440; not supported with `--vm`).
32
- - `--env` values are plain text; `--secret` values are encrypted at rest and obfuscated in output. Both become environment variables inside the container.
33
- - Default start command is `tail -f /dev/null` (idle, ready for `prime sandbox run`); `--start-command` replaces the image ENTRYPOINT.
34
- - Outbound internet is on by default; use `--no-network-access` for isolation when running untrusted code.
35
- - `--team-id` bills a team; `--yes` skips confirmation in automation.
36
-
37
- Custom images: build and push your own via Prime Images (`sandboxes/images.md`).
38
-
39
- ## Python SDK
40
-
41
- `prime_sandboxes` ships `SandboxClient` (sync) and `AsyncSandboxClient` (async) with identical methods:
42
-
43
- ```python
44
- from prime_sandboxes import SandboxClient, CreateSandboxRequest, APIClient
45
-
46
- client = SandboxClient(APIClient())
47
- sandbox = client.create(CreateSandboxRequest(
48
- name="sdk-demo",
49
- docker_image="python:3.11-slim",
50
- timeout_minutes=120,
51
- environment_vars={"LOG_LEVEL": "debug"},
52
- secrets={"API_KEY": "sk-abc123"},
53
- ))
54
- client.wait_for_creation(sandbox.id)
55
- result = client.execute_command(sandbox.id, "python -c 'print(42)'")
56
- client.upload_file(sandbox.id, "/workspace/data.csv", "./data.csv")
57
- client.download_file(sandbox.id, "/workspace/output.csv", "./output.csv")
58
- exposed = client.expose(sandbox.id, port=8000, name="web") # public URL
59
- client.delete(sandbox.id)
60
- ```
61
-
62
- Async variant: `async with AsyncSandboxClient() as sandboxes: await sandboxes.create(...)` — same methods, useful for fanning out many sandboxes concurrently.
63
-
64
- ## Tunnels
65
-
66
- Prime Tunnel exposes a local (or in-sandbox) service through a secure public HTTPS URL — for dev servers, webhooks, and sharing work in progress:
67
-
68
- ```python
69
- from prime_tunnel import Tunnel
70
-
71
- tunnel = Tunnel(local_port=8000)
72
- await tunnel.start() # prints the public URL
73
- ```
74
-
75
- Hosted evaluations can create tunnels too: launch the run with `--allow-tunnel-access` (grants tunnel permission to the temporary `PRIME_API_KEY`), then use the same flow inside the hosted sandbox.
@@ -1,87 +0,0 @@
1
- ---
2
- name: prime-intellect
3
- description: Work with Prime Intellect products via the prime CLI and Python SDKs - verifiers environments and the Environments Hub, evaluations (local and hosted), Hosted Training and prime-rl, code sandboxes, Prime Inference, GPU compute (pods and clusters), storage, and tunnels. Use when a task involves Prime Intellect, the prime CLI, verifiers, RL environments, evals, training, sandboxes, renting GPUs, Prime Inference models, or when the user asks what Prime Intellect is or what it offers.
4
- ---
5
-
6
- # Prime Intellect
7
-
8
- Prime Intellect is an open superintelligence lab building open-source AGI infrastructure: a platform for RL environments, evaluations, post-training, inference, and globally distributed GPU compute. Prime Agent (this agent) is built by Prime Intellect, and the `prime` CLI is the default way to interface with every product below.
9
-
10
- ## Product Map
11
-
12
- | Product | What it is | Details |
13
- |---|---|---|
14
- | verifiers | Python library for building LLM environments and evaluations | [environments.md](references/environments.md) |
15
- | Environments Hub | Platform library of community RL environments (`prime env`) | [environments.md](references/environments.md) |
16
- | Hosted Evaluations | Run evals on Prime-managed infra (`prime eval run --hosted`) | [environments.md](references/environments.md) |
17
- | Hosted Training | Post-train models against environments (`prime train`, Lab) | [environments.md](references/environments.md) |
18
- | prime-rl | Large-scale async RL framework for self-managed training | [environments.md](references/environments.md) |
19
- | Sandboxes | Secure disposable Docker environments for AI-generated code | [sandboxes.md](references/sandboxes.md) |
20
- | Tunnels | Public HTTPS URLs for local/sandboxed services | [sandboxes.md](references/sandboxes.md) |
21
- | Inference | OpenAI-compatible API for frontier models | [inference.md](references/inference.md) |
22
- | Compute | Rent single GPU pods or multi-node clusters | [compute.md](references/compute.md) |
23
- | Storage | Persistent disks shared between instances | [compute.md](references/compute.md) |
24
-
25
- ## Prime CLI Setup
26
-
27
- Default to the `prime` CLI for all Prime Intellect operations. If it is not installed:
28
-
29
- ```bash
30
- uv tool install prime # or: pip install prime
31
- prime login # browser auth; or: prime config set-api-key
32
- prime config view # verify configuration
33
- ```
34
-
35
- The same package provides the Python SDKs (e.g. `prime_sandboxes`, `prime_tunnel`). Source: https://github.com/PrimeIntellect-ai/prime
36
-
37
- ## Live Documentation
38
-
39
- Authoritative, current docs live at https://docs.primeintellect.ai. Any docs page is fetchable as Markdown by appending `.md` to its URL, and the full index is at https://docs.primeintellect.ai/llms.txt. When you need details not covered here (exact flags, API schemas, pricing, new features), fetch the live docs instead of guessing:
40
-
41
- ```bash
42
- curl -s https://docs.primeintellect.ai/llms.txt # discover pages
43
- curl -s https://docs.primeintellect.ai/sandboxes/overview.md # fetch a page as markdown
44
- ```
45
-
46
- The REST API is documented under `api-reference/` pages (OpenAPI spec: https://api.primeintellect.ai/openapi.json), with `https://api.primeintellect.ai` as the base URL.
47
-
48
- ## Command Quick Reference
49
-
50
- ```bash
51
- # Environments Hub
52
- prime env list --search "math" # discover environments
53
- prime env info owner/name # inspect one
54
- prime env install owner/name # install locally
55
- prime env init my-env --v1 # scaffold a new environment
56
- prime env push # publish to the Hub
57
-
58
- # Evaluations
59
- prime eval run my-env -m openai/gpt-4.1-mini -n 5 # local smoke eval
60
- prime eval run owner/env --hosted --follow # hosted eval with logs
61
-
62
- # Training
63
- prime lab setup # set up a Lab workspace (Hosted Training)
64
- prime train models # models, capacity, pricing
65
- prime train init && prime train rl.toml # configure + launch a run
66
-
67
- # Sandboxes
68
- prime sandbox create python:3.11-slim --timeout-minutes 120
69
- prime sandbox run <sandbox-id> "python --version"
70
- prime sandbox delete <sandbox-id>
71
-
72
- # Inference
73
- prime inference models # list available models
74
-
75
- # Compute
76
- prime availability list # GPU availability + pricing
77
- prime pods create # provision a pod
78
- prime pods ssh <pod-id> # SSH in (needs: prime config set-ssh-key-path)
79
- ```
80
-
81
- ## Working Conventions
82
-
83
- - Prefer ecosystem-native paths (`prime env init`, `prime eval run`, `prime lab setup`) over custom scaffolding.
84
- - Smoke-test small (`-n 5`) before scaling evals or training; keep default result uploads unless the user explicitly opts out.
85
- - For non-trivial eval/training work, ask whether the user wants instruct models (`gpt-4.1` series, `qwen3` instruct) or reasoning models (`gpt-5` series, `qwen3` thinking, `glm` series).
86
- - Hosted Training launches from a CPU machine; self-managed `prime-rl` requires local GPU access and is a power-user path.
87
- - The dashboard at https://app.primeintellect.ai covers API keys, billing, teams, and anything the CLI does not.
@@ -1,45 +0,0 @@
1
- # Compute & Storage
2
-
3
- Prime Intellect aggregates GPU capacity across providers: rent single GPU pods on demand or deploy multi-node clusters, with persistent network-attached storage.
4
-
5
- Live docs: `cli-reference/check-gpu-availability.md`, `cli-reference/provision-gpu.md`, `cli-reference/managing-disks.md`, `tutorials-multi-node-cluster/deploy-multi-node.md`, `tutorials-storage/create-persistent-storage.md` under https://docs.primeintellect.ai/
6
-
7
- ## GPU Availability
8
-
9
- ```bash
10
- prime availability list # all GPUs with pricing
11
- prime availability list --gpu-type H100_80GB # filter by GPU type
12
- ```
13
-
14
- ## Pods (single instances)
15
-
16
- ```bash
17
- prime config set-ssh-key-path # one-time: SSH key for pod access (generate on the dashboard profile page)
18
- prime pods create # interactive provisioning from availability data
19
- prime pods list
20
- prime pods ssh <pod-id>
21
- ```
22
-
23
- Pods support custom Docker images (`tutorials-on-demand-cloud/deploy-custom-docker-image.md`). Monitor, terminate, and inspect pods from the CLI or the dashboard.
24
-
25
- ## Multi-Node Clusters
26
-
27
- Deploy multi-node clusters (with optional Slurm orchestration) from the platform; see `tutorials-multi-node-cluster/deploy-multi-node.md` and `tutorials-multi-node-cluster/slurm-orchestration.md`. Cluster monitoring guidance lives at `tutorials-reserved-clusters/monitoring.md`.
28
-
29
- ## Storage
30
-
31
- Persistent disks outlive individual instances and can be attached to different instances as needed:
32
-
33
- - Create disks from the Storage tab of the Instances page (choose provider, datacenter, size), then attach them to pods or clusters.
34
- - Manage disks from the CLI as well — see `cli-reference/managing-disks.md`.
35
- - For multi-node shared and ephemeral storage patterns, see `tutorials-storage/cluster-storage.md`.
36
-
37
- ## Teams
38
-
39
- Manage team membership and run resources against team billing:
40
-
41
- ```bash
42
- prime teams list
43
- ```
44
-
45
- Most provisioning commands accept a `--team-id` flag; the REST API equivalent is the `X-Prime-Team-ID` header.