Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/actions/deploy-backend/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ runs:
shell: bash
# Needed for orbit-cli, which performs the registry publish.
run: pnpm install --frozen-lockfile
- name: 'Install dfx'
uses: dfinity/setup-dfx@e50c04f104ee4285ec010f10609483cf41e4d365 # main (no tags/releases published)
with:
dfx-version: '0.30.2'
- name: 'Install icp-cli'
shell: bash
# dfx is deprecated in favour of icp-cli.
run: npm install --global @icp-sdk/icp-cli@1.5.0
- name: 'Install icx-asset'
shell: bash
run: cargo install --locked icx-asset --version 0.29.0
Expand Down
4 changes: 2 additions & 2 deletions cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
},
"main": "cli.js",
"scripts": {
"build": "tsc && mkdir -p dist/audit/generated && cp src/audit/generated/station.did.js dist/audit/generated/",
"build": "tsc && mkdir -p dist/audit/generated dist/generated && cp src/audit/generated/station.did.js dist/audit/generated/ && cp src/generated/control_panel.did.js dist/generated/",
"start": "node dist/cli.js",
"expose": "pnpm link --global",
"test": "vitest run",
"generate-types": "didc bind --target ts ../core/control-panel/api/spec.did > ./src/generated/control_panel.d.ts",
"generate-types": "didc bind --target ts ../core/control-panel/api/spec.did > ./src/generated/control_panel.d.ts && didc bind --target js ../core/control-panel/api/spec.did | sed -E 's/^export const ([a-zA-Z_]+)/exports.\\1/g' > ./src/generated/control_panel.did.js",
"generate-station-types": "didc bind --target ts ../core/station/api/spec.did > ./src/audit/generated/station.did.d.ts && didc bind --target js ../core/station/api/spec.did | sed -E 's/^export const ([a-zA-Z_]+)/exports.\\1/g' > ./src/audit/generated/station.did.js && cp ../core/station/api/spec.did ./src/audit/generated/station.did"
},
"devDependencies": {
Expand Down
4 changes: 4 additions & 0 deletions cli/src/generated/control_panel.did.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import type { IDL } from '@dfinity/candid';

export declare const idlFactory: IDL.InterfaceFactory;
export declare const init: (args: { IDL: typeof IDL }) => IDL.Type[];
313 changes: 313 additions & 0 deletions cli/src/generated/control_panel.did.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,313 @@
exports.idlFactory = ({ IDL }) => {
const WasmModuleExtraChunks = IDL.Record({
'wasm_module_hash' : IDL.Vec(IDL.Nat8),
'store_canister' : IDL.Principal,
'extra_chunks_key' : IDL.Text,
});
const WasmModuleRegistryEntryDependency = IDL.Record({
'name' : IDL.Text,
'version' : IDL.Text,
});
const WasmModuleRegistryEntryValueInput = IDL.Record({
'wasm_module' : IDL.Vec(IDL.Nat8),
'module_extra_chunks' : IDL.Opt(WasmModuleExtraChunks),
'version' : IDL.Text,
'dependencies' : IDL.Vec(WasmModuleRegistryEntryDependency),
});
const RegistryEntryValueInput = IDL.Variant({
'WasmModule' : WasmModuleRegistryEntryValueInput,
});
const Metadata = IDL.Record({ 'key' : IDL.Text, 'value' : IDL.Text });
const RegistryEntryInput = IDL.Record({
'categories' : IDL.Vec(IDL.Text),
'value' : RegistryEntryValueInput,
'metadata' : IDL.Vec(Metadata),
'name' : IDL.Text,
'tags' : IDL.Vec(IDL.Text),
'description' : IDL.Text,
});
const AddRegistryEntryInput = IDL.Record({ 'entry' : RegistryEntryInput });
const UUID = IDL.Text;
const TimestampRFC3339 = IDL.Text;
const WasmModuleRegistryEntryValue = IDL.Record({
'module_extra_chunks' : IDL.Opt(WasmModuleExtraChunks),
'version' : IDL.Text,
'dependencies' : IDL.Vec(WasmModuleRegistryEntryDependency),
'wasm_artifact_id' : UUID,
});
const RegistryEntryValue = IDL.Variant({
'WasmModule' : WasmModuleRegistryEntryValue,
});
const RegistryEntry = IDL.Record({
'id' : UUID,
'categories' : IDL.Vec(IDL.Text),
'updated_at' : IDL.Opt(TimestampRFC3339),
'value' : RegistryEntryValue,
'metadata' : IDL.Vec(Metadata),
'name' : IDL.Text,
'tags' : IDL.Vec(IDL.Text),
'description' : IDL.Text,
'created_at' : TimestampRFC3339,
});
const AddRegistryEntryResponse = IDL.Record({ 'entry' : RegistryEntry });
const ApiError = IDL.Record({
'code' : IDL.Text,
'message' : IDL.Opt(IDL.Text),
'details' : IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))),
});
const AddRegistryEntryResult = IDL.Variant({
'Ok' : AddRegistryEntryResponse,
'Err' : ApiError,
});
const UserSubscriptionStatus = IDL.Variant({
'Unsubscribed' : IDL.Null,
'Approved' : IDL.Null,
'Denylisted' : IDL.Null,
'Pending' : IDL.Null,
});
const CanDeployStationResponse = IDL.Variant({
'NotAllowed' : UserSubscriptionStatus,
'Allowed' : IDL.Nat64,
'QuotaExceeded' : IDL.Null,
});
const CanDeployStationResult = IDL.Variant({
'Ok' : CanDeployStationResponse,
'Err' : ApiError,
});
const DeleteRegistryEntryInput = IDL.Record({ 'id' : UUID });
const DeleteRegistryEntryResponse = IDL.Record({ 'entry' : RegistryEntry });
const DeleteRegistryEntryResult = IDL.Variant({
'Ok' : DeleteRegistryEntryResponse,
'Err' : ApiError,
});
const User = IDL.Record({
'last_active' : TimestampRFC3339,
'subscription_status' : UserSubscriptionStatus,
'identity' : IDL.Principal,
});
const RemoveUserResult = IDL.Variant({
'Ok' : IDL.Record({ 'user' : User }),
'Err' : ApiError,
});
const SubnetFilter = IDL.Record({ 'subnet_type' : IDL.Opt(IDL.Text) });
const SubnetSelection = IDL.Variant({
'Filter' : SubnetFilter,
'Subnet' : IDL.Record({ 'subnet' : IDL.Principal }),
});
const DeployStationAdminUserInput = IDL.Record({
'username' : IDL.Text,
'identity' : IDL.Principal,
});
const DeployStationInput = IDL.Record({
'name' : IDL.Text,
'subnet_selection' : IDL.Opt(SubnetSelection),
'admins' : IDL.Vec(DeployStationAdminUserInput),
'associate_with_caller' : IDL.Opt(
IDL.Record({ 'labels' : IDL.Vec(IDL.Text) })
),
});
const StationID = IDL.Principal;
const DeployStationResult = IDL.Variant({
'Ok' : IDL.Record({ 'canister_id' : StationID }),
'Err' : ApiError,
});
const RegistryEntryUpdateInput = IDL.Record({
'categories' : IDL.Opt(IDL.Vec(IDL.Text)),
'value' : IDL.Opt(RegistryEntryValueInput),
'metadata' : IDL.Opt(IDL.Vec(Metadata)),
'tags' : IDL.Opt(IDL.Vec(IDL.Text)),
'description' : IDL.Opt(IDL.Text),
});
const EditRegistryEntryInput = IDL.Record({
'id' : UUID,
'entry' : RegistryEntryUpdateInput,
});
const EditRegistryEntryResponse = IDL.Record({ 'entry' : RegistryEntry });
const EditRegistryEntryResult = IDL.Variant({
'Ok' : EditRegistryEntryResponse,
'Err' : ApiError,
});
const GetArtifactInput = IDL.Record({ 'artifact_id' : UUID });
const Sha256Hex = IDL.Text;
const Artifact = IDL.Record({
'id' : UUID,
'hash' : Sha256Hex,
'artifact' : IDL.Vec(IDL.Nat8),
'size' : IDL.Nat64,
'created_at' : TimestampRFC3339,
});
const GetArtifactResponse = IDL.Record({ 'artifact' : Artifact });
const GetArtifactResult = IDL.Variant({
'Ok' : GetArtifactResponse,
'Err' : ApiError,
});
const GetRegistryEntryInput = IDL.Record({ 'id' : UUID });
const GetRegistryEntryResponse = IDL.Record({ 'entry' : RegistryEntry });
const GetRegistryEntryResult = IDL.Variant({
'Ok' : GetRegistryEntryResponse,
'Err' : ApiError,
});
const GetUserResult = IDL.Variant({
'Ok' : IDL.Record({ 'user' : User }),
'Err' : ApiError,
});
const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);
const HttpRequest = IDL.Record({
'url' : IDL.Text,
'method' : IDL.Text,
'body' : IDL.Vec(IDL.Nat8),
'headers' : IDL.Vec(HeaderField),
});
const HttpResponse = IDL.Record({
'body' : IDL.Vec(IDL.Nat8),
'headers' : IDL.Vec(HeaderField),
'status_code' : IDL.Nat16,
});
const ListUserStationsInput = IDL.Record({
'filter_by_labels' : IDL.Opt(IDL.Vec(IDL.Text)),
});
const UserStation = IDL.Record({
'name' : IDL.Text,
'labels' : IDL.Vec(IDL.Text),
'canister_id' : StationID,
});
const ListUserStationsResult = IDL.Variant({
'Ok' : IDL.Record({ 'stations' : IDL.Vec(UserStation) }),
'Err' : ApiError,
});
const ManageUserStationsInput = IDL.Variant({
'Add' : IDL.Vec(UserStation),
'Remove' : IDL.Vec(StationID),
'Update' : IDL.Vec(
IDL.Record({ 'station' : UserStation, 'index' : IDL.Opt(IDL.Nat64) })
),
});
const ManageUserStationsResult = IDL.Variant({
'Ok' : IDL.Null,
'Err' : ApiError,
});
const NextWasmModuleVersionInput = IDL.Record({
'name' : IDL.Text,
'current_version' : IDL.Text,
});
const NextWasmModuleVersionResponse = IDL.Record({
'entry' : IDL.Opt(RegistryEntry),
});
const NextWasmModuleVersionResult = IDL.Variant({
'Ok' : NextWasmModuleVersionResponse,
'Err' : ApiError,
});
const RegisterUserInput = IDL.Record({ 'station' : IDL.Opt(UserStation) });
const RegisterUserResult = IDL.Variant({
'Ok' : IDL.Record({ 'user' : User }),
'Err' : ApiError,
});
const SortDirection = IDL.Variant({ 'Asc' : IDL.Null, 'Desc' : IDL.Null });
const RegistryEntrySortBy = IDL.Variant({
'Version' : SortDirection,
'CreatedAt' : SortDirection,
});
const PaginationInput = IDL.Record({
'offset' : IDL.Opt(IDL.Nat64),
'limit' : IDL.Opt(IDL.Nat16),
});
const RegistryEntryValueKind = IDL.Variant({ 'WasmModule' : IDL.Null });
const SearchRegistryFilterKind = IDL.Variant({
'Kind' : RegistryEntryValueKind,
'Name' : IDL.Text,
'Namespace' : IDL.Text,
});
const SearchRegistryInput = IDL.Record({
'sort_by' : IDL.Opt(RegistryEntrySortBy),
'pagination' : IDL.Opt(PaginationInput),
'filter_by' : IDL.Vec(SearchRegistryFilterKind),
});
const SearchRegistryResponse = IDL.Record({
'total' : IDL.Nat64,
'entries' : IDL.Vec(RegistryEntry),
'next_offset' : IDL.Opt(IDL.Nat64),
});
const SearchRegistryResult = IDL.Variant({
'Ok' : SearchRegistryResponse,
'Err' : ApiError,
});
const SetUserActiveResult = IDL.Variant({
'Ok' : IDL.Null,
'Err' : ApiError,
});
const UploadCanisterModulesInput = IDL.Record({
'station_wasm_module_extra_chunks' : IDL.Opt(
IDL.Opt(WasmModuleExtraChunks)
),
'station_wasm_module' : IDL.Opt(IDL.Vec(IDL.Nat8)),
'upgrader_wasm_module' : IDL.Opt(IDL.Vec(IDL.Nat8)),
});
const UploadUploadCanisterModulesInputResult = IDL.Variant({
'Ok' : IDL.Null,
'Err' : ApiError,
});
return IDL.Service({
'add_registry_entry' : IDL.Func(
[AddRegistryEntryInput],
[AddRegistryEntryResult],
[],
),
'can_deploy_station' : IDL.Func([], [CanDeployStationResult], ['query']),
'delete_registry_entry' : IDL.Func(
[DeleteRegistryEntryInput],
[DeleteRegistryEntryResult],
[],
),
'delete_user' : IDL.Func([], [RemoveUserResult], []),
'deploy_station' : IDL.Func(
[DeployStationInput],
[DeployStationResult],
[],
),
'edit_registry_entry' : IDL.Func(
[EditRegistryEntryInput],
[EditRegistryEntryResult],
[],
),
'get_artifact' : IDL.Func(
[GetArtifactInput],
[GetArtifactResult],
['query'],
),
'get_registry_entry' : IDL.Func(
[GetRegistryEntryInput],
[GetRegistryEntryResult],
['query'],
),
'get_user' : IDL.Func([], [GetUserResult], ['query']),
'http_request' : IDL.Func([HttpRequest], [HttpResponse], ['query']),
'list_user_stations' : IDL.Func(
[ListUserStationsInput],
[ListUserStationsResult],
['query'],
),
'manage_user_stations' : IDL.Func(
[ManageUserStationsInput],
[ManageUserStationsResult],
[],
),
'next_wasm_module_version' : IDL.Func(
[NextWasmModuleVersionInput],
[NextWasmModuleVersionResult],
['query'],
),
'register_user' : IDL.Func([RegisterUserInput], [RegisterUserResult], []),
'search_registry' : IDL.Func(
[SearchRegistryInput],
[SearchRegistryResult],
['query'],
),
'set_user_active' : IDL.Func([], [SetUserActiveResult], []),
'upload_canister_modules' : IDL.Func(
[UploadCanisterModulesInput],
[UploadUploadCanisterModulesInputResult],
[],
),
});
};
exports.init = ({ IDL }) => { return []; };
Loading
Loading