sandbox0 0.4.1 → 0.4.4

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 (114) hide show
  1. package/dist/apispec/src/apis/FilesApi.d.ts +16 -1
  2. package/dist/apispec/src/apis/FilesApi.d.ts.map +1 -1
  3. package/dist/apispec/src/apis/FilesApi.js +47 -1
  4. package/dist/apispec/src/apis/FunctionsApi.d.ts +12 -10
  5. package/dist/apispec/src/apis/FunctionsApi.d.ts.map +1 -1
  6. package/dist/apispec/src/apis/FunctionsApi.js +12 -10
  7. package/dist/apispec/src/apis/SandboxesApi.d.ts +1 -0
  8. package/dist/apispec/src/apis/SandboxesApi.d.ts.map +1 -1
  9. package/dist/apispec/src/apis/SandboxesApi.js +2 -1
  10. package/dist/apispec/src/models/Function.d.ts +7 -0
  11. package/dist/apispec/src/models/Function.d.ts.map +1 -1
  12. package/dist/apispec/src/models/Function.js +5 -0
  13. package/dist/apispec/src/models/FunctionAutoscaling.d.ts +51 -0
  14. package/dist/apispec/src/models/FunctionAutoscaling.d.ts.map +1 -0
  15. package/dist/apispec/src/models/FunctionAutoscaling.js +55 -0
  16. package/dist/apispec/src/models/FunctionCreateRequest.d.ts +7 -0
  17. package/dist/apispec/src/models/FunctionCreateRequest.d.ts.map +1 -1
  18. package/dist/apispec/src/models/FunctionCreateRequest.js +3 -0
  19. package/dist/apispec/src/models/FunctionEnvRef.d.ts +39 -0
  20. package/dist/apispec/src/models/FunctionEnvRef.d.ts.map +1 -0
  21. package/dist/apispec/src/models/FunctionEnvRef.js +47 -0
  22. package/dist/apispec/src/models/FunctionRecord.d.ts +7 -0
  23. package/dist/apispec/src/models/FunctionRecord.d.ts.map +1 -1
  24. package/dist/apispec/src/models/FunctionRecord.js +5 -0
  25. package/dist/apispec/src/models/FunctionRevision.d.ts +30 -8
  26. package/dist/apispec/src/models/FunctionRevision.d.ts.map +1 -1
  27. package/dist/apispec/src/models/FunctionRevision.js +14 -10
  28. package/dist/apispec/src/models/FunctionRevisionInputSourceType.d.ts +26 -0
  29. package/dist/apispec/src/models/FunctionRevisionInputSourceType.d.ts.map +1 -0
  30. package/dist/apispec/src/models/FunctionRevisionInputSourceType.js +43 -0
  31. package/dist/apispec/src/models/FunctionRevisionMount.d.ts +66 -0
  32. package/dist/apispec/src/models/FunctionRevisionMount.d.ts.map +1 -0
  33. package/dist/apispec/src/models/FunctionRevisionMount.js +61 -0
  34. package/dist/apispec/src/models/FunctionRevisionMountSource.d.ts +72 -0
  35. package/dist/apispec/src/models/FunctionRevisionMountSource.d.ts.map +1 -0
  36. package/dist/apispec/src/models/FunctionRevisionMountSource.js +61 -0
  37. package/dist/apispec/src/models/FunctionRevisionSourceType.d.ts +27 -0
  38. package/dist/apispec/src/models/FunctionRevisionSourceType.d.ts.map +1 -0
  39. package/dist/apispec/src/models/FunctionRevisionSourceType.js +44 -0
  40. package/dist/apispec/src/models/FunctionRevisionSpec.d.ts +61 -0
  41. package/dist/apispec/src/models/FunctionRevisionSpec.d.ts.map +1 -0
  42. package/dist/apispec/src/models/FunctionRevisionSpec.js +57 -0
  43. package/dist/apispec/src/models/FunctionRuntimeEvent.d.ts +107 -0
  44. package/dist/apispec/src/models/FunctionRuntimeEvent.d.ts.map +1 -0
  45. package/dist/apispec/src/models/FunctionRuntimeEvent.js +81 -0
  46. package/dist/apispec/src/models/FunctionRuntimeInstance.d.ts +131 -0
  47. package/dist/apispec/src/models/FunctionRuntimeInstance.d.ts.map +1 -0
  48. package/dist/apispec/src/models/FunctionRuntimeInstance.js +93 -0
  49. package/dist/apispec/src/models/FunctionRuntimeInstanceState.d.ts +28 -0
  50. package/dist/apispec/src/models/FunctionRuntimeInstanceState.d.ts.map +1 -0
  51. package/dist/apispec/src/models/FunctionRuntimeInstanceState.js +45 -0
  52. package/dist/apispec/src/models/FunctionRuntimePhase.d.ts +31 -0
  53. package/dist/apispec/src/models/FunctionRuntimePhase.d.ts.map +1 -0
  54. package/dist/apispec/src/models/FunctionRuntimePhase.js +48 -0
  55. package/dist/apispec/src/models/FunctionRuntimeReadinessState.d.ts +28 -0
  56. package/dist/apispec/src/models/FunctionRuntimeReadinessState.d.ts.map +1 -0
  57. package/dist/apispec/src/models/FunctionRuntimeReadinessState.js +45 -0
  58. package/dist/apispec/src/models/FunctionRuntimeStatus.d.ts +55 -2
  59. package/dist/apispec/src/models/FunctionRuntimeStatus.d.ts.map +1 -1
  60. package/dist/apispec/src/models/FunctionRuntimeStatus.js +27 -0
  61. package/dist/apispec/src/models/FunctionSandboxServiceSource.d.ts +39 -0
  62. package/dist/apispec/src/models/FunctionSandboxServiceSource.d.ts.map +1 -0
  63. package/dist/apispec/src/models/FunctionSandboxServiceSource.js +47 -0
  64. package/dist/apispec/src/models/FunctionSourceRequest.d.ts +33 -3
  65. package/dist/apispec/src/models/FunctionSourceRequest.d.ts.map +1 -1
  66. package/dist/apispec/src/models/FunctionSourceRequest.js +13 -6
  67. package/dist/apispec/src/models/FunctionStaticAsset.d.ts +45 -0
  68. package/dist/apispec/src/models/FunctionStaticAsset.d.ts.map +1 -0
  69. package/dist/apispec/src/models/FunctionStaticAsset.js +49 -0
  70. package/dist/apispec/src/models/FunctionUpdateRequest.d.ts +7 -0
  71. package/dist/apispec/src/models/FunctionUpdateRequest.d.ts.map +1 -1
  72. package/dist/apispec/src/models/FunctionUpdateRequest.js +3 -0
  73. package/dist/apispec/src/models/MCPProtocolRule.d.ts +34 -0
  74. package/dist/apispec/src/models/MCPProtocolRule.d.ts.map +1 -0
  75. package/dist/apispec/src/models/MCPProtocolRule.js +42 -0
  76. package/dist/apispec/src/models/MCPToolPolicy.d.ts +39 -0
  77. package/dist/apispec/src/models/MCPToolPolicy.d.ts.map +1 -0
  78. package/dist/apispec/src/models/MCPToolPolicy.js +43 -0
  79. package/dist/apispec/src/models/NetworkEgressPolicy.d.ts +9 -0
  80. package/dist/apispec/src/models/NetworkEgressPolicy.d.ts.map +1 -1
  81. package/dist/apispec/src/models/NetworkEgressPolicy.js +3 -0
  82. package/dist/apispec/src/models/ProtocolRule.d.ts +74 -0
  83. package/dist/apispec/src/models/ProtocolRule.d.ts.map +1 -0
  84. package/dist/apispec/src/models/ProtocolRule.js +60 -0
  85. package/dist/apispec/src/models/ProtocolRuleProtocol.d.ts +25 -0
  86. package/dist/apispec/src/models/ProtocolRuleProtocol.d.ts.map +1 -0
  87. package/dist/apispec/src/models/ProtocolRuleProtocol.js +42 -0
  88. package/dist/apispec/src/models/SandboxAppServiceRuntime.d.ts +3 -3
  89. package/dist/apispec/src/models/SandboxPowerState.d.ts +2 -2
  90. package/dist/apispec/src/models/SandboxPowerState.js +2 -2
  91. package/dist/apispec/src/models/SandboxSummary.d.ts +1 -0
  92. package/dist/apispec/src/models/SandboxSummary.d.ts.map +1 -1
  93. package/dist/apispec/src/models/SandboxSummary.js +2 -1
  94. package/dist/apispec/src/models/SuccessVolumeFileArchiveImportResponse.d.ts +40 -0
  95. package/dist/apispec/src/models/SuccessVolumeFileArchiveImportResponse.d.ts.map +1 -0
  96. package/dist/apispec/src/models/SuccessVolumeFileArchiveImportResponse.js +46 -0
  97. package/dist/apispec/src/models/VolumeFileArchiveImportResponse.d.ts +51 -0
  98. package/dist/apispec/src/models/VolumeFileArchiveImportResponse.d.ts.map +1 -0
  99. package/dist/apispec/src/models/VolumeFileArchiveImportResponse.js +55 -0
  100. package/dist/apispec/src/models/index.d.ts +20 -0
  101. package/dist/apispec/src/models/index.d.ts.map +1 -1
  102. package/dist/apispec/src/models/index.js +20 -0
  103. package/dist/apispec_compat.d.ts +145 -2
  104. package/dist/apispec_compat.d.ts.map +1 -1
  105. package/dist/index.d.ts +2 -2
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +1 -1
  108. package/dist/resources/functions.d.ts +6 -1
  109. package/dist/resources/functions.d.ts.map +1 -1
  110. package/dist/resources/functions.js +33 -3
  111. package/dist/resources/volumes.d.ts +2 -1
  112. package/dist/resources/volumes.d.ts.map +1 -1
  113. package/dist/resources/volumes.js +9 -0
  114. package/package.json +1 -1
@@ -6,6 +6,12 @@ export function functionSource(sandboxId, serviceId) {
6
6
  serviceId,
7
7
  };
8
8
  }
9
+ export function functionRevisionSpecSource(spec) {
10
+ return {
11
+ type: "revision_spec",
12
+ revisionSpec: spec,
13
+ };
14
+ }
9
15
  export class Functions {
10
16
  client;
11
17
  constructor(client) {
@@ -41,10 +47,28 @@ export class Functions {
41
47
  return toFunctionCreateResult(ensureData(response, "create function returned empty response"));
42
48
  }
43
49
  async createFromSandbox(sandboxId, serviceId, options = {}) {
44
- return this.create({
45
- name: options.name,
50
+ const request = {
46
51
  source: functionSource(sandboxId, serviceId),
47
- });
52
+ };
53
+ if (options.name !== undefined) {
54
+ request.name = options.name;
55
+ }
56
+ if (options.autoscaling !== undefined) {
57
+ request.autoscaling = options.autoscaling;
58
+ }
59
+ return this.create(request);
60
+ }
61
+ async createFromRevisionSpec(spec, options = {}) {
62
+ const request = {
63
+ source: functionRevisionSpecSource(spec),
64
+ };
65
+ if (options.name !== undefined) {
66
+ request.name = options.name;
67
+ }
68
+ if (options.autoscaling !== undefined) {
69
+ request.autoscaling = options.autoscaling;
70
+ }
71
+ return this.create(request);
48
72
  }
49
73
  async listRevisions(functionId) {
50
74
  const response = await wrapApiCall(() => this.client.apispec.functions.apiV1FunctionsIdRevisionsGet({ id: functionId }));
@@ -72,6 +96,12 @@ export class Functions {
72
96
  promote: options.promote,
73
97
  });
74
98
  }
99
+ async createRevisionFromSpec(functionId, spec, options = {}) {
100
+ return this.createRevision(functionId, {
101
+ source: functionRevisionSpecSource(spec),
102
+ promote: options.promote,
103
+ });
104
+ }
75
105
  async listAliases(functionId) {
76
106
  const response = await wrapApiCall(() => this.client.apispec.functions.apiV1FunctionsIdAliasesGet({ id: functionId }));
77
107
  const data = ensureData(response, "list function aliases returned empty response");
@@ -1,4 +1,4 @@
1
- import type { CreateSandboxVolumeRequest, FileInfo, ForkVolumeRequest, CreateSnapshotRequest, SandboxVolume, Snapshot, SuccessCreatedResponse, SuccessDeletedResponse, SuccessRestoreResponse, SuccessMovedResponse, SuccessWrittenResponse } from "../apispec/src/models/index.js";
1
+ import type { CreateSandboxVolumeRequest, FileInfo, ForkVolumeRequest, CreateSnapshotRequest, SandboxVolume, Snapshot, SuccessCreatedResponse, SuccessDeletedResponse, SuccessRestoreResponse, SuccessMovedResponse, VolumeFileArchiveImportResponse, SuccessWrittenResponse } from "../apispec/src/models/index.js";
2
2
  import type { Client } from "../client.js";
3
3
  import { VolumeSession } from "../sessions.js";
4
4
  import { FileWatchStream } from "../sandbox.js";
@@ -22,6 +22,7 @@ export declare class Volumes {
22
22
  statFile(volumeId: string, path: string): Promise<FileInfo>;
23
23
  listFiles(volumeId: string, path: string): Promise<FileInfo[]>;
24
24
  writeFile(volumeId: string, path: string, data: Uint8Array | string): Promise<SuccessWrittenResponse>;
25
+ importArchive(volumeId: string, path: string, archive: Blob | Uint8Array | ArrayBuffer | string): Promise<VolumeFileArchiveImportResponse>;
25
26
  mkdir(volumeId: string, path: string, recursive?: boolean): Promise<SuccessCreatedResponse>;
26
27
  deleteFile(volumeId: string, path: string): Promise<SuccessDeletedResponse>;
27
28
  moveFile(volumeId: string, source: string, destination: string): Promise<SuccessMovedResponse>;
@@ -1 +1 @@
1
- {"version":3,"file":"volumes.d.ts","sourceRoot":"","sources":["../../src/resources/volumes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAE1B,QAAQ,EACR,iBAAiB,EACjB,qBAAqB,EAErB,aAAa,EACb,QAAQ,EACR,sBAAsB,EACtB,sBAAsB,EAEtB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,6BAA6B,CAAC;AAKrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,qBAAa,OAAO;IACN,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAErC,MAAM,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,aAAa,CAAC;IASnE,IAAI,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,aAAa,CAAC;IAOjE,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAQhC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAO7C,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5B,OAAO,CAAC,sBAAsB,CAAC;IAU5B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;IAU3E,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,QAAQ,CAAC;IAUd,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAQpD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAUpE,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,sBAAsB,CAAC;IAU5B,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,sBAAsB,CAAC;IAU5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA2B7D,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAU3D,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAW9D,SAAS,CACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,GAAG,MAAM,GACxB,OAAO,CAAC,sBAAsB,CAAC;IAY5B,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,SAAS,UAAQ,GAChB,OAAO,CAAC,sBAAsB,CAAC;IAa5B,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAU3E,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,oBAAoB,CAAC;IAU1B,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,SAAS,UAAQ,GAChB,OAAO,CAAC,eAAe,CAAC;CAqC5B"}
1
+ {"version":3,"file":"volumes.d.ts","sourceRoot":"","sources":["../../src/resources/volumes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAE1B,QAAQ,EACR,iBAAiB,EACjB,qBAAqB,EAErB,aAAa,EACb,QAAQ,EACR,sBAAsB,EACtB,sBAAsB,EAEtB,sBAAsB,EACtB,oBAAoB,EACpB,+BAA+B,EAC/B,sBAAsB,EACvB,MAAM,6BAA6B,CAAC;AAKrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,qBAAa,OAAO;IACN,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAErC,MAAM,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,aAAa,CAAC;IASnE,IAAI,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,aAAa,CAAC;IAOjE,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAQhC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAO7C,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5B,OAAO,CAAC,sBAAsB,CAAC;IAU5B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;IAU3E,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,QAAQ,CAAC;IAUd,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAQpD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAUpE,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,sBAAsB,CAAC;IAU5B,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,sBAAsB,CAAC;IAU5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA2B7D,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAU3D,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAW9D,SAAS,CACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,GAAG,MAAM,GACxB,OAAO,CAAC,sBAAsB,CAAC;IAY5B,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,IAAI,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,GAChD,OAAO,CAAC,+BAA+B,CAAC;IAYrC,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,SAAS,UAAQ,GAChB,OAAO,CAAC,sBAAsB,CAAC;IAa5B,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAU3E,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,oBAAoB,CAAC;IAU1B,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,SAAS,UAAQ,GAChB,OAAO,CAAC,eAAe,CAAC;CAqC5B"}
@@ -126,6 +126,15 @@ export class Volumes {
126
126
  }));
127
127
  return ensureModel(response, "write volume file returned empty response");
128
128
  }
129
+ async importArchive(volumeId, path, archive) {
130
+ const body = archive instanceof Blob ? archive : new Blob([archive]);
131
+ const response = await wrapApiCall(() => this.client.apispec.files.apiV1SandboxvolumesIdFilesArchivePut({
132
+ id: volumeId,
133
+ path,
134
+ body,
135
+ }));
136
+ return ensureData(response, "import volume archive returned empty response");
137
+ }
129
138
  async mkdir(volumeId, path, recursive = false) {
130
139
  const response = await wrapApiCall(() => this.client.apispec.files.apiV1SandboxvolumesIdFilesPost({
131
140
  id: volumeId,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sandbox0",
3
- "version": "0.4.1",
3
+ "version": "0.4.4",
4
4
  "description": "Sandbox0 JavaScript/TypeScript SDK",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Sandbox0 Team",