@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.
- package/CHANGELOG.md +37 -0
- package/NOTICE +0 -5
- package/README.md +44 -27
- package/dist/NOTICE +0 -5
- package/dist/base-context-runtime/pyproject.toml +1 -1
- package/dist/base-context-runtime/src/rlm/__init__.py +7 -5
- package/dist/base-context-runtime/test/test_subagent_registry.py +28 -1
- package/dist/base-context-runtime/uv.lock +1 -1
- package/dist/build-info.json +1 -1
- package/dist/bundle/amazon-bedrock.js +21 -0
- package/dist/bundle/{anthropic-YY4S534V.js → anthropic-UV5GZDGU.js} +5 -5
- package/dist/bundle/{azure-openai-responses-JRP6MIM3.js → azure-openai-responses-WSNPXLYC.js} +6 -6
- package/dist/bundle/{bundled-modules-P5HARVZA.js → bundled-modules-PWOGKUQQ.js} +71 -16
- package/dist/bundle/chunk-27QCJ2AZ.js +2578 -0
- package/dist/bundle/{chunk-BYVP7LWV.js → chunk-44PEHPOG.js} +1916 -4689
- package/dist/bundle/{chunk-MZHTNNVA.js → chunk-4GXPNXOJ.js} +8 -0
- package/dist/bundle/{chunk-SC5KG5R4.js → chunk-DGNX7HQ3.js} +1 -7
- package/dist/bundle/{chunk-A53O363M.js → chunk-GRJFXLBM.js} +0 -1
- package/dist/bundle/chunk-HKINIBP4.js +29 -0
- package/dist/bundle/{chunk-73DCPU3D.js → chunk-IADCPVEI.js} +1019 -3427
- package/dist/bundle/{chunk-UDSW6FNG.js → chunk-KTNETTHI.js} +1 -1
- package/dist/bundle/{chunk-U7AUVG3B.js → chunk-VSIYFWYI.js} +24 -6
- package/dist/bundle/{chunk-IW77OXFS.js → chunk-W46VZFI6.js} +0 -2099
- package/dist/bundle/{cli-main-O4X7GFGY.js → cli-main-4DS7Y3PI.js} +8 -6
- package/dist/bundle/cli.js +2 -2
- package/dist/bundle/{google-AUTVGDGZ.js → google-T32FMD4G.js} +6 -6
- package/dist/bundle/{google-vertex-Q75D7RKS.js → google-vertex-56KP6I3B.js} +3 -3
- package/dist/bundle/{main-XKOW2BV6.js → main-SV7JLVEB.js} +7 -5
- package/dist/bundle/{mistral-7ESB7QUD.js → mistral-WGBMYIVU.js} +5 -5
- package/dist/bundle/{openai-codex-responses-LV3QRPN4.js → openai-codex-responses-PIV2RQ3G.js} +6 -6
- package/dist/bundle/{openai-completions-OJECLPXJ.js → openai-completions-64C3JPR4.js} +11 -22
- package/dist/bundle/{openai-responses-FN6HZMBC.js → openai-responses-UI7RSTDV.js} +6 -6
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +108 -59
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/daemon-ps.d.ts +4 -3
- package/dist/cli/daemon-ps.d.ts.map +1 -1
- package/dist/cli/daemon-ps.js +6 -1
- package/dist/cli/daemon-ps.js.map +1 -1
- package/dist/cli/product-doctor.d.ts +0 -1
- package/dist/cli/product-doctor.d.ts.map +1 -1
- package/dist/cli/product-doctor.js +6 -3
- package/dist/cli/product-doctor.js.map +1 -1
- package/dist/config.d.ts +0 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +0 -8
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-config.d.ts +1 -2
- package/dist/core/agent-session-config.d.ts.map +1 -1
- package/dist/core/agent-session-config.js +0 -3
- package/dist/core/agent-session-config.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +5 -4
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +5 -3
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +2 -27
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +10 -6
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +107 -107
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts +8 -35
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +33 -243
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/cron-jobs.d.ts.map +1 -1
- package/dist/core/cron-jobs.js +7 -1
- package/dist/core/cron-jobs.js.map +1 -1
- package/dist/core/inference-coordinator.d.ts +6 -1
- package/dist/core/inference-coordinator.d.ts.map +1 -1
- package/dist/core/inference-coordinator.js +18 -2
- package/dist/core/inference-coordinator.js.map +1 -1
- package/dist/core/kernel/bootstrap.d.ts.map +1 -1
- package/dist/core/kernel/bootstrap.js +2 -2
- package/dist/core/kernel/bootstrap.js.map +1 -1
- package/dist/core/kernel/repl-manager.d.ts +2 -0
- package/dist/core/kernel/repl-manager.d.ts.map +1 -1
- package/dist/core/kernel/repl-manager.js +44 -1
- package/dist/core/kernel/repl-manager.js.map +1 -1
- package/dist/core/logging.d.ts +4 -3
- package/dist/core/logging.d.ts.map +1 -1
- package/dist/core/logging.js +6 -6
- package/dist/core/logging.js.map +1 -1
- package/dist/core/mcp/mcp-manager.d.ts.map +1 -1
- package/dist/core/mcp/mcp-manager.js +3 -3
- package/dist/core/mcp/mcp-manager.js.map +1 -1
- package/dist/core/model-registry.d.ts +1 -16
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +88 -196
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +2 -19
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +36 -266
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/provider-contracts.d.ts +5 -6
- package/dist/core/provider-contracts.d.ts.map +1 -1
- package/dist/core/provider-contracts.js +25 -36
- package/dist/core/provider-contracts.js.map +1 -1
- package/dist/core/provider-display-names.d.ts.map +1 -1
- package/dist/core/provider-display-names.js +0 -2
- package/dist/core/provider-display-names.js.map +1 -1
- package/dist/core/rlm-max-subagents.d.ts +32 -0
- package/dist/core/rlm-max-subagents.d.ts.map +1 -0
- package/dist/core/rlm-max-subagents.js +50 -0
- package/dist/core/rlm-max-subagents.js.map +1 -0
- package/dist/core/rlm-runtime.d.ts +3 -3
- package/dist/core/rlm-runtime.d.ts.map +1 -1
- package/dist/core/rlm-runtime.js.map +1 -1
- package/dist/core/sdk.d.ts +4 -3
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +27 -14
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/settings-manager.d.ts +3 -16
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +12 -44
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +6 -6
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/installer.mjs +2 -3
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +39 -34
- package/dist/main.js.map +1 -1
- package/dist/modes/acp/acp-mode.d.ts.map +1 -1
- package/dist/modes/acp/acp-mode.js +1 -1
- package/dist/modes/acp/acp-mode.js.map +1 -1
- package/dist/modes/agent-connection/daemon-agent-connection.d.ts +6 -2
- package/dist/modes/agent-connection/daemon-agent-connection.d.ts.map +1 -1
- package/dist/modes/agent-connection/daemon-agent-connection.js +13 -2
- package/dist/modes/agent-connection/daemon-agent-connection.js.map +1 -1
- package/dist/modes/agent-connection/in-process-agent-connection.d.ts +2 -0
- package/dist/modes/agent-connection/in-process-agent-connection.d.ts.map +1 -1
- package/dist/modes/agent-connection/in-process-agent-connection.js +6 -0
- package/dist/modes/agent-connection/in-process-agent-connection.js.map +1 -1
- package/dist/modes/agent-connection/types.d.ts +3 -0
- package/dist/modes/agent-connection/types.d.ts.map +1 -1
- package/dist/modes/agent-connection/types.js.map +1 -1
- package/dist/modes/agents-view/agents-view-mode.d.ts.map +1 -1
- package/dist/modes/agents-view/agents-view-mode.js +2 -19
- package/dist/modes/agents-view/agents-view-mode.js.map +1 -1
- package/dist/modes/daemon/daemon-mode.d.ts +5 -0
- package/dist/modes/daemon/daemon-mode.d.ts.map +1 -1
- package/dist/modes/daemon/daemon-mode.js +107 -12
- package/dist/modes/daemon/daemon-mode.js.map +1 -1
- package/dist/modes/daemon/daemon-protocol.d.ts +194 -165
- package/dist/modes/daemon/daemon-protocol.d.ts.map +1 -1
- package/dist/modes/daemon/daemon-protocol.js +16 -11
- package/dist/modes/daemon/daemon-protocol.js.map +1 -1
- package/dist/modes/daemon/daemon-rlm-capacity-coordinator.d.ts +19 -0
- package/dist/modes/daemon/daemon-rlm-capacity-coordinator.d.ts.map +1 -0
- package/dist/modes/daemon/daemon-rlm-capacity-coordinator.js +74 -0
- package/dist/modes/daemon/daemon-rlm-capacity-coordinator.js.map +1 -0
- package/dist/modes/daemon/daemon-rlm-capacity.d.ts +19 -0
- package/dist/modes/daemon/daemon-rlm-capacity.d.ts.map +1 -0
- package/dist/modes/daemon/daemon-rlm-capacity.js +85 -0
- package/dist/modes/daemon/daemon-rlm-capacity.js.map +1 -0
- package/dist/modes/daemon/daemon-session-summarizer.d.ts +2 -3
- package/dist/modes/daemon/daemon-session-summarizer.d.ts.map +1 -1
- package/dist/modes/daemon/daemon-session-summarizer.js +32 -23
- package/dist/modes/daemon/daemon-session-summarizer.js.map +1 -1
- package/dist/modes/daemon/daemon-state-root.d.ts +15 -0
- package/dist/modes/daemon/daemon-state-root.d.ts.map +1 -0
- package/dist/modes/daemon/daemon-state-root.js +40 -0
- package/dist/modes/daemon/daemon-state-root.js.map +1 -0
- package/dist/modes/daemon/daemon-supervisor-ownership.d.ts +2 -0
- package/dist/modes/daemon/daemon-supervisor-ownership.d.ts.map +1 -1
- package/dist/modes/daemon/daemon-supervisor-ownership.js +27 -0
- package/dist/modes/daemon/daemon-supervisor-ownership.js.map +1 -1
- package/dist/modes/daemon/daemon-supervisor.d.ts +10 -1
- package/dist/modes/daemon/daemon-supervisor.d.ts.map +1 -1
- package/dist/modes/daemon/daemon-supervisor.js +213 -20
- package/dist/modes/daemon/daemon-supervisor.js.map +1 -1
- package/dist/modes/daemon/daemon-worker-protocol.d.ts +28 -1
- package/dist/modes/daemon/daemon-worker-protocol.d.ts.map +1 -1
- package/dist/modes/daemon/daemon-worker-protocol.js +16 -2
- package/dist/modes/daemon/daemon-worker-protocol.js.map +1 -1
- package/dist/modes/daemon/saved-session-catalog.d.ts.map +1 -1
- package/dist/modes/daemon/saved-session-catalog.js +2 -0
- package/dist/modes/daemon/saved-session-catalog.js.map +1 -1
- package/dist/modes/interactive/auth-flows.d.ts +0 -6
- package/dist/modes/interactive/auth-flows.d.ts.map +1 -1
- package/dist/modes/interactive/auth-flows.js +6 -126
- package/dist/modes/interactive/auth-flows.js.map +1 -1
- package/dist/modes/interactive/components/configuration-menu.d.ts +3 -0
- package/dist/modes/interactive/components/configuration-menu.d.ts.map +1 -1
- package/dist/modes/interactive/components/configuration-menu.js +13 -2
- package/dist/modes/interactive/components/configuration-menu.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +2 -2
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +0 -1
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +0 -1
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +0 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +3 -40
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +2 -0
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +13 -2
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +2 -11
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/feature-hints.d.ts.map +1 -1
- package/dist/modes/interactive/feature-hints.js +0 -4
- package/dist/modes/interactive/feature-hints.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +3 -12
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +81 -507
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/onboarding.d.ts +0 -3
- package/dist/modes/interactive/onboarding.d.ts.map +1 -1
- package/dist/modes/interactive/onboarding.js +0 -17
- package/dist/modes/interactive/onboarding.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +4 -1
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +82 -42
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/node/amazon-bedrock.d.ts +2 -0
- package/dist/node/amazon-bedrock.d.ts.map +1 -0
- package/dist/node/amazon-bedrock.js +6 -0
- package/dist/node/amazon-bedrock.js.map +1 -0
- package/dist/product-identity.d.ts +0 -1
- package/dist/product-identity.d.ts.map +1 -1
- package/dist/product-identity.js +0 -1
- package/dist/product-identity.js.map +1 -1
- package/docs/development.md +1 -1
- package/docs/fork-philosophy.md +4 -8
- package/docs/installation.md +83 -62
- package/docs/providers.md +23 -25
- package/docs/quickstart.md +19 -10
- package/docs/rlm-runtime.md +13 -5
- package/docs/rpc.md +4 -4
- package/docs/sdk.md +20 -11
- package/docs/sessions.md +0 -1
- package/docs/settings.md +9 -42
- package/docs/skills.md +0 -1
- package/docs/upstream-0.9.5.md +171 -0
- package/docs/usage.md +14 -10
- package/package.json +4 -4
- package/dist/core/agent-traces.d.ts +0 -149
- package/dist/core/agent-traces.d.ts.map +0 -1
- package/dist/core/agent-traces.js +0 -904
- package/dist/core/agent-traces.js.map +0 -1
- package/dist/core/prime-inference-auth.d.ts +0 -70
- package/dist/core/prime-inference-auth.d.ts.map +0 -1
- package/dist/core/prime-inference-auth.js +0 -352
- package/dist/core/prime-inference-auth.js.map +0 -1
- package/dist/core/prime-inference-model-selection.d.ts +0 -16
- package/dist/core/prime-inference-model-selection.d.ts.map +0 -1
- package/dist/core/prime-inference-model-selection.js +0 -16
- package/dist/core/prime-inference-model-selection.js.map +0 -1
- package/dist/core/prime-inference-models.d.ts +0 -6
- package/dist/core/prime-inference-models.d.ts.map +0 -1
- package/dist/core/prime-inference-models.js +0 -62
- package/dist/core/prime-inference-models.js.map +0 -1
- package/dist/core/telemetry.d.ts +0 -95
- package/dist/core/telemetry.d.ts.map +0 -1
- package/dist/core/telemetry.js +0 -637
- package/dist/core/telemetry.js.map +0 -1
- package/dist/modes/interactive/components/prime-onboarding-splash.d.ts +0 -39
- package/dist/modes/interactive/components/prime-onboarding-splash.d.ts.map +0 -1
- package/dist/modes/interactive/components/prime-onboarding-splash.js +0 -286
- package/dist/modes/interactive/components/prime-onboarding-splash.js.map +0 -1
- package/dist/modes/interactive/components/prime-team-selector.d.ts +0 -30
- package/dist/modes/interactive/components/prime-team-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/prime-team-selector.js +0 -166
- package/dist/modes/interactive/components/prime-team-selector.js.map +0 -1
- package/dist/skills/prime-intellect/SKILL.md +0 -87
- package/dist/skills/prime-intellect/references/compute.md +0 -45
- package/dist/skills/prime-intellect/references/environments.md +0 -73
- package/dist/skills/prime-intellect/references/inference.md +0 -47
- package/dist/skills/prime-intellect/references/sandboxes.md +0 -75
- package/skills/prime-intellect/SKILL.md +0 -87
- package/skills/prime-intellect/references/compute.md +0 -45
- package/skills/prime-intellect/references/environments.md +0 -73
- package/skills/prime-intellect/references/inference.md +0 -47
- 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.
|